Skip to content
Skip design navigation
Etesie Alpha
Loading account
← Back to Customize typography
Typography · Learn · Guide

Typeface references

Brand, Plain and Mono are shared font-family references — the wrapper layer. Every type style inherits its font from one of them, so changing a reference here restyles every style that uses it. Personality up top via Brand, comfortable reading via Plain, technical content via the Mono extension.

Glyph coverage

Which writing systems must your type render?

A typeface only draws the characters — glyphs — it actually contains. Those glyphs ship grouped into writing systems (Latin, Cyrillic, Greek…), and the writing system, not the language, is the unit a face either carries or doesn't: German, French and Spanish all ride on Latin, so a face that draws one draws all three. If your product ships in a writing system a face doesn't include, that text quietly falls back to a system font — or the dreaded “tofu” boxes. Tell Etesie which writing systems you ship in and every typeface is checked against them.

Requested glyph→First family→Next fallback→System fallback

The browser walks each family's fallback stack and uses the first face that has each glyph — exactly the CSS font-family fallback relay Material relies on.

The mental model

Two typefaces, two jobs

Splitting type into two roles keeps a system both expressive and readable. The brand face appears rarely and large, so it can afford character. The plain face appears constantly and small, so it has to stay quiet and legible. Etesie assigns them automatically by role.

Expressive

Brand typeface

Carries display, headline and title roles — the large text that sets tone and draws the eye.

Legible

Plain typeface

Carries body and label roles — the working text that must stay effortless to read at length.

et— Etesie extension Beyond Material

A third voice: mono, for technical content

Material's type system defines exactly two typeface families — brand and plain — mapped under md.ref.typeface.*. But developer-facing products render code, keys, hashes, file paths and aligned numbers. That needs a monospace voice Material doesn't cover.

Etesie adds one thing transparently: --et-typeface-mono. It never replaces brand or plain. Technical styles reuse real Material role and size metrics and only swap the family. codeInline is just Body M, in mono.

const ratio = 1.250;0123456789 · 1,024.00 · 99.9%#A1B2-C3D4 · SKU-48291 · ~/etc/config.yml
Read-only preview · live from your theme

How they pair

Label · Plain stack

A headline set in your brand face

And the body copy beneath it, set in your plain face. The contrast between the expressive brand face above and the calm plain face here gives the page hierarchy and voice — without either one fighting the other.

Mono stack: geist-mono