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,31 +26,33 @@ Object.defineProperty(exports, "__esModule", {
26
26
  });
27
27
  exports.Type1Parser = void 0;
28
28
 
29
- var _util = require("../shared/util");
29
+ var _encodings = require("./encodings.js");
30
30
 
31
- var _encodings = require("./encodings");
31
+ var _core_utils = require("./core_utils.js");
32
32
 
33
- var _stream = require("./stream");
33
+ var _stream = require("./stream.js");
34
+
35
+ var _util = require("../shared/util.js");
34
36
 
35
37
  var HINTING_ENABLED = false;
36
38
 
37
39
  var Type1CharString = function Type1CharStringClosure() {
38
40
  var COMMAND_MAP = {
39
- 'hstem': [1],
40
- 'vstem': [3],
41
- 'vmoveto': [4],
42
- 'rlineto': [5],
43
- 'hlineto': [6],
44
- 'vlineto': [7],
45
- 'rrcurveto': [8],
46
- 'callsubr': [10],
47
- 'flex': [12, 35],
48
- 'drop': [12, 18],
49
- 'endchar': [14],
50
- 'rmoveto': [21],
51
- 'hmoveto': [22],
52
- 'vhcurveto': [30],
53
- 'hvcurveto': [31]
41
+ hstem: [1],
42
+ vstem: [3],
43
+ vmoveto: [4],
44
+ rlineto: [5],
45
+ hlineto: [6],
46
+ vlineto: [7],
47
+ rrcurveto: [8],
48
+ callsubr: [10],
49
+ flex: [12, 35],
50
+ drop: [12, 18],
51
+ endchar: [14],
52
+ rmoveto: [21],
53
+ hmoveto: [22],
54
+ vhcurveto: [30],
55
+ hvcurveto: [31]
54
56
  };
55
57
 
56
58
  function Type1CharString() {
@@ -303,7 +305,8 @@ var Type1CharString = function Type1CharStringClosure() {
303
305
 
304
306
  return error;
305
307
  },
306
- executeCommand: function executeCommand(howManyArgs, command, keepStack) {
308
+
309
+ executeCommand(howManyArgs, command, keepStack) {
307
310
  var stackLength = this.stack.length;
308
311
 
309
312
  if (howManyArgs > stackLength) {
@@ -319,7 +322,7 @@ var Type1CharString = function Type1CharStringClosure() {
319
322
  this.output.push(28, value >> 8 & 0xff, value & 0xff);
320
323
  } else {
321
324
  value = 65536 * value | 0;
322
- this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF);
325
+ this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
323
326
  }
324
327
  }
325
328
 
@@ -333,6 +336,7 @@ var Type1CharString = function Type1CharStringClosure() {
333
336
 
334
337
  return false;
335
338
  }
339
+
336
340
  };
337
341
  return Type1CharString;
338
342
  }();
@@ -406,7 +410,7 @@ var Type1Parser = function Type1ParserClosure() {
406
410
  }
407
411
 
408
412
  function isSpecial(c) {
409
- return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29;
413
+ return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;
410
414
  }
411
415
 
412
416
  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {
@@ -429,7 +433,7 @@ var Type1Parser = function Type1ParserClosure() {
429
433
  while (true) {
430
434
  var token = this.getToken();
431
435
 
432
- if (token === null || token === ']' || token === '}') {
436
+ if (token === null || token === "]" || token === "}") {
433
437
  break;
434
438
  }
435
439
 
@@ -448,7 +452,7 @@ var Type1Parser = function Type1ParserClosure() {
448
452
  },
449
453
  readBoolean: function Type1Parser_readBoolean() {
450
454
  var token = this.getToken();
451
- return token === 'true' ? 1 : 0;
455
+ return token === "true" ? 1 : 0;
452
456
  },
453
457
  nextChar: function Type1_nextChar() {
454
458
  return this.currentChar = this.stream.getByte();
@@ -463,12 +467,12 @@ var Type1Parser = function Type1ParserClosure() {
463
467
  }
464
468
 
465
469
  if (comment) {
466
- if (ch === 0x0A || ch === 0x0D) {
470
+ if (ch === 0x0a || ch === 0x0d) {
467
471
  comment = false;
468
472
  }
469
473
  } else if (ch === 0x25) {
470
474
  comment = true;
471
- } else if (!(0, _util.isSpace)(ch)) {
475
+ } else if (!(0, _core_utils.isWhiteSpace)(ch)) {
472
476
  break;
473
477
  }
474
478
 
@@ -480,12 +484,12 @@ var Type1Parser = function Type1ParserClosure() {
480
484
  return String.fromCharCode(ch);
481
485
  }
482
486
 
483
- var token = '';
487
+ var token = "";
484
488
 
485
489
  do {
486
490
  token += String.fromCharCode(ch);
487
491
  ch = this.nextChar();
488
- } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch));
492
+ } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));
489
493
 
490
494
  return token;
491
495
  },
@@ -501,25 +505,25 @@ var Type1Parser = function Type1ParserClosure() {
501
505
  var subrs = [],
502
506
  charstrings = [];
503
507
  var privateData = Object.create(null);
504
- privateData['lenIV'] = 4;
508
+ privateData["lenIV"] = 4;
505
509
  var program = {
506
510
  subrs: [],
507
511
  charstrings: [],
508
512
  properties: {
509
- 'privateData': privateData
513
+ privateData
510
514
  }
511
515
  };
512
516
  var token, length, data, lenIV, encoded;
513
517
 
514
518
  while ((token = this.getToken()) !== null) {
515
- if (token !== '/') {
519
+ if (token !== "/") {
516
520
  continue;
517
521
  }
518
522
 
519
523
  token = this.getToken();
520
524
 
521
525
  switch (token) {
522
- case 'CharStrings':
526
+ case "CharStrings":
523
527
  this.getToken();
524
528
  this.getToken();
525
529
  this.getToken();
@@ -528,11 +532,11 @@ var Type1Parser = function Type1ParserClosure() {
528
532
  while (true) {
529
533
  token = this.getToken();
530
534
 
531
- if (token === null || token === 'end') {
535
+ if (token === null || token === "end") {
532
536
  break;
533
537
  }
534
538
 
535
- if (token !== '/') {
539
+ if (token !== "/") {
536
540
  continue;
537
541
  }
538
542
 
@@ -540,38 +544,38 @@ var Type1Parser = function Type1ParserClosure() {
540
544
  length = this.readInt();
541
545
  this.getToken();
542
546
  data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
543
- lenIV = program.properties.privateData['lenIV'];
547
+ lenIV = program.properties.privateData["lenIV"];
544
548
  encoded = this.readCharStrings(data, lenIV);
545
549
  this.nextChar();
546
550
  token = this.getToken();
547
551
 
548
- if (token === 'noaccess') {
552
+ if (token === "noaccess") {
549
553
  this.getToken();
550
554
  }
551
555
 
552
556
  charstrings.push({
553
- glyph: glyph,
554
- encoded: encoded
557
+ glyph,
558
+ encoded
555
559
  });
556
560
  }
557
561
 
558
562
  break;
559
563
 
560
- case 'Subrs':
564
+ case "Subrs":
561
565
  this.readInt();
562
566
  this.getToken();
563
567
 
564
- while (this.getToken() === 'dup') {
568
+ while (this.getToken() === "dup") {
565
569
  var index = this.readInt();
566
570
  length = this.readInt();
567
571
  this.getToken();
568
572
  data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
569
- lenIV = program.properties.privateData['lenIV'];
573
+ lenIV = program.properties.privateData["lenIV"];
570
574
  encoded = this.readCharStrings(data, lenIV);
571
575
  this.nextChar();
572
576
  token = this.getToken();
573
577
 
574
- if (token === 'noaccess') {
578
+ if (token === "noaccess") {
575
579
  this.getToken();
576
580
  }
577
581
 
@@ -580,10 +584,10 @@ var Type1Parser = function Type1ParserClosure() {
580
584
 
581
585
  break;
582
586
 
583
- case 'BlueValues':
584
- case 'OtherBlues':
585
- case 'FamilyBlues':
586
- case 'FamilyOtherBlues':
587
+ case "BlueValues":
588
+ case "OtherBlues":
589
+ case "FamilyBlues":
590
+ case "FamilyOtherBlues":
587
591
  var blueArray = this.readNumberArray();
588
592
 
589
593
  if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {
@@ -592,26 +596,26 @@ var Type1Parser = function Type1ParserClosure() {
592
596
 
593
597
  break;
594
598
 
595
- case 'StemSnapH':
596
- case 'StemSnapV':
599
+ case "StemSnapH":
600
+ case "StemSnapV":
597
601
  program.properties.privateData[token] = this.readNumberArray();
598
602
  break;
599
603
 
600
- case 'StdHW':
601
- case 'StdVW':
604
+ case "StdHW":
605
+ case "StdVW":
602
606
  program.properties.privateData[token] = this.readNumberArray()[0];
603
607
  break;
604
608
 
605
- case 'BlueShift':
606
- case 'lenIV':
607
- case 'BlueFuzz':
608
- case 'BlueScale':
609
- case 'LanguageGroup':
610
- case 'ExpansionFactor':
609
+ case "BlueShift":
610
+ case "lenIV":
611
+ case "BlueFuzz":
612
+ case "BlueScale":
613
+ case "LanguageGroup":
614
+ case "ExpansionFactor":
611
615
  program.properties.privateData[token] = this.readNumber();
612
616
  break;
613
617
 
614
- case 'ForceBold':
618
+ case "ForceBold":
615
619
  program.properties.privateData[token] = this.readBoolean();
616
620
  break;
617
621
  }
@@ -628,19 +632,25 @@ var Type1Parser = function Type1ParserClosure() {
628
632
  output = [14];
629
633
  }
630
634
 
631
- program.charstrings.push({
635
+ const charStringObject = {
632
636
  glyphName: glyph,
633
637
  charstring: output,
634
638
  width: charString.width,
635
639
  lsb: charString.lsb,
636
640
  seac: charString.seac
637
- });
641
+ };
642
+
643
+ if (glyph === ".notdef") {
644
+ program.charstrings.unshift(charStringObject);
645
+ } else {
646
+ program.charstrings.push(charStringObject);
647
+ }
638
648
 
639
649
  if (properties.builtInEncoding) {
640
- var _index = properties.builtInEncoding.indexOf(glyph);
650
+ const index = properties.builtInEncoding.indexOf(glyph);
641
651
 
642
- if (_index > -1 && properties.widths[_index] === undefined && _index >= properties.firstChar && _index <= properties.lastChar) {
643
- properties.widths[_index] = charString.width;
652
+ if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {
653
+ properties.widths[index] = charString.width;
644
654
  }
645
655
  }
646
656
  }
@@ -651,19 +661,19 @@ var Type1Parser = function Type1ParserClosure() {
651
661
  var token;
652
662
 
653
663
  while ((token = this.getToken()) !== null) {
654
- if (token !== '/') {
664
+ if (token !== "/") {
655
665
  continue;
656
666
  }
657
667
 
658
668
  token = this.getToken();
659
669
 
660
670
  switch (token) {
661
- case 'FontMatrix':
671
+ case "FontMatrix":
662
672
  var matrix = this.readNumberArray();
663
673
  properties.fontMatrix = matrix;
664
674
  break;
665
675
 
666
- case 'Encoding':
676
+ case "Encoding":
667
677
  var encodingArg = this.getToken();
668
678
  var encoding;
669
679
 
@@ -677,7 +687,7 @@ var Type1Parser = function Type1ParserClosure() {
677
687
  for (var j = 0; j < size; j++) {
678
688
  token = this.getToken();
679
689
 
680
- while (token !== 'dup' && token !== 'def') {
690
+ while (token !== "dup" && token !== "def") {
681
691
  token = this.getToken();
682
692
 
683
693
  if (token === null) {
@@ -685,7 +695,7 @@ var Type1Parser = function Type1ParserClosure() {
685
695
  }
686
696
  }
687
697
 
688
- if (token === 'def') {
698
+ if (token === "def") {
689
699
  break;
690
700
  }
691
701
 
@@ -700,7 +710,7 @@ var Type1Parser = function Type1ParserClosure() {
700
710
  properties.builtInEncoding = encoding;
701
711
  break;
702
712
 
703
- case 'FontBBox':
713
+ case "FontBBox":
704
714
  var fontBBox = this.readNumberArray();
705
715
  properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
706
716
  properties.descent = Math.min(fontBBox[1], fontBBox[3]);