- struct stat statbuf;
- if (stat (builddir.to_str0 (), &statbuf) == 0)
- dirs.push (builddir.to_str0 ());
- else
- {
- /*
- ugh. C&P main.cc
- */
- dirs.push (prefix_directory + "/fonts/otf/");
- dirs.push (prefix_directory + "/fonts/type1/");
- dirs.push (prefix_directory + "/fonts/cff/");
- dirs.push (prefix_directory + "/fonts/svg/");
- }
- for (int i = 0; i < dirs.size (); i++)
+ /* 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++)