mirror of https://github.com/tLDP/LDP
4308 lines
125 KiB
Plaintext
4308 lines
125 KiB
Plaintext
|
<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
|
|||
|
|
|||
|
<Article id="index">
|
|||
|
|
|||
|
<ArtHeader>
|
|||
|
|
|||
|
<Title>XFree86 Font De-uglification HOWTO</Title>
|
|||
|
|
|||
|
<AuthorGroup>
|
|||
|
<Author>
|
|||
|
<Firstname>Hal</Firstname>
|
|||
|
<Surname>Burgiss</Surname>
|
|||
|
<Affiliation>
|
|||
|
<Address>
|
|||
|
<Email>hal@foobox.net</Email>
|
|||
|
</Address>
|
|||
|
</Affiliation>
|
|||
|
</Author>
|
|||
|
|
|||
|
</AuthorGroup>
|
|||
|
|
|||
|
<!--
|
|||
|
$Id: FDU.sgml,v 1.15 2002/10/31 21:40:58 hal Exp $
|
|||
|
-->
|
|||
|
|
|||
|
<PubDate>v2.04c, 30 October 2002</PubDate>
|
|||
|
|
|||
|
<!--
|
|||
|
<RevHistory>
|
|||
|
<Revision>
|
|||
|
<RevNumber>v2.00</RevNumber>
|
|||
|
<Date>2002-09-10</Date>
|
|||
|
<Authorinitials>hb</Authorinitials>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v0.1</RevNumber>
|
|||
|
<Date>21 February 1999</Date>
|
|||
|
<Authorinitials>dh</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
First release.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v0.11</RevNumber>
|
|||
|
<Date>27 February 1999</Date>
|
|||
|
<Authorinitials>dh</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
Added copyright info to protect my butt.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v0.12</RevNumber>
|
|||
|
<Date>10 June 1999</Date>
|
|||
|
<Authorinitials>dh</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
Added A Plea for Help.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v0.20</RevNumber>
|
|||
|
<Date>14 September 1999</Date>
|
|||
|
<Authorinitials>dh</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
Added section on xfs for Redhatters. Many
|
|||
|
thanks to Hal Burgiss for his contribution.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v1.0</RevNumber>
|
|||
|
<Date>23 November 1999</Date>
|
|||
|
<Authorinitials>dh</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
Converted document to SGML, for submission to the Linux Documentation
|
|||
|
Project. Removed Plea for Help.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
<Revision>
|
|||
|
<RevNumber>v1.5</RevNumber>
|
|||
|
<Date>25 July 2000</Date>
|
|||
|
<Authorinitials>hb</Authorinitials>
|
|||
|
<RevRemark>
|
|||
|
New sections, and various additions and cleanups.
|
|||
|
</RevRemark>
|
|||
|
</Revision>
|
|||
|
|
|||
|
</RevHistory>
|
|||
|
-->
|
|||
|
|
|||
|
<KeywordSet>
|
|||
|
<Keyword>
|
|||
|
Font
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
TrueType
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
xfs
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
xfsft
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
XFree
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
X Windows
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
xfstt
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
freetype
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
Netscape
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
Mozilla
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
legible
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
Anti Aliasing
|
|||
|
</Keyword>
|
|||
|
<Keyword>
|
|||
|
XftConfig
|
|||
|
</Keyword>
|
|||
|
</KeywordSet>
|
|||
|
|
|||
|
|
|||
|
<Abstract>
|
|||
|
<Para>
|
|||
|
How to improve X Window fonts. Various tips for improving font handling for
|
|||
|
XFree86, including sections on font servers, TrueType fonts, Mozilla, and
|
|||
|
related topics.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Comment>
|
|||
|
|
|||
|
|
|||
|
Modify 'New Versions Section'!!!!!!!!!!!!!!!!
|
|||
|
Remove my xfs!!!!!!!!!!!!!!
|
|||
|
|
|||
|
aspell -H -c FDU.sgml
|
|||
|
submit@linuxdoc.org
|
|||
|
http://feenix.burgiss.net/ldp/fdu/FDU.sgml.gz
|
|||
|
=================================================
|
|||
|
ToDo
|
|||
|
RENDER not required for Xft2!!!
|
|||
|
|
|||
|
Changes 2.04:
|
|||
|
TrueType hinting
|
|||
|
http://www.xfree86.org/current/fonts.html (julius)
|
|||
|
http://www.theregister.co.uk/content/4/27788.html (TT / freetype)
|
|||
|
|
|||
|
|
|||
|
Mike Harris:
|
|||
|
|
|||
|
|
|||
|
Xft1 (1.1), included with XFree86 stock sources uses XftConfig.
|
|||
|
Keith Packard took the Xft1 library, enhanced it to use
|
|||
|
fontconfig instead of XftConfig, removed the XftConfig baggage,
|
|||
|
and released it as Xft 1.2 - a drop in replacement for Xft 1.x
|
|||
|
for XFree86 4.2.0. So, what you get in Red Hat Linux 8.0, is the
|
|||
|
Xft 1.1 library is gone, now replaced with Keith Packard's
|
|||
|
official Xft 1.2 library which uses fontconfig. This allows Xft
|
|||
|
to use one configuration file - /etc/fonts/fonts.conf, and
|
|||
|
/etc/X11/XftConfig is now obsolete, and gone. Xft2 is a separate
|
|||
|
RPM (Xft) because it was much easier to have it a separate RPM
|
|||
|
package to update it quickly and easily without updating XFree86
|
|||
|
packages every snapshot, as it was in development during Red Hat
|
|||
|
Linux development. Having it separate made it ultra simple to
|
|||
|
update, and makes no difference to the end user.
|
|||
|
|
|||
|
|
|||
|
Correct. Xft1 development is intentionally not supported, as
|
|||
|
Xft1 is considered legacy now. Qt is the main thing that used
|
|||
|
Xft1, very few other things ever used it, and Qt now uses Xft2.
|
|||
|
Supporting Xft1 for development when so few apps use it, is a
|
|||
|
waste of time, and only holds back the widespread adoption of
|
|||
|
Xft2. Xft2 is a significant improvement over Xft1, so the hope is
|
|||
|
that any interesting applications will be ported to Xft2 properly
|
|||
|
by their authors. Existing apps using Xft1 should run ok in 8.0
|
|||
|
since the fontconfigized Xft1 makes configuration centralized,
|
|||
|
while allowing precompiled Xft1 apps to continue to work. 1 such
|
|||
|
app is xterm. 8.0 is a major new release, so ditching legacy
|
|||
|
stuff, especially which not a lot of things use anyway is a good
|
|||
|
time to do it. This will again as I said, put a fire under
|
|||
|
everyone out there to port there Xft1 stuff to Xft2.
|
|||
|
|
|||
|
[more]
|
|||
|
|
|||
|
|
|||
|
There are two font subsystems, the old one is 15-20 years old and
|
|||
|
is referred to as "core X fonts"; these are classic X Window System
|
|||
|
fonts. To install new fonts for this, instructions should be easy to
|
|||
|
google up, it involves putting the fonts in a system directory and
|
|||
|
running ttmkfdir and restarting the "xfs" font server. Core X fonts
|
|||
|
have these properties:
|
|||
|
|
|||
|
- they are server-side, handled by the X server and xfs
|
|||
|
- they are always monochrome (not antialiased)
|
|||
|
- they have annoying names like "-urw-nimbus roman no9 l-medium-i-normal--0-0-0-0-p-0-iso8859-1"
|
|||
|
|
|||
|
The new font subsystem is being phased in to replace it. The new one
|
|||
|
is called "fontconfig/Xft2" where fontconfig is the part that parses
|
|||
|
/etc/fonts/fonts.conf and scans your ~/.fonts and /usr/share/fonts
|
|||
|
directories, and Xft2 is the part that draws fonts on the screen.
|
|||
|
|
|||
|
|
|||
|
- these fonts are client-side, handled by the application
|
|||
|
- they can be used for printing etc. in addition to
|
|||
|
display on the screen
|
|||
|
- they can be rendered antialiased or not, as in Preferences->Fonts
|
|||
|
rendering tweaks
|
|||
|
- they have sane names like "Nimbus Sans"
|
|||
|
|
|||
|
So anyhow, we are currently in a transition period. Some applications,
|
|||
|
namely those using Qt 3 or GTK 2, use the new system. Other
|
|||
|
applications, most of the rest, use the old system. You have to
|
|||
|
install the fonts once for each system.
|
|||
|
|
|||
|
Over time (for the most part we hope by the next release), everything
|
|||
|
will move to the new system.
|
|||
|
|
|||
|
(Someone add this post to a FAQ somewhere! ;-)
|
|||
|
|
|||
|
Havoc
|
|||
|
|
|||
|
Links:
|
|||
|
|
|||
|
|
|||
|
http://fontconfig.org/ and
|
|||
|
|
|||
|
http://fontconfig.org/mozilla/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Submitted: 2.01 Oct 3, 2002
|
|||
|
Notes on better browsers than NS.
|
|||
|
Mozilla/xft
|
|||
|
http://sourceforge.net/projects/font-tool/ Michael Fratoni
|
|||
|
|
|||
|
Submitted 2.00 09/12/02
|
|||
|
|
|||
|
Changes 1.99pre
|
|||
|
No more MS web fonts!!:
|
|||
|
http://unixlab.cs.put.poznan.pl/pub/Windows/TTF-fonts/
|
|||
|
Fixed http://gongolo.usr.dsi.unimi.it/~vigna/webFonts4Linux/
|
|||
|
More on gdkxft, and AA.
|
|||
|
More on Mozilla, userChrome.css, etc.
|
|||
|
Touch up AbiSuite font issue.
|
|||
|
Add Linus's usenet quote.
|
|||
|
Comments on GNOME2.
|
|||
|
Perl script for fonts.alias.
|
|||
|
Improve the dpi section, and ad tip from Alex Jacques.
|
|||
|
Some rewording of the TrueType section.
|
|||
|
|
|||
|
TODO:
|
|||
|
|
|||
|
<![CDATA[
|
|||
|
|
|||
|
type1inst (for type 1 fonts): 5.1 Type1. Adding Type1 fonts is
|
|||
|
straightforward. Run type1inst on the directory containing the font. type1inst
|
|||
|
will output a file called Fontmap . ...
|
|||
|
linuxselfhelp.com/HOWTO/Font-HOWTO-5.html
|
|||
|
|
|||
|
From: Juliusz Chroboczek <jch@pps.jussieu.fr>
|
|||
|
Date: Sun, 6 Oct 2002 19:05:42 +0200 (CEST)
|
|||
|
Subject: De-uglification: XFree86 changes advance warning
|
|||
|
To: hal@foobox.net
|
|||
|
|
|||
|
XFree86 4.3.0 will include a new utility, mkfontscale, which creates
|
|||
|
fonts.scale files for both TrueType and Type 1 fonts, just like
|
|||
|
ttmkfdir does for TrueType fonts.
|
|||
|
|
|||
|
You'll find pre-release versions of mkfontscale on
|
|||
|
|
|||
|
http://www.pps.jussieu.fr/~jch/software/files/
|
|||
|
|
|||
|
Regards,
|
|||
|
|
|||
|
Juliusz
|
|||
|
|
|||
|
|
|||
|
Alex Jacques <alexj@pulver.com>:
|
|||
|
xdpyinfo|grep resolution
|
|||
|
|
|||
|
indicated 88x91 dpi. Seems that horiz. and vert. resolution not being
|
|||
|
the same caused the problem. 88 or 91 is about the right resolution for
|
|||
|
my setup, hence I'd never bothered to configure it manually. Explicitly
|
|||
|
telling the X server -dpi 91 fixed it completely (I now get
|
|||
|
xdpyinfo|grep resolution => 91x91).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
http://www.tuxfan.homeip.net:8080/core_fonts-0.1-3.noarch.rpm
|
|||
|
|
|||
|
I found the fonts in several locations:
|
|||
|
http://unixlab.cs.put.poznan.pl/pub/Windows/TTF-fonts/
|
|||
|
http://nuoriso.hel.fi/__files/ms_truetype_core_fonts_for_the_web/Win95-98-NT/ index.html
|
|||
|
http://web.archive.org/web/20000420210719/http://www.microsoft.com/opentype/ fontpack/default.htm
|
|||
|
Time to modify xf86ttfontool again, I think.
|
|||
|
|
|||
|
More reading here:
|
|||
|
http://www.kottke.org/02/08/020813the_case_of_.html
|
|||
|
|
|||
|
And even a MS explination of sorts:
|
|||
|
http://typographi.ca/2002_08_13.php#000428
|
|||
|
|
|||
|
|
|||
|
|
|||
|
]]>
|
|||
|
|
|||
|
|
|||
|
Submitted 1.9 Mon 11/05/01 10:48:43 AM
|
|||
|
Todo 1.9
|
|||
|
ftlint (freetype) checks for bad fonts.
|
|||
|
|
|||
|
Changes 1.9
|
|||
|
Added 2 URLs for Debian config from Paul Smith.
|
|||
|
Added note about RH adding mkfontdir, etc to init script.
|
|||
|
Changes for distros now handling font servers in several places, and
|
|||
|
ways to dl/install MS TTF.
|
|||
|
|
|||
|
======================
|
|||
|
|
|||
|
Changes 1.8
|
|||
|
Different URL for webfonts. Old one is broke.
|
|||
|
Added the Debian msttcorefonts link.
|
|||
|
Added nice AA/Xft section from Danny Tholen D.J.H.Tholen@bio.uu.nl
|
|||
|
Gave full URL for MS fonts for text version.
|
|||
|
Minor change to intro.
|
|||
|
Added note on Abisuite ugly fonts
|
|||
|
Added URL for webFonts4Linux
|
|||
|
Added Kristen's Mozilla FAQ URL.
|
|||
|
|
|||
|
</Comment>
|
|||
|
</Para>
|
|||
|
|
|||
|
</Abstract>
|
|||
|
|
|||
|
</ArtHeader>
|
|||
|
|
|||
|
|
|||
|
<!-- end Art. header -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<Sect1 id="intro">
|
|||
|
<Title>Introduction</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
An often heard complaint is the poor default fonts and font settings of X as
|
|||
|
implemented by many Linux distributions. Some programs use fixed width
|
|||
|
default fonts when a variable width font would be more appropriate. Other
|
|||
|
programs use fonts that are so small as to be practically unreadable. Many of
|
|||
|
the fonts that are bundled with XFree86 are not of the same quality as found
|
|||
|
on some other platforms. XFree86 does come with a halfway decent courier
|
|||
|
font, but its Times and Helvetica fonts are simple bitmap fonts that pixelize
|
|||
|
when scaled. This is changing for the better recently, but a default Linux
|
|||
|
desktop still often needs some tweaking to get the best fonts possible.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
This HOWTO attempts to show how to adjust various font settings, install new
|
|||
|
fonts, and a few other things that should greatly improve the appearance and
|
|||
|
readability of fonts on the X Window Desktop. This is done by adjusting the
|
|||
|
<Literal>FontPath</Literal> in the <FileName>XF86Config</FileName> file, by
|
|||
|
adding switches to X server command line in <Command>startx</Command> or
|
|||
|
<Command>xdm</Command> (and variants), by adding new fonts, and by
|
|||
|
making sure TrueType fonts are installed and available. TrueType does
|
|||
|
indeed make a huge difference in many applications.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
Comments, corrections, additions and critiques are always welcome. You can
|
|||
|
reach the author at <email>hal@foobox.net</email>. Contributions are also
|
|||
|
welcomed. Especially anyone who really stays current with KDE and/or GNOME
|
|||
|
issues! (So I guess nobody uses these since the silence is deafening?)
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Conventions Used in this Document</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<ItemizedList>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
<quote>X</quote> and <quote>XFree86</quote> are (incorrectly) used
|
|||
|
here interchangably. The overwhelming percentage of Linux users indeed
|
|||
|
use XFree86.org's X implementation, but there are other implentations
|
|||
|
as well. The information here probably does not apply to those others in
|
|||
|
most cases.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Where examples of commands are used, a <quote>#</quote> character is used to
|
|||
|
denote where typically the command would be run as the root user. A
|
|||
|
<quote>$</quote> is used where typically a non-root user would be executing
|
|||
|
the command.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The examples use <FileName>/usr/local/share/fonts/ttfonts</FileName> as our
|
|||
|
TrueType font directory. There is no magic to this location, and could
|
|||
|
conceivably just as well be in any number of other locations. Some
|
|||
|
distros may have a default location for TrueType fonts, and you may
|
|||
|
want to use that instead.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
References to "xfs" are to the xfs as packaged by Red Hat (and some other
|
|||
|
distros) for versions 6.x and later. This differs significantly in some
|
|||
|
respects from the stock XFree86 xfs.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
References to "Netscape" are to the entire suite of programs from Netscape:
|
|||
|
Communicator, Navigator, Messenger, etc. And for all intents and purposes,
|
|||
|
font configuration in Mozilla is very similar (but generally looks
|
|||
|
better!).
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
'XF86Config' is the X configuration file. This has changed to
|
|||
|
'XF86Config-4' for XFree86 v4.x. For the most part, we'll just use
|
|||
|
'XF86Config' here.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Also, while some aspects of XFree86 4.x configuration are the same as
|
|||
|
3.3.x, there are some significant differences. We'll only highlight the
|
|||
|
differences. So unless noted otherwise, any comments or examples should
|
|||
|
apply to both 3.3.x and 4.x versions.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
File system layout varies somewhat from distribution to distribution. It
|
|||
|
is impossible to stay on top of every conceivable variation of who keeps
|
|||
|
which files where. So take the examples here with a grain of salt if the
|
|||
|
PATHs don't seem to match your system.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Change Log and What's New</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
|
|||
|
<ItemizedList>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
2.04: October 30, 2002.
|
|||
|
Include info on TrueType <quote>hinting</quote>, and enabling in
|
|||
|
freetype sources (thanks Andreas Oesterhelt!). A few new useful links,
|
|||
|
and minor cleanups.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
If this keeps up, this document will have to be renamed the
|
|||
|
<citetitle>Font Beautification HOWTO</citetitle> ;-).
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
2.03: October 17, 2002.
|
|||
|
Some brief notes on Red Hat 8.0 differences/newness, notably the changes
|
|||
|
that accompany Xft2. More on the distinction of core X fonts and Xft (and
|
|||
|
then Xft2).
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
2.01: October 03, 2002.
|
|||
|
Update links for obtaining the MS web fonts (TrueType fonts of choice).
|
|||
|
There are two <ulink url="http://sf.net">Sourceforge</ulink> projects
|
|||
|
with these fonts available, including.
|
|||
|
<ulink url="http://sourceforge.net/projects/font-tool/">http://sourceforge.net/projects/font-tool/</ulink>.
|
|||
|
</Para>
|
|||
|
<para>
|
|||
|
Add section to <link linkend="mozilla">Mozilla</link> configuration to
|
|||
|
include info on Xft and anti-aliasing.
|
|||
|
</para>
|
|||
|
</ListItem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
2.00: September 12, 2002.
|
|||
|
Wow, MS has taken down their webfonts page :( Not good news. Installing
|
|||
|
TrueType is a key ingredient to better living through nice fonts.
|
|||
|
</Para>
|
|||
|
<para>
|
|||
|
Major re-organization by moving the font server section to the appendix,
|
|||
|
since any recent distro is already installing these, or they are
|
|||
|
not any longer needed.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Some clarifications on gdkxft and font anti-aliasing. Finally, add
|
|||
|
Aristotle Pagaltzis's perl script for converting <filename>fonts.dir</filename>
|
|||
|
to <filename>fonts.alias</filename>. Include interesting example
|
|||
|
of using anti-aliased TrueType fonts in <command>xterm</command>.
|
|||
|
Note that GNOME 2 is out. Fix the usual assorted broken links.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Clarifications on <literal>dpi</literal> settings, and add tip
|
|||
|
about unbalanced dpi causing major trouble with fonts.
|
|||
|
</para>
|
|||
|
</ListItem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
1.95: February 11, 2002. A few corrections. Removed the section on Fonts in
|
|||
|
KDE since this has to have changed, and I don't know anything about KDE
|
|||
|
(does anyone want to help here?). Added a brief section on gdkxft, which
|
|||
|
adds anti-aliasing support for GTK+ 1.2 applications.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
1.9: November 5, 2001. A few new links and some minor catch ups only.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
1.8: June 25, 2001: Included a new section on Anti-aliasing and Xft from
|
|||
|
Danny Tholen <Email>obiwan@mailmij.org</Email>. Many thanks on this not so
|
|||
|
well documented subject. Also, Sebastiano Vigna's neat little package for
|
|||
|
downloading and installing MS webfonts: <Ulink
|
|||
|
URL="http://freshmeat.net/webFonts4Linux">http://freshmeat.net/webFonts4Linux</Ulink>.
|
|||
|
A few other odds and ends.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
1.70: April 18, 2001:
|
|||
|
Added links for converting Mac TrueType Fonts (thanks to Karl A. Krueger),
|
|||
|
links to Unicode TrueType fonts (thanks to Tzafrir Cohen for suggestions
|
|||
|
and URLs), and added a section on anti-aliasing with X 4.0.2 (or greater).
|
|||
|
Also, included a reference to <Ulink
|
|||
|
URL="http://www.kyz.uklinux.net/cabextract.php3">cabextract</Ulink>, a
|
|||
|
utility that is now available for extracting Win32 Fonts (among other
|
|||
|
things) from a Window's <Quote>cab</Quote> archive.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
1.60: March 21, 2001:
|
|||
|
A few very minor changes. Most notable news is anti-aliasing support now
|
|||
|
in XFree 4.02 (referenced in the Notes section only). Chinese translation
|
|||
|
URL added.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>New Versions</Title>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
The pre-release versions of this document can be found at
|
|||
|
<Ulink URL="http://feenix.burgiss.net/ldp/fdu/index.html">http://feenix.burgiss.net/ldp/fdu/index.html</Ulink>.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
|
|||
|
<Sect2 id="legal">
|
|||
|
<Title>Copyright</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Copyright © 1999 by Doug Holland, 2002 Hal Burgiss.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Unless otherwise stated, Linux HOWTO documents are copyrighted by their
|
|||
|
respective authors. Linux HOWTO documents may be reproduced and distributed
|
|||
|
in whole or in part, in any medium physical or electronic, as long as this
|
|||
|
copyright notice is retained on all copies. Commercial redistribution is
|
|||
|
allowed and encouraged; however, the author would like to be notified of any
|
|||
|
such distributions.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
All translations, derivative works, or aggregate works incorporating any
|
|||
|
Linux HOWTO documents must be covered under this copyright notice. That is,
|
|||
|
you may not produce a derivative work from a HOWTO and impose additional
|
|||
|
restrictions on its distribution. Exceptions to these rules may be granted
|
|||
|
under certain conditions; please contact the Linux HOWTO coordinator for more
|
|||
|
information.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
In short, we wish to promote dissemination of this information through as
|
|||
|
many channels as possible. However, we do wish to retain copyright on the
|
|||
|
HOWTO documents, and would very much like to be notified of any plans to
|
|||
|
redistribute the HOWTOs, this one in particular! Web page authors are free
|
|||
|
to link to this HOWTO without restriction, though the author would appreciate
|
|||
|
an email informing him of this, just so he can boost his ego by knowing who
|
|||
|
else reads and links to this document.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Many of the terms mentioned in this document are trade names. Unless
|
|||
|
otherwise stated, all trademarks are property of their respective owners.
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2 id="credits">
|
|||
|
<Title>Credits</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
Original author: Doug Holland.
|
|||
|
Email: <Ulink URL="mailto:meldroc@frii.com">meldroc@frii.com</ULink>
|
|||
|
WWW: <Ulink URL="http://www.frii.com/~meldroc/">http://www.frii.com/~meldroc/</ULink>
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
Updated and maintained by Hal Burgiss.
|
|||
|
Email: <ULink URL="mailto:hal@foobox.net">hal@foobox.net</ULink>
|
|||
|
WWW: <Ulink URL="http://feenix.burgiss.net/ldp/fdu">http://feenix.burgiss.net/ldp/fdu/</ULink>
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
Special thanks go to:
|
|||
|
|
|||
|
<ItemizedList>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The developers of the <Ulink URL="http://www.xfree86.org">XFree86 Project</Ulink>,
|
|||
|
for all the hard work and time they have given. Also, Juliusz Chroboczek for
|
|||
|
his work with xfsft, and XFree86 4.x to help bring TrueType to the
|
|||
|
hungry masses. And Keith Packard for his anti-aliasing, and other work.
|
|||
|
This is not to slight the many, many other XFree86 volunteers.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Font wizard Kristin Aanestad, whose legwork and insight on much of the xfs,
|
|||
|
TrueType, Netscape, and especially, the fonts.alias sections are much
|
|||
|
appreciated. More from Kristin at <Ulink
|
|||
|
url="http://home.c2i.net/dark/linux.html">Some Linux for Beginners</Ulink>
|
|||
|
on a wide range of topics.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Danny Tholen <Email>obiwan@mailmij.org</Email> is responsible for the nice
|
|||
|
Xft section, and examples.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The folks at <Ulink URL="news:comp.os.linux.x">comp.os.linux.x</ULink> who
|
|||
|
gave me a hand in figuring all of this out in the first place.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The Linux community in general who made all of this possible
|
|||
|
in the first place. Especially those who have offered suggestions and
|
|||
|
comments that help to make this HOWTO a better resource. Keep those cards
|
|||
|
and letters coming ;-)
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
<Sect2>
|
|||
|
<Title>Translations</Title>
|
|||
|
<!--
|
|||
|
mail: Yu-Chia Chang (joezhang at ms10.hinet.net) Chinese translation.
|
|||
|
http://www.linux.org.tw/CLDP/mini/FDU.html
|
|||
|
-->
|
|||
|
<Para>
|
|||
|
|
|||
|
Chinese: <Ulink URL="http://www.linux.org.tw/CLDP/mini/FDU.html">http://www.linux.org.tw/CLDP/mini/FDU.html</Ulink> by Yu-Chia Chang.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<Sect1 id="x-config">
|
|||
|
<Title>X Server Configuration</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
There are a few simple configuration tweaks that will help X do its job
|
|||
|
better.
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Setting The FontPath</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
The first place to look for curing font problems is the
|
|||
|
<FileName>XF86Config</FileName> file.
|
|||
|
<FileName>/usr/X11/lib/X11/XF86Config</FileName> or
|
|||
|
<FileName>/etc/X11/XF86Config</FileName> are the common locations. (This may
|
|||
|
be <FileName>XF86Config-4</FileName> for XFree86 4.x.) If you haven't
|
|||
|
guessed already, the most important part of this file relating to fonts is
|
|||
|
the <Literal>FontPath.</Literal> Before we get into that, this would be a
|
|||
|
good time to check the other parts of your X configuration. Bad monitor
|
|||
|
settings can be even more of a headache than bad fonts, so make sure your
|
|||
|
refresh rate is as high as your monitor can handle (85 Hz is great, 75 Hz is
|
|||
|
OK, 60 Hz is painful.)
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
Use your favorite text editor and edit
|
|||
|
<FileName>XF86Config</FileName>. Near the top of the file in the
|
|||
|
"Files" section, you should see something vaguely like this:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
This much should be the same, or at least similar, for both XFree86 3.x and
|
|||
|
4.x. The <Literal>FontPath</Literal> tells X where to find the fonts it uses
|
|||
|
to render text on your display. Order is important -- when an X application
|
|||
|
asks X to render some text, the X server usually has some leeway to choose the
|
|||
|
font that is used. The X server then goes through the
|
|||
|
<Literal>FontPath</Literal> and grabs the first font it sees that matches the
|
|||
|
X client's criteria, and then displays it. (Note that Red Hat's xfs for versions 6.x
|
|||
|
and later has a different way of setting the <Literal>FontPath</Literal>. See
|
|||
|
the <xref LinkEnd="xfs"> below for more on xfs.)
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If the 100dpi fonts are not listed, they probably did not get installed for
|
|||
|
whatever reason, so you may want install them now. Default installations
|
|||
|
may put 75dpi fonts before the 100dpi fonts. If you have a high
|
|||
|
resolution display (1024x768 or higher), this means very tiny fonts. If this
|
|||
|
is the case, the first tweak you'll use is to switch the 75dpi and 100dpi
|
|||
|
FontPath lines:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
Next, specify that you prefer to use unscaled bitmap fonts. If you've ever
|
|||
|
used Netscape or any other program that displays titles using big fonts,
|
|||
|
you might have noticed that those fonts were pixelized. This is ugly and needs
|
|||
|
to be corrected. So add <Literal>:unscaled</Literal> to the ends of the misc,
|
|||
|
100dpi and 75dpi fonts. You can even use both unscaled and scaled fonts if
|
|||
|
you want, just put the unscaled <Literal>FontPath</Literal> lines first to
|
|||
|
tell X you prefer unscaled fonts if possible:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
After making these changes, restart X (and your font server, if installed).
|
|||
|
Doesn't the desktop look better already?
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>X Server Command Line Options</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
The next thing you might need to do is adjust the command line options for
|
|||
|
the X server. It is important that the <literal>dpi</literal> resolution
|
|||
|
be accurate. Run this command:
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<literallayout>
|
|||
|
<Literal>
|
|||
|
$ xdpyinfo | grep resolution
|
|||
|
resolution: 111x111 dots per inch
|
|||
|
</Literal>
|
|||
|
</literallayout>
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
If this does not look to match what your monitor can do, or if it is
|
|||
|
unbalanced (e.g <literal>98x95</literal>), you will need to use the
|
|||
|
<Literal>-dpi</Literal> switch which specifies the display resolution in dots
|
|||
|
per inch. As a lot of systems use high resolution displays these days,
|
|||
|
chances are they'll be working at 100 dpi, or better. While an unbalanced
|
|||
|
setting reportedly can really play havoc with some fonts.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If you start X from the console command prompt, type:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
$ startx -- -dpi 100 -depth 16 # v4.x syntax
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Or these options can be stored in <Filename>~/.xserverrc</FileName>. See the
|
|||
|
<Command>startx</Command> and <Command>xinit</Command> man pages for more on
|
|||
|
this.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If you use xdm (or friends such as gdm) for graphical logins, you'll want to
|
|||
|
edit your <FileName>/usr/X11/lib/X11/xdm/Xservers</FileName> file (or
|
|||
|
possibly <FileName>/etc/X11/xdm/Xservers</FileName>) which will have the
|
|||
|
command line for the Xserver in it. Mine has the line:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
:0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You want to specify a value that is compatible with your monitor's output.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
More information is in the <Command>X</Command>, <Command>Xserver</Command>,
|
|||
|
<Command>xdm</Command>, <Command>xinit,</Command> and
|
|||
|
<Command>startx</Command> man pages.
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
|
|||
|
<Sect1 id="TrueType">
|
|||
|
<Title >TrueType Fonts
|
|||
|
</Title>
|
|||
|
|
|||
|
<para>
|
|||
|
Historically, the Unix world relied on Type 1 fonts for high
|
|||
|
quality scalable fonts. Linux supports Type 1 quite well, both for
|
|||
|
printing and for screen output. But, Type 1 never was widely adopted
|
|||
|
by web designers, and on other platforms. TrueType, due to its association
|
|||
|
with Windows, is the preferred web font. And XFree86 seems to render
|
|||
|
TrueType a little better.
|
|||
|
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You won't find many decent TrueType fonts included with any distribution,
|
|||
|
however. The reason is that there are not many quality TrueType fonts
|
|||
|
available under a suitable license at this time. In fact, many of the
|
|||
|
<quote>free</quote> ones, are rather poor. Many distributions are
|
|||
|
including some TrueType fonts, and also including tools for automating the
|
|||
|
process of adding TrueType fonts from external sources. See if that is an
|
|||
|
option for you. This will be easiest route. You will definitely want
|
|||
|
to add some quality TrueType fonts, one way or another.
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Because the boys in Redmond are very concerned with the appearance of their
|
|||
|
software (as opposed to the internal workings ;), they built TrueType font
|
|||
|
support into Windows. And of course no big surprise, but they got the idea
|
|||
|
from Apple. In fact, TrueType is a registered trademark of Apple Computer,
|
|||
|
Inc. Windows 9x, NT, 2K and nearly every other incarnation of Windows comes
|
|||
|
with Arial, Times New Roman, and Courier New, which are roughly equivalent
|
|||
|
to Helvetica, Times and Courier. TrueType fonts are scalable, so they look
|
|||
|
good in large sizes, and they are well hinted, so they are readable at small
|
|||
|
sizes. Many windows applications come with dozens more TrueType fonts.
|
|||
|
And let's face it, those MS and Apple fonts are, generally speaking, just
|
|||
|
plain better than the freely available ones with a suitable license. Don't
|
|||
|
microwave your Windows CD yet, you'll want to get those quality fonts first!
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Making TrueType Fonts Available</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Let's start with the fonts first. Any TrueType font included with the various
|
|||
|
MS Windows incarnations should work. Don't forget word processors and other
|
|||
|
apps that may include their own fonts. MacOS fonts will only work if
|
|||
|
converted to a usable format. (See the <Link LinkEnd="links">links
|
|||
|
section</Link> for converter packages.) There are also some 'free' TrueType
|
|||
|
fonts available for download if you have already nuked that CD (see <Link
|
|||
|
LinkEnd="links">links section</Link>).
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
Many distributions are now bundling tools for automating the process of
|
|||
|
including quality TrueType fonts. SuSE, Debian, and Mandrake do (Red Hat 7.x
|
|||
|
does not at this time). See what packages you might have for this as this
|
|||
|
will be the most painless way to go. Essentially, these tools help migrate
|
|||
|
fonts from a Windows installation, or download those available from
|
|||
|
Microsoft [note 08/15/02 MS has recently removed these fonts!] , and then
|
|||
|
handle the installation and configuration all in one neat utility. If you do
|
|||
|
have such a utility, the below information may not be necessary!
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
In order to use TrueType, the fonts will have to be always accessible to
|
|||
|
X. This means they will have to be on a filesystem that is
|
|||
|
<Emphasis>always</Emphasis> mounted. This can conceivably be a Windows
|
|||
|
partition on a dual boot system. Alternately, the fonts can be copied to
|
|||
|
Linux. First <Command>su</Command> to root:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# su -
|
|||
|
# mkdir -p /usr/local/share/fonts/ttfonts
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Now, change to the new font directory:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# cd /usr/local/share/fonts/ttfonts
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
Then, add the fonts to this directory, either by copying them from your
|
|||
|
Windows system:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# cp /mnt/<path_to_fonts>/*ttf .
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
or by downloading those available directly from Microsoft:
|
|||
|
<Ulink
|
|||
|
URL="http://www.microsoft.com/typography/fontpack/default.htm">http://www.microsoft.com/typography/fontpack/default.htm</Ulink>.
|
|||
|
Note 08/17/02: Microsoft has recently <emphasis>discontinued this
|
|||
|
page</emphasis>. At this time, the following pages (may!) still have these
|
|||
|
fonts available (or google search for them):
|
|||
|
</Para>
|
|||
|
<para>
|
|||
|
<simplelist>
|
|||
|
<!-- 404
|
|||
|
<member>
|
|||
|
<ulink url="http://unixlab.cs.put.poznan.pl/pub/Windows/TTF-fonts/">http://unixlab.cs.put.poznan.pl/pub/Windows/TTF-fonts/</ulink>
|
|||
|
</member>
|
|||
|
-->
|
|||
|
<member>
|
|||
|
<ulink url="http://nuoriso.hel.fi/__files/ms_truetype_core_fonts_for_the_web/Win95-98-NT/index.html">http://nuoriso.hel.fi/__files/ms_truetype_core_fonts_for_the_web/Win95-98-NT/index.html</ulink>
|
|||
|
</member>
|
|||
|
<member>
|
|||
|
<ulink url="http://web.archive.org/web/20000420210719/http://www.microsoft.com/opentype/fontpack/default.htm">http://web.archive.org/web/20000420210719/http://www.microsoft.com/opentype/fontpack/default.htm</ulink>
|
|||
|
</member>
|
|||
|
</simplelist>
|
|||
|
|
|||
|
</para>
|
|||
|
<!--
|
|||
|
These fonts are in self-extracting zip archives. The ones labeled for use
|
|||
|
with Windows 3.1 can indeed be unpacked under Linux with the Linux
|
|||
|
<Command>zip</Command> utility:
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# ls *exe | xargs -n 1 unzip -L
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
-->
|
|||
|
|
|||
|
<Para>
|
|||
|
<!--
|
|||
|
The '-L' option will convert to lower case font names (this may be necessary for
|
|||
|
some versions of xfsft and Red Hat's xfs). Note that the current Linux zip
|
|||
|
utility does not work with the 32 bit Win9x cab font archives. (It also looks
|
|||
|
like Microsoft no longer has the 16 bit Arial, Courier and Times-Roman on
|
|||
|
this site.)
|
|||
|
-->
|
|||
|
These can be unarchived under Linux with
|
|||
|
<Command>cabextract</Command>, which can be found
|
|||
|
<Ulink
|
|||
|
URL="http://www.kyz.uklinux.net/cabextract.php3">http://www.kyz.uklinux.net/cabextract.php3</Ulink>.
|
|||
|
This would now seem to be the best way to go at this time.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
A slick solution to this from Sebastiano Vigna is his
|
|||
|
<Ulink URL="http://freshmeat.net/webFonts4Linux">
|
|||
|
http://freshmeat.net/webFonts4Linux</Ulink>, which automates
|
|||
|
the downloading, extracting and installation of the Microsoft fonts
|
|||
|
all in one neat package. A utility designed primarily for Red Hat can be found:
|
|||
|
<ulink url="http://sourceforge.net/projects/font-tool/">http://sourceforge.net/projects/font-tool/</ulink>,
|
|||
|
which includes all the core MS web fonts, plus relevant system configuration.
|
|||
|
There is a tarball, as well as RPMs (both require cabextract).
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You can also get an RPM of WebFonts that contains some of the MS Web
|
|||
|
fonts from <Ulink
|
|||
|
URL="ftp://ftp.rpmfind.net/linux/contrib/noarch/noarch/webfonts-1-3.noarch.rpm">ftp://ftp.rpmfind.net/linux/contrib/noarch/noarch/webfonts-1-3.noarch.rpm</Ulink>.
|
|||
|
This has enough basic fonts to keep Mozilla and other web browsers happy.
|
|||
|
Something similar for Debian is <Ulink
|
|||
|
URL="http://packages.debian.org/unstable/graphics/msttcorefonts.html">http://packages.debian.org/unstable/graphics/msttcorefonts.html</Ulink>.
|
|||
|
This does not include the actual fonts, but facilitates the installation.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If doing it yourself, you will also have to include the new TrueType
|
|||
|
directory(s) in the X server's fontpath. So with your text editor of choice
|
|||
|
add the line(s) as appropriate:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "/usr/local/share/fonts/ttfonts"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<para>
|
|||
|
This configuration is for <quote>core X font</quote> support. For
|
|||
|
additional configuration relating to the new Xft rendering engine,
|
|||
|
see <link linkend="XFT">the sections below on XFT</link> and anti-aliasing.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
|
|||
|
<sect2 id="hinting">
|
|||
|
<title>TrueType Hinting</title>
|
|||
|
<para>
|
|||
|
<quote>Hinting</quote> is a TrueType specific feature, that is generally
|
|||
|
considered to be a useful technique that improves the appearance of TrueType
|
|||
|
fonts. Unfortunately, there are some licensing and patent issues involved
|
|||
|
with this, and it is disabled by default in the freetype sources! And also
|
|||
|
quite likely that if you are using vendor supplied binaries, it is disabled
|
|||
|
there as well.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
To enable this feature, the sources need to be rebuilt. Look for
|
|||
|
<filename>include/freetype/config/ftoption.h</filename> in the freetype
|
|||
|
source tree, and then search for:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
And very simply, make this small change:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Red Hat users can rebuild the src.rpm by toggling one setting at the top,
|
|||
|
and accomplish the same thing:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
%define without_bytecode_interpreter 1
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
And change to:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
%define without_bytecode_interpreter 0
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Other vendors may have a similar, easy-to-use mechanism.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Then rebuild and install the finished binaries. Be sure to restart X as well
|
|||
|
since the freetype code is already loaded into memory by X.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Note that <quote>hinting</quote>, <quote>anti-aliasing</quote>, and
|
|||
|
<quote>sub-pixel rendering</quote> are separate concepts (see <link
|
|||
|
linkend="XFT">the section on Xft below</link> for more). Again, this is not a
|
|||
|
cure-all for <quote>ugly</quote> fonts, but one more piece in the puzzle of
|
|||
|
font <quote>beautification</quote>.
|
|||
|
</para>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<sect2 id="ttf-config">
|
|||
|
<Title>Configuration</Title>
|
|||
|
|
|||
|
<para>
|
|||
|
This section pertains to installing and configuring TrueType fonts
|
|||
|
for any <quote>freetype</quote> based font renderer. This would include
|
|||
|
the <literal>freetype</literal> font module from XFree86-4.x,
|
|||
|
Red Hat's <literal>xfs</literal>, and the <literal>xfsft</literal> font
|
|||
|
server. Again, if you have used a distro supplied tool for migrating
|
|||
|
TrueType fonts, it is likely this has been done for you already. The
|
|||
|
steps described below would only be necessary for manual font installation.
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
There is still more work to be done before we can actually use any TrueType
|
|||
|
fonts. First, all font files must have lower case names. Secondly,
|
|||
|
they shouldn't have embedded spaces. And then, we will need to create a
|
|||
|
couple of configuration files to make things go.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Su to root, and change to the directory where the TrueType fonts are.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# su -
|
|||
|
# cd /usr/local/share/fonts/ttfonts
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If there are any upper case font names, you can use the following script to
|
|||
|
convert all names to lower case:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
|
|||
|
#!/bin/sh
|
|||
|
#
|
|||
|
## -------- convert upper to lower case ---------
|
|||
|
|
|||
|
ls * | while read f
|
|||
|
do
|
|||
|
if [ -f $f ]; then
|
|||
|
if [ "$f" != "`echo \"$f\" | tr A-Z a-z`" ]; then
|
|||
|
#Note that 'This' will overwrite 'this'!
|
|||
|
mv -iv "$f" "`echo \"$f\" | tr A-Z a-z`"
|
|||
|
fi
|
|||
|
fi
|
|||
|
done
|
|||
|
|
|||
|
## eof
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
Note the punctuation -- the backquotes are important! Remove any spaces from
|
|||
|
font names too. Once the TrueType fonts are properly installed, you must
|
|||
|
create both <FileName>fonts.dir</FileName> and
|
|||
|
<FileName>fonts.scale</FileName> files. The following commands do this:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# ttmkfdir -o fonts.scale
|
|||
|
# mkfontdir
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If you don't have <command>ttmkfdir</command> installed, check your
|
|||
|
distribution's repository, or it can be downloaded from:
|
|||
|
<ulink url="http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz">http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz</ulink>.
|
|||
|
This is necessary!
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
As of Red Hat 7.1, the above commands are run from the xfs init script.
|
|||
|
So restarting xfs (<command>/etc/rc.d/init.d/xfs restart</command>) will
|
|||
|
accomplish the same thing for Red Hat users. Other distros may have
|
|||
|
similar shortcuts.
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You should now have <FileName>fonts.dir</FileName> and
|
|||
|
<FileName>fonts.scale</FileName> files in your TrueType font
|
|||
|
directory. <Command>ttmkfdir</Command> is in the
|
|||
|
<FileName>Freetype</FileName> RPM for Red Hat users, and must be run
|
|||
|
before <Command>mkfontdir</Command>. With Debian based distros, there
|
|||
|
is a similar utility called <Command>mkttfdir</Command>, and is in the
|
|||
|
<Filename>fttools</FileName> Deb package. Though this apparently does not
|
|||
|
generate as many encodings as <Command>ttmkfdir</Command>. These commands
|
|||
|
may not always report errors, so verify that they were created and are not
|
|||
|
empty files:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
$ ls -l fonts.*
|
|||
|
-rw-r--r-- 1 root root 11657 Aug 17 10:31 fonts.dir
|
|||
|
-rw-r--r-- 1 root root 11657 Aug 17 10:31 fonts.scale
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
If you encounter any problems, try <Command>ttmkfdir</Command> with the
|
|||
|
<Command>- m</Command> switch. This will discard bad characters from the
|
|||
|
font file. Specify a number such as 50 or l00
|
|||
|
(<Command>ttmkfdir -m 50</Command>). The files themselves are text files.
|
|||
|
Have a look:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
$ less fonts.dir
|
|||
|
114
|
|||
|
webdings.ttf -microsoft-Webdings-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
|
|||
|
verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-ascii-0
|
|||
|
verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-fcd8859-15
|
|||
|
verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-15
|
|||
|
verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-9
|
|||
|
verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-1
|
|||
|
[...]
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
If <command>ttmkfdir</command> is persistently giving problems by
|
|||
|
not generating a proper output file, there may be one or more
|
|||
|
<quote>bad</quote> fonts (ie fonts it can't handle). In that
|
|||
|
case, just start with a few common ones, like Arial and Verdana.
|
|||
|
If this works, then add a few at a time.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Now be sure the new fonts are included in the <literal>FontPath</literal>.
|
|||
|
And either restart X (Ctrl-Alt-BS), or the font server (if using one).
|
|||
|
You could also try refreshing the <literal>FontPath</literal>:
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# xset fp rehash
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Red Hat 6.x/7.x users can update the FontPath and xfs:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# chkfontpath --add /usr/local/share/fonts/ttfonts
|
|||
|
# /etc/rc.d/init.d/xfs restart
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You should now be in business. You can check which fonts are available to X:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
$ xlsfonts | less
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
or check them out further with <Command>xfontsel</Command>, or
|
|||
|
<Command>gfontsel</Command>. If they are visible to
|
|||
|
<Command>xlsfonts</Command>, then they are available to X and vice versa. If
|
|||
|
they are not there, try restarting X with Ctrl-Alt-BS.
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
This gets you as far as X knows about your new fonts. Individual applications
|
|||
|
will need to be configured to use them. GNOME and KDE will require additional
|
|||
|
steps as well (see the respective docs). You will also want to configure
|
|||
|
Xft (see <link linkend="XFT">below</link>), if using XFree86 v4.x or later.
|
|||
|
</para>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
|
|||
|
<sect2 id="fontservers">
|
|||
|
<title>Font Servers</title>
|
|||
|
<Para>
|
|||
|
Historically, font servers were used to serve fonts over a network. Font
|
|||
|
resources could then reside on one host, and clients could access them as
|
|||
|
needed. But, the developers have enhanced these to include features such as
|
|||
|
the ability to render TrueType fonts. XFree86 4.x <emphasis>does have built
|
|||
|
in support</emphasis> for TrueType (see <Xref LinkEnd="x-4x">), making a font
|
|||
|
server not a necessity, though some distros default to using a font server
|
|||
|
for other reasons now.
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
XFree86 3.x does not come with built in TrueType support, so you'll have to
|
|||
|
add it yourself if you are using a 3.x version. This will mean installing a
|
|||
|
supplemental font server that does support TrueType. And, of course,
|
|||
|
installing the fonts themselves (see above). See the
|
|||
|
<link linkend="appendix">Appendix</link> for font server installation,
|
|||
|
and related tips.
|
|||
|
</para>
|
|||
|
<Para>
|
|||
|
Any recent distro will have one or more font servers included, and the
|
|||
|
important configuration should be done by the installation program.
|
|||
|
</Para>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2 id="falias">
|
|||
|
<Title>The fonts.alias File</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<FileName>fonts.alias</FileName> is yet another font configuration file that
|
|||
|
can be used to tweak how fonts are handled. Like <FileName>fonts.scale</FileName>
|
|||
|
and <FileName>fonts.dir</FileName>, <FileName>fonts.alias</FileName> must be in
|
|||
|
the same directory as the fonts you are aliasing. It is not mandatory however,
|
|||
|
but does solve certain potential problems. Here is an example from the first
|
|||
|
line of<FileName>/usr/X11R6/lib/X11/fonts/misc/fonts.alias</FileName> on
|
|||
|
a Red Hat system:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>fixed</Literal> is the 'alias' here. Any time this is requested, we
|
|||
|
actually get the font definition from the second column. Font too small? Just
|
|||
|
change the definition. (Warning: this is a critical file, at least on Red Hat.)
|
|||
|
The same principle applies to all fonts, including TrueType. In fact, if you
|
|||
|
don't have TrueType, you could conceivably use this trick to have a
|
|||
|
comparable Type 1, or other, font aliased as a TrueType.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<FileName>fonts.alias</FileName> is important for some applications that don't
|
|||
|
handle the data provided by <FileName>fonts.scale</FileName> well. Most notably
|
|||
|
here is Netscape. Without a <FileName>fonts.alias</FileName> you will find that
|
|||
|
Netscape will only show point sizes of 0 and 12 available.
|
|||
|
<FileName>fonts.alias</FileName> fixes this. You might also find that if you a
|
|||
|
specify another size with the <Literal>scalable font</Literal> option under
|
|||
|
<Literal>Preferences</Literal>, Netscape will not remember this setting.
|
|||
|
Annoying! This is also fixed. So we really need this file. Sample excerpt from
|
|||
|
a <FileName>fonts.scale</FileName>:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-ascii-0
|
|||
|
arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-fcd8859-15
|
|||
|
arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-15
|
|||
|
arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
These are scalable so we don't get any predefined point sizes. We will need to
|
|||
|
create our <FileName>fonts.alias</FileName> something like this excerpt for
|
|||
|
Arial:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--7-70-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--8-80-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--10-100-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--9-90-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--11-110-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--10-100-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--11-110-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--12-120-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--13-130-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--13-130-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--14-140-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--14-140-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--15-150-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--15-150-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--18-180-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--18-180-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
-monotype-Arial-medium-r-normal--24-240-0-0-p-0-iso8859-1 \
|
|||
|
-monotype-Arial-medium-r-normal--24-240-75-75-p-0-iso8859-1
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
(<emphasis>Please note that I have split each line for readability</emphasis>.
|
|||
|
There should be two columns all on one line, without the <Quote>\</Quote>, and
|
|||
|
separated by at least one space.) This will keep Netscape happy. Also, if
|
|||
|
font names should have embedded spaces, then you should enclose the filename
|
|||
|
in quotes. You might also note the <Literal>pointsize</Literal> discrepancy
|
|||
|
between the first and second columns of the first few rows. The first column
|
|||
|
of the first entry has a '6', whereas this is aliased to a '9' in the second
|
|||
|
column, and thus '9' point. This is by design and is an excellent way to
|
|||
|
overcome the Netscape 'damn tiny fonts' syndrome. Adjust to suit your tastes,
|
|||
|
resolution, and eyesight.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
This file can be created manually with a text editor, or conceivably with some
|
|||
|
fancy sed or awk scripting. There is an excellent discussion of this file,
|
|||
|
and other font related topics at Kristin Aanestad's site at
|
|||
|
<Ulink url="http://home.c2i.net/dark/linux.html#ttf">http://home.c2i.net/dark/linux.html</Ulink>. There is
|
|||
|
also a link to a python script which can reportedly automatically generate
|
|||
|
a <Filename>fonts.alias</FileName> file at this same site. A perl version
|
|||
|
of this script is re-printed in the <link
|
|||
|
linkend="appendixb">Appendix</link>. Thanks to Kristin whose work and insight
|
|||
|
was the inspiration for this section!
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
Another potential use of <filename>fonts.alias</filename> would be to map
|
|||
|
one font to something quite different. Say you don't have TrueType fonts,
|
|||
|
and didn't want to install Microsoft's. You could alias nice, scalable Type 1
|
|||
|
fonts to a TrueType. That way when the system (or some web page) wants a
|
|||
|
TrueType, you'd get something of comparable quality instead of bitmap that
|
|||
|
doesn't scale well.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Note that with XFree86 4.0.2 and greater, there are new font handling
|
|||
|
mechanisms available via the Xft extensions. Font aliasing is done
|
|||
|
in Xft's own configuration file: <Filename>XftConfig</FileName>. This
|
|||
|
is the preferred method where anti-aliasing, and the other new rendering
|
|||
|
features are desired. See the <Link LinkEnd="AA">Anti-aliasing Section</Link>
|
|||
|
for more on this and de-mystification. This is only true where the
|
|||
|
application (i.e. the toolkit, e.g QT) itself supports the new extensions!
|
|||
|
At this time, not all do (yet).
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<Sect1 id="x-4x">
|
|||
|
<Title>XFree86 4.x</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Ulink url="http://www.xfree86.org/4.0/">XFree86 4.0</Ulink>
|
|||
|
introduced native support for TrueType fonts, along with other new
|
|||
|
features. The enhanced font support is based on xfsft from Juliusz
|
|||
|
Chroboczek, which in turn is based on the FreeType font library originally
|
|||
|
from Mark Leisher, so the configuration is similar to xfsft and Red Hat's
|
|||
|
patched xfs which use the same rendering engine. As of 4.0.2, XFree86 begins
|
|||
|
to support anti-aliasing which is a technique for smoothing font outlines
|
|||
|
(see section below).
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
The <Literal>FontPath</Literal> is still in <FileName>XF86Config</FileName>, as
|
|||
|
always. For Red Hat 6/7 using a stock XFree86 4.x (i.e. NOT the Red Hat 7.x
|
|||
|
supplied version), this will mean moving the Red Hat xfs
|
|||
|
<Literal>FontPath</Literal> from <FileName>/etc/X11/fs/config</FileName> back
|
|||
|
to <FileName>XF86Config</FileName>. A separate font server is no longer
|
|||
|
needed just for TrueType support. You may disable it, unless it is needed to
|
|||
|
serve fonts to other clients in a network environment. Or you may want to
|
|||
|
still use it since there may be a very small performance gain in some
|
|||
|
situations (at the cost of more memory utilized). See the section below for
|
|||
|
Red Hat 7.x specific configuration issues.
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
Section "Files"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/misc"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
|
|||
|
FontPath "/usr/share/fonts/default/Type1"
|
|||
|
FontPath "/usr/local/share/fonts/ttfonts"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
|
|||
|
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
|
|||
|
EndSection
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
In order to use TrueType, you must also specify which font
|
|||
|
<Literal>module</Literal> the X server should be using in the "Module"
|
|||
|
section:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
Section "Module"
|
|||
|
Load "freetype"
|
|||
|
Load "speedo"
|
|||
|
Load "type1"
|
|||
|
<load other modules....>
|
|||
|
EndSection
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
Note that there can be only one 'Module' section, so include any other
|
|||
|
modules here as well. Again, this is the kind of configuration that your
|
|||
|
distro should be doing during installation, and may not be
|
|||
|
necessary, unless you are upgrading, or want to make manual changes
|
|||
|
yourself.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You also must have a <FileName>fonts.scale</FileName> and
|
|||
|
<FileName>fonts.dir</FileName> file for each TrueType font directory, just like
|
|||
|
for xfsft and Red Hat's xfs (see Appendix). <command>ttmkfdir</command>,
|
|||
|
<ulink url="http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz">http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz</ulink>,
|
|||
|
will come in handy for <FileName>fonts.scale</FileName> if it is not
|
|||
|
already installed. See the
|
|||
|
<link linkend="ttf-config">Configuration</link> section above for more
|
|||
|
details and examples.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>xtt</Literal> is another available TrueType module that is best known
|
|||
|
for supporting ideographic (Oriental) type fonts. You can use either, but only
|
|||
|
one at a time.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Most X server command line options are still the same as previous versions of X:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
$ startx -- -dpi 100
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
<sect2 id="xft">
|
|||
|
<title>Xft and Core Fonts</title>
|
|||
|
<para>
|
|||
|
As mentioned, the new font handling improvements are the result of the
|
|||
|
development work behind <ulink
|
|||
|
url="http://www.keithp.com/~keithp/render/Xft.tutorial">Xft</ulink>. Xft is
|
|||
|
an on-going effort to improve and modernize X's font handling. The end
|
|||
|
result will be radically different from the traditional X font handling
|
|||
|
(known as <quote>core X fonts</quote>).
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
What we have now is essentially two different systems: one that has been
|
|||
|
around since the dawn of time (or even before :), and one that is radically
|
|||
|
new and <emphasis>still evolving</emphasis>! I emphasize this, since the
|
|||
|
<quote>still evolving</quote> part is likely to cause some confusion until
|
|||
|
the dust settles.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
The initial release of Xft v1.0 with XFree86 4.0.2 is controlled by its
|
|||
|
configuration file, <filename>XftConfig</filename>. This changes with later
|
|||
|
versions, where the font configuration is handled by the
|
|||
|
<command>fontconfig</command> library, with its main configuration typically located
|
|||
|
<filename>/etc/fonts/fonts.conf</filename>. Of course, additional
|
|||
|
development has brought other improvements as well. For more on the
|
|||
|
Xft and Fontconfig, see the Fontconfig home page,
|
|||
|
<ulink url="http://fontconfig.org/">http://fontconfig.org/</ulink>.
|
|||
|
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
What we, as end users, will notice and appreciate most, is the anti-aliasing
|
|||
|
support and other rendering enhancements we get from Xft. Though this is not
|
|||
|
the only benefit.
|
|||
|
</para>
|
|||
|
</sect2>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
<Sect2 id="AA">
|
|||
|
<Title>Anti-aliasing</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Anti-aliasing is a technique for producing even smoother, crisper looking
|
|||
|
fonts by subtly softening the sharp, jagged edges. This has long been a
|
|||
|
feature of Apple and Microsoft font rendering, and is now making it's way
|
|||
|
into X via the X Rendering Extension specification. The new extensions
|
|||
|
provide other benefits as well. Distributions that support anti-aliasing with
|
|||
|
their stable/official versions are now being released.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
That is the good news. The bad news is that not all drivers support
|
|||
|
anti-aliasing yet. This is a moving target, so you will have to dig around to
|
|||
|
find whether your chipset is supported or not. The recently released 4.2
|
|||
|
should have near universal support. More not-so-good news is that not all
|
|||
|
applications are actually taking advantage of this yet. We will have
|
|||
|
to wait for the various toolkits (TK, Xaw, etc) to catch up. KDE
|
|||
|
is an exception, and has had strong AA support via the QT toolkit. The
|
|||
|
recently released GNOME-2, has AA support now too.
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
Anti-aliasing is not a cure-all, but is another piece of the font puzzle.
|
|||
|
Some point sizes may look better if not anti-aliased, and some systems
|
|||
|
just may not handle the various rendering enhancements as well as others.
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If you are reading this long after the publication date (October 2002),
|
|||
|
hopefully most of these shortcomings will have been overcome. All hardware will
|
|||
|
eventually be supported, mainstream distros will have shipped releases that
|
|||
|
include the new extensions, and they will be enabled by default. Many apps
|
|||
|
will look better since they will be <Quote>AA</Quote> aware, and we won't
|
|||
|
have to jump through any configuration hoops just to make it work. In the
|
|||
|
meantime, read on ...
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Sect3>
|
|||
|
<Title>Requirements</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Minimum requirements for Anti-Aliasing:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<ItemizedList>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
XFree86 4.0.2 or later.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
You graphic card's driver has to support anti-aliasing. If
|
|||
|
4.0.2 (or greater) is already installed, you can get this information
|
|||
|
direct from the driver with <Command>xdpyinfo</Command>. Run this and
|
|||
|
look for <Quote>Number of Extensions:</Quote>. If this lists <Quote>RENDER</Quote> among them, then you should be good to go. If not, well, it isn't going
|
|||
|
to work, and you will have to wait for an updated driver.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The Freetype2 library available from
|
|||
|
<Ulink URL="http://www.freetype.org">http://www.freetype.org</Ulink>, and
|
|||
|
also now bundled with XFree86. XFree needs to be linked against this, so
|
|||
|
install and build first if building from scratch. Your distro should have
|
|||
|
Freetype packages as well. Just make sure it is
|
|||
|
<Filename>freetype-2</FileName>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
TrueType fonts are best for display purposes. Type 1 is also good,
|
|||
|
but may not render quite as well. See above sections.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
For KDE users, KDE supports anti-aliasing as of 2.x. This will require
|
|||
|
QT-2.3.0 or later, and built with Xft support. A nice font HOWTO from
|
|||
|
Troll Tech for KDE and QT can be found: <Ulink
|
|||
|
URL="http://trolls.troll.no/lars/fonts/qt-fonts-HOWTO.html">http://trolls.troll.no/lars/fonts/qt-fonts-HOWTO.html</Ulink>.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
GNOME 1.x does not support anti-aliasing.
|
|||
|
GNOME 2.0 has recently been released and does have native support for
|
|||
|
anti-aliasing.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Applications that <Quote>know</Quote> about anti-aliasing. Not necessarily
|
|||
|
at the individual application level, but the libraries and toolkits (GTK,
|
|||
|
TK, etc.) that the application are built against, must be able to use the new
|
|||
|
features. At this time, not all do. KDE/QT is first out of the
|
|||
|
box and has good support. Also, <Command>xterm</Command> (yes,
|
|||
|
<command>xterm!</command>) supports the new
|
|||
|
extensions. An interesting example scavenged off usenet:
|
|||
|
</Para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
<![CDATA[
|
|||
|
From torvalds@penguin.transmeta.com Sun Apr 28 02:09:28 2002
|
|||
|
From: torvalds@penguin.transmeta.com (Linus Torvalds)
|
|||
|
Newsgroups: comp.os.linux.x
|
|||
|
Subject: Re: X font recommendation
|
|||
|
Organization: Transmeta Corporation
|
|||
|
Lines: 24
|
|||
|
Message-ID: <aa4ijq$259$1@penguin.transmeta.com>
|
|||
|
Cache-Post-Path: palladium.transmeta.com!unknown@penguin.transmeta.com
|
|||
|
Date: Tue, 23 Apr 2002 21:10:18 +0000 (UTC)
|
|||
|
X-Trace: news.sjc.globix.net 1019596253 63.209.4.196 (Tue, 23 Apr 2002 14:10:53 PDT)
|
|||
|
NNTP-Posting-Date: Tue, 23 Apr 2002 14:10:53 PDT
|
|||
|
|
|||
|
In article <aa492r$7hc5u$2@ID-99293.news.dfncis.de>,
|
|||
|
William Park <opengeometry@NOSPAM.yahoo.ca> wrote:
|
|||
|
>Peter Karlsson <root@localhost.localdomain> wrote:
|
|||
|
>> What's wrong with "fixed"? :-)
|
|||
|
>>
|
|||
|
>> xterm -sb -sl 10000 -fg yellow -bg black -geometry 120x40 -fn fixed -bc
|
|||
|
>
|
|||
|
>This will load the default 6x13 fonts, aka.
|
|||
|
> -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
|
|||
|
>A bit too small, though it has correct proportions. If there is bigger
|
|||
|
>size (8x16, 10x20, 12x24) of that fonts, then that would be ideal.
|
|||
|
|
|||
|
If you like anti-aliased fonts, the command line I prefer happens to be
|
|||
|
|
|||
|
xterm -geometry 100x40 -fa andale:size=11:charwidth=6
|
|||
|
|
|||
|
I think that font is from the MS free fontpack.
|
|||
|
|
|||
|
In order for it to work for you, you need to have the anti-aliasing
|
|||
|
truetype fonts working well, and probably a good monitor (and some
|
|||
|
people _hate_ that rounded look from anti-aliasing, and find it fuzzy
|
|||
|
even then).
|
|||
|
|
|||
|
Linus
|
|||
|
]]>
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You might have to experiment with the <literal>size</literal>
|
|||
|
and <literal>charwidth</literal> values to get reasonable
|
|||
|
results.
|
|||
|
</para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The new rendering extensions configuration file,
|
|||
|
<Filename>XftConfig</FileName>, must be configured for the fonts you want
|
|||
|
to use. Note that as of Xft2, this changes to
|
|||
|
<filename>/etc/fonts/fonts.conf</filename>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The new extensions supplant much of what we have been doing with font
|
|||
|
servers like xfs. <Filename>fonts.alias</FileName> and similar
|
|||
|
configuration files, for instance, are not used for fonts that are
|
|||
|
being controlled by the new extensions. Essentially, this gives us
|
|||
|
two separate font handling engines: the traditional, <quote>core</quote>
|
|||
|
font engine, and the new, Xft engine. The core engine is still used
|
|||
|
in some situations.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
</Para>
|
|||
|
|
|||
|
</sect3>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect3>
|
|||
|
<Title>Installation</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Keith Packard has a very brief summary of the steps required for building,
|
|||
|
installing and configuring from source at <Ulink
|
|||
|
URL="http://www.xfree86.org/~keithp/render/aafont.txt">http://www.xfree86.org/~keithp/render/aafont.txt</Ulink>. No need to reprint it here.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Newer distro releases are likely to have the foundation support for
|
|||
|
anti-aliasing available now. Red Hat, for instance, has it available as of
|
|||
|
Red Hat 7.1.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
To verify the necessary components, first make sure the
|
|||
|
<Quote>freetype</Quote> module (and any others) are loaded. Check the X
|
|||
|
server output:
|
|||
|
</Para>
|
|||
|
|
|||
|
<LiteralLayout>
|
|||
|
|
|||
|
(II) LoadModule: "freetype"
|
|||
|
(II) Loading /usr/X11R6/lib/modules/fonts/libfreetype.a
|
|||
|
(II) Module freetype: vendor="The XFree86 Project"
|
|||
|
compiled for 4.0.3, module version = 1.1.9
|
|||
|
Module class: XFree86 Font Renderer
|
|||
|
ABI class: XFree86 Font Renderer, version 0.2
|
|||
|
(II) Loading font FreeType
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
|
|||
|
<Para>
|
|||
|
Then verify if the <Quote>RENDER</Quote> extension is available, either check
|
|||
|
with <Command>xdpyinfo</Command>, or check the X server log, typically
|
|||
|
<Filename>/var/log/XFree86.0.log</FileName>:
|
|||
|
</Para>
|
|||
|
|
|||
|
<LiteralLayout>
|
|||
|
|
|||
|
(II) Initializing built-in extension MIT-SHM
|
|||
|
(II) Initializing built-in extension XInputExtension
|
|||
|
(II) Initializing built-in extension XTEST
|
|||
|
(II) Initializing built-in extension XKEYBOARD
|
|||
|
(II) Initializing built-in extension LBX
|
|||
|
(II) Initializing built-in extension XC-APPGROUP
|
|||
|
(II) Initializing built-in extension SECURITY
|
|||
|
(II) Initializing built-in extension XINERAMA
|
|||
|
(II) Initializing built-in extension XFree86-Bigfont
|
|||
|
(II) Initializing built-in extension RENDER
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
|
|||
|
<Para>
|
|||
|
If <Quote>RENDER</Quote> is there, anti-aliasing and the other advanced
|
|||
|
rendering extensions should be available. If not, the system should
|
|||
|
gracefully fall back to the core X fonts engine.
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect3>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect3>
|
|||
|
<Title>Xft Configuration (XftConfig)</Title>
|
|||
|
<Para>
|
|||
|
By Danny Tholen <Email>obiwan@mailmij.org</Email>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Xft is an interface to the freetype rasterizer written by Keith Packard,
|
|||
|
member of the XFree86 Project, Inc. It allows applications to use fonts from
|
|||
|
the new X render extension using a unified font naming scheme. In
|
|||
|
<Filename>/etc/X11/XftConfig</FileName> (or
|
|||
|
<Filename>/usr/X11R6/lib/X11/XftConfig</FileName>) you will find a
|
|||
|
configuration file which can be adapted to suit your personal taste. In this
|
|||
|
section I will explain the syntax and demonstrate some things you can do
|
|||
|
with this file.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
The following information is based on 4.0.3. 4.1 is just released, and there
|
|||
|
may be a few new wrinkles not touched on here. Future versions are sure
|
|||
|
to bring even more radical changes.
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
Note that Xft2 makes radical changes to Xft configuration.
|
|||
|
<filename>XftConfig</filename> is obsoleted and replaced by the new
|
|||
|
<ulink url="http://fontconfig.org">fontconfig</ulink> libraries. Red Hat 8.x
|
|||
|
users should read the <link linkend="rh80">Red Hat 8.0 Differences</link>
|
|||
|
section first. Many of the principles described still apply, but the
|
|||
|
configuration is radically different. FYI.
|
|||
|
</para>
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect4 id="xftstructure">
|
|||
|
<Title>XftConfig Structure</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
The basic structure revolves around a 'pattern'. A pattern is a set of
|
|||
|
name/value-list pairs, each value-list contains one or more typed values. A
|
|||
|
certain application requests a font, for example:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
family: "Arial"
|
|||
|
size: 12
|
|||
|
encoding: "iso8859-1"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
A size 12 arial font in latin-1 encoding. The Xft extension will now try to
|
|||
|
patch this pattern to all of the fonts available in the system. And
|
|||
|
selecting the one with the best score. Before the matching is done Xft looks
|
|||
|
in <Filename>XftConfig</FileName>. The requested pattern can here be extended
|
|||
|
before use. An example is:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match any family == "Arial" edit antialias = true;
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
This will enable anti-aliasing for all fonts of the family Arial.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Also, the X server is queried to list all of its fonts; the XLFD contains
|
|||
|
just enough information to match fonts roughly.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Here's a list of attributes used in matching fonts (in priority order, this
|
|||
|
may not be up to date anymore!):
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
foundry font foundry (string, like <Quote>monotype</Quote>)
|
|||
|
encoding font encoding (string, like <Quote>iso8859-1</Quote>)
|
|||
|
spacing font spacing (integers or proportional (0), mono (100),
|
|||
|
charcell (110))
|
|||
|
bold is the font bold? (boolean)
|
|||
|
italic is the font italic? (boolean)
|
|||
|
antialias is the font anti-aliased? (boolean)
|
|||
|
family font family (string)
|
|||
|
size font size (double)
|
|||
|
style font style (string, like "Bold Italic")
|
|||
|
slant font slant (roman, italic, oblique)
|
|||
|
weight font weight ( integers or light, medium (100), demi-bold,
|
|||
|
bold, black)
|
|||
|
rasterizer not yet used (probably "TrueType", "Type1", ...)
|
|||
|
outline are outlines available? (boolean)
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
</Sect4>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect4>
|
|||
|
<Title>XftConfig Syntax</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<ItemizedList>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<BridgeHead renderas=sect3>dir</BridgeHead>
|
|||
|
|
|||
|
<Para>
|
|||
|
Adds a directory to the list of places Xft will look for fonts. There is no
|
|||
|
particular order implied by the list; Xft treats all fonts about the same.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<BridgeHead renderas=sect3>include and includeif</BridgeHead>
|
|||
|
|
|||
|
<Para>
|
|||
|
Cause Xft to load more configuration parameters from the indicated file.
|
|||
|
"includeif" doesn't elicit a complaint if the file doesn't exist. If the
|
|||
|
file name begins with a <Quote>~</Quote> character, it refers to a path
|
|||
|
relative to the home directory of the user. This is useful for
|
|||
|
user-specific configurations.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<BridgeHead renderas=sect3>match edit</BridgeHead>
|
|||
|
|
|||
|
<Para>
|
|||
|
If a pattern from an application matches the pattern after
|
|||
|
<Quote>match</Quote>, it is edited with the instructions in
|
|||
|
<literal>edit</literal>. The pattern match is done as follows:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<LiteralLayout>
|
|||
|
match <Literal>qual FIELD-NAME COMPARE CONSTANT</Literal>
|
|||
|
</LiteralLayout>
|
|||
|
</Para>
|
|||
|
<Para>
|
|||
|
where qual is either <Literal>any</Literal> (matches one specific font)
|
|||
|
or <Literal>all</Literal> (matches all fonts). An example:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match all foundry==<3D>monotype<70>
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
which will match (and edit) all fonts belonging to the foundry
|
|||
|
<Quote>monotype</Quote>.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match any family==<3D>arial<61>
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
will match (and edit) one specific font with the family name
|
|||
|
<Quote>arial</Quote>.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>FIELD-NAME</Literal> is any one of the properties found in the
|
|||
|
above section <Link LinkEnd="xftstructure">Structure</Link>, or additionally:
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
pixelsize font size in pixels (integer)
|
|||
|
charspace character space (integer)
|
|||
|
minspace minimal spacing (integer)
|
|||
|
rgba color hinting (string <20>rgb<67> or <20>bgr<67> and
|
|||
|
vertical hinting <20>vrgb<67> <20>vbgr<67>), aka sub-pixel hinting
|
|||
|
xlfd x server font (string, type xlsfonts to
|
|||
|
see a list of your xlfd strings)
|
|||
|
file the font file (string)
|
|||
|
core use X core fonts? (boolean)
|
|||
|
render use render fonts? (boolean)
|
|||
|
index I have no idea what this does:)
|
|||
|
scalable is the font scalable (boolean)
|
|||
|
scale scale the font (integer)
|
|||
|
charwidth character width (integer)
|
|||
|
charheight character height (integer)
|
|||
|
matrix no idea (not really at least)
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>COMPARE</Literal> can be <Literal><</Literal>,
|
|||
|
<Literal>></Literal>, or <Literal>==</Literal>.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>CONSTANT</Literal> is the value of the field-name in the
|
|||
|
appropriate type (see above section <Link
|
|||
|
LinkEnd="xftstructure">Structure</Link>).
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You can use multiple matches before you use the <Quote>edit</Quote>
|
|||
|
statement:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<LiteralLayout>
|
|||
|
edit <Literal>FIELD-NAME ASSIGN EXPR SEMI</Literal>
|
|||
|
</LiteralLayout>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Where <Literal>ASSIGN</Literal> can be one of <Literal>=</Literal>,
|
|||
|
<Literal>+=</Literal> or <Literal>=+</Literal>. With
|
|||
|
<Literal>=</Literal>, the matching value in the pattern will be replaced
|
|||
|
by the given expression. <Literal>+=</Literal> or <Literal>=+</Literal>
|
|||
|
will prepend/append a new value to the list of values for the indicated
|
|||
|
field.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>EXPR</Literal> sets the <Literal>FIELD-NAME</Literal> to a value.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>SEMI</Literal> is a semicolon (<Literal>;</Literal>). You can
|
|||
|
use multiple instructions, separated by a semicolon. See below for
|
|||
|
examples if this is confusing.
|
|||
|
</Para>
|
|||
|
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
</Sect4>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect4>
|
|||
|
<Title>XftConfig Examples</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
And now I<>ll try to list a few useful configurations and explain them. Note
|
|||
|
that it is configured for my system, and I may use different fonts than you,
|
|||
|
so try to adapt the examples to your own needs.
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
<OrderedList>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
How do I make fonts available to Xft?
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
List your Type 1 and TrueType font directories with <Quote>dir</Quote>. On my
|
|||
|
system (Mandrake 7.2) this becomes:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
dir "/usr/X11R6/lib/X11/fonts/Type1"
|
|||
|
dir "/usr/X11R6/lib/X11/fonts/drakfont"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
How do I use a user specific XftConfig file?
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Put an <Filename>.xftconfig</FileName> file in your user directory and add:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
includeif "~/.xftconfig"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
to your standard <Filename>XftConfig</FileName>. This will enable a user
|
|||
|
specific configuration file, but it will not complain if there is no such
|
|||
|
file.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
How do I make aliases for my fonts?
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
I noted that my KDE console asks for <Quote>mono</Quote> fonts when it is
|
|||
|
looking for a fixed font. <Quote>console</Quote> is used when I select
|
|||
|
<Quote>linux</Quote> in the font menu of the KDE konsole. Therefore, I used
|
|||
|
two aliases for fonts which are also named <Quote>fixed</Quote>:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match any family == "fixed" edit family =+ "mono";
|
|||
|
match any family == "console" edit family =+ "mono";
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Anti-aliasing my fonts are blurry and makes me dizzy!
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Although there is a big fuzz around AA in X, good fonts actually look better
|
|||
|
if they are not anti-aliased. The anti-aliasing blurs the fonts by adding
|
|||
|
gray pixels to the edges, and this may strain your eyes if you looking at
|
|||
|
them for a long time. (Your eyes will try to get the fonts sharper, which
|
|||
|
of course is not working because they are blurred;) However, for very small
|
|||
|
fonts, anti-aliasing may increase the readability of the fonts, because with
|
|||
|
sharp edges, there are too little pixels available for your mind to figure
|
|||
|
out what it means. And for bigger fonts, the edges become very jagged when
|
|||
|
not anti-aliased, so here you also might want to have aliased fonts. Of course
|
|||
|
you can also turn off the anti-aliasing for specific fonts. In other
|
|||
|
operating systems, most truetype fonts are not anti-aliased between 8 and 12
|
|||
|
pixels, while only large Type1 fonts are anti-aliased.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Use the following in your <Filename>XftConfig</FileName> to anti-alias only
|
|||
|
fonts of specific sizes:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match
|
|||
|
any size > 8
|
|||
|
any size < 15
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
My fixed fonts do not appear or look _very_ wrong in the KDE konsole or
|
|||
|
similar programs!
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
I noted that somehow a lot of fixed font do not tell Xft that they are
|
|||
|
fixed, and thus, mono spaced. Therefore only a part of the font is
|
|||
|
displayed. We can manually set the spacing for these fonts (this assumes you
|
|||
|
have fixed aliased with mono as in question 3 above):
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match
|
|||
|
any family == "mono"
|
|||
|
edit
|
|||
|
spacing = mono;
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
My Symbol, Webdings, etc. fonts do not show up!
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
For some reason some (symbol) fonts are not correctly recognized, and Xft
|
|||
|
will show your default font, or a font which has the closest match (which
|
|||
|
is generally not what you mean at all). For Adobe Symbol and MS-webdings I
|
|||
|
did the following to get them working:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match
|
|||
|
any family == "webdings"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
|
|||
|
match
|
|||
|
any family == "symbol"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
A useful way of figuring out these things is to activate debugging with:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
export XFT_DEBUG=1024
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
This will generate a lot of output, especially if you have many fonts,
|
|||
|
because it lists the properties and scores of every font available. You can
|
|||
|
also use other values. For a nice summary of what happens (requested font,
|
|||
|
XftConfig substitutions, X server additions and the finally matched font),
|
|||
|
you can use XFT_DEBUG=2.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Why do my KDE programs start now soooo slooow?
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
The Xft mechanism in XFree prior to 4.1 had to parse the
|
|||
|
<Filename>XftConfig</FileName> file each time a program was started. And the
|
|||
|
info of all these fonts had to be re-read. As of X 4.1.0, a cache is used
|
|||
|
and starting applications using Xft is much faster. Especially if you have
|
|||
|
many fonts this can be very useful. So, upgrading XFree86, and related
|
|||
|
packages, is a good idea.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
I have a LCD screen on my laptop, can I use sub-pixel hinting instead of
|
|||
|
normal anti-aliasing?
|
|||
|
</Para>
|
|||
|
<Para>
|
|||
|
Yes you can. Sub-pixel hinting uses colors instead of gray pixels to do the
|
|||
|
AA. I do not have a LCD screen so I do not have any idea of how it looks
|
|||
|
but you can play with the <quote>rgba</quote> setting. Try:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
match edit rgba=bgr;
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
or use rgb if you have a different type of monitor. For vertical AA you can
|
|||
|
try vbgr and vbgr.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
My fonts still look bad!
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Good quality fonts are needed to start with. If you do not have some good
|
|||
|
TrueType fonts, it is worth it to go and look for them on the Internet.
|
|||
|
Other reasons why your fonts still look bad can be because of your build of
|
|||
|
freetype2. Snapshots versions before 2.0.2 were compiled with an option
|
|||
|
that had some patent issues. Therefore, the standard 2.0.2 and 2.0.3
|
|||
|
compiles without this option. To fix this, download the freetype2 source
|
|||
|
rpm and change in include/freetype/config/ftoption.h line 314:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
to:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
and rebuild with this modified source. See the freetype2
|
|||
|
<Filename>README</FileName> file for details. Adobe Courier looks terrible
|
|||
|
on my system, so I made an alias so that Lucida console is displayed
|
|||
|
instead. If anyone can get it to display nicely I would appreciate knowing
|
|||
|
about it.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</OrderedList>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
This is my <Filename>XftConfig</FileName>:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
#
|
|||
|
# XftConfig
|
|||
|
#
|
|||
|
# By: Danny Tholen
|
|||
|
#
|
|||
|
# Use with Type1 and TrueType fonts
|
|||
|
#
|
|||
|
|
|||
|
dir "/usr/X11R6/lib/X11/fonts/Type1"
|
|||
|
dir "/usr/X11R6/lib/X11/fonts/drakfont"
|
|||
|
dir "/usr/share/fonts/default/Type1"
|
|||
|
|
|||
|
#
|
|||
|
# alias 'fixed' and 'console' for 'mono'
|
|||
|
# (some programs ask for 'mono' if they mean 'fixed';)
|
|||
|
#
|
|||
|
match any family == "fixed" edit family =+ "mono";
|
|||
|
match any family == "console" edit family =+ "mono";
|
|||
|
|
|||
|
|
|||
|
#
|
|||
|
#Check users config file
|
|||
|
#
|
|||
|
includeif "~/.xftconfig"
|
|||
|
|
|||
|
|
|||
|
#
|
|||
|
# Use TrueType fonts for defaults
|
|||
|
# Danny: disabled
|
|||
|
#match any family == "serif" edit family += "Times New Roman";
|
|||
|
#match any family == "sans" edit family += "Verdana";
|
|||
|
|
|||
|
|
|||
|
#
|
|||
|
# Use lucida console as default fixed type font
|
|||
|
# and set the spacing of "mono" to 100, this
|
|||
|
# fixes broken fonts which are fixed, but do not
|
|||
|
# set mono-spacing.
|
|||
|
match
|
|||
|
any family == "mono"
|
|||
|
edit
|
|||
|
family += "lucida console";
|
|||
|
spacing = 100;
|
|||
|
|
|||
|
|
|||
|
#
|
|||
|
# Alias between XLFD families and font file family name, prefer local fonts
|
|||
|
#
|
|||
|
match any family == "Charter" edit family += "Bitstream Charter";
|
|||
|
match any family == "Bitstream Charter" edit family =+ "Charter";
|
|||
|
|
|||
|
match any family == "Lucidux Serif" edit family += "LuciduxSerif";
|
|||
|
match any family == "LuciduxSerif" edit family =+ "Lucidux Serif";
|
|||
|
|
|||
|
match any family == "Lucidux Sans" edit family += "LuciduxSans";
|
|||
|
match any family == "LuciduxSans" edit family =+ "Lucidux Sans";
|
|||
|
|
|||
|
match any family == "Lucidux Mono" edit family += "LuciduxMono";
|
|||
|
match any family == "LuciduxMono" edit family =+ "Lucidux Mono";
|
|||
|
|
|||
|
|
|||
|
#
|
|||
|
# TrueType font aliases
|
|||
|
#
|
|||
|
match any family == "Comic Sans" edit family += "Comic Sans MS";
|
|||
|
match any family == "Comic Sans MS" edit family =+ "Comic Sans";
|
|||
|
match any family == "Trebuchet" edit family += "Trebuchet MS";
|
|||
|
match any family == "Trebuchet MS" edit family =+ "Trebuchet";
|
|||
|
match any family == "Monotype" edit family =+ "Monotype.com";
|
|||
|
match any family == "Andale Mono" edit family += "Monotype.com";
|
|||
|
match any family == "Monotype.com" edit family =+ "Andale Mono";
|
|||
|
|
|||
|
|
|||
|
# Danny:
|
|||
|
# set the AA for different fonts
|
|||
|
#
|
|||
|
# most TT fonts do not need to be aliased between
|
|||
|
# 8 and 15 points, although this might be a matter of taste.
|
|||
|
match
|
|||
|
any size > 8
|
|||
|
any size < 15
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
|
|||
|
|
|||
|
# Danny: Courier looks terrible, and I
|
|||
|
# cannot get most characters to fit nicely
|
|||
|
# in their space. So I use courier 10 pitch
|
|||
|
match
|
|||
|
any family == "courier"
|
|||
|
edit
|
|||
|
family += "courier 10 pitch";
|
|||
|
|
|||
|
|
|||
|
# these are symbols, and for some reason this needs to be added!:
|
|||
|
|
|||
|
match
|
|||
|
any family == "webdings"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
match
|
|||
|
any family == "symbol"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
match
|
|||
|
any family == "Standard Symbols L"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
match
|
|||
|
any family == "dingbats"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
match
|
|||
|
any family == "Cursor"
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
encoding += "glyphs-fontspecific";
|
|||
|
|
|||
|
|
|||
|
# maybe arial looks better like this?:
|
|||
|
match
|
|||
|
any family == "Arial"
|
|||
|
any size > 7
|
|||
|
any size < 15
|
|||
|
edit
|
|||
|
antialias = false;
|
|||
|
|
|||
|
|
|||
|
# end
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect4>
|
|||
|
</Sect3>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
|
|||
|
<sect3 id="gtkaa">
|
|||
|
<title>GTK and GNOME</title>
|
|||
|
<para>
|
|||
|
As mentioned above, KDE and QT do have solid anti-aliasing support with
|
|||
|
recent releases. GNOME-2 has just recently been released as of this writing
|
|||
|
(as of Aug 2002), and does have support for anti-aliasing, though is
|
|||
|
not in widespread use (yet).
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
There is also the gdkxft project available at
|
|||
|
<ulink url="http://sourceforge.net/projects/gdkxft/">http://sourceforge.net/projects/gdkxft/</ulink>.
|
|||
|
This will add anti-aliasing support to GTK+ 1.2 applications (only!). This is
|
|||
|
a stand-alone library and not a patch. It will only effect GTK+ 1.x widgets
|
|||
|
(many of them but not all). There are some limitations, but mostly it works
|
|||
|
as advertized. Read the included <filename>README</filename> closely, and
|
|||
|
follow the instructions. An initial installation provides a good starting
|
|||
|
point. I added some font families to <filename>/etc/gdkxft.conf</filename>
|
|||
|
and I used some of Danny's suggestions above, and it seems to work
|
|||
|
<application>mostly</application>. It's a bit of a kludge, but quite a nice
|
|||
|
kludge ;-) Note, sadly this project seems to be no longer maintained.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
There is also a couple of ways to get this working with Mozilla! On the same
|
|||
|
page above is a replacement library that can be substituted for the Mozilla
|
|||
|
library of the same name. Just a drop in replacement. But, this did not work
|
|||
|
here (on Red Hat 7.2), it segfaulted. But building Mozilla from source with
|
|||
|
the patch listed, did indeed work nicely! This step requires gdkxft to
|
|||
|
be working as well. So it's a two step process to get Mozilla working, but
|
|||
|
worth the effort if you want the best looking pages IMHO. There are also
|
|||
|
development versions of Mozilla available from
|
|||
|
<ulink
|
|||
|
url="ftp://ftp.mozilla.org/pub/mozilla/nightly/experimental/xft/">ftp://ftp.mozilla.org/pub/mozilla/nightly/experimental/xft/</ulink>
|
|||
|
that have Xft/TrueType support (see <link linkend="mozilla">the section
|
|||
|
on Mozilla below</link>). Native Mozilla Xft support is probably working
|
|||
|
its way into mainstream releases. [Note: This should happen with Mozilla
|
|||
|
1.2.]
|
|||
|
|
|||
|
</para>
|
|||
|
<!--
|
|||
|
<para>
|
|||
|
For RPM users, there is a spec file in the tarball, and an RPM can be built
|
|||
|
with <quote>rpm -tb <tarball>.tgz</quote>. Then install the binary RPM
|
|||
|
that is produced from that.
|
|||
|
|
|||
|
</para>
|
|||
|
-->
|
|||
|
</sect3>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect3>
|
|||
|
<Title>Afterword</Title>
|
|||
|
<Para>
|
|||
|
You've gone through all the steps, and verified that the
|
|||
|
<Quote>RENDER</Quote> extension is available, but you don't perceive a
|
|||
|
difference? Well, maybe the applications themselves just aren't there yet,
|
|||
|
and are not able to utilize these new features. Netscape, for
|
|||
|
instance, is not able to take advantage of anti-aliasing.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
So how to know what does and does not make use of anti-aliasing? A quick test
|
|||
|
is to use something like xmag, or gimp, and enlarge the text considerably.
|
|||
|
Look for diagonal lines, and if they are clearly stair-stepped with no
|
|||
|
softened edges. If so, then while anti-aliasing is technically available, it
|
|||
|
is not being used. With anti-aliasing you should see gradients instead of
|
|||
|
well defined sharp edges. You can compare this with xterm and
|
|||
|
<Quote>AA</Quote>:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
|
|||
|
$ xterm -fa charter -fs 14
|
|||
|
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
You can also turn on Xft debugging:
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
$ export XFT_DEBUG=2
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<para>
|
|||
|
Then start apps from that same terminal. This will tell if anti-aliasing is
|
|||
|
active for each font as its processed. This also gives some insight into
|
|||
|
how Xft understands font names and other details.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
One final point: anti-aliasing and TrueType are completely separate
|
|||
|
issues. One does not depend on the other, though both together can can
|
|||
|
enhance appearance significantly. Especially, with good quality TrueType
|
|||
|
fonts! But any font can potentially be anti-aliased.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
</Sect3>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Red Hat 7.x and 8.x Differences</Title>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
<sect3>
|
|||
|
<title>Red Hat 7.x</title>
|
|||
|
<Para>
|
|||
|
Red Hat 7.0 introduced some changes to X configuration over previous Red Hat
|
|||
|
versions. It is also different from the stock XFree86 configuration as
|
|||
|
addressed above. Notable differences:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<ItemizedList>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Both XFree86 3.3.6 and 4.x are included. If upgrading you may wind up
|
|||
|
with 3.3.6. The X configuration file is <Filename>XF86Config</FileName> for
|
|||
|
3.3.6 and <Filename>XF86Config-4</FileName> for 4.x. Of course, you'll need
|
|||
|
to know which is which for editing and configuration purposes.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
xfs is still handling all font duties. A default Red Hat 7.x installation
|
|||
|
does not use the 'modules' section of XF86Config-4 for font handling.
|
|||
|
Instead it relies on xfs, which has this capability built in. This is
|
|||
|
different from a stock installation of XFree86 4.x where the X server does
|
|||
|
all the font work -- including TrueType.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The socket for xfs is "unix/:7100" with RH 7.x, as opposed to "unix/:-1" in
|
|||
|
previous versions (i.e. Red Hat 6.x).
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
As of Red Hat 7.1, the xfs init script actually runs
|
|||
|
<command>mkfontdir</command> and <command>ttmkfdir</command> on
|
|||
|
font directories known to xfs. So this step is not necessary when
|
|||
|
new fonts are added. Just restart xfs.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
</Para>
|
|||
|
</sect3>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
<sect3 id="rh80">
|
|||
|
<title>Red Hat 8.0</title>
|
|||
|
<para>
|
|||
|
Red Hat 8.0 still includes XFree86 4.2, but it includes some significant
|
|||
|
changes! It is not clear at this time whether these are running changes
|
|||
|
to 4.2, or Red Hat has ported changes that are scheduled to appear in
|
|||
|
the soon to be released XFree86 4.3. Noteworthy changes:
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<itemizedlist>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
XFree86 3.3.6 is no longer bundled.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
<filename>XF86Config-4</filename> is deprecated in favor of
|
|||
|
<filename>XF86Config</filename> (X still uses the former if available
|
|||
|
though).
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
The next generation of Xft is now used: Xft2! This means significant
|
|||
|
changes to font configuration, i.e <filename>XftConfig</filename> is no
|
|||
|
longer used in favor of <filename>/etc/fonts/font.conf</filename>, which
|
|||
|
is now an xml document (with much of the same functionality). See
|
|||
|
man fontconfig, and fc-cache.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
The preferred location for fonts is now
|
|||
|
<filename>/usr/share/fonts/</filename> and <filename>~/.fonts/</filename>.
|
|||
|
The system will automatically recognize, and include, any fonts (including
|
|||
|
TrueType) in these locations. See
|
|||
|
<filename>/etc/fonts/fonts.conf</filename>.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
Red Hat 8.0 of course includes GNOME-2, which has native anti-aliasing
|
|||
|
support for GTK apps.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
The xfs font server is still being used.
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
|
|||
|
</itemizedlist>
|
|||
|
</para>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</sect3>
|
|||
|
</Sect2>
|
|||
|
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<Sect1 id="apps">
|
|||
|
<Title>Adjusting Fonts in Specific Applications</Title>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2>
|
|||
|
<Title>Netscape</Title>
|
|||
|
|
|||
|
<para>
|
|||
|
Note that Netscape 4.x should be considered obsolete these days. There
|
|||
|
are much better choices including Mozilla, Galeon and Konqueror. This
|
|||
|
section is being maintained for historical reasons; for those users
|
|||
|
who may have to use older Netscapes for one reason or another; and
|
|||
|
because it may have relevance to other applications.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Let's face it, Netscape is an important application in Linux. We all use it,
|
|||
|
and we all need it, so let's look at it specifically for a minute. An out of
|
|||
|
the box Netscape installation is prone to the font problems we've discussed --
|
|||
|
large fonts that get pixelized, splotchy looking fonts, fonts so small they
|
|||
|
are unreadable. In short, ugly. Maybe this is why you are here?
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Hopefully, at this point you have followed the above suggestions. These steps
|
|||
|
can help greatly. TrueType font availability is almost a necessity. Many web
|
|||
|
pages specify font families -- like Arial -- that are not typically available
|
|||
|
to Linux users. This is bad design, but having some of the basic TrueType
|
|||
|
fonts available will help greatly in overcoming the short-sightedness of some
|
|||
|
designers. Microsoft -- can't live with 'em, can't live without 'em.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Assuming you have TrueType working, from the Netscape menu select
|
|||
|
<Literal>Edit -> Preferences -> Fonts</Literal>. Open the <Literal>Variable
|
|||
|
Width Font</Literal> droplist on the right side of the window. Your TrueTypes
|
|||
|
should be there along with other fonts. Choose which ever one suits your fancy
|
|||
|
as the default. Check the <Literal>Allow Scaling</Literal> checkbox too. If
|
|||
|
the available point sizes are 0 and 12, you can go down and, and enter your
|
|||
|
desired point size in the box to the right and click on the
|
|||
|
<Literal>OK</Literal> button. The down-side to this is that Netscape will not
|
|||
|
remember these settings, and you will have to do this each time you start
|
|||
|
Netscape. <Emphasis>Unless</Emphasis> -- you have
|
|||
|
<FileName>fonts.alias</FileName> set up already. Then this will solve these
|
|||
|
problems. See <Xref LinkEnd="falias"> for more on <FileName>fonts.alias</FileName>.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You might consider experimenting with some <FileName>~/.Xdefaults</FileName> (or
|
|||
|
perhaps it's<FileName>~/.Xresources</FileName> on your system) settings too:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
Netscape*DocumentFonts.sizeIncrement: 10
|
|||
|
Netscape*documentFonts.maximumPoints: 240
|
|||
|
Netscape*documentFonts.xResolution*iso-8859-1: 120
|
|||
|
Netscape*documentFonts.yResolution*iso-8859-1: 120
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
The 'sizeIncrement' controls how much of a jump Netscape makes when different
|
|||
|
'basefont' sizes are specified ala:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<basefont size=7>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
for instance. The default is '20', which is a pretty good jump. Changing this
|
|||
|
can help Netscape from scaling to too large and too small of a font. The x and
|
|||
|
y resolutions are roughly equivalent to 'dpi' settings. Any random number
|
|||
|
within reason can be used here. Experiment. Note: Mozilla does not use
|
|||
|
this kind of configuration!
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Then run:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
$ xrdb -merge ~/.Xdefaults
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
(or <FileName>.Xresources</FileName> as the case may be) and restart Netscape.
|
|||
|
There are many settings that can be tweaked or altered this way. Look at the
|
|||
|
<FileName>Netscape.ad</FileName> (app defaults) file that should be included
|
|||
|
with Netscape packages.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If this approach does not get the job done as far as the 'tiny fonts' problem
|
|||
|
in Netscape, then see the <Filename>fonts.alias</FileName> section above. You
|
|||
|
can really fine tune many things with this approach.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
|
|||
|
<sect2 id="mozilla">
|
|||
|
<title>Mozilla</title>
|
|||
|
<para>
|
|||
|
Mozilla configuration should be roughly the same in many respects, but
|
|||
|
it does not use the Xresources type X configuration. You might find, however,
|
|||
|
that Mozilla does a much better job of handling fonts, and pages will look
|
|||
|
better overall. Highly recommended! The only caveat is, it seems to need a
|
|||
|
fairly fast system. It may be pretty sluggish on older hardware.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Also, some user preferences can be stored in
|
|||
|
<quote><filename>user.js</filename></quote> and
|
|||
|
<quote><filename>unix.js</filename></quote>. Not to be confused with
|
|||
|
<quote><filename>prefs.js</filename></quote>. <filename>user.js</filename>
|
|||
|
will likely have to be created by hand. Put
|
|||
|
it in whatever <filename>.mozilla</filename> sub-directory you find
|
|||
|
<filename>prefs.js</filename> in (this is not a consistent location, but
|
|||
|
typically ends like <filename>*.slt</filename>). Attempt to set a minimum
|
|||
|
font size:
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
|
|||
|
// Don't ever show me a font smaller than this: some samples.
|
|||
|
user_pref("font.min-size.variable.", 12);
|
|||
|
user_pref("font.min-size.variable.x-western", 12);
|
|||
|
user_pref("font.min-size.fixed.x-western", 12);
|
|||
|
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Other customizations can be made in <filename>userChrome.css</filename>
|
|||
|
and <filename>userContent.css</filename>. Again, both should be placed in
|
|||
|
the same directory as <filename>prefs.js</filename>. These files control
|
|||
|
much of the <quote>UI</quote> (the skin outside the browser window).
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
More info is available from the Mozilla developers:
|
|||
|
<ulink url="http://www.mozilla.org/unix/customizing.html">http://www.mozilla.org/unix/customizing.html</ulink>.
|
|||
|
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
It is also possbible to have anti-aliasing of fonts with Mozilla now. This
|
|||
|
might be a bit of work to get going at this time (Aug 2002), but it is
|
|||
|
possible. See the next section.
|
|||
|
</para>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New section ~~~~~ -->
|
|||
|
<sect3 id="moz-xft">
|
|||
|
<title>Mozilla with Xft</title>
|
|||
|
<para>
|
|||
|
As mentioned above, the Xft extensions that give us anti-aliasing, and
|
|||
|
improved font handling, are slowly being rolled into Mozilla development.
|
|||
|
Such packages are often labeled as <quote>TrueType</quote> enabled. The
|
|||
|
reasoning being that they include native support for TrueType from within
|
|||
|
Mozilla. Note, that seems to be a bit of misnomer since properly installed
|
|||
|
TrueType fonts work quite well, even with ancient versions of Mozilla (though
|
|||
|
no anti-aliasing). The difference being that Mozilla does some of its own
|
|||
|
TrueType work.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
There are many builds of Mozilla available, and it is not so easy to know
|
|||
|
which have Xft support. There are tips for knowing if your installed version
|
|||
|
does have this support, and then how to enable it here: <ulink
|
|||
|
url="http://www.mozilla.org/projects/fonts/unix/enabling_truetype.html">http://www.mozilla.org/projects/fonts/unix/enabling_truetype.html</ulink>.
|
|||
|
Worse comes to worse, you can download experimental versions from: <ulink
|
|||
|
url="ftp://ftp.mozilla.org/pub/mozilla/nightly/experimental/xft/">ftp://ftp.mozilla.org/pub/mozilla/nightly/experimental/xft/</ulink>.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
For whatever reason, Mozilla has its own Xft configuration, that is
|
|||
|
independent of other system components. You must turn it on, and configure
|
|||
|
it (unless your vendor has done this already)! I know what you are saying,
|
|||
|
<quote>one more place to configure fonts, sigh ...</quote>.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
The above page explains rather tersely how to do this. The highlights:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
Requirements:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<simplelist>
|
|||
|
<member>
|
|||
|
· XFree86 4.x with Xft support.
|
|||
|
</member>
|
|||
|
<member>
|
|||
|
· FreeType2 libraries.
|
|||
|
</member>
|
|||
|
<member>
|
|||
|
· Mozilla with Xft support.
|
|||
|
</member>
|
|||
|
<member>
|
|||
|
· TrueType fonts.
|
|||
|
</member>
|
|||
|
</simplelist>
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Configuration:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You will need to hand edit the relevant <filename>unix.js</filename>
|
|||
|
file, which is typically installed as
|
|||
|
<filename>/usr/lib/mozilla-*/defaults/pref/unix.js</filename>, or
|
|||
|
a similar location.
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You will need to enable <literal>FreeType2</literal> (and possibly
|
|||
|
define the version), and then list the directories that contain your TrueType
|
|||
|
fonts (each listing must be uniquely identified, see example). Sample
|
|||
|
excerpt:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
// TrueType ///////////////////////////////////////////
|
|||
|
pref("font.FreeType2.enable", true);
|
|||
|
pref("font.freetype2.shared-library", "libfreetype.so.6");
|
|||
|
|
|||
|
// if libfreetype was built without hinting compiled in
|
|||
|
// it is best to leave hinting off. try it both ways to see.
|
|||
|
pref("font.FreeType2.autohinted", true);
|
|||
|
pref("font.FreeType2.unhinted", false);
|
|||
|
|
|||
|
// below a certian pixel size anti-aliased fonts produce poor results
|
|||
|
pref("font.antialias.min", 10);
|
|||
|
pref("font.embedded_bitmaps.max", 1000000);
|
|||
|
pref("font.scale.tt_bitmap.dark_text.min", 64);
|
|||
|
pref("font.scale.tt_bitmap.dark_text.gain", "0.8");
|
|||
|
|
|||
|
// sample prefs for TrueType font dirs
|
|||
|
//pref("font.directory.truetype.1", "/u/sam/tt_font");
|
|||
|
//pref("font.directory.truetype.2", "/u/sam/other/tt_font");
|
|||
|
pref("font.directory.truetype.1", "/usr/share/fonts/truetype");
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
The <literal>//</literal> characters are comments. Then restart
|
|||
|
Mozilla. You should see it processing each font in the directories
|
|||
|
you specified (if started from the command line). You then need to
|
|||
|
go into the Mozilla font configuration (Edit -> Preferences
|
|||
|
-> Appearance -> Fonts), and select the appropriate fonts — these
|
|||
|
must be the ones that are listed with <emphasis>the first letter as upper
|
|||
|
cased</emphasis>:
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
<screen>
|
|||
|
Afga-monotype-arial-iso8859-1
|
|||
|
</screen>
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
This should now give you TrueType fonts <emphasis>with</emphasis>
|
|||
|
anti-aliasing! Quite nice!
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You should experiment with the <quote>hinting</quote> preferences. Having
|
|||
|
hinting enabled made a significant improvement here.
|
|||
|
</para>
|
|||
|
|
|||
|
</sect3>
|
|||
|
</sect2>
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New Section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<Sect1 id="end">
|
|||
|
<Title>Odds and Ends</Title>
|
|||
|
|
|||
|
|
|||
|
<Sect2 id="notes">
|
|||
|
<Title>Notes</Title>
|
|||
|
|
|||
|
<ItemizedList>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Unfortunately there is no unified font handling system for Linux. You will have
|
|||
|
to configure each individual program so you can use TrueType, Type 1 or fonts
|
|||
|
that pique your fancy. And each program may well have its own way of doing
|
|||
|
this so you will have to RTFM. Desktop Environments like GNOME and KDE may
|
|||
|
provide much of this functionality however for apps that are under their
|
|||
|
control.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Most GUI apps should be able to use TrueType, and Type 1 fonts too.
|
|||
|
Wordperfect for Linux, however, cannot use TrueType. (See the
|
|||
|
links section below for more on Wordperfect.) Text editors, terminal programs
|
|||
|
and the like need fixed width fonts, and do not play well with TrueType or
|
|||
|
other proportional fonts.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Though not discussed here, Type 1 fonts provide many of the same benefits
|
|||
|
as TrueType and are historically better supported in the Unix world,
|
|||
|
especially for printing. XFree86 still seems to render TrueType somewhat
|
|||
|
better than Type 1. You likely have many of these installed already.
|
|||
|
Unfortunately however, Type 1 are not a web standard like TrueType. But
|
|||
|
they are suitable for many other purposes. They are where it's at for
|
|||
|
printing. See <Ulink URL="http://www.ghostscript.com/">ghostscript</Ulink>
|
|||
|
for more on this.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
While it is possible to specify a default point size for the xfs font
|
|||
|
server, very few applications will actually use this value.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Abiword comes with a suite of fonts, called 'Abisuite'. Apparently,
|
|||
|
some of these fonts have the same names as some of the well known MS
|
|||
|
TrueType fonts: Arial, etc. And apparently, these are not as good
|
|||
|
quality. And because of the way X searches for fonts, it may find these
|
|||
|
first and use these, even if the 'real' ones are installed and may be the
|
|||
|
preferred choice. The solution is to either make sure your preferred fonts
|
|||
|
come first in the FontPath or maybe to uninstall 'Abisuite' if it's not
|
|||
|
needed.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The new Xft rendering extensions of XFree86 4.x will mostly supplant
|
|||
|
similar features as provided by xfs, and older XFree86 extensions. For
|
|||
|
instance, font aliasing should be done in <Filename>XftConfig</FileName>
|
|||
|
if the new extensions are being used. This would only be true where
|
|||
|
the application is built against a toolkit (like QT or GTK) that supports
|
|||
|
the new extensions. This is still not universally supported.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<Sect2 id="links">
|
|||
|
<Title>Links</Title>
|
|||
|
|
|||
|
<ItemizedList>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.xfree86.org">XFree86 Project</Ulink>, the guys and gals
|
|||
|
who do an incredible amount of work to give us a killer GUI environment. An
|
|||
|
overview of XFree86 fonts:
|
|||
|
<Ulink url="http://www.xfree86.org/current/fonts.html">XFree86 4.x</Ulink>.
|
|||
|
And an explanation of Xft:
|
|||
|
<ulink url="http://www.keithp.com/~keithp/render/Xft.tutorial">http://www.keithp.com/~keithp/render/Xft.tutorial</ulink>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<listitem>
|
|||
|
<para>
|
|||
|
The Fontconfig home page is <ulink
|
|||
|
url="http://fontconfig.org">http://fontconfig.org</ulink>, for all the
|
|||
|
latest news on Xft and fontconfig (the future of X font handling).
|
|||
|
</para>
|
|||
|
</listitem>
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The
|
|||
|
<Ulink url="http://linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html">Video
|
|||
|
Timings HOWTO</Ulink>, the ins and outs of getting the most from your monitor.
|
|||
|
(Applicable only to XFree86 v.3.x for the most part.)
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.linuxdoc.org/HOWTO/Font-HOWTO.html">Font HOWTO</Ulink>
|
|||
|
Many good tips for installing fonts and for applications such as StarOffice,
|
|||
|
Applixware, Wordperfect, Ghostscript, TeX/LaTeX.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
A <Ulink URL="http://www.moisty.org/~brion/linux/TrueType-HOWTO.html">TrueType HOWTO</Ulink>, good tips for printing, and a few application specific tips.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">xfsft Homepage</Ulink>,
|
|||
|
TrueType font support for X. This is the origin of the "freetype" font module
|
|||
|
for XFree86 4.x, and Red Hat's xfs. Good site, and good links to other
|
|||
|
information related to fonts and TrueType.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink url="http://home.c2i.net/dark/linux.html">Some Linux for Beginners</Ulink>. Great font site, and other Linux topics. Covers many of the topics
|
|||
|
discussed here in more detail. Some font and other tips for
|
|||
|
Mozilla: <Ulink URL="http://home.c2i.net/dark/My_Mozilla_FAQ.html">http://home.c2i.net/dark/My_Mozilla_FAQ.html</Ulink>.
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Two guides specifically for Debian from Paul D. Smith:
|
|||
|
<Ulink URL="http://www.paulandlesley.org/linux/xfree4_tt.html">http://www.paulandlesley.org/linux/xfree4_tt.html</Ulink> and for 3.3.x:
|
|||
|
<Ulink URL="http://www.paulandlesley.org/linux/debian_tt.html">http://www.paulandlesley.org/linux/debian_tt.html</Ulink>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://X-TT.dsl.gr.jp/">X-TrueType Homepage</Ulink>, and yet
|
|||
|
another TrueType Font server, especially good for Japanese, Chinese and Korean
|
|||
|
character sets. [Note: link is bad 08/18/02.]
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Tips on font size problems from
|
|||
|
<Ulink URL="http://help.netscape.com/kb/consumer/19960513-54.html">Netscape</Ulink>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.rodsbooks.com/wpfonts/">Wordperfect for Linux -- Fonts
|
|||
|
and Printers</Ulink> by Rod Smith, the author of
|
|||
|
<CiteTitle>Using Corel Wordperfect 8 for Linux</CiteTitle>
|
|||
|
from Que. Excellent information on Wordperfect and where TrueType fits in.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
|
|||
|
<!--
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink
|
|||
|
URL="http://www.microsoft.com/typography/fontpack/default.htm">Microsoft
|
|||
|
Web Fonts</Ulink> direct from the Lion's den - and they are free! These
|
|||
|
can be unpacked in Linux (see above).
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
-->
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://sourceforge.net/projects/font-tool/">http://sourceforge.net/projects/font-tool/</Ulink>,
|
|||
|
contains the core MS TrueTyep fonts suitable for web browsing.
|
|||
|
<Ulink URL="http://packages.debian.org/unstable/graphics/msttcorefonts.html">http://packages.debian.org/unstable/graphics/msttcorefonts.html</Ulink> is a similar package for Debian.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Sebastiano Vigna's <Ulink URL="http://gongolo.usr.dsi.unimi.it/~vigna/webFonts4Linux/">
|
|||
|
http://gongolo.usr.dsi.unimi.it/~vigna/webFonts4Linux/</Ulink> automates the downloading,
|
|||
|
extracting and installation of the Microsoft fonts all in one neat
|
|||
|
package.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!--
|
|||
|
|
|||
|
Broken link...can't find again...
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.fontsmart.com/fonts.htm">HP FontSmart TrueType
|
|||
|
Fonts</Ulink>from Hewlett Packard - Garamond, Bodoni, Dark Courier, Euro Sign
|
|||
|
and Ozzie Black. These can be unzipped in Linux with the
|
|||
|
<Command>unzip</Command> utility.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
-->
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.freewareconnection.com/fonts.html">Freeware Connection
|
|||
|
-- Free Fonts Sites</Ulink> lots of links to lots of sites.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
<Ulink URL="http://www.will-harris.com/fonts/freefonts.htm">Bitstream's
|
|||
|
Geometric Slabserif</Ulink> TrueType Font.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
Two converters for converting a Mac Font <Quote>suitcase</Quote> to a *nix
|
|||
|
compatible font: <Ulink
|
|||
|
URL="http://www.macinsearch.com/infomac2/font/util/tt-converter-15.html">http://www.macinsearch.com/infomac2/font/util/tt-converter-15.html</Ulink>
|
|||
|
and
|
|||
|
<Ulink URL="http://www.netmagic.net/~evan/shareware/#TTFontConvert">http://www.netmagic.net/~evan/shareware/#TTFontConvert</Ulink>
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
The Unicode HOWTO: <Ulink
|
|||
|
URL="http://linuxdoc.org/HOWTO/Unicode-HOWTO.html">http://linuxdoc.org/HOWTO/Unicode-HOWTO.html</Ulink>
|
|||
|
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
|
|||
|
Two sources of 'free' TrueType fonts with large Unicode support are
|
|||
|
Bitstream Cyberbit, which covers Roman, Cyrillic, Greek, Hebrew, Arabic,
|
|||
|
combining diacritical marks, Chinese, Korean, Japanese, and more, and is
|
|||
|
available from <Ulink URL="ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP">ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP</Ulink>.
|
|||
|
And Lucida Sans Unicode, which is included in IBM's JDK 1.3.0beta for
|
|||
|
Linux, and covers Roman, Cyrillic, Greek, Hebrew, combining diacritical
|
|||
|
marks. This can be downloaded from <Ulink
|
|||
|
URL="ftp://ftp.maths.tcd.ie/Linux/opt/IBMJava2-13/jre/lib/fonts/">ftp://ftp.maths.tcd.ie/Linux/opt/IBMJava2-13/jre/lib/fonts/</Ulink>
|
|||
|
as LucidaSansRegular.ttf and LucidaSansOblique.ttf. Thanks to Tzafrir Cohen
|
|||
|
for these references. He also has a nice page on Hebrew fonts and related
|
|||
|
topics at <Ulink
|
|||
|
URL="http://www.iglu.org.il/faq/?file=133">http://www.iglu.org.il/faq/?file=133</Ulink>.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
<!--
|
|||
|
|
|||
|
<ListItem>
|
|||
|
<Para>
|
|||
|
I also maintain a
|
|||
|
<Ulink URL="http://feenix.burgiss.net/xstuff/xfs.html">help and
|
|||
|
trouble-shooting page</Ulink> on Red Hat's xfs. There is also an RPM there
|
|||
|
with the MS TrueType fonts, and working fonts.scale and fonts.dir in the package.
|
|||
|
</Para>
|
|||
|
</ListItem>
|
|||
|
-->
|
|||
|
|
|||
|
</ItemizedList>
|
|||
|
|
|||
|
</Sect2>
|
|||
|
|
|||
|
</Sect1>
|
|||
|
|
|||
|
<!-- ~ End section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<appendix id="appendix">
|
|||
|
<Title>Appendix: Font Servers</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
There are several font servers available that handle TrueType: xfstt, xfsft,
|
|||
|
and Red Hat's patched version of xfs based on xfsft. While these names are all
|
|||
|
too similar, these are different packages. One, or more, of these should be
|
|||
|
included with any recent Linux distribution, and you may have one installed
|
|||
|
already. If so, use which ever one your distribution is set up to use.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>xfstt</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
One such font server is xfstt. xfstt was designed specifically with TrueType
|
|||
|
fonts in mind.
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>Installation</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
xfstt is <emphasis>very</emphasis> easy to install and configure. If it isn't
|
|||
|
already installed, you'll want to download the tarball, or check your CD. The
|
|||
|
most current version can be found at <Ulink
|
|||
|
URL="http://metalab.unc.edu/pub/Linux/X11/fonts/">http://metalab.unc.edu/pub/Linux/X11/fonts/</ULink>
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Once you have the tarball, unpack it:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
$ tar -zxvf xfstt-*tgz
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Then build and install it. Read the <FileName>INSTALL</FileName> file for
|
|||
|
quick instructions, but it's a no brainer.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
From the xfstt directory is all you have to do.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# make
|
|||
|
# make install
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Then start xfstt with:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# xfstt --sync # updates xfstt's font database
|
|||
|
# xfstt & # runs xfstt in the background.
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
xfstt should be started before the X server starts. Once you have this working
|
|||
|
correctly, you can add the above lines to
|
|||
|
<FileName>/etc/rc.d/rc.local</FileName>, or other suitable start up file. Then
|
|||
|
type:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
$ xset +fp unix/:7101 # tells X about xfstt, and where to look for fonts.
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
or add:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
FontPath "unix/:7101"
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
to your <FileName>XF86Config</FileName> to tell X about the font
|
|||
|
server. Rerun <Command>xfstt --sync</Command> any time the FontPath, or
|
|||
|
contents, change.
|
|||
|
</Para>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>Adjusting the Default Font Size</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
If your TrueType fonts appear to be very tiny, the following commands
|
|||
|
may help.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Add the <Literal>-dpi</Literal> switch to your X server command
|
|||
|
line (see above to do this.)
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Use the <Literal>--res</Literal> switch to tell xfstt to increase
|
|||
|
the default resolution. Use the following command line.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# xfstt --res 120
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section id="xfs">
|
|||
|
<Title>Red Hat's xfs</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
As of Red Hat Linux 6.0, Red Hat based distributions (Mandrake, etc) have
|
|||
|
included a specially patched version of xfs, the XFree86 Font Server, and
|
|||
|
patched X servers as well. Red Hat's xfs includes the xfsft patch set which in
|
|||
|
turn is built upon the FreeType Font library. Red Hat's xfs provides similar
|
|||
|
functionality to xfstt. xfs is able to serve both TrueType and Type 1 fonts,
|
|||
|
as well as legacy X fonts.
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If you are using a Red Hat based distro, you should have xfs installed
|
|||
|
already. If not, it is in the <FileName>XFree86-xfs*rpm</FileName>. To make
|
|||
|
sure it runs as one of the default services, either use
|
|||
|
<Command>ntsysv</Command> or:
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
# chkconfig --add xfs
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Now xfs will start every time you boot.
|
|||
|
</Para>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>Setting the xfs FontPath</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
The default Red Hat installation of xfs serves fonts via a Unix Domain Socket.
|
|||
|
We'll need to tell the X server where to look for xfs, and thus fonts. The
|
|||
|
FontPath in <FileName>/etc/X11/XF86Config</FileName> must include for Red Hat
|
|||
|
6.x:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "unix/:-1"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
This is changed for Red Hat 7.x to:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
FontPath "unix/:7100"
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
At least for a default configurations. This is a reference to the socket where
|
|||
|
xfs is listening. You may include additional FontPaths, but these will be
|
|||
|
handled by the X server, and not xfs. A clean install of Red Hat 6/7 should
|
|||
|
have this already set up, but if you are upgrading from an older version, you
|
|||
|
may have to change this yourself!
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
xfs then has its own, separate FontPath stored in
|
|||
|
<FileName>/etc/X11/fs/config</FileName>. This is where it will look to find
|
|||
|
fonts. This is over and above the X server's FontPath in
|
|||
|
<FileName>XF86Config</FileName>. You can either add the new path(s) with a text
|
|||
|
editor, or use the <Command>chkfontpath</Command> command:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
# chkfontpath --add /new/font/path
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
The FontPath must exist before running <Command>chkfontpath</Command>. The
|
|||
|
relevant section of <FileName>/etc/X11/fs/config</FileName> should now look
|
|||
|
something like this:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
|
|||
|
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
|
|||
|
/usr/X11R6/lib/X11/fonts/100dpi:unscaled,
|
|||
|
/usr/X11R6/lib/X11/fonts/75dpi:unscaled,
|
|||
|
/usr/X11R6/lib/X11/fonts/Type1,
|
|||
|
/usr/X11R6/lib/X11/fonts/Speedo,
|
|||
|
/usr/X11R6/lib/X11/fonts/misc,
|
|||
|
/usr/X11R6/lib/X11/fonts/100dpi,
|
|||
|
/usr/X11R6/lib/X11/fonts/75dpi,
|
|||
|
/new/font/path
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
When adding a new FontPath for TrueType fonts, you will want to do this
|
|||
|
step after installing and preparing the fonts. See the next section.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>Getting the Fonts Ready</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
Installation and configuration is the same as for other
|
|||
|
<quote>freetype</quote> based font renderers (e.g. XFree86-4.x
|
|||
|
freetype module). See the above <link
|
|||
|
linkend="ttf-config">Configuration</link> section for details.
|
|||
|
Actually, you should just be able to install the fonts, include
|
|||
|
the new font directory to the <literal>FontPath</literal> with
|
|||
|
the <command>chkfontpath</command> utility, and then reload
|
|||
|
xfs:
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
# service xfs reload
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
</section>
|
|||
|
</section>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~ New Section ~~~~~ -->
|
|||
|
|
|||
|
<section>
|
|||
|
<Title>xfsft</Title>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Ulink url="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">xfsft</Ulink>
|
|||
|
is a TrueType solution from Juliusz Chroboczek. xfsft is based on the
|
|||
|
FreeType font library as developed by Mark Leisher and others. It is
|
|||
|
essentially is a patch for XFree86's xfs and related libraries -- xfs + ft.
|
|||
|
Red Hat's xfs is essentially xfsft with a few minor modifications. Also,
|
|||
|
XFree86 4.x includes the <Literal>freetype</Literal> font module which is also
|
|||
|
the result of Juliusz's work, and is one of the TrueType solutions available
|
|||
|
for XFree86 4.x.
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Building xfsft requires having at least some of the XFree86 source available,
|
|||
|
in addition to xfsft itself, so this is not for the faint of heart.
|
|||
|
Instructions for building and configuring xfsft are in the tarball, so I won't
|
|||
|
go into details here. They are pretty straight forward. There are links to
|
|||
|
binaries available at the xfsft home page (see above).
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
Note that you <emphasis>must</emphasis> also create
|
|||
|
<FileName>fonts.scale</FileName> and <FileName>fonts.dir</FileName> files for
|
|||
|
xfsft. <FileName>fonts.scale</FileName> can be created manually (ugh!), or with
|
|||
|
the <Command>ttmkfdir</Command> utility. This is not included with xfsft but
|
|||
|
you can get it here: <ulink
|
|||
|
url="http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz">http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz</ulink>,
|
|||
|
or probably on many Linux archives sites too. Red Hat has this as part of the
|
|||
|
<FileName>Freetype</FileName> RPM. And for Debian it is called
|
|||
|
<Command>mkttfdir </Command> and is in the <Filename>fttools</FileName>
|
|||
|
package.
|
|||
|
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
You will also need a configuration file. Here is a sample:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<BlockQuote>
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
<MSGText>
|
|||
|
<LiteralLayout>
|
|||
|
-----------------------------------------------------
|
|||
|
|
|||
|
clone-self = off
|
|||
|
use-syslog = off
|
|||
|
|
|||
|
client-limit = 20
|
|||
|
|
|||
|
catalogue = /usr/local/share/font/ttfonts
|
|||
|
|
|||
|
error-file = /home/jec/fonts/xfs.errors
|
|||
|
|
|||
|
# in decipoints
|
|||
|
default-point-size = 120
|
|||
|
|
|||
|
# x,y
|
|||
|
default-resolutions = 100,100,75,75
|
|||
|
|
|||
|
-----------------------------------------------------
|
|||
|
|
|||
|
</LiteralLayout>
|
|||
|
</MSGText>
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
</BlockQuote>
|
|||
|
|
|||
|
<Para>
|
|||
|
You can then run start xfsft:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
# xfs -port 7100 -config /path/to/your/config/file &
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
|
|||
|
<Para>
|
|||
|
You can then add xfsft to the X server's <Literal>FontPath</Literal>:
|
|||
|
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
<Literal>
|
|||
|
$ xset +fp tcp/localhost:7100
|
|||
|
</Literal>
|
|||
|
</Para>
|
|||
|
|
|||
|
<Para>
|
|||
|
If all goes well, you could then add this <Literal>FontPath</Literal> to
|
|||
|
<FileName>XF86Config</FileName>.
|
|||
|
</Para>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
</appendix>
|
|||
|
|
|||
|
<!-- ~ End Section ~ -->
|
|||
|
|
|||
|
|
|||
|
<!-- ~~~~~~~~ New section Header ~~~~~~~~~ -->
|
|||
|
|
|||
|
<appendix id="appendixb">
|
|||
|
<title>Appendix: <filename>fonts.dir</filename> to <filename>fonts.alias</filename></title>
|
|||
|
|
|||
|
<para>
|
|||
|
Thanks to Aristotle Pagaltzis for providing this perl
|
|||
|
version of a script to convert a <filename>fonts.scale</filename>
|
|||
|
file to <filename>fonts.dir</filename>.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<programlisting>
|
|||
|
<![CDATA[
|
|||
|
|
|||
|
#!/usr/bin/perl -w
|
|||
|
|
|||
|
# This utility is a direct translation right down to the comments
|
|||
|
# from mkfontalias.py written by Roman Sulzhyk to assist people
|
|||
|
# in de-uglification of their true type fonts. It creates a
|
|||
|
# fonts.alias file from the fonts.dir file found in the directory.
|
|||
|
|
|||
|
# It supports all of the Python script's features:
|
|||
|
#
|
|||
|
# - maps the following MS webfonts:
|
|||
|
# Verdana, Tahoma, Impact, Arial Black,
|
|||
|
# Comic Sans MS, Georgia, Trebuchet MS
|
|||
|
#
|
|||
|
# - cheats by mapping 6, 7 and 8pt to 9pt fonts
|
|||
|
#
|
|||
|
|
|||
|
# (c)2002 Aristotle Pagaltzis, licensed under the GPL
|
|||
|
# http://www.gnu.org/copyleft/gpl.html
|
|||
|
|
|||
|
use strict;
|
|||
|
|
|||
|
my $infile = "fonts.dir";
|
|||
|
my $outfile = "fonts.alias";
|
|||
|
|
|||
|
my @res = (75, 75);
|
|||
|
|
|||
|
my %cheat_map = (6 => 9, 7 => 9, 8 => 9);
|
|||
|
|
|||
|
my @font_sizes = (6..16, 18, 24);
|
|||
|
|
|||
|
my %font_map = (
|
|||
|
"Arial" => "Arial",
|
|||
|
"Times New Roman" => "Times New Roman",
|
|||
|
"Verdana" => "Verdana",
|
|||
|
"Tahoma" => "Tahoma",
|
|||
|
"Impact" => "Impact",
|
|||
|
"Arial Black" => "Arial Black",
|
|||
|
"Comic Sans MS" => "Comic Sans MS",
|
|||
|
"Georgia" => "Georgia",
|
|||
|
"Trebuchet MS" => "Trebuchet MS",
|
|||
|
"Courier New" => "Courier New"
|
|||
|
);
|
|||
|
|
|||
|
# Read in the fonts.
|
|||
|
open(THEFILE, "<", $infile) or die "Cannot read $infile: $! - are you sure you are in the fonts directory?\n";
|
|||
|
my @fontdir = splice @{[ <THEFILE> ]}, 1; # Strip the first line
|
|||
|
close THEFILE;
|
|||
|
|
|||
|
# Now, create the output
|
|||
|
my @aliases;
|
|||
|
foreach (@fontdir) {
|
|||
|
# Get rid of the first entry, but mind that other may have
|
|||
|
# spaces in them
|
|||
|
my $font = join(" ", splice @{[ split ]}, 1) or die "Cannot parse $infile line: $_\n";
|
|||
|
|
|||
|
my @entries = split "-", $font;
|
|||
|
|
|||
|
die "Invalid font: $font\n" unless @entries == 15;
|
|||
|
|
|||
|
my $mapped_font = $font_map{$entries[2]} or next;
|
|||
|
|
|||
|
# Create a bunch of aliases, for each size
|
|||
|
for my $size (@font_sizes) {
|
|||
|
# Do the "cheating" - fallback to size if not in the cheat map
|
|||
|
my $real_size = $cheat_map{$size} || $size;
|
|||
|
|
|||
|
# Add the entry to the aliases
|
|||
|
push @aliases, join(
|
|||
|
" ",
|
|||
|
join("-", @entries[0..6], $real_size, $real_size * 10, @entries[9..14]),
|
|||
|
join("-", @entries[0..1], $mapped_font, @entries[3..6], $size, $size * 10, @res, @entries[11..14])
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
# Boast
|
|||
|
print "Created ", scalar(@aliases), " aliases\n";
|
|||
|
|
|||
|
# Backup the existing file
|
|||
|
if(-e $outfile) {
|
|||
|
my $bakfile = "$outfile.bak";
|
|||
|
my $errormsg = "Cannot backup $outfile to $bakfile:";
|
|||
|
die "$errormsg file exists\n" if -e $bakfile;
|
|||
|
rename $outfile, $bakfile or die "$errormsg $!\n"
|
|||
|
}
|
|||
|
|
|||
|
# Ok, write the file
|
|||
|
open(THEFILE, ">", $outfile) or die "Cannot open $outfile for writing: $!\n";
|
|||
|
print THEFILE map "$_\n", @aliases;
|
|||
|
close THEFILE;
|
|||
|
|
|||
|
print "Wrote ", scalar(@aliases), " aliases to $outfile\n";
|
|||
|
|
|||
|
]]>
|
|||
|
</programlisting>
|
|||
|
</para>
|
|||
|
|
|||
|
</appendix>
|
|||
|
</Article>
|