Merge pull request #2244 from yurydelendik/issue-2074
Fixes cmap when 0xFFFF character is included
This commit is contained in:
commit
d76f4d735f
17
src/fonts.js
17
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() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
endCount += '\xFF\xFF';
|
if (trailingRangesCount > 0) {
|
||||||
startCount += '\xFF\xFF';
|
endCount += '\xFF\xFF';
|
||||||
idDeltas += '\x00\x01';
|
startCount += '\xFF\xFF';
|
||||||
idRangeOffsets += '\x00\x00';
|
idDeltas += '\x00\x01';
|
||||||
|
idRangeOffsets += '\x00\x00';
|
||||||
|
}
|
||||||
|
|
||||||
var format314 = '\x00\x00' + // language
|
var format314 = '\x00\x00' + // language
|
||||||
string16(segCount2) +
|
string16(segCount2) +
|
||||||
|
1
test/pdfs/.gitignore
vendored
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
|
||||||
|
BIN
test/pdfs/issue2074.pdf
Normal file
BIN
test/pdfs/issue2074.pdf
Normal file
Binary file not shown.
@ -706,6 +706,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…
x
Reference in New Issue
Block a user