feat(design): FontScheme.Body.numeric extension for tabular numerals (0.0.15-alpha01)
Chunk 0.E from the YallaClient refactor plan — first deliverable. Unblocks animated numeric displays (ride cost, ETA, distance) from digit-width jitter without a breaking-change cycle.
Summary
- New `FontScheme.Body.numeric` extension property that returns `base.medium.copy(fontFeatureSettings = "tnum")`.
- Extension (not a constructor slot) so `FontScheme.Body`'s binary contract stays stable — no `copy()` signature churn, no consumer breakage.
- KDoc explains usage, fallback behavior, and why extension over slot.
- `FONT_FEATURE_TABULAR_NUMERALS` constant kept internal for future combinators.
Version
0.0.14-alpha01 → 0.0.15-alpha01. Alpha reset per pre-1.0 additive-bump discipline. Klib baseline regenerated via `./gradlew :design:apiDump`.
Test plan
-
`./gradlew :design:compileKotlinMetadata` — green -
`./gradlew :design:apiCheck` — green (baseline updated) -
YallaClient consumer adoption in a follow-up PR (prices, ETA, distance)
Follow-ups for Chunk 0.E
- Inter Variable font drop (single file + `FontVariation.Settings`)
- `opsz` optical-sizing axis wiring once variable font lands
- YallaClient sweep of numeric displays to `System.font.body.numeric`
CI
Commit carries `[skip ci]`. Additive API change; publish happens on merge-to-main via CI regardless.