Bug 1394236 - For Apple fonts that include a 'kerx' table, prefer the Core Text shaping path so that we get kerning support. r=jrmuizel

This commit is contained in:
Jonathan Kew 2017-09-08 15:33:48 +01:00
Родитель e2aad645e4
Коммит 4f28c7d6bb
1 изменённых файлов: 6 добавлений и 3 удалений

Просмотреть файл

@ -183,14 +183,17 @@ MacOSFontEntry::ReadCMAP(FontInfoData *aFontInfoData)
// characters it supports, so only check/clear the
// complex-script ranges for non-Graphite fonts
// for layout support, check for the presence of mort/morx and/or
// for layout support, check for the presence of mort/morx/kerx and/or
// opentype layout tables
bool hasAATLayout = HasFontTable(TRUETYPE_TAG('m','o','r','x')) ||
HasFontTable(TRUETYPE_TAG('m','o','r','t'));
bool hasAppleKerning = HasFontTable(TRUETYPE_TAG('k','e','r','x'));
bool hasGSUB = HasFontTable(TRUETYPE_TAG('G','S','U','B'));
bool hasGPOS = HasFontTable(TRUETYPE_TAG('G','P','O','S'));
if (hasAATLayout && !(hasGSUB || hasGPOS)) {
mRequiresAAT = true; // prefer CoreText if font has no OTL tables
if ((hasAATLayout && !(hasGSUB || hasGPOS)) || hasAppleKerning) {
mRequiresAAT = true; // prefer CoreText if font has no OTL tables,
// or if it uses the Apple-specific 'kerx'
// variant of kerning table
}
for (const ScriptRange* sr = gfxPlatformFontList::sComplexScriptRanges;