Master Reference · v1.0

Wavecast Typography — Role Registry

The canonical WDS type system — 30 semantic roles with their fonts, weights and metrics, rendered as live specimens. The same tokens are consumed by the Hub product UI, the document builder render pipeline and inline editors: different application mechanisms, one source of truth.

Mirrors: Notion · Typography Role RegistryEng source: wds-theme-typography (Bruno)Design source: WDS Design System v2.0
01

The two families

Canonical

Poppins carries the headings; Inter carries everything read or set small.

Aa
Poppins
Display · Headline · Title — weights 600 / 700 · no italic
Aa
Inter
Body, Lead, Labels, Utility, Meta, Caption — 400 / 500 / 600 / 700 · 400 italic
Notes
  • Poppins — prominent heading treatments where its character carries. Working weights 600 (SemiBold) and 700 (Bold). No italic.
  • Inter — reading and small-text roles where screen legibility wins. Working weights 400 / 500 / 600 / 700, plus 400 italic for Blockquote.
  • Both load from Google Fonts at runtime on web surfaces; for PDF / Word the render pipeline must embed them.
  • Inter 700 isn't yet bound to a named role — it exists as a component-level override (chart-block value labels). A second consumer earns it a role.
02

Live specimens

30 roles

Every role at its registry values. Type settings are identical across light and dark — only colour bindings differ, so these specimens stand for both modes.

DisplayPoppins · hero & document titles
text-display-sm
Display / sm
Poppins60040 / 48
Broadcast that compounds
text-display
Display / base
Poppins70052 / 60
Broadcast that compounds
text-display-lg
Display / lg
Poppins70072 / 80
Compounds
HeadlinePoppins · page-level & prominent block titles
text-headline-sm
Headline / sm
Poppins60020 / 28
Audience engagement, end to end
text-headline
Headline / base
Poppins60024 / 32
Audience engagement, end to end
text-headline-md
Headline / md
Poppins70028 / 36
Audience engagement, end to end
text-headline-lg
Headline / lg
Poppins60032 / 40
Audience engagement, end to end
TitlePoppins · structural section & component headings
text-title-sm
Title / sm
Poppins60014 / 20
Operational feedback
text-title-xs
Title / xs
Poppins60015 / 22
Operational feedback
text-title
Title / base
Poppins60016 / 24
Operational feedback
text-title-lg
Title / lg
Poppins60018 / 26
Operational feedback
Body & readingInter · paragraph copy and tone-setters
text-body-sm
Body / sm
Inter40013 / 20
The webinar drew a steady, engaged audience throughout — retention held well past the midpoint, and the Q&A ran long.
text-body
Body / base
Inter40015 / 22
The webinar drew a steady, engaged audience throughout — retention held well past the midpoint, and the Q&A ran long.
text-body-lg
Body / lg
Inter40017 / 26
The webinar drew a steady, engaged audience throughout — retention held well past the midpoint.
text-subhead
Subhead
Inter50016 / 24
A relationship document, not a results dump
text-lead
Lead
Inter40018 / 28
This report opens the next chapter of the partnership — what worked, how we worked, and where we go next.
text-blockquote
Blockquote
Inter400 italic17 / 26
“The session gave our clinical team exactly the practical detail they'd been asking for.”
text-list-item
List Item
Inter40015 / 22
Typographically identical to Body — separate token for list-specific layout targets.
Labels & small textInter · UI labels, metadata, fine print
text-section-label
Label / Section
Inter60012 / 16 · 0.06em
text-label
Label / base
Inter50013 / 18
Brand Manager
text-label-secondary
Label / Secondary
Inter40013 / 18
Medical Affairs
text-utility
Utility
Inter50012 / 16
Filter · Sort · Export
text-meta
Meta
Inter40012 / 16
Prepared by Wavecast Pro · 1 June 2026
text-footnote
Footnote
Inter40011 / 16
Figures are indicative and based on platform-reported engagement at time of export.
text-button
Button
Inter60014 / 20
View the full report
text-callout
Callout
Inter50014 / 20
Carry this format forward as the Wavecast delivery standard.
text-callout-lg
Callout / lg
Inter50015 / 22
Carry this format forward as the Wavecast delivery standard.
Inline & annotationInter · links and captions
text-link
Link
Inter40015 / 22 · underline
Read the partnership summary →
text-caption-sm
Caption / sm
Inter60010 / 14 · 0.08em
Fig. 1 — Retention curve
text-caption
Caption / base
Inter60011 / 16 · 0.06em
Bolus feeding webinar · Nutricia UK & Ireland
03

The registry

Canonical

The canonical engineering tokens with full specifications. Designer references map to Sketch shared styles.

