Interpress

Interpress is a page description language developed at Xerox PARC, based on the Forth programming language[1] 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:[2]

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

References

  1. ^ Harrington, Steven J.; Buckley, Robert R. (1988). Interpress, the source book. A Brady Book. p. 18. ISBN 0-13-475591-X.
  2. ^ Harrington & Buckley 1988, p. 411.