home *** CD-ROM | disk | FTP | other *** search
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news.moneng.mei.com!news.ecn.bgu.edu!vixen.cso.uiuc.edu!howland.reston.ans.net!newsfeed.internetmci.com!usenet.eel.ufl.edu!usenet.cis.ufl.edu!purdue!mozo.cc.purdue.edu!staff.cc.purdue.edu!root
- From: Allen Braunsdorf <postscript-faq@cc.purdue.edu>
- Newsgroups: comp.lang.postscript,comp.answers,news.answers
- Subject: PostScript monthly FAQ v2.4 07-18-95 [01-04 of 11]
- Followup-To: poster
- Date: 18 Jul 1995 22:04:49 GMT
- Organization: Purdue University
- Lines: 1284
- Approved: news-answers-request@MIT.Edu
- Distribution: world
- Message-ID: <3uhb61$ijt@mozo.cc.purdue.edu>
- Reply-To: postscript-faq@cc.purdue.edu (PostScript FAQ comments address)
- NNTP-Posting-Host: staff.cc.purdue.edu
- Summary: Useful facts about the PostScript graphics programming language
- Archive-name: postscript/faq/part1-4
- Last-modified: 1995/04/20
- Version: 2.4
- Originator: root@staff.cc.purdue.edu
- Xref: senator-bedfellow.mit.edu comp.lang.postscript:34265 comp.answers:13174 news.answers:48773
-
- -- PostScript --
-
- Answers to Questions
-
- (the comp.lang.postscript FAQ v2.4)
-
- Allen Braunsdorf
-
- postscript-faq@cc.purdue.edu
-
-
-
-
-
-
- This FAQ is formatted as a digest.
-
- Most news readers can skip from one question
-
- to the next by pressing control-G. GNUs uses
-
- C-c C-n to skip to the next question.
-
-
- Changes since the last version are marked with a '|' in the table
- of contents and in the sections in the text-only format of the FAQ.
-
- Now that there is Linux and NetBSD and BSD 386 UNIX IBM PC (and
- clone) users can run any of the X-windows and UNIX programs in the
- utilities section. See any of comp.os.linux.{
- admin,development,help,misc}. Also, there is now GhostScript for
- the Macintosh.
-
- Many thanks to Dan Carrigan for reformatting the books and
- publishers section.
-
- The utilities index from the comp.sources.postscript FAQ will be
- posted in comp.lang.postscript now too.
-
- Please help fix the FAQ! All comments should be mailed to
- postscript@cc.purdue.edu. My favorite way to receive a change
- suggestion is when it is accompanied by a section of the FAQ that
- is edited and mailed to me verbatim as an example. If you would
- like to contribute, please read the section ``about the FAQ''
- first. Thank you!
-
- Books and programs are referred to by name only. See the book
- sections for book information, and the comp.sources.postscript FAQ
- for a full list of all PostScript related programs. I have archived
- a number of the small utilities in
- wilma.cs.brown.edu:pub/postscript. You can get the
- comp.sources.postscript FAQ from
- wilma.cs.brown.edu:pub/comp.sources.postscript.
-
- Related FAQs: comp.text, comp.text.tex, comp.fonts, comp.graphics,
- comp.sys.mac.apps, comp.sources.postscript.
-
- Table of Contents
-
-
- This FAQ has 11 sections. It is available by anonymous ftp to
- wilma.cs.brown.edu:pub/comp.lang.postscript/FAQ.txt in ASCII, and
- there are also LaTeX, DVI, and PostScript formats.
-
-
- 1 General Questions
- 1.1 What is PostScript?
- 1.2 How can I tell how many pages my document will have?
- 1.3 How can I print just one page or a few pages from a big
- 1.4 How can I print more than one page per sheet of paper?
- 1.5 How can I edit a PostScript picture?
- 1.6 How can I print PostScript on a non-PostScript printer?
- 1.7 How do I print a file containing 8-bit characters?
- 1.8 What other graphics languages are there?
- 2 Printers
- 2.1 How can I get my printer to talk back to me?
- 2.2 Should I leave my printer on?
- 2.3 How do you print double-sided on a single-sided printer?
- 2.4 How do I suppress the power-on start page?
- 2.5 How do I make a downloaded font ``persistent''?
- 2.6 How do I remove a persistent (``permanent'') downloaded font?
- 2.7 How do I reset the printer without power-cycling?
- 2.8 About saving files
- 2.9 What's the control-D business?
- 2.10 Why does the printer say ``still busy'' when my document is
- 2.11 How should I set up my spoolers?
- 2.12 What are PPD files?
- 2.13 What's a timeout error?
- 2.14 Can I tell if my printer is color or black/white?
- 3 Formats and Conversions
- 3.1 How can I convert PostScript to some other graphics format?
- 3.2 How can I convert PostScript to a bitmap or pixmap?
- 3.3 How can I convert HPGL to PostScript?
- 3.4 How can I convert DVI to PostScript?
- 3.5 How can I convert HP Laserjet language (PCL) to PostScript?
- 3.6 How can I convert TeX PK format font to PostScript?
- 3.7 How do I embed PostScript into troff?
- 3.8 How do I embed PostScript into LaTeX or TeX?
- 3.9 How can I convert an image to PostScript?
- 3.10 How can I convert ASCII text to PostScript?
- 3.11 How can I convert PostScript to ASCII?
- 3.12 How do I convert between PFB, PFA, Mac, PFM, and AFM?
- 4 Fonts
- 4.1 What are .PFB and .PFA files?
- 4.2 How does Macintosh Store PostScript Fonts?
- 4.3 How can I convert a PostScript font to TeX's PK format?
- 4.4 Why are Adobe fonts hidden?
- 4.5 How do I get bitmap representations of Adobe fonts?
- 4.6 What are some good ftp sites for fonts?
- 4.7 How can I re-encode a font?
- 4.8 What's the difference between a Type 1 and a Type 3 font?
- 4.9 What vendors sell fonts for PostScript printers?
- 4.10 What are ATM fonts?
- 4.11 What are Multiple Master Fonts?
- 4.12 Do I need a Level Two printer to use Multiple Master Fonts?
- 4.13 What are Type 4 fonts?
- 4.14 What are Type 5 fonts?
- 4.15 Is there an editor for Type 1 Fonts?
- 5 Books
- 5.1 Books
- 5.2 Publishers
- 6 About Adobe
- 6.1 How do I get in touch with Adobe?
- 6.2 What can Adobe do for me?
- 7 Programming in PostScript
- 7.1 What is PostScript level 2?
- 7.2 Should I learn level 2 PostScript?
- 7.3 Where can I find examples of PostScript code?
- 7.4 What is the physical size of the page?
- 7.5 What is the Imagable Area of the page
- 7.6 Why can't I do a pathforall after a charpath ?
- 7.7 How do I center a string of text around a point?
- 7.8 How can I concatenate two strings together?
- 7.9 What do I do when I get stack overflow/underflow?
- 7.10 How can I print in landscape mode?
- 8 Computer-specific PostScript
- 8.1 Sun Workstations
- 8.2 IBM PC
- 8.3 Apple Macintosh
- 8.4 NEXTSTEP
- 9 Encapsulated PostScript
- 9.1 What is Encapsulated PostScript?
- 9.2 What are EPSI and EPSF?
- 9.3 How do I convert PostScript to EPS?
- 9.4 How do I get the bounding box of a PostScript picture?
- 10 About The Comp.Lang.PostScript FAQ
- 10.1 The PostScript FAQ: What is it?
- 10.2 How to get the FAQ files
- 10.3 How to write a FAQ answer
- 10.4 The FAQ can contain LaTeX and PostScript inserts
- 10.5 Revising the FAQ
- 10.6 How to submit new information
- 10.7 How to add a program description to the FAQ index
- 10.8 How to add a book description to the FAQ
- 10.9 Questions that need answers
- 11 About PostScript 2
- 11.1 What printers support Level 2 PostScript?
- 11.2 What is PostScript Level 2?
- 11.3 [ Color Extensions ]
- 11.4 [ Composite Font Extensions ]
- 11.5 [ Display PostScript Extensions ]
- 11.6 [ Overview of Level 2 Features ]
- 11.7 Filters
- 11.8 Binary Encoding
- 11.9 Optimized graphics operators
- 11.10 Optimized text operators
- 11.11 Forms
- 11.12 Patterns
- 11.13 Images
- 11.14 Composite Fonts
- 11.15 New Color Spaces
- 11.16 New screening/halftoning technology
- 11.17 Improved printer support features
- 11.18 Interpreter parameters
- 11.19 Resources
- 11.20 Dictionaries
- 11.21 When did Level 2 products come available?
- 11.22 Are Level 1 and Level 2 implementations compatible?
-
-
-
- 1 General Questions
-
-
- 1.1 What is PostScript?
-
- PostScript is a page description programming language.
-
- It is perhaps the most versatile and loved language for printers,
- being used in printers world-wide. It is capable of drawing to
- computer screens and any kind of drawing device. PostScript is
- interpreted, stack based and has latent typing. It somewhat
- resembles the computer language FORTH.
-
- A number of programmers write PostScript programs directly for a
- variety of drawing applications. The NeXTSTEP Operating System,
- running on Intel-486 and Motorola machines, uses Display PostScript
- Level II to manage the display. However, PostScript programs are
- usually documents meant to be printed that have been generated by a
- program written in some compiled language.
-
-
- 1.2 How can I tell how many pages my document will have?
-
- The easiest way to count pages is view your document on-line with a
- PostScript previewer. Some previewers like Ghostview and GSPreview
- count the pages for you. (See the comp.sources.postscript FAQ,
- which has a section ``PostScript Interpreters and Utilities''.)
-
- If your document is generated by a program compliant with the
- Document Structuring Conventions, you should be able to just count
- the number of ``%%Page:'' comments imbedded in the document.
- With UNIX you can type
-
- grep -c %%Page: document.ps
-
- to do this counting. (See Section 9, ``Encapsulated PostScript''.)
-
- You could use the program pspages posted to
- comp.sources.postscript, volume 2, issue 5, by Kevin Grover.
-
- The only completely reliable way to count pages is to ask the
- printer after the job is printed. PostScript printers maintain a
- page counter that can be queried before and and after the job is
- printed, and the page count is a simple subtraction. This tends to
- require rather sophisticated spooling systems and a communications
- channel that is bidirectional. However, some printers allow you to
- submit jobs on one port, and issue queries on another.
-
- Send this PostScript through a bidirectional I/O port and you'll
- get back the page count, nominally the total number of pages
- printed since manufacture:
-
- statusdict begin pagecount == end flush
-
- Experts using a level 2 printer can use the SerialOff.PS and
- SerialEHandlder.ps programs to communicate bidirectionally to the
- printer.
-
-
- 1.3 How can I print just one page or a few pages from a big
- document? How can I print pages in reverse order?
-
- Try using a host-specific program, like the UNIX command psrev,
- which is part of the TranScript suite of software from Adobe
- Systems. Or use the more general utilities Ghostview, psutils or
- psxlate.
-
- There is no guarantee that a given PostScript document can be split
- in such a manner. The reason is that some programs which generate
- PostScript code don't conform to the Adobe Document Structuring
- Conventions (DSC). (See Section 9, ``Encapsulated PostScript''.) A
- notable example of this is Microsoft Word.
-
-
- 1.4 How can I print more than one page per sheet of paper?
-
- Use psnup or pstext or enscript.
-
- These programs redefine the PostScript ``showpage'' command to do
- multiple PostScript pages per physical page. If one program doesn't
- work with a complex document, try out other ones.
-
- Some PostScript programs can't work with these programs because
- they break the EPS conventions (See Section 9, ``Encapsulated
- PostScript''.). The reason is that some Postscript operators (such
- as initgraphics, the list is in the Red book) change the printer
- state so "violently", that software trying to do things like n-up
- will get confused. Theoretically, an EPS shouldn't have any of
- these operators, but it may not really be an EPS, or there may be a
- weird interaction between TeX, the EPS and the inclusion mechanism
- that breaks psnup.
-
-
- 1.5 How can I edit a PostScript picture?
-
- If you know the PostScript programming language, just use any text
- editor to edit the code directly.
-
- If you want to do it visually, you can use Canvas on the Macintosh.
- Arts & Letters software package from Computer Support Corporation
- is supposed to be able to read arbitrary EPS files, using a
- software converter called Decipher. Also, Island Graphics has a
- trio of software packages called, appropriately, Island
- Draw/Paint/Write. This is also supposed to include a full-blown
- PostScript interpreter, and be able to read and edit arbitrary
- PostScript files.
-
-
- 1.6 How can I print PostScript on a non-PostScript printer?
-
- You need a tool that converts to something that your printer knows
- how to print. Use Freedom of Press, GhostScript, pageview, TScript,
- or UltraScript PC. Or, use a printer cartridge if your printer
- manufacturer sells one.
-
-
- 1.7 How do I print a file containing 8-bit characters?
-
- If you only have Transcript you just don't. Transcript uses
- "enscript" to convert a "text" file to a PostScript file and
- "enscript" is not able to deal with 8-bit characters.
-
- You have to use one of the many programs that convert text to
- PostScript, like a2ps, which not only handles the 8-bit characters
- in a very nice way using the standard ISO Latin 1 character
- encoding, but it also produces outputs in a series of very well
- set, nice an paper saving formats, much nicer than the ones
- produced by enscript.
-
-
- 1.8 What other graphics languages are there?
-
- HPGL is for pen plotters. PCL is for HP Laser printers (and
- compatibles). Both are by HP, and PCL5 is supposed to allow
- inclusion of HPGL commands, preceded by an appropriate escape code,
- however I have found this to give errors and abort even for simple
- HPGL code that plots fine on a plotter.
-
- 2 Printers
-
-
- 2.1 How can I get my printer to talk back to me?
-
- Experts using a level 2 printer can use the SerialOff.PS and
- SerialEHandlder.ps programs to communicate bidirectionally to the
- printer.
-
- If you just need the error returns from the printer, you can spawn
- a
-
- cat < port >> logfile&
-
- in your system startup. Then you will get a log of everything the
- printer says. This works on any serial-port connected printer.
-
-
- 2.2 Should I leave my printer on?
-
- Most laser printers consume several hundred watts while idle in
- order to keep the fuser warm. A few models shut down automatically
- after a while, and this feature seems to be the wave of the future.
-
- Wear-and-tear due to power cycling is no longer the problem it once
- was. The advice in the FAQ would have been appropriate in the
- 1970s, but no longer. A good modern rule of thumb is to turn off
- electronic equipment if it won't be used for a few hours (overnight
- or weekends), otherwise to leave it on.
-
-
- 2.3 How do you print double-sided on a single-sided printer?
-
- The biggest problem comes in jamming when you feed the document
- through the second time to print the backside. To minimize this
- problem, you want to minimize the curl that the paper acquires in
- passing through the printer. So, if your printer normally stacks
- face down (to make the page order come out right) rearrange it
- (often this involves flipping out a plastic paper catcher on the
- end) so the pages feed straight through and stack face up. Then
- acquire and build psutils, and run your document through the
- following commands:
-
-
- pstops '2:0' <original.ps >odd.ps
- pstops '2:1U@1(1w,1h)' <original.ps >even.ps
-
- This puts the even and odd pages in different files, and rotates
- the even pages 180 degrees so the top and bottom are reversed. This
- lets you feed the paper back through with the old trailing edge at
- the front; since pages get the most severe curl at the leading edge
- this also helps reduce jamming. Print odd.ps, flip the output pile
- face down and backwards, put it back in the input magazine, and
- print even.ps.
-
- If the printer is fed by a shared print queue, you can leave the
- paper magazine out after you put the first pass pages into it,
- before you submit the second half, then make sure your job is at
- the front of the queue (waiting for you to replace the paper tray)
- before you reinsert the tray.
-
- Alternatively, particularly with serially-interfaced printers,
- there's a long enough delay to pull the paper tray out between two
- print jobs, so you can submit them both, then pull the tray out as
- soon as the last page of the first job finishes. The ``pstops''
- invocations report how many pages they emit, so you can count pages
- to determine when the first one is done.
-
-
- 2.4 How do I suppress the power-on start page?
-
- Disabling the start page is described in your printer's PostScript
- supplement. The most common sequence is ``serverdict begin 0
- exitserver statusdict begin false setdostartpage end''.
-
-
- 2.5 How do I make a downloaded font ``persistent''?
-
-
- %!PS-Adobe-2.0 ExitServer
- %%BeginExitServer: 0
- serverdict begin 0 exitserver
- %%EndExitServer
- % Test for existence of font, abort if present.
- % This won't work on a printer with a hard disk!
- /str 32 string def
- /Eurostile dup FontDirectory exch known
- { str cvs print ( is already loaded!\n) print flush quit }
- { (loading font ) print str cvs print (\n) print flush }
- ifelse
- %% Font follows...
-
- The part following ``%%EndExitServer'' is optional. If you use
- it, change Eurostile to the name of the font. The default PFA
- behavior is to use up additional VM for the new copy if another
- copy has already been downloaded.
-
-
- 2.6 How do I remove a persistent (``permanent'') downloaded font?
-
- In PostScript Level 2, you can use the undefinefont operator to
- remove fonts selectively.
-
- The only reliable method in PostScript Level 1 is to restart the
- printer, for example with:
-
-
- serverdict begin 0 exitserver
- systemdict /quit get exec
-
- Of course, the real solution is just to not download persistent
- fonts unless you really want them to persist indefinitely. If you
- want them only for one job, download them as part of the job.
-
-
- 2.7 How do I reset the printer without power-cycling?
-
- Most printers can be reset by issuing ``serverdict begin 0
- exitserver systemdict /quit get exec''.
-
-
- 2.8 About saving files
-
- Adobe recommends that driver writers do not put EOT (control-D)
- into files when saving to disk. Normally, the EOT is a part of the
- protocol for parallel and serial ports and never hits the
- PostScript interpreter.
-
- Drivers that do embed EOD can create problems for devices that
- allow other communication methods (e.g. AppleTalk, Ethernet, and
- SCSI) where the EOT is not part of the communications protocol. It
- is useful to redefine EOT in these instances so that the
- interpreter does not generate an error. The recommended
- redefinition is:
-
-
- (\004) cvn {} def
-
- This should convert any stand-alone embedded EOTs into a null
- procedure. This definition does not cause all 004 characters to be
- consumed, it just prevents an "undefined" error if you try to
- execute one.
-
-
- 2.9 What's the control-D business?
-
- PostScript printers communicating over serial lines use control-D
- as an end of job indicator. The host computer should then wait for
- the printer to send a control-D back to indicate that the job has
- finished. Managing the serial protocol between host and printer
- should be done by some form of print service, but if you're unsure
- whether your print service is doing it, it's an idea to send one
- yourself.
-
- PC type computers frequently do not have any kind of printer
- manager and applications end up sending control-D characters to the
- printer, sometimes before and after a job. PC applications
- frequently embed a control-D as the first character in the print
- file, presumably to flush out any other jobs, and thereby breaking
- the Adobe Document Structuring Conventions. There is a way to turn
- off generation off the control-D in Windows (anybody know it?).
-
- According to the PRINTERS.WRI file that is included with MS Windows
- 3.x and up, you can place a line
-
-
- CtrlD=0
-
- in the WIN.INI sections for any postscript printers for which you
- wish to supress the Control-D generation. This usually works as
- long as you're using a specific printer, i.e. Apple LaserWriter,
- QMS820, etc ] . However if you use the generic ``PostScript
- printer'' driver, it does not work. There is a freeware program
- called ctrld that will let users select if a given ps driver should
- output control-D's or not. It can be found at ftp.cica.indiana.edu
- in the file ftp/pub/pc/win3/misc/ctrld10.zip.
-
- The shareware package WLPRSPL (an LPR spooler for Windows) includes
- a convenient utility program for listing the relevant printers and
- turning the option off or on.
-
- If you want to prevent applications from doing this, you could use
- a spooler which would look at the end of every outgoing file and
- drop the control-D on the end if there happened to be one.
-
- If you want a spooler, check out lprps.
-
-
- 2.10 Why does the printer say ``still busy'' when my document is
- done printing?
-
- Sometimes when you finish a print job, the printer ``Ready'' light
- keeps flashing for a minute or so. Somehow, the printer has
- received some character(s) after the control-D which was sent
- immediately after the PostScript file. The most common is that a
- newline has been inserted after the control-D. The printer took
- these character(s) to be another program, and eventually timed-out
- while waiting for the rest of it. This can happen because of the
- host not waiting for the printer to finish.
-
-
- 2.11 How should I set up my spoolers?
-
- Since PostScript usually is prefixed with ``%!'', it's easy to
- educate your spooler to autoselect between passing raw PostScript
- through to the printer or doing an ``ASCII-to-PostScript''
- conversion first. There are many packages that will do this,
- including Transcript and psxlate.
-
- Unfortunately, many PostScript applications generate PostScript
- without a proper ``%!'' magic cookie.
-
- The spooler should be responsible for transmitting the ``job
- termination code'' (a control-D on serially-connected printers) to
- the printer, not the application. Do yourself a favor and disable
- (or filter out) control-Ds in your applications and generate them
- in the spooler. This will be far more reliable in the face of
- arbitrary input.
-
-
- 2.12 What are PPD files?
-
- Adobe Postscript Printer Description (PPD) files describe how to
- use the special features for a specific Postscript printer. They
- are suppose to be human-readable, but they are really only readable
- by PostScript gurus. It is the responsibility of the printer
- manufacturer to supply PPD files. However, the Adobe mail server
- has many of them. (see the Section 6, ``About Adobe'')
-
- Adobe Technical Document 5003 - PPD Specification describes how to
- read and parse PPD files. You can find it on the Adobe mail server,
- or by anonymous ftp to ftp.adobe.com:/pub/adobe/Documents/5003.PPD
- _Spec.ps.
-
-
- 2.13 What's a timeout error?
-
- The wait timeout is the maximum time the PostScript interpreter
- will wait for input before aborting. The timeout interval begins
- when the interpreter finishes executing everything it has received
- so far and starts waiting for the host to send it more data. If
- this timeout expires and no more data arrives, a timeout occurs.
-
- In particular, a compute-bound job (or one that goes into an
- infinite loop) will not encounter a wait timeout, since it is not
- waiting. The long diatribe about the need to "keep sending stuff"
- and problems with long compute-bound jobs is totally off the mark.
- The data channel may stop due to flow control, and may stay stopped
- for long periods if the printer is very busy. This is perfectly OK
- and won't cause a timeout.
-
- Don't disable the wait timeout. The whole point of the wait timeout
- is to prevent the interpreter from being indefinitely tied up by a
- host application that has crashed, a communication channel that has
- been disconnected, or whatever. This is particularly important for
- networked printers. The only situation in which disabling timeouts
- is appropriate is when debugging applications or drivers, since you
- don't want the printer timing out while the host is at a breakpoint
- or something.
-
-
- 2.14 Can I tell if my printer is color or black/white?
-
- If you tried testing for the presence of ``colorimage'', your
- application will fail on PostScript level 2 printers. Several
- applications make this mistake, simply testing for the presence of
- a color operator (``colorimage'', ``setcmykcolor'', etc.). This is
- not sufficient -- some level 1 PostScript black and white devices
- and all level 2 devices include the color operators.
-
- However, before you do this, you should ask yourself *why* you want
- to know. There are really two reasons an application might care
- about the color capabilities of a printer.
-
- 1. To determine if the printer will accept PostScript language
- programs using the color extensions (colorimage, setcmykcolor,
- etc.)
-
- 2. To determine if the printer, as currently configured, will
- actually produce color output. This is what processcolors tells
- you.
-
- These are entirely different questions, and developers should make
- sure they are asking the right one. (1) is a language compatibility
- question, similar to the issue of Level 1 versus Level 2 (see red
- book, appendices A and D). (2) is a device dependent query, which
- is essentially independent of (1).
-
- In particular, it makes sense to ask (2) only if the application
- intends to take different actions depending on the outcome. For
- example, a CAD application might paint objects with stipple
- patterns on a monochrome device but true color on a color device.
- Or a prepress application might want to query and/or change the
- many Level 2 page device parameters dealing with production of
- separations (see PostScript Language Supplement for version 2012 or
- greater).
-
- On the other hand, if an application is not going to do such
- things, it should ask only question (1). If the printer will accept
- the color extensions, the application should sent it color output,
- whether or not the printer will actually produce color. That way,
- the PostScript language file captures the application's intent, and
- color will be produced if the file is later diverted to a color
- printer.
-
- Some times it's sensible to make such a test, though. For example,
- an application might want to display red and green on a color
- device, but a varying fill pattern on a black and white device
- since red and green are difficult to distinguish when rendered as
- gray.
-
- In ``statusdict'', the ``processcolors'' operator, if present,
- returns the number of device colors. Black and white level 2
- devices I have tested (TI microLaser Turbo, Apple LaserWriter IIg)
- omit ``processcolors''. Level 2 Color devices (such as the
- Tektronix Phaser III PXi) include it, and it returns the number of
- device colors.
-
- So, on both level 1 and level 2, the correct technique is to test
- for the presence of ``processcolors'' in ``statusdict'' and assume
- black and white if it is not present. If it is present, execute it
- and test the result for a ``1'', indicating black and white.
-
-
- % returns true for black & white, false otherwise
-
- /black-and-white-device
- { statusdict begin
- /processcolors where
- { pop processcolors } { 1 } ifelse
- end
- 1 eq
- } def
-
-
- 3 Formats and Conversions
-
- This section describes formats that can be converted to and from
- PostScript, and how to convert them. Encapsulated PostScript and
- Fonts have their own sections.
-
-
- 3.1 How can I convert PostScript to some other graphics format?
-
- Since PostScript is not just a picture-description language, but in
- fact a complete programming language, you will need a complete
- PostScript interpreter to convert or display a PostScript graphic.
- See the comp.sources.postscript FAQ for an index of all PostScript
- related programs.
-
- Try using Ghostscript or Tailor.
-
-
- 3.2 How can I convert PostScript to a bitmap or pixmap?
-
- Use Ghostscript, and build the devices under gs pbmraw, pbm.dev,
- etc. (See devs.mak under the sources for gs) The following converts
- file.ps in file.ppm:
-
- gs -sDEVICE=ppmraw -sOutputFile=file.ppm file.ps
-
- Or try using the Ghostscript tools ps2image.ps or pstoppm.ps. Or
- use the NETPBM tool pstopnm. Netpbm (a descendant of the PBMPLUS
- utilities) can then convert that image into whatever format you
- want.
-
- You can also use the ImageMagick-tools program ``convert''. Try
- ftp.x.org in contrib/ImageMagick.tar.Z.
-
- If you have the new xv installed, it can now read PostScript files,
- and it stores them to any format.
-
-
- 3.3 How can I convert HPGL to PostScript?
-
- Use hp2ps.
-
-
- 3.4 How can I convert DVI to PostScript?
-
- Use dvips.
-
-
- 3.5 How can I convert HP Laserjet language (PCL) to PostScript?
-
- Use lj2ps for simple PCL. Alternatively, another lj2ps, from
- psroff3.0, is a little more complete.
-
- hp2pbm can convert all of PCL4 (up to and including rasters,
- downloaded fonts and macros) into PostScript, G3 and any other
- PBM-supposed format.
-
-
- 3.6 How can I convert TeX PK format font to PostScript?
-
- Psroff3.0 contains programs that can convert TeX PK format or HP
- SFP format fonts into PostScript bitmap fonts along with
- rearranging encoding, etc. While bitmap bfonts scale poorly, this
- is sometimes of use in special circumstances.
-
-
- 3.7 How do I embed PostScript into troff?
-
- Most troffs can be ``coerced'' into including PostScript figures.
- The best approach is a configuration that takes EPS PostScript and
- can automatically scale it, or tell troff how big the picture is.
- Groff and DWB 3 have this built in.
-
- psfig is an add-on EPS inclusion handler that can add this
- capability to other versions of troff, provided that a compatible
- PostScript driver is used (Psroff 3.0 for ditroff or CAT troff,
- Transcript for ditroff). See the comp.text FAQ for more detail.
-
-
- 3.8 How do I embed PostScript into LaTeX or TeX?
-
- You should use an add-on program for seamless PostScript inclusion.
-
- Use psfig.
-
- If your LaTeX is simple, but your PostScript is fancy, try using
- LameTeX.
-
- If you need a good compromise, use pstricks.
-
- See the comp.text.tex FAQ.
-
-
- 3.9 How can I convert an image to PostScript?
-
- First determine what format your images are in. PBMPLUS will have
- converters for most image formats.
-
- To convert an image to PostScript with the X Window System, you can
- display the image on the screen, and grab it with xv, which can
- save the image in a PostScript file.
-
- A more general alternative in X Window System would be to use the
- PPM, PGM and PBM utilities in the X11R4 and X11R5 distributions.
-
-
- 3.10 How can I convert ASCII text to PostScript?
-
- Unless your printer is smart about raw ASCII, you can't just send
- the ASCII to a PostScript printer, because the printer will attempt
- to interpret your ASCII file as PostScript code. You need a program
- which will wrap some PostScript code around your ASCII file.
-
- Try any of the following programs: asciiprint.ps, ato2pps, cz,
- ETSR, i2ps, lpp, lwf, POSTPRN, printer, psf, psfx80, PSR, ps2txt,
- pstext, swtext, text2ps, TranScript, spike.ps, enscript, nenscript,
- a2ps, asc2ps, ascii2ps, crossword.ps, double.ps, landscape.ps,
- numbered.ps, portrait.ps, or wide.ps.
-
- If you want to make something fancy, why not use a word processor?
- Most of them can ``include'' ASCII directly from a file and produce
- PostScript.
-
-
- 3.11 How can I convert PostScript to ASCII?
-
- In general, when you say ``I want to convert PostScript to ASCII''
- what you really mean is ``I want to convert MacWrite (which makes
- PostScript output) to ASCII'' or ``I want to convert somebody's TeX
- document (which I have in PostScript) to ASCII''.
-
- Unfortunately, programs like these (if they're smart) do a lot of
- fancy stuff like kerning, which means that where they would
- normally execute the postscript command for
-
-
- ``print water fountain''
-
- instead they execute the postscript command for
-
-
- ``print wat'' (move a little to get the spacing *just* right)
- ``print er'' (move a little to get the spacing *just* right)
- ``print foun'' (move a little to get the spacing *just* right)
- ``print tain'' (move a little to get the spacing *just* right)
-
- So if I write a program to look through a PostScript file for
- strings, like ps2ascii.pl, It can't tell where the words really
- end. Here my program would see 4 strings
-
-
- ``wat'' ``er'' ``foun'' ``tain''
-
- And it doesn't see any difference between the spacing between
- ``found'' and ``tain'' (not a word break) and the spacing between
- ``er'' and ``foun'' (a real word break).
-
- The problem is that PostScript for text formatting is usually
- produced machine generated by a text formatter. A PostScript
- generator like dvips might have a special command like ``boop''
- that differentiates between a real world break and a fake one. But
- every text formatter that generates PostScript has their own name
- for the ``boop'' command.
-
- So you really want a ``PostScript to ASCII converter for dvips
- output''.
-
- The only general solution I can see would be to redefine the show
- operator to print out the currentpoint for every letter being
- printed, like gs2asc, and then make up an ASCII page based on this
- by sticking ASCII characters where they go in a two-dimensional
- array. That would convert PostScript to ASCII ``formatted''.
-
- But even that wouldn't solve the problem, because special bitmap
- fonts and and standard fonts like Symbol don't always print a ``P''
- when you say the letter ``P''. Sometimes they print the greek Pi
- symbol or a chess piece or a ZapfDingBat.
-
- Use ps2a, ps2ascii, ps2txt, ps2ascii.ps or ps2ascii.pl.
-
-
- 3.12 How do I convert between PFB, PFA, Mac, PFM, and AFM?
-
- Write or call Y and Y Software, listed in the fonts section as a
- vendor. For NEXTSTEP systems, write or call Trilithon Software,
- also listed in the fonts section as a vendor.
-
-
- 4 Fonts
-
- This section answers questions about fonts as they pertain to
- PostScript. See the comp.fonts FAQ for more information about
- fonts.
-
-
- 4.1 What are .PFB and .PFA files?
-
- ``PFB'' stands for Printer Font Binary, and is a STORAGE FORMAT in
- which Adobe Type 1 font programs are usually distributed for IBM PC
- and compatibles. Many application programs support fonts in PFB
- format, and refer to them as ``downloadable''.
-
- Macintosh uses a radically different binary storage format than PC.
- See below for some details.
-
- PFB files usually appear in several sections, each section preceded
- by a binary header containing the type of the section (ASCII,
- binary, or end of file) and the length of the section. Because of
- the presence of the binary section headers, and the possible
- presence of binary data sections, PFB files cannot in general be
- sent directly to a PostScript printer. Application programs like
- dvips which use fonts in PFB format unpack the font into ASCII
- format before sending it to the printer. If you would like to use a
- font which is in PFB format, you must unpack the font to make a PFA
- (Printer Font ASCII) file. Adobe Systems supply a font downloader
- for PC's which turns the PFB format into PFA format on the fly as
- it's being downloaded.
-
- ``PFA'' stands for Printer Font ASCII, which is the unpacked
- version of a PFB file. In PFB, the data is stored as-is. In a PFA,
- any binary data present in a former PFB file is stored as ``ascii
- hex''--meaning each byte of binary data is turned into two ASCII
- characters representing the hexdecimal value.
-
- Once you have the PFA file, just send it to the printer ahead of
- your file, and use the font like any other. There are several
- programs which can do the conversion from PFB to PFA for you. Try
- t1utils.
-
- Details of the PFB format can be found in Adobe Technical Note #
- 5040, ``Supporting Downloadable PostScript Fonts''.
-
-
- 4.2 How does Macintosh Store PostScript Fonts?
-
- To start off understanding how Macintosh stores PostScript fonts,
- first you need to know that a Macintosh file consists of two
- different parts, called ``forks''. The two forks of a Macintosh
- file are called the ``resource fork'' and the ``data fork''.
-
- The data fork normally contains the data of the file. In the case
- of a text editor, for instance, the data fork contains the text.
-
- The resource fork contains system (resource) information about the
- file: who owns the file, its icon maybe, and other information. The
- various bits of information in the resource fork are contained in a
- complex structure. One of the items is a resource map, detailing
- the different kinds of resources and their positions in the
- resource fork.
-
- The reason you need to know all this is because PostScript Type 1
- fonts are stored in the resource fork of Macintosh files. Why this
- was done is a historical mystery now, because the information could
- just as easily have been stored in the data fork in a format
- similar to PFB, and unpacking fonts would have been a whole lot
- easier.
-
- PostScript Type 1 fonts are stored in resources with the name
- POST''. If you aren't familiar with the layout of resource forks,
- study the ``Resource Manager'' chapter of the Inside Macintosh
- books. Details of Macintosh PostScript Type 1 storage format can be
- found in Adobe Technical Note # 5040, ``Supporting Downloadable
- PostScript Fonts''. The information in the Adobe Technical Note is
- incomplete in the sense that you need to understand the layout of
- Macintosh resource forks to make sense of the information.
-
- In the majority of cases, you can assume that the POST resources
- are stored contiguously in the resource fork. Unfortunately, there
- are a few cases where this isn't true, and the resulting PFA file
- will be incorrect.
-
- POST resources occur in five types. Type 0 are comments. Type 1 are
- ASCII data. Type 2 are binary data. Type 3 are end of this font
- program. Type 4 means that the remainder of this font appears in
- the data fork of the file! Type 5 means end of file.
-
- Having talked about PostScript Type 1 fonts being stored in the
- resource fork, why is there a case where the font comes out of the
- data fork? Some PostScript Type 3 fonts are stored in this manner.
-
-
- 4.3 How can I convert a PostScript font to TeX's PK format?
-
- Use ps2pk or try out the GNU font utilities in fontutils.
-
-
- 4.4 Why are Adobe fonts hidden?
-
- In PostScript level 1, Adobe's fonts were hidden because they
- didn't want people pirating copies instead of paying for them.
- That's why you can't do a pathforall on a charpath.
-
- PostScript Level Two has removed the restriction, in the words of
- the new Red Book, ``for most fonts''. There will still be some
- vendors who will want to restrict access. Japanese font vendors,
- for example, are concerned about piracy -- given the work that goes
- into an 8,000-character Kanji font.
-
-
- 4.5 How do I get bitmap representations of Adobe fonts?
-
- On the IBM PC, use the Font Foundry program included with the font.
- If you don't have it, contact Adobe for an upgrade.
-
-
- 4.6 What are some good ftp sites for fonts?
-
-
- ftp.cs.umb.edu
- sumex-aim.stanford.edu
- archive.umich.edu
- ftp.cica.indiana.edu /pub/pc/win3/fonts
- colonsay.dcs.ed.ac.uk /pub/postscript/fonts
-
-
- For the NeXT platform, fonts are available on the NeXT-FTP-archives,
- sonata.cc.purdue.edu :/pub/next/graphics/fonts
- fiasko.rz-berlin.mpg.de :/pub/next/fonts
-
- For Macintosh, look in sumex-aim.stanford.edu,
- mac.archive.umich.edu, and ftp.cs.umb.edu (192.12.26.23), in
- pub/tex/ps-screenfonts.tar.Z.
-
- Color PostScript samples and many other PostScript programs are
- available from irisa.irisa.fr.
-
-
- 4.7 How can I re-encode a font?
-
- See ddev.ps for an example for code that does this. You can find it
- by ftp to wilma.cs.brown.edu:pub/postscript/ddev.ps.
-
-
- 4.8 What's the difference between a Type 1 and a Type 3 font?
-
- The Type 1 font format is a compact way of describing a font
- outline using a well-defined language that can be quickly
- interpreted. The language contains operations to provide the
- rasterizer with additional information about a character, known as
- hints. The hints are additional information which describes how to
- adjust the representation of the character to make it look good
- when the font size is small compared to the device resolution. The
- Type 1 font format is defined in the book ``The Adobe Type 1 Font
- Format'', also known as the black book, for the colors on its
- cover.
-
- The Type 1 font format has nothing to do with TrueType, which is
- another font format defined by Apple. The Type 1 font format has
- been around quite a while, and is used on a wide variety of
- platforms to obtain scalable fonts.
-
- Most clone interpreters will not have Adobe's proprietary rendering
- technology which interprets font hints to improve the appearance of
- fonts shown at small sizes on low-resolution devices. The
- exceptions (PowerPage and UltraScript) have their own hint
- interpreters.
-
- The Type 3 font format is a way of packaging up PostScript
- descriptions of characters into a font, so that the PostScript
- interpreter can rasterize them.
-
- It is easier to create a Type 3 font program by hand than to create
- the corresponding Type 1 font program. Type 3 font programs have
- access to the entire PostScript language to do their imaging,
- including the 'image' operator. They can be used for bitmapped
- fonts, although that is certainly not a requirement. The Type 3
- font format contains no provisions for 'hinting', and as such Type
- 3 font programs cannot be of as high a quality at low resolutions
- as the corresponding Type 1 font program.
-
- Both formats are scalable formats, and both can be run on any
- PostScript interpreter. However, because of the requirement that a
- Type 3 font program have a full PostScript interpreter around, Type
- 3 font programs cannot be understood by the Adobe Type Manager.
- Only Type 1 font programs can.
-
- Why bother making a font that's just made up of bitmaps? Once a
- character from a font has been rendered, the bitmap will be saved
- in a cache, and another instance of the same character at the same
- size and orientation can be quickly drawn without recalculation.
-
- Because of Adobe Type Manager's wide availability on a large number
- of platforms (PC, Mac, and Unix), the Type 1 font format makes an
- excellent cross-platform scalable font standard.
-
-
- 4.9 What vendors sell fonts for PostScript printers?
-
- PostScript font vendors are many and varied. Here is a partial
- list.
-
-
-
- Adobe Systems
- sells a variety of fonts. With the huge number of third-party
- Type 1 vendors, in recent years Adobe have specialized in
- creating their own ``Adobe Originals'' -- high-quality fonts,
- some of which are their renditions of classic faces (Adobe
- Garamond) and some of their own devising (Stone, Utopia, ...).
- Adobe Systems, 1585 Charleston Road, Mountain View, CA 94039.
- (415) 961-4400
-
-
- AGFA Compugraphic,
- 90 Industrial Way, Wilmington, Massachusetts 01887. (508)
- 658-5600.
-
-
- Bear Rock Technologies
- specializes in bar code fonts. 4140 Mother Lode Drive, Suite 100,
- Shingle Springs California 95682. Toll-free sales: (800)
- 232-7625. International: (916) 672-0244. FAX: (916) 672-1103.
- E-mail: info@bearrock.com.
-
-
- Bitstream,
- Athenaeum House, Cambridge, MA 02142. (617) 497-6222.
-
-
- Callifonts
- has a really nice looking set of calligraphy typefaces. P.O. Box
- 224891, Dallas, TX 75222. (214) 504-8808.
-
-
- Casady and Greene,
- 22734 Portola Drive, Salinas, CA 93908. (408) 484-9228.
-
-
- Ecological Linguistics,
- specializes in non-Roman alphabets. Ecological Linguistics, P. O.
- Box 15156, Washington D. C. 20003.
-
-
- Emigre Graphics
- 4475 ``D'' Street / Sacramento CA 95819 (800) 944 9021 ] Over 70
- faces, all PostScript Type 1 ATM compatible, including the
- omnipresent Modula and infamous Template Gothic. Almost all faces
- are ``must haves'' for graphic designers. Call for free catalog.
-
-
- The Font Company
- 12629 North Tatum Boulevard, Suite 210, Phoenix Arizona 85032.
- (602) 998-9711.
-
-
- Image Club,
- # 5 1902 11th St Southeast, Calgary, Alberta T2G 2G2, Canada.
- (403) 262-8008.
-
-
- Lanston
- specializes in display faces.
-
-
- Letraset
- specializes in fancy kinds of script fonts, Letraset, 40
- Eisenhower Drive, Paramus, New Jersey 07652. (201) 845-6100
-
-
- Linguists Software
- specializes in non-Roman alphabets (Farsi, Greek, Hangul, Kanji,
- etc.) Linguists Software, P. O. Box 580, Edmonds, Washington
- 98020-0580. (206) 775-1130.
-
-
- Monotype,
- 53 West Jackson Boulevard, Suite 504, Chicago, IL 60604.
-
-
- Page Studio Graphics,
- Chandler, Arizona, specialize in symbols fonts such as Mac icons,
- keyboards, and others, Page Studio Graphics, 3175 North Price
- Road, # 1050, Chandler, Arizona 85224. (602) 839-2763.
-
-
- Software Complement
- specializes in creating logo fonts. 8 Penn Avenue, Metamoras,
- Pennsylvania 18366 USA.
-
-
- The Font Company
-
-
- TreacyFaces
-
-
- Trilithon Software,
- Portola Valley, California can supply fonts from the Adobe Type
- library for NEXTSTEP. If you're working on NEXTSTEP, getting
- fonts in the correct form with ancillary information and
- downloaders and such is important. You can convert Mac fonts to
- NEXTSTEP (PFA) format, but NEXTSTEP demands AFM files as well,
- and many Mac/PC font vendors omit AFM files because Mac/PC apps
- don't use them. For Adobe fonts for NEXTSTEP, save yourself a lot
- of hassle by getting the fonts from Trilithon.
-
- If you want non-Adobe fonts for NEXTSTEP, Trilithon Software can
- supply font conversion tools to go from Macintosh or PC format to
- NEXTSTEP format. The conversion tools generate AFM files if none
- are supplied with the fonts, and sanity check AFM files for
- correctness when they are supplied.
-
- Two Ohlone, Portola Valley, California 94028 USA. Telephone:
- (415) 325-0767, FAX: (415) 325-0768. E-Mail: info@trilithon.com.
-
-
- URW
- supplies high-quality fonts at low prices. They are also the
- creators of the top of the line font creation and editing
- software called Ikarus. URW, 4 Manchester Street, Nashua, New
- Hampshire 03060. (603) 882-7445.
-
-
- Y and Y Software
- , 106 Indian Hill, Carlisle Massachusetts 10741 USA. (508)
- 371-3286. Sells a Font Metric Manipulation Package for DOS with
- lots of interesting utilities.
-
- Many more font vendors exist. Look in magazines and other sources.
- Check the Usenet newsgroup comp.fonts. Look in U & lc, published by
- ITC, for long lists of vendors.
-
-
- 4.10 What are ATM fonts?
-
- There has been a rash of misunderstanding about the nature of Type
- 1 fonts and what people call ATM fonts. ATM fonts are Adobe Type 1
- fonts. ATM stands for Adobe Type Manager -- a utility to render
- smooth characters on Macintosh and PC screens, from font outlines
- (Type 1 fonts) instead of using bitmap fonts. In one sense, there's
- no such thing as an ``ATM font'' -- ATM interprets Type 1 fonts, so
- there's no need to create a new name. A correctly constructed Type
- 1 font can be interpreted by ATM.
-
-
- 4.11 What are Multiple Master Fonts?
-
- Multiple Master Fonts are an extension to the Adobe font format.
- providing the ability to interpolate smoothly between several
- ``design axes'' from a single font. Design axes can include weight,
- size, and even some whacko notions like serif to sans serif.
- Adobes' first Multiple Master Font was Myriad -- a two-axis font
- with WEIGHT (light to black) on one axis, and WIDTH (condensed to
- expanded) along the other axis. In the case of Myriad, there are
- four ``polar'' designs at the ``corners'' of the design space. The
- four designs are light condensed, black condensed, light expanded,
- and black expanded.
-
- Given polar designs, you can set up a ``weight vector'' which
- interpolates to any point within the design space to produce a
- unique font for a specific purpose. So you can get a ``more or less
- condensed, somewhat black face''.
-
-
- 4.12 Do I need a Level Two printer to use Multiple Master Fonts?
-
- No -- Multiple Master Fonts can be used on any PostScript printer.
- Multiple Master Fonts need a new PostScript operator known as
- makeblendedfont. The current crop of Multiple Master Fonts supply
- an emulation of this operator so the printer doesn't need this
- operator.
-
- A short tutorial on Multiple Master Fonts and makeblendedfont
- appears in PostScript by Example, by Henry McGilton and Mary
- Campione, published by Addison-Wesley.
-
-
- 4.13 What are Type 4 fonts?
-
- Type 4 fonts are actually Type 3 fonts which contains a Type 1
- font. They're stored on hard disk in a special way to save space
- when they're loaded into printer RAM by findfont. Your interpreter
- must have the extra PostScript operator CCrun to handle Type 4
- fonts. They are usually used for Kanji (Japanese) characters.
-
-
- 4.14 What are Type 5 fonts?
-
- Type 5 fonts are actually Type 1 fonts, but stored in printer ROM
- in a special compressed format. They're also known as CROM fonts
- (for Compressed ROM fonts). The contents of the CharStrings entries
- in Type 5 will probably be different from Type 1.
-
-
- 4.15 Is there an editor for Type 1 Fonts?
-
- Fontographer for the Macintosh and MS-Windows under DOS is
- available from Altsys Corporation, 269 West Renner Road,
- Richardson, Texas 75080 USA. (214) 680-2060.
-
- Ikarus-M is availble for the Macintosh from URW, Harksheider
- Strasse 102, 2000 Hamburg 65, GERMANY. (040) 60 60 50 Or URW
- Software and Type, 4 Manchester Street, Nashua, New Hampshire
- 03060. (800) 229-8791 in USA. (603) 882-7445 otherwise.
-
- Acknowledgments
-
-
- This FAQ was compiled based heavily on the contributions of and
- with the help of Henry McGilton, Dick Dunn, Howard Gayle, Dan
- Carrigan, Carl Orthlieb, Ed Garay, Robert Lerche, Bruno Hall, Tom
- Epperly, and Chris Lewis.
-
- Also thanks to contributors Paul Balyoz, Karl Berry, Jerry Black,
- Charles Cashion, Jim DeLaHunt, Leonard Hamey, Chris Herborth, Steve
- Kinzler, Bill Lee, Timo Lehtinen, Carl Lydick, Otto Makela, Bill
- Pringle, Tony Valsamidis, and Jamie Zawinski.
-
- Special thanks to Ken Porter, who originally compiled and organized
- this FAQ, and to Jon Monsarrat who built it from there.
-
-
-
- Ver Date Reason
- ----------------------------------------------------------------
- 1.00 12-18-90 Creation by Ken Porter
- 1.06 5-29-91 expanded on EPS explanation, general updates
- 2.00 10-25-92 Brought up to date and expanded, by Jon Monsarrat
- 2.1 5-21-93 Revised because of new comp.sources.postscript group.
- 2.2 12-26-93 Finally incorporated all the '93 comments and suggestions.
- 2.3 07-07-94 Incorporated early '94 comments and suggestions.
- 2.4 03-04-95 Mostly changed references to maintainer (ab).
-
-
- This FAQ is copyright (C) 1995 by Allen Braunsdorf. Permission is
- granted to freely edit and distribute as long as this copyright
- notice is included.
-
- This document was written with the LaTeX language and formatted by
- LameTeX, the PostScript hacker's LaTeX.
-