[comp.lang.postscript] PostScript Level 2 Q & A

orthlieb@adobe.COM (Carl Orthlieb) (10/25/90)

PostScript(R) LEVEL 2 -- QUESTIONS & ANSWERS
============================================

PostScript Level 2, the first major new release of PostScript 
software since its introduction, is a unification and enhancement 
of the PostScript language based on the needs voiced by users of 
PostScript printers and Display PostScript(R) workstations, 
Independent Software Vendors (ISVs), and Original Equipment 
Manufacturers (OEMs). PostScript Level 2 contains a number of 
performance enhancements, is easier for software developers to use, 
and contains important new functionality such as device-independent 
color, forms handling and patterns support.


*** What is PostScript Level 2?

First, let's look at the current state of the PostScript language. 
The baseline of the language is defined by the PostScript Language 
Reference Manual, also known as the "red book." The red book defines 
the basic PostScript language imaging model functionality for line 
art, sampled images, text, and the RGB color model. Since its 
introduction in 1985, the PostScript language has been considerably 
extended for greater programming power, efficiency, and 
flexibility. 

Typically, these language extensions have been designed to adapt the 
PostScript language to new imaging technologies or system 
environments. While these extensions have introduced new 
functionality and flexibility to the language, the basic imaging 
model remains unchanged. The principal language extensions are:

+  Color:  The color extensions provide a cyan-magenta-yellow-black 
(CMYK) color model for specifying colors and a colorimage operator 
for painting sampled images. They also include additional rendering 
controls for color output devices.

+  Composite fonts:  The composite font extensions enhance the basic 
font facility to support character sets that are very large or have 
complex requirements for encoding or character positioning.

+  Display PostScript:  The Display PostScript system enables 
workstation applications to use the PostScript language and imaging 
model for managing the appearance of the display. Some of the 
extensions are specialized to interactive display applications, 
such as concurrent execution and support for windowing systems. 
Other extensions are more general and are intended to improve 
performance or programming convenience.

When Adobe decided to add additional functionality to the PostScript 
language, we did not want to add the functionality in a piecemeal 
fashion and have it exist in some devices but not others.  This makes 
life difficult for independent software vendors (ISVs) who write 
PostScript language programs. PostScript Level 2 integrates the 
original PostScript language, all previous language extensions, and 
new language features into the core PostScript language imaging 
model. PostScript Level 2 ensures application developers consistent 
functionality across all Level 2 devices. When an application images 
to a Level 2 device, it can be assured that a wide range of features 
will exist on that device and that these features can be exploited 
to their fullest for increased performance and functionality.


*** What are the features of PostScript Level 2?

PostScript Level 2 consolidates all of the current language 
extensions into one unified language and adds many new features. It 
is also upward compatible with the current generation of PostScript 
devices. Here is a brief list of what comprises PostScript Level 2:

	+ Existing PostScript language
	+ Color extensions
	+ Composite font extensions
	+ Display PostScript extensions
	+ Improved memory management
	+ CIE-based device-independent color
	+ Improved printer hardware features support
	+ Data and image compression and decompression
	+ Optimized graphics and text operators from the 
	  Display PostScript system
	+ New halftoning algorithms
	+ Forms support
	+ Patterns support
	+ Binary language encodings
	+ ATM font rendering technology


*** What are the color extensions to the PostScript language?

The color extensions were added to the language in 1988 to provide 
more complete color functionality. With the original PostScript 
language, color could be specified using the red-green-blue (RGB) 
and hue-saturation-brightness (HSB) color models. 

The color extensions include cyan-magenta-yellow-black (CMYK) color 
model, black generation and undercolor removal functions, screen and 
transfer functions for four separate color components, and a 
colorimage operator for rendering color sampled images.

The color extensions are currently found in PostScript color 
printers from Canon, QMS, Oce, and NEC as well as all 
implementations of the Display PostScript system.


