Fact-checked by Grok 2 weeks ago

Postscript

PostScript (often abbreviated as PS) is a device-independent (PDL) and stack-based, dynamically typed programming language developed by Systems, Inc., designed to describe the precise appearance of text, , raster images, and their layout on output devices such as printers and displays. First released in 1984, it revolutionized by enabling high-quality, consistent reproduction of complex documents across diverse hardware, serving as the foundation for the revolution in the 1980s and 1990s. Conceived by co-founders and , along with a team including Doug Brotz, Ed Taft, and , PostScript originated from earlier work on Xerox's Interpress system and was developed between 1982 and 1984 to address the limitations of raster-based printing technologies. The language's key strength lies in its interpretive nature, where PostScript programs—written in a concise, postfix notation—are executed by a in the printer or rendering engine, allowing for , , and precise control over fonts and shading without dependence on specific device resolutions. PostScript Level 1, the initial version, supported output and basic , but subsequent iterations expanded its capabilities: Level 2 (introduced in 1990) added , data compression, and improved , while Level 3 (released in 1997) incorporated native PDF support, smoother gradients with over 256 gray levels, and enhanced device optimization for commercial printing presses. Widely licensed to original equipment manufacturers (OEMs), PostScript powered millions of laser printers, including Apple's iconic in 1985, which paired with software like Aldus PageMaker to democratize professional and . Although largely supplanted by Adobe's Portable Document Format (PDF) in the early for file portability and security—due to PDF's self-contained structure and reduced vulnerability to malicious code— remains integral to high-end ing workflows, embedded in over 200,000 commercial presses worldwide via the Adobe PDF Print Engine and supported in tools like and Photoshop. Its influence persists in modern rendering technologies, underscoring its role as a pioneering standard that bridged and media, with ongoing licensing through Adobe's SDK ensuring compatibility in specialized applications.

Overview and History

Introduction

is a dynamically typed, stack-based programming language developed by for describing the appearance of text, graphics, and images on printed pages or displays. As a , it enables device-independent specifications that ensure consistent, high-quality output across various publishing and printing devices. The language's Turing-complete nature provides full programmability, allowing it to handle complex document rendering tasks beyond simple markup. PostScript measures distances in points, with 72 points equaling one inch (or 1/72 inch as the basic unit), facilitating precise control over layout and scaling. Initially released in 1984, PostScript played a pivotal role in the revolution by enabling scalable, professional-grade and in digital workflows.

Development and Milestones

The development of PostScript originated in the mid-1970s, with foundational concepts seeded by John Gaffney at Evans & Sutherland Computer Corporation in 1976, where he created an early interpretive, FORTH-like language for 3D graphics databases. These ideas influenced subsequent work, including the JaM language developed by John Warnock and Martin Newell at Xerox PARC in 1978, which evolved into Xerox's Interpress page description language and laid groundwork for PostScript's stack-based imaging model. Warnock and Charles Geschke, colleagues at Xerox PARC, sought to commercialize a more accessible printing language after Xerox declined to pursue it broadly, leading them to leave and found Adobe Systems in December 1982 with a team including Doug Brotz, Ed Taft, and Bill Paxton. Adobe's inaugural product, PostScript, was fully released in 1984 as a device-independent page description language. A pivotal milestone came in December 1983, when Adobe licensed to Apple Computer for integration into its upcoming printer, enabling high-resolution, scalable output at 300 dpi. The launched in 1985, revolutionizing by combining with the Macintosh computer and software like Aldus PageMaker to ignite the desktop publishing revolution, which democratized professional-quality document creation. This partnership not only propelled Adobe's growth—PostScript became the industry standard for printers from multiple manufacturers—but also transformed the graphics and publishing sectors by shifting from proprietary formats to a universal, programmable description of pages. In recent years, has reflected on 's legacy through transparency initiatives. In December 2022, the company released the source code for an early version of (version 1.0) to the public via the , marking the 40th anniversary of and allowing study of its foundational implementation. Additionally, in 2021, announced the end of support for authoring with Type 1 () fonts in its products effective January 2023, encouraging migration to modern formats while preserving legacy rendering capabilities.

Language Fundamentals

Syntax and Programming Model

