Browse Source

Merge pull request #5990 from Snuffleupagus/missing-glyphs-identityUnicode

Skip mapping of CIDFontType2 glyphs in fonts with a |IdentityToUnicodeMap|, unless |properties.widths| is defined for the glyph
Brendan Dahl 10 years ago
parent
commit
749a60a0b7
  1. 17
      src/core/fonts.js
  2. 1
      test/pdfs/.gitignore
  3. 1
      test/pdfs/bug1142033.pdf.link
  4. BIN
      test/pdfs/issue5874.pdf
  5. 15
      test/test_manifest.json

17
src/core/fonts.js

@ -4126,13 +4126,18 @@ var Font = (function FontClosure() { @@ -4126,13 +4126,18 @@ var Font = (function FontClosure() {
}
}
var charCodeToGlyphId = [], charCode, toUnicode = properties.toUnicode;
var charCodeToGlyphId = [], charCode;
var toUnicode = properties.toUnicode, widths = properties.widths;
var isIdentityUnicode = toUnicode instanceof IdentityToUnicodeMap;
function hasGlyph(glyphId, charCode) {
function hasGlyph(glyphId, charCode, widthCode) {
if (!missingGlyphs[glyphId]) {
return true;
}
if (charCode >= 0 && toUnicode.has(charCode)) {
if (!isIdentityUnicode && charCode >= 0 && toUnicode.has(charCode)) {
return true;
}
if (widths && widthCode >= 0 && isNum(widths[widthCode])) {
return true;
}
return false;
@ -4152,7 +4157,7 @@ var Font = (function FontClosure() { @@ -4152,7 +4157,7 @@ var Font = (function FontClosure() {
}
if (glyphId >= 0 && glyphId < numGlyphs &&
hasGlyph(glyphId, charCode)) {
hasGlyph(glyphId, charCode, cid)) {
charCodeToGlyphId[charCode] = glyphId;
}
});
@ -4213,7 +4218,7 @@ var Font = (function FontClosure() { @@ -4213,7 +4218,7 @@ var Font = (function FontClosure() {
var found = false;
for (i = 0; i < cmapMappingsLength; ++i) {
if (cmapMappings[i].charCode === unicodeOrCharCode &&
hasGlyph(cmapMappings[i].glyphId, unicodeOrCharCode)) {
hasGlyph(cmapMappings[i].glyphId, unicodeOrCharCode, -1)) {
charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
found = true;
break;
@ -4223,7 +4228,7 @@ var Font = (function FontClosure() { @@ -4223,7 +4228,7 @@ var Font = (function FontClosure() {
// Try to map using the post table. There are currently no known
// pdfs that this fixes.
var glyphId = properties.glyphNames.indexOf(glyphName);
if (glyphId > 0 && hasGlyph(glyphId, -1)) {
if (glyphId > 0 && hasGlyph(glyphId, -1, -1)) {
charCodeToGlyphId[charCode] = glyphId;
}
}

1
test/pdfs/.gitignore vendored

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
!issue2391-2.pdf
!issue5801.pdf
!issue5972.pdf
!issue5874.pdf
!filled-background.pdf
!ArabicCIDTrueType.pdf
!ThuluthFeatures.pdf

1
test/pdfs/bug1142033.pdf.link

@ -0,0 +1 @@ @@ -0,0 +1 @@
https://bug1142033.bugzilla.mozilla.org/attachment.cgi?id=8597714

BIN
test/pdfs/issue5874.pdf

Binary file not shown.

15
test/test_manifest.json

@ -961,6 +961,21 @@ @@ -961,6 +961,21 @@
"link": true,
"type": "load"
},
{ "id": "bug1142033",
"file": "pdfs/bug1142033.pdf",
"md5": "1d9afd397e89a0f52c056f449ec93daa",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue5874",
"file": "pdfs/issue5874.pdf",
"md5": "25922edf223aa91bc259663d0a34a6ab",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "S2-eq",
"file": "pdfs/S2.pdf",
"md5": "d0b6137846df6e0fe058f234a87fb588",

Loading…
Cancel
Save