diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 06951cdee..2376799c3 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -695,20 +695,19 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var fontCapability = createPromiseCapability(); var preEvaluatedFont = this.preEvaluateFont(font); - var descriptor = preEvaluatedFont.descriptor; + const { descriptor, hash, } = preEvaluatedFont; var fontRefIsRef = isRef(fontRef), fontID; if (fontRefIsRef) { fontID = fontRef.toString(); } - if (isDict(descriptor)) { + if (hash && isDict(descriptor)) { if (!descriptor.fontAliases) { descriptor.fontAliases = Object.create(null); } - var fontAliases = descriptor.fontAliases; - var hash = preEvaluatedFont.hash; + if (fontAliases[hash]) { var aliasFontRef = fontAliases[hash].aliasRef; if (fontRefIsRef && aliasFontRef && @@ -785,7 +784,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { try { // error, but it's still nice to have font type reported - var descriptor = preEvaluatedFont.descriptor; var fontFile3 = descriptor && descriptor.get('FontFile3'); var subtype = fontFile3 && fontFile3.get('Subtype'); var fontType = getFontType(preEvaluatedFont.type, @@ -2352,6 +2350,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { } } + const firstChar = (dict.get('FirstChar') || 0); + const lastChar = (dict.get('LastChar') || (composite ? 0xFFFF : 0xFF)); + hash.update(`${firstChar}-${lastChar}`); + var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); if (isStream(toUnicode)) { var stream = toUnicode.str || toUnicode; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 259a95710..de9e5edcc 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -76,6 +76,7 @@ !issue10388_reduced.pdf !issue10438_reduced.pdf !issue10529.pdf +!issue10665_reduced.pdf !bad-PageLabels.pdf !decodeACSuccessive.pdf !filled-background.pdf diff --git a/test/pdfs/issue10665_reduced.pdf b/test/pdfs/issue10665_reduced.pdf new file mode 100644 index 000000000..49d96ec4b Binary files /dev/null and b/test/pdfs/issue10665_reduced.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index c188d388e..884d50fc3 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2564,6 +2564,13 @@ "link": false, "type": "eq" }, + { "id": "issue10665", + "file": "pdfs/issue10665_reduced.pdf", + "md5": "4c8938c808153f6b3840e8a5eb68b804", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "issue1466", "file": "pdfs/issue1466.pdf", "md5": "8a8877432e5bb10cfd50d60488d947bb",