Fixes cmap when 0xFFFF character is included

This commit is contained in:
Yury Delendik 2012-10-13 14:21:15 -05:00
parent 969a2010b2
commit 7ea87c875e
3 changed files with 17 additions and 7 deletions

View File

@ -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) +

View File

@ -17,6 +17,7 @@
!devicen.pdf
!cmykjpeg.pdf
!issue840.pdf
!issue2074.pdf
!scan-bad.pdf
!pdfjsbad1586.pdf
!freeculture.pdf

View File

@ -699,6 +699,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",