pdfjs-dist 2.3.200 → 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 (185) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +6499 -17971
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +22 -1
  6. package/build/pdf.worker.entry.js +5 -3
  7. package/build/pdf.worker.js +19303 -29896
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +25473 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  13. package/es5/build/pdf.worker.js +57878 -0
  14. package/es5/build/pdf.worker.js.map +1 -0
  15. package/es5/web/images/annotation-check.svg +11 -0
  16. package/es5/web/images/annotation-comment.svg +16 -0
  17. package/es5/web/images/annotation-help.svg +26 -0
  18. package/es5/web/images/annotation-insert.svg +10 -0
  19. package/es5/web/images/annotation-key.svg +11 -0
  20. package/es5/web/images/annotation-newparagraph.svg +11 -0
  21. package/es5/web/images/annotation-noicon.svg +7 -0
  22. package/es5/web/images/annotation-note.svg +42 -0
  23. package/es5/web/images/annotation-paragraph.svg +16 -0
  24. package/es5/web/images/loading-icon.gif +0 -0
  25. package/es5/web/images/shadow.png +0 -0
  26. package/es5/web/images/texture.png +0 -0
  27. package/es5/web/pdf_viewer.css +407 -0
  28. package/es5/web/pdf_viewer.js +7757 -0
  29. package/es5/web/pdf_viewer.js.map +1 -0
  30. package/image_decoders/pdf.image_decoders.js +1333 -4839
  31. package/image_decoders/pdf.image_decoders.js.map +1 -1
  32. package/image_decoders/pdf.image_decoders.min.js +22 -1
  33. package/lib/README.md +7 -0
  34. package/lib/core/annotation.js +683 -1066
  35. package/lib/core/arithmetic_decoder.js +81 -97
  36. package/lib/core/bidi.js +54 -46
  37. package/lib/core/ccitt.js +88 -81
  38. package/lib/core/ccitt_stream.js +15 -14
  39. package/lib/core/cff_parser.js +196 -193
  40. package/lib/core/charsets.js +4 -4
  41. package/lib/core/chunked_stream.js +441 -569
  42. package/lib/core/cmap.js +220 -279
  43. package/lib/core/colorspace.js +699 -863
  44. package/lib/core/core_utils.js +59 -80
  45. package/lib/core/crypto.js +379 -437
  46. package/lib/core/document.js +564 -673
  47. package/lib/core/encodings.js +15 -15
  48. package/lib/core/evaluator.js +983 -889
  49. package/lib/core/font_renderer.js +128 -171
  50. package/lib/core/fonts.js +451 -400
  51. package/lib/core/function.js +289 -285
  52. package/lib/core/glyphlist.js +4527 -4527
  53. package/lib/core/image.js +138 -117
  54. package/lib/core/image_utils.js +46 -63
  55. package/lib/core/jbig2.js +324 -332
  56. package/lib/core/jbig2_stream.js +18 -17
  57. package/lib/core/jpeg_stream.js +133 -24
  58. package/lib/core/jpg.js +238 -210
  59. package/lib/core/jpx.js +158 -157
  60. package/lib/core/jpx_stream.js +28 -28
  61. package/lib/core/metrics.js +2928 -2928
  62. package/lib/core/murmurhash3.js +87 -102
  63. package/lib/core/obj.js +1111 -1302
  64. package/lib/core/operator_list.js +55 -42
  65. package/lib/core/parser.js +956 -987
  66. package/lib/core/pattern.js +69 -69
  67. package/lib/core/pdf_manager.js +149 -316
  68. package/lib/core/primitives.js +45 -77
  69. package/lib/core/ps_parser.js +175 -214
  70. package/lib/core/standard_fonts.js +237 -236
  71. package/lib/core/stream.js +83 -77
  72. package/lib/core/type1_parser.js +78 -68
  73. package/lib/core/unicode.js +1654 -1654
  74. package/lib/core/worker.js +148 -196
  75. package/lib/core/worker_stream.js +101 -210
  76. package/lib/display/annotation_layer.js +733 -1155
  77. package/lib/display/api.js +1539 -1928
  78. package/lib/display/api_compatibility.js +10 -8
  79. package/lib/display/canvas.js +159 -158
  80. package/lib/display/content_disposition.js +36 -55
  81. package/lib/display/display_utils.js +298 -551
  82. package/lib/display/fetch_stream.js +181 -305
  83. package/lib/display/font_loader.js +273 -416
  84. package/lib/display/metadata.js +86 -98
  85. package/lib/display/network.js +376 -511
  86. package/lib/display/network_utils.js +20 -19
  87. package/lib/display/node_stream.js +276 -460
  88. package/lib/display/pattern_helper.js +76 -44
  89. package/lib/display/svg.js +1137 -1405
  90. package/lib/display/text_layer.js +75 -82
  91. package/lib/display/transport_stream.js +236 -374
  92. package/lib/display/webgl.js +70 -83
  93. package/lib/display/worker_options.js +3 -3
  94. package/lib/display/xml_parser.js +303 -392
  95. package/lib/examples/node/domstubs.js +37 -37
  96. package/lib/pdf.js +22 -21
  97. package/lib/pdf.worker.js +5 -5
  98. package/lib/shared/compatibility.js +2 -251
  99. package/lib/shared/is_node.js +7 -6
  100. package/lib/shared/message_handler.js +222 -194
  101. package/lib/shared/util.js +269 -405
  102. package/lib/test/unit/annotation_spec.js +1089 -1014
  103. package/lib/test/unit/api_spec.js +617 -544
  104. package/lib/test/unit/bidi_spec.js +7 -7
  105. package/lib/test/unit/cff_parser_spec.js +63 -62
  106. package/lib/test/unit/clitests_helper.js +7 -9
  107. package/lib/test/unit/cmap_spec.js +84 -86
  108. package/lib/test/unit/colorspace_spec.js +154 -154
  109. package/lib/test/unit/core_utils_spec.js +125 -105
  110. package/lib/test/unit/crypto_spec.js +181 -181
  111. package/lib/test/unit/custom_spec.js +22 -24
  112. package/lib/test/unit/display_svg_spec.js +35 -36
  113. package/lib/test/unit/display_utils_spec.js +139 -149
  114. package/lib/test/unit/document_spec.js +16 -16
  115. package/lib/test/unit/encodings_spec.js +12 -34
  116. package/lib/test/unit/evaluator_spec.js +81 -95
  117. package/lib/test/unit/fetch_stream_spec.js +30 -30
  118. package/lib/test/unit/function_spec.js +206 -204
  119. package/lib/test/unit/jasmine-boot.js +48 -32
  120. package/lib/test/unit/message_handler_spec.js +172 -162
  121. package/lib/test/unit/metadata_spec.js +69 -69
  122. package/lib/test/unit/murmurhash3_spec.js +12 -12
  123. package/lib/test/unit/network_spec.js +12 -12
  124. package/lib/test/unit/network_utils_spec.js +152 -152
  125. package/lib/test/unit/node_stream_spec.js +74 -90
  126. package/lib/test/unit/parser_spec.js +107 -113
  127. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  128. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  129. package/lib/test/unit/pdf_history_spec.js +32 -32
  130. package/lib/test/unit/primitives_spec.js +117 -115
  131. package/lib/test/unit/stream_spec.js +16 -14
  132. package/lib/test/unit/test_utils.js +119 -285
  133. package/lib/test/unit/testreporter.js +19 -19
  134. package/lib/test/unit/type1_parser_spec.js +41 -41
  135. package/lib/test/unit/ui_utils_spec.js +318 -426
  136. package/lib/test/unit/unicode_spec.js +42 -42
  137. package/lib/test/unit/util_spec.js +122 -143
  138. package/lib/web/annotation_layer_builder.js +66 -103
  139. package/lib/web/app.js +1166 -1196
  140. package/lib/web/app_options.js +61 -77
  141. package/lib/web/base_viewer.js +804 -850
  142. package/lib/web/chromecom.js +164 -249
  143. package/lib/web/debugger.js +149 -205
  144. package/lib/web/download_manager.js +38 -57
  145. package/lib/web/firefox_print_service.js +35 -30
  146. package/lib/web/firefoxcom.js +175 -374
  147. package/lib/web/genericcom.js +26 -108
  148. package/lib/web/genericl10n.js +24 -153
  149. package/lib/web/grab_to_pan.js +30 -30
  150. package/lib/web/interfaces.js +80 -258
  151. package/lib/web/overlay_manager.js +70 -246
  152. package/lib/web/password_prompt.js +38 -64
  153. package/lib/web/pdf_attachment_viewer.js +105 -130
  154. package/lib/web/pdf_cursor_tools.js +75 -102
  155. package/lib/web/pdf_document_properties.js +227 -376
  156. package/lib/web/pdf_find_bar.js +137 -171
  157. package/lib/web/pdf_find_controller.js +492 -549
  158. package/lib/web/pdf_find_utils.js +13 -13
  159. package/lib/web/pdf_history.js +395 -406
  160. package/lib/web/pdf_link_service.js +302 -349
  161. package/lib/web/pdf_outline_viewer.js +148 -209
  162. package/lib/web/pdf_page_view.js +449 -507
  163. package/lib/web/pdf_presentation_mode.js +304 -357
  164. package/lib/web/pdf_print_service.js +90 -104
  165. package/lib/web/pdf_rendering_queue.js +87 -108
  166. package/lib/web/pdf_sidebar.js +264 -304
  167. package/lib/web/pdf_sidebar_resizer.js +92 -119
  168. package/lib/web/pdf_single_page_viewer.js +77 -126
  169. package/lib/web/pdf_thumbnail_view.js +276 -297
  170. package/lib/web/pdf_thumbnail_viewer.js +186 -206
  171. package/lib/web/pdf_viewer.component.js +20 -21
  172. package/lib/web/pdf_viewer.js +55 -115
  173. package/lib/web/preferences.js +66 -273
  174. package/lib/web/secondary_toolbar.js +164 -196
  175. package/lib/web/text_layer_builder.js +284 -317
  176. package/lib/web/toolbar.js +216 -211
  177. package/lib/web/ui_utils.js +303 -404
  178. package/lib/web/view_history.js +49 -222
  179. package/lib/web/viewer_compatibility.js +7 -5
  180. package/package.json +2 -9
  181. package/web/pdf_viewer.css +25 -18
  182. package/web/pdf_viewer.js +3481 -4764
  183. package/web/pdf_viewer.js.map +1 -1
  184. package/webpack.js +14 -5
  185. package/lib/shared/streams_polyfill.js +0 -43
