PostScript command summary

Stack manipulation

exch
num1 num2 exch
num2 num1

pop
any pop
-

copy
any[0] ... any[n-1] n copy
any[0] ... any[n-1] any[0] ... any[n-1]
copy has array, sequence, dictionary, string forms

dup
any dup
any any

index
any[n] ... any[0] n index
any[n] ... any[0] any[n]

roll
any[n-1] ... any[0] n j roll
any[j-1 mod n] ... any[j mod n]
rolls to right (left if j negative)

clear
* any[1] ... any[n] clear
*
* means stack bottom

count
* any[1] ... any[n] count
* any[1] ... any[n] n
* means stack bottom

mark
- mark
mark

cleartomark
mark obj[1] ... obj[n] cleartomark
-

countomark
mark obj[1] ... obj[n] countomark
mark obj[1] ... obj[n] n

Arithmetic

add
num1 num2 add
num1 + num2

div
num1 num2 div
num2/num1

sub
num1 num2 sub
num2 - num1

idiv
int1 int2 idiv
(int) int1/int2

mul
num1 num2 mul
num1*num2

mod
int1 int2 mod
int1 mod int2

abs
num abs
abs(num)

neg
num neg
-num

ceiling
num1 ceiling
num2

floor
num1 floor
num2
returns the greatest integer value less than or equal to num1: 3.2 -> 3.0; -4.8 -> -5.0

round
num round
num
rounds to nearest integer

truncate
num truncate
num - fractional part

sqrt
num sqrt
sqrt(num)

atan
num den atan
arctan(num/den)
degrees

cos
deg cos
cos(deg)
degrees

sin
deg sin
sin(deg)
degrees

exp
base num exp
base^{num}

ln
num ln
log_{e} num

log
num log
log_{10} num

rand
- rand
int

srand
int srand
-
sets random number seed

rrand
- rrand
int
returns random number seed

Arrays

array
int array
array (of length int)
recall that an array is a pointer-plus-structure,

[
- [
mark

]
mark obj[0] ... obj[n-1] ]
array
array of these objects

length
array length
int

get
array index get
array[index]

put
array index any put
-
stores any as array[index]

getinterval
array index count getinterval
subarray
the subarray is array[index] ... array[index+count-1]

putinterval
array1 index array2 putinterval
-
replaces array1 with aray2 starting with [index]

aload
array aload
a[0] ... a[n-1] array
pushes the array onto the stack

astore
a[0] ... a[n-1] array astore
array
stores the elements into the array all in one shot

copy
array1 array2 copy
subarray2
copies array1 to initial subarray of array2

forall
array proc forall
-
executes proc for each element of array

dict
int dict
dict
creates dictionary of capacity int

length
dict length
int
returns number of key-value pairs in the dictionary

maxlength
dict maxlength
int
capactity of dict

begin
dict begin
-
push dict on dict stack

end
- end
-
pops dict stack

def
key value def
-
associates key & value in current dict

load
key load
value
searches dict stack for key and returns value

store
key value store
-
replaces topmost definition of key

get
dict key get
any
returns value in dict associated to key

put
dict key value put
-
associates key value into dict

known
dict key known
bool
tests whether key is in dict

where
key where
dict true OR false
finds dict in which key is defined

copy
dict1 dict2 copy
dict2
copies contents of dict1 to dict2

forall
dict proc forall
-
executes proc for each element of dict

errordict
- errordict
dict
push errordict on operand stack

systemdict
- systemdict
dict
push systemdict on operand stack

userdict
- userdict
dict
push userdict on operand stack

currentdict
- currentdict
dict
push currentdict on operand stack

countdictstack
- countdictstack
int
counts elements on dictstack

dictstack
array dictstack
subarray
copy dictstack into array

Strings

string
int string
string
creates string of length int

length
string length
int
returns length of string

get
string index get
int
returns string[index]

put
string index int put
-
assigns string[index] = int

getinterval
string index count getinterval
substring
returns {string[index] .. string[index + count - 1]}

putinterval
string1 index string2 putinterval
-
replaces string1[index] ... by string2

copy
string1 string2 copy
substring2
copies string1 to initial substring of string2

forall
string proc forall
-
executes proc for each element of string

anchorsearch
string seek anchorsearch
post match true OR string false
determines if seek is initial substring of string

search
string seek search
post match true OR string false
determines if seek is substring of string

token
string token
post token true OR false
read token from start of string

Bit and Boolean operations

eq
any1 any2 eq
bool
tests equal

