mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
190 lines
5.3 KiB
Groff
190 lines
5.3 KiB
Groff
.TH FONT 7
|
|
.SH NAME
|
|
font, subfont \- external format for fonts and subfonts
|
|
.SH SYNOPSIS
|
|
.B #include <draw.h>
|
|
.SH DESCRIPTION
|
|
Fonts and subfonts are described in
|
|
.MR cachechars (3) .
|
|
.PP
|
|
External bitmap fonts are described by a plain text file that can be read using
|
|
.IR 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 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
|
|
.I readsubfont
|
|
(see
|
|
.MR graphics (3) ).
|
|
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
|
|
that can be read and written using
|
|
.I readsubfont
|
|
and
|
|
.I writesubfont
|
|
(see
|
|
.MR subfont (3) ).
|
|
The format for subfont files is: an image containing character glyphs,
|
|
followed by a subfont header, followed by character information.
|
|
The image has the format for external image files described in
|
|
.MR image (7) .
|
|
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 the
|
|
.B Fontchar
|
|
.B x
|
|
(2 bytes, low order byte first),
|
|
.BR top ,
|
|
.BR bottom ,
|
|
.BR left ,
|
|
and
|
|
.BR width .
|
|
The
|
|
.B x
|
|
field of the last
|
|
.B Fontchar
|
|
is used to calculate the image width
|
|
of the previous character; the other fields in the last
|
|
.B Fontchar
|
|
are irrelevant.
|
|
.PP
|
|
Note that the convention of using the character with value zero (NUL) to represent
|
|
characters of zero width (see
|
|
.MR draw (3) )
|
|
means that fonts should have, as their zeroth character,
|
|
one with non-zero width.
|
|
.SS "Font Names
|
|
.PP
|
|
Font names in Plan 9 from User Space are
|
|
a small language describing a font.
|
|
The most basic form is the name of an existing bitmap font file,
|
|
following the convention:
|
|
.IP
|
|
.B /lib/font/bit/\fIname\fP/\fIrange\fP.\fIsize\fP.font
|
|
.PD
|
|
.PP
|
|
where
|
|
.I size
|
|
is approximately the height in pixels of the lower case letters
|
|
(without ascenders or descenders).
|
|
.I Range
|
|
gives some indication of which characters will be available: for example
|
|
.BR ascii ,
|
|
.BR latin1 ,
|
|
.BR euro ,
|
|
or
|
|
.BR unicode .
|
|
.B Euro
|
|
includes most European languages, punctuation marks, the International Phonetic
|
|
Alphabet, etc., but no Asian languages.
|
|
.B Unicode
|
|
includes every character for which appropriate-sized images exist on the system.
|
|
.PP
|
|
In Plan 9 from User Space, the font files are rooted in
|
|
.B $PLAN9/font
|
|
instead of
|
|
.BR /lib/font/bit ,
|
|
but to keep old references working, paths beginning with
|
|
.B /lib/font/bit
|
|
are interpreted as references to the actual font directory.
|
|
.PP
|
|
Fonts need not be stored on disk in the Plan 9 format.
|
|
If the font name has the form
|
|
.BR /mnt/font/\fIname\fP/\fIsize\fP/font ,
|
|
.I fontsrv
|
|
is invoked to synthesize a bitmap font from the operating system's installed vector fonts.
|
|
The command
|
|
.B fontsrv
|
|
.B -p
|
|
.B .
|
|
lists the available fonts.
|
|
See
|
|
.MR fontsrv (4)
|
|
for more.
|
|
.PP
|
|
If the font name has the form
|
|
.BR \fIscale\fP*\fIfontname\fP ,
|
|
where
|
|
.I scale
|
|
is a small decimal integer, the
|
|
.I fontname
|
|
is loaded and then scaled by pixel repetition.
|
|
.PP
|
|
The Plan 9 bitmap fonts were designed for screens with pixel density around 100 DPI.
|
|
When used on screens with pixel density above 200 DPI,
|
|
the bitmap fonts are automatically pixel doubled.
|
|
Similarly, fonts loaded from
|
|
.MR fontsrv (4)
|
|
are automatically doubled in size by varying the effective
|
|
.I size
|
|
path element.
|
|
In both cases, the effect is that a single font name
|
|
can be used on both low- and high-density displays (or even in a window moved between differing displays)
|
|
while keeping roughly the same effective size.
|
|
.PP
|
|
For more control over the fonts used on low- and high-density displays,
|
|
if the font name has the form
|
|
.BR \fIlowfont\fP,\fIhighfont\fP ,
|
|
.I lowfont
|
|
is used on low-density displays and
|
|
.I highfont
|
|
on high-density displays.
|
|
In effect, the behavior described above is that the font name
|
|
.IP
|
|
.B /lib/font/bit/lucsans/euro.8.font
|
|
.PD
|
|
.PP
|
|
really means
|
|
.IP
|
|
.B /lib/font/bit/lucsans/euro.8.font,2*/lib/font/bit/lucsans/euro.8.font
|
|
.PD
|
|
.PP
|
|
and similarly
|
|
.IP
|
|
.B /mnt/font/LucidaGrande/15a/font
|
|
.PD
|
|
.PP
|
|
really means
|
|
.IP
|
|
.B /mnt/font/LucidaGrande/15a/font,/mnt/font/LucidaGrande/30a/font
|
|
.PD
|
|
.PP
|
|
Using an explicit comma-separated font pair allows finer control, such as
|
|
using a Plan 9 bitmap font on low-density displays but switching to
|
|
a system-installed vector font on high-density displays:
|
|
.IP
|
|
.B /lib/font/bit/lucsans/euro.8.font,/mnt/font/LucidaGrande/30a/font
|
|
.PD
|
|
.PP
|
|
.SH FILES
|
|
.TF \*9/font/*
|
|
.TP
|
|
.B \*9/font/*
|
|
font directories
|
|
.SH "SEE ALSO"
|
|
.MR graphics (3) ,
|
|
.MR draw (3) ,
|
|
.MR cachechars (3) ,
|
|
.MR subfont (3)
|