7. WYSIWYG Publishing and Fonts

7.1. Introduction and Overview

Installing fonts for WYSIWYG publishing on Linux is a relatively complex task. It typically involves three steps:

The main reason for the complexity is that the font printing system ( ghostscript ) is unrelated to the screen font system. In a way, Linux's left hand does not know what it's right hand is doing. This problem is nontrivial to solve, because it is possible that printer fonts and display fonts reside on different machines, so there is no guarantee that all fonts the XClient uses are printable.

The good news is that most WYSIWYG applications use what is a reasonable solution to this problem. The solution involves constructing some kind of mechanism that maps screen fonts to printer fonts ( this is the main issue. There are also other issues, such as grouping bold, italic and roman variants into ``families'' of fonts ). Unfortunately, there is no standard way to do this. It seems that font management standards which address this issue would greatly simplify the installation of fonts into WYSIWYG publishing systems, because all applications could use a system-wide ( as opposed to application-specific ) configuration.

7.2. Applixware

There are two ways to install fonts into Applixware. One method involves using FontTastic, which is Applixware's ``private'' font server. The other method involves editing Applixware's fontmap, to use a font already installed on the system. Installing into the font server is more convenient, but fonts installed in this manner may only be printed at 300 dpi.

7.2.2. Using System Wide Fonts With Applixware

This method is more involved, but produces better results. I recommend that this method is used for fonts that are really important, and that you use a lot. There are a few steps to this:

7.2.2.3. Edit the fontmap.dir

This is the final step in making your fonts available to Applix, and also the most time consuming step. The file fontmap.dir is in under the axdata/fontmetrics of your applix installation. The purpose of this step is basically to tell applix which screen fonts go with which outline fonts. This is in general a very nontrivial problem, because the screen fonts are not always on the same computer that the application is installed.

We describe how to add fonts to fontmap.dir. In this example, we add the font Baskerville Italic.

  1. First, we add a line that says FontRecord = Baskerville-Normal-Italic In fact, the name we use in FontRecord is completely arbitrary. However, the font record must be unique to the font. Because of this, it's good practice to use the name that ghostscript uses for the font.

  2. Next, we a line that says Family = Baskerville The family name for a font is the name that appears in Applix's font selection menu. Typically, it is non-unique, since bold, italic, roman and bold-italic variants of a font will typically go under the same family.

  3. If the font is either a bold, or italic variant, or both, we need to add the following lines: Slant = 1 if the font is italic, and Weight = 1 if the font is bold. If the font is bold and italic, we add both lines. In this example, we need only add the line Slant = 1

  4. We add a line that looks like this: ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1" The screen name is the name that the X-server uses for the font. We can list font names containing the string ``bask'' by typing xlsfonts|grep -i bask

  5. Now we add a line that gives the name of the printer font: PostScriptPrinterName = Baskerville-Normal-Italic

  6. Next, we need to specify the location of the font metric file and the outline file MetricsFile = /usr/share/fonts/misc/baskvli.afm Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb If you are adding a TrueType file, you can use ttf2pt1 to generate an afm file : ttf2pt1 -A foo.ttf - > foo.afm ( or get the ttfutils package and use ttf2afm ) Then you use something like this: MetricsFile = /usr/share/fonts/misc/foo.afm Do not include a Type1FontFileName directive -- let ghostscript take care of this.

