home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula
/
nebula.bin
/
Documents
/
FAQ
/
PostScript
/
PostScript.faq
< prev
next >
Wrap
Text File
|
1993-01-27
|
119KB
|
3,116 lines
-- PostScript --
Answers to Questions
(the comp.lang.postscript FAQ v2.01)
Jon Monsarrat
jgm@cs.brown.edu
This FAQ is formatted as a digest.
Most news readers can skip from one question
to the next by pressing control-G.
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.
Please help fix the FAQ! All comments should be mailed to
jgm@cs.brown.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
appropriate sections for full information.
Related FAQs: comp.text, comp.text.tex, comp.fonts, comp.graphics,
Table of Contents
This FAQ has 12 sections. It is available by anonymous ftp to
wilma.cs.brown.edu:pub/comp.lang.postscript in ASCII, 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?
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 I suppress the power-on start page?
| 2.4 How do I make a downloaded font ``persistent''?
2.5 How do I remove a persistent (``permanent'') downloaded font?
2.6 How do I reset the printer without power-cycling?
2.7 About saving files
| 2.8 What's the control-D business?
| 2.9 Why does the printer say ``still busy'' when my document is
2.10 How should I set up my spoolers?
| 2.11 What are PPD files?
3 Formats and Conversions
3.1 How can I convert PostScript to some other graphics format?
3.2 How can I convert DVI to PostScript?
3.3 How can I convert HP Laserjet language (PCL) to PostScript?
3.4 How can I convert TeX PK format to PostScript?
3.5 How do I embed PostScript into troff?
3.6 How do I embed PostScript into LaTeX or TeX?
3.7 How can I convert an image to PostScript?
3.8 How can I convert ASCII text to PostScript?
| 3.9 How can I convert PostScript to ASCII?
4 Fonts
| 4.1 What are .PFB and .PFA files?
4.2 How can I convert a PostScript font to TeX's PK format?
4.3 Why are Adobe fonts hidden?
4.4 How do I get bitmap representations of Adobe fonts?
4.5 What are some good ftp sites for fonts?
4.6 How can I re-encode a font?
4.7 What's the difference between a Type 1 and a Type 3 font?
| 4.8 What vendors sell fonts for PostScript printers?
4.9 What are ATM fonts?
4.10 What are Multiple Master Fonts?
4.11 Do I need a Level Two printer to use Multiple Master Fonts?
4.12 What are Type 4 fonts?
4.13 What are Type 5 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 How do I get the physical size of a page?
7.5 Why can't I do a pathforall after a charpath ?
7.6 How do I center a string of text around a point?
7.7 How can I concatenate two strings together?
| 7.8 What do I do when I get stack overflow/underflow?
7.9 The Obfuscated PostScript Contest
8 Computer-specific PostScript
8.1 Sun Workstations
| 8.2 IBM PC
8.3 Apple Macintosh
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 (and Usenet Guide to PostScript)
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 run PostScript 2?
11.2 Introduction
11.3 What is PostScript Level 2?
(contains 31 other sections)
| 12 PostScript Interpreters and Utilities
12.1 How can I find a program?
12.2 How can I browse through PostScript programs?
| 12.3 Keywords
| 12.4 Interpreters
| 12.5 Utilities
~Subject: 1 General Questions
~Subject: 1.1 What is PostScript?
PostScript is a graphics programming language.
It is perhaps the most popular and versatile 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 untyped, like the computer language
FORTH.
A number of programmers write PostScript programs directly for a
variety of drawing applications. However, PostScript programs are
usually documents meant to be printed that have been generated by a
program written in some compiled language.
~Subject: 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 Section 12, ``PostScript Interpreters
and Utilities''.)
If your document is generated by a professional program, 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''.)
The only completely reliable way to count pages is to ask the
printer. PostScript printers maintain a page counter that can be
queried before 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. Experts using a level 2
printer can use the SerialOff.PS and SerialEHandlder.ps programs to
communicate bidirectionally to the printer.
~Subject: 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.
~Subject: 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.
~Subject: 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.
~Subject: 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, hp2pbm, pageview,
TScript, or UltraScript.
~Subject: 2 Printers
~Subject: 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.
~Subject: 2.2 Should I leave my printer on?
The general consensus seems to be that most computer equipment
lasts longer if left on. This presents less thermal stress to the
components.
~Subject: 2.3 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''.
~Subject: 2.4 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 " 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.
~Subject: 2.5 How do I remove a persistent (``permanent'') downloaded font?
One trick for removing a persistent font (this requires that you
knew you would need to remove it before you downloaded it) is to
issue a ``serverdict begin 0 exitserver /magic-cookie save def''
before downloading and sending ``serverdict begin 0 exitserver
magic-cookie restore'' when you want to reclaim all VM used since
the first download. The downside of this is that is uses up a save
level, but this is usually not a problem.
~Subject: 2.6 How do I reset the printer without power-cycling?
Most printers can be reset by issuing "serverdict begin 0
exitserver systemdict /quit get exec".
~Subject: 2.7 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.
~Subject: 2.8 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.
|
| 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.
~Subject: 2.9 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 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.
~Subject: 2.10 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.
~Subject: 2.11 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'')
~Subject: 3 Formats and Conversions
This section describes all formats that can be converted to and
from PostScript, and how to convert them. Encapsulated PostScript
and Fonts have their own sections.
~Subject: 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 Section 12, ``PostScript Interpreters and Utilities''.)
Try using TranScript.
~Subject: 3.2 How can I convert DVI to PostScript?
Use dvips.
~Subject: 3.3 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).
~Subject: 3.4 How can I convert TeX PK format to PostScript?
Psroff3.0 contains programs that can convert TeX PK format or HP
SFP format fonts into PostScript bitmap fonts. While bitmap bfonts
scale poorly, this is sometimes of use in special circumstances.
~Subject: 3.5 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.
~Subject: 3.6 How do I embed PostScript into LaTeX or TeX?
You should use an add-on program for seamless PostScript inclusion.
For generic PostScript in a professional document, use psfig.
If your LaTeX is simple, but your PostScript is fancy, try using
LameTeX.
If you need a good compromise, use pstricks.
For more detail, see the comp.text.tex FAQ.
~Subject: 3.7 How can I convert an image to PostScript?
Try PBMPLUS.
To convert an image to PostScript in X windows, you can display the
image on the screen and then use ``xpr -device ps'' in the
resulting X11 window. For example, to convert GIF to PostScript,
use xv or xshowgif (ftp from bongo.cc.utexas.edu (128.83.186.13))
and then xpr.
A more general alternative in X windows would be to use the PPM,
PGM and PBM utilities in the X11R4 and X11R5 distributions.
~Subject: 3.8 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.
~Subject: 3.9 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 buffalo''
|
| 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 buff'' (move a little to get the spacing *just* right)
| ``print alo'' (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'' ``buff'' ``alo''
|
| And it doesn't see any difference between the spacing between
| ``buff'' and ``alo'' (not a word break) and the spacing between
| ``er'' and ``buff'' (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 -> 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.
For UNIX users, the following csh command will extract all of the
strings from a PostScript file and print them.
% usage: unps < infile.ps > outfile.txt
alias unps \(sed \
\''s/%.*$//g;s/^[ \t]*[^()]*$//g;s/^[^(]*(//g;s/)[^(]*(/ /g;s/)[^)]*$//g;'\' \
\| tr '\\012' '\\040' \| tr -s '\\040' '\\040' \; echo \'\'\)
~Subject: 4 Fonts
This section answers questions about fonts as they pertain to
PostScript. See the comp.fonts FAQ for more information about
fonts.
~Subject: 4.1 What are .PFB and .PFA files?
``PFB'' stands for Printer Font Binary, and is a binary format in
which Adobe Type 1 font programs are usually distributed for IBM PC
and compatibles. Many application programs support fonts in this
| format, and refer to them as ``downloadable''. The Macintosh uses a
| different binary storage format than does the PC.
PFB files are compressed, and as a result, cannot be sent directly
to a PostScript printer. Application programs like dvips which use
fonts in this format uncompress the font before sending it to the
printer. If you would like to use a font which is in PFB format, it
is necessary to uncompress it first, to make a PFA 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 uncompressed
version of a PFB file. 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.
~Subject: 4.2 How can I convert a PostScript font to TeX's PK format?
Use ps2pk or try out the GNU font utilities in fontutils.
~Subject: 4.3 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.
~Subject: 4.4 How do I get bitmap representations of Adobe fonts?
On the IBM PC, use the Font Foundary program included with the
font. If you don't have it, contact Adobe for an upgrade.
~Subject: 4.5 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
yak.css.itd.umich.edu
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.
~Subject: 4.6 How can I re-encode a font?
See ddev.ps for an example for code that does this.
~Subject: 4.7 What's the difference between a Type 1 and a Type 3 font?
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.
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 Type 1 font format is defined in the book "The Adobe
Type 1 Font Format", also known as the black-and-white book, for
the colors on its cover.
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 are PowerPage and UltraScript.
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 often 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.
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.
~Subject: 4.8 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.
Bitstream,
Athenaeum House, Cambridge, MA 02142. (617) 497-6222.
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.
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.
RightBrain Software,
Palo Alto, CA (415 326-2974) carry the Adobe Type library for the
NeXT platform. If you're working on NeXT, getting fonts in the
correct form with all the ancillary information and downloaders
and such is important. You can convert a Mac font to NeXT (PFA)
format, but the NeXT demands an AFM file as well, and many Mac/PC
font vendors omit AFM files because Mac/PC apps don't use them.
For Adobe fonts for the NeXT, save yourself a lot of hassle by
getting the fonts from RightBrain -- they often have sales.
The Font Company
TreacyFaces
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.
Many more font vendors exist. Look in magazines and other sources.
Look in U & lc, published by ITC, for long lists of vendors.
~Subject: 4.9 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.
~Subject: 4.10 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''.
~Subject: 4.11 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.
~Subject: 4.12 What are Type 4 fonts?
Type 4 fonts are actually Type 1 fonts, but stored on hard disk in
a special way to save space when they're loaded into printer RAM by
findfont.
~Subject: 4.13 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).
Acknowledgments
This FAQ was compiled based heavily on the contributions of and
with the help of Henry McGilton, Howard Gayle, Carl Orthlieb, Ed
Garay, Robert Lerche, Bruno Hall, and Chris Lewis.
Also thanks to contributors Karl Berry, Jerry Black, Charles
Cashion, Jim DeLaHunt, Leonard Hamey, Elliotte Harold, Chris
Herborth, Steve Kinzler, Bill Lee, Timo Lehtinen, Carl Lydick, Bill
Pringle, Tony Valsamidis, and Jamie Zawinski.
Special thanks to Ken Porter, who originally compiled and organized
this FAQ.
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
This FAQ is copyright (C) 1992 by Jonathan Monsarrat. 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.
Jonathan Monsarrat
%! Jon Monsarrat jgm@cs.brown.edu Brown University %! Obfuscated PostScript
/p 4/f{{}forall moveto gsave{dup 32 mod dup 15 mul rotate sub p div 0 rlineto}
forall fill grestore}def 4 scale 1 def(``f`f`f)dup( )f( i).3 setgray f/p 8 def
1 setgray/h(F!6! 2477!W)def h("4)h(,C)h(6O)h(LT)h(^O)h(tC)h(~6)(7!6!"7#$&6!7 #)
(9~)(""""""""""")(}~)(fTV``Vt)(9!)(e!FR"n&44ED-w@-7&&b)(C2)11{f}repeat showpage
From: jgm@cs.brown.edu (Jonathan Monsarrat)
Date: Tue, 1 Dec 1992 05:17:58 GMT
Newsgroups: comp.lang.postscript,news.answers
Subject: PostScript monthly FAQ v2.01 11-30-92 [05-06 of 12]
Archive-name: postscript-faq/part5-6
Last-modified: 1992/11/30
Version: 2.01
-- PostScript --
Answers to Questions
(the comp.lang.postscript FAQ v2.01)
Jon Monsarrat
jgm@cs.brown.edu
This FAQ is formatted as a digest.
Most news readers can skip from one question
to the next by pressing control-G.
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.
Please help fix the FAQ! All comments should be mailed to
jgm@cs.brown.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
appropriate sections for full information.
~Subject: 5 Books
There are many good books on PostScript language programming.
Descriptions of all known books are listed below. A listing of
publisher information follows.
The most commonly known books are the ``blue book'', ``red book'',
and ``green book'' from Adobe, to be read in that order. They are
nicknamed according for their jacket colors.
Other books recommended to me include Thinking in PostScript,
| which allows its examples to be freely distributed, and PostScript
by Example.
~Subject: 5.1 Books
Adobe Accurate Screens
explains in detail all the issues and specifically covers Adobe
Accurate Screens -- Adobes' own screening technology. Peter Fink
is an expert on the subject of halftone screens as they relate to
color issues.
Author: Peter Fink
Publisher: Adobe Press, 1992.
ISBN 0-672-48544-3
Library Call # ???
Adobe Illustrator 88, The Official Handbook for Designers
Authors: Tony Bove, Fred Davis, Cheryl Rhodes
Publisher: Bantam Computer Books 1988.
ISBN 0-553-34629-6
Adobe Type 1 Font Format, ``the black book''
This is the specification for the Type 1 font format. Type 1
fonts are the standard outline format found in Adobe PostScript
printers, implementations of the Display PostScript system, and
available as downloadable fonts from the Adobe Type Library. This
document describes the syntax of the Adobe Type 1 font format,
including complete information regarding hints, encoding of
character outlines, and the charstring and eexec encryption
algorithms.
Author: Adobe Systems Inc
Publisher: Addison-Wesley, 1990.
ISBN 0-201-57044-0
Library Call # ???
| Creating Special Effects on the Macintosh
|
| Author: David Holzgang
| Publisher: Addison-Wesley, 1992
| ISBN 0-201-57779-8
Display PostScript Programming
???
Author: David A. Holzgang
Publisher: Addison Wesley, 1990
ISBN ???
Library Call # ???
Encapsulated PostScript: Application Guide for the Macintosh and
the PC
has its focus is EPS. However, it is an excellent book full of
actual real life PostScript and Encapsulated PostScript
applications on Macs, PCs, Unix, IBM mainframe, and other
computer systems.
Author: Peter Vollenweider
Publisher: Prentice Hall 1990
ISBN 0-13-275-843-1
Library Call # ???
Graphic Design With PostScript
Author: Gerard Kunkel
Publisher: Scott, Foresman and Company, 1990
ISBN 0-673-38794-1
Library Call # Z286.D47K87
| Hands On PostScript
|
| This is an introduction to PostScript for the novice or casual
| user. PostScript programming principles are introduced in the
| context of useful projects (e.g. greeting cards, letterhead,
| multi-page posters). The book includes five PostScript driver
| projects in Basic, Pascal, and C. A 3.5" DOS formatted diskette
| is included with all the source code. It does not cover
| PostScript level 2.
|
| Author: Michael Spring and David Dubin
| Publisher: Hayden Books, 1992
| ISBN 0-672-30185-7
| Library Call # 92-71207 Cost: 29.95.
| Inside the Apple LaserWriter
|
| Author: Roger Hart
| Publisher: Scott, Foresman, 1989
| ISBN 0-673-38064-5
| Library Call # : TK7887.7.H38
Inside PostScript
essentially takes one on a tour of the standard internal
PostScript code in most printers. The author has worked
extensively with an interpreter. (in PostScript terms, no
low-level hardware stuff here like cexec and internaldict).
Author: Frank Merritt Braswell
Publisher: Systems of Merritt & Peachpit Press 1989
ISBN 0-938151-10-X
Library Call # ???
Cost: about $ 40.
Learning PostScript, A Visual Approach
is a tutorial on the PostScript language. It is very appealing,
very easy to follow and filled with examples. Each example
occupies two pages. A brief explanation and source code is on the
left page, and the resultant print-out is on the facing right
page. The book starts off very simply for beginners, and covers a
lot of material at the end for experts. It was written before
level 2 PostScript.
In the later half of the book, a few examples can executed only
if an additional disk is purchased.
The code for LPAVA is $ 20 from Smith Consultants, 834 Third St.,
Suite B, Santa Rosa, CA 95404, U.S.A. fax number: 415-524-9775
Author: Ross Smith
Publisher: Peachpit Press, 1990 ISBN 0-938151-12-6
Library Call # QA76.73.P67S55
Cost: $ 22.95
| Linotronic Imaging Handbook
|
| Author: James Cavuoto and Stephen Beale
| Publisher: Micro Publishing Press, 1990
| ISBN 0-941845-06-0
Mastering Adobe Illustrator
???
Author: David A. Holzgang Publisher: Addison Wesley, 1988 ISBN
???
Library Call # ???
Mastering Adobe Illustrator 88
???
Authors: Deke McClelland and Craig Danuloff
Publisher: Publishing Resources Inc.-Dow Jones Irwin 1989
ISBN ???
Library Call # ???
PostScript by Example
is a tutorial for PostScript people at all levels. It covers
level 2 PostScript. The book starts at novice level and works
through to Level Two composite fonts, patterns, forms, color,
halftones, Display PostScript rectangle operators and text
operators. It contains a chapter on practical issues of
downloading fonts, talking to printers, and error handling. 640
pages containing over 500 fragments of PostScript code and over
750 illustrations. A long-awaited ``upgrade'' to the Blue Book.
Henry McGilton can be reached by email as
| henry@trilithon.mpk.ca.us. Mary Campione can be reached by email
| as mem@taranis.com.
A disk containing 13,000 lines of PostScript code from the book
can be ordered separately for $ 20 from: Trilithon Software, Two
Ohlone, Portola Valley, CA 94028, U.S.A.
Or, send email to info@trilithon.mpk.ca.us.
Authors: Henry McGilton and Mary Campione
Publisher: Addison Wesley, 1992.
ISBN 0-201-63228-4
Library Call # QA76.73.P67M34
A PostScript Cookbook
Author: Barry Thomas
Publisher: Van Nostrand Reinhold, 1988.
ISBN 0-442-23686
Library Call # ???
PostScript Language Program Design, ``the green book''
is intended to teach the fundamentals of designing PostScript
language programs and to show how the language works, so the your
programs will be fast, well-behaved, easy to understand, and
portable.
Code Examples: $ 15 from the developer support hotline. Free from
the Adobe mail server (see Section 6, ``About Adobe'').
Author: Glenn Reid, Adobe Systems
Publisher: Addison Wesley 1988
ISBN 0-201-14396-8
Library Call # ???
Cost: $ 22.95
PostScript Language Reference Manual (2nd ed), ``the red book''
is the book that defines the PostScript language. The second
edition not only defines Level 1 PostScript, but also encompasses
the color, composite font, file system, and DPS extensions and
the PostScript language Level 2.
Author: Adobe Systems Incorporated
Publisher: Addison Wesley 1985, 1990
ISBN 0-201-18127-4
Library Call # QA76.73.P67P67
Cost: $ 28.95
PostScript Language Reference Manual (1st ed), ``the old red book''
is the first edition of the reference manual. It describes
PostScript level 1 only. It is a subset of the PostScript level 2
book, but is still more common and costs less.
Author: Adobe Systems Inc.
Publisher: Addison-Wesley, 1985.
ISBN 0-201-10174-2
Library Call # ???
PostScript Language Tutorial and Cookbook, ``the blue book''
is the most common tutorial book on PostScript. It provides an
easy, informal introduction to the PostScript language and
graphics primitives. The cookbook is a collection of programs
that are offered as examples of PostScript usage. These samples
have been chosen both as illustrations of the functional range of
PostScript and as useful ingredients for inclusion in application
packages.
Code Examples: $ 15 from the developer support hotline. Free from
the Adobe mail server (see Section 6, ``About Adobe'').
Author: Adobe Systems Incorporated
Publisher: Addison Wesley 1985, 1990
ISBN 0-201-10179-3
Library Call # : QA76.73.P67P68
Cost: $ 16.75
Programming the Display PostScript System with NeXTstep, ``The
Purple Book''
is written for the NeXT programming environment; however, much of
the information it contains applies to all Display PostScript
developers. The book explains the language extensions commonly
used within applications, describes many of the key aspects of
the PostScript language imaging model, and provides a framework
for creating Display PostScript language applications.
Author: Ken Fromm, Adobe Systems
Publisher: Addison-Wesley
ISBN 0-201-58135-3
Library Call # QA76.73.P67P76
Cost: $ 26.95
Programming the LaserWriter
Author: David Holzgang
Publisher: Addison-Wesley, 1991
ISBN 0-201-57068-8
Library Call # TK7887.7.H65
Real World PostScript: Techniques from PostScript professionals -
``The Orange Book''
is a collection of articles dealing with 'real world' PostScript
language issues and specific applications such as font creation,
color separation, kerning, halftoning, various other topics.
It contains a text formatter written in PostScript, and
concentrates on doing very sophisticated things with fonts and
dictionaries.
Short overview of chapters:
PostScript As A Design Tool; PostScript As A Programming
Language; Writing Device Independent PostScript; Kerning,
Tracking And Letterspacing, Precise Character Bounding Boxes;
Building Fonts; Building Smart Fonts; Font Encoding Vector
Compatibility; Building A PostScript Typeface; PostScript Color
Operations; PostScript Color Separations; A Spread From Graphic
Perspective; A PostScript Four-Color Poster; Graphing And
Typesetting With PostScript; The Evolution Of A Complex Geometric
Logo
Author: Stephen F. Roth, editor.
Publisher: Addison Wesley, 1988.
ISBN 0-201-06663-7
Library Call # Z286.D47R4 1988
Running PostScript from MS-DOS
provides a good and brief introduction to PostScript and has lots
of useful information on printing PostScript from PCs.
Author: Gary Glover
Publisher: Windcrest Books, 1989.
ISBN 0-8306-2998-X
Library Call # : QA76.73.P67G56
Taking Advantage of PostScript
is very graphically and visually oriented and includes a section
on PostScript Level 2.
Author: John F. Sherman
Publisher: Wm. C. Brown Publishers, 1991.
ISBN ???
Library Call # : ???
Thinking in PostScript
| is a guide to developing programming techniques and to learning
| how to use the PostScript tool kit. In this book you can find
| some useful techniques even if you think of yourself as an expert
| PS programmer. It overlaps very little with existing material.
| You can find there numerous practical examples in all areas of PS
| language programming, including the Display PS system. In this
| volume you will also find: (a) never-before-published information
| on the PS language (b) useful algorithms for loops, conditionals,
| and I/O (c) detailed coverage of files, strings, and dictionaries
| (d) simple and elegant programming techniques
|
| The books comes recommended by many. There are also exercises
| after each Chapter with the results at the end of the book. You
| can really find examples how to define new useful operators or
| procedures which you cannot find in the Adobe books.
|
| To get the examples from the book for free, send email to the
| author, glenn@rightbrain.com.
Author: Glenn C. Reid
Publisher: Addison-Wesley, 1989
ISBN 0-201-52372-8
Library Call # : QA76.73.P67R46 Cost: $ 22.95
Understanding PostScript
???
Author: David A. Holzgang
Publisher: Sybex, 1988
ISBN 0-89588-396-1
Understanding PostScript Programming, Second Edition
???
Author: David Holzgang
Publisher: Sybex, 1988.
ISBN 0-89588-566-2
Library Call # : ???
The Verbum Book of PostScript Illustration
Authors: Michael Gosney, Janet Ashford, and Linnea Dayton
Publisher: M & T Books, 1990.
ISBN 1-55851-089-3
Library Call # : QA76.73.P67G57
~Subject: 5.2 Publishers
Most of the above books should be available in any big bookstore
that has a computer section. Or contact the publishers:
Addison-Wesley,
Retail Sales Group, Addison-Wesley Publishing Company, Inc., One
Jacob Way, Reading, MA 01867, U.S.A. Phone 800-447-2226 or
617-944-3700, Fax 617-942-1117.
Addison-Wesley Publishing Company,
2200 Powell Street, Emeryville, California 94608 U.S.A. Phone
(510) 601-4000
Adobe Press
???
Bantam Computer Books
???
| Hayden Books,
| 11711 N. College Ave., Carmel, IN 46032.
| Micro Publishing Press
| 21150 Hawthorne Boulevard, Suite 104, Torrance, California 90503
| U.S.A.
Peachpit Press,
1085 Keith Ave., Berkeley, CA 94708, U.S.A. 800-283-9444, or
415-527-8555.
Prentice Hall
Englewood Cliffs, New Jersey 07632
Scott, Foresman and Company
1900 East Lake Avenue, Glenview, IL 60025
Publishing Resources Inc.-Dow Jones Irwin
???
Windcrest Books
| Blue Ridge Summit, Pennsylvania 17294-0850
Sybex
| 2021 Challenger Drive, 100, Alameda, California 94501.
You can purchase the red, blue, green, and black books from Adobe
Systems by calling 800-83-FONTS.
~Subject: 6 About Adobe
PostScript was created by Adobe Systems Incorporated, which offers
information and sells programs pertaining to PostScript.
Currently the only large PostScript company that I have information
on is Adobe. I would be happy to include information about others.
~Subject: 6.1 How do I get in touch with Adobe?
Adobe Systems Incorporated Main phone: +1-415-961-4400
1585 Charleston Road Main FAX: +1-415-961-3769
P.O. Box 7900
Mountain View, CA 94039-7900
If you want technical help using Adobe retail products (e.g. ATM,
Adobe Illustrator, Adobe Fonts): Adobe forum on CompuServe, call
+1-415-961-0911 (for Macintosh) or +1-415-961-4992 (for Windows,
Unix) Also use this number to report bugs in retail products.
For sales information on Adobe retail products (prices, catalogues,
etc.), call +1-800-235-0078 (fax-back brochures) or +1-800-833-6687
(applications sales)
The Developer's Hotline is +1-415-961-4111 (Voicemail) (note:
members have priority, but they'll take questions from general
public.) Also use this number for information about the ADA or
Adobe SDK's.
To suggest product enhancements, write or fax to ``Product Manger,
product name' at address above.
In Europe: Adobe Systems BV, Europlaza, Hoogoorddreef 51a, 1101 BE
Amsterdam Z-O, NETHERLANDS. TEL +31-20-65-11-200. FAX
+31-20-65-11-300.
In the eastern United States: Adobe Sys. Inc., 24 New England
Executive Park, Burlington MA 01803. TEL +1-617-273-2120. FAX
+1-617-273-2336.
In Japan: Adobe Systems Japan, Swiss Bank House, 4-1-8 Toranomon,
Minato ku, Tokyo 105 JAPAN. TEL +81-3-3437-8950. FAX
+81-3-3437-8968.
~Subject: 6.2 What can Adobe do for me?
Adobe is just one of many companies producing products for
PostScript, but it does produce a lot of the best.
Adobe offers two resources for software developers.
1. Membership in the Adobe Developers Association (ADA) ( $
195/year)
2. PostScript Language Software Development Kit (SDK) ( $ 500, $ 250
for ADA)
The Developer's Association is Adobe's way of knowing who has a
serious interest in technical information. Membership includes
monthly technical newsletter, phone technical support, discounts on
software and hardware. Membership is $ 195/year for each
individual.
The PostScript Language Software Development Kits collect all
Adobe's technical literature for a given platform into a single
package. There are four versions, for the Mac, MS-DOS/Windows,
NeXTStep, and X/Windows. Each SDK is $ 500 list, $ 250 for ADA
members.
A selection of technical documents is available from Adobe's file
server, including the aforementioned EPS specification. For more
information on this, send the one-word message ``help'' to
ps-file-server@adobe.com. These documents are also available by
mail; call the Developers Line and ask for the documents catalog.
The ps-file-server contains some specs, tech notes, sample
programs, plus a large collection of AFM files and PPD files. Send
a message containing ``help'' to ps-file-server@adobe.com for more
information. You can get these files for free with email.
From: jgm@cs.brown.edu (Jonathan Monsarrat)
Date: Tue, 1 Dec 1992 05:43:43 GMT
Newsgroups: comp.lang.postscript,news.answers
Subject: PostScript monthly FAQ v2.01 11-30-92 [07-10 of 12]
Archive-name: postscript-faq/part7-10
Last-modified: 1992/11/30
Version: 2.01
-- PostScript --
Answers to Questions
(the comp.lang.postscript FAQ v2.01)
Jon Monsarrat
jgm@cs.brown.edu
This FAQ is formatted as a digest.
Most news readers can skip from one question
to the next by pressing control-G.
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.
Please help fix the FAQ! All comments should be mailed to
jgm@cs.brown.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
appropriate sections for full information.
~Subject: 7 Programming in PostScript
~Subject: 7.1 What is PostScript level 2?
PostScript Level Two is a major upgrade to PostScript Level One.
Starting from PostScript Level One as a basis, PostScript Level Two
represents the confluence of many features:
* Composite fonts -- fonts with the capability of supporting
character sets with more than 256 characters. Such fonts are
needed in the Asian marketplace, for example.
* Patterns -- provide a device-independent way to describe patterns
which tile an area. A pattern can be thought of as another kind
of ``color'' in PostScript Level Two.
* Forms -- to meet the demands of the forms market, forms describe
static information which can be repeated many times on one page
or printed on many separate pages, or both.
* Color -- the previous ill-defined color models are now enhanced
with the addition of CMYK color, support for color images, CIE
device-independent color (if anybody can understand the damned
thing).
* Halftones -- new highly accurate halftone screening methods to
meet the needs of high end typesetting equipment.
* Display PostScript -- many enhancements and efficiency
improvements to support the needs of screen rendering.
Enhancements include:
* efficient rectangle operators,
* efficient font and text operators,
* multiple contexts
* shared memory models
* hit detection
A detailed description of PostScript 2 is available in the section
on PostScript 2.
~Subject: 7.2 Should I learn level 2 PostScript?
Yes, because Level Two will soon become the standard. Application
developers using PostScript need to become aware of the new
capabilities and how to take advantage of them.
There are many good books on PostScript 2. (See Section 5,
``Books''.)
~Subject: 7.3 Where can I find examples of PostScript code?
Many other books on PostScript make example PostScript code
available. ``Thinking in PostScript'', by Glenn Reid, is the only
book I know of that allows its examples to be freely distributed.
(See Section 5, ``Books''.)
All the examples in ``the blue book'' are available from the Adobe
file server (See Section 5, ``Books''.)
See the question ``How can I browse through PostScript programs?''
in the section on utilities.
~Subject: 7.4 How do I get the physical size of a page?
The initial clipping path gives you the size of the imagable area.
Use ``clippath pathbbox'' to get these coordinates. If you must
know the size of the device's imageable area, use the sequence
``gsave initclip clippath pathbbox grestore'', but this will
prevent an enclosing application from using the clippath to achieve
some special effects (such as multiple pages per page).
~Subject: 7.5 Why can't I do a pathforall after a charpath ?
(See Section 4, ``Fonts'', question ``Why are Adobe fonts
hidden?''.)
~Subject: 7.6 How do I center a string of text around a point?
Level 1 PostScript has two operators that can extract information
about the metrics of characters: ``stringwidth'' and ``charpath''.
The ``stringwidth'' operator returns the advance width of its
string operand. This is the distance the current point would be
moved by a ``show'' operation on the same string. ``stringwidth''
returns two numbers on the stack, representing the x and y
components of the advance width. Usually the y component is zero
because most fonts are displayed along a horizontal line, moving
the current point only in the x direction.
Also note that the ``stringwidth'' operator includes any side
bearings in its result. It usually does not give an exact measure
of the area of the page that will be touched by its operand.
If all that an application requires is horizontal centering of a
long string of text, the result returned by ``stringwidth'' is
sufficient. A common technique is
x y moveto
(string) dup stringwidth pop 2 div neg 0 rmoveto show
(This code makes the assumption that the y component of advance
width is irrelevant.)
The ``charpath'' operator extracts the graphic shapes of its string
operand and appends them to the current path in the graphic state.
These shapes can then be processed by other PostScript operators.
To get the actual size of the area touched by a character a simple
approach is
gsave
newpath
0 0 moveto
(X) true charpath flattenpath pathbbox
grestore
This code places four numbers on the stack, representing the
coordinates of the lower left and upper right corners of the
bounding box enclosing the character ``X'' rendered with the
current point at (0,0).
There are two things to be careful about when using the code shown
above:
1. There are severe limits on the size of the string operand,
related to the limit on the number of elements in a graphic path.
The PostScript Language Reference Manual recommends taking
``charpath''s one character at a time.
2. If user space is rotated or skewed with respect to device space,
the result from ``pathbbox'' may be larger than expected;
``pathbbox'' returns a rectangle oriented along the user space
coordinate axes, which fully encloses a (possibly smaller)
rectangle oriented along the coordinate axes of device space. If
user space is rotated at an integer multiple of 90 degrees these
two rectangles will be the same, otherwise the rectangle in user
space will be larger.
So, to center text vertically one must get the bounding boxes of
all the characters in the string to be displayed, find the minimum
and maximum y coordinate values, and use half the distance between
them to displace the text vertically.
If an application does this repeatedly, it would be wise to store
the bounding boxes in an array indexed by character code, since
``charpath'' is a slow operation.
Font metric information is available outside of a PostScript
printer in font metrics files, available from Adobe. A program
generating PostScript output can obtain metrics from these files
rather than extracting the metrics in the printer.
~Subject: 7.7 How can I concatenate two strings together?
%% string1 string2 append string
% Function: Concatenates two strings together.
/append {
2 copy length exch length add % find the length of the new.
string dup % string1 string2 string string
4 2 roll % string string string1 string2
2 index 0 3 index
% string string string1 string2 string 0 string1
putinterval % stuff the first string in.
% string string string1 string2
exch length exch putinterval
} bind def
~Subject: 7.8 What do I do when I get stack overflow/underflow?
|
| These errors are among the most common in PostScript.
|
| When I get a stack overflow, that is usually a sign that a routine
| is leaving an object on the stack. If this routine gets called 2000
| times, it leaves 2000 objects on the stack, which is too many.
|
| When I get a stack underflow, that is a sign that either: (A) one
| of the routines in the program doesn't work, and never has or (B)
| one of the routines in the program works, but expects to be called
| with some arguments left on the stack.
|
| There is no such thing as a PostScript debugger right now. For now,
| the best that you can do to debug your program is to put in lots of
| print statements. Learn to use the PostScript pstack command, and
| use an online interpreter so you don't have to run to the printer
| for each debugging cycle.
|
| Use an error handler to learn more about what exactly is happening
| when your program crashes. (see Section 12, ``PostScript
| Interpreters and Utilities'')
|
| If your code has never worked yet (i.e. you are still writing it)
| then I find that it helps to put little comments in the margin
| about the state of the stack. Like this:
|
|
| Heart pathbbox % lowerx lowery upperx uppery
| exch 4 -1 roll % lowery uppery upperx lowerx
|
|
| I generally put these comments in originally, and then take them
| out when the program works. Maybe this is a bad practice, in case I
| ever want to go back and look at the code to modify it!!
~Subject: 7.9 The Obfuscated PostScript Contest
Alena Lacova and Jonathan Monsarrat are running an Obfuscated
PostScript Contest that will end on January 10th.
For information about the contest, write jgm@cs.brown.edu or ftp
the rules from wilma.cs.brown.edu:pub/postscript/rules.ps or
rules.txt.
~Subject: 8 Computer-specific PostScript
This section describes PostScript information specific to a
particular type of computer or operating system.
~Subject: 8.1 Sun Workstations
What is NeWS?
NeWS is Sun Microsystems PostScript-based window system for the Sun
Workstation. NeWS was a project within Sun (started around 1985) to
create a window system to supplant SunView (a very successful
kernel-based window system). NeWS is a client-server model window
system (like X) but among many of NeWS novel features was the use
of PostScript as the language to describe the appearance of objects
on the screen. Because there are few ways to design a knee joint,
NeWS has many features in common with Display PostScript, but NeWS
predates Adobe Display PostScript and was neither connected with
Adobe Display PostScript nor endorsed by Adobe. NeWS is not an
Adobe product, nor is it a Sun/Adobe joint venture.
NeWS had the potential to become a world-class window system had
not a coalition of computer vendors ganged together to endorse the
X window system from MIT, sending Sun into a frenzy to support both
X and NeWS in the same window server.
One respected engineer from DEC remarked they all feared Sun would
ignore the industry X coalition and go on to make NeWS a standard.
They were overjoyed when Sun reacted by taking on X and merging it
with NeWS, causing additional work which made it harder for Sun to
make progress with NeWS. oAlso it made X the de facto standard;
whether or not this is a good thing depends on who you talk to.
As of October 1992, Sun management signed a deal with Adobe to
adopt Display PostScript for the Sun. The future of NeWS is still
undecided (but it looks bad).
And how does PostScript run on them?
PostScript runs on NeWS. Due to lack of support from Sun
management, NeWS never made it as a fully-compliant PostScript
interpreter. There were incompatibilities between the NeWS
PostScript interpreter and ``official'' PostScript interpreters as
defined by Adobe and the Apple LaserWriter family of printers, such
that many PostScript files which would print fine on a LaserWriter
would not render under NeWS. The most critical incompatibility was
the lack of support for Adobe Type 1 fonts, Sun having gone with
their own font format known as F3. Given the NeWS PostScript
interpreter was not even PostScript Level One compliant, the
chances of bringing NeWS to Level Two compliance was remote,
lending further to NeWS decline.
~Subject: 8.2 IBM PC
You can find nenscript for OS/2 1.x--2.0 and MSDOS on
ftp-os2.nmsu.edu in pub/uploads/nensc113.zip.
| There are rumors that Word Perfect and Microsoft Word don't produce
| ``clean'' PostScript that follows the DSC conventions (See Section
| 9, ``Encapsulated PostScript''). This means that a lot of
| PostScript utilities like Ghostview and psnup, etc., that require
| the DSC conventions, will not work on them.
|
| Creating a PostScript file from MS Word
|
| Install the LaserWriter driver that comes with Windows.In the
| printer setup, select a PostScript printer. Then click on the setup
| button to get that pop-up. Then clik the Options button. Then
| select the print to Encapsulated PostScript File. If you don't
| specify a file name, Word will prompt you for one when you tell it
| to print.
|
| When printing Microsoft Windows files that have been captured on a
| PC's LPT port, you mostly need to define two ctrl-d's in a row as
| well to remove all of them in the document:
|
|
| (\004\004) cvn \{\} def
~Subject: 8.3 Apple Macintosh
For more details about printing with the Macintosh, read the
comp.sys.mac.apps FAQ.
How can I convert a PostScript file created with a UNIX program to
the Mac?
A way that is clumsy, but works, is this:
1. Display the UNIX-based PostScript file on screen
2. Use window dumping facility to get a bitmap file
3. Convert the above bitmap file to TIFF format and then export it
to Adobe Illustrator on the Mac.
The PostScript section of the FAQ for the Macintosh newsgroup
comp.sys.mac.app (maintained by Elliotte Harold) answers the
following questions:
* How do I make a PostScript file?
* How do I print a PostScript file?
* Why won't my PostScript file print on my mainframe's printer?
Full documentation of this process provided with a utility called
macps.
* Why are my PostScript files so big?
~Subject: 9 Encapsulated PostScript
~Subject: 9.1 What is Encapsulated PostScript?
| Encapsulated PostScript (EPS) is a standard format for importing
and exporting PostScript language files in all environments. It is
usually a single page PostScript language program that describes an
illustration. The purpose of the EPS file is to be included as an
illustration in other PostScript language page descriptions. The
EPS file can contain any combination of text, graphics, and images.
An EPS file is the same as any other PostScript language page
description, with some restrictions.
EPS files can optionally contain a bitmapped image preview, so that
systems that can't render PostScript directly can at least display
a crude representation of what the graphic will look like. There
are three preview formats: Mac (PICT), IBM (tiff), and a platform
independent preview called EPSI.
An EPS file must be a conforming file, that is, it must conform to
the Adobe Document Structuring Conventions (DSC). At a minimum, it
must include a header comment,%!PS-Adobe-3.0 EPSF-3.0, and a
bounding box comment,%%BoundingBox: llx lly urx ury, that
describes the bounds of the illustration.
(The specification does not require the EPSF version, but many
programs will reject a file that does not have it.)
The EPS program must not use operators that initialize or
permanently change the state of the machine in a manner that cannot
be undone by the enclosing application's use of save and restore
(eg. the operators starting with ``init'' like initgraphics). As a
special case, the EPS program may use the showpage operator. The
importing application is responsible for disabling the normal
effects of showpage.
The EPS program should make no environment-sensitive decisions (the
importing application may be trying to attain some special effect,
and the EPS program shouldn't screw this up), although it can use
some device-dependent tricks to improve appearance such as a
snap-to-pixel algorithm.
The complete EPS specification is available from Adobe (see the
section on Adobe).
An optional component of an EPS file is a ``preview'' image of the
file's content. The preview image is a bitmapped representation of
the image which may be displayed by programs using the EPS file
without having to actually interpret the PostScript code.
The recommended form for a preview image is ``Interchange'' format
and is described fully in the ``red book'', second edition.
Interchange format represents the image as a series of hex strings
placed in the EPS file as PostScript comments. The entire file
remains an ASCII file.
A variation of EPS embeds the preview image and PostScript text in
a binary file which contains a header and the preview image in
either a TIFF or MetaFile format. The header defines where in the
file each section (EPS, TIFF, or MetaFile) starts and ends. On the
Macintosh, the preview is stored as a PICT in the file's resource
fork.
~Subject: 9.2 What are EPSI and EPSF?
|
| EPSI is EPS with a device independent bitmap preview. EPSI is an
| all ASCII (no binary data or headers) version of EPS. EPSI provides
| for a hexadecimal encoded preview representation of the image that
| will be displayed or printed.
|
| EPSF is a version of EPS with a TIFF preview instead of a bitmap
| preview.
~Subject: 9.3 How do I convert PostScript to EPS?
To convert from PostScript to EPS, one must guarantee that the
PostScript file meets the above requirements. If the actual program
conforms to the programming requirements, then one can simply add
the required comments at the top of the file saying that the file
is EPS and giving its BoundingBox dimensions.
Optional comments include font usage (%%DocumentFonts: or%%
DocumentNeededResources: font), EPSI preview comments (%%
Begin(End)Preview:) extensions (%%Extensions:) and language
level (%%LanguageLevel:).
There are some operators that should not be used within an EPS
file:
banddevice cleardictstack copypage erasepage
exitserver framedevice grestoreall initclip
initgraphics initmatrix quit renderbands
setglobal setpagedevice setshared startjob
These also include operators from statusdict and userdict operators
like legal, letter, a4, b5, etc.
There are some operators that should be carefully used:
nulldevice setgstate sethalftone setmatrix
setscreen settransfer undefinefont
To convert a PostScript file to EPS format, you must edit the file
using a text editor or word processor to add lines that will define
the file as an EPS-format file.
1. Using your normal method of printing, print the PostScript file
to a PostScript printer. You can choose to view it on the screen
instead, but keep in mind that all the below distance
measurements assume that you are printing on a normal-sized piece
of paper.
NOTE: If the PostScript image does not get displayed properly, it
probably will not work either once you have converted it to EPS
format. Correct the PostScript program so that it works before
you convert it to EPS format.
2. Use a tool (see below) to find the bounding box, which shows how
much space the PostScript image occupies when printed. You
specify the dimensions of the bounding box when you convert the
PostScript file to EPS format.
3. If you don't have a bounding box tool, you can just use a ruler
and draw one on your printout. With two horizontal lines and two
vertical lines, draw a box around the image that includes the
entire image while minimizing white space.
This box represents your bounding box. You may want to leave a
small amount of white space around the image as a precautionary
measure against minor printing problems, such as paper stretching
and paper skewing.
4. Measure distance ``a'' from the lower-left corner of the image to
the left edge of the paper.
5. Write the measurement in points. If your ruler does not show
points, calculate the total number of points: 1 inch = 72 points,
1 cm = 28.3 points, and 1 pica = 12 points. Designate this
measurement as ``measurement a.''
6. Measure distance ``b'' from the lower-left corner of the image to
the bottom edge of the paper.
Designate this measurement in points as ``measurement b.''
7. Measure distance ``c'' from the upper-right corner of the image
to the left edge of the paper.
Designate this measurement in points as ``measurement c.''
8. Measure distance ``d' from the upper-right corner of the image to
the bottom edge of the paper.
Designate this measurement in points as ``measurement d.''
9. Using any text editor, open the PostScript file for editing.
You'll see several lines of text. These lines are the PostScript
description of the image. The lines at the top of the file are
the header.
10. Add these lines to, or modify existing lines in, the header (the
first group of lines in any PostScript file):
%!Adobe-2.0 EPSF
%%Creator: name
%%CreationDate: date
%%Title: filename
%%BoundingBox: a b c d
Note: Make sure that the first line in the file is `` Also, do
not separate the header lines with a blank line space. The first
blank line that PostScript encounters tells it that the the next
line begins the body of the program.
For ``name,'' type your name or initials. For ``date,'' type
today's date using any format (for example, MM-DD-YY, MM/DD/YY,
July 5, 1987, and so on). For ``filename,'' type the name of the
PostScript file. After ``BoundingBox: ,'' type the measurements
you took in steps 3, 4, 5, and 6, separating each with a space:
``a'' is the measurement from Step 3, ``b'' is the measurement
from Step 4, ``c'' is the measurement from Step 5, and ``d'' is
the measurement from Step 6.
11. Save the file in text-only format.
If you are interested in learning how to further edit your
PostScript files, these books are available at most bookstores:
Understanding PostScript Programming and the green book.
Encapsulated PostScript is discussed in Appendix C of the old red
book. The new red book has a lot of information about Encapsulated
PostScript.
There will be a technical note available from Adobe called
'Guidelines for Specific Operators' that will talk about why some
operators are prohibited and how to use the others.
~Subject: 9.4 How do I get the bounding box of a PostScript picture?
Use bbfig or epsinfo.ps.
Or if you would rather construct the bounding box by hand, use
Ghostview, which has a continuous readout of the mouse cursor in
the default user coordinate system. You simply place the mouse in
the corners of the figure and read off the coordinates.
~Subject: 10 About The Comp.Lang.PostScript FAQ (and Usenet Guide to
PostScript)
~Subject: 10.1 The PostScript FAQ: What is it?
The PostScript FAQ is a set of answers to frequently asked
questions (FAQs) that have appeared on the Usenet newsgroup
comp.lang.postscript. It is broken into many useful sections.
The Usenet Guide to PostScript is a larger set of help and answers
to PostScript questions, plus a tutorial for new users. It is still
in the process of being created. There is one file ``Exactly What
Does a Transformation Matrix Do?'', that is definitely not part of
the FAQ. Please send more!
I need help writing and revising answers for common questions
relating to PostScript. Almost all of the information in the
documents has been written by kind volunteers. The answers will be
published in either or both documents. A very long answer in the
Usenet Guide may be summarized, referred to briefly, or not
mentioned at all in the FAQ.
~Subject: 10.2 How to get the FAQ files
The FAQ is available by anonymous ftp to
wilma.cs.brown.edu:pub/comp.lang.postscript/ You can get it
formatted in plain text ASCII, LaTeX, or PostScript.
I would be happy to email a copy of the FAQ in any format to you if
you do not have FTP.
~Subject: 10.3 How to write a FAQ answer
I greatly appreciate your time and effort to help improve the
quality of the FAQ. Thank you for being willing to contribute!
* Please check to see if the topic is already in an FAQ. Perhaps
you really mean to submit a revision to an existing section.
* Start with a clear statement about what problem you are solving.
* Write for novice users, in ``tutorial format'', even if the
answer is meant for experienced programmers.
* Be specific when you make references.
* Be complete, and take the time to look over your draft and
revise.
* Answers should not be too wordy, unless you intend to write a
long answer for the Usenet Guide and have a shorter summary or a
pointer to the description placed in the FAQ. If you want to
write the summary yourself, thanks!
* Obviously, I cannot accept copyrighted material without
permission. Don't write the FAQ by paraphrasing from a
copyrighted book!
~Subject: 10.4 The FAQ can contain LaTeX and PostScript inserts
The FAQ is actually written with LaTeX, so feel free to submit with
that text formatting language. There is a PostScript version of the
FAQ also, so feel free to send along PostScript pictures to
include.
~Subject: 10.5 Revising the FAQ
Suggestions and comments are welcomed. My favorite way of receiving
a change suggestion is if you make a copy of the FAQ, edit the
copy, and mail me the modification, or a context diff (include the
version number).
~Subject: 10.6 How to submit new information
If you know something that you think is worthwhile to be put in a
FAQ, definitely send it to me!
Don't hold back if your information is very specific. If there's
too much information to post I will archive it at an ftp site and
place a pointer to it in the FAQ.
~Subject: 10.7 How to add a program description to the FAQ index
If the program is original, please send it to me, or tell me where
I can get it. Please put your name and email address at the top of
each file. Your program will be doubly useful if you clean up the
program so that other people can use it as an example to learn.
If the program was written by someone else, please send me just the
title, description, and where to get it. I may already have it.
For programs the FAQ needs to know:
* What is the name of the program?
* What does it claim to do, and does it do it well? Is it worth
using?
* Where is it available? What ftp sites can I get it from?
* How much does it cost? Is it free?
* What kinds of computers does it run on?
* Who is the author and does the author give an email address?
* Does it handle PostScript 2?
If the program is a PostScript interpreter, then the FAQ also needs
to know:
* Does it let you go backwards one page?
* Does it display the number of pages in the document?
* Does it let you print PostScript to a non-PostScript printer?
* What formats can it convert to?
~Subject: 10.8 How to add a book description to the FAQ
For books the FAQ needs to know:
* What is the name of the book or document?
* What does it claim to do, and does it do it well? Is it worth
using?
* Can I get it on-line?
* Who wrote it? Does the author give an email address?
* Who is the publisher, and what is the copyright date?
* Does the publisher list an address and phone number or fax
number?
* What is the ISBN number of the book?
* What is the library call number of the book?
* How much does the book cost?
* Does it cover PostScript 2?
* Are coding examples from the book available by email or anonymous
ftp?
* Do the authors sell the coding examples on a diskette?
~Subject: 10.9 Questions that need answers
1. Where are ftp sites that have PostScript freeware?
2. What vendors sell fonts for PostScript printers? Where are the
free ftp sites for them?
3. Are there any free encapsulated PostScript converters?
4. What is the charter for comp.lang.postscript?
5. How do I make a downloaded font (ie: PFA) persistent?
6. What questions should the FAQ have?
7. What book information is wrong or missing in the FAQ?
8. What program information is wrong or missing in the FAQ?
9. What ftp site have good examples of PostScript code?
From: jgm@cs.brown.edu (Jonathan Monsarrat)
Date: Tue, 1 Dec 1992 05:50:00 GMT
Newsgroups: comp.lang.postscript,news.answers
Subject: PostScript monthly FAQ v2.01 11-30-92 [11 of 12]
Archive-name: postscript-faq/part11
Last-modified: 1992/11/30
Version: 2.01
-- PostScript --
Answers to Questions
(the comp.lang.postscript FAQ v2.01)
Jon Monsarrat
jgm@cs.brown.edu
This FAQ is formatted as a digest.
Most news readers can skip from one question
to the next by pressing control-G.
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.
Please help fix the FAQ! All comments should be mailed to
jgm@cs.brown.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
appropriate sections for full information.
~Subject: 11 About PostScript 2
~Subject: 11.1 What printers run PostScript 2?
* Apple LaserWriter IIf
* Apple LaserWriter IIg
* Apple Personal LaserWriter NTR
Apple sells an upgrade to the IINTX to turn it into a IIf/IIG for
instance.
* Compaq PAGEMARQ 20
* Compaq PAGEMARQ 15
* Data Products LZR 960
* Data Products LZR 1560
* Hewlett-Packhard PostScript CartridgePlus, which works with the
HP Laserjet III, IIID, and IIIP.
* NEC SilentWriter2, model 95
* Tektronix Phaser III PXi
* Tektronix Phaser II PXi
* Tektronix Phaser II PXe
* Tektronix Phaser IISD
* Texas Instruments microLaser Turbo
* Texas Instruments microLaser XL Turbo
This rest of file contains a description of PostScript 2 written by
Carl Orthlieb from Adobe.
~Subject: 11.2 Introduction
PostScript Level 2, the first major new release of PostScript
software since its introduction, is a unification and enhancement
of the PostScript language based on the needs voiced by users of
PostScript printers and Display PostScript(R) workstations,
Independent Software Vendors (ISVs), and Original Equipment
Manufacturers (OEMs). PostScript Level 2 contains a number of
performance enhancements, is easier for software developers to use,
and contains important new functionality such as device-independent
color, forms handling and patterns support.
~Subject: 11.3 What is PostScript Level 2?
First, let's look at the current state of the PostScript language.
The baseline of the language is defined by the PostScript Language
Reference Manual, also known as the "red book." The red book
defines the basic PostScript language imaging model functionality
for line art, sampled images, text, and the RGB color model. Since
its introduction in 1985, the PostScript language has been
considerably extended for greater programming power, efficiency,
and flexibility.
Typically, these language extensions have been designed to adapt
the PostScript language to new imaging technologies or system
environments. While these extensions have introduced new
functionality and flexibility to the language, the basic imaging
model remains unchanged. The principal language extensions are:
Color:
The color extensions provide a cyan-magenta-yellow-black (CMYK)
color model for specifying colors and a colorimage operator for
painting sampled images. They also include additional rendering
controls for color output devices.
Composite fonts:
The composite font extensions enhance the basic font facility to
support character sets that are very large or have complex
requirements for encoding or character positioning.
Display PostScript:
The Display PostScript system enables workstation applications to
use the PostScript language and imaging model for managing the
appearance of the display. Some of the extensions are specialized
to interactive display applications, such as concurrent execution
and support for windowing systems. Other extensions are more
general and are intended to improve performance or programming
convenience.
When Adobe decided to add additional functionality to the
PostScript language, we did not want to add the functionality in a
piecemeal fashion and have it exist in some devices but not others.
This makes life difficult for independent software vendors (ISVs)
who write PostScript language programs. PostScript Level 2
integrates the original PostScript language, all previous language
extensions, and new language features into the core PostScript
language imaging model. PostScript Level 2 ensures application
developers consistent functionality across all Level 2 devices.
When an application images to a Level 2 device, it can be assured
that a wide range of features will exist on that device and that
these features can be exploited to their fullest for increased
performance and functionality.
~Subject: 11.4 What are the features of PostScript Level 2?
PostScript Level 2 consolidates all of the current language
extensions into one unified language and adds many new features. It
is also upward compatible with the current generation of PostScript
devices. Here is a brief list of what comprises PostScript Level 2:
* Existing PostScript language
* Color extensions
* Composite font extensions
* Display PostScript extensions
* Improved memory management
* CIE-based device-independent color
* Improved printer hardware features support
* Data and image compression and decompression
* Optimized graphics and text operators from the
* Display PostScript system
* New halftoning algorithms
* Forms support
* Patterns support
* Binary language encodings
* ATM font rendering technology
~Subject: 11.5 What are the color extensions to the PostScript language?
The color extensions were added to the language in 1988 to provide
more complete color functionality. With the original PostScript
language, color could be specified using the red-green-blue (RGB)
and hue-saturation-brightness (HSB) color models.
The color extensions include cyan-magenta-yellow-black (CMYK) color
model, black generation and undercolor removal functions, screen
and transfer functions for four separate color components, and a
colorimage operator for rendering color sampled images. The color
extensions are currently found in PostScript color printers from
Canon, QMS, Oce, and NEC as well as all implementations of the
Display PostScript system.
~Subject: 11.6 Why would you want the CMYK color extensions in a black and
white printer?
In a nut-shell, compatibility between black-and-white and color
Level 2 devices.
Today, ISVs must handle PostScript color printers differently. For
example, current monochrome laser printers does not contain the
CMYK color extensions, and as a result PostScript language programs
must emulate this functionality, which results in slower
performance. All Level 2 implementations will include the CMYK
color extensions as standard.
~Subject: 11.7 What are the composite font extensions to the PostScript
language?
The composite font technology is a general solution that extends
the basic PostScript language font mechanism to enable the encoding
of very large character sets and handle non-horizontal writing
modes.
A Type 1 PostScript font has room for encoding only 256 distinct
characters. A typical Japanese font has over 7,000 Kanji, katakana
and hiragana characters. The composite font technology allows you
to create one ``composite'' font that is made up from any number of
``base'' fonts. In addition, the composite font technology allows
you to include two sets of metrics (character spacing details) in
the font: one for a horizontal-writing mode, and one for a
vertical-writing mode.
~Subject: 11.8 Why would you want the composite font extensions in a roman
printer?
This technology is currently implemented only in Japanese language
PostScript devices, but the composite font technology is a general
solution that applies to any language. It allows for the creation
of one composite font that combines two or more fonts. For example,
you may wish to combine a text font (such as Times-Roman) with a
special font (such as Zapf-Dingbats) and have all characters at
your disposal within a single font.
~Subject: 11.9 What are the Display PostScript Extensions to the PostScript
language?
The Display PostScript extensions address the needs of using the
PostScript language imaging model in a display environment. It
includes extensions to deal specifically with displays and
windowing systems as well as many optimized operators to increase
performance which is critical in an interactive display
environment.
~Subject: 11.10 Why would you want the Display PostScript extensions in a
printer?
Most of the functionality in PostScript Level 2 that comes from the
Display PostScript extensions result in improved performance. This
includes clipping, rectangle operators, and binary language
encoding to name a few. Each of the new Level 2 features that come
from the Display PostScript extensions are detailed later in this
document.
Another obvious reason is for compatibility between Display
PostScript applications and PostScript Level 2 printers.
~Subject: 11.11 Can you tell me more about the rest of the PostScript Level 2
features?
Sure. Here a brief overview of the important features and benefits
of PostScript Level 2:
~Subject: 11.12 Filters
* A filter transforms data as it is being read from or written to a
file. The language supports filters for ASCII encoding of binary
data, compression and decompression, and embedded subfiles.
Properly used, these filters reduce the storage and transmission
cost of page descriptions, especially ones containing sampled
images. Benefits: Reduced storage requirements, greater
performance.
* ASCII encoding of binary data: ASCII/85 (represent binary data in
ASCII format with only a 125 % expansion of data), and ASCII/HEX
(current method of representing binary data in ASCII format but
with a 200 % expansion of data). Benefits: Compact representation
of binary data in a portable ASCII representation.
* Compression and decompression filters: CCITT Group 3 & 4
(monochrome images), run-length encoding (monochrome and
grayscale images), LZW ( 2:1 compression of text files), DCT
(20-200:1 compression of color images using the proposed JPEG
standard). Benefits: Improved performance due to reduced
transmission times. PostScript files on disk can also be made
much smaller, saving disk space.
~Subject: 11.13 Binary Encoding
In addition to the standard ASCII encoding, the language syntax
includes two binary-encoded representations. These binary encodings
improve efficiency of generation, representation, and
interpretation. However, they are less portable than the ASCII
encoding and are suitable for use only in controlled environments.
Benefits: performance,z compactness.
~Subject: 11.14 Improved underlying implementation
* Improved font disk cache. We have improved the backup of the font
cache on printers with a hard disk. Font access methods for
reading the font back into RAM are more efficient. Also, the
management of the disk is improved, so it does not become
fragmented. Benefits: Performance, enhanced functionality.
* ATM font rendering technology. Benefits: Improved performance
(4-5 times faster in raw character building speed) and improved
quality (most evident at small point sizes and low resolutions).
~Subject: 11.15 Improved memory management system
* One pool of memory available for all resource needs (page image,
font cache, path storage, downloadable fonts, etc.). Memory
allocated dynamically to meet needs. In general, memory is more
efficiently shared among different uses and arbitrary memory
restrictions have been eliminated. Benefits: Eliminates arbitrary
memory restrictions for imaging of more complex graphics.
* Opportunistic memory management scheme. In the current system,
the PostScript language program must manage memory on a per page
basis. New memory management operators allow more flexibility for
programs to explicitly release unused memory resources by
removing individual entries from dictionaries and removing font
definitions in an order unrelated to the order in which they were
created. Benefits: More efficient use of available memory.
* Automatic memory reclamation. VM is reclaimed automatically for
composite objects that are no longer accessible, such as strings
used by the show operator. A ``garbage collector'' will
automatically reclaim other unused memory. Benefits: More
efficient use of available memory.
~Subject: 11.16 Optimized graphics operators
* Rectangle operators. New operators for filling, clipping and
stroking rectangles; all highly optimized. For example, rectfill
is 3 times faster than an equivalent moveto, lineto, lineto,
lineto, closepath, fill. Benefits: performance and convenience.
* Graphics state objects provide a fast way to switch between
graphics states, which define the current line weight, color,
font, etc. In existing printers, graphics states are stored on a
stack, so accessing an arbitrary graphics state is somewhat
cumbersome. With graphics state objects, the graphics state can
be associated with a name, and retrieved by simply requesting the
name. Benefits: Performance, convenience.
* Halftone specification. New halftone dictionaries provide a more
precise way of specifying the halftone dots, and makes switching
between halftone screens faster. (The spot function is not
reinterpreted.) Benefits: Performance, convenience, enhanced
functionality.
* User paths are self-contained procedures that consists entirely
of path construction operators and their coordinate operands.
User path operators perform path construction and painting as a
single operation; this is both convenient and efficient. There is
a user path cache to optimize interpretation of user paths that
are invoked repeatedly. Benefits: Performance, convenience.
* Stroke adjustment. For very thin lines, there is a trade-off
between perfect positioning and consistent line width. Depending
on the placement of such a line, it could end up being rendered
as either 1 or 2 pixels wide, which is a noticeable difference.
To account for this, PostScript language programs often include
logic to slightly alter the coordinates of lines for consistent
rendering. With automatic stroke adjustment the interpreter
performs this adjustment to ensure consistent widths. Doing it in
the interpreter rather than in the PostScript language program is
20 - 30 % faster. Benefits: Performance, convenience, improved
quality.
~Subject: 11.17 Optimized text operators
* The xyshow operator provides a more natural way for applications
to deal with individual character positioning. Allows
simultaneous track kerning, pair kerning, and justification.
Benefits: Performance, convenience.
* The selectfont operator optimizes switching between fonts. It
does the work of 3 Level 1 operators: findfont, scalefont, and
setfont and has been optimized by using a caching mechanism.
Benefits: Performance, convenience.
~Subject: 11.18 Forms
* A form is a self-contained description of any arbitrary graphics,
text, and sampled images that are to be painted multiple times on
each of several pages or several times at different locations on
a single page.
* With the new forms feature, you can define a base form whose
representation stays cached between pages, so only information
that changes between forms will need to be interpreted for each
page. The representation used to cache the form may vary from
device to device depending on the available resources, such as
memory and/or hard disk space. In some cases, the actual
rasterized form will be saved, in other cases, an intermediate
representation (such as a display list) may be saved. Benefits:
End-users will benefit by improved performance.
* This makes forms processing faster and provide a natural
framework for ISVs implementing a forms functionality in their
application. Benefits: Convenience for ISVs.
* Besides the traditional concept of ``forms,'' some other examples
of forms include: Letterhead, stationary, overhead presentation
backgrounds, repetitive symbols in a CAD drawing such as screws
(mechanical drawing) or windows (architectural drawing), complex
background blends in 35mm slides. Benefits: Enhanced
functionality and application of PostScript printers in a variety
of different environments.
~Subject: 11.19 Patterns
* The new pattern color space provides the ability to establish a
pattern as the current color. Subsequent use of operators such as
fill, stroke, and show apply ``paint'' that is produced by
replicating (or tiling) a small graphical figure called a pattern
cell at fixed intervals in x and y to cover the areas to be
painted. The appearance of a pattern cell is defined by a
PostScript language procedure, which can include any arbitrary
graphics, text, and sampled images. The shape of the pattern cell
need not be rectangular, and the spacing of tiles can differ from
the size of the pattern cell. Benefits: Enhanced functionality,
performance, convenience.
* For efficiency, the representation of the pattern cell may be
cached. When cached, the execution of the procedure that defines
the pattern need be done only once for the current pattern. The
pattern cache is similar to the font cache. Benefits:
Performance.
* Multiple colors can be specified in the pattern or the pattern
can be used as a mask to paint a color defined in some other
color space. Benefits: Enhanced functionality
* For display environments, this feature will allow patterns to be
represented in a resolution independent manner. Until now,
patterns have typically been represented by arrangements of
pixels. This resolution-dependent representation does not work
well when trying to image the pattern at a variety of different
resolutions.
~Subject: 11.20 Images
There are several enhancements to the facilities for painting
sampled images: use of any color space, 12-bit component values,
direct use of files as data sources, and additional decoding and
rendering options. Benefits: Convenience, performance, quality.
~Subject: 11.21 Composite Fonts
* Provides the basic machinery for non-Roman character sets.
Enables the encoding of very large character sets and
non-horizontal writing modes. Benefits: Enhanced functionality.
* Provides a page description language for international business.
Composite font technology makes printers more international. The
same font technology can be used worldwide, and will provide
support for companies that must work in today's international
business environment. Benefits: Enhanced functionality.
* Advantages not limited to foreign languages - also useful for
strictly Roman printers: allows the creation of a single
composite font that combines two or more fonts. For example, you
may wish to combine a textual font (such as Times-Roman) with a
graphical font (such as Zapf-Dingbats), and have all characters
at their disposal within a single font. Other uses of composite
fonts: IBM extended character set, and expert sets (such as Adobe
Garamond). Benefits: Enhanced functionality and increased
performance by minimizing switching between fonts.
~Subject: 11.22 New Color Spaces
* CMYK color model and support for color images. Enhanced
functionality. This will encourage more ISVs to use the color
operators, because the operators will be widely available (The
printer itself may not be able to print in color, but the
PostScript language program won't generate errors when the
operators for CMYK color are used.)
* PostScript Level 2 supports several device-independent color
spaces based on the CIE 1931 (XYZ)-space. CIE-based color
specification enables a page description to specify color in a
way that is related to human visual perception. The goal of the
CIE standard is that a given CIE-based color specification should
produce consistent results on different color output devices,
independent of variations in marking technology, ink colorants,
or screen phosphors. True device-independent color specification.
Improved color matching between devices.
* PostScript Level 2 supports three classes of color spaces: device
independent, special, and device dependent.
The following device independent color spaces are standard:
The CIEBasedABC color space is defined in terms of a two-stage,
non- linear transformation of the CIE 1931 (XYZ)-space. The
formulation of the CIEBasedABC color space models a simple zone
theory of color vision, consisting of a non-linear trichromatic
first stage combined with a non-linear opponent color second stage.
This formulation allows colors to be digitized with minimum loss of
fidelity; this is important in sample images.
Special cases of CIEBasedABC include a variety of interesting and
useful color spaces, such as the CIE 1931 (XYZ)-space, a class of
calibrated RGB spaces, a class of opponent color spaces such as the
CIE 1976 (L*a*b*)-space and the NTSC, SECAM, and PAL television
spaces.
The CIEBased A color space is a one-dimensional and usually
achromatic analog of CIEBasedABC.
The following special color spaces are standard:
* The Pattern color space enables painting with a ``color'' defined
as a pattern, a graphical figure used repeatedly to cover the
areas that are to be painted. See the discussion of patterns for
more information.
* The Indexed color space provides a way to map from small integers
to arbitrary colors in a different color space such as a device
independent color space.
* The Separation color space provides control over either the
production of a color separation or the application of a device
colorant, depending on the nature and configuration of the
device.
The following device dependent color spaces are standard:
* The DeviceGray color space is equivalent to the existing
PostScript language's gray color model.
* The DeviceRGB color space is equivalent to the existing
PostScript language's red-green-blue (RGB) color model.
* The DeviceCMYK color space is equivalent to the existing
PostScript language's cyan-magenta-yellow-black (CMYK) color
model.
~Subject: 11.23 New screening/halftoning technology
* Improved algorithms for determining the angles and frequencies
used for halftone screens. The improvements fall into two primary
categories: general improvements, and improvements specific to
color separations.
* General improvements: (1) The new algorithms yield a 10 %
improvement in the speed of the setscreen and image operators;
(2) Earlier version of PostScript software could produce halftone
screens only for certain angle and frequency combinations. Enough
of these combinations were available so that any requested screen
could be fairly well approximated by one of the available angle
and frequency combinations. In contrast, the improved halftoning
algorithms can provide as much as a ten-fold increase in the
number of angle-frequency combinations that are available,
depending on the device resolution and the available memory.
Benefits: Increased performance and higher quality halftone
screens.
* Improvements specific to color separations: An additional feature
is available that enables PostScript software to generate
extremely accurate screen angles and frequencies. The screens
produced by this method can achieve an angular accuracy of within
05 degrees or better, depending on such parameters as exact
screen angle requested, device resolution, and memory available
for use by the algorithm. Benefits: Extremely high-quality color
separations that approach the quality that previously was
available only from high-end, color electronic pre-press systems.
~Subject: 11.24 Improved printer support features
* Page device setup provides a device independent framework for
specifying the requirements of a page description and for
controlling both standard features, such as the number of copies,
and optional features, such as duplex printing, paper trays,
paper sizes, and other peripheral features.
* Applications developers will be able to write a single driver for
a variety of different PostScript printers. The same code can be
used to address printer specific features whether the features
exist in the printer or not. If the feature is not in the
printer, the application can decide how to best respond to the
lack of the feature. Benefits: Enhanced functionality. ISVs
benefit by having a more uniform method for accessing printer
specific features. End users benefit by having software that will
take advantage of their printer's features.
~Subject: 11.25 Interpreter parameters
Administrative operations, such as system configuration and
changing input-output device parameters, are now organized in a
more systematic way. Allocation of memory and other resources for
specific purposes is under software control. For example, there are
parameters controlling the maximum amount of memory to be used for
VM, font cache, pattern cache, and halftone screens. Benefits:
Flexibility.
~Subject: 11.26 Resources
* A resource is a collection of named objects that either reside in
VM or can be located and brought into VM on demand. There are
separate categories of resources with independent name spaces -
for example, fonts and forms are distinct resource categories.
* The language includes convenient facilities for locating and
managing resources.
~Subject: 11.27 Dictionaries
Many Level 2 operators expect a dictionary operand that contains
key-value pairs specifying parameters to the operator. Language
features controlled in this way include halftones, images, forms,
patterns, and device setup. This organization allows for optional
parameters and future extensibility. For convenience in using such
operators, the PostScript language syntax includes new tokens,
<< and >>,
to construct a dictionary containing the bracketed key-value pairs.
Benefits: Convenience, extensibility.
~Subject: 11.28 What's the feedback from Adobe's OEMs on PostScript Level 2?
The feedback has been overwhelmingly positive. We have always
believed that we are taking our OEMs, ISVs and end users best
interests into account in moving forward with the PostScript
language. The feedback we have received so far confirms that we are
doing the right thing on all fronts.
~Subject: 11.29 How much ROM/RAM will it take for a Level 2 printer?
As is true with our current implementations, RAM/ROM requirements
will vary from one device to the next depending on the specific
capabilities of each device. However, our estimates put the code
size at approximately 1.5 Mb of ROM (for CISC processors), and 1.5
Mb of RAM, minimum.
~Subject: 11.30 When did Level 2 products come available?
The first Level 2 products were available in early 1991.
~Subject: 11.31 What about existing PostScript printers? Are they obsolete?
The current generation of PostScript printers (which you could
think of as PostScript Level 1) will not become obsolete because of
Level 2 products. Think of Level 1 and Level 2 printers as a family
of products, each having its own set of features to suit the needs
of a particular customer. While we will continue to support and
build Level 1 products (based on our OEM's demands) we think that
over the next 12-18 months most of our OEMs will begin providing
PostScript Level 2 products.
~Subject: 11.32 Are Level 1 and Level 2 implementations compatible?
All existing programs that run on today's PostScript printers will
run on a Level 2 device. That is, PostScript Level 2 is upward
compatible with the existing installed base of printers and print
drivers. However, it is not 100 % backward compatible. A file
written specifically to take advantage of some Level 2 features
will not run on a Level 1 printer because some functionality cannot
be emulated. Most Level 2 features can be emulated on a Level 1
printer and an intelligent driver can conditionally use Level 2
features when available, and fall back on Level 1 operators when
not. The new red book will include an appendix that will help ISVs
deal specifically with compatibility issues.
~Subject: 11.33 When will the new red book be available?
A new version of the red book, called the PostScript Language
Reference Manual, Second Edition, was be published by Addison-
Wesley in December 1990, and was generally available around May of
1991.
~Subject: 11.34 How is Adobe positioning PostScript Level 2?
Adobe is positioning PostScript Level 2 as an integral part of a
total system solution for printing and display environments.
PostScript Level 2 software provides the foundation for Adobe's
OEMs to implement an entire spectrum of products from low-cost
desktop laser printers for office-automation to high-resolution
imagesetters for producing color separations.
Let's put PostScript Level 2 in perspective with respect to the
overall printing solution. The effectiveness and performance of any
particular printing solution is affected by four main elements:
* Driver: Each major system software environment (Macintosh,
Windows, OS/2 Presentation Manager, NeXT) has a built-in
PostScript language driver. These system level drivers ensure
that all applications running in the environment can output to
PostScript printers. These drivers do not always produce the most
efficient PostScript language programs, and may not support the
wide variety of features available in the language or specific
hardware features in a PostScript printer.
* Language: The PostScript language as defined in the PostScript
Language Reference Manual (the ``red book'') is the standard
today.
* Communications: AppleTalk, parallel, and serial communications
are the most commonly used interfaces with PostScript printers
today.
* Controller: Today, most Adobe PostScript printers are based on a
variety of controllers: Scout (68000), Atlas (68020), and Atlas
Plus (68030). In addition, there are a number of custom
controller solutions offered by our OEMs. Total system throughput
is a function of all four elements. An efficient driver can
produce PostScript page descriptions that print much faster;
speed increases of 2-3x over an inefficient driver are not
uncommon. Communications bottlenecks can account for a majority
of the time it takes to print a page; a very large scanned image
can take minutes to transmit to the printer, even using
AppleTalk. And of course, the speed of the controller itself has
a direct impact on the time it can take to print a page. However,
the limiting factor
PostScript Level 2 is one component of a total systems solution
being assembled by Adobe:
* Adobe is developing drivers for the Macintosh, Windows 3.0, and
OS/2 Presentation Manager environments. These drivers will take
full advantage of the features and performance enhancements in
PostScript Level 2 printers as well as existing PostScript
printers.
* PostScript Level 2 extends the PostScript language with new
operators to improve performance and provide additional
functionality to address the need of end users and ISVs.
* PostScript Level 2 includes a variety of file compression
techniques that can be used to reduce the amount of information
sent (and hence the time to do so) to the PostScript printer.
* Adobe is developing new controllers based on the latest RISC
technology which are up to 22 times faster than current
controllers. In addition, these controllers provide our OEMs the
potential for providing direct SCSI input and Ethernet
connections for increased throughput.
(C) 1990 Adobe Systems Incorporated. All rights reserved.
PostScript, Display PostScript, and Adobe are trademarks of Adobe
Systems Incorporated registered in the U.S. All other product names
are trademarks or registered trademarks of their respective
holders.