From 99d29487aba6280ca7be8b4a69863a0160fd42d1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 9 Aug 2015 12:31:05 +0200 Subject: [PATCH] Adjust which TrueType (3, 1) glyphs we attempt to skip mapping of (issue 6336) Fixes 6336. --- src/core/fonts.js | 10 +++++++--- test/pdfs/.gitignore | 1 + test/pdfs/issue6336.pdf | Bin 0 -> 10224 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 test/pdfs/issue6336.pdf diff --git a/src/core/fonts.js b/src/core/fonts.js index 5dfbab374..d9bf1d6f0 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -4236,9 +4236,10 @@ var Font = (function FontClosure() { if (!glyphName) { continue; } - var unicodeOrCharCode; + var unicodeOrCharCode, isUnicode = false; if (cmapPlatformId === 3 && cmapEncodingId === 1) { unicodeOrCharCode = GlyphsUnicode[glyphName]; + isUnicode = true; } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { // TODO: the encoding needs to be updated with mac os table. unicodeOrCharCode = Encodings.MacRomanEncoding.indexOf(glyphName); @@ -4246,8 +4247,11 @@ var Font = (function FontClosure() { var found = false; for (i = 0; i < cmapMappingsLength; ++i) { - if (cmapMappings[i].charCode === unicodeOrCharCode && - hasGlyph(cmapMappings[i].glyphId, unicodeOrCharCode, -1)) { + if (cmapMappings[i].charCode !== unicodeOrCharCode) { + continue; + } + var code = isUnicode ? charCode : unicodeOrCharCode; + if (hasGlyph(cmapMappings[i].glyphId, code, -1)) { charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; found = true; break; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 0445acb12..9a9a81ab8 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -95,6 +95,7 @@ !issue5599.pdf !issue5747.pdf !issue6099.pdf +!issue6336.pdf !gradientfill.pdf !bug903856.pdf !bug850854.pdf diff --git a/test/pdfs/issue6336.pdf b/test/pdfs/issue6336.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5bfa8d16889627ba5e0b5c29ff91a4e65e646116 GIT binary patch literal 10224 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 06554677d..4fcb797dd 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1182,6 +1182,13 @@ "link": false, "type": "eq" }, + { "id": "issue6336", + "file": "pdfs/issue6336.pdf", + "md5": "1c457c12b3606e1de610235d6768bd78", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "issue5801", "file": "pdfs/issue5801.pdf", "md5": "e9548650ad40e13e00d2a486bbc2bb1b",