Try to skip mapping of missing TrueType glyphs
Also don't skip mapping of glyphs which are empty, if the corresponding charCode is included in toUnicode.
This commit is contained in:
parent
8174da61fb
commit
01e6565dd4
@ -4070,11 +4070,21 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var charCodeToGlyphId = [], charCode;
|
var charCodeToGlyphId = [], charCode, toUnicode = properties.toUnicode;
|
||||||
|
|
||||||
|
function hasGlyph(glyphId, charCode) {
|
||||||
|
if (!missingGlyphs[glyphId]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (charCode >= 0 && toUnicode.has(charCode)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (properties.type === 'CIDFontType2') {
|
if (properties.type === 'CIDFontType2') {
|
||||||
var cidToGidMap = properties.cidToGidMap || [];
|
var cidToGidMap = properties.cidToGidMap || [];
|
||||||
var isCidToGidMapEmpty = cidToGidMap.length === 0;
|
var isCidToGidMapEmpty = cidToGidMap.length === 0;
|
||||||
var toUnicode = properties.toUnicode;
|
|
||||||
|
|
||||||
properties.cMap.forEach(function(charCode, cid) {
|
properties.cMap.forEach(function(charCode, cid) {
|
||||||
assert(cid <= 0xffff, 'Max size of CID is 65,535');
|
assert(cid <= 0xffff, 'Max size of CID is 65,535');
|
||||||
@ -4086,7 +4096,7 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (glyphId >= 0 && glyphId < numGlyphs &&
|
if (glyphId >= 0 && glyphId < numGlyphs &&
|
||||||
(!missingGlyphs[glyphId] || toUnicode.has(charCode))) {
|
hasGlyph(glyphId, charCode)) {
|
||||||
charCodeToGlyphId[charCode] = glyphId;
|
charCodeToGlyphId[charCode] = glyphId;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -4146,7 +4156,8 @@ var Font = (function FontClosure() {
|
|||||||
|
|
||||||
var found = false;
|
var found = false;
|
||||||
for (i = 0; i < cmapMappingsLength; ++i) {
|
for (i = 0; i < cmapMappingsLength; ++i) {
|
||||||
if (cmapMappings[i].charCode === unicodeOrCharCode) {
|
if (cmapMappings[i].charCode === unicodeOrCharCode &&
|
||||||
|
hasGlyph(cmapMappings[i].glyphId, unicodeOrCharCode)) {
|
||||||
charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
|
charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@ -4156,7 +4167,7 @@ var Font = (function FontClosure() {
|
|||||||
// Try to map using the post table. There are currently no known
|
// Try to map using the post table. There are currently no known
|
||||||
// pdfs that this fixes.
|
// pdfs that this fixes.
|
||||||
var glyphId = properties.glyphNames.indexOf(glyphName);
|
var glyphId = properties.glyphNames.indexOf(glyphName);
|
||||||
if (glyphId > 0) {
|
if (glyphId > 0 && hasGlyph(glyphId, -1)) {
|
||||||
charCodeToGlyphId[charCode] = glyphId;
|
charCodeToGlyphId[charCode] = glyphId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
test/pdfs/.gitignore
vendored
2
test/pdfs/.gitignore
vendored
@ -59,6 +59,8 @@
|
|||||||
!zerowidthline.pdf
|
!zerowidthline.pdf
|
||||||
!bug868745.pdf
|
!bug868745.pdf
|
||||||
!mmtype1.pdf
|
!mmtype1.pdf
|
||||||
|
!issue5704.pdf
|
||||||
|
!bug893730.pdf
|
||||||
!bug864847.pdf
|
!bug864847.pdf
|
||||||
!issue1002.pdf
|
!issue1002.pdf
|
||||||
!issue925.pdf
|
!issue925.pdf
|
||||||
|
BIN
test/pdfs/bug893730.pdf
Normal file
BIN
test/pdfs/bug893730.pdf
Normal file
Binary file not shown.
BIN
test/pdfs/issue5704.pdf
Normal file
BIN
test/pdfs/issue5704.pdf
Normal file
Binary file not shown.
@ -1022,6 +1022,20 @@
|
|||||||
"link": true,
|
"link": true,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
{ "id": "issue5704",
|
||||||
|
"file": "pdfs/issue5704.pdf",
|
||||||
|
"md5": "6e0b62585feef24dff2d7e7687cd8128",
|
||||||
|
"rounds": 1,
|
||||||
|
"link": false,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
|
{ "id": "bug893730",
|
||||||
|
"file": "pdfs/bug893730.pdf",
|
||||||
|
"md5": "2587379fb1b3bbff89c14f0863e78383",
|
||||||
|
"rounds": 1,
|
||||||
|
"link": false,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
{ "id": "pdfkit_compressed",
|
{ "id": "pdfkit_compressed",
|
||||||
"file": "pdfs/pdfkit_compressed.pdf",
|
"file": "pdfs/pdfkit_compressed.pdf",
|
||||||
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
|
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
|
||||||
|
Loading…
Reference in New Issue
Block a user