← tasteMarkdown

Typography

Condensed from: Taste Skill (https://github.com/Leonxlnx/taste-skill), Open Design (https://github.com/nexu-io/open-design), UI UX Pro Max (https://github.com/nextlevelbuilder/ui-ux-pro-max-skill), Hallmark (https://github.com/Nutlope/hallmark)

Faces

Scale per surface

Surface Sizes Rule
Marketing small 13-14, body 17-19, lead 20-26, head 32-64, display 48-144 Max 5 sizes. Display ≥4x body (study median 4.3, top sites 4.7). Hero median 72px / 5vw; top sites 6-8.4vw.
Editorial caption 12-13, body 17-20, deck 18-24, pull quote 28-40, display 56-96 Display/deck ratio ≥1.5x.
App / dashboard 12 / 14 / 16 / 20 / 24 (or 12/14/18/24) Ratio 1.2-1.25. Title 20-28px (never >32), KPI 24-30, body 13-14, meta 12, floor 11. Nothing ≥48px.
Mobile body 16-18, hero 32-48 (median 40), H2 24-28 Body never <16px (iOS input zoom).
:root{
  --step-small: clamp(.8125rem,.79rem + .1vw,.875rem);
  --step-body:  clamp(1.0625rem,1rem + .25vw,1.1875rem);
  --step-lead:  clamp(1.25rem,1.1rem + .7vw,1.625rem);
  --step-head:  clamp(2rem,1.3rem + 3.2vw,4rem);
  --step-display: clamp(3rem,1rem + 9vw,9rem);
}

Leading and measure

Size Line-height
Display ≥48px 0.9-1.05 (tighter as it grows; 1.2 looks inherited)
Headings 24-48px 1.05-1.2
Lead 20-26px 1.3-1.4
Body 15-19px 1.5-1.6; long reading 1.6-1.7
Small ≤14px 1.45-1.5
App 14px / 16px text 20px / 24px
CJK display 1.3-1.4, body 1.7-1.8
Arabic body 1.5-1.75

Tracking by size

Context letter-spacing
Body 14-18px 0
Small 11-13px +0.01 to +0.02em
Labels, buttons 0 to +0.02em
Caps labels (≤3 words) +0.06 to +0.1em (required)
24-32px -0.01em
32-48px -0.01 to -0.02em
48-96px -0.02 to -0.04em
96px+ -0.03 to -0.05em
Condensed or very heavy display 0 to -0.015em
Caps display 0 to +0.03em
CJK, Arabic, Persian, Urdu always 0

Tracking scales with size: a value right at 120px chokes 32px. Set it per step.

Weights

Numerals

Setting details

Loading

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preload" href="/fonts/display-700.woff2" as="font" type="font/woff2" crossorigin>

Vetted pairings (Google Fonts unless noted)

Display / Body Use
Newsreader / Hanken Grotesk Content products, newsletters, editorial SaaS
Gloock / Figtree Confident consumer brands, food, retail
EB Garamond / IBM Plex Sans Law, publishing, archives, foundations
Libre Bodoni / Public Sans Fashion, magazines, galleries
Archivo (wdth 112-125) / Archivo Events, sport, logistics; one family, width carries display
Barlow Condensed / Barlow Fitness, sports data, transit
IBM Plex Sans / IBM Plex Mono Developer tools, fintech, infrastructure
Onest / JetBrains Mono Dev tools, APIs, CLIs (mono for code and IDs only)
Hanken Grotesk alone Dense app UI, admin, dashboards
Literata / Sofia Sans Reading apps, long-form, knowledge tools
Source Serif 4 / Chivo Reports, research, policy
Crimson Pro / Atkinson Hyperlegible Universities, academic, accessibility-first
Atkinson Hyperlegible alone Government, health, low-vision audiences
Alegreya / Alegreya Sans Books, culture, humanities (superfamily)
Hepta Slab / Figtree Civic, utility, outdoor and hardware brands
Castoro / Manrope Hotels, wellness, hospitality
Noto Serif JP or SC / Noto Sans JP or SC CJK products
Noto Naskh Arabic / Noto Sans Arabic Arabic and bilingual RTL
System serif: Charter, "Bitstream Charter", "Sitka Text", Cambria, serif Zero-load editorial and docs
System mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace Code blocks only

Read by your agent through get_guide("typography") in the taste MCP.