2.4.2 Ligatures

A ligature combines two or more letters (more generally, characters) into a single glyph. For example, in Latin-based typography, the two letters ‘f’ and ‘i’ are often combined into the glyph ‘fi’.

TeX supports ligatures automatically. To continue the example, if the input has the word ‘fine’, written as four separate ASCII characters, TeX will output the word ‘fine’ (with the default fonts), with three typeset glyphs.

In traditional TeX, the available ligatures, if any, are defined by the current font. TeX also uses the ligature mechanism to produce a few typographical characters which were not available in any computer encoding when TeX was invented. In all, in the original Computer Modern fonts, the following input character sequences are defined to lead to ligatures:

ff

ff (ff ligature, U+FB00)

fi

fi (fi ligature, U+FB01)

fl

fl (fl ligature, U+FB02)

ffi

ffi (ffi ligature, U+FB03)

ffl

ffl (ffl ligature, U+FB04)

``

“ (left double quotation mark, U+201C)

''

” (right double quotation mark, U+201D)

--

– (en-dash, U+2013)

---

— (em-dash, U+2014)

!`

!‘ (inverted exclamation mark, U+00A1)

?`

?‘ (inverted question mark, U+00BF)

(For the f-ligatures above, the text in parentheses shows the individual characters, so in the typeset output you can easily see the difference between the ligature and the original character sequence.)

Nowadays it’s usually possible to directly input the punctuation characters as Unicode characters, and LaTeX supports that (see previous section). But even today, it can still often be useful to use the ASCII ligature input form; for example, the difference between an en-dash and em-dash, as a single glyph, can be all but impossible to discern, but the difference between two and three ASCII hyphen characters is clear. Similarly with quotation marks, in some fonts.

Thus, even the engines with native support for UTF-8, namely LuaTeX and XeTeX, also support the ASCII ligature input sequences by default, independent of the font used. They also need to do so for compatibility.

By the way, the f-ligatures are also available in Unicode (the “Alphabetic Presentation Forms” block starting at U+FB00), but it’s almost never desirable to use them as input characters, since in principle it should be up to the typesetter and the current font whether to use ligatures. Also, in practice, using them will typically cause searches to fail, that is, a search for the two characters ‘fi’ will not be matched by the ligature ‘fi’ at U+FB01.


Unofficial LaTeX2e reference manual