Browse documentation

Foundations

Typography

Choose supported fonts and weights, build a readable hierarchy, and inspect the video type scale.

Supported fonts and weights

Existing marketing rule: use The Seasons bold for headlines, Switzer for body copy, controls, labels, and stat values, and JetBrains Mono for small uppercase, tracked eyebrow and stat labels. The Seasons ships regular 400 and bold 700; it has no semibold face. Switzer ships 400, 500, 600, and 700. All bundled faces are normal style, not italic.

The package stylesheet maps font-display, font-sans, and font-mono to the font stacks below. Its Google Fonts import requests JetBrains Mono 400 and 500; when that external request is unavailable the declared monospace fallbacks apply. The six local faces below are derived from the installed @font-face definitions.

Bundled brand fonts are restricted to internal CoreUX brand use. See installation and font-use guidance before redistribution. Do not request unsupported weights or depend on synthetic bold or italic; the library sets font-synthesis: none.

--ds-font-display
'The Seasons', 'Times New Roman', Georgia, serif
--ds-font-sans
Switzer, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif
--ds-font-mono
'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace
Switzer · 400 · normal

Make the next step clear.

Switzer · 500 · normal

Make the next step clear.

Switzer · 600 · normal

Make the next step clear.

Switzer · 700 · normal

Make the next step clear.

The Seasons · 400 · normal

Ideas become systems.

The Seasons · 700 · normal

Ideas become systems.

JetBrains Mono · 400 requested externally · declared fallback when unavailable

A clearer system

JetBrains Mono · 500 requested externally · declared fallback when unavailable

A clearer system

Exported video typography scale

Import typographyTokens from @coreux/ui. This is the separate video foundation scale used by inline-style primitives: display uses The Seasons at regular 400, and its label uses Switzer, unlike the marketing headline and eyebrow rules. A component may use only selected fields or its own sizing rules. These values are not a universal responsive type scale.

The specimens render the exact sizes, weights, line heights, and label tracking below. Large samples scroll inside their own region on a narrow screen; they are not silently reduced to fit.

Clear ideas.

typographyTokens.display
{
  "family": "The Seasons",
  "size": 72,
  "lineHeight": 0.94,
  "weight": 400
}
Size and letter spacing are pixels; line height is a unitless multiplier.

Make the next step clear.

typographyTokens.heading
{
  "family": "Switzer",
  "size": 42,
  "lineHeight": 1.05,
  "weight": 600
}
Size and letter spacing are pixels; line height is a unitless multiplier.

Make the next step clear.

typographyTokens.subheading
{
  "family": "Switzer",
  "size": 24,
  "lineHeight": 1.3,
  "weight": 600
}
Size and letter spacing are pixels; line height is a unitless multiplier.

Make the next step clear.

typographyTokens.body
{
  "family": "Switzer",
  "size": 18,
  "lineHeight": 1.45,
  "weight": 400
}
Size and letter spacing are pixels; line height is a unitless multiplier.

Illustrative result

typographyTokens.label
{
  "family": "Switzer",
  "size": 13,
  "lineHeight": 1.2,
  "weight": 600,
  "letterSpacing": 1.5
}
Size and letter spacing are pixels; line height is a unitless multiplier.

Readable hierarchy and documentation conventions

Proposed documentation conventions: keep long reading passages around 60 characters per line, give body copy generous line spacing, and use a local monospace stack for code. These are this reference site’s choices, not additional exported CoreUX tokens or rules. Use semantic headings in a logical order; font size alone does not supply heading structure.

Good — display headline, readable body

Make it clear.

Switzer lets the supporting explanation stay easy to read.

Poor — display type for body copy

The Seasons belongs in a headline. Setting the whole explanation in display type ignores the marketing rule and weakens the hierarchy.

Both samples remain readable; the poor sample demonstrates the wrong font role. For code, preserve indentation and allow horizontal scrolling rather than shrinking text until it becomes illegible.

Apply a text hierarchy

Link to this example1 presentation

Supported font weights with documentation-proposed sizes and a restrained reading measure.

A clearer system

Give every idea room.

Use Switzer for an explanation people can read comfortably. Keep display type in the headline, and let the supporting text describe one clear idea.

The sizes, 60ch reading measure, and line spacing here are documentation conventions, not an exported marketing type scale.

Preview only: surrounding canvas and spacing. All metrics are illustrative.

Values generated from @coreux/ui at 06f42fd: public foundation tokens, marketing stylesheet, bundled font definitions, and marketing conventions. Source links require repository access. Install the package and styles once.