Multiple ligatures for same character pairs/groups

I am creating a font that has up to 5 different ligatures for some letter sets. How do I best name these?
For example, the first one is S_t.liga What should I name the rest?

That depends on how the user should access them.

I’m looking for the best way. How would you do it?
I think they must have to access them through the glyphs panel.
Should they be dlig, dlig.ss01, etc?
Does S_t.liga.ss01 show up when ss01 is selected?

Use .cv01 through .cv99 (Character variants 1 through 99). Works in InD CC, IIRC.

1 Like

CleanShot 2021-10-19 at 14.36.37 Just want to clarify. I have three version of C_a that will be standard ligatures that I will substitute based on letters preceding/following. So I should name them C_a.liga, C_a.cv01, and C_a.cv02?

You can keep the name and add a cv01 feature in File → Font Info → Features with the following code:

sub C_a.liga from [C_a.001 C_a.002];

Ensure that the cv01 feature is placed below the liga feature.


If you want the ligatures to vary automatically depending on preceding and following letters, I don’t think you want to use a cvNN feature. Instead you want something like the first example in the “chaining contextual substitution” section in the Adobe Feature File Spec. In calt or clig, I suppose.

Agree with @FlorianPircher that it doesn’t matter a lot how you name the glyphs. Only it should make sense to you, so you can come back a couple of years on and understand what you did.


Thank you @psb6m. This is my first font, and many things on this forum seem like a foreign language to me. If I understand you correctly, you are referring to

CleanShot 2021-10-21 at 11.27.41

How would this work if the target glyphs are the same:

sub [C c]' a' t by C_a.002;
sub [C c]' a' v by C_a.001;

I have other subs that are much messier:

sub K a n a a' @LeftWallLetters by a.001;
sub t s a' k a @PunctuationExt by a.001;
sub [B G] e s t a' @LeftWallLetters by a.001;
sub ntilde a' n s a @PunctuationExt by a.001;
sub [Q q] [Q q] a' a s i by a.001;
sub [C c] h a' u u n by a.001;

It looks okay to me, but I haven’t done a lot with contextual ligatures before, and the proof is always in the testing. If you get C_a.002 when a t followsand C-a.001 when a v follows, then you’re good. If not, then try the syntax of the Adobe spec where you call a lookup.

A great way to spot what’s going wrong with an OpenType rule is to drag your font into the Crowbar testing page. You can step through each stage of a transformation until you find the rule that’s not working.

Anyway, welcome to the wonderful world of OpenType programming! I absolutely love the things you can make a font do with it.

1 Like

Thank you @psb6m! I have searched quite a bit for just such a thing as Crowbar. Do you have a medium where you share your Glyphs/Opentype knowledge? Like Youtube or elsewhere.

I’m just an amateur. There’s a lot of knowledge floating around, though, in places like this forum and the Typedrawers forum.

1 Like