From 1400b0f4367e01aad5228f3213063a541955f061 Mon Sep 17 00:00:00 2001 From: eugeni Date: Thu, 15 Feb 2007 22:03:09 +0000 Subject: Select the first charmap in the font, if FreeType did not autoselect any. This happens, for example, with fonts only having an Apple Roman charmap. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22228 b3059339-0415-0410-9bf9-f77b7e298cf2 --- help/help_mp-en.h | 2 ++ libass/ass_font.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/help/help_mp-en.h b/help/help_mp-en.h index dd585c0ee6..116537d33f 100644 --- a/help/help_mp-en.h +++ b/help/help_mp-en.h @@ -2049,3 +2049,5 @@ static char help_text[]= #define MSGTR_LIBASS_GlyphNotFoundReselectingFont "[ass] Glyph 0x%X not found, reselecting font for (%s, %d, %d)\n" #define MSGTR_LIBASS_GlyphNotFound "[ass] Glyph 0x%X not found in font for (%s, %d, %d)\n" #define MSGTR_LIBASS_ErrorOpeningMemoryFont "[ass] Error opening memory font: %s\n" +#define MSGTR_LIBASS_NoCharmaps "[ass] font face with no charmaps\n" +#define MSGTR_LIBASS_NoCharmapAutodetected "[ass] no charmap autodetected, trying the first one\n" diff --git a/libass/ass_font.c b/libass/ass_font.c index 1ae136bc1e..285ecde63a 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -47,9 +47,19 @@ static void charmap_magic(FT_Face face) unsigned eid = cmap->encoding_id; if (pid == 3 /*microsoft*/ && (eid == 1 /*unicode bmp*/ || eid == 10 /*full unicode*/)) { FT_Set_Charmap(face, cmap); - break; + return; } } + + if (!face->charmap) { + if (face->num_charmaps == 0) { + mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_NoCharmaps); + return; + } + mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_NoCharmapAutodetected); + FT_Set_Charmap(face, face->charmaps[0]); + return; + } } /** -- cgit v1.2.3