|
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
|
|
|
// Use strict in our context only - users might not want it
|
|
|
'use strict';
|
|
|
|
|
|
-var pdfjsVersion = '1.5.285';
|
|
|
-var pdfjsBuild = 'bd47440';
|
|
|
+var pdfjsVersion = '1.5.287';
|
|
|
+var pdfjsBuild = 'c4db4dd';
|
|
|
|
|
|
var pdfjsFilePath =
|
|
|
typeof document !== 'undefined' && document.currentScript ?
|
|
@@ -5235,8 +5235,8 @@ var CFFParser = (function CFFParserClosure() {
|
|
|
var start = pos;
|
|
|
var bytes = this.bytes;
|
|
|
var format = bytes[pos++];
|
|
|
- var fdSelect = [];
|
|
|
- var i;
|
|
|
+ var fdSelect = [], rawBytes;
|
|
|
+ var i, invalidFirstGID = false;
|
|
|
|
|
|
switch (format) {
|
|
|
case 0:
|
|
@@ -5244,11 +5244,18 @@ var CFFParser = (function CFFParserClosure() {
|
|
|
var id = bytes[pos++];
|
|
|
fdSelect.push(id);
|
|
|
}
|
|
|
+ rawBytes = bytes.subarray(start, pos);
|
|
|
break;
|
|
|
case 3:
|
|
|
var rangesCount = (bytes[pos++] << 8) | bytes[pos++];
|
|
|
for (i = 0; i < rangesCount; ++i) {
|
|
|
var first = (bytes[pos++] << 8) | bytes[pos++];
|
|
|
+ if (i === 0 && first !== 0) {
|
|
|
+ warn('parseFDSelect: The first range must have a first GID of 0' +
|
|
|
+ ' -- trying to recover.');
|
|
|
+ invalidFirstGID = true;
|
|
|
+ first = 0;
|
|
|
+ }
|
|
|
var fdIndex = bytes[pos++];
|
|
|
var next = (bytes[pos] << 8) | bytes[pos + 1];
|
|
|
for (var j = first; j < next; ++j) {
|
|
@@ -5257,13 +5264,19 @@ var CFFParser = (function CFFParserClosure() {
|
|
|
}
|
|
|
// Advance past the sentinel(next).
|
|
|
pos += 2;
|
|
|
+ rawBytes = bytes.subarray(start, pos);
|
|
|
+
|
|
|
+ if (invalidFirstGID) {
|
|
|
+ rawBytes[3] = rawBytes[4] = 0; // Adjust the first range, first GID.
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
- error('Unknown fdselect format ' + format);
|
|
|
+ error('parseFDSelect: Unknown format "' + format + '".');
|
|
|
break;
|
|
|
}
|
|
|
- var end = pos;
|
|
|
- return new CFFFDSelect(fdSelect, bytes.subarray(start, end));
|
|
|
+ assert(fdSelect.length === length, 'parseFDSelect: Invalid font data.');
|
|
|
+
|
|
|
+ return new CFFFDSelect(fdSelect, rawBytes);
|
|
|
}
|
|
|
};
|
|
|
return CFFParser;
|