pdfjs-dist 2.0.487 → 2.1.266
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/bower.json +1 -1
- package/build/pdf.js +15564 -9476
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +46644 -36309
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/external/url/url-lib.js +627 -0
- package/image_decoders/pdf.image_decoders.js +11430 -0
- package/image_decoders/pdf.image_decoders.js.map +1 -0
- package/image_decoders/pdf.image_decoders.min.js +1 -0
- package/lib/core/annotation.js +406 -131
- package/lib/core/arithmetic_decoder.js +275 -245
- package/lib/core/bidi.js +65 -6
- package/lib/core/ccitt.js +173 -18
- package/lib/core/ccitt_stream.js +15 -6
- package/lib/core/cff_parser.js +376 -53
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +387 -149
- package/lib/core/cmap.js +310 -75
- package/lib/core/colorspace.js +874 -594
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +545 -260
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +725 -147
- package/lib/core/font_renderer.js +360 -91
- package/lib/core/fonts.js +791 -186
- package/lib/core/function.js +284 -71
- package/lib/core/glyphlist.js +3 -2
- package/lib/core/image.js +168 -61
- package/lib/core/jbig2.js +479 -66
- package/lib/core/jbig2_stream.js +19 -8
- package/lib/core/jpeg_stream.js +38 -13
- package/lib/core/jpg.js +252 -29
- package/lib/core/jpx.js +396 -6
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +4 -4
- package/lib/core/murmurhash3.js +24 -6
- package/lib/core/obj.js +1137 -475
- package/lib/core/operator_list.js +108 -6
- package/lib/core/parser.js +321 -68
- package/lib/core/pattern.js +145 -13
- package/lib/core/pdf_manager.js +321 -133
- package/lib/core/primitives.js +75 -22
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +10 -10
- package/lib/core/stream.js +313 -34
- package/lib/core/type1_parser.js +143 -13
- package/lib/core/unicode.js +31 -4
- package/lib/core/worker.js +210 -66
- package/lib/display/annotation_layer.js +361 -123
- package/lib/display/api.js +1454 -729
- package/lib/display/api_compatibility.js +11 -13
- package/lib/display/canvas.js +324 -29
- package/lib/display/content_disposition.js +83 -32
- package/lib/display/dom_utils.js +226 -41
- package/lib/display/fetch_stream.js +208 -84
- package/lib/display/font_loader.js +465 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +216 -51
- package/lib/display/network_utils.js +32 -19
- package/lib/display/node_stream.js +352 -169
- package/lib/display/pattern_helper.js +58 -7
- package/lib/display/svg.js +242 -29
- package/lib/display/text_layer.js +132 -18
- package/lib/display/transport_stream.js +171 -42
- package/lib/display/webgl.js +64 -18
- package/lib/display/worker_options.js +5 -4
- package/lib/display/xml_parser.js +166 -53
- package/lib/examples/node/domstubs.js +57 -4
- package/lib/pdf.js +21 -4
- package/lib/pdf.worker.js +5 -3
- package/lib/shared/compatibility.js +158 -564
- package/lib/shared/global_scope.js +2 -2
- package/lib/shared/is_node.js +4 -4
- package/lib/shared/message_handler.js +521 -0
- package/lib/shared/streams_polyfill.js +21 -17
- package/lib/shared/url_polyfill.js +56 -0
- package/lib/shared/util.js +295 -650
- package/lib/test/unit/annotation_spec.js +629 -345
- package/lib/test/unit/api_spec.js +555 -253
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +40 -11
- package/lib/test/unit/clitests_helper.js +9 -7
- package/lib/test/unit/cmap_spec.js +80 -26
- package/lib/test/unit/colorspace_spec.js +99 -52
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +41 -53
- package/lib/test/unit/display_svg_spec.js +33 -17
- package/lib/test/unit/document_spec.js +3 -3
- package/lib/test/unit/dom_utils_spec.js +9 -9
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +34 -9
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +31 -18
- package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
- package/lib/test/unit/metadata_spec.js +71 -11
- package/lib/test/unit/murmurhash3_spec.js +3 -3
- package/lib/test/unit/network_spec.js +20 -5
- package/lib/test/unit/network_utils_spec.js +41 -14
- package/lib/test/unit/node_stream_spec.js +51 -27
- package/lib/test/unit/parser_spec.js +35 -8
- package/lib/test/unit/pdf_find_controller_spec.js +230 -0
- package/lib/test/unit/pdf_find_utils_spec.js +63 -0
- package/lib/test/unit/pdf_history_spec.js +21 -9
- package/lib/test/unit/primitives_spec.js +24 -4
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +90 -27
- package/lib/test/unit/testreporter.js +21 -3
- package/lib/test/unit/type1_parser_spec.js +8 -6
- package/lib/test/unit/ui_utils_spec.js +452 -14
- package/lib/test/unit/unicode_spec.js +14 -11
- package/lib/test/unit/util_spec.js +131 -9
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1240 -582
- package/lib/web/app_options.js +71 -41
- package/lib/web/base_viewer.js +508 -179
- package/lib/web/chromecom.js +261 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +31 -13
- package/lib/web/firefox_print_service.js +17 -9
- package/lib/web/firefoxcom.js +283 -79
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +26 -4
- package/lib/web/interfaces.js +170 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +21 -13
- package/lib/web/pdf_attachment_viewer.js +38 -18
- package/lib/web/pdf_cursor_tools.js +39 -16
- package/lib/web/pdf_document_properties.js +80 -30
- package/lib/web/pdf_find_bar.js +84 -40
- package/lib/web/pdf_find_controller.js +495 -184
- package/lib/web/pdf_find_utils.js +111 -0
- package/lib/web/pdf_history.js +190 -53
- package/lib/web/pdf_link_service.js +137 -76
- package/lib/web/pdf_outline_viewer.js +73 -22
- package/lib/web/pdf_page_view.js +196 -63
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +57 -11
- package/lib/web/pdf_rendering_queue.js +27 -5
- package/lib/web/pdf_sidebar.js +120 -67
- package/lib/web/pdf_sidebar_resizer.js +42 -16
- package/lib/web/pdf_single_page_viewer.js +74 -66
- package/lib/web/pdf_thumbnail_view.js +103 -32
- package/lib/web/pdf_thumbnail_viewer.js +64 -24
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +91 -52
- package/lib/web/preferences.js +275 -80
- package/lib/web/secondary_toolbar.js +165 -40
- package/lib/web/text_layer_builder.js +162 -65
- package/lib/web/toolbar.js +78 -43
- package/lib/web/ui_utils.js +462 -136
- package/lib/web/view_history.js +215 -67
- package/lib/web/viewer_compatibility.js +4 -13
- package/package.json +5 -4
- package/web/pdf_viewer.css +58 -1
- package/web/pdf_viewer.js +6346 -3919
- package/web/pdf_viewer.js.map +1 -1
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
package/lib/core/cmap.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2018 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,24 +19,49 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.CMapFactory = exports.IdentityCMap = exports.CMap =
|
27
|
+
exports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0;
|
28
28
|
|
29
|
-
var _util = require(
|
29
|
+
var _util = require("../shared/util");
|
30
30
|
|
31
|
-
var _primitives = require(
|
31
|
+
var _primitives = require("./primitives");
|
32
32
|
|
33
|
-
var _parser = require(
|
33
|
+
var _parser = require("./parser");
|
34
34
|
|
35
|
-
var _stream = require(
|
35
|
+
var _stream = require("./stream");
|
36
|
+
|
37
|
+
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
38
|
+
|
39
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
40
|
+
|
41
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
42
|
+
|
43
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
44
|
+
|
45
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
46
|
+
|
47
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
48
|
+
|
49
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
50
|
+
|
51
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
52
|
+
|
53
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
36
54
|
|
37
55
|
var BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol'];
|
38
|
-
|
39
|
-
|
56
|
+
|
57
|
+
var CMap =
|
58
|
+
/*#__PURE__*/
|
59
|
+
function () {
|
60
|
+
function CMap() {
|
61
|
+
var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
62
|
+
|
63
|
+
_classCallCheck(this, CMap);
|
64
|
+
|
40
65
|
this.codespaceRanges = [[], [], [], []];
|
41
66
|
this.numCodespaceRanges = 0;
|
42
67
|
this._map = [];
|
@@ -45,43 +70,62 @@ var CMap = function CMapClosure() {
|
|
45
70
|
this.useCMap = null;
|
46
71
|
this.builtInCMap = builtInCMap;
|
47
72
|
}
|
48
|
-
|
49
|
-
|
73
|
+
|
74
|
+
_createClass(CMap, [{
|
75
|
+
key: "addCodespaceRange",
|
76
|
+
value: function addCodespaceRange(n, low, high) {
|
50
77
|
this.codespaceRanges[n - 1].push(low, high);
|
51
78
|
this.numCodespaceRanges++;
|
52
|
-
}
|
53
|
-
|
79
|
+
}
|
80
|
+
}, {
|
81
|
+
key: "mapCidRange",
|
82
|
+
value: function mapCidRange(low, high, dstLow) {
|
54
83
|
while (low <= high) {
|
55
84
|
this._map[low++] = dstLow++;
|
56
85
|
}
|
57
|
-
}
|
58
|
-
|
86
|
+
}
|
87
|
+
}, {
|
88
|
+
key: "mapBfRange",
|
89
|
+
value: function mapBfRange(low, high, dstLow) {
|
59
90
|
var lastByte = dstLow.length - 1;
|
91
|
+
|
60
92
|
while (low <= high) {
|
61
93
|
this._map[low++] = dstLow;
|
62
|
-
dstLow = dstLow.
|
94
|
+
dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
|
63
95
|
}
|
64
|
-
}
|
65
|
-
|
96
|
+
}
|
97
|
+
}, {
|
98
|
+
key: "mapBfRangeToArray",
|
99
|
+
value: function mapBfRangeToArray(low, high, array) {
|
66
100
|
var i = 0,
|
67
101
|
ii = array.length;
|
102
|
+
|
68
103
|
while (low <= high && i < ii) {
|
69
104
|
this._map[low] = array[i++];
|
70
105
|
++low;
|
71
106
|
}
|
72
|
-
}
|
73
|
-
|
107
|
+
}
|
108
|
+
}, {
|
109
|
+
key: "mapOne",
|
110
|
+
value: function mapOne(src, dst) {
|
74
111
|
this._map[src] = dst;
|
75
|
-
}
|
76
|
-
|
112
|
+
}
|
113
|
+
}, {
|
114
|
+
key: "lookup",
|
115
|
+
value: function lookup(code) {
|
77
116
|
return this._map[code];
|
78
|
-
}
|
79
|
-
|
117
|
+
}
|
118
|
+
}, {
|
119
|
+
key: "contains",
|
120
|
+
value: function contains(code) {
|
80
121
|
return this._map[code] !== undefined;
|
81
|
-
}
|
82
|
-
|
122
|
+
}
|
123
|
+
}, {
|
124
|
+
key: "forEach",
|
125
|
+
value: function forEach(callback) {
|
83
126
|
var map = this._map;
|
84
127
|
var length = map.length;
|
128
|
+
|
85
129
|
if (length <= 0x10000) {
|
86
130
|
for (var i = 0; i < length; i++) {
|
87
131
|
if (map[i] !== undefined) {
|
@@ -93,32 +137,43 @@ var CMap = function CMapClosure() {
|
|
93
137
|
callback(_i, map[_i]);
|
94
138
|
}
|
95
139
|
}
|
96
|
-
}
|
97
|
-
|
140
|
+
}
|
141
|
+
}, {
|
142
|
+
key: "charCodeOf",
|
143
|
+
value: function charCodeOf(value) {
|
98
144
|
var map = this._map;
|
145
|
+
|
99
146
|
if (map.length <= 0x10000) {
|
100
147
|
return map.indexOf(value);
|
101
148
|
}
|
149
|
+
|
102
150
|
for (var charCode in map) {
|
103
151
|
if (map[charCode] === value) {
|
104
152
|
return charCode | 0;
|
105
153
|
}
|
106
154
|
}
|
155
|
+
|
107
156
|
return -1;
|
108
|
-
}
|
109
|
-
|
157
|
+
}
|
158
|
+
}, {
|
159
|
+
key: "getMap",
|
160
|
+
value: function getMap() {
|
110
161
|
return this._map;
|
111
|
-
}
|
112
|
-
|
162
|
+
}
|
163
|
+
}, {
|
164
|
+
key: "readCharCode",
|
165
|
+
value: function readCharCode(str, offset, out) {
|
113
166
|
var c = 0;
|
114
167
|
var codespaceRanges = this.codespaceRanges;
|
115
|
-
|
116
|
-
for (var n = 0; n <
|
168
|
+
|
169
|
+
for (var n = 0, nn = codespaceRanges.length; n < nn; n++) {
|
117
170
|
c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;
|
118
171
|
var codespaceRange = codespaceRanges[n];
|
172
|
+
|
119
173
|
for (var k = 0, kk = codespaceRange.length; k < kk;) {
|
120
174
|
var low = codespaceRange[k++];
|
121
175
|
var high = codespaceRange[k++];
|
176
|
+
|
122
177
|
if (c >= low && c <= high) {
|
123
178
|
out.charcode = c;
|
124
179
|
out.length = n + 1;
|
@@ -126,142 +181,205 @@ var CMap = function CMapClosure() {
|
|
126
181
|
}
|
127
182
|
}
|
128
183
|
}
|
184
|
+
|
129
185
|
out.charcode = 0;
|
130
186
|
out.length = 1;
|
131
|
-
}
|
132
|
-
|
133
|
-
|
187
|
+
}
|
188
|
+
}, {
|
189
|
+
key: "length",
|
190
|
+
get: function get() {
|
134
191
|
return this._map.length;
|
135
|
-
}
|
136
|
-
|
192
|
+
}
|
193
|
+
}, {
|
194
|
+
key: "isIdentityCMap",
|
195
|
+
get: function get() {
|
137
196
|
if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {
|
138
197
|
return false;
|
139
198
|
}
|
199
|
+
|
140
200
|
if (this._map.length !== 0x10000) {
|
141
201
|
return false;
|
142
202
|
}
|
203
|
+
|
143
204
|
for (var i = 0; i < 0x10000; i++) {
|
144
205
|
if (this._map[i] !== i) {
|
145
206
|
return false;
|
146
207
|
}
|
147
208
|
}
|
209
|
+
|
148
210
|
return true;
|
149
211
|
}
|
150
|
-
};
|
212
|
+
}]);
|
213
|
+
|
151
214
|
return CMap;
|
152
215
|
}();
|
153
|
-
|
216
|
+
|
217
|
+
exports.CMap = CMap;
|
218
|
+
|
219
|
+
var IdentityCMap =
|
220
|
+
/*#__PURE__*/
|
221
|
+
function (_CMap) {
|
222
|
+
_inherits(IdentityCMap, _CMap);
|
223
|
+
|
154
224
|
function IdentityCMap(vertical, n) {
|
155
|
-
|
156
|
-
|
157
|
-
this
|
225
|
+
var _this;
|
226
|
+
|
227
|
+
_classCallCheck(this, IdentityCMap);
|
228
|
+
|
229
|
+
_this = _possibleConstructorReturn(this, _getPrototypeOf(IdentityCMap).call(this));
|
230
|
+
_this.vertical = vertical;
|
231
|
+
|
232
|
+
_this.addCodespaceRange(n, 0, 0xffff);
|
233
|
+
|
234
|
+
return _this;
|
158
235
|
}
|
159
|
-
|
160
|
-
IdentityCMap
|
161
|
-
|
162
|
-
|
236
|
+
|
237
|
+
_createClass(IdentityCMap, [{
|
238
|
+
key: "mapCidRange",
|
239
|
+
value: function mapCidRange(low, high, dstLow) {
|
163
240
|
(0, _util.unreachable)('should not call mapCidRange');
|
164
|
-
}
|
165
|
-
|
241
|
+
}
|
242
|
+
}, {
|
243
|
+
key: "mapBfRange",
|
244
|
+
value: function mapBfRange(low, high, dstLow) {
|
166
245
|
(0, _util.unreachable)('should not call mapBfRange');
|
167
|
-
}
|
168
|
-
|
246
|
+
}
|
247
|
+
}, {
|
248
|
+
key: "mapBfRangeToArray",
|
249
|
+
value: function mapBfRangeToArray(low, high, array) {
|
169
250
|
(0, _util.unreachable)('should not call mapBfRangeToArray');
|
170
|
-
}
|
171
|
-
|
251
|
+
}
|
252
|
+
}, {
|
253
|
+
key: "mapOne",
|
254
|
+
value: function mapOne(src, dst) {
|
172
255
|
(0, _util.unreachable)('should not call mapCidOne');
|
173
|
-
}
|
174
|
-
|
256
|
+
}
|
257
|
+
}, {
|
258
|
+
key: "lookup",
|
259
|
+
value: function lookup(code) {
|
175
260
|
return Number.isInteger(code) && code <= 0xffff ? code : undefined;
|
176
|
-
}
|
177
|
-
|
261
|
+
}
|
262
|
+
}, {
|
263
|
+
key: "contains",
|
264
|
+
value: function contains(code) {
|
178
265
|
return Number.isInteger(code) && code <= 0xffff;
|
179
|
-
}
|
180
|
-
|
266
|
+
}
|
267
|
+
}, {
|
268
|
+
key: "forEach",
|
269
|
+
value: function forEach(callback) {
|
181
270
|
for (var i = 0; i <= 0xffff; i++) {
|
182
271
|
callback(i, i);
|
183
272
|
}
|
184
|
-
}
|
185
|
-
|
273
|
+
}
|
274
|
+
}, {
|
275
|
+
key: "charCodeOf",
|
276
|
+
value: function charCodeOf(value) {
|
186
277
|
return Number.isInteger(value) && value <= 0xffff ? value : -1;
|
187
|
-
}
|
188
|
-
|
278
|
+
}
|
279
|
+
}, {
|
280
|
+
key: "getMap",
|
281
|
+
value: function getMap() {
|
189
282
|
var map = new Array(0x10000);
|
283
|
+
|
190
284
|
for (var i = 0; i <= 0xffff; i++) {
|
191
285
|
map[i] = i;
|
192
286
|
}
|
193
|
-
return map;
|
194
|
-
},
|
195
287
|
|
196
|
-
|
197
|
-
|
288
|
+
return map;
|
289
|
+
}
|
290
|
+
}, {
|
291
|
+
key: "length",
|
292
|
+
get: function get() {
|
198
293
|
return 0x10000;
|
199
|
-
}
|
200
|
-
|
294
|
+
}
|
295
|
+
}, {
|
296
|
+
key: "isIdentityCMap",
|
297
|
+
get: function get() {
|
201
298
|
(0, _util.unreachable)('should not access .isIdentityCMap');
|
202
299
|
}
|
203
|
-
};
|
300
|
+
}]);
|
301
|
+
|
204
302
|
return IdentityCMap;
|
205
|
-
}();
|
303
|
+
}(CMap);
|
304
|
+
|
305
|
+
exports.IdentityCMap = IdentityCMap;
|
306
|
+
|
206
307
|
var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
207
308
|
function hexToInt(a, size) {
|
208
309
|
var n = 0;
|
310
|
+
|
209
311
|
for (var i = 0; i <= size; i++) {
|
210
312
|
n = n << 8 | a[i];
|
211
313
|
}
|
314
|
+
|
212
315
|
return n >>> 0;
|
213
316
|
}
|
317
|
+
|
214
318
|
function hexToStr(a, size) {
|
215
319
|
if (size === 1) {
|
216
320
|
return String.fromCharCode(a[0], a[1]);
|
217
321
|
}
|
322
|
+
|
218
323
|
if (size === 3) {
|
219
324
|
return String.fromCharCode(a[0], a[1], a[2], a[3]);
|
220
325
|
}
|
326
|
+
|
221
327
|
return String.fromCharCode.apply(null, a.subarray(0, size + 1));
|
222
328
|
}
|
329
|
+
|
223
330
|
function addHex(a, b, size) {
|
224
331
|
var c = 0;
|
332
|
+
|
225
333
|
for (var i = size; i >= 0; i--) {
|
226
334
|
c += a[i] + b[i];
|
227
335
|
a[i] = c & 255;
|
228
336
|
c >>= 8;
|
229
337
|
}
|
230
338
|
}
|
339
|
+
|
231
340
|
function incHex(a, size) {
|
232
341
|
var c = 1;
|
342
|
+
|
233
343
|
for (var i = size; i >= 0 && c > 0; i--) {
|
234
344
|
c += a[i];
|
235
345
|
a[i] = c & 255;
|
236
346
|
c >>= 8;
|
237
347
|
}
|
238
348
|
}
|
349
|
+
|
239
350
|
var MAX_NUM_SIZE = 16;
|
240
351
|
var MAX_ENCODED_NUM_SIZE = 19;
|
352
|
+
|
241
353
|
function BinaryCMapStream(data) {
|
242
354
|
this.buffer = data;
|
243
355
|
this.pos = 0;
|
244
356
|
this.end = data.length;
|
245
357
|
this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
|
246
358
|
}
|
359
|
+
|
247
360
|
BinaryCMapStream.prototype = {
|
248
361
|
readByte: function readByte() {
|
249
362
|
if (this.pos >= this.end) {
|
250
363
|
return -1;
|
251
364
|
}
|
365
|
+
|
252
366
|
return this.buffer[this.pos++];
|
253
367
|
},
|
254
368
|
readNumber: function readNumber() {
|
255
369
|
var n = 0;
|
256
370
|
var last;
|
371
|
+
|
257
372
|
do {
|
258
373
|
var b = this.readByte();
|
374
|
+
|
259
375
|
if (b < 0) {
|
260
376
|
throw new _util.FormatError('unexpected EOF in bcmap');
|
261
377
|
}
|
378
|
+
|
262
379
|
last = !(b & 0x80);
|
263
380
|
n = n << 7 | b & 0x7F;
|
264
381
|
} while (!last);
|
382
|
+
|
265
383
|
return n;
|
266
384
|
},
|
267
385
|
readSigned: function readSigned() {
|
@@ -276,22 +394,28 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
276
394
|
var last;
|
277
395
|
var stack = this.tmpBuf,
|
278
396
|
sp = 0;
|
397
|
+
|
279
398
|
do {
|
280
399
|
var b = this.readByte();
|
400
|
+
|
281
401
|
if (b < 0) {
|
282
402
|
throw new _util.FormatError('unexpected EOF in bcmap');
|
283
403
|
}
|
404
|
+
|
284
405
|
last = !(b & 0x80);
|
285
406
|
stack[sp++] = b & 0x7F;
|
286
407
|
} while (!last);
|
408
|
+
|
287
409
|
var i = size,
|
288
410
|
buffer = 0,
|
289
411
|
bufferSize = 0;
|
412
|
+
|
290
413
|
while (i >= 0) {
|
291
414
|
while (bufferSize < 8 && stack.length > 0) {
|
292
415
|
buffer = stack[--sp] << bufferSize | buffer;
|
293
416
|
bufferSize += 7;
|
294
417
|
}
|
418
|
+
|
295
419
|
num[i] = buffer & 255;
|
296
420
|
i--;
|
297
421
|
buffer >>= 8;
|
@@ -302,6 +426,7 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
302
426
|
this.readHexNumber(num, size);
|
303
427
|
var sign = num[size] & 1 ? 255 : 0;
|
304
428
|
var c = 0;
|
429
|
+
|
305
430
|
for (var i = 0; i <= size; i++) {
|
306
431
|
c = (c & 1) << 8 | num[i];
|
307
432
|
num[i] = c >> 1 ^ sign;
|
@@ -310,12 +435,15 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
310
435
|
readString: function readString() {
|
311
436
|
var len = this.readNumber();
|
312
437
|
var s = '';
|
438
|
+
|
313
439
|
for (var i = 0; i < len; i++) {
|
314
440
|
s += String.fromCharCode(this.readNumber());
|
315
441
|
}
|
442
|
+
|
316
443
|
return s;
|
317
444
|
}
|
318
445
|
};
|
446
|
+
|
319
447
|
function processBinaryCMap(data, cMap, extend) {
|
320
448
|
return new Promise(function (resolve, reject) {
|
321
449
|
var stream = new BinaryCMapStream(data);
|
@@ -329,33 +457,42 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
329
457
|
var tmp = new Uint8Array(MAX_NUM_SIZE);
|
330
458
|
var code;
|
331
459
|
var b;
|
460
|
+
|
332
461
|
while ((b = stream.readByte()) >= 0) {
|
333
462
|
var type = b >> 5;
|
463
|
+
|
334
464
|
if (type === 7) {
|
335
465
|
switch (b & 0x1F) {
|
336
466
|
case 0:
|
337
467
|
stream.readString();
|
338
468
|
break;
|
469
|
+
|
339
470
|
case 1:
|
340
471
|
useCMap = stream.readString();
|
341
472
|
break;
|
342
473
|
}
|
474
|
+
|
343
475
|
continue;
|
344
476
|
}
|
477
|
+
|
345
478
|
var sequence = !!(b & 0x10);
|
346
479
|
var dataSize = b & 15;
|
480
|
+
|
347
481
|
if (dataSize + 1 > MAX_NUM_SIZE) {
|
348
482
|
throw new Error('processBinaryCMap: Invalid dataSize.');
|
349
483
|
}
|
484
|
+
|
350
485
|
var ucs2DataSize = 1;
|
351
486
|
var subitemsCount = stream.readNumber();
|
352
487
|
var i;
|
488
|
+
|
353
489
|
switch (type) {
|
354
490
|
case 0:
|
355
491
|
stream.readHex(start, dataSize);
|
356
492
|
stream.readHexNumber(end, dataSize);
|
357
493
|
addHex(end, start, dataSize);
|
358
494
|
cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
|
495
|
+
|
359
496
|
for (i = 1; i < subitemsCount; i++) {
|
360
497
|
incHex(end, dataSize);
|
361
498
|
stream.readHexNumber(start, dataSize);
|
@@ -364,12 +501,15 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
364
501
|
addHex(end, start, dataSize);
|
365
502
|
cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
|
366
503
|
}
|
504
|
+
|
367
505
|
break;
|
506
|
+
|
368
507
|
case 1:
|
369
508
|
stream.readHex(start, dataSize);
|
370
509
|
stream.readHexNumber(end, dataSize);
|
371
510
|
addHex(end, start, dataSize);
|
372
511
|
stream.readNumber();
|
512
|
+
|
373
513
|
for (i = 1; i < subitemsCount; i++) {
|
374
514
|
incHex(end, dataSize);
|
375
515
|
stream.readHexNumber(start, dataSize);
|
@@ -378,120 +518,157 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
|
|
378
518
|
addHex(end, start, dataSize);
|
379
519
|
stream.readNumber();
|
380
520
|
}
|
521
|
+
|
381
522
|
break;
|
523
|
+
|
382
524
|
case 2:
|
383
525
|
stream.readHex(char, dataSize);
|
384
526
|
code = stream.readNumber();
|
385
527
|
cMap.mapOne(hexToInt(char, dataSize), code);
|
528
|
+
|
386
529
|
for (i = 1; i < subitemsCount; i++) {
|
387
530
|
incHex(char, dataSize);
|
531
|
+
|
388
532
|
if (!sequence) {
|
389
533
|
stream.readHexNumber(tmp, dataSize);
|
390
534
|
addHex(char, tmp, dataSize);
|
391
535
|
}
|
536
|
+
|
392
537
|
code = stream.readSigned() + (code + 1);
|
393
538
|
cMap.mapOne(hexToInt(char, dataSize), code);
|
394
539
|
}
|
540
|
+
|
395
541
|
break;
|
542
|
+
|
396
543
|
case 3:
|
397
544
|
stream.readHex(start, dataSize);
|
398
545
|
stream.readHexNumber(end, dataSize);
|
399
546
|
addHex(end, start, dataSize);
|
400
547
|
code = stream.readNumber();
|
401
548
|
cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
|
549
|
+
|
402
550
|
for (i = 1; i < subitemsCount; i++) {
|
403
551
|
incHex(end, dataSize);
|
552
|
+
|
404
553
|
if (!sequence) {
|
405
554
|
stream.readHexNumber(start, dataSize);
|
406
555
|
addHex(start, end, dataSize);
|
407
556
|
} else {
|
408
557
|
start.set(end);
|
409
558
|
}
|
559
|
+
|
410
560
|
stream.readHexNumber(end, dataSize);
|
411
561
|
addHex(end, start, dataSize);
|
412
562
|
code = stream.readNumber();
|
413
563
|
cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
|
414
564
|
}
|
565
|
+
|
415
566
|
break;
|
567
|
+
|
416
568
|
case 4:
|
417
569
|
stream.readHex(char, ucs2DataSize);
|
418
570
|
stream.readHex(charCode, dataSize);
|
419
571
|
cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
|
572
|
+
|
420
573
|
for (i = 1; i < subitemsCount; i++) {
|
421
574
|
incHex(char, ucs2DataSize);
|
575
|
+
|
422
576
|
if (!sequence) {
|
423
577
|
stream.readHexNumber(tmp, ucs2DataSize);
|
424
578
|
addHex(char, tmp, ucs2DataSize);
|
425
579
|
}
|
580
|
+
|
426
581
|
incHex(charCode, dataSize);
|
427
582
|
stream.readHexSigned(tmp, dataSize);
|
428
583
|
addHex(charCode, tmp, dataSize);
|
429
584
|
cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
|
430
585
|
}
|
586
|
+
|
431
587
|
break;
|
588
|
+
|
432
589
|
case 5:
|
433
590
|
stream.readHex(start, ucs2DataSize);
|
434
591
|
stream.readHexNumber(end, ucs2DataSize);
|
435
592
|
addHex(end, start, ucs2DataSize);
|
436
593
|
stream.readHex(charCode, dataSize);
|
437
594
|
cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
|
595
|
+
|
438
596
|
for (i = 1; i < subitemsCount; i++) {
|
439
597
|
incHex(end, ucs2DataSize);
|
598
|
+
|
440
599
|
if (!sequence) {
|
441
600
|
stream.readHexNumber(start, ucs2DataSize);
|
442
601
|
addHex(start, end, ucs2DataSize);
|
443
602
|
} else {
|
444
603
|
start.set(end);
|
445
604
|
}
|
605
|
+
|
446
606
|
stream.readHexNumber(end, ucs2DataSize);
|
447
607
|
addHex(end, start, ucs2DataSize);
|
448
608
|
stream.readHex(charCode, dataSize);
|
449
609
|
cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
|
450
610
|
}
|
611
|
+
|
451
612
|
break;
|
613
|
+
|
452
614
|
default:
|
453
615
|
reject(new Error('processBinaryCMap: Unknown type: ' + type));
|
454
616
|
return;
|
455
617
|
}
|
456
618
|
}
|
619
|
+
|
457
620
|
if (useCMap) {
|
458
621
|
resolve(extend(useCMap));
|
459
622
|
return;
|
460
623
|
}
|
624
|
+
|
461
625
|
resolve(cMap);
|
462
626
|
});
|
463
627
|
}
|
628
|
+
|
464
629
|
function BinaryCMapReader() {}
|
465
|
-
|
630
|
+
|
631
|
+
BinaryCMapReader.prototype = {
|
632
|
+
process: processBinaryCMap
|
633
|
+
};
|
466
634
|
return BinaryCMapReader;
|
467
635
|
}();
|
636
|
+
|
468
637
|
var CMapFactory = function CMapFactoryClosure() {
|
469
638
|
function strToInt(str) {
|
470
639
|
var a = 0;
|
640
|
+
|
471
641
|
for (var i = 0; i < str.length; i++) {
|
472
642
|
a = a << 8 | str.charCodeAt(i);
|
473
643
|
}
|
644
|
+
|
474
645
|
return a >>> 0;
|
475
646
|
}
|
647
|
+
|
476
648
|
function expectString(obj) {
|
477
649
|
if (!(0, _util.isString)(obj)) {
|
478
650
|
throw new _util.FormatError('Malformed CMap: expected string.');
|
479
651
|
}
|
480
652
|
}
|
653
|
+
|
481
654
|
function expectInt(obj) {
|
482
655
|
if (!Number.isInteger(obj)) {
|
483
656
|
throw new _util.FormatError('Malformed CMap: expected int.');
|
484
657
|
}
|
485
658
|
}
|
659
|
+
|
486
660
|
function parseBfChar(cMap, lexer) {
|
487
661
|
while (true) {
|
488
662
|
var obj = lexer.getObj();
|
663
|
+
|
489
664
|
if ((0, _primitives.isEOF)(obj)) {
|
490
665
|
break;
|
491
666
|
}
|
667
|
+
|
492
668
|
if ((0, _primitives.isCmd)(obj, 'endbfchar')) {
|
493
669
|
return;
|
494
670
|
}
|
671
|
+
|
495
672
|
expectString(obj);
|
496
673
|
var src = strToInt(obj);
|
497
674
|
obj = lexer.getObj();
|
@@ -500,47 +677,59 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
500
677
|
cMap.mapOne(src, dst);
|
501
678
|
}
|
502
679
|
}
|
680
|
+
|
503
681
|
function parseBfRange(cMap, lexer) {
|
504
682
|
while (true) {
|
505
683
|
var obj = lexer.getObj();
|
684
|
+
|
506
685
|
if ((0, _primitives.isEOF)(obj)) {
|
507
686
|
break;
|
508
687
|
}
|
688
|
+
|
509
689
|
if ((0, _primitives.isCmd)(obj, 'endbfrange')) {
|
510
690
|
return;
|
511
691
|
}
|
692
|
+
|
512
693
|
expectString(obj);
|
513
694
|
var low = strToInt(obj);
|
514
695
|
obj = lexer.getObj();
|
515
696
|
expectString(obj);
|
516
697
|
var high = strToInt(obj);
|
517
698
|
obj = lexer.getObj();
|
699
|
+
|
518
700
|
if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
|
519
701
|
var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
|
520
702
|
cMap.mapBfRange(low, high, dstLow);
|
521
703
|
} else if ((0, _primitives.isCmd)(obj, '[')) {
|
522
704
|
obj = lexer.getObj();
|
523
705
|
var array = [];
|
706
|
+
|
524
707
|
while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) {
|
525
708
|
array.push(obj);
|
526
709
|
obj = lexer.getObj();
|
527
710
|
}
|
711
|
+
|
528
712
|
cMap.mapBfRangeToArray(low, high, array);
|
529
713
|
} else {
|
530
714
|
break;
|
531
715
|
}
|
532
716
|
}
|
717
|
+
|
533
718
|
throw new _util.FormatError('Invalid bf range.');
|
534
719
|
}
|
720
|
+
|
535
721
|
function parseCidChar(cMap, lexer) {
|
536
722
|
while (true) {
|
537
723
|
var obj = lexer.getObj();
|
724
|
+
|
538
725
|
if ((0, _primitives.isEOF)(obj)) {
|
539
726
|
break;
|
540
727
|
}
|
728
|
+
|
541
729
|
if ((0, _primitives.isCmd)(obj, 'endcidchar')) {
|
542
730
|
return;
|
543
731
|
}
|
732
|
+
|
544
733
|
expectString(obj);
|
545
734
|
var src = strToInt(obj);
|
546
735
|
obj = lexer.getObj();
|
@@ -549,15 +738,19 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
549
738
|
cMap.mapOne(src, dst);
|
550
739
|
}
|
551
740
|
}
|
741
|
+
|
552
742
|
function parseCidRange(cMap, lexer) {
|
553
743
|
while (true) {
|
554
744
|
var obj = lexer.getObj();
|
745
|
+
|
555
746
|
if ((0, _primitives.isEOF)(obj)) {
|
556
747
|
break;
|
557
748
|
}
|
749
|
+
|
558
750
|
if ((0, _primitives.isCmd)(obj, 'endcidrange')) {
|
559
751
|
return;
|
560
752
|
}
|
753
|
+
|
561
754
|
expectString(obj);
|
562
755
|
var low = strToInt(obj);
|
563
756
|
obj = lexer.getObj();
|
@@ -569,46 +762,61 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
569
762
|
cMap.mapCidRange(low, high, dstLow);
|
570
763
|
}
|
571
764
|
}
|
765
|
+
|
572
766
|
function parseCodespaceRange(cMap, lexer) {
|
573
767
|
while (true) {
|
574
768
|
var obj = lexer.getObj();
|
769
|
+
|
575
770
|
if ((0, _primitives.isEOF)(obj)) {
|
576
771
|
break;
|
577
772
|
}
|
773
|
+
|
578
774
|
if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) {
|
579
775
|
return;
|
580
776
|
}
|
777
|
+
|
581
778
|
if (!(0, _util.isString)(obj)) {
|
582
779
|
break;
|
583
780
|
}
|
781
|
+
|
584
782
|
var low = strToInt(obj);
|
585
783
|
obj = lexer.getObj();
|
784
|
+
|
586
785
|
if (!(0, _util.isString)(obj)) {
|
587
786
|
break;
|
588
787
|
}
|
788
|
+
|
589
789
|
var high = strToInt(obj);
|
590
790
|
cMap.addCodespaceRange(obj.length, low, high);
|
591
791
|
}
|
792
|
+
|
592
793
|
throw new _util.FormatError('Invalid codespace range.');
|
593
794
|
}
|
795
|
+
|
594
796
|
function parseWMode(cMap, lexer) {
|
595
797
|
var obj = lexer.getObj();
|
798
|
+
|
596
799
|
if (Number.isInteger(obj)) {
|
597
800
|
cMap.vertical = !!obj;
|
598
801
|
}
|
599
802
|
}
|
803
|
+
|
600
804
|
function parseCMapName(cMap, lexer) {
|
601
805
|
var obj = lexer.getObj();
|
806
|
+
|
602
807
|
if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
|
603
808
|
cMap.name = obj.name;
|
604
809
|
}
|
605
810
|
}
|
811
|
+
|
606
812
|
function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
|
607
813
|
var previous;
|
608
814
|
var embeddedUseCMap;
|
815
|
+
|
609
816
|
objLoop: while (true) {
|
610
817
|
try {
|
611
818
|
var obj = lexer.getObj();
|
819
|
+
|
612
820
|
if ((0, _primitives.isEOF)(obj)) {
|
613
821
|
break;
|
614
822
|
} else if ((0, _primitives.isName)(obj)) {
|
@@ -617,28 +825,36 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
617
825
|
} else if (obj.name === 'CMapName') {
|
618
826
|
parseCMapName(cMap, lexer);
|
619
827
|
}
|
828
|
+
|
620
829
|
previous = obj;
|
621
830
|
} else if ((0, _primitives.isCmd)(obj)) {
|
622
831
|
switch (obj.cmd) {
|
623
832
|
case 'endcmap':
|
624
833
|
break objLoop;
|
834
|
+
|
625
835
|
case 'usecmap':
|
626
836
|
if ((0, _primitives.isName)(previous)) {
|
627
837
|
embeddedUseCMap = previous.name;
|
628
838
|
}
|
839
|
+
|
629
840
|
break;
|
841
|
+
|
630
842
|
case 'begincodespacerange':
|
631
843
|
parseCodespaceRange(cMap, lexer);
|
632
844
|
break;
|
845
|
+
|
633
846
|
case 'beginbfchar':
|
634
847
|
parseBfChar(cMap, lexer);
|
635
848
|
break;
|
849
|
+
|
636
850
|
case 'begincidchar':
|
637
851
|
parseCidChar(cMap, lexer);
|
638
852
|
break;
|
853
|
+
|
639
854
|
case 'beginbfrange':
|
640
855
|
parseBfRange(cMap, lexer);
|
641
856
|
break;
|
857
|
+
|
642
858
|
case 'begincidrange':
|
643
859
|
parseCidRange(cMap, lexer);
|
644
860
|
break;
|
@@ -648,28 +864,37 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
648
864
|
if (ex instanceof _util.MissingDataException) {
|
649
865
|
throw ex;
|
650
866
|
}
|
867
|
+
|
651
868
|
(0, _util.warn)('Invalid cMap data: ' + ex);
|
652
869
|
continue;
|
653
870
|
}
|
654
871
|
}
|
872
|
+
|
655
873
|
if (!useCMap && embeddedUseCMap) {
|
656
874
|
useCMap = embeddedUseCMap;
|
657
875
|
}
|
876
|
+
|
658
877
|
if (useCMap) {
|
659
878
|
return extendCMap(cMap, fetchBuiltInCMap, useCMap);
|
660
879
|
}
|
880
|
+
|
661
881
|
return Promise.resolve(cMap);
|
662
882
|
}
|
883
|
+
|
663
884
|
function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
|
664
885
|
return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {
|
665
886
|
cMap.useCMap = newCMap;
|
887
|
+
|
666
888
|
if (cMap.numCodespaceRanges === 0) {
|
667
889
|
var useCodespaceRanges = cMap.useCMap.codespaceRanges;
|
890
|
+
|
668
891
|
for (var i = 0; i < useCodespaceRanges.length; i++) {
|
669
892
|
cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
|
670
893
|
}
|
894
|
+
|
671
895
|
cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
|
672
896
|
}
|
897
|
+
|
673
898
|
cMap.useCMap.forEach(function (key, value) {
|
674
899
|
if (!cMap.contains(key)) {
|
675
900
|
cMap.mapOne(key, cMap.useCMap.lookup(key));
|
@@ -678,39 +903,48 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
678
903
|
return cMap;
|
679
904
|
});
|
680
905
|
}
|
906
|
+
|
681
907
|
function createBuiltInCMap(name, fetchBuiltInCMap) {
|
682
908
|
if (name === 'Identity-H') {
|
683
909
|
return Promise.resolve(new IdentityCMap(false, 2));
|
684
910
|
} else if (name === 'Identity-V') {
|
685
911
|
return Promise.resolve(new IdentityCMap(true, 2));
|
686
912
|
}
|
913
|
+
|
687
914
|
if (!BUILT_IN_CMAPS.includes(name)) {
|
688
915
|
return Promise.reject(new Error('Unknown CMap name: ' + name));
|
689
916
|
}
|
917
|
+
|
690
918
|
if (!fetchBuiltInCMap) {
|
691
919
|
return Promise.reject(new Error('Built-in CMap parameters are not provided.'));
|
692
920
|
}
|
921
|
+
|
693
922
|
return fetchBuiltInCMap(name).then(function (data) {
|
694
923
|
var cMapData = data.cMapData,
|
695
924
|
compressionType = data.compressionType;
|
696
925
|
var cMap = new CMap(true);
|
926
|
+
|
697
927
|
if (compressionType === _util.CMapCompressionType.BINARY) {
|
698
928
|
return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {
|
699
929
|
return extendCMap(cMap, fetchBuiltInCMap, useCMap);
|
700
930
|
});
|
701
931
|
}
|
932
|
+
|
702
933
|
if (compressionType === _util.CMapCompressionType.NONE) {
|
703
934
|
var lexer = new _parser.Lexer(new _stream.Stream(cMapData));
|
704
935
|
return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
|
705
936
|
}
|
937
|
+
|
706
938
|
return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.'));
|
707
939
|
});
|
708
940
|
}
|
941
|
+
|
709
942
|
return {
|
710
943
|
create: function create(params) {
|
711
944
|
var encoding = params.encoding;
|
712
945
|
var fetchBuiltInCMap = params.fetchBuiltInCMap;
|
713
946
|
var useCMap = params.useCMap;
|
947
|
+
|
714
948
|
if ((0, _primitives.isName)(encoding)) {
|
715
949
|
return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
|
716
950
|
} else if ((0, _primitives.isStream)(encoding)) {
|
@@ -720,13 +954,14 @@ var CMapFactory = function CMapFactoryClosure() {
|
|
720
954
|
if (parsedCMap.isIdentityCMap) {
|
721
955
|
return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
|
722
956
|
}
|
957
|
+
|
723
958
|
return parsedCMap;
|
724
959
|
});
|
725
960
|
}
|
961
|
+
|
726
962
|
return Promise.reject(new Error('Encoding required.'));
|
727
963
|
}
|
728
964
|
};
|
729
965
|
}();
|
730
|
-
|
731
|
-
exports.IdentityCMap = IdentityCMap;
|
966
|
+
|
732
967
|
exports.CMapFactory = CMapFactory;
|