@danielsimonjr/sciengjs 0.9.0 → 1.0.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 +3 -2
- package/THIRD_PARTY_NOTICES.md +65 -4
- package/dist/browser/render.d.ts +13 -0
- package/dist/browser/render.js +10 -6
- package/dist/browser/render.js.map +1 -1
- package/dist/core.js +20 -12
- package/dist/core.js.map +1 -1
- package/dist/registry.d.ts +6 -0
- package/dist/registry.js +20 -0
- package/dist/registry.js.map +1 -1
- package/dist/tex/backend-pdf.d.ts +3 -0
- package/dist/tex/backend-pdf.js +10 -0
- package/dist/tex/backend-pdf.js.map +1 -0
- package/dist/tex/backend-png.d.ts +6 -0
- package/dist/tex/backend-png.js +19 -0
- package/dist/tex/backend-png.js.map +1 -0
- package/dist/tex/backend-svg.d.ts +3 -0
- package/dist/tex/backend-svg.js +8 -0
- package/dist/tex/backend-svg.js.map +1 -0
- package/dist/tex/bundles.d.ts +49 -0
- package/dist/tex/bundles.js +170 -0
- package/dist/tex/bundles.js.map +1 -0
- package/dist/tex/bundles.json +26 -0
- package/dist/tex/detect.d.ts +27 -0
- package/dist/tex/detect.js +212 -0
- package/dist/tex/detect.js.map +1 -0
- package/dist/tex/dvi.d.ts +44 -0
- package/dist/tex/dvi.js +280 -0
- package/dist/tex/dvi.js.map +1 -0
- package/dist/tex/host.d.ts +82 -0
- package/dist/tex/host.js +313 -0
- package/dist/tex/host.js.map +1 -0
- package/dist/tex/index.d.ts +16 -0
- package/dist/tex/index.js +17 -0
- package/dist/tex/index.js.map +1 -0
- package/dist/tex/render.d.ts +66 -0
- package/dist/tex/render.js +72 -0
- package/dist/tex/render.js.map +1 -0
- package/dist/tex/run.d.ts +51 -0
- package/dist/tex/run.js +54 -0
- package/dist/tex/run.js.map +1 -0
- package/dist/tex/specials.d.ts +32 -0
- package/dist/tex/specials.js +145 -0
- package/dist/tex/specials.js.map +1 -0
- package/dist/tex/stage.d.ts +34 -0
- package/dist/tex/stage.js +102 -0
- package/dist/tex/stage.js.map +1 -0
- package/dist/tex/tfm.d.ts +15 -0
- package/dist/tex/tfm.js +33 -0
- package/dist/tex/tfm.js.map +1 -0
- package/dist/tex/type1.d.ts +32 -0
- package/dist/tex/type1.js +402 -0
- package/dist/tex/type1.js.map +1 -0
- package/dist/tex/vfs.d.ts +37 -0
- package/dist/tex/vfs.js +80 -0
- package/dist/tex/vfs.js.map +1 -0
- package/dist/tex/wasm.d.ts +16 -0
- package/dist/tex/wasm.js +8 -0
- package/dist/tex/wasm.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/protocol.d.ts +6 -0
- package/package.json +110 -106
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
// Type 1 font reader: PFB (or PFA) to SVG path data for each glyph.
|
|
2
|
+
// The format: Adobe Type 1 Font Format (1990), chapters 6 to 8 (charstrings,
|
|
3
|
+
// eexec encryption, flex and hint replacement through the othersubrs).
|
|
4
|
+
// The path is in font units with the y axis up.
|
|
5
|
+
const STANDARD = (() => {
|
|
6
|
+
const e = new Array(256);
|
|
7
|
+
const put = (from, names) => {
|
|
8
|
+
names.split(" ").forEach((n, i) => {
|
|
9
|
+
if (n !== ".")
|
|
10
|
+
e[from + i] = n;
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
put(32, "space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde");
|
|
14
|
+
put(161, "exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl . endash dagger daggerdbl periodcentered . paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand . questiondown . grave acute circumflex tilde macron breve dotaccent dieresis . ring cedilla . hungarumlaut ogonek caron emdash");
|
|
15
|
+
put(225, "AE . ordfeminine . . . . Lslash Oslash OE ordmasculine . . . . . ae . . . dotlessi . . lslash oslash oe germandbls");
|
|
16
|
+
return e;
|
|
17
|
+
})();
|
|
18
|
+
const latin1 = (b, from = 0, to = b.length) => {
|
|
19
|
+
let s = "";
|
|
20
|
+
for (let i = from; i < to; i += 8192)
|
|
21
|
+
s += String.fromCharCode(...b.subarray(i, Math.min(to, i + 8192)));
|
|
22
|
+
return s;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Decrypts Type 1 data with the cipher of the font format: `c1 = 52845`, `c2 = 22719`.
|
|
26
|
+
* Use `r = 55665` for the eexec section and `r = 4330` for a charstring.
|
|
27
|
+
* The function drops the first `skip` plain bytes, which are the random lead bytes.
|
|
28
|
+
*/
|
|
29
|
+
export function decryptType1(b, r, skip) {
|
|
30
|
+
const out = new Uint8Array(Math.max(0, b.length - skip));
|
|
31
|
+
for (let i = 0; i < b.length; i++) {
|
|
32
|
+
const c = b[i];
|
|
33
|
+
const p = c ^ (r >> 8);
|
|
34
|
+
r = ((c + r) * 52845 + 22719) & 0xffff;
|
|
35
|
+
if (i >= skip)
|
|
36
|
+
out[i - skip] = p;
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/** Splits a PFB into the cleartext and the encrypted bytes; a PFA has hex digits after "eexec". */
|
|
41
|
+
function segments(pfb) {
|
|
42
|
+
if (pfb[0] !== 0x80) {
|
|
43
|
+
const text = latin1(pfb);
|
|
44
|
+
const k = text.indexOf("eexec");
|
|
45
|
+
if (k < 0)
|
|
46
|
+
throw new Error("type1: no eexec section");
|
|
47
|
+
const hex = text.slice(k + 5).replace(/[^0-9a-fA-F]/g, "");
|
|
48
|
+
const bin = new Uint8Array(hex.length >> 1);
|
|
49
|
+
for (let i = 0; i < bin.length; i++)
|
|
50
|
+
bin[i] = parseInt(hex.substr(2 * i, 2), 16);
|
|
51
|
+
return { clear: text.slice(0, k + 5), enc: bin };
|
|
52
|
+
}
|
|
53
|
+
let p = 0;
|
|
54
|
+
let clear = "";
|
|
55
|
+
const parts = [];
|
|
56
|
+
while (p < pfb.length) {
|
|
57
|
+
if (pfb[p] !== 0x80)
|
|
58
|
+
throw new Error(`type1: bad PFB segment at byte ${p}`);
|
|
59
|
+
const type = pfb[p + 1];
|
|
60
|
+
if (type === 3)
|
|
61
|
+
break;
|
|
62
|
+
const n = pfb[p + 2] | (pfb[p + 3] << 8) | (pfb[p + 4] << 16) | (pfb[p + 5] << 24);
|
|
63
|
+
if (p + 6 + n > pfb.length)
|
|
64
|
+
throw new Error("type1: PFB segment beyond the file");
|
|
65
|
+
const body = pfb.subarray(p + 6, p + 6 + n);
|
|
66
|
+
if (type === 1)
|
|
67
|
+
clear += latin1(body);
|
|
68
|
+
else if (type === 2)
|
|
69
|
+
parts.push(body);
|
|
70
|
+
else
|
|
71
|
+
throw new Error(`type1: PFB segment type ${type}`);
|
|
72
|
+
p += 6 + n;
|
|
73
|
+
}
|
|
74
|
+
const enc = new Uint8Array(parts.reduce((a, b) => a + b.length, 0));
|
|
75
|
+
let o = 0;
|
|
76
|
+
for (const q of parts) {
|
|
77
|
+
enc.set(q, o);
|
|
78
|
+
o += q.length;
|
|
79
|
+
}
|
|
80
|
+
return { clear, enc };
|
|
81
|
+
}
|
|
82
|
+
/** Reads the binary entries "<n> RD <n bytes>" that follow each match of `head`. */
|
|
83
|
+
function binaryEntries(priv, text, head, max) {
|
|
84
|
+
const out = new Map();
|
|
85
|
+
head.lastIndex = 0;
|
|
86
|
+
for (let m; (m = head.exec(text)) && out.size < max;) {
|
|
87
|
+
const n = Number(m[2]);
|
|
88
|
+
const start = m.index + m[0].length;
|
|
89
|
+
if (start + n > priv.length)
|
|
90
|
+
throw new Error(`type1: entry ${m[1]} beyond the private part`);
|
|
91
|
+
out.set(m[1], priv.subarray(start, start + n));
|
|
92
|
+
head.lastIndex = start + n;
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
const r2 = (v) => String(Math.round(v * 100) / 100);
|
|
97
|
+
/**
|
|
98
|
+
* Reads a Type 1 font from the bytes of a PFB or PFA file. The function decrypts the private part at once.
|
|
99
|
+
* It runs the charstring of a glyph on the first request for it and keeps the result.
|
|
100
|
+
*/
|
|
101
|
+
export function readType1(pfb) {
|
|
102
|
+
const { clear, enc } = segments(pfb);
|
|
103
|
+
const priv = decryptType1(enc, 55665, 4);
|
|
104
|
+
const text = latin1(priv);
|
|
105
|
+
const fontName = /\/FontName\s*\/(\S+)/.exec(clear)?.[1];
|
|
106
|
+
if (!fontName)
|
|
107
|
+
throw new Error("type1: no /FontName");
|
|
108
|
+
const nums = (re) => {
|
|
109
|
+
const m = re.exec(clear);
|
|
110
|
+
return m ? m[1].trim().split(/\s+/).map(Number) : null;
|
|
111
|
+
};
|
|
112
|
+
const fontBBox = nums(/\/FontBBox\s*[{[]([^}\]]*)[}\]]/) ?? [0, 0, 0, 0];
|
|
113
|
+
const fontMatrix = nums(/\/FontMatrix\s*\[([^\]]*)\]/) ?? [0.001, 0, 0, 0.001, 0, 0];
|
|
114
|
+
let encoding;
|
|
115
|
+
if (/\/Encoding\s+StandardEncoding\s+def/.test(clear))
|
|
116
|
+
encoding = STANDARD.slice();
|
|
117
|
+
else {
|
|
118
|
+
encoding = new Array(256);
|
|
119
|
+
for (const m of clear.matchAll(/dup\s+(\d+)\s*\/(\S+)\s+put/g))
|
|
120
|
+
encoding[Number(m[1])] = m[2];
|
|
121
|
+
}
|
|
122
|
+
const lenIV = Number(/\/lenIV\s+(-?\d+)/.exec(text)?.[1] ?? 4);
|
|
123
|
+
const subrStart = text.search(/\/Subrs\s+\d+\s+array/);
|
|
124
|
+
const csStart = text.search(/\/CharStrings\s+\d+\s+dict/);
|
|
125
|
+
if (csStart < 0)
|
|
126
|
+
throw new Error("type1: no /CharStrings");
|
|
127
|
+
const subrs = new Map();
|
|
128
|
+
if (subrStart >= 0) {
|
|
129
|
+
const head = /dup\s+(\d+)\s+(\d+)\s+(?:RD|-\|) /g;
|
|
130
|
+
head.lastIndex = subrStart;
|
|
131
|
+
const count = Number(/\/Subrs\s+(\d+)/.exec(text.slice(subrStart))[1]);
|
|
132
|
+
for (const [k, v] of binaryEntries(priv, text, head, count))
|
|
133
|
+
subrs.set(Number(k), v);
|
|
134
|
+
}
|
|
135
|
+
const head = /\/([^\s/]+)\s+(\d+)\s+(?:RD|-\|) /g;
|
|
136
|
+
head.lastIndex = csStart;
|
|
137
|
+
const csCount = Number(/\/CharStrings\s+(\d+)/.exec(text.slice(csStart))[1]);
|
|
138
|
+
const charStrings = binaryEntries(priv, text, head, csCount);
|
|
139
|
+
const plain = (b) => (lenIV < 0 ? b : decryptType1(b, 4330, lenIV));
|
|
140
|
+
const cache = new Map();
|
|
141
|
+
function run(name) {
|
|
142
|
+
const cs = charStrings.get(name);
|
|
143
|
+
if (!cs)
|
|
144
|
+
return null;
|
|
145
|
+
const d = [];
|
|
146
|
+
let x = 0;
|
|
147
|
+
let y = 0;
|
|
148
|
+
let open = false;
|
|
149
|
+
let pendingMove = false;
|
|
150
|
+
let advance = 0;
|
|
151
|
+
let sbx = 0;
|
|
152
|
+
let minX = Infinity;
|
|
153
|
+
let minY = Infinity;
|
|
154
|
+
let maxX = -Infinity;
|
|
155
|
+
let maxY = -Infinity;
|
|
156
|
+
const pt = (px, py) => {
|
|
157
|
+
minX = Math.min(minX, px);
|
|
158
|
+
minY = Math.min(minY, py);
|
|
159
|
+
maxX = Math.max(maxX, px);
|
|
160
|
+
maxY = Math.max(maxY, py);
|
|
161
|
+
return `${r2(px)} ${r2(py)}`;
|
|
162
|
+
};
|
|
163
|
+
const close = () => {
|
|
164
|
+
if (open) {
|
|
165
|
+
d.push("Z");
|
|
166
|
+
open = false;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const moveTo = (nx, ny) => {
|
|
170
|
+
close();
|
|
171
|
+
x = nx;
|
|
172
|
+
y = ny;
|
|
173
|
+
pendingMove = true;
|
|
174
|
+
};
|
|
175
|
+
const start = () => {
|
|
176
|
+
if (pendingMove || !open) {
|
|
177
|
+
d.push(`M ${pt(x, y)}`);
|
|
178
|
+
pendingMove = false;
|
|
179
|
+
open = true;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
const lineTo = (nx, ny) => {
|
|
183
|
+
start();
|
|
184
|
+
x = nx;
|
|
185
|
+
y = ny;
|
|
186
|
+
d.push(`L ${pt(x, y)}`);
|
|
187
|
+
};
|
|
188
|
+
const curveTo = (x1, y1, x2, y2, x3, y3) => {
|
|
189
|
+
start();
|
|
190
|
+
d.push(`C ${pt(x1, y1)} ${pt(x2, y2)} ${pt(x3, y3)}`);
|
|
191
|
+
x = x3;
|
|
192
|
+
y = y3;
|
|
193
|
+
};
|
|
194
|
+
let flex = null;
|
|
195
|
+
const ps = [];
|
|
196
|
+
const exec = (code, ox, oy, depth, st) => {
|
|
197
|
+
if (depth > 20)
|
|
198
|
+
throw new Error(`type1 ${name}: subr nesting too deep`);
|
|
199
|
+
const b = plain(code);
|
|
200
|
+
for (let i = 0; i < b.length;) {
|
|
201
|
+
const v = b[i++];
|
|
202
|
+
if (v >= 32) {
|
|
203
|
+
if (v <= 246)
|
|
204
|
+
st.push(v - 139);
|
|
205
|
+
else if (v <= 250)
|
|
206
|
+
st.push((v - 247) * 256 + b[i++] + 108);
|
|
207
|
+
else if (v <= 254)
|
|
208
|
+
st.push(-(v - 251) * 256 - b[i++] - 108);
|
|
209
|
+
else {
|
|
210
|
+
st.push((b[i] << 24) | (b[i + 1] << 16) | (b[i + 2] << 8) | b[i + 3]);
|
|
211
|
+
i += 4;
|
|
212
|
+
}
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const rmove = (dx, dy) => {
|
|
216
|
+
if (flex) {
|
|
217
|
+
// the flex points run from the point before the flex; the current point stays there until the flex ends
|
|
218
|
+
const last = flex[flex.length - 1] ?? [x, y];
|
|
219
|
+
flex.push([last[0] + dx, last[1] + dy]);
|
|
220
|
+
}
|
|
221
|
+
else
|
|
222
|
+
moveTo(x + dx, y + dy);
|
|
223
|
+
};
|
|
224
|
+
switch (v) {
|
|
225
|
+
case 13: // hsbw
|
|
226
|
+
sbx = st[0];
|
|
227
|
+
advance = st[1];
|
|
228
|
+
x = ox + st[0];
|
|
229
|
+
y = oy;
|
|
230
|
+
st.length = 0;
|
|
231
|
+
break;
|
|
232
|
+
case 21:
|
|
233
|
+
rmove(st[0], st[1]);
|
|
234
|
+
st.length = 0;
|
|
235
|
+
break;
|
|
236
|
+
case 22:
|
|
237
|
+
rmove(st[0], 0);
|
|
238
|
+
st.length = 0;
|
|
239
|
+
break;
|
|
240
|
+
case 4:
|
|
241
|
+
rmove(0, st[0]);
|
|
242
|
+
st.length = 0;
|
|
243
|
+
break;
|
|
244
|
+
case 5:
|
|
245
|
+
lineTo(x + st[0], y + st[1]);
|
|
246
|
+
st.length = 0;
|
|
247
|
+
break;
|
|
248
|
+
case 6:
|
|
249
|
+
lineTo(x + st[0], y);
|
|
250
|
+
st.length = 0;
|
|
251
|
+
break;
|
|
252
|
+
case 7:
|
|
253
|
+
lineTo(x, y + st[0]);
|
|
254
|
+
st.length = 0;
|
|
255
|
+
break;
|
|
256
|
+
case 8: {
|
|
257
|
+
const [a, b2, c, e, f, g] = st;
|
|
258
|
+
curveTo(x + a, y + b2, x + a + c, y + b2 + e, x + a + c + f, y + b2 + e + g);
|
|
259
|
+
st.length = 0;
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
case 30: {
|
|
263
|
+
const [a, b2, c, e] = st;
|
|
264
|
+
curveTo(x, y + a, x + b2, y + a + c, x + b2 + e, y + a + c);
|
|
265
|
+
st.length = 0;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case 31: {
|
|
269
|
+
const [a, b2, c, e] = st;
|
|
270
|
+
curveTo(x + a, y, x + a + b2, y + c, x + a + b2, y + c + e);
|
|
271
|
+
st.length = 0;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
case 9:
|
|
275
|
+
close();
|
|
276
|
+
st.length = 0;
|
|
277
|
+
break;
|
|
278
|
+
case 14:
|
|
279
|
+
close();
|
|
280
|
+
st.length = 0;
|
|
281
|
+
return "end";
|
|
282
|
+
case 1:
|
|
283
|
+
case 3: // hstem, vstem
|
|
284
|
+
st.length = 0;
|
|
285
|
+
break;
|
|
286
|
+
case 10: {
|
|
287
|
+
const n = st.pop();
|
|
288
|
+
const s = subrs.get(n);
|
|
289
|
+
if (!s)
|
|
290
|
+
throw new Error(`type1 ${name}: no subr ${n}`);
|
|
291
|
+
if (exec(s, ox, oy, depth + 1, st) === "end")
|
|
292
|
+
return "end";
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
case 11:
|
|
296
|
+
return "return";
|
|
297
|
+
case 12: {
|
|
298
|
+
const w = b[i++];
|
|
299
|
+
switch (w) {
|
|
300
|
+
case 0:
|
|
301
|
+
case 1:
|
|
302
|
+
case 2: // dotsection, vstem3, hstem3
|
|
303
|
+
st.length = 0;
|
|
304
|
+
break;
|
|
305
|
+
case 7: // sbw
|
|
306
|
+
sbx = st[0];
|
|
307
|
+
advance = st[2];
|
|
308
|
+
x = ox + st[0];
|
|
309
|
+
y = oy + st[1];
|
|
310
|
+
st.length = 0;
|
|
311
|
+
break;
|
|
312
|
+
case 12: {
|
|
313
|
+
// div
|
|
314
|
+
const q = st.pop();
|
|
315
|
+
const p2 = st.pop();
|
|
316
|
+
st.push(p2 / q);
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
case 16: {
|
|
320
|
+
// callothersubr
|
|
321
|
+
const other = st.pop();
|
|
322
|
+
const n = st.pop();
|
|
323
|
+
const args = st.splice(st.length - n, n);
|
|
324
|
+
if (other === 1)
|
|
325
|
+
flex = [];
|
|
326
|
+
else if (other === 0) {
|
|
327
|
+
if (!flex || flex.length < 7)
|
|
328
|
+
throw new Error(`type1 ${name}: flex with ${flex?.length ?? 0} points`);
|
|
329
|
+
const p = flex;
|
|
330
|
+
flex = null;
|
|
331
|
+
curveTo(p[1][0], p[1][1], p[2][0], p[2][1], p[3][0], p[3][1]);
|
|
332
|
+
curveTo(p[4][0], p[4][1], p[5][0], p[5][1], p[6][0], p[6][1]);
|
|
333
|
+
ps.push(args[2], args[1]);
|
|
334
|
+
}
|
|
335
|
+
else if (other === 2) {
|
|
336
|
+
// flex point marker
|
|
337
|
+
}
|
|
338
|
+
else
|
|
339
|
+
for (let k = args.length - 1; k >= 0; k--)
|
|
340
|
+
ps.push(args[k]); // 3 (hint replacement) and others
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
case 17: // pop
|
|
344
|
+
st.push(ps.pop());
|
|
345
|
+
break;
|
|
346
|
+
case 33: // setcurrentpoint
|
|
347
|
+
x = ox + st[0];
|
|
348
|
+
y = oy + st[1];
|
|
349
|
+
st.length = 0;
|
|
350
|
+
break;
|
|
351
|
+
case 6: {
|
|
352
|
+
// seac
|
|
353
|
+
const [asb, adx, ady, bchar, achar] = st;
|
|
354
|
+
st.length = 0;
|
|
355
|
+
const bn = STANDARD[bchar];
|
|
356
|
+
const an = STANDARD[achar];
|
|
357
|
+
const bs = bn === undefined ? undefined : charStrings.get(bn);
|
|
358
|
+
const as = an === undefined ? undefined : charStrings.get(an);
|
|
359
|
+
if (!bs || !as)
|
|
360
|
+
throw new Error(`type1 ${name}: seac parts ${bn} ${an} missing`);
|
|
361
|
+
const keep = { advance, sbx };
|
|
362
|
+
exec(bs, ox, oy, depth + 1, []);
|
|
363
|
+
close();
|
|
364
|
+
exec(as, ox + adx - asb + keep.sbx, oy + ady, depth + 1, []);
|
|
365
|
+
close();
|
|
366
|
+
advance = keep.advance;
|
|
367
|
+
sbx = keep.sbx;
|
|
368
|
+
return "end";
|
|
369
|
+
}
|
|
370
|
+
default:
|
|
371
|
+
throw new Error(`type1 ${name}: unknown command 12 ${w}`);
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
default:
|
|
376
|
+
throw new Error(`type1 ${name}: unknown command ${v}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return "done";
|
|
380
|
+
};
|
|
381
|
+
exec(cs, 0, 0, 0, []);
|
|
382
|
+
close();
|
|
383
|
+
const empty = d.length === 0;
|
|
384
|
+
return { name, advance, d: d.join(" "), bbox: empty ? [0, 0, 0, 0] : [minX, minY, maxX, maxY] };
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
fontName,
|
|
388
|
+
fontBBox,
|
|
389
|
+
fontMatrix,
|
|
390
|
+
encoding,
|
|
391
|
+
glyph(code) {
|
|
392
|
+
const hit = cache.get(code);
|
|
393
|
+
if (hit !== undefined)
|
|
394
|
+
return hit;
|
|
395
|
+
const name = encoding[code];
|
|
396
|
+
const g = name === undefined ? null : run(name);
|
|
397
|
+
cache.set(code, g);
|
|
398
|
+
return g;
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=type1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type1.js","sourceRoot":"","sources":["../../src/tex/type1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** A file of the tree: its bytes, or a function that reads them on the first use. */
|
|
2
|
+
export type TreeFile = Uint8Array | (() => Uint8Array);
|
|
3
|
+
/**
|
|
4
|
+
* Reduces a file name of TeX to the key of the tree. The tree has one flat name space in lower case.
|
|
5
|
+
* The function removes an area prefix (`TeXinputs:`), the braces of `\input{name}`, the quotes of a quoted name,
|
|
6
|
+
* a `./` start and every folder part. A name that escapes the tree throws a `RenderError` with the code `E_INPUT`.
|
|
7
|
+
* Escapes are a `..` segment, a leading slash or backslash (an absolute path or a UNC path) and a drive letter.
|
|
8
|
+
*/
|
|
9
|
+
export declare function treeName(raw: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* The virtual file tree of a TeX run. A read sees only the files put in the tree: the bundles and the source.
|
|
12
|
+
* A write goes to memory only. The tree has no access to the host file system.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TexTree {
|
|
15
|
+
private readonly input;
|
|
16
|
+
private readonly output;
|
|
17
|
+
private parent;
|
|
18
|
+
/** The names of the input files that a run has read. */
|
|
19
|
+
readonly read: Set<string>;
|
|
20
|
+
/** The files that a run has written, by name. */
|
|
21
|
+
get written(): ReadonlyMap<string, Uint8Array>;
|
|
22
|
+
/** Adds an input file. A name that is already in the tree keeps its first file. */
|
|
23
|
+
add(name: string, file: TreeFile): void;
|
|
24
|
+
/** Stores a written file. It hides an input file of the same name until the tree deletes it. */
|
|
25
|
+
put(name: string, data: Uint8Array): void;
|
|
26
|
+
/**
|
|
27
|
+
* Makes a tree that sees every file of this tree and keeps its own writes and its own added files.
|
|
28
|
+
* A run on the fork leaves this tree as it was, so a bundle tree serves many runs.
|
|
29
|
+
*/
|
|
30
|
+
fork(): TexTree;
|
|
31
|
+
/** Whether a file of this name is in the tree. */
|
|
32
|
+
has(name: string): boolean;
|
|
33
|
+
/** Reads a file. The result is `undefined` for a name that is not in the tree. */
|
|
34
|
+
get(name: string): Uint8Array | undefined;
|
|
35
|
+
/** Deletes a written file. An input file stays. */
|
|
36
|
+
delete(name: string): void;
|
|
37
|
+
}
|
package/dist/tex/vfs.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { RenderError } from "../errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reduces a file name of TeX to the key of the tree. The tree has one flat name space in lower case.
|
|
4
|
+
* The function removes an area prefix (`TeXinputs:`), the braces of `\input{name}`, the quotes of a quoted name,
|
|
5
|
+
* a `./` start and every folder part. A name that escapes the tree throws a `RenderError` with the code `E_INPUT`.
|
|
6
|
+
* Escapes are a `..` segment, a leading slash or backslash (an absolute path or a UNC path) and a drive letter.
|
|
7
|
+
*/
|
|
8
|
+
export function treeName(raw) {
|
|
9
|
+
const name = raw.replace(/^[A-Za-z]{2,}:/, "").replace(/^{(.*)}$/, "$1").replace(/"/g, "");
|
|
10
|
+
if (/^[\\/]/.test(name) || /^[A-Za-z]:/.test(name) || name.split(/[\\/]/).includes("..")) {
|
|
11
|
+
throw new RenderError("E_INPUT", `the file name ${JSON.stringify(raw)} escapes the virtual file tree`);
|
|
12
|
+
}
|
|
13
|
+
const parts = name.split(/[\\/]/);
|
|
14
|
+
return parts[parts.length - 1].toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The virtual file tree of a TeX run. A read sees only the files put in the tree: the bundles and the source.
|
|
18
|
+
* A write goes to memory only. The tree has no access to the host file system.
|
|
19
|
+
*/
|
|
20
|
+
export class TexTree {
|
|
21
|
+
input = new Map();
|
|
22
|
+
output = new Map();
|
|
23
|
+
parent;
|
|
24
|
+
/** The names of the input files that a run has read. */
|
|
25
|
+
read = new Set();
|
|
26
|
+
/** The files that a run has written, by name. */
|
|
27
|
+
get written() {
|
|
28
|
+
return this.output;
|
|
29
|
+
}
|
|
30
|
+
/** Adds an input file. A name that is already in the tree keeps its first file. */
|
|
31
|
+
add(name, file) {
|
|
32
|
+
const key = treeName(name);
|
|
33
|
+
if (!this.input.has(key))
|
|
34
|
+
this.input.set(key, file);
|
|
35
|
+
}
|
|
36
|
+
/** Stores a written file. It hides an input file of the same name until the tree deletes it. */
|
|
37
|
+
put(name, data) {
|
|
38
|
+
this.output.set(treeName(name), data);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Makes a tree that sees every file of this tree and keeps its own writes and its own added files.
|
|
42
|
+
* A run on the fork leaves this tree as it was, so a bundle tree serves many runs.
|
|
43
|
+
*/
|
|
44
|
+
fork() {
|
|
45
|
+
const child = new TexTree();
|
|
46
|
+
child.parent = this;
|
|
47
|
+
return child;
|
|
48
|
+
}
|
|
49
|
+
/** Whether a file of this name is in the tree. */
|
|
50
|
+
has(name) {
|
|
51
|
+
const key = treeName(name);
|
|
52
|
+
return this.output.has(key) || this.input.has(key) || (this.parent?.has(key) ?? false);
|
|
53
|
+
}
|
|
54
|
+
/** Reads a file. The result is `undefined` for a name that is not in the tree. */
|
|
55
|
+
get(name) {
|
|
56
|
+
const key = treeName(name);
|
|
57
|
+
const written = this.output.get(key);
|
|
58
|
+
if (written !== undefined)
|
|
59
|
+
return written;
|
|
60
|
+
const file = this.input.get(key);
|
|
61
|
+
if (file === undefined) {
|
|
62
|
+
const inherited = this.parent?.get(key);
|
|
63
|
+
if (inherited !== undefined)
|
|
64
|
+
this.read.add(key);
|
|
65
|
+
return inherited;
|
|
66
|
+
}
|
|
67
|
+
this.read.add(key);
|
|
68
|
+
if (typeof file === "function") {
|
|
69
|
+
const data = file();
|
|
70
|
+
this.input.set(key, data);
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
|
+
return file;
|
|
74
|
+
}
|
|
75
|
+
/** Deletes a written file. An input file stays. */
|
|
76
|
+
delete(name) {
|
|
77
|
+
this.output.delete(treeName(name));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=vfs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/tex/vfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** A compiled WASM module. The runtime does not look inside. */
|
|
2
|
+
export type WasmModule = object;
|
|
3
|
+
/** An instance of a WASM module. */
|
|
4
|
+
export interface WasmInstance {
|
|
5
|
+
exports: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
/** The memory export of an instance. */
|
|
8
|
+
export interface WasmMemory {
|
|
9
|
+
buffer: ArrayBuffer;
|
|
10
|
+
}
|
|
11
|
+
/** The import object of the engine. */
|
|
12
|
+
export interface EngineImports {
|
|
13
|
+
env: Record<string, (...args: number[]) => unknown>;
|
|
14
|
+
}
|
|
15
|
+
/** Instantiates a compiled module with the imports. */
|
|
16
|
+
export declare function instantiate(module: WasmModule, imports: EngineImports): Promise<WasmInstance>;
|
package/dist/tex/wasm.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// The WebAssembly types that the TeX runtime needs. The build uses the Node types only, which do not declare
|
|
2
|
+
// the WebAssembly namespace, so the runtime names the few members it uses and reaches the global by value.
|
|
3
|
+
/** Instantiates a compiled module with the imports. */
|
|
4
|
+
export function instantiate(module, imports) {
|
|
5
|
+
const api = globalThis.WebAssembly;
|
|
6
|
+
return api.instantiate(module, imports);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/tex/wasm.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,2GAA2G;AAoB3G,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,OAAsB;IACpE,MAAM,GAAG,GAAI,UAAkH,CAAC,WAAW,CAAC;IAC5I,OAAO,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ENGINE_VERSION = "0.
|
|
1
|
+
export declare const ENGINE_VERSION = "1.0.0";
|
package/dist/version.js
CHANGED
|
@@ -22,6 +22,12 @@ export interface BackendSettings {
|
|
|
22
22
|
maxCadFacets: number;
|
|
23
23
|
/** The size limit of one remote image body, in bytes. */
|
|
24
24
|
maxImageBytes: number;
|
|
25
|
+
/** The cache folder. The tex stage keeps its bundles there. */
|
|
26
|
+
cacheDir: string;
|
|
27
|
+
/** The base URL of the TeX bundles. */
|
|
28
|
+
texBundleUrl: string;
|
|
29
|
+
/** The files of the core TeX bundle, checked and unpacked by the parent process. Only a tex render has them. */
|
|
30
|
+
texCore?: ReadonlyMap<string, Uint8Array>;
|
|
25
31
|
}
|
|
26
32
|
/** What the worker receives: one render request and the backend module that serves it. */
|
|
27
33
|
export interface WorkerJob {
|