From 96057dc0ba9b28c4ab168695f2500135e3337ca7 Mon Sep 17 00:00:00 2001 From: Grigori Goronzy Date: Sun, 1 Aug 2010 23:52:30 +0200 Subject: [PATCH] Fall back to first charmap as last resort If we're already after the font reselection stage and a glyph cannot be found in a font, try again with the first charmap as a last resort. This is needed for old "symbol" fonts, for example. --- libass/ass_font.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libass/ass_font.c b/libass/ass_font.c index ad2863c..6a1faab 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -446,6 +446,14 @@ FT_Glyph ass_font_get_glyph(void *fontconfig_priv, ASS_Font *font, if (face_idx >= 0) { face = font->faces[face_idx]; index = FT_Get_Char_Index(face, ch); + if (index == 0 && face->num_charmaps > 0) { + ass_msg(font->library, MSGL_WARN, + "Glyph 0x%X not found, falling back to first charmap", ch); + FT_CharMap cur = face->charmap; + FT_Set_Charmap(face, face->charmaps[0]); + index = FT_Get_Char_Index(face, ch); + FT_Set_Charmap(face, cur); + } if (index == 0) { ass_msg(font->library, MSGL_ERR, "Glyph 0x%X not found in font for (%s, %d, %d)", -- 2.40.0