Interpress
This PDL is an outgrow of the Xerox "Star" project. The workstation philosophy developed at Xerox PARC called for "intelligent printing". Interpress is a major remake of the Press format [12], which was never implemented in a commercial product. The weaknesses of Press format especially in the font area were overcome by new concepts. Until 1984 all aspects of Interpress were proprietary. Today information is only available from Xerox Corporation directly.
Interpress is designed for high performance and efficiency for the specific purpose of electronic printing. It is not intended to be a general purpose editable format, a composition language, or to be created by people. The Interpress model assumes a user creates Interpress masters (the file) via any number of document editing and composition systems.
Interpress is a procedural language defined in terms of keywords (like Algol). Compared to PostScript it is defined more abstractly, since the encoding is defined "generic". For the human reader a form using a stream of characters is at hand. This is intended for debugging purpose only (developing of formatters etc.)
Both Interpress and PostScript don't use much syntax. Both are token-oriented languages. Each "token" is "executed" as soon as it is identified. Both languages assume that a printer (controller) contains an interpreter for the executable language. A page is thus printed as a side effect of executing the page description. Whereas CPDS is static, Interpress and PostScript are dynamic.
The function of full Interpress is divided into three levels (sets):
- Commercial Set: text, rules, forms, bit-maps, 90° rotation. This set is comparable to CPDS.
- Publication Set: curves, vectors, dashed lines, rectangular clipping, functional colour (shades)
- Professional Graphics Set: gray scale pixels, arbitrary rotation and clipping, process colour .
Xerox tries to launch Interpress as a PDL standard for ISO/OSI networks, especially due to its set of printing control.
With an "Interpress Transfer Architecture" Xerox will set up a bridge between IBM's Advanced Function Printing and Interpress printing. The role of "Xerox Document Presentation Service" is similar to that of PSF [4] and it may coexist with it.
Further discussion is based on Interpress version 2.1 [13].
Functions
Interpress is defined in terms of byte codes which can be seen as instruction codes, which were compiled from the character form (mnemonics). An Interpress file has a static structure (some call it "lexical structure"). It is defined by a sequence of "bodies". Each body is a sequence of operators and parameters.
The Interpress file is called master and consists of an arbitrary number of bodies linked together in a skeleton (a syntactic construct).
BEGIN {preamble} {page body 1} {page body 2} ... {page bodyn} ENDThe preamble may be preceded by a header with printer instructions. Page bodies contain redundant information, so that pages become independent. These pages can be printed independently (e.g. in any order).
Storage in Interpress is accessed by address using subscripts (index) into the procedures frame. "Variable names" are reduced to memory locations. So an Interpress file looks like object code. Of course this approach is efficient.
Bodies can be translated into operators thus featuring programmability. Operators working on bodies are prefix, whereas operators working on tokens are postfix.
All objects can be coloured (shaded), since they are all "masks" in the "inking" process. By default the properties of objects (size, coordinates) are measured in meters. Of course this can be adjusted to the purpose of the master.
Text Objects
No character set standard is needed, but if existent, it can be accomodated (e.g. ISO 6937). Xerox' development in this area covers both character codes and rendering codes (e.g. for ligatures). Also codepages for mapping character codes can be set up.
If Text objects try to use undefined fonts, a fall back mechanism allows use of default fonts. Spacing may be corrected in these cases. Transformations (scaling, rotation, slanting, texturizing) may be applied depending to the implemented level of Interpress.
Graphic Objects
- Strokes are masks of uniform width (line or rule). Ending and intermediate points may use various shapes (round, butt or square). A trajectory may use an arbitrary number of points.
- Filled outlines generate masks by filling the region "inside" a closed trajectory. An outline is formed from one or more closed trajectories. To determine holes the "winding number rule" is used.
Image Objects
Image objects may be defined in several encoding schemes, including CCITT-4 and canonical (plain bitmap). The decompression operators are not defined in the Interpress standard. Instead there is an operator to retrieve it from the environment.
xpixels ypixels 1 1 1 m [vector of compressed data] [name of algorithm] FINDDECOMPRESSOR DO MAKEPIXELARRAY
The two-dimensional array of pixels can be transformed in any way by the transformation machinery of Interpress. So any scanning order can be handled.
Data Representation
The master is encoded by a header which identifies the encoding, followed by a sequence of tokens. Each token corresponds to:
- A single Interpress literal (not a body). Each such literal can be encoded by a single token.
- One of the symbols
BEGIN END PAGEINSTRUCTIONS { }
- An encoding-notation, which stands for some sequence of Interpress literals.
Tokens use one of 5 formats (short/long operation, short number, short/long sequence). For example a primitive operator or symbol is assigned an integer 0..8191 called its encoding value. It is represented by a two byte long operation token. Strings or vectors are encoded by simple, runlength or extended mode.
These various encoding schemes provide for very compact data representation.
All encoding schemes use 8 bits of a byte. The value x'FF'
is heavily
used as an "escape" function. There are utilities available to convert an encoded
master to a human readable form and vice versa.
Miscellaneous
Error Handling
As Interpress masters are printed, various errors may be encountered. The implementation of the Interpress interpretation specifies what should happen. The first few errors should be reported in a status sheet at the end of printing the job. Errors are classified according to their severity.
There are marks on the stack where recovery from errors may start. Errors cause different types of marks.
Font Specifics
Interpress can work with any character code, but preferable with the Xerox character code standard which uses two bytes for every alphabet. Compactness is achieved by encoding schemes. The standard also provides for extension of the code (more than two bytes needed).
For each symbol in a font there are properties defined (center coordinates, left/right extent, super/subscript location, x-height etc.). Some of these properties are vectors (kerning is based on various successor characters, ligature substitution also).
An easy property vector suggests symbol sizes and orientations that will be printed with greatest fidelity. Also a mechanism to correct spacing is provided, since width differences can arise when the image-unit can only approximate the font e requested by th master.
A character operator makes a graphic image of a character. This operator can be defined by basic operations (computation, line, spline, area fill, bit-map etc.). Symbols may be nonspacing (flying accents).
Colour
Interpress sets the current colour to any shade of gray with the SETGRAY operator. For those printers that can obtain colours other than grays, a FINDCOLOR operator can set any desired colour like "blue-green" or "light brown". Also arbitrary textures may be set using pixel arrays throughout the page.
Priority
When more then one colour (shade) is used on a page and masks of two different colours overlap, there is a possible ambiguity about the visibility of either. Each object may be assumed to have a numeric priority. When two objects overlap, the one with greatest priority is visible.
Printer Instructions
Since Interpress is intended to work in a network it offers a rich set of instructions for a printer or server. Interpress is designed for machine to machine communication. So these instructions enable an up-front determination of the ability of a given printer to print a document. Printer instructions are located in the first (optional) body:
- information about the document (name, creation date/time, creator, sender, receiver, accounting, job priority, password etc.)
- name of functional set to be used in this document (assure the printer can print the document)
- environment (masters can be routed within a network to a printer with the needed environment like colour printing)
- finishing, stacking, simplex/duplex printing, image shift, medium description (paper stack).
Sample Definitions
The human readable form of Interpress for our example is not very different to the PostScript form. The following is a "pencil and paper" unchecked version. Comments are enclosed in --. Unit of measure is meter (default).
BEGIN { [xerox, xc82-0-0, Helvetica] FINDFONT 0.004233 SCALE MODIFYFONT 0 FSET -- 12 point Helvetica -- [xerox, xc82-0-0, Symbol] FINDFONT 0.0127 SCALE MODIFYFONT 1 FSET -- 36 point Symbol font -- 0 SETFONT -- first use Helvetica -- 0.015 0.009 SETXY -- position the text -- <Sigma Chemistry, Somewhere round the Corner> SHOW 1 SETFONT -- next use Symbol font -- 0.022 0.019 SETXY -- position the text -- <S> SHOW -- --------- draw the retort ----------------------------------- -- 0.0006 15 ISET -- stroke width 0.6mm -- 0.074 0.033 0.043 0.035 MASKVECTOR -- lower line of nozzle -- 0.074 0.038 0.030 0.044 MASKVECTOR -- upper line of nozzle -- -- I dont's show here a large number of vectors creating the arc -- -- --------- "produce" smoke ----------------------------------- -- 64 95 -- xpixels, ypixels -- 1 1 1 -- no transformation -- 0.0000847 SCALE -- pixel size 1/300 inch -- 0.080 0.016 TRANSLATE CONCAT -- coordinates of image -- [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 128, 0 , 0 , 0 , 0 , 0 , 16, 0 , 8, 0 , 0 , 0 , 0 , 32, 128, 16, 64, 0 , 0 , -- and so on, a lot of numbers -- 0 , 0 , 0 , 0 , 32, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] [unpack8] FINDDECOMPRESSOR DO MAKEPIXELARRY MASKPIXEL } END
Software and Hardware
Xerox literature mentions some software generating Interpress files:- IBM Advanced Function Printing to Interpress
- Unix Interpress toolkit
- TROFF, TEX, SCRIBE
- Transpress & Micropress
- GEM from Digital Research
Printer/controller | Resolution (dots/inch) | Page size | Marking engine |
---|---|---|---|
Telecopyer 495-1 | 200 | approx. A4 | Xerox |
3700 Laser Printing System | 300 | A4, A3 | Xerox |
4045 Professional Graphics | 300 | A4, A3 | Xerox |
8700 and 9700 Laser Printing System | 300 | A4 | Xerox |