old-www/HOWTO/text/TT-Debian

1143 lines
36 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

TrueType Fonts in Debian mini-HOWTO
Bear Giles, bgiles@coyotesong.com <mailto:bgiles@coy­
otesong.com>
v0.3, 10 January 2000
This document describes how to configure a Debian system to use True­
Type fonts for display and printing. The most recent version of this
document can be obtained in HTML format at http://www.dimen­
sional.com/~bgiles/debian-tt.html <http://www.dimen­
sional.com/~bgiles/debian-tt.html>
______________________________________________________________________
Table of Contents
1. Introduction
1.1 Disclaimer
1.2 Credits
1.3 Additional links
1.4 Change log
1.5 Feedback
1.6 Related projects
1.7 Distribution
2. Display (what they never told you)
2.1 A look ahead to XFree86 4.0
2.2 Review: Preparation before changing
3. Display (
3.1 Setting up the
3.2 Setting up the
3.3 Using TrueType fonts
3.4 Installing additional TrueType fonts
3.5 Internationalization
3.6 Security Issues
4. Printing (
4.1 Configuring
4.2 Printing TrueType font specimens
5. Content Generation
5.1 Generating
5.2 Generating
5.3 Image manipulation:
5.4 ASCII to PostScript conversion:
5.5 Text Formatting and Typesetting:
5.6 Text Formatting and Typesetting:
6. Unanswered questions
7. Obtaining TrueType Fonts
7.1 A comment about using Microsoft's free TrueType fonts
8. Legalities
______________________________________________________________________
1. Introduction
A Linux installation typically contains several independent sets of
fonts or font metrics. A quick glance at my system shows fonts or
font metrics spread across the following directories:
· XFree86 stores its fonts in /usr/X11R6/lib/X11/fonts/
· Ghostscript stores its fonts in /usr/lib/ghostscript/fonts/
· TeX stores its fonts in /usr/lib/texmf/fonts/
· The Debian kbd package stores its fonts in /usr/share/consolefonts/
· Groff stores its metrics in /usr/share/font/devps/
· Enscript (ASCII to PostScript converter) stores its metrics in
/usr/share/enscript/*.afm
Needless to say, these fonts are not coordinated.
TrueType fonts are designed to eliminate this problem by allowing the
same font files to be used for both display and printing. This HOW-TO
attempts to show how to use TrueType fonts for display, printing, and
document preparation on Debian GNU/Linux systems.
1.1. Disclaimer
The information in this document is, to the best of my knowledge,
correct. However this HOWTO is still in preliminary versions and what
works for me may not work for you. Even if it does work for you, I am
not a professional technical writer and I have been known to gloss
over critical details.
So have fun, but play it safe and keep backups.
1.2. Credits
Created by Bear Giles, <bgiles@coyotesong.com>
<mailto:bgiles@coyotesong.com>
Thanks go to:
· Brion Vibber, <brion@pobox.com> <mailto:brion@pobox.com>, who wrote
the (preliminary) TrueType HOW-TO
(http://pobox.com/~brion/linux/TrueType-HOWTO.html)
<http://pobox.com/~brion/linux/TrueType-HOWTO.html>
· Doug Holland, <meldroc@frii.com> <mailto:meldroc@frii.com>, who
wrote the XFree86 Font Deuglification HOW-TO
(http://www.frii.com/~meldroc/Font-Deuglification.html)
<http://www.frii.com/~meldroc/Font-Deuglification.html>
1.3. Additional links
These links don't directly discuss Debian systems or packages, but
they may still be interesting to readers of this mini-HOWTO.
· Using TrueType Fonts with RedHat Linux
(http://www.kegel.com/linux/tt.html)
<http://www.kegel.com/linux/tt.html>
· X Font Tools (http://www.hex.net/~cbbrowne/xfonts.html)
<http://www.hex.net/~cbbrowne/xfonts.html>
· Getting fonts to look pretty under GNU/Linux for applications like
StarOffice (http://king.ccrc.wustl.edu/~zubin/fonts.html)
<http://king.ccrc.wustl.edu/~zubin/fonts.html>
· How to use True Type © fonts for StarOffice Under Linux
(http://www.mindspring.net/~john_mcl/adding_fonts.html)
<http://www.mindspring.net/~john_mcl/adding_fonts.html>
1.4. Change log
· 0.1. Sept. 16, 1999: First release.
· 0.2. Sept. 16, 1999: added "additional links" section.
· 0.3. Jan. 10, 2000: reader feedback! Added clarification of
several details.
1.5. Feedback
Comments, corrections, additions and critiques are always welcome.
You can reach me at bgiles@coyotesong.com
<mailto:bgiles@coyotesong.com>.
1.6. Related projects
· FreeType http://www.freetype.org/ <http://www.freetype.org/>
The FreeType engine is a free and portable TrueType font rendering
engine. The code is a clean-room implementation that is totally
independent of the Apple and Microsoft implementations. (A
question has recently been raised about a possible Apple patent,
however.) FreeType is a library, not a font server or a complete
text rendering library.
1.7. Distribution
This is the first draft and I expect it to change significantly after
publication, I ask that you refer to the latest version at
http://www.dimensional.com/~bgiles/debian-tt.html
<http://www.dimensional.com/~bgiles/debian-tt.html>. The permanent
home for this document will eventually be at
http://www.coyotesong.com/ <http://www.coyotesong.com/>
2. Display (what they never told you)
Before we dive into setting up TrueType fonts under X, we should
review the difference between points and pixels... and why we care.
All displayed fonts are measured in points. One inch is exactly 72
points. Why 72? Partly because of the limitations of mechanical
typesetting machines and partly because it's evenly divisible by 2, 3,
4, 6, 8, 9, 12, 18 and 24. It's also worth noting that the default
unit in PostScript is one point.
(Historical note: I lied. Until the introduction of PostScript an
inch was exactly 72.27 points, but that point size was set in the era
of mechanical printers with metal stamps in a handful of standard
sizes. With computer displays and laser printers, it's easy to get
fonts in any size and 72 makes much more sense for the reason
mentioned above.)
As a general rule, most text should be between 7 and 12 points.
Anything smaller than 6 points is literally "the fine print." Line
printers used 9 or 12 point type (for 8 or 6 lines/inch,
respectively).
In contrast, all video drivers must ultimately measure fonts in
pixels. To your video driver, your screen is 1024x800 pixels, not 10
by 8 inches (or 720 by 576 points).
To map from points (which we use to specify a font size) to pixels
(which we use to blit the video memory) we must know our screen's
resolution. This is usually measured in "dots per inch (dpi),"
although it's really pixels per inch. These are the units used in the
two sets of bitmap fonts included with XFree86: fonts-75 is intended
for use on low-end displays with a resolution of approximately 75 dpi,
fonts-100 is intended for use on mid-range displays with a resolution
of approximately 100 dpi. There are no bitmap fonts intended for use
on high-end displays with a resolution of over 120 dpi.
As a concrete example, a 13" diagonal screen (11.1" usable) displaying
a 640x480 pixel image has a resolution of 72.0 dpi. This Is Not A
Coincidence. In fact, most web pages (and Microsoft applications) are
designed around a canonical display with a resolution of exactly 72
dpi. XFree86's default configuration assumes a display with a
resolution of 75 dpi.
Back in the real world, nobody runs 640x480 video anymore. Nobody
uses 13" diagonal screens anymore. Since video cards have improved
faster than video monitors it's not uncommon to have a configuration
like mine: 19" diagonal screen, (17+" usable), 1600x1200 pixels, 117
dpi resolution.
If I run a stock X configuration, all of my fonts are approximately
2/3 of the intended size. It's not an exaggeration to say that all
fonts are cut down by a full size: large fonts (12 pts) appear medium
(9). Medium fonts (9 pts) appear small (6).
There are three things we can do to fix this. First, We should tell
the X server our actual screen resolution:
/etc/X11/xdm/Xservers
______________________________________________________________________
#:0 local /usr/X11R6/bin/X -bpp 16
:0 local /usr/X11R6/bin/X -bpp 16 -dpi 120
______________________________________________________________________
Second, we should ensure that we use the 100 dpi bitmapped fonts in
preference to the 75 dpi fonts.
/etc/X11/XF86Config
______________________________________________________________________
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
EndSection
______________________________________________________________________
Finally, if one of our bitmapped fonts isn't an exact match the X
server will attempt to "scale" a similar font via pixel replication.
The results are rarely pleasant to use. Assuming we have a reasonably
powerful system, we can tell the server to use scaled fonts by
default, then bitmaps which are exact matches, and scaled bitmaps as a
last resort.
/etc/X11/XF86Config
______________________________________________________________________
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
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/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
______________________________________________________________________
2.1. A look ahead to XFree86 4.0
I've just been informed that XFree86 will support DDC communications,
if the video card and monitor both support it. This will allow the X
server to query the monitor for its physical dimensions and the server
will automatically compute the correct DPI setting.
You will still need to make the appropriate changes to your font path,
since the server should not second guess your explicit configuration.
2.2. Review: Preparation before changing X configuration files.
Any time we make changes to the X11 configuration files, it's an
excellent idea to disable XDM by putting exit 0 somewhere near the top
of the file. If you don't do this and X is unable to start for some
reason, XDM will put your system into a nasty busy loop that is an
unspeakable pain to correct. You Have Been Warned.
3. Display ( X and the font servers)
Strictly speaking, it is not absolutely necessary to set up font
servers to use TrueType fonts with X servers. If you wish to use
static files instead of a font server, please see the instructions for
setting up TrueType fonts for ghostscript.
3.1. Setting up the xfs Font Server
At this point I assume you have a working /etc/X11/XF86Config file
that loads explicitly specifies each directory in the FontPath. We
will convert it to use the xfs Font Server.
· Install XFS
If you have not already done so, install
main/binary-*/x11/xfs_*.deb.
· Configure XFS
Edit /etc/X11/xfs/config and change the catalogue to contain the
contents of your FontList. You may also wish to change the
default-resolutions value.
/etc/X11/xfs/config
______________________________________________________________________
# paths to search for fonts
catalogue =
/usr/X11R6/lib/X11/fonts/100dpi/:unscaled,
/usr/X11R6/lib/X11/fonts/75dpi/:unscaled,
/usr/X11R6/lib/X11/fonts/misc/,
/usr/X11R6/lib/X11/fonts/Speedo/,
/usr/X11R6/lib/X11/fonts/Type1/,
/usr/X11R6/lib/X11/fonts/100dpi/,
/usr/X11R6/lib/X11/fonts/75dpi/
# x1,y1,x2,y2,...
default-resolutions = 100,100,75,75
______________________________________________________________________
· Restart XFS
Restart XFS in the usual Debian manner:
root shell
______________________________________________________________________
# /etc/init.d/xfs restart
______________________________________________________________________
· Verify that XFS is working
Before we change our XF86Config file, we should verify that the xfs
server is working by listing them through the font server:
user shell
______________________________________________________________________
$ fslsfonts -server unix/:7100
-adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
....
______________________________________________________________________
· Change /etc/X11/XF86Config to use xfs
We're now ready to tell the X server to use the xfs font server.
We keep one static font path as a fallback position in case of a
problem with xfs. (We keep "misc" since it contains fixed, the
default font.)
/etc/X11/XF86Config
______________________________________________________________________
Section "Files"
FontPath "unix/:7100"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
EndSection
______________________________________________________________________
· Restart X
Restart X with startx, unless you like living life dangerously. If
that's the case, name me the beneficiary of your unusually large
life insurance policy and restart xdm.
· Verify that the XFS fonts are visible
Once we have an X session established, we can verify that our
server sees all of the xfs fonts by listing them through the X
server.
user shell
______________________________________________________________________
$ xlsfonts
-adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1
-adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1
....
______________________________________________________________________
3.2. Setting up the xfstt Font Server and installing TrueType fonts
At this point I assume you have a working xfs font server and wish to
add TrueType support via xfstt.
· Install XFSTT
If you have not already done so, install
main/binary-*/x11/xfstt_*.deb.
· Installing the TrueType Fonts
Copy your TrueType fonts into the /usr/share/fonts/truetype
directory. These files usually have a .ttf extension, and they
should have 0444 permissions.
· Restart the XFSTT Font Server
Restart the xfstt server with the force-reload flag
root shell
______________________________________________________________________
# /etc/init.d/xfstt force-reload
______________________________________________________________________
· Verify that XFSTT is working
Before we change our XF86Config file, we should verify that the
xfstt server is working.
Important: the Debian xfstt server listens to port 7101, not 7100.
Also, the default permissions will require you to run this query as
root.
user and root shells
______________________________________________________________________
$ fslsfonts -server unix/:7101
_FSTransSocketUNIXConnect: Can't connect: errno = 111
fslsfonts: unable to open server "unix/:7101"
# fslsfonts -server unix/:7101
-ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1
______________________________________________________________________
· Change /etc/X11/XF86Config to use xfstt
We're now ready to tell the X server to use the xfstt font server.
We want it to use TrueType fonts in preference to all others.
/etc/X11/XF86Config
______________________________________________________________________
Section "Files"
FontPath "unix/:7101"
FontPath "unix/:7100"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
EndSection
______________________________________________________________________
· Verify that XFSTT fonts are visible
Once we have an X session established, we can verify that our
server sees all of the TrueType fonts by listing them.
______________________________________________________________________
$ xlsfonts | grep ttf
-ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1
-ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1
....
______________________________________________________________________
3.3. Using TrueType fonts
At this point it should be possible to use a TrueType font in
applications like GIMP, Netscape or StarOffice. Since most TrueType
fonts aren't monospaced you probably don't want to use one of them
with xterm - these programs use monospacing the size of the largest
character cell.
3.4. Installing additional TrueType fonts
If you are using the xfstt font server, it's trivial to install
additional TrueType fonts.
· Copy the new font(s) into /usr/share/fonts/truetype/
· Restart xfs with /etc/init.d/xfs restart
3.5. Internationalization
xfstt has the ability to generate multiple font encodings, provided
that the TrueType font contains the necessary glyphs. To enable fonts
other than iso8859-1/unicode-1, you must manually edit the
/etc/init.d/xfstt script:
/etc/init.d/xfstt
______________________________________________________________________
- start-stop-daemon --start --quiet --exec $XFSTT -- \
--port $portno --daemon
+ start-stop-daemon --start --quiet --exec $XFSTT -- \
--port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \
--daemon
______________________________________________________________________
The recognized encodings in Debian 2.1 are:
· iso8859-1 (Latin 1 - Western Europe)
· iso8859-2 (Latin 2 - Central and Eastern Europe)
· iso8859-3 (Latin 3 - Esperanto and Maltese)
· iso8859-4 (Latin 4 - superceded by Latin 6)
· iso8859-5 (Cyrillic)
· iso8859-6 (Arabic)
· iso8859-7 (Greek)
· iso8859-8 (Hebrew)
· iso8859-9 (Latin 5 - Latin 1 with Turkish, not Icelandic)
· iso8859-10 (Latin 6 - Nordic languages, replaces Latin 4)
· koi8-r (Cyrillic)
· windows-1250 (Central Europe)
· windows-1251 (Cyrillic)
· windows-1252
· windows-1253 (Greek)
· windows-1254
· windows-1255
· windows-1256
· windows-1257
· symbol-0
· wingding-0
· wingreek-0
· cp-437 (various IBM code pages)
· cp-737
· cp-850
· cp-851
· cp-852
· cp-853
· cp-855
· cp-857
· cp-860
· cp-861
· cp-862
· cp-863
· cp-864
· cp-865
· cp-866
· cp-869
· cp-895
· atari-st
· unicode-2
The first 128 characters in the iso8859-x encodings is always ASCII.
The windows- fonts embrace and extend iso8859-1 with additional
characters such as "smart quotes." (Since these extensions, such as
"smart quotes" are undefined in iso8859-1, they are usually rendered
as question marks.)
Excellent source for additional information on character set encodings
are at
· http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html
<http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html>,
· http://anubis.dkuug.dk/i18n/ <http://anubis.dkuug.dk/i18n/> and
· http://czyborra.com/charsets/iso8859.html
<http://czyborra.com/charsets/iso8859.html>.
3.6. Security Issues
I used Unix sockets above, but the standard Debian packages also
configure xfs and xfstt to listen to TCP/IP ports 7100 and 7101,
respectively. Access to these ports should be controlled by the
trusted-clients field in /etc/X11/xfs/config, but this option is not
implemented in XFree86 3.3.2.3a.
This means that anyone, anywhere, can connect to your font server.
Since xfs (and presumably xfsts) "clone" to support more users there's
a trivial denial-of-service attack against these systems. It's
probably safe to use the font servers on dialup lines (since you're
present to handle problems), but DSL and cable modem users should use
a firewall.
4. Printing ( ghostscript )
Starting with version 4, ghostscript has supported TrueType fonts as a
compile-time option. Two Debian packages provide ghostscript:
· main/binary-*/text/gs_*.deb is DFSG-compliant version 5.10,
· non-free/binary-*/gs-aladdin_*.deb is non-DFSG-compliant version
5.50.
Both versions support TrueType fonts.
4.1. Configuring Ghostscript to use TrueType fonts
If you have a working xfstt server, it is easy to configure
ghostscript to use TrueType fonts. We simply execute the following
command:
______________________________________________________________________
# xfstt --gslist --sync >> /etc/gs.Fontmap
______________________________________________________________________
In practice, I've found it beneficial to make several small changes to
the font definitions generated by xfstt. First, if a font name does
not contain any spaces, I change the name to the usual notation. If a
font name does contain spaces, I replace all spaces with dashes and
the original name is added as an alias to the new name.
Finally, I prepend TTF- (or MS-) to all font names to minimize
problems caused by a TrueType font having an identical name to an
preexisting font.
Thus
______________________________________________________________________
(Arial) (/usr/share/fonts/truetype/arial.ttf) ;
(Arial Bold Italic) (/usr/share/fonts/truetype/arialbi.ttf) ;
______________________________________________________________________
becomes
______________________________________________________________________
/MS-Arial (/usr/share/fonts/truetype/arial.ttf) ;
/MS-Arial-Bold-Italic (/usr/share/fonts/truetype/arialbi.ttf) ;
(Arial Bold Italic) /MS-Arial-Bold-Italic ;
/Arial /MS-Arial ;
______________________________________________________________________
The aliases ensure that ghostscript and xfstt can still specify the
same font by a common name.
Much more significantly, with the change in the font names it's
possible to instruct ghostscript to use TrueType fonts instead of the
standard fonts. The documentation claims that this is also possible
with parenthetical notation, but I could not get it to work.
For instance, we can instruct ghostscript to replace Helvetica fonts
with Microsoft's free Arial fonts by appending the following lines to
the /etc/gs.Fontmap file:
______________________________________________________________________
/Helvetica /MS-Arial ;
/Helvetica-Oblique /MS-Arial-Italic ;
/Helvetica-Bold /MS-Arial-Bold ;
/Helvetica-BoldOblique /MS-Arial-Bold-Italic ;
______________________________________________________________________
Similar aliases can be defined for the other standard fonts. These
aliases would be most useful on samba printers serving Windows
clients.
4.2. Printing TrueType font specimens
The best way to verify that ghostscript is properly configured to use
TrueType fonts is to print font specimen pages. Assuming that you're
running ghostscript 5.50 and that it is your default print queue, you
can print all TrueType fonts with the following command:
______________________________________________________________________
# xfstt --gslist --sync | printfont
______________________________________________________________________
where printfont is the following shell script
______________________________________________________________________
#!/bin/sh
set -e
IFS= ')'
while read fontname rest
do
cat << EOM | lpr
%!PS
(/usr/lib/ghostscript/5.50/prfont.ps) run
$fontname) DoFont
EOM
done
______________________________________________________________________
If you wish to print only a few fonts, the following script will be
easier to use:
______________________________________________________________________
#!/bin/sh
set -e
while read -p "Font name, or ^D to exit: " fontname
do
cat << EOM | lpr
%!PS
(/usr/lib/ghostscript/5.50/prfont.ps) run
$fontname DoFont
EOM
done
______________________________________________________________________
5. Content Generation
5.1. Generating AFM font metrics
AFM font metrics files are not required for display existing files
with TrueType fonts, but they are necessary to create new files. The
ghostscript program /usr/lib/ghostscript/5.50/printafm.ps could be
used to generate these metric files, but I have found the ttf2afm
program from the tetex-bin package to be easier to use.
The following script will generate an afm file for all TrueType fonts
in a directory:
______________________________________________________________________
#!/bin/sh
set -e
for i in *.TTF
do
/usr/bin/ttf2afm $i > ${i%TTF}afm
done
for i in *.ttf
do
/usr/bin/ttf2afm $i > ${i%ttf}afm
done
______________________________________________________________________
One minor problem with ttf2afm is that some applications expect afm
files to start with the StartFontMetrics tag, but files created by
ttf2afm start with a comment. This "problem" is easily fixed by
hitting each file with a text editor.
5.2. Generating font.map files
Once we have our afm files, we need to tell the system how to find
them. This is often done via the font.map file.
I have been unable to find documentation on this file format, unlike
fonts.dir, fonts.scale, and fonts.alias, all created by the mkfontdir
program. However the minimum format appears to be quite simple:
· Font name, without whitespace
· AFM filename, without extension
Aliases appear to be implemented via multiple entries, and the
filename extension must be in lowercase.
5.3. Image manipulation: GIMP
GIMP is the Gnu image manipulation and paint program. I did not have
to make any additional changes to use TrueType fonts in gimp.
5.4. ASCII to PostScript conversion: enscript
Enscript is a program that converts ASCII to PostScript. Other
programs which serve a similiar purpose are a2ps and mpage. Enscript
allows two-up rotation, watermarks, headers, and keyword-based syntax
coloring. It does not reformat text and is commonly used to print
source listing.
To use TrueType fonts with enscript, you must do two things:
· Add /usr/share/fonts/truetype to your AFMPath.
· Specify a TrueType font, either explicitly or by aliasing a default
font.
For details, see the enscript documentation.
Once I had made these changes, I had no problem using TrueType fonts.
5.5. Text Formatting and Typesetting: groff
Groff is the Gnu front end of the groff/troff document formatting
system. The power of Groff is best seen with man pages.
user shell
______________________________________________________________________
$ zcat /usr/man/man1/groff.1.gz | groff -man | lpr
______________________________________________________________________
Besides man pages, an incredible amount of Unix documentation uses
troff formatting with ms (and occasionally me) macros. The Debian
xbooks package, for example, has 43 files using troff with ms macros.
With groff, this material can be attractively printed.
Groff is a very powerful system, but it's the grandchild (or great-
grandchild) of a program used to typeset 1960's era printing presses.
Font support in groff reflects that heritage. Groff, in contrast to
its predecessors, uses PostScript as the default output format so our
earlier work with ghostscript takes care of half of the problem --
groff does not have to deal with reading TrueType font files. It does
need to have accurate font metrics, and this section describes how to
regenerate the necessary groff files:
Groff PostScript description files
______________________________________________________________________
/usr/share/groff/font/devps/DESC
Device description file
/usr/share/groff/font/devps/text.enc
Encoding used for text fonts
/usr/share/groff/font/devps/generate/textmap
Standard mapping.
/usr/share/groff/font/devps/generate/Makefile
Standard makefile
______________________________________________________________________
We must edit the Makefile,
/usr/share/groff/font/devps/generate/Makefile
______________________________________________________________________
- afmdir=/usr/local/afm
+ afmdir=/usr/share/fonts/truetype
______________________________________________________________________
change the name of the fonts to their TrueType equivalent (e.g., if
we're using Microsoft's free TrueType fonts we would replace Helvetica
with Arial), and change TEXTFONTS and the like to only include those
fonts we are redefining.
We must also edit /usr/share/groff/font/devps/generate/afmname to use
the TrueType font names and afm files, and to remove an "-e" flag from
awk.
After all of this, we can rebuild the groff tables with
user shell
______________________________________________________________________
$ cd /usr/share/groff/font/devps
$ make -f generate/Makefile
______________________________________________________________________
As usual, the best way to verify the changes is to use a visually
distinctive font. E.g., if you are using the Microsoft free TrueType
fonts you can use Mistral for TR.
(I expect royalties from everyone who reconfigures their system to
print manual pages in Old English fonts next April First!)
5.6. Text Formatting and Typesetting: TeX
TeX is the other common set of text formatting and typesetting
programs on most GNU/Linux systems.
TeX fonts can created with mktexmf, but I have little information on
the exact process. More details will be provided shortly.
6. Unanswered questions
· Applications
The biggest unanswered question is why netscape communicator can
use TrueType fonts, ghostscript can use the same TrueType fonts,
yet pages printed by netscape look nothing like the screen.
The short answer is that netscape generates PostScript output with
standard fonts (Helvetica and Times-Roman) instead of the user-
specified or HTML-specified fonts. The long answer is that I have
absolutely no idea why it forces this behavior, or if there is a
way to override it.
7. Obtaining TrueType Fonts
If you're looking for TrueType fonts, here are several places where
you can start looking:
· c:\windows\fonts on the boat anchor in the corner
· Microsoft's Free TrueType Fonts
http://www.microsoft.com/typography/fontpack/
<http://www.microsoft.com/typography/fontpack/>
· Acid Fonts http://www.acidcool.com/ <http://www.acidcool.com/>
· The Font Ring http://www.webring.org/cgi-
bin/webring?ring=fontring&list <http://www.webring.org/cgi-
bin/webring?ring=fontring&list>
7.1. A comment about using Microsoft's free TrueType fonts
No article on TrueType support under Linux would be complete without a
comment about Microsoft's free TrueType fonts. First the legality of
using Microsoft's free core fonts:
http://www.microsoft.com/typography/faq/faq8.htm
<http://www.microsoft.com/typography/faq/faq8.htm>
____________________________________________________________
Q. What can I do with these fonts?
· Anyone can download and install these fonts for
their own use.
· [Web page] designers can specify the fonts within
their own Web pages.
...
____________________________________________________________
Clearly, it is legal and reasonable for Linux users to download and
install these fonts, and I would like to thank Microsoft for making
them available.
Since another clause restricts their redistribution "in any form that
adds value to commercial products" I don't expect to see these fonts
packaged in main anytime soon. (Could they be packaged in non-free,
perhaps as an installer package...?)
Now that that's out of the way, I redirect your attention to the
second statement. Microsoft actively encourages web page developers
to specify their fonts on web pages, and many HTML editors explicitly
name fonts.
Many web sites, when viewed by standard Netscape/Linux, can best be
described as... legible. Some aren't even that. Not coincidentally
the sites which are, um, legible are also usually the sites that
explicitly state all font information in their web pages.
After I installed these fonts I noticed that most of these problematic
sites became significantly more attractive. Many were still highly
Windows-centric, but at least I didn't flinch every time I loaded
their pages.
My recommendation is to install Microsoft's free TrueType fonts for
your browser. You are not required to create web pages that use these
fonts, nor do you have to configure ghostscript to use them.
8. Legalities
Copyright © 1999 by Bear Giles.
Unless otherwise stated, Linux HOWTO documents are copyrighted by
their respective authors. Linux HOWTO documents may be reproduced and
distributed whole or in part, in any medium physical or electronic, as
long as this copyright notice is retained in all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may produce a derivative work from a HOWTO and impose
additional restrictions on distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO cordinator for more information.
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.
Many of the terms mentioned in this document are trade names. Unless
otherwise stated, all trademarks are property of their respectve
owners.