FONT(6)FONT(6)NAME
font, subfont - external format for character fonts and subfonts
DESCRIPTION
Fonts are constructed as a list defining a range of Unicode characters
and a subfont containing the character images for that range. Subfonts
are not directly accessible from Limbo.
External fonts are described by a plain text file that can be read
using Font.open; Font.build reads the same format from a string rather
than a file. (see draw-font(2)).
The format is a header followed by any number of subfont range specifi‐
cations. 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
should be 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 holding the subfont data. The minimum
number of a covered 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 con‐
taining the font file. Each field must be followed by some white
space. Each numeric field may be C-format decimal, octal, or hexadeci‐
mal.
External subfonts are represented in a more rigid format: an image con‐
taining character images, followed by a subfont 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 values called x (2 bytes, low order
byte first), top, bottom, left, and width for the successive characters
from left to right (in increasing Unicode order) in the subfont. The
rectangle holding the character is (x, top, xn, bottom), where xn is
the x field of the next character. When the character is to be drawn
in an image at point p, the rectangle is placed at (p.x+left , p.y) and
the next character to be drawn is placed at (p.x+width , p.y) The x
field of the last entry is used to calculate the image width of the
previous character; the other fields in the last entry are irrelevant.
Note that the convention of using the character with value zero (NUL)
to represent characters of zero width (see the description of
Image.text in draw-image(2)) means that fonts should have, as their
zeroth character, one with non-zero width.
FILES
/fonts/*
font directories
SEE ALSOdraw-intro(2), draw-font(2), draw(3)FONT(6)