From 62a6e9aef6f164641a4ac57e3342b7917c6a53b0 Mon Sep 17 00:00:00 2001 From: Masamichi Hosoda Date: Sat, 8 Aug 2015 22:16:41 +0900 Subject: [PATCH] Issue 4544 / 1: Divide LilyPond local fontconfig conf file loading This commit divides LilyPond local fontconfig conf file loading into each before and after loading default conf file. --- lily/font-config.cc | 47 +++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/lily/font-config.cc b/lily/font-config.cc index 26a9799b76..821dbffd74 100644 --- a/lily/font-config.cc +++ b/lily/font-config.cc @@ -38,7 +38,41 @@ init_fontconfig () debug_output (_ ("Initializing FontConfig...")); /* TODO: Find a way for Fontconfig to update its cache, if needed. */ - font_config_global = FcInitLoadConfig (); + FcConfig *font_config_dummy = FcInitLoadConfig (); + + /* Create an empty configuration */ + font_config_global = FcConfigCreate (); + + /* fontconfig conf files */ + vector 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(default_conf)); + FcStrFree(static_cast(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::const_iterator it = confs.begin (); + it != confs.end (); + it++) + { + if (!FcConfigParseAndLoad (font_config_global, + (FcChar8 *)it->c_str (), + FcFalse)) + error (_f ("failed to add fontconfig configuration file `%s'", + it->c_str ())); + else + debug_output (_f ("Adding fontconfig configuration file: %s", + it->c_str ())); + } /* Extra trailing slash suddenly breaks fontconfig (fc-cache 2.5.0) on windows. */ @@ -49,17 +83,6 @@ init_fontconfig () else debug_output (_f ("Adding font directory: %s", dir.c_str ())); - string conf (lilypond_datadir + "/fonts/lilypond-fonts.conf"); - - if (!FcConfigParseAndLoad (font_config_global, - (FcChar8 *)conf.c_str (), - FcFalse)) - error (_f ("failed adding fontconfig configuration file: %s", - conf.c_str ())); - else - debug_output (_f ("Adding fontconfig configuration file: %s", - conf.c_str ())); - debug_output (_ ("Building font database...")); FcConfigBuildFonts (font_config_global); -- 2.39.5