That's it. Now after adding the whole family of fonts, you should have something like this:
	FontRecord = Baskerville-Normal
	Family = Baskerville
	ScreenName = "-paradise-baskerville-medium-r-normal--0-0-0-0-p-0-iso8859-1"
	PostScriptPrintName = Baskerville-Normal
	MetricsFile = /usr/share/fonts/misc/baskvl.afm
	Type1FontFileName = /usr/share/fonts/misc/baskvl.pfb

	FontRecord = Baskerville-Normal-Italic
	Family = Baskerville
	Slant = 1
	ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1"
	PostScriptPrintName = Baskerville-Normal-Italic
	MetricsFile = /usr/share/fonts/misc/baskvli.afm
	Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb

	FontRecord = Baskerville-Bold
	Family = Baskerville
	Weight = 1
	ScreenName = "-paradise-baskerville-bold-r-normal--0-0-0-0-p-0-iso8859-1"
	PostScriptPrintName = Baskerville-Bold
	MetricsFile = /usr/share/fonts/misc/baskvlb.afm
	Type1FontFileName = /usr/share/fonts/misc/baskvlb.pfb     

	FontRecord = Baskerville-Bold-Italic
	Family = Baskerville
	Weight = 1
	Slant = 1
	ScreenName = "-paradise-baskerville-bold-i-normal--0-0-0-0-p-0-iso8859-1"
	PostScriptPrintName = Baskerville-Bold-Italic
	MetricsFile = /usr/share/fonts/misc/baskvlbi.afm
	Type1FontFileName = /usr/share/fonts/misc/baskvlbi.pfb     

It is possible to do more with this configuration file. The file itself has a glossary which explains the format of the configuration file.

7.3. Star Office

Here, we cover Star Office 5.0. The procedure with Star Office 5.1 is similar, but the utility is called spadmin, not psetup. It's worth mentioning up front that John McLaughlin's page is an excellent source on this issue, and it inspired most of what follows.

Having tried both Star Office 5.0, and 5.1, I have found that Star Office 5.1 seems to give me less grief when adding new fonts. I was not succesful adding true type fonts to Star Office 5.0, but it proved somewhat easier with Star Office 5.1.

7.3.3. Adding TrueType Fonts to Star Office

Adding TrueType fonts to Star Office is nontrivial, but possible. After some hard work, and long hours stareing at John McLaughlin's page page, I finally got them working in Star Office 5.1. Note that this does not work with version 5.0. The following steps are appropriate it you are printing through ghostscript:

  • Make the fonts available to X.

  • Make the fonts available to ghostscript.

  • You need to have afm files for the fonts you wish to add. Use
    	ttf2pt1 -A foo.ttf - > foo.afm
    	
    to create the afm files. Alternatively, you can get the

  • ttfutils package and use ttf2afm The advantage of this is you can handle several at a time, eg
    	ttf2afm *.ttf

  • Star Office needs pfb files corresponding to each ttf file. You can create them with the command
    	touch foo.pfb
    Actually, Star Office only uses these files for printing purposes. And by enterring the font in the PPD, thus duping Star Office into thinking the fonts are inside your printer ( when they're actually inside ghostscript's rendering system ), you get around needing to use these files. Star Office just seems to require that the pfb file exists to install the font.

  • Now you can run spadmin and install the font(s).

  • Now add the fonts to the PPD file corresponding to your printer configuration. The name you use for the font should be the same name Star Office uses for it, not the ghostscript font name. For example, if the font is foobar.ttf and the corresponding afm file is foobar.afm, you use the name ``foobar'' for the font in the PPD file. The entry should look something like this:
    *Font cloistrk: Standard "(001.002)" Standard ROM
    	

On the other hand, if you are not printing from ghostscript, you have different issues to deal with. In this case, tricking Star Office into thinking that your printer has the fonts is a bad idea, because your printer does not have the fonts in the ROM, so while gv will display the PostScript files nicely, your printer will not be able to print them. If you have a PostScript printer, the main differences are as follows:

  • Do not edit the PPD file.

  • Instead of using touch foo.pfb to create empty pfb files, you need the pfb files to be Type42 PostScript fonts. A Type42 font is really a ``printer TrueType font''. You don't really notice Type42 fonts even when you use them, because most applications handle them transparently. To create Type42 fonts, you use ttfps to create the files.
    	ttfps foo.ttf foo.pfb
    	

There are some gotchas. Sometimes, Star Office might not choose the screen font you like. It is sometimes worth checking xp3/psstd.fonts and possibly editing it to make sure that Star Office is really using the font you had in mind for screen display. Also, Star Office doesn't handle configuration problems gracefully. If there's something wrong with your configuration, it's possible that the word processor will not even start. This is why you should back up your xp3 directory.

7.4. Word Perfect

Nothing yet. Rod Smith's webpage is the definitive resource regarding installing fonts on Word Perfect.