A partial archive of discourse.wicg.io as of Saturday February 24, 2024.

More font-weight names


I propose more font-weight names be added to the CSS Fonts Module specification. The era of web fonts has proven a need for the usage of more weights than normal and bold. The W3C CSS Fonts Module Level 3 Specification already hints at these name / numeric :

100 to 900

These values form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. These roughly correspond to the commonly used weight names below:

100 - Thin

200 - Extra Light (Ultra Light)

300 - Light

400 - Normal

500 - Medium

600 - Semi Bold (Demi Bold)

700 - Bold

800 - Extra Bold (Ultra Bold)

900 - Black (Heavy)

These hints are consistent with other major frameworks such as .NET and Java. These hints also match the documentation found at TypeKit.

I have amalgamated these sources into the following JSON.

	"extrathin": 50,
	"hairline": 50,
	"ultrathin": 50,
	"thin": 100,
	"extralight": 200,
	"ultralight": 200,
	"light": 300,
	"book": 400,
	"normal": 400,
	"plain": 400,
	"regular": 400,
	"medium": 500,
	"demibold": 600,
	"semibold": 600,
	"bold": 700,
	"extrabold": 800,
	"heavy": 800,
	"ultrabold": 800,
	"black": 900,
	"extrablack": 950,
	"fat": 950,
	"poster": 950,
	"ultrablack": 950

While there must be other conventions used privately, the cowpath appears abundantly. Thoughts?


One immediate issue - CSS only allows multiplies of 100 as values.


It’s not really numbers; it’s nine keywords that happen to use the syntax.

Wow! I did not know that the grammar is so literal.

  1. Could the specification be updated in the future to interpret numbers as actual numbers?
  2. Baring the six incompatible font weight names and leaving the ones hinted at in the specification, would this proposal face any other major issues?

Allowing proper names for all 9 existing weights might be an improvement. Seeing a third weight (like light) on sites is fairly common.