Two Discretionary Ligatures for the Same Letter Combo

Thomas WeakleyThomas Weakley Posts: 39
edited March 16 in Technique and Theory
Hey all,

I tried to program two different discretionary ligatures for same letter combination in FontForge and it didn't work. To clarify I wanted to see if it would be possible to have two different ligatures available for W_E. When I tried to access the second discretionary ligature in Creative Cloud I was unable. I couldn't even make it display by selecting it in the glyphs panel.

I could be totally wrong here but it appears to me that the OpenType functionality of discretionary ligatures does not support multiple substitutions for the same letter combination. If I am wrong perhaps this is more of a software discussion.

The typeface I'm creating has many possibilities for ligature combinations of the same two letters. Many of these combinations can also be achieved through combining alternate characters but some ligatures are one solid, combined glyph (See E_D in screenshot below).

Should I just create unicode slots for the additional ligatures and expect users to access them through the Glyphs panel?

This typeface is a display face — uppercase only. So lowercase unicode slots are naturally filled with uppercase characters. What are people's thoughts on setting one ligature for upper case combos and another for lowercase combos? Would this be confusing and produce unexpected results for the user? I've seen other designers set alternate characters in the uppercase unicode slots and default characters in the lowercase slots for display faces. This seems like dangerous territory, especially if someone is passed the font file without instructions. Thoughts on this?

In my opinion all of the ligatures in my typeface are decorative and belong only as discretionary.

Here is a screenshot of some of the alternates and ligatures I've been developing for good measure:

Many thanks!


  • Thanks @Georg Seifert. I just read through the link and the language is unfamiliar to me as I haven't used Glyphs. Could you give me the gist of it? Is it possible to program multiple discretionary ligatures for the same pair?
  • John HudsonJohn Hudson Posts: 1,776
    A ligature substitution in OpenType Layout is a GSUB LookupType 4 (many-to-one).

    An alternate substitution is a GSUB LookupType 3 (one-to-one-of-many).

    So, no, you can't have alternate substitutions that are also ligature substitutions (many-to-one-of-many). The format doesn't support this.

    You'll need to decide which ligature is your preferred default form, and then assign the second ligature to a separate stylistic variant feature.
  • Kent LewKent Lew Posts: 903
    As John implied, the alternative discretionary ligatures will need to be made accessible through a combination of features — i.e., to get an alternative discretionary ligature, both {dlig} and {ss##} are applied simultaneously.
  • @Kent Lew @John Hudson Thank you very much for explaining! The {dlig} and {ss##} combo sounds like a rabbit hole I'm not prepared to go down without proper instruction. I'm leaning toward setting different sets of ligatures for uppercase and lowercase.

  • Thomas PhinneyThomas Phinney Posts: 1,826
    edited March 17
    It really isn’t as scary as it sounds!

    Assuming 'dlig' comes before 'ss01' you would do:

    feature dlig {
       sub E D by E_D;
    } dlig;

    feature ss01 {
       sub E_D by E_D.ss01;
    } ss01;

Sign In or Register to comment.