- if (be_verbose_global)
- message (_ ("Initializing FontConfig..."));
-
- font_config_global = FcInitLoadConfig ();
- FcChar8 *cache_file = FcConfigGetCache (font_config_global);
-
- /*
- This is a terrible kludge, but there is apparently no way for
- FontConfig to signal whether it needs to rescan directories.
- */
- if (!is_file ((char*)cache_file))
- message (_f ("Rebuilding FontConfig cache %s. this may take a while...", cache_file));
-
- Array<String> dirs;
-
- dirs.push (prefix_directory + "/fonts/otf/");
- dirs.push (prefix_directory + "/fonts/type1/");
-
- 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++)