NAME¶
xfs - X font server
SYNOPSIS¶
xfs [
-config configuration_file ] [
-daemon ] [
-droppriv ] [
-ls listen_socket ] [
-nodaemon ] [
-port tcp_port ] [
-user username ]
DESCRIPTION¶
xfs is the X Window System font server. It supplies fonts to X Window
System display servers. The server is usually run by a system administrator,
and started via
init(8). Users may also wish to start private font
servers for specific sets of fonts.
To connect to a font server, see the documentation for your X server; it likely
supports the syntax documented in the “FONT SERVER NAMES” section
of
X(7).
OPTIONS¶
- -config configuration_file
- specifies the configuration file xfs will use. If
this parameter is not specified, xfs will read its configuration from the
default file, /etc/X11/fs/config.
- -daemon
- instructs xfs to fork and go into the background
automatically at startup. If this option is not specified, xfs will
run as a regular process (unless it was built to daemonize by default).
When running as a daemon, xfs will attempt to create a file in
which it stores its process ID, and will delete that file upon exit;
- -droppriv
- instructs xfs to attempt to run as user and group
xfs (unless the -user option is used). This has been
implemented for security reasons, as xfs may have undiscovered
buffer overflows or other paths for possible exploit, both local and
remote. When using this option, you may also wish to specify
‘no-listen = tcp’ in the config file, which ensures that
xfs will not to use a TCP port at all. By default, xfs runs
with the user and group IDs of the user who invoked it.
- -ls listen_socket
- specifies a file descriptor which is already set up to be
used as the listen socket. This option is only intended to be used by the
font server itself when automatically spawning another copy of itself to
handle additional connections.
- -nodaemon
- instructs xfs not to daemonize (fork and detach from
its controlling terminal). This option only has an effect if xfs is
built to daemonize by default, which is not the stock configuration.
- -port tcp_port
- specifies the TCP port number on which the server will
listen for connections. The default port number is 7100. This option is
ignored if xfs is configured to not listen to TCP transports at all
(see “Configuration File Format” below).
- -user username
- instructs xfs to run as the user username.
See -droppriv for why this may be desired. By default, xfs
runs with the user and group IDs of the user who invoked it.
xfs reads and serves any font file format recognized by the X server
itself. It locates font files through the specification of a
catalogue,
which is declared in
xfs's configuration file.
xfs reads its configuration from a text file (see the
-config
option in the “OPTIONS” section above). The configuration language
is a list of keyword and value pairs. Each keyword is followed by an equals
sign (‘=’) and then the desired value.
Recognized keywords include:
- alternate-servers (list of strings)
- lists alternate servers for this font server. See the
“FONT SERVER NAMES” section of X(7) for the syntax of
the string.
- catalogue (list of strings)
- declares as ordered list of font path element names from
which fonts will be served. The current implementation only supports a
single catalogue ("all") containing all of the specified fonts.
A special directory with symlinks to font paths can be specified using a
catalogue:<dir> entry. See the CATALOGUE DIR section below for
details.
- client-limit (cardinal)
- determines the number of clients this font server will
support before refusing service. This is useful for tuning the load on
each individual font server.
- clone-self (boolean)
- indicates whether this font server should attempt to clone
itself when the number of connected clients reaches the
client-limit.
- default-point-size (cardinal)
- The default pointsize (in decipoints) for font requests
that don't specify a point size. The default is 120.
- default-resolutions (list of
resolutions)
- indicates the resolutions the server supports by default.
This information may be used as a hint for pre-rendering, and substituted
into requests for scaled fonts which do not specify a resolution. A
resolution is a comma-separated pair of horizontal and vertical
resolutions in pixels per inch. Multiple resolutions are separated by
commas.
- deferglyphs (string)
- sets the mode for delayed fetching and caching of glyphs.
string should be one of ‘none’, meaning glyphs
deferment is disabled, ‘all’, meaning it is enabled for all
fonts, and ‘16’, meaning it is enabled only for 16-bit
fonts.
- error-file (string)
- indicates the filename of the error file. All warnings and
errors will be logged here, unless use-syslog is set to a true
value (see below).
- no-listen (trans-type)
- disables the specified transport type. For example, TCP/IP
connections can be disabled with ‘no-listen = tcp’.
- port (cardinal)
- indicates the TCP port on which the server will listen for
connections.
- use-syslog (boolean)
- determines whether errors and diagnostics should be
reported via syslog(3) (on supported systems) instead of being
written to the error-file (see above).
CATALOGUE DIR¶
You can specify a special kind of font path in the form
catalogue:<dir>. The directory specified after the catalogue:
prefix will be scanned for symlinks and each symlink destination will be added
as a local fontfile FPE.
The symlink can be suffixed by attributes such as '
unscaled', which will
be passed through to the underlying fontfile FPE. The only exception is the
newly introduced '
pri' attribute, which will be used for ordering the
font paths specified by the symlinks.
An example configuration:
75dpi:unscaled:pri=20 -> /usr/share/X11/fonts/75dpi
ghostscript:pri=60 -> /usr/share/fonts/default/ghostscript
misc:unscaled:pri=10 -> /usr/share/X11/fonts/misc
type1:pri=40 -> /usr/share/X11/fonts/Type1
type1:pri=50 -> /usr/share/fonts/default/Type1
This will add /usr/share/X11/fonts/misc as the first FPE with the attribute the
attribute unscaled etc. This is functionally equivalent to setting the
following font path:
/usr/share/X11/fonts/misc:unscaled,
/usr/share/X11/fonts/75dpi:unscaled,
/usr/share/X11/fonts/Type1,
/usr/share/fonts/default/Type1,
/usr/share/fonts/default/ghostscript
Example Configuration File¶
#
# sample font server configuration file
#
# allow a max of 10 clients to connect to this font server.
client-limit = 10
# When a font server reaches the above limit, start up a new one.
clone-self = on
# Identify alternate font servers for clients to use.
alternate-servers = hansen:7101,hansen:7102
# Look for fonts in the following directories. The first is a set of
# TrueType outlines, the second is a set of misc bitmaps (such as terminal
# and cursor fonts), and the last is a set of 100dpi bitmaps.
#
catalogue = /usr/X11R6/lib/X11/fonts/TTF,
/usr/X11R6/lib/X11/fonts/misc,
/usr/X11R6/lib/X11/fonts/100dpi/
# in 12 points, decipoints
default-point-size = 120
# 100 x 100 and 75 x 75
default-resolutions = 100,100,75,75
# Specify our log filename.
error-file = /var/log/xfs.log
# Direct diagnostics to our own log file instead of using syslog.
use-syslog = off
OUTPUT FILES¶
When operating in daemon mode,
xfs sends diagnostic messages (errors and
warnings) to the system log via the
syslog C library function by
default. However, these messages can be sent to an alternate location via the
error-file and
use-syslog configuration variables; see
“Configuration File Format”, above.
ASYNCHRONOUS EVENTS¶
xfs handles the following signals specially:
- SIGTERM
- causes the font server to exit cleanly.
- SIGUSR1
- causes xfs to re-read its configuration file.
- SIGUSR2
- causes xfs to flush any cached data it may
have.
- SIGHUP
- causes xfs to reset, closing all active connections
and re-reading the configuration file.
BUGS¶
Multiple catalogues should be supported.
FUTURE DIRECTIONS¶
Significant further development of
xfs is unlikely. One of the original
motivations behind it was the single-threaded nature of the X server — a
user's X session could seem to ‘freeze up’ while the X server took
a moment to rasterize a font. This problem with the X server, which remains
single-threaded in all popular implementations to this day, has been mitigated
on two fronts: machines have gotten much faster, and client-side font
rendering (particularly via the Xft library) is the norm in contemporary
software.
AUTHORS¶
Dave Lemke, Network Computing Devices, Inc
Keith Packard, Massachusetts Institute of Technology
SEE ALSO¶
X(7),
xfsinfo(1),
fslsfonts(1),
init(8),
syslog(3),
The X Font Service Protocol,
Font Server
Implementation Overview