Interactive paragraph
Measure it. Wrap it. Route it.
Width, height, line materialization, cursor ranges, shrink-wrap, routed flow, preserved spaces, tabs, and multilingual edge cases.
Width
360 px
Font
18 px
Leading
26 px
Line output
layoutWithLines()
Script matrix
Intl, glue rules, URLs, soft hyphens
Fixed-width snapshots from `prepareWithSegments()` and `layoutWithLines()`.
Shrink wrap
walkLineRanges()
Binary-searched widths that keep the same line count with less empty area.
Routed flow
layoutNextLine()
Variable line widths around obstacles, drawn directly to canvas.
Whitespace modes
`normal` vs `pre-wrap`
Tabs follow tab stops. Hard breaks stay explicit. Trailing spaces remain visible.