pdfjs-dist 2.0.489 → 2.2.228

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 (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. package/lib/web/dom_events.js +0 -137
@@ -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 2017 Mozilla Foundation
5
+ * Copyright 2019 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,295 +19,527 @@
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;
28
-
29
- var _util = require('../shared/util');
30
-
31
- function FontLoader(docId) {
32
- this.docId = docId;
33
- this.styleElement = null;
34
- this.nativeFontFaces = [];
35
- this.loadTestFontId = 0;
36
- this.loadingContext = {
37
- requests: [],
38
- nextRequestId: 0
39
- };
40
- }
41
- FontLoader.prototype = {
42
- insertRule: function fontLoaderInsertRule(rule) {
43
- var styleElement = this.styleElement;
44
- if (!styleElement) {
45
- styleElement = this.styleElement = document.createElement('style');
46
- styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;
47
- document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
48
- }
49
- var styleSheet = styleElement.sheet;
50
- styleSheet.insertRule(rule, styleSheet.cssRules.length);
51
- },
52
- clear: function fontLoaderClear() {
53
- if (this.styleElement) {
54
- this.styleElement.remove();
55
- this.styleElement = null;
27
+ exports.FontLoader = exports.FontFaceObject = void 0;
28
+
29
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
30
+
31
+ var _util = require("../shared/util");
32
+
33
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
34
+
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); }
36
+
37
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
38
+
39
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
40
+
41
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
42
+
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); }
44
+
45
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
46
+
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); } }
48
+
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); }); }; }
50
+
51
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
52
+
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); } }
54
+
55
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
56
+
57
+ var BaseFontLoader =
58
+ /*#__PURE__*/
59
+ function () {
60
+ function BaseFontLoader(_ref) {
61
+ var docId = _ref.docId,
62
+ onUnsupportedFeature = _ref.onUnsupportedFeature;
63
+
64
+ _classCallCheck(this, BaseFontLoader);
65
+
66
+ if (this.constructor === BaseFontLoader) {
67
+ (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
56
68
  }
57
- this.nativeFontFaces.forEach(function (nativeFontFace) {
58
- document.fonts.delete(nativeFontFace);
59
- });
60
- this.nativeFontFaces.length = 0;
69
+
70
+ this.docId = docId;
71
+ this._onUnsupportedFeature = onUnsupportedFeature;
72
+ this.nativeFontFaces = [];
73
+ this.styleElement = null;
61
74
  }
62
- };
63
- {
64
- var getLoadTestFont = function getLoadTestFont() {
65
- return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA==');
66
- };
67
- Object.defineProperty(FontLoader.prototype, 'loadTestFont', {
68
- get: function get() {
69
- return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont());
70
- },
71
-
72
- configurable: true
73
- });
74
- FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) {
75
- this.nativeFontFaces.push(nativeFontFace);
76
- document.fonts.add(nativeFontFace);
77
- };
78
- FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {
79
- var rules = [];
80
- var fontsToLoad = [];
81
- var fontLoadPromises = [];
82
- var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) {
83
- return nativeFontFace.loaded.catch(function (e) {
84
- (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e);
85
- });
86
- };
87
- var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported;
88
- for (var i = 0, ii = fonts.length; i < ii; i++) {
89
- var font = fonts[i];
90
- if (font.attached || font.loading === false) {
91
- continue;
92
- }
93
- font.attached = true;
94
- if (isFontLoadingAPISupported) {
95
- var nativeFontFace = font.createNativeFontFace();
96
- if (nativeFontFace) {
97
- this.addNativeFontFace(nativeFontFace);
98
- fontLoadPromises.push(getNativeFontPromise(nativeFontFace));
99
- }
100
- } else {
101
- var rule = font.createFontFaceRule();
102
- if (rule) {
103
- this.insertRule(rule);
104
- rules.push(rule);
105
- fontsToLoad.push(font);
106
- }
75
+
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
91
  }
92
+
93
+ var styleSheet = styleElement.sheet;
94
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
108
95
  }
