Interpress is a page description language developed at Xerox PARC, based on the Forth programming language and an earlier graphics language called JaM. PARC was unable to commercialize Interpress. Two of its creators, Chuck Geschke and John Warnock, left Xerox, formed Adobe Systems, and produced a similar language called PostScript. Interpress is used in some Xerox printers most notable was the DocuTech Network Production Publisher, and is supported in Xerox Ventura Publisher. Interpress is also used as the output format for PARC's InterScript system, which is an editable word processor format for rich text documents. Interpress describes the desired or ideal appearance of a document that has been completely composed by some other process (emitter). All line ending, hyphenation, and line justification decisions, and in fact all decisions about the shapes and positions of the images, are made before creating the master. Since Interpress describes a document in a device-independent manner, a master can be printed on a variety of devices, each of which renders its best approximation to the ideal represented by the master.
Functional Sets
Interpress is so extensive, some printer manufacturers may prefer to support only a part of it, perhaps to reduce development time and cost or to improve performance. Recognizing this and also the potential for chaos if every printer were to implement a different portion of the language, Interpress was designed to have defined three standard function sets:
- Commercial Set
- designed for text and form-printing applications, such as might be required in a data center using basic text or scanned images.
- Publication Set
- includes all the Commercial Set plus curved lines, filled outlines, rectangular clipping, synthetic graphics, and gray-level color capabilities.
- Professional Graphics Set
- consist of all of the imaging facilities (types, literals, and operators of the base language), full-color encoding, and Printing Instructions (which were expanded by Ernest L. Legg)
Interpress sets | Commercial | Publication | Professional Graphics |
---|---|---|---|
Text | 90° rotations | 90° rotations | all rotations |
Graphics | no clipping filled rectangles |
rectangular clipping filled outlines |
arbitrary clipping filled outlines |
Color | solid/sampled black | grayscale | full color |
Pixel | binary arrays | binary arrays | grayscale arrays |
Printing Instructions
This feature set allows the ability to instruct the printer which media to use (paper size, type, color), number of copies, sides printed on as well as finishing actions such as stapling. These instructions are optional and their operation is dependent on the printer capability.
Example
Header "Interpress/Xerox/3.0 " | --standard header-- |
{instructions} | --device instructions-- |
BEGIN | --start of master-- |
{preamble} | --preamble-- |
{page 1} | --first page-- |
{page 2} | --second page-- |
END | --end of master-- |
A more complex structure would include Nested Blocks and CONTENTINSTRUCTIONS, a token used to distinguish content-instructions bodies from page bodies. In general, the content instructions are given precedence over the document instructions. Nested Blocks {BEGIN..END} allow for constructing large documents out of smaller ones.
Fonts
These are definitions that often found in the preamble since they usually apply to the entire document.
Header "Interpress/Xerox/3.0 " | --header-- |
BEGIN | --start of master-- |
{ | --preamble start-- |
Identifier "Xerox" | |
Identifier "XC1-3-3" | |
Identifier "Modern" | |
3 MAKEVEC FINDFONT | |
0.00635 SCALE | --create an 18-point font-- |
MODIFYFONT | |
0 FSET | --place in frame |
Identifier "Xerox" | |
Identifier "XC1-3-3" | |
Identifier "Modern-Italic" | |
3 MAKEVEC FINDFONT | |
0.00635 SCALE | --create an 18-point Italic font-- |
MODIFYFONT | |
1 FSET | --place in frame |
} | --preamble end-- |
{ | --page 1 start-- |
0 SETFONT | --set the font-- |
0.05 0.25 SETXY | --set position-- |
String "Printing text in " | --text to print-- |
SHOW | --push text to image-- |
1 SETFONT | --set the Italic font-- |
String "Italics" | --text to print in Italics-- |
SHOW | |
} | --page end-- |
END | --end of master-- |
References
- Harrington, Steven J.; Buckley, Robert R. (1988). Interpress, the source book. A Brady Book. p. 18. ISBN 0-13-475591-X.
- Harrington & Buckley 1988, p. 411.
External links
- A Usenet post from 1985 describing the history of Interpress and comparing it with PostScript
- Docu + Design Daube “Interpress”
- Introduction to Interpress