There are a few concepts that you need to know about before we dive
into the language itself. These concepts are the concepts PostScript uses
to describe and manipulate images on a page. There are really only a few.
- Device Space
- This is the coordinate space understood by the printer hardware. This
coordinate system is typically measured in terms of the device’s resolution.
There is really nothing else that can be said about this space, as PostScript
programs are typically not expressed using it.
- User Space
- This is the coordinate system used by PostScript programs to describe
the location of points and lines. User space is essentially the same as
the first quadrant of the standard coordinate system used in high school
math classes. Point (0, 0) is in the lower left corner. Coordinates are
real numbers, so there is no set resolution in user space. The interpreter
automatically converts user space coordinates to device space.
- Current Transformation Matrix
- The transformation of user space coordinates to device space coordinates
is done through the current transformation matrix. This matrix is a three
by three matrix that allows the user to rotate, scale, and translate the
entire user space within the device space. This is the source of a lot
of PostScript’s power, as will be demonstrated later.
- A path is a collection of (possibly disjoint) line segments and curves
arranged on the page. The path does not describe actual ink on the paper;
it merely describes an imaginary tracing over the page. There are operators
which allow the user to draw ink along the path (stroke),
fill an enclosed path with ink (fill),
or clip out all future images that are outside the path (clip).
- Current Path
- This is the path that the PostScript program is creating at the moment.
The current path is assembled piece by piece.
- Clipping Path
- The PostScript rendering system will ignore any part of a line segment,
curve, or bitmap that extends outside a certain region; it will only draw
the parts of those elements which are within the region. The region is
described by a path called the clipping path. The clipping path is usually
a rectangle about a quarter of an inch in from the edge of the page, but
it can easily be set by the user to an arbitrary path.
- Graphics State
- This is a collection of various settings that describe the current
state of the graphics system. Things like the current path, the current
font, and the current transformation matrix make up the graphics state.
Often, a program will need to temporarily save a graphics state to be used
later. There are a couple of ways of doing this, but the easiest is to
push the state onto a special graphics state stack and pop it back later.
This can be accomplished with the gsave,
and grestore operators.