CPDS, Interpress and PostScript - A Comparison
This text was presented at the SEAS Anniversary Meeting 1986 in Jersey Klaus Daube
Oerlikon Bührle Rechenzentrum AG
Zürich, Switzerland
Abstract
Recent development of cheap highly functional laser printers and raster image processors stimulated interest in languages for interfacing to these devices. This paper compares CPDS from IBM, Interpress from Xerox and PostScript from Adobe. Areas covered are design goal, functionality, coding (data representation) and font metrics.
Remark
This text freely uses trademarks and product names without special notice.
Introduction
There have always been languages for communicating page information to typesetters and printers. Until recently the capabilities of computer output have been very limited, so their input languages have been simple ASCII formats modified by escape codes. Typesetters on the other hand have quite complex input languages with lots of commands.With the recent advent of laser printers and raster typesetters the issue of PDL's (Page Description Languages) has received much attention, and a number of languages have been invented. Since document contents can be defined at several layers, they seem to break most naturally in three layers:
- On the highest level we have abstract languages, which are often described as "declarative" like SGML (Standard GML), GML (Generalized Markup Language) or TBL (Table description language in the UNIX environment).
- On the medium layer are the procedural languages, which tend to have a command and parameter structure: Script, TROFF etc.
- The lowest layer contains the slave languages. All the abstract information has disappeared. All decisions like line breaking or footnote placing have been made. Only general coordinate transformations may be done. For this level the Virtual Device Interface of TEX is an example.
Processing the Information
The picture below shows the flow of information from the formatter to the printer. To form the page of a "compound document" various sources of information are necessary.
Since the data stream to the printer controller is heavy in the the case of CPDS (the printer controller has very limited intelligence) the functions of "Combiner" and "Printer Controller" are represented by the utility "Print Service Facility" on the host. For more intelligent printers (or controllers) the function of the "Combiner" may be integrated in the formatter.
Our discussion concentrates on the input for the "printer controller" or a similar process.
Some Background
Donald Knuth desired for his series The Art of Computer Programming typography to remain constant across editions and volumes of the series. So he began work on the text formatter TEX. Originally designed for a quality typesetter, the introduction of the Virtual Device Interface (VDI) made TEX device independent in 1981. This PDL was very rudimentary.
In 1981 the Imagen Corporation began deliveries of a laser printer based on the Canon LBP-10 with 240 dots/inch resolution. Their PDL imPRESS was heavily influenced by TEX's page model. At first the image processor was a modified SUN workstation [2].
In the meantime a device independent "Press format" was developed at Xerox PARC by Sproull and Newman. This language did not become available in marketed products, but the definitions had been distributed widely enough, so, that by 1982 researchers at the EPFL at Lausanne could present their own implementation. A Motorola 68000 microprocessor was used in the controller for a Canon LBP-10 printing machine [12].
In 1982 Sproull, Warnock and others created a new page description language called Interpress, which evolved from both "Press format" and JAM (device independent language for graphics devices of Evans and Sutherland). This language was not available outside Xerox earlier than 1984, when it was made public. The full language with three levels of functionality is not yet standardized or published.
Warnock and Geschke left Xerox to form Adobe Systems, which designed and market the PostScript language, which was heavily influenced by Interpress. The first PostScript printer was produced by Apple Corporation (LaserWriter).
IBM's page description language CPDS is defined as input to a specific program, the Print Service Facility, which is used as a "driver" for the 3800 family of APA (all points addressable) printers. It became available after the 3800-3 [4] in 1984.
This year (1986) Imagen corporation launched a new PDL called DDL for Document Description Language. Hewlett Packard has announced an agreement to adopt this language [1].
Several other manufacturers of laser printer controllers developed proprietary page description languages. QMS (Quality Micro Systems) established QUIC for their Magnum controllers. It is clearly a lowest level device, merely a special form of "escape sequences" with the ability to use forms, build loops, set half-tone patterns and blow up pixel patterns. Now they also offer PostScript versions of their printer controllers.
Xerox also uses a form of escape sequences in their 2700 and 4045 printers. Interpress is now available for Xerox' whole product line of printers.
Procedural versus nonprocedural
Non procedural languages can be generated more easily by an application program.
Procedural descriptions are more compact for images containing regularities. Consider a procedural description of a grid compared to a static description. Procedural descriptions can be used for abstraction and modular design. Both PostScript and Interpress files start with a prologue defining verbs (actions, functions, procedures) which are used later on. Hence application programs like one to generate business graphics can define appropriate procedures to shorten the image description, e.g. a procedure to generate pies in a chart.
The real power of a procedural PDL comes from the ability to execute code conditionally, to call functions and perform arbitrary computations. Redefinition of built-in functions is not necessary but often convenient.
As with procedural languages in general, there is no provision against abuse of the programming features. Hence an interpreter must deal with things like infinite loops.
Example
The following picture inside the box consists of text of two sizes (Σ, Sigma chemistry ...) a small graphic (the retort) and a small bit map (the smoke). It is used to show differences in the PDL's discussed here.
CPDS is designed to be generated by programs only. PostScript as well as Interpress (character form only) can be written by a humans like any programming language. But they also are intended to be generated by programs. This is the normal case.
Page description languages
Comparison
Language aspects
CPDS | Interpress 2.1 | PostScript | imPRESS | DDL | |
---|---|---|---|---|---|
Programmability | no | limited | full | limited | full |
Representation | binary | binary | ASCII | binary | ASCII, binary |
Storage management | no | no | manual | no | automatic |
File access | no | limited | yes | no | yes |
Printing instructions | yes | yes | no | ?? | yes |
Device independenc | partial | yes | yes | partial | yes |
Graphical aspects
CPDS | Interpress 2.1 | PostScript | imPRESS | DDL | |
---|---|---|---|---|---|
Arbitrary transformations | no | yes | yes | ??? | yes |
Line | rules only | yes | yes | yes | yes |
Area | images only | yes | yes | yes | yes |
Curve | no | no | yes | yes | yes |
Fonts | bitmap | bitmap, outline, stroke | bitmap, outline | bitmap | ??? |
Texturizing mode | ???? | transparent, opaque | opaque | ??? | transparent, opaque, compliment |
Priority important | n/a | on !! off | on | ??? | on |
Sampled objects | yes | yes | yes | ??? | yes |
Arbitrary clipping | n/a | rect. only | yes | rect. only | yes |
Colour | no | yes | yes | no | yes |
Bitmap scaling | limited | no | yes | no | yes |
Compressed images | no | yes | possible | no | ??? |
Composite objects | yes | no | no | no | yes |
Document layout | no | limited | no | no | yes |
Performance
CPDS | Interpress 2.1 | PostScript | imPRESS | DDL | |
---|---|---|---|---|---|
Compactness | yes | yes | no | yes | yes |
Object cacheing | n/a | fonts only | fonts only | no | full |
Independent objects | pages | pages | not guaranteed | no | sections |
Bibliography
The detail pages refer to this bibliography with [xx] notions.
- DDL: A Language to Describe Documents, Imagen Corporation 8/86
- imPRESS Programmers Manual version 2.1, Imagen Corporation, August 84
- 3800 All Points addressable Printing Technology (1984), IBM publication number SH35-0090-0, ISBN 0-9331-04-5
- Print Services Facility Data Stream Reference (february 1985), IBM publication number SH35-0073-1
- VM3812 - IBM 3812 Pageprinter VM Support, Application Programmers Guide. IBM publication number SH20-6732-0
- Heather Brown, From Text Formatter to Printer, Protext I Conference proceedings, Boole Press, 1984
- PostScript Language Reference Manual, Adobe Systems Inc., Addison-Wesley, 1985
- Robert A. Morris, Page description Languages, An Introduction to Text Processing Systems, Boole Press, 1985
- David J. Harris, An Approach to the Design of a Page Description Language, Proceedings of the international conference on "Text Processing and Document Manipulation" at the University of Nottingham, Cambridge University Press 1986, ISBN 0-521-32592-7
- Brian K. Reid, Procedural Page Description Languages; Proceedings of the international conference on "Text Processing and Document Manipulation" at the University of Nottingham, Cambridge University Press 1986, ISBN 0-521-32592-7
- Brian K. Reid, PostScript and Interpress: a comparison, ARPANET Laserlovers distribution, March 1 1985
- Roger D. Hersch, P. Fäh: The formatted document description, rapport interne LAMI 1983, EPFL, Lausanne.
- Xerox Corporation, XNS Standards Interpress Electronic Printing Standard, El Segundo, CA, Document number XSIG_048404.
- Page Printer Formatting Aid, Users Guide and Reference, IBM publication number G544-3181