Merge pull request #14629 from Snuffleupagus/issue-14618

Compute the loca table `endOffset`, of the "first" glyph, correctly (issue 14618)
This commit is contained in:
Brendan Dahl 2022-03-04 16:43:17 -08:00 committed by GitHub
commit 3b6d6893d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 0 deletions

View File

@ -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;

View File

@ -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

Binary file not shown.

View File

@ -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",