/* * Load the configuration files */ FcConfig * FcInitLoadOwnConfig (FcConfig *config) { if (!config) { config = FcConfigCreate (); if (!config) return NULL; } FcInitDebug (); if (!FcConfigParseAndLoad (config, 0, FcTrue)) { FcConfigDestroy (config); return FcInitFallbackConfig (); } if (config->cacheDirs && config->cacheDirs->num == 0) { FcChar8 *prefix, *p; size_t plen; fprintf (stderr, "Fontconfig warning: no <cachedir> elements found. Check configuration.\n"); fprintf (stderr, "Fontconfig warning: adding <cachedir>%s</cachedir>\n", FC_CACHEDIR); prefix = FcConfigXdgCacheHome (); if (!prefix) goto bail; plen = strlen ((const char *)prefix); p = realloc (prefix, plen + 12); if (!p) goto bail; prefix = p; memcpy (&prefix[plen], FC_DIR_SEPARATOR_S "fontconfig", 11); prefix[plen + 11] = 0; fprintf (stderr, "Fontconfig warning: adding <cachedir prefix=\"xdg\">fontconfig</cachedir>\n"); if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR) || !FcConfigAddCacheDir (config, (FcChar8 *) prefix)) { bail: fprintf (stderr, "Fontconfig error: out of memory"); if (prefix) FcStrFree (prefix); FcConfigDestroy (config); return FcInitFallbackConfig (); } FcStrFree (prefix); } return config; }
/* * Load the configuration files and scan for available fonts */ FcConfig * FcInitLoadConfigAndFonts (void) { FcConfig *config = FcInitLoadConfig (); FcInitDebug (); if (!config) return 0; if (!FcConfigBuildFonts (config)) { FcConfigDestroy (config); return 0; } return config; }
/* * Load the configuration files */ FcConfig * FcInitLoadConfig (void) { FcConfig *config; FcInitDebug (); config = FcConfigCreate (); if (!config) return FcFalse; if (!FcConfigParseAndLoad (config, 0, FcTrue)) { FcConfigDestroy (config); return FcInitFallbackConfig (); } if (config->cacheDirs && config->cacheDirs->num == 0) { fprintf (stderr, "Fontconfig warning: no <cachedir> elements found. Check configuration.\n"); fprintf (stderr, "Fontconfig warning: adding <cachedir>%s</cachedir>\n", FC_CACHEDIR); fprintf (stderr, "Fontconfig warning: adding <cachedir>~/.fontconfig</cachedir>\n"); if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR) || !FcConfigAddCacheDir (config, (FcChar8 *) "~/.fontconfig")) { fprintf (stderr, "Fontconfig error: out of memory"); FcConfigDestroy (config); return FcInitFallbackConfig (); } } printf("4\n"); return config; }