From 052e29cc5652fb9ff14972714ded76e57ed123bc Mon Sep 17 00:00:00 2001 From: calixteman Date: Sun, 12 Apr 2026 21:09:35 +0200 Subject: [PATCH] Take into account CharProcs keys when computing the type3 hash It fixes #19634. --- src/core/evaluator.js | 13 +++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19634.pdf | Bin 0 -> 50101 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 21 insertions(+) create mode 100644 test/pdfs/issue19634.pdf diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 0ab0e524a..9b3f31167 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -4469,6 +4469,19 @@ class PartialEvaluator { hash.update(cidToGidMap.peekBytes()); } } + + if (type.name === "Type3") { + // Type3 fonts with the same metrics/encoding but different CharProcs + // must not be aliased, since their glyphs may render completely + // differently (e.g. one font uses SMask glyph programs, another uses + // plain paths, see issue 19634). + const charProcs = baseDict.get("CharProcs"); + if (charProcs instanceof Dict) { + for (const [key, entry] of charProcs.getRawEntries()) { + hash.update(entry instanceof Ref ? `${key}\0${entry}` : key); + } + } + } } return { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 7d83280fe..7ba0239d7 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -900,3 +900,4 @@ !issue7821.pdf !issue21068.pdf !recursiveCompositGlyf.pdf +!issue19634.pdf diff --git a/test/pdfs/issue19634.pdf b/test/pdfs/issue19634.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc5d38773763af18927bd2b72d18f5949f8433bb GIT binary patch literal 50101 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 992ad54aa..d83e9e493 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -14112,5 +14112,12 @@ "md5": "e4e106d20e4af10d7a5f1a5da02db66f", "rounds": 1, "type": "eq" + }, + { + "id": "issue19634", + "file": "pdfs/issue19634.pdf", + "md5": "ae33892db2a2421ec7c9c3e2aee07205", + "rounds": 1, + "type": "eq" } ]