You can turn them off with every font. But you’ll be surprised by how much they can improve readability, because they remove optical irritation as shown here.
So what I see there is that badly designed fonts require ligatures to correct interactions.
Like, I get that there are some neat ones, e.g. I have them turned on when writing code for symbols, but they seem wholly unnecessary and distracting in alphabetical characters.
But I’m also the kind of weirdo that thinks the world needs more monospace fonts.
It is the exact opposite. Ligatures were created to help deal with the lack of clarity when symbols overlap. fi, ff, fl, ffi, have historically (like print press historical) been common ligatures where others are stylistic, where others are downright questionable & make things harder to read. The first category should almost always be supported, & the others can usually be disabled if not commonly off by default where you opt in for some design, not for general body copy.
What you are referring to about ‘programming ligatures’ is an outright abuse of open type features full of false positives, ambiguities, & lack of clarity for outsiders to understand what your code means. What you want is Unicode supported in your language so you can precisely what you mean than using ASCII abominations—like meaning → but typing ->, dash + greater, than which isn’t at all what you mean which is a rightward arrow. (with a non-exhaustive languages with decent Unicode support: Raku, Julia, Agda, PureScript, Haskell with Unicode pragma, & all APL dialects).
The “fi” combination also seems problematic since they seem to intersect.
That’s a ligature, it’s deliberate.
To me, that’s even worse. Ligatures that have 0 separation where it’s expected short circuit my reading comprehension.
You can turn them off with every font. But you’ll be surprised by how much they can improve readability, because they remove optical irritation as shown here.
So what I see there is that badly designed fonts require ligatures to correct interactions.
Like, I get that there are some neat ones, e.g. I have them turned on when writing code for symbols, but they seem wholly unnecessary and distracting in alphabetical characters.
But I’m also the kind of weirdo that thinks the world needs more monospace fonts.
/shrug
It is the exact opposite. Ligatures were created to help deal with the lack of clarity when symbols overlap. fi, ff, fl, ffi, have historically (like print press historical) been common ligatures where others are stylistic, where others are downright questionable & make things harder to read. The first category should almost always be supported, & the others can usually be disabled if not commonly off by default where you opt in for some design, not for general body copy.
What you are referring to about ‘programming ligatures’ is an outright abuse of open type features full of false positives, ambiguities, & lack of clarity for outsiders to understand what your code means. What you want is Unicode supported in your language so you can precisely what you mean than using ASCII abominations—like meaning
→
but typing->
, dash + greater, than which isn’t at all what you mean which is a rightward arrow. (with a non-exhaustive languages with decent Unicode support: Raku, Julia, Agda, PureScript, Haskell with Unicode pragma, & all APL dialects).