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.

Files changed (192) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8286 -14230
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +25500 -26628
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25473 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +57878 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +407 -0
  29. package/es5/web/pdf_viewer.js +7757 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +2887 -4094
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +855 -778
  36. package/lib/core/arithmetic_decoder.js +325 -311
  37. package/lib/core/bidi.js +117 -50
  38. package/lib/core/ccitt.js +251 -89
  39. package/lib/core/ccitt_stream.js +26 -16
  40. package/lib/core/cff_parser.js +525 -197
  41. package/lib/core/charsets.js +6 -5
  42. package/lib/core/chunked_stream.js +541 -406
  43. package/lib/core/cmap.js +368 -253
  44. package/lib/core/colorspace.js +781 -800
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +609 -422
  47. package/lib/core/document.js +649 -481
  48. package/lib/core/encodings.js +33 -24
  49. package/lib/core/evaluator.js +1471 -736
  50. package/lib/core/font_renderer.js +289 -149
  51. package/lib/core/fonts.js +1067 -413
  52. package/lib/core/function.js +517 -287
  53. package/lib/core/glyphlist.js +4529 -4527
  54. package/lib/core/image.js +232 -114
  55. package/lib/core/image_utils.js +94 -0
  56. package/lib/core/jbig2.js +711 -342
  57. package/lib/core/jbig2_stream.js +31 -19
  58. package/lib/core/jpeg_stream.js +151 -26
  59. package/lib/core/jpg.js +433 -181
  60. package/lib/core/jpx.js +551 -143
  61. package/lib/core/jpx_stream.js +40 -28
  62. package/lib/core/metrics.js +2931 -2931
  63. package/lib/core/murmurhash3.js +104 -97
  64. package/lib/core/obj.js +1561 -1053
  65. package/lib/core/operator_list.js +192 -64
  66. package/lib/core/parser.js +1162 -864
  67. package/lib/core/pattern.js +224 -75
  68. package/lib/core/pdf_manager.js +154 -285
  69. package/lib/core/primitives.js +145 -69
  70. package/lib/core/ps_parser.js +212 -162
  71. package/lib/core/standard_fonts.js +245 -244
  72. package/lib/core/stream.js +353 -81
  73. package/lib/core/type1_parser.js +218 -68
  74. package/lib/core/unicode.js +1682 -1655
  75. package/lib/core/worker.js +233 -302
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +808 -862
  78. package/lib/display/api.js +1778 -1462
  79. package/lib/display/api_compatibility.js +14 -9
  80. package/lib/display/canvas.js +463 -140
  81. package/lib/display/content_disposition.js +86 -58
  82. package/lib/display/display_utils.js +524 -0
  83. package/lib/display/fetch_stream.js +202 -274
  84. package/lib/display/font_loader.js +311 -333
  85. package/lib/display/metadata.js +98 -88
  86. package/lib/display/network.js +343 -347
  87. package/lib/display/network_utils.js +46 -26
  88. package/lib/display/node_stream.js +326 -404
  89. package/lib/display/pattern_helper.js +168 -69
  90. package/lib/display/svg.js +1296 -885
  91. package/lib/display/text_layer.js +229 -103
  92. package/lib/display/transport_stream.js +290 -250
  93. package/lib/display/webgl.js +116 -83
  94. package/lib/display/worker_options.js +6 -5
  95. package/lib/display/xml_parser.js +358 -337
  96. package/lib/examples/node/domstubs.js +95 -39
  97. package/lib/pdf.js +49 -31
  98. package/lib/pdf.worker.js +7 -5
  99. package/lib/shared/compatibility.js +3 -145
  100. package/lib/shared/is_node.js +8 -7
  101. package/lib/shared/message_handler.js +367 -314
  102. package/lib/shared/util.js +421 -415
  103. package/lib/test/unit/annotation_spec.js +1570 -690
  104. package/lib/test/unit/api_spec.js +855 -493
  105. package/lib/test/unit/bidi_spec.js +12 -12
  106. package/lib/test/unit/cff_parser_spec.js +88 -61
  107. package/lib/test/unit/clitests_helper.js +9 -12
  108. package/lib/test/unit/cmap_spec.js +140 -88
  109. package/lib/test/unit/colorspace_spec.js +204 -152
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +194 -182
  112. package/lib/test/unit/custom_spec.js +50 -64
  113. package/lib/test/unit/display_svg_spec.js +53 -38
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +17 -22
  116. package/lib/test/unit/encodings_spec.js +15 -57
  117. package/lib/test/unit/evaluator_spec.js +90 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +219 -205
  120. package/lib/test/unit/jasmine-boot.js +68 -39
  121. package/lib/test/unit/message_handler_spec.js +187 -160
  122. package/lib/test/unit/metadata_spec.js +87 -34
  123. package/lib/test/unit/murmurhash3_spec.js +13 -13
  124. package/lib/test/unit/network_spec.js +26 -59
  125. package/lib/test/unit/network_utils_spec.js +187 -121
  126. package/lib/test/unit/node_stream_spec.js +98 -90
  127. package/lib/test/unit/parser_spec.js +173 -131
  128. package/lib/test/unit/pdf_find_controller_spec.js +148 -67
  129. package/lib/test/unit/pdf_find_utils_spec.js +35 -34
  130. package/lib/test/unit/pdf_history_spec.js +45 -33
  131. package/lib/test/unit/primitives_spec.js +161 -126
  132. package/lib/test/unit/stream_spec.js +22 -15
  133. package/lib/test/unit/test_utils.js +149 -98
  134. package/lib/test/unit/testreporter.js +36 -18
  135. package/lib/test/unit/type1_parser_spec.js +46 -44
  136. package/lib/test/unit/ui_utils_spec.js +388 -372
  137. package/lib/test/unit/unicode_spec.js +49 -46
  138. package/lib/test/unit/util_spec.js +144 -248
  139. package/lib/web/annotation_layer_builder.js +75 -95
  140. package/lib/web/app.js +1538 -1147
  141. package/lib/web/app_options.js +116 -104
  142. package/lib/web/base_viewer.js +950 -775
  143. package/lib/web/chromecom.js +217 -225
  144. package/lib/web/debugger.js +236 -148
  145. package/lib/web/download_manager.js +50 -50
  146. package/lib/web/firefox_print_service.js +51 -33
  147. package/lib/web/firefoxcom.js +225 -352
  148. package/lib/web/genericcom.js +30 -93
  149. package/lib/web/genericl10n.js +26 -143
  150. package/lib/web/grab_to_pan.js +57 -33
  151. package/lib/web/interfaces.js +105 -232
  152. package/lib/web/overlay_manager.js +73 -227
  153. package/lib/web/password_prompt.js +44 -62
  154. package/lib/web/pdf_attachment_viewer.js +118 -123
  155. package/lib/web/pdf_cursor_tools.js +89 -93
  156. package/lib/web/pdf_document_properties.js +242 -281
  157. package/lib/web/pdf_find_bar.js +157 -163
  158. package/lib/web/pdf_find_controller.js +598 -454
  159. package/lib/web/pdf_find_utils.js +32 -16
  160. package/lib/web/pdf_history.js +481 -355
  161. package/lib/web/pdf_link_service.js +355 -323
  162. package/lib/web/pdf_outline_viewer.js +167 -152
  163. package/lib/web/pdf_page_view.js +511 -457
  164. package/lib/web/pdf_presentation_mode.js +347 -335
  165. package/lib/web/pdf_print_service.js +133 -103
  166. package/lib/web/pdf_rendering_queue.js +98 -100
  167. package/lib/web/pdf_sidebar.js +323 -299
  168. package/lib/web/pdf_sidebar_resizer.js +107 -108
  169. package/lib/web/pdf_single_page_viewer.js +94 -146
  170. package/lib/web/pdf_thumbnail_view.js +319 -269
  171. package/lib/web/pdf_thumbnail_viewer.js +219 -199
  172. package/lib/web/pdf_viewer.component.js +111 -32
  173. package/lib/web/pdf_viewer.js +61 -101
  174. package/lib/web/preferences.js +87 -272
  175. package/lib/web/secondary_toolbar.js +207 -220
  176. package/lib/web/text_layer_builder.js +322 -322
  177. package/lib/web/toolbar.js +227 -180
  178. package/lib/web/ui_utils.js +476 -421
  179. package/lib/web/view_history.js +59 -208
  180. package/lib/web/viewer_compatibility.js +9 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +36 -22
  183. package/web/pdf_viewer.js +4407 -4516
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -441
  189. package/lib/shared/streams_polyfill.js +0 -39
  190. package/lib/shared/url_polyfill.js +0 -50
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
  192. package/lib/web/dom_events.js +0 -140
@@ -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 2018 Mozilla Foundation
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,325 +19,291 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.FontLoader = exports.FontFaceObject = undefined;
27
+ exports.FontLoader = exports.FontFaceObject = void 0;
28
28
 
29
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29
+ var _util = require("../shared/util.js");
30
30
 
31
- var _util = require('../shared/util');
31
+ class BaseFontLoader {
32
+ constructor({
33
+ docId,
34
+ onUnsupportedFeature
35
+ }) {
36
+ if (this.constructor === BaseFontLoader) {
37
+ (0, _util.unreachable)("Cannot initialize BaseFontLoader.");
38
+ }
39
+
40
+ this.docId = docId;
41
+ this._onUnsupportedFeature = onUnsupportedFeature;
42
+ this.nativeFontFaces = [];
43
+ this.styleElement = null;
44
+ }
45
+
46
+ addNativeFontFace(nativeFontFace) {
47
+ this.nativeFontFaces.push(nativeFontFace);
48
+ document.fonts.add(nativeFontFace);
49
+ }
32
50
 
33
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
51
+ insertRule(rule) {
52
+ let styleElement = this.styleElement;
34
53
 
35
- 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; }
54
+ if (!styleElement) {
55
+ styleElement = this.styleElement = document.createElement("style");
56
+ styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;
57
+ document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement);
58
+ }
36
59
 
