The Anatomy of Web Typography

The Anatomy of Web Typography

This entry is part 1 of 5 in the A-Z of Web Typography Session
Next »

Every conceivable feature of typography can be referred to by its name. Whether you’re talking about the typeface itself, or the arrangement of type within a layout, there’s a huge glossary of terms which can help you describe things properly. Let’s take a look at the elements of typography which are important to you, as a web designer.


There are two essential aspects of typography which directly concern web designers:

  • those which influence your choice of typeface
  • and those which you can manipulate (often through CSS).

It’s therefore pretty darn important that you’re able to articulate (to clients, or team members) your typographic opinions and decisions. We’re not going to worry ourselves with the minutiae of ball terminals and tittles, but instead let’s discuss the anatomy of typography as it matters to web designers.


The Power is in Your Hands

Certain fundamental typographic properties can be manipulated with CSS. For example, perhaps most importantly, the font-family.

You’ll often hear discussion about the definition of font versus typeface, so it’s important that you know the difference. A font is the packaged up collection of letterforms; traditionally physical blocks used in printing, nowadays also including digital files. It’s the delivery mechanism.

type-ian-download-font
(You hovered over that, didn’t you?)

A typeface is what the designer creates; the design. I always liked the comparison with music; you buy a CD (alright, we’re going back a couple of years here) as the delivery mechanism to listen to the music. You’re not actually listening to the CD. It’s a similar situation as with selecting fonts to make use of the typefaces they deliver.

Through CSS we can determine our preferred font families, in ranking order. This is what we call the font stack.

type-ian-font-stack

We can also manipulate font-weight through stylesheets. Weight is the way we describe the relative thickness of a character’s stroke.

Many fonts are produced with a variety of weights, most simply described as light, regular, book, extra-bold, with a range of variants besides. More specifically, we can determine the weight of a typeface using the TrueType scale, which runs from 100 through to 900 (400 being what we commonly refer to as regular).

type-ian-weight

Fonts should ideally be produced with actual weight variants, numeric or named, in order to be controlled through CSS: {font-weight: 300;}, {font-weight: bold;}. When a font variant isn’t available, browsers will often have a go at rendering the weight themselves, but the results can be less than optimal.


Uppercase and lowercase refer to the majuscule and minuscule letters. The term case originates from the drawers used in letterpress printing (the upper case holding the capital letters, the lower case holding.. you get the picture).

We can override the case (should we want to) via CSS using {text-transform: uppercase;} for example.


Whilst we’re on the topic of character case, when using uppercase it’s sometimes (especially at smaller sizes) advisable to increase the spacing between the characters in order to improve readability. In terms of CSS we refer to this as letter-spacing and it can be expressed as a positive or negative value, usually measured in hundredths of an em.

In traditional terms, we refer to letter-spacing as tracking. Tracking affects the overal character density within a given line or block of text. The term originates (as with many typographic terms) in the bygone age of typesetting, specifically phototypesetting, in which characters were projected onto film through a lens. The space around each character would be altered by moving a prism along a track, hence tracking.

The CSS property word-spacing can also help you out here. Predictably, altering the word-spacing value will see the space between words grow and shrink, also having a significant impact on readability.

Play with the letter and word-spacing values applied to the following block of text and see for yourself how readability is influenced.

type-ian-demo-letter-spacing

Often confused with tracking is kerning. Kerning refers to the adjustment of spacing between specific letterforms (not a whole group of characters), again, to improve readability.

A proportional font (as opposed to a monospaced font, whose character spacing is uniform) will make allowances for specific pairs of characters which need extra help to visually sit next to one another.

type-ian-proportional
type-ian-monospace

For example, uppercase V and A, when placed together will usually need their kerning reduced to combat the extra visual space between them.

type-ian-kerning

Once again, we have old-school typesetting to thank for the term, back when type was cast as metal blocks. Kern refers to the notch made in a character block, which would allow it to slot into a corresponding block. The positioning of these male/female notches would prevent mismatched characters being placed next to one another.

That said, kerning is a process associated with typesetting for print and isn’t easily embraced by web typography. There are JavaScript tools, such as kerning.js which can help designers manipulate their type on a per-character basis, but CSS hasn’t caught up yet.

In terms of CSS, there is a proposal for the property font-kerning in the works, but even this is limited in what it can do for a typographic designer.

Setting the (non-standard) property text-rendering: optimizeLegibility; will improve things in some modern browsers, by enhancing kerning on recognized character pairs. As with font-kerning, this doesn’t so much offer control as a helping hand. It will also trigger the use of ligatures where available in a font, which leads me nicely on to…


Ligatures take kerning to the next level, offering replacement glyphs for certain character pairs. In some cases, characters won’t match up very nicely, irrespective of how delicately they’re arranged, in which case a ligature can be designed. A classic example is the lowercase f and i.

