UNIX Printfile Conversion and GUI Basics
In UNIX and Linux, there is no comparable layer built into the OS kernel(s) or the X (screen display) server.
Every application is responsible for itself to create its print output. Fortunately, most use PostScript and
that at least gives some common ground. Unfortunately, there are many different levels of quality for this
PostScript. And worse, there is a huge difference (and no common root) in the way the same document is
displayed on screen and how it is presented on paper. WYSIWYG is more difficult to achieve. This goes back to
the time, decades ago, when the predecessors of X.org, designing the UNIX foundations and protocols for
graphical user interfaces, refused to take responsibility for “paper output”, as some had
demanded at the time, and restricted itself to “on-screen only.” (For some years now, the
“Xprint” project has been under development, attempting to build printing support into the X
framework, including a PostScript and a PCL driver, but it is not yet ready for prime time.) You can see this
unfavorable inheritance up to the present day by looking into the various “font” directories on
your system; there are separate ones for fonts used for X display and fonts to be used on paper.
The PostScript programming language is an “invention” by Adobe, but its specifications have been
published extensively. Its strength lies in its powerful abilities to describe graphical objects (fonts,
shapes, patterns, lines, curves, and dots), their attributes (color, linewidth), and the way to manipulate
(scale, distort, rotate, shift) them. Because of its open specification, anybody with the skill can start
writing his or her own implementation of a PostScript interpreter and use it to display PostScript files on
screen or on paper. Most graphical output devices are based on the concept of “raster images” or
“pixels” (one notable exception is pen plotters). Of course, you can look at a PostScript file in
its textual form and you will be reading its PostScript code, the language instructions that need to be
interpreted by a rasterizer. Rasterizers produce pixel images, which may be displayed on screen by a viewer
program or on paper by a printer.