Kerning! It’s the last thing one does before one finishes a font. That means I’m almost done with Protest!

What is kerning? I expect if you’ve read this far in the series, you probably know. But for those who might not: Kerning is the adjustment of space between a specific pair of glyphs. While spacing is adjusting the sidebearings of a given glyph for all contexts, kerning effectively changes the amount of space on one side of a glyph when another specific glyph is on that side.

Uppercase A and V kerning example

Previously I wrote about the adventure of adding OpenType features. Really, it was covering one of the two categories of OpenType features, the replacement features. (These features replace one or more glyphs with one or more other glyphs.)

This post falls under the other category of OpenType features, the positional features. These features change the position of a glyph or glyphs in certain contexts. Kerning is the lion’s share of what this covers. Thankfully, I’m not going to write any of these features, I’m going to let FontLab VI do it.

Note: I am not (yet) an expert! This is my first time kerning a font, and I have nothing to help me but what I’ve heard from others and scrounged from the interwebs. Thanks, Internet! So I’ll share what I’ve learned, especially my mistakes, because those are the best teachers.

Let’s get kerning!

Make a list

My wife is all about making lists before she starts anything. That’s her go-to starting point: make a list. And you know what? As with so many other things in life, my wife is right.

The best place to get started kerning is to make a list of all the glyphs in the font. In order to generate a kerning list, I need to have a list of all the glyphs that might need kerned. (That sounded super obvious when I wrote it out like that, but… there it is.)

I’m talking about two separate lists here now. One is a list of all the glyphs in the font (the glyph list). The other is a list of all the glyphs next to every other glyph in the font (the kerning list).

I haven’t found a super easy way to generate a list of all the glyphs. The best way I’ve found to generate a list of glyphs is as follows:

  1. Make sure the font is indexed by name in the Font Window in FontLab VI.
  2. Select all glyphs except the alternates and diacritics.
  3. Hit enter to open the glyphs in a new Glyph Window.
  4. Hit T to change to Text mode.
  5. With the cursor in the text window hit COMMAND + A (on Mac, CTRL + A on PC), then COMMAND (or CTRL) + C to copy.
  6. In a text editor, hit COMMAND + V to paste.

I now have a list of all the glyphs needed for kerning the font (the glyph list). Note that I did not include diacritics or alternates, because these glyphs will have the same kerning as their base glyph counterparts. More on that later.

Kerning list generator Python script

Getting the glyph list is easy, but making the kerning list could be super tedious. So I used python to generate the kerning list. I divided the glyph list into uppercase, lowercase, and punctuation & symbols. The python script goes through each letter in the uppercase and writes a line with that letter next to each letter in the uppercase. (E.g.— AAABACADAEAFAGAHAI… etc.) Then it does the same for uppercase with lowercase, lowercase with lowercase, and both upper and lower with the punctuation.

Protest kerning list

Edit 2/28/19: After publishing this post, Hrant Papazian made a good recommendation to me via Twitter:

This is great advice. It also made me realize that I could have been asking questions on forums like TypeDrawers or Typophile. There’s a wealth of knowledge here. Just because I didn’t find all the answers to my questions by searching the internet, doesn’t mean there weren’t answers available out there. (Granted, I’m all about learning the hard way. It kinda sucks, but it sticks with me a lot better.)

Check it twice, find out
who’s naughty or nice

So now that I’ve got a list, I created an InDesign document (but any word processing program will do). The document has the kerning list set in Protest, with the kerning set to “Metrics,” which just uses the font’s kerning. Then I printed it on the best printer I had. (I’m sure there’s a ton to unload here about printer quality and Adobe Postscript 3 and whatnot… but I work with what I’ve got, which is a Canon PIXMA i9000.)

One other thing I added later (and wished I’d done sooner) was add a line of H’s and O’s above the uppercase, a line of n’s and o’s above the lowercase, and a line of both above the upper- and lowercase mix:


This gives me a reference point, a baseline space against which to check these lines.

For the first check I’m just looking at space. If I see space that looks too loose, I make a red mark above the space. If I see space that looks too tight, I make a mark with pink highlighter. (Color doesn’t matter, just so long as it’s easy to see, and different enough to be distinguished clearly.)

closeup of kerning list with red and pink marks

Note: There is an assumption that I’ve been spacing as I go, and that I’ve been printing out spacing specimens of glyphs as I add them to the font. I have been spacing as I go, I may or may not have been printing out specimens as I go. [Awkward silence] Okay, I was not printing as I go. I regret that now. A lot. PSA from me to you, dear reader: print spacing specimens as you go, with H’s and O’s for comparison, just like on screen. [I’m just going to take a moment to weep, then I’ll be back.]

Onward and forward!

Pattern recognition: spacing or kerning?

Next look for patterns. Is it kerning that needs to happen, or do I need to adjust the spacing? After I’ve gone through the whole sheet with a fine-toothed comb (or a red Pilot and a pink highlighter), are there red or pink “rivers” running down the page? Am I seeing the same need to increase or decrease space across most pairings with a certain letter or letters? If so, this is a spacing problem, not a kerning problem.

I have to fix the spacing problems first. All of them. This might mean means printing, looking, marking, finding patterns, adjusting the spacing, and repeating the process as many times as it takes.

So here is my iterative process:

  1. Make spacing adjustments to the font based on whatever patterns were found when looking over the prints.
  2. Don’t forget to compile any features before exporting the font. (It’s the little triangular “Play” button in the upper left of the Features Panel.)
  3. Export the font.
  4. Change the name of the exported font file to contain the date, or a new version number, or an index—whatever helps you know which version of the font it is. I like using the date to go along with a date stamp I put in the prints, as well as any autosaved files FontLab generated should I need to go back.
    Changing the font name means my system won’t have font cache issues when I activate the new version.
  5. Deactivate the old version and activate the new version with whatever font management software you use. (I use FontExplorer X Pro.)
  6. Print the kerning lists with the new version.
  7. Make kerning notes and look for spacing patterns.
  8. Return to Step 1.

Looking at the punctuation helps to see nuances that get lost in a sea of letters. The dashes, bullet, and period are great places to catch patterns of spacing issues.

Like I said, learn from my mistakes! I wish I had printed spacing tests as I went. There are a number of things I only caught later, which couldn’t have been dealt with as I added glyphs. However, there’s something to be said for taking a second (or third, or tenth) look at things after walking away for a bit. It’s amazing what might seem obvious now that I’d seen a thousand times but missed. C’est la vie.

Once all systemic problems have been resolved by adjusting the metrics (spacing) of problem glyphs, then and only then can I move on to listing the pairs to be kerned. I just go through my sheet and write down all the characters that have been noted as needing kerning with any other character. Fun times.

A Note On Method

When viewing printed type, hinting makes a difference, so does the printer, and the RIP (raster image processor). I’ve seen the same pair of letters in two places in the document, and they clearly have different space between them on paper, which is only possible because of these kinds of variations. This might call for a different way of formatting the kerning list.

I might be looking at this at too small a size. I’m trying to save paper, get a clear look at everything on one line and against other sets, and have a higher level view of the type. That said, I might need to make a new document with the kerning list at larger sizes, and/or even multiple comparative sizes.

Up Next

Next up, I’ll cover how to create kerning classes, do the actual kerning in FontLab VI, and test some more.