Skip to content

Typography draft v0.3.1

The font families and their size and weight scales from the Figma library, plus the line heights and letter spacing components set their text with.

The families (heading, body, mono) and their size and weight scales are the Figma library's Typography, as they are; line heights and letter spacing, which the Figma library lacks, are the design system's additions (tokens/additions/). Components and the docs site read them directly: a component's typography token is a composite of a family, a size and a weight from the Figma library and a line height and letter spacing from the additions. There are no semantic text styles in between.

Specimens

The tokens this foundation is built from, drawn from packages/tokens/src/: raw primitives and the semantic decisions on top of them. A token added to one of these groups appears here with no site change; values that differ per mode or per platform are shown next to each other.

Families

The three text families, with the system font that replaces heading and body on iOS and Android.

heading.family body.family mono.family · 3 tokens · A specimen in the family.

  • heading.family Inter
    iOS: "SF Pro", system-ui, sans-serifAndroid: Roboto, sans-serif

    Aa The quick brown fox jumps over the lazy dog

  • body.family Inter
    iOS: "SF Pro", system-ui, sans-serifAndroid: Roboto, sans-serif

    Aa The quick brown fox jumps over the lazy dog

  • mono.family "Fragment Mono"

    Aa The quick brown fox jumps over the lazy dog

Heading sizes

The raw size scale of the heading family. The text styles use 3xs to sm today.

heading.size.* · 10 tokens · A specimen at that size, in the nearest family token.

  • heading.size.3xl 64px

    The quick brown fox jumps over the lazy dog

  • heading.size.2xl 64px

    The quick brown fox jumps over the lazy dog

  • heading.size.xl 48px

    The quick brown fox jumps over the lazy dog

  • heading.size.lg 42px

    The quick brown fox jumps over the lazy dog

  • heading.size.md 32px

    The quick brown fox jumps over the lazy dog

  • heading.size.sm 24px

    The quick brown fox jumps over the lazy dog

  • heading.size.xs 20px

    The quick brown fox jumps over the lazy dog

  • heading.size.2xs 16px

    The quick brown fox jumps over the lazy dog

  • heading.size.3xs 14px

    The quick brown fox jumps over the lazy dog

  • heading.size.4xs 12px

    The quick brown fox jumps over the lazy dog

Body sizes

The raw size scale of the body family.

body.size.* · 6 tokens · A specimen at that size, in the nearest family token.

  • body.size.xl 24px

    The quick brown fox jumps over the lazy dog

  • body.size.lg 20px

    The quick brown fox jumps over the lazy dog

  • body.size.md 16px

    The quick brown fox jumps over the lazy dog

  • body.size.sm 14px

    The quick brown fox jumps over the lazy dog

  • body.size.xs 12px

    The quick brown fox jumps over the lazy dog

  • body.size.2xs 10px

    The quick brown fox jumps over the lazy dog

Mono sizes

The raw size scale of the mono family.

mono.size.* · 6 tokens · A specimen at that size, in the nearest family token.

  • mono.size.2xl 40px

    The quick brown fox jumps over the lazy dog

  • mono.size.xl 24px

    The quick brown fox jumps over the lazy dog

  • mono.size.lg 20px

    The quick brown fox jumps over the lazy dog

  • mono.size.md 16px

    The quick brown fox jumps over the lazy dog

  • mono.size.sm 14px

    The quick brown fox jumps over the lazy dog

  • mono.size.xs 12px

    The quick brown fox jumps over the lazy dog

Weights

The weights each family offers, drawn in that family.

heading.weight.* body.weight.* mono.weight.* · 5 tokens · A specimen at that weight, in the nearest family token.

  • heading.weight.medium 500

    The quick brown fox jumps over the lazy dog

  • heading.weight.semi-bold 600

    The quick brown fox jumps over the lazy dog

  • body.weight.regular 400

    The quick brown fox jumps over the lazy dog

  • body.weight.medium 500

    The quick brown fox jumps over the lazy dog

  • mono.weight.regular 400

    The quick brown fox jumps over the lazy dog

Line heights

Multipliers of the font size: compact for the Button label, tight for labels and headings, normal for running text. Added by the design system: the Figma library has none.

font.line-height.* · 3 tokens · A short paragraph at that line height.

  • font.line-height.compact 1 The line box equals the font size: single-line labels set as in the Figma prototype (Button).

    Line height sets the distance between the baselines of two lines of text. Running text needs more of it than a label on a single line.

  • font.line-height.tight 1.2

    Line height sets the distance between the baselines of two lines of text. Running text needs more of it than a label on a single line.

  • font.line-height.normal 1.5

    Line height sets the distance between the baselines of two lines of text. Running text needs more of it than a label on a single line.

Letter spacing

Tracking added between letters: normal (0) everywhere, tight for the Button label, one step per body size it uses. Added by the design system: the Figma library has none.

font.letter-spacing.* · 4 tokens · A specimen at that letter spacing.

  • font.letter-spacing.normal 0px

    The quick brown fox jumps over the lazy dog

  • font.letter-spacing.tight.xs -0.24px

    The quick brown fox jumps over the lazy dog

  • font.letter-spacing.tight.sm -0.28px

    The quick brown fox jumps over the lazy dog

  • font.letter-spacing.tight.md -0.48px

    The quick brown fox jumps over the lazy dog

Examples

Components following this foundation, rendered by their web templates, once per mode. States are forced with data-state, so what you see is exactly what the CSS defines, without a keyboard.

light
dark