There is one
font-name-directory<%> object:
the-font-name-directory. It implements the mapping from font
specifications (face, family, style, and weight) to information for
rendering text on a specific device. The mapping is different for
each platform. For example, when drawing to a bitmap in Windows, the
rendering information is simply the name of a Windows font. When
drawing to a PostScript file, the rendering information is a
PostScript font name, which encapsulates the style and weight. When
drawing to a bitmap in X, the rendering information is an X font
string, which encapsulates the style and weight, parameterized over
the size (using a “%d” placeholder).
Programmers rarely need to directly invoke methods of
the-font-name-directory. It is used automatically when
drawing text to a dc<%> object. Nevertheless,
the-font-name-directory is available so that programmers can
query or modify the mapping manually. A programmer may also need to
understand how the face-and-family mapping works.
To extract mapping information from the-font-name-directory,
first obtain a font ID, which is an index based on a family
and optional face string. Font IDs are returned by
find-or-create-font-id and
get-font-id . A Font ID can be
combined with a weight and style to obtain a specific mapping value
via get-screen-name or
get-post-script-name.
For a family without a face string, the corresponding font ID has a
useful built-in mapping for every platform and device. (The built-in
mapping can be overridden through the user’s preferences; see
Font Configuration for information.) For a family with a
face string, the-font-name-directory interprets the string
(in a platform-specific way) to generate a mapping for “screen”
drawing (to a canvas’s dc<%>, a bitmap-dc%, or a
printer-dc%). When drawing to a post-script-dc%
object, the face-specific mapping defaults to the family’s mapping.
Under Windows and Mac OS X, a face name is interpreted simply as a
system font name for drawing to the screen, bitmap, or printer. The
mapping succeeds if the system provides a font with the given name,
and fails otherwise. For example, under Windows, "MS Sans\n Serif" maps to the font that is typically used for button
labels. Under X, a face name has a more complex interpretation:
If the string begins with a space, then the remainder of the
string is interpreted as a fontconfig/Xft font name, but only
if fontconfig/Xft support is enabled at compile time (which is
the default when available), and only if the RENDER extension
is available at run time. Multiple fontconfig/Xft font names
can appear after the initial space, separated by commas; the
first available font is used to draw text, and later fonts are
substituted for missing characters in earlier fonts.
If the string begins with +, then the remainder of the
string is interpreted as an X font name. These names are
usually long, such as
+-b&h-lucidatypewriter-medium-r-normal-sans-24-240-75-75-m-140-iso8859-1.
As usual for X font names, asterisks may appear in the string
as wildcards. Furthermore, the size of the font can be
parameterized by using %d in the place of a specific
point size; if an asterisk appears in place of the pixel size,
the asterisk and %d are swapped when the font size is
specified in pixels (otherwise the size is always interpreted
as points). For rotated text, %d will be replaced by
a transformation matrix.
A string of the form
-‹provider›-‹font› is
equivalent to
+-‹provider›-‹font›-‹weight›-‹style›-normal-*-*-%d-*-*-*-*-*-*,
where ‹weight› is either medium,
light, or bold (depending on the requested
weight mapping) and ‹style› is either r,
i, or i (depending on the requested style
mapping).
A string of the form -‹font› is
equivalent to -*-‹font›.
A string of any other format is interpreted as an X font name,
optionally parameterized with %d.
The mapping for face names can be overridden (on all platforms)
through the user’s preferences, as described in
Font Configuration.
Gets the font ID representing the default font for a family. See
font% for information about font families.
Gets the face name for a font ID, initializing the mapping for
the face name if necessary.
Font ID are useful only as mapping indices for
the-font-name-directory.
Gets the face name for a font ID. If the font ID corresponds to
the default font for a particular family, #f is returned.
Gets the family for a font ID. See
font% for information about font families.
Gets the font ID for a face name paired with a default family. If the
mapping for the given pair is not already initialized,
0 is
returned. See also
find-or-create-font-id.
Font ID are useful only as mapping indices for
the-font-name-directory.
Gets a PostScript font name for a font ID, weight, and style
combination. The PostScript font name is used both for the font name
in PostScript output (sans character set) and as the Adobe Font Metrics file
name; see also
PostScript Fonts.
See font% for information about weight and
style.
Gets a platform-dependent screen font name (used for drawing to a
canvas’s
dc<%>, a
bitmap-dc%, or a
printer-dc%) for a font ID, weight, and style combination.
See font% for information about weight and
style.
Sets a PostScript font name for a font ID, weight, and style
combination. See also
get-post-script-name.
See font% for information about weight and style.
Sets a platform-dependent screen font name (used for drawing to a
canvas’s
dc<%>, a
bitmap-dc%, or a
printer-dc%) for a font ID, weight, and style combination.
Under X, if the screen name contains %d, it is replaced by
the size of the font (point size times 10) to obtain the full screen
font name.
See
font% for information about
weight and
style.