Skip to content

feat(design): FontScheme.Body.numeric extension for tabular numerals (0.0.15-alpha01)

Import User requested to merge feature/0e-inter-variable-typography into main

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.

🤖 Generated with Claude Code

Merge request reports

Loading