reamkit 1.32.1 → 1.33.0
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/README.md +5 -4
- package/dist/esm/core/bidi/algorithm.js +2 -2
- package/dist/esm/core/bidi/char-types.js +1 -1
- package/dist/esm/core/bidi/index.js +3 -3
- package/dist/esm/core/bytes.js +1 -1
- package/dist/esm/core/converter/facade.js +3 -2
- package/dist/esm/core/converter/ream.js +12 -5
- package/dist/esm/core/crypto/asn1.js +2 -2
- package/dist/esm/core/crypto/cms.js +5 -3
- package/dist/esm/core/crypto/index.js +2 -1
- package/dist/esm/core/crypto/offcrypto.js +8 -7
- package/dist/esm/core/crypto/primitives.js +16 -16
- package/dist/esm/core/document-model/index.d.ts +1 -1
- package/dist/esm/core/document-model/types.d.ts +174 -2
- package/dist/esm/core/drawingml/chart-geometry.d.ts +24 -6
- package/dist/esm/core/drawingml/chart-geometry.js +905 -208
- package/dist/esm/core/drawingml/chart-parser.d.ts +5 -1
- package/dist/esm/core/drawingml/chart-parser.js +275 -19
- package/dist/esm/core/drawingml/chart-text.d.ts +41 -0
- package/dist/esm/core/drawingml/chart-text.js +93 -0
- package/dist/esm/core/drawingml/colors.js +5 -5
- package/dist/esm/core/drawingml/diagram/layout-engine.js +1 -4
- package/dist/esm/core/drawingml/diagram/run.js +2 -1
- package/dist/esm/core/drawingml/preset-geometry.js +4 -6
- package/dist/esm/core/drawingml/shape-render.js +1 -1
- package/dist/esm/core/drawingml/text-warp.js +4 -16
- package/dist/esm/core/drawingml/theme-parser.js +14 -8
- package/dist/esm/core/font/arabic-joining.js +2 -2
- package/dist/esm/core/font/binary-reader.js +2 -0
- package/dist/esm/core/font/font-registry.js +1 -0
- package/dist/esm/core/font/ligatures.js +1 -1
- package/dist/esm/core/font/opentype-layout.js +11 -5
- package/dist/esm/core/font/ttf-build.js +6 -10
- package/dist/esm/core/font/ttf-parser.js +2 -1
- package/dist/esm/core/font/ttf-subset.js +8 -8
- package/dist/esm/core/fonts/families.js +1 -1
- package/dist/esm/core/fonts/remote-fonts.js +4 -4
- package/dist/esm/core/hyphenation/index.js +1 -1
- package/dist/esm/core/images.js +8 -8
- package/dist/esm/core/ir/loss.js +1 -0
- package/dist/esm/core/line-breaker/cjk.js +1 -1
- package/dist/esm/core/line-breaker/index.js +4 -3
- package/dist/esm/core/links.js +1 -1
- package/dist/esm/core/lzw.js +1 -1
- package/dist/esm/core/metafile/blit.js +1 -1
- package/dist/esm/core/metafile/emf.js +5 -7
- package/dist/esm/core/metafile/picture.js +1 -1
- package/dist/esm/core/metafile/symbol-fonts.js +7 -7
- package/dist/esm/core/metafile/wmf.js +5 -7
- package/dist/esm/core/number-format.js +4 -6
- package/dist/esm/core/numbering/index.js +3 -2
- package/dist/esm/core/ole/cfb.js +4 -4
- package/dist/esm/core/ole/escher-blip.js +1 -1
- package/dist/esm/core/opc/index.js +5 -4
- package/dist/esm/core/opc/package.js +3 -1
- package/dist/esm/core/opc/xml-entities.js +1 -1
- package/dist/esm/core/outline.js +1 -1
- package/dist/esm/core/png-encode.js +3 -3
- package/dist/esm/core/po-helpers.js +1 -1
- package/dist/esm/core/spreadsheet-model/types.d.ts +6 -0
- package/dist/esm/core/style-cascade/index.js +4 -3
- package/dist/esm/core/tiff.js +3 -1
- package/dist/esm/excel/activex-parser.js +1 -1
- package/dist/esm/excel/conditional-format.js +7 -7
- package/dist/esm/excel/formula/functions.js +8 -4
- package/dist/esm/excel/formula/index.js +3 -3
- package/dist/esm/excel/formula/lexer.js +2 -2
- package/dist/esm/excel/formula/parser.js +4 -3
- package/dist/esm/excel/formula/value.js +1 -1
- package/dist/esm/excel/index.js +7 -6
- package/dist/esm/excel/print-model.js +4 -4
- package/dist/esm/excel/printer-settings.js +6 -7
- package/dist/esm/excel/rich-value.js +1 -1
- package/dist/esm/excel/sheet-shape-parser.js +4 -2
- package/dist/esm/excel/sheet-to-flow.js +13 -11
- package/dist/esm/excel/styles-parser.js +5 -3
- package/dist/esm/excel/tint.js +5 -5
- package/dist/esm/excel/vml-drawing.js +2 -2
- package/dist/esm/excel/worksheet-parser.js +5 -5
- package/dist/esm/excel/xls/biff-chart.js +1 -3
- package/dist/esm/excel/xls/biff-reader.js +10 -11
- package/dist/esm/excel/xls/xls-reader.js +1 -1
- package/dist/esm/excel/xlsx-reader.js +17 -4
- package/dist/esm/excel/xlsx-to-pdf.js +1 -1
- package/dist/esm/excel/xlsx-writer.js +2 -2
- package/dist/esm/html/html-writer.js +18 -10
- package/dist/esm/layout/line-paint.js +1 -1
- package/dist/esm/layout/math-layout.js +5 -8
- package/dist/esm/layout/styled-layout.js +103 -31
- package/dist/esm/layout/turned-section.js +2 -2
- package/dist/esm/markdown/markdown-writer.js +1 -1
- package/dist/esm/pdf/encryption.js +9 -9
- package/dist/esm/pdf/icc-profile.js +2 -2
- package/dist/esm/pdf/index.js +3 -2
- package/dist/esm/pdf/objects.js +7 -0
- package/dist/esm/pdf/serialize.js +1 -1
- package/dist/esm/pdf/struct-tree.js +3 -1
- package/dist/esm/pdf/styled-page-emitter.js +23 -15
- package/dist/esm/pdf/styled-page-renderer.js +9 -5
- package/dist/esm/pdf-reader/annot-draw.js +3 -3
- package/dist/esm/pdf-reader/ccitt.js +2 -1
- package/dist/esm/pdf-reader/cff-outline.js +1 -4
- package/dist/esm/pdf-reader/content.js +13 -15
- package/dist/esm/pdf-reader/decrypt.js +5 -4
- package/dist/esm/pdf-reader/document.js +6 -2
- package/dist/esm/pdf-reader/encodings.js +1 -1
- package/dist/esm/pdf-reader/flow-build.js +4 -6
- package/dist/esm/pdf-reader/font.js +3 -3
- package/dist/esm/pdf-reader/function.js +8 -7
- package/dist/esm/pdf-reader/icc.js +1 -1
- package/dist/esm/pdf-reader/images.js +1 -1
- package/dist/esm/pdf-reader/jbig2.js +36 -38
- package/dist/esm/pdf-reader/jpeg.js +14 -13
- package/dist/esm/pdf-reader/layout.js +12 -9
- package/dist/esm/pdf-reader/lexer.js +2 -1
- package/dist/esm/pdf-reader/math-rows.js +2 -2
- package/dist/esm/pdf-reader/optional-content.js +1 -1
- package/dist/esm/pdf-reader/page-numbers.js +1 -1
- package/dist/esm/pdf-reader/pattern-tint.js +1 -2
- package/dist/esm/pdf-reader/reader.js +2 -2
- package/dist/esm/pdf-reader/struct-tree.js +1 -1
- package/dist/esm/pdf-reader/tagged.js +3 -2
- package/dist/esm/pdf-reader/text.js +2 -2
- package/dist/esm/pdf-reader/type1-outline.js +1 -3
- package/dist/esm/pptx/embedded-fonts.js +3 -5
- package/dist/esm/pptx/placeholder-cascade.js +1 -1
- package/dist/esm/pptx/ppt/ppt-reader.js +5 -4
- package/dist/esm/pptx/ppt/ppt-text.js +9 -10
- package/dist/esm/pptx/pptx-reader.js +6 -5
- package/dist/esm/pptx/preset-table-styles.js +1 -1
- package/dist/esm/pptx/slide-parser.js +6 -4
- package/dist/esm/pptx/sp-helpers.js +1 -1
- package/dist/esm/pptx/table-style.js +2 -1
- package/dist/esm/svg/svg-writer.js +1 -1
- package/dist/esm/word/doc/doc-reader.js +2 -2
- package/dist/esm/word/doc/doc-text.js +20 -22
- package/dist/esm/word/document-parser.js +26 -21
- package/dist/esm/word/docx-reader.js +2 -2
- package/dist/esm/word/docx-to-pdf.js +3 -3
- package/dist/esm/word/docx-writer.js +10 -6
- package/dist/esm/word/drawing-parser.js +18 -18
- package/dist/esm/word/font-table.js +1 -1
- package/dist/esm/word/index.js +6 -5
- package/dist/esm/word/numbering-parser.js +4 -3
- package/dist/esm/word/omml-parser.js +1 -1
- package/dist/esm/word/paragraph-properties.js +11 -10
- package/dist/esm/word/run-properties.js +4 -4
- package/dist/esm/word/settings-parser.js +2 -1
- package/dist/esm/word/shading.js +1 -1
- package/dist/esm/word/styles-parser.js +5 -4
- package/dist/esm/word/table-parser.js +4 -4
- package/dist/esm/word/theme-fonts.js +1 -1
- package/package.json +8 -2
|
@@ -499,9 +499,7 @@ function customPaths(geom, wPt, hPt) {
|
|
|
499
499
|
curY = cyP + cmd.hR * Math.sin(st + sw);
|
|
500
500
|
break;
|
|
501
501
|
}
|
|
502
|
-
case "close":
|
|
503
|
-
b.close();
|
|
504
|
-
break;
|
|
502
|
+
case "close": b.close();
|
|
505
503
|
}
|
|
506
504
|
return [b.build()];
|
|
507
505
|
}
|
|
@@ -509,7 +507,7 @@ var SQUARE = {
|
|
|
509
507
|
cut: 0,
|
|
510
508
|
round: false
|
|
511
509
|
};
|
|
512
|
-
var CORNER_RECTS = new Map([
|
|
510
|
+
var CORNER_RECTS = /* @__PURE__ */ new Map([
|
|
513
511
|
["round1Rect", {
|
|
514
512
|
defaults: [16667, 0],
|
|
515
513
|
corners: [
|
|
@@ -637,7 +635,7 @@ function roundedCorners(w, h, [tl, tr, br, bl]) {
|
|
|
637
635
|
});
|
|
638
636
|
return b.close().build();
|
|
639
637
|
}
|
|
640
|
-
var STARS = new Map([
|
|
638
|
+
var STARS = /* @__PURE__ */ new Map([
|
|
641
639
|
["star4", {
|
|
642
640
|
points: 4,
|
|
643
641
|
adj: 12500,
|
|
@@ -806,4 +804,4 @@ function blockArrow(w, h, adjust, dir) {
|
|
|
806
804
|
]);
|
|
807
805
|
}
|
|
808
806
|
//#endregion
|
|
809
|
-
export { customPaths, presetPaths, rectPath };
|
|
807
|
+
export { customPaths, presetPaths, rectPath, rectSegments };
|
|
@@ -275,4 +275,4 @@ function buildShapeTransform(pageX, pageY, widthPt, heightPt, rotation60k, flipH
|
|
|
275
275
|
];
|
|
276
276
|
}
|
|
277
277
|
//#endregion
|
|
278
|
-
export { DEFAULT_INSET_LR_PT, DEFAULT_INSET_TB_PT, buildShapePaths, buildShapeTransform, buildStroke, gradientSvgDef, gradientToSolid, lineEndPaths };
|
|
278
|
+
export { DEFAULT_INSET_LR_PT, DEFAULT_INSET_TB_PT, EMU_PER_PT, buildShapePaths, buildShapeTransform, buildStroke, gradientSvgDef, gradientToSolid, lineEndPaths };
|
|
@@ -11,7 +11,7 @@ var band = (top, drop) => ({
|
|
|
11
11
|
* name. `adj` arrives as the `a:avLst` adjustment in hundred-thousandths, or
|
|
12
12
|
* the preset's own default when the file states none.
|
|
13
13
|
*/
|
|
14
|
-
var ENVELOPES = new Map([
|
|
14
|
+
var ENVELOPES = /* @__PURE__ */ new Map([
|
|
15
15
|
["textPlain", {
|
|
16
16
|
defaultAdj: 0,
|
|
17
17
|
at: () => ({
|
|
@@ -196,19 +196,7 @@ var ENVELOPES = new Map([
|
|
|
196
196
|
at: (u, adj) => curve(u, adj)
|
|
197
197
|
}]
|
|
198
198
|
]);
|
|
199
|
-
|
|
200
|
-
* The ring presets, which do not hang text between two edges at all: they wind
|
|
201
|
-
* it once round an ellipse inscribed in the box. Both start at the box's left
|
|
202
|
-
* edge; `Inside` climbs over the top with each letter's head pointing out of
|
|
203
|
-
* the ring, `Outside` dips under the bottom with each letter's head pointing
|
|
204
|
-
* into it — which is why half of either one reads upside down.
|
|
205
|
-
*
|
|
206
|
-
* The band the letters occupy is a fixed share of the ring whatever the text:
|
|
207
|
-
* eight letters and thirty-two fill exactly the same annulus, so it is the
|
|
208
|
-
* preset and not the string that fixes the inner radius.
|
|
209
|
-
*/
|
|
210
|
-
var RING_INNER = .34;
|
|
211
|
-
var RINGS = new Map([["textRingInside", {
|
|
199
|
+
var RINGS = /* @__PURE__ */ new Map([["textRingInside", {
|
|
212
200
|
clockwise: true,
|
|
213
201
|
headOut: true
|
|
214
202
|
}], ["textRingOutside", {
|
|
@@ -323,7 +311,7 @@ function ringMatrix(frame, ring, _u, v, glyphX) {
|
|
|
323
311
|
const inX = -turn * -ty;
|
|
324
312
|
const inY = -turn * tx;
|
|
325
313
|
const head = ring.headOut ? -1 : 1;
|
|
326
|
-
const depth =
|
|
314
|
+
const depth = .6599999999999999 * b;
|
|
327
315
|
const sT = 2 * Math.PI * speed / frame.srcWidth;
|
|
328
316
|
const sN = depth / frame.srcHeight;
|
|
329
317
|
const inset = (ring.headOut ? v : 1 - v) * depth;
|
|
@@ -352,4 +340,4 @@ function textWarpEdges(preset, u, adj) {
|
|
|
352
340
|
return env.at(Math.min(1, Math.max(0, u)), a);
|
|
353
341
|
}
|
|
354
342
|
//#endregion
|
|
355
|
-
export { isTextWarp, warpGlyphMatrix };
|
|
343
|
+
export { isTextWarp, textWarpEdges, warpGlyphMatrix };
|
|
@@ -11,7 +11,7 @@ var parser = new XMLParser({
|
|
|
11
11
|
parseTagValue: false,
|
|
12
12
|
trimValues: false
|
|
13
13
|
});
|
|
14
|
-
var SCHEME_SLOTS = new Set([
|
|
14
|
+
var SCHEME_SLOTS = /* @__PURE__ */ new Set([
|
|
15
15
|
"dk1",
|
|
16
16
|
"lt1",
|
|
17
17
|
"dk2",
|
|
@@ -32,7 +32,8 @@ var SCHEME_SLOTS = new Set([
|
|
|
32
32
|
* @returns The two fonts; slots the theme leaves empty are absent.
|
|
33
33
|
*/
|
|
34
34
|
function parseThemeFonts(themeXml) {
|
|
35
|
-
const
|
|
35
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
36
|
+
const scheme = poFindByPath(tree, [
|
|
36
37
|
"a:theme",
|
|
37
38
|
"a:themeElements",
|
|
38
39
|
"a:fontScheme"
|
|
@@ -60,7 +61,7 @@ function parseThemeFonts(themeXml) {
|
|
|
60
61
|
minor: read("a:minorFont")
|
|
61
62
|
};
|
|
62
63
|
}
|
|
63
|
-
var THEME_FONT_TOKENS = new Map([
|
|
64
|
+
var THEME_FONT_TOKENS = /* @__PURE__ */ new Map([
|
|
64
65
|
["+mj-lt", ["major", "latin"]],
|
|
65
66
|
["+mn-lt", ["minor", "latin"]],
|
|
66
67
|
["+mj-ea", ["major", "ea"]],
|
|
@@ -101,7 +102,8 @@ function resolveThemeFont(typeface, fonts) {
|
|
|
101
102
|
*/
|
|
102
103
|
function parseTheme(themeXml) {
|
|
103
104
|
const out = /* @__PURE__ */ new Map();
|
|
104
|
-
const
|
|
105
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
106
|
+
const clrScheme = poFindByPath(tree, [
|
|
105
107
|
"a:theme",
|
|
106
108
|
"a:themeElements",
|
|
107
109
|
"a:clrScheme"
|
|
@@ -129,7 +131,8 @@ function parseTheme(themeXml) {
|
|
|
129
131
|
* no `a:fmtScheme`.
|
|
130
132
|
*/
|
|
131
133
|
function parseThemeLineWidths(themeXml) {
|
|
132
|
-
const
|
|
134
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
135
|
+
const list = poFindByPath(tree, [
|
|
133
136
|
"a:theme",
|
|
134
137
|
"a:themeElements",
|
|
135
138
|
"a:fmtScheme",
|
|
@@ -162,7 +165,8 @@ function parseThemeLineWidths(themeXml) {
|
|
|
162
165
|
* declares no `a:fmtScheme`.
|
|
163
166
|
*/
|
|
164
167
|
function parseThemeFillStyles(themeXml) {
|
|
165
|
-
const
|
|
168
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
169
|
+
const list = poFindByPath(tree, [
|
|
166
170
|
"a:theme",
|
|
167
171
|
"a:themeElements",
|
|
168
172
|
"a:fmtScheme",
|
|
@@ -186,7 +190,8 @@ function fillsOf(list) {
|
|
|
186
190
|
* @returns The fill children in list order; empty when the theme declares none.
|
|
187
191
|
*/
|
|
188
192
|
function parseThemeBgFillStyles(themeXml) {
|
|
189
|
-
const
|
|
193
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
194
|
+
const list = poFindByPath(tree, [
|
|
190
195
|
"a:theme",
|
|
191
196
|
"a:themeElements",
|
|
192
197
|
"a:fmtScheme",
|
|
@@ -204,7 +209,8 @@ function parseThemeBgFillStyles(themeXml) {
|
|
|
204
209
|
* declares no `a:fmtScheme`.
|
|
205
210
|
*/
|
|
206
211
|
function parseThemeEffectStyles(themeXml) {
|
|
207
|
-
const
|
|
212
|
+
const tree = parser.parse(decoder.decode(themeXml));
|
|
213
|
+
const list = poFindByPath(tree, [
|
|
208
214
|
"a:theme",
|
|
209
215
|
"a:themeElements",
|
|
210
216
|
"a:fmtScheme",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/core/font/arabic-joining.ts
|
|
2
|
-
var RIGHT_JOINING = new Set([
|
|
2
|
+
var RIGHT_JOINING = /* @__PURE__ */ new Set([
|
|
3
3
|
1570,
|
|
4
4
|
1571,
|
|
5
5
|
1572,
|
|
@@ -110,4 +110,4 @@ function assignArabicForms(cps) {
|
|
|
110
110
|
return forms;
|
|
111
111
|
}
|
|
112
112
|
//#endregion
|
|
113
|
-
export { assignArabicForms };
|
|
113
|
+
export { arabicJoiningType, assignArabicForms };
|
|
@@ -30,7 +30,7 @@ function lettersForLigature(cp) {
|
|
|
30
30
|
return LIGATURE_LETTERS.get(cp);
|
|
31
31
|
}
|
|
32
32
|
/** U+FB00..FB06 — `ſt` opens with a long s, which is an s. */
|
|
33
|
-
var LIGATURE_LETTERS = new Map([
|
|
33
|
+
var LIGATURE_LETTERS = /* @__PURE__ */ new Map([
|
|
34
34
|
[64256, "ff"],
|
|
35
35
|
[64257, "fi"],
|
|
36
36
|
[64258, "fl"],
|
|
@@ -110,7 +110,8 @@ function collectLookupOffsets(raw, table, wantedFeatures) {
|
|
|
110
110
|
const tag = fr.tag();
|
|
111
111
|
const featureOff = fr.u16();
|
|
112
112
|
if (wantedFeatures.includes(tag)) {
|
|
113
|
-
const
|
|
113
|
+
const featBase = featureListBase + featureOff;
|
|
114
|
+
const fr2 = new BigEndianReader(raw, featBase);
|
|
114
115
|
fr2.u16();
|
|
115
116
|
const lookupCount = fr2.u16();
|
|
116
117
|
for (let k = 0; k < lookupCount; k++) featureWanted.add(fr2.u16());
|
|
@@ -191,7 +192,8 @@ function parsePairPosFormat1(raw, subtableOffset, out) {
|
|
|
191
192
|
for (let i = 0; i < pairSetCount; i++) {
|
|
192
193
|
const first = coverage[i];
|
|
193
194
|
if (first === void 0) continue;
|
|
194
|
-
const
|
|
195
|
+
const psBase = subtableOffset + pairSetOffs[i];
|
|
196
|
+
const psr = new BigEndianReader(raw, psBase);
|
|
195
197
|
const pairCount = psr.u16();
|
|
196
198
|
for (let j = 0; j < pairCount; j++) {
|
|
197
199
|
const second = psr.u16();
|
|
@@ -222,7 +224,8 @@ function parsePairPosFormat2(raw, subtableOffset, out) {
|
|
|
222
224
|
const class2 = readClassDef(raw, subtableOffset + classDef2Off);
|
|
223
225
|
const recordsBase = r.offset;
|
|
224
226
|
for (let i = 0; i < class1Count; i++) for (let j = 0; j < class2Count; j++) {
|
|
225
|
-
const
|
|
227
|
+
const recordOff = recordsBase + (i * class2Count + j) * pairRecordSize;
|
|
228
|
+
const pr = new BigEndianReader(raw, recordOff);
|
|
226
229
|
const v1 = readValueRecordAdvance(pr, valueFormat1);
|
|
227
230
|
pr.skip(value1Size - bytesRead(valueFormat1));
|
|
228
231
|
const v2 = readValueRecordAdvance(pr, valueFormat2);
|
|
@@ -352,7 +355,10 @@ function shapeText(text, glyphForCodepoint, advanceWidths, ligatures, kerning, j
|
|
|
352
355
|
i += bestLen;
|
|
353
356
|
}
|
|
354
357
|
const advances = new Array(ligated.length);
|
|
355
|
-
for (let j = 0; j < ligated.length; j++)
|
|
358
|
+
for (let j = 0; j < ligated.length; j++) {
|
|
359
|
+
const gid = ligated[j];
|
|
360
|
+
advances[j] = advanceWidths[gid] ?? 0;
|
|
361
|
+
}
|
|
356
362
|
for (let j = 1; j < ligated.length; j++) {
|
|
357
363
|
const adj = kerning.get(`${ligated[j - 1]},${ligated[j]}`);
|
|
358
364
|
if (adj !== void 0 && adj !== 0) advances[j - 1] += adj;
|
|
@@ -363,4 +369,4 @@ function shapeText(text, glyphForCodepoint, advanceWidths, ligatures, kerning, j
|
|
|
363
369
|
};
|
|
364
370
|
}
|
|
365
371
|
//#endregion
|
|
366
|
-
export { parseGposKerning, parseGsubArabicForms, parseGsubLigatures, shapeText };
|
|
372
|
+
export { EMPTY_JOINING_FORMS, parseGposKerning, parseGsubArabicForms, parseGsubLigatures, shapeText };
|
|
@@ -8,8 +8,6 @@ var MAX_KERN_PAIRS = Math.floor(65521 / 6);
|
|
|
8
8
|
/** OS/2 `fsType` bits (ISO/IEC 14496-22, OS/2 table). */
|
|
9
9
|
var USAGE_BITS = 14;
|
|
10
10
|
var EDITABLE_EMBEDDING = 8;
|
|
11
|
-
var NO_SUBSETTING = 256;
|
|
12
|
-
var BITMAP_ONLY = 512;
|
|
13
11
|
/**
|
|
14
12
|
* Whether a face's licence lets it be embedded, as outlines and subset, in a
|
|
15
13
|
* document that stays EDITABLE: OS/2 `fsType` states installable embedding (no
|
|
@@ -26,7 +24,7 @@ var BITMAP_ONLY = 512;
|
|
|
26
24
|
*/
|
|
27
25
|
function editableEmbedding(fsType) {
|
|
28
26
|
if (fsType === void 0) return true;
|
|
29
|
-
if ((fsType &
|
|
27
|
+
if ((fsType & 768) !== 0) return false;
|
|
30
28
|
const usage = fsType & USAGE_BITS;
|
|
31
29
|
return usage === 0 || (usage & EDITABLE_EMBEDDING) !== 0;
|
|
32
30
|
}
|
|
@@ -291,7 +289,7 @@ function area(points) {
|
|
|
291
289
|
}
|
|
292
290
|
function emptyGlyph() {
|
|
293
291
|
return {
|
|
294
|
-
bytes: new Uint8Array(0),
|
|
292
|
+
bytes: /* @__PURE__ */ new Uint8Array(0),
|
|
295
293
|
contours: 0,
|
|
296
294
|
points: 0,
|
|
297
295
|
xMin: 0,
|
|
@@ -612,8 +610,7 @@ function ligatureTable(face, ligatures) {
|
|
|
612
610
|
const substHeader = 6 + firsts.length * 2;
|
|
613
611
|
const coverageSize = 4 + firsts.length * 2;
|
|
614
612
|
const setSize = (set) => 2 + set.length * 2 + set.reduce((n, lig) => n + 4 + lig.rest.length * 2, 0);
|
|
615
|
-
const
|
|
616
|
-
const out = new Writer(SUBST_AT + substHeader + coverageSize + sets.reduce((n, set) => n + setSize(set), 0));
|
|
613
|
+
const out = new Writer(62 + substHeader + coverageSize + sets.reduce((n, set) => n + setSize(set), 0));
|
|
617
614
|
out.u16(1);
|
|
618
615
|
out.u16(0);
|
|
619
616
|
out.u16(10);
|
|
@@ -641,7 +638,7 @@ function ligatureTable(face, ligatures) {
|
|
|
641
638
|
out.u16(4);
|
|
642
639
|
out.u16(0);
|
|
643
640
|
out.u16(1);
|
|
644
|
-
out.u16(
|
|
641
|
+
out.u16(8);
|
|
645
642
|
out.u16(1);
|
|
646
643
|
out.u16(substHeader);
|
|
647
644
|
out.u16(firsts.length);
|
|
@@ -738,8 +735,7 @@ function gposTable(pairs) {
|
|
|
738
735
|
const pairPosHeader = 10 + lefts.length * 2;
|
|
739
736
|
const coverageSize = 4 + lefts.length * 2;
|
|
740
737
|
const pairSetsSize = lefts.reduce((n, left) => n + 2 + byLeft.get(left).length * 4, 0);
|
|
741
|
-
const
|
|
742
|
-
const out = new Writer(PAIR_POS_AT + pairPosHeader + coverageSize + pairSetsSize);
|
|
738
|
+
const out = new Writer(62 + pairPosHeader + coverageSize + pairSetsSize);
|
|
743
739
|
out.u16(1);
|
|
744
740
|
out.u16(0);
|
|
745
741
|
out.u16(10);
|
|
@@ -767,7 +763,7 @@ function gposTable(pairs) {
|
|
|
767
763
|
out.u16(2);
|
|
768
764
|
out.u16(0);
|
|
769
765
|
out.u16(1);
|
|
770
|
-
out.u16(
|
|
766
|
+
out.u16(8);
|
|
771
767
|
out.u16(1);
|
|
772
768
|
out.u16(pairPosHeader);
|
|
773
769
|
out.u16(4);
|
|
@@ -263,7 +263,8 @@ function buildCmapFormat4(raw, offset) {
|
|
|
263
263
|
if (seg < 0) return 0;
|
|
264
264
|
if (startCode[seg] > cp) return 0;
|
|
265
265
|
if (idRangeOffset[seg] === 0) return cp + idDelta[seg] & 65535;
|
|
266
|
-
const
|
|
266
|
+
const glyphIdByteOffset = idRangeOffsetPos + seg * 2 + idRangeOffset[seg] + (cp - startCode[seg]) * 2;
|
|
267
|
+
const glyphId = new BigEndianReader(raw, glyphIdByteOffset).u16();
|
|
267
268
|
if (glyphId === 0) return 0;
|
|
268
269
|
return glyphId + idDelta[seg] & 65535;
|
|
269
270
|
};
|
|
@@ -15,7 +15,7 @@ var MAGIC_HEAD_CHECKSUM = 2981146554;
|
|
|
15
15
|
* 136 KB font program in 55906-MultiSheetRefs.xlsx. `OS/2` is kept because
|
|
16
16
|
* viewers read its metrics when a descriptor is incomplete.
|
|
17
17
|
*/
|
|
18
|
-
var EMBEDDABLE_TABLES = new Set([
|
|
18
|
+
var EMBEDDABLE_TABLES = /* @__PURE__ */ new Set([
|
|
19
19
|
"glyf",
|
|
20
20
|
"head",
|
|
21
21
|
"hhea",
|
|
@@ -62,11 +62,11 @@ function subsetTtf(parsed, usedGids) {
|
|
|
62
62
|
*/
|
|
63
63
|
function glyphClosure(parsed, usedGids) {
|
|
64
64
|
const glyf = parsed.tables.get("glyf");
|
|
65
|
-
if (!glyf) return new Set([0, ...usedGids]);
|
|
65
|
+
if (!glyf) return /* @__PURE__ */ new Set([0, ...usedGids]);
|
|
66
66
|
return computeGlyphClosure(parsed, glyf, usedGids);
|
|
67
67
|
}
|
|
68
68
|
function computeGlyphClosure(parsed, glyf, seed) {
|
|
69
|
-
const closure = new Set([0]);
|
|
69
|
+
const closure = /* @__PURE__ */ new Set([0]);
|
|
70
70
|
for (const g of seed) closure.add(g);
|
|
71
71
|
const stack = [...closure];
|
|
72
72
|
while (stack.length > 0) {
|
|
@@ -117,7 +117,7 @@ function rewriteGlyfLoca(parsed, glyf, closure) {
|
|
|
117
117
|
parts.push(data);
|
|
118
118
|
cursor += data.length;
|
|
119
119
|
if (cursor & 1) {
|
|
120
|
-
parts.push(new Uint8Array(1));
|
|
120
|
+
parts.push(/* @__PURE__ */ new Uint8Array(1));
|
|
121
121
|
cursor++;
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -135,11 +135,11 @@ function assembleSubsetTtf(parsed, newGlyf, newLoca) {
|
|
|
135
135
|
const oldHead = parsed.raw.subarray(headInfo.offset, headInfo.offset + headInfo.length);
|
|
136
136
|
const newHead = new Uint8Array(oldHead);
|
|
137
137
|
newHead[HEAD_CHECKSUM_ADJUSTMENT_OFFSET] = 0;
|
|
138
|
-
newHead[
|
|
139
|
-
newHead[
|
|
140
|
-
newHead[
|
|
138
|
+
newHead[9] = 0;
|
|
139
|
+
newHead[10] = 0;
|
|
140
|
+
newHead[11] = 0;
|
|
141
141
|
newHead[HEAD_INDEX_TO_LOC_FORMAT_OFFSET] = 0;
|
|
142
|
-
newHead[
|
|
142
|
+
newHead[51] = 1;
|
|
143
143
|
const orderedTags = [...parsed.tables.keys()].filter((t) => EMBEDDABLE_TABLES.has(t));
|
|
144
144
|
const tableData = /* @__PURE__ */ new Map();
|
|
145
145
|
for (const tag of orderedTags) if (tag === "glyf") tableData.set(tag, newGlyf);
|
|
@@ -38,7 +38,7 @@ function familiesInFlow(flow) {
|
|
|
38
38
|
for (const note of flow.footnotes?.values() ?? []) visit(note);
|
|
39
39
|
for (const note of flow.endnotes?.values() ?? []) visit(note);
|
|
40
40
|
for (const comment of flow.comments?.values() ?? []) visit(comment.content);
|
|
41
|
-
const keys = new Set(["arimo"]);
|
|
41
|
+
const keys = /* @__PURE__ */ new Set(["arimo"]);
|
|
42
42
|
for (const name of names) keys.add(resolveFamilyKey(name));
|
|
43
43
|
return keys;
|
|
44
44
|
}
|
|
@@ -89,7 +89,7 @@ var EXACT = {
|
|
|
89
89
|
courier: "cousine",
|
|
90
90
|
"liberation mono": "cousine"
|
|
91
91
|
};
|
|
92
|
-
var SERIF = new Set([
|
|
92
|
+
var SERIF = /* @__PURE__ */ new Set([
|
|
93
93
|
"georgia",
|
|
94
94
|
"garamond",
|
|
95
95
|
"book antiqua",
|
|
@@ -98,7 +98,7 @@ var SERIF = new Set([
|
|
|
98
98
|
"minion pro",
|
|
99
99
|
"serif"
|
|
100
100
|
]);
|
|
101
|
-
var SANS = new Set([
|
|
101
|
+
var SANS = /* @__PURE__ */ new Set([
|
|
102
102
|
"roboto",
|
|
103
103
|
"noto sans",
|
|
104
104
|
"notosans",
|
|
@@ -113,7 +113,7 @@ var SANS = new Set([
|
|
|
113
113
|
"sans",
|
|
114
114
|
"sans serif"
|
|
115
115
|
]);
|
|
116
|
-
var MONO = new Set([
|
|
116
|
+
var MONO = /* @__PURE__ */ new Set([
|
|
117
117
|
"mono",
|
|
118
118
|
"monospaced",
|
|
119
119
|
"consolas",
|
|
@@ -209,7 +209,7 @@ function familyFromStem(name) {
|
|
|
209
209
|
return key;
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
|
-
var WEIGHT_WORDS = new Map([
|
|
212
|
+
var WEIGHT_WORDS = /* @__PURE__ */ new Map([
|
|
213
213
|
["black", "bold"],
|
|
214
214
|
["heavy", "bold"],
|
|
215
215
|
["bold", "bold"],
|
package/dist/esm/core/images.js
CHANGED
|
@@ -315,7 +315,7 @@ function decodeGif(bytes) {
|
|
|
315
315
|
const screenH = u16(8);
|
|
316
316
|
const packed = bytes[10] ?? 0;
|
|
317
317
|
let pos = 13;
|
|
318
|
-
let globalPalette = new Uint8Array(0);
|
|
318
|
+
let globalPalette = /* @__PURE__ */ new Uint8Array(0);
|
|
319
319
|
if ((packed & 128) !== 0) {
|
|
320
320
|
const size = 3 * (1 << (packed & 7) + 1);
|
|
321
321
|
globalPalette = bytes.subarray(pos, pos + size);
|
|
@@ -367,13 +367,13 @@ function lzwDecode(data, minCodeSize, pixelCount) {
|
|
|
367
367
|
const end = clear + 1;
|
|
368
368
|
const out = new Uint8Array(pixelCount);
|
|
369
369
|
let outPos = 0;
|
|
370
|
-
let prefix = new Int32Array(4096);
|
|
371
|
-
let suffix = new Uint8Array(4096);
|
|
372
|
-
let length = new Int32Array(4096);
|
|
370
|
+
let prefix = /* @__PURE__ */ new Int32Array(4096);
|
|
371
|
+
let suffix = /* @__PURE__ */ new Uint8Array(4096);
|
|
372
|
+
let length = /* @__PURE__ */ new Int32Array(4096);
|
|
373
373
|
const reset = () => {
|
|
374
|
-
prefix = new Int32Array(4096);
|
|
375
|
-
suffix = new Uint8Array(4096);
|
|
376
|
-
length = new Int32Array(4096);
|
|
374
|
+
prefix = /* @__PURE__ */ new Int32Array(4096);
|
|
375
|
+
suffix = /* @__PURE__ */ new Uint8Array(4096);
|
|
376
|
+
length = /* @__PURE__ */ new Int32Array(4096);
|
|
377
377
|
for (let i = 0; i < clear; i++) {
|
|
378
378
|
prefix[i] = -1;
|
|
379
379
|
suffix[i] = i;
|
|
@@ -386,7 +386,7 @@ function lzwDecode(data, minCodeSize, pixelCount) {
|
|
|
386
386
|
let prev = -1;
|
|
387
387
|
let bitBuf = 0;
|
|
388
388
|
let bitCount = 0;
|
|
389
|
-
const stack = new Uint8Array(4096);
|
|
389
|
+
const stack = /* @__PURE__ */ new Uint8Array(4096);
|
|
390
390
|
for (let i = 0; i < data.length || bitCount >= codeSize;) {
|
|
391
391
|
while (bitCount < codeSize && i < data.length) {
|
|
392
392
|
bitBuf |= (data[i] & 255) << bitCount;
|
package/dist/esm/core/ir/loss.js
CHANGED
|
@@ -12,6 +12,7 @@ function formatLoss(loss) {
|
|
|
12
12
|
}
|
|
13
13
|
/** Thrown by strict-mode conversions on the first recorded loss. */
|
|
14
14
|
var ConversionLossError = class extends Error {
|
|
15
|
+
loss;
|
|
15
16
|
/** @param loss The first loss that tripped strict mode (retained on the error). */
|
|
16
17
|
constructor(loss) {
|
|
17
18
|
super(`strict conversion failed — ${formatLoss(loss)}`);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import "./knuth-plass.js";
|
|
2
|
-
import "./greedy.js";
|
|
3
|
-
import "./cjk.js";
|
|
1
|
+
import { FORCED_BREAK, breakLines } from "./knuth-plass.js";
|
|
2
|
+
import { greedyBreakLines } from "./greedy.js";
|
|
3
|
+
import { cjkBreakBetween, splitCjkSegment } from "./cjk.js";
|
|
4
|
+
export { FORCED_BREAK, breakLines, cjkBreakBetween, greedyBreakLines, splitCjkSegment };
|
package/dist/esm/core/links.js
CHANGED
package/dist/esm/core/lzw.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
function lzwDecodeMsb(data, options) {
|
|
9
9
|
const earlyChange = options.earlyChange ?? 1;
|
|
10
|
-
let out = new Uint8Array(4096);
|
|
10
|
+
let out = /* @__PURE__ */ new Uint8Array(4096);
|
|
11
11
|
let outLen = 0;
|
|
12
12
|
const emit = (e) => {
|
|
13
13
|
if (outLen + e.length > options.limit) return false;
|
|
@@ -10,7 +10,7 @@ function isEmf(bytes) {
|
|
|
10
10
|
const v = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
11
11
|
return v.getUint32(0, true) === 1 && v.getUint32(40, true) === 1179469088;
|
|
12
12
|
}
|
|
13
|
-
var RECORD_NAMES = new Map([
|
|
13
|
+
var RECORD_NAMES = /* @__PURE__ */ new Map([
|
|
14
14
|
[48, "palette"],
|
|
15
15
|
[49, "palette"],
|
|
16
16
|
[50, "palette"],
|
|
@@ -576,12 +576,10 @@ function readEmf(bytes) {
|
|
|
576
576
|
rop: 13369376
|
|
577
577
|
});
|
|
578
578
|
break;
|
|
579
|
-
default:
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
}
|
|
584
|
-
break;
|
|
579
|
+
default: {
|
|
580
|
+
const name = RECORD_NAMES.get(type);
|
|
581
|
+
if (name) skipped.add(name);
|
|
582
|
+
}
|
|
585
583
|
}
|
|
586
584
|
off += size;
|
|
587
585
|
}
|
|
@@ -121,4 +121,4 @@ function applyTransform(t, x, y) {
|
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
123
|
//#endregion
|
|
124
|
-
export { applyTransform, clippedAway, cloneDc, colorRef, intersectClip, newDeviceContext, primBounds };
|
|
124
|
+
export { DEFAULT_BRUSH, DEFAULT_PEN, applyTransform, clippedAway, cloneDc, colorRef, intersectClip, newDeviceContext, primBounds };
|
|
@@ -64,7 +64,7 @@ function fromSymbolFont(text, family) {
|
|
|
64
64
|
function normalize(family) {
|
|
65
65
|
return family.trim().toLowerCase();
|
|
66
66
|
}
|
|
67
|
-
var WINGDINGS = new Map([
|
|
67
|
+
var WINGDINGS = /* @__PURE__ */ new Map([
|
|
68
68
|
[108, "●"],
|
|
69
69
|
[109, "❍"],
|
|
70
70
|
[110, "■"],
|
|
@@ -85,7 +85,7 @@ var WINGDINGS = new Map([
|
|
|
85
85
|
[254, "☑"],
|
|
86
86
|
[255, "☒"]
|
|
87
87
|
]);
|
|
88
|
-
var WEBDINGS = new Map([
|
|
88
|
+
var WEBDINGS = /* @__PURE__ */ new Map([
|
|
89
89
|
[103, "■"],
|
|
90
90
|
[108, "■"],
|
|
91
91
|
[110, "●"],
|
|
@@ -96,7 +96,7 @@ var WEBDINGS = new Map([
|
|
|
96
96
|
[116, "▼"],
|
|
97
97
|
[161, "●"]
|
|
98
98
|
]);
|
|
99
|
-
var SYMBOL = new Map([
|
|
99
|
+
var SYMBOL = /* @__PURE__ */ new Map([
|
|
100
100
|
[97, "α"],
|
|
101
101
|
[98, "β"],
|
|
102
102
|
[99, "χ"],
|
|
@@ -120,7 +120,7 @@ var SYMBOL = new Map([
|
|
|
120
120
|
[185, "≠"],
|
|
121
121
|
[187, "≈"]
|
|
122
122
|
]);
|
|
123
|
-
var WINGDINGS_GEOMETRY = new Map([
|
|
123
|
+
var WINGDINGS_GEOMETRY = /* @__PURE__ */ new Map([
|
|
124
124
|
[108, "circle"],
|
|
125
125
|
[110, "square"],
|
|
126
126
|
[111, "square"],
|
|
@@ -129,11 +129,11 @@ var WINGDINGS_GEOMETRY = new Map([
|
|
|
129
129
|
[117, "diamond"],
|
|
130
130
|
[119, "diamond"]
|
|
131
131
|
]);
|
|
132
|
-
var GEOMETRY_TABLES = new Map([
|
|
132
|
+
var GEOMETRY_TABLES = /* @__PURE__ */ new Map([
|
|
133
133
|
["wingdings", WINGDINGS_GEOMETRY],
|
|
134
134
|
["wingdings 2", WINGDINGS_GEOMETRY],
|
|
135
135
|
["wingdings 3", WINGDINGS_GEOMETRY],
|
|
136
|
-
["webdings", new Map([
|
|
136
|
+
["webdings", /* @__PURE__ */ new Map([
|
|
137
137
|
[103, "square"],
|
|
138
138
|
[108, "square"],
|
|
139
139
|
[110, "circle"]
|
|
@@ -141,7 +141,7 @@ var GEOMETRY_TABLES = new Map([
|
|
|
141
141
|
["monotype sorts", WINGDINGS_GEOMETRY],
|
|
142
142
|
["zapfdingbats", WINGDINGS_GEOMETRY]
|
|
143
143
|
]);
|
|
144
|
-
var SYMBOL_TABLES = new Map([
|
|
144
|
+
var SYMBOL_TABLES = /* @__PURE__ */ new Map([
|
|
145
145
|
["wingdings", WINGDINGS],
|
|
146
146
|
["wingdings 2", WINGDINGS],
|
|
147
147
|
["wingdings 3", WINGDINGS],
|
|
@@ -15,7 +15,7 @@ function isWmf(bytes) {
|
|
|
15
15
|
const headerWords = v.getUint16(2, true);
|
|
16
16
|
return (type === 1 || type === 2) && headerWords === 9;
|
|
17
17
|
}
|
|
18
|
-
var RECORD_NAMES = new Map([
|
|
18
|
+
var RECORD_NAMES = /* @__PURE__ */ new Map([
|
|
19
19
|
[2338, "pie"],
|
|
20
20
|
[2096, "chord"],
|
|
21
21
|
[2071, "arc"],
|
|
@@ -385,12 +385,10 @@ function readWmf(bytes) {
|
|
|
385
385
|
pushText(emit, dc, text, x, y);
|
|
386
386
|
}
|
|
387
387
|
break;
|
|
388
|
-
default:
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
break;
|
|
388
|
+
default: {
|
|
389
|
+
const name = RECORD_NAMES.get(fn);
|
|
390
|
+
if (name) skipped.add(name);
|
|
391
|
+
}
|
|
394
392
|
}
|
|
395
393
|
off += size * 2;
|
|
396
394
|
}
|