summaryrefslogtreecommitdiff
path: root/man/6/font
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /man/6/font
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'man/6/font')
-rw-r--r--man/6/font102
1 files changed, 102 insertions, 0 deletions
diff --git a/man/6/font b/man/6/font
new file mode 100644
index 00000000..b118ad6d
--- /dev/null
+++ b/man/6/font
@@ -0,0 +1,102 @@
+.TH FONT 6
+.SH NAME
+font, subfont \- external format for character fonts and subfonts
+.SH 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.
+.PP
+External fonts are described by a plain text file that can be read using
+.BR Font.open ;
+.B Font.build
+reads the same format from a string rather than a file.
+(see
+.IR draw-font (2)).
+.PP
+The format 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 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 containing the font file.
+Each field must be followed by some white space.
+Each numeric field may be C-format decimal, octal, or hexadecimal.
+.PP
+External subfonts are represented in a more rigid format:
+an image containing character images,
+followed by a subfont header, followed by character information.
+The image has the format for external image files described in
+.IR image (6).
+The subfont header has 3
+decimal strings:
+.BR n ,
+.BR height ,
+and
+.BR ascent .
+Each number is right-justified and blank padded in 11 characters, followed by a blank.
+The character
+.B info
+consists of
+.BR n +1
+6-byte entries, each giving values called
+.B x
+(2 bytes, low order byte first),
+.BR top ,
+.BR bottom ,
+.BR left ,
+and
+.BR width
+for the successive characters from left to right (in increasing Unicode order) in the
+subfont.
+The rectangle holding the character is
+.B (x,
+.B top,
+.B xn,
+.BR bottom) ,
+where
+.B xn
+is the
+.B x
+field of the next character.
+When the character is to be drawn in an image at point
+.BR p ,
+the rectangle is placed at
+.B (p.x+left ,
+.B p.y)
+and the next character to be drawn is placed at
+.B (p.x+width ,
+.B p.y)
+The
+.B 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.
+.PP
+Note that the convention of using the character with value zero (NUL) to represent
+characters of zero width (see the description of
+.B Image.text
+in
+.IR draw-image (2))
+means that fonts should have, as their zeroth character,
+one with non-zero width.
+.SH FILES
+.TF /fonts/*
+.TP
+.B /fonts/*
+font directories
+.SH "SEE ALSO"
+.IR draw-intro (2),
+.IR draw-font (2),
+.IR draw (3)