- Numeric CSS-pixel
letterSpacingsupport onprepare(),prepareWithSegments(), and each existing rich-inline item (#108, #156).
- CJK text followed by opening bracket annotations now wraps like browsers instead of leaving the opening bracket on the previous line (#148).
{ wordBreak: 'keep-all' }now handles no-space mixed Latin, numeric, and CJK text more like browsers.
- Geometry-first rich line helpers for manual layout work:
measureLineStats(),measureNaturalWidth(),layoutNextLineRange(), andmaterializeLineRange(). @chenglou/pretext/rich-inline, a narrow helper for inline-only rich text, mentions/chips, and browser-like boundary whitespace collapse.{ wordBreak: 'keep-all' }support onprepare()/prepareWithSegments()for CJK and Hangul text.- A virtualized markdown chat demo for rich inline text and
pre-wraplayout.
- Prepare-time analysis is more resilient on long mixed-script, CJK, Arabic, repeated-punctuation, and other degenerate inputs.
- Mixed CJK-plus-numeric runs, keep-all mixed-script boundaries, and long breakable runs now stay closer to browser behavior.
- Rich-path bidi metadata and CJK detection now handle the relevant astral Unicode ranges correctly.
- A justification comparison demo that shows native CSS justification, greedy hyphenation, and a Knuth-Plass-style paragraph layout side by side.
- Rich layout is faster on chunk-heavy and long-breakable text.
layout(),layoutWithLines(), andlayoutNextLine()stay aligned on narrowZWSP/ grapheme-breaking edge cases.- The justification comparison demo no longer paints justified lines wider than their column.
- npm now publishes built ESM JavaScript from
dist/instead of exposing raw TypeScript source as the package entrypoint. - TypeScript consumers now pick up shipped declaration files automatically from the published package, while plain JavaScript consumers can install and import the package without relying on dependency-side TypeScript transpilation.
{ whiteSpace: 'pre-wrap' }mode for textarea-like text, preserving ordinary spaces, tabs, and hard breaks.
- Safari line breaking is more accurate for narrow soft-hyphen and breakable-run cases.
Initial public npm release of @chenglou/pretext.
prepare()andlayout()as the core fast path for DOM-free multiline text height prediction.- Rich layout APIs including
prepareWithSegments(),layoutWithLines(),layoutNextLine(), andwalkLineRanges()for custom rendering and manual layout.