Use post table when Encoding has only Differences
Fixes #13107 In the issue, some TrueType glyph names have the format `uniXXXX`. Font's `Encoding` dictionary has the entry `Differences` but no `BaseEncoding`. `uniXXXX` names are converted to glyph indices using font's `post` table but currently that is done only when `BaseEncoding` exists. We must enable the conversion also when only `Differences` exists.
This commit is contained in:
parent
84d7cccb1d
commit
0117ee5071
@ -2901,10 +2901,18 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Last, try to map any missing charcodes using the post table.
|
// Last, try to map any missing charcodes using the post table.
|
||||||
if (properties.glyphNames && baseEncoding.length) {
|
if (
|
||||||
|
properties.glyphNames &&
|
||||||
|
(baseEncoding.length || this.differences.length)
|
||||||
|
) {
|
||||||
for (let i = 0; i < 256; ++i) {
|
for (let i = 0; i < 256; ++i) {
|
||||||
if (charCodeToGlyphId[i] === undefined && baseEncoding[i]) {
|
if (charCodeToGlyphId[i] !== undefined) {
|
||||||
glyphName = baseEncoding[i];
|
continue;
|
||||||
|
}
|
||||||
|
glyphName = this.differences[i] || baseEncoding[i];
|
||||||
|
if (!glyphName) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
const glyphId = properties.glyphNames.indexOf(glyphName);
|
const glyphId = properties.glyphNames.indexOf(glyphName);
|
||||||
if (glyphId > 0 && hasGlyph(glyphId)) {
|
if (glyphId > 0 && hasGlyph(glyphId)) {
|
||||||
charCodeToGlyphId[i] = glyphId;
|
charCodeToGlyphId[i] = glyphId;
|
||||||
@ -2912,7 +2920,6 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (charCodeToGlyphId.length === 0) {
|
if (charCodeToGlyphId.length === 0) {
|
||||||
// defines at least one glyph
|
// defines at least one glyph
|
||||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -158,6 +158,7 @@
|
|||||||
!issue6019.pdf
|
!issue6019.pdf
|
||||||
!issue6621.pdf
|
!issue6621.pdf
|
||||||
!issue6286.pdf
|
!issue6286.pdf
|
||||||
|
!issue13107_reduced.pdf
|
||||||
!issue1055r.pdf
|
!issue1055r.pdf
|
||||||
!issue11713.pdf
|
!issue11713.pdf
|
||||||
!issue1293r.pdf
|
!issue1293r.pdf
|
||||||
|
BIN
test/pdfs/issue13107_reduced.pdf
Normal file
BIN
test/pdfs/issue13107_reduced.pdf
Normal file
Binary file not shown.
@ -595,6 +595,12 @@
|
|||||||
"link": false,
|
"link": false,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
{ "id": "issue13107",
|
||||||
|
"file": "pdfs/issue13107_reduced.pdf",
|
||||||
|
"md5": "13c8d12223dec2752d3c90d250db32b7",
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
{ "id": "bug1186827",
|
{ "id": "bug1186827",
|
||||||
"file": "pdfs/bug1186827.pdf",
|
"file": "pdfs/bug1186827.pdf",
|
||||||
"md5": "6c5526ae1a9d66cb517153001afc196e",
|
"md5": "6c5526ae1a9d66cb517153001afc196e",
|
||||||
|
Loading…
Reference in New Issue
Block a user