109
- var request = this.queueLoadingCallback(callback);
110
- if (isFontLoadingAPISupported) {
111
- Promise.all(fontLoadPromises).then(function () {
112
- request.complete();
96
+ }, {
97
+ key: "clear",
98
+ value: function clear() {
99
+ this.nativeFontFaces.forEach(function (nativeFontFace) {
100
+ document.fonts["delete"](nativeFontFace);
113
101
  });
114
- } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) {
115
- this.prepareFontLoadEvent(rules, fontsToLoad, request);
116
- } else {
117
- request.complete();
118
- }
119
- };
120
- FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) {
121
- function LoadLoader_completeRequest() {
122
- (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice');
123
- request.end = Date.now();
124
- while (context.requests.length > 0 && context.requests[0].end) {
125
- var otherRequest = context.requests.shift();
126
- setTimeout(otherRequest.callback, 0);
102
+ this.nativeFontFaces.length = 0;
103
+
104
+ if (this.styleElement) {
105
+ this.styleElement.remove();
106
+ this.styleElement = null;
127
107
  }
128
108
  }
129
- var context = this.loadingContext;
130
- var requestId = 'pdfjs-font-loading-' + context.nextRequestId++;
131
- var request = {
132
- id: requestId,
133
- complete: LoadLoader_completeRequest,
134
- callback: callback,
135
- started: Date.now()
136
- };
137
- context.requests.push(request);
138
- return request;
139
- };
140
- FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) {
141
- function int32(data, offset) {
142
- return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
143
- }
144
- function spliceString(s, offset, remove, insert) {
145
- var chunk1 = s.substr(0, offset);
146
- var chunk2 = s.substr(offset + remove);
147
- return chunk1 + insert + chunk2;
148
- }
149
- var i, ii;
150
- var canvas = document.createElement('canvas');
151
- canvas.width = 1;
152
- canvas.height = 1;
153
- var ctx = canvas.getContext('2d');
154
- var called = 0;
155
- function isFontReady(name, callback) {
156
- called++;
157
- if (called > 30) {
158
- (0, _util.warn)('Load test font never loaded.');
159
- callback();
160
- return;
161
- }
162
- ctx.font = '30px ' + name;
163
- ctx.fillText('.', 0, 20);
164
- var imageData = ctx.getImageData(0, 0, 1, 1);
165
- if (imageData.data[3] > 0) {
166
- callback();
167
- return;
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);
168
205
  }
169
- setTimeout(isFontReady.bind(null, name, callback));
206
+
207
+ return bind;
208
+ }()
209
+ }, {
210
+ key: "_queueLoadingCallback",
211
+ value: function _queueLoadingCallback(callback) {
212
+ (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
170
213
  }
171
- var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;
172
- var data = this.loadTestFont;
173
- var COMMENT_OFFSET = 976;
174
- data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
175
- var CFF_CHECKSUM_OFFSET = 16;
176
- var XXXX_VALUE = 0x58585858;
177
- var checksum = int32(data, CFF_CHECKSUM_OFFSET);
178
- for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
179
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
214
+ }, {
215
+ key: "_prepareFontLoadEvent",
216
+ value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
217
+ (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
180
218
  }
181
- if (i < loadTestFontId.length) {
182
- checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
219
+ }, {
220
+ key: "isFontLoadingAPISupported",
221
+ get: function get() {
222
+ (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
183
223
  }
184
- data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
185
- var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';
186
- var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}';
187
- this.insertRule(rule);
188
- var names = [];
189
- for (i = 0, ii = fonts.length; i < ii; i++) {
190
- names.push(fonts[i].loadedName);
224
+ }, {
225
+ key: "isSyncFontLoadingSupported",
226
+ get: function get() {
227
+ (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
191
228
  }
192
- names.push(loadTestFontId);
193
- var div = document.createElement('div');
194
- div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
195
- for (i = 0, ii = names.length; i < ii; ++i) {
196
- var span = document.createElement('span');
197
- span.textContent = 'Hi';
198
- span.style.fontFamily = names[i];
199
- div.appendChild(span);
229
+ }, {
230
+ key: "_loadTestFont",
231
+ get: function get() {
232
+ (0, _util.unreachable)('Abstract method `_loadTestFont`.');
200
233
  }
201
- document.body.appendChild(div);
202
- isFontReady(loadTestFontId, function () {
203
- document.body.removeChild(div);
204
- request.complete();
205
- });
206
- };
207
- }
208
- {
209
- FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts;
210
- }
234
+ }]);
235
+
236
+ return BaseFontLoader;
237
+ }();
238
+
239
+ var FontLoader;
240
+ exports.FontLoader = FontLoader;
211
241
  {
212
- var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() {
213
- if (typeof navigator === 'undefined') {
214
- return true;
215
- }
216
- var supported = false;
217
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
218
- if (m && m[1] >= 14) {
219
- supported = true;
242
+ exports.FontLoader = FontLoader =
243
+ /*#__PURE__*/
244
+ function (_BaseFontLoader) {
245
+ _inherits(GenericFontLoader, _BaseFontLoader);
246
+
247
+ function GenericFontLoader(docId) {
248
+ var _this2;
249
+
250
+ _classCallCheck(this, GenericFontLoader);
251
+
252
+ _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
253
+ _this2.loadingContext = {
254
+ requests: [],
255
+ nextRequestId: 0
256
+ };
257
+ _this2.loadTestFontId = 0;
258
+ return _this2;
220
259
  }
221
- return supported;
222
- };
223
- Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', {
224
- get: function get() {
225
- return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported());
226
- },
227
260
 
228
- enumerable: true,
229
- configurable: true
230
- });
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
+ }
273
+
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
+ }
290
+
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;
295
+ }
296
+
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;
303
+
304
+ function isFontReady(name, callback) {
305
+ called++;
306
+
307
+ if (called > 30) {
308
+ (0, _util.warn)('Load test font never loaded.');
309
+ callback();
310
+ return;
311
+ }
312
+
313
+ ctx.font = '30px ' + name;
314
+ ctx.fillText('.', 0, 20);
315
+ var imageData = ctx.getImageData(0, 0, 1, 1);
316
+
317
+ if (imageData.data[3] > 0) {
318
+ callback();
319
+ return;
320
+ }
321
+
322
+ setTimeout(isFontReady.bind(null, name, callback));
323
+ }
324
+
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);
332
+
333
+ for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
334
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
335
+ }
336
+
337
+ if (i < loadTestFontId.length) {
338
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
339
+ }
340
+
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 = [];
346
+
347
+ for (i = 0, ii = fonts.length; i < ii; i++) {
348
+ names.push(fonts[i].loadedName);
349
+ }
350
+
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;');
354
+
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);
360
+ }
361
+
362
+ document.body.appendChild(div);
363
+ isFontReady(loadTestFontId, function () {
364
+ document.body.removeChild(div);
365
+ request.complete();
366
+ });
367
+ }
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
+
376
+ if (m && m[1] < 63) {
377
+ supported = false;
378
+ }
379
+ }
380
+
381
+ return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
382
+ }
383
+ }, {
384
+ key: "isSyncFontLoadingSupported",
385
+ get: function get() {
386
+ var supported = false;
387
+
388
+ if (typeof navigator === 'undefined') {
389
+ supported = true;
390
+ } else {
391
+ var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
392
+
393
+ if (m && m[1] >= 14) {
394
+ supported = true;
395
+ }
396
+ }
397
+
398
+ return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
399
+ }
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());
408
+ }
409
+ }]);
410
+
411
+ return GenericFontLoader;
412
+ }(BaseFontLoader);
231
413
  }
