groff: Ligatures and Kerning

 
 5.17.8 Ligatures and Kerning
 ----------------------------
 
 Ligatures are groups of characters that are run together, i.e, producing
 a single glyph.  For example, the letters 'f' and 'i' can form a
 ligature 'fi' as in the word 'file'.  This produces a cleaner look
 (albeit subtle) to the printed output.  Usually, ligatures are not
 available in fonts for TTY output devices.
 
    Most POSTSCRIPT fonts support the fi and fl ligatures.  The C/A/T
 typesetter that was the target of AT&T 'troff' also supported 'ff',
 'ffi', and 'ffl' ligatures.  Advanced typesetters or 'expert' fonts may
 include ligatures for 'ft' and 'ct', although GNU 'troff' does not
 support these (yet).
 
    Only the current font is checked for ligatures and kerns; neither
 special fonts nor entities defined with the 'char' request (and its
 siblings) are taken into account.
 
  -- 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 number 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 a glyph pair to improve readability.  In
 most cases (but not always) the distance is decreased.  Typewriter-like
 fonts and fonts for terminals where all glyphs have the same width don't
 use kerning.
 
  -- Request: .kern [flag]
  -- Register: \n[.kern]
      Switch kerning on or off.  If the parameter is non-zero or missing,
      enable pairwise kerning, otherwise disable it.  The read-only
      number register '.kern' is set to 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'.
 
      SeeFont 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 point 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 point 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 point size.
 
      The default scaling indicator is 'z' for S1 and S2, 'p' for N1 and
      N2.
 
      Note that 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 it.
 
    Sometimes, when typesetting letters of different fonts, more or less
 space at such boundaries are needed.  There are two escapes to help with
 this.
 
  -- Escape: \/
      Increase the width of the preceding glyph so that the spacing
      between that glyph and the following glyph is correct if the
      following glyph is a roman glyph.  For example, if an italic 'f' is
      immediately followed by a roman right parenthesis, then in many
      fonts the top right portion of the 'f' overlaps the top left of the
      right parenthesis.  Use this escape sequence whenever an italic
      glyph is immediately followed by a roman glyph without any
      intervening space.  This small amount of space is also called
      "italic correction".
 
  -- Escape: \,
      Modify the spacing of the following glyph so that the spacing
      between that glyph and the preceding glyph is correct if the
      preceding glyph is a roman glyph.  Use this escape sequence
      whenever a roman glyph is immediately followed by an italic glyph
      without any intervening space.  In analogy to above, this space
      could be called "left italic correction", but this term isn't used
      widely.
 
  -- Escape: \&
      Insert a zero-width character, which is invisible.  Its intended
      use is to stop interaction of a character with its surrounding.
 
         * It prevents the insertion of extra space after an
           end-of-sentence character.
 
                Test.
                Test.
                    => Test.  Test.
                Test.\&
                Test.
                    => Test. Test.
 
         * It prevents interpretation of a control character at the
           beginning of an input line.
 
                .Test
                    => warning: `Test' not defined
                \&.Test
                    => .Test
 
         * It prevents kerning between two glyphs.
 
         * It is needed to map an arbitrary character to nothing in the
           'tr' request (SeeCharacter Translations).
 
  -- Escape: \)
      This escape is similar to '\&' except that it behaves like a
      character declared with the 'cflags' request to be transparent for
      the purposes of an end-of-sentence character.
 
      Its main usage is in macro definitions to protect against arguments
      starting with a control character.
 
           .de xxx
           \)\\$1
           ..
           .de yyy
           \&\\$1
           ..
           This is a test.\c
           .xxx '
           This is a test.
               =>This is a test.'  This is a test.
           This is a test.\c
           .yyy '
           This is a test.
               =>This is a test.' This is a test.