@kurot/core 2.1.1 → 2.2.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +37 -2
  3. package/dist/kurot/display/DisplayObject.d.ts +2 -1
  4. package/dist/kurot/display/DisplayObject.d.ts.map +1 -1
  5. package/dist/kurot/display/DisplayObject.js.map +1 -1
  6. package/dist/kurot/player/canvas/CanvasRenderer.d.ts +2 -0
  7. package/dist/kurot/player/canvas/CanvasRenderer.d.ts.map +1 -1
  8. package/dist/kurot/player/canvas/CanvasRenderer.js +37 -1
  9. package/dist/kurot/player/canvas/CanvasRenderer.js.map +1 -1
  10. package/dist/kurot/player/pipes/BitmapTextPipe.d.ts +20 -0
  11. package/dist/kurot/player/pipes/BitmapTextPipe.d.ts.map +1 -0
  12. package/dist/kurot/player/pipes/BitmapTextPipe.js +27 -0
  13. package/dist/kurot/player/pipes/BitmapTextPipe.js.map +1 -0
  14. package/dist/kurot/player/pipes/index.d.ts +2 -0
  15. package/dist/kurot/player/pipes/index.d.ts.map +1 -1
  16. package/dist/kurot/player/pipes/index.js +1 -0
  17. package/dist/kurot/player/pipes/index.js.map +1 -1
  18. package/dist/kurot/player/webgl/WebGLRenderer.d.ts +1 -0
  19. package/dist/kurot/player/webgl/WebGLRenderer.d.ts.map +1 -1
  20. package/dist/kurot/player/webgl/WebGLRenderer.js +8 -0
  21. package/dist/kurot/player/webgl/WebGLRenderer.js.map +1 -1
  22. package/dist/kurot/resource/Resource.d.ts.map +1 -1
  23. package/dist/kurot/resource/Resource.js +4 -0
  24. package/dist/kurot/resource/Resource.js.map +1 -1
  25. package/dist/kurot/resource/ResourceItem.d.ts +1 -0
  26. package/dist/kurot/resource/ResourceItem.d.ts.map +1 -1
  27. package/dist/kurot/resource/ResourceItem.js +1 -0
  28. package/dist/kurot/resource/ResourceItem.js.map +1 -1
  29. package/dist/kurot/resource/analyzers/FontAnalyzer.d.ts +16 -0
  30. package/dist/kurot/resource/analyzers/FontAnalyzer.d.ts.map +1 -0
  31. package/dist/kurot/resource/analyzers/FontAnalyzer.js +75 -0
  32. package/dist/kurot/resource/analyzers/FontAnalyzer.js.map +1 -0
  33. package/dist/kurot/resource/analyzers/index.d.ts +1 -0
  34. package/dist/kurot/resource/analyzers/index.d.ts.map +1 -1
  35. package/dist/kurot/resource/analyzers/index.js +1 -0
  36. package/dist/kurot/resource/analyzers/index.js.map +1 -1
  37. package/dist/kurot/resource/index.d.ts +1 -0
  38. package/dist/kurot/resource/index.d.ts.map +1 -1
  39. package/dist/kurot/resource/index.js +1 -0
  40. package/dist/kurot/resource/index.js.map +1 -1
  41. package/dist/kurot/text/BitmapFont.d.ts +15 -21
  42. package/dist/kurot/text/BitmapFont.d.ts.map +1 -1
  43. package/dist/kurot/text/BitmapFont.js +59 -66
  44. package/dist/kurot/text/BitmapFont.js.map +1 -1
  45. package/dist/kurot/text/BitmapText.d.ts +29 -19
  46. package/dist/kurot/text/BitmapText.d.ts.map +1 -1
  47. package/dist/kurot/text/BitmapText.js +93 -141
  48. package/dist/kurot/text/BitmapText.js.map +1 -1
  49. package/dist/kurot/text/index.d.ts +1 -0
  50. package/dist/kurot/text/index.d.ts.map +1 -1
  51. package/dist/kurot/text/index.js.map +1 -1
  52. package/docs/ai-context.md +22 -7
  53. package/docs/architecture.md +322 -276
  54. package/docs/bitmap-fonts.md +85 -0
  55. package/docs/resource.md +185 -156
  56. package/docs/text-layout.md +8 -6
  57. package/package.json +3 -2
@@ -1,48 +1,62 @@
1
+ import { layoutBitmapText } from '@kurot/bitmap-font';
1
2
  import { DisplayObject } from '../display/DisplayObject.js';
