Support of PostScript printers is similar to support of other printers, in that the printers must be defined to the system with the lpadmin command and the appropriate software must be installed to manage them. PostScript printers may require some additional effort in supporting fonts and establishing where ``slow'' filtering occurs.
PostScript printers, like other printers, are installed with the lpadmin command. They must use the PS interface program, requested by specifying -m PS on the lpadmin command line.
The PS printer types serve two functions. First, they cause the print service to activate the correct fast filter to communicate with the printer. PS and PS-r are used to communicate with printers connected via a serial port; PS-b and PS-br, to communicate with printers connected via a parallel port. Second, the PS interface creates a PostScript banner page for PS printers. The banner page is printed last if the printer type is PS-r or PS-br, and the pages of the document are printed in reverse order. The printer type is specified with the -T option to the lpadmin command.
PostScript page order
The -b specification (used when you select PS-b or PS-br) represents ``batch,'' which is typically used for parallel connections but may also be used for serial connections if you don't want PostScript printer status messages. The PS and PS-r printer types cannot be used for parallel connections.
By specifying the -I option of the lpadmin command when configuring a PostScript printer, you can indicate which content types are handled by the printer without slow filtering. For a printer on a server system, PS is the correct content type to enter. However, for a printer on a client system, consider where slow filtering is to occur, since network and system resource management may be of concern.
By specifying valid content types other than PS, you can force the slow filtering of input to occur on the server system. Conversely, if you specify a content type of PS, the input will be filtered locally before the print request is forwarded to the server system for fast filtering and printing.
To configure a printer on a server system:
/usr/sbin/lpadmin -p ps1 -T PS-b -I PS -m PS
To configure a printer on a client system without
/usr/sbin/lpadmin -p ps1 -T PS-b -I simple,daisy,dmd,tek4014,plot
To configure a printer on a client system with
/usr/sbin/lpadmin -p ps1 -T PS-b -I PS
As part of the installation procedure, you may want to install fonts on the printer or downloadable fonts on the computer. See ``Installing and maintaining PostScript fonts'' for details.
PostScript filters are provided in the Advanced Commands package. The filters it provides cover the majority of situations. In certain circumstances, however, you may find it helpful to change the filter descriptions and install the filters differently. This section describes the location and function of these filters.
PostScript filters are contained in the directory /usr/lib/lp/postscript.
A prerequisite of communication between any system and a PostScript printer is the presence of the postio or the lp.cat filter on the system. Those programs are the only mandatory PostScript filters that communicate directly with the PostScript printer. The following filters allow other types of documents to be translated to PostScript and to be printed on a PostScript printer.
|File Content Type
The following filters perform special functions:
Special purpose filters
|communicate with printer
|reverse or select pages
|matrix gray scales
One of the advantages of PostScript is its ability to manage fonts. Fonts are stored in outline form in the Type 1 format, either on the printer or on a computer that communicates with a printer. When a document is printed, the PostScript interpreter generates each character as needed (in the appropriate size) from the outline description of it. If a font required for a document is not stored on the printer being used, it must be transmitted to that printer before the document can be printed. This transmission process is called ``downloading fonts.''
Fonts are stored and accessed in several ways.
The print service allows you to manage fonts in any of these ways. It provides a special download filter to manage fonts using the last method in the list.
The print service can use troff width tables for the 35 standard PostScript fonts which reside on many PostScript printers, for use by the dpost program.
Most PostScript printers come equipped with fonts resident in the printer ROM . Some printers have a disk on which additional fonts are stored. A list of the Type 1 fonts in ROM or on disk of an attached PostScript printer can be obtained from the printer manufacturer's documentation. For PostScript printers attached via a serial port, a list of these fonts can also be generated using the postio command and a PostScript program, romfonts.ps.
To obtain a list of printer-resident fonts for a PostScript printer attached to a serial port, do the following:
Given a system on which the PostScript printer prlocal is attached via a serial port, this would return output like:
device for prlocal: /dev/tty01This shows the printer to be attached on device /dev/tty01.
For our sample prlocal printer, this will produce output in the file /tmp/postio.o that looks like this:
printer startup %%[ status: waiting; source: serial 25 ]%% %%[ status: endofjob ]%% %%[ status: idle ]%% sending file romfonts.ps waiting for end of job %%[ status: busy; source: serial 25 ]%% /AGaramond-Bold /AGaramond-BoldItalic /AGaramond-Italic /AGaramond-Regular /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique . . . more PostScript font names . . . /ZapfChancery-MediumItalic /ZapfDingbats %%[ status: endofjob ]%% job complete
This lists the printer-resident fonts for prlocal.
When a printer is installed, the list of printer-resident fonts should be added to the font list for that printer. This font list file can be edited to contain only the font names in the printer's memory (AGaramond-Bold through ZapfDingbats, in the previous example), and placed into the file /etc/lp/printers/prlocal/residentfonts to prevent downloading of these fonts from the host computer.
To add printer-resident fonts to a printer's font list, do the following:
where printer-name is the name of the printer.
With the -p option, download checks this file to see what Type 1 fonts are ROM-resident and disk-resident (some PostScript printers have directly attached fonts disks) in the printer so that it does not download such fonts.
When fonts are permanently downloaded to the printer, add the font names to this file. (This will prevent fonts from being downloaded when they are already on the printer, a time-consuming procedure.)
Some fonts will be resident on the host and transmitted to the printer as needed for particular print requests. As the administrator, it is your job to make PostScript fonts available to all the users on a system. To do so, you must know how and where to install these fonts, using the guidelines described previously. Because fonts are requested by name and stored in files, the print service keeps a map file that shows the correspondence between the names of fonts and the names of the files containing those fonts. Both of these must be updated when fonts are installed on the host.
Retail Type 1 fonts can be installed from disk for use with XWin and lp. The fonts are installed in an XWIN directory (/usr/X/lib/fonts/type1) and the map file in /usr/share/lib/hostfontdir is updated to make their location available to download. The actual updating of the map file is done with the mkfontscale utility.
Available Type 1 fonts are the ones listed in map, a map table which consists of font name-filename pairs. The font name is the name of the PostScript Type 1 font, exactly as it appears in a %%DocumentFonts: comment and exactly as it appears in the literal /FontName in the Type 1 font program itself. The filename is the pathname of the host resident Type 1 font.
To install host-resident PostScript fonts, do the following:
The fonts available for use with PostScript printers reside in the directory /usr/share/lib/hostfontdir or other directories (for example, /usr/x/lib/fonts/type1 has fonts installed using the desktop).
Also in the hostfontdir directory, you (the administrator) must create and maintain a map table that shows the correspondence between the name assigned to each font by the foundry (the company that created the font) and the name of the file in which that font resides. A filename that begins with a / is used as is; otherwise the pathname is relative to the host font directory. Comments in the map table are introduced by % (as in PostScript) and extend to the end of the line.
For example, to map the font called ``Palatino Bold,'' add the following line to the map table:
Palatino-Bold /usr/share/lib/hostfontdir(The map table itself is in the file /usr/share/lib/hostfontdir/map.)
Once this entry exists in the map table on your system, your users will be able to have a Palatino Bold font used in their print jobs. When they submit for printing a file containing a request for this font, the print service will prefix a copy of the file /usr/share/lib/hostfontdir to that file before sending it to the printer, as long as it is not defined in the residentfonts file.
The creators of the PostScript language anticipated that users would want to download fonts to printers. The PostScript Language Reference Manual (by Adobe Systems, Inc., Addison-Wesley Publishing Co., Inc., 2nd edition, 1990) states the following:
...programs that manage previously generated PostScript page descriptions, such as `printer spooler' utilities, may require additional information about those page descriptions. For example, if a page description references special fonts, a spooler may need to transmit definitions of those fonts to the PostScript printer ahead of the page description itself. To facilitate these and other operations, [PostScript] defines a standard set of structuring conventions for PostScript programs.
The download filter relies on these structuring conventions to determine which fonts must be downloaded.
When the PostScript document contains a request for fonts not loaded on the printer, the download filter manages this request. This filter is invoked as a fast filter; it downloads fonts automatically if the fonts reside on the same system as the printer. The download filter may also send fonts to a remote printer. To do this, you may create a new filter table entry which calls the download filter as a slow filter through the -y option. Alternatively, you may force selection of this filter by changing the input type.
The download filter does five things:
%%DocumentFonts: font1 font2 . . .in the header comments.
comment or PostScript file.
The downloading of fonts occurs only for the duration of the PostScript job;
however, permanent downloading of fonts to the printer's RAM can be done
with special PostScript programming techniques
using the exitserver operator.
Requests for unlisted fonts or inaccessible files are ignored; all requests are ignored if the map table can't be read.