From 7f627d99558fe1956bc2a89de166e1505ee2defd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sat, 8 Aug 2026 06:23:02 +0000 Subject: [PATCH] feat(registry): add the weight-wave kinetic type block A wave of thickness travels along a headline: letters swell from light to black and lean into the crest, then settle. Every kinetic type move we own animates transform, opacity or a mask. This animates the letterforms themselves, which is a different kind of motion and one almost nobody ships. Closed form by construction. Each character's weight is a function of its distance from a crest that sweeps the index range, so per-character stagger falls out of the geometry rather than from a separate mechanism. Ships Recursive, subset to the two axes it uses. Three findings that are not guessable from the diff: Recursive is duplexed, holding one advance width across the whole weight axis by design. A width-delta liveness probe therefore reports a healthy font as dead, so the guard measures rendered ink instead. An ink-only guard would have been a false pass: with the font removed, the fallback family still varies its own ink with weight. The guard needs the font-loaded check too, and a falsifier is what proved that rather than reasoning about it. CRSV defaults to 0.5, which is auto: cursive single-storey letterforms swap in the moment the slant axis goes negative. Under a travelling crest that is a per-character glyph substitution popping on and off, not an interpolation. Pinning it to 0 is a correctness fix, not a size optimisation. Requires the sweep-fingerprint fix to land first; without it the layout audit reports this timeline as static, because font axes were not part of the fingerprint and duplexing removes the last trace. --- docs/catalog/blocks/weight-wave.mdx | 43 +++ docs/docs.json | 1 + docs/public/catalog-index.json | 15 + .../blocks/weight-wave/assets/fonts/OFL.txt | 93 ++++++ .../fonts/Recursive-wght-slnt-latin.woff2 | Bin 0 -> 76340 bytes .../blocks/weight-wave/registry-item.json | 116 +++++++ registry/blocks/weight-wave/weight-wave.html | 299 ++++++++++++++++++ registry/registry.json | 4 + 8 files changed, 571 insertions(+) create mode 100644 docs/catalog/blocks/weight-wave.mdx create mode 100644 registry/blocks/weight-wave/assets/fonts/OFL.txt create mode 100644 registry/blocks/weight-wave/assets/fonts/Recursive-wght-slnt-latin.woff2 create mode 100644 registry/blocks/weight-wave/registry-item.json create mode 100644 registry/blocks/weight-wave/weight-wave.html diff --git a/docs/catalog/blocks/weight-wave.mdx b/docs/catalog/blocks/weight-wave.mdx new file mode 100644 index 0000000000..8a1a2fd6ae --- /dev/null +++ b/docs/catalog/blocks/weight-wave.mdx @@ -0,0 +1,43 @@ +--- +title: "Weight Wave" +description: "A crest of thickness travels along a headline: each character swells from light to black and leans forward as the wave passes, driven by the wght and slnt variable-font axes rather than by transforms." +--- + +