Why do and have smaller font sizes than in most user agent default stylesheets?

I’ve been searching through W3C mailing lists but haven’t found any debate on this decision.

Here’s what I can infer:

1995

The first published version of the HTML spec (before CSS came into play) actually specified that h4 and h5 should be “normal font” size. The font size for h6 wasn’t explicitly specified, but I would presume that it was also the normal font size.

H3
         Italic, large font, slightly indented from the left
         margin. One or two blank lines above and below.
H4
         Bold, normal font, indented more than H3. One blank line
         above and below.
H5
         Italic, normal font, indented as H4. One blank line
         above.
H6
         Bold, indented same as normal text, more than H5. One
         blank line above.

1996

CSS broke onto the scene. Or really, limped onto the scene and broke. The first recommended default style sheet for browsers specified only:

H1 { font-size: xx-large }
H2 { font-size: x-large }
H3 { font-size: large }

h4 through h6 would thus be 1em.

1997

HTML 3.2 dropped any font-size recommendations relative to document text, only recommending:

More important headings are generally rendered in a larger font than less important ones.

This conflicts a bit with CSS1, but the two were not integral to each other at the time. Most styling was still done with inline HTML attributes, which were still very much not deprecated.

1998

CSS2 came out, and it removed a default style sheet from its own spec, and instead linked to the new sample style sheet for HTML 4.0 in HTML’s specification.

This is the origin of headers explicitly being set smaller than 1em, at least as far as I can tell. The recommended HTML 4.0 stylesheet specifies the values most browsers keep to today as defaults:

H5              { font-size: .83em; line-height: 1.17em; margin: 1.67em 0 }
H6              { font-size: .67em; margin: 2.33em 0 }

Leave a Comment