PostScript
PostScript is a page description language and dynamically typed, stack-based programming language. It is most commonly used in the electronic publishing and desktop publishing realm, but as a Turing complete programming language, it can be used for many other purposes as well. PostScript was created at Adobe Systems by John Warnock, Charles Geschke, Doug Brotz, Ed Taft and Bill Paxton from 1982 to 1984. The most recent version, PostScript 3, was released in 1997.
History
The concepts of the PostScript language were seeded in 1976 by John Gaffney at Evans & Sutherland, a computer graphics company. At that time, Gaffney and John Warnock were developing an interpreter for a large three-dimensional graphics database of New York Harbor.Concurrently, researchers at Xerox PARC had developed the first laser printer and had recognized the need for a standard means of defining page images. In 1975–76 Bob Sproull and William Newman developed the Press format, which was eventually used in the Xerox Star system to drive laser printers. But Press, a data format rather than a language, lacked flexibility, and PARC mounted the Interpress effort to create a successor.
In 1978, John Gaffney and Martin Newell then at Xerox PARC wrote J & M or JaM which was used for VLSI design and the investigation of type and graphics printing. This work later evolved and expanded into the Interpress language.
Warnock left with Chuck Geschke and founded Adobe Systems in December 1982. They, together with Doug Brotz, Ed Taft and Bill Paxton created a simpler language, similar to Interpress, called PostScript, which went on the market in 1984.
Meanwhile, in the spring of 1983, Steve Jobs came to visit Adobe and was dazzled by PostScript's potential, especially for the new Macintosh computer he was developing at Apple. To John Sculley's frustration, Jobs licensed the PostScript technology from Adobe by offering a $1.5 million advance against PostScript royalties, plus $2.5 million in exchange for 20 percent of Adobe shares. During a series of meetings in 1983, Jobs also repeatedly offered for Apple to buy Adobe outright, but the founders kept turning him down. In December 1983, the two companies finally signed off on the PostScript licensing deal, and Adobe had to shift focus immediately from high-end, high-resolution printing devices to the consumer-oriented Apple LaserWriter laser printer.
At that time, the 300-dpi Canon laser printing engine to be used in LaserWriters was seen as good enough only for proof printing, but Jobs presented Adobe with the challenge of making PostScript render high-quality output to such a low-resolution device. In response, Warnock and Brotz solved the so-called "appearance problem" of making the stem width of letters scale properly so that they look good at all resolutions. Their breakthrough was so important that Adobe never patented the technology, in order to keep its details concealed as a trade secret. Many years later, Warnock revealed the trade secret in a 2010 lecture, and in 2022, Adobe publicly released an early version of PostScript's original source code from February 1984. Paxton worked on several other related improvements, such as font hinting. This work occurred after February 1984, meaning that Paxton's improvements were not included in the source code release and are still protected as trade secrets. Adobe was also responsible for porting PostScript to the Canon's Motorola 68000 chip.
Apple and Adobe announced the LaserWriter at Apple's annual stockholder meeting on January 23, 1985. It was the first printer to ship with PostScript, sparking the desktop publishing revolution in the mid-1980s. The original PostScript royalty was five percent of the list price for each laser printer sold, which was $350 of the original LaserWriter list price of $6,995, and such royalties provided nearly all of Adobe's income during its early years. The combination of technical merits and widespread availability made PostScript the language of choice for graphical output for printing applications. An interpreter for the PostScript language was a common component of laser printers during the 1980s and 1990s.
However, the cost of implementation was high; computers output raw PS code that would be interpreted by the printer into a raster image at the printer's natural resolution. This required high-performance microprocessors and ample memory. The LaserWriter used a 12 MHz Motorola 68000, making it faster than any of the Macintosh computers to which it was attached. When the laser printer engines themselves cost over a thousand dollars, the added cost of PS was marginal. But, as printer mechanisms fell in price, the cost of implementing PS became too great a fraction of overall printer cost. In addition, with desktop computers becoming more powerful during the 1990s than their attached printers, it no longer made sense to offload the rasterization work onto the resource-constrained printer. By 2001, few low-end printer models came with onboard support for PostScript, largely due to growing competition from much cheaper non-PostScript inkjet printers, and new software-based methods to render PostScript images on computers, making them suitable for any printer. PDF, a descendant of PostScript, provides one such method, and has largely replaced PostScript as the de facto standard for electronic document distribution.
On high-end printers, PostScript processors remain common, and their use can dramatically reduce the CPU work involved in printing documents, transferring the work of rendering PostScript images from the computer to the printer.
PostScript Level 1
The first version of the PostScript language was released to the market in 1984. The qualifier Level 1 was added when Level 2 was introduced.PostScript Level 2
PostScript Level 2 was introduced in 1991, and included several improvements: improved speed and reliability, support for in-Raster Image Processing separations, image decompression, support for composite fonts, and the form mechanism for caching reusable content.PostScript 3
PostScript 3 came at the end of 1997, and along with many new dictionary-based versions of older operators, introduced better color handling and new filters.PostScript 3 was significant in terms of replacing the existing proprietary color electronic prepress systems, then widely used for magazine production, through the introduction of smooth shading operations with up to 4096 shades of grey, as well as DeviceN, a color space that allowed the addition of additional ink colors into composite color pages.
Use in printing
Before PostScript
Prior to the introduction of Interpress and PostScript, printers were designed to print character output given the text—typically in ASCII—as input. There were a number of technologies for this task, but most shared the property that the glyphs were physically difficult to change, as they were stamped onto typewriter keys, bands of metal, or optical plates.This changed to some degree with the increasing popularity of dot matrix printers. The characters on these systems were drawn as a series of dots, as defined by a font table inside the printer. As they grew in sophistication, dot matrix printers started including several built-in fonts from which the user could select, and some models allowed users to upload their own custom glyphs into the printer.
Dot matrix printers also introduced the ability to print raster graphics. The graphics were interpreted by the computer and sent as a series of dots to the printer using a series of escape sequences. These printer control languages varied from printer to printer, requiring program authors to create numerous drivers.
Vector graphics printing was left to special-purpose devices, called plotters. Almost all plotters shared a common command language, HPGL, but were of limited use for anything other than printing graphics. In addition, they tended to be expensive and slow, and thus rare.
PostScript printing
Laser printers combine the best features of both printers and plotters. Like plotters, laser printers offer high-quality line art, and like dot-matrix printers, they are able to generate pages of text and raster graphics. Unlike either printers or plotters, a laser printer makes it possible to position high-quality graphics and text on the same page. PostScript made it possible to fully exploit these characteristics by offering a single control language that could be used on any brand of printer.PostScript went beyond the typical printer control language and was a complete programming language of its own. Many applications can transform a document into a PostScript program, the execution of which results in the original document. This program can be sent to an interpreter in a printer, which results in a printed document, or to one inside another application, which will display the document on-screen. Since the document-program is the same regardless of its destination, it is called device-independent.
PostScript is noteworthy for implementing on-the-fly rasterization in which everything, even text, is specified in terms of straight lines and cubic Bézier curves, which allows arbitrary scaling, rotating and other transformations. When the PostScript program is interpreted, the interpreter converts these instructions into the dots needed to form the output. For this reason, PostScript interpreters are occasionally called PostScript raster image processors, or RIPs.
Font handling
Almost as complex as PostScript itself is its handling of fonts. The font system uses the PS graphics primitives to draw glyphs as curves, which can then be rendered at any resolution. A number of typographic issues had to be considered with this approach.One issue is that fonts do not scale linearly at small sizes and features of the glyphs will become proportionally too large or small and start to look displeasing. PostScript avoided this problem with the inclusion of font hinting, in which additional information is provided in horizontal or vertical bands to help identify the features in each letter that are important for the rasterizer to maintain. The result was significantly better-looking fonts even at low resolution. It had formerly been believed that hand-tuned bitmap fonts were required for this task.
At the time, the technology for including these hints in fonts was carefully guarded, and the hinted fonts were compressed and encrypted into what Adobe called a Type 1 Font. Type 1 was effectively a simplification of the PS system to store outline information only, as opposed to being a complete language. Adobe would then sell licenses to the Type 1 technology to those wanting to add hints to their own fonts. Those who did not license the technology were left with the Type 3 Font. Type 3 fonts allowed for all the sophistication of the PostScript language, but without the standardized approach to hinting.
The Type 2 font format was designed to be used with Compact Font Format charstrings, and was implemented to reduce the overall font file size. The CFF/Type2 format later became the basis for handling PostScript outlines in OpenType fonts.
The CID-keyed font format was also designed, to solve the problems in the OCF/Type 0 fonts, for addressing the complex Asian-language encoding and very large character set issues. The CID-keyed font format can be used with the Type 1 font format for standard CID-keyed fonts, or Type 2 for CID-keyed OpenType fonts.
To compete with Adobe's system, Apple designed their own system, TrueType, around 1991. Immediately following the announcement of TrueType, Adobe published the specification for the Type 1 font format. Retail tools such as Altsys Fontographer added the ability to create Type 1 fonts. Since then, many free Type 1 fonts have been released; for instance, the fonts used with the TeX typesetting system are available in this format.
In the early 1990s, there were several other systems for storing outline-based fonts, developed by Bitstream and Metafont for instance, but none included a general-purpose printing solution and they were therefore not widely used.
In the late 1990s, Adobe joined Microsoft in developing OpenType, essentially a functional superset of the Type 1 and TrueType formats. When printed to a PostScript output device, the unneeded parts of the OpenType font are omitted, and what is sent to the device by the driver is the same as it would be for a TrueType or Type 1 font, depending on which kind of outlines were present in the OpenType font.
Adobe supported Type 1 fonts in its products until January 2023, when it fully removed support in favor of OpenType fonts.