%!PS-Adobe-2.0 /r 360 26 div def % degrees in each segment /Tempstr 2 string def % for writing value to a string /Helvetica-Bold findfont 18 scalefont setfont /radius 120 def % size of outer circle /circleofLetters { [(A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)(L)(M) (N)(O)(P)(Q)(R)(S)(T)(U)(V)(W)(X)(Y)(Z)] /ary exch def % the array of letters 0 1 25{ % from 0 to 25 in steps of 1 /ind exch def % the for loop value gsave ind r mul neg rotate % rotate by (for loop value)*360/26 ary ind get stringwidth pop 2 div neg radius 30 add moveto ary ind get show % convert ind to string, store in Tempstr, using cvs ind Tempstr cvs stringwidth pop 2 div neg radius 10 add moveto ind Tempstr cvs show 3 setlinewidth 0 radius 50 add moveto 0 20 rlineto stroke grestore } for }def /circles { 3 setlinewidth 0 0 radius 60 add 0 360 arc stroke 0 0 6 0 360 arc stroke 1 setlinewidth 0 0 radius 80 add 0 360 arc [5 3] 0 setdash stroke } def /arrowhead { newpath 0 radius 78 add moveto -5 -12 rlineto 10 0 rlineto closepath fill } def /doitall { newpath -306 -396 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath stroke circleofLetters circles arrowhead /Helvetica-Bold findfont 13 scalefont setfont -45 50 moveto (Inner letters are) show -60 35 moveto (plaintext characters) show -80 -50 moveto (Set arrow on pad character) show -75 radius 100 add neg moveto ((Cut along dashed line.))show } def 306 396 translate % 0.6 0.6 scale doitall showpage