Five simple steps to improve your typography

With the responsive webdesign trend going on lately, more and more focus is put on typography. No matter if you look on a 27 inch desktop screen or a 3 inch handheld device: readability is paramount. I have collected five simple techniques to instantly improve your typography (and mine, of course).

1. Use ems for scalable font-sizes

Move away from the pixels! That would be a great quote for a designer to start a workshop with, isn’t it!? Use ems and rems instead. As W3C explains, ems are a relative unit, so if a parent element has a calculated font-size of 16px and it’s child has a font-size of 0.875em, then the calculated font-size of the child will be 14px. The advantage? Scalability. If we increase the parent’s to 2em, the child’s font-size will automatically scale up to 28px.

<p>Simple content <span class="child">smaller</span> and back to normal</p>
html {
    font-size: 100%; /* Adapt to browser default font-size */
}
p {
    font-size: 1em; /* 16px */
}
.child {
    font-size: 0.875em; /* 0.875 x 16px = 14px */
}

2. Increase line-height

Large pieces of text become hard to read real quickly. By increasing the line-height (leading, as it’s called in traditional typography) of the body copy the text becomes less cramped together and gets some breathing space. Line-height is a unit-less property. This means that adding em, % or px is not needed (but you can if you want!) as the line-height is relative to the font-size.

html {
    line-height: 1.5;
}

3. Consistent margins

Create vertical rhythm by using consistent margins. Let each heading and paragraph have the same distance in relation to each other. Harry Roberts wrote an article about that.

/**
 * HEADINGS
 * 1: Reset line-height to 1.1 to ease positioning;
 * 2: Create a relatively large margin-top and a smaller 
      margin-bottom to visually detach the headings from
      their preceeding element and attach them to the 
      next element;
 */
h1,
h2,
h3,
h4,
h5,
h6 {
    line-height: 1.1; /* -1- */
    margin: 3rem auto 0.75rem; /* -2- */
}

4. Maximum paragraph-length

According to [several(http://trentwalton.com/2012/06/19/fluid-type/) studies readability increases by setting the number of characters per line between 45 and 75. That is relatively easy to accomplish with CSS, assuming that a single character takes up about 0.5em of space.

p {
    max-width: 34em; /* That&rsquo;s about 68 characters */
}

5. Provide contrast

Reading black text on a black background is, well, pretty much impossible. Reading white text on a black background will hurt your eyes within less than five minutes. I am exaggerating of course, but it is important to realize this. I don’t know of a golden formula to calculate if a text and background have enough contrast to make it readable and not have too much contrast to make it painful, but if you do: please let me know. Here’s two rules I generally use to make stuff readable.

html {
    background-color: #f2f2f2; /* Not white */
    color: #333; /* Not black */
}

Good luck improving the readability of your website!

Other posts

  1. CodePen based Pattern Library

  2. Working with a styleguide

  3. Z-index management with SASS

  4. A logo wireframe

  5. Dear CodePen user

  6. An imageless web