font, subfont - external format for fonts and subfonts
Fonts and subfonts are described in cachechars(2).
External fonts are described by a plain text file that can be read using rdfontfile. 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
baseline. 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 subfont, with an optional starting
position within the subfont, and the file name names an external file suitable for rdsub-
fontfile. The minimum number of a covered range is mapped to the specified starting posi-
tion (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,
External subfonts are represented in a more rigid format that can be read and written
using rdsubfontfile and wrsubfontfile (see subfalloc(2)). The format for subfont files
is: a bitmap containing character images, followed by a subfont header, followed by char-
acter information. The bitmap has the format for external bitmap files described in bit-
map(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 calcu-
late the bitmap width of the previous character; the other fields in the last Fontchar are
Note that the convention of using the character with value zero (NUL) to represent charac-
ters of zero width (see bitblt(2)) means that fonts should have, as their zeroth charac-
ter, one with non-zero width.
graphics(2), bitblt(2), cachechars(2), subfalloc(2)