#  Copyright (c) 1990-1992 The Regents of the University of California.
#  Copyright (c) 1994-1996 Sun Microsystems, Inc.
#  See the file "license.terms" for information on usage and redistribution
#  of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
#

=head1 NAME

Tk_GetFont, Tk_NameOfFont, Tk_FreeFont - maintain database of fonts

=for category C Programming

=head1 SYNOPSIS

B<#include E<lt>tk.hE<gt>>

Tk_Font
B<Tk_GetFont(>I<interp, tkwin, string>B<)>

char *
B<Tk_NameOfFont(>I<tkfont>B<)>

void
B<Tk_FreeFont(>I<tkfont>B<)>

=head1 ARGUMENTS

=over 4

=item "Tcl_Interp" *interp (in)

Interpreter to use for error reporting.

=item Tk_Window tkwin (in)

Token for window on the display in which font will be used.

=item "const char" *string (in)

Name or description of desired font.  See documentation for the B<font>
command for details on acceptable formats.

=item Tk_Font tkfont (in)

Opaque font token.

=back

=head1 DESCRIPTION

B<Tk_GetFont> finds the font indicated by I<string> and returns a
token that represents the font.  The return value can be used in subsequent
calls to procedures such as B<Tk_FontMetrics>, B<Tk_MeasureChars>, and
B<Tk_FreeFont>.  The token returned by B<Tk_GetFont> will remain
valid until B<Tk_FreeFont> is called to release it.  I<String> can
be either a symbolic name or a font description; see the documentation for
the B<font> command for a description of the valid formats.  If
B<Tk_GetFont> is unsuccessful (because, for example, I<string> was
not a valid font specification) then it returns B<NULL> and stores an
error message in I<interp-E<gt>result>.

B<Tk_GetFont> maintains a database of all fonts it has allocated.  If
the same I<string> is requested multiple times (e.g. by different
windows or for different purposes), then additional calls for the same
I<string> will be handled without involving the platform-specific
graphics server.

The procedure B<Tk_NameOfFont> is roughly the inverse of
B<Tk_GetFont>.  Given a I<tkfont> that was created by
B<Tk_GetFont>, the return value is the I<string> argument that was
passed to B<Tk_GetFont> to create the font.  The string returned by
B<Tk_NameOfFont> is only guaranteed to persist until the I<tkfont>
is deleted.  The caller must not modify this string.

When a font returned by B<Tk_GetFont> is no longer needed,
B<Tk_FreeFont> should be called to release it.  There should be
exactly one call to B<Tk_FreeFont> for each call to B<Tk_GetFont>.
When a font is no longer in use anywhere (i.e. it has been freed as many
times as it has been gotten) B<Tk_FreeFont> will release any
platform-specific storage and delete it from the database.

=head1 KEYWORDS

font