232
414
  var IsEvalSupportedCached = {
233
415
  get value() {
234
416
  return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
235
417
  }
418
+
236
419
  };
237
- var FontFaceObject = function FontFaceObjectClosure() {
238
- function FontFaceObject(translatedData, _ref) {
239
- var _ref$isEvalSupported = _ref.isEvalSupported,
240
- isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported,
241
- _ref$disableFontFace = _ref.disableFontFace,
242
- disableFontFace = _ref$disableFontFace === undefined ? false : _ref$disableFontFace,
243
- _ref$fontRegistry = _ref.fontRegistry,
244
- fontRegistry = _ref$fontRegistry === undefined ? null : _ref$fontRegistry;
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);
245
437
 
246
438
  this.compiledGlyphs = Object.create(null);
439
+
247
440
  for (var i in translatedData) {
248
441
  this[i] = translatedData[i];
249
442
  }
443
+
250
444
  this.isEvalSupported = isEvalSupported !== false;
251
445
  this.disableFontFace = disableFontFace === true;
446
+ this.ignoreErrors = ignoreErrors === true;
447
+ this._onUnsupportedFeature = onUnsupportedFeature;
252
448
  this.fontRegistry = fontRegistry;
253
449
  }
254
- FontFaceObject.prototype = {
255
- createNativeFontFace: function FontFaceObject_createNativeFontFace() {
450
+
451
+ _createClass(FontFaceObject, [{
452
+ key: "createNativeFontFace",
453
+ value: function createNativeFontFace() {
256
454
  if (!this.data || this.disableFontFace) {
257
455
  return null;
258
456
  }
457
+
259
458
  var nativeFontFace = new FontFace(this.loadedName, this.data, {});
459
+
260
460
  if (this.fontRegistry) {
261
461
  this.fontRegistry.registerFont(this);
262
462
  }
463
+
263
464
  return nativeFontFace;
264
- },
265
- createFontFaceRule: function FontFaceObject_createFontFaceRule() {
465
+ }
466
+ }, {
467
+ key: "createFontFaceRule",
468
+ value: function createFontFaceRule() {
266
469
  if (!this.data || this.disableFontFace) {
267
470
  return null;
268
471
  }
472
+
269
473
  var data = (0, _util.bytesToString)(new Uint8Array(this.data));
270
- var fontName = this.loadedName;
271
- var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');';
272
- var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}';
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, "}");
476
+
273
477
  if (this.fontRegistry) {
274
478
  this.fontRegistry.registerFont(this, url);
275
479
  }
480
+
276
481
  return rule;
277
- },
278
- getPathGenerator: function FontFaceObject_getPathGenerator(objs, character) {
279
- if (!(character in this.compiledGlyphs)) {
280
- var cmds = objs.get(this.loadedName + '_path_' + character);
281
- var current, i, len;
282
- if (this.isEvalSupported && IsEvalSupportedCached.value) {
283
- var args,
284
- js = '';
285
- for (i = 0, len = cmds.length; i < len; i++) {
286
- current = cmds[i];
287
- if (current.args !== undefined) {
288
- args = current.args.join(',');
289
- } else {
290
- args = '';
291
- }
292
- js += 'c.' + current.cmd + '(' + args + ');\n';
482
+ }
483
+ }, {
484
+ key: "getPathGenerator",
485
+ value: function getPathGenerator(objs, character) {
486
+ if (this.compiledGlyphs[character] !== undefined) {
487
+ return this.compiledGlyphs[character];
488
+ }
489
+
490
+ var cmds, current;
491
+
492
+ try {
493
+ cmds = objs.get(this.loadedName + '_path_' + character);
494
+ } catch (ex) {
495
+ if (!this.ignoreErrors) {
496
+ throw ex;
497
+ }
498
+
499
+ if (this._onUnsupportedFeature) {
500
+ this._onUnsupportedFeature({
501
+ featureId: _util.UNSUPPORTED_FEATURES.font
502
+ });
503
+ }
504
+
505
+ (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
506
+ return this.compiledGlyphs[character] = function (c, size) {};
507
+ }
508
+
509
+ if (this.isEvalSupported && IsEvalSupportedCached.value) {
510
+ var args,
511
+ js = '';
512
+
513
+ for (var i = 0, ii = cmds.length; i < ii; i++) {
514
+ current = cmds[i];
515
+
516
+ if (current.args !== undefined) {
517
+ args = current.args.join(',');
518
+ } else {
519
+ args = '';
293
520
  }
294
- this.compiledGlyphs[character] = new Function('c', 'size', js);
295
- } else {
296
- this.compiledGlyphs[character] = function (c, size) {
297
- for (i = 0, len = cmds.length; i < len; i++) {
298
- current = cmds[i];
299
- if (current.cmd === 'scale') {
300
- current.args = [size, -size];
301
- }
302
- c[current.cmd].apply(c, current.args);
303
- }
304
- };
521
+
522
+ js += 'c.' + current.cmd + '(' + args + ');\n';
305
523
  }
524
+
525
+ return this.compiledGlyphs[character] = new Function('c', 'size', js);
306
526
  }
307
- return this.compiledGlyphs[character];
527
+
528
+ return this.compiledGlyphs[character] = function (c, size) {
529
+ for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
530
+ current = cmds[_i];
531
+
532
+ if (current.cmd === 'scale') {
533
+ current.args = [size, -size];
534
+ }
535
+
536
+ c[current.cmd].apply(c, current.args);
537
+ }
538
+ };
308
539
  }
309
- };
540
+ }]);
541
+
310
542
  return FontFaceObject;
311
543
  }();
312
- exports.FontFaceObject = FontFaceObject;
313
- exports.FontLoader = FontLoader;
544
+
545
+ exports.FontFaceObject = FontFaceObject;