by Rainer Erich Scheichelbauer
en fr zh

3 December 2020 Published on 25 October 2012

You would love to know how to create ligatures? It’s super easy. Try it.

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 will pre-build the ligature with 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 Glyph 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 File > Font Info (Cmd-I), go to the Features tab and hit the Update 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:


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. 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 one of the ligatures features from the pop-up 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 pressing the Update button in Font Info > Features or choosing Update Features from the Features pop-up menu in Edit view.

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

Update 2016-02-19: Updated screenshots for Glyphs 2.
Update 2019-04-10: Changed Layers menu for Glyph menu.
Update 2020-12-04: Updated links and screenshots, minor changes for Glyphs 3.