Font Families (The GNU Troff Manual)

#### 5.19.2 Font Families

To accommodate the wide variety of fonts available, GNU `troff` distinguishes font families and font styles. A resolved font name is the catenation of a font family and a style. Selecting an abstract style causes GNU `troff` to combine it with the default font family.

You can thus compose a document using abstract styles exclusively for its body or running text, selecting a specific family only for titles or examples, for instance, and change the default family on the command line (recall Options).

Fonts for the devices `ps`, `pdf`, `dvi`, `lj4`, `lbp`, and the X11 devices support this mechanism. By default, GNU `troff` uses the Times family with the four styles ‘`R`’, ‘`I`’, ‘`B`’, and ‘`BI`’.

Request: `.fam` [family] ¶
Register: `\n[.fam]` ¶
Escape sequence: `\F`f`` ¶
Escape sequence: `\F(`fm`` ¶
Escape sequence: `\F[`family`]` ¶

  Set the default font family, used in combination with abstract styles to construct a resolved font name, to family (one-character name f, two-character name fm). If no argument is given, GNU `troff` selects the previous font family; if there none, is it falls back to the device’s default76 or its own (‘`T`’).

  The `\F` escape sequence works similarly. In disanalogy to `\f`, ‘`\FP`’ makes ‘`P`’ the default family. Use ‘`\F[]`’ to select the previous default family. The default font family is available in the read-only string-valued register `.fam`; it is associated with the environment (see Environments).

      spam,     \" startup defaults are T (Times) R (roman)
      .fam H    \" make Helvetica the default family
      spam,     \" family H + style R = HR
      .ft B     \" family H + style B = HB
      spam,
      .ft CR    \" Courier roman (default family not changed)
      spam,
      .ft       \" back to Helvetica bold
      spam,
      .fam T    \" make Times the default family
      spam,     \" family T + style B = TB
      .ft AR    \" font AR (not a style)
      baked beans,
      .ft R     \" family T + style R = TR
      and spam.

  `\F` doesn’t produce an input token in GNU `troff`. As a consequence, it can be used in requests like `mc` (which expects a single character as an argument) to change the font family on the fly.

      .mc \F[P]x\F[]

Request: `.sty` n style ¶
Register: `\n[.sty]` ¶

  Associate an abstract style style with mounting position n, which must be a non-negative integer. If the requests `cs`, `bd`, `tkf`, `uf`, or `fspecial` are applied to an abstract style, they are instead applied to the member of the current family corresponding to that style.

  The default family can be set with the `-f` option (see Options). The `styles` command in the `DESC` file controls which font positions (if any) are initially associated with abstract styles rather than fonts.

  Caution: The style argument is not validated. Errors may occur later, when the formatter attempts to construct a resolved font name, or format a character for output.

      .nr BarPos \n[.fp]
      .sty \n[.fp] Bar
      .fam Foo
      .ft \n[BarPos]
      .tm .f=\n[.f]
      A
          error→ error: no font family named 'Foo' exists
          error→ .f=41
          error→ error: cannot format glyph: no current font

  When an abstract style has been selected, the read-only string-valued register ‘`.sty`’ interpolates its name; this datum is associated with the environment (see Environments). Otherwise, ‘`.sty`’ interpolates nothing.