Add invalid glyph index protection

This commit is contained in:
piepie62 2020-04-23 22:12:31 -04:00
parent 175dd62a90
commit 01864e1075

View File

@ -48,7 +48,7 @@ int fontGlyphIndexFromCodePoint(CFNT_s* font, u32 codePoint)
font = g_sharedFont; font = g_sharedFont;
if (!font) if (!font)
return -1; return -1;
int ret = font->finf.alterCharIndex; int ret = 0xFFFF;
if (codePoint < 0x10000) if (codePoint < 0x10000)
{ {
for (CMAP_s* cmap = font->finf.cmap; cmap; cmap = cmap->next) for (CMAP_s* cmap = font->finf.cmap; cmap; cmap = cmap->next)
@ -79,6 +79,13 @@ int fontGlyphIndexFromCodePoint(CFNT_s* font, u32 codePoint)
} }
} }
} }
if (ret == 0xFFFF) // Bogus CMAP entry. Probably exist to save space by using TABLE mappings?
{
if (font->finf.alterCharIndex == 0xFFFF)
return -1;
else
return font->finf.alterCharIndex;
}
return ret; return ret;
} }