Here’s one you’ll be familiar with; recognise this?

type-ian-et

The ampersand is actually a ligature in origin, which we’ve become accustomed to using instead of Et (meaning “and” in Latin/French).

In other cases, ligatures can be necessary for certain linguistic rarities (the German ß being possibly the most familiar of these) and sometimes also purely for decoration. The latter we refer to as Discretionary ligatures, such as where a c and a t join together.

type-ian-ct

Where you have greater control over the content of a web page, you might use Unicode, or HTML entities to display ligatures. For example fi will sort you out with the “fi” we spoke about. If you’d rather have JavaScript help you out ligature.js might do the trick, though it’s not bomb-proof.

When using CSS to help you, you might lean on the text-rendering: optimizeLegibility which we mentioned, or you could use the proposed font-variant-ligatures which has a number of values such as common-ligatures, making sure ligatures are displayed wherever possible. Browser support is incomplete at the moment, but is certainly worth keeping an eye on.


Layout Decisions

As we’ll discuss in a minute, the proportions of a typeface can influence the amount of vertical space between each line. It’s therefore advisable to consider the line-height specific to the font used and adjust accordingly. Too little vertical space causes a body of text to be cramped and makes it difficult for the eye to track back to the beginning of the next line.

Too much space and reading becomes equally awkward.

Using relative measurements is always advisable in web design, especially where typography is concerned. Line height should always be a function of the font-size! Using ems to define line-height will mean that it’s always relative to the font-size. Take a look at this example and see how readability is influenced by the changing values:

type-ian-demo-font-size

In traditional terms we refer to the spacing between lines (not to be confused with the line-height itself) as leading, so-called because of the physical strips of lead metal which were used in printing presses to increase and decrease vertical spacing.

type-ian-leading

Nowadays, when line-height is calculated, half-leading is added both top and bottom of the characters. For example, a font-size of 36px, with a line-height of 54px (1.5em) would result in 9px of space added underneath the characters and 9px above. In effect, this vertically centers text within its line.

type-ian-half-leading

Moving along with our CSS-controled typographic anatomy, we come to justification; the alignment of text. In our diagram the text is aligned to the left, but it could be equally aligned to the right, centered or (when dealing with blocks of text greater than one line) justified. Styling via CSS is done with the text-align property, for example {text-align: center;}.

Fully justified text removes what’s known as the ragged edge..

type-ian-ragged

..but can cause a nasty after-taste in the form of rivers or channels appearing in the body of your text.

type-ian-river

In the world of fluid layouts, where the width of a body of text can be difficult to pin-point, justified text should be used with caution.


Selecting a Typeface

Selecting typefaces can be tough. Whether you’re looking specifically at headings, body text, block quotes etc. there are many factors at play. Let’s look at a few fundamental aspects of typographic anatomy which are worth paying attention to.

First up, are we dealing with a serif typeface, or a sans-serif? Serifs are those additional strokes which terminate a main stroke. Fonts such as Arial don’t have these strokes, they are sans-serif (another French lesson for you there..)

type-ian-serif

Serifs are said to help the flow of letterforms, binding cohesive words together, aiding the eye across the text and making reading easier. Sometimes, however, they can complicate a typeface, causing the reader fatigue and therefore actually hindering readability. The argument has been topical for decades and no concrete evidence has ever been succesfully presented for either of the two being more readable.

