Spacing

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

Starting out

When doing the spacing of a Latin alphabet, it is a good idea to start out with n and o. Once those two letters have proper sidebearings, the rest is relatively easy. So, I recommend you type something like noononno and fiddle around with those sidebearings until you’re satisfied. The string contains an n between two o’s, an o between two n’s, double-o and double-n: if you manage to make them all appear, for your eyes, equidistant to each other, you win.

Tip: Make sure you do your spacing in the correct size. If you are zoomed in too much, you will tend to make it too tight. Consider opening the Preview area at the bottom with the eye symbol in the bottom left corner of the window. You can drag its separator line to the intended reading size. The Preview area has options for blurring and flipping your text so you can keep a fresh look at your design.

You can check on the sidebearings and the width of any glyph by taking a look at the grey info panel (View > Show Info, Cmd-Shift-I):

You can access the same values through the glyph info area in the bottom left of the Font tab. Or the LSB and RSB columns in list mode. You may need to activate the columns first via the context menu of the list header. You can rearrange the column order by dragging the column headers.

Whichever way you prefer, to change a sidebearing, just click into the number and type a new value. By the way, the bottom left info area even allows editing a selection of multiple glyphs at once.

Unless you did something really crazy, the o needs equal left and right sidebearings. A good starting point is a third of the counter width. A little more if it’s for small sizes, a little less for display sizes, whatever you intend your font for. A little more if the bowls are rather flat (and thus leaving less whitespace on the sides, which needs to be compensated), a little less if the bowls are very round. Hint: loose spacing is easier than tight spacing.

Glyphs employs a set of intuitive shortcuts for changing the sidebearings of the current glyph. So, place your cursor in front of the o, hold down Ctrl for the left sidebearing, or Cmd for the right sidebearing, and then press the left and right arrow keys for decreasing or increasing the respective value. If you additionally hold down Shift, you get increments of 10:

Shortcut conflict

Careful: by default, Ctrl-arrows is reserved for switching between Spaces in macOS. Thus, you need to disable the Spaces shortcut or set it to something else, so you can free up Ctrl-arrows for Glyphs. To do that in macOS Mountain Lion and above, go to System Preferences > Keyboard > Shortcuts, pick Mission Control from the list on the left and double click Move left a space and Move right a space to enter new shortcuts. Personally, I disable the shortcuts altogether because you can still move through Spaces with a four-finger swipe gesture:

Then, the n. Since the n usually has much less whitespace in its corners, we need to compensate that by enlarging its sidebearings. A good starting point is approximately 1.5 times the sidebearings of the o, not counting serifs. Serifs stretch into the whitespace, and thus effectively reduce the LSB and RSB values.

Also, the n is not symmetrical. The top right corner is a shoulder, leaving more whitespace on the right than what we have on the left. We need to compensate for that somehow. Now, here’s a cracker: If you combine Ctrl and Cmd keys, you simultaneously change both left and right sidebearings, effectively moving the letter inside its width:

This way, you can knock the n a little bit to the right a few times until the n looks centered between the o’s. You’re finished with n and o if the distances between all letters in noononno appear to be of the same size, and it looks alright in the size it was intended for.

Placeholders

Now, we go on to the other letters. Something I like to do is to add a second line and type the letter I want to work on next, e.g. the h. But you want to see that letter between the o’s just like the n before. You can do that in Glyphs: just go through the string and replace all occurrences of n with a placeholder. You can ‘type’ a placeholder with the Edit > Add Placeholder command (Cmd-Opt-Shift-P).

A placeholder always displays the current glyph, i.e. the glyph right after the cursor:

Watch out, the placeholder can act weird if the cursor is all the way at the end of the test text you entered. If that happens, just move the cursor back in front of another letter.

Sidebearing arithmetics

But wait a minute, h should be easy if we already have the n. In many cases, it can have the same sidebearings as n, because, except for the ascender, h and n look pretty much the same, at least in a sans. So, for instance, we could go check on the n and copy the sidebearings into the grey info area (Cmd-Shift-I) of h. But that’s suboptimal, because what happens if we later change the sidebearing of the n again? Do we really want to keep track of all the sidebearings manually? Hell no.

