[Main topics] [Navigation]

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):

Only this full Interpress is comparable to PostScript, but not yet defined in a standard.

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} END
The 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

Interpress 2.1 [13] contains no operations for creating curved strokes. Curves can be approximated only using short strokes.

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:

The tokens appear in the same order as the corresponding literals or symbols, except that a body operator token precedes its body. The tokens are of different sizes; each one is a sequence of bytes.

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:

Some of these instructions may conflict with a transport mechanism like DIA (Document Interchange Architecture).

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: It is not to my knowledge which subset of Interpress is executed by the printers mentioned below. Currently no full implementation of Interpress exists.
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
Among those companies which announced Interpress support are Allied-Linotype (Linotype imagesetters), Compugraphic (imagesetters), Dataproducts, DEC, Interleaf and Siemens.

 

[Main topics] [Navigation]
 URL:  Created: 2003-09-17  Updated:
© Docu+Design Daube, Zürich    
  Business of Docu + Design Daube Documentation issues Sharing information Klaus Daube's personal opinions Guests on this site Home of Docu + Design Daube To main page in this category To first page in series To previous page in series To next page in series To bottom of page To top of page Search this site Site map Mail to webmaster To bottom of page To top of page