pdfjs-dist 2.1.266 → 2.5.207
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +750 -899
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +40 -37
- package/lib/pdf.js +226 -59
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
package/lib/core/type1_parser.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -26,31 +26,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
26
26
|
});
|
27
27
|
exports.Type1Parser = void 0;
|
28
28
|
|
29
|
-
var
|
29
|
+
var _encodings = require("./encodings.js");
|
30
30
|
|
31
|
-
var
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
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 &
|
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
|
}();
|
@@ -402,17 +406,17 @@ var Type1Parser = function Type1ParserClosure() {
|
|
402
406
|
}
|
403
407
|
}
|
404
408
|
|
405
|
-
return
|
409
|
+
return decrypted.slice(discardNumber, j);
|
406
410
|
}
|
407
411
|
|
408
412
|
function isSpecial(c) {
|
409
|
-
return c ===
|
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) {
|
413
417
|
if (encrypted) {
|
414
418
|
var data = stream.getBytes();
|
415
|
-
var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]));
|
419
|
+
var isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));
|
416
420
|
stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));
|
417
421
|
}
|
418
422
|
|
@@ -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 ===
|
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 ===
|
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 ===
|
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,
|
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,
|
492
|
+
} while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));
|
489
493
|
|
490
494
|
return token;
|
491
495
|
},
|
@@ -496,30 +500,30 @@ var Type1Parser = function Type1ParserClosure() {
|
|
496
500
|
|
497
501
|
return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);
|
498
502
|
},
|
499
|
-
extractFontProgram: function Type1Parser_extractFontProgram() {
|
503
|
+
extractFontProgram: function Type1Parser_extractFontProgram(properties) {
|
500
504
|
var stream = this.stream;
|
501
505
|
var subrs = [],
|
502
506
|
charstrings = [];
|
503
507
|
var privateData = Object.create(null);
|
504
|
-
privateData
|
508
|
+
privateData.lenIV = 4;
|
505
509
|
var program = {
|
506
510
|
subrs: [],
|
507
511
|
charstrings: [],
|
508
512
|
properties: {
|
509
|
-
|
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
|
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 ===
|
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
|
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 ===
|
552
|
+
if (token === "noaccess") {
|
549
553
|
this.getToken();
|
550
554
|
}
|
551
555
|
|
552
556
|
charstrings.push({
|
553
|
-
glyph
|
554
|
-
encoded
|
557
|
+
glyph,
|
558
|
+
encoded
|
555
559
|
});
|
556
560
|
}
|
557
561
|
|
558
562
|
break;
|
559
563
|
|
560
|
-
case
|
564
|
+
case "Subrs":
|
561
565
|
this.readInt();
|
562
566
|
this.getToken();
|
563
567
|
|
564
|
-
while (this.getToken() ===
|
565
|
-
|
568
|
+
while (this.getToken() === "dup") {
|
569
|
+
const 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
|
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 ===
|
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
|
584
|
-
case
|
585
|
-
case
|
586
|
-
case
|
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
|
596
|
-
case
|
599
|
+
case "StemSnapH":
|
600
|
+
case "StemSnapV":
|
597
601
|
program.properties.privateData[token] = this.readNumberArray();
|
598
602
|
break;
|
599
603
|
|
600
|
-
case
|
601
|
-
case
|
604
|
+
case "StdHW":
|
605
|
+
case "StdVW":
|
602
606
|
program.properties.privateData[token] = this.readNumberArray()[0];
|
603
607
|
break;
|
604
608
|
|
605
|
-
case
|
606
|
-
case
|
607
|
-
case
|
608
|
-
case
|
609
|
-
case
|
610
|
-
case
|
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
|
618
|
+
case "ForceBold":
|
615
619
|
program.properties.privateData[token] = this.readBoolean();
|
616
620
|
break;
|
617
621
|
}
|
@@ -628,13 +632,27 @@ var Type1Parser = function Type1ParserClosure() {
|
|
628
632
|
output = [14];
|
629
633
|
}
|
630
634
|
|
631
|
-
|
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
|
+
}
|
648
|
+
|
649
|
+
if (properties.builtInEncoding) {
|
650
|
+
const index = properties.builtInEncoding.indexOf(glyph);
|
651
|
+
|
652
|
+
if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {
|
653
|
+
properties.widths[index] = charString.width;
|
654
|
+
}
|
655
|
+
}
|
638
656
|
}
|
639
657
|
|
640
658
|
return program;
|
@@ -643,19 +661,19 @@ var Type1Parser = function Type1ParserClosure() {
|
|
643
661
|
var token;
|
644
662
|
|
645
663
|
while ((token = this.getToken()) !== null) {
|
646
|
-
if (token !==
|
664
|
+
if (token !== "/") {
|
647
665
|
continue;
|
648
666
|
}
|
649
667
|
|
650
668
|
token = this.getToken();
|
651
669
|
|
652
670
|
switch (token) {
|
653
|
-
case
|
671
|
+
case "FontMatrix":
|
654
672
|
var matrix = this.readNumberArray();
|
655
673
|
properties.fontMatrix = matrix;
|
656
674
|
break;
|
657
675
|
|
658
|
-
case
|
676
|
+
case "Encoding":
|
659
677
|
var encodingArg = this.getToken();
|
660
678
|
var encoding;
|
661
679
|
|
@@ -669,7 +687,7 @@ var Type1Parser = function Type1ParserClosure() {
|
|
669
687
|
for (var j = 0; j < size; j++) {
|
670
688
|
token = this.getToken();
|
671
689
|
|
672
|
-
while (token !==
|
690
|
+
while (token !== "dup" && token !== "def") {
|
673
691
|
token = this.getToken();
|
674
692
|
|
675
693
|
if (token === null) {
|
@@ -677,7 +695,7 @@ var Type1Parser = function Type1ParserClosure() {
|
|
677
695
|
}
|
678
696
|
}
|
679
697
|
|
680
|
-
if (token ===
|
698
|
+
if (token === "def") {
|
681
699
|
break;
|
682
700
|
}
|
683
701
|
|
@@ -692,7 +710,7 @@ var Type1Parser = function Type1ParserClosure() {
|
|
692
710
|
properties.builtInEncoding = encoding;
|
693
711
|
break;
|
694
712
|
|
695
|
-
case
|
713
|
+
case "FontBBox":
|
696
714
|
var fontBBox = this.readNumberArray();
|
697
715
|
properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
|
698
716
|
properties.descent = Math.min(fontBBox[1], fontBBox[3]);
|