Elements or Lower

Wed, 19 May 2004

In defense of <small>

This Design by Fire piece has to be one of the best blog entries I’ve ever had the pleasure of reading. Magnificent work, with much back-slapping deserved.

One comment therein got me thinking, however:

There’s a small tag in there! Come on, Jakob, what the hell is that?

Now, I’m far from being at the cutting-edge of markup purity, although this is something I’m slowly working to address. But I still have a soft spot for <small>. I actually feel it has genuine semantic value.

To begin with, <small> is in XHTML 1.0 strict and XHTML 1.1 — so it’s not a deprecated tag. <font> it ain’t. The argument against using it, however, comes (I believe — do correct me) from the perception that it’s an inherently presentational tag: that it carries no semantic weight, and that anything it does should really be achieved instead using a <span> and CSS.

Pretty often, I guess this would be true — and, to be fair, in XHTML 1.1 it’s firmly in the presentational module alongside <i> and <hr>. But I can’t help feeling that <small> has a semantic role, at least potentially, as the opposite of emphasis. We call small print ‘small print’ not just because of the font that’s used — the gabbled “your home may be at risk if you do not keep up payments secured on it” at the end of a radio advert for a mortgage vendor is that advert’s small print even though nothing’s actually small or printed. We all know what the term means: it’s the stuff you don’t have to pay too much attention to.

If we consider regular text to be a point on a gradient of significance, <em> and <strong> are progressively higher up the gradient, and (I’d argue) <small> is a convenient tool to indicate content that’s a bit further down the gradient.

So why aren’t I arguing that <big> has a similar role? Well, it’s not like emphasis isn’t already well-covered in (X)HTML, with <em>, <strong> and the two combined. We don’t really need <big> to add to that mix — besides which, there isn’t a real-world corollary for ‘big text’. If (X)HTML had a <feint> tag or something similar, I’d be content to excise <small> from my repertoire.

But it doesn’t, and I’m not.