Fonts
Naming convention: XLFD
Starting with X11 Release 3, fonts have been named using the following
convention:
-foundry-family-weight-slant-setwidth-addstyle-pixels-points-horiz-vert-spacing-avgwidth-rgstry-encoding
This naming convention is known as the "X Logical Font Description",
or XLFD. The fields are defined as follows:
| foundry |
The name of the company that digitized the font. |
| family |
The typeface family - Courier, Times Roman, Helvetica, etc. |
| weight |
The "blackness" of the font - bold, medium, demibold, etc. |
| slant |
The "posture" of the font. "R" for upright, "I" for italic, etc. |
| setwidth |
Typographic proportionate width of the font. |
| addstyle |
Additional typographic style information. |
| pixels |
Size of the font in device-dependent pixels |
| points |
Size of the font in device-independent points |
| horiz |
Horizontal dots-per-inch for which the font was designed. |
| vert |
Vertical dots-per-inch for which the font was designed |
| spacing |
The spacing class of the font. "P" for proportional, "M" for
monospaced, etc |
| avgwidth |
Average width of all glyphs in the font |
| rgstry |
Tells the language the characters conform to. (iso8859 = Latin characters) |
| encoding |
Further language encoding information |
Here's a sample font name. This is the XLFD name for the "fixed"
font.
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
Accessing Fonts
How to access a Font
Each font can be accessed using the full XLFD name, the alias name (if
there is an alias for the font you want), or by wildcarding certain parts
of the XLFD name. For example, if you want to start xterm using the
"6x10" font, you can use any of these commands:
xterm -fn 6x10
xterm -fn -misc-fixed-medium-r-normal--10-100-75-75-c-60-iso8859-1
or possibly by using this command:
xterm -fn "-misc-fixed-*--10-100-*-iso8859-1"
The word possibly is used in the last sentence because the
X server will search through all fonts in the font path, one
by one, until it finds one whose XLFD name matches the wildcarded XLFD
name.
The default font path for the X server is set up in different ways.
For the R3 X server, the file /usr/lib/X11/Xdeffontpath contains
the default font path. For the R5 X server, there is an entry in
/usr/lib/X11/Xconfig
that
gives the font path. For X-stations, the font path is set up in the
config file loaded by the X-station. For R6 X Servers,
there is an entry in /etc/X11/XF86config that gives the font
path.
Determining the Font Path
Fonts are stored in the directory /usr/X11R6/lib/X11/fonts.
There are several directories of fonts here, including misc, 100dpi,
75dpi, pcf, Type1, and 34XX. To find out which fonts your X server
is accessing, you need to find out which directories it is searching for
fonts in. Use the command xset -q to see the "Font Path".
For the R5 X server, the default font path is:
#xset -q
/usr/lib/X11/fonts/pcf/misc/,/usr/lib/X11/fonts/pcf/75dpi/,/usr/lib/X11/fonts/pcf/100dpi/,
/usr/lib/X11/fonts/Speedo/,/usr/lib/X11/fonts/Type1/
For an R6 X server, the default font path is:
#xset -q
/usr/X11R6/lib/X11/fonts/misc:unscaled,/usr/X11R6/lib/X11/fonts/75dpi:unscaled,/usr/X11R6/lib/X11/fonts/100dpi:unscaled,
/usr/X11R6/lib/X11/fonts/Speedo,/usr/X11R6/lib/X11/fonts/Type1,/usr/X11R6/lib/X11/fonts/cyrillic,
/usr/X11R6/lib/X11/fonts/misc,/usr/X11R6/lib/X11/fonts/75dpi,/usr/X11R6/lib/X11/fonts/100dpi
How Fonts are Stored
Each directory in the font path contains font files, along with two special
files: fonts.dir and fonts.alias. The fonts.dir
file's first line contains a number, which tells the number of font
files in that directory, and is followed by a line for each font file in
the following format:
file name XLFD name
The fonts.alias contains lines in the following format:
alias
XLFD name
Font Utilities
xlsfonts
To list all fonts that are available, or to get a listing of all fonts
that match a certain pattern, use the xlsfonts utility. This
utility can also be used to extract detailed information about the font,
including all XLFD properties and other typographic properties.
From the previous example, we can see which font will match the wildcarded
XLFD name:
xlsfonts -fn "-misc-fixed-*--10-100-*-iso8859-1"
returns
-misc-fixed-medium-r-normal--10-100-75-75-c-60-iso8859-1
which is the full name for the "6x10" font after all.
xfontsel
The xfontsel client provides an easy way to choose a font by building
the XLFD font name section by section. Xfontsel pops up a window,
with the 14 XLFD fields each in a button. The user can select settings
for each field, and see what the font that matches the resulting font name
looks like.
xfd
The xfd client displays all the glyphs in a given font. It
also allows the user to choose glyphs one at a time, and displays
the typographic properties of that glyph.
xset
The xset client allows you to change the "font path" to your liking.
To change the font path, use the following command:
xset fp <directory>,<directory>,<directory>...
xset also allows the user to "rehash" the font path. This
causes the X server to re-read each font path directory's fonts.dir and
fonts.alias files, so that missing entries can be made to these files or
extraneous entries can be removed.
xset fp rehash
mkfontdir
If for some reason the "fonts.dir" entry gets corrupted in one of the font
path directories, you can use the mkfontdir utility to re-create
it.
mkfontdir <directory>
However, if the "fonts.alias" file is corrupted, there is no way
to re-create it. You need to copy a good fonts.alias from another
system, and then run xset fp rehash to re-read the alias file.
Font Formats
.bdf Format
The .bdf (Bitmapped Distribution Format) font format is the "source"
version of each font. It is a text file which contains all the XLFD
resource values, along with bitmaps of every glyph in the font.
.snf Format
The .snf (Server Natural Format) font format is the "compiled" version
of each font, which is used by X servers previous to R5. The
fonts are compiled using the bdftosnf format. The .snf font
data must match the architecture of the X server that is using it (bit
and byte order, padding,etc.) A good example of this can be found
here at MCPD-Columbia; the X-Stations we have require a different byte
order than the R3 X server. Thus, we havethe "xstatsup" package,
which contains all the .snf fonts from the "xfonts" package, but in a different
byte order.
.pcf Format
The .pcf (Portable Compiled Format) font format is new for X11 R5
X servers. This format eliminates the architecture-dependent requirements
of the .snf format. All X11 R5 servers and X stations will be able
to use the same versions of .pcf font files.
.spd Format
The .spd (Speedo) fonts are a type of "scalable" font. They
are able to adapt their "pixels", "points", "horiz", "vert", and "avgwidth"
XLFD values to match whatever value is requested by the X server.
Scalable fonts are new to X11R5, and will only work on X11 R5 X servers
and X stations.
.pfa Format
The .pfa (Type1) fonts are another set of scalable fonts.
Font Server
Description
X11R5 provides a "font server". Basically, the font server allows
one or more machines to share all or some of its fonts over the network.
Thus, you won't need to install "xfonts" on systems running the R5 X server;
they can load their fonts over the network from the font server.
Accessing a shared font
To access shared fonts, the following entry needs to be added to the font
path:
tcp/server_name/port_number/:[directory, directory, ...]
When the R5 X server sees an entry beginning with "tcp/" in the font
path, it knows to try to connect to the specified server over the port
given, and
to access the specified directories, if any.
Sharing fonts
The system that shares fonts runs the font server client xfs.
This program reads the file /usr/X11R6/lib/X11/xfs/config.
This file lists the font directories which the server should export.