Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jpoindexter/typography-system
Reference-grade guide to building a cross-platform type system — modular/fluid scales, leading & measure, pairing, variable fonts, OpenType, baseline rhythm, accessible ramps, and the tokens that ship it.
Passed 22 of 22 test cases with the skill, and 21 of 22 without it.
1 fixed21 passed either way0 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
A test case the skill fixed. Same model, same prompt, with and without the skill.
Specify font file formats to serve in modern web browser `@font-face` CSS declarations for optimal performance and compression.
| Checked | Without skill | With skill |
|---|---|---|
| Specifies WOFF2 as the sole font file format | Missed | Passed |
The instructions your model reads when the skill loads.
A type system is the set of rules that turns raw fonts into a coherent, scalable voice across every screen. Get it right and hierarchy, rhythm, and readability come for free; get it wrong and no amount of color or layout rescues it. This is the bible: anatomy → scale → spacing → selection → variable/OpenType → rhythm → hierarchy → tokens → accessibility → mistakes.
x. The perceived size of a font; two fonts at 16px look different sizes because of it. High x-height (Inter, Source Sans) reads larger and better at small sizes; low x-height (Garamond) feels elegant but needs more size.h, b, k) / below baseline (g, p, y). They eat into line-height; this is why a 16px font occupies ~22px of vertical space.o, e, a. Open counters survive small sizes and low resolution.c, e, a). Wide apertures (Frutiger, Inter) = legible at distance/small size; closed apertures hurt accessibility.1em = the font-size. The reference for all relative metrics.Why care: you can't pick a UI font, set a scale, or align to a grid without knowing x-height, cap height, and how ascenders/descenders consume line-height.
Pick a base size and a ratio; multiply repeatedly to generate steps. This produces sizes that relate harmonically instead of arbitrary 14/15/17/19px noise.
Base size: 16px on web — it's the browser default, the minimum for comfortable body text, and the anchor for rem. Never set html { font-size: 14px } (it shrinks everyone's accessibility baseline).
Common ratios (smaller ratio = subtle, dense UI; larger = dramatic editorial):
| Ratio | Name | Feel | Use for |
|---|---|---|---|
| 1.125 | Major second | Tight, calm | Dense dashboards, data UI |
| 1.200 | Minor third | Gentle | Product UI, forms |
| 1.250 | Major third | Balanced (most popular) | General web/app UI |
| 1.333 | Perfect fourth | Confident | Marketing + app hybrid |
| 1.414 | Augmented fourth (√2) | Strong | Editorial |
| 1.500 | Perfect fifth | Bold | Landing pages |
| 1.618 | Golden ratio | Dramatic | Hero-driven sites |
Generating a scale (base 16, ratio 1.25): step_n = 16 × 1.25ⁿ → 10.24, 12.8, 16, 20, 25, 31.25, 39, 48.8, 61… Round to sane px, then store in rem.
test cases passed, vs 21 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.