2
- import { HorizontalAlign } from './enums/HorizontalAlign.js';
3
- import { VerticalAlign } from './enums/VerticalAlign.js';
4
3
  /**
5
- * Renders text using a BitmapFont (texture atlas), avoiding system font rendering differences.
4
+ * Draws atlas glyphs directly through WebGL batching or Canvas 2D.
5
+ * Width wraps by code point; use multiline=false for one unwrapped line.
6
+ * Fonts are borrowed. Missing glyphs are skipped; U+0020 has a fallback advance.
6
7
  */
7
8
  export class BitmapText extends DisplayObject {
9
+ // ── Static fields ─────────────────────────────────────────────────────────
10
+ /**
11
+ * @deprecated Font layout uses its explicit spaceAdvance metric.
12
+ * Set that metric in font data before constructing a font.
13
+ */
8
14
  static EMPTY_FACTOR = 0.33;
15
+ // ── Instance fields ──────────────────────────────────────────────────────
9
16
  _text = '';
10
17
  _font;
11
18
  _lineSpacing = 0;
12
19
  _letterSpacing = 0;
13
- _textAlign = HorizontalAlign.LEFT;
14
- _verticalAlign = VerticalAlign.TOP;
20
+ _textAlign = 'left';
21
+ _verticalAlign = 'top';
22
+ _smoothing = true;
23
+ _multiline = true;
24
+ _layout;
25
+ // ── Constructor ──────────────────────────────────────────────────────────
26
+ constructor() {
27
+ super();
28
+ this.$renderObjectType = 7 /* RenderObjectType.BITMAP_TEXT */;
29
+ }
30
+ // ── Getters / Setters ─────────────────────────────────────────────────────
31
+ get width() {
32
+ return super.width;
33
+ }
15
34
  set width(value) {
16
- const v = isNaN(value) ? NaN : value;
17
- if (this.$explicitWidth === v)
35
+ if (Object.is(this.$explicitWidth, value))
18
36
  return;
19
- this.$explicitWidth = v;
37
+ if (!Number.isNaN(value) && (!Number.isFinite(value) || value < 0))
38
+ throw new RangeError('BitmapText.width must be nonnegative or NaN.');
39
+ this.$explicitWidth = value;
20
40
  this._invalidate();
21
41
  }
42
+ get height() {
43
+ return super.height;
44
+ }
22
45
  set height(value) {
23
- const v = isNaN(value) ? NaN : value;
24
- if (this.$explicitHeight === v)
46
+ if (Object.is(this.$explicitHeight, value))
25
47
  return;
26
- this.$explicitHeight = v;
48
+ if (!Number.isNaN(value) && (!Number.isFinite(value) || value < 0))
49
+ throw new RangeError('BitmapText.height must be nonnegative or NaN.');
50
+ this.$explicitHeight = value;
27
51
  this._invalidate();
28
52
  }
29
- _smoothing = true;
30
- _textLinesChanged = false;
31
- _textLines = [];
32
- _textLinesWidth = [];
33
- _lineHeights = [];
34
- _textWidth = 0;
35
- _textHeight = 0;
36
- _textStartX = 0;
37
- _textStartY = 0;
38
53
  get text() {
39
54
  return this._text;
40
55
  }
41
56
  set text(value) {
42
- const v = value ?? '';
43
- if (this._text === v)
57
+ if (this._text === value)
44
58
  return;
45
- this._text = v;
59
+ this._text = value;
46
60
  this._invalidate();
47
61
  }
48
62
  get font() {
@@ -60,6 +74,8 @@ export class BitmapText extends DisplayObject {
60
74
  set lineSpacing(value) {
61
75
  if (this._lineSpacing === value)
62
76
  return;
77
+ if (!Number.isFinite(value) || value < 0)
78
+ throw new RangeError('BitmapText.lineSpacing must be finite and nonnegative.');
63
79
  this._lineSpacing = value;
64
80
  this._invalidate();
65
81
  }
@@ -69,6 +85,8 @@ export class BitmapText extends DisplayObject {
69
85
  set letterSpacing(value) {
70
86
  if (this._letterSpacing === value)
71
87
  return;
88
+ if (!Number.isFinite(value))
89
+ throw new RangeError('BitmapText.letterSpacing must be finite.');
72
90
  this._letterSpacing = value;
73
91
  this._invalidate();
74
92
  }
@@ -78,6 +96,8 @@ export class BitmapText extends DisplayObject {
78
96
  set textAlign(value) {
79
97
  if (this._textAlign === value)
80
98
  return;
99
+ if (!['left', 'center', 'right'].includes(value))
100
+ throw new RangeError('Invalid bitmap text alignment.');
81
101
  this._textAlign = value;
82
102
  this._invalidate();
83
103
  }
@@ -87,6 +107,8 @@ export class BitmapText extends DisplayObject {
87
107
  set verticalAlign(value) {
88
108
  if (this._verticalAlign === value)
89
109
  return;
110
+ if (!['top', 'middle', 'bottom'].includes(value))
111
+ throw new RangeError('Invalid bitmap text vertical alignment.');
90
112
  this._verticalAlign = value;
91
113
  this._invalidate();
92
114
  }
@@ -99,141 +121,71 @@ export class BitmapText extends DisplayObject {
99
121
  this._smoothing = value;
100
122
  this.$markDirty();
101
123
  }
124
+ get multiline() {
125
+ return this._multiline;
126
+ }
127
+ set multiline(value) {
128
+ if (this._multiline === value)
129
+ return;
130
+ this._multiline = value;
131
+ this._invalidate();
132
+ }
102
133
  get textWidth() {
103
- this._ensureLines();
104
- return this._textWidth;
134
+ return this.getLayout().width;
105
135
  }
106
136
  get textHeight() {
107
- this._ensureLines();
108
- return this._textHeight;
109
- }
110
- $measureContentBounds(bounds) {
111
- this._ensureLines();
112
- if (this._textLines.length === 0) {
113
- bounds.setEmpty();
114
- }
115
- else {
116
- bounds.setTo(this._textStartX, this._textStartY, this._textWidth, this._textHeight);
117
- }
137
+ return this.getLayout().height;
138
+ }
139
+ // ── Public methods ───────────────────────────────────────────────────────
140
+ getLayout() {
141
+ this._layout ??= this.measureText(this.$explicitWidth, this.$explicitHeight);
142
+ return this._layout;
143
+ }
144
+ /**
145
+ * Measures with independent constraints without changing the rendered field.
146
+ * NaN means unconstrained; font, spacing, alignment and multiline are retained.
147
+ */
148
+ measureText(width = NaN, height = NaN) {
149
+ return this._font
150
+ ? layoutBitmapText(this._font.data, this._text, {
151
+ width: Number.isNaN(width) ? undefined : width,
152
+ height: Number.isNaN(height) ? undefined : height,
153
+ lineSpacing: this._lineSpacing,
154
+ letterSpacing: this._letterSpacing,
155
+ textAlign: this._textAlign,
156
+ verticalAlign: this._verticalAlign,
157
+ multiline: this._multiline,
158
+ })
159
+ : { glyphs: [], lines: [], width: 0, height: 0, startX: 0, startY: 0, bounds: { x: 0, y: 0, width: 0, height: 0 } };
160
+ }
161
+ getGlyphs() {
162
+ return this.getLayout().glyphs;
118
163
  }
119
164
  getTextLines() {
120
- return this._ensureLines();
165
+ return this.getLayout().lines.map(line => line.text);
121
166
  }
122
167
  getTextLinesWidth() {
123
- this._ensureLines();
124
- return this._textLinesWidth;
168
+ return this.getLayout().lines.map(line => line.width);
125
169
  }
126
170
  getLineHeights() {
127
- this._ensureLines();
128
- return this._lineHeights;
171
+ return this.getLayout().lines.map(line => line.height);
129
172
  }
130
173
  getTextStartX() {
131
- this._ensureLines();
132
- return this._textStartX;
174
+ return this.getLayout().startX;
133
175
  }
134
176
  getTextStartY() {
135
- this._ensureLines();
136
- return this._textStartY;
177
+ return this.getLayout().startY;
137
178
  }
179
+ // ── Override methods ─────────────────────────────────────────────────────
180
+ $measureContentBounds(bounds) {
181
+ const measured = this.getLayout().bounds;
182
+ bounds.setTo(measured.x, measured.y, measured.width, measured.height);
183
+ }
184
+ // ── Private methods ──────────────────────────────────────────────────────
138
185
  _invalidate() {
139
- this._textLinesChanged = true;
186
+ this._layout = undefined;
140
187
  this.$renderDirty = true;
141
188
  this.$markDirty();
142
189
  }
143
- _ensureLines() {
144
- if (!this._textLinesChanged)
145
- return this._textLines;
146
- this._textLinesChanged = false;
147
- this._textLines = [];
148
- this._textLinesWidth = [];
149
- this._lineHeights = [];
150
- this._textWidth = 0;
151
- this._textHeight = 0;
152
- const font = this._font;
153
- if (!this._text || !font)
154
- return this._textLines;
155
- const hasWidthSet = !isNaN(this.$explicitWidth);
156
- const fieldWidth = this.$explicitWidth;
157
- const fieldHeight = this.$explicitHeight;
158
- const emptyHeight = font.getFirstCharHeight();
159
- const emptyWidth = Math.ceil(emptyHeight * BitmapText.EMPTY_FACTOR);
160
- const textArr = this._text.split(/(?:\r\n|\r|\n)/);
161
- let totalWidth = 0;
162
- let totalHeight = 0;
163
- const pushLine = (str, lh, lw) => {
164
- if (!isNaN(fieldHeight) && this._textLines.length > 0 && totalHeight > fieldHeight)
165
- return false;
166
- totalHeight += lh + this._lineSpacing;
167
- this._textLines.push(str);
168
- this._lineHeights.push(lh);
169
- this._textLinesWidth.push(lw);
170
- totalWidth = Math.max(lw, totalWidth);
171
- return true;
172
- };
173
- for (let i = 0; i < textArr.length; i++) {
174
- let line = textArr[i];
175
- let len = line.length;
176
- let lineHeight = 0;
177
- let xPos = 0;
178
- let isFirstChar = true;
179
- for (let j = 0; j < len; j++) {
180
- if (!isFirstChar)
181
- xPos += this._letterSpacing;
182
- const ch = line.charAt(j);
183
- const texture = font.getTexture(ch);
184
- let texW;
185
- let texH;
186
- if (!texture) {
187
- if (ch === ' ') {
188
- texW = emptyWidth;
189
- texH = emptyHeight;
190
- }
191
- else {
192
- if (isFirstChar)
193
- isFirstChar = false;
194
- continue;
195
- }
196
- }
197
- else {
198
- texW = texture.textureWidth;
199
- texH = texture.textureHeight;
200
- }
201
- if (isFirstChar)
202
- isFirstChar = false;
203
- if (hasWidthSet && j > 0 && xPos + texW > fieldWidth) {
204
- if (!pushLine(line.substring(0, j), lineHeight, xPos))
205
- break;
206
- line = line.substring(j);
207
- len = line.length;
208
- j = 0;
209
- xPos = len === 1 ? texW : font.getConfig(ch, 'xadvance') || texW;
210
- lineHeight = texH;
211
- continue;
212
- }
213
- xPos += j === len - 1 ? texW : font.getConfig(ch, 'xadvance') || texW;
214
- lineHeight = Math.max(texH, lineHeight);
215
- }
216
- if (!isNaN(fieldHeight) && i > 0 && totalHeight > fieldHeight)
217
- break;
218
- pushLine(line, lineHeight, xPos);
219
- }
220
- this._textWidth = totalWidth;
221
- this._textHeight = Math.max(0, totalHeight - this._lineSpacing);
222
- this._textStartX = 0;
223
- this._textStartY = 0;
224
- if (hasWidthSet && fieldWidth > totalWidth) {
225
- if (this._textAlign === HorizontalAlign.RIGHT)
226
- this._textStartX = fieldWidth - totalWidth;
227
- else if (this._textAlign === HorizontalAlign.CENTER)
228
- this._textStartX = Math.floor((fieldWidth - totalWidth) / 2);
229
- }
230
- if (!isNaN(fieldHeight) && fieldHeight > this._textHeight) {
231
- if (this._verticalAlign === VerticalAlign.BOTTOM)
232
- this._textStartY = fieldHeight - this._textHeight;
233
- else if (this._verticalAlign === VerticalAlign.MIDDLE)
234
- this._textStartY = Math.floor((fieldHeight - this._textHeight) / 2);
235
- }
236
- return this._textLines;
237
- }
238
190
  }
239
191
  //# sourceMappingURL=BitmapText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BitmapText.js","sourceRoot":"","sources":["../../../src/kurot/text/BitmapText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BitmapText.js","sourceRoot":"","sources":["../../../src/kurot/text/BitmapText.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export { TextFieldType } from './enums/TextFieldType.js';
4
4
  export { TextFieldInputType } from './enums/TextFieldInputType.js';
5
5
  export type { ITextStyle, ITextElement, IWTextElement, ILineElement, IHitTextElement } from './types/ITextElement.js';
6
6
  export { HtmlTextParser } from './HtmlTextParser.js';
7
+ export type { BitmapFontOptions } from './BitmapFont.js';
7
8
  export { BitmapFont } from './BitmapFont.js';
8
9
  export { BitmapText } from './BitmapText.js';
9
10
  export { measureText, getFontString } from './TextMeasurer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kurot/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kurot/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -5,7 +5,7 @@ agent unfamiliar with Kurot does not need to re-derive the architecture from
5
5
  scratch on every session. Treat the package source and its `src/index.ts`
6
6
  barrel as the authority for current behavior and exports.
7
7
 
8
- Package identity: `@kurot/core@2.1.1`. It provides Kurot's scene graph,
8
+ Package identity: `@kurot/core@2.2.0`. It provides Kurot's scene graph,
9
9
  events, rendering, text, resource, network and media runtime. Rendering uses a
10
10
  flat `InstructionSet + RenderPipe` pipeline. ES2022 / evergreen browsers only
11
11
  with `strict: true`. Two
@@ -28,7 +28,7 @@ src/kurot/
28
28
  ├── player/ Game loop + both render backends. Player, createPlayer(), SystemTicker/
29
29
  │ ticker singleton, ScreenAdapter, TouchHandler. Backend-neutral abstractions
30
30
  │ live here: RenderPipe / RenderContext / RenderBuffer interfaces (the latter
31
- │ two are internal), InstructionSet, and pipes/ (Bitmap/Graphics/Mesh/Text/
31
+ │ two are internal), InstructionSet, and pipes/ (Bitmap/BitmapText/Graphics/Mesh/Text/
32
32
  │ Filter/Mask/Particle). The WebGL instruction renderer consumes the pipes.
33
33
  │ ├── webgl/ WebGLRenderer, WebGLRenderContext, WebGLRenderBuffer/Target,
34
34
  │ │ WebGLVertexArrayObject, WebGLDrawCmdManager, MultiTextureBatcher,
@@ -44,7 +44,7 @@ src/kurot/
44
44
  ├── text/ TextField, BitmapText/BitmapFont, StageText (DOM overlay, INPUT mode only),
45
45
  │ HtmlTextParser, InputController, TextMeasurer, LineBreaks, TextLineLayout, WordWrap.
46
46
  ├── resource/ Resource class + `resource` singleton, ResourceLoader, analyzers/
47
- │ (Image/Json/Text/Sound/Sheet). Async, resource.json-driven (RES-compatible).
47
+ │ (Image/Json/Text/Sound/Sheet/Font). Async, resource.json-driven (RES-compatible).
48
48
  ├── net/ HttpRequest, ImageLoader. Low-level; resource/analyzers build on these.
49
49
  ├── media/ Sound (+SoundChannel), Video. Web Audio + HTMLAudioElement fallback.
50
50
  ├── system/ Capabilities (static). Must be _init()'d — createPlayer() does this for you.
@@ -116,8 +116,11 @@ colocated under `examples/benchmark/`; none are exported from `index.ts`.
116
116
  - `BlurFilter.quality` controls pass pairs (1–16); large radii downsample to
117
117
  stay within the existing 32-physical-pixel shader tier. Glow/DropShadow keep
118
118
  their existing fixed-sample shader and do not use their quality metadata.
119
- - GPU filters are skipped by Canvas 2D, including the Canvas capture used by
120
- cacheAsTexture and RenderTexture. Do not cache GPU effects through those APIs.
119
+ - Canvas 2D skips CustomFilter, MultiPassFilter and BloomFilter, including the
120
+ Canvas capture used by cacheAsTexture and RenderTexture. Built-in Blur, Glow
121
+ and DropShadow use CSS approximations; ColorMatrix uses CPU pixels. These
122
+ fallbacks are not pixel-equivalent to WebGL. Do not cache GPU shader effects
123
+ through those capture APIs. See docs/filters.md.
121
124
  - Filter setters invalidate weakly attached users. Direct uniform/binding edits
122
125
  need `filter.invalidate()`. Auxiliary canvas/video edits additionally need
123
126
  `BitmapData.invalidate(source)` for upload refresh.
@@ -162,11 +165,11 @@ Re-export order: `events`, `geom`, `utils`, `display`, `net`, `filters`,
162
165
  - **Media**: `Sound`/`SoundType`/`SoundEvents`, `SoundChannel`, `Video`.
163
166
  - **Player**: `Player`, `createPlayer`/`KurotApp`/`KurotOptions`; ticker: `SystemTicker`, `ticker`, `getTimer`, `setupLifecycle`, `START_TIME`, `invalidateRenderFlag`/`setInvalidateRenderFlag`, `requestRenderingFlag`/`setRequestRenderingFlag`, `Renderable`; rendering: `InstructionSet`/`Instruction`, `RenderPipe` (type), `CanvasBuffer`, `hitTestBuffer`, `CanvasRenderer`, `DisplayList`; input/layout: `TouchHandler`, `ScreenAdapter`/`StageDisplaySize`; WebGL: `WebGLRenderer`, `WebGLRenderContext`, `WebGLRenderBuffer`, `WebGLRenderTarget`, `WebGLVertexArrayObject`, `WebGLDrawCmdManager`, `WebGLProgram`, `ShaderLib`, `checkWebGLSupport`, `MultiTextureBatcher`.
164
167
  - `RenderContext` / `RenderBuffer` (`player/RenderContext.ts`, `player/RenderBuffer.ts`) are internal backend-neutral contracts and are not re-exported.
165
- - **Text**: `HorizontalAlign`, `VerticalAlign`, `TextFieldType`, `TextFieldInputType`; types `ITextStyle`, `ITextElement`, `IWTextElement`, `ILineElement`, `IHitTextElement`; `HtmlTextParser`, `BitmapFont`, `BitmapText`, `measureText`/`getFontString`, `TextField`, `StageText`, `InputController`, `tokenize`/`splitGraphemes`.
168
+ - **Text**: `HorizontalAlign`, `VerticalAlign`, `TextFieldType`, `TextFieldInputType`; types `ITextStyle`, `ITextElement`, `IWTextElement`, `ILineElement`, `IHitTextElement`, `BitmapFontOptions`; `HtmlTextParser`, `BitmapFont`, `BitmapText`, `measureText`/`getFontString`, `TextField`, `StageText`, `InputController`, `tokenize`/`splitGraphemes`.
166
169
  - **System**: `Capabilities`.
167
170
  - **localStorage**: namespace object — `import { localStorage } from '@kurot/core'`, then `localStorage.getItem(...)`.
168
171
  - **External**: `ExternalInterface` (named, not namespaced).
169
- - **Resource**: `Resource`/`resource` (shared instance), `ProgressCallback`, `ResourceEventListener`, `ResourceItem`, `ResourceType`, `ResourceConfig`/`ResourceConfigData`/`ResourceConfigEntry`, `ResourceLoader`, `ResourceEventType`/`ResourceEvent`, `AnalyzerBase`, `ImageAnalyzer`, `JsonAnalyzer`, `TextAnalyzer`, `SoundAnalyzer`, `SheetAnalyzer`.
172
+ - **Resource**: `Resource`/`resource` (shared instance), `ProgressCallback`, `ResourceEventListener`, `ResourceItem`, `ResourceType`, `ResourceConfig`/`ResourceConfigData`/`ResourceConfigEntry`, `ResourceLoader`, `ResourceEventType`/`ResourceEvent`, `AnalyzerBase`, `ImageAnalyzer`, `JsonAnalyzer`, `TextAnalyzer`, `SoundAnalyzer`, `SheetAnalyzer`, `FontAnalyzer`.
170
173
 
171
174
  `examples/benchmark/` is dev-only tooling and is **not** exported from `index.ts`.
172
175
 
@@ -240,3 +243,15 @@ separate UI capability requiring Core 2.1.0 or later.
240
243
  See [text layout](text-layout.md) for the Core contract and
241
244
  [Label text layout](../../ui/docs/label-text-layout.md) for fit bounds, state
242
245
  restoration and shared-schema boundaries.
246
+
247
+ ## Bitmap fonts in 2.2.0
248
+
249
+ [bitmap-fonts.md](bitmap-fonts.md) documents the headless bitmap-font dependency,
250
+ FontAnalyzer and BitmapTextPipe. ResourceType.Font is built in; BitmapText
251
+ now draws via WebGL/Canvas. BitmapFontOptions controls page ownership. Native
252
+ font data comes from @kurot/bitmap-font; do not reimplement parsing/layout here.
253
+ The dependency is published @kurot/bitmap-font ^0.1.0, with no local override.
254
+ BitmapText.measureText() leaves rendered constraints and layout caches unchanged;
255
+ text borrows the font and the resource/caller retains ownership. Font pages are
256
+ full, unrotated textures at scale factor 1. Core 2.1.1 does not include these
257
+ changes. Source versions alone do not confirm Core publication.