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