Typeface anatomy
The vocabulary that turns "this font looks modern" into a claim you can defend.
Coles' method: read the letterforms, then say what you see.
1. When to invoke
- Comparing typefaces that look similar and needing to articulate the difference.
- Justifying a type choice from evidence.
- Reading a specimen or type-foundry page critically.
- Diagnosing why a face fails at small size or on screen.
Do not invoke to make the final choice (typeface-selection) or to combine
faces (typeface-pairing). This skill supplies the evidence those use.
2. Required context
- The actual specimen at the size and medium of use — anatomy read at 200px
tells you little about behavior at 14px.
- The characters that discriminate:
a g e s t R Q 1 l I 0 O, plus the mirrored
pairs q p and d b — a legibility test independent of the aperture/terminal
reading below (Stocks). These carry most of a face's identity.
- Whether you're judging text or display performance.
3. Invariant principles
- Anatomy is descriptive, not evaluative. "Open aperture" is an observation;
"better" requires a context.
- The main Latin alignments are cap height, x-height, and baseline. Other
writing systems have different points of focus — Indic scripts often hang from a
headline, Chinese characters gravitate to the heart, Japanese occupy a square.
Latin anatomy does not transfer. (Lupton)
- Overhang is intentional. Round letters overshoot the baseline and x-height
slightly; without it they'd look smaller than flat-sided letters.
- Nominal size ≠ apparent size. Two faces at the same size look different
sizes, mostly because of x-height.
- Longer ascenders and descenders need more line spacing.
4. The parts that actually matter
Vertical metrics
- x-height — height of the lowercase body. The single strongest driver of
apparent size.
- Cap height, ascender, descender, baseline, overshoot.
- Em square — the design space; glyphs may be large or small within it, which
is why the same point size renders differently across families.
Stroke and shape
- Stroke contrast — thick-to-thin variation. High contrast (Didone) shatters at
small sizes and on low-DPI screens; low contrast survives.
- Axis / stress — the angle through the thin points of a round letter. Humanist
faces have an angled axis (a pen's trace); Rational/Didone have a vertical one.
- Aperture — how open the gap is in
c, e, s, a. Open apertures aid
legibility at small sizes and distance; closed apertures (many Neo-Grotesques)
make c/e/s converge.
- Counter — the enclosed space in
o, e, a. Small counters fill in at small
sizes and in reverse (light-on-dark).
- Terminal — how a stroke ends: ball, flared, sheared, blunt.
- Serif shape — bracketed, unbracketed/hairline, slab, wedge.
Proportion
- Width — condensed to extended. Condensed buys characters per line.
- Weight.
- Optical size — whether the family provides designs cut for different sizes.
5. Context-dependent heuristics
Read anatomy at the size of use, in the medium of use. A face judged at 120px
in a foundry specimen tells you almost nothing about its behavior at 13px in a
table. Aperture and counter behavior only become decisive at small sizes.
Which features matter depends on the job.
| Job |
Anatomy that decides it |
| Small UI text |
Aperture, counter size, 1 l I / 0 O distinction |
| Long-form reading |
Moderate contrast, comfortable x-height, extender length |
| Display / headline |
Distinctive terminals, proportion, optical size |
| Data and tables |
Digit width consistency, unambiguous digits |
| Reversed (light on dark) |
Weight and counter size — thins vanish, counters fill |
Screen density changes the verdict. High stroke contrast that survives on a
high-DPI display can break up on a low-DPI one. Judge on the worst screen you
support, not the one on your desk.
x-height is a trade, not a virtue. Tall x-height raises apparent size and helps
at small sizes, but crowds out the features that distinguish a/d and n/h.
Judge both effects.
Extender length drives line-height. Long ascenders and descenders need more
line spacing; a face swap that changes extender length silently changes the
rhythm of every paragraph.
Anatomy is Latin-specific. Everything in this skill assumes cap height,
x-height, and baseline. For other scripts, route to international-typography
before applying any of it.
6. How letterforms become pixels
Everything above describes vector outlines. The reader sees pixels, and the
conversion is lossy and outside your control. Rutter's framing: removing obstacles
to reading "means understanding how letterforms end up represented on the screen."
Resolution sets the floor. Most laptop and desktop screens sit around 140 ppi;
high-resolution displays reach a few hundred; print runs at 600 dpi and up. A face
whose thins survive on paper may not have enough pixels to exist on a 140 ppi panel.
Rasterisation is lossy and subjective. Turning vectors into dots "is inherently
lossy. Consequently, letterforms can be distorted or even made illegible when
converted into groups of pixels." And it is subjective: different rendering engines
"rasterise the font files with varying degrees of success and significantly different
matrices of pixels for the same letterforms."
You are not rendering — the platform is. Each operating system has a text
rendering engine (sometimes more than one), and each browser chooses which to use. So
two browsers on the same OS can produce visibly different text, and that can
change between OS versions and browser releases. Users can tweak the settings too.
Hinting is instructions inside the font telling the rasteriser how to fit
outlines to the pixel grid. Most webfonts ship autohinted, because full manual
hinting is enormously expensive. Tim Ahrens, quoted by Rutter: initial improvements
come quickly, "but as you get closer to perfection the effort that is necessary to
achieve improvements increases," with Verdana as the extreme case "where the hinting
probably took weeks or months." Autohinting is "far more successful for anti-aliased
fonts than for black and white rendering, and is much better than no hinting at all."
The platform differences that actually matter:
- Only Windows uses hinting. iOS, macOS, Android, and Linux make no use of hints.
A beautifully hinted font buys you nothing on most of your traffic.
- Handheld devices use greyscale smoothing, not subpixel anti-aliasing — physical
subpixels sit in a row, so subpixel antialiasing doesn't work well once the device
rotates. Windows-based mobile combines greyscale smoothing with hinting.
What this means for choosing and setting type:
| Implication |
Action |
| You cannot control rasterisation |
Choose faces that survive it; don't tune for your own screen |
| High contrast and hairlines are first casualties |
Prefer low–moderate contrast at text sizes |
| Small counters fill in at low resolution |
Check counters at the smallest real size |
| Rendering differs per browser and per OS |
Check type across platforms, not just yours |
| Reversed (light-on-dark) text reads heavier |
Test it; consider a lighter weight or GRAD (see variable-fonts) |
7. Classification as visible evidence
Coles' classifications are descriptions of form, which is what makes them useful —
each implies what you'll see.
⚠️ Coles opens with a warning, and it should travel with the tables. "There is no
universal classification system. Just like any attempt to apply a set of genres to
creative work, be it music, literature, or art, typeface classification is inherently
problematic. After all, type is not biology — a typeface doesn't have a genetic code."
Letterforms have "too many subtle variations and too few constants," and a new style
will always arrive that fits none of your bins.
He also names why the common workaround fails: most systems "avoid this problem by
associating classifications with historical periods," which categorises historical
faces well but "become[s] impractical when it comes to contemporary design — what
comes after postmodern? Post-postmodern?"
So use these tables to describe what you can see and defend a choice from
evidence. Don't use them to argue a face into a bin, and don't expect a foundry to
group faces the way you do (see typeface-selection on genre vs. classification).
Classes are compound, not exclusive. Across the 100 faces Coles analyses, the
classification field is frequently a compound — Display/Humanist Sans,
Humanist Slab/Serif, Display/Neo-Grotesque/Geometric Sans. A face can be
geometric in construction and display in intent. Don't force one bucket.
Serifs
| Class |
Visible signals |
| Venetian Humanist Serif |
Strongly angled axis, low contrast, sloped e bar; earliest roman forms |
| French Humanist Serif |
Angled axis, more refined than Venetian, moderate contrast |
| Dutch Humanist Serif |
Sturdier, larger x-height, higher contrast than French |
| Transitional Serif (incl. English) |
More vertical axis, higher contrast, regular proportions |
| Rational Serif |
Vertical axis, high contrast, flatter serifs |
| Didone Serif |
Extreme contrast, vertical axis, hairline unbracketed serifs |
| Contemporary Serif |
Large x-height, low contrast, chunky serifs, very open apertures |
| Inscribed / Engraved / Glyphic |
Chiselled origin, low contrast, wedge or flared serifs |
Sans
| Class |
Visible signals |
| Grotesque Sans |
Structure like Transitional/Rational serifs, low contrast, oval rounds |
| Neo-Grotesque Sans |
Closed apertures, very regular, recedes (often called "neutral" — see typeface-selection) |
| Gothic Sans |
American grotesque lineage; sturdy, relatively closed workhorse forms |
| Humanist Sans |
Calligraphic structure, often higher contrast than other sans, open apertures |
| Neo-Humanist Sans |
Larger x-height, very open apertures, less contrast |
| Geometric Sans |
Circular rounds, near-uniform stroke, single-storey a common |
| Inscriptional Sans |
Sans with chiselled proportions and flared stems |
| Monospaced Sans |
Fixed advance width; disambiguated digits expected |
Slabs, scripts, and the rest
| Class |
Visible signals |
| Grotesque / Geometric / Humanist Slab |
Slab serifs on the corresponding sans structure — chunky, present serifs give slabs an advantage surviving rasterization at both light and heavy weights, which is part of why they're common on screen (Lupton, Type on Screen) |
| Formal Script |
Connected, calligraphic, high contrast — never for extended text |
| Casual Script |
Brush or hand lettering, looser, informal |
| Blackletter / Textura |
Dense angular vertical strokes; very low legibility for modern readers |
| Display |
Not a construction but an intent — drawn for large sizes; usually compounds with a structural class |
Two cautions. Stocks: classification "can be useful — and useless, too" — a lens, not
a taxonomy to defend. And the humanist serif subtypes are regional and historical
(Venetian, French, Dutch, English); if you can't see the distinction in the specimen,
don't claim it.
8. Failure patterns
| Pattern |
Cause |
Fix |
| Face looked elegant, muddy at 13px |
High stroke contrast, small counters |
Choose lower contrast for text sizes |
c, e, s blur at small size |
Closed apertures |
Choose open apertures |
| Two faces "the same size" look different |
Judged nominal, not apparent, size |
Compare x-heights |
| Swapped face, line spacing now cramped |
Longer ascenders/descenders |
Re-tune line-height |
| Letters hard to tell apart at small sizes |
Very large x-height crowding out distinction |
Balance x-height against character |
| Applied Latin anatomy to an Arabic face |
Wrong frame entirely |
Route to international-typography |
| Font looks thin and washed out in dark mode |
Light weight, low contrast reversed |
Increase weight for reversed text |
9. Evaluation procedure
- Render
a g e s t R Q 1 l I 0 O at the real use size.
- Measure or eyeball x-height against cap height. Tall, moderate, or short?
- Check stroke contrast. Will the thins survive this size and screen?
- Check apertures on
c e s a. Open or closing?
- Check counters at the smallest use size — do they fill in?
- Distinguish
1 l I and 0 O, and check the mirrored pairs q p / d b.
Critical for any data, code, or ID.
- Check ascender/descender length; note the line-height implication.
- Name the class from what you observed, not from the foundry's marketing.
10. Output format
Face: <name>
x-height: <tall|moderate|short> → apparent size <larger|matched|smaller> than <reference>
Contrast: <low|moderate|high> → <survives|fails> at <size>
Aperture: <open|moderate|closed>
Counters: <open|tight> at <size>
Terminals: <ball|flared|sheared|blunt>
Axis: <angled|vertical>
1/l/I and 0/O: <distinguishable|ambiguous>
q/p and d/b: <distinguishable|ambiguous>
Class (from evidence): <class>
Implications: <line-height, size compensation, suitable roles>
11. Examples
"Why does our 14px UI text feel harder to read than the old font at the same
size?"
The old face was a Neo-Humanist Sans: large x-height, very open apertures, low
contrast. The new one is a Geometric Sans — circular rounds, near-uniform stroke,
but noticeably closed apertures on c, e, s, and a single-storey a. At
14px those three letters begin converging, which is what's costing you. Also its
x-height is shorter, so it reads smaller at identical nominal size. Either bump
to 15px and accept the aperture cost, or pick a face with opener apertures for
UI and keep the geometric one for display.
12. Counterexamples
- ❌ "It's a sans serif, so it's clean and modern." — Sans covers Grotesque,
Neo-Grotesque, Humanist, Neo-Humanist, and Geometric, which look and behave
differently.
- ❌ "The x-height is large, so it's more legible." — Larger x-height aids apparent
size but crowds out the distinguishing characteristics of
a/d, n/h.
(Santa Maria)
- ❌ "Both are 16px so they're the same size." — Apparent size is set by x-height and
how the glyphs fill the em square.
- ❌ Judging anatomy from a foundry specimen set at 120px. Read at the use size.
- ❌ "The classification says Humanist, so it'll feel warm." — Classification is a
lens over visible form, not a guarantee of feeling.
13. Source citations
- Coles, The Anatomy of Type — primary source. The warning that "there is no
universal classification system… type is not biology — a typeface doesn't have a
genetic code," that letterforms have "too many subtle variations and too few
constants," and that period-based classification "become[s] impractical when it
comes to contemporary design." Classification by visible
form: stroke contrast, aperture, terminal, serif shape and x-height across
Humanist/Transitional/Rational/Contemporary serif, Inscribed, Grotesque,
Neo-Grotesque, Humanist, Neo-Humanist sans, and slab variants; comparing similar
typefaces from evidence.
- Rutter, Web Typography — "How fonts render on screens": screen resolution limits
(~140 ppi typical desktop vs 600 dpi print); rasterisation as "inherently lossy" and
subjective across engines; each OS having a text rendering engine and each browser
choosing one, so two browsers on one OS can differ; hinting and autohinting, with
Tim Ahrens on diminishing returns and Verdana taking "weeks or months"; only
Windows uses hinting; handhelds using greyscale smoothing rather than subpixel
anti-aliasing because subpixels sit in a row and fail on rotation.
- Lupton, Thinking with Type 3e — anatomy and alignment; cap height, x-height,
baseline as the Latin axes; other writing systems' different points of focus.
- Lupton (ed.), Type on Screen — x-height, descender overhang, and why longer
extenders demand more line spacing; slab serifs' chunky endstrokes surviving
rasterization well in both light and heavy weights.
- Santa Maria, On Web Typography — x-height as a tradeoff, not a virtue;
letters converging as x-height grows.
- Latin, Better Web Typography — anatomy walkthrough; contrast comparison.
- Stocks, Universal Principles of Typography — metrics, the em square,
classification's uses and limits; the
1lI/0Oo/q p/d b legibility test.
1---2name: typeface-anatomy3description: Use when reading a specimen, naming letterform parts, or explaining why two typefaces differ — apertures, counters, terminals, stroke contrast, axis, x-height, proportions. Also use when a font choice needs to be justified from visible evidence rather than vibes, or when comparing candidates that "look basically the same".4---56# Typeface anatomy78The vocabulary that turns "this font looks modern" into a claim you can defend.9Coles' method: read the letterforms, then say what you see.1011## 1. When to invoke1213- Comparing typefaces that look similar and needing to articulate the difference.14- Justifying a type choice from evidence.15- Reading a specimen or type-foundry page critically.16- Diagnosing why a face fails at small size or on screen.1718**Do not** invoke to make the final choice (`typeface-selection`) or to combine19faces (`typeface-pairing`). This skill supplies the evidence those use.2021## 2. Required context2223- The **actual specimen** at the size and medium of use — anatomy read at 200px24 tells you little about behavior at 14px.25- The **characters that discriminate**: `a g e s t R Q 1 l I 0 O`, plus the mirrored26 pairs `q p` and `d b` — a legibility test independent of the aperture/terminal27 reading below (Stocks). These carry most of a face's identity.28- Whether you're judging **text** or **display** performance.2930## 3. Invariant principles3132- **Anatomy is descriptive, not evaluative.** "Open aperture" is an observation;33 "better" requires a context.34- **The main Latin alignments are cap height, x-height, and baseline.** Other35 writing systems have different points of focus — Indic scripts often hang from a36 headline, Chinese characters gravitate to the heart, Japanese occupy a square.37 Latin anatomy does not transfer. (Lupton)38- **Overhang is intentional.** Round letters overshoot the baseline and x-height39 slightly; without it they'd look smaller than flat-sided letters.40- **Nominal size ≠ apparent size.** Two faces at the same size look different41 sizes, mostly because of x-height.42- **Longer ascenders and descenders need more line spacing.**4344## 4. The parts that actually matter4546**Vertical metrics**47- **x-height** — height of the lowercase body. The single strongest driver of48 apparent size.49- **Cap height**, **ascender**, **descender**, **baseline**, **overshoot**.50- **Em square** — the design space; glyphs may be large or small within it, which51 is why the same point size renders differently across families.5253**Stroke and shape**54- **Stroke contrast** — thick-to-thin variation. High contrast (Didone) shatters at55 small sizes and on low-DPI screens; low contrast survives.56- **Axis / stress** — the angle through the thin points of a round letter. Humanist57 faces have an angled axis (a pen's trace); Rational/Didone have a vertical one.58- **Aperture** — how open the gap is in `c`, `e`, `s`, `a`. **Open apertures aid59 legibility at small sizes and distance**; closed apertures (many Neo-Grotesques)60 make `c`/`e`/`s` converge.61- **Counter** — the enclosed space in `o`, `e`, `a`. Small counters fill in at small62 sizes and in reverse (light-on-dark).63- **Terminal** — how a stroke ends: ball, flared, sheared, blunt.64- **Serif shape** — bracketed, unbracketed/hairline, slab, wedge.6566**Proportion**67- **Width** — condensed to extended. Condensed buys characters per line.68- **Weight**.69- **Optical size** — whether the family provides designs cut for different sizes.7071## 5. Context-dependent heuristics7273- **Read anatomy at the size of use, in the medium of use.** A face judged at 120px74 in a foundry specimen tells you almost nothing about its behavior at 13px in a75 table. Aperture and counter behavior only become decisive at small sizes.76- **Which features matter depends on the job.**7778 | Job | Anatomy that decides it |79 |---|---|80 | Small UI text | Aperture, counter size, `1 l I` / `0 O` distinction |81 | Long-form reading | Moderate contrast, comfortable x-height, extender length |82 | Display / headline | Distinctive terminals, proportion, optical size |83 | Data and tables | Digit width consistency, unambiguous digits |84 | Reversed (light on dark) | Weight and counter size — thins vanish, counters fill |8586- **Screen density changes the verdict.** High stroke contrast that survives on a87 high-DPI display can break up on a low-DPI one. Judge on the worst screen you88 support, not the one on your desk.89- **x-height is a trade, not a virtue.** Tall x-height raises apparent size and helps90 at small sizes, but crowds out the features that distinguish `a`/`d` and `n`/`h`.91 Judge both effects.92- **Extender length drives line-height.** Long ascenders and descenders need more93 line spacing; a face swap that changes extender length silently changes the94 rhythm of every paragraph.95- **Anatomy is Latin-specific.** Everything in this skill assumes cap height,96 x-height, and baseline. For other scripts, route to `international-typography`97 before applying any of it.9899## 6. How letterforms become pixels100101Everything above describes vector outlines. The reader sees pixels, and the102conversion is lossy and outside your control. Rutter's framing: removing obstacles103to reading "means understanding how letterforms end up represented on the screen."104105**Resolution sets the floor.** Most laptop and desktop screens sit around **140 ppi**;106high-resolution displays reach a few hundred; print runs at 600 dpi and up. A face107whose thins survive on paper may not have enough pixels to exist on a 140 ppi panel.108109**Rasterisation is lossy and subjective.** Turning vectors into dots "is inherently110lossy. Consequently, letterforms can be distorted or even made illegible when111converted into groups of pixels." And it is *subjective*: different rendering engines112"rasterise the font files with varying degrees of success and significantly different113matrices of pixels for the same letterforms."114115**You are not rendering — the platform is.** Each operating system has a text116rendering engine (sometimes more than one), and each browser chooses which to use. So117**two browsers on the same OS can produce visibly different text**, and that can118change between OS versions and browser releases. Users can tweak the settings too.119120**Hinting** is instructions inside the font telling the rasteriser how to fit121outlines to the pixel grid. Most webfonts ship *autohinted*, because full manual122hinting is enormously expensive. Tim Ahrens, quoted by Rutter: initial improvements123come quickly, "but as you get closer to perfection the effort that is necessary to124achieve improvements increases," with Verdana as the extreme case "where the hinting125probably took weeks or months." Autohinting is "far more successful for anti-aliased126fonts than for black and white rendering, and is much better than no hinting at all."127128**The platform differences that actually matter:**129130- **Only Windows uses hinting.** iOS, macOS, Android, and Linux make no use of hints.131 A beautifully hinted font buys you nothing on most of your traffic.132- **Handheld devices use greyscale smoothing, not subpixel anti-aliasing** — physical133 subpixels sit in a row, so subpixel antialiasing doesn't work well once the device134 rotates. Windows-based mobile combines greyscale smoothing with hinting.135136**What this means for choosing and setting type:**137138| Implication | Action |139|---|---|140| You cannot control rasterisation | Choose faces that survive it; don't tune for your own screen |141| High contrast and hairlines are first casualties | Prefer low–moderate contrast at text sizes |142| Small counters fill in at low resolution | Check counters at the smallest real size |143| Rendering differs per browser *and* per OS | Check type across platforms, not just yours |144| Reversed (light-on-dark) text reads heavier | Test it; consider a lighter weight or `GRAD` (see `variable-fonts`) |145146## 7. Classification as visible evidence147148Coles' classifications are descriptions of form, which is what makes them useful —149each implies what you'll see.150151⚠️ **Coles opens with a warning, and it should travel with the tables.** "There is no152universal classification system. Just like any attempt to apply a set of genres to153creative work, be it music, literature, or art, typeface classification is inherently154problematic. After all, type is not biology — a typeface doesn't have a genetic code."155Letterforms have "too many subtle variations and too few constants," and a new style156will always arrive that fits none of your bins.157158He also names why the common workaround fails: most systems "avoid this problem by159associating classifications with historical periods," which categorises historical160faces well but "become[s] impractical when it comes to contemporary design — what161comes after postmodern? Post-postmodern?"162163So use these tables to **describe what you can see and defend a choice from164evidence**. Don't use them to argue a face into a bin, and don't expect a foundry to165group faces the way you do (see `typeface-selection` on genre vs. classification).166167**Classes are compound, not exclusive.** Across the 100 faces Coles analyses, the168classification field is frequently a compound — `Display/Humanist Sans`,169`Humanist Slab/Serif`, `Display/Neo-Grotesque/Geometric Sans`. A face can be170geometric in construction and display in intent. Don't force one bucket.171172**Serifs**173174| Class | Visible signals |175|---|---|176| Venetian Humanist Serif | Strongly angled axis, low contrast, sloped `e` bar; earliest roman forms |177| French Humanist Serif | Angled axis, more refined than Venetian, moderate contrast |178| Dutch Humanist Serif | Sturdier, larger x-height, higher contrast than French |179| Transitional Serif (incl. English) | More vertical axis, higher contrast, regular proportions |180| Rational Serif | Vertical axis, high contrast, flatter serifs |181| Didone Serif | Extreme contrast, vertical axis, hairline unbracketed serifs |182| Contemporary Serif | Large x-height, low contrast, chunky serifs, very open apertures |183| Inscribed / Engraved / Glyphic | Chiselled origin, low contrast, wedge or flared serifs |184185**Sans**186187| Class | Visible signals |188|---|---|189| Grotesque Sans | Structure like Transitional/Rational serifs, low contrast, oval rounds |190| Neo-Grotesque Sans | Closed apertures, very regular, recedes (often called "neutral" — see `typeface-selection`) |191| Gothic Sans | American grotesque lineage; sturdy, relatively closed workhorse forms |192| Humanist Sans | Calligraphic structure, often higher contrast than other sans, open apertures |193| Neo-Humanist Sans | Larger x-height, very open apertures, less contrast |194| Geometric Sans | Circular rounds, near-uniform stroke, single-storey `a` common |195| Inscriptional Sans | Sans with chiselled proportions and flared stems |196| Monospaced Sans | Fixed advance width; disambiguated digits expected |197198**Slabs, scripts, and the rest**199200| Class | Visible signals |201|---|---|202| Grotesque / Geometric / Humanist Slab | Slab serifs on the corresponding sans structure — chunky, present serifs give slabs an advantage surviving rasterization at both light and heavy weights, which is part of why they're common on screen (Lupton, *Type on Screen*) |203| Formal Script | Connected, calligraphic, high contrast — never for extended text |204| Casual Script | Brush or hand lettering, looser, informal |205| Blackletter / Textura | Dense angular vertical strokes; very low legibility for modern readers |206| Display | Not a construction but an **intent** — drawn for large sizes; usually compounds with a structural class |207208Two cautions. Stocks: classification "can be useful — and useless, too" — a lens, not209a taxonomy to defend. And the humanist serif subtypes are **regional and historical**210(Venetian, French, Dutch, English); if you can't see the distinction in the specimen,211don't claim it.212213## 8. Failure patterns214215| Pattern | Cause | Fix |216|---|---|---|217| Face looked elegant, muddy at 13px | High stroke contrast, small counters | Choose lower contrast for text sizes |218| `c`, `e`, `s` blur at small size | Closed apertures | Choose open apertures |219| Two faces "the same size" look different | Judged nominal, not apparent, size | Compare x-heights |220| Swapped face, line spacing now cramped | Longer ascenders/descenders | Re-tune line-height |221| Letters hard to tell apart at small sizes | Very large x-height crowding out distinction | Balance x-height against character |222| Applied Latin anatomy to an Arabic face | Wrong frame entirely | Route to `international-typography` |223| Font looks thin and washed out in dark mode | Light weight, low contrast reversed | Increase weight for reversed text |224225## 9. Evaluation procedure2262271. Render `a g e s t R Q 1 l I 0 O` at the **real** use size.2282. Measure or eyeball x-height against cap height. Tall, moderate, or short?2293. Check stroke contrast. Will the thins survive this size and screen?2304. Check apertures on `c e s a`. Open or closing?2315. Check counters at the smallest use size — do they fill in?2326. Distinguish `1 l I` and `0 O`, and check the mirrored pairs `q p` / `d b`.233 Critical for any data, code, or ID.2347. Check ascender/descender length; note the line-height implication.2358. Name the class from what you observed, not from the foundry's marketing.236237## 10. Output format238239```240Face: <name>241x-height: <tall|moderate|short> → apparent size <larger|matched|smaller> than <reference>242Contrast: <low|moderate|high> → <survives|fails> at <size>243Aperture: <open|moderate|closed>244Counters: <open|tight> at <size>245Terminals: <ball|flared|sheared|blunt>246Axis: <angled|vertical>2471/l/I and 0/O: <distinguishable|ambiguous>248q/p and d/b: <distinguishable|ambiguous>249Class (from evidence): <class>250Implications: <line-height, size compensation, suitable roles>251```252253## 11. Examples254255**"Why does our 14px UI text feel harder to read than the old font at the same256size?"**257258> The old face was a Neo-Humanist Sans: large x-height, very open apertures, low259> contrast. The new one is a Geometric Sans — circular rounds, near-uniform stroke,260> but noticeably closed apertures on `c`, `e`, `s`, and a single-storey `a`. At261> 14px those three letters begin converging, which is what's costing you. Also its262> x-height is shorter, so it reads smaller at identical nominal size. Either bump263> to 15px and accept the aperture cost, or pick a face with opener apertures for264> UI and keep the geometric one for display.265266## 12. Counterexamples267268- ❌ "It's a sans serif, so it's clean and modern." — Sans covers Grotesque,269 Neo-Grotesque, Humanist, Neo-Humanist, and Geometric, which look and behave270 differently.271- ❌ "The x-height is large, so it's more legible." — Larger x-height aids apparent272 size but crowds out the distinguishing characteristics of `a`/`d`, `n`/`h`.273 (Santa Maria)274- ❌ "Both are 16px so they're the same size." — Apparent size is set by x-height and275 how the glyphs fill the em square.276- ❌ Judging anatomy from a foundry specimen set at 120px. Read at the use size.277- ❌ "The classification says Humanist, so it'll feel warm." — Classification is a278 lens over visible form, not a guarantee of feeling.279280## 13. Source citations281282- Coles, *The Anatomy of Type* — **primary source.** The warning that "there is no283 universal classification system… type is not biology — a typeface doesn't have a284 genetic code," that letterforms have "too many subtle variations and too few285 constants," and that period-based classification "become[s] impractical when it286 comes to contemporary design." Classification by visible287 form: stroke contrast, aperture, terminal, serif shape and x-height across288 Humanist/Transitional/Rational/Contemporary serif, Inscribed, Grotesque,289 Neo-Grotesque, Humanist, Neo-Humanist sans, and slab variants; comparing similar290 typefaces from evidence.291- Rutter, *Web Typography* — "How fonts render on screens": screen resolution limits292 (~140 ppi typical desktop vs 600 dpi print); rasterisation as "inherently lossy" and293 subjective across engines; each OS having a text rendering engine and each browser294 choosing one, so two browsers on one OS can differ; hinting and autohinting, with295 Tim Ahrens on diminishing returns and Verdana taking "weeks or months"; **only296 Windows uses hinting**; handhelds using greyscale smoothing rather than subpixel297 anti-aliasing because subpixels sit in a row and fail on rotation.298- Lupton, *Thinking with Type* 3e — anatomy and alignment; cap height, x-height,299 baseline as the Latin axes; other writing systems' different points of focus.300- Lupton (ed.), *Type on Screen* — x-height, descender overhang, and why longer301 extenders demand more line spacing; slab serifs' chunky endstrokes surviving302 rasterization well in both light and heavy weights.303- Santa Maria, *On Web Typography* — x-height as a tradeoff, not a virtue;304 letters converging as x-height grows.305- Latin, *Better Web Typography* — anatomy walkthrough; contrast comparison.306- Stocks, *Universal Principles of Typography* — metrics, the em square,307 classification's uses and limits; the `1lI`/`0Oo`/`q p`/`d b` legibility test.