From 3b72ae063fe2f4d7adb7c59587155e0a45c692d0 Mon Sep 17 00:00:00 2001 From: Grigori Goronzy Date: Thu, 18 Aug 2011 06:19:33 +0200 Subject: Restore fontconfig runtime configuration Pass the fontconfig configuration file option and enable switch through into the font selector. This restores some of the old functionality related to fontconfig. However, the functionality to delay the fontconfig database update will not come back. This is not a big problem. Later it will be possible to manually add the fontconfig provider, which will delay the update in a comparable way. --- libass/ass_fontselect.c | 11 +++++------ libass/ass_fontselect.h | 2 +- libass/ass_render_api.c | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c index 1de1890..04a6cb4 100644 --- a/libass/ass_fontselect.c +++ b/libass/ass_fontselect.c @@ -210,7 +210,7 @@ void ass_font_provider_free(ASS_FontProvider *provider) // TODO: this should probably remove all fonts that belong // to this provider from the list - if (provider->funcs.destroy_provider) + if (provider && provider->funcs.destroy_provider) provider->funcs.destroy_provider(provider->priv); free(provider); } @@ -617,7 +617,7 @@ ass_embedded_fonts_add_provider(ASS_Library *lib, ASS_FontSelector *selector, ASS_FontSelector * ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, const char *family, - const char *path) + const char *path, const char *config, int fc) { ASS_FontSelector *priv = calloc(1, sizeof(ASS_FontSelector)); @@ -630,8 +630,9 @@ ass_fontselect_init(ASS_Library *library, ftlibrary); #ifdef CONFIG_FONTCONFIG - // XXX: for now, always add the fontconfig provider - priv->default_provider = ass_fontconfig_add_provider(library, priv, NULL); + if (fc != 0) + priv->default_provider = ass_fontconfig_add_provider(library, + priv, config); #endif return priv; @@ -665,9 +666,7 @@ void ass_fontselect_free(ASS_FontSelector *priv) // TODO: we should track all child font providers and // free them here -#ifdef CONFIG_FONTCONFIG ass_font_provider_free(priv->default_provider); -#endif ass_font_provider_free(priv->embedded_provider); free(priv); diff --git a/libass/ass_fontselect.h b/libass/ass_fontselect.h index 43a32fb..651968d 100644 --- a/libass/ass_fontselect.h +++ b/libass/ass_fontselect.h @@ -60,7 +60,7 @@ typedef struct font_provider_meta_data { ASS_FontSelector * ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, const char *family, - const char *path); + const char *path, const char *config, int fc); char *ass_font_select(ASS_FontSelector *priv, ASS_Library *library, ASS_Font *font, int *index, int *uid, uint32_t code); void ass_fontselect_free(ASS_FontSelector *priv); diff --git a/libass/ass_render_api.c b/libass/ass_render_api.c index cfa8998..5310060 100644 --- a/libass/ass_render_api.c +++ b/libass/ass_render_api.c @@ -147,7 +147,7 @@ void ass_set_fonts(ASS_Renderer *priv, const char *default_font, if (priv->fontselect) ass_fontselect_free(priv->fontselect); priv->fontselect = ass_fontselect_init(priv->library, priv->ftlibrary, - default_family, default_font); + default_family, default_font, config, fc); } void ass_set_selective_style_override_enabled(ASS_Renderer *priv, int bits) @@ -168,7 +168,7 @@ void ass_set_selective_style_override(ASS_Renderer *priv, ASS_Style *style) int ass_fonts_update(ASS_Renderer *render_priv) { - //return fontconfig_update(render_priv->fontselect); + // This is just a stub now! return 1; } -- cgit v1.2.3