|
1 | 1 | core:changelogs: |
2 | | - - content: "---\npackages:\n tegaki:\n type: minor\n---\n\n## Add `TegakiEngine.toSVG()` and a `canvas` accessor\n\nThe engine can now serialize its current text to a standalone SVG string via `toSVG({ animated, loop })` — either self-drawing (SMIL mask reveal, variable stroke width) or looping (CSS keyframes, constant width), with the viewBox cropped to the ink. The backing `<canvas>` is also exposed through a `canvas` getter so export tooling can read pixels without reaching through the DOM.\n" |
3 | | - filename: engine-to-svg-export.md |
| 2 | + - content: "---\npackages:\n tegaki:\n type: minor\n---\n\n## Infer and apply CSS `letter-spacing`\n\nThe renderer now reads `letter-spacing` from the container's computed style — alongside `font-size`, `line-height`, and `color` — and applies it to the animated strokes, re-measuring when it changes. Spacing is inserted between clusters in the shaper pen-walk (matching the browser exactly for Latin, CJK, and non-cursive RTL like Hebrew) and picked up automatically from the DOM-measured offsets on the char-keyed fallback path, so line wrapping, glyph positions, and the drawn text stay in sync. The headless `textToSvg` export gained a matching `letterSpacing` option.\n" |
| 3 | + filename: letter-spacing.md |
4 | 4 | v: 0.0.0 |
5 | | - - content: "---\npackages:\n tegaki:\n type: minor\n---\n\n## Add a `tegaki` CLI and a `textToSvg()` export\n\n`npx tegaki` renders text to an animated handwriting SVG straight from the command line. The same output is available programmatically through the new `textToSvg()` export, along with its `TextToSvgMode` and `TextToSvgOptions` types.\n" |
6 | | - filename: cli-and-text-to-svg.md |
| 5 | + - content: "---\npackages:\n tegaki:\n type: patch\n---\n\n## Fix the React `TegakiRenderer` ref handle on React 18\n\n`TegakiRenderer` exposed its imperative handle via React 19's ref-as-prop, which React 18 silently drops (`ref is not a prop`), leaving the ref `null` despite the declared `react: >=18` support. It now uses `forwardRef`, so the `{ engine, element }` handle works on both React 18 and 19 (the generic component API is preserved).\n" |
| 6 | + filename: react-forwardref.md |
| 7 | + v: 0.0.0 |
| 8 | + - content: "---\npackages:\n tegaki:\n type: patch\n---\n\n## Fix doubled ghost text when exporting through DOM rasterizers\n\nThe DOM text overlay (kept for selection, accessibility and layout measurement) was hidden only with `-webkit-text-fill-color: transparent`. DOM-to-image/video rasterizers that don't implement that non-standard property — Editframe, html-to-image, Satori, headless-screenshot pipelines — repainted the overlay text in the inherited color and a default font, doubled on top of the canvas handwriting. It is now hidden with the standard `color: transparent`, which those exporters honor. (In `editable` mode the caret follows `currentColor`, so it is no longer independently visible — an accepted trade-off for correct exports.)\n" |
| 9 | + filename: overlay-export-color.md |
7 | 10 | v: 0.0.0 |
8 | 11 | core:packages: |
9 | 12 | - id: npm:@tegaki/root |
10 | 13 | updated: true |
11 | | - - changelogIds: |
12 | | - - engine-to-svg-export.md |
13 | | - - cli-and-text-to-svg.md |
14 | | - id: npm:tegaki |
| 14 | + - id: npm:@tegaki/example-nuxt |
15 | 15 | updated: true |
16 | | - - id: npm:@tegaki/website |
| 16 | + - id: npm:@tegaki/example-next |
17 | 17 | updated: true |
18 | | - - id: npm:tegaki-generator |
| 18 | + - id: npm:@tegaki/example-remotion |
19 | 19 | updated: true |
20 | 20 | - id: npm:@tegaki/example-e2e |
21 | 21 | updated: true |
22 | | - - id: npm:@tegaki/example-next |
23 | | - updated: true |
24 | | - - id: npm:@tegaki/example-nuxt |
| 22 | + - id: npm:hyperframes |
25 | 23 | updated: true |
26 | | - - id: npm:@tegaki/example-remotion |
| 24 | + - id: npm:tegaki-generator |
27 | 25 | updated: true |
28 | 26 | - id: npm:@tegaki/example-vite |
29 | 27 | updated: true |
30 | | - - id: npm:hyperframes |
| 28 | + - id: npm:@tegaki/website |
| 29 | + updated: true |
| 30 | + - changelogIds: |
| 31 | + - letter-spacing.md |
| 32 | + - react-forwardref.md |
| 33 | + - overlay-export-color.md |
| 34 | + id: npm:tegaki |
| 35 | + updated: true |
| 36 | + - id: npm:@tegaki/example-editframe |
31 | 37 | updated: true |
32 | 38 | npm:packages: |
33 | 39 | - id: npm:@tegaki/root |
34 | | - - id: npm:tegaki |
35 | | - - id: npm:@tegaki/website |
36 | | - - id: npm:tegaki-generator |
37 | | - - id: npm:@tegaki/example-e2e |
38 | | - - id: npm:@tegaki/example-next |
39 | 40 | - id: npm:@tegaki/example-nuxt |
| 41 | + - id: npm:@tegaki/example-next |
40 | 42 | - id: npm:@tegaki/example-remotion |
41 | | - - id: npm:@tegaki/example-vite |
| 43 | + - id: npm:@tegaki/example-e2e |
42 | 44 | - id: npm:hyperframes |
| 45 | + - id: npm:tegaki-generator |
| 46 | + - id: npm:@tegaki/example-vite |
| 47 | + - id: npm:@tegaki/website |
| 48 | + - id: npm:tegaki |
| 49 | + - id: npm:@tegaki/example-editframe |
0 commit comments