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) => {
|
||||
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);
|
||||
let writeOffset = 0;
|
||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -321,6 +321,7 @@
|
||||
!jbig2_symbol_offset.pdf
|
||||
!gradientfill.pdf
|
||||
!bug903856.pdf
|
||||
!issue14618.pdf
|
||||
!bug850854.pdf
|
||||
!issue12810.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,
|
||||
"type": "load"
|
||||
},
|
||||
{ "id": "issue14618",
|
||||
"file": "pdfs/issue14618.pdf",
|
||||
"md5": "8a4a5aac59519228019aaffdfbd56f17",
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "intelisa-eq",
|
||||
"file": "pdfs/intelisa.pdf",
|
||||
"md5": "24643ebe348a568cfe6a532055c71493",
|
||||
|
Loading…
Reference in New Issue
Block a user