Table of Contents
xfs - X font server
xfs
[ -config configuration_file ] [ -daemon ] [ -droppriv ] [ -inetd ] [ -ls listen_socket
] [ -nodaemon ] [ -port tcp_port ] [ -user username ]
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)
or inetd(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)
.
- -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 oqno-listen = tcpcq 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.
- -inetd
- informs
xfs that it is being started by inetd, and that a listening socket on the
appropriate port is being passed as standard input. Assumes that inetd
is configured to "wait" mode, and will thus allow xfs to handle listening
for and accepting further connections on this port. This allows xfs to
be started on demand when the first font client connects. When using this
option, the -daemon and -port flags are ignored.
- -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 lqConfiguration File Formatrq 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 lqOPTIONSrq section above). The configuration
language is a list of keyword and value pairs. Each keyword is followed
by an equals sign (oq=cq) and then the desired value.
Recognized keywords
include:
- alternate-servers (list of strings)
- lists alternate servers for
this font server. See the lqFONT SERVER NAMESrq 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 oqnonecq,
meaning glyphs deferment is disabled, oqallcq, meaning it is enabled for
all fonts, and oq16cq, 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 oqno-listen = tcpcq.
- 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).
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/fonts/X11/75dpi
ghostscript:pri=60 -> /usr/share/fonts/default/ghostscript
misc:unscaled:pri=10 -> /usr/share/fonts/X11/misc
type1:pri=40 -> /usr/share/fonts/X11/Type1
type1:pri=50 -> /usr/share/fonts/default/Type1
This will add /usr/share/fonts/X11/misc as the first FPE with the attribute
the attribute unscaled etc. This is functionally equivalent to setting
the following font path:
/usr/share/fonts/X11/misc:unscaled,
/usr/share/fonts/X11/75dpi:unscaled,
/usr/share/fonts/X11/Type1,
/usr/share/fonts/default/Type1,
/usr/share/fonts/default/ghostscript
#
# 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/share/fonts/X11/TTF,
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/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
When operating in daemon mode, xfs sends diagnostic messages
(errors and warnings) to the log file specified by the error-file configuration
variable by default. However, these messages can be sent to an alternate
location via the error-file and use-syslog configuration variables; see lqConfiguration
File Formatrq, above.
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.
Multiple catalogues should be
supported.
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 oqfreeze upcq 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.
Dave Lemke, Network Computing Devices,
Inc
Keith Packard, Massachusetts Institute of Technology
X(7)
, xfsinfo(1)
,
fslsfonts(1)
, init(8)
, inetd(8)
, syslog(3)
, The X Font Service Protocol,
Font Server Implementation Overview
Table of Contents