Interpress é uma linguagem de descrição de paginas desenvolvida no Xerox PARC, baseada na linguagem de programação Forth e uma linguagem gráfica chamada JaM. O PARC falhou em comercializa-la, então seus criadores Chuck Geschke e John Warnock, fundaram Adobe Systems em 1982, e desenvolveram PostScript. Interpress é usado em algumas impressoras da Xerox, notavelmente a DocuTech Network Production Publisher, e é suportada no Xerox Ventura Publisher. Ela também serve como formato de saída para o processador de texto rich text InterScript. Interpress descreve a aparência desejada ou ideal de um documento que foi completamente composto por algum outro processo (emissor). Todas os fins de linha, hifenização e decisões de justificação de linha, e em fato todas as decisões sobre os formatos e posições da imagens, são feitas antes da criação do master. Como um formato independente de dispositivo, ele permite imprimir e vários dispositivos enquanto preservando o layout.
Interpress é tão extensivo, alguns fabricantes de impressoras preferem suportar apenas parte dele, talvez para reduzir o tempo de desenvolvimento e custo ou para melhorar a performance. Para prevenir inconsistências, Interpress define três conjuntos de funções padrão:
| Conjuntos Interpress | Comercial | Publicação | Gráfico Profissional |
|---|---|---|---|
| Texto | rotações de 90° | rotações de 90° | todas as rotações |
| Gráficos | no clipping retângulos preenchidos | clipping retangular contornos preenchidos | clipping arbitrários contornos preenchidos |
| Cor | sólido/sampled black | escala de cinza | em cores |
| Pixel | arrays binário | arrays binário | arrays em escala de cinza |
Esse conjunto de recurso permite a capacidade de instruir a impressora que tipo de mídia usar (tamanho do papel, tipo, cor), numero de cópias, lados impressos assim como ações de finalização como grampeamento. Essas instruções são opcionais e seu operação é dependente das capacidades da impressora.
| 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-- |
Uma estrutura mais complexa inclui Nested Blocks and CONTENTINSTRUCTIONS, um token utilizado para distinguir os corpos de instruções de conteúdo dos corpos das páginas. Em geral, as instruções de conteúdo são dadas preferência sobre as instruções de documento. Nested Blocks {BEGIN..END} permitem a construção de documentos maiores a partir de menores.
Essas definições que são frequentemente encontradas em perambulo já que usualmente se aplicam ao documento inteiro.
| 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-- |