Commits
measure() and render_text() summed per-codepoint widths with no
grapheme awareness, so a base codepoint followed by U+FE0F (variation
selector-16) measured as base-width + 0 instead of one width-2 emoji
cluster. Add a one-codepoint lookahead to both loops: when the next
codepoint is U+FE0F, treat the pair as a single width-2 cluster, place
only the base glyph, and consume both. The wcwidth table is untouched.
The repro's bordered-fit assertion was rescoped to the render path;
the separate "fit() border does not reserve layout space" behavior is
tracked in its own issue.
Fixes #81
🏃 add input + combined startup benchmarks
build(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions group
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).
Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>
🧼 compress bundled wasm with brotli + z85 encoding
bench: add WASM init and startup timing benchmarks
chore: update benchmark workflow
* examples use `node:` api
* move main to top
* direct to examples folder
* fmt
* fix const ordering
* fmt again
move to examples folder with readme
Add snapshot() for pre-packing directive subtrees
chore: update publish workflow
✨ improve pack string overflow errors
Adds performance benchmarks with tinybench, benchmark CI via CodSpeed
chore: update preview workflow
Reverts three changes that need benchmarks before landing:
- -Oz / wasm-opt
- brotli+Z85 wasm compression
- wcwidth.c rewrite
measure() and render_text() summed per-codepoint widths with no
grapheme awareness, so a base codepoint followed by U+FE0F (variation
selector-16) measured as base-width + 0 instead of one width-2 emoji
cluster. Add a one-codepoint lookahead to both loops: when the next
codepoint is U+FE0F, treat the pair as a single width-2 cluster, place
only the base glyph, and consume both. The wcwidth table is untouched.
The repro's bordered-fit assertion was rescoped to the render path;
the separate "fit() border does not reserve layout space" behavior is
tracked in its own issue.
Fixes #81
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).
Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com>