In any case, fonts sometimes come in serif and sans-serif flavors (like ParaType’s PT so you have the luxury of choosing which you find preferable.


Having mentioned readability, it’s only fair I quickly distinguish it from legibility. We use legibility when talking about the finer details of typography; the ability to recognize individual letters and words. Readability takes on a more functional role, relating to the practicality of a reader being able to absorb a body of text.

Readability is obviously very important. For this reason, it’s wise to take x-height into account. The x-height of type describes the height (take a look at the x of a particular face), from the baseline to the top of lowercase characters. Typefaces with a relatively large x-height tend to be more readable, especially at smaller sizes.

type-ian-x

Larger x-height comes at the expense of the descenders and ascenders, which become logically shorter in relation. This can lead to visually less space between lines, which we spoke about a moment ago.


I’m not sure how I’ve reached this far without specifically defining a letterform’s stroke. If there’s one term which is useful in describing the personality of a typeface, it’s that. The stroke of any given letterform can be horizontal, vertical, diagonal, even curved – and depending on the stroke in question it may have a more specific name too.

The main stroke (usually upright and heavy) within a letterform is referred to as the stem, leaving the term stroke to then mean one of secondary prominence. The horizontal stroke on top of an uppercase T is called an arm, that which you’ll find bridging the gap in an uppercase A or H is a bar, the list goes on..

type-ian-stem

Strokes within one letterform, particularly in serif typefaces, can vary in style and weight too; a hairline being the thinnest one present.

Then some strokes, especially curves, will have varying weight along their own length. This is referred to as modulation. This variation balances the overall weight of a character and avoids particularly heavy areas where two strokes join.

type-ian-modulation

Poor stroke modulation will often result in a clumsy, heavy letterform relative to others in the set. David Kadavy refers to this balance as evenness of texture and is often a measure of quality in a well executed typeface. Take a look at a body of text, then blur your eyes to get an impression of the overal texture.


That’s All for Now

There are thousands of glossary terms and adjectives to get a handle of if you want to properly describe typographic matters. We’ve covered some of the basics here and I hope at least a few of them are new additions to your vocabulary! Try randomly throwing one into the conversation next time you’re introduced to someone new – they’ll be very impressed..

Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://twitter.com/ErolMujak Erol Mujak

    Great tutorial :) Thanks Ian :)

  • Kyle Jackson

    Very informative and well written. Looking forward to the next post in this series

  • Shaimoom Newaz

    Thanks for the clear-cut overview. Do you know why CSS doesn’t use the same terminology as traditional typography (e.g. line-height vs leading)?

    • ianyates

      There are usually subtle differences in the definitions – for example, leading is not the same as line-height. What we know as line-height is actually the font size *plus* the space between the lines (leading). I’ve added a couple more illustrations to make this clearer.

      Glad you enjoyed the article :)

  • http://www.facebook.com/noiidda Martin Götz

    Nice article, thanks for the bundled information. One annotiation: Prof. Martin Liebig has proven, that there is no significant difference between serif and sans-serif typefaces relating to their readability. He has written a great article about his research (sorry, only in german) http://www.designtagebuch.de/wiki/die-gefuehlte-lesbarkeit/

    • ianyates

      Great study! (I think.. Google Translate helped me out a bit.) There are tons more resources which come to similar conclusions (http://enva.to/13EErIz) Thanks for the input!

      • CarlosG

        Great link. Thank you, both.

  • phil

    great! more about typo, please!

    • ianyates

      More coming!

  • Dynamic Brushes

    Well done! This article is one of the most well-covered typographical articles around.

  • axel cateland

    Very nice article thanks a lot !

  • astritmalsija

    Lovely

  • Vlad

    Thks Ian for the informative series, really nice job!

  • amrabdelaziz

    i love this article :D

  • Akhilesh

    Thnx a lot…..its very helpful!!

  • http://www.lucvanloon.com/ Luc van Loon

    Very well written indeed

  • Ian Simmons

    If I continue to read your articles I might become a master designer one day :-)

  • Rory

    This is a good introduction to type – not just web type. Good job.

  • http://www.facebook.com/dorthe.meyer Dorthe Meyer

    Hi, I was hoping you would get into the difficulties of showing various fonts on the web. Like for instance, Jquery fonts

    • ianyates

      There’s plenty left to talk about and many more articles to come! But what do you mean by jQuery fonts?

      • http://www.facebook.com/dorthe.meyer Dorthe Meyer
        • ianyates

          Ah, I see. Well – all this plugin does is use jQuery to simplify the syntax when using @font-face within CSS. It’s not something I’d necessarily recommend, I would say that it’s to your advantage to understand the various bits and pieces of the @font-face rules without layering an extra jQuery aspect to the process.

          These days, it’s possible to achieve something similar by using CSS preprocessors (such as SASS) and mixins which also simplify things (http://enva.to/XUkYij).

          I guess this is all good material for the series, thanks for bringing it up :)

  • Hamid

    Very Useful and well explaination Article Ian, Keep it up Yates cause we need more about Typo.

  • rthor

    Great article! You obviously put a lot of work into it.

  • Pingback: This Week in Type #4 | Blog

  • http://twitter.com/iqonicd Ari

    Wow, there were a few things I didn’t know that you explained very well here. :)

  • Pingback: Tweet Parade (no.10 Feb/Mar 2013) | gonzoblog

  • Pingback: LBC Studio blog | Fajne linki #3

  • Pingback: Your Logo, as a Web Font Ligature | Webdesigntuts+

  • Pingback: Your Logo, as a Web Font Ligature | Directory Net

  • Pingback: Typografiens anatomi | Reweb webdesign

  • Pingback: Uw Logo Als Een Lettertype Ligatuur | Dutch Tuts

  • BounasserAbdelwahab

    YEAH i hovered : )

  • Pingback: BlogBuzz April 13, 2013

  • Pingback: Typography for the Web | Girl About Akron

  • http://twitter.com/fricze Andrzej Fricze

    From typographic point of view: justified text should never be used on web pages at all if you won’t employ “shy” entity.