Compute the loca table endOffset
, of the "first" glyph, correctly (issue 14618)
When there are *multiple* empty glyphs at the start of the data, ensure that the "first" glyph gets a correct `endOffset` to avoid skipping it during parsing in the `sanitizeGlyph` function.
This commit is contained in:
parent
234aa9a50e
commit
1a7921dbf0
@ -1980,6 +1980,20 @@ class Font {
|
|||||||
locaEntries.sort((a, b) => {
|
locaEntries.sort((a, b) => {
|
||||||
return a.index - b.index;
|
return a.index - b.index;
|
||||||
});
|
});
|
||||||
|
// Calculate the endOffset of the "first" glyph correctly when there are
|
||||||
|
// *multiple* empty ones at the start of the data (fixes issue14618.pdf).
|
||||||
|
for (i = 0; i < numGlyphs; i++) {
|
||||||
|
const { offset, endOffset } = locaEntries[i];
|
||||||
|
if (offset !== 0 || endOffset !== 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const nextOffset = locaEntries[i + 1].offset;
|
||||||
|
if (nextOffset === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
locaEntries[i].endOffset = nextOffset;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
const missingGlyphs = Object.create(null);
|
const missingGlyphs = Object.create(null);
|
||||||
let writeOffset = 0;
|
let writeOffset = 0;
|
||||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -321,6 +321,7 @@
|
|||||||
!jbig2_symbol_offset.pdf
|
!jbig2_symbol_offset.pdf
|
||||||
!gradientfill.pdf
|
!gradientfill.pdf
|
||||||
!bug903856.pdf
|
!bug903856.pdf
|
||||||
|
!issue14618.pdf
|
||||||
!bug850854.pdf
|
!bug850854.pdf
|
||||||
!issue12810.pdf
|
!issue12810.pdf
|
||||||
!bug866395.pdf
|
!bug866395.pdf
|
||||||
|
BIN
test/pdfs/issue14618.pdf
Normal file
BIN
test/pdfs/issue14618.pdf
Normal file
Binary file not shown.
@ -351,6 +351,12 @@
|
|||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"type": "load"
|
"type": "load"
|
||||||
},
|
},
|
||||||
|
{ "id": "issue14618",
|
||||||
|
"file": "pdfs/issue14618.pdf",
|
||||||
|
"md5": "8a4a5aac59519228019aaffdfbd56f17",
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
{ "id": "intelisa-eq",
|
{ "id": "intelisa-eq",
|
||||||
"file": "pdfs/intelisa.pdf",
|
"file": "pdfs/intelisa.pdf",
|
||||||
"md5": "24643ebe348a568cfe6a532055c71493",
|
"md5": "24643ebe348a568cfe6a532055c71493",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user