X and the font servers)Strictly speaking, it is not absolutely necessary to set up font servers
to use TrueType fonts with X servers. If you wish to use
static files instead of a font server, please see the instructions for
setting up TrueType fonts for ghostscript.
xfs Font Server
At this point I assume you have a working /etc/X11/XF86Config
file that loads explicitly specifies each directory in the FontPath.
We will convert it to use the xfs Font Server.
XFS
If you have not already done so, install main/binary-*/x11/xfs_*.deb.
XFS
Edit /etc/X11/xfs/config and change the catalogue to
contain the contents of your FontList. You may also wish to
change the default-resolutions value.
/etc/X11/xfs/config
# paths to search for fonts
catalogue =
/usr/X11R6/lib/X11/fonts/100dpi/:unscaled,
/usr/X11R6/lib/X11/fonts/75dpi/:unscaled,
/usr/X11R6/lib/X11/fonts/misc/,
/usr/X11R6/lib/X11/fonts/Speedo/,
/usr/X11R6/lib/X11/fonts/Type1/,
/usr/X11R6/lib/X11/fonts/100dpi/,
/usr/X11R6/lib/X11/fonts/75dpi/
# x1,y1,x2,y2,...
default-resolutions = 100,100,75,75
XFS
Restart XFS in the usual Debian manner:
root shell
# /etc/init.d/xfs restart
XFS is working
Before we change our XF86Config file, we should verify that the xfs
server is working by listing them through the font server:
user shell
$ fslsfonts -server unix/:7100
-adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
....
/etc/X11/XF86Config to use xfs
We're now ready to tell the X server to use the xfs font server.
We keep one static font path as a fallback position in case of a problem
with xfs. (We keep "misc" since it contains fixed, the
default font.)
/etc/X11/XF86Config
Section "Files"
FontPath "unix/:7100"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
EndSection
X
Restart X with startx, unless you like living life dangerously.
If that's the case, name me the beneficiary of your unusually large life
insurance policy and restart xdm.
XFS fonts are visible
Once we have an X session established, we can verify that our server
sees all of the xfs fonts by listing them through the X server.
user shell
$ xlsfonts
-adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
....
xfstt Font Server and installing TrueType fonts
At this point I assume you have a working xfs font server and wish
to add TrueType support via xfstt.
XFSTT
If you have not already done so, install main/binary-*/x11/xfstt_*.deb.
Copy your TrueType fonts into the /usr/share/fonts/truetype
directory. These files usually have a .ttf extension, and they
should have 0444 permissions.
XFSTT Font Server
Restart the xfstt server with the force-reload flag
root shell
# /etc/init.d/xfstt force-reload
XFSTT is working
Before we change our XF86Config file, we should verify that the xfstt
server is working.
Important: the Debian xfstt server listens to
port 7101, not 7100. Also, the default permissions will require you
to run this query as root.
user and root shells
$ fslsfonts -server unix/:7101
_FSTransSocketUNIXConnect: Can't connect: errno = 111
fslsfonts: unable to open server "unix/:7101"
# fslsfonts -server unix/:7101
-ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1
/etc/X11/XF86Config to use xfstt
We're now ready to tell the X server to use the xfstt font server.
We want it to use TrueType fonts in preference to all others.
/etc/X11/XF86Config
Section "Files"
FontPath "unix/:7101"
FontPath "unix/:7100"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
EndSection
XFSTT fonts are visible
Once we have an X session established, we can verify that our server sees all of the TrueType fonts by listing them.
$ xlsfonts | grep ttf
-ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1
....
At this point it should be possible to use a TrueType font in
applications like GIMP, Netscape or StarOffice.
Since most TrueType fonts aren't monospaced you probably don't want
to use one of them with xterm - these programs use monospacing
the size of the largest character cell.
If you are using the xfstt font server, it's trivial to install
additional TrueType fonts.
/usr/share/fonts/truetype/xfs with /etc/init.d/xfs restart
xfstt has the ability to generate multiple font encodings,
provided that the TrueType font contains the necessary glyphs.
To enable fonts other than iso8859-1/unicode-1, you must manually
edit the /etc/init.d/xfstt script:
/etc/init.d/xfstt
- start-stop-daemon --start --quiet --exec $XFSTT -- \
--port $portno --daemon
+ start-stop-daemon --start --quiet --exec $XFSTT -- \
--port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \
--daemon
The recognized encodings in Debian 2.1 are:
The first 128 characters in the iso8859-x encodings is always ASCII.
The windows- fonts embrace and extend iso8859-1 with additional
characters such as "smart quotes." (Since these extensions, such as "smart
quotes" are undefined in iso8859-1, they are usually rendered as
question marks.)
Excellent source for additional information on character set encodings are at
http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html,
http://anubis.dkuug.dk/i18n/ and
http://czyborra.com/charsets/iso8859.html.
I used Unix sockets above, but the standard Debian packages also
configure xfs and xfstt to listen to TCP/IP ports 7100 and
7101, respectively. Access to these ports should be controlled
by the trusted-clients field in /etc/X11/xfs/config,
but this option is not implemented in XFree86 3.3.2.3a.
This means that anyone, anywhere, can connect to your font server.
Since xfs (and presumably xfsts) "clone" to support
more users there's a trivial denial-of-service attack against these
systems. It's probably safe to use the font servers on dialup
lines (since you're present to handle problems), but DSL and cable
modem users should use a firewall.