Ligatures

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

Sometimes letters collide and it doesn’t really look that good. This often happens with the lowercase f, which usually reaches into the following letter. And if that letter happens to have an ascender, like an l, a b or an h, the letters collide. This is when type designers decide to build a ligature glyph.

Creating the ligature

Say, our lowercase f collides with the lowercase h:

Not nice. So let’s create a ligature glyph: Choose Glyph > Add Glyphs… and type f_h, i.e. the glyph names of the individual parts of the ligature, connected by underscores. Glyphs pre-builds the ligature from f and h components:

Now, we should turn these components into individual paths, thus killing the link to the original f and h. We do this by choosing Decompose Components (Cmd-Shift-D) from the Layers menu. Now we have the outlines:

And we can edit them to our liking:

Okay, please don’t laugh. I’m not the best ligature builder on the planet, big deal. In any event, this concludes the creation of the glyph. But how do we get it to work?

Creating the ligature feature

Ligatures work through OpenType features. Glyphs can create them automatically for you if it finds properly named ligatures among your glyphs. Just open your Font Info (Cmd-I), go to the Features tab and hit the circled arrow button in the bottom left:

And, probably among a few other things, Glyphs will create a feature called dlig. If you click on it, you can take a look at the feature code:

sub f h by f_h;

Which means: substitute the sequence fh by the ligature glyph f_h. Exactly what we wanted. YAY!

liga vs. dlig

But wait a minute, why dlig? That’s short for discretionary ligatures and means that the feature is ‘off by default’, i.e. the user is required to activate it first.

If we want it to be on by default, we ought to put it into a feature called liga (standard ligatures). The best practice is to add a .liga suffix to the glyph name. In our case, we can rename our ligature to f_h.liga.

Now hit that circled arrow button again, and lo and behold, we have a liga feature which contains this:

sub f h by f_h.liga;

Yes!

For the record, some ligature glyphs are placed into liga right away, so they do not need a suffix. Here’s the complete list:

fi
fl
f_f
f_f_i
f_f_l

You may have noticed that fi and fl do not adhere to the naming convention we mentioned above. That’s because they are historical exceptions. These two glyph names were there long before OpenType.

Well, actually, you can still call them f_i and f_l if you want, but again, they’ll go into dlig unless you add the .liga suffix.

Testing ligatures

Wanna see if it actually works? Open an edit tab (Cmd-T), type a word that contains the ligature sequence, e.g. ‘hifhum’ in our case. (I don’t think it means anything, and if it does, I hope it’s nothing nasty.) Now click on the Features button in the bottom left corner of the window and choose liga from the popup menu that appears:

And the ligature is applied:

If it doesn’t work for you, make sure the glyph name is correct and perhaps re-generate the feature code by clicking on that circled arrow button in Font Info > Features. Then try again.

Alright, that’s about it. Have fun building ligatures!

Update 2016-02-19: Updated screenshots for Glyphs 2.