]> granicus.if.org Git - libass/commitdiff
Fix libass to support -nofontconfig.
authorulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2>
Wed, 12 Dec 2007 10:00:34 +0000 (10:00 +0000)
committerulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2>
Wed, 12 Dec 2007 10:00:34 +0000 (10:00 +0000)
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

libass/ass_fontconfig.c
libass/ass_mp.c

index 63e62f0074704c2aae5baf52bb5373a6deba0d44..addcc826468920e21d4ebbc3bb616f3529c021ee 100644 (file)
@@ -40,6 +40,8 @@
 #include <fontconfig/fcfreetype.h>
 #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);
 
index e38fee4e2fdf86057ed612687f658bad70a91cb8..70e8e7a4645e6e65c5f2a50c52894b9c5e097583 100644 (file)
@@ -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);