@@ -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 2019 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.
@@ -26,418 +26,281 @@ Object.defineProperty(exports, "__esModule", {
26
26
  });
27
27
  exports.FontLoader = exports.FontFaceObject = void 0;
28
28
 
29
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
29
+ var _util = require("../shared/util.js");
30
30
 
31
- var _util = require("../shared/util");
32
-
33
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
+ class BaseFontLoader {
32
+ constructor({
33
+ docId,
34
+ onUnsupportedFeature
35
+ }) {
36
+ if (this.constructor === BaseFontLoader) {
37
+ (0, _util.unreachable)("Cannot initialize BaseFontLoader.");
38
+ }
34
39
 
35
- 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); }
40
+ this.docId = docId;
41
+ this._onUnsupportedFeature = onUnsupportedFeature;
42
+ this.nativeFontFaces = [];
43
+ this.styleElement = null;
44
+ }
36
45
 
37
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
46
+ addNativeFontFace(nativeFontFace) {
47
+ this.nativeFontFaces.push(nativeFontFace);
48
+ document.fonts.add(nativeFontFace);
49
+ }
38
50
 
39
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
51
+ insertRule(rule) {
52
+ let styleElement = this.styleElement;
40
53
 
41
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
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
+ }
42
59
 
43
- 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); }
60
+ const styleSheet = styleElement.sheet;
61
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
62
+ }
44
63
 
