diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 7f0827116..4cea9d446 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -3620,6 +3620,27 @@ class PartialEvaluator { uint8array = new Uint8Array(new Uint32Array(widths).buffer); hash.update(uint8array); } + + if (composite) { + const compositeWidths = dict.get("W") || baseDict.get("W"); + if (Array.isArray(compositeWidths)) { + const widthsBuf = []; + for (const entry of compositeWidths) { + if (isNum(entry) || isRef(entry)) { + widthsBuf.push(entry.toString()); + } else if (Array.isArray(entry)) { + const subWidthsBuf = []; + for (const element of entry) { + if (isNum(element) || isRef(element)) { + subWidthsBuf.push(element.toString()); + } + } + widthsBuf.push(`[${subWidthsBuf.join()}]`); + } + } + hash.update(widthsBuf.join()); + } + } } return { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 12fbc208e..ced9fac3f 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -313,6 +313,7 @@ !noembed-eucjp.pdf !noembed-sjis.pdf !vertical.pdf +!issue13343.pdf !ZapfDingbats.pdf !bug878026.pdf !issue1045.pdf diff --git a/test/pdfs/issue13343.pdf b/test/pdfs/issue13343.pdf new file mode 100644 index 000000000..e706bacd5 Binary files /dev/null and b/test/pdfs/issue13343.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 61f33ff4d..3f27deedb 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -132,6 +132,12 @@ "link": false, "type": "eq" }, + { "id": "issue13343", + "file": "pdfs/issue13343.pdf", + "md5": "f8bf1888839e15254555092c504e1900", + "rounds": 1, + "type": "eq" + }, { "id": "bug921760", "file": "pdfs/bug921760.pdf", "md5": "1aa136d786a65b0d7cce7bdb3c58c6c3",