BEC.SHAPIN@ECLA.USC.EDU (Ted Shapin) (03/09/88)
%This shows how to add IBM-PC line graphic characters to %the PostScript Courier Font. (Not all graphics are here.) %x%x%x% cut here %x%x% %%Title: Courier font with added IBM-PC line graphics %%Creator: Ted Shapin, Beckman Instruments; (based upon Adobe info) %%CreationDate: 2/29/88 userdict /Bproc known not {/Bproc 15 dict def Bproc begin /charStr (.) def /foo {Bproc begin /char exch def /fd exch def save /Courier findfont 1000 scalefont setfont char 179 lt char 199 eq or{ charStr 0 char put /chnm (others) def fd /CharProcs get dup chnm known {chnm} {/.notdef} ifelse get newpath exec} {/chnm fd /Encoding get char get def fd /CharProcs get dup chnm known {chnm} {/.notdef} ifelse get 600 0 0 0 600 1000 setcachedevice newpath exec} ifelse %% char lt 179 restore end } def %% of /foo end} if %% of not known /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [0 0 600 1000] def /Encoding 256 array def /BuildChar { Bproc /foo get exec} def 0 1 255 {Encoding exch dup put} for %Encoding 17 /ltri put Encoding 179 /cvbar put Encoding 185 /dvdlbar put Encoding 186 /dvbar put Encoding 187 /tdcr put Encoding 188 /bdcr put Encoding 191 /tccr put Encoding 192 /bccl put Encoding 196 /chbar put Encoding 200 /bdcl put Encoding 201 /tdcl put Encoding 203 /dhddbar put Encoding 204 /dvdrbar put Encoding 205 /dhbar put Encoding 217 /bccr put Encoding 218 /tccl put /CharProcs 20 dict def CharProcs begin /.notdef{} def /cvbar{ %179 300 0 moveto 300 1000 lineto 40 setlinewidth stroke } def /dvdlbar{ %185 0 600 moveto 200 600 lineto 200 1000 lineto 0 400 moveto 200 400 lineto 200 0 moveto 200 400 lineto 400 0 moveto 400 1000 lineto 40 setlinewidth stroke} def /dvbar{ %186 200 0 moveto 200 1000 lineto 400 0 moveto 400 1000 lineto 40 setlinewidth stroke} def /tdcr{ %187 0 400 moveto 200 400 lineto 200 0 moveto 200 400 lineto 0 600 moveto 400 600 lineto 400 0 moveto 400 600 lineto 40 setlinewidth stroke} def /bdcr{ %188 0 600 moveto 200 600 lineto 200 1000 lineto 0 400 moveto 400 400 lineto 400 1000 lineto 40 setlinewidth stroke} def /tccr{ %191 300 0 moveto 300 500 lineto 0 500 moveto 300 500 lineto 40 setlinewidth stroke} def /bccl{ %192 300 500 moveto 300 1000 lineto 300 500 moveto 600 500 lineto 40 setlinewidth stroke} def /chbar{ %196 0 500 moveto 600 500 lineto 40 setlinewidth stroke} def /bdcl{ %200 200 400 moveto 200 1000 lineto 200 400 moveto 600 400 lineto 400 600 moveto 400 1000 lineto 400 600 moveto 600 600 lineto 40 setlinewidth stroke} def /tdcl{ %201 200 0 moveto 200 600 lineto 600 600 lineto 400 0 moveto 400 400 lineto 600 400 lineto 40 setlinewidth stroke} def /dhddbar{ %203 0 400 moveto 200 400 lineto 200 0 moveto 200 400 lineto 400 0 moveto 400 400 lineto 600 400 lineto 0 600 moveto 600 600 lineto 40 setlinewidth stroke} def /dvdrbar{ %204 400 0 moveto 400 400 lineto 600 400 lineto 400 600 moveto 400 1000 lineto 400 600 moveto 600 600 lineto 200 0 moveto 200 1000 lineto 40 setlinewidth stroke} def /dhbar{ %205 0 400 moveto 600 400 lineto 0 600 moveto 600 600 lineto 40 setlinewidth stroke} def /bccr{ %217 0 500 moveto 300 500 lineto 300 1000 lineto 40 setlinewidth stroke} def /tccl{ %218 300 0 moveto 300 500 lineto 600 500 lineto 40 setlinewidth stroke} def /ltri{ %17 200 325 moveto 900 750 lineto 900 0 lineto closepath fill } def /others {600 0 0 -200 600 1000 setcachedevice newpath 0 0 moveto charStr show } def end % of CharProcs end /Courier-G newfont definefont pop % ************************************* % Now print out the whole font %--------Variables & Procedures /textfont {/Courier findfont 10 scalefont setfont }def /zfont {/Courier-G findfont 10 scalefont setfont }def /char 1 string def /nstr 3 string def /newline {currentpoint 11 sub exch pop LM exch moveto} def /prt-n %stack:code {textfont nstr cvs show} def /prtchar %stack:code {zfont char 0 3 -1 roll put char show} def /PrintCodeandChar %stack:code {dup prt-n ( )show prtchar newline} def %--------Begin Program ------- /LM 72 def LM 750 moveto 0 1 63{PrintCodeandChar} for /LM 144 def LM 750 moveto 64 1 127{PrintCodeandChar} for /LM 216 def LM 750 moveto 128 1 191 {PrintCodeandChar} for /LM 288 def LM 750 moveto 192 1 255 {PrintCodeandChar} for showpage -------