[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
TrueType fonts in X4
There seems to be much confusion on how to get TrueType fonts working
with the new X4 packages. So i'll try to write up some clear directions.
Many thanks to the authors of the XFree86 Font Deuglification Mini HOWTO
(http://www.linuxdoc.org/HOWTO/mini/FDU/), and Kristin Aanestad
(http://home.c2i.net/dark/linux.html#ttf).
1. Get the fonts
I guess Windos is good for something after all. At the least, you might
as well get the Microsoft web fonts, since so many (broken) webpages
use them. You don't even have to run their installer, the downloadables
can be opened with a semi-recent version of WinZip (unfortunately,
Debian's unzip doesn't like the Win32 packages).
The FDU and Kristin's site both list other resources for obtaining
fonts.
2. Name the fonts properly
ttmkfdir doesn't like it if the fonts aren't named all in lowercase.
So, copy them to a case-sensitive filesystem and rename them all. If
you have mmv installed, it's simple:
mmv '*.[Tt][Tt][Ff]' '#l1.ttf'
If you prefer rename:
rename 'y/A-Z/a-z/ if /\.ttf$/i' *
Note that, since FAT/FAT32 are case insensitive, this won't work on
those filesystems!
3. Create the fonts.scale file
fonts.scale is for listing scalable fonts that mkfontdir won't
recognize or won't name properly, because scalable fonts tend not to
contain the X font name. To create this file, you'll need ttmkfdir
(http://freshmeat.net/projects/ttmkfdir). mkttfdir from the fttools
package will work, but it currently won't recognize symbol fonts or any
other font not encoded in iso8859-1, jisx0201.1976-0, or
jisx0208.1983-0.
3.1 Compiling ttmkfdir
You'll need the freetype2 and freetype2-dev packages installed, as
well as the standard C compilation tools. You'll also have to edit the
provided Makefile to change these variables to the given values:
FREETYPE_BASE=/usr/include/freetype
FREETYPE_INCL=$(FREETYPE_BASE)
FREETYPE_LIB=-L/usr/lib -lttf
3.2 Running ttmkfdir
cd to the directory with your TrueType fonts, and run this command (of
course, use your actual path):
/path/to/ttmkfdir -o fonts.scale
4. Sorting fonts.scale properly (more or less)
ttmkfdir currently puts the fonts in a somewhat backwards order. So,
we'll run a perl script over things to put it right.
perl -we 'open X, "<fonts.scale" or die;
%h=(); $n=<X>;
while(<X>){
/^(\S+\.ttf)/; unshift @{$h{$1}}, $_;
}
open X, ">fonts.scale" or die;
print X $n;
for $x (sort keys %h){ %print %X %@{$h{$x}}; }'
This basically puts the fonts in alphabetical order by filename, and
reverses the order of the encodings, since most people would rather
have iso8859-1 first instead of last.
5. Make fonts.dir
Since we have fonts.scale, this is easy:
mkfontdir
6. Make fonts.alias
Some applications (notably Netscape) will only give you one size option
for the TrueType fonts, which somewhat defeats the purpose. Download
mkfontalias.py from Kristin's site and run it. If you'd like to
eliminate all except iso8859-1 encoding, you can then run this command
over the new fonts.alias file:
perl -i -nwe '/iso8859-1\D/ and print' fonts.alias
7. Add the path
7.1 /etc/X11/XF86Config-4
Add a FontPath line for the new directory, and either restart X or use
xset to adjust the font path for the current session.
7.2 /etc/X11/fs/config
Add the path to the catalogue line, and run "/etc/init.d/xfs reload"
to make the changes take effect.
8. Miscellaneous
Note that the TrueType fonts will show up under the foundry listed by
the font, or "misc" if ttmkfdir can't determine. This may represent a
change, since some xfstt implementations had reported all TrueTypes as
being in the 'ttf' foundry.
HTH
--
finger for GPG public key.
PGP signature