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.