%!PS-Adobe-2.0 %%Title: Blue Book Program 11, on page 171 %%Creator: Adobe Systems Incorporated %%CreationDate: Thu Dec 28 17:41:49 PST 1989 %%EndComments /pathtextdict 26 dict def /pathtext { pathtextdict begin /offset exch def /str exch def /pathdist 0 def /setdist offset def /charcount 0 def gsave flattenpath {movetoproc} {linetoproc} {curvetoproc} {closepathproc } pathforall grestore newpath end } def pathtextdict begin /movetoproc { /newy exch def /newx exch def /firstx newx def /firsty newy def /ovr 0 def newx newy transform /cpy exch def /cpx exch def } def /linetoproc { /oldx newx def /oldy newy def /newy exch def /newx exch def /dx newx oldx sub def /dy newy oldy sub def /dist dx dup mul dy dup mul add sqrt def dist 0 ne { /dsx dx dist div ovr mul def /dsy dy dist div ovr mul def oldx dsx add oldy dsy add transform /cpy exch def /cpx exch def /pathdist pathdist dist add def { setdist pathdist le { charcount str length lt {setchar} {exit} ifelse } { /ovr setdist pathdist sub def exit } ifelse } loop } if } def /curvetoproc { (ERROR: No curveto's after flattenpath!) print } def /closepathproc { firstx firsty linetoproc firstx firsty movetoproc } def /setchar { /char str charcount 1 getinterval def /charcount charcount 1 add def /charwidth char stringwidth pop def gsave cpx cpy itransform translate dy dx atan rotate 0 0 moveto char show currentpoint transform /cpy exch def /cpx exch def grestore /setdist setdist charwidth add def } def end /Helvetica findfont 16 scalefont setfont newpath 200 500 70 0 270 arc 200 110 add 500 70 270 180 arc (If my film makes one more person feel\ miserable I'll feel I've done my job.\ -- WOODY ALLEN) 55 pathtext newpath 150 310 moveto 360 310 lineto 360 400 lineto 150 400 lineto closepath 360 347 moveto 410 330 lineto 410 380 lineto 360 363 lineto 2 setlinewidth stroke % A PROBLEM FOR THE READER: This algorithm places characters % along the path according to the origin of each character. % Rewrite the algorithm so that the characters are placed % according to the center of their width. This will yield % better results around sharp curves and when larger point % sizes are used. showpage % But what does it do?