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 10/29/25)
FONT(6) FONT(6)
/lib/font/bit/* font directories
SEE ALSO
graphics(2), draw(2), cachechars(2), subfont(2)
Page 2 Plan 9 (printed 10/29/25)