void GuiApplicationManagerPrivate::updateFontConfigCache() { FcConfig *fcConfig = FcInitLoadConfig(); FcConfigBuildFonts(fcConfig); }
static void gimp_fonts_load_func (FcConfig *config) { if (! FcConfigBuildFonts (config)) FcConfigDestroy (config); else FcConfigSetCurrent (config); }
void GuiApplicationManagerPrivate::updateFontConfigCache() { qDebug() << "Building Fontconfig fonts..."; FcConfig *fcConfig = FcInitLoadConfig(); FcConfigBuildFonts(fcConfig); qDebug() << "Fontconfig fonts built"; }
/** * \brief Init fontconfig. * \param library libass library object * \param ftlibrary freetype library object * \param family default font family * \param path default font path * \param fc whether fontconfig should be used * \param config path to a fontconfig configuration file, or NULL * \param update whether the fontconfig cache should be built/updated * \return pointer to fontconfig private data */ FCInstance *fontconfig_init(ASS_Library *library, FT_Library ftlibrary, const char *family, const char *path, int fc, const char *config, int update) { int rc; FCInstance *priv = calloc(1, sizeof(FCInstance)); const char *dir = library->fonts_dir; int i; if (!fc) { ass_msg(library, MSGL_WARN, "Fontconfig disabled, only default font will be used."); goto exit; } priv->config = FcConfigCreate(); rc = FcConfigParseAndLoad(priv->config, (unsigned char *) config, FcTrue); if (!rc) { ass_msg(library, MSGL_WARN, "No usable fontconfig configuration " "file found, using fallback."); FcConfigDestroy(priv->config); priv->config = FcInitLoadConfig(); rc++; } if (rc && update) { FcConfigBuildFonts(priv->config); } if (!rc || !priv->config) { ass_msg(library, MSGL_FATAL, "No valid fontconfig configuration found!"); FcConfigDestroy(priv->config); goto exit; } for (i = 0; i < library->num_fontdata; ++i) process_fontdata(priv, library, ftlibrary, i); if (dir) { ass_msg(library, MSGL_V, "Updating font cache"); rc = FcConfigAppFontAddDir(priv->config, (const FcChar8 *) dir); if (!rc) { ass_msg(library, MSGL_WARN, "%s failed", "FcConfigAppFontAddDir"); } } priv->family_default = family ? strdup(family) : NULL; exit: priv->path_default = path ? strdup(path) : NULL; priv->index_default = 0; return priv; }
/* * Load the configuration files and scan for available fonts */ FcConfig * FcInitLoadOwnConfigAndFonts (FcConfig *config) { config = FcInitLoadOwnConfig (config); if (!config) return 0; if (!FcConfigBuildFonts (config)) { FcConfigDestroy (config); return 0; } 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; }
static PyObject* Py_Config_build_fonts(Py_Config *self, PyObject *args, PyObject *kwds) { FcBool result; result = FcConfigBuildFonts(self->x); if (!result) { PyErr_SetString(PyExc_MemoryError, "Out of memory"); return NULL; } Py_RETURN_NONE; }
void gimp_fonts_load (Gimp *gimp) { FcConfig *config; GFile *fonts_conf; GList *path; g_return_if_fail (GIMP_IS_FONT_LIST (gimp->fonts)); gimp_set_busy (gimp); if (gimp->be_verbose) g_print ("Loading fonts\n"); gimp_container_freeze (GIMP_CONTAINER (gimp->fonts)); gimp_container_clear (GIMP_CONTAINER (gimp->fonts)); config = FcInitLoadConfig (); if (! config) goto cleanup; fonts_conf = gimp_directory_file (CONF_FNAME, NULL); if (! gimp_fonts_load_fonts_conf (config, fonts_conf)) goto cleanup; fonts_conf = gimp_sysconf_directory_file (CONF_FNAME, NULL); if (! gimp_fonts_load_fonts_conf (config, fonts_conf)) goto cleanup; path = gimp_config_path_expand_to_files (gimp->config->font_path, FALSE); gimp_fonts_add_directories (config, path); g_list_free_full (path, (GDestroyNotify) g_object_unref); if (! FcConfigBuildFonts (config)) { FcConfigDestroy (config); goto cleanup; } FcConfigSetCurrent (config); gimp_font_list_restore (GIMP_FONT_LIST (gimp->fonts)); cleanup: gimp_container_thaw (GIMP_CONTAINER (gimp->fonts)); gimp_unset_busy (gimp); }
void gimp_fonts_load (Gimp *gimp) { FcConfig *config; gchar *fonts_conf; gchar *path; g_return_if_fail (GIMP_IS_FONT_LIST (gimp->fonts)); gimp_set_busy (gimp); if (gimp->be_verbose) g_print ("Loading fonts\n"); gimp_container_freeze (GIMP_CONTAINER (gimp->fonts)); gimp_container_clear (GIMP_CONTAINER (gimp->fonts)); config = FcInitLoadConfig (); if (! config) goto cleanup; fonts_conf = gimp_personal_rc_file (CONF_FNAME); if (! gimp_fonts_load_fonts_conf (config, fonts_conf)) goto cleanup; fonts_conf = g_build_filename (gimp_sysconf_directory (), CONF_FNAME, NULL); if (! gimp_fonts_load_fonts_conf (config, fonts_conf)) goto cleanup; path = gimp_config_path_expand (gimp->config->font_path, TRUE, NULL); gimp_fonts_add_directories (config, path); g_free (path); if (! FcConfigBuildFonts (config)) { FcConfigDestroy (config); goto cleanup; } FcConfigSetCurrent (config); gimp_font_list_restore (GIMP_FONT_LIST (gimp->fonts)); cleanup: gimp_container_thaw (GIMP_CONTAINER (gimp->fonts)); gimp_unset_busy (gimp); }
FcBool FcConfigSetCurrent (FcConfig *config) { if (config == _fcConfig) return FcTrue; if (!config->fonts) if (!FcConfigBuildFonts (config)) return FcFalse; if (_fcConfig) FcConfigDestroy (_fcConfig); _fcConfig = config; return FcTrue; }
void FontConfig_BuildCache( filter_t *p_filter ) { /* */ msg_Dbg( p_filter, "Building font databases."); mtime_t t1, t2; t1 = mdate(); #ifdef __OS2__ FcInit(); #endif #if defined( _WIN32 ) || defined( __APPLE__ ) dialog_progress_bar_t *p_dialog = NULL; FcConfig *fcConfig = FcInitLoadConfig(); p_dialog = dialog_ProgressCreate( p_filter, _("Building font cache"), _("Please wait while your font cache is rebuilt.\n" "This should take less than a few minutes."), NULL ); /* if( p_dialog ) dialog_ProgressSet( p_dialog, NULL, 0.5 ); */ FcConfigBuildFonts( fcConfig ); #if defined( __APPLE__ ) // By default, scan only the directory /System/Library/Fonts. // So build the set of available fonts under another directories, // and add the set to the current configuration. FcConfigAppFontAddDir( NULL, "~/Library/Fonts" ); FcConfigAppFontAddDir( NULL, "/Library/Fonts" ); FcConfigAppFontAddDir( NULL, "/Network/Library/Fonts" ); //FcConfigAppFontAddDir( NULL, "/System/Library/Fonts" ); #endif if( p_dialog ) { // dialog_ProgressSet( p_dialog, NULL, 1.0 ); dialog_ProgressDestroy( p_dialog ); p_dialog = NULL; } #endif t2 = mdate(); msg_Dbg( p_filter, "Took %ld microseconds", (long)((t2 - t1)) ); }
FcBool FcConfigSetCurrent (FcConfig *config) { FcConfig *cfg; retry: cfg = fc_atomic_ptr_get (&_fcConfig); if (config == cfg) return FcTrue; if (config && !config->fonts[FcSetSystem]) if (!FcConfigBuildFonts (config)) return FcFalse; if (!fc_atomic_ptr_cmpexch (&_fcConfig, cfg, config)) goto retry; if (cfg) FcConfigDestroy (cfg); return FcTrue; }
int FontConfig_Prepare( filter_t *p_filter ) { /* */ msg_Dbg( p_filter, "Building font databases."); mtime_t t1, t2; t1 = mdate(); #ifdef __OS2__ FcInit(); #endif #if defined( _WIN32 ) dialog_progress_bar_t *p_dialog = NULL; FcConfig *fcConfig = FcInitLoadConfig(); p_dialog = dialog_ProgressCreate( p_filter, _("Building font cache"), _("Please wait while your font cache is rebuilt.\n" "This should take less than a few minutes."), NULL ); /* if( p_dialog ) dialog_ProgressSet( p_dialog, NULL, 0.5 ); */ if( FcConfigBuildFonts( fcConfig ) == FcFalse ) return VLC_ENOMEM; if( p_dialog ) { // dialog_ProgressSet( p_dialog, NULL, 1.0 ); dialog_ProgressDestroy( p_dialog ); p_dialog = NULL; } #endif t2 = mdate(); msg_Dbg( p_filter, "Took %ld microseconds", (long)((t2 - t1)) ); return VLC_SUCCESS; }
int fontconfig_update(FCInstance *priv) { return FcConfigBuildFonts(priv->config); }
FontConfigFontFileLister::FontConfigFontFileLister(FontCollectorStatusCallback cb) : config(init_fontconfig(), FcConfigDestroy) { cb(_("Updating font cache\n"), 0); FcConfigBuildFonts(config); }