- if (!FcInit ())
- error (_ ("FontConfig failed to initialize"));
-
- FcConfig *fcc = FcConfigGetCurrent ();
-
- Array<String> dirs;
- dirs.push (prefix_directory + "/fonts/otf/");
- dirs.push (prefix_directory + "/mf/out/");
- dirs.push (prefix_directory + "/fonts/type1/");
- dirs.push (prefix_directory + "/fonts/cff/");
-
- for (int i = 0; i < dirs.size (); i++)
+ debug_output (_ ("Initializing FontConfig..."));
+
+ /* TODO: Find a way for Fontconfig to update its cache, if needed. */
+ FcInitLoadConfig ();
+
+ /* Create an empty configuration */
+ font_config_global = FcConfigCreate ();
+
+ /* fontconfig conf files */
+ vector<string> confs;
+
+ /* LilyPond local fontconfig conf file 00
+ This file is loaded *before* fontconfig's default conf. */
+ confs.push_back (lilypond_datadir + "/fonts/00-lilypond-fonts.conf");
+
+ /* fontconfig's default conf file */
+ void *default_conf = FcConfigFilename (NULL);
+ confs.push_back (static_cast<char*>(default_conf));
+ FcStrFree(static_cast<FcChar8*>(default_conf));
+
+ /* LilyPond local fontconfig conf file 99
+ This file is loaded *after* fontconfig's default conf. */
+ confs.push_back (lilypond_datadir + "/fonts/99-lilypond-fonts.conf");
+
+ /* Load fontconfig conf files */
+ for (vector<string>::const_iterator it = confs.begin ();
+ it != confs.end ();
+ it++)