DisplayPoppins · hero & document titles
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-display-smsmPoppins60040480Display / sm
text-displaybasePoppins70052600Display / base
text-display-lglgPoppins70072800Display / lg
HeadlinePoppins · page-level & prominent block titles
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-headline-smsmPoppins60020280Headline / sm
text-headlinebasePoppins60024320Headline / base
text-headline-mdmdPoppins70028360Headline / md
text-headline-lglgPoppins60032400Headline / lg
TitlePoppins · structural section & component headings
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-title-smsmPoppins60014200Title / sm
text-title-xsxsPoppins60015220Title / xs
text-titlebasePoppins60016240Title / base
text-title-lglgPoppins60018260Title / lg
Body & readingInter · paragraph copy and tone-setters
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-body-smBody / smInter40013200Body / sm
text-bodyBody / baseInter40015220Body / base
text-body-lgBody / lgInter40017260Body / lg
text-subheadSubheadInter50016240Subhead / base
text-leadLeadInter40018280Lead / base
text-blockquoteBlockquoteInter40017260italicBlockquote / base
text-list-itemList ItemInter40015220List Item / base
Labels & small textInter · UI labels, metadata, fine print
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-section-labelLabel / SectionInter60012160.06Label / Section
text-labelLabel / baseInter50013180Label / base
text-label-secondaryLabel / SecondaryInter40013180Label / Secondary
text-utilityUtilityInter50012160Utility / base
text-metaMetaInter40012160Meta / base
text-footnoteFootnoteInter40011160Footnote / base
text-buttonButtonInter60014200Button / base
text-calloutCalloutInter50014200Callout / base
text-callout-lgCallout / lgInter50015220Callout / lg
Inline & annotationInter · links and captions
Engineering tokenVariantFontWtSizeLHKernDecorationDesigner ref
text-linkLinkInter40015220underline · Link swatchLink / base
text-caption-smCaption / smInter60010140.08Caption / sm
text-captionCaption / baseInter60011160.06Caption / base
Reading the table
  • Size / LH are pixels — size is the max end of the fluid range; for PDF / Word use the fixed pixel value.
  • Kern is letter-spacing in em. Convert where needed: pt = em × fontSize (Section label 0.06×12 = +0.72pt · Caption/sm 0.08×10 = +0.8pt · Caption 0.06×11 = +0.66pt).
  • LM/DM are one token each. Type settings are identical; only the colour binding differs (Text 1 LM #000000 / DM #ffffff, Link #fe2767 in both). The Sketch LM / DM folder split is a designer colour-pairing convenience.
04

What each role means

Pick the role by what the text is, not by eyeballing a size.

Headings · Poppins
  • Display — hero / marketing text. Cover pages, document titles, top-of-page treatments.
  • Headline — high-emphasis page-level text; section H1s and prominent block titles. md (28/700) is reserved for prominent card titles where base (24) is too light and lg (32) too large.
  • Title — medium-emphasis section / component headings; structural rather than ornamental. xs (15/600) is for tight side-panel and playlist contexts.
Body copy · Inter
  • Body — default reading typography.
  • Subhead (16/500) — component sub-headings needing emphasis below the heading hierarchy but heavier than Body. Sits between Body/lg and Title/base.
  • Lead — opening paragraph after a heading; sets tone. Apply Text 2 for a muted lead.
  • Blockquote — pull quotes, testimonials, customer voice. Italic at 17px. Indent / accent-bar layout is separate from the type role.
  • List Item — identical to Body; named separately so list layout properties have a target.
Labels, small text, inline · Inter
  • Label / Section — section labels, usually uppercase with 0.06em tracking. Label / Label Secondary — general and lighter-weight labels.
  • Utility — small UI text · Meta — author lines, timestamps · Footnote — disclaimers · Button — button labels · Callout — emphasised small body for highlight panels.
  • Link — underlined inline link bound to the Link swatch, for whole-element links. For inline links inside paragraphs, apply the Link colour as a per-character override on the existing role.
  • Caption / sm — smallest caption, uppercase 0.08em · Caption — standard caption with 0.06em tracking for small-size legibility.
05

Applying roles

One token per role, colour-decoupled. The theme class wires the colour; the role defines font, size, weight, line-height only.

/* Role as a CSS class on semantic HTML */
<p class="wds-lead">Opening paragraph after the heading…</p>
<h2 class="wds-headline-lg">Section heading</h2>
<blockquote class="wds-blockquote">Pulled quote…</blockquote>

/* Theme switching — roles re-bind automatically */
.theme--light { --text-1:#000000; --text-2:#71717a; --text-link:#fe2767; }
.theme--dark  { --text-1:#ffffff; --text-2:#a1a1aa; --text-link:#fe2767; }
How surfaces consume the same roles
  • Hub product UI — components bind typography slots to role tokens via CSS custom properties (e.g. --basic-event-card-title: var(--text-headline)).
  • Document builder (Notion → PDF / HTML / Word) — render pipeline applies role classes to semantic HTML, consuming the same wds-typography.css the Hub uses.
  • Inline editors (Froala) — load wds-typography.css, expose role classes via the paragraph-style dropdown, emit HTML the pipeline consumes.
Muted text
  • Keep the role, swap the colour to the Text 2 swatch — LM #71717a / DM #a1a1aa. Never make a separate "muted" role; role and colour are decoupled by design.
06

Overrides & out of scope

Track

First consumer of a treatment is a documented component override; a second consumer earns a named role.

ConsumerDerived fromOverride
Branded Docs — chart value labelsComponent-level (no role)Inter 700 / 16px / Accent Rose
Card Block / Year — "Feb" labelBespoke — no role bindingPoppins 58 / 700 · LH 80 · kern −0.028em · mode-paired colour
Session Panel — "MORE" linkBody / baseLink swatch colour · no underline ("subtle link")
Deferred — not yet in the registry
  • Table header / Table cell — after the core roles bed in. Inline code / Code block — mono stack, lower priority.
  • Paragraph trailing-gap spacing matrix — Bruno's text-spacing em scale exists but isn't paired to roles; vertical rhythm is the consuming surface's responsibility for now.
  • Page-level PDF / Word concerns — break rules, headers / footers, numbering, margins. Document-spec adjacent, not typography.
Wavecast Typography — Role Registry v1.0
Exact mirror of the Notion Typography Role Registry. Ported into the WDS References shell — roles and metrics are not edited here; update the registry, then re-sync.