diff --git a/src/fonts.js b/src/fonts.js index ce178b1c3..4723213ad 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -2498,7 +2498,8 @@ var Font = (function FontClosure() { '\x00\x01' + // encodingID string32(4 + numTables * 8); // start of the table record - var segCount = ranges.length + 1; + var trailingRangesCount = ranges[ranges.length - 1][1] < 0xFFFF ? 1 : 0; + var segCount = ranges.length + trailingRangesCount; var segCount2 = segCount * 2; var searchRange = getMaxPower2(segCount) * 2; var searchEntry = Math.log(segCount) / Math.log(2); @@ -2513,7 +2514,7 @@ var Font = (function FontClosure() { var bias = 0; if (deltas) { - for (var i = 0; i < segCount - 1; i++) { + for (var i = 0, ii = ranges.length; i < ii; i++) { var range = ranges[i]; var start = range[0]; var end = range[1]; @@ -2530,7 +2531,7 @@ var Font = (function FontClosure() { glyphsIds += string16(deltas[codes[j]]); } } else { - for (var i = 0; i < segCount - 1; i++) { + for (var i = 0, ii = ranges.length; i < ii; i++) { var range = ranges[i]; var start = range[0]; var end = range[1]; @@ -2543,10 +2544,12 @@ var Font = (function FontClosure() { } } - endCount += '\xFF\xFF'; - startCount += '\xFF\xFF'; - idDeltas += '\x00\x01'; - idRangeOffsets += '\x00\x00'; + if (trailingRangesCount > 0) { + endCount += '\xFF\xFF'; + startCount += '\xFF\xFF'; + idDeltas += '\x00\x01'; + idRangeOffsets += '\x00\x00'; + } var format314 = '\x00\x00' + // language string16(segCount2) + diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 60793fa31..3feac4d88 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -17,6 +17,7 @@ !devicen.pdf !cmykjpeg.pdf !issue840.pdf +!issue2074.pdf !scan-bad.pdf !pdfjsbad1586.pdf !freeculture.pdf diff --git a/test/pdfs/issue2074.pdf b/test/pdfs/issue2074.pdf new file mode 100644 index 000000000..edc727a58 Binary files /dev/null and b/test/pdfs/issue2074.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index a5c920277..a9d9306af 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -706,6 +706,12 @@ "rounds": 1, "type": "load" }, + { "id": "issue2074", + "file": "pdfs/issue2074.pdf", + "md5": "5e4ba2241fc35d20e44eb52289a569ab", + "rounds": 1, + "type": "eq" + }, { "id": "colorkeymask", "file": "pdfs/colorkeymask.pdf", "md5": "9f11e815b485f7f0e1fa5c116c636cf9",