From: ulion Date: Wed, 12 Dec 2007 10:00:34 +0000 (+0000) Subject: Fix libass to support -nofontconfig. X-Git-Tag: 0.9.7~240 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3f6d9bb8444940d74495845957fddf6a2627b2bc;p=libass Fix libass to support -nofontconfig. For history reason, fontconfig is auto-enabled when ass is enabled, we keep this behavior and document it clearly. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25379 b3059339-0415-0410-9bf9-f77b7e298cf2 --- diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c index 63e62f0..addcc82 100644 --- a/libass/ass_fontconfig.c +++ b/libass/ass_fontconfig.c @@ -40,6 +40,8 @@ #include #endif +extern int font_fontconfig; + struct fc_instance_s { #ifdef HAVE_FONTCONFIG FcConfig* config; @@ -153,6 +155,10 @@ char* fontconfig_select(fc_instance_t* priv, const char* family, unsigned bold, uint32_t code) { char* res = 0; + if (font_fontconfig < 0) { + *index = priv->index_default; + return priv->path_default; + } if (family && *family) res = _select_font(priv, family, bold, italic, index, code); if (!res && priv->family_default) { @@ -320,6 +326,14 @@ fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, con const char* dir = library->fonts_dir; int i; + if (font_fontconfig < 0) { + mp_msg(MSGT_ASS, MSGL_WARN, + MSGTR_LIBASS_FontconfigDisabledDefaultFontWillBeUsed); + priv->path_default = strdup(path); + priv->index_default = 0; + return priv; + } + rc = FcInit(); assert(rc); diff --git a/libass/ass_mp.c b/libass/ass_mp.c index e38fee4..70e8e7a 100644 --- a/libass/ass_mp.c +++ b/libass/ass_mp.c @@ -56,7 +56,7 @@ int ass_hinting = ASS_HINTING_NATIVE + 4; // native hinting for unscaled osd #ifdef HAVE_FONTCONFIG extern int font_fontconfig; #else -static int font_fontconfig = 0; +static int font_fontconfig = -1; #endif extern char* font_name; extern float text_font_scale_factor; @@ -90,7 +90,7 @@ ass_track_t* ass_default_track(ass_library_t* library) { sid = ass_alloc_style(track); style = track->styles + sid; style->Name = strdup("Default"); - style->FontName = (font_fontconfig && font_name) ? strdup(font_name) : strdup("Sans"); + style->FontName = (font_fontconfig >= 0 && font_name) ? strdup(font_name) : strdup("Sans"); fs = track->PlayResY * text_font_scale_factor / 100.; // approximate autoscale coefficients @@ -234,9 +234,9 @@ void ass_configure(ass_renderer_t* priv, int w, int h, int unscaled) { void ass_configure_fonts(ass_renderer_t* priv) { char *dir, *path, *family; dir = get_path("fonts"); - if (!font_fontconfig && font_name) path = strdup(font_name); + if (font_fontconfig < 0 && font_name) path = strdup(font_name); else path = get_path("subfont.ttf"); - if (font_fontconfig && font_name) family = strdup(font_name); + if (font_fontconfig >= 0 && font_name) family = strdup(font_name); else family = 0; ass_set_fonts(priv, path, family);