*** Why would you want the CMYK color extensions in a black and white 
    printer?

In a nut-shell, compatibility between black-and-white and color 
Level 2 devices.

Today, ISVs must handle PostScript color printers differently.  For 
example, current monochrome laser printers does not contain the CMYK 
color extensions, and as a result PostScript language programs must 
emulate this functionality, which results in slower performance. All 
Level 2 implementations will include the CMYK color extensions as 
standard.


*** What are the composite font extensions to the PostScript 
    language?

The composite font technology is a general solution that extends the 
basic PostScript language font mechanism to enable the encoding of 
very large character sets and handle non-horizontal writing modes. 

A Type 1 PostScript font has room for encoding only 256 distinct 
characters. A typical Japanese font has over 7,000 Kanji, katakana 
and hiragana characters. The composite font technology allows you 
to create one "composite" font that is made up from any number of 
"base" fonts. In addition, the composite font technology allows you 
to include two sets of metrics (character spacing details) in the 
font:  one for a horizontal-writing mode, and one for a vertical-
writing mode.


*** Why would you want the composite font extensions in a roman 
    printer?

This technology is currently implemented only in Japanese language 
PostScript devices, but the composite font technology is a general 
solution that applies to any language. It allows for the creation 
of one composite font that combines two or more fonts. For example, 
you may wish to combine a text font (such as Times-Roman) with a 
special font (such as Zapf-Dingbats) and have all characters at your 
disposal within a single font.

*** What are the Display PostScript Extensions to the PostScript 
    language?

The Display PostScript extensions address the needs of using the 
PostScript language imaging model in a display environment. It 
includes extensions to deal specifically with displays and windowing 
systems as well as many optimized operators to increase performance 
which is critical in an interactive display environment.

*** Why would you want the Display PostScript extensions in a 
    printer?

Most of the functionality in PostScript Level 2 that comes from the 
Display PostScript extensions result in improved performance. This 
includes clipping, rectangle operators, and binary language 
encoding to name a few. Each of the new Level 2 features that come 
from the Display PostScript extensions are detailed later in this 
document.

Another obvious reason is for compatibility between Display 
PostScript applications and PostScript Level 2 printers. 


*** Can you tell me more about the rest of the PostScript Level 2 
    features?

Sure. Here a brief overview of the important features and benefits 
of PostScript Level 2:

Filters
-------

+ A filter transforms data as it is being read from or written to a 
file. The language supports filters for ASCII encoding of binary 
data, compression and decompression, and embedded subfiles. 
Properly used, these filters reduce the storage and transmission 
cost of page descriptions, especially ones containing sampled 
images. => Reduced storage requirements, greater performance.

+ ASCII encoding of binary data:  ASCII/85 (represent binary data 
in ASCII format with only a 125% expansion of data), and ASCII/HEX 
(current method of representing binary data in ASCII format but with 
a 200% expansion of data). => Compact representation of binary data 
in a portable ASCII representation.

+ Compression and decompression filters:  CCITT Group 3 & 4 
(monochrome images), run-length encoding (monochrome and grayscale 
images), LZW (~2:1 compression of text files),  DCT (20-200:1 
compression of color images using the proposed JPEG standard). 
=> Improved performance due to reduced transmission times. PostScript 
files on disk can also be made much smaller, saving disk space.

Binary Encoding
---------------

+ In addition to the standard ASCII encoding, the language syntax 
includes two binary-encoded representations. These binary encodings 
improve efficiency of generation, representation, and 
interpretation. However, they are less portable than the ASCII 
encoding and are suitable for use only in controlled environments.
=> Performance, compactness.

Improved underlying implementation
----------------------------------

+ Improved font disk cache. We have improved the backup of the font 
cache on printers with a hard disk. Font access methods for reading 
the font back into RAM are more efficient. Also, the management of 
the disk is improved, so it does not become fragmented. => Performance, 
enhanced functionality.

