summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--help/help_mp-en.h2
-rw-r--r--libass/ass_font.c12
2 files changed, 13 insertions, 1 deletions
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;
+ }
}
/**