PostScript has evolved through three major versions, each adding significant capabilities while maintaining backward compatibility.

1. Overview

PostScript was developed by Adobe Systems and released in three major levels, each building upon the previous version with enhanced features and capabilities.

2. Evolution Timeline

Level Release Year Key Features

Level 1

1984

Original specification with basic imaging model, stack-based execution, vector graphics, and font handling

Level 2

1990

Added color extensions, composite fonts, filters, forms, patterns, file system, and performance improvements

Level 3

1996

Introduced smooth shading, better color management, improved PDF integration, and additional imaging features

3. Version Documentation

3.1. PostScript Level 1

The original PostScript specification introduced:

  • Stack-based execution model

  • Basic imaging operators

  • Path construction and painting

  • Font rendering

  • Device independence

  • Coordinate transformations

3.2. PostScript Level 2

Level 2 extended PostScript with:

  • Color spaces (DeviceRGB, DeviceCMYK, DeviceGray, CIE-based)

  • Composite fonts and CID-keyed fonts

  • Binary encoding for efficiency

  • Filters (compression, decompression)

  • Forms (cached graphical objects)

  • Patterns (tiling patterns)

  • Image operators enhancements

  • File system and named resources

  • Better memory management

3.3. PostScript Level 3

Level 3 added advanced features:

  • Smooth shading (gradient fills)

  • DeviceN and Separation color spaces

  • In-RIP separations

  • Better PDF integration

  • Improved halftoning

  • Better device control

  • Enhanced font support

4. Feature Comparison

For a detailed comparison of features across all three levels, see the version comparison table.

5. Compatibility

PostScript interpreters are generally backward compatible:

  • A Level 2 interpreter can execute Level 1 programs

  • A Level 3 interpreter can execute Level 1 and Level 2 programs

  • Programs can query the language level using the languagelevel operator

5.1. Checking Language Level

languagelevel       % Returns 1, 2, or 3
1 eq {              % If Level 1
    % Use Level 1 features only
} {
    languagelevel 2 eq {  % If Level 2
        % Can use Level 2 features
    } {
        % Can use Level 3 features
    } ifelse
} ifelse

6. Choosing the Right Level

When writing PostScript programs:

  • Use Level 1 if maximum compatibility is required

  • Use Level 2 for color documents, better performance, and modern features

  • Use Level 3 for advanced imaging, smooth shading, and optimal PDF workflow

Most modern PostScript interpreters support Level 3, but it’s good practice to:

  1. State the required level in document comments

  2. Use conditional code for optional features

  3. Test on target devices when possible

7. Document Structuring Comments

Declare the PostScript level in your document header:

%!PS-Adobe-3.0
%%LanguageLevel: 2
%%Creator: My Application
%%Title: Sample Document
%%EndComments

8. See Also


Table of contents


Back to top

Copyright © 2025 Ribose. PostScript is a trademark of Adobe. Distributed under the MIT License.