FONT(6)                                                   FONT(6)

     NAME
          font, subfont - external format for fonts and subfonts

     SYNOPSIS
          #include <draw.h>

     DESCRIPTION
          Fonts and subfonts are described in cachechars(2).

          External fonts are described by a plain text file that can
          be read using openfont. The format of the file is a header
          followed by any number of subfont range specifications.  The
          header contains two numbers: the height and the ascent, both
          in pixels.  The height is the inter-line spacing and the
          ascent is the distance from the top of the line to the base-
          line.  These numbers are chosen to display consistently all
          the subfonts of the font.  A subfont range specification
          contains two or three numbers and a file name.  The numbers
          are the inclusive range of characters covered by the sub-
          font, with an optional starting position within the subfont,
          and the file name names an external file suitable for
          readsubfont (see graphics(2)). The minimum number of a cov-
          ered range is mapped to the specified starting position
          (default zero) of the corresponding subfont.  If the subfont
          file name does not begin with a slash, it is taken relative
          to the directory containing the font file.  Each field must
          be followed by some white space.  Each numeric field may be
          C-format decimal, octal, or hexadecimal.

          External subfonts are represented in a more rigid format
          that can be read and written using readsubfont and
          writesubfont (see subfont(2)). The format for subfont files
          is: an image containing character glyphs, followed by a sub-
          font header, followed by character information.  The image
          has the format for external image files described in
          image(6). The subfont header has 3 decimal strings: n,
          height, and ascent.  Each number is right-justified and
          blank padded in 11 characters, followed by a blank.  The
          character info consists of n+1 6-byte entries, each giving
          the Fontchar x (2 bytes, low order byte first), top, bottom,
          left, and width.  The x field of the last Fontchar is used
          to calculate the image width of the previous character; the
          other fields in the last Fontchar are irrelevant.

          Note that the convention of using the character with value
          zero (NUL) to represent characters of zero width (see
          draw(2)) means that fonts should have, as their zeroth char-
          acter, one with non-zero width.

     FILES

     Page 1                       Plan 9             (printed 3/28/24)

     FONT(6)                                                   FONT(6)

          /lib/font/bit/*  font directories

     SEE ALSO
          graphics(2), draw(2), cachechars(2), subfont(2)

     Page 2                       Plan 9             (printed 3/28/24)