Skip to content

v0.13.5-pl.1

Choose a tag to compare

@TBarregren TBarregren released this 13 May 13:50
· 54 commits to main since this release

Step 4 follow-up — tick-label typography wiring.

Wires the eight tickLabel* typography attributes (font family, size, weight, style, line height, letter spacing, text transform, text decoration) to the rendered tick <text> elements. The margin algorithm already adapted to the chosen typography in v0.13.4, but the visible labels themselves were never restyled — editor labels picked up only the wrapper's default typography, and the frontend hardcoded an empty bundle into the measurer.

The fix mirrors GPX Map's tooltip-typography pattern: typography travels as eight --kntnt-gpx-blocks-elevation-tick-label-* CSS custom properties on the block wrapper, consumed by a SCSS rule on the chart SVG that turns each into a font-* / letter-spacing / text-* declaration with inherit as fallback. CSS inheritance becomes the single source of truth for both the visible tick labels and the measurer's hidden measurement nodes, eliminating the editor/frontend/measurer divergence that the rebuild targets.

Notable refactors:

  • New shared Rendering\Typography_Sanitizer class (sibling of Color_Sanitizer) hosts the eight allow-list sanitisers — extracted verbatim from Render_Map's private statics.
  • createTextMeasurer( svg ) returns (text: string) => TextMeasurement; computeMargins( data, measure ) drops its typography argument.
  • chart.tsx retains the typography prop solely as a useLayoutEffect dep-list trigger, pinned by a new Strategy-B test.

Test additions: 31 cases for Typography_Sanitizer, two cases for Render_Elevation (custom-property emission + sanitiser rejection), two cases for <Chart> (no-inline-on-<text> + remeasure-on-typography-change), one SCSS contract pin.

Full follow-up details in docs/elevation-rebuild.md § Step 4 recap.