Skip to content
The Font World
Pairings Free Fonts Guides Web Type Spotlight About
Typography Guides

What Is a Ligature in Typography? A Plain-English Guide

A ligature merges two or more letters into one glyph, like fi or fl. Learn the types, the history, and how to turn ligatures on or off in design apps.

Quick answer: A ligature is a single character (glyph) that a typeface substitutes for two or more letters that would otherwise collide or look awkward side by side. The classic example is fi, where the dot of the i crashes into the hook of the f. Modern fonts store ligatures as OpenType features, so common ones like fi, fl, and ffi usually switch on automatically, while decorative ones stay off until you ask for them.

Open almost any well-made book, resume, or website and you have already read dozens of ligatures without noticing. That is the point. A ligature quietly smooths over a spot where two letter shapes fight for the same tiny patch of space, and when it works you simply perceive a cleaner word. Understanding what ligatures are, where they came from, and how to control them turns an invisible detail into a tool you can actually use.

So what exactly counts as a ligature?

A ligature is one glyph drawn to replace a specific sequence of characters. The word you type is still “file” with four separate letters in the underlying text; only the visual rendering fuses the f and i into a purpose-built shape. This distinction matters: your text stays searchable, selectable, and copy-pasteable, because the substitution happens at the display layer, not in the stored characters.

  • It is drawn, not squished. A designer draws the combined form on purpose so the join looks intentional rather than cramped.
  • It is triggered by a sequence. The font watches for particular pairs or triplets, most famously the letter f followed by i, l, or another f.
  • It is reversible. Because the real letters are untouched, you can turn the effect off and the text is unchanged.

Where did ligatures come from?

Ligatures predate printing. Medieval scribes copying manuscripts by hand joined frequent letter combinations to save time and space, and some of those joins hardened into conventions. When Johannes Gutenberg and later punchcutters cast movable metal type in the 15th century, they carried the habit over for a practical reason: a lowercase f often had an overhanging arm, and when the next letter was an i or l, the delicate metal could touch, chip, or print badly. Casting a single fi sort solved the collision in one piece of metal. The ampersand (&) is itself a frozen ligature of the Latin et, meaning “and.” So the shapes you toggle in a menu today are the descendants of choices scribes and typefounders made centuries ago.

What are the main types of ligatures?

Typographers and the OpenType format group ligatures by how essential they are. Standard ones exist for readability and run by default; the rest are stylistic and stay out of the way until invoked. The table below lays out the categories you will meet most often.

Ligature type Example When it is used
Standard (liga) fi, fl, ff, ffi, ffl Body text and almost everywhere; on by default to prevent awkward letter collisions.
Discretionary (dlig) ct, st, sp, Th Decorative headings, logos, and formal or vintage designs; off by default, enabled by choice.
Historical (hlig) long-s pairs, archaic forms Reproductions of old texts or period-authentic display work; off by default.
Contextual (calt) joins in script and handwriting fonts Connecting flowing scripts so strokes meet naturally; on by default in fonts that need it.

Standard ligatures are the workhorses. Discretionary and historical ligatures are flavor: they add character to a wedding invitation or a whiskey label but can look fussy or slow a reader down in a dense paragraph. Contextual alternates are a close cousin, swapping glyphs based on neighbors to keep script and handwriting fonts looking connected.

How does OpenType actually handle them?

In a modern OpenType font, ligatures are alternate glyphs baked into the font file, paired with rules that say when to use them. The relevant rules live in the font’s glyph substitution (GSUB) table. When the liga feature is active and the rendering engine sees an f followed by an i, GSUB tells it to replace both characters with the single fi glyph before drawing the line of text. Each behavior has a four-letter feature tag: liga for standard ligatures, dlig for discretionary, hlig for historical, and calt for contextual alternates. Design apps and browsers read these same tags, which is why the on/off controls line up across tools.

How do I turn ligatures on or off?

In desktop design software, ligatures usually live in the character or OpenType panel. In Adobe apps like InDesign, Illustrator, and Photoshop there is a Ligatures toggle for standard ones and a separate Discretionary Ligatures option in the OpenType submenu. Figma exposes them under a type layer’s advanced type or OpenType settings. Type-design tools such as Glyphs let you define the ligature glyphs and their substitution rules directly.

On the web, CSS gives you two levers. The readable, high-level property is font-variant-ligatures, which accepts values such as normal, none, common-ligatures, no-common-ligatures, discretionary-ligatures, and historical-ligatures. The lower-level property is font-feature-settings, where you name the raw tag and pass 1 or 0 to switch it. A few common patterns:

  • Turn everything off (useful for code, tabular data, or precise alignment): font-variant-ligatures: none;
  • Enable decorative joins: font-variant-ligatures: discretionary-ligatures;
  • Same thing with tags: font-feature-settings: "dlig" 1; or disable standard ones with "liga" 0;

Prefer font-variant-ligatures when you can, because it is easier to read and less likely to clobber other font features by accident. Reach for font-feature-settings only when you need a tag the high-level property does not expose.

When should I use ligatures, and when should I avoid them?

Leave standard ligatures on for virtually all running text and print; they are doing invisible readability work. Bring in discretionary or historical ligatures deliberately for logos, headlines, invitations, and any design that wants a crafted or period feel. Turn ligatures off when precise character alignment matters more than smoothness: monospaced code (where an fi glyph would break column alignment), tables of numbers, technical strings, and very small or tightly tracked text where a fused glyph can actually reduce legibility. As with most typography, the rule is intent, use ligatures because they serve the reader, not just because the font offers them.

Frequently asked questions

Are ligatures the same as kerning?

No. Kerning adjusts the spacing between two letters while keeping them as separate glyphs. A ligature replaces those letters with one entirely new glyph. Kerning tunes the gap; a ligature removes the collision by redrawing the shapes together.

Do ligatures affect search, copy, and accessibility?

Generally no. The underlying characters remain the real letters, so search, find-and-replace, screen readers, and copy-paste operate on “file” even though a single fi glyph is displayed. This is why ligatures are safe to use in body text. Problems only tend to appear when a badly made PDF or font maps the glyph incorrectly, which can garble copied text.

Why do some ligatures show up automatically and others do not?

OpenType marks common ligatures (the liga feature) as on by default because they aid readability, while discretionary and historical ligatures are off by default because they are stylistic. Your app or browser follows those defaults unless you override them with a setting or CSS.

Do all fonts include ligatures?

No. Ligatures have to be drawn and coded into a font, so coverage varies. Most professional text fonts include at least the standard f-ligatures; many display and script fonts add discretionary and contextual sets, while some minimal or free fonts include few or none. If a pairing does not fuse, the font simply may not contain that ligature.

Should I use ligatures in code editors?

That is a personal call. So-called “coding ligatures” in fonts like Fira Code render sequences such as => or != as combined symbols, which some developers find clearer and others find confusing because the underlying characters differ from what is shown. They are purely cosmetic and easy to disable if they get in the way.