ULTRIX Worksystem Software Extensions for the Display PostScript® System

Order Number: AA-PANSA-TE

This document, "Extensions for the Display PostScript® System" from Adobe Systems Incorporated (October 25, 1989), describes a set of additions and modifications to the PostScript language. While initially implemented for the ULTRIX Worksystem Software's Display PostScript system, many of these extensions were designed with a broader utility in mind and were anticipated to be incorporated into future printer products.

The primary motivations for these extensions are to adapt PostScript for interactive display environments, which require different characteristics than traditional print-oriented applications. Key areas of extension include:

  1. Efficiency and Compactness:

    • Alternative Language Encodings: Introduces "binary token encoding" and "binary object sequence encoding" alongside the standard ASCII, allowing for more compact and efficient generation and interpretation of PostScript programs, especially in environments with close coupling between application and interpreter.
    • Encoded Number Strings & User Paths: Provides compact binary representations for sequences of numbers and self-contained "user path" descriptions, which can be processed directly by operators for performance gains. A "user path cache" is introduced to optimize rendering of frequently displayed paths.
    • Optimized Imaging Operations: Streamlines frequently performed operations like drawing rectangles (rectfill, rectstroke, rectclip) and font selection (selectfont).
    • Font Cache Size Control: Allows dynamic adjustment of the font cache size for better performance based on application needs.
  2. Resource Management:

    • Garbage Collection: Introduces an automatic Virtual Memory (VM) reclamation facility to manage memory more flexibly than the traditional save/restore mechanism, especially for long-running interactive sessions.
    • Shared VM: Establishes a "shared VM" visible to all execution contexts, allowing for objects (like font definitions) to persist independently of individual context lifetimes, reducing redundancy and improving efficiency for shared resources.
  3. Concurrency and Interactivity:

    • Multiple Execution Contexts: Supports the concurrent execution of multiple PostScript programs, each in its own "context" with private stacks and VM.
    • Synchronization Primitives: Adds "locks" and "conditions" and associated operators (monitor, wait, notify, fork, join, detach) to enable cooperation and synchronization among these concurrent contexts, particularly when accessing shared data.
    • User Objects: Provides a mechanism (defineuserobject, execuserobject) to refer to PostScript objects using integer indices, facilitating communication and efficient referencing of objects by external applications.
    • View Clips: Introduces an additional, independent clipping mechanism ("view clip") beyond the standard graphics state clipping, useful for incremental updates and managing display regions in window systems.
    • Window System Support: Includes operators for integrating PostScript with underlying window systems and for hit detection (associating input events with graphical objects).
  4. Refined Imaging and System Behavior:

    • Halftone Definition: Defines a more extensible "halftone dictionary" mechanism, allowing for various halftoning processes, including direct "threshold arrays" for finer control on low-resolution displays.
    • Scan Conversion Details: Provides more rigorous rules for how abstract graphical shapes are converted to pixels.
    • Automatic Stroke Adjustment: Introduces a mechanism to automatically adjust line widths for uniform thickness, crucial for legibility on low-resolution displays.
    • Miscellaneous Changes: Includes extensions to the statusdict for system information, file system operations, timekeeping (realtime), and changes to error handling (binary error reports) and string execution semantics.

In essence, this document details how PostScript was extended to move beyond its traditional role in printing to become a powerful, interactive display language, addressing performance, memory management, and concurrency needs specific to graphical user interfaces of the late 1980s.

AA-PANSA-TE
October 1989
157 pages
Quality

Original
5.4MB

Site structure and layout ©2025 Majenko Technologies