Skip to the content

Status

6 open roadmap items, 1 open pull request and 1 open issue, read at Nov 3, 2026, 05:28 UTC from fa0ecdf.

The build reads the roadmap file and GitHub again after each commit and on a schedule.

Open work

Each row of a table of ROADMAP.md with an ID and a status that is not done. The build reads the file, so this list follows each commit.

6 of 6 open items

In progress 1

IDItemStatus
T1dArabic joining forms and an Indic shaper in the model, so that the widths of Arabic and Devanagari text are correct. Arabic is done: 240 of 240 lines within 0.01 px on the four arms (typeset#34). On macOS and Windows, the sum float32 of the canvas gives the paragraphs and the pages within 0.01 px. The Indic shaper for Devanagari is nextRoadmap in progress

Later 5

IDItemStatus
T2The Text rope: the width monoid, concatenation, slice and edit with summary updates; property tests (the rope width is equal to the width of the flat string)Roadmap later
T4Error bounds: the error of the fast path against a shaper (HarfBuzz) for each script and font, in 1/64 px; size scaling and hinting per fontRoadmap later
T5The bound fast path: width at most length × maximum advance of a declared character set, plus a margin per characterRoadmap later
T6Shaper fallback for complex scripts, ligatures, bidi and emojiRoadmap later
T8An adapter for the /text measurer interface of @mark1russell7/layout-contractRoadmap later
7 items are done. Show the done items
IDItemStatus
T1Font tables: read the glyph advances and the kerning pairs from a font file (TrueType, OpenType, WOFF2); a font epoch; a bench against canvas measureText on a corpus of fontsRoadmap done
T1bVariable fonts (fvar, avar, HVAR) at the weight of the CSS; a rounding mode to whole px; the comparison on Linux at the device scale 2, on macOS and on Windows, with a bound for each platformRoadmap done
T1cThe errors that remain after T1b. The GSUB pass (typeset#25), the instance advances (typeset#27), the table of engine rules (typeset#29) and the words of a canvas (typeset#31) close them. Each script except Arabic and Devanagari is now at most 0.0014 px on each platformRoadmap done
T3Line breakers as strategies: greedy, Knuth-Plass total fit and balanced, with the measures line count, raggedness and time, on the corpus and in the CI bench. @mark1russell7/typeset 0.1.0 has them in the subpath ./breaking, see BREAKING.md. layoutText of @mark1russell7/layout-contract 0.3.2 uses them, with the same output as 0.2.21 and the option breaker (layout-contract#148). The rope (T2) makes it incrementalRoadmap done
T7A text corpus generator (scripts, lengths, fonts, edit sequences) and the CI benchRoadmap done
T9Use the rigor homes: rigor-generators for the random numbers of the corpus, rigor-statistics for the statistics of the benchRoadmap done
S1The site on GitHub Pages: the font tables against canvas measureText in the browser, a sweep of the corpus, and the grid of a CI fonts run (typeset#35, typeset#37)Roadmap done

Pull requests

1 open pull request, the most recently updated first.

Issues

1 open issue, the most recently updated first.