From fcad3718f088da91cd2263e26b40309c25242583 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 14 Feb 2024 15:12:11 +0100 Subject: [PATCH] Fix the endoffset of the last glyph when it's followed by a null offset in the loca table It fixes #17671. --- src/core/fonts.js | 8 ++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue17671.pdf | Bin 0 -> 20490 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 16 insertions(+) create mode 100755 test/pdfs/issue17671.pdf diff --git a/src/core/fonts.js b/src/core/fonts.js index 7c8b1c0d1..24ed0139c 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2117,6 +2117,14 @@ class Font { break; } + // If the last offset is 0 in the loca table then we can't compute the + // endOffset for the last glyph. So in such a case we set the endOffset + // to the end of the data (fixes issue #17671). + const last = locaEntries.at(-2); + if (last.offset !== 0 && last.endOffset === 0) { + last.endOffset = oldGlyfDataLength; + } + const missingGlyphs = Object.create(null); let writeOffset = 0; itemEncode(locaData, 0, writeOffset); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index fbc0cf99c..cd967df1d 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -628,3 +628,4 @@ !issue17492.pdf !issue17540.pdf !bug1669097.pdf +!issue17671.pdf diff --git a/test/pdfs/issue17671.pdf b/test/pdfs/issue17671.pdf new file mode 100755 index 0000000000000000000000000000000000000000..5a785ed93f023eaf094d98eea2125df3923a02ad GIT binary patch literal 20490 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 016082e89..24f309967 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -9675,5 +9675,12 @@ "id": null } } + }, + { + "id": "issue17671", + "file": "pdfs/issue17671.pdf", + "md5": "407695b36b4611bc7c501a891c8a4b28", + "rounds": 1, + "type": "eq" } ]