.TH SUBFONT 3
.SH NAME
allocsubfont, freesubfont, installsubfont, lookupsubfont, uninstallsubfont, subfontname, readsubfont, readsubfonti, writesubfont, stringsubfont, strsubfontwidth, mkfont \- subfont manipulation
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <draw.h>
.PP
.ta \w'\fLSubfont* 'u
.B
Subfont*	allocsubfont(char *name, int n, int height, int ascent,
.br
.B
	Fontchar *info, Image *i)
.PP
.B
void	freesubfont(Subfont *f)
.PP
.B
void	installsubfont(char *name, Subfont *f)
.PP
.B
Subfont*	lookupsubfont(Subfont *f)
.PP
.B
void	uninstallsubfont(Subfont *f)
.PP
.B
Subfont*	readsubfont(Display *d, char *name, int fd, int dolock)
.PP
.B
Subfont*	readsubfonti(Display *d, char *name, int fd, Image *im,
.br
.B
	  int dolock)
.PP
.B
int	writesubfont(int fd, Subfont *f)
.PP
.B
Point	stringsubfont(Image *dst, Point p, Image *src,
.br
.B
	Subfont *f, char *str)
.PP
.B
Point	strsubfontwidth(Subfont *f, char *s)
.PP
.B
Font*	mkfont(Subfont *f, Rune min)
.SH DESCRIPTION
Subfonts are the components of fonts that hold the character images.
A font comprises an array of subfonts; see
.IR cachechars (3).
A new
.B Subfont
is allocated and initialized with
.IR allocsubfont .
See
.IR cachechars (3)
for the meaning of
.IR n ,
.IR height ,
.IR ascent ,
and
.IR info ,
and the arrangement of characters in
image
.IR i .
The
.I name
is used to identify the subfont in the subfont cache; see the descriptions
.I lookupsubfont
and
.IR installsubfont
.RI ( q.v. ).
The appropriate fields of the returned
.B Subfont
structure are set to
the passed arguments, and the image is registered as a subfont
with the graphics device
.IR draw (3).
.I Allocsubfont
returns 0 on failure.
.PP
.I Freesubfont
frees a subfont and all its associated structure including the
associated image.
Since
.I freesbufont
calls
.I free
on
.BR f->info ,
if
.B f->info
was not allocated by
.IR malloc (3)
it should be zeroed before calling
.IR subffree .
.PP
A number of subfonts are kept in external files.
The convention for naming subfont files is:
.IP
.B \*9/font/\fIname\fP/\fIclass\fP.\fIsize\fP.\fIdepth
.PD
.PP
where
.I size
is approximately the height in pixels of the lower case letters
(without ascenders or descenders).
If there is only one version of the subfont, the
.BI \&. depth
extension is elided.
.I Class
describes the range of runes encoded in the subfont:
.BR ascii ,
.BR latin1 ,
.BR greek ,
etc.
.PP
Subfonts are cached within the program, so a subfont shared between fonts will be loaded only once.
.I Installsubfont
stores subfont
.I f
under the given
.IR name ,
typically the file name from which it was read.
.I Uninstallsubfont
removes the subfont from the cache.
Finally,
.I lookupsubfont
searches for  a subfont with the given
.I name
in the cache and returns it, or nil if no such subfont exists.
.PP
.I Subfontname
is used to locate subfonts given their names within the fonts.
The default version constructs a name given the
.IR cfname ,
its name within the font,
.IR fname ,
the name of the font, and the maximum depth suitable for this subfont.
This interface allows a partially specified name within a font to be resolved
at run-time to the name of a file holding a suitable subfont.
Although it is principally a routine internal to the library,
.I subfontname
may be substituted by the application to provide a less file-oriented subfont naming scheme.
.PP
The format of a subfont file is described in
.IR font (7).
Briefly, it contains a image with all the characters in it,
followed by a subfont header, followed by character information.
.I Readsubfont
reads a subfont from the file descriptor
.IR fd .
The
.I name
is used to identify the font in the cache.
The
.I dolock
argument specifies whether the routine should synchronize
use of the
.I Display
with other processes; for single-threaded applications it may
always be zero.
.I Readsubfonti
does the same for a subfont whose associated image is already in memory; it is passed as the
argument
.IR im .
In other words,
.I readsubfonti
reads only the header and character information from the file descriptor.
.PP
.I Writesubfont
writes on
.I fd
the part of a subfont file that comes after the image.  It should be preceded by
a call to
.IR writeimage
(see
.IR allocimage (3)).
.PP
.I Stringsubfont
is analogous to
.B string
(see
.IR draw (3))
for subfonts.  Rather than use the underlying font caching primitives,
it calls
.B draw
for each character.
It is intended for stand-alone environments such as operating system kernels.
.I Strsubfontwidth
returns the width of the string
.I s
in
as it would appear if drawn with
.I stringsubfont
in
.B Subfont
.BR f .
.PP
.I Mkfont
takes as argument a
.B Subfont
.I s
and returns a pointer to a 
.B Font
that maps the character images in
.I s
into the
.B Runes
.I min
to
.IB min + s ->n-1\f1.
.SH FILES
.TF \*9/font
.TP
.B \*9/font
bitmap font file tree
.SH SOURCE
.B \*9/src/libdraw
.SH SEE ALSO
.IR graphics (3),
.IR allocimage (3),
.IR draw (3),
.IR cachechars (3),
.IR image (7),
.IR font (7)
.SH DIAGNOSTICS
All of the functions use the graphics error function (see
.IR graphics (3)).