+ ATM font rendering technology. => Improved performance (4-5 times 
faster in raw character building speed) and improved quality (most 
evident at small point sizes and low resolutions).

Improved memory management system
---------------------------------

+ One pool of memory available for all resource needs (page image, 
font cache, path storage, downloadable fonts, etc.). Memory 
allocated dynamically to meet needs. In general, memory is more 
efficiently shared among different uses and arbitrary memory 
restrictions have been eliminated. => Eliminates arbitrary memory 
restrictions for imaging of more complex graphics.

+ Opportunistic memory management scheme. In the current system, the 
PostScript language program must manage memory on a per page basis. 
New memory management operators allow more flexibility for programs 
to explicitly release unused memory resources by removing individual 
entries from dictionaries and removing font definitions in an order 
unrelated to the order in which they were created. => More efficient 
use of available memory.

+ Automatic memory reclamation. VM is reclaimed automatically for 
composite objects that are no longer accessible, such as strings 
used by the show operator. A "garbage collector" will automatically 
reclaim other unused memory. => More efficient use of available memory.

Optimized graphics operators
----------------------------

+ Rectangle operators. New operators for filling, clipping and 
stroking rectangles; all highly optimized. For example, rectfill is 
3 times faster than an equivalent moveto, lineto, lineto, lineto, 
closepath, fill. => Performance, convenience.

+ Graphics state objects provide a fast way to switch between 
graphics states, which define the current line weight, color, font, 
etc. In existing printers, graphics states are stored on a stack, 
so accessing an arbitrary graphics state is somewhat cumbersome. 
With graphics state objects, the graphics state can be associated 
with a name, and retrieved  by simply requesting the name. 
=> Performance, convenience.

+ Halftone specification. New halftone dictionaries provide a more 
precise way of specifying the halftone dots, and makes switching 
between halftone screens faster. (The spot function is not 
reinterpreted.) => Performance, convenience, enhanced functionality.

+ User paths are self-contained procedures that consists entirely 
of path construction operators and their coordinate operands. User 
path operators perform path construction and painting as a single 
operation; this is both convenient and efficient. There is a user 
path cache to optimize interpretation of user paths that are invoked 
repeatedly. => Performance, convenience.

+ Stroke adjustment. For very thin lines, there is a trade-off 
between perfect positioning and  consistent line width.  Depending 
on the placement of such a line, it could end up being rendered as 
either 1 or 2 pixels wide, which is a noticeable difference. To 
account for this, PostScript language programs often include logic 
to slightly alter the coordinates of lines for consistent rendering. 
With automatic stroke adjustment the interpreter performs this 
adjustment to ensure consistent widths.  Doing it in the interpreter 
rather than in the PostScript language program is 20 - 30% faster. 
=> Performance, convenience, improved quality.

Optimized text operators
------------------------

+ The xyshow operator provides a more natural way for applications 
to deal with individual character positioning.  Allows simultaneous 
track kerning, pair kerning, and justification. => Performance, 
convenience.

+ The selectfont operator optimizes switching between fonts.  It 
does the work of 3 Level 1 operators:  findfont, scalefont, and 
setfont and has been optimized by using a caching mechanism. 
=> Performance, convenience.

Forms
-----

+ A form is a self-contained description of any arbitrary graphics, 
text, and sampled images that are to be painted multiple timesQon 
each of several pages or several times at different locations on a 
single page.

+ With the new forms feature, you can define a base form  whose 
representation stays cached between pages, so only information that 
changes between forms will need to be interpreted for each page. The 
representation used to cache the form may vary from device to device 
depending on the available resources, such as memory and/or hard 
disk space. In some cases, the actual rasterized form will be saved, 
in other cases, an intermediate representation (such as a display 
list) may be saved. => End-users will benefit by improved performance.

+ This makes forms processing faster and provide a natural 
framework for ISVs implementing a forms functionality in their 
application. => Convenience for ISVs.