ne
any1 any2 ne
bool
tests not equal

ge
num1|string1 num2|string2 ge
bool
tests greater than or equal

gt
num1|string1 num2|string2 gt
bool

le
num1|string1 num2|string2 le
bool

lt
num1|string1 num2|string2 lt
bool

and
bool1|int1 bool2|int2 and
bool|int
logical|bitwise and

not
bool|int not
bool|int

or
bool1|int1 bool2|int2 or
bool|int

xor
bool1|int1 bool2|int2 xor
bool|int

true
- true
true

false
- false
false

bitshift
int1 shift bitshift
int2
positive is left

Flow control

exec
any exec
-
executes arbitrary object

if
bool proc if
-

ifelse
bool proc1 proc2 ifelse
-

for
j k l proc for
-
for i= j to l step k do proc

repeat
n proc repeat
-
does proc n times

loop
proc loop
-
do proc forever (include exit)

exit
- exit
-
exits innermost loop

stop
- stop
-
terminates stopped context (?)

stopped
any stopped
bool
establish context for catching stop

countexecstack
- countexecstack
int
count elements on execution stack

execstack
array execstack
subarray
copy execstack into array

quit
- quit
-
terminate interpreter

start
- start
-
executed automatically at interpreter startup

Types and conversions

type
any type
name

cvlit
any cvlit
any
makes object literal

cvx
any cvx
any
makes object executable

xcheck
any xcheck
bool
tests executable attributable

executeonly

noaccess

readonly

rcheck

wcheck

cvi
num/string cvi
int
converts to integer

cvn
string cvn
name
converts to name

cvr
num/string cvr
real
converts to real

cvrs
num radix string cvrs
substring

cvs
ob string cvs
substring
converts to string

Files

file
string1 string2 file
file
opens file string1 with access string2

closefile
file closefile
-

read
file read
int true OR false
reads one character from file

write
file int write
-

readhexstring
file string readhexstring
substring bool
reads hex from file into string

writehexstring
file string writehexstring
-
writes characters of string to file as hex

readstring
file string readstring
substring bool
reads from file into string

writestring
file string writestring
-
writes characters of string to file

readline
file string readline
substring bool
reads line from file into string

token
file token
token true OR false
reads token from file

bytesavailable
file bytesavailable
int
number of bytes available to read

flush
- flush
-
sends buffered data to standard output

flushfile
file flushfile
-
sends buffered data to file

resetfile
file resetfile
-
discard buffered characters

status
file status
bool
returns status of file

run
string run
-
executes contents of named file

currentfile
- currentfile
file

print
string print
-
writes characters of string to standard output

=
any =
=
writes text representation of any to stdout

stack
* any[1] ... any[n] stack
* any[1] ... any[n]
prints stack non-destructively

==
any ==
-
destructive display of top of stack

pstack
* obj[1] ... obj[n] pstack
* obj[1] ... obj[n]
non-destructive display of whole stack

prompt
- prompt
-
executed when ready for interactive input

echo
bool echo
-
turns on/off echoing

save
- save
save
create VM snapshot

restore
save restore
-
restore VM snapshot

vmstatus
- vmstatus
level used maximum
report VM status

Miscellaneous

bind

null

usertime

version

Graphics

gsave
- gsave
-
saves graphics state

grestore
- grestore
-
restores graphics state

grestoreall
- grestoreall
-
restore to bottommost graphics state

initgraphics
- initgraphics
-
reset graphics state parameters

setlinewidth
num setlinewidth
-
sets line width

currentlinewidth
- currentlinewidth
num
returns current line width

setlinecap
int setlinecap
-
sets shape of line ends (0=butt,1=round,2=square)

currentlinecap
- currentlinecap
int

setlinejoin
int setlinejoin
-
sets shape of corners for stroke (0=miter,1=round,2=bevel)

currentlinejoin
- currentlinejoin
int

setmiterlimit
num setmiterlimit
-
sets miter length limit

currentmiterlimit
- currentmiterlimit
num

setdash
array offset setdash
-
sets dash pattern for stroking

currentdash
- currentdash
array offset

setflat
num setflat
-
sets flatness tolerance

currentflat
- currentflat
num

setgray
num setgray
-
sets gray level for fill: 1.0 = white

currentgray
- currentgray
num

sethsbcolor
hue sat brt sethsbcolor
-
sets color given hue, saturation, brightness

currenthsbcolor
- currenthsbcolor
hue sat brt

