xfs [ -config configuration_file ] [ -daemon ] [
  -droppriv ] [ -inetd ] [ -ls listen_socket ] [
  -nodaemon ] [ -port tcp_port ] [ -user
  username ] [ -version ]
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 ‘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.
- -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
      “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.
- -version
- instructs xfs to print the program version and exit.
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).
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
 #
 # 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/X11/fonts/TTF,
             /usr/share/X11/fonts/misc,
             /usr/share/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
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 “Configuration File Format”, 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 ‘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.
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