@solidtv/renderer 1.6.1 → 1.6.3

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.
Files changed (36) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js +3 -0
  3. package/dist/exports/index.js.map +1 -1
  4. package/dist/src/core/lib/ImageWorker.js +29 -20
  5. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  6. package/dist/src/core/lib/validateImageBitmap.d.ts +13 -7
  7. package/dist/src/core/lib/validateImageBitmap.js +31 -10
  8. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  9. package/dist/src/core/text-rendering/CanvasFontHandler.js +51 -16
  10. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  11. package/dist/src/core/text-rendering/FontPrefetch.d.ts +55 -0
  12. package/dist/src/core/text-rendering/FontPrefetch.js +140 -0
  13. package/dist/src/core/text-rendering/FontPrefetch.js.map +1 -0
  14. package/dist/src/core/text-rendering/SdfFontHandler.js +91 -30
  15. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  16. package/dist/src/core/text-rendering/TextRenderer.d.ts +10 -1
  17. package/dist/src/core/textures/ImageTexture.js +4 -2
  18. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  19. package/dist/src/main-api/Renderer.d.ts +8 -4
  20. package/dist/src/main-api/Renderer.js.map +1 -1
  21. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  22. package/exports/index.ts +7 -0
  23. package/package.json +1 -1
  24. package/src/core/lib/ImageWorker.test.ts +19 -0
  25. package/src/core/lib/ImageWorker.ts +34 -40
  26. package/src/core/lib/validateImageBitmap.test.ts +17 -10
  27. package/src/core/lib/validateImageBitmap.ts +32 -14
  28. package/src/core/text-rendering/CanvasFontHandler.ts +57 -16
  29. package/src/core/text-rendering/FontPrefetch.ts +195 -0
  30. package/src/core/text-rendering/SdfFontHandler.ts +102 -32
  31. package/src/core/text-rendering/TextRenderer.ts +10 -1
  32. package/src/core/text-rendering/tests/FontPrefetch.test.ts +341 -0
  33. package/src/core/text-rendering/tests/SdfFontHandler.test.ts +108 -1
  34. package/src/core/textures/ImageTexture.test.ts +94 -26
  35. package/src/core/textures/ImageTexture.ts +4 -2
  36. package/src/main-api/Renderer.ts +8 -4
