changeset 25351:f46e91c64b39

Fix libass to support -nofontconfig. For history reason, fontconfig is auto-enabled when ass is enabled, we keep this behavior and document it clearly.
author ulion
date Wed, 12 Dec 2007 10:00:34 +0000
parents 2095f98cf0fa
children c090477234c6
files DOCS/man/en/mplayer.1 cfg-common.h libass/ass_fontconfig.c libass/ass_mp.c libvo/font_load_ft.c mencoder.c mplayer.c
diffstat 7 files changed, 31 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Wed Dec 12 08:50:54 2007 +0000
+++ b/DOCS/man/en/mplayer.1	Wed Dec 12 10:00:34 2007 +0000
@@ -1982,6 +1982,10 @@
 With this option, libass will be used for SSA/ASS
 external subtitles and Matroska tracks.
 You may also want to use \-embeddedfonts.
+.br
+.I NOTE:
+When fontconfig is compiled-in, \-ass turns on \-fontconfig
+unless explicitly turned off with \-nofontconfig.
 .
 .TP
 .B \-ass\-border\-color <value>
@@ -2161,6 +2165,10 @@
 .TP
 .B \-fontconfig (fontconfig only)
 Enables the usage of fontconfig managed fonts.
+.br
+.I NOTE:
+\-ass automatically turns this on unless explicitly overridden
+with \-nofontconfig.
 .
 .TP
 .B \-forcedsubsonly
--- a/cfg-common.h	Wed Dec 12 08:50:54 2007 +0000
+++ b/cfg-common.h	Wed Dec 12 10:00:34 2007 +0000
@@ -329,8 +329,8 @@
 	{"ass-hinting", &ass_hinting, CONF_TYPE_INT, CONF_RANGE, 0, 7, NULL},
 #endif
 #ifdef HAVE_FONTCONFIG
-	{"fontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, 0, 1, NULL},
-	{"nofontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, 1, 0, NULL},
+	{"fontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, -1, 1, NULL},
+	{"nofontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, 1, -1, NULL},
 #else
 	{"fontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
 	{"nofontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
--- a/libass/ass_fontconfig.c	Wed Dec 12 08:50:54 2007 +0000
+++ b/libass/ass_fontconfig.c	Wed Dec 12 10:00:34 2007 +0000
@@ -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 @@
 			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 @@
 	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);
 
--- a/libass/ass_mp.c	Wed Dec 12 08:50:54 2007 +0000
+++ b/libass/ass_mp.c	Wed Dec 12 10:00:34 2007 +0000
@@ -56,7 +56,7 @@
 #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 @@
 		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_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);
--- a/libvo/font_load_ft.c	Wed Dec 12 08:50:54 2007 +0000
+++ b/libvo/font_load_ft.c	Wed Dec 12 10:00:34 2007 +0000
@@ -1139,7 +1139,7 @@
     if (vo_font) free_font_desc(vo_font);
 
 #ifdef HAVE_FONTCONFIG
-    if (font_fontconfig)
+    if (font_fontconfig > 0)
     {
 	if (!font_name)
 	    font_name = strdup("sans-serif");
--- a/mencoder.c	Wed Dec 12 08:50:54 2007 +0000
+++ b/mencoder.c	Wed Dec 12 10:00:34 2007 +0000
@@ -533,7 +533,7 @@
   init_freetype();
 #endif
 #ifdef HAVE_FONTCONFIG
-  if(!font_fontconfig)
+  if(font_fontconfig <= 0)
   {
 #endif
 #ifdef HAVE_BITMAP_FONT
--- a/mplayer.c	Wed Dec 12 08:50:54 2007 +0000
+++ b/mplayer.c	Wed Dec 12 10:00:34 2007 +0000
@@ -2528,7 +2528,7 @@
   init_freetype();
 #endif
 #ifdef HAVE_FONTCONFIG
-  if(!font_fontconfig)
+  if(font_fontconfig <= 0)
   {
 #endif
 #ifdef HAVE_BITMAP_FONT