THE REFERENCE ROOM
Type has a voice.
Design the reading experience: hierarchy, rhythm, measure and contrast. Use the same Alice text to explore different visual voices.
Family and voice
Serif or sans-serif?
A serif typeface has finishing strokes; sans-serif omits them. Font-family lists fallbacks in preference order.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
h1 { font-family: Georgia, serif; }
p { font-family: Arial, Helvetica, sans-serif; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Swap the two font families. Which voice feels right for this text?
Hierarchy and scale
Same words, different emphasis
Size, weight and contrast guide attention. Begin with a clear hierarchy before adding effects.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
h1 { font-size: 56px; font-weight: 700; line-height: 1; }
p { font-size: 18px; font-weight: 400; color: #444; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Make the paragraph larger than the heading. What happens to the reading order?
Leading, tracking and measure
Give the text room
Leading is line spacing. Tracking is letter spacing. Measure is line length; try 45–70 characters as a starting point and judge the actual text.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
h1 { letter-spacing: -.04em; }
p { max-width: 45ch; line-height: 1.65; letter-spacing: .01em; text-align: left; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Try 25ch and 70ch. Compare left alignment with justification.
Contrast and readability
Colour is part of hierarchy
Keep body copy readable. Use saturated colours for intentional emphasis; check contrast before using small coloured text.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
body { background: #000; color: #FFF; }
h1 { color: #FF1493; }
p { border-left: 4px solid #7FFF00; padding-left: 20px; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Try swapping background and text colours.
Responsive typography
Scale without losing control
Fluid type responds to available width. The minimum and maximum prevent extremes.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
h1 {
font-size: clamp(2rem, 6vw, 5rem);
}
p {
max-width: 60ch;
}
@media (min-width: 600px) {
body { padding: 40px; }
}
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Change the clamp minimum and maximum independently.
Experimental typography
A different voice
Expressive display type can contrast with a quiet reading paragraph. Keep the source order meaningful.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
h1 { font-size: 64px; line-height: .95; text-transform: uppercase; letter-spacing: -.06em; color: #FF1493; text-shadow: 3px 3px 0 #7FFF00; }
p { max-width: 40ch; line-height: 1.6; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Create a new composition using only size, spacing, colour and alignment.
Variable fonts
A continuous range
Variable fonts can provide a range of weights or other axes in one font file. This system-font sample shows font-weight; continuous interpolation requires an installed or licensed variable font with a weight axis.
HTML
<h1>Down the Rabbit-Hole</h1>
<p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do.</p>
Edit HTML
Copy HTML
CSS
/* With a variable font loaded, try intermediate weights. */
h1 { font-family: system-ui, sans-serif; font-weight: 650; }
Edit CSS
Copy CSS
Run preview ↗
Reset
Try this → Try 400, 650 and 900. A non-variable fallback may map them to its available weights.