mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-23 08:38:06 +02:00
Fix two cmap related issues.
In issue #8707, there's a char code mapped to a non- existing glyph which shouldn't be drawn. However, we saw it was missing and tried to then use the post table and end up mapping it incorrectly. This illuminated a problem with issue #5704 and bug 893730 where glyphs disappeared after above fix. This was from the cmap returning the wrong glyph id. Which in turn was caused because the font had multiple of the same type of cmap table and we were choosing the last one. Now, we instead default to the first one. I'm unsure if we should instead be merging the multiple cmaps, but using only the first one works.
This commit is contained in:
parent
5b5781b45d
commit
0bef50d56d
4 changed files with 18 additions and 5 deletions
|
@ -1353,6 +1353,13 @@ var Font = (function FontClosure() {
|
|||
var offset = font.getInt32() >>> 0;
|
||||
var useTable = false;
|
||||
|
||||
// Sometimes there are multiple of the same type of table. Default
|
||||
// to choosing the first table and skip the rest.
|
||||
if (potentialTable && potentialTable.platformId === platformId &&
|
||||
potentialTable.encodingId === encodingId) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (platformId === 0 && encodingId === 0) {
|
||||
useTable = true;
|
||||
// Continue the loop since there still may be a higher priority
|
||||
|
@ -2393,11 +2400,9 @@ var Font = (function FontClosure() {
|
|||
if (cmapMappings[i].charCode !== unicodeOrCharCode) {
|
||||
continue;
|
||||
}
|
||||
if (hasGlyph(cmapMappings[i].glyphId)) {
|
||||
charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (!found && properties.glyphNames) {
|
||||
// Try to map using the post table.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue