FONT(6) Games Manual FONT(6)
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 num-
bers: 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 rdsubfontfile. The minimum number of a covered range is
mapped to the specified starting position (default zero) of the corre-
sponding 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 rdsubfontfile and wrsubfontfile (see subfal-
loc(2)). The format for subfont files is: a bitmap containing charac-
ter images, followed by a subfont header, followed by character infor-
mation. The bitmap has the format for external bitmap files described
in bitmap(6). The subfont header has 3 decimal strings: n, height, and
ascent. Each number is right-justified and blank padded in 11 charac-
ters, 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 bitmap 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 bitblt(2)) means that fonts
should have, as their zeroth character, one with non-zero width.
graphics(2), bitblt(2), cachechars(2), subfalloc(2)