Weights and widths
Last updated 2026-11-02
- 字重
- 字宽
- weight
- width
- Condensed
- Thin
- Black
On this page
"How many weights does this font have" sounds simple, but three vocabularies are in play at once: numbers inside the font, words in the family name, and style names in design software. They disagree constantly.
The numbers are a suggested scale
OpenType stores weight in OS/2.usWeightClass, range 1–1000, conventionally multiples of 100:
| Value | Usual name |
|---|---|
| 100 | Thin / Hairline |
| 200 | Extra Light / Ultra Light |
| 300 | Light |
| 400 | Regular / Normal / Book |
| 500 | Medium |
| 600 | Semi Bold / Demi Bold |
| 700 | Bold |
| 800 | Extra Bold / Ultra Bold |
| 900 | Black / Heavy |
The key word is "usual": convention, not standard. One font calls its regular 400, another 350. One "Book" is 400, another has Book at 350 and Regular at 400.
Names in the family are unreliable
The name and the number may disagree:
- family says
MediumwhileusWeightClassis something other than 500; - both
DemiandSemi Boldappear across foundries; - 900 is
Ultrato one foundry,Blackto another,Heavyto a third.
So between "pick by name" and "pick by number", pick by how it renders. The number is an approximate label for software.
Width is a separate axis
Width and weight are independent dimensions:
| Word | usWidthClass |
Usual name |
|---|---|---|
| Very narrow | 1 | Ultra Condensed |
| Narrow | 3 | Condensed / Narrow |
| Normal | 5 | Normal |
| Wide | 7 | Expanded |
| Very wide | 9 | Ultra Expanded |
In CSS this is font-stretch, now more often written as a percentage: font-stretch: 75%.
Variable fonts turn the scale into a range
A static family offers a few discrete weights; a variable font makes wght continuous (usually 100–900) and renders any value in between.
Practically: you no longer "pick one of five weights" but may ask for 437 — though nothing guarantees the drawing is good there, since the designer only checked a handful of positions.
Mapping to CSS
A CSS font-weight number (1–1000) looks for a face declaring the same value, falls back to the nearest by a fixed rule, and finally synthesises if nothing fits.
Which means the same CSS can render differently across fonts, because "nearest face" differs. See font-weight and the bold alias.
How this site shows it
The inspector reads usWeightClass directly. When the value was estimated rather than declared by the font, it carries a ≈ with an explanation — readable, but not a precise fact.
Width is shown when present and left blank otherwise; nothing is guessed.
Advice when choosing
- Judge by actual rendering (specimen or preview), not the name;
- For weight contrast, make sure the weights really exist rather than being synthesised;
- If Chinese and Latin come from different families, note that their 500 / 600 may differ visually;
- For variable fonts, check whether a
wghtaxis exists and its range (some only span 400–700).
Further reading
- OpenType spec:
usWeightClassandusWidthClassinOS/2 - MDN:
font-weight,font-stretch - This site: font-weight and the bold alias, maxp and variable axes