PostScript employs a concise syntax based on tokens that are interpreted sequentially by the language interpreter. Tokens consist of literals such as numbers (integers like 123 or reals like -3.62), strings enclosed in parentheses (e.g., "(hello)"), names prefixed with a slash (e.g., /variable), arrays in square brackets (e.g., [1 2 3]), procedures in curly braces (e.g., {add 2}), and dictionaries in double angle brackets (e.g., << /key value >>). Whitespace separates tokens, and comments begin with a and extend to the end of the line (e.g., % This is a comment). This token-based structure ensures portability across ASCII systems, with binary alternatives available for efficiency in certain contexts. The programming model is fundamentally stack-based, utilizing postfix ( where precede operators on the . For instance, the expression 2 3 add pushes 2 and then 3 onto the , after which the add operator pops both, computes their sum, and pushes the result 5 back onto the . Execution proceeds sequentially: the interpreter reads from input, pushes literals onto the , and invokes operators that manipulate the . PostScript maintains multiple , including the for data (with a typical maximum depth of 500 items), the execution for , and the for name resolution. This model enables concise expression of computations without explicit assignments in simple cases, promoting efficient interpretation. Control structures in support through , conditionals, and user-defined . include for for iterating over a numeric (e.g., 0 1 10 {pop} for executes the ten times, from 0 to 9 inclusive), repeat for fixed repetitions (e.g., 5 {dup mul} repeat squares a number five times successively), and loop for indefinite iteration until interrupted by exit. Conditionals use if to execute a if the top stack item is true (e.g., true {pop 1} if pushes 1 if the condition holds) and ifelse for branching (e.g., x 0 gt {positive} {nonpositive} ifelse selects based on whether x exceeds 0). are defined by enclosing in curly braces and associating it with a name via def (e.g., /double {2 mul} def creates a reusable doubling , invoked as 4 double exec to yield 8) or bind def for immediate binding. These structures allow modular , with executable directly from the via exec. Name resolution relies on a , a last-in-first-out collection of dictionaries that map names to objects such as variables or s. Built-in dictionaries include systemdict for core operators, userdict for user definitions, and in later levels, globaldict for shared access. When a name like /foo is encountered, the interpreter searches the dictionary from to bottom until it finds a matching key, loading the associated value onto the operand (e.g., after /x 42 def, invoking x pushes ). Dictionaries are created and manipulated with operators like begin to push a new dictionary onto the (scoping definitions) and end to pop it. The def operator stores values (e.g., /[counter](/page/Counter) 0 def), while load retrieves them explicitly. This mechanism supports dynamic scoping and avoids global namespace pollution. Error handling in PostScript interrupts execution upon detecting issues, recording details in the $error dictionary for diagnosis. Common errors include syntaxerror for malformed tokens (e.g., unmatched brackets), stackunderflow when an operator lacks operands, undefined for unresolved names, and limitcheck for exceeding stack or memory bounds. The stop operator halts execution immediately, allowing resumption via the stopped construct (e.g., {risky code} stopped {handleerror} if catches and processes stops). The handleerror procedure from errordict provides default reporting, and policies in the Policies dictionary can configure responses like ignoring certain errors. This robust system ensures reliable program termination and recovery.

Data Types and Operators

PostScript employs a dynamically typed , where objects carry their own type information, and no compile-time type checks occur; instead, types are inferred and validated at during execution. This approach allows flexible manipulation of on the operand stack, with operators performing implicit conversions when necessary, such as coercing integers to reals in arithmetic operations. The language supports a variety of and composite types, each designed to handle specific aspects of , from numeric calculations to structured storage. The core primitive data types include integers, reals, and booleans. Integers represent exact in the range from -2,147,483,648 to , typically used for counts, indices, and discrete values, and are encoded as 32-bit values. Reals are floating-point numbers providing approximate representation for fractional values, with a range of approximately ±10^38 and about 8 decimal digits of precision, encoded in 32-bit IEEE format or native floating-point; they are essential for precise computations like coordinate positioning. Booleans are simple logical values, either true or false, encoded as a single byte (1 for true, 0 for false), and serve as results from relational and logical operations to control program flow. Composite types build upon primitives to form more complex structures. Names are atomic, case-sensitive symbols prefixed with a slash (e.g., /example), limited to 127 characters, and function as unique identifiers, often serving as keys in dictionaries or references to operators; they support executable and literal attributes for deferred or immediate evaluation. Strings are mutable arrays of bytes (integers from 0 to 255), enclosed in parentheses (e.g., (hello)), with a maximum length of 65,535 characters, used to store text or binary data and manipulated element-wise. Arrays are one-dimensional, heterogeneous collections indexed from 0 (e.g., [1 2 3]), also up to 65,535 elements long, shareable across the virtual memory, and can be literal or executable. Dictionaries are unordered collections of key-value pairs, typically with name keys (e.g., << /key value >>), supporting dynamic capacity up to 65,535 entries and forming the basis for variable scoping via the dictionary stack. Procedures, or executable arrays, are defined with curly braces (e.g., {add 2}) and encapsulate code for reusable operations, executed only when invoked. Additionally, marks act as stack delimiters or placeholders (created by the mark operator), while the null type represents an empty or default object, both facilitating encapsulation of composite structures without inherent value. Operators in PostScript are built-in functions that manipulate these data types on the operand , categorized by function and invoked by name. Arithmetic operators perform numeric computations, such as add (sums two numbers), sub (subtracts), mul (multiplies), and div (divides, yielding a real), which polymorphically handle and reals with automatic type promotion—for instance, 3 4 add yields 7 as an . Stack manipulation operators manage operand flow, including dup (duplicates the top stack item), pop (discards the top item), exch (swaps the top two items), copy (duplicates multiple items), (accesses items by depth), and roll (rotates stack segments), essential for rearranging data without deep copying composites. String handling operators enable text and binary manipulation, such as (returns the byte count, e.g., (abc) length yields 3), get and put (access or modify elements by ), string (creates a new string of specified ), and concat (appends one string to another). Boolean operators support logical and relational tasks, including and, or, not (bitwise on or logical on booleans, e.g., true false or yields true), xor (), and comparators like eq (), ne (not equals), gt (greater than), and ge (greater or equal), which return booleans and underpin conditional execution. These operators reside in the systemdict and form the foundational toolkit for programs, with enforced runtime via error conditions like typecheck.

Graphics and Rendering

Imaging Model

PostScript's imaging model defines a device-independent for constructing and rendering two-dimensional graphics and text on a page, abstracting away the specifics of output devices to ensure consistent results across different hardware. This model operates through a series of geometric operations that build paths, apply transformations, and paint the results, all mapped from an abstract user space to the concrete device space of the target medium. The in distinguishes between user space and device space to achieve device . User space is an abstract, with its origin at the lower-left corner of the output page, where the positive x-axis extends rightward and the positive y-axis upward; units are measured in points, with 72 points equaling one inch. Device space, in contrast, is device-specific, with coordinates typically in pixels or dots that vary by and . The mapping from user space to device space is governed by the current (CTM), a matrix that incorporates , , , and skewing to align abstract descriptions with physical output. Affine transformations are applied through operators that modify the CTM, enabling flexible manipulation of the user space. The translate operator shifts the origin by specified amounts in x and y directions, such as tx ty translate, which prepends a translation matrix to the CTM. The scale operator adjusts the size of user space units by factors sx and sy, for example sx sy scale, effectively zooming or shrinking the coordinate system. The rotate operator turns the user space counterclockwise by an angle in degrees, as in angle rotate, which is useful for orienting paths or text. These operations combine via matrix concatenation, where each new transformation multiplies the existing CTM on the left, allowing cumulative effects like rotating and then scaling a graphic. The concat operator applies a custom 3×3 matrix to the CTM for more complex affine changes, while setmatrix replaces the CTM entirely. Paths form the core of PostScript graphics, representing movable, scalable outlines of shapes composed of straight lines and curves. Path construction begins with the moveto operator, which positions the current point at coordinates x y without drawing, initiating a new subpath; for instance, x y moveto starts at that location. The lineto operator appends a straight line segment from the current point to a new position x y, updating the current point accordingly, as in x y lineto. For curved segments, the curveto operator adds a cubic Bézier curve defined by the current point, two control points (x1 y1) (x2 y2), and an endpoint (x3 y3), allowing smooth approximations of arcs and organic shapes; it is invoked as x1 y1 x2 y2 x3 y3 curveto. Paths can be closed with closepath, connecting the current point back to the subpath's starting point, and multiple subpaths can accumulate in the current path until painted or discarded. Once constructed, paths are rendered using painting operations that apply color or patterns to their outlines or interiors. The stroke operator draws the path's boundary with the current line width, cap style, join style, and dash pattern, producing visible outlines without altering the path itself; for example, after building a path, stroke renders it as lines or curves. The fill operator paints the enclosed area of the path, using the nonzero rule to determine interior regions even for complex, self-intersecting shapes like even-odd fills via eofill. The clip operator converts the current path into a , restricting all subsequent painting operations—including strokes, fills, and text—to the region inside that path, which remains active until a new clip is set or the graphics state is restored; it does not produce visible output but serves as a . Text rendering in the imaging model treats characters as positioned glyphs from selected fonts, integrated seamlessly with path-based . Font selection begins with the findfont , which retrieves a font by name, such as /Times-Roman findfont, loading the base font metrics and outlines. The scalefont then resizes this by a factor, like size scalefont, producing a scaled version that accounts for the CTM; the resulting font is installed with setfont to become current for subsequent text. The show displays a string of text starting from the current point, advancing the position according to the font's metrics and applying the CTM for transformations; for example, (Hello) show renders the glyphs at the scaled size and orientation. Clipping paths can mask text output just as they do paths, ensuring text respects defined boundaries.

Color and Device Management

PostScript provides a robust framework for color specification and management, enabling precise control over how colors are rendered on various output devices. The supports device-dependent color models tailored to common , such as monitors and printers, as well as device-independent models for consistent color reproduction across different systems. The primary device-dependent color models include DeviceGray, DeviceRGB, and DeviceCMYK. DeviceGray uses a single component to represent shades from (0.0) to white (1.0), set via the setgray operator, and is suitable for devices where equal RGB values suffice. DeviceRGB employs three additive components—, , and —each ranging from 0.0 to 1.0, specified with setrgbcolor or sethsbcolor for hue, , and ; this model aligns directly with RGB displays but requires for devices. DeviceCMYK, a subtractive model for printing, utilizes four components—, , , and —also in the 0.0 to 1.0 range, applied through setcmykcolor, with conversions from RGB incorporating black generation and undercolor removal to optimize ink usage. For device-independent color, incorporates CIE-based models starting in LanguageLevel 2, such as CIEBasedA (one component, akin to ), CIEBasedABC (three components based on CIE XYZ), and extensions like CIEBasedDEF and CIEBasedDEFG using CIE 1976 Lab*. These are defined via dictionaries specifying parameters like , black point, and transformation matrices, then converted to device spaces using color rendering dictionaries accessed by setcolorrendering or findcolorrendering. This approach ensures perceptual uniformity, mitigating variations in device capabilities. Halftoning in simulates continuous tones on binary or limited-color devices by patterning dots, controlled through screen parameters to balance detail and smoothness. The setscreen establishes a halftone screen by specifying (lines per inch, typically 60 to 1500 for resolutions from 75 to 1400 dpi), angle (in degrees, often 0° to 90° to minimize moiré ), and a spot function procedure that determines dot shape and placement. In LanguageLevel 2 and later, halftone dictionaries (types 1 through 16) extend this via sethalftone, allowing per-colorant screens and advanced options like AccurateScreens for precise rendering. Device setup and output are managed through operators that interface with hardware parameters, ensuring proper page rendering. The showpage operator finalizes a page by transmitting the graphics state to the , executing EndPage and BeginPage procedures, erasing the page content, and resetting aspects of the graphics state for subsequent pages. It handles resolution via the HWResolution parameter (an array of x and y pixels per inch) in the device setup dictionary, adapting the imaging model to the output device's capabilities. Media handling involves PageSize for paper dimensions and policies like InputAttributes for scaling, orientation, and centering, accommodating various stock types without altering the described content. Transfer functions address nonlinearities in device response, such as gamma distortion, by remapping color values after space conversion and before halftoning. The settransfer operator applies a single procedure or array to all components for or uniform adjustments, while setcolortransfer (available with color extensions in LanguageLevel 1 and enhanced later) sets up to four distinct functions for RGB or CMYK components. These functions, often exponential (Type 2) or sampled (Type 0), enable for accurate tone reproduction, with common gamma values like 1.8 for displays or 2.2 for modern workflows. Support for spot colors and separations, introduced in higher language levels, facilitates professional printing by allowing custom inks beyond standard process colors. In LanguageLevel 2 and above, spot colors are defined using Separation color spaces via [ /Separation colorname alternativespace tinttransform ] setcolorspace, where colorname identifies the custom colorant (e.g., ), alternativespace provides a fallback (like DeviceCMYK), and tinttransform scales the tint from 0.0 to 1.0. Separations generate individual plates for each colorant, controlled by parameters such as Separations (set to true) and SeparationOrder in the output device dictionary, enabling precise ink control and overprinting via setoverprint.

Versions and Enhancements

PostScript Level 1

PostScript Level 1, released in 1984 by Adobe Systems, served as the foundational version of the page description language, primarily designed for black-and-white printing on laser printers such as the Apple . This initial implementation emphasized device-independent graphics rendering, enabling consistent output across compatible hardware without built-in support for color beyond basic grayscale tones. It introduced a stack-based that allowed for the description of complex pages through a series of operators, marking a significant advancement in by separating content creation from device-specific formatting. At its core, PostScript Level 1 supported basic path construction for , using operators such as newpath, moveto, lineto, curveto, closepath, stroke, and fill to define and render lines, curves, and filled shapes. Fonts were handled via Type 1 formats, stored as dictionaries and accessed through operators like findfont, scalefont, and setfont, which enabled scalable without rasterization until rendering. rendering was achieved with the setgray operator and DeviceGray , supporting values from 0.0 (black) to 1.0 (white) for simulating shades on bilevel devices via halftoning. These features focused on precise, high-resolution output at 300 dpi, suitable for text and simple illustrations in professional . Despite its innovations, Level 1 had notable limitations that constrained its use for more demanding applications. It lacked support for composite fonts, restricting font handling to single base fonts without the ability to combine multiple font subsets. Memory management was rudimentary, relying on (VM) with a typical of around 240,000 bytes and operators like save and restore for state preservation, but without dynamic dictionary growth or advanced caching beyond basic font limits. Image handling was uncompressed, with no built-in filters for data , leading to inefficient storage for . Key operators like stroke (for outlining paths) and fill (for area painting) were provided without advanced filtering or clipping extensions, often resulting in limitcheck errors for complex paths exceeding fixed storage capacities. Implementations of Level 1 interpreters, such as those in early laser printers, typically required 1 to 2 MB of to handle complexity, font caching, and rasterization buffers effectively. For instance, the original Apple from 1985 shipped with 1.5 MB of , sufficient for rendering full pages at standard resolutions but limiting simultaneous processing of intricate documents. These hardware constraints underscored the version's focus on efficiency for output, paving the way for subsequent enhancements in later levels.

PostScript Level 2 and 3

PostScript Level 2, released by in 1991, represented a significant from the initial version, introducing enhancements focused on improved , color handling, and support for complex international . This version optimized rendering speed through mechanisms like font caching via the setcachedevice operator and MaxFontCache parameter, which allowed interpreters to store frequently used font metrics in memory, reducing recomputation during text rendering. Additionally, user paths and forms enabled reusable graphical elements, while packed arrays and binary encoding streamlined for faster overall execution on PostScript devices. A key advancement in Level 2 was the introduction of composite fonts, particularly Type 0 fonts, CIDFonts, and CMAP resources, which facilitated efficient handling of multi-byte character encodings for Asian languages such as and . These structures supported hierarchical font organization up to five levels deep, vertical writing modes, and Unicode-based mappings, addressing the limitations of Level 1's simpler glyph-based fonts for large character sets. Image compression was bolstered with the DCTEncode and DCTDecode filters, implementing JPEG baseline encoding for grayscale and color images, achieving compression ratios up to 10:1 while preserving visual quality through configurable parameters like Columns, Rows, and QuantTables. Resource management saw major refinements in Level 2, with the save and restore operators extending to virtual memory (VM) contexts, allowing selective preservation of states, dictionaries, and local VM allocations. The gsave and grestore operators specifically managed the state stack, including clipping paths via clipsave and cliprestore, while defineresource and undefineresource handled categories like fonts and forms, preventing memory leaks in complex documents. Color capabilities expanded to include DeviceCMYK spaces, separation colors, and spot colors via the setcolor operator, enabling precise control over inks for high-fidelity printing; smoother gradients were achieved through dictionaries and multiple transfer functions with setcolortransfer. PostScript Level 3, introduced by in late 1997, built on these foundations with further optimizations for , color accuracy, and resource-constrained environments, marking the last major revision of the language with no subsequent official Level 4. It enhanced through the DeviceN , which supported multi-ink configurations beyond standard CMYK, allowing up to eight arbitrary colorants for spot colors and specialized printing processes like . This enabled more precise separation and overprint control, improving output on multi-channel devices while maintaining compatibility with prior levels. Grayscale rendering in Level 3 advanced to 4096 levels per colorant on high-resolution devices like imagesetters, compared to 256 in earlier versions, facilitating smoother blends and gradients in shaded areas without banding artifacts. New filters expanded compression options, including FlateEncode and FlateDecode for DEFLATE-based algorithms with predictor support (e.g., PNG-style predictions 10-15), alongside updates to LZW filters with UnitSize and LowBitFirst parameters for better efficiency in . Optional web-oriented filters like GIFDecode and PNGDecode were added for direct handling. Font support in Level 3 incorporated hints for fonts with outlines, leveraging existing Type 42 () embedding while adding typographic features like substitution and layout tables for enhanced across resolutions. Memory and speed improvements included simulated with banding techniques for low-RAM devices, where the interpreter processes pages in strips rather than full rasters, using setpagedevice for configuration and reducing peak memory demands during rendering. Features like idiom recognition and form sharing further accelerated common operations, such as pattern tiling and masked images, optimizing throughput on embedded printers.

Applications in Printing and Display

Printing and Desktop Publishing

The introduction of the Apple printer in 1985 marked a pivotal moment in printing technology, as it was the first commercially successful device to incorporate as its core , enabling high-quality, device-independent output directly from computers. This integration with the Apple Macintosh and software like Aldus PageMaker allowed for true (What You See Is What You Get) workflows, where designers could preview and edit layouts on screen with confidence that the printed results would match precisely, revolutionizing by democratizing professional-grade and layout for non-experts. The 's 300 dpi resolution and 's vector-based rendering capabilities made it possible to produce camera-ready pages without relying on expensive typesetters, accelerating the shift from traditional paste-up methods to digital production in and small houses. In professional printing environments, gained widespread adoption through Raster Image Processors (RIPs), specialized hardware and software that interpreted code into raster images suitable for high-volume output on imagesetters and platesetters. These RIPs, such as those developed by Linotype and Agfa, handled complex jobs involving color separation and imposition, enabling workflows to process files at speeds necessary for commercial printing presses producing thousands of sheets per hour. By standardizing output across diverse devices—from desktop lasers to industrial offset presses— eliminated the fragmentation caused by proprietary printer languages, allowing publishers to send consistent digital files to service bureaus and printers, which streamlined collaboration and reduced errors in high-stakes production runs. A key enabler of PostScript's integration into desktop publishing tools was the Encapsulated PostScript (EPS) format, developed by in the late 1980s as a self-contained subset of for embedding and illustrations. EPS files included a bounding box for precise placement and preview information, making them ideal for interchange between applications like and PageMaker, where designers could import scalable logos, diagrams, or artwork without loss of quality during printing. This format's portability ensured that graphics maintained fidelity across PostScript-compatible systems, fostering a where creative software could output files directly usable in publishing pipelines. By the , PostScript's prominence in consumer printing declined sharply due to the rise of affordable inkjet printers, which favored simpler raster-based drivers like PCL over PostScript's computational demands, and the emergence of PDF as a more secure, compact alternative for document exchange and . Inkjet technology's lower cost and ease of use for home and small office users shifted market focus away from PostScript-equipped lasers, while PDF's direct rasterization capabilities bypassed PostScript interpretation altogether, rendering it largely obsolete for everyday while preserving its legacy in sectors.

Display PostScript Systems

Display (DPS) represents an adaptation of Adobe's page description language for interactive, on-screen rendering, enabling device-independent graphics display on computer workstations. Developed in collaboration between Systems and NeXT Inc., DPS was first licensed to NeXT in September 1987 and integrated into the operating system upon its release in 1988. This extension allowed applications to generate high-fidelity visuals directly on displays, mirroring the precision of output on printers while supporting windowed environments. Licensing agreements were secured with manufacturers including , , NeXT, and Scitex, with products beginning to ship in 1989. Key features of DPS included support for dynamic event handling, window management, and real-time graphical updates, making it suitable for building responsive graphical user interfaces (GUIs). It integrated PostScript's model—encompassing , , skewing, and clipping of text, , and images—with extensions for operations and conversions in windowed contexts. This provided a "what you see is what you get" () experience, where screen content could be seamlessly directed to printers without reformatting. DPS was available both natively in and as an extension to the on Unix platforms. As a rival to , Sun Microsystems introduced (Network extensible Window System) in 1987, a -based emphasizing and extensibility for distributed graphics applications. Unlike DPS's focus on local rendering, NeWS allowed PostScript code to be executed across networked systems, supporting collaborative and remote display scenarios. However, both systems faced significant limitations due to PostScript's interpreted nature, which imposed high computational demands for real-time updates; early implementations were criticized for slowness in handling complex scenes, often requiring optimized coding techniques like encoding to mitigate overhead. Adobe contested claims of inherent slowness, attributing performance issues to improper usage rather than design flaws. By the 1990s, the resource-intensive requirements of contributed to its obsolescence, as hardware limitations made interactive performance inadequate for evolving GUI demands. It was gradually phased out in favor of more efficient native graphics APIs, such as , which provided faster rendering through and simpler state-based models without full script interpretation. In the case of NeXT's lineage, was replaced by Apple's framework in Mac OS X, shifting to a PDF-based imaging model for 2D graphics.

Fonts and Typography

Font Formats and Embedding

PostScript employs Type 1 fonts as its primary font format, which are scalable outline fonts defined using mathematical descriptions based on cubic Bézier curves to represent glyph shapes. These fonts were introduced with PostScript LanguageLevel 1 in , enabling high-quality, device-independent by allowing glyphs to be rendered at any resolution without pixelation. The format consists of a PostScript font program that includes a with essential entries such as FontMatrix for , FontBBox for bounding boxes, and Encoding for character-to-glyph mapping. Central to Type 1 fonts are charstrings, which provide a compact encoding for data, minimizing file size while preserving the precision of outline paths. Each charstring represents a single 's outline as a sequence of operators and operands that instruct the interpreter to draw line segments, curves, and hints, often encrypted for proprietary protection. This encoding supports subroutines for repeated path elements, further optimizing storage, and integrates seamlessly with PostScript's for efficient rendering. Font embedding in PostScript documents ensures consistent rendering by incorporating font definitions directly into the file, typically as named resources in the interpreter's (VM). Fonts are downloaded using operators like findfont to locate or load them, followed by definefont to install the dictionary, allowing the entire font program or specific instances to be included without relying on external resources. To avoid duplication and reduce file size, subsetting mechanisms enable incremental font construction, where only required glyphs are added via addglyph, creating partial definitions that reference the base font while excluding unused characters. This approach leverages resource categories and unique identifiers like UniqueID to prevent redundant loading, conserving VM allocation—typically 20,000 to 30,000 bytes per Type 1 font. PostScript Level 2 and later introduced Multiple Master fonts as an extension of the Type 1 format, allowing a single font program to generate variable styles along multiple design axes, such as , width, and optical . These fonts integrate 2 to 16 master designs, each representing extremes of the axes, with algorithms producing intermediate instances on demand, supporting up to four axes for flexible variations like condensed bold or expanded light. coordinates, ranging from 1 to 9999, define axis positions, ensuring compatibility across masters for smooth transitions in outlines. Over time, PostScript's font technology evolved alongside competing standards, with the introduction of by Apple and in 1991 offering quadratic Bézier curves and broader platform support, followed by in 1996 as a joint Adobe- format that unified and outlines. While retained its cubic Bézier outline format within 's Compact Font Format (CFF) subset, Adobe discontinued authoring support for Type 1 fonts in January 2023, prioritizing for its enhanced features like substitution and cross-platform compatibility. This shift reflects the standardization of as the dominant format, though legacy systems continue to utilize Type 1 outlines for printing and rendering.

Hinting and Scalability

PostScript's use of vector outlines in its font representations enables infinite scalability without or loss of quality, in contrast to fonts that degrade when enlarged or reduced. This device-independent approach allows glyphs defined by mathematical paths—such as Bézier curves—to be rendered at any resolution by recalculating coordinates, ensuring sharp output across diverse devices from low-resolution printers to high-definition displays. Hinting in Type 1 fonts consists of embedded instructions that guide the rasterizer to align stems (the vertical or horizontal strokes in characters) and adjust glyph shapes for optimal legibility on low-resolution devices, such as 300 dpi printers. These instructions, specified in the font's Private dictionary (e.g., BlueValues for alignment zones like baselines and x-heights) and CharStrings (e.g., hstem for horizontal stems and vstem for vertical stems), define zones and widths to prevent distortion, such as ensuring consistent stem thickness across glyphs like the legs of 'n' or the sides of 'o'. By snapping outlines to pixel grids, hinting maintains the intended design intent at small sizes where aliasing would otherwise blur details. PostScript Level 2 introduced advanced hinting via hstem3 and vstem3 operators, which define three equally spaced stem zones for improved rendering of complex glyphs at small sizes. For instance, hstem3 specifies coordinates for three horizontal stems (e.g., in the letter 'm'), allowing the interpreter to uniformly adjust their positions and widths relative to alignment zones, reducing irregularities in counters and serifs on low-resolution outputs. This enhancement builds on basic stem hints by handling multiple features more efficiently, contributing to crisper text in applications. The integration of hinting and scalability in significantly advanced in by enabling high-quality, legible text at arbitrary sizes and resolutions, which was essential for the rise of in the and . This capability allowed designers to produce professional-grade documents without relying on high-end equipment, transforming workflows in magazines, books, and . In 2023, Adobe ended support for Type 1 fonts—including their hinting mechanisms—in its products, treating them as unavailable and favoring formats with more modern hinting options like those in CFF2 outlines. This deprecation reflects the shift toward cross-platform compatibility and reduced maintenance for legacy features.

Implementations and Tools

Official Adobe Implementations

Adobe's official implementations of primarily revolve around proprietary interpreters and raster image processing (RIP) technologies integrated into hardware and software ecosystems. The foundational implementation was the interpreter embedded in laser printers, beginning with the Apple series introduced in 1985, which featured a built-in Adobe interpreter capable of rendering complex page descriptions directly on the device. This interpreter, licensed by to original equipment manufacturers (OEMs), enabled high-resolution output for by processing code into raster images for printing. Subsequent Adobe-certified printers, such as those from and other vendors, incorporated similar embedded interpreters to ensure compliance with standards, allowing for and font rendering across millions of devices. A key software component in Adobe's PostScript ecosystem is Acrobat Distiller, a tool designed to convert PostScript files (.ps and .eps) into PDF format, providing advanced control over compression, , and security during the distillation process. Introduced as part of , Distiller processes PostScript streams to generate reliable, compact PDFs suitable for archival and cross-platform distribution, though its role has evolved with the dominance of native PDF workflows. For server-side applications, Adobe developed RIP technologies such as the Adobe Embedded Print Engine, a device-agnostic RIP that natively handles PostScript and PDF files for consistent high-quality output in professional printing environments. Earlier server products, including Adobe's dedicated RIP solutions for high-end , supported but were discontinued as PDF supplanted PostScript in many workflows by the early . Adobe maintains strict control over PostScript's core implementation through a licensing model that requires OEMs to integrate certified interpreters, ensuring and adherence to the language's specifications across devices. This process validates that printers and systems meet Adobe's and feature requirements, with licensed to over 20 million devices historically. As of 2025, official Adobe implementations are largely confined to enterprise-level printers and specialized imaging systems, where they continue to support legacy workflows alongside PDF processing, though Adobe PDF has become the preferred format for most office and consumer printing. The Adobe SDK remains available for developers targeting real-time and platforms in these high-end applications.

Third-Party Interpreters

Third-party interpreters for have played a crucial role in extending the language's adoption beyond Adobe's implementations, particularly in , embedded printing systems, and high-performance raster image processing () environments. These interpreters enable compatibility with PostScript files in diverse applications, from document conversion tools to printer , often supporting Levels 1 through 3 while adding features like PDF handling or optimized rendering for specific hardware. Unlike Adobe's interpreters, third-party versions are typically licensed for commercial use or offered as , fostering widespread integration in printers, multifunction devices, and creative workflows. The most prominent open-source PostScript interpreter is , initially developed by in 1988 as a free implementation compatible with Level 1 and later extended to support Levels 2 and 3 as well as PDF. Maintained by Artifex Software since 1992, provides a for executing PostScript code, rendering output to raster formats, , or directly to printers, and has become a standard for converting PostScript to PDF in tools like CUPS printing systems. Its dual-licensing model allows free use for non-commercial purposes and commercial licensing for proprietary applications, with over 30 years of development ensuring robust handling of complex PostScript features such as and font embedding. 's graphics library, included in the distribution, further supports integration into applications for tasks like image processing and document viewing. In commercial printing and prepress sectors, Global Graphics Software offers advanced third-party interpreters through its Harlequin RIP and products, both designed for high-volume production environments. The Harlequin RIP, first introduced in the early , features a native 3 interpreter alongside dedicated engines for PDF and , enabling parallel processing of mixed-language jobs with optimizations for speed and accuracy in color reproduction and trapping. Widely licensed to OEMs for integration into digital presses and proofers, Harlequin supports extensions beyond standard , such as and GPU-accelerated rendering in recent versions, making it suitable for large-scale workflows in offset and . Complementing Harlequin, is Global Graphics' embedded 3-compatible interpreter, optimized for wide-format and systems since its launch in the late 1990s. processes and files directly into device-specific rasters, with features like high-resolution previewing and layout adjustments, and has been integrated into RIP engines for brands like and EDICOLOR. Its lightweight architecture allows deployment in resource-constrained environments, achieving up to 500% speed improvements in PDF/ handling through algorithmic enhancements in version 3.0 and later. For embedded applications in consumer and office printers, the IPS PS3 interpreter, developed by (formerly ), provides 3 compatibility as . IPS PS3 is standard in multifunction peripherals from manufacturers like and Brother, handling complex jobs with support for 35-base fonts and extensions for color and graphics. Its compact design suits low-cost hardware, enabling affordable printing without full licensing costs.

Relation to PDF and Modern Legacy

Evolution to PDF

In the late 1980s, Adobe recognized limitations in PostScript for electronic document distribution, as its programmable nature required a full interpreter for rendering, making it less ideal for self-contained, portable files. To address this, Adobe co-founder initiated the Camelot Project in the summer of 1990, outlining a vision for a new format that would capture printed documents in a digital form suitable for exchange across platforms without altering appearance. This project aimed to develop a subset of PostScript focused on fixed-layout representation, enabling the creation of that could be viewed and printed consistently regardless of the originating system. The Camelot Project evolved into the Portable Document Format (PDF), with version 1.0 released in June 1993 alongside the debut of software. Unlike , which operates as a full programming language with an execution stack allowing dynamic content generation and complex operations, PDF is a static, non-programmable format that describes a fixed document layout using a subset of PostScript's imaging model. It eliminates PostScript's Turing-complete capabilities to prioritize security and predictability, instead employing a structured object-based architecture with content streams, resources, and compression techniques like FlateDecode for efficient storage. This design ensures documents are self-contained, with embedded fonts, images, and metadata, focusing on device-independent rendering without the need for runtime computation. PDF offered several advantages over for document sharing and viewing. Files were typically smaller due to built-in of repeated elements and object streams, reducing transmission times and storage needs compared to PostScript's verbose, stack-based descriptions. Rendering was faster, as PDF documents could be displayed directly without executing a full PostScript interpreter, relying instead on optimized viewers like Acrobat Reader that interpret the pre-defined layout. Additionally, no specialized interpreter was required for basic viewing, making it accessible for end-users beyond printing workflows. In 2008, Adobe submitted its PDF 1.7 specification to the (ISO), which adopted it as ISO 32000-1:2008, formalizing PDF as an open for interchange. This standardization ensured and future-proofing, independent of Adobe's proprietary control, while preserving compatibility with -derived elements.

Current Usage and Deprecation

In 2025, Adobe persists in niche applications within professional and , particularly in high-end digital presses where its device-independent rendering ensures precise output for complex documents. The Adobe PDF Print , which incorporates capabilities, powers over 200,000 commercial presses and proofers worldwide, enabling seamless integration with tools like and for high-quality production. Legacy systems in publishing continue to rely on for in raster image processors (RIPs), especially in environments handling intricate and . Additionally, the (EPS) format remains a staple in software for scalable illustrations destined for , supporting high-resolution output without quality loss in applications like . Deprecation trends have accelerated PostScript's decline in mainstream workflows, driven by the industry's shift to PDF/X standards for print production. PDF/X, an ISO-standardized subset of PDF introduced in the late , addressed PostScript's limitations such as non-determinism and device dependency, making it the preferred format for reliable color-managed exchanges between designers and printers by the early . Adobe's discontinuation of support for Type 1 in January 2023 further impacts workflows, as these fonts can no longer be authored or edited in major Adobe applications like Photoshop (version 23.0+), (27.3+), and InDesign (18.2+), though embedded instances in existing PDF or files continue to display correctly. This cutoff has prompted migrations to fonts, disrupting legacy PostScript-based pipelines in publishing and design. Modern alternatives have largely supplanted in consumer and mid-tier printing. Printer Control Language (PCL), particularly PCL 6, dominates office and home printers due to its efficiency, faster processing, and lower resource demands compared to 's more computationally intensive, device-independent approach. In professional RIPs, native PDF rendering has become standard, bypassing interpretation for direct handling of PDF files in digital presses. endures in specific contexts, such as workflows compliant with ISO 12647 or certification, where its support for profiles ensures accurate reproduction, though PDF-based systems are increasingly favored. Looking ahead, faces minimal new development, with maintaining the SDK primarily for in devices and legacy hardware rather than innovation. The , a next-generation , emphasizes PDF processing over pure , signaling a continued pivot to PDF as the enduring successor in print ecosystems.

References

  1. [1]
    Adobe PostScript
    exactly as intended. It quickly became the technology of choice for high-quality output.
  2. [2]
    PostScript: A Digital Printing Press - CHM - Computer History Museum
    Dec 1, 2022 · John Warnock championed the development of PDF in the 1990s, transforming PostScript into a technology that was safer and easier to use as the ...
  3. [3]
    The history of Adobe PostScript - Prepressure
    One of the brilliant engineers working at Xerox was John Warnock. He developed a language called 'Interpress' that could be used to control Xerox laser printers ...Postscript Takes Off · 1991 -- Postscript Level 2 · 1998 -- Postscript 3
  4. [4]
    [PDF] PostScript Language Reference, third edition - Adobe
    The description is high-level and device-independent. The page description and interactive graphics capabilities of the PostScript lan- guage include the ...
  5. [5]
    Inventing Postscript, the Tech That Took the Pain out of Printing
    Apr 23, 2022 · It first appeared in the Apple LaserWriter, which was introduced in January of 1985. Today it has been adopted by 23 manufacturers of laser ...
  6. [6]
  7. [7]
    Computer History Museum Makes Adobe PostScript's Source Code ...
    Dec 1, 2022 · Launched in 1984, PostScript was Adobe's first product, and it became an essential ingredient in the desktop publishing industry, accelerating ...Missing: initial | Show results with:initial
  8. [8]
    PostScript Type 1 fonts end of support - Adobe Help Center
    Jul 11, 2023 · Type 1 fonts were introduced by Adobe in 1984 for use with its PostScript page description language, and became widely used with the spread ...
  9. [9]
    PostScript - PrintWiki
    Adobe PostScript (PS) is a device independent Page Description Language (PDL) released by Adobe Systems in 1984.
  10. [10]
    [PDF] Adobe Type 1 Font Format - GitHub Pages
    A Type 1 font program consists of a clear text (ASCII) portion, and an encoded and encrypted portion. • The PostScript language commands used in a Type 1 font ...Missing: core hardware
  11. [11]
    LaserWriter: Technical Specifications - Apple Support
    LaserWriter: Technical Specifications ; ROM Size: 0.5MB. RAM Slots: 1 , n/a. Min - Max RAM: 1.5MB - 1.5MB ; Pages Per Min: 8 ; Introduced: 3/1/1985. Discontinued:.
  12. [12]
    [PDF] A First Guide to PostScript
    Apr 20, 1997 · Fonts in PostScript are actually dictionaries. A font dictionary contains several operators. Most of these operators simply set up the path for ...
  13. [13]
    LaserWriter (original) - Apple Wiki | Fandom
    LaserWriter (original) ; List price. US$ 6995 (1985) US$ 5995 (1986) ; CPU. 11.16 MHz Motorola 68000 ; RAM. 1.5 MB ; Networking. LocalTalk ; Ports. RS-422 serial (1x ...Description · Discontinuation · References
  14. [14]
    Differences Between Adobe PostScript Levels 1, 2, and 3 - ThoughtCo
    Apr 28, 2025 · Adobe PostScript Level 1 was the original and basic version with very simple features. · PostScript Level 2 improved speed, color printing, and ...
  15. [15]
    PostScript Level 3 Fonts and General PS Level 3 Information
    This technology also helps high-resolution devices such as imagesetters print 4,096 shades of gray in each colorant to produce images with smoother blends.
  16. [16]
    OpenType fonts features | Adobe Type
    The OpenType format is an extension of the TrueType SFNT format that also can support Adobe® PostScript® font data and new typographic features. OpenType ...
  17. [17]
    [PDF] THE IMPLICATION$ OF LARGE FORMAT IMAGESETTERS ON THE ...
    Perfectly good PostScript code that RIP's correctly are one interpreter ... the one color prepress. Color, on the other hand ... Ray, W., Imposing Impositions, High ...
  18. [18]
    What are EPS files and how do you open them? | Adobe
    History of the EPS file. Adobe created Encapsulated PostScript in the late 1980s, making it an early graphic file choice for the design industry. The format ...
  19. [19]
    [PDF] Adobe Annual Report 1988
    The first color Postscript printer was introduced by QMS in 1988. Now artists, designers and publishers can use graphics software like Adobe Illustrator. 88 to ...
  20. [20]
    Chapter 2 DPS Features and Enhancements
    The Display PostScript system displays graphical information on the computer screen with the same PostScript language imaging model that is a standard for ...Missing: demands | Show results with:demands
  21. [21]
    [PDF] NeWS™ 1.1· Manual - Bitsavers.org
    Jan 15, 1988 · POSTSCRIPT is a registered trademark of Adobe Systems Inc. Adobe owns copyrights related to the POSTSCRIPT language and the POSTSCRIPT.
  22. [22]
    Display PostScript
    Display PostScript is an extension of Adobe's PostScript page-description language (PDL) and is designed as an imaging model for graphics displays.Missing: OpenGL | Show results with:OpenGL<|control11|><|separator|>
  23. [23]
    Under the Desktop: Prospecting for Quartz in Mac OS X
    Aug 22, 2002 · Later, NeXT licensed Adobe's Display PostScript interpreter for its OS. This vector-based architecture provided users with a more accurate ...
  24. [24]
    [PDF] The Design of the OpenGL Graphics Interface
    As with other X extensions (two examples are Display PostScript and PEX), there is a specific network protocol for OpenGL rendering commands encapsulated in the ...
  25. [25]
    [PDF] Designing Multiple Master Typefaces - GitHub Pages
    Dec 22, 1997 · Type 1 is the default font format used in the PostScript page description language (see the. Adobe™ Type 1 Font Format Specification). Page ...
  26. [26]
    Raster vs. vector: What are the differences? - Adobe
    With vector image files, resolution is not an issue. You can resize, rescale, and reshape vectors infinitely without losing any image quality. Vector files ...
  27. [27]
    [PDF] Adobe Type 1 Font Format - GitHub Pages
    The complete specification for the PostScript language, including information on how font programs are organized, appears in the. PostScript Language Reference ...
  28. [28]
    Finding common font problems automagically - FontForge
    Almost stem3 hint¶. PostScript has a special hint operator (hstem3 and vstem3) which is designed to hint the stems of things like “m” where there are three ...
  29. [29]
    How PostScript Kickstarted Desktop Publishing - IEEE Spectrum
    Dec 8, 2022 · ... John Warnock discusses key early actions in establishing AdobeComputer History Museum. The Team that Created PostScript. In December 1982 ...
  30. [30]
    PostScript Format Family - The Library of Congress
    Apr 29, 2022 · Soon after the release of the PostScript language by Adobe Systems Incorporated in 1984, Steve Jobs of Apple persuaded Adobe to adapt it to ...
  31. [31]
    Postscript is gone, long live TrueType and OpenType - AppleInsider
    Nov 8, 2023 · In 2023 Apple removed nearly all support for PostScript from macOS 14 Sonoma and iOS. The Preview app no longer has the ability to open or ...
  32. [32]
    Acrobat Distiller overview - Adobe Help Center
    Sep 23, 2025 · Acrobat Distiller is a PDF tool that converts PostScript files to PDF documents. It offers advanced control over the PDF creation, lets you to ...
  33. [33]
    Creating PDFs with Acrobat Distiller - Adobe Help Center
    Dec 21, 2023 · Distiller lets you queue PostScript files that you create in authoring applications and then monitor them throughout the PDF conversion process.
  34. [34]
    Adobe Embedded Print Engine
    A next-generation print RIP that natively processes PostScript and PDF files. Equip printers with the ability to handle PDFs from a variety of desktop, ...
  35. [35]
    Ghostscript
    Ghostscript is the #1 PDL conversion, compression and interpreter tool available, offering native rendering of PDF, PostScript, PCL, XPS, raster and vector ...Missing: third- | Show results with:third-
  36. [36]
    Native Postscript And PDF? Harlequin Answers - WhatTheyThink
    Jul 7, 2008 · Basically there are three interpreters in one RIP, one for each of PostScript, PDF and XPS. The RIP automatically recognizes which file ...
  37. [37]
    Global Graphics Launches Version 3.0 Jaws Rip - WhatTheyThink
    Key to the success of Onyx has been the use of the Jaws RIP engine which we use for both PostScript and PDF file processing. Our customers ...
  38. [38]
    Global Graphics boosts Jaws RIP speed by 500% - Printweek
    Sep 20, 2012 · Global Graphics has claimed an average speed improvement of up to 500% in the latest version of its wide-format RIP, Jaws 3.0, ...<|separator|>
  39. [39]
    IPS-PS3 Datasheet(PDF) - Zoran Corporation - ALLDATASHEET.COM
    Part #: IPS-PS3. Download. File Size: 79Kbytes. Page: 2 Pages. Description: PostScript 3 Interpreter. Manufacturer: Zoran Corporation.
  40. [40]
    Brother DCP-7040 Printer | The FreeBSD Forums
    Dec 15, 2017 · ... interpreters are widely used in printers and multifunction peripherals (MFPs). For example, CSR plc's IPS PS3[2] interpreter, formerly known ...
  41. [41]
    How to render PostScript data - Prepressure
    The most important ones are created by Global Graphics. Their RIP is called Harlequin and they also sell an alternative called the Jaws RIP. Ghostscript is ...
  42. [42]
    Evolution of the Digital Document: Celebrating Adobe Acrobat's 25th ...
    Jun 14, 2018 · John Warnock actually came up with the idea for PDF several years before he wrote the now-famous “Camelot” paper. In 1985, he created a new ...
  43. [43]
    PDF_1_3, PDF Versions 1.0-1.3 - Library of Congress
    Jul 29, 2022 · Documentation for PDF version 1.0 was published in June 1993 in association with the release of Acrobat 1.0. PDF version 1.1 was published ...
  44. [44]
    [PDF] Portable document format — Part 1: PDF 1.7 - Adobe Open Source
    Jul 1, 2008 · At the core of PDF is an advanced imaging model derived from the PostScript® page description language. ... Unlike Postscript, which is a.
  45. [45]
    PDF versus other file formats - Prepressure
    As such, PDF resembles a database, rather than a programming language. The main advantages of PDF over PostScript are: PDF files tend to be smaller because ...Pdf Versus Postscript · Pdf Versus Html · Pdf Versus Xml
  46. [46]
    ISO 32000-1:2008 - Portable document format
    In stockISO 32000-1:2008 specifies a digital form for representing electronic documents to enable users to exchange and view electronic documents independent of the ...
  47. [47]
    EPS File Format: Professional Vector Graphics for Print Design
    Feb 12, 2025 · EPS, or Encapsulated PostScript, is a vector file format widely used in professional printing and graphic design.
  48. [48]
    Twenty Years of PDF/X – Part II
    Mar 23, 2022 · In this part of 'Twenty Years of PDF/X', Dov Isaacs explores how PDF/X tamed PostScript and its impact on the publishing industry.
  49. [49]
    What are the Differences of PCL (Printer Control Language) vs PS ...
    Mar 30, 2021 · Unlike PCL, PostScript is device independent. · Specifically, the graphic objects will be consistent and in some cases of higher quality than PCL ...
  50. [50]
    Color management | HP® Support
    In order to print accurate colors, it is necessary to convert the color ... This kind of color management is done when you are using the PostScript or PDF driver.