37
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
60
+ const styleSheet = styleElement.sheet;
61
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
62
+ }
38
63
 
39
- var BaseFontLoader = function () {
40
- function BaseFontLoader(docId) {
41
- _classCallCheck(this, BaseFontLoader);
64
+ clear() {
65
+ this.nativeFontFaces.forEach(function (nativeFontFace) {
66
+ document.fonts.delete(nativeFontFace);
67
+ });
68
+ this.nativeFontFaces.length = 0;
42
69
 
43
- if (this.constructor === BaseFontLoader) {
44
- (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
70
+ if (this.styleElement) {
71
+ this.styleElement.remove();
72
+ this.styleElement = null;
45
73
  }
46
- this.docId = docId;
47
- this.nativeFontFaces = [];
48
- this.styleElement = null;
49
- this.loadingContext = {
50
- requests: [],
51
- nextRequestId: 0
52
- };
53
74
  }
54
75
 
55
- _createClass(BaseFontLoader, [{
56
- key: 'addNativeFontFace',
57
- value: function addNativeFontFace(nativeFontFace) {
58
- this.nativeFontFaces.push(nativeFontFace);
59
- document.fonts.add(nativeFontFace);
76
+ async bind(font) {
77
+ if (font.attached || font.missingFile) {
78
+ return;
60
79
  }
61
- }, {
62
- key: 'insertRule',
63
- value: function insertRule(rule) {
64
- var styleElement = this.styleElement;
65
- if (!styleElement) {
66
- styleElement = this.styleElement = document.createElement('style');
67
- styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;
68
- document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
80
+
81
+ font.attached = true;
82
+
83
+ if (this.isFontLoadingAPISupported) {
84
+ const nativeFontFace = font.createNativeFontFace();
85
+
86
+ if (nativeFontFace) {
87
+ this.addNativeFontFace(nativeFontFace);
88
+
89
+ try {
90
+ await nativeFontFace.loaded;
91
+ } catch (ex) {
92
+ this._onUnsupportedFeature({
93
+ featureId: _util.UNSUPPORTED_FEATURES.font
94
+ });
95
+
96
+ (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
97
+ font.disableFontFace = true;
98
+ throw ex;
99
+ }
69
100
  }
70
- var styleSheet = styleElement.sheet;
71
- styleSheet.insertRule(rule, styleSheet.cssRules.length);
101
+
102
+ return;
72
103
  }
73
- }, {
74
- key: 'clear',
75
- value: function clear() {
76
- this.nativeFontFaces.forEach(function (nativeFontFace) {
77
- document.fonts.delete(nativeFontFace);
78
- });
79
- this.nativeFontFaces.length = 0;
80
- if (this.styleElement) {
81
- this.styleElement.remove();
82
- this.styleElement = null;
104
+
105
+ const rule = font.createFontFaceRule();
106
+
107
+ if (rule) {
108
+ this.insertRule(rule);
109
+
110
+ if (this.isSyncFontLoadingSupported) {
111
+ return;
83
112
  }
113
+
114
+ await new Promise(resolve => {
115
+ const request = this._queueLoadingCallback(resolve);
116
+
117
+ this._prepareFontLoadEvent([rule], [font], request);
118
+ });
84
119
  }
85
- }, {
86
- key: 'bind',
87
- value: function bind(fonts, callback) {
88
- var rules = [];
89
- var fontsToLoad = [];
90
- var fontLoadPromises = [];
91
- var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) {
92
- return nativeFontFace.loaded.catch(function (reason) {
93
- (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + reason);
94
- });
120
+ }
121
+
122
+ _queueLoadingCallback(callback) {
123
+ (0, _util.unreachable)("Abstract method `_queueLoadingCallback`.");
124
+ }
125
+
126
+ get isFontLoadingAPISupported() {
127
+ const supported = typeof document !== "undefined" && !!document.fonts;
128
+ return (0, _util.shadow)(this, "isFontLoadingAPISupported", supported);
129
+ }
130
+
131
+ get isSyncFontLoadingSupported() {
132
+ (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`.");
133
+ }
134
+
135
+ get _loadTestFont() {
136
+ (0, _util.unreachable)("Abstract method `_loadTestFont`.");
137
+ }
138
+
139
+ _prepareFontLoadEvent(rules, fontsToLoad, request) {
140
+ (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`.");
141
+ }
142
+
143
+ }
144
+
145
+ let FontLoader;
146
+ exports.FontLoader = FontLoader;
147
+ {
148
+ exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {
149
+ constructor(docId) {
150
+ super(docId);
151
+ this.loadingContext = {
152
+ requests: [],
153
+ nextRequestId: 0
95
154
  };
96
- var _iteratorNormalCompletion = true;
97
- var _didIteratorError = false;
98
- var _iteratorError = undefined;
99
-
100
- try {
101
- for (var _iterator = fonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
102
- var font = _step.value;
103
-
104
- if (font.attached || font.missingFile) {
105
- continue;
106
- }
107
- font.attached = true;
108
- if (this.isFontLoadingAPISupported) {
109
- var nativeFontFace = font.createNativeFontFace();
110
- if (nativeFontFace) {
111
- this.addNativeFontFace(nativeFontFace);
112
- fontLoadPromises.push(getNativeFontPromise(nativeFontFace));
113
- }
114
- } else {
115
- var rule = font.createFontFaceRule();
116
- if (rule) {
117
- this.insertRule(rule);
118
- rules.push(rule);
119
- fontsToLoad.push(font);
120
- }
121
- }
122
- }
123
- } catch (err) {
124
- _didIteratorError = true;
125
- _iteratorError = err;
126
- } finally {
127
- try {
128
- if (!_iteratorNormalCompletion && _iterator.return) {
129
- _iterator.return();
130
- }
131
- } finally {
132
- if (_didIteratorError) {
133
- throw _iteratorError;
134
- }
135
- }
136
- }
155
+ this.loadTestFontId = 0;
156
+ }
137
157
 
138
- var request = this._queueLoadingCallback(callback);
139
- if (this.isFontLoadingAPISupported) {
140
- Promise.all(fontLoadPromises).then(request.complete);
141
- } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {
142
- this._prepareFontLoadEvent(rules, fontsToLoad, request);
158
+ get isSyncFontLoadingSupported() {
159
+ let supported = false;
160
+
161
+ if (typeof navigator === "undefined") {
162
+ supported = true;
143
163
  } else {
144
- request.complete();
164
+ const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
165
+
166
+ if (m && m[1] >= 14) {
167
+ supported = true;
168
+ }
145
169
  }
170
+
171
+ return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported);
146
172
  }
147
- }, {
148
- key: '_queueLoadingCallback',
149
- value: function _queueLoadingCallback(callback) {
173
+
174
+ _queueLoadingCallback(callback) {
150
175
  function completeRequest() {
151
- (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
176
+ (0, _util.assert)(!request.done, "completeRequest() cannot be called twice.");
152
177
  request.done = true;
178
+
153
179
  while (context.requests.length > 0 && context.requests[0].done) {
154
- var otherRequest = context.requests.shift();
180
+ const otherRequest = context.requests.shift();
155
181
  setTimeout(otherRequest.callback, 0);
156
182
  }
157
183
  }
158
- var context = this.loadingContext;
159
- var request = {
160
- id: 'pdfjs-font-loading-' + context.nextRequestId++,
184
+
185
+ const context = this.loadingContext;
186
+ const request = {
187
+ id: `pdfjs-font-loading-${context.nextRequestId++}`,
161
188
  done: false,
162
189
  complete: completeRequest,
163
- callback: callback
190
+ callback
164
191
  };
165
192
  context.requests.push(request);
166
193
  return request;
167
194
  }
168
- }, {
169
- key: '_prepareFontLoadEvent',
170
- value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
171
- (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
172
- }
173
- }, {
174
- key: 'isFontLoadingAPISupported',
175
- get: function get() {
176
- (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
177
- }
178
- }, {
179
- key: 'isSyncFontLoadingSupported',
180
- get: function get() {
181
- (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
182
- }
183
- }, {
184
- key: '_loadTestFont',
185
- get: function get() {
186
- (0, _util.unreachable)('Abstract method `_loadTestFont`.');
187
- }
188
- }]);
189
195
 
190
- return BaseFontLoader;
191
- }();
196
+ get _loadTestFont() {
197
+ const getLoadTestFont = function () {
198
+ return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");
199
+ };
192
200
 
193
- var FontLoader = void 0;
194
- {
195
- exports.FontLoader = FontLoader = function (_BaseFontLoader) {
196
- _inherits(GenericFontLoader, _BaseFontLoader);
201
+ return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont());
202
+ }
203
+
204
+ _prepareFontLoadEvent(rules, fonts, request) {
205
+ function int32(data, offset) {
206
+ return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
207
+ }
197
208
 
198
- function GenericFontLoader(docId) {
199
- _classCallCheck(this, GenericFontLoader);
209
+ function spliceString(s, offset, remove, insert) {
210
+ const chunk1 = s.substring(0, offset);
211
+ const chunk2 = s.substring(offset + remove);
212
+ return chunk1 + insert + chunk2;
213
+ }
200
214
 
201
- var _this = _possibleConstructorReturn(this, (GenericFontLoader.__proto__ || Object.getPrototypeOf(GenericFontLoader)).call(this, docId));
215
+ let i, ii;
216
+ const canvas = document.createElement("canvas");
217
+ canvas.width = 1;
218
+ canvas.height = 1;
219
+ const ctx = canvas.getContext("2d");
220
+ let called = 0;
202
221
 
203
- _this.loadTestFontId = 0;
204
- return _this;
205
- }
222
+ function isFontReady(name, callback) {
223
+ called++;
206
224
 
207
- _createClass(GenericFontLoader, [{
208
- key: '_prepareFontLoadEvent',
209
- value: function _prepareFontLoadEvent(rules, fonts, request) {
210
- function int32(data, offset) {
211
- return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
212
- }
213
- function spliceString(s, offset, remove, insert) {
214
- var chunk1 = s.substring(0, offset);
215
- var chunk2 = s.substring(offset + remove);
216
- return chunk1 + insert + chunk2;
217
- }
218
- var i = void 0,
219
- ii = void 0;
220
- var canvas = document.createElement('canvas');
221
- canvas.width = 1;
222
- canvas.height = 1;
223
- var ctx = canvas.getContext('2d');
224
- var called = 0;
225
- function isFontReady(name, callback) {
226
- called++;
227
- if (called > 30) {
228
- (0, _util.warn)('Load test font never loaded.');
229
- callback();
230
- return;
231
- }
232
- ctx.font = '30px ' + name;
233
- ctx.fillText('.', 0, 20);
234
- var imageData = ctx.getImageData(0, 0, 1, 1);
235
- if (imageData.data[3] > 0) {
236
- callback();
237
- return;
238
- }
239
- setTimeout(isFontReady.bind(null, name, callback));
225
+ if (called > 30) {
226
+ (0, _util.warn)("Load test font never loaded.");
227
+ callback();
228
+ return;
240
229
  }
241
- var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;
242
- var data = this._loadTestFont;
243
- var COMMENT_OFFSET = 976;
244
- data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
245
- var CFF_CHECKSUM_OFFSET = 16;
246
- var XXXX_VALUE = 0x58585858;
247
- var checksum = int32(data, CFF_CHECKSUM_OFFSET);
248
- for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
249
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
250
- }
251
- if (i < loadTestFontId.length) {
252
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
253
- }
254
- data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
255
- var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';
256
- var rule = '@font-face {font-family:"' + loadTestFontId + '";src:' + url + '}';
257
- this.insertRule(rule);
258
- var names = [];
259
- for (i = 0, ii = fonts.length; i < ii; i++) {
260
- names.push(fonts[i].loadedName);
261
- }
262
- names.push(loadTestFontId);
263
- var div = document.createElement('div');
264
- div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
265
- for (i = 0, ii = names.length; i < ii; ++i) {
266
- var span = document.createElement('span');
267
- span.textContent = 'Hi';
268
- span.style.fontFamily = names[i];
269
- div.appendChild(span);
230
+
231
+ ctx.font = "30px " + name;
232
+ ctx.fillText(".", 0, 20);
233
+ const imageData = ctx.getImageData(0, 0, 1, 1);
234
+
235
+ if (imageData.data[3] > 0) {
236
+ callback();
237
+ return;
270
238
  }
271
- document.body.appendChild(div);
272
- isFontReady(loadTestFontId, function () {
273
- document.body.removeChild(div);
274
- request.complete();
275
- });
239
+
240
+ setTimeout(isFontReady.bind(null, name, callback));
276
241
  }
277
- }, {
278
- key: 'isFontLoadingAPISupported',
279
- get: function get() {
280
- var supported = typeof document !== 'undefined' && !!document.fonts;
281
- if (supported && typeof navigator !== 'undefined') {
282
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
283
- if (m && m[1] < 63) {
284
- supported = false;
285
- }
286
- }
287
- return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
242
+
243
+ const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;
244
+ let data = this._loadTestFont;
245
+ const COMMENT_OFFSET = 976;
246
+ data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
247
+ const CFF_CHECKSUM_OFFSET = 16;
248
+ const XXXX_VALUE = 0x58585858;
249
+ let checksum = int32(data, CFF_CHECKSUM_OFFSET);
250
+
251
+ for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
252
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
288
253
  }
289
- }, {
290
- key: 'isSyncFontLoadingSupported',
291
- get: function get() {
292
- var supported = false;
293
- if (typeof navigator === 'undefined') {
294
- supported = true;
295
- } else {
296
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
297
- if (m && m[1] >= 14) {
298
- supported = true;
299
- }
300
- }
301
- return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
254
+
255
+ if (i < loadTestFontId.length) {
256
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
302
257
  }
303
- }, {
304
- key: '_loadTestFont',
305
- get: function get() {
306
- var getLoadTestFont = function getLoadTestFont() {
307
- return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');
308
- };
309
- return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
258
+
259
+ data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
260
+ const url = `url(data:font/opentype;base64,${btoa(data)});`;
261
+ const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`;
262
+ this.insertRule(rule);
263
+ const names = [];
264
+
265
+ for (i = 0, ii = fonts.length; i < ii; i++) {
266
+ names.push(fonts[i].loadedName);
310
267
  }
311
- }]);
312
268
 
313
- return GenericFontLoader;
314
- }(BaseFontLoader);
269
+ names.push(loadTestFontId);
270
+ const div = document.createElement("div");
271
+ div.style.visibility = "hidden";
272
+ div.style.width = div.style.height = "10px";
273
+ div.style.position = "absolute";
274
+ div.style.top = div.style.left = "0px";
275
+
276
+ for (i = 0, ii = names.length; i < ii; ++i) {
277
+ const span = document.createElement("span");
278
+ span.textContent = "Hi";
279
+ span.style.fontFamily = names[i];
280
+ div.appendChild(span);
281
+ }
282
+
283
+ document.body.appendChild(div);
284
+ isFontReady(loadTestFontId, function () {
285
+ document.body.removeChild(div);
286
+ request.complete();
287
+ });
288
+ }
289
+
290
+ };
315
291
  }
316
- var IsEvalSupportedCached = {
317
- get value() {
318
- return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
319
- }
320
- };
321
-
322
- var FontFaceObject = function () {
323
- function FontFaceObject(translatedData, _ref) {
324
- var _ref$isEvalSupported = _ref.isEvalSupported,
325
- isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported,
326
- _ref$disableFontFace = _ref.disableFontFace,
327
- disableFontFace = _ref$disableFontFace === undefined ? false : _ref$disableFontFace,
328
- _ref$ignoreErrors = _ref.ignoreErrors,
329
- ignoreErrors = _ref$ignoreErrors === undefined ? false : _ref$ignoreErrors,
330
- _ref$onUnsupportedFea = _ref.onUnsupportedFeature,
331
- onUnsupportedFeature = _ref$onUnsupportedFea === undefined ? null : _ref$onUnsupportedFea,
332
- _ref$fontRegistry = _ref.fontRegistry,
333
- fontRegistry = _ref$fontRegistry === undefined ? null : _ref$fontRegistry;
334
-
335
- _classCallCheck(this, FontFaceObject);
336
292
 
293
+ class FontFaceObject {
294
+ constructor(translatedData, {
295
+ isEvalSupported = true,
296
+ disableFontFace = false,
297
+ ignoreErrors = false,
298
+ onUnsupportedFeature = null,
299
+ fontRegistry = null
300
+ }) {
337
301
  this.compiledGlyphs = Object.create(null);
338
- for (var i in translatedData) {
302
+
303
+ for (const i in translatedData) {
339
304
  this[i] = translatedData[i];
340
305
  }
306
+
341
307
  this.isEvalSupported = isEvalSupported !== false;
342
308
  this.disableFontFace = disableFontFace === true;
343
309
  this.ignoreErrors = ignoreErrors === true;
@@ -345,80 +311,92 @@ var FontFaceObject = function () {
345
311
  this.fontRegistry = fontRegistry;
346
312
  }
347
313
 
348
- _createClass(FontFaceObject, [{
349
- key: 'createNativeFontFace',
350
- value: function createNativeFontFace() {
351
- if (!this.data || this.disableFontFace) {
352
- return null;
353
- }
354
- var nativeFontFace = new FontFace(this.loadedName, this.data, {});
355
- if (this.fontRegistry) {
356
- this.fontRegistry.registerFont(this);
357
- }
358
- return nativeFontFace;
314
+ createNativeFontFace() {
315
+ if (!this.data || this.disableFontFace) {
316
+ return null;
317
+ }
318
+
319
+ const nativeFontFace = new FontFace(this.loadedName, this.data, {});
320
+
321
+ if (this.fontRegistry) {
322
+ this.fontRegistry.registerFont(this);
359
323
  }
360
- }, {
361
- key: 'createFontFaceRule',
362
- value: function createFontFaceRule() {
363
- if (!this.data || this.disableFontFace) {
364
- return null;
324
+
325
+ return nativeFontFace;
326
+ }
327
+
328
+ createFontFaceRule() {
329
+ if (!this.data || this.disableFontFace) {
330
+ return null;
331
+ }
332
+
333
+ const data = (0, _util.bytesToString)(new Uint8Array(this.data));
334
+ const url = `url(data:${this.mimetype};base64,${btoa(data)});`;
335
+ const rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`;
336
+
337
+ if (this.fontRegistry) {
338
+ this.fontRegistry.registerFont(this, url);
339
+ }
340
+
341
+ return rule;
342
+ }
343
+
344
+ getPathGenerator(objs, character) {
345
+ if (this.compiledGlyphs[character] !== undefined) {
346
+ return this.compiledGlyphs[character];
347
+ }
348
+
349
+ let cmds, current;
350
+
351
+ try {
352
+ cmds = objs.get(this.loadedName + "_path_" + character);
353
+ } catch (ex) {
354
+ if (!this.ignoreErrors) {
355
+ throw ex;
365
356
  }
366
- var data = (0, _util.bytesToString)(new Uint8Array(this.data));
367
- var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');';
368
- var rule = '@font-face {font-family:"' + this.loadedName + '";src:' + url + '}';
369
- if (this.fontRegistry) {
370
- this.fontRegistry.registerFont(this, url);
357
+
358
+ if (this._onUnsupportedFeature) {
359
+ this._onUnsupportedFeature({
360
+ featureId: _util.UNSUPPORTED_FEATURES.font
361
+ });
371
362
  }
372
- return rule;
363
+
364
+ (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
365
+ return this.compiledGlyphs[character] = function (c, size) {};
373
366
  }
374
- }, {
375
- key: 'getPathGenerator',
376
- value: function getPathGenerator(objs, character) {
377
- if (this.compiledGlyphs[character] !== undefined) {
378
- return this.compiledGlyphs[character];
379
- }
380
- var cmds = void 0,
381
- current = void 0;
382
- try {
383
- cmds = objs.get(this.loadedName + '_path_' + character);
384
- } catch (ex) {
385
- if (!this.ignoreErrors) {
386
- throw ex;
387
- }
388
- if (this._onUnsupportedFeature) {
389
- this._onUnsupportedFeature({ featureId: _util.UNSUPPORTED_FEATURES.font });
367
+
368
+ if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
369
+ let args,
370
+ js = "";
371
+
372
+ for (let i = 0, ii = cmds.length; i < ii; i++) {
373
+ current = cmds[i];
374
+
375
+ if (current.args !== undefined) {
376
+ args = current.args.join(",");
377
+ } else {
378
+ args = "";
390
379
  }
391
- (0, _util.warn)('getPathGenerator - ignoring character: "' + ex + '".');
392
- return this.compiledGlyphs[character] = function (c, size) {};
380
+
381
+ js += "c." + current.cmd + "(" + args + ");\n";
393
382
  }
394
- if (this.isEvalSupported && IsEvalSupportedCached.value) {
395
- var args = void 0,
396
- js = '';
397
- for (var i = 0, ii = cmds.length; i < ii; i++) {
398
- current = cmds[i];
399
- if (current.args !== undefined) {
400
- args = current.args.join(',');
401
- } else {
402
- args = '';
403
- }
404
- js += 'c.' + current.cmd + '(' + args + ');\n';
383
+
384
+ return this.compiledGlyphs[character] = new Function("c", "size", js);
385
+ }
386
+
387
+ return this.compiledGlyphs[character] = function (c, size) {
388
+ for (let i = 0, ii = cmds.length; i < ii; i++) {
389
+ current = cmds[i];
390
+
391
+ if (current.cmd === "scale") {
392
+ current.args = [size, -size];
405
393
  }
406
- return this.compiledGlyphs[character] = new Function('c', 'size', js);
394
+
395
+ c[current.cmd].apply(c, current.args);
407
396
  }
408
- return this.compiledGlyphs[character] = function (c, size) {
409
- for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
410
- current = cmds[_i];
411
- if (current.cmd === 'scale') {
412
- current.args = [size, -size];
413
- }
414
- c[current.cmd].apply(c, current.args);
415
- }
416
- };
417
- }
418
- }]);
397
+ };
398
+ }
419
399
 
420
- return FontFaceObject;
421
- }();
400
+ }
422
401
 
423
- exports.FontFaceObject = FontFaceObject;
424
- exports.FontLoader = FontLoader;
402
+ exports.FontFaceObject = FontFaceObject;