Information for Ghostscript Developers

Table of contents


Introduction

This document provides a wealth of information about Ghostscript’s internals, primarily for developers actively working on Ghostscript. It is primarily descriptive, documenting the way things are; the companion C style guide is primarily prescriptive, documenting what developers should do when writing new code.

Architecture

Design Goals

Ghostscript has the following high-level design goals (not listed in order of importance):

Functionality

  • Ability to interpret the current PostScript and PDF languages, as defined (and occasionally, in the case of conflict, as implemented) by Adobe.

  • Ability to convert PostScript to and from PDF, comparable to Adobe products.

  • Ability to produce output for a wide range of resolutions (from TV-resolution displays to imagesetters) and color models (black and white, multilevel gray, bilevel or multi-level RGB and CMYK, 6- or 8-color inkjet printers, spot color).

Performance

  • Ability to render PostScript and PDF with commercial-quality performance (memory usage, speed, and output quality) on all platforms.

  • Specifically, ability to render PostScript effectively in embedded environments with constrained RAM, including the ability to put the code and supporting data in ROM.

Licensing

  • Licensing that supports both the Open Source / Free software communities and a commercial licensing business.

  • Freedom from licensing restrictions or fees imposed by third parties.

Other

  • Easy source portability to any platform (CPU, operating system, and development tools) that has an ANSI C compiler.

  • Support for writing new interpreters and new drivers with no change to any existing code; specifically, ability to support PCL 5e, PCL 5c, and PCL XL interpreters, and the ever-changing roster of inkjet printers.

These goals often conflict: part of Ghostscript’s claim to quality is that the conflicts have been resolved well.

File roadmap