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.Ghostscript
to use TrueType fontsIf 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.
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