font

FONT(7)                 Miscellaneous Information Manual                 FONT(7)



NAME
       font, subfont - external format for fonts and subfonts

SYNOPSIS
       #include <draw.h>

DESCRIPTION
       Fonts and subfonts are described in cachechars(3).

       External bitmap 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
       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
       readsubfont (see 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.

       External subfonts are represented in a more rigid format that can be read
       and written using readsubfont and writesubfont (see 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 image(7).  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(3)) means that fonts should
       have, as their zeroth character, one with non-zero width.

   Font Names
       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:

              /lib/font/bit/name/range.size.font

       where size is approximately the height in pixels of the lower case
       letters (without ascenders or descenders).  Range gives some indication
       of which characters will be available: for example ascii, latin1, euro,
       or unicode.  Euro includes most European languages, punctuation marks,
       the International Phonetic Alphabet, etc., but no Oriental languages.
       Unicode includes every character for which appropriate-sized images exist
       on the system.

       In Plan 9 from User Space, the font files are rooted in $PLAN9/font
       instead of /lib/font/bit, but to keep old references working, paths
       beginning with /lib/font/bit are interpreted as references to the actual
       font directory.

       Fonts need not be stored on disk in the Plan 9 format.  If the font name
       has the form /mnt/font/name/size/font, fontsrv is invoked to synthesize a
       bitmap font from the operating system's installed vector fonts.  The
       command fontsrv -p .  lists the available fonts.  See fontsrv(4) for
       more.

       If the font name has the form scale*fontname, where scale is a small
       decimal integer, the fontname is loaded and then scaled by pixel
       repetition.

       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 fontsrv(4) are automatically doubled in size by varying the
       effective 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.

       For more control over the fonts used on low- and high-density displays,
       if the font name has the form lowfont,highfont, lowfont is used on low-
       density displays and highfont on high-density displays.  In effect, the
       behavior described above is that the font name

              /lib/font/bit/lucsans/euro.8.font

       really means

              /lib/font/bit/lucsans/euro.8.font,2*/lib/font/bit/lucsans/euro.8.font

       and similarly

              /mnt/font/LucidaGrande/15a/font

       really means

              /mnt/font/LucidaGrande/15a/font,/mnt/font/LucidaGrande/30a/font

       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:

              /lib/font/bit/lucsans/euro.8.font,/mnt/font/LucidaGrande/30a/font

FILES
       /font/*
              font directories

SEE ALSO
       graphics(3), draw(3), cachechars(3), subfont(3)



                                                                         FONT(7)