Ligature
Two or more characters joined into a single glyph. Can be typographic (fi → fi via OpenType) or a Unicode character (fi U+FB01). Arabic script uses mandatory ligatures.
What is a Ligature?
A ligature is a single glyph that replaces a sequence of two or more characters to improve their visual appearance or historical authenticity. The classic example is the fi ligature: when "f" and "i" appear together, the hook of the lowercase f can collide with the dot of the i. A well-designed font replaces this pair with a single unified glyph (fi) where the dot is absorbed into the f's arc.
Ligatures exist on a spectrum from purely aesthetic to semantically meaningful. Typographic ligatures (fi, fl, ffi, ffl, ft) exist solely for visual harmony. Historical ligatures like æ (ae) and œ (oe) started as ligatures but became independent characters with their own Unicode code points and linguistic identities.
Unicode Ligature Characters
Several common ligatures are encoded as standalone Unicode characters:
| Ligature | Unicode | Composed From |
|---|---|---|
| fi | U+FB01 | f + i |
| fl | U+FB02 | f + l |
| ffi | U+FB03 | f + f + i |
| ffl | U+FB04 | f + f + l |
| ſt | U+FB05 | long s + t |
| æ | U+00E6 | a + e (now independent) |
| œ | U+0153 | o + e (now independent) |
| ß | U+00DF | originally s + z ligature |
| & | U+0026 | et (Latin "and") ampersand |
The Unicode Standard includes these for compatibility with legacy encodings, but recommends using the component characters (fi) rather than the ligature code point (fi) for modern text — the font's OpenType rendering engine will apply the ligature automatically when appropriate.
How OpenType Ligatures Work
Modern fonts implement ligatures through OpenType GSUB (Glyph Substitution) tables. The font specifies rules: "when glyph IDs 42 and 46 appear in sequence, substitute glyph ID 312." This substitution happens invisibly in the text shaping pipeline.
OpenType defines several ligature feature tags:
liga— Standard ligatures (fi, fl): on by default in most renderersdlig— Discretionary ligatures (ct, st, Th): must be explicitly enabledhlig— Historical ligatures (long-s forms): for scholarly usecalt— Contextual alternates: character-level substitutions by context
Enable them in CSS:
/* Enable all standard and discretionary ligatures */
p {
font-variant-ligatures: common-ligatures discretionary-ligatures;
/* or shorthand: */
font-feature-settings: "liga" 1, "dlig" 1;
}
/* Disable ligatures (e.g., in code blocks) */
code {
font-variant-ligatures: no-common-ligatures;
}
Coding Fonts and Ligatures
Programming fonts like Fira Code, JetBrains Mono, and Cascadia Code use ligatures to render multi-character operators as unified symbols:
| Source Code | Rendered Ligature |
|---|---|
!= |
≠ |
>= |
≥ |
-> |
→ |
=> |
⇒ |
// |
∥ |
These are display-only — the underlying text remains !=, not ≠. This means search, copy-paste, and compilation are unaffected.
Quick Facts
| Property | Value |
|---|---|
| Classic typographic ligatures | fi, fl, ffi, ffl, ft, fj |
| Unicode ligature block | Alphabetic Presentation Forms (U+FB00–U+FB06) |
| OpenType feature for standard ligatures | liga |
| OpenType feature for discretionary | dlig |
| Ligatures in search | May break search; best to use component characters in HTML |
| Popular coding fonts with ligatures | Fira Code, JetBrains Mono, Cascadia Code, Hasklig |
| Historical origin | Medieval scribal practice of joining commonly paired letters |
Related Terms
More in Typography
A character that attaches to the preceding base character to modify it. …
CSS @font-face descriptor specifying which Unicode code points a font should cover. …
Punctuation marks used to separate parts of a sentence or indicate ranges. …
A mark added to a letter to change pronunciation or meaning. Can …
U+2026 HORIZONTAL ELLIPSIS (…). A single character replacing three periods, typographically correct …
Em: a width equal to the font size. En: half an em. …
A specific implementation of a typeface at a particular size, weight, and …
The mechanism by which a rendering engine substitutes glyphs from a secondary …
The visual representation of a character as rendered by a font. One …
Adjusting the spacing between specific character pairs for visual harmony (e.g., AV, …