groff: Artificial Fonts

 
 5.17.7 Artificial Fonts
 -----------------------
 
 There are a number of requests and escapes for artificially creating
 fonts.  These are largely vestiges of the days when output devices did
 not have a wide variety of fonts, and when 'nroff' and 'troff' were
 separate programs.  Most of them are no longer necessary in GNU 'troff'.
 Nevertheless, they are supported.
 
  -- Escape: \H'height'
  -- Escape: \H'+height'
  -- Escape: \H'-height'
  -- Register: \n[.height]
      Change (increment, decrement) the height of the current font, but
      not the width.  If HEIGHT is zero, restore the original height.
      Default scaling indicator is 'z'.
 
      The read-only number register '.height' contains the font height as
      set by '\H'.
 
      Currently, only the '-Tps' and '-Tpdf' devices support this
      feature.
 
      Note that '\H' doesn't produce an input token in 'gtroff'.  As a
      consequence, it can be used in requests like 'mc' (which expects a
      single character as an argument) to change the font on the fly:
 
           .mc \H'+5z'x\H'0'
 
      In compatibility mode, 'gtroff' behaves differently: If an
      increment or decrement is used, it is always taken relative to the
      current point size and not relative to the previously selected font
      height.  Thus,
 
           .cp 1
           \H'+5'test \H'+5'test
 
      prints the word 'test' twice with the same font height (five points
      larger than the current font size).
 
  -- Escape: \S'slant'
  -- Register: \n[.slant]
      Slant the current font by SLANT degrees.  Positive values slant to
      the right.  Only integer values are possible.
 
      The read-only number register '.slant' contains the font slant as
      set by '\S'.
 
      Currently, only the '-Tps' and '-Tpdf' devices support this
      feature.
 
      Note that '\S' doesn't produce an input token in 'gtroff'.  As a
      consequence, it can be used in requests like 'mc' (which expects a
      single character as an argument) to change the font on the fly:
 
           .mc \S'20'x\S'0'
 
      This request is incorrectly documented in the original UNIX troff
      manual; the slant is always set to an absolute value.
 
  -- Request: .ul [lines]
      The 'ul' request normally underlines subsequent lines if a TTY
      output device is used.  Otherwise, the lines are printed in italics
      (only the term 'underlined' is used in the following).  The single
      argument is the number of input lines to be underlined; with no
      argument, the next line is underlined.  If LINES is zero or
      negative, stop the effects of 'ul' (if it was active).  Requests
      and empty lines do not count for computing the number of underlined
      input lines, even if they produce some output like 'tl'.  Lines
      inserted by macros (e.g. invoked by a trap) do count.
 
      At the beginning of 'ul', the current font is stored and the
      underline font is activated.  Within the span of a 'ul' request, it
      is possible to change fonts, but after the last line affected by
      'ul' the saved font is restored.
 
      This number of lines still to be underlined is associated with the
      current environment (SeeEnvironments).  The underline font can
      be changed with the 'uf' request.
 
      The 'ul' request does not underline spaces.
 
  -- Request: .cu [lines]
      The 'cu' request is similar to 'ul' but underlines spaces as well
      (if a TTY output device is used).
 
  -- Request: .uf font
      Set the underline font (globally) used by 'ul' and 'cu'.  By
      default, this is the font at position 2.  FONT can be either a
      non-negative font position or the name of a font.
 
  -- Request: .bd font [offset]
  -- Request: .bd font1 font2 [offset]
  -- Register: \n[.b]
      Artificially create a bold font by printing each glyph twice,
      slightly offset.
 
      Two syntax forms are available.
 
         * Imitate a bold font unconditionally.  The first argument
           specifies the font to embolden, and the second is the number
           of basic units, minus one, by which the two glyphs are offset.
           If the second argument is missing, emboldening is turned off.
 
           FONT can be either a non-negative font position or the name of
           a font.
 
           OFFSET is available in the '.b' read-only register if a
           special font is active; in the 'bd' request, its default unit
           is 'u'.
 
         * Imitate a bold form conditionally.  Embolden FONT1 by OFFSET
           only if font FONT2 is the current font.  This command can be
           issued repeatedly to set up different emboldening values for
           different current fonts.  If the second argument is missing,
           emboldening is turned off for this particular current font.
 
           This affects special fonts only (either set up with the
           'special' command in font files or with the 'fspecial'
           request).
 
  -- Request: .cs font [width [em-size]]
      Switch to and from "constant glyph space mode".  If activated, the
      width of every glyph is WIDTH/36 ems.  The em size is given
      absolutely by EM-SIZE; if this argument is missing, the em value is
      taken from the current font size (as set with the 'ps' request)
      when the font is effectively in use.  Without second and third
      argument, constant glyph space mode is deactivated.
 
      Default scaling indicator for EM-SIZE is 'z'; WIDTH is an integer.