@@ -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';
@@ -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;AAOrC,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"}
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"}
@@ -58,10 +58,12 @@ function createImageWorker() {
58
58
  supportsFullCreateImageBitmap === false) {
59
59
  // Fallback for browsers that do not support createImageBitmap with options
60
60
  // this is supported for Chrome v50 to v52/54 that doesn't support options.
61
- // The browser default premultiplies, so WebGL must not premultiply again.
61
+ // The browser default premultiplies, so WebGL must not premultiply again
62
+ // except on devices whose default returns straight alpha
63
+ // (premultiplyAlphaHonored: false); there WebGL premultiplies on upload.
62
64
  createImageBitmap(blob)
63
65
  .then(function (data) {
64
- resolve({ data: data, premultiplyAlpha: false });
66
+ resolve({ data: data, premultiplyAlpha: useGlPremultiply });
65
67
  })
66
68
  .catch(function (error) {
67
69
  reject(error);
@@ -95,11 +97,16 @@ function createImageWorker() {
95
97
  var y = event.data.sy;
96
98
  var width = event.data.sw;
97
99
  var height = event.data.sh;
98
- // these will be set to true if the browser supports the createImageBitmap options or full
99
- var supportsOptionsCreateImageBitmap = false;
100
- var supportsFullCreateImageBitmap = false;
101
- // set to false when the device is known to ignore the premultiply option
102
- var premultiplyAlphaHonored = true;
100
+ // Capability flags are sent as message DATA (not baked into the worker's
101
+ // source text) because they must survive minification: a production
102
+ // bundler renames these local variable names, which silently breaks any
103
+ // scheme that pattern-matches `createImageWorker.toString()` output for
104
+ // injection (see git history for the string-replace approach this
105
+ // replaced, and the bug it caused - capability detection was always a
106
+ // no-op in a minified build, regardless of device or config).
107
+ var supportsOptionsCreateImageBitmap = event.data.supportsOptionsCreateImageBitmap;
108
+ var supportsFullCreateImageBitmap = event.data.supportsFullCreateImageBitmap;
109
+ var premultiplyAlphaHonored = event.data.premultiplyAlphaHonored;
103
110
  getImage(src, premultiplyAlpha, x, y, width, height, {
104
111
  supportsOptionsCreateImageBitmap,
105
112
  supportsFullCreateImageBitmap,
@@ -137,7 +144,7 @@ export class ImageWorkerManager {
137
144
  if (this.workers.length > 0) {
138
145
  return;
139
146
  }
140
- this.workerBlob = this.createWorkerBlob(this.createImageBitmapSupport);
147
+ this.workerBlob = this.createWorkerBlob();
141
148
  for (let i = 0; i < this.maxWorkers; i++) {
142
149
  this.spawnWorker();
143
150
  }
@@ -175,19 +182,18 @@ export class ImageWorkerManager {
175
182
  }
176
183
  this.workerLoad[workerIndex] = 0;
177
184
  }
178
- createWorkerBlob(createImageBitmapSupport) {
185
+ createWorkerBlob() {
186
+ // Capability flags (options/full/premultiplyHonored) are NOT injected
187
+ // into this source text. An earlier version pattern-matched
188
+ // `createImageWorker.toString()` against literal variable-name strings
189
+ // (e.g. 'var supportsOptionsCreateImageBitmap = false;') and rewrote
190
+ // them - this silently breaks under any minifier that renames locals
191
+ // (guaranteed in a real production bundle), permanently freezing every
192
+ // device on the hardcoded defaults regardless of actual support. The
193
+ // flags are sent per-request as postMessage data instead (see
194
+ // `getImage` below and `self.onmessage` above) - plain data survives
195
+ // minification untouched.
179
196
  let workerCode = `(${createImageWorker.toString()})()`;
180
- // Replace placeholders with actual initialization values
181
- if (createImageBitmapSupport.options === true) {
182
- workerCode = workerCode.replace('var supportsOptionsCreateImageBitmap = false;', 'var supportsOptionsCreateImageBitmap = true;');
183
- }
184
- if (createImageBitmapSupport.full === true) {
185
- workerCode = workerCode.replace('var supportsOptionsCreateImageBitmap = false;', 'var supportsOptionsCreateImageBitmap = true;');
186
- workerCode = workerCode.replace('var supportsFullCreateImageBitmap = false;', 'var supportsFullCreateImageBitmap = true;');
187
- }
188
- if (createImageBitmapSupport.premultiplyHonored === false) {
189
- workerCode = workerCode.replace('var premultiplyAlphaHonored = true;', 'var premultiplyAlphaHonored = false;');
190
- }
191
197
  workerCode = workerCode.replace('"use strict";', '');
192
198
  return new Blob([workerCode], {
193
199
  type: 'application/javascript',
@@ -262,6 +268,9 @@ export class ImageWorkerManager {
262
268
  sy,
263
269
  sw,
264
270
  sh,
271
+ supportsOptionsCreateImageBitmap: this.createImageBitmapSupport.options,
272
+ supportsFullCreateImageBitmap: this.createImageBitmapSupport.full,
273
+ premultiplyAlphaHonored: this.createImageBitmapSupport.premultiplyHonored,
265
274
  });
266
275
  }
267
276
  catch (error) {
@@ -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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"}
@@ -10,16 +10,22 @@ export declare function validateCreateImageBitmap(platform: Platform): Promise<C
10
10
  * Determine whether `createImageBitmap(..., { premultiplyAlpha: 'premultiply' })`
11
11
  * is actually honored by this browser.
12
12
  *
13
- * Strategy: feed a known straight-alpha pixel (255, 0, 0, 128) through
14
- * createImageBitmap with 'premultiply', upload it to a WebGL texture with
15
- * GL-side premultiply DISABLED (so we observe the bitmap's own state), then
16
- * read the raw texel back via a framebuffer.
13
+ * Strategy: decode a known straight-alpha pixel (255, 0, 0, 128) delivered as
14
+ * a real PNG blob through createImageBitmap with 'premultiply', upload it to a
15
+ * WebGL texture with GL-side premultiply DISABLED (so we observe the bitmap's
16
+ * own state), then read the raw texel back via a framebuffer.
17
17
  *
18
18
  * - honored -> red comes back premultiplied (~128)
19
- * - ignored -> red comes back straight (~255) [older Safari/WebKit]
19
+ * - ignored -> red comes back straight (~255) [older Safari/WebKit,
20
+ * Movistar-class embedded STBs]
21
+ *
22
+ * A real PNG blob (not ImageData) is used deliberately: it matches the code
23
+ * path real textures take, and some embedded devices don't even support
24
+ * ImageData->createImageBitmap (the old ImageData probe returned null there,
25
+ * silently disabling detection on exactly the devices that needed it).
20
26
  *
21
27
  * @returns true if honored, false if ignored, null if it couldn't be measured
22
- * (no WebGL, createImageBitmap from ImageData unsupported, framebuffer
23
- * incomplete, etc.) — caller should treat null as "unknown".
28
+ * (no WebGL, createImageBitmap unsupported, framebuffer incomplete, etc.) —
29
+ * caller should treat null as "unknown".
24
30
  */
25
31
  export declare function detectPremultiplyAlphaHonored(platform: Platform): Promise<boolean | null>;
@@ -69,28 +69,49 @@ export async function validateCreateImageBitmap(platform) {
69
69
  // default (null) here.
70
70
  return support;
71
71
  }
72
+ // 1x1 PNG, color type 6 (RGBA), single pixel = (255, 0, 0, 128) in straight
73
+ // (un-premultiplied) alpha. Decoding this real PNG blob exercises the same
74
+ // image-decode pipeline that actual textures use — which on embedded WebKit
75
+ // forks can honor `premultiplyAlpha` differently from the raw
76
+ // ImageData->createImageBitmap path (some decoders ignore the option on the
77
+ // PNG path while honoring it for ImageData). Detecting via the path real
78
+ // images take is what makes this correct on devices like the Movistar STB.
79
+ // prettier-ignore
80
+ const STRAIGHT_ALPHA_TEST_PNG = new Uint8Array([
81
+ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
82
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
83
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x15, 0xc4, 0x89, 0x00, 0x00, 0x00,
84
+ 0x0d, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0x63, 0xf8, 0xcf, 0xc0, 0xd0,
85
+ 0x00, 0x00, 0x04, 0x81, 0x01, 0x80, 0x2c, 0x55, 0xce, 0xb0, 0x00, 0x00,
86
+ 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
87
+ ]);
72
88
  /**
73
89
  * Determine whether `createImageBitmap(..., { premultiplyAlpha: 'premultiply' })`
74
90
  * is actually honored by this browser.
75
91
  *
76
- * Strategy: feed a known straight-alpha pixel (255, 0, 0, 128) through
77
- * createImageBitmap with 'premultiply', upload it to a WebGL texture with
78
- * GL-side premultiply DISABLED (so we observe the bitmap's own state), then
79
- * read the raw texel back via a framebuffer.
92
+ * Strategy: decode a known straight-alpha pixel (255, 0, 0, 128) delivered as
93
+ * a real PNG blob through createImageBitmap with 'premultiply', upload it to a
94
+ * WebGL texture with GL-side premultiply DISABLED (so we observe the bitmap's
95
+ * own state), then read the raw texel back via a framebuffer.
80
96
  *
81
97
  * - honored -> red comes back premultiplied (~128)
82
- * - ignored -> red comes back straight (~255) [older Safari/WebKit]
98
+ * - ignored -> red comes back straight (~255) [older Safari/WebKit,
99
+ * Movistar-class embedded STBs]
100
+ *
101
+ * A real PNG blob (not ImageData) is used deliberately: it matches the code
102
+ * path real textures take, and some embedded devices don't even support
103
+ * ImageData->createImageBitmap (the old ImageData probe returned null there,
104
+ * silently disabling detection on exactly the devices that needed it).
83
105
  *
84
106
  * @returns true if honored, false if ignored, null if it couldn't be measured
85
- * (no WebGL, createImageBitmap from ImageData unsupported, framebuffer
86
- * incomplete, etc.) — caller should treat null as "unknown".
107
+ * (no WebGL, createImageBitmap unsupported, framebuffer incomplete, etc.) —
108
+ * caller should treat null as "unknown".
87
109
  */
88
110
  export async function detectPremultiplyAlphaHonored(platform) {
89
111
  let bitmap;
90
112
  try {
91
- // Straight (un-premultiplied) RGBA. ImageData is straight-alpha by spec.
92
- const imageData = new ImageData(new Uint8ClampedArray([255, 0, 0, 128]), 1, 1);
93
- bitmap = await platform.createImageBitmap(imageData, {
113
+ const blob = new Blob([STRAIGHT_ALPHA_TEST_PNG], { type: 'image/png' });
114
+ bitmap = await platform.createImageBitmap(blob, {
94
115
  premultiplyAlpha: 'premultiply',
95
116
  colorSpaceConversion: 'none',
96
117
  imageOrientation: 'none',
@@ -1 +1 @@
1
- {"version":3,"file":"validateImageBitmap.js","sourceRoot":"","sources":["../../../../src/core/lib/validateImageBitmap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateImageBitmap.js","sourceRoot":"","sources":["../../../../src/core/lib/validateImageBitmap.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();
@@ -30,34 +31,68 @@ const processFontData = (fontFamily, fontFace, metrics) => {
30
31
  */
31
32
  export const loadFont = (stage, options) => {
32
33
  const { fontFamily, fontUrl, metrics } = options;
34
+ // A single load may register the font under several names. The first entry
35
+ // is the primary name used to key the in-flight promise; the rest are
36
+ // aliases registered against the same source URL (the browser dedupes the
37
+ // download by URL).
38
+ const names = Array.isArray(fontFamily) ? fontFamily : [fontFamily];
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);
33
43
  // If already loaded, return immediately
34
- if (fontCache.has(fontFamily) === true) {
44
+ if (fontCache.has(primary) === true) {
35
45
  return Promise.resolve();
36
46
  }
37
- const existingPromise = fontLoadPromises.get(fontFamily);
47
+ const existingPromise = fontLoadPromises.get(primary);
38
48
  // If already loading, return the existing promise
39
49
  if (existingPromise !== undefined) {
40
50
  return existingPromise;
41
51
  }
42
- const nwff = (nodesWaitingForFont[fontFamily] = []);
43
- // Create and store the loading promise
44
- const loadPromise = new FontFace(fontFamily, `url(${fontUrl})`)
45
- .load()
46
- .then((loadedFont) => {
47
- stage.platform.addFont(loadedFont);
48
- processFontData(fontFamily, loadedFont, metrics);
49
- fontLoadPromises.delete(fontFamily);
50
- for (let key in nwff) {
51
- nwff[key].setUpdateType(UpdateType.Local);
52
+ for (let i = 0; i < names.length; i++) {
53
+ nodesWaitingForFont[names[i]] = [];
54
+ }
55
+ // Register a FontFace under every name (all share the same source URL) and
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
+ })
70
+ .then(() => {
71
+ for (let i = 0; i < names.length; i++) {
72
+ const name = names[i];
73
+ fontLoadPromises.delete(name);
74
+ const nwff = nodesWaitingForFont[name];
75
+ if (nwff !== undefined) {
76
+ for (let key in nwff) {
77
+ nwff[key].setUpdateType(UpdateType.Local);
78
+ }
79
+ delete nodesWaitingForFont[name];
80
+ }
52
81
  }
53
- delete nodesWaitingForFont[fontFamily];
54
82
  })
55
83
  .catch((error) => {
56
- fontLoadPromises.delete(fontFamily);
57
- console.error(`Failed to load font: ${fontFamily}`, error);
84
+ for (let i = 0; i < names.length; i++) {
85
+ fontLoadPromises.delete(names[i]);
86
+ }
87
+ console.error(`Failed to load font: ${primary}`, error);
58
88
  throw error;
59
89
  });
60
- fontLoadPromises.set(fontFamily, loadPromise);
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
+ }
61
96
  return loadPromise;
62
97
  };
63
98
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFontHandler.ts"],"names":[],"mappings":"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"}
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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"}