groff: Font Positions

 
 5.17.3 Font Positions
 ---------------------
 
 For the sake of old phototypesetters and compatibility with old versions
 of 'troff', 'gtroff' has the concept of font "positions", on which
 various fonts are mounted.
 
  -- Request: .fp pos font [external-name]
  -- Register: \n[.f]
  -- Register: \n[.fp]
      Mount font FONT at position POS (which must be a non-negative
      integer).  This numeric position can then be referred to with font
      changing commands.  When 'gtroff' starts it is using font
      position 1 (which must exist; position 0 is unused usually at
      start-up).
 
      The current font in use, as a font position, is available in the
      read-only number register '.f'.  This can be useful to remember the
      current font for later recall.  It is associated with the current
      environment (SeeEnvironments).
 
           .nr save-font \n[.f]
           .ft B
           ... text text text ...
           .ft \n[save-font]
 
      The number of the next free font position is available in the
      read-only number register '.fp'.  This is useful when mounting a
      new font, like so:
 
           .fp \n[.fp] NEATOFONT
 
      Fonts not listed in the 'DESC' file are automatically mounted on
      the next available font position when they are referenced.  If a
      font is to be mounted explicitly with the 'fp' request on an unused
      font position, it should be mounted on the first unused font
      position, which can be found in the '.fp' register.  Although
      'gtroff' does not enforce this strictly, it is not allowed to mount
      a font at a position whose number is much greater (approx. 1000
      positions) than that of any currently used position.
 
      The 'fp' request has an optional third argument.  This argument
      gives the external name of the font, which is used for finding the
      font description file.  The second argument gives the internal name
      of the font, which is used to refer to the font in 'gtroff' after
      it has been mounted.  If there is no third argument then the
      internal name is used as the external name.  This feature makes it
      possible to use fonts with long names in compatibility mode.
 
    Both the 'ft' request and the '\f' escape have alternative syntax
 forms to access font positions.
 
  -- Request: .ft nnn
  -- Escape: \fn
  -- Escape: \f(nn
  -- Escape: \f[nnn]
      Change the current font position to NNN (one-digit position N,
      two-digit position NN), which must be a non-negative integer.
 
      If NNN is associated with a style (as set with the 'sty' request or
      with the 'styles' command in the 'DESC' file), use it within the
      current font family (as set with the 'fam' request, the '\F'
      escape, or with the 'family' command in the 'DESC' file).
 
           this is font 1
           .ft 2
           this is font 2
           .ft                   \" switch back to font 1
           .ft 3
           this is font 3
           .ft
           this is font 1 again
 
      SeeChanging Fonts, for the standard syntax form.