@arcblock/did-connect-service 4.1.59 → 4.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/og/font-fallback.d.ts +135 -0
- package/dist/og/font-fallback.d.ts.map +1 -0
- package/dist/og/font-fallback.js +229 -0
- package/dist/og/font-fallback.js.map +1 -0
- package/dist/og/font-subset.d.ts +14 -6
- package/dist/og/font-subset.d.ts.map +1 -1
- package/dist/og/font-subset.js +22 -15
- package/dist/og/font-subset.js.map +1 -1
- package/dist/og/generator.d.ts +2 -2
- package/dist/og/generator.d.ts.map +1 -1
- package/dist/og/generator.js +64 -10
- package/dist/og/generator.js.map +1 -1
- package/dist/og/node-font-files.d.ts +93 -0
- package/dist/og/node-font-files.d.ts.map +1 -0
- package/dist/og/node-font-files.js +298 -0
- package/dist/og/node-font-files.js.map +1 -0
- package/dist/og/subset-fonts.generated.d.ts +40 -6
- package/dist/og/subset-fonts.generated.d.ts.map +1 -1
- package/dist/og/subset-fonts.generated.js +24 -19
- package/dist/og/subset-fonts.generated.js.map +1 -1
- package/dist/og/tree-node.d.ts +14 -10
- package/dist/og/tree-node.d.ts.map +1 -1
- package/dist/og/tree-node.js +45 -111
- package/dist/og/tree-node.js.map +1 -1
- package/dist/og/worker.d.ts +44 -5
- package/dist/og/worker.d.ts.map +1 -1
- package/dist/og/worker.js +301 -94
- package/dist/og/worker.js.map +1 -1
- package/package.json +3 -3
- package/dist/http/security-headers.d.ts +0 -38
- package/dist/http/security-headers.d.ts.map +0 -1
- package/dist/http/security-headers.js +0 -67
- package/dist/http/security-headers.js.map +0 -1
package/dist/og/tree-node.d.ts
CHANGED
|
@@ -22,11 +22,16 @@
|
|
|
22
22
|
* - Subsets (ArcBlock/arc#8800): next to each font, `subset-v1/<same name>`
|
|
23
23
|
* (the bundled face ships `assets/fonts/subset-v1/noto-sans-sc-regular.otf`;
|
|
24
24
|
* for a URL, the sibling `…/subset-v1/NotoSansSC-Regular.otf`). When every
|
|
25
|
-
* character of the tree is covered
|
|
26
|
-
*
|
|
25
|
+
* character of the tree is covered (or the cross-script fallbacks the tree
|
|
26
|
+
* needs anyway draw what only the full face has, `ogPrimaryUsesSubset`) and
|
|
27
|
+
* the subset file exists with the build's sha256, it is used instead of the full face (same pixels, a
|
|
27
28
|
* fraction of the parse). A Bold subset is needed only when a full Bold
|
|
28
29
|
* exists. Otherwise — unknown font, missing file, uncovered text — the full
|
|
29
30
|
* fonts, as before (`fontSubset` on the event says which).
|
|
31
|
+
* - Fallbacks (ArcBlock/arc#8832): characters the Regular font lacks are drawn
|
|
32
|
+
* by other CJK families found NEXT TO it under the font-bucket file names
|
|
33
|
+
* (`node-font-files.ts`), chosen like the Worker (`font-fallback.ts`). The
|
|
34
|
+
* bundled face has none next to it, so the default renders as before.
|
|
30
35
|
*
|
|
31
36
|
* No wall-clock guard around satori/resvg here (`Resvg.render()` is one
|
|
32
37
|
* synchronous wasm call; a timer cannot interrupt it). Render cost is bounded
|
|
@@ -37,6 +42,7 @@
|
|
|
37
42
|
* (ArcBlock/arc#8746) if still wanted.
|
|
38
43
|
*/
|
|
39
44
|
import { type Logger } from "../logger.js";
|
|
45
|
+
import type { OgCjkFamily } from "./font-fallback.js";
|
|
40
46
|
import { type OgFontSubsetStatus } from "./font-subset.js";
|
|
41
47
|
import { type OgTreeRenderOptions } from "./tree.js";
|
|
42
48
|
/** Default deadline for waiting in the process render queue. */
|
|
@@ -51,8 +57,12 @@ export interface OgNodeRenderEvent {
|
|
|
51
57
|
template: "tree";
|
|
52
58
|
/** Weight 700 was requested but no Bold font could be loaded — drawn with Regular. */
|
|
53
59
|
boldFallback?: boolean;
|
|
54
|
-
/**
|
|
60
|
+
/** The primary font's subset used (`"hit"`), not covering what it draws (`"miss"`), or unavailable (`"absent"`). Always set by `renderOgTree`. */
|
|
55
61
|
fontSubset?: OgFontSubsetStatus;
|
|
62
|
+
/** Cross-script fallback fonts added after the primary (arc#8832), as the URL of each family's Regular file. */
|
|
63
|
+
fontFallbacks?: string[];
|
|
64
|
+
/** Fallback families the text needed but the render did not load (over budget, or files missing). */
|
|
65
|
+
fontFallbacksSkipped?: OgCjkFamily[];
|
|
56
66
|
}
|
|
57
67
|
export interface OgNodeTreeRenderOptions extends OgTreeRenderOptions {
|
|
58
68
|
/** Regular font URL. Defaults to `CONNECT_OG_FONT_URL`, then the bundled face. */
|
|
@@ -70,13 +80,7 @@ export interface OgNodeTreeRenderOptions extends OgTreeRenderOptions {
|
|
|
70
80
|
logger?: Logger;
|
|
71
81
|
observer?: (event: OgNodeRenderEvent) => void;
|
|
72
82
|
}
|
|
73
|
-
|
|
74
|
-
export declare function deriveBoldFontUrl(regularUrl: string | undefined): string | undefined;
|
|
75
|
-
/** `…/NotoSansSC-Regular.otf` → `…/subset-v1/NotoSansSC-Regular.otf` (and the file name). */
|
|
76
|
-
export declare function deriveSubsetFontUrl(url: string | undefined): {
|
|
77
|
-
url: string;
|
|
78
|
-
file: string;
|
|
79
|
-
} | undefined;
|
|
83
|
+
export { deriveBoldFontUrl, deriveSubsetFontUrl } from "./node-font-files.js";
|
|
80
84
|
/** Test isolation: forget cached Bold / subset bytes and re-arm the warnings. */
|
|
81
85
|
export declare function resetOgNodeTreeFontsForTesting(): void;
|
|
82
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.d.ts","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tree-node.d.ts","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAQH,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAA2B,KAAK,kBAAkB,EAAwB,MAAM,kBAAkB,CAAC;AAgB1G,OAAO,EAML,KAAK,mBAAmB,EAIzB,MAAM,WAAW,CAAC;AAEnB,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,QAAQ,CAAC;IACtB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kJAAkJ;IAClJ,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,gHAAgH;IAChH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qGAAqG;IACrG,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAED,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AA6E9E,iFAAiF;AACjF,wBAAgB,8BAA8B,IAAI,IAAI,CAIrD;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkIxF"}
|
package/dist/og/tree-node.js
CHANGED
|
@@ -22,11 +22,16 @@
|
|
|
22
22
|
* - Subsets (ArcBlock/arc#8800): next to each font, `subset-v1/<same name>`
|
|
23
23
|
* (the bundled face ships `assets/fonts/subset-v1/noto-sans-sc-regular.otf`;
|
|
24
24
|
* for a URL, the sibling `…/subset-v1/NotoSansSC-Regular.otf`). When every
|
|
25
|
-
* character of the tree is covered
|
|
26
|
-
*
|
|
25
|
+
* character of the tree is covered (or the cross-script fallbacks the tree
|
|
26
|
+
* needs anyway draw what only the full face has, `ogPrimaryUsesSubset`) and
|
|
27
|
+
* the subset file exists with the build's sha256, it is used instead of the full face (same pixels, a
|
|
27
28
|
* fraction of the parse). A Bold subset is needed only when a full Bold
|
|
28
29
|
* exists. Otherwise — unknown font, missing file, uncovered text — the full
|
|
29
30
|
* fonts, as before (`fontSubset` on the event says which).
|
|
31
|
+
* - Fallbacks (ArcBlock/arc#8832): characters the Regular font lacks are drawn
|
|
32
|
+
* by other CJK families found NEXT TO it under the font-bucket file names
|
|
33
|
+
* (`node-font-files.ts`), chosen like the Worker (`font-fallback.ts`). The
|
|
34
|
+
* bundled face has none next to it, so the default renders as before.
|
|
30
35
|
*
|
|
31
36
|
* No wall-clock guard around satori/resvg here (`Resvg.render()` is one
|
|
32
37
|
* synchronous wasm call; a timer cannot interrupt it). Render cost is bounded
|
|
@@ -36,21 +41,22 @@
|
|
|
36
41
|
* Moving renders into `worker_threads` with a timeout is left to the host
|
|
37
42
|
* (ArcBlock/arc#8746) if still wanted.
|
|
38
43
|
*/
|
|
39
|
-
import {
|
|
40
|
-
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
44
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
41
45
|
import { readFile } from "node:fs/promises";
|
|
42
46
|
import { createRequire } from "node:module";
|
|
43
47
|
import { tmpdir } from "node:os";
|
|
44
48
|
import { dirname, join } from "node:path";
|
|
45
49
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
46
50
|
import { consoleLogger } from "../logger.js";
|
|
47
|
-
import {
|
|
51
|
+
import { collectOgTreeCodepoints } from "./font-subset.js";
|
|
48
52
|
import { FONT_FETCH_TIMEOUT_MS, FONT_PATH, loadFont } from "./generator.js";
|
|
49
53
|
import { resolveNodeOgConfig } from "./node-config.js";
|
|
54
|
+
import { deriveBoldFontUrl, deriveSubsetFontUrl, loadNodeFallbackFonts, loadSubsetFile, md5, nodeFallbackFamiliesWanted, nodeFontSetFor, nodePrimaryUsesSubset, resetOgNodeFontFilesForTesting, } from "./node-font-files.js";
|
|
50
55
|
import { rasterizeSvgToPngWithWasm } from "./node-wasm-fallback.js";
|
|
51
56
|
import { createSerialQueue, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OgRenderUnavailableError, OgTreeRenderError, prepareOgTree, wantsBold, withTimeout, } from "./tree.js";
|
|
52
57
|
/** Default deadline for waiting in the process render queue. */
|
|
53
58
|
export const OG_NODE_QUEUE_MAX_WAIT_MS = 20_000;
|
|
59
|
+
export { deriveBoldFontUrl, deriveSubsetFontUrl } from "./node-font-files.js";
|
|
54
60
|
const serialRender = createSerialQueue();
|
|
55
61
|
let satoriReady;
|
|
56
62
|
/** One cached Bold result (keyed by its URL); a different URL replaces it. `null` = no Bold. */
|
|
@@ -75,19 +81,6 @@ function loadSatori() {
|
|
|
75
81
|
}
|
|
76
82
|
return satoriReady;
|
|
77
83
|
}
|
|
78
|
-
function md5(s) {
|
|
79
|
-
return createHash("md5").update(s).digest("hex");
|
|
80
|
-
}
|
|
81
|
-
/** `…Regular…` → `…Bold…` in the last path segment; undefined when the name has no Regular marker. */
|
|
82
|
-
export function deriveBoldFontUrl(regularUrl) {
|
|
83
|
-
if (!regularUrl)
|
|
84
|
-
return undefined;
|
|
85
|
-
const slash = regularUrl.lastIndexOf("/");
|
|
86
|
-
const head = regularUrl.slice(0, slash + 1);
|
|
87
|
-
const name = regularUrl.slice(slash + 1);
|
|
88
|
-
const bold = name.replace(/Regular/, "Bold").replace(/regular/, "bold");
|
|
89
|
-
return bold === name ? undefined : head + bold;
|
|
90
|
-
}
|
|
91
84
|
async function fetchFontBytes(url, fontCacheDir, fetchImpl) {
|
|
92
85
|
if (url.startsWith("file:"))
|
|
93
86
|
return readFile(fileURLToPath(url));
|
|
@@ -127,101 +120,16 @@ async function loadBold(explicitUrl, regularUrl, fontCacheDir, fetchImpl, logger
|
|
|
127
120
|
return null;
|
|
128
121
|
}
|
|
129
122
|
}
|
|
130
|
-
// ---------------------------------------------------------------------------
|
|
131
|
-
// Subset fonts (ArcBlock/arc#8800)
|
|
132
|
-
// ---------------------------------------------------------------------------
|
|
133
|
-
const SUBSET_DIR = OG_SUBSET_PREFIX.slice(OG_SUBSET_PREFIX.lastIndexOf("/") + 1);
|
|
134
|
-
/** `…/NotoSansSC-Regular.otf` → `…/subset-v1/NotoSansSC-Regular.otf` (and the file name). */
|
|
135
|
-
export function deriveSubsetFontUrl(url) {
|
|
136
|
-
if (!url)
|
|
137
|
-
return undefined;
|
|
138
|
-
let parsed;
|
|
139
|
-
try {
|
|
140
|
-
parsed = new URL(url);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
return undefined;
|
|
144
|
-
}
|
|
145
|
-
const slash = parsed.pathname.lastIndexOf("/");
|
|
146
|
-
const name = parsed.pathname.slice(slash + 1);
|
|
147
|
-
if (!name)
|
|
148
|
-
return undefined;
|
|
149
|
-
parsed.pathname = `${parsed.pathname.slice(0, slash + 1)}${SUBSET_DIR}/${name}`;
|
|
150
|
-
let file;
|
|
151
|
-
try {
|
|
152
|
-
file = decodeURIComponent(name);
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
return undefined;
|
|
156
|
-
}
|
|
157
|
-
return { url: parsed.href, file };
|
|
158
|
-
}
|
|
159
|
-
/** Subset file bytes by URL; `null` = missing or not the build's bytes (cached). Errors are not cached. */
|
|
160
|
-
const subsetFiles = new Map();
|
|
161
|
-
let subsetMissingWarned = false;
|
|
162
|
-
async function readSubsetFile(url, fontCacheDir, fetchImpl) {
|
|
163
|
-
if (url.startsWith("file:")) {
|
|
164
|
-
try {
|
|
165
|
-
return await readFile(fileURLToPath(url));
|
|
166
|
-
}
|
|
167
|
-
catch (err) {
|
|
168
|
-
if (err.code === "ENOENT")
|
|
169
|
-
return null;
|
|
170
|
-
throw err;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const diskPath = join(fontCacheDir, `${md5(url)}.font`);
|
|
174
|
-
if (existsSync(diskPath))
|
|
175
|
-
return readFile(diskPath);
|
|
176
|
-
const res = await fetchImpl(url, { signal: AbortSignal.timeout(FONT_FETCH_TIMEOUT_MS) });
|
|
177
|
-
if (res.status === 404 || res.status === 403)
|
|
178
|
-
return null;
|
|
179
|
-
if (!res.ok)
|
|
180
|
-
throw new Error(`subset font fetch failed: ${res.status}`);
|
|
181
|
-
const buf = Buffer.from(await res.arrayBuffer());
|
|
182
|
-
mkdirSync(dirname(diskPath), { recursive: true });
|
|
183
|
-
writeFileSync(diskPath, buf);
|
|
184
|
-
return buf;
|
|
185
|
-
}
|
|
186
|
-
function loadSubsetFile(url, sha256, fontCacheDir, fetchImpl, logger) {
|
|
187
|
-
let entry = subsetFiles.get(url);
|
|
188
|
-
if (!entry) {
|
|
189
|
-
const created = readSubsetFile(url, fontCacheDir, fetchImpl).then(async (bytes) => {
|
|
190
|
-
const reason = !bytes ? "missing" : (await ogFontSha256(bytes)) !== sha256 ? "sha256 mismatch" : undefined;
|
|
191
|
-
if (!reason)
|
|
192
|
-
return bytes;
|
|
193
|
-
// A stale / corrupt download must not stay on disk for the next process.
|
|
194
|
-
if (bytes && !url.startsWith("file:"))
|
|
195
|
-
rmSync(join(fontCacheDir, `${md5(url)}.font`), { force: true });
|
|
196
|
-
if (!subsetMissingWarned) {
|
|
197
|
-
subsetMissingWarned = true;
|
|
198
|
-
logger.warn({ message: `[og] subset font ${reason}; rendering with the full font`, mod: "og" });
|
|
199
|
-
}
|
|
200
|
-
return null;
|
|
201
|
-
});
|
|
202
|
-
created.catch(() => {
|
|
203
|
-
if (subsetFiles.get(url) === created)
|
|
204
|
-
subsetFiles.delete(url);
|
|
205
|
-
});
|
|
206
|
-
subsetFiles.set(url, created);
|
|
207
|
-
entry = created;
|
|
208
|
-
}
|
|
209
|
-
return entry;
|
|
210
|
-
}
|
|
211
123
|
/** The subset set built from the Regular font at `regularUrl` (the bundled face when unset). */
|
|
212
124
|
function subsetPlanFor(regularUrl) {
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
return undefined;
|
|
216
|
-
const set = Object.values(ogSubsetFontSets()).find((candidate) => candidate.regular.file === derived.file);
|
|
217
|
-
return set ? { set, url: derived.url } : undefined;
|
|
125
|
+
const found = nodeFontSetFor(regularUrl);
|
|
126
|
+
return found ? { set: found.set, url: found.subsetUrl } : undefined;
|
|
218
127
|
}
|
|
219
128
|
/** Test isolation: forget cached Bold / subset bytes and re-arm the warnings. */
|
|
220
129
|
export function resetOgNodeTreeFontsForTesting() {
|
|
221
130
|
boldSlot = undefined;
|
|
222
131
|
boldMissingWarned = false;
|
|
223
|
-
|
|
224
|
-
subsetMissingWarned = false;
|
|
132
|
+
resetOgNodeFontFilesForTesting();
|
|
225
133
|
}
|
|
226
134
|
/**
|
|
227
135
|
* Renders a caller-built satori tree to PNG bytes. Rejects with an
|
|
@@ -241,8 +149,12 @@ export async function renderOgTree(options) {
|
|
|
241
149
|
const explicitBoldUrl = options.boldFontUrl ?? config.boldFontUrl;
|
|
242
150
|
const timeoutError = () => new OgRenderUnavailableError(OG_RENDER_UNAVAILABLE_CODES.fontTimeout, `font load exceeded ${fontTimeout}ms`);
|
|
243
151
|
const boldWanted = wantsBold(options.weights);
|
|
244
|
-
const
|
|
245
|
-
const
|
|
152
|
+
const resolvedRegularUrl = regularUrl ?? pathToFileURL(FONT_PATH).href;
|
|
153
|
+
const plan = subsetPlanFor(resolvedRegularUrl);
|
|
154
|
+
const codepoints = collectOgTreeCodepoints(tree);
|
|
155
|
+
// Decided inside the serial section, next to the fallback plan: both read the
|
|
156
|
+
// process's known-missing fallback files, which a concurrent render may update.
|
|
157
|
+
let covered = false;
|
|
246
158
|
/** Full Bold (cached), bounded by the font deadline. */
|
|
247
159
|
const fullBold = () => withTimeout(loadBold(explicitBoldUrl, regularUrl, fontCacheDir, fetchImpl, logger), fontTimeout, timeoutError);
|
|
248
160
|
/** Subset Regular (+ Bold), or null when the full fonts must be used. Errors ⇒ null for this render. */
|
|
@@ -256,7 +168,7 @@ export async function renderOgTree(options) {
|
|
|
256
168
|
return null;
|
|
257
169
|
if (!boldWanted)
|
|
258
170
|
return { regular, bold: null };
|
|
259
|
-
const boldSubset = deriveSubsetFontUrl(explicitBoldUrl ?? deriveBoldFontUrl(
|
|
171
|
+
const boldSubset = deriveSubsetFontUrl(explicitBoldUrl ?? deriveBoldFontUrl(resolvedRegularUrl));
|
|
260
172
|
if (plan.set.bold && boldSubset?.file === plan.set.bold.file) {
|
|
261
173
|
const bold = await load(boldSubset.url, plan.set.bold.sha256);
|
|
262
174
|
if (bold)
|
|
@@ -271,9 +183,21 @@ export async function renderOgTree(options) {
|
|
|
271
183
|
return null;
|
|
272
184
|
}
|
|
273
185
|
}
|
|
274
|
-
|
|
186
|
+
/** Cross-script fallbacks (arc#8832); a failure renders without them for this render. */
|
|
187
|
+
async function fallbackFonts(primaryBytes, primaryFull) {
|
|
188
|
+
try {
|
|
189
|
+
return await withTimeout(loadNodeFallbackFonts({ regularUrl: resolvedRegularUrl, primaryBytes, primaryFull, codepoints, bold: boldWanted, fontCacheDir, fetchImpl, logger }), fontTimeout, timeoutError);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
logger.warn({ message: "[og] fallback font load failed; rendering without fallbacks", mod: "og", err });
|
|
193
|
+
const wanted = { regularUrl: resolvedRegularUrl, primaryBytes, primaryFull, codepoints, bold: boldWanted };
|
|
194
|
+
return { fallbacks: [], skipped: nodeFallbackFamiliesWanted(wanted), degraded: true };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const { png, queueMs, fontReadMs, boldFallback, fontSubset, fallbacks } = await serialRender(async ({ queueMs }) => {
|
|
275
198
|
const satori = await loadSatori();
|
|
276
199
|
const fontStart = performance.now();
|
|
200
|
+
covered = plan ? nodePrimaryUsesSubset(resolvedRegularUrl, codepoints, boldWanted) : false;
|
|
277
201
|
const subset = await subsetFonts();
|
|
278
202
|
const fontSubset = subset ? "hit" : plan && !covered ? "miss" : "absent";
|
|
279
203
|
const regular = subset?.regular ??
|
|
@@ -286,6 +210,7 @@ export async function renderOgTree(options) {
|
|
|
286
210
|
logger.warn({ message: "[og] bold font missing; rendering weight 700 with the regular face", mod: "og" });
|
|
287
211
|
}
|
|
288
212
|
}
|
|
213
|
+
const fallbacks = await fallbackFonts(regular.byteLength + (bold?.byteLength ?? 0), !subset);
|
|
289
214
|
const fontReadMs = performance.now() - fontStart;
|
|
290
215
|
// Fresh ArrayBuffer copies per render: satori's parsed font objects are
|
|
291
216
|
// released with them instead of staying resident (same as the Worker).
|
|
@@ -295,6 +220,13 @@ export async function renderOgTree(options) {
|
|
|
295
220
|
];
|
|
296
221
|
if (bold)
|
|
297
222
|
fonts.push({ name: "Noto", data: copy(bold), weight: 700, style: "normal" });
|
|
223
|
+
// Fallback families after the primary, each under its own name (same as the Worker).
|
|
224
|
+
for (const fallback of fallbacks.fallbacks) {
|
|
225
|
+
const name = `Noto ${fallback.family}`;
|
|
226
|
+
fonts.push({ name, data: copy(fallback.regular), weight: 400, style: "normal" });
|
|
227
|
+
if (fallback.bold)
|
|
228
|
+
fonts.push({ name, data: copy(fallback.bold), weight: 700, style: "normal" });
|
|
229
|
+
}
|
|
298
230
|
let png;
|
|
299
231
|
try {
|
|
300
232
|
// No `loadAdditionalAsset`: og.png's emoji loader downloads glyphs, and a
|
|
@@ -310,7 +242,7 @@ export async function renderOgTree(options) {
|
|
|
310
242
|
// satori/resvg messages can quote the input; report a generic 400.
|
|
311
243
|
throw new OgTreeRenderError(OG_TREE_ERROR_CODES.renderFailed, "the tree could not be rendered");
|
|
312
244
|
}
|
|
313
|
-
return { png, queueMs, fontReadMs, boldFallback: boldWanted && !bold, fontSubset };
|
|
245
|
+
return { png, queueMs, fontReadMs, boldFallback: boldWanted && !bold, fontSubset, fallbacks };
|
|
314
246
|
}, { maxWaitMs: options.queueMaxWaitMs ?? OG_NODE_QUEUE_MAX_WAIT_MS });
|
|
315
247
|
options.observer?.({
|
|
316
248
|
locale: options.locale,
|
|
@@ -319,6 +251,8 @@ export async function renderOgTree(options) {
|
|
|
319
251
|
queueMs,
|
|
320
252
|
fontReadMs,
|
|
321
253
|
fontSubset,
|
|
254
|
+
...(fallbacks.fallbacks.length ? { fontFallbacks: fallbacks.fallbacks.map((f) => f.url) } : {}),
|
|
255
|
+
...(fallbacks.skipped.length ? { fontFallbacksSkipped: fallbacks.skipped } : {}),
|
|
322
256
|
template: "tree",
|
|
323
257
|
...(boldFallback ? { boldFallback: true } : {}),
|
|
324
258
|
});
|
package/dist/og/tree-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-node.js","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree-node.js","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"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"}
|
package/dist/og/worker.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { type Logger } from "../logger.js";
|
|
2
|
+
import { type OgCjkFamily } from "./font-fallback.js";
|
|
2
3
|
import { type OgFontSubsetStatus } from "./font-subset.js";
|
|
3
4
|
import { type OgTreeRenderOptions } from "./tree.js";
|
|
4
5
|
import type { OgGenerateOptions } from "./types.js";
|
|
6
|
+
export type { OgCjkFamily } from "./font-fallback.js";
|
|
7
|
+
export { OG_CJK_FALLBACK_PREFERENCE, OG_FONT_RENDER_BUDGET_BYTES } from "./font-fallback.js";
|
|
5
8
|
export type { OgFontSubsetStatus } from "./font-subset.js";
|
|
6
9
|
export { OG_SUBSET_FONTS, OG_SUBSET_PREFIX } from "./font-subset.js";
|
|
7
10
|
export type { OgImageInspection, OgImageKind, OgRenderUnavailableCode, OgTreeErrorCode, OgTreeImageStats, OgTreeNode, OgTreeRenderOptions, OgTreeWeight, } from "./tree.js";
|
|
@@ -64,8 +67,23 @@ export interface OgWorkerRenderEvent {
|
|
|
64
67
|
queueMs?: number;
|
|
65
68
|
/** Time spent loading fonts — I/O (≈0 when the raw-font slot already held them; includes first wasm init on a cold isolate). */
|
|
66
69
|
fontReadMs?: number;
|
|
67
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* The PRIMARY (locale) font only: its subset used (`"hit"`), not covering the
|
|
72
|
+
* characters it draws (`"miss"`), or unavailable (`"absent"`) — renders only.
|
|
73
|
+
* See {@link OgFontSubsetStatus}. Characters the primary's full font does not
|
|
74
|
+
* have at all are drawn by fallbacks and do not make it a miss; nor do the
|
|
75
|
+
* ones only its full font has when the fallbacks the text needs anyway draw
|
|
76
|
+
* them from their subsets (`ogPrimaryUsesSubset`, arc#8832).
|
|
77
|
+
*/
|
|
68
78
|
fontSubset?: OgFontSubsetStatus;
|
|
79
|
+
/**
|
|
80
|
+
* Cross-script fallback fonts added after the primary (ArcBlock/arc#8832), in
|
|
81
|
+
* satori order, as the bucket key of each family's Regular object
|
|
82
|
+
* (`fonts/subset-v1/…` = its subset). Absent when the primary draws everything.
|
|
83
|
+
*/
|
|
84
|
+
fontFallbacks?: string[];
|
|
85
|
+
/** Fallback families the text needed but the render did not load (over the byte budget, or object missing). */
|
|
86
|
+
fontFallbacksSkipped?: OgCjkFamily[];
|
|
69
87
|
/** Weight 700 was requested but the Bold object is missing — drawn with Regular. */
|
|
70
88
|
boldFallback?: boolean;
|
|
71
89
|
/** `"tree"` for {@link OgWorkerRenderer.renderTree}; the template name for og.png renders. */
|
|
@@ -121,15 +139,30 @@ export interface OgWorkerTreeRenderOptions extends OgTreeRenderOptions, OgWorker
|
|
|
121
139
|
/** Defaults to the console logger. */
|
|
122
140
|
logger?: OgWorkerLogger;
|
|
123
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Raw font bytes kept between renders (ArcBlock/did#300, arc#8832): an LRU of
|
|
144
|
+
* font objects by bucket key, bounded by {@link OG_WORKER_FONT_CACHE_BYTES}.
|
|
145
|
+
* A render may need more than one family (its locale's primary plus
|
|
146
|
+
* cross-script fallbacks, `font-fallback.ts`), so the cache is keyed by object,
|
|
147
|
+
* not by locale. The least recently used objects are dropped once the resident
|
|
148
|
+
* total exceeds the budget; a different bucket clears it. Objects that are
|
|
149
|
+
* missing (or fail their sha256 check) are remembered as `null` for
|
|
150
|
+
* {@link MISSING_RECHECK_MS}, then probed again.
|
|
151
|
+
*
|
|
152
|
+
* Parsed fonts are never kept: each render hands satori fresh copies (see
|
|
153
|
+
* `font-subset.ts` for why a resident parse would grow without bound).
|
|
154
|
+
*/
|
|
155
|
+
export declare const OG_WORKER_FONT_CACHE_BYTES: number;
|
|
124
156
|
export declare function normalizeOgLocale(locale: string | undefined): OgWorkerLocale;
|
|
125
157
|
/** Test isolation for exercising retry after a rejected initialization promise. */
|
|
126
158
|
export declare function resetOgWorkerWasmForTesting(): void;
|
|
127
|
-
/** Test isolation: drop the raw font
|
|
159
|
+
/** Test isolation: drop the raw font cache and re-arm the warnings. */
|
|
128
160
|
export declare function resetOgWorkerFontCacheForTesting(): void;
|
|
129
161
|
/**
|
|
130
|
-
* Introspection for tests/benchmarks:
|
|
131
|
-
*
|
|
132
|
-
* subset objects)
|
|
162
|
+
* Introspection for tests/benchmarks: the most recent render's locale and how
|
|
163
|
+
* many of its bytes are resident (`regularBytes` / `boldBytes`: its full
|
|
164
|
+
* fonts; `subset*`: its subset objects), plus every resident object
|
|
165
|
+
* (`totalBytes`, `keys`, least recently used first).
|
|
133
166
|
*/
|
|
134
167
|
export declare function getOgWorkerFontCacheStats(): Promise<{
|
|
135
168
|
locale?: OgWorkerLocale;
|
|
@@ -137,6 +170,8 @@ export declare function getOgWorkerFontCacheStats(): Promise<{
|
|
|
137
170
|
boldBytes: number;
|
|
138
171
|
subsetRegularBytes: number;
|
|
139
172
|
subsetBoldBytes: number;
|
|
173
|
+
totalBytes: number;
|
|
174
|
+
keys: string[];
|
|
140
175
|
}>;
|
|
141
176
|
/**
|
|
142
177
|
* Resolves a stored branding-logo asset to a satori/resvg-compatible data
|
|
@@ -159,6 +194,10 @@ export declare function resolveOgWorkerLogoDataUri(asset: OgWorkerLogoAsset | nu
|
|
|
159
194
|
* (`fonts/subset-v1/…`, ArcBlock/arc#8800) those are used instead — same
|
|
160
195
|
* pixels, a fraction of the parse; otherwise, or when the subset object is
|
|
161
196
|
* missing (one warning per isolate), the full fonts.
|
|
197
|
+
* - Characters the locale's full font does not have at all are drawn by
|
|
198
|
+
* cross-script fallback families added after it (arc#8832,
|
|
199
|
+
* `font-fallback.ts`; subset or full, within a per-render byte budget); a
|
|
200
|
+
* missing fallback object renders without it (one warning per isolate).
|
|
162
201
|
* - Runs inside the isolate-wide serial queue, so concurrent calls never
|
|
163
202
|
* parse fonts or grow the wasm heap in parallel.
|
|
164
203
|
* - No cache: callers version and cache the result themselves.
|
package/dist/og/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/og/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/og/worker.ts"],"names":[],"mappings":"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"}
|