5.19.8 Ligatures and Kerning

Proportional fonts commonly employ two techniques to improve the esthetics of typeset text. Ligatures are sequences of glyphs that are visually connected or “tied”, overlapping them and slightly altering their shapes. Kerning is the adjustment of horizontal spacing between glyphs. Neither is employed on terminals.97

Most typesetters support ligatures for the sequences ‘fi’, ‘fl’, ‘ff’, ‘ffi’, and ‘ffl’, and troff does likewise. Some fonts may include others, but GNU troff does not (yet) support them.

The formatter checks only the current font for ligatures and kerning adjustments; neither glyphs from special fonts nor special characters defined with the char request (and its siblings) are considered for these processes.

Request: .lg [flag]
Register: \n[.lg]

Switch the ligature mechanism on or off; if the parameter is non-zero or missing, ligatures are enabled, otherwise disabled. Default is on. The current ligature mode can be found in the read-only register .lg (set to 1 or 2 if ligatures are enabled, 0 otherwise).

Setting the ligature mode to 2 enables the two-character ligatures (fi, fl, and ff) and disables the three-character ligatures (ffi and ffl).

Pairwise kerning is another subtle typesetting mechanism that modifies the distance between adjacent glyphs in a pair to improve readability. In most cases (but not always) the distance is decreased. Monospaced (typewriter-like) fonts and terminals don’t use kerning.

Request: .kern [flag]
Register: \n[.kern]

Enable or disable pairwise kerning of glyphs in the environment per b. It is enabled by default, and if b is omitted.

The read-only register .kern interpolates 1 if pairwise kerning is enabled, 0 otherwise.

If the font description file contains pairwise kerning information, glyphs from that font are kerned. Kerning between two glyphs can be inhibited by placing \& between them: ‘V\&A’.

See Font Description File Format.

Track kerning expands or reduces the space between glyphs. This can be handy, for example, if you need to squeeze a long word onto a single line or spread some text to fill a narrow column. It must be used with great care since it is usually considered bad typography if the reader notices the effect.

Request: .tkf f s1 n1 s2 n2

Enable track kerning for font f. If the current font is f the width of every glyph is increased by an amount between n1 and n2 (n1, n2 can be negative); if the current type size is less than or equal to s1 the width is increased by n1; if it is greater than or equal to s2 the width is increased by n2; if the type size is greater than or equal to s1 and less than or equal to s2 the increase in width is a linear function of the type size.

The default scaling unit is ‘z’ for s1 and s2, ‘p’ for n1 and n2.

The track kerning amount is added even to the rightmost glyph in a line; for large values it is thus recommended to increase the line length by the same amount to compensate.