setrgbcolor
red green blue setrgbcolor
-
sets color given red, green, blue

currentrgbcolor
- currentrgbcolor
red green blue

setscreen
freq angle proc setscreen
-
sets halftone screen

currentscreen
- currentscreen
freq angle proc

settransfer
proc settransfer
-
sets gray transfer function

currenttransfer
- currenttransfer
proc

Matrices

matrix
- matrix
matrix
creates identity matrix

initmatrix
- initmatrix
-
sets CTM to device default

identmatrix
matrix identmatrix
matrix
sets to identity

defaultmatrix
matrix defaultmatrix
matrix
fills matrix with device default matrix

currentmatrix
matrix currentmatrix
matrix
fills matrix with current CTM

setmatrix
matrix setmatrix
-
replace CTM by matrix

translate
tx ty translate
-
translates origin

translate
tx ty matrix translate
matrix
defines translation by (tx, ty)

scale
sx sy scale
-
scales user space

scale
sx sy matrix scale
matrix
defines scaqling by (sx, sy)

rotate
angle rotate
-
rotates user space

rotate
angle matrix rotate
matrix
define rotation by angle degrees

concat
matrix concat
-
CTM = matrix*CTM

concatmatrix
matrix1 matrix2 matrix3 concatmatrix
matrix3
matrix3 = matrix1*matrix2

transform
x y transform
x' y'
CTM*(x, y) - row or column vectors?

transform
x y matrix transform
x' y'
matrix*(x, y)

dtransform
dx dy dtransform
dx' dy'

dtransform
dx dy matrix dtransform
dx' dy'

itransform
x y itransform
x' y'
inverse transform by CTM

itransform
x y matrix itransform
x' y'
inverse transform

idtransform
dx dy idtransform
dx' dy'

idtransform
dx dy matrix idtransform
dx' dy'

invertmatrix
matrix1 matrix2 invertmatrix
matrix2
matrix2 = inverse of matrix1

Paths

newpath
- newpath
-
clears current path

currentpoint
- currentpoint
x y
returns current point

moveto
x y moveto
-
absolute move: changes current point

rmoveto
x y rmoveto
-
relative move: changes current point

lineto
x y lineto
-
puts line from current point to (x, y)

rlineto
x y rlineto
-
line from current point to current point + (x, y)

arc
centerx centery radius angle1 angle2 arc
-
counter-clockwise

arcn
centerx centery radius angle1 angle2 arcn
-
clockwise

arcto

curveto

rcurveto

closepath
- closepath
-
closes the current path with a straight line to the last moveto location

flattenpath

reversepath

strokepath

charpath
string bool charpath
-
add character outlines of string to current path

clippath
- clippath
-
set current path to clipping path

pathbbox
- pathbbox
llx lly urx ury
returns bounding box of current path

pathforall
move line curve close pathforall
-
enumerate current path

initclip
- initclip
-
set clip path to device default

clip
- clip
-
sets new clipping path

eoclip
- eoclip
-
clip using even-odd rule

erasepage
- erasepage
-
sets current page white

fill
- fill
-
fills current path with current color

eofill
- eofill
-
fill using even-odd rule

stroke
- stroke
-
paints the current path with the current color and line width

image
width height bits/sample matrix proc image
-
render sampled image onto current page

imagemask
width height invert matrix proc imagemask
-
renders mask onto current page

Set up

showpage
- showpage
-
transfers current page to output device

copypage

banddevice

framedevice

nulldevice

renderbands

Fonts

definefont

findfont
key findfont
fontdict
pushes the font dictionary on the stack; error handling unpredictable

scalefont
fontdict int scalefont
fontdict
scales the font from 1 to n

makefont

setfont
fontdict setfont
-
sets current font

currentfont
- currentfont
fontdict

show
string show
-
prints string at current location in current font

ashow

widthshow

awidthshow

kshow
proc string kshow
-
execute proc between showing characters in string

stringwidth
string stringwidth
intx inty
returns location if string were printed

FontDirectory

StandardEncoding

Font caches

cachestatus

setcachedevice

setcharwidth

setcachelimit

Errors

dictfull

dictstackoverflow

dictstackunderflow

execstackoverflow

handleerror

interrupt

invalidaccess

invalidexit

invalidfileaccess

invalidfont

invalidrestore

ioerror

limitcheck

nocurrentpoint

rangecheck

stackoverflow

stackunderflow

syntaxerror

timeout

typecheck

undefined

undefinedfilename

undefinedresult

unmatchedmark

unregistered

VMerror