diff --git a/src/core/fonts.js b/src/core/fonts.js index 0f457bcb7..ece712180 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -3222,7 +3222,7 @@ var Font = (function FontClosure() { * Read the appropriate subtable from the cmap according to 9.6.6.4 from * PDF spec */ - function readCmapTable(cmap, font, isSymbolicFont) { + function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) { var segment; var start = (font.start ? font.start : 0) + cmap.offset; font.pos = start; @@ -3253,7 +3253,7 @@ var Font = (function FontClosure() { // Continue the loop since there still may be a higher priority // table. } else if (platformId === 3 && encodingId === 1 && - (!isSymbolicFont || !potentialTable)) { + ((!isSymbolicFont && hasEncoding) || !potentialTable)) { useTable = true; if (!isSymbolicFont) { canBreak = true; @@ -4202,13 +4202,14 @@ var Font = (function FontClosure() { } else { // Most of the following logic in this code branch is based on the // 9.6.6.4 of the PDF spec. - var cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont); + var hasEncoding = + properties.differences.length > 0 || !!properties.baseEncodingName; + var cmapTable = + readCmapTable(tables.cmap, font, this.isSymbolicFont, hasEncoding); var cmapPlatformId = cmapTable.platformId; var cmapEncodingId = cmapTable.encodingId; var cmapMappings = cmapTable.mappings; var cmapMappingsLength = cmapMappings.length; - var hasEncoding = properties.differences.length || - !!properties.baseEncodingName; // The spec seems to imply that if the font is symbolic the encoding // should be ignored, this doesn't appear to work for 'preistabelle.pdf' diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index da7078297..ab225f147 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -98,6 +98,7 @@ !issue5747.pdf !issue6099.pdf !issue6336.pdf +!issue6410.pdf !gradientfill.pdf !bug903856.pdf !bug850854.pdf diff --git a/test/pdfs/issue6410.pdf b/test/pdfs/issue6410.pdf new file mode 100644 index 000000000..c0b5ad946 Binary files /dev/null and b/test/pdfs/issue6410.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index c43095116..42c986196 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1086,6 +1086,13 @@ "link": true, "type": "eq" }, + { "id": "issue6410", + "file": "pdfs/issue6410.pdf", + "md5": "fd5c5898d5b9754bb546724b7d31bf59", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "issue6413", "file": "pdfs/issue6413.pdf", "md5": "08926ac7a46e27a4abbb31256b3a7b29",