pdf-parser.js 5.2.26 → 5.2.28
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.
- package/dist/{afm-widths-BYiX2L9D.cjs → afm-widths-BHD2HZIL.cjs} +553 -642
- package/dist/{afm-widths-blUDDjlI.js → afm-widths-B_IGbGky.js} +553 -642
- package/dist/afm-widths.cjs +1 -1
- package/dist/afm-widths.js +1 -1
- package/dist/annotations.cjs +5 -3
- package/dist/annotations.d.cts +2 -2
- package/dist/annotations.d.ts +2 -2
- package/dist/annotations.js +5 -3
- package/dist/attachments.d.cts +2 -2
- package/dist/attachments.d.ts +2 -2
- package/dist/builtin-encoding.cjs +17 -6
- package/dist/builtin-encoding.js +17 -6
- package/dist/bytes/crc32.cjs +5 -3
- package/dist/bytes/crc32.js +5 -3
- package/dist/bytes/flate.cjs +0 -1
- package/dist/bytes/flate.js +0 -1
- package/dist/cff-bounds.cjs +73 -45
- package/dist/cff-bounds.js +73 -45
- package/dist/cff.cjs +13 -6
- package/dist/cff.js +13 -6
- package/dist/cmap-table.cjs +54 -26
- package/dist/cmap-table.js +54 -26
- package/dist/cmap.cjs +5 -3
- package/dist/cmap.js +5 -3
- package/dist/content-read.d.cts +1 -1
- package/dist/content-read.d.ts +1 -1
- package/dist/content-write.cjs +21 -14
- package/dist/content-write.d.cts +2 -2
- package/dist/content-write.d.ts +2 -2
- package/dist/content-write.js +21 -14
- package/dist/crypto/aes.cjs +76 -55
- package/dist/crypto/aes.js +76 -55
- package/dist/crypto/md5.cjs +345 -149
- package/dist/crypto/md5.js +345 -149
- package/dist/crypto/rc4.cjs +5 -4
- package/dist/crypto/rc4.js +5 -4
- package/dist/crypto/sha2.cjs +92 -43
- package/dist/crypto/sha2.js +92 -43
- package/dist/document.cjs +17 -11
- package/dist/document.d.cts +1 -1
- package/dist/document.d.ts +1 -1
- package/dist/document.js +17 -11
- package/dist/{embedded-font-Bnhh4juV.d.ts → embedded-font-ByD7ZiQS.d.ts} +1 -1
- package/dist/{embedded-font-CEf-zBCA.d.cts → embedded-font-DgVBedw6.d.cts} +1 -1
- package/dist/embedded-font-write.d.cts +2 -2
- package/dist/embedded-font-write.d.ts +2 -2
- package/dist/embedded-font.cjs +4 -2
- package/dist/embedded-font.d.cts +1 -1
- package/dist/embedded-font.d.ts +1 -1
- package/dist/embedded-font.js +4 -2
- package/dist/encoding.cjs +1 -1
- package/dist/encoding.js +1 -1
- package/dist/encrypt-write.cjs +25 -21
- package/dist/encrypt-write.d.cts +1 -1
- package/dist/encrypt-write.d.ts +1 -1
- package/dist/encrypt-write.js +25 -21
- package/dist/encrypt.cjs +43 -64
- package/dist/encrypt.d.cts +1 -1
- package/dist/encrypt.d.ts +1 -1
- package/dist/encrypt.js +43 -64
- package/dist/filters.cjs +46 -26
- package/dist/filters.d.cts +1 -1
- package/dist/filters.d.ts +1 -1
- package/dist/filters.js +46 -26
- package/dist/font-face.cjs +2 -1
- package/dist/font-face.js +2 -1
- package/dist/font-read.cjs +12 -6
- package/dist/font-read.d.cts +1 -1
- package/dist/font-read.d.ts +1 -1
- package/dist/font-read.js +12 -6
- package/dist/font-registry.d.cts +3 -3
- package/dist/font-registry.d.ts +3 -3
- package/dist/font-tables.cjs +55 -28
- package/dist/font-tables.js +55 -28
- package/dist/form.cjs +13 -8
- package/dist/form.d.cts +2 -2
- package/dist/form.d.ts +2 -2
- package/dist/form.js +13 -8
- package/dist/gdef-table.cjs +6 -3
- package/dist/gdef-table.js +6 -3
- package/dist/{glyf-contours-C0epBNqP.d.ts → glyf-contours-B1PsI9oA.d.ts} +1 -1
- package/dist/{glyf-contours-BRpvd0rt.d.cts → glyf-contours-NHBpgks-.d.cts} +1 -1
- package/dist/glyf-contours.cjs +3 -1
- package/dist/glyf-contours.d.cts +1 -1
- package/dist/glyf-contours.d.ts +1 -1
- package/dist/glyf-contours.js +3 -1
- package/dist/glyf.cjs +22 -11
- package/dist/glyf.js +22 -11
- package/dist/gpos-table.cjs +37 -19
- package/dist/gpos-table.js +37 -19
- package/dist/gsub-table.cjs +40 -25
- package/dist/gsub-table.js +40 -25
- package/dist/hmtx-table.cjs +5 -3
- package/dist/hmtx-table.js +5 -3
- package/dist/image/ccitt-encode.cjs +8 -5
- package/dist/image/ccitt-encode.js +8 -5
- package/dist/image/ccitt.cjs +801 -209
- package/dist/image/ccitt.js +801 -209
- package/dist/image/jbig2-arith.cjs +340 -306
- package/dist/image/jbig2-arith.js +340 -306
- package/dist/image/jbig2-bitmap.cjs +8 -5
- package/dist/image/jbig2-bitmap.js +8 -5
- package/dist/image/jbig2-generic.cjs +240 -69
- package/dist/image/jbig2-generic.js +240 -69
- package/dist/image/jbig2-text.cjs +4 -2
- package/dist/image/jbig2-text.js +4 -2
- package/dist/image/jbig2.cjs +69 -31
- package/dist/image/jbig2.js +69 -31
- package/dist/image/jp2-boxes.cjs +52 -27
- package/dist/image/jp2-boxes.js +52 -27
- package/dist/image/jpeg-info.cjs +29 -24
- package/dist/image/jpeg-info.js +29 -24
- package/dist/image/jpeg2000-codestream.cjs +61 -32
- package/dist/image/jpeg2000-codestream.js +61 -32
- package/dist/image/jpeg2000-dwt.cjs +2 -1
- package/dist/image/jpeg2000-dwt.js +2 -1
- package/dist/image/jpeg2000-t1.cjs +21 -11
- package/dist/image/jpeg2000-t1.js +21 -11
- package/dist/image/jpeg2000-t2.cjs +12 -5
- package/dist/image/jpeg2000-t2.js +12 -5
- package/dist/image/jpeg2000-tagtree.cjs +8 -4
- package/dist/image/jpeg2000-tagtree.js +8 -4
- package/dist/image/jpeg2000.cjs +11 -6
- package/dist/image/jpeg2000.js +11 -6
- package/dist/image/png-decode.cjs +62 -39
- package/dist/image/png-decode.d.cts +3 -2
- package/dist/image/png-decode.d.ts +3 -2
- package/dist/image/png-decode.js +62 -39
- package/dist/image/png-filter.cjs +23 -15
- package/dist/image/png-filter.js +23 -15
- package/dist/images-read.cjs +41 -36
- package/dist/images-read.d.cts +2 -2
- package/dist/images-read.d.ts +2 -2
- package/dist/images-read.js +41 -36
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/interpret.cjs +68 -40
- package/dist/interpret.d.cts +1 -1
- package/dist/interpret.d.ts +1 -1
- package/dist/interpret.js +68 -40
- package/dist/lexer.cjs +86 -51
- package/dist/lexer.js +86 -51
- package/dist/math-content-write.cjs +9 -5
- package/dist/math-content-write.js +9 -5
- package/dist/math-font-write.cjs +2 -1
- package/dist/math-font-write.d.cts +1 -1
- package/dist/math-font-write.d.ts +1 -1
- package/dist/math-font-write.js +2 -1
- package/dist/math-font.cjs +16 -7
- package/dist/math-font.js +16 -7
- package/dist/math-table.cjs +25 -13
- package/dist/math-table.js +25 -13
- package/dist/matrix.cjs +3 -2
- package/dist/matrix.js +3 -2
- package/dist/measure.cjs +1 -1
- package/dist/measure.js +1 -1
- package/dist/names.cjs +7 -7
- package/dist/names.d.cts +2 -2
- package/dist/names.d.ts +2 -2
- package/dist/names.js +7 -7
- package/dist/navigation.cjs +16 -12
- package/dist/navigation.d.cts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/navigation.js +16 -12
- package/dist/{objects-B7HdMeWS.d.cts → objects-e2RS3-yT.d.cts} +3 -3
- package/dist/{objects-B7HdMeWS.d.ts → objects-e2RS3-yT.d.ts} +3 -3
- package/dist/objects.d.cts +1 -1
- package/dist/objects.d.ts +1 -1
- package/dist/optional-content.d.cts +2 -2
- package/dist/optional-content.d.ts +2 -2
- package/dist/ot-layout-common.cjs +22 -15
- package/dist/ot-layout-common.js +22 -15
- package/dist/parse.cjs +7 -5
- package/dist/parse.d.cts +1 -1
- package/dist/parse.d.ts +1 -1
- package/dist/parse.js +7 -5
- package/dist/pdf-text.cjs +5 -2
- package/dist/pdf-text.js +5 -2
- package/dist/predictors.cjs +14 -9
- package/dist/predictors.d.cts +1 -1
- package/dist/predictors.d.ts +1 -1
- package/dist/predictors.js +14 -9
- package/dist/raster.cjs +30 -19
- package/dist/raster.d.cts +8 -8
- package/dist/raster.d.ts +8 -8
- package/dist/raster.js +30 -19
- package/dist/read.cjs +29 -16
- package/dist/read.js +29 -16
- package/dist/serialize.cjs +6 -2
- package/dist/serialize.d.cts +1 -1
- package/dist/serialize.d.ts +1 -1
- package/dist/serialize.js +6 -2
- package/dist/sfnt-subset.cjs +25 -13
- package/dist/sfnt-subset.d.cts +1 -1
- package/dist/sfnt-subset.d.ts +1 -1
- package/dist/sfnt-subset.js +25 -13
- package/dist/sfnt.cjs +20 -10
- package/dist/sfnt.js +20 -10
- package/dist/structure.d.cts +2 -2
- package/dist/structure.d.ts +2 -2
- package/dist/text-group.cjs +0 -1
- package/dist/text-group.js +0 -1
- package/dist/text-layout.d.cts +1 -1
- package/dist/text-layout.d.ts +1 -1
- package/dist/tounicode.cjs +4 -2
- package/dist/tounicode.d.cts +1 -1
- package/dist/tounicode.d.ts +1 -1
- package/dist/tounicode.js +4 -2
- package/dist/winansi.cjs +1 -1
- package/dist/winansi.js +1 -1
- package/dist/write.cjs +20 -12
- package/dist/write.d.cts +1 -1
- package/dist/write.d.ts +1 -1
- package/dist/write.js +20 -12
- package/dist/xref.cjs +5 -2
- package/dist/xref.d.cts +1 -1
- package/dist/xref.d.ts +1 -1
- package/dist/xref.js +5 -2
- package/package.json +1 -1
package/dist/afm-widths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_afm_widths = require("./afm-widths-
|
|
2
|
+
const require_afm_widths = require("./afm-widths-BHD2HZIL.cjs");
|
|
3
3
|
exports.STANDARD_METRICS = require_afm_widths.STANDARD_METRICS;
|
|
4
4
|
exports.widthOfCode = require_afm_widths.widthOfCode;
|
package/dist/afm-widths.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as widthOfCode, t as STANDARD_METRICS } from "./afm-widths-
|
|
1
|
+
import { n as widthOfCode, t as STANDARD_METRICS } from "./afm-widths-B_IGbGky.js";
|
|
2
2
|
export { STANDARD_METRICS, widthOfCode };
|
package/dist/annotations.cjs
CHANGED
|
@@ -74,11 +74,13 @@ function annotString(annot, key) {
|
|
|
74
74
|
const obj = require_objects.dictGet(annot, key);
|
|
75
75
|
return obj?.kind === "string" ? require_pdf_text.decodePdfString(obj.bytes) : void 0;
|
|
76
76
|
}
|
|
77
|
+
const QUAD_POINT_COORDINATES_PER_QUAD = 8;
|
|
78
|
+
const QUAD_POINT_LAST_CORNER_INDEX = 3;
|
|
77
79
|
function markupFields(annot, pageMatrix) {
|
|
78
80
|
const quadPoints = require_objects.asArray(require_objects.dictGet(annot, "QuadPoints"));
|
|
79
|
-
if (quadPoints === void 0 || quadPoints.length <
|
|
81
|
+
if (quadPoints === void 0 || quadPoints.length < QUAD_POINT_COORDINATES_PER_QUAD || quadPoints.length % QUAD_POINT_COORDINATES_PER_QUAD !== 0) return {};
|
|
80
82
|
const quads = [];
|
|
81
|
-
for (let i = 0; i < quadPoints.length; i +=
|
|
83
|
+
for (let i = 0; i < quadPoints.length; i += QUAD_POINT_COORDINATES_PER_QUAD) {
|
|
82
84
|
const corner = (index) => {
|
|
83
85
|
const x = require_objects.asNumber(quadPoints[i + index * 2]) ?? 0;
|
|
84
86
|
const y = require_objects.asNumber(quadPoints[i + index * 2 + 1]) ?? 0;
|
|
@@ -95,7 +97,7 @@ function markupFields(annot, pageMatrix) {
|
|
|
95
97
|
corner(0),
|
|
96
98
|
corner(1),
|
|
97
99
|
corner(2),
|
|
98
|
-
corner(
|
|
100
|
+
corner(QUAD_POINT_LAST_CORNER_INDEX)
|
|
99
101
|
]);
|
|
100
102
|
}
|
|
101
103
|
return { quads };
|
package/dist/annotations.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PdfDiagnosticSink } from "./diagnostics.cjs";
|
|
2
2
|
import { r as Matrix } from "./matrix-B7_SBKQ5.cjs";
|
|
3
|
-
import { n as PdfDict } from "./objects-
|
|
3
|
+
import { n as PdfDict } from "./objects-e2RS3-yT.cjs";
|
|
4
4
|
import { PdfObjectResolver } from "./interpret.cjs";
|
|
5
5
|
import { LayoutAnnotation } from "./layout.cjs";
|
|
6
6
|
//#region src/annotations.d.ts
|
|
7
|
-
declare function readPageAnnotations(page: PdfDict, pageMatrix: Matrix, resolver: PdfObjectResolver
|
|
7
|
+
declare function readPageAnnotations(page: PdfDict, pageMatrix: Matrix, resolver: Readonly<PdfObjectResolver>, sink: PdfDiagnosticSink): LayoutAnnotation[];
|
|
8
8
|
//#endregion
|
|
9
9
|
export { readPageAnnotations };
|
package/dist/annotations.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PdfDiagnosticSink } from "./diagnostics.js";
|
|
2
2
|
import { r as Matrix } from "./matrix-B7_SBKQ5.js";
|
|
3
|
-
import { n as PdfDict } from "./objects-
|
|
3
|
+
import { n as PdfDict } from "./objects-e2RS3-yT.js";
|
|
4
4
|
import { PdfObjectResolver } from "./interpret.js";
|
|
5
5
|
import { LayoutAnnotation } from "./layout.js";
|
|
6
6
|
//#region src/annotations.d.ts
|
|
7
|
-
declare function readPageAnnotations(page: PdfDict, pageMatrix: Matrix, resolver: PdfObjectResolver
|
|
7
|
+
declare function readPageAnnotations(page: PdfDict, pageMatrix: Matrix, resolver: Readonly<PdfObjectResolver>, sink: PdfDiagnosticSink): LayoutAnnotation[];
|
|
8
8
|
//#endregion
|
|
9
9
|
export { readPageAnnotations };
|
package/dist/annotations.js
CHANGED
|
@@ -73,11 +73,13 @@ function annotString(annot, key) {
|
|
|
73
73
|
const obj = dictGet(annot, key);
|
|
74
74
|
return obj?.kind === "string" ? decodePdfString(obj.bytes) : void 0;
|
|
75
75
|
}
|
|
76
|
+
const QUAD_POINT_COORDINATES_PER_QUAD = 8;
|
|
77
|
+
const QUAD_POINT_LAST_CORNER_INDEX = 3;
|
|
76
78
|
function markupFields(annot, pageMatrix) {
|
|
77
79
|
const quadPoints = asArray(dictGet(annot, "QuadPoints"));
|
|
78
|
-
if (quadPoints === void 0 || quadPoints.length <
|
|
80
|
+
if (quadPoints === void 0 || quadPoints.length < QUAD_POINT_COORDINATES_PER_QUAD || quadPoints.length % QUAD_POINT_COORDINATES_PER_QUAD !== 0) return {};
|
|
79
81
|
const quads = [];
|
|
80
|
-
for (let i = 0; i < quadPoints.length; i +=
|
|
82
|
+
for (let i = 0; i < quadPoints.length; i += QUAD_POINT_COORDINATES_PER_QUAD) {
|
|
81
83
|
const corner = (index) => {
|
|
82
84
|
const x = asNumber(quadPoints[i + index * 2]) ?? 0;
|
|
83
85
|
const y = asNumber(quadPoints[i + index * 2 + 1]) ?? 0;
|
|
@@ -94,7 +96,7 @@ function markupFields(annot, pageMatrix) {
|
|
|
94
96
|
corner(0),
|
|
95
97
|
corner(1),
|
|
96
98
|
corner(2),
|
|
97
|
-
corner(
|
|
99
|
+
corner(QUAD_POINT_LAST_CORNER_INDEX)
|
|
98
100
|
]);
|
|
99
101
|
}
|
|
100
102
|
return { quads };
|
package/dist/attachments.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PdfDiagnosticSink } from "./diagnostics.cjs";
|
|
2
|
-
import { n as PdfDict } from "./objects-
|
|
2
|
+
import { n as PdfDict } from "./objects-e2RS3-yT.cjs";
|
|
3
3
|
import { PdfObjectResolver } from "./interpret.cjs";
|
|
4
4
|
import { LayoutAttachment } from "./layout.cjs";
|
|
5
5
|
//#region src/attachments.d.ts
|
|
6
|
-
declare function readAttachments(catalog: PdfDict, pages: readonly PdfDict[], resolver: PdfObjectResolver
|
|
6
|
+
declare function readAttachments(catalog: PdfDict, pages: readonly PdfDict[], resolver: Readonly<PdfObjectResolver>, sink: PdfDiagnosticSink): LayoutAttachment[];
|
|
7
7
|
//#endregion
|
|
8
8
|
export { readAttachments };
|
package/dist/attachments.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PdfDiagnosticSink } from "./diagnostics.js";
|
|
2
|
-
import { n as PdfDict } from "./objects-
|
|
2
|
+
import { n as PdfDict } from "./objects-e2RS3-yT.js";
|
|
3
3
|
import { PdfObjectResolver } from "./interpret.js";
|
|
4
4
|
import { LayoutAttachment } from "./layout.js";
|
|
5
5
|
//#region src/attachments.d.ts
|
|
6
|
-
declare function readAttachments(catalog: PdfDict, pages: readonly PdfDict[], resolver: PdfObjectResolver
|
|
6
|
+
declare function readAttachments(catalog: PdfDict, pages: readonly PdfDict[], resolver: Readonly<PdfObjectResolver>, sink: PdfDiagnosticSink): LayoutAttachment[];
|
|
7
7
|
//#endregion
|
|
8
8
|
export { readAttachments };
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_afm_widths = require("./afm-widths-
|
|
2
|
+
const require_afm_widths = require("./afm-widths-BHD2HZIL.cjs");
|
|
3
3
|
const require_sfnt = require("./sfnt.cjs");
|
|
4
4
|
const require_cff = require("./cff.cjs");
|
|
5
5
|
const require_cmap_table = require("./cmap-table.cjs");
|
|
6
6
|
const require_font_tables = require("./font-tables.cjs");
|
|
7
7
|
//#region src/builtin-encoding.ts
|
|
8
|
+
const PRIVATE_USE_BMP_START = 57344;
|
|
9
|
+
const PRIVATE_USE_BMP_END = 63743;
|
|
10
|
+
const PRIVATE_USE_PLANE_A_START = 983040;
|
|
11
|
+
const PRIVATE_USE_PLANE_A_END = 1048573;
|
|
12
|
+
const PRIVATE_USE_PLANE_B_START = 1048576;
|
|
13
|
+
const PRIVATE_USE_PLANE_B_END = 1114109;
|
|
8
14
|
function isPrivateUse(codePoint) {
|
|
9
|
-
return codePoint >=
|
|
15
|
+
return codePoint >= PRIVATE_USE_BMP_START && codePoint <= PRIVATE_USE_BMP_END || codePoint >= PRIVATE_USE_PLANE_A_START && codePoint <= PRIVATE_USE_PLANE_A_END || codePoint >= PRIVATE_USE_PLANE_B_START && codePoint <= PRIVATE_USE_PLANE_B_END;
|
|
10
16
|
}
|
|
11
17
|
function encodingFromSources(sources) {
|
|
12
18
|
const { codeToGlyphId, codeToName, glyphIdToName, glyphIdToUnicode } = sources;
|
|
@@ -29,11 +35,15 @@ function encodingFromSources(sources) {
|
|
|
29
35
|
} : void 0;
|
|
30
36
|
}
|
|
31
37
|
const SYMBOL_CMAP_CODE_BASE = 61440;
|
|
38
|
+
const CMAP_PLATFORM_MICROSOFT = 3;
|
|
39
|
+
const CMAP_MICROSOFT_ENCODING_SYMBOL = 0;
|
|
40
|
+
const CMAP_MICROSOFT_ENCODING_UNICODE_FULL_REPERTOIRE = 10;
|
|
41
|
+
const CMAP_MICROSOFT_ENCODING_UNICODE_BMP = 1;
|
|
32
42
|
function symbolSubtable(subtables) {
|
|
33
|
-
return subtables.find((s) => s.platformId ===
|
|
43
|
+
return subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_SYMBOL) ?? subtables.find((s) => s.platformId === 1 && s.encodingId === 0);
|
|
34
44
|
}
|
|
35
45
|
function unicodeSubtable(subtables) {
|
|
36
|
-
return subtables.find((s) => s.platformId ===
|
|
46
|
+
return subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_UNICODE_FULL_REPERTOIRE) ?? subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_UNICODE_BMP) ?? subtables.find((s) => s.platformId === 0);
|
|
37
47
|
}
|
|
38
48
|
function invertUnicodeSubtable(subtable) {
|
|
39
49
|
let inverse;
|
|
@@ -64,6 +74,7 @@ const CFF_PREDEFINED_CHARSET_ISO_ADOBE = 0;
|
|
|
64
74
|
const CFF_PREDEFINED_ENCODING_STANDARD = 0;
|
|
65
75
|
const CFF_ENCODING_FORMAT_MASK = 127;
|
|
66
76
|
const CFF_ENCODING_SUPPLEMENT_FLAG = 128;
|
|
77
|
+
const CFF_ENCODING_SUPPLEMENT_RECORD_SIZE = 3;
|
|
67
78
|
function readCffCharset(bytes, offset, glyphCount) {
|
|
68
79
|
const sidByGlyph = /* @__PURE__ */ new Map();
|
|
69
80
|
if (offset === CFF_PREDEFINED_CHARSET_ISO_ADOBE) {
|
|
@@ -131,10 +142,10 @@ function readCffEncoding(bytes, offset, glyphCount, glyphBySid) {
|
|
|
131
142
|
const nSups = require_sfnt.u8(bytes, cursor);
|
|
132
143
|
cursor += 1;
|
|
133
144
|
for (let i = 0; i < nSups; i++) {
|
|
134
|
-
if (!require_sfnt.hasBytes(bytes, cursor,
|
|
145
|
+
if (!require_sfnt.hasBytes(bytes, cursor, CFF_ENCODING_SUPPLEMENT_RECORD_SIZE)) return glyphByCode;
|
|
135
146
|
const glyphId = glyphBySid.get(require_sfnt.u16(bytes, cursor + 1));
|
|
136
147
|
if (glyphId !== void 0) glyphByCode.set(require_sfnt.u8(bytes, cursor), glyphId);
|
|
137
|
-
cursor +=
|
|
148
|
+
cursor += CFF_ENCODING_SUPPLEMENT_RECORD_SIZE;
|
|
138
149
|
}
|
|
139
150
|
}
|
|
140
151
|
return glyphByCode;
|
package/dist/builtin-encoding.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { c as glyphNameToUnicode, d as standardGlyphName } from "./afm-widths-
|
|
1
|
+
import { c as glyphNameToUnicode, d as standardGlyphName } from "./afm-widths-B_IGbGky.js";
|
|
2
2
|
import { hasBytes, parseSfnt, sfntTableBytes, u16, u8 } from "./sfnt.js";
|
|
3
3
|
import { cffStringForSid, parseCffDict, readCffIndex } from "./cff.js";
|
|
4
4
|
import { readCmapSubtables } from "./cmap-table.js";
|
|
5
5
|
import { parsePostGlyphNames } from "./font-tables.js";
|
|
6
6
|
//#region src/builtin-encoding.ts
|
|
7
|
+
const PRIVATE_USE_BMP_START = 57344;
|
|
8
|
+
const PRIVATE_USE_BMP_END = 63743;
|
|
9
|
+
const PRIVATE_USE_PLANE_A_START = 983040;
|
|
10
|
+
const PRIVATE_USE_PLANE_A_END = 1048573;
|
|
11
|
+
const PRIVATE_USE_PLANE_B_START = 1048576;
|
|
12
|
+
const PRIVATE_USE_PLANE_B_END = 1114109;
|
|
7
13
|
function isPrivateUse(codePoint) {
|
|
8
|
-
return codePoint >=
|
|
14
|
+
return codePoint >= PRIVATE_USE_BMP_START && codePoint <= PRIVATE_USE_BMP_END || codePoint >= PRIVATE_USE_PLANE_A_START && codePoint <= PRIVATE_USE_PLANE_A_END || codePoint >= PRIVATE_USE_PLANE_B_START && codePoint <= PRIVATE_USE_PLANE_B_END;
|
|
9
15
|
}
|
|
10
16
|
function encodingFromSources(sources) {
|
|
11
17
|
const { codeToGlyphId, codeToName, glyphIdToName, glyphIdToUnicode } = sources;
|
|
@@ -28,11 +34,15 @@ function encodingFromSources(sources) {
|
|
|
28
34
|
} : void 0;
|
|
29
35
|
}
|
|
30
36
|
const SYMBOL_CMAP_CODE_BASE = 61440;
|
|
37
|
+
const CMAP_PLATFORM_MICROSOFT = 3;
|
|
38
|
+
const CMAP_MICROSOFT_ENCODING_SYMBOL = 0;
|
|
39
|
+
const CMAP_MICROSOFT_ENCODING_UNICODE_FULL_REPERTOIRE = 10;
|
|
40
|
+
const CMAP_MICROSOFT_ENCODING_UNICODE_BMP = 1;
|
|
31
41
|
function symbolSubtable(subtables) {
|
|
32
|
-
return subtables.find((s) => s.platformId ===
|
|
42
|
+
return subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_SYMBOL) ?? subtables.find((s) => s.platformId === 1 && s.encodingId === 0);
|
|
33
43
|
}
|
|
34
44
|
function unicodeSubtable(subtables) {
|
|
35
|
-
return subtables.find((s) => s.platformId ===
|
|
45
|
+
return subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_UNICODE_FULL_REPERTOIRE) ?? subtables.find((s) => s.platformId === CMAP_PLATFORM_MICROSOFT && s.encodingId === CMAP_MICROSOFT_ENCODING_UNICODE_BMP) ?? subtables.find((s) => s.platformId === 0);
|
|
36
46
|
}
|
|
37
47
|
function invertUnicodeSubtable(subtable) {
|
|
38
48
|
let inverse;
|
|
@@ -63,6 +73,7 @@ const CFF_PREDEFINED_CHARSET_ISO_ADOBE = 0;
|
|
|
63
73
|
const CFF_PREDEFINED_ENCODING_STANDARD = 0;
|
|
64
74
|
const CFF_ENCODING_FORMAT_MASK = 127;
|
|
65
75
|
const CFF_ENCODING_SUPPLEMENT_FLAG = 128;
|
|
76
|
+
const CFF_ENCODING_SUPPLEMENT_RECORD_SIZE = 3;
|
|
66
77
|
function readCffCharset(bytes, offset, glyphCount) {
|
|
67
78
|
const sidByGlyph = /* @__PURE__ */ new Map();
|
|
68
79
|
if (offset === CFF_PREDEFINED_CHARSET_ISO_ADOBE) {
|
|
@@ -130,10 +141,10 @@ function readCffEncoding(bytes, offset, glyphCount, glyphBySid) {
|
|
|
130
141
|
const nSups = u8(bytes, cursor);
|
|
131
142
|
cursor += 1;
|
|
132
143
|
for (let i = 0; i < nSups; i++) {
|
|
133
|
-
if (!hasBytes(bytes, cursor,
|
|
144
|
+
if (!hasBytes(bytes, cursor, CFF_ENCODING_SUPPLEMENT_RECORD_SIZE)) return glyphByCode;
|
|
134
145
|
const glyphId = glyphBySid.get(u16(bytes, cursor + 1));
|
|
135
146
|
if (glyphId !== void 0) glyphByCode.set(u8(bytes, cursor), glyphId);
|
|
136
|
-
cursor +=
|
|
147
|
+
cursor += CFF_ENCODING_SUPPLEMENT_RECORD_SIZE;
|
|
137
148
|
}
|
|
138
149
|
}
|
|
139
150
|
return glyphByCode;
|
package/dist/bytes/crc32.cjs
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const CRC32_POLYNOMIAL = 3988292384;
|
|
4
4
|
const BYTE_VALUES = 256;
|
|
5
5
|
const BITS_PER_BYTE = 8;
|
|
6
|
+
const BYTE_MASK = 255;
|
|
7
|
+
const CRC32_INVERT_MASK = 4294967295;
|
|
6
8
|
const CRC32_TABLE = (() => {
|
|
7
9
|
const table = new Uint32Array(BYTE_VALUES);
|
|
8
10
|
for (let n = 0; n < BYTE_VALUES; n++) {
|
|
@@ -13,9 +15,9 @@ const CRC32_TABLE = (() => {
|
|
|
13
15
|
return table;
|
|
14
16
|
})();
|
|
15
17
|
function crc32(bytes) {
|
|
16
|
-
let crc =
|
|
17
|
-
for (const byte of bytes) crc = CRC32_TABLE[(crc ^ byte) &
|
|
18
|
-
return (crc ^
|
|
18
|
+
let crc = CRC32_INVERT_MASK;
|
|
19
|
+
for (const byte of bytes) crc = CRC32_TABLE[(crc ^ byte) & BYTE_MASK] ^ crc >>> BITS_PER_BYTE;
|
|
20
|
+
return (crc ^ CRC32_INVERT_MASK) >>> 0;
|
|
19
21
|
}
|
|
20
22
|
//#endregion
|
|
21
23
|
exports.crc32 = crc32;
|
package/dist/bytes/crc32.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
const CRC32_POLYNOMIAL = 3988292384;
|
|
3
3
|
const BYTE_VALUES = 256;
|
|
4
4
|
const BITS_PER_BYTE = 8;
|
|
5
|
+
const BYTE_MASK = 255;
|
|
6
|
+
const CRC32_INVERT_MASK = 4294967295;
|
|
5
7
|
const CRC32_TABLE = (() => {
|
|
6
8
|
const table = new Uint32Array(BYTE_VALUES);
|
|
7
9
|
for (let n = 0; n < BYTE_VALUES; n++) {
|
|
@@ -12,9 +14,9 @@ const CRC32_TABLE = (() => {
|
|
|
12
14
|
return table;
|
|
13
15
|
})();
|
|
14
16
|
function crc32(bytes) {
|
|
15
|
-
let crc =
|
|
16
|
-
for (const byte of bytes) crc = CRC32_TABLE[(crc ^ byte) &
|
|
17
|
-
return (crc ^
|
|
17
|
+
let crc = CRC32_INVERT_MASK;
|
|
18
|
+
for (const byte of bytes) crc = CRC32_TABLE[(crc ^ byte) & BYTE_MASK] ^ crc >>> BITS_PER_BYTE;
|
|
19
|
+
return (crc ^ CRC32_INVERT_MASK) >>> 0;
|
|
18
20
|
}
|
|
19
21
|
//#endregion
|
|
20
22
|
export { crc32 };
|
package/dist/bytes/flate.cjs
CHANGED
|
@@ -2,7 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_bytes_writer = require("./writer.cjs");
|
|
3
3
|
const require_bytes_reader = require("./reader.cjs");
|
|
4
4
|
let fflate = require("fflate");
|
|
5
|
-
//#region src/bytes/flate.ts
|
|
6
5
|
const MAX_INFLATE_OUTPUT_BYTES = 536870912;
|
|
7
6
|
function deflate(data, level) {
|
|
8
7
|
return (0, fflate.zlibSync)(data, level === void 0 ? void 0 : { level });
|
package/dist/bytes/flate.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { concatBytes } from "./writer.js";
|
|
2
2
|
import { isAsciiWhitespace } from "./reader.js";
|
|
3
3
|
import { Unzlib, inflateSync, unzlibSync, zlibSync } from "fflate";
|
|
4
|
-
//#region src/bytes/flate.ts
|
|
5
4
|
const MAX_INFLATE_OUTPUT_BYTES = 536870912;
|
|
6
5
|
function deflate(data, level) {
|
|
7
6
|
return zlibSync(data, level === void 0 ? void 0 : { level });
|
package/dist/cff-bounds.cjs
CHANGED
|
@@ -17,6 +17,11 @@ const CS_OPERAND_MEDIUM_BIAS = 108;
|
|
|
17
17
|
const CS_OPERAND_MEDIUM_FIRST_BYTE_BIAS = 247;
|
|
18
18
|
const CS_OPERAND_NEGATIVE_MEDIUM_FIRST_BYTE_BIAS = 251;
|
|
19
19
|
const BYTE_RADIX = 256;
|
|
20
|
+
const INT16_SIGN_BIT = 32768;
|
|
21
|
+
const INT16_MODULUS = 65536;
|
|
22
|
+
const CS_OPERAND_INT16_TOTAL_LENGTH = 3;
|
|
23
|
+
const CS_OPERAND_FIXED_BYTE_LENGTH = 4;
|
|
24
|
+
const CS_OPERAND_FIXED_TOTAL_LENGTH = 5;
|
|
20
25
|
const FIXED_POINT_SCALE = 65536;
|
|
21
26
|
const OP_HSTEM = 1;
|
|
22
27
|
const OP_VSTEM = 3;
|
|
@@ -53,6 +58,13 @@ const SUBR_BIAS_MEDIUM = 1131;
|
|
|
53
58
|
const SUBR_BIAS_LARGE = 32768;
|
|
54
59
|
const HINT_MASK_BITS_PER_BYTE = 8;
|
|
55
60
|
const STEM_ARGS_PER_STEM = 2;
|
|
61
|
+
const CURVE_ARG_COUNT = 6;
|
|
62
|
+
const CURVE_DY2_OFFSET = 3;
|
|
63
|
+
const CURVE_DX3_OFFSET = 4;
|
|
64
|
+
const CURVE_DY3_OFFSET = 5;
|
|
65
|
+
const QUAD_CURVE_ARG_COUNT = 4;
|
|
66
|
+
const QUAD_CURVE_LAST_OFFSET = 3;
|
|
67
|
+
const QUAD_CURVE_WITH_EXTRA_ARG_COUNT = 5;
|
|
56
68
|
const MAX_OPERAND_STACK = 48;
|
|
57
69
|
const MAX_SUBR_DEPTH = 10;
|
|
58
70
|
const MAX_OPERATIONS_PER_GLYPH = 1e5;
|
|
@@ -62,28 +74,48 @@ function subrBias(count) {
|
|
|
62
74
|
if (count < SUBR_BIAS_MEDIUM_LIMIT) return SUBR_BIAS_MEDIUM;
|
|
63
75
|
return SUBR_BIAS_LARGE;
|
|
64
76
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
var BoundsBox = class {
|
|
78
|
+
minX = Infinity;
|
|
79
|
+
minY = Infinity;
|
|
80
|
+
maxX = -Infinity;
|
|
81
|
+
maxY = -Infinity;
|
|
82
|
+
drawn = false;
|
|
83
|
+
includePoint(x, y) {
|
|
84
|
+
this.minX = Math.min(this.minX, x);
|
|
85
|
+
this.minY = Math.min(this.minY, y);
|
|
86
|
+
this.maxX = Math.max(this.maxX, x);
|
|
87
|
+
this.maxY = Math.max(this.maxY, y);
|
|
88
|
+
this.drawn = true;
|
|
89
|
+
}
|
|
90
|
+
includeXExtent(value) {
|
|
91
|
+
this.minX = Math.min(this.minX, value);
|
|
92
|
+
this.maxX = Math.max(this.maxX, value);
|
|
93
|
+
}
|
|
94
|
+
includeYExtent(value) {
|
|
95
|
+
this.minY = Math.min(this.minY, value);
|
|
96
|
+
this.maxY = Math.max(this.maxY, value);
|
|
97
|
+
}
|
|
98
|
+
markDrawn() {
|
|
99
|
+
this.drawn = true;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const CUBIC_BERNSTEIN_COEFFICIENT = 3;
|
|
103
|
+
const QUADRATIC_FORMULA_COEFFICIENT = 4;
|
|
72
104
|
function cubicAt(p0, p1, p2, p3, t) {
|
|
73
105
|
const s = 1 - t;
|
|
74
|
-
return s * s * s * p0 +
|
|
106
|
+
return s * s * s * p0 + CUBIC_BERNSTEIN_COEFFICIENT * s * s * t * p1 + CUBIC_BERNSTEIN_COEFFICIENT * s * t * t * p2 + t * t * t * p3;
|
|
75
107
|
}
|
|
76
108
|
function includeCubicAxis(p0, p1, p2, p3, apply) {
|
|
77
109
|
apply(p0);
|
|
78
110
|
apply(p3);
|
|
79
|
-
const a = -p0 +
|
|
111
|
+
const a = -p0 + CUBIC_BERNSTEIN_COEFFICIENT * p1 - CUBIC_BERNSTEIN_COEFFICIENT * p2 + p3;
|
|
80
112
|
const b = 2 * (p0 - 2 * p1 + p2);
|
|
81
113
|
const c = p1 - p0;
|
|
82
114
|
const roots = [];
|
|
83
115
|
if (a === 0) {
|
|
84
116
|
if (b !== 0) roots.push(-c / b);
|
|
85
117
|
} else {
|
|
86
|
-
const discriminant = b * b -
|
|
118
|
+
const discriminant = b * b - QUADRATIC_FORMULA_COEFFICIENT * a * c;
|
|
87
119
|
if (discriminant >= 0) {
|
|
88
120
|
const root = Math.sqrt(discriminant);
|
|
89
121
|
roots.push((-b + root) / (2 * a), (-b - root) / (2 * a));
|
|
@@ -93,14 +125,12 @@ function includeCubicAxis(p0, p1, p2, p3, apply) {
|
|
|
93
125
|
}
|
|
94
126
|
function includeCubic(box, x0, y0, x1, y1, x2, y2, x3, y3) {
|
|
95
127
|
includeCubicAxis(x0, x1, x2, x3, (value) => {
|
|
96
|
-
box.
|
|
97
|
-
box.maxX = Math.max(box.maxX, value);
|
|
128
|
+
box.includeXExtent(value);
|
|
98
129
|
});
|
|
99
130
|
includeCubicAxis(y0, y1, y2, y3, (value) => {
|
|
100
|
-
box.
|
|
101
|
-
box.maxY = Math.max(box.maxY, value);
|
|
131
|
+
box.includeYExtent(value);
|
|
102
132
|
});
|
|
103
|
-
box.
|
|
133
|
+
box.markDrawn();
|
|
104
134
|
}
|
|
105
135
|
function curveTo(state, dx1, dy1, dx2, dy2, dx3, dy3) {
|
|
106
136
|
const x0 = state.x;
|
|
@@ -116,10 +146,10 @@ function curveTo(state, dx1, dy1, dx2, dy2, dx3, dy3) {
|
|
|
116
146
|
state.y = y3;
|
|
117
147
|
}
|
|
118
148
|
function lineTo(state, dx, dy) {
|
|
119
|
-
|
|
149
|
+
state.box.includePoint(state.x, state.y);
|
|
120
150
|
state.x += dx;
|
|
121
151
|
state.y += dy;
|
|
122
|
-
|
|
152
|
+
state.box.includePoint(state.x, state.y);
|
|
123
153
|
}
|
|
124
154
|
function moveTo(state, dx, dy) {
|
|
125
155
|
state.x += dx;
|
|
@@ -136,15 +166,15 @@ function readOperand(code, offset) {
|
|
|
136
166
|
if (!require_sfnt.hasBytes(code, offset + 1, 2)) return;
|
|
137
167
|
const raw = require_sfnt.u16(code, offset + 1);
|
|
138
168
|
return {
|
|
139
|
-
value: raw >=
|
|
140
|
-
endOffset: offset +
|
|
169
|
+
value: raw >= INT16_SIGN_BIT ? raw - INT16_MODULUS : raw,
|
|
170
|
+
endOffset: offset + CS_OPERAND_INT16_TOTAL_LENGTH
|
|
141
171
|
};
|
|
142
172
|
}
|
|
143
173
|
if (b0 === CS_OPERAND_FIXED) {
|
|
144
|
-
if (!require_sfnt.hasBytes(code, offset + 1,
|
|
174
|
+
if (!require_sfnt.hasBytes(code, offset + 1, CS_OPERAND_FIXED_BYTE_LENGTH)) return;
|
|
145
175
|
return {
|
|
146
176
|
value: (require_sfnt.u32(code, offset + 1) | 0) / FIXED_POINT_SCALE,
|
|
147
|
-
endOffset: offset +
|
|
177
|
+
endOffset: offset + CS_OPERAND_FIXED_TOTAL_LENGTH
|
|
148
178
|
};
|
|
149
179
|
}
|
|
150
180
|
if (b0 >= CS_OPERAND_SMALL_FIRST && b0 <= CS_OPERAND_SMALL_LAST) return {
|
|
@@ -231,20 +261,20 @@ function execute(code, state, context, depth) {
|
|
|
231
261
|
break;
|
|
232
262
|
}
|
|
233
263
|
case OP_RRCURVETO:
|
|
234
|
-
for (let k = 0; k +
|
|
264
|
+
for (let k = 0; k + CURVE_DY3_OFFSET < stack.length; k += CURVE_ARG_COUNT) curveTo(state, stack[k], stack[k + 1], stack[k + 2], stack[k + CURVE_DY2_OFFSET], stack[k + CURVE_DX3_OFFSET], stack[k + CURVE_DY3_OFFSET]);
|
|
235
265
|
stack.length = 0;
|
|
236
266
|
break;
|
|
237
267
|
case OP_RCURVELINE: {
|
|
238
268
|
let k = 0;
|
|
239
|
-
for (; k +
|
|
269
|
+
for (; k + CURVE_DY3_OFFSET < stack.length - 2; k += CURVE_ARG_COUNT) curveTo(state, stack[k], stack[k + 1], stack[k + 2], stack[k + CURVE_DY2_OFFSET], stack[k + CURVE_DX3_OFFSET], stack[k + CURVE_DY3_OFFSET]);
|
|
240
270
|
if (k + 1 < stack.length) lineTo(state, stack[k], stack[k + 1]);
|
|
241
271
|
stack.length = 0;
|
|
242
272
|
break;
|
|
243
273
|
}
|
|
244
274
|
case OP_RLINECURVE: {
|
|
245
275
|
let k = 0;
|
|
246
|
-
for (; k + 1 < stack.length -
|
|
247
|
-
if (k +
|
|
276
|
+
for (; k + 1 < stack.length - CURVE_ARG_COUNT; k += 2) lineTo(state, stack[k], stack[k + 1]);
|
|
277
|
+
if (k + CURVE_DY3_OFFSET < stack.length) curveTo(state, stack[k], stack[k + 1], stack[k + 2], stack[k + CURVE_DY2_OFFSET], stack[k + CURVE_DX3_OFFSET], stack[k + CURVE_DY3_OFFSET]);
|
|
248
278
|
stack.length = 0;
|
|
249
279
|
break;
|
|
250
280
|
}
|
|
@@ -252,14 +282,14 @@ function execute(code, state, context, depth) {
|
|
|
252
282
|
case OP_HHCURVETO: {
|
|
253
283
|
let k = 0;
|
|
254
284
|
let firstCross = 0;
|
|
255
|
-
if (stack.length %
|
|
285
|
+
if (stack.length % QUAD_CURVE_ARG_COUNT === 1) {
|
|
256
286
|
firstCross = stack[0];
|
|
257
287
|
k = 1;
|
|
258
288
|
}
|
|
259
|
-
for (; k +
|
|
289
|
+
for (; k + QUAD_CURVE_LAST_OFFSET < stack.length; k += QUAD_CURVE_ARG_COUNT) {
|
|
260
290
|
const cross = k <= 1 ? firstCross : 0;
|
|
261
|
-
if (b0 === OP_VVCURVETO) curveTo(state, cross, stack[k], stack[k + 1], stack[k + 2], 0, stack[k +
|
|
262
|
-
else curveTo(state, stack[k], cross, stack[k + 1], stack[k + 2], stack[k +
|
|
291
|
+
if (b0 === OP_VVCURVETO) curveTo(state, cross, stack[k], stack[k + 1], stack[k + 2], 0, stack[k + QUAD_CURVE_LAST_OFFSET]);
|
|
292
|
+
else curveTo(state, stack[k], cross, stack[k + 1], stack[k + 2], stack[k + QUAD_CURVE_LAST_OFFSET], 0);
|
|
263
293
|
}
|
|
264
294
|
stack.length = 0;
|
|
265
295
|
break;
|
|
@@ -268,11 +298,11 @@ function execute(code, state, context, depth) {
|
|
|
268
298
|
case OP_HVCURVETO: {
|
|
269
299
|
let horizontal = b0 === OP_HVCURVETO;
|
|
270
300
|
let k = 0;
|
|
271
|
-
while (stack.length - k >=
|
|
272
|
-
const extra = stack.length - k ===
|
|
273
|
-
if (horizontal) curveTo(state, stack[k], 0, stack[k + 1], stack[k + 2], extra, stack[k +
|
|
274
|
-
else curveTo(state, 0, stack[k], stack[k + 1], stack[k + 2], stack[k +
|
|
275
|
-
k +=
|
|
301
|
+
while (stack.length - k >= QUAD_CURVE_ARG_COUNT) {
|
|
302
|
+
const extra = stack.length - k === QUAD_CURVE_WITH_EXTRA_ARG_COUNT ? stack[k + QUAD_CURVE_ARG_COUNT] : 0;
|
|
303
|
+
if (horizontal) curveTo(state, stack[k], 0, stack[k + 1], stack[k + 2], extra, stack[k + QUAD_CURVE_LAST_OFFSET]);
|
|
304
|
+
else curveTo(state, 0, stack[k], stack[k + 1], stack[k + 2], stack[k + QUAD_CURVE_LAST_OFFSET], extra);
|
|
305
|
+
k += QUAD_CURVE_ARG_COUNT;
|
|
276
306
|
horizontal = !horizontal;
|
|
277
307
|
}
|
|
278
308
|
stack.length = 0;
|
|
@@ -307,25 +337,29 @@ function execute(code, state, context, depth) {
|
|
|
307
337
|
}
|
|
308
338
|
return true;
|
|
309
339
|
}
|
|
340
|
+
const FLEX_ARG_COUNT = 13;
|
|
341
|
+
const HFLEX_ARG_COUNT = 7;
|
|
342
|
+
const HFLEX1_ARG_COUNT = 9;
|
|
343
|
+
const FLEX1_ARG_COUNT = 11;
|
|
310
344
|
function executeEscaped(operator, state) {
|
|
311
345
|
const stack = state.stack;
|
|
312
346
|
const startY = state.y;
|
|
313
347
|
if (operator === ESC_FLEX) {
|
|
314
|
-
if (stack.length <
|
|
348
|
+
if (stack.length < FLEX_ARG_COUNT) return false;
|
|
315
349
|
curveTo(state, stack[0], stack[1], stack[2], stack[3], stack[4], stack[5]);
|
|
316
350
|
curveTo(state, stack[6], stack[7], stack[8], stack[9], stack[10], stack[11]);
|
|
317
351
|
stack.length = 0;
|
|
318
352
|
return true;
|
|
319
353
|
}
|
|
320
354
|
if (operator === ESC_HFLEX) {
|
|
321
|
-
if (stack.length <
|
|
355
|
+
if (stack.length < HFLEX_ARG_COUNT) return false;
|
|
322
356
|
curveTo(state, stack[0], 0, stack[1], stack[2], stack[3], 0);
|
|
323
357
|
curveTo(state, stack[4], 0, stack[5], -stack[2], stack[6], 0);
|
|
324
358
|
stack.length = 0;
|
|
325
359
|
return true;
|
|
326
360
|
}
|
|
327
361
|
if (operator === ESC_HFLEX1) {
|
|
328
|
-
if (stack.length <
|
|
362
|
+
if (stack.length < HFLEX1_ARG_COUNT) return false;
|
|
329
363
|
curveTo(state, stack[0], stack[1], stack[2], stack[3], stack[4], 0);
|
|
330
364
|
const dy5 = stack[7];
|
|
331
365
|
curveTo(state, stack[5], 0, stack[6], dy5, stack[8], startY - (state.y + dy5));
|
|
@@ -333,7 +367,7 @@ function executeEscaped(operator, state) {
|
|
|
333
367
|
return true;
|
|
334
368
|
}
|
|
335
369
|
if (operator === ESC_FLEX1) {
|
|
336
|
-
if (stack.length <
|
|
370
|
+
if (stack.length < FLEX1_ARG_COUNT) return false;
|
|
337
371
|
const startX = state.x;
|
|
338
372
|
let dx = 0;
|
|
339
373
|
let dy = 0;
|
|
@@ -408,13 +442,7 @@ function computeBounds(glyphId, context) {
|
|
|
408
442
|
stems: 0,
|
|
409
443
|
widthParsed: false,
|
|
410
444
|
operations: 0,
|
|
411
|
-
box:
|
|
412
|
-
minX: Infinity,
|
|
413
|
-
minY: Infinity,
|
|
414
|
-
maxX: -Infinity,
|
|
415
|
-
maxY: -Infinity,
|
|
416
|
-
drawn: false
|
|
417
|
-
}
|
|
445
|
+
box: new BoundsBox()
|
|
418
446
|
};
|
|
419
447
|
if (!execute(code, state, context, 0) || !state.box.drawn) return;
|
|
420
448
|
return {
|