diff --git a/src/core/fonts.js b/src/core/fonts.js index 5b107f8e5..ed9a05893 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -3077,6 +3077,17 @@ var Font = (function FontClosure() { error('cmap table has unsupported format: ' + format); } + // removing duplicate entries + mappings.sort(function (a, b) { + return a.charcode - b.charcode; + }); + for (var i = 1; i < mappings.length; i++) { + if (mappings[i - 1].charcode === mappings[i].charcode) { + mappings.splice(i, 1); + i--; + } + } + return { platformId: potentialTable.platformId, encodingId: potentialTable.encodingId, @@ -3758,7 +3769,6 @@ var Font = (function FontClosure() { if (isTrueType) { var isGlyphLocationsLong = int16([tables.head.data[50], tables.head.data[51]]); - sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry); } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 8463dee42..3802bb165 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -50,6 +50,7 @@ !noembed-eucjp.pdf !noembed-sjis.pdf !vertical.pdf +!issue3025.pdf !issue2099-1.pdf !issue3371.pdf !issue2956.pdf diff --git a/test/pdfs/issue3025.pdf b/test/pdfs/issue3025.pdf new file mode 100644 index 000000000..3a97a2b2e Binary files /dev/null and b/test/pdfs/issue3025.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index b66c4cd98..162aa7019 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1363,6 +1363,12 @@ "rounds": 1, "type": "eq" }, + { "id": "issue3025", + "file": "pdfs/issue3025.pdf", + "md5": "8e4e8eacbd7c4c248deeca0ec49d38da", + "rounds": 1, + "type": "eq" + }, { "id": "issue2177-eq", "file": "pdfs/issue2177.pdf", "md5": "48a808278bf31de8414c4e03ecd0900a",