Check that TrueType (3, 0) cmap tables, for symbolic fonts, are sorted correctly (issue 13626)

According to a comment in `readCmapTable`, we're assuming that the cmap tables (when more than one exist) are sorted in ascending order. If that's not the case, keep checking the following cmap tables in order to fix the referenced issue.
This commit is contained in:
Jonas Jenwald 2021-06-25 15:51:08 +02:00
parent dc7faa213e
commit 185be678ec
3 changed files with 20 additions and 1 deletions

View File

@ -1372,7 +1372,18 @@ class Font {
}
} else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
useTable = true;
canBreak = true;
let correctlySorted = true;
if (i < numTables - 1) {
const nextBytes = file.peekBytes(2),
nextPlatformId = int16(nextBytes[0], nextBytes[1]);
if (nextPlatformId < platformId) {
correctlySorted = false;
}
}
if (correctlySorted) {
canBreak = true;
}
}
if (useTable) {

View File

@ -0,0 +1 @@
https://github.com/mozilla/pdf.js/files/6715502/test.pdf

View File

@ -1635,6 +1635,13 @@
"rounds": 1,
"type": "eq"
},
{ "id": "issue13626",
"file": "pdfs/issue13626.pdf",
"md5": "68bc1c2459d56e8c33f5a12a88c9df7d",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "simpletype3font-text",
"file": "pdfs/simpletype3font.pdf",
"md5": "b374c7543920840c61999e9e86939f99",