Browse Source

Fixes cmap when 0xFFFF character is included

Yury Delendik 13 years ago
parent
commit
7ea87c875e
  1. 9
      src/fonts.js
  2. 1
      test/pdfs/.gitignore
  3. 6
      test/test_manifest.json

9
src/fonts.js

@ -2498,7 +2498,8 @@ var Font = (function FontClosure() {
'\x00\x01' + // encodingID '\x00\x01' + // encodingID
string32(4 + numTables * 8); // start of the table record 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 segCount2 = segCount * 2;
var searchRange = getMaxPower2(segCount) * 2; var searchRange = getMaxPower2(segCount) * 2;
var searchEntry = Math.log(segCount) / Math.log(2); var searchEntry = Math.log(segCount) / Math.log(2);
@ -2513,7 +2514,7 @@ var Font = (function FontClosure() {
var bias = 0; var bias = 0;
if (deltas) { 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 range = ranges[i];
var start = range[0]; var start = range[0];
var end = range[1]; var end = range[1];
@ -2530,7 +2531,7 @@ var Font = (function FontClosure() {
glyphsIds += string16(deltas[codes[j]]); glyphsIds += string16(deltas[codes[j]]);
} }
} else { } else {
for (var i = 0; i < segCount - 1; i++) { for (var i = 0, ii = ranges.length; i < ii; i++) {
var range = ranges[i]; var range = ranges[i];
var start = range[0]; var start = range[0];
var end = range[1]; var end = range[1];
@ -2543,10 +2544,12 @@ var Font = (function FontClosure() {
} }
} }
if (trailingRangesCount > 0) {
endCount += '\xFF\xFF'; endCount += '\xFF\xFF';
startCount += '\xFF\xFF'; startCount += '\xFF\xFF';
idDeltas += '\x00\x01'; idDeltas += '\x00\x01';
idRangeOffsets += '\x00\x00'; idRangeOffsets += '\x00\x00';
}
var format314 = '\x00\x00' + // language var format314 = '\x00\x00' + // language
string16(segCount2) + string16(segCount2) +

1
test/pdfs/.gitignore vendored

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

6
test/test_manifest.json

@ -699,6 +699,12 @@
"rounds": 1, "rounds": 1,
"type": "load" "type": "load"
}, },
{ "id": "issue2074",
"file": "pdfs/issue2074.pdf",
"md5": "5e4ba2241fc35d20e44eb52289a569ab",
"rounds": 1,
"type": "eq"
},
{ "id": "colorkeymask", { "id": "colorkeymask",
"file": "pdfs/colorkeymask.pdf", "file": "pdfs/colorkeymask.pdf",
"md5": "9f11e815b485f7f0e1fa5c116c636cf9", "md5": "9f11e815b485f7f0e1fa5c116c636cf9",

Loading…
Cancel
Save