+ Besides the traditional concept of "forms," some other examples 
of forms include:  Letterhead, stationary, overhead presentation 
backgrounds, repetitive symbols in a CAD drawing such as screws 
(mechanical drawing) or windows (architectural drawing), complex 
background blends in 35mm slides. => Enhanced functionality and 
application of PostScript printers in a variety of different environments.

Patterns
--------

+ The new pattern color space provides the ability to establish a 
pattern as the current color. Subsequent use of operators such as 
fill, stroke, and show apply "paint" that is produced by replicating 
(or tiling) a small graphical figure called a pattern cell at fixed 
intervals in x and  y to cover the areas to be painted. The 
appearance of a pattern cell is defined by a PostScript language 
procedure, which can include any arbitrary graphics, text, and 
sampled images. The shape of the pattern cell need not be 
rectangular, and the spacing of tiles can differ from the size of 
the pattern cell. => Enhanced functionality, performance, convenience.

+ For efficiency, the representation of the pattern cell may be 
cached. When cached, the execution of the procedure that defines the 
pattern need be done only once for the current pattern.  The pattern 
cache is similar to the font cache. => Performance.

+ Multiple colors can be specified in the pattern or the pattern can 
be used as a mask to paint a color defined in some other color space. 
=> Enhanced functionality

+ For display environments, this feature will allow patterns to be 
represented in a resolution independent manner. Until now, patterns 
have typically been represented by arrangements of pixels. This 
resolution-dependent representation does not work well when trying 
to image the pattern at a variety of different resolutions.

Images
------

+ There are several enhancements to the facilities for painting 
sampled images: use of any color space, 12-bit component values, 
direct use of files as data sources, and additional decoding and 
rendering options. => Convenience, performance, quality.

Composite Fonts
---------------

+ Provides the basic machinery for non-Roman character sets. Enables 
the encoding of very large character sets and non-horizontal writing 
modes. => Enhanced functionality.

+ Provides a page description language for international business. 
Composite font technology makes printers more international. The 
same font technology can be used worldwide, and will provide support 
for companies that must work in today's international business 
environment. => Enhanced functionality.

+ Advantages not limited to foreign languages - also useful for 
strictly Roman printers: allows the creation of a single composite 
font that combines two or more fonts.  For example, you may wish to 
combine a textual font (such as Times-Roman) with a graphical font 
(such as Zapf-Dingbats), and have all  characters at their disposal 
within a single font. Other uses of composite fonts:  IBM extended 
character set, and expert sets (such as Adobe Garamond). => Enhanced 
functionality and increased performance by minimizing 
switching between fonts.

New Color Spaces
----------------

+ CMYK color model and support for color images. Enhanced 
functionality. This will encourage more ISVs to use the color 
operators, because the operators will be widely available (The 
printer itself may not be able to print in color, but the PostScript 
language program won't generate errors when the operators for CMYK 
color are used.) 

+ PostScript Level 2 supports several device-independent color 
spaces based on the CIE 1931 (XYZ)-space. CIE-based color 
specification enables a page description to specify color in a way 
that is related to human visual perception. The goal of the CIE 
standard is that a given CIE-based color specification should 
produce consistent results on different color output devices, 
independent of variations in marking technology, ink colorants, or 
screen phosphors. True device-independent color specification. 
Improved color matching between devices.

+ PostScript Level 2 supports three classes of color spaces:  device 
independent, special, and device dependent. 

The following device independent color spaces are standard:

The CIEBasedABC color space is defined in terms of a two-stage, non-
linear transformation of the CIE 1931 (XYZ)-space. The formulation 
of the CIEBasedABC color space models a simple zone theory of color 
vision, consisting of a non-linear trichromatic first stage combined 
with a non-linear opponent color second stage. This formulation 
allows colors to be digitized with minimum loss of fidelity; this 
is important in sample images. 