45
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
64
+ clear() {
65
+ this.nativeFontFaces.forEach(function (nativeFontFace) {
66
+ document.fonts.delete(nativeFontFace);
67
+ });
68
+ this.nativeFontFaces.length = 0;
46
69
 
47
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
70
+ if (this.styleElement) {
71
+ this.styleElement.remove();
72
+ this.styleElement = null;
73
+ }
74
+ }
48
75
 
49
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
76
+ async bind(font) {
77
+ if (font.attached || font.missingFile) {
78
+ return;
79
+ }
50
80
 
51
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
81
+ font.attached = true;
52
82
 
53
- 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); } }
83
+ if (this.isFontLoadingAPISupported) {
84
+ const nativeFontFace = font.createNativeFontFace();
54
85
 
55
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
86
+ if (nativeFontFace) {
87
+ this.addNativeFontFace(nativeFontFace);
56
88
 
57
- var BaseFontLoader =
58
- /*#__PURE__*/
59
- function () {
60
- function BaseFontLoader(_ref) {
61
- var docId = _ref.docId,
62
- onUnsupportedFeature = _ref.onUnsupportedFeature;
89
+ try {
90
+ await nativeFontFace.loaded;
91
+ } catch (ex) {
92
+ this._onUnsupportedFeature({
93
+ featureId: _util.UNSUPPORTED_FEATURES.font
94
+ });
63
95
 
64
- _classCallCheck(this, BaseFontLoader);
96
+ (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
97
+ font.disableFontFace = true;
98
+ throw ex;
99
+ }
100
+ }
65
101
 
66
- if (this.constructor === BaseFontLoader) {
67
- (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
102
+ return;
68
103
  }
69
104
 
70
- this.docId = docId;
71
- this._onUnsupportedFeature = onUnsupportedFeature;
72
- this.nativeFontFaces = [];
73
- this.styleElement = null;
74
- }
105
+ const rule = font.createFontFaceRule();
75
106
 
76
- _createClass(BaseFontLoader, [{
77
- key: "addNativeFontFace",
78
- value: function addNativeFontFace(nativeFontFace) {
79
- this.nativeFontFaces.push(nativeFontFace);
80
- document.fonts.add(nativeFontFace);
81
- }
82
- }, {
83
- key: "insertRule",
84
- value: function insertRule(rule) {
85
- var styleElement = this.styleElement;
86
-
87
- if (!styleElement) {
88
- styleElement = this.styleElement = document.createElement('style');
89
- styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId);
90
- document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
107
+ if (rule) {
108
+ this.insertRule(rule);
109
+
110
+ if (this.isSyncFontLoadingSupported) {
111
+ return;
91
112
  }
92
113
 
93
- var styleSheet = styleElement.sheet;
94
- styleSheet.insertRule(rule, styleSheet.cssRules.length);
95
- }
96
- }, {
97
- key: "clear",
98
- value: function clear() {
99
- this.nativeFontFaces.forEach(function (nativeFontFace) {
100
- document.fonts["delete"](nativeFontFace);
101
- });
102
- this.nativeFontFaces.length = 0;
114
+ await new Promise(resolve => {
115
+ const request = this._queueLoadingCallback(resolve);
103
116
 
104
- if (this.styleElement) {
105
- this.styleElement.remove();
106
- this.styleElement = null;
107
- }
117
+ this._prepareFontLoadEvent([rule], [font], request);
118
+ });
108
119
  }
109
- }, {
110
- key: "bind",
111
- value: function () {
112
- var _bind = _asyncToGenerator(
113
- /*#__PURE__*/
114
- _regenerator["default"].mark(function _callee(font) {
115
- var _this = this;
116
-
117
- var nativeFontFace, rule;
118
- return _regenerator["default"].wrap(function _callee$(_context) {
119
- while (1) {
120
- switch (_context.prev = _context.next) {
121
- case 0:
122
- if (!(font.attached || font.missingFile)) {
123
- _context.next = 2;
124
- break;
125
- }
126
-
127
- return _context.abrupt("return", undefined);
128
-
129
- case 2:
130
- font.attached = true;
131
-
132
- if (!this.isFontLoadingAPISupported) {
133
- _context.next = 19;
134
- break;
135
- }
136
-
137
- nativeFontFace = font.createNativeFontFace();
138
-
139
- if (!nativeFontFace) {
140
- _context.next = 18;
141
- break;
142
- }
143
-
144
- this.addNativeFontFace(nativeFontFace);
145
- _context.prev = 7;
146
- _context.next = 10;
147
- return nativeFontFace.loaded;
148
-
149
- case 10:
150
- _context.next = 18;
151
- break;
152
-
153
- case 12:
154
- _context.prev = 12;
155
- _context.t0 = _context["catch"](7);
156
-
157
- this._onUnsupportedFeature({
158
- featureId: _util.UNSUPPORTED_FEATURES.font
159
- });
160
-
161
- (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'."));
162
- font.disableFontFace = true;
163
- throw _context.t0;
164
-
165
- case 18:
166
- return _context.abrupt("return", undefined);
167
-
168
- case 19:
169
- rule = font.createFontFaceRule();
170
-
171
- if (!rule) {
172
- _context.next = 25;
173
- break;
174
- }
175
-
176
- this.insertRule(rule);
177
-
178
- if (!this.isSyncFontLoadingSupported) {
179
- _context.next = 24;
180
- break;
181
- }
182
-
183
- return _context.abrupt("return", undefined);
184
-
185
- case 24:
186
- return _context.abrupt("return", new Promise(function (resolve) {
187
- var request = _this._queueLoadingCallback(resolve);
188
-
189
- _this._prepareFontLoadEvent([rule], [font], request);
190
- }));
191
-
192
- case 25:
193
- return _context.abrupt("return", undefined);
194
-
195
- case 26:
196
- case "end":
197
- return _context.stop();
198
- }
199
- }
200
- }, _callee, this, [[7, 12]]);
201
- }));
202
-
203
- function bind(_x) {
204
- return _bind.apply(this, arguments);
205
- }
120
+ }
206
121
 
207
- return bind;
208
- }()
209
- }, {
210
- key: "_queueLoadingCallback",
211
- value: function _queueLoadingCallback(callback) {
212
- (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
213
- }
214
- }, {
215
- key: "_prepareFontLoadEvent",
216
- value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
217
- (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
218
- }
219
- }, {
220
- key: "isFontLoadingAPISupported",
221
- get: function get() {
222
- (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
223
- }
224
- }, {
225
- key: "isSyncFontLoadingSupported",
226
- get: function get() {
227
- (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
228
- }
229
- }, {
230
- key: "_loadTestFont",
231
- get: function get() {
232
- (0, _util.unreachable)('Abstract method `_loadTestFont`.');
233
- }
234
- }]);
122
+ _queueLoadingCallback(callback) {
123
+ (0, _util.unreachable)("Abstract method `_queueLoadingCallback`.");
124
+ }
235
125
 
236
- return BaseFontLoader;
237
- }();
126
+ get isFontLoadingAPISupported() {
127
+ const supported = typeof document !== "undefined" && !!document.fonts;
128
+ return (0, _util.shadow)(this, "isFontLoadingAPISupported", supported);
129
+ }
238
130
 
239
- var FontLoader;
240
- exports.FontLoader = FontLoader;
241
- {
242
- exports.FontLoader = FontLoader =
243
- /*#__PURE__*/
244
- function (_BaseFontLoader) {
245
- _inherits(GenericFontLoader, _BaseFontLoader);
131
+ get isSyncFontLoadingSupported() {
132
+ (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`.");
133
+ }
246
134
 
247
- function GenericFontLoader(docId) {
248
- var _this2;
135
+ get _loadTestFont() {
136
+ (0, _util.unreachable)("Abstract method `_loadTestFont`.");
137
+ }
249
138
 
250
- _classCallCheck(this, GenericFontLoader);
139
+ _prepareFontLoadEvent(rules, fontsToLoad, request) {
140
+ (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`.");
141
+ }
251
142
 
252
- _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
253
- _this2.loadingContext = {
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 = {
254
152
  requests: [],
255
153
  nextRequestId: 0
256
154
  };
257
- _this2.loadTestFontId = 0;
258
- return _this2;
155
+ this.loadTestFontId = 0;
259
156
  }
260
157
 
261
- _createClass(GenericFontLoader, [{
262
- key: "_queueLoadingCallback",
263
- value: function _queueLoadingCallback(callback) {
264
- function completeRequest() {
265
- (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
266
- request.done = true;
267
-
268
- while (context.requests.length > 0 && context.requests[0].done) {
269
- var otherRequest = context.requests.shift();
270
- setTimeout(otherRequest.callback, 0);
271
- }
272
- }
158
+ get isSyncFontLoadingSupported() {
159
+ let supported = false;
273
160
 
274
- var context = this.loadingContext;
275
- var request = {
276
- id: "pdfjs-font-loading-".concat(context.nextRequestId++),
277
- done: false,
278
- complete: completeRequest,
279
- callback: callback
280
- };
281
- context.requests.push(request);
282
- return request;
283
- }
284
- }, {
285
- key: "_prepareFontLoadEvent",
286
- value: function _prepareFontLoadEvent(rules, fonts, request) {
287
- function int32(data, offset) {
288
- return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
289
- }
161
+ if (typeof navigator === "undefined") {
162
+ supported = true;
163
+ } else {
164
+ const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
290
165
 
291
- function spliceString(s, offset, remove, insert) {
292
- var chunk1 = s.substring(0, offset);
293
- var chunk2 = s.substring(offset + remove);
294
- return chunk1 + insert + chunk2;
166
+ if (m && m[1] >= 14) {
167
+ supported = true;
295
168
  }
169
+ }
296
170
 
297
- var i, ii;
298
- var canvas = document.createElement('canvas');
299
- canvas.width = 1;
300
- canvas.height = 1;
301
- var ctx = canvas.getContext('2d');
302
- var called = 0;
171
+ return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported);
172
+ }
303
173
 
304
- function isFontReady(name, callback) {
305
- called++;
174
+ _queueLoadingCallback(callback) {
175
+ function completeRequest() {
176
+ (0, _util.assert)(!request.done, "completeRequest() cannot be called twice.");
177
+ request.done = true;
306
178
 
307
- if (called > 30) {
308
- (0, _util.warn)('Load test font never loaded.');
309
- callback();
310
- return;
311
- }
179
+ while (context.requests.length > 0 && context.requests[0].done) {
180
+ const otherRequest = context.requests.shift();
181
+ setTimeout(otherRequest.callback, 0);
182
+ }
183
+ }
312
184
 
313
- ctx.font = '30px ' + name;
314
- ctx.fillText('.', 0, 20);
315
- var imageData = ctx.getImageData(0, 0, 1, 1);
185
+ const context = this.loadingContext;
186
+ const request = {
187
+ id: `pdfjs-font-loading-${context.nextRequestId++}`,
188
+ done: false,
189
+ complete: completeRequest,
190
+ callback
191
+ };
192
+ context.requests.push(request);
193
+ return request;
194
+ }
316
195
 
317
- if (imageData.data[3] > 0) {
318
- callback();
319
- return;
320
- }
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
+ };
321
200
 
322
- setTimeout(isFontReady.bind(null, name, callback));
323
- }
201
+ return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont());
202
+ }
324
203
 
325
- var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++);
326
- var data = this._loadTestFont;
327
- var COMMENT_OFFSET = 976;
328
- data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
329
- var CFF_CHECKSUM_OFFSET = 16;
330
- var XXXX_VALUE = 0x58585858;
331
- var checksum = int32(data, CFF_CHECKSUM_OFFSET);
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
+ }
332
208
 
333
- for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
334
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
335
- }
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
+ }
336
214
 
337
- if (i < loadTestFontId.length) {
338
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
339
- }
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;
340
221
 
341
- data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
342
- var url = "url(data:font/opentype;base64,".concat(btoa(data), ");");
343
- var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}");
344
- this.insertRule(rule);
345
- var names = [];
222
+ function isFontReady(name, callback) {
223
+ called++;
346
224
 
347
- for (i = 0, ii = fonts.length; i < ii; i++) {
348
- names.push(fonts[i].loadedName);
225
+ if (called > 30) {
226
+ (0, _util.warn)("Load test font never loaded.");
227
+ callback();
228
+ return;
349
229
  }
350
230
 
351
- names.push(loadTestFontId);
352
- var div = document.createElement('div');
353
- div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
231
+ ctx.font = "30px " + name;
232
+ ctx.fillText(".", 0, 20);
233
+ const imageData = ctx.getImageData(0, 0, 1, 1);
354
234
 
355
- for (i = 0, ii = names.length; i < ii; ++i) {
356
- var span = document.createElement('span');
357
- span.textContent = 'Hi';
358
- span.style.fontFamily = names[i];
359
- div.appendChild(span);
235
+ if (imageData.data[3] > 0) {
236
+ callback();
237
+ return;
360
238
  }
361
239
 
362
- document.body.appendChild(div);
363
- isFontReady(loadTestFontId, function () {
364
- document.body.removeChild(div);
365
- request.complete();
366
- });
240
+ setTimeout(isFontReady.bind(null, name, callback));
367
241
  }
368
- }, {
369
- key: "isFontLoadingAPISupported",
370
- get: function get() {
371
- var supported = typeof document !== 'undefined' && !!document.fonts;
372
-
373
- if (supported && typeof navigator !== 'undefined') {
374
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
375
242
 
376
- if (m && m[1] < 63) {
377
- supported = false;
378
- }
379
- }
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);
380
250
 
381
- return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
251
+ for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
252
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
382
253
  }
383
- }, {
384
- key: "isSyncFontLoadingSupported",
385
- get: function get() {
386
- var supported = false;
387
254
 
388
- if (typeof navigator === 'undefined') {
389
- supported = true;
390
- } else {
391
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
255
+ if (i < loadTestFontId.length) {
256
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
257
+ }
392
258
 
393
- if (m && m[1] >= 14) {
394
- supported = true;
395
- }
396
- }
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 = [];
397
264
 
398
- return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
265
+ for (i = 0, ii = fonts.length; i < ii; i++) {
266
+ names.push(fonts[i].loadedName);
399
267
  }
400
- }, {
401
- key: "_loadTestFont",
402
- get: function get() {
403
- var getLoadTestFont = function getLoadTestFont() {
404
- 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==');
405
- };
406
-
407
- return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
268
+
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);
408
281
  }
409
- }]);
410
282
 
411
- return GenericFontLoader;
412
- }(BaseFontLoader);
413
- }
414
- var IsEvalSupportedCached = {
415
- get value() {
416
- return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
417
- }
283
+ document.body.appendChild(div);
284
+ isFontReady(loadTestFontId, function () {
285
+ document.body.removeChild(div);
286
+ request.complete();
287
+ });
288
+ }
418
289
 
419
- };
420
-
421
- var FontFaceObject =
422
- /*#__PURE__*/
423
- function () {
424
- function FontFaceObject(translatedData, _ref2) {
425
- var _ref2$isEvalSupported = _ref2.isEvalSupported,
426
- isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,
427
- _ref2$disableFontFace = _ref2.disableFontFace,
428
- disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,
429
- _ref2$ignoreErrors = _ref2.ignoreErrors,
430
- ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,
431
- _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,
432
- onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,
433
- _ref2$fontRegistry = _ref2.fontRegistry,
434
- fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;
435
-
436
- _classCallCheck(this, FontFaceObject);
290
+ };
291
+ }
437
292
 
293
+ class FontFaceObject {
294
+ constructor(translatedData, {
295
+ isEvalSupported = true,
296
+ disableFontFace = false,
297
+ ignoreErrors = false,
298
+ onUnsupportedFeature = null,
299
+ fontRegistry = null
300
+ }) {
438
301
  this.compiledGlyphs = Object.create(null);
439
302
 
440
- for (var i in translatedData) {
303
+ for (const i in translatedData) {
441
304
  this[i] = translatedData[i];
442
305
  }
443
306
 
@@ -448,98 +311,92 @@ function () {
448
311
  this.fontRegistry = fontRegistry;
449
312
  }
450
313
 
451
- _createClass(FontFaceObject, [{
452
- key: "createNativeFontFace",
453
- value: function createNativeFontFace() {
454
- if (!this.data || this.disableFontFace) {
455
- return null;
456
- }
314
+ createNativeFontFace() {
315
+ if (!this.data || this.disableFontFace) {
316
+ return null;
317
+ }
457
318
 
458
- var nativeFontFace = new FontFace(this.loadedName, this.data, {});
319
+ const nativeFontFace = new FontFace(this.loadedName, this.data, {});
459
320
 
460
- if (this.fontRegistry) {
461
- this.fontRegistry.registerFont(this);
462
- }
463
-
464
- return nativeFontFace;
321
+ if (this.fontRegistry) {
322
+ this.fontRegistry.registerFont(this);
465
323
  }
466
- }, {
467
- key: "createFontFaceRule",
468
- value: function createFontFaceRule() {
469
- if (!this.data || this.disableFontFace) {
470
- return null;
471
- }
472
324
 
473
- var data = (0, _util.bytesToString)(new Uint8Array(this.data));
474
- var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");");
475
- var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}");
325
+ return nativeFontFace;
326
+ }
476
327
 
477
- if (this.fontRegistry) {
478
- this.fontRegistry.registerFont(this, url);
479
- }
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}}`;
480
336
 
481
- return rule;
337
+ if (this.fontRegistry) {
338
+ this.fontRegistry.registerFont(this, url);
482
339
  }
483
- }, {
484
- key: "getPathGenerator",
485
- value: function getPathGenerator(objs, character) {
486
- if (this.compiledGlyphs[character] !== undefined) {
487
- return this.compiledGlyphs[character];
488
- }
489
340
 
490
- var cmds, current;
341
+ return rule;
342
+ }
491
343
 
492
- try {
493
- cmds = objs.get(this.loadedName + '_path_' + character);
494
- } catch (ex) {
495
- if (!this.ignoreErrors) {
496
- throw ex;
497
- }
344
+ getPathGenerator(objs, character) {
345
+ if (this.compiledGlyphs[character] !== undefined) {
346
+ return this.compiledGlyphs[character];
347
+ }
498
348
 
499
- if (this._onUnsupportedFeature) {
500
- this._onUnsupportedFeature({
501
- featureId: _util.UNSUPPORTED_FEATURES.font
502
- });
503
- }
349
+ let cmds, current;
504
350
 
505
- (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
506
- return this.compiledGlyphs[character] = function (c, size) {};
351
+ try {
352
+ cmds = objs.get(this.loadedName + "_path_" + character);
353
+ } catch (ex) {
354
+ if (!this.ignoreErrors) {
355
+ throw ex;
507
356
  }
508
357
 
509
- if (this.isEvalSupported && IsEvalSupportedCached.value) {
510
- var args,
511
- js = '';
358
+ if (this._onUnsupportedFeature) {
359
+ this._onUnsupportedFeature({
360
+ featureId: _util.UNSUPPORTED_FEATURES.font
361
+ });
362
+ }
512
363
 
513
- for (var i = 0, ii = cmds.length; i < ii; i++) {
514
- current = cmds[i];
364
+ (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
365
+ return this.compiledGlyphs[character] = function (c, size) {};
366
+ }
515
367
 
516
- if (current.args !== undefined) {
517
- args = current.args.join(',');
518
- } else {
519
- args = '';
520
- }
368
+ if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
369
+ let args,
370
+ js = "";
521
371
 
522
- js += 'c.' + current.cmd + '(' + args + ');\n';
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 = "";
523
379
  }
524
380
 
525
- return this.compiledGlyphs[character] = new Function('c', 'size', js);
381
+ js += "c." + current.cmd + "(" + args + ");\n";
526
382
  }
527
383
 
528
- return this.compiledGlyphs[character] = function (c, size) {
529
- for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
530
- current = cmds[_i];
384
+ return this.compiledGlyphs[character] = new Function("c", "size", js);
385
+ }
531
386
 
532
- if (current.cmd === 'scale') {
533
- current.args = [size, -size];
534
- }
387
+ return this.compiledGlyphs[character] = function (c, size) {
388
+ for (let i = 0, ii = cmds.length; i < ii; i++) {
389
+ current = cmds[i];
535
390
 
536
- c[current.cmd].apply(c, current.args);
391
+ if (current.cmd === "scale") {
392
+ current.args = [size, -size];
537
393
  }
538
- };
539
- }
540
- }]);
541
394
 
542
- return FontFaceObject;
543
- }();
395
+ c[current.cmd].apply(c, current.args);
396
+ }
397
+ };
398
+ }
399
+
400
+ }
544
401
 
545
402
  exports.FontFaceObject = FontFaceObject;