In ['f_i'] = { "f", "i" }
, ['f_i']
is the glyph name of the ligature, and { "f", "i" }
are the letters to be ligatured. So if your font calls the ligature ‘fi’ rather than ‘f_i’, you should write ['fi'] = { "f", "i" }
. Also note that, in some fonts, ['f_f_b'] = { "f", "f", "b" }
doesn’t work, but ['f_f_b'] = { "ff", "b" }
does.
Crimson isn’t of much use to illustrate removal of ligatures, so here’s FPL Neu (github.com/rstub/fplneu) without its ‘fk’ ligature:
Some fonts put more in their liga
feature than one could wish. For example, LTC Kaatskill Pro, a lovely Goudy design, makes œ a standard rather than a discretionary ligature, with the result that not only words like ‘œdema’ but even ‘does’ and ‘poem’ are affected. Using type = "multiple"
, as for ‘fk’ above, would fix ‘does’ but interfere with ‘œdema,’ so we need another approach.
Besides the harmless ‘ff,’ ‘fi,’ ‘fl,’ ‘ft,’ and ‘ll,’ liga
adds an ‘oe’ ligature and e caudata for ‘ae’; it also replaces ‘i’ and ‘j’ with their dotless versions, and substitutes ‘ſ’ for ‘s,’ ‘u’ for ‘v,’ and ‘V’ for ‘U.’ We can remove those ligatures and substitutions by turning off liga
, and add back the harmless ligatures by defining them as rlig
, a feature which is on by default:
For example, Goudy’s Newstyle defines ‘fi’ and ‘fl’ in its liga
feature, and slightly different ‘fi’ and ‘fl’ glyphs in its dlig
feature. There are also glyphs for ‘ct,’ ‘fb,’ ‘ff,’ ‘ffi,’ ‘fj,’ ‘ffl,’ ‘fk,’ ‘st,’ and (in the italic) ‘Th,’ but no feature is defined to ease their use. Adding the two-character ligatures to liga
works, but adding the ‘ffi’ and ‘ffl’ ligatures doesn’t, apparently because the ‘fi’ and ‘fl’ ligatures are already in the lookup. But all is well if we turn off liga
and define the ligatures we want as rlig
: