%! refcard.ps % % PostScript Pocket Reference Card % % TO DO: % type names (arraytype, booleantype, etc.) % % From: ou@ulowell.UUCP (Chris Katsaounis) % Newsgroups: mod.computers.laser-printers % Subject: A short Postscript reference manual % Date: 3 Jul 86 17:04:07 GMT % % ========================================================================== % start of my stuff % ========================================================================== /starttime usertime def /pgsize 14 def /captitlesize 14 def /titlesize 12 def /subheadsize 8 def /normsize 6.9 def % was 7 /subsize 5 def /stackfont /Helvetica findfont normsize scalefont def /emphfont /Helvetica-Oblique findfont normsize scalefont def /cmdfont /Helvetica-Bold findfont normsize scalefont def /symfont /Symbol findfont normsize scalefont def /subfont /Helvetica findfont subsize scalefont def /subheadfont /Helvetica-Bold findfont subheadsize scalefont def /extend { 1.0 mul } def /hvb /Helvetica-Bold findfont def /headpage hvb [ pgsize extend 0 0 pgsize 0 0 ] makefont def /headcaptitle hvb [ captitlesize extend 0 0 captitlesize 0 0 ] makefont def /headtitle hvb [ titlesize extend 0 0 titlesize 0 0 ] makefont def /rmargin 234 def % right margin /halign 75 def % horizontal alignment position /vlimit 66 def % lines per page (was 62, then 63) /boxheight 14 def % height of title box /linespace 8.45 def % amount to skip per line (was 9, then 8.85) /curline 1 def % current line /hpos 0 def % current horizontal position /pageface 0 def % which logical page (0=init, 1=left, 2=mid, 3=right) /pageno 4 def % page number /suboffset 2 def % subscript offset /linewidth .2 def % standard line width /titlexoff 5 def % title x offset /titleyoff 2 def % title y offset /empty (\320) def /pagestring 2 string def /inch { 72 mul } def /printf { print flush } def % - SETUP - % set up initial environment /SETUP { 90 rotate -7 0 translate % left x shift for symmetry newpath 11 inch 3 div -0.5 inch moveto 0 -7.5 inch rlineto 11 inch 2 mul 3 div -0.5 inch moveto 0 -7.5 inch rlineto linewidth setlinewidth stroke 15 -34 translate % true offset 11 inch 3 div neg 0 translate % negative translate so the next PAGE % will return to the same spot. } def % llx lly urx ury "box" - /box { 4 dict begin /ury exch def /urx exch def /lly exch def /llx exch def gsave newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath linewidth setlinewidth stroke grestore end } def % llx lly urx ury lo hi "fountain" - /fountain { 10 dict begin /fend exch def /fstart exch def /ury exch def /urx exch def /lly exch def /llx exch def /flen fend fstart sub 1 add def /fstr flen string def fstart 1 fend { fstr exch dup 255 div 180 mul cos neg 2 div .5 add 255 mul cvi exch fstart sub exch put } for gsave urx ury translate 180 rotate urx llx sub ury lly sub scale % 128 13 sub 10 8 flen 10 8 % [-128 13 add 0 0 10 128 13 sub 0] {fstr} image [flen neg 0 0 10 flen 0] {fstr} image grestore end } def % - PAGE - % start new page % We want to print the pages in a different order so that the Reference Card % can be folded correctly: 5 6 1 2 3 4 /PAGE { /pageno pageno 1 add def pageno 6 gt { /pageno 1 def } if pageno pagestring cvs /pagesubstring exch def pagesubstring printf pageface 3 mod 0 eq pageface 0 gt and { showpage SETUP } if /pageface pageface 1 add def 11 inch 3 div 0 translate % draw the fountain 0 0 rmargin boxheight 48 239 fountain 0 0 rmargin boxheight box % draw "PostScript Reference Card" in outlines newpath titlexoff titleyoff moveto headcaptitle setfont (P) true charpath headtitle setfont (OST) true charpath headcaptitle setfont (S) true charpath headtitle setfont (CRIPT) true charpath headcaptitle setfont ( R) true charpath headtitle setfont (EFERENCE) true charpath headcaptitle setfont ( C) true charpath headtitle setfont (ARD) true charpath gsave 1 setgray fill grestore linewidth setlinewidth stroke % draw the page number in outlines headpage setfont newpath 0 0 moveto pagesubstring true charpath pathbbox pop exch pop exch pop rmargin exch sub titlexoff sub titleyoff newpath moveto pagesubstring true charpath gsave 1 setgray fill grestore linewidth setlinewidth stroke newpath 0 0 moveto /curline 0 def NL (. ) printf } def % - NL - % newline function /NL { currentpoint exch pop linespace sub 0 exch moveto /curline curline 1 add def curline vlimit gt { PAGE } if } def % vert VNL - % customized newline function /VNL { currentpoint exch pop exch sub 0 exch moveto /curline curline 1 add def curline vlimit gt { PAGE } if } def % - HNL - % half-newline function /HNL { currentpoint exch pop linespace 2 div sub 0 exch moveto /curline curline 0.5 add def curline vlimit gt { PAGE } if } def % cmd args results "C" - /C { /results exch def /args exch def /cmd exch def stackfont setfont /args load xwidth halign exch sub currentpoint exch pop moveto /args load xshow cmdfont setfont ( ) show cmd show ( ) show currentpoint pop /hpos exch def stackfont setfont /results load xshow NL } def % results "CC" - % for alternate results. Prints only the arrow and the results, aligned % to the previous arrow. /CC { /results exch def currentpoint exch pop hpos exch moveto stackfont setfont /results load xshow NL } def % proc|string RJ - % sets proc or string right justified, in emphfont, without a newline /RJ { /rjarg exch def emphfont setfont /rjarg load xwidth rmargin exch sub currentpoint exch pop moveto /rjarg load xshow } def % proc|string CT - % centers proc or string within the current margins, without a newline /CT { dup xwidth rmargin exch sub 2 div currentpoint exch pop moveto xshow } def % x HT - % horizontal tab -- moves to horizontal position x, leaving y unchanged. /HT { currentpoint exch pop moveto } def % (str1) (str2) (str3) T - % sets three strings in cmdfont in three columns, divided evenly % within 0 and rmargin. /T { cmdfont setfont rmargin 3 div 2 mul HT show rmargin 3 div HT show 0 HT show NL } def % =================== utilities for use within xshow ======================= % subscript /- { /savefont currentfont def subfont setfont currentpoint suboffset sub moveto } def /+ { savefont setfont currentpoint suboffset add moveto } def % turnstile /ts { (|) show -1 0 rmoveto (\261) show } def % prime /' { currentfont symfont setfont (\242) show setfont } def % vertical bar /| { currentfont symfont setfont (\275) show setfont } def % ellipses /... { currentfont symfont setfont (\274) show setfont } def % shorthand /+| {+ |} def % note for version 38.0 /v38 { ((v. 38.0)) RJ } def % ========================================================================== % extended show stuff /xdict 20 dict def xdict begin /arraytype { cvx exec } def /booleantype {} def /dicttype {} def /filetype {} def /fonttype {} def /integertype {} def /marktype {} def /nametype { cvx exec } def /nulltype {} def /operatortype {} def /realtype {} def /savetype {} def /stringtype { show } def end % string xshow - % array xshow - % If given a string, xshow simply shows it. % If given an array, xshow evaluates each element of it, as follows: % string: shows it % array: executes it % name: executes it % all other elements are ignored. /xshow { dup type /stringtype eq { show } { xdict begin { dup type exec } forall end } ifelse } def % string|proc xwidth % finds the x width of a string or proc /xwidth { matrix currentmatrix gsave % get CTM for current device nulldevice % install null device so nothing is output setmatrix % set up previous CTM 0 0 moveto xshow currentpoint pop grestore } def % ========================================================================== % set up initial environment (Page: ) printf SETUP PAGE % ===================== Laserwriter-specific stuff ========================= HNL NL subheadfont setfont (Operators specific to the Sun LaserWriter) CT NL NL stackfont setfont (unmarked operators deal with volatile parameters) show NL (\262 operators deal with persistent parameters) show NL (\263 operators must be executed outside normal server context) show NL NL (checkpassword\262) (int) (bool) C (defaulttimeouts\262) empty (job manualfeed wait) C (dostartpage\262) empty (bool) C (eescratch\262) (index) (value) C (idlefonts\262) empty {(mark font s)-(x)+( s)-(y)+( rot nchars )...} C (jobname) empty (string) C (jobstate) empty (string) C (jobsource) empty (string) C (jobtimeout) empty (int) C (manualfeed) empty (bool) C (manualfeedtimeout) empty (int) C (margins\262) empty (top left) C (pagecount\262) empty (int) C (pagestackorder\262) empty (bool) C (pagetype\262) empty (int) C ((v. 23.0)) RJ (prefeed) empty (bool) C (printererror) (status tries) empty C (printername\262) (string) (substring) C (product) empty (string) C (revision) empty (int) C (sccbatch\262) (channel) (baud parity) C (sccinteractive\262) (channel) (baud parity) C (setdefaulttimeouts\263) (job manualfeed wait) empty C (setdostartpage\263) (bool) empty C (seteescratch\263) (index value) empty C (setidlefonts\263) {(mark font s)-(x)+( s)-(y)+( rot nchars )...} empty C (setjobtimeout) (int) empty C (setmargins\263) (top left) empty C (setpagetype\263) (int) empty C (setpassword\262) (old new) (bool) C (setprintername\263) (string) empty C (setsccbatch\263) (channel baud parity) empty C (setsccinteractive\263) (channel baud parity) empty C (waittimeout) empty (int) C % ========================== Typeface Samples ============================== /sampsize 8 def /sampstr 30 string def /sample { dup sampstr cvs % fontname fontstring exch findfont sampsize scalefont setfont show } def NL NL subheadfont setfont (Standard Fonts) CT NL NL % fontname1 fontname2 dsample - % shows two font samples side-by-side /dsample { exch sample 1.5 inch HT sample 10 VNL } def /Courier /Courier-Bold dsample /Courier-Oblique /Courier-BoldOblique dsample /Helvetica /Helvetica-Bold dsample /Helvetica-Oblique /Helvetica-BoldOblique dsample /Times-Roman /Times-Bold dsample /Times-Italic /Times-BoldItalic dsample /Courier findfont sampsize scalefont setfont (Symbol) show 10 VNL % /Symbol findfont % sampsize scalefont setfont % (Symbol) show % emphfont setfont % ( [Symbol]) show 10 VNL % ======================== line joins and caps ============================= /thick 5 def /thin 0 def % x1 wid cap capsamp - /capsamp { gsave /cap exch def exch /x1 exch def x1 add /x2 exch def /y currentpoint exch pop thick 2 div add def thick setlinewidth cap setlinecap newpath x1 y moveto x2 y lineto 0 setgray stroke x1 y 1 0 360 arc 1 setgray fill x2 y 1 0 360 arc 1 setgray fill x1 y moveto x2 y lineto thin setlinewidth 1 setgray stroke grestore } def % x1 wid ht join joinsamp /joinsamp { gsave /join exch def /ht exch def /wid exch def /x1 exch def /x3 x1 wid add def /x2 x1 x3 add 2 div def currentpoint exch pop /y1 exch def /y3 y1 def /y2 y1 ht add def 0 setlinecap join setlinejoin newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto 0 setgray thick setlinewidth stroke x1 y1 moveto x2 y2 lineto x3 y3 lineto 1 setgray thin setlinewidth stroke x2 y2 0.8 0 360 arc 1 setgray fill grestore } def subheadfont setfont NL NL (Line Joins and Caps) CT NL NL NL stackfont setfont (0 setlinecap) show 55 20 0 capsamp 1.5 inch HT (0 setlinejoin) show 165 16 12 0 joinsamp 20 VNL (1 setlinecap) show 55 20 1 capsamp 1.5 inch HT (1 setlinejoin) show 165 16 12 1 joinsamp 20 VNL (2 setlinecap) show 55 20 2 capsamp 1.5 inch HT (2 setlinejoin) show 165 16 12 2 joinsamp % ======================= encoding vector stuff ============================ /work ( ) def /work4 ( ) def /gridw 0.3 inch def /gridh 0.105 inch def /encsize 7 def /sampoffsety 2 def % vertical offset within box /labeloffsetx 2 def % horizontal offset for labels /insetw 5 def % insets for undefined character rectangles /inseth 2 def /fillw gridw insetw 2 mul sub def % width & height of inset rectangle /fillh gridh inseth 2 mul sub def % - centergrid - /centergrid { rmargin gridw 9 mul sub 2 div gridw add 0 rmoveto currentpoint translate } def % - dogrid - /dogrid { gsave newpath 0 1 8 { gridw mul 0 moveto 0 gridh 32 mul neg rlineto } for 0 setlinewidth 2 setlinecap stroke 0 1 32 { gridh mul neg 0 exch moveto gridw 8 mul 0 rlineto } for 0 setlinewidth 2 setlinecap [ gridw 3 div gridw 2 mul 3 div ] gridw 6 div setdash stroke grestore } def % - dolabels - /dolabels { gsave /Times-Italic findfont encsize scalefont setfont gridw neg 0 moveto labeloffsetx sampoffsety rmoveto (octal) show 0 1 7 { dup work cvs pop gridw mul 0 moveto work stringwidth pop gridw exch sub 2 div sampoffsety rmoveto work show } for 0 1 31 { /oct exch def /work4 (\\ x) def work4 1 oct 8 idiv 48 add put work4 2 oct 8 mod 48 add put gridw neg oct 1 add gridh mul neg moveto labeloffsetx sampoffsety rmoveto work4 show } for grestore } def % positions for character % charcode "pos" - /pos { /charcode exch def /x charcode 8 mod def /y charcode 8 idiv 1 add def x gridw mul y gridh mul neg moveto } def % shows one character from the current font /dochar { /charcode exch def currentfont /Encoding get charcode get /.notdef eq { % print a gray area for undefined characters gsave currentpoint newpath moveto insetw inseth rmoveto fillw 0 rlineto 0 fillh rlineto fillw neg 0 rlineto closepath 0.9 setgray fill grestore } { work 0 charcode put work stringwidth pop gridw exch sub 2 div sampoffsety rmoveto work show } ifelse } def % ================== end of encoding vector prologue ======================= PAGE NL subheadfont setfont (Standard Encoding Vector) CT NL NL gsave centergrid /Times-Roman findfont encsize scalefont setfont dogrid dolabels 0 1 255 { dup pos dochar } for grestore 0 gridh 32 mul neg rmoveto NL NL subheadfont setfont (Symbol Encoding Vector) CT NL NL gsave centergrid /Symbol findfont encsize scalefont setfont dogrid dolabels 0 1 255 { dup pos dochar } for grestore 0 gridh 32 mul neg rmoveto NL NL PAGE % ========================== LIST OF COMMANDS ============================== ([) empty (mark) C (]) {(mark obj)-(0)+( )...( obj)-(n-1)+} (array) C (=) (any) empty C (==) (any) empty C (abs) {(num)-(1)+} {(num)-(2)+} C (add) {(num)-(1)+( num)-(2)+} (sum) C (aload) (array) {(a)-(0)+( )...( a)-(n-1)+( array)} C ((if found)) RJ (anchorsearch) (string seek) (post match true) C ((if not found)) RJ (string false) CC (and) {(bool)-(1)+ |(int)-(1)+( bool)-(2)+ |(int)-(2)+} {(bool)-(3)+ |(int)-(3)+} C (arc) {(x y r ang)-(1)+( ang)-(2)+} empty C (arcn) {(x y r ang)-(1)+( ang)-(2)+} empty C (arcto) {(x)-(1)+( y)-(1)+( x)-(2)+( y)-(2)+( r)} {(xt)-(1)+( yt)-(1)+( xt)-(2)+( yt)-(2)+} C (array) (int) (array) C (ashow) {(a)-(x)+( a)-(y)+( string)} empty C (astore) {(any)-(0)+( )...( any)-(n-1)+( array)} (array) C (atan) (num den) (angle) C (awidthshow) {(c)-(x)+( c)-(y)+( char a)-(x)+( a)-(y)+( string)} empty C (banddevice) (matrix width height proc) empty C (begin) (dict) empty C (bind) (proc) (proc) C (bitshift) {(int)-(1)+( leftshift)} {(int)-(2)+} C (bytesavailable) (file) (int) C (cachestatus) empty {(b)-(size)+( b)-(max)+( m)-(size)+( m)-(max)+ ( c)-(size)+( c)-(max)+( b)-(limit)+} C (ceiling) {(num)-(1)+} {(num)-(2)+} C (charpath) (string bool) empty C (clear) {ts( any)-(1)+( )...( any)-(n)+} {ts} C (cleartomark) {(mark obj)-(1)+( )...( obj)-(n)+} empty C (clip) empty empty C (clippath) empty empty C (closefile) (file) empty C (closepath) empty empty C (concat) (matrix) empty C (concatmatrix) {(matrix)-(1)+( matrix)-(2)+( matrix)-(3)+} {(matrix)-(3)+} C (copy) {(any)-(1)+( )...( any)-(n)+( n)} {(any)-(1)+( )...( any)-(n)+( any)-(1)+( )...( any)-(n)+} C (copy) {(ar)-(1)+ |(dic)-(1)+ |(st)-(1)+( ar)-(2)+ |(dic)-(2)+ |(st)-(2)+} {(subarray)-(2)+ |(dict)-(2)+ |(substring)-(2)+} C (copypage) empty empty C (cos) (angle) (real) C (count) {ts( any)-(1)+( )...( any)-(n)+} {ts( any)-(1)+( )...( any)-(n)+( n)} C (countdictstack) empty (int) C (countexecstack) empty (int) C (counttomark) {(mark obj)-(1)+( )...( obj)-(n)+} {(mark obj)-(1)+( )...( obj)-(n)+( n)} C v38 (currentcacheparams) empty (mark lower upper) C (currentdash) empty (array offset) C (currentdict) empty (dict) C (currentfile) empty (file) C (currentflat) empty (number) C (currentfont) empty (font-dict) C (currentgray) empty (number) C (currenthsbcolor) empty (hue sat bright) C (currentlinecap) empty (integer) C (currentlinejoin) empty (integer) C (currentlinewidth) empty (number) C (currentmatrix) (matrix) (matrix) C (currentmiterlimit) empty (number) C v38 (currentpacking) empty (bool) C (currentpoint) empty (x y) C (currentrgbcolor) empty (red green blue) C (currentscreen) empty (freq angle proc) C (currenttransfer) empty (proc) C (curveto) {(x)-(1)+( y)-(1)+( x)-(2)+( y)-(2)+( x)-(3)+( y)-(3)+} empty C (cvi) {(num)|(string)} (int) C (cvlit) (any) (any) C (cvn) (string) (name) C (cvr) {(num)|(string)} (real) C (cvrs) (num radix string) (substring) C (cvs) (any string) (substring) C (cvx) (any) (any) C (def) (key value) empty C (defaultmatrix) (matrix) (matrix) C (definefont) (key font) (font) C (dict) (int) (dict) C (dictstack) (array) (subarray) C (div) {(num)-(1)+( num)-(2)+} (quotient) C (dtransform) (dx dy) {(dx)'( dy)'} C (dtransform) (dx dy matrix) {(dx)'( dy)'} C (dup) (any) (any any) C (echo) (bool) empty C (end) empty empty C (eoclip) empty empty C (eofill) empty empty C (eq) {(any)-(1)+( any)-(2)+} (bool) C (erasepage) empty empty C (errordict) empty (dict) C (exch) {(any)-(1)+( any)-(2)+} {(any)-(2)+( any)-(1)+} C (exec) (any) empty C (execstack) (array) (subarray) C (executeonly) {(array)|(file)|(string)} {(array)|(file)|(string)} C (exit) empty empty C (exp) (base exponent) (real) C (false) empty (false) C (file) (name access-mode) (file) C (fill) empty empty C (findfont) (key) (font) C (flattenpath) empty empty C (floor) {(num)-(1)+} {(num)-(2)+} C (flush) empty empty C (flushfile) (file) empty C (FontDirectory) empty (dict) C (for) (init incr limit proc) empty C (forall) {(array)|(dict)|(string proc)} empty C (framedevice) (matrix width height proc) empty C (ge) {(num)-(1)+ |(str)-(1)+( num)-(2)+ |(str)-(2)+} (bool) C (get) (array index) (any) C (get) (dict key) (any) C (get) (string index) (int) C (getinterval) {(array)|(string index count)} {(subarray)|(substring)} C (grestore) empty empty C (grestoreall) empty empty C (gsave) empty empty C (gt) {(num)-(1)+ |(str)-(1)+( num)-(2)+ |(str)-(2)+} (bool) C (identmatrix) (matrix) (matrix) C (idiv) {(int)-(1)+( int)-(2)+} (quotient) C (idtransform) {(dx)'( dy)'} (dx dy) C (idtransform) {(dx)'( dy)'( matrix)} (dx dy) C (if) (bool proc) empty C (ifelse) {(bool proc)-(1)+( proc)-(2)+} empty C (image) (w h b/s matrix proc) empty C (imagemask) (w h invert matrix proc) empty C (index) {(any)-(n)+( )...( any)-(0)+( n)} {(any)-(n)+( )...( any)-(0)+( any)-(n)+} C (initclip) empty empty C (initgraphics) empty empty C (initmatrix) empty empty C (invertmatrix) {(matrix)-(1)+( matrix)-(2)+} {(matrix)-(2)+} C (itransform) {(x)'( y)'} (x y) C (itransform) {(x)'( y)'( matrix)} (x y) C (known) (dict key) (bool) C (kshow) (proc string) empty C (le) {(num)-(1)+ |(str)-(1)+( num)-(2)+ |(str)-(2)+} (bool) C (length) {(array)|(dict)|(string)} (int) C (lineto) (x y) empty C (ln) (num) (real) C (load) (key) (value) C (log) (num) (real) C (loop) (proc) empty C (lt) {(num)-(1)+ |(str)-(1)+( num)-(2)+ |(str)-(2)+} (bool) C (makefont) (font matrix) {(font)'} C (mark) empty (mark) C (matrix) empty (matrix) C (maxlength) (dict) (int) C (mod) {(int)-(1)+( int)-(2)+} (remainder) C (moveto) (x y) empty C (mul) {(num)-(1)+( num)-(2)+} (product) C (ne) {(any)-(1)+( any)-(2)+} (bool) C (neg) {(num)-(1)+} {(num)-(2)+} C (newpath) empty empty C (noaccess) {(array)|(dict)|(file)|(string)} {(array)|(dict)|(file)|(string)} C (not) {(bool)-(1)+ |(int)-(1)+} {(bool)-(2)+ |(int)-(2)+} C (null) empty (null) C (nulldevice) empty empty C (or) {(bool)-(1)+ |(int)-(1)+( bool)-(2)+ |( int)-(2)+} {(bool)-(3)+ |(int)-(3)+} C v38 (packedarray) {(any)-(0)+( )...( any)-(n-1)+( n)} (packedarray) C (pathbbox) empty {(ll)-(x)+( ll)-(y)+( ur)-(x)+( ur)-(y)+} C (pathforall) (move line curve close) empty C (pop) (any) empty C (print) (string) empty C (prompt) empty empty C (pstack) {ts( any)-(1)+( )...( any)-(n)+} {ts( any)-(1)+( )...( any)-(n)+} C (put) (array index any) empty C (put) (dict key value) empty C (put) (string index int) empty C (putinterval) {(ar)-(1)+ |(str)-(1)+( index ar)-(2)+ |(str)-(2)+} empty C (quit) empty empty C (rand) empty (int) C (rcheck) {(array)|(dict)|(file)|(string)} (bool) C (rcurveto) {(dx)-(1)+( dy)-(1)+( dx)-(2)+( dy)-(2)+( dx)-(3)+( dy)-(3)+} empty C ((if not eof)) RJ (read) (file) (byte true) C ((if eof)) RJ (false) CC (readhexstring) (file string) (substring bool) C (readline) (file string) (substring bool) C (readonly) {(array)|(dict)|(file)|(string)} {(array)|(dict)|(file)|(string)} C (readstring) (file string) (substring bool) C (renderbands) (proc) empty C (repeat) (int proc) empty C (resetfile) (file) empty C (restore) (save) empty C (reversepath) empty empty C (rlineto) (dx dy) empty C (rmoveto) (dx dy) empty C (roll) {(any)-(n-1)+( )...( any)-(0)+( n j)} {(any)-((j-1) mod n)+( )...( any)-(0)+( any)-(n-1)+( )...( any)-(j mod n)+} C (rotate) (angle) empty C (rotate) (angle matrix) (matrix) C (round) {(num)-(1)+} {(num)-(2)+} C (rrand) empty (int) C (run) (string) empty C (save) empty (save) C (scale) {(s)-(x)+( s)-(y)+} empty C (scale) {(s)-(x)+( s)-(y)+( matrix)} (matrix) C (scalefont) (font scale) {(font)'} C ((if found)) RJ (search) (string seek) (post match pre true) C ((if not found)) RJ (string false) CC (setcachedevice) {(w)-(x)+( w)-(y)+( ll)-(x)+( ll)-(y)+ ( ur)-(x)+( ur)-(y)+} empty C (setcachelimit) (num) empty C v38 (setcacheparams) (mark lower upper) empty C (setcharwidth) {(w)-(x)+( w)-(y)+} empty C (setdash) (array offset) empty C (setflat) (num) empty C (setfont) (font) empty C (setgray) (num) empty C (sethsbcolor) (hue sat bright) empty C (setlinecap) (int) empty C (setlinejoin) (int) empty C (setlinewidth) (num) empty C (setmatrix) (matrix) empty C (setmiterlimit) (num) empty C v38 (setpacking) (bool) empty C (setrgbcolor) (red green blue) empty C (setscreen) (freq angle proc) empty C (settransfer) (proc) empty C (show) (string) empty C (showpage) empty empty C (sin) (angle) (real) C (sqrt) (num) (real) C (srand) (int) empty C (stack) {ts( any)-(1)+( )...( any)-(n)+} {ts( any)-(1)+( )...( any)-(n)+} C (StandardEncoding) empty (array) C (start) empty empty C (status) (file) (bool) C (stop) empty empty C (stopped) (any) (bool) C (store) (key value) empty C (string) (int) (string) C (stringwidth) (string) {(w)-(x)+( w)-(y)+} C (stroke) empty empty C (strokepath) empty empty C (sub) {(num)-(1)+( num)-(2)+} (difference) C (systemdict) empty (dict) C ((if found)) RJ (token) (file) (any true) C ((if not found)) RJ (false) CC ((if found)) RJ (token) (string) (post any true) C ((if not found)) RJ (false) CC (transform) (x y) {(x)'( y)'} C (transform) (x y matrix) {(x)'( y)'} C (translate) {(t)-(x)+( t)-(y)+} empty C (translate) {(t)-(x)+( t)-(y)+( matrix)} (matrix) C (true) empty (true) C (truncate) {(num)-(1)+} {(num)-(2)+} C (type) (any) (name) C (userdict) empty (dict) C (usertime) empty (int) C (version) empty (string) C (vmstatus) empty (savelevel used maximum) C (wcheck) {(array)|(dict)|(file)|(string)} (bool) C ((if found)) RJ (where) (key) (dict true) C ((if not found)) RJ (false) CC (widthshow) {(c)-(x)+( c)-(y)+( char string)} empty C (write) (file byte) empty C (writehexstring) (file string) empty C (writestring) (file string) empty C (xcheck) (any) (bool) C (xor) {(bool)-(1)+|(int)-(1)+( bool)-(2)+|(int)-(2)+} {(bool)-(3)+|(int)-(3)+} C NL subheadfont setfont (Errors) CT NL NL (dictfull) (invalidfont) (timeout) T (dictstackoverflow) (invalidrestore) (typecheck) T (dictstackunderflow) (ioerror) (undefined) T (execstackoverflow) (limitcheck) (undefinedfilename) T (handleerror) (nocurrentpoint) (undefinedresult) T (interrupt) (rangecheck) (unmatchedmark) T (invalidaccess) (stackoverflow) (unregistered) T (invalidexit) (stackunderflow) (VMerror) T (invalidfileaccess) (syntaxerror) () T showpage (done.\nCPU time = ) printf usertime starttime sub 1000 div == flush