summaryrefslogtreecommitdiffstats
path: root/libass/ass_font.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-08-03 13:43:11 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-08-03 13:43:11 +0000
commit19e1896e09d486fd42e4900abb135620662f4f7d (patch)
treec122d17a177c7de18132f66927afc8f86c97f5fb /libass/ass_font.c
parent275dff68aeb193ac2872df877f988b7c33b94250 (diff)
downloadlibass-19e1896e09d486fd42e4900abb135620662f4f7d.tar.bz2
libass-19e1896e09d486fd42e4900abb135620662f4f7d.tar.xz
More simple and correct font reselection.
Since ass_font_t contains a list of font faces, there is no need to select the face with maximum charset coverage each time. It is enough to select any face with the required glyph. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24000 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_font.c')
-rw-r--r--libass/ass_font.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c
index 493a283..a567a2e 100644
--- a/libass/ass_font.c
+++ b/libass/ass_font.c
@@ -104,7 +104,7 @@ ass_font_t* ass_font_new(ass_library_t* library, FT_Library ftlibrary, void* fc_
if (fontp)
return fontp;
- path = fontconfig_select(fc_priv, desc->family, desc->bold, desc->italic, &index);
+ path = fontconfig_select(fc_priv, desc->family, desc->bold, desc->italic, &index, 0);
mem_idx = find_font(library, path);
if (mem_idx >= 0) {
@@ -135,10 +135,6 @@ ass_font_t* ass_font_new(ass_library_t* library, FT_Library ftlibrary, void* fc_
font.v.x = font.v.y = 0;
font.size = 0.;
-#ifdef HAVE_FONTCONFIG
- font.charset = FcCharSetCreate();
-#endif
-
return ass_font_cache_add(&font);
}
@@ -208,8 +204,8 @@ static void ass_font_reselect(void* fontconfig_priv, ass_font_t* font, uint32_t
if (font->n_faces == ASS_FONT_MAX_FACES)
return;
- path = fontconfig_select_with_charset(fontconfig_priv, font->desc.family, font->desc.bold,
- font->desc.italic, &index, font->charset);
+ path = fontconfig_select(fontconfig_priv, font->desc.family, font->desc.bold,
+ font->desc.italic, &index, ch);
error = FT_New_Face(font->ftlibrary, path, index, &face);
if (error) {
@@ -282,7 +278,6 @@ FT_Glyph ass_font_get_glyph(void* fontconfig_priv, ass_font_t* font, uint32_t ch
}
#ifdef HAVE_FONTCONFIG
- FcCharSetAddChar(font->charset, ch);
if (index == 0) {
mp_msg(MSGT_ASS, MSGL_INFO, MSGTR_LIBASS_GlyphNotFoundReselectingFont,
ch, font->desc.family, font->desc.bold, font->desc.italic);
@@ -359,8 +354,5 @@ void ass_font_free(ass_font_t* font)
for (i = 0; i < font->n_faces; ++i)
if (font->faces[i]) FT_Done_Face(font->faces[i]);
if (font->desc.family) free(font->desc.family);
-#ifdef HAVE_FONTCONFIG
- if (font->charset) FcCharSetDestroy(font->charset);
-#endif
free(font);
}