What we do is this: instead of entering a number value indicating the sidebearing distance, we enter the name of another glyph! Glyphs will then reduplicate the other letter’s sidebearing in the current letter. It even works for Widths: setting the RSB and Width will recalculate the LSB, setting the LSB and Width will yield a calculated RSB. So, we enter n in both the LSB and the RSB of n, and h will dynamically take over the sidebearings of n:

Not 100 percent dynamic though. Every once in a while, it’s a good idea to force the selected glyphs to update their sidebearings by choosing Glyph > Update Metrics (Ctrl-Cmd-M). You can even update the metrics for all masters at once by pressing Crtl-Opt-Cmd-M or holding down the Opt key when choosing the menu command. All selected glyphs will be updated. That way, you can update metrics for all glyphs at once as well.

But it doesn’t stop there. You can even do simple arithmetics. In that case, you start the LSB, RSB or width entry with an equals sign (=) and hang your calculation in there. So, if you use =a+20 as the LSB value for a glyph, Glyphs will take the LSB value of a and add 20 units to it. If you use =|a+20 instead, i.e. you put a pipe character (|) in front of the glyph name, then Glyphs will take the opposite sidebearing of a as the basis for the calculation. You cannot just add, you can also subtract: =b-10. And multiply: =c*1.1. And divide: =d/2. In our experience, simply adding and subtracting fixed values works best for most situations.

If you don’t want your light n to have the same sidebearings or width as your bold n, then simply add a second equal sign, for example ==n+15, and it will only affect one master.

Again, don’t forget to regularly run the Glyph > Update Metrics command (Ctrl-Cmd-M), or Ctrl-Opt-Cmd-M for all masters. So, look for similarities in letter shapes, try to establish connections between letters and try to turn that into sidebearing arithmetic like this:

  • =o: LSB of c, d, e, g, q
  • =o: RSB of b, p
  • =n: LSB of b, h, i, k, l, m, p, r
  • =n: RSB of a, h, m

Etcetera etcetera etcetera. Your mileage may vary greatly though, because eventually, it will depend on the way you design your glyphs.

Uppercase spacing

For uppercase spacing, the base characters are usually H and O. It’s basically the same story as with the small letters above: get those two right and you’re good to go. But this time, you also need to make them fit to the lowercase letters. If you take care of this, you can easily transfer sidebearing values to other letters:

  • =H: LSB of B, D, E, F, I, K, L, M, N, P, R
  • =H: RSB of I, M, N
  • =O: LSB of C, G, Q
  • =O: RSB of D, Q

Etcetera etcetera etcetera.

Automatic alignment

Component-based letters inherit their spacing from the base component. For example, you want an ä in your font. So you build an adieresis with an a component and a dieresiscomb component. Actually, Glyphs does that automatically for you if both a and dieresiscomb already exist in your font when you generate adieresis. Now, go into the adieresis glyph and click on one of the two components. It appears to be locked, or as we say, ‘automatically aligned’. In most cases, that’s probably exactly what you want. Trust me, there’s nothing more tedious than trying to synchronize the spacing of all diacritics manually.

Sometimes, however, it may not be what you want. In cases like this, you open the context menu on the component(s) you want to reposition, and choose Disable Automatic Alignment. If you change your mind, you can Enable Automatic Alignment again via the same menu.

Some glyphs, like figures, do not align by default in the first place. This way, you can quickly and easily make proportional and tabular figures in one go.

Batch Processing Metrics

Want to change the Metrics of many glyphs at one? If you go to Filter > Transformations > Metrics, you can also set your LSB and RSB values for the selected glyphs. If you click on the Relative checkbox, it adds to your previous values. Use negative values for reducing values:

No kerning yet

Try to get as far as possible without kerning. At one point, you will find that you cannot improve your spacing anymore by tweaking the sidebearings. Then you can start kerning, but no sooner, really. That’s because you’d have to start with the kerning all over again once you find a better way of spacing your letters.


Update 2015-07-30: Added 'Batch Processing Metrics' and updated for Glyphs 2.
Update 2020-03-21: Improved Shortcut Conflict section, removed outdated parts (double underscore), added picture of modifier keys, gave the whole text a once-over.