@solidtv/renderer 1.6.2 → 1.6.4
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/exports/index.d.ts +1 -0
- package/dist/exports/index.js +3 -0
- package/dist/exports/index.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -1
- package/dist/src/core/lib/ImageWorker.js +25 -3
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.js +28 -8
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/FontPrefetch.d.ts +55 -0
- package/dist/src/core/text-rendering/FontPrefetch.js +140 -0
- package/dist/src/core/text-rendering/FontPrefetch.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +42 -10
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +10 -10
- package/dist/src/main-api/Renderer.js +3 -3
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/index.ts +7 -0
- package/package.json +1 -1
- package/src/core/lib/ImageWorker.test.ts +26 -2
- package/src/core/lib/ImageWorker.ts +24 -3
- package/src/core/text-rendering/CanvasFontHandler.ts +32 -11
- package/src/core/text-rendering/FontPrefetch.ts +195 -0
- package/src/core/text-rendering/SdfFontHandler.ts +50 -10
- package/src/core/text-rendering/tests/FontPrefetch.test.ts +341 -0
- package/src/core/text-rendering/tests/SdfFontHandler.test.ts +43 -0
- package/src/main-api/Renderer.ts +13 -13
package/dist/exports/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export * from '../src/common/CommonTypes.js';
|
|
|
24
24
|
export { CoreTextureManager, type TextureMap, } from '../src/core/CoreTextureManager.js';
|
|
25
25
|
export { TextureError, TextureErrorCode, isTextureError, } from '../src/core/TextureError.js';
|
|
26
26
|
export type { MemoryInfo } from '../src/core/TextureMemoryManager.js';
|
|
27
|
+
export { prefetchFont, clearFontPrefetch, type FontPrefetchOptions, } from '../src/core/text-rendering/FontPrefetch.js';
|
|
27
28
|
export type { AnimationSettings } from '../src/core/animations/CoreAnimation.js';
|
|
28
29
|
export type { TimingFunction } from '../src/core/utils.js';
|
|
29
30
|
export type { Inspector } from '../src/main-api/Inspector.js';
|
package/dist/exports/index.js
CHANGED
|
@@ -25,6 +25,9 @@ export * from '../src/common/CommonTypes.js';
|
|
|
25
25
|
// context of the main API.
|
|
26
26
|
export { CoreTextureManager, } from '../src/core/CoreTextureManager.js';
|
|
27
27
|
export { TextureError, TextureErrorCode, isTextureError, } from '../src/core/TextureError.js';
|
|
28
|
+
// Font prefetching. Stage-free by design so an app can start font downloads
|
|
29
|
+
// before constructing the renderer; pulls in no GL or text-renderer code.
|
|
30
|
+
export { prefetchFont, clearFontPrefetch, } from '../src/core/text-rendering/FontPrefetch.js';
|
|
28
31
|
export * from '../src/core/renderers/CoreShaderNode.js';
|
|
29
32
|
export * from '../src/core/shaders/templates/BorderTemplate.js';
|
|
30
33
|
export * from '../src/core/shaders/templates/HolePunchTemplate.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../exports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,GAEnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../exports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,GAEnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,6BAA6B,CAAC;AAErC,4EAA4E;AAC5E,0EAA0E;AAC1E,OAAO,EACL,YAAY,EACZ,iBAAiB,GAElB,MAAM,4CAA4C,CAAC;AAMpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iDAAiD,CAAC;AAChE,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,yDAAyD,CAAC;AACxE,cAAc,mDAAmD,CAAC;AAClE,cAAc,yDAAyD,CAAC;AAExE,UAAU;AACV,cAAc,mDAAmD,CAAC;AAGlE,WAAW;AACX,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -14,7 +14,8 @@ export declare class ImageWorkerManager {
|
|
|
14
14
|
constructor(numImageWorkers: number, createImageBitmapSupport: CreateImageBitmapSupport);
|
|
15
15
|
/**
|
|
16
16
|
* Build the shared worker source once and spawn the full pool in a single
|
|
17
|
-
* burst.
|
|
17
|
+
* burst. Scheduled from the constructor via `setTimeout`; also called
|
|
18
|
+
* lazily from `getImage` if a request arrives first. No-op once spawned.
|
|
18
19
|
*/
|
|
19
20
|
private spawnWorkers;
|
|
20
21
|
private handleMessage;
|
|
@@ -135,10 +135,32 @@ export class ImageWorkerManager {
|
|
|
135
135
|
constructor(numImageWorkers, createImageBitmapSupport) {
|
|
136
136
|
this.maxWorkers = numImageWorkers;
|
|
137
137
|
this.createImageBitmapSupport = createImageBitmapSupport;
|
|
138
|
+
// Warm the pool on the next macrotask instead of waiting for the first
|
|
139
|
+
// image request. Spawning costs main-thread time (blob serialization +
|
|
140
|
+
// one Worker construction per slot); deferring it by a task keeps it off
|
|
141
|
+
// the synchronous renderer-construction path, while still having the pool
|
|
142
|
+
// ready before textures start arriving. `getImage` keeps its lazy spawn
|
|
143
|
+
// for a request that beats this timer.
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
// Not a hot path (fires once, at boot). The guard matters because this
|
|
146
|
+
// runs detached from any caller: `new Worker(blob:)` can throw outright
|
|
147
|
+
// where CSP forbids blob workers, and an uncaught throw here would take
|
|
148
|
+
// out whatever task the timer landed in. Swallowing it leaves the pool
|
|
149
|
+
// empty, so `getImage` retries the spawn inside its own try/catch and
|
|
150
|
+
// surfaces the failure as a rejected image promise — the pre-warmup
|
|
151
|
+
// behavior.
|
|
152
|
+
try {
|
|
153
|
+
this.spawnWorkers();
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
/* empty */
|
|
157
|
+
}
|
|
158
|
+
}, 0);
|
|
138
159
|
}
|
|
139
160
|
/**
|
|
140
161
|
* Build the shared worker source once and spawn the full pool in a single
|
|
141
|
-
* burst.
|
|
162
|
+
* burst. Scheduled from the constructor via `setTimeout`; also called
|
|
163
|
+
* lazily from `getImage` if a request arrives first. No-op once spawned.
|
|
142
164
|
*/
|
|
143
165
|
spawnWorkers() {
|
|
144
166
|
if (this.workers.length > 0) {
|
|
@@ -246,8 +268,8 @@ export class ImageWorkerManager {
|
|
|
246
268
|
try {
|
|
247
269
|
let nextWorkerIndex = this.getNextWorkerIndex();
|
|
248
270
|
if (nextWorkerIndex === -1) {
|
|
249
|
-
//
|
|
250
|
-
//
|
|
271
|
+
// Request beat the constructor's scheduled warmup — spin up the
|
|
272
|
+
// whole pool now rather than making this image wait a task.
|
|
251
273
|
this.spawnWorkers();
|
|
252
274
|
nextWorkerIndex = this.getNextWorkerIndex();
|
|
253
275
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageWorker.js","sourceRoot":"","sources":["../../../../src/core/lib/ImageWorker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ImageWorker.js","sourceRoot":"","sources":["../../../../src/core/lib/ImageWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { hasZeroWidthSpace } from './Utils.js';
|
|
2
2
|
import { UpdateType } from '../CoreNode.js';
|
|
3
3
|
import { defaultFontMetrics, normalizeFontMetrics, } from './TextLayoutEngine.js';
|
|
4
|
+
import { takeCanvasPrefetch } from './FontPrefetch.js';
|
|
4
5
|
// Global state variables for fontHandler
|
|
5
6
|
const fontFamilies = {};
|
|
6
7
|
const fontLoadPromises = new Map();
|
|
@@ -36,6 +37,9 @@ export const loadFont = (stage, options) => {
|
|
|
36
37
|
// download by URL).
|
|
37
38
|
const names = Array.isArray(fontFamily) ? fontFamily : [fontFamily];
|
|
38
39
|
const primary = names[0];
|
|
40
|
+
// Faces whose download was started before the renderer existed, if any.
|
|
41
|
+
// Claimed ahead of the early returns so an unneeded prefetch is released.
|
|
42
|
+
const prefetched = takeCanvasPrefetch(primary);
|
|
39
43
|
// If already loaded, return immediately
|
|
40
44
|
if (fontCache.has(primary) === true) {
|
|
41
45
|
return Promise.resolve();
|
|
@@ -49,15 +53,24 @@ export const loadFont = (stage, options) => {
|
|
|
49
53
|
nodesWaitingForFont[names[i]] = [];
|
|
50
54
|
}
|
|
51
55
|
// Register a FontFace under every name (all share the same source URL) and
|
|
52
|
-
// wait for all of them to be ready before waking parked nodes.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
// wait for all of them to be ready before waking parked nodes. Prefetched
|
|
57
|
+
// faces are already loaded — they only still need registering with the
|
|
58
|
+
// platform, which is the one step that required a stage.
|
|
59
|
+
const loadPromise = Promise.resolve(prefetched)
|
|
60
|
+
.then((faces) => faces != null && faces.length === names.length
|
|
61
|
+
? faces
|
|
62
|
+
: Promise.all(names.map((name) => new FontFace(name, `url(${fontUrl})`).load())))
|
|
63
|
+
.then((faces) => {
|
|
64
|
+
for (let i = 0; i < names.length; i++) {
|
|
65
|
+
const loadedFont = faces[i];
|
|
66
|
+
stage.platform.addFont(loadedFont);
|
|
67
|
+
processFontData(names[i], loadedFont, metrics);
|
|
68
|
+
}
|
|
69
|
+
})
|
|
57
70
|
.then(() => {
|
|
58
|
-
fontLoadPromises.delete(primary);
|
|
59
71
|
for (let i = 0; i < names.length; i++) {
|
|
60
72
|
const name = names[i];
|
|
73
|
+
fontLoadPromises.delete(name);
|
|
61
74
|
const nwff = nodesWaitingForFont[name];
|
|
62
75
|
if (nwff !== undefined) {
|
|
63
76
|
for (let key in nwff) {
|
|
@@ -68,11 +81,18 @@ export const loadFont = (stage, options) => {
|
|
|
68
81
|
}
|
|
69
82
|
})
|
|
70
83
|
.catch((error) => {
|
|
71
|
-
|
|
84
|
+
for (let i = 0; i < names.length; i++) {
|
|
85
|
+
fontLoadPromises.delete(names[i]);
|
|
86
|
+
}
|
|
72
87
|
console.error(`Failed to load font: ${primary}`, error);
|
|
73
88
|
throw error;
|
|
74
89
|
});
|
|
75
|
-
|
|
90
|
+
// Keyed under every name so a later loadFont() for an alias dedupes onto
|
|
91
|
+
// this load rather than starting a second one. (Canvas `canRenderFont` is
|
|
92
|
+
// unconditionally true, so unlike SDF this does not affect renderer choice.)
|
|
93
|
+
for (let i = 0; i < names.length; i++) {
|
|
94
|
+
fontLoadPromises.set(names[i], loadPromise);
|
|
95
|
+
}
|
|
76
96
|
return loadPromise;
|
|
77
97
|
};
|
|
78
98
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFontHandler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"CanvasFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFontHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FontLoadOptions } from './TextRenderer.js';
|
|
2
|
+
import type { SdfFontData } from './SdfFontHandler.js';
|
|
3
|
+
/**
|
|
4
|
+
* A prefetched SDF font: the parsed atlas description and the atlas image,
|
|
5
|
+
* fetched concurrently. Either promise resolves to `null` if its request
|
|
6
|
+
* failed — the handler then falls back to its normal load path rather than
|
|
7
|
+
* inheriting the failure.
|
|
8
|
+
*/
|
|
9
|
+
export interface PrefetchedSdfFont {
|
|
10
|
+
data: Promise<SdfFontData | null>;
|
|
11
|
+
atlas: Promise<Blob | null>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Options accepted by {@link prefetchFont}. Identical to the options passed to
|
|
15
|
+
* `Stage.loadFont()`, plus the optional SDF `type` discriminator that
|
|
16
|
+
* framework layers already carry on their font descriptors.
|
|
17
|
+
*/
|
|
18
|
+
export type FontPrefetchOptions = FontLoadOptions & {
|
|
19
|
+
type?: 'ssdf' | 'msdf' | 'canvas';
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Start downloading a font before a renderer exists.
|
|
23
|
+
*
|
|
24
|
+
* Safe to call more than once for the same font — the first call wins and
|
|
25
|
+
* later ones are ignored. Never throws and never rejects; failures degrade to
|
|
26
|
+
* the handler's normal load path.
|
|
27
|
+
*
|
|
28
|
+
* The descriptor decides what is fetched: an `atlasDataUrl` means an SDF font
|
|
29
|
+
* (atlas JSON + atlas image, in parallel), otherwise a `fontUrl` means a web
|
|
30
|
+
* font (`FontFace.load()`).
|
|
31
|
+
*
|
|
32
|
+
* @param options - The same options later passed to `Stage.loadFont()`
|
|
33
|
+
*/
|
|
34
|
+
export declare const prefetchFont: (options: FontPrefetchOptions) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Claim a prefetched SDF font, removing it from the pool.
|
|
37
|
+
*
|
|
38
|
+
* One-shot by design: a load that fails and retries must go back to the
|
|
39
|
+
* network rather than replaying a stale (possibly failed) prefetch.
|
|
40
|
+
*
|
|
41
|
+
* @param fontFamily - Primary font family name
|
|
42
|
+
*/
|
|
43
|
+
export declare const takeSdfPrefetch: (fontFamily: string) => PrefetchedSdfFont | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Claim prefetched web font faces, removing them from the pool. One-shot for
|
|
46
|
+
* the same reason as {@link takeSdfPrefetch}.
|
|
47
|
+
*
|
|
48
|
+
* @param fontFamily - Primary font family name
|
|
49
|
+
*/
|
|
50
|
+
export declare const takeCanvasPrefetch: (fontFamily: string) => Promise<FontFace[] | null> | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Drop every pending prefetch. Test/teardown helper — in-flight requests are
|
|
53
|
+
* not aborted, their results are simply no longer claimable.
|
|
54
|
+
*/
|
|
55
|
+
export declare const clearFontPrefetch: () => void;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Font prefetching — stage-free.
|
|
3
|
+
*
|
|
4
|
+
* Font bytes normally only start moving once a Stage exists, because
|
|
5
|
+
* `Stage.loadFont()` is the only entry point. That serializes the network
|
|
6
|
+
* behind the whole synchronous boot (GL context, buffers, shaders, root node)
|
|
7
|
+
* and, for SDF, behind the texture manager's async init as well.
|
|
8
|
+
*
|
|
9
|
+
* Nothing about *fetching* a font needs a Stage: the SDF atlas is a JSON
|
|
10
|
+
* document plus an image, and a web font is a `FontFace`. This module starts
|
|
11
|
+
* that work as early as an app can call it — typically before the renderer is
|
|
12
|
+
* constructed — and parks the results. The font handlers pick them up from
|
|
13
|
+
* here when `loadFont()` eventually runs, so the round-trip overlaps CPU boot
|
|
14
|
+
* instead of following it.
|
|
15
|
+
*
|
|
16
|
+
* Everything here uses XHR rather than `fetch` to match the rest of the
|
|
17
|
+
* renderer (Chrome 38 / webOS 3 have no `fetch`).
|
|
18
|
+
*/
|
|
19
|
+
import { fetchJson } from '../lib/utils.js';
|
|
20
|
+
const sdfPrefetch = new Map();
|
|
21
|
+
const canvasPrefetch = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Swallow a rejection into `null` so a prefetch that fails can never surface
|
|
24
|
+
* as an unhandled rejection. A prefetch is an optimization: when it fails the
|
|
25
|
+
* handler just does the work itself.
|
|
26
|
+
*/
|
|
27
|
+
const orNull = (promise) => promise.then((value) => value, () => null);
|
|
28
|
+
/**
|
|
29
|
+
* Normalize an atlas description response into usable font data, or `null` if
|
|
30
|
+
* it is unusable.
|
|
31
|
+
*
|
|
32
|
+
* `fetchJson` resolves rather than rejects on a status of 0 (the file://
|
|
33
|
+
* allowance), so a failed request arrives here as `null`. Engines without
|
|
34
|
+
* `responseType = 'json'` support hand back the raw string instead of a parsed
|
|
35
|
+
* object — the SDF handler tolerates both, so this does too.
|
|
36
|
+
*/
|
|
37
|
+
const normalizeSdfData = (response) => {
|
|
38
|
+
let data = response;
|
|
39
|
+
if (typeof data === 'string') {
|
|
40
|
+
try {
|
|
41
|
+
data = JSON.parse(data);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (data === null || typeof data !== 'object') {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
// Reject anything the handler would reject anyway, so a malformed prefetch
|
|
51
|
+
// falls back to a fresh fetch instead of failing the load outright.
|
|
52
|
+
return data.chars !== undefined
|
|
53
|
+
? data
|
|
54
|
+
: null;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Start downloading a font before a renderer exists.
|
|
58
|
+
*
|
|
59
|
+
* Safe to call more than once for the same font — the first call wins and
|
|
60
|
+
* later ones are ignored. Never throws and never rejects; failures degrade to
|
|
61
|
+
* the handler's normal load path.
|
|
62
|
+
*
|
|
63
|
+
* The descriptor decides what is fetched: an `atlasDataUrl` means an SDF font
|
|
64
|
+
* (atlas JSON + atlas image, in parallel), otherwise a `fontUrl` means a web
|
|
65
|
+
* font (`FontFace.load()`).
|
|
66
|
+
*
|
|
67
|
+
* @param options - The same options later passed to `Stage.loadFont()`
|
|
68
|
+
*/
|
|
69
|
+
export const prefetchFont = (options) => {
|
|
70
|
+
const { fontFamily, fontUrl, atlasUrl, atlasDataUrl } = options;
|
|
71
|
+
const names = Array.isArray(fontFamily) ? fontFamily : [fontFamily];
|
|
72
|
+
const primary = names[0];
|
|
73
|
+
if (primary === undefined) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// SDF: atlas description and atlas image are independent requests. The
|
|
77
|
+
// handler fetches them sequentially (it needs the JSON before it knows the
|
|
78
|
+
// atlas is usable); here there is no such constraint, so overlap them.
|
|
79
|
+
if (atlasDataUrl !== undefined && options.type !== 'canvas') {
|
|
80
|
+
if (sdfPrefetch.has(primary) === true) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
sdfPrefetch.set(primary, {
|
|
84
|
+
data: orNull(fetchJson(atlasDataUrl, 'json')).then(normalizeSdfData),
|
|
85
|
+
atlas: atlasUrl !== undefined
|
|
86
|
+
? orNull(fetchJson(atlasUrl, 'blob')).then((blob) => blob instanceof Blob ? blob : null)
|
|
87
|
+
: Promise.resolve(null),
|
|
88
|
+
});
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Web font: `FontFace.load()` starts the download immediately. The face is
|
|
92
|
+
// not registered with the document here — that needs the platform, so the
|
|
93
|
+
// handler does it at attach time.
|
|
94
|
+
if (fontUrl !== undefined) {
|
|
95
|
+
if (canvasPrefetch.has(primary) === true) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (typeof FontFace === 'undefined') {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
canvasPrefetch.set(primary, orNull(Promise.all(names.map((name) => new FontFace(name, `url(${fontUrl})`).load()))));
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Claim a prefetched SDF font, removing it from the pool.
|
|
106
|
+
*
|
|
107
|
+
* One-shot by design: a load that fails and retries must go back to the
|
|
108
|
+
* network rather than replaying a stale (possibly failed) prefetch.
|
|
109
|
+
*
|
|
110
|
+
* @param fontFamily - Primary font family name
|
|
111
|
+
*/
|
|
112
|
+
export const takeSdfPrefetch = (fontFamily) => {
|
|
113
|
+
const prefetched = sdfPrefetch.get(fontFamily);
|
|
114
|
+
if (prefetched !== undefined) {
|
|
115
|
+
sdfPrefetch.delete(fontFamily);
|
|
116
|
+
}
|
|
117
|
+
return prefetched;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Claim prefetched web font faces, removing them from the pool. One-shot for
|
|
121
|
+
* the same reason as {@link takeSdfPrefetch}.
|
|
122
|
+
*
|
|
123
|
+
* @param fontFamily - Primary font family name
|
|
124
|
+
*/
|
|
125
|
+
export const takeCanvasPrefetch = (fontFamily) => {
|
|
126
|
+
const prefetched = canvasPrefetch.get(fontFamily);
|
|
127
|
+
if (prefetched !== undefined) {
|
|
128
|
+
canvasPrefetch.delete(fontFamily);
|
|
129
|
+
}
|
|
130
|
+
return prefetched;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Drop every pending prefetch. Test/teardown helper — in-flight requests are
|
|
134
|
+
* not aborted, their results are simply no longer claimable.
|
|
135
|
+
*/
|
|
136
|
+
export const clearFontPrefetch = () => {
|
|
137
|
+
sdfPrefetch.clear();
|
|
138
|
+
canvasPrefetch.clear();
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=FontPrefetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FontPrefetch.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/FontPrefetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { UpdateType } from '../CoreNode.js';
|
|
|
2
2
|
import { hasZeroWidthSpace } from './Utils.js';
|
|
3
3
|
import { normalizeFontMetrics } from './TextLayoutEngine.js';
|
|
4
4
|
import { isProductionEnvironment } from '../../utils.js';
|
|
5
|
+
import { takeSdfPrefetch } from './FontPrefetch.js';
|
|
5
6
|
// Number of times a failed font load is automatically retried before
|
|
6
7
|
// loadFont() finally rejects. Counts reloads *after* the initial attempt
|
|
7
8
|
// (matching the `maxRetryCount` = retries convention used for textures), so
|
|
@@ -168,6 +169,10 @@ export const loadFont = (stage, options) => {
|
|
|
168
169
|
// the in-flight promise and drive the fetch; the rest are aliases.
|
|
169
170
|
const names = Array.isArray(fontFamily) ? fontFamily : [fontFamily];
|
|
170
171
|
const primary = names[0];
|
|
172
|
+
// A prefetch started before the renderer existed, if any. Claimed here —
|
|
173
|
+
// ahead of the early returns — so that a font which turns out to need no
|
|
174
|
+
// load still releases the prefetched atlas blob rather than pinning it.
|
|
175
|
+
const prefetched = takeSdfPrefetch(primary);
|
|
171
176
|
// Early return if already loaded
|
|
172
177
|
if (fontCache.get(primary) !== undefined) {
|
|
173
178
|
return Promise.resolve();
|
|
@@ -224,7 +229,12 @@ export const loadFont = (stage, options) => {
|
|
|
224
229
|
// success it processes + caches the font and wakes parked nodes. On failure
|
|
225
230
|
// it drops the dead atlas texture (createTexture caches by `src`, so the
|
|
226
231
|
// next attempt must evict it to build a fresh one) and rejects.
|
|
227
|
-
|
|
232
|
+
//
|
|
233
|
+
// `atlasBlob` is the prefetched atlas image when one was claimed. Passing it
|
|
234
|
+
// as `src` skips a second download; `key` is set to the atlas URL so the
|
|
235
|
+
// texture cache key is identical to the one the URL path produces — the two
|
|
236
|
+
// paths must not produce two cache entries for the same atlas.
|
|
237
|
+
const loadAtlas = (fontData, atlasBlob) => {
|
|
228
238
|
if (!fontData || !fontData.chars) {
|
|
229
239
|
return Promise.reject(new Error('Invalid SDF font data format'));
|
|
230
240
|
}
|
|
@@ -235,7 +245,8 @@ export const loadFont = (stage, options) => {
|
|
|
235
245
|
return new Promise((resolve, reject) => {
|
|
236
246
|
// create new atlas texture using ImageTexture
|
|
237
247
|
const atlasTexture = stage.txManager.createTexture('ImageTexture', {
|
|
238
|
-
src: atlasUrl,
|
|
248
|
+
src: atlasBlob !== null ? atlasBlob : atlasUrl,
|
|
249
|
+
key: atlasUrl,
|
|
239
250
|
premultiplyAlpha: false,
|
|
240
251
|
});
|
|
241
252
|
// Register every name as a renderable owner so the shared atlas stays
|
|
@@ -287,15 +298,27 @@ export const loadFont = (stage, options) => {
|
|
|
287
298
|
});
|
|
288
299
|
});
|
|
289
300
|
};
|
|
290
|
-
// Initial attempt plus up to MAX_FONT_LOAD_RETRIES automatic reloads.
|
|
301
|
+
// Initial attempt plus up to MAX_FONT_LOAD_RETRIES automatic reloads. Only
|
|
302
|
+
// the first attempt uses the prefetch; a retry goes back to the network
|
|
303
|
+
// rather than replaying a payload that may be exactly what failed.
|
|
291
304
|
const loadPromise = (async () => {
|
|
292
305
|
let lastError;
|
|
293
306
|
for (let attempt = 0; attempt <= MAX_FONT_LOAD_RETRIES; attempt++) {
|
|
294
307
|
try {
|
|
295
|
-
|
|
296
|
-
//
|
|
297
|
-
|
|
298
|
-
|
|
308
|
+
// Both halves of a prefetch are already in flight in parallel; the
|
|
309
|
+
// fallbacks below are the original sequential path.
|
|
310
|
+
const fontData = (attempt === 0 && prefetched !== undefined
|
|
311
|
+
? await prefetched.data
|
|
312
|
+
: null) ?? (await fetchFontData());
|
|
313
|
+
const atlasBlob = attempt === 0 && prefetched !== undefined
|
|
314
|
+
? await prefetched.atlas
|
|
315
|
+
: null;
|
|
316
|
+
await loadAtlas(fontData, atlasBlob);
|
|
317
|
+
// Success: clear the in-flight markers (the font now lives in
|
|
318
|
+
// fontCache) — parked nodes were already woken inside loadAtlas.
|
|
319
|
+
for (let i = 0; i < names.length; i++) {
|
|
320
|
+
fontLoadPromises.delete(names[i]);
|
|
321
|
+
}
|
|
299
322
|
return;
|
|
300
323
|
}
|
|
301
324
|
catch (error) {
|
|
@@ -305,20 +328,29 @@ export const loadFont = (stage, options) => {
|
|
|
305
328
|
}
|
|
306
329
|
}
|
|
307
330
|
}
|
|
308
|
-
// Every attempt failed. Clear the in-flight
|
|
331
|
+
// Every attempt failed. Clear the in-flight markers so the font can be
|
|
309
332
|
// requested again and drop any partial cache entry. nodesWaitingForFont
|
|
310
333
|
// is deliberately kept: nodes parked here must survive so a later
|
|
311
334
|
// loadFont() (which reuses the list) can still wake them if the font
|
|
312
335
|
// eventually loads. The list shrinks as nodes self-remove via
|
|
313
336
|
// stopWaitingForFont on destroy.
|
|
314
|
-
fontLoadPromises.delete(primary);
|
|
315
337
|
for (let i = 0; i < names.length; i++) {
|
|
338
|
+
fontLoadPromises.delete(names[i]);
|
|
316
339
|
fontCache.delete(names[i]);
|
|
317
340
|
}
|
|
318
341
|
console.error(`Failed to load SDF font: ${primary}`, lastError);
|
|
319
342
|
throw lastError;
|
|
320
343
|
})();
|
|
321
|
-
|
|
344
|
+
// Mark the load in flight under *every* name, not just the primary.
|
|
345
|
+
// `canRenderFont` treats a name with no cache entry and no in-flight promise
|
|
346
|
+
// as unrenderable, so keying only the primary made an alias unresolvable for
|
|
347
|
+
// the whole load: the stage would either fall through to the Canvas engine
|
|
348
|
+
// (permanently, with a substitute face) or, on an SDF-only engine list,
|
|
349
|
+
// throw "No compatible text renderer found". Registering every name also
|
|
350
|
+
// makes a later loadFont() for an alias dedupe onto this same load.
|
|
351
|
+
for (let i = 0; i < names.length; i++) {
|
|
352
|
+
fontLoadPromises.set(names[i], loadPromise);
|
|
353
|
+
}
|
|
322
354
|
return loadPromise;
|
|
323
355
|
};
|
|
324
356
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdfFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfFontHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SdfFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfFontHandler.ts"],"names":[],"mappings":"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"}
|