Special cases of CIEBasedABC include a variety of interesting and 
useful color spaces, such as the CIE 1931 (XYZ)-space, a class of 
calibrated RGB spaces, a class of opponent color spaces such as the 
CIE 1976 (L*a*b*)-space and the NTSC, SECAM, and PAL television 
spaces. 

The CIEBased A color space is a one-dimensional and usually 
achromatic analog of CIEBasedABC. 

The following special color spaces are standard:

The Pattern color space enables painting with a "color" defined as 
a pattern, a graphical figure used repeatedly to cover the areas 
that are to be painted. See the discussion of patterns for more 
information.

The Indexed color space provides a way to map from small integers 
to arbitrary colors in a different color space such as a device 
independent color space.

The Separation color space provides control over either the 
production of a color separation or the application of a device 
colorant, depending on the nature and configuration of the device.

The following device dependent color spaces are standard:

The DeviceGray color space is equivalent to the existing PostScript 
language's gray color model.

The DeviceRGB color space is equivalent to the existing PostScript 
language's red-green-blue (RGB) color model.

The DeviceCMYK color space is equivalent to the existing PostScript 
language's cyan-magenta-yellow-black (CMYK) color model.

New screening/halftoning technology
-----------------------------------

+ Improved algorithms for determining the angles and frequencies 
used for halftone screens. The improvements fall into two primary 
categories:  general improvements, and improvements specific to 
color separations.

+ General improvements:   (1) The new algorithms yield a 10% 
improvement in the speed of the setscreen and image operators; (2) 
Earlier version of PostScript software could produce halftone 
screens only for certain angle and frequency combinations. Enough 
of these combinations were available so that any requested screen 
could be fairly well approximated by one of the available angle and 
frequencey combinations. In contrast, the improved halftoning 
algorithms can provide as much as a ten-fold increase in the number 
of angle-frequency combinations that are available, depending on the 
device resolution and the available memory. => Increased performance 
and higher quality halftone screens.

+ Improvements specific to color separations:   An additional 
feature is available that enables PostScript software to generate 
extremely accurate screen angles and frequencies. The screens 
produced by this method can achieve an angular accuracy of within 
.05 degrees or better, depending on such parameters as exact screen 
angle requested, device resolution, and memory available for use by 
the algorithm. => Extremely high-quality color separations that 
approach the quality that previously was available only from high-end, 
color electronic pre-press systems.

Improved printer support features
---------------------------------

+ Page device setup provides a device independent framework for 
specifying the requirements of a page description and for 
controlling both standard features, such as the number of copies, 
and optional features, such as duplex printing, paper trays, paper 
sizes, and other peripheral features. 

+ Applications developers will be able to write a single driver for 
a variety of different PostScript printers. The same code can be 
used to address printer specific features whether the features exist 
in the printer or not. If the feature is not in the printer, the 
application can decide how to best respond to the lack of the 
feature. => Enhanced functionality. ISVs benefit by having a more uniform 
method for accessing printer specific features. End users benefit 
by having software that will take advantage of their printer's 
features.

Interpreter parameters
----------------------

+ Administrative operations, such as system configuration and 
changing input-output device parameters, are now organized in a more 
systematic way. Allocation of memory and other resources for 
specific purposes is under software control. For example, there are 
parameters controlling the maximum amount of memory to be used for 
VM, font cache, pattern cache, and halftone screens. => Flexibility.

Resources
---------

+ A resource is a collection of named objects that either reside in 
VM or can be located and brought into VM on demand. There are 
separate categories of resources with independent name spaces - for 
example, fonts and forms are distinct resource categories. 

+ The language includes convenient facilities for locating and 
managing resources.

Dictionaries
------------

+ Many Level 2 operators expect a dictionary operand that contains 
key-value pairs specifying parameters to the operator. Language 
features controlled in this way include halftones, images, forms, 
patterns, and device setup. This organization allows for optional 
parameters and future extensibility. For convenience in using such 
operators, the PostScript language syntax includes new tokens, << and 
>>, to construct a dictionary containing the bracketed key-value 
pairs. => Convenience, extensibility.


*** What's the feedback from Adobe's OEMs on PostScript Level 2?

The feedback has been overwhelmingly positive. We have always 
believed that we are taking our OEMs, ISVs and end users best 
interests into account in moving forward with the PostScript 
language. The feedback we have received so far confirms that we are 
doing the right thing on all fronts.


*** How much ROM/RAM will it take for a Level 2 printer?

As is true with our current implementations, RAM/ROM requirements 
will vary from one device to the next depending on the specific 
capabilities of each device.  However, our estimates put the code 
size at approximately 1.5 Mb of ROM (for CISC processors), and 1.5 
Mb of RAM, minimum.


*** When will Level 2 products be available?

The first Level 2 products should be available in early 1991. Exact 
product delivery dates will be announced by our OEMs as usual.


*** What about existing PostScript printers? Are they obsolete?

The current generation of PostScript printers (which you could think 
of as PostScript Level 1) will not become obsolete because of Level 
2 products. Think of Level 1 and Level 2 printers as a family of 
products, each having its own set of features to suit the needs of 
a particular customer. While we will continue to support and build 
Level 1 products (based on our OEM's demands) we think that over the 
next 12-18 months most of our OEMs will begin providing PostScript 
Level 2 products.


*** Are Level 1 and Level 2 implementations compatible?

All existing programs that run on today's PostScript printers will 
run on a Level 2 device. That is, PostScript Level 2 is upward 
compatible with the existing installed base of printers and print 
drivers. However, it is not 100 % backward compatible. A file 
written specifically to take advantage of some Level 2 features will 
not run on a Level 1 printer because some functionality cannot be 
emulated. Most Level 2 features can be emulated on a Level 1 printer 
and an intelligent driver can conditionally use Level 2 features 
when available, and fall back on Level 1 operators when not. The new 
red book will include an appendix that will help ISVs deal 
specifically with compatibility issues.


*** When will the new red book be available?

A new version of the red book, called the PostScript Language 
Reference Manual, Second Edition, will be published by Addison-
Wesley in December 1990.


*** How is Adobe positioning PostScript Level 2?

Adobe is positioning PostScript Level 2 as an integral part of a 
total system solution for printing and display environments. 
PostScript Level 2 software provides the foundation for Adobe's OEMs 
to implement an entire spectrum of products from low-cost desktop 
laser printers for office-automation to high-resolution 
imagesetters for producing color separations. 

Let's put PostScript Level 2 in perspective with respect to the 
overall printing solution. The effectiveness and performance of any 
particular printing solution is affected by four main elements:

+ Driver:  Each major system software environment (Macintosh, 
Windows, OS/2 Presentation Manager, NeXT) has a built-in PostScript 
language driver. These system level drivers ensure that all 
applications running in the environment can output to PostScript 
printers. These drivers do not always produce the most efficient 
PostScript language programs, and may not support the wide variety 
of features available in the language or specific hardware features 
in a PostScript printer.

+ Language:  The PostScript language as defined in the PostScript 
Language Reference Manual (the "red book") is the standard today.

+ Communications:  AppleTalk, parallel, and serial communications 
are  the most commonly used interfaces with PostScript printers 
today.

+ Controller:  Today, most Adobe PostScript printers are based on a 
variety of controllers:  Scout (68000), Atlas (68020), and Atlas 
Plus (68030). In addition, there are a number of custom controller 
solutions offered by our OEMs.

Total system throughput is a function of all four elements. An 
efficient driver can produce PostScript page descriptions that print 
much faster; speed increases of 2-3x over an inefficient driver are 
not uncommon. Communications bottlenecks can account for a majority 
of the time it takes to print a page; a very large scanned image can 
take minutes to transmit to the printer, even using AppleTalk. And 
of course, the speed of the controller itself has a direct impact 
on the time it can take to print a page. However, the limiting factor 
is ultimately the rated engine speed of the output device.

PostScript Level 2 is one component of a total systems solution 
being assembled by Adobe:

+ Adobe is developing drivers for the Macintosh, Windows 3.0, and 
OS/2 Presentation Manager environments. These drivers will take full 
advantage of the features and performance enhancements in PostScript 
Level 2 printers as well as existing PostScript printers. 

+ PostScript Level 2 extends the PostScript language with new 
operators to improve performance and provide additional 
functionality to address the need of end users and ISVs. 

+ PostScript Level 2 includes a variety of file compression 
techniques that can be used to reduce the amount of information sent 
(and hence the time to do so) to the PostScript printer. 

+ Adobe is developing new controllers based on the latest RISC 
technology which are up to 22 times faster than current controllers. 
In addition, these controllers provide  our OEMs the potential for 
providing direct SCSI input and Ethernet connections for increased 
throughput.


(C) 1990 Adobe Systems Incorporated. All rights reserved. 
PostScript, Display PostScript, and Adobe are trademarks of Adobe 
Systems Incorporated registered in the U.S. All other product names 
are trademarks or registered trademarks of their respective holders.

larry@csccat.cs.com (Larry Spence) (10/26/90)

In article <7646@adobe.UUCP> orthlieb@adobe.COM (Carl Orthlieb) writes:
>
>+ User paths are self-contained procedures that consists entirely 
>of path construction operators and their coordinate operands. User 
>path operators perform path construction and painting as a single 
>operation; this is both convenient and efficient. There is a user 
>path cache to optimize interpretation of user paths that are invoked 
>repeatedly. => Performance, convenience.

Let's say I'm an MS-Windows graphics app (I'm not, but I know one or two %),
and that I'm printing through the new Adobe PS driver.  How can the driver
know whether I want something done as a user path?  Seems like only the
app would know "this object is going to be rendered a _whole_lot_, and
maybe we should just rasterize it once."  How will I be able to take 
advantage of user paths without doing my own driver (as I essentially
have to now)?

>+ A form is a self-contained description of any arbitrary graphics, 
>text, and sampled images that are to be painted multiple timesQon 
>each of several pages or several times at different locations on a 
>single page.

Can you give us some idea of when it will be appropriate to use a user
path vs. a "form"?  

>+ The new pattern color space provides the ability to establish a 
>pattern as the current color. Subsequent use of operators such as 
>fill, stroke, and show apply "paint" that is produced by replicating 
>(or tiling) a small graphical figure called a pattern cell at fixed 
>intervals in x and  y to cover the areas to be painted. The 
>appearance of a pattern cell is defined by a PostScript language 
>procedure, which can include any arbitrary graphics, text, and 
>sampled images.

Again, this isn't functionality that's directly supported in common GUIs
(e.g., Windows, Mac), so am I stuck with doing "escape calls" and sending
PS code to the printer myself?  I like the idea of having this amount of
functionality in PS, but getting at it looks a little messy.

>+ Applications developers will be able to write a single driver for 
>a variety of different PostScript printers. The same code can be 
>used to address printer specific features whether the features exist 
>in the printer or not. If the feature is not in the printer, the 
>application can decide how to best respond to the lack of the 
>feature. 

Sounds like the printer-specific code moves up out of the driver and into
the app. %( %<

>Allocation of memory and other resources for 
>specific purposes is under software control. For example, there are 
>parameters controlling the maximum amount of memory to be used for 
>VM, font cache, pattern cache, and halftone screens. => Flexibility.

Can I specify a higher limitcheck for filling and stroking, i.e., more
points in a path (please, please %)?

>Dictionaries
>------------
>
>+ Many Level 2 operators expect a dictionary operand that contains 
>key-value pairs specifying parameters to the operator. Language 
>features controlled in this way include halftones, images, forms, 
>patterns, and device setup. This organization allows for optional 
>parameters and future extensibility. For convenience in using such 
>operators, the PostScript language syntax includes new tokens, << and 
>>>, to construct a dictionary containing the bracketed key-value 
>pairs. => Convenience, extensibility.

This sounds like a major change from a language-design point of view.

>The feedback we have received so far confirms that we are 
>doing the right thing on all fronts.

Let's not get cocky, now. %)

>*** Are Level 1 and Level 2 implementations compatible?
>
>All existing programs that run on today's PostScript printers will 
>run on a Level 2 device. That is, PostScript Level 2 is upward 
>compatible with the existing installed base of printers and print 
>drivers. However, it is not 100 % backward compatible. A file 
>written specifically to take advantage of some Level 2 features will 
>not run on a Level 1 printer because some functionality cannot be 
>emulated. Most Level 2 features can be emulated on a Level 1 printer 
>and an intelligent driver can conditionally use Level 2 features 
>when available, and fall back on Level 1 operators when not. The new 
>red book will include an appendix that will help ISVs deal 
>specifically with compatibility issues.

I dunno.  This is my major gripe.  I thought that the neatest thing about
PS was that it was extensible; that new features could be emulated in
terms of old operators.  First you say that the app will have to decide
what to do about L2 operators on an L1 device, but then you say that "an
intelligent driver" will provide this emulation.  I would really like to
get some clarification on this, it's a potential sore spot.

>+ Adobe is developing drivers for the Macintosh, Windows 3.0, and 
>OS/2 Presentation Manager environments. These drivers will take full 
>advantage of the features and performance enhancements in PostScript 
>Level 2 printers as well as existing PostScript printers. 

Again, the question is "how will the _app_ take advantage of these goodies?"

>+ Adobe is developing new controllers based on the latest RISC 
>technology which are up to 22 times faster than current controllers. 
                      ^^^^^^^^^^^^^^^^^^^^^
Yum! [eyes glaze over] %)

-- 
Larry Spence
larry@csccat.cs.com
...{uunet,texsun,cs.utexas.edu,decwrl}!csccat!larry

shiva@well.sf.ca.us (Kenneth Porter) (11/06/90)

Will OEM's provide ROM upgrades for existing Level 1 printers? 
I've got an LC-890 that I'd like to upgrade if possible.  Does
the new level just require pasting the old back end code on, or
is there a difference at the engine connection?  How much
difference is there in the size of the code?  Will the ROM
slots on the older printers be big enough for the newer code?
 
And while on the subject of NEC parts, has anyone gotten
service documentation for NEC laser printers?  In particular,
an exploded parts diagram and information on how to change the
toner station.  How do I get this and what does it cost?
 
Ken (shiva@well.sf.ca.us)

stanley@phoenix.com (John Stanley) (11/06/90)

shiva@well.sf.ca.us (Kenneth Porter) writes:
>  
> And while on the subject of NEC parts, has anyone gotten
> service documentation for NEC laser printers?  In particular,
> an exploded parts diagram and information on how to change the
> toner station.  How do I get this and what does it cost?

   I think you are talking about the developer unit. That is the unit with
the toner hopper and the magnetized feed roller. It is held in with two
thumb screws and lives under the cover just in front of the paper trays. 

   There is a field maintenance guide that shows all this info. It was
$25, I think. The developer units are $140, I think. 

   Unfortunately, I no longer work where I learned all this nice info, so
I can't be specific. There is an 800 number for parts ordering. Your
local NEC office should be able to give this to you. If you have no local
NEC office and can't talk it out of your local computer store, let me
know and I will try to get it from the office in Syracuse.





<> "Aneth!  That's a charming place!" "You've been to Aneth?" 
<> "Yes, but not yet." -- The Doctor and Seth, "The Horns of Nimon".
><
<> "Sanity check!" "Sorry, we can't accept it, it's from out of state." - me