@pixerate/editor 0.112.0 → 0.114.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/THIRD_PARTY_NOTICES.md +11 -0
- package/dist/animation-editor/index.cjs +60 -54
- package/dist/animation-editor/index.cjs.map +1 -1
- package/dist/animation-editor/index.d.cts +3 -3
- package/dist/animation-editor/index.d.ts +3 -3
- package/dist/animation-editor/index.js +14 -8
- package/dist/animation-editor/index.js.map +1 -1
- package/dist/builtin-CY97ppKM.d.cts +354 -0
- package/dist/builtin-CY97ppKM.d.ts +354 -0
- package/dist/canvas/index.cjs +3 -3
- package/dist/canvas/index.cjs.map +1 -1
- package/dist/canvas/index.js +9 -9
- package/dist/chunk-26PGXHY7.cjs +753 -0
- package/dist/chunk-26PGXHY7.cjs.map +1 -0
- package/dist/chunk-2OJACTPR.cjs +929 -0
- package/dist/chunk-2OJACTPR.cjs.map +1 -0
- package/dist/chunk-3UFGNHSP.js +929 -0
- package/dist/chunk-3UFGNHSP.js.map +1 -0
- package/dist/{chunk-YGIMK4NX.cjs → chunk-5OVJHMZQ.cjs} +757 -825
- package/dist/chunk-5OVJHMZQ.cjs.map +1 -0
- package/dist/chunk-643B2HKC.cjs +534 -0
- package/dist/chunk-643B2HKC.cjs.map +1 -0
- package/dist/chunk-6FCKOS2B.js +534 -0
- package/dist/chunk-6FCKOS2B.js.map +1 -0
- package/dist/chunk-BRLYOPLT.js +2574 -0
- package/dist/chunk-BRLYOPLT.js.map +1 -0
- package/dist/{chunk-LQEEDHOP.js → chunk-C6C5PDKU.js} +759 -761
- package/dist/chunk-C6C5PDKU.js.map +1 -0
- package/dist/chunk-DFQEX3AM.cjs +781 -0
- package/dist/chunk-DFQEX3AM.cjs.map +1 -0
- package/dist/{chunk-CZOXTEMN.js → chunk-EUVSQ25B.js} +336 -404
- package/dist/chunk-EUVSQ25B.js.map +1 -0
- package/dist/chunk-G5NMLUVF.cjs +2574 -0
- package/dist/chunk-G5NMLUVF.cjs.map +1 -0
- package/dist/chunk-LKCYANMW.js +781 -0
- package/dist/chunk-LKCYANMW.js.map +1 -0
- package/dist/{chunk-W3GXSUSQ.cjs → chunk-LPLCWZTM.cjs} +5087 -1283
- package/dist/chunk-LPLCWZTM.cjs.map +1 -0
- package/dist/chunk-MMVHBKMM.js +753 -0
- package/dist/chunk-MMVHBKMM.js.map +1 -0
- package/dist/{chunk-POGBUYWE.cjs → chunk-ST7E3NEE.cjs} +857 -859
- package/dist/chunk-ST7E3NEE.cjs.map +1 -0
- package/dist/{chunk-7VOHOPLW.cjs → chunk-TCKIXI46.cjs} +59 -59
- package/dist/{chunk-7VOHOPLW.cjs.map → chunk-TCKIXI46.cjs.map} +1 -1
- package/dist/{chunk-XIOMMGPD.cjs → chunk-TFOPHZ3U.cjs} +1 -1
- package/dist/chunk-TFOPHZ3U.cjs.map +1 -0
- package/dist/{chunk-Z4BC6M74.js → chunk-UBIXVXPR.js} +2 -2
- package/dist/{chunk-BLWCAQCW.js → chunk-VXR7XWMF.js} +4574 -770
- package/dist/chunk-VXR7XWMF.js.map +1 -0
- package/dist/{chunk-HNS7UHCM.js → chunk-XK5LZKBD.js} +1 -1
- package/dist/chunk-XK5LZKBD.js.map +1 -0
- package/dist/cms/index.cjs +146 -0
- package/dist/cms/index.cjs.map +1 -0
- package/dist/cms/index.d.cts +51 -0
- package/dist/cms/index.d.ts +51 -0
- package/dist/cms/index.js +146 -0
- package/dist/{export-DNu_Jr8p.d.ts → export-_1dUKwpF.d.ts} +326 -195
- package/dist/{export-DBba-buV.d.cts → export-b6NjCZ5-.d.cts} +326 -195
- package/dist/image-editor/index.cjs +2377 -1291
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +149 -97
- package/dist/image-editor/index.d.ts +149 -97
- package/dist/image-editor/index.js +1343 -257
- package/dist/image-editor/index.js.map +1 -1
- package/dist/opentype-BZEOSOX3.d.ts +188 -0
- package/dist/opentype-Dpe75vL5.d.cts +188 -0
- package/dist/paint/index.cjs +63 -4
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +30 -3
- package/dist/paint/index.d.ts +30 -3
- package/dist/paint/index.js +62 -3
- package/dist/paint-editor/index.cjs +146 -145
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +9 -8
- package/dist/paint-editor/index.d.ts +9 -8
- package/dist/paint-editor/index.js +6 -5
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +53 -3
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.d.cts +62 -91
- package/dist/raster/index.d.ts +62 -91
- package/dist/raster/index.js +59 -9
- package/dist/{render-BEriFuqK.d.cts → render-B1K_OoLy.d.cts} +87 -2
- package/dist/{render-tjzKaik-.d.ts → render-CrmHOgpo.d.ts} +87 -2
- package/dist/{blending-aOE6Y3UE.d.cts → retouch-Bxkuc0KH.d.cts} +219 -2
- package/dist/{blending-DXl06NSx.d.ts → retouch-Do6tBs2H.d.ts} +219 -2
- package/dist/{surface-C8RRg_Bh.d.ts → surface-Cn30xIV6.d.cts} +6 -1
- package/dist/{surface-C8RRg_Bh.d.cts → surface-Cn30xIV6.d.ts} +6 -1
- package/dist/{svg-D_cfkhlB.d.cts → svg-BnRj0q8i.d.cts} +16 -4
- package/dist/{svg-wIaKLrU0.d.ts → svg-CmmBFfGT.d.ts} +16 -4
- package/dist/{types-DtL_qLFz.d.ts → types-1SUQKDAw.d.ts} +273 -4
- package/dist/{types-DyQq-WPY.d.cts → types-yINF17Ta.d.cts} +273 -4
- package/dist/vector/index.cjs +12170 -7343
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +1579 -16
- package/dist/vector/index.d.ts +1579 -16
- package/dist/vector/index.js +6303 -1476
- package/dist/vector/index.js.map +1 -1
- package/dist/warp-B39VsOtd.d.cts +348 -0
- package/dist/warp-DMN30aY6.d.ts +348 -0
- package/dist/zlib-dxQdgHyN.d.cts +95 -0
- package/dist/zlib-dxQdgHyN.d.ts +95 -0
- package/package.json +6 -1
- package/skills/pixerate-image-editor/SKILL.md +34 -34
- package/skills/pixerate-image-editor/references/color-management.md +37 -0
- package/skills/pixerate-image-editor/references/photoshop-files.md +39 -0
- package/skills/pixerate-image-editor/references/retouching.md +36 -0
- package/skills/pixerate-vector/SKILL.md +154 -5
- package/dist/chunk-BLWCAQCW.js.map +0 -1
- package/dist/chunk-CZOXTEMN.js.map +0 -1
- package/dist/chunk-FTBZPI77.cjs +0 -1
- package/dist/chunk-FTBZPI77.cjs.map +0 -1
- package/dist/chunk-HNS7UHCM.js.map +0 -1
- package/dist/chunk-JLYX4V57.cjs +0 -2001
- package/dist/chunk-JLYX4V57.cjs.map +0 -1
- package/dist/chunk-KB2YBCVS.js +0 -2001
- package/dist/chunk-KB2YBCVS.js.map +0 -1
- package/dist/chunk-LQEEDHOP.js.map +0 -1
- package/dist/chunk-POGBUYWE.cjs.map +0 -1
- package/dist/chunk-VKK5VS2T.js +0 -1
- package/dist/chunk-W3GXSUSQ.cjs.map +0 -1
- package/dist/chunk-XIOMMGPD.cjs.map +0 -1
- package/dist/chunk-YGIMK4NX.cjs.map +0 -1
- package/dist/homography-CZ-tFjay.d.cts +0 -50
- package/dist/homography-Ctfjoc1b.d.ts +0 -50
- package/dist/warp-CWHZzE3x.d.ts +0 -118
- package/dist/warp-D5jz_tN7.d.cts +0 -118
- /package/dist/{chunk-Z4BC6M74.js.map → chunk-UBIXVXPR.js.map} +0 -0
- /package/dist/{chunk-VKK5VS2T.js.map → cms/index.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/chunk-2OJACTPR.cjs","../src/text/opentype.ts"],"names":["out","n"],"mappings":"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","file":"/home/runner/work/editor/editor/packages/core/dist/chunk-2OJACTPR.cjs","sourcesContent":[null,"/**\n * A small OpenType reader: enough of a font file to set Latin, Cyrillic, Greek and CJK text as\n * outlines without a third-party library. It reads TrueType (`glyf`) and CFF (`CFF `, CID-keyed\n * included) outlines, `cmap` (formats 4 and 12), horizontal metrics, `kern` (format 0) and `GPOS`\n * pair kerning (lookup type 2, formats 1 and 2, the `kern` feature), and the family, PostScript\n * name, weight and style. It does not apply `GSUB` (ligatures, contextual forms) or complex-script\n * shaping, so Arabic, Indic and similar scripts set as isolated glyphs.\n *\n * The result has the shape of opentype.js's `Font` that `createOutlineTextShaper` takes, so hosts\n * can pass either. Written from the OpenType specification (TrueType glyph outlines, the CFF\n * specification and the Type 2 charstring format), not ported.\n */\n\nimport type { OutlineFontFace, OutlinePathCommand } from './shapers';\n\n/** A parsed font, usable as an `OutlineFontFace`. */\nexport interface OpenTypeFont extends OutlineFontFace {\n /** The family name (typographic family when the font has one). */\n readonly family: string;\n /** The subfamily (\"Bold Italic\"). */\n readonly style: string;\n readonly postScriptName: string;\n readonly weight: number;\n readonly italic: boolean;\n readonly numGlyphs: number;\n /** `glyf` (TrueType quadratic outlines) or `cff` (cubic). */\n readonly outlines: 'glyf' | 'cff';\n /** The glyph for a code point (0, `.notdef`, when the font lacks it). */\n glyphIndex(codePoint: number): number;\n /** A glyph's advance in font units. */\n advance(glyph: number): number;\n /** Kerning between two glyphs in font units (negative pulls them together). */\n kerning(left: number, right: number): number;\n /** A glyph's outline in font units, y up, origin on the baseline. */\n glyphPath(glyph: number): OutlinePathCommand[];\n}\n\nconst fail = (message: string): never => {\n throw new Error(message);\n};\n\nclass Reader {\n constructor(\n readonly view: DataView,\n public pos = 0\n ) {}\n u8(): number {\n return this.view.getUint8(this.pos++);\n }\n i8(): number {\n return this.view.getInt8(this.pos++);\n }\n u16(): number {\n const v = this.view.getUint16(this.pos);\n this.pos += 2;\n return v;\n }\n i16(): number {\n const v = this.view.getInt16(this.pos);\n this.pos += 2;\n return v;\n }\n u32(): number {\n const v = this.view.getUint32(this.pos);\n this.pos += 4;\n return v;\n }\n tag(): string {\n let s = '';\n for (let i = 0; i < 4; i++) s += String.fromCharCode(this.u8());\n return s;\n }\n}\n\ninterface Table {\n offset: number;\n length: number;\n}\n\nfunction tableDirectory(view: DataView, at: number): Map<string, Table> {\n const r = new Reader(view, at);\n const version = r.tag();\n if (version !== '\\0\\x01\\0\\0' && version !== 'OTTO' && version !== 'true') fail('This is not a TrueType or OpenType font (WOFF2 is not supported; convert it to TTF or OTF).');\n const count = r.u16();\n r.pos += 6;\n const tables = new Map<string, Table>();\n for (let i = 0; i < count; i++) {\n const tag = r.tag();\n r.u32();\n const offset = r.u32();\n const length = r.u32();\n if (offset + length > view.byteLength) fail(`The font's \"${tag}\" table runs past the end of the file.`);\n tables.set(tag, { offset, length });\n }\n return tables;\n}\n\n// ---------------------------------------------------------------------------\n// cmap\n// ---------------------------------------------------------------------------\n\nfunction readCmap(view: DataView, t: Table): (cp: number) => number {\n const r = new Reader(view, t.offset);\n r.u16();\n const n = r.u16();\n const subtables: Array<{ platform: number; encoding: number; offset: number; format: number }> = [];\n for (let i = 0; i < n; i++) {\n const platform = r.u16();\n const encoding = r.u16();\n const offset = t.offset + r.u32();\n subtables.push({ platform, encoding, offset, format: view.getUint16(offset) });\n }\n const rank = (s: (typeof subtables)[number]) =>\n s.format === 12 && ((s.platform === 3 && s.encoding === 10) || s.platform === 0) ? 0 : s.format === 4 && ((s.platform === 3 && (s.encoding === 1 || s.encoding === 0)) || s.platform === 0) ? 1 : s.format === 12 || s.format === 4 ? 2 : 9;\n const best = subtables.filter((s) => rank(s) < 9).sort((a, b) => rank(a) - rank(b))[0];\n if (!best) return () => 0;\n const map = new Map<number, number>();\n const at = best.offset;\n if (best.format === 4) {\n const segX2 = view.getUint16(at + 6);\n const segs = segX2 / 2;\n const ends = at + 14;\n const starts = ends + segX2 + 2;\n const deltas = starts + segX2;\n const ranges = deltas + segX2;\n return (cp) => {\n if (cp > 0xffff) return 0;\n let lo = 0;\n let hi = segs - 1;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (view.getUint16(ends + mid * 2) < cp) lo = mid + 1;\n else hi = mid;\n }\n const start = view.getUint16(starts + lo * 2);\n if (cp < start || cp > view.getUint16(ends + lo * 2)) return 0;\n const delta = view.getInt16(deltas + lo * 2);\n const rangeAt = ranges + lo * 2;\n const range = view.getUint16(rangeAt);\n if (range === 0) return (cp + delta) & 0xffff;\n const g = view.getUint16(rangeAt + range + (cp - start) * 2);\n return g === 0 ? 0 : (g + delta) & 0xffff;\n };\n }\n // Format 12: sequential map groups.\n const groups = view.getUint32(at + 12);\n for (let i = 0; i < groups && i < 200000; i++) {\n const g = at + 16 + i * 12;\n const start = view.getUint32(g);\n const end = view.getUint32(g + 4);\n const glyph = view.getUint32(g + 8);\n if (end - start > 0x10ffff) continue;\n map.set(start, glyph);\n for (let c = start + 1; c <= end; c++) map.set(c, glyph + c - start);\n }\n return (cp) => map.get(cp) ?? 0;\n}\n\n// ---------------------------------------------------------------------------\n// name\n// ---------------------------------------------------------------------------\n\nfunction readNames(view: DataView, t: Table | undefined): Map<number, string> {\n const out = new Map<number, string>();\n if (!t) return out;\n const r = new Reader(view, t.offset);\n r.u16();\n const count = r.u16();\n const strings = t.offset + r.u16();\n const ranked = new Map<number, number>();\n for (let i = 0; i < count; i++) {\n const platform = r.u16();\n const encoding = r.u16();\n const language = r.u16();\n const id = r.u16();\n const length = r.u16();\n const offset = r.u16();\n let rank: number;\n let text = '';\n if (platform === 3 && (encoding === 1 || encoding === 10)) {\n rank = language === 0x409 ? 0 : 2;\n for (let k = 0; k + 1 < length; k += 2) text += String.fromCharCode(view.getUint16(strings + offset + k));\n } else if (platform === 1 && encoding === 0) {\n rank = language === 0 ? 1 : 3;\n for (let k = 0; k < length; k++) text += String.fromCharCode(view.getUint8(strings + offset + k));\n } else if (platform === 0) {\n rank = 2;\n for (let k = 0; k + 1 < length; k += 2) text += String.fromCharCode(view.getUint16(strings + offset + k));\n } else continue;\n if (!text || (ranked.get(id) ?? 9) <= rank) continue;\n ranked.set(id, rank);\n out.set(id, text);\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// glyf\n// ---------------------------------------------------------------------------\n\ntype Pt = { x: number; y: number; on: boolean };\n\nfunction glyfOutlines(view: DataView, glyf: Table, loca: Table, longLoca: boolean, numGlyphs: number): (g: number) => OutlinePathCommand[] {\n const offsetOf = (g: number) => (longLoca ? view.getUint32(loca.offset + g * 4) : view.getUint16(loca.offset + g * 2) * 2);\n const contoursOf = (g: number, depth: number): Pt[][] => {\n if (g < 0 || g >= numGlyphs || depth > 8) return [];\n const start = offsetOf(g);\n const end = offsetOf(g + 1);\n if (end <= start) return [];\n const r = new Reader(view, glyf.offset + start);\n const n = r.i16();\n r.pos += 8;\n if (n >= 0) {\n const ends: number[] = [];\n for (let i = 0; i < n; i++) ends.push(r.u16());\n const count = n ? ends[n - 1] + 1 : 0;\n const instructions = r.u16();\n r.pos += instructions;\n const flags: number[] = [];\n while (flags.length < count) {\n const f = r.u8();\n flags.push(f);\n if (f & 8) for (let k = r.u8(); k > 0; k--) flags.push(f);\n }\n const xs: number[] = [];\n let v = 0;\n for (const f of flags) {\n if (f & 2) v += f & 16 ? r.u8() : -r.u8();\n else if (!(f & 16)) v += r.i16();\n xs.push(v);\n }\n const ys: number[] = [];\n v = 0;\n for (const f of flags) {\n if (f & 4) v += f & 32 ? r.u8() : -r.u8();\n else if (!(f & 32)) v += r.i16();\n ys.push(v);\n }\n const out: Pt[][] = [];\n let s = 0;\n for (const e of ends) {\n const c: Pt[] = [];\n for (let i = s; i <= e && i < count; i++) c.push({ x: xs[i], y: ys[i], on: (flags[i] & 1) === 1 });\n out.push(c);\n s = e + 1;\n }\n return out;\n }\n // Composite: components placed by offsets (point matching is not supported) and scaled.\n const out: Pt[][] = [];\n for (;;) {\n const flags = r.u16();\n const glyph = r.u16();\n let dx: number;\n let dy: number;\n if (flags & 1) {\n dx = flags & 2 ? r.i16() : r.u16();\n dy = flags & 2 ? r.i16() : r.u16();\n } else {\n dx = flags & 2 ? r.i8() : r.u8();\n dy = flags & 2 ? r.i8() : r.u8();\n }\n if (!(flags & 2)) dx = dy = 0;\n let a = 1;\n let b = 0;\n let c = 0;\n let d = 1;\n const f2 = () => r.i16() / 16384;\n if (flags & 8) a = d = f2();\n else if (flags & 0x40) {\n a = f2();\n d = f2();\n } else if (flags & 0x80) {\n a = f2();\n b = f2();\n c = f2();\n d = f2();\n }\n for (const contour of contoursOf(glyph, depth + 1)) out.push(contour.map((p) => ({ x: a * p.x + c * p.y + dx, y: b * p.x + d * p.y + dy, on: p.on })));\n if (!(flags & 0x20)) break;\n }\n return out;\n };\n return (g) => {\n const cmds: OutlinePathCommand[] = [];\n for (const c of contoursOf(g, 0)) {\n if (!c.length) continue;\n // Start on an on-curve point (or the midpoint of the first two off-curve points).\n let first = c.findIndex((p) => p.on);\n let pts = c;\n if (first < 0) {\n const m = { x: (c[0].x + c[1 % c.length].x) / 2, y: (c[0].y + c[1 % c.length].y) / 2, on: true };\n pts = [m, ...c.slice(1), c[0]];\n first = 0;\n } else pts = [...c.slice(first), ...c.slice(0, first)];\n const start = pts[0];\n cmds.push({ type: 'M', x: start.x, y: start.y });\n let ctrl: Pt | null = null;\n for (let i = 1; i <= pts.length; i++) {\n const p = i === pts.length ? start : pts[i];\n if (p.on) {\n if (ctrl) cmds.push({ type: 'Q', x1: ctrl.x, y1: ctrl.y, x: p.x, y: p.y });\n else if (i < pts.length) cmds.push({ type: 'L', x: p.x, y: p.y });\n ctrl = null;\n } else {\n if (ctrl) cmds.push({ type: 'Q', x1: ctrl.x, y1: ctrl.y, x: (ctrl.x + p.x) / 2, y: (ctrl.y + p.y) / 2 });\n ctrl = p;\n }\n }\n cmds.push({ type: 'Z' });\n }\n return cmds;\n };\n}\n\n// ---------------------------------------------------------------------------\n// CFF\n// ---------------------------------------------------------------------------\n\n/** Offsets of an INDEX's items and where it ends. */\nfunction cffIndex(view: DataView, at: number): { items: Array<[number, number]>; end: number } {\n const count = view.getUint16(at);\n if (count === 0) return { items: [], end: at + 2 };\n const size = view.getUint8(at + 2);\n const read = (i: number) => {\n let v = 0;\n for (let k = 0; k < size; k++) v = v * 256 + view.getUint8(at + 3 + i * size + k);\n return v;\n };\n const base = at + 2 + (count + 1) * size;\n const items: Array<[number, number]> = [];\n for (let i = 0; i < count; i++) items.push([base + read(i), base + read(i + 1)]);\n return { items, end: base + read(count) };\n}\n\n/** A DICT's operators with their operands (two-byte operators as 1200 + b). */\nfunction cffDict(view: DataView, start: number, end: number): Map<number, number[]> {\n const out = new Map<number, number[]>();\n let ops: number[] = [];\n let p = start;\n while (p < end) {\n const b = view.getUint8(p++);\n if (b <= 21) {\n const op = b === 12 ? 1200 + view.getUint8(p++) : b;\n out.set(op, ops);\n ops = [];\n } else if (b === 28) {\n ops.push(view.getInt16(p));\n p += 2;\n } else if (b === 29) {\n ops.push(view.getInt32(p));\n p += 4;\n } else if (b === 30) {\n let s = '';\n const nib = '0123456789.EE?-';\n for (;;) {\n const v = view.getUint8(p++);\n const hi = v >> 4;\n const lo = v & 15;\n if (hi === 15) break;\n s += hi === 12 ? 'E-' : nib[hi];\n if (lo === 15) break;\n s += lo === 12 ? 'E-' : nib[lo];\n }\n ops.push(parseFloat(s));\n } else if (b >= 32 && b <= 246) ops.push(b - 139);\n else if (b >= 247 && b <= 250) ops.push((b - 247) * 256 + view.getUint8(p++) + 108);\n else if (b >= 251 && b <= 254) ops.push(-(b - 251) * 256 - view.getUint8(p++) - 108);\n else break;\n }\n return out;\n}\n\nconst subrBias = (n: number) => (n < 1240 ? 107 : n < 33900 ? 1131 : 32768);\n\ninterface CffPrivate {\n subrs: Array<[number, number]>;\n defaultWidth: number;\n nominalWidth: number;\n}\n\nfunction cffOutlines(view: DataView, t: Table, numGlyphs: number): { path: (g: number) => OutlinePathCommand[]; width: (g: number) => number | null } {\n const base = t.offset;\n const hdrSize = view.getUint8(base + 2);\n const names = cffIndex(view, base + hdrSize);\n const tops = cffIndex(view, names.end);\n const strings = cffIndex(view, tops.end);\n const gsubrs = cffIndex(view, strings.end).items;\n if (!tops.items.length) fail('The font\\'s CFF table has no Top DICT.');\n const top = cffDict(view, tops.items[0][0], tops.items[0][1]);\n const charStrings = cffIndex(view, base + (top.get(17)?.[0] ?? fail('The font\\'s CFF table has no CharStrings.'))).items;\n const privateOf = (dict: Map<number, number[]>): CffPrivate => {\n const pv = dict.get(18);\n if (!pv || pv.length < 2) return { subrs: [], defaultWidth: 0, nominalWidth: 0 };\n const [size, off] = pv;\n const priv = cffDict(view, base + off, base + off + size);\n const subrsOff = priv.get(19)?.[0];\n return {\n subrs: subrsOff !== undefined ? cffIndex(view, base + off + subrsOff).items : [],\n defaultWidth: priv.get(20)?.[0] ?? 0,\n nominalWidth: priv.get(21)?.[0] ?? 0,\n };\n };\n // CID-keyed fonts pick a private dict per glyph through FDSelect.\n let fdFor: (g: number) => CffPrivate;\n const fdArrayOff = top.get(1236)?.[0];\n const fdSelectOff = top.get(1237)?.[0];\n if (fdArrayOff !== undefined && fdSelectOff !== undefined) {\n const fds = cffIndex(view, base + fdArrayOff).items.map(([a, b]) => privateOf(cffDict(view, a, b)));\n const sel = base + fdSelectOff;\n const format = view.getUint8(sel);\n if (format === 0) fdFor = (g) => fds[view.getUint8(sel + 1 + g)] ?? fds[0];\n else {\n const ranges = view.getUint16(sel + 1);\n fdFor = (g) => {\n for (let i = 0; i < ranges; i++) {\n const first = view.getUint16(sel + 3 + i * 3);\n const next = view.getUint16(sel + 3 + (i + 1) * 3);\n if (g >= first && g < next) return fds[view.getUint8(sel + 5 + i * 3)] ?? fds[0];\n }\n return fds[0];\n };\n }\n } else {\n const p = privateOf(top);\n fdFor = () => p;\n }\n const widths = new Map<number, number | null>();\n const run = (g: number): OutlinePathCommand[] => {\n const priv = fdFor(g);\n const cmds: OutlinePathCommand[] = [];\n const stack: number[] = [];\n let x = 0;\n let y = 0;\n let stems = 0;\n let open = false;\n let width: number | null = null;\n let haveWidth = false;\n let done = false;\n const moveTo = (nx: number, ny: number) => {\n if (open) cmds.push({ type: 'Z' });\n x = nx;\n y = ny;\n cmds.push({ type: 'M', x, y });\n open = true;\n };\n const lineTo = (nx: number, ny: number) => {\n x = nx;\n y = ny;\n cmds.push({ type: 'L', x, y });\n };\n const curveTo = (x1: number, y1: number, x2: number, y2: number, nx: number, ny: number) => {\n x = nx;\n y = ny;\n cmds.push({ type: 'C', x1, y1, x2, y2, x, y });\n };\n // The first stack-clearing operator may carry the advance first: stem hints, rmoveto and\n // endchar take an even number of arguments, so an odd count means a width.\n const takeWidth = () => {\n if (haveWidth) return;\n haveWidth = true;\n if (stack.length % 2 === 1) width = priv.nominalWidth + (stack.shift() as number);\n };\n const exec = (start: number, end: number, depth: number) => {\n let p = start;\n while (p < end && !done) {\n const b = view.getUint8(p++);\n if (b >= 32 || b === 28) {\n if (b === 28) {\n stack.push(view.getInt16(p));\n p += 2;\n } else if (b <= 246) stack.push(b - 139);\n else if (b <= 250) stack.push((b - 247) * 256 + view.getUint8(p++) + 108);\n else if (b <= 254) stack.push(-(b - 251) * 256 - view.getUint8(p++) - 108);\n else {\n stack.push(view.getInt32(p) / 65536);\n p += 4;\n }\n continue;\n }\n switch (b) {\n case 1:\n case 3:\n case 18:\n case 23:\n takeWidth();\n stems += stack.length >> 1;\n stack.length = 0;\n break;\n case 19:\n case 20:\n takeWidth();\n stems += stack.length >> 1;\n stack.length = 0;\n p += (stems + 7) >> 3;\n break;\n case 21:\n takeWidth();\n moveTo(x + stack[0], y + stack[1]);\n stack.length = 0;\n break;\n case 22:\n if (!haveWidth) {\n haveWidth = true;\n if (stack.length > 1) width = priv.nominalWidth + (stack.shift() as number);\n }\n moveTo(x + stack[0], y);\n stack.length = 0;\n break;\n case 4:\n if (!haveWidth) {\n haveWidth = true;\n if (stack.length > 1) width = priv.nominalWidth + (stack.shift() as number);\n }\n moveTo(x, y + stack[0]);\n stack.length = 0;\n break;\n case 5:\n for (let i = 0; i + 1 < stack.length; i += 2) lineTo(x + stack[i], y + stack[i + 1]);\n stack.length = 0;\n break;\n case 6:\n case 7: {\n let horizontal = b === 6;\n for (const v of stack) {\n if (horizontal) lineTo(x + v, y);\n else lineTo(x, y + v);\n horizontal = !horizontal;\n }\n stack.length = 0;\n break;\n }\n case 8:\n for (let i = 0; i + 5 < stack.length; i += 6) curveTo(x + stack[i], y + stack[i + 1], x + stack[i] + stack[i + 2], y + stack[i + 1] + stack[i + 3], x + stack[i] + stack[i + 2] + stack[i + 4], y + stack[i + 1] + stack[i + 3] + stack[i + 5]);\n stack.length = 0;\n break;\n case 24: {\n let i = 0;\n for (; i + 7 < stack.length; i += 6) curveTo(x + stack[i], y + stack[i + 1], x + stack[i] + stack[i + 2], y + stack[i + 1] + stack[i + 3], x + stack[i] + stack[i + 2] + stack[i + 4], y + stack[i + 1] + stack[i + 3] + stack[i + 5]);\n lineTo(x + stack[i], y + stack[i + 1]);\n stack.length = 0;\n break;\n }\n case 25: {\n let i = 0;\n for (; i + 7 < stack.length; i += 2) lineTo(x + stack[i], y + stack[i + 1]);\n curveTo(x + stack[i], y + stack[i + 1], x + stack[i] + stack[i + 2], y + stack[i + 1] + stack[i + 3], x + stack[i] + stack[i + 2] + stack[i + 4], y + stack[i + 1] + stack[i + 3] + stack[i + 5]);\n stack.length = 0;\n break;\n }\n case 26: {\n let i = 0;\n let dx = 0;\n if (stack.length % 2) dx = stack[i++];\n for (; i + 3 < stack.length; i += 4) {\n const x1 = x + dx;\n const y1 = y + stack[i];\n curveTo(x1, y1, x1 + stack[i + 1], y1 + stack[i + 2], x1 + stack[i + 1], y1 + stack[i + 2] + stack[i + 3]);\n dx = 0;\n }\n stack.length = 0;\n break;\n }\n case 27: {\n let i = 0;\n let dy = 0;\n if (stack.length % 2) dy = stack[i++];\n for (; i + 3 < stack.length; i += 4) {\n const x1 = x + stack[i];\n const y1 = y + dy;\n curveTo(x1, y1, x1 + stack[i + 1], y1 + stack[i + 2], x1 + stack[i + 1] + stack[i + 3], y1 + stack[i + 2]);\n dy = 0;\n }\n stack.length = 0;\n break;\n }\n case 30:\n case 31: {\n let horizontal = b === 31;\n let i = 0;\n while (i + 3 < stack.length) {\n const last = stack.length - i === 5;\n if (horizontal) {\n const x1 = x + stack[i];\n const y1 = y;\n const x2 = x1 + stack[i + 1];\n const y2 = y1 + stack[i + 2];\n const y3 = y2 + stack[i + 3];\n curveTo(x1, y1, x2, y2, last ? x2 + stack[i + 4] : x2, y3);\n } else {\n const x1 = x;\n const y1 = y + stack[i];\n const x2 = x1 + stack[i + 1];\n const y2 = y1 + stack[i + 2];\n const x3 = x2 + stack[i + 3];\n curveTo(x1, y1, x2, y2, x3, last ? y2 + stack[i + 4] : y2);\n }\n i += last ? 5 : 4;\n horizontal = !horizontal;\n }\n stack.length = 0;\n break;\n }\n case 10:\n case 29: {\n const list = b === 10 ? priv.subrs : gsubrs;\n const idx = (stack.pop() as number) + subrBias(list.length);\n const sub = list[idx];\n if (sub && depth < 10) exec(sub[0], sub[1], depth + 1);\n break;\n }\n case 11:\n return;\n case 14:\n takeWidth();\n if (open) cmds.push({ type: 'Z' });\n open = false;\n done = true;\n stack.length = 0;\n return;\n case 12: {\n const op = view.getUint8(p++);\n const s = stack;\n if (op === 35 && s.length >= 13) {\n curveTo(x + s[0], y + s[1], x + s[0] + s[2], y + s[1] + s[3], x + s[0] + s[2] + s[4], y + s[1] + s[3] + s[5]);\n curveTo(x + s[6], y + s[7], x + s[6] + s[8], y + s[7] + s[9], x + s[6] + s[8] + s[10], y + s[7] + s[9] + s[11]);\n } else if (op === 34 && s.length >= 7) {\n const y0 = y;\n curveTo(x + s[0], y, x + s[0] + s[1], y + s[2], x + s[0] + s[1] + s[3], y + s[2]);\n curveTo(x + s[4], y, x + s[4] + s[5], y0, x + s[4] + s[5] + s[6], y0);\n } else if (op === 36 && s.length >= 9) {\n const y0 = y;\n curveTo(x + s[0], y + s[1], x + s[0] + s[2], y + s[1] + s[3], x + s[0] + s[2] + s[4], y + s[1] + s[3]);\n curveTo(x + s[5], y, x + s[5] + s[6], y + s[7], x + s[5] + s[6] + s[8], y0);\n } else if (op === 37 && s.length >= 11) {\n const x0 = x;\n const y0 = y;\n const x1 = x + s[0];\n const y1 = y + s[1];\n const x2 = x1 + s[2];\n const y2 = y1 + s[3];\n const x3 = x2 + s[4];\n const y3 = y2 + s[5];\n const x4 = x3 + s[6];\n const y4 = y3 + s[7];\n const x5 = x4 + s[8];\n const y5 = y4 + s[9];\n curveTo(x1, y1, x2, y2, x3, y3);\n if (Math.abs(x5 - x0) > Math.abs(y5 - y0)) curveTo(x4, y4, x5, y5, x5 + s[10], y0);\n else curveTo(x4, y4, x5, y5, x0, y5 + s[10]);\n }\n stack.length = 0;\n break;\n }\n default:\n stack.length = 0;\n }\n }\n };\n const cs = charStrings[g];\n if (cs) exec(cs[0], cs[1], 0);\n if (open) cmds.push({ type: 'Z' });\n widths.set(g, width ?? (haveWidth ? priv.defaultWidth : null));\n return cmds;\n };\n return {\n path: (g) => (g >= 0 && g < numGlyphs ? run(g) : []),\n width: (g) => {\n if (!widths.has(g)) run(g);\n return widths.get(g) ?? null;\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Kerning\n// ---------------------------------------------------------------------------\n\nfunction readKern(view: DataView, t: Table | undefined): Map<number, number> {\n const out = new Map<number, number>();\n if (!t) return out;\n const r = new Reader(view, t.offset);\n const version = r.u16();\n if (version !== 0) return out;\n const n = r.u16();\n for (let i = 0; i < n; i++) {\n const start = r.pos;\n r.u16();\n const length = r.u16();\n const coverage = r.u16();\n if (coverage >> 8 === 0 && (coverage & 1) === 1) {\n const pairs = r.u16();\n r.pos += 6;\n for (let k = 0; k < pairs; k++) {\n const left = r.u16();\n const right = r.u16();\n out.set(left * 65536 + right, r.i16());\n }\n }\n r.pos = start + length;\n }\n return out;\n}\n\nfunction coverageIndex(view: DataView, at: number, g: number): number {\n const format = view.getUint16(at);\n const n = view.getUint16(at + 2);\n if (format === 1) {\n let lo = 0;\n let hi = n - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n const v = view.getUint16(at + 4 + mid * 2);\n if (v === g) return mid;\n if (v < g) lo = mid + 1;\n else hi = mid - 1;\n }\n return -1;\n }\n for (let i = 0; i < n; i++) {\n const r = at + 4 + i * 6;\n const s = view.getUint16(r);\n const e = view.getUint16(r + 2);\n if (g >= s && g <= e) return view.getUint16(r + 4) + g - s;\n }\n return -1;\n}\n\nfunction classOf(view: DataView, at: number, g: number): number {\n const format = view.getUint16(at);\n if (format === 1) {\n const start = view.getUint16(at + 2);\n const n = view.getUint16(at + 4);\n return g >= start && g < start + n ? view.getUint16(at + 6 + (g - start) * 2) : 0;\n }\n const n = view.getUint16(at + 2);\n for (let i = 0; i < n; i++) {\n const r = at + 4 + i * 6;\n if (g >= view.getUint16(r) && g <= view.getUint16(r + 2)) return view.getUint16(r + 4);\n }\n return 0;\n}\n\nconst valueSize = (format: number) => {\n let n = 0;\n for (let f = format; f; f >>= 1) n += f & 1;\n return n * 2;\n};\n\n/** X advance adjustment of the first value record of a pair (`valueFormat` bit 4 is XAdvance). */\nfunction xAdvance(view: DataView, at: number, format: number): number {\n if (!(format & 4)) return 0;\n let skip = 0;\n if (format & 1) skip += 2;\n if (format & 2) skip += 2;\n return view.getInt16(at + skip);\n}\n\nfunction gposKerning(view: DataView, t: Table | undefined): ((a: number, b: number) => number) | null {\n if (!t) return null;\n const base = t.offset;\n const scripts = base + view.getUint16(base + 4);\n const features = base + view.getUint16(base + 6);\n const lookups = base + view.getUint16(base + 8);\n void scripts;\n const lookupIds = new Set<number>();\n const nf = view.getUint16(features);\n for (let i = 0; i < nf; i++) {\n const rec = features + 2 + i * 6;\n let tag = '';\n for (let k = 0; k < 4; k++) tag += String.fromCharCode(view.getUint8(rec + k));\n if (tag !== 'kern') continue;\n const f = features + view.getUint16(rec + 4);\n const n = view.getUint16(f + 2);\n for (let k = 0; k < n; k++) lookupIds.add(view.getUint16(f + 4 + k * 2));\n }\n const subtables: number[] = [];\n const nl = view.getUint16(lookups);\n for (const id of [...lookupIds].sort((a, b) => a - b)) {\n if (id >= nl) continue;\n const l = lookups + view.getUint16(lookups + 2 + id * 2);\n let type = view.getUint16(l);\n const n = view.getUint16(l + 4);\n for (let k = 0; k < n; k++) {\n let st = l + view.getUint16(l + 6 + k * 2);\n if (type === 9) {\n type = view.getUint16(st + 2);\n st = st + view.getUint32(st + 4);\n }\n if (type === 2) subtables.push(st);\n type = view.getUint16(l);\n }\n }\n if (!subtables.length) return null;\n return (a, b) => {\n for (const st of subtables) {\n const format = view.getUint16(st);\n const ci = coverageIndex(view, st + view.getUint16(st + 2), a);\n if (ci < 0) continue;\n const vf1 = view.getUint16(st + 4);\n const vf2 = view.getUint16(st + 6);\n const recSize = valueSize(vf1) + valueSize(vf2);\n if (format === 1) {\n const set = st + view.getUint16(st + 10 + ci * 2);\n const n = view.getUint16(set);\n let lo = 0;\n let hi = n - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n const rec = set + 2 + mid * (2 + recSize);\n const g = view.getUint16(rec);\n if (g === b) return xAdvance(view, rec + 2, vf1);\n if (g < b) lo = mid + 1;\n else hi = mid - 1;\n }\n } else if (format === 2) {\n const c1 = classOf(view, st + view.getUint16(st + 8), a);\n const c2 = classOf(view, st + view.getUint16(st + 10), b);\n const n2 = view.getUint16(st + 14);\n const rec = st + 16 + (c1 * n2 + c2) * recSize;\n const v = xAdvance(view, rec, vf1);\n if (v) return v;\n }\n }\n return 0;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Font\n// ---------------------------------------------------------------------------\n\nconst toView = (data: ArrayBuffer | ArrayBufferView): DataView =>\n data instanceof ArrayBuffer ? new DataView(data) : new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n/**\n * Reads a TrueType or OpenType font (`.ttf`, `.otf`, or face `index` of a `.ttc` collection).\n * Throws with the reason when the file is not one, or lacks the tables layout needs. For WOFF files\n * use `loadOpenTypeFont`.\n */\nexport function parseOpenTypeFont(data: ArrayBuffer | ArrayBufferView, options: { index?: number } = {}): OpenTypeFont {\n const view = toView(data);\n if (view.byteLength < 12) fail('The font file is too short.');\n let at = 0;\n if (view.getUint32(0) === 0x74746366) {\n const n = view.getUint32(8);\n const index = options.index ?? 0;\n if (index < 0 || index >= n) fail(`The collection has ${n} faces; index ${index} is out of range.`);\n at = view.getUint32(12 + index * 4);\n }\n const tables = tableDirectory(view, at);\n const need = (tag: string) => tables.get(tag) ?? fail(`The font has no \"${tag}\" table.`);\n const head = need('head');\n const unitsPerEm = view.getUint16(head.offset + 18) || 1000;\n const longLoca = view.getInt16(head.offset + 50) === 1;\n const macStyle = view.getUint16(head.offset + 44);\n const hhea = need('hhea');\n let ascender = view.getInt16(hhea.offset + 4);\n let descender = view.getInt16(hhea.offset + 6);\n const numHMetrics = view.getUint16(hhea.offset + 34);\n const numGlyphs = view.getUint16(need('maxp').offset + 4);\n const hmtx = need('hmtx');\n const os2 = tables.get('OS/2');\n let weight = macStyle & 1 ? 700 : 400;\n let fsSelection = macStyle & 2 ? 1 : 0;\n if (os2 && os2.length >= 78) {\n weight = view.getUint16(os2.offset + 4) || weight;\n fsSelection = view.getUint16(os2.offset + 62);\n // USE_TYPO_METRICS: the typographic ascender and descender are the ones to use.\n if (fsSelection & 128) {\n ascender = view.getInt16(os2.offset + 68);\n descender = view.getInt16(os2.offset + 70);\n }\n }\n if (!ascender && !descender) {\n ascender = Math.round(unitsPerEm * 0.8);\n descender = -Math.round(unitsPerEm * 0.2);\n }\n const names = readNames(view, tables.get('name'));\n const family = names.get(16) ?? names.get(1) ?? 'Font';\n const style = names.get(17) ?? names.get(2) ?? 'Regular';\n const postScriptName = names.get(6) ?? family.replace(/\\s+/g, '');\n const italic = Boolean(fsSelection & 1) || /italic|oblique/i.test(style);\n const cmap = readCmap(view, need('cmap'));\n const glyf = tables.get('glyf');\n const cff = tables.get('CFF ');\n let pathOf: (g: number) => OutlinePathCommand[];\n let cffWidth: ((g: number) => number | null) | null = null;\n let outlines: 'glyf' | 'cff';\n if (glyf) {\n pathOf = glyfOutlines(view, glyf, need('loca'), longLoca, numGlyphs);\n outlines = 'glyf';\n } else if (cff) {\n const c = cffOutlines(view, cff, numGlyphs);\n pathOf = c.path;\n cffWidth = c.width;\n outlines = 'cff';\n } else return fail('The font has neither TrueType (\"glyf\") nor CFF outlines (CFF2 and bitmap fonts are not supported).');\n const advance = (g: number) => {\n if (g < 0 || g >= numGlyphs) return 0;\n const i = Math.min(g, numHMetrics - 1);\n if (i >= 0 && hmtx.offset + i * 4 + 2 <= hmtx.offset + hmtx.length) return view.getUint16(hmtx.offset + i * 4);\n return cffWidth?.(g) ?? 0;\n };\n const kernPairs = readKern(view, tables.get('kern'));\n const gpos = gposKerning(view, tables.get('GPOS'));\n const kerning = (a: number, b: number) => (gpos ? gpos(a, b) : 0) || kernPairs.get(a * 65536 + b) || 0;\n const glyphIndex = (cp: number) => cmap(cp);\n const pathCache = new Map<number, OutlinePathCommand[]>();\n const glyphPath = (g: number) => {\n let p = pathCache.get(g);\n if (!p) {\n p = pathOf(g);\n if (pathCache.size > 4096) pathCache.clear();\n pathCache.set(g, p);\n }\n return p;\n };\n const glyphs = (text: string) => {\n const out: number[] = [];\n for (const ch of text) {\n const cp = ch.codePointAt(0)!;\n // Lone surrogates (a caret inside a pair) and line breaks draw nothing.\n if ((cp >= 0xd800 && cp <= 0xdfff) || cp === 10 || cp === 13) continue;\n out.push(glyphIndex(cp));\n }\n return out;\n };\n const layout = (text: string, kern: boolean) => {\n const gs = glyphs(text);\n const xs: number[] = [];\n let x = 0;\n for (let i = 0; i < gs.length; i++) {\n if (i > 0 && kern) x += kerning(gs[i - 1], gs[i]);\n xs.push(x);\n x += advance(gs[i]);\n }\n return { gs, xs, width: x };\n };\n return {\n family,\n style,\n postScriptName,\n weight,\n italic,\n numGlyphs,\n outlines,\n unitsPerEm,\n ascender,\n descender,\n names: { fontFamily: { en: family }, postScriptName: { en: postScriptName } },\n tables: { os2: { usWeightClass: weight, fsSelection: italic ? fsSelection | 1 : fsSelection } },\n glyphIndex,\n advance,\n kerning,\n glyphPath,\n getAdvanceWidth(text, fontSize, opts) {\n return (layout(text, opts?.kerning !== false).width * fontSize) / unitsPerEm;\n },\n getPath(text, x, y, fontSize, opts) {\n const k = fontSize / unitsPerEm;\n const { gs, xs } = layout(text, opts?.kerning !== false);\n const commands: OutlinePathCommand[] = [];\n gs.forEach((g, i) => {\n const ox = x + xs[i] * k;\n for (const c of glyphPath(g)) {\n if (c.type === 'Z') commands.push({ type: 'Z' });\n else {\n const m: OutlinePathCommand = { type: c.type, x: ox + c.x! * k, y: y - c.y! * k };\n if (c.x1 !== undefined) {\n m.x1 = ox + c.x1 * k;\n m.y1 = y - c.y1! * k;\n }\n if (c.x2 !== undefined) {\n m.x2 = ox + c.x2 * k;\n m.y2 = y - c.y2! * k;\n }\n commands.push(m);\n }\n }\n });\n return { commands };\n },\n };\n}\n\n/**\n * Reads a font file: TrueType, OpenType, a collection (`index`) or WOFF 1.0 (decompressed with the\n * platform's `DecompressionStream`). WOFF2 needs Brotli, which browsers do not expose, so it is\n * refused with a hint.\n */\nexport async function loadOpenTypeFont(data: ArrayBuffer | ArrayBufferView | Blob, options: { index?: number } = {}): Promise<OpenTypeFont> {\n const buffer = typeof Blob !== 'undefined' && data instanceof Blob ? await data.arrayBuffer() : (data as ArrayBuffer | ArrayBufferView);\n const view = toView(buffer);\n const sig = view.byteLength >= 4 ? view.getUint32(0) : 0;\n if (sig === 0x774f4632) fail('WOFF2 fonts are not supported (they need Brotli); use the TTF, OTF or WOFF file.');\n if (sig !== 0x774f4646) return parseOpenTypeFont(view, options);\n return parseOpenTypeFont(await unwoff(view), options);\n}\n\nasync function inflate(bytes: Uint8Array): Promise<Uint8Array> {\n if (typeof DecompressionStream === 'undefined') fail('Reading WOFF fonts needs DecompressionStream, which this platform lacks; use the TTF or OTF file.');\n const stream = new Blob([bytes as BlobPart]).stream().pipeThrough(new DecompressionStream('deflate'));\n return new Uint8Array(await new Response(stream).arrayBuffer());\n}\n\n/** A WOFF 1.0 file rebuilt as an SFNT. */\nasync function unwoff(view: DataView): Promise<DataView> {\n const r = new Reader(view, 4);\n const flavor = r.u32();\n r.u32();\n const n = r.u16();\n r.u16();\n const total = r.u32();\n const out = new Uint8Array(total);\n const o = new DataView(out.buffer);\n o.setUint32(0, flavor);\n o.setUint16(4, n);\n let pos = 12 + n * 16;\n for (let i = 0; i < n; i++) {\n const e = 44 + i * 20;\n const tag = view.getUint32(e);\n const offset = view.getUint32(e + 4);\n const comp = view.getUint32(e + 8);\n const orig = view.getUint32(e + 12);\n const checksum = view.getUint32(e + 16);\n const raw = new Uint8Array(view.buffer, view.byteOffset + offset, comp);\n const bytes = comp < orig ? await inflate(raw) : raw;\n out.set(bytes.subarray(0, orig), pos);\n const d = 12 + i * 16;\n o.setUint32(d, tag);\n o.setUint32(d + 4, checksum);\n o.setUint32(d + 8, pos);\n o.setUint32(d + 12, orig);\n pos += (orig + 3) & ~3;\n }\n return o;\n}\n"]}
|