# Interpress

Interpress is a page description language developed at Xerox PARC, based on the Forth programming language and an earlier graphics language called JaM. PARC failed to commercialize it, so its creators, Chuck Geschke and John Warnock, founded Adobe Systems in 1982, and developed PostScript. Interpress is used in some Xerox printers, notably the DocuTech Network Production Publisher, and is supported in Xerox Ventura Publisher. It also serves as the output format for PARC's InterScript, a rich text word processor. 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. As a device-independent format, it allows printing on various devices while preserving the intended layout.

## 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. To prevent inconsistencies, Interpress defines 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[0] |
| 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[1] |
| } | --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-- |