mirror of
https://github.com/mpv-player/mpv
synced 2025-03-21 02:41:13 +00:00
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
This commit is contained in:
parent
df7795b63a
commit
4f4c08415c
@ -1982,6 +1982,10 @@ Turn on SSA/ASS subtitle rendering.
|
||||
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 @@ With fontconfig, this option determines the fontconfig font name.
|
||||
.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
|
||||
|
@ -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},
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -1139,7 +1139,7 @@ void load_font_ft(int width, int height, font_desc_t** fontp, const char *font_n
|
||||
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");
|
||||
|
@ -533,7 +533,7 @@ if (frameno_filename) {
|
||||
init_freetype();
|
||||
#endif
|
||||
#ifdef HAVE_FONTCONFIG
|
||||
if(!font_fontconfig)
|
||||
if(font_fontconfig <= 0)
|
||||
{
|
||||
#endif
|
||||
#ifdef HAVE_BITMAP_FONT
|
||||
|
Loading…
Reference in New Issue
Block a user