dudkl@dcatla.UUCP (Danny K. Llewallyn) (06/28/89)
Sorry I botched up the last posting. Here is the IBM Extended Font that I downloaded off of the net a while back. From gatech!cwjcc!tut.cis.ohio-state.edu!cs.utexas.edu!uunet!mcvax!ukc!warwick!cudac Thu May 25 07:47:30 EDT 1989 Article 2432 of comp.lang.postscript: Path: dcatla!gatech!cwjcc!tut.cis.ohio-state.edu!cs.utexas.edu!uunet!mcvax!ukc!warwick!cudac >From: cudac@warwick.ac.uk (Tim Clark) Newsgroups: comp.lang.postscript Subject: Re: PC graphic fonts. (long) Keywords: IBM PC font Message-ID: <2600@sol.warwick.ac.uk> Date: 19 May 89 12:26:10 GMT References: <102@ajfcal.UUCP> Reply-To: cudac@warwick.ac.uk (Tim Clark) Organization: Computing Services, University of Warwick, UK Lines: 620 In article <102@ajfcal.UUCP> tony@ajfcal.UUCP (Tony Field) writes: >Is an IBM-PC graphic character font set available for postscript >compatible with the Courier fixed pitch font? I developed a crude definition of all characters in the IBM PC font which do not exist in Adobe standard or symbol fonts. It was originally for use with Microsoft Word. PostScript to define the extra characters follows. Bugs: PC characters 1,2,8 and 10 (the smiley faces and dots/circles in boxes) don't scale too well. Some characters are formed by combinations of characters from the Times-Roman font and look rather messy. You are welcome to make whatever use you wish of the definition below. As mentioned, it is rather crude, but at least it lets our PC users get a representation of the special characters, without having to do a screen dump. Note that it only defines the font, other software will be required to actually make use of it. % IBMextended font definition % Defines the characters in the IBM-PC extended character set, not % found elsewhere in Adobe fonts % Produced by Tim Clark, Computing Services, University of Warwick UK % (T.Clark@warwick.ac.uk) % No restrictions are placed on the use of this information /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [0 -200 600 800] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 33 /wsmiley put Encoding 34 /bsmiley put Encoding 35 /rarrowhead put Encoding 36 /larrowhead put Encoding 37 /exclamdbl put Encoding 38 /bar put Encoding 39 /updownua put Encoding 40 /lblcorn put Encoding 41 /Psubt put Encoding 42 /ltlcorn put Encoding 43 /half put Encoding 44 /quarter put Encoding 45 /xhatch1 put Encoding 46 /xhatch2 put Encoding 47 /xhatch3 put Encoding 48 /vers put Encoding 49 /rtss put Encoding 50 /rtds put Encoding 51 /rtsd put Encoding 52 /trsd put Encoding 53 /trds put Encoding 54 /rtdd put Encoding 55 /verd put Encoding 56 /trdd put Encoding 57 /brdd put Encoding 58 /brsd put Encoding 59 /brds put Encoding 60 /trss put Encoding 61 /blss put Encoding 62 /btss put Encoding 63 /ttss put Encoding 64 /ltss put Encoding 65 /hors put Encoding 66 /crss put Encoding 67 /ltds put Encoding 68 /ltsd put Encoding 69 /bldd put Encoding 70 /tldd put Encoding 71 /btdd put Encoding 72 /ttdd put Encoding 73 /ltdd put Encoding 74 /hord put Encoding 75 /crdd put Encoding 76 /btds put Encoding 77 /btsd put Encoding 78 /ttds put Encoding 79 /ttsd put Encoding 80 /blsd put Encoding 81 /blds put Encoding 82 /tlds put Encoding 83 /tlsd put Encoding 84 /crsd put Encoding 85 /crds put Encoding 86 /brss put Encoding 87 /tlss put Encoding 88 /block put Encoding 89 /blockb put Encoding 90 /blockl put Encoding 91 /blockr put Encoding 92 /blockt put Encoding 93 /updowna put Encoding 94 /uarrowhead put Encoding 95 /darrowhead put Encoding 96 /ltrcorn put Encoding 97 /sup2 put Encoding 98 /squaredot put Encoding 99 /whitedot put Encoding 100 /circle put Encoding 101 /whitecircle put Encoding 102 /mars put Encoding 103 /venus put Encoding 104 /quaver put Encoding 105 /doublequaver put /CharProcs 74 dict def CharProcs begin /.notdef {} def /wsmiley { % position 33, PC char 1, white smiley face newpath 300 300 280 0 360 arc closepath 40 setlinewidth stroke 300 300 150 210 330 arc 1 setlinecap stroke 200 400 40 0 360 arc closepath fill 400 400 40 0 360 arc closepath fill } def /bsmiley { % position 34, PC char 2, black smiley face newpath 300 300 300 0 360 arc closepath fill 300 300 150 210 330 arc 1 setgray 1 setlinecap 100 setlinewidth stroke 200 400 70 0 360 arc closepath fill 400 400 70 0 360 arc closepath fill } def /rarrowhead { % position 35, PC char 16, right pointing arrow-head newpath 600 300 moveto 0 600 lineto 0 0 lineto 600 300 lineto closepath fill } def /larrowhead { % position 36, PC char 17, left pointing arrow-head newpath 0 300 moveto 600 600 lineto 600 0 lineto 0 300 lineto closepath fill } def /exclamdbl { % position 37, PC char 19, double exclamation mark /Times-Roman findfont 1000 scalefont setfont 0 0 moveto -100 0 (!!) ashow } def /bar { % position 38, PC char 22, short fat bar newpath 50 200 moveto 50 400 lineto 550 400 lineto 550 200 lineto 50 200 lineto closepath fill } def /updownua { % position 39, PC char 23, underscored up and down pointing arrow /Symbol findfont 1000 scalefont setfont 50 50 moveto (\137) show 0 -150 moveto (\255) show 0 -150 moveto (\257) show } def /lblcorn { % position 40, PC char 28, little bottom left corner newpath 30 300 moveto 30 30 lineto 600 30 lineto stroke } def /Psubt { % position 41, PC char 158, P subscript t /Times-Roman findfont dup 1000 scalefont setfont 0 0 moveto (P) show 667 scalefont setfont 250 -80 moveto (t) show } def /ltlcorn { % position 42, PC char 169, little top left corner newpath 30 0 moveto 30 300 lineto 600 300 lineto stroke } def /half { % position 43, PC char 171, half /Times-Roman findfont 600 scalefont setfont 0 300 moveto (1) show 240 -100 moveto (2) show newpath 70 150 moveto 530 460 lineto 36 setlinewidth stroke } def /quarter { % position 44, PC char 172, quarter /Times-Roman findfont 600 scalefont setfont 0 300 moveto (1) show 240 -100 moveto (4) show newpath 70 150 moveto 530 460 lineto 36 setlinewidth stroke } def /xhatch1 { % position 45, PC char 176, light cross hatching 0 200 400 { -200 200 600 { exch dup 3 -1 roll newpath moveto 40 40 rmoveto 0 20 rlineto 20 0 rlineto 0 -20 rlineto -20 0 rlineto closepath fill } for pop } for 100 200 500 { -100 200 700 { exch dup 3 -1 roll newpath moveto 40 40 rmoveto 0 20 rlineto 20 0 rlineto 0 -20 rlineto -20 0 rlineto closepath fill } for pop } for } def /xhatch2 { % position 46, PC char 177, medium cross hatching 0 200 400 { -200 200 600 { exch dup 3 -1 roll newpath moveto 20 20 rmoveto 0 60 rlineto 60 0 rlineto 0 -60 rlineto -60 0 rlineto closepath fill } for pop } for 100 200 500 { -100 200 700 { exch dup 3 -1 roll newpath moveto 20 20 rmoveto 0 60 rlineto 60 0 rlineto 0 -60 rlineto -60 0 rlineto closepath fill } for pop } for } def /xhatch3 { % position 47, PC char 178, heavy cross hatching 0 200 400 { -200 200 600 { exch dup 3 -1 roll newpath moveto 0 100 rlineto 100 0 rlineto 0 -100 rlineto -100 0 rlineto closepath fill } for pop } for 100 200 500 { -100 200 700 { exch dup 3 -1 roll newpath moveto 0 100 rlineto 100 0 rlineto 0 -100 rlineto -100 0 rlineto closepath fill } for pop } for } def /vers { % position 48, PC char 179, vertical single newpath 300 -200 moveto 300 800 lineto stroke } def /rtss { % position 49, PC char 180, right tee single single newpath 300 -200 moveto 300 800 lineto 0 300 moveto 300 300 lineto stroke } def /rtds { % position 50, PC char 181, right tee double single newpath 300 -200 moveto 300 800 lineto 0 200 moveto 300 200 lineto 0 400 moveto 300 400 lineto stroke } def /rtsd { % position 51, PC char 182, right tee single double newpath 200 -200 moveto 200 800 lineto 400 -200 moveto 400 800 lineto 0 300 moveto 200 300 lineto stroke } def /trsd { % position 52, PC char 183, top right single double newpath 0 300 moveto 400 300 lineto 400 -200 lineto 200 300 moveto 200 -200 lineto stroke } def /trds { % position 53, PC char 184, top right double single newpath 0 400 moveto 300 400 lineto 300 -200 lineto 0 200 moveto 300 200 lineto stroke } def /rtdd { % position 54, PC char 185, top right double double newpath 400 -200 moveto 400 800 lineto 0 200 moveto 200 200 lineto 200 -200 lineto 0 400 moveto 200 400 lineto 200 800 lineto stroke } def /verd { % position 55, PC char 186, vertical double newpath 200 -200 moveto 200 800 lineto 400 -200 moveto 400 800 lineto stroke } def /trdd { % position 56, PC char 187, top right double double newpath 0 400 moveto 400 400 lineto 400 -200 lineto 0 200 moveto 200 200 lineto 200 -200 lineto stroke } def /brdd { % position 57, PC char 188, bottom right double double newpath 0 200 moveto 400 200 lineto 400 800 lineto 0 400 moveto 200 400 lineto 200 800 lineto stroke } def /brsd { % position 58, PC char 189, bottom right single double newpath 0 300 moveto 400 300 lineto 400 800 lineto 200 300 moveto 200 800 lineto stroke } def /brds { % position 59, PC char 190, bottom right double single newpath 0 200 moveto 300 200 lineto 300 800 lineto 0 400 moveto 300 400 lineto stroke } def /trss { % position 60, PC char 191, top right single single newpath 0 300 moveto 300 300 lineto 300 -200 lineto stroke } def /blss { % position 61, PC char 192, bottom left single single newpath 300 800 moveto 300 300 lineto 600 300 lineto stroke } def /btss { % position 62, PC char 193, bottom tee single single newpath 0 300 moveto 600 300 lineto 300 300 moveto 300 800 lineto stroke } def /ttss { % position 63, PC char 194, top tee single single newpath 0 300 moveto 600 300 lineto 300 300 moveto 300 -200 lineto stroke } def /ltss { % position 64, PC char 195, left tee single single newpath 300 -200 moveto 300 800 lineto 300 300 moveto 600 300 lineto stroke } def /hors { % position 65, PC char 196, horizontal sngle newpath 0 300 moveto 600 300 lineto stroke } def /crss { % position 66, PC char 197, cross single single newpath 0 300 moveto 600 300 lineto 300 -200 moveto 300 800 lineto stroke } def /ltds { % position 67, PC char 198, left tee double single newpath 300 -200 moveto 300 800 lineto 300 200 moveto 600 200 lineto 300 400 moveto 600 400 lineto stroke } def /ltsd { % position 68, PC char 199, left tee single double newpath 200 -200 moveto 200 800 lineto 400 -200 moveto 400 800 lineto 400 300 moveto 600 300 lineto stroke } def /bldd { % position 69, PC char 200, bottom left double double newpath 200 800 moveto 200 200 lineto 600 200 lineto 400 800 moveto 400 400 lineto 600 400 lineto stroke } def /tldd { % position 70, PC char 201, top left double double newpath 200 -200 moveto 200 400 lineto 600 400 lineto 400 -200 moveto 400 200 lineto 600 200 lineto stroke } def /btdd { % position 71, PC char 202, bottom tee double double newpath 0 200 moveto 600 200 lineto 0 400 moveto 200 400 lineto 200 800 lineto 400 800 moveto 400 400 lineto 600 400 lineto stroke } def /ttdd { % position 72, PC char 203, top tee double double newpath 0 400 moveto 600 400 lineto 0 200 moveto 200 200 lineto 200 -200 lineto 400 -200 moveto 400 200 lineto 600 200 lineto stroke } def /ltdd { % position 73, PC char 204, left tee double double newpath 200 -200 moveto 200 800 lineto 400 -200 moveto 400 200 lineto 600 200 lineto 400 800 moveto 400 400 lineto 600 400 lineto stroke } def /hord { % position 74, PC char 205, horizontal double newpath 0 200 moveto 600 200 lineto 0 400 moveto 600 400 lineto stroke } def /crdd { % position 75, PC char 206, cross double double newpath 0 400 moveto 200 400 lineto 200 800 lineto 400 800 moveto 400 400 lineto 600 400 lineto 400 -200 moveto 400 200 lineto 600 200 lineto 0 200 moveto 200 200 lineto 200 -200 lineto stroke } def /btds { % position 76, PC char 207, bottom tee double single newpath 0 200 moveto 600 200 lineto 0 400 moveto 600 400 lineto 300 400 moveto 300 800 lineto stroke } def /btsd { % position 77, PC char 208, bottom tee single double newpath 0 300 moveto 600 300 lineto 200 300 moveto 200 800 lineto 400 300 moveto 400 800 lineto stroke } def /ttds { % position 78, PC char 209, top tee double single newpath 0 400 moveto 600 400 lineto 0 200 moveto 600 200 lineto 300 200 moveto 300 -200 lineto stroke } def /ttsd { % position 79, PC char 210, top tee single double newpath 0 300 moveto 600 300 lineto 200 300 moveto 200 -200 lineto 400 300 moveto 400 -200 lineto stroke } def /blsd { % position 80, PC char 211, bottom left single double newpath 200 800 moveto 200 300 lineto 600 300 lineto 400 800 moveto 400 300 lineto stroke } def /blds { % position 81, PC char 212, bottom left double single newpath 300 800 moveto 300 200 lineto 600 200 lineto 300 400 moveto 600 400 lineto stroke } def /tlds { % position 82, PC char 213, top left double single newpath 300 -200 moveto 300 400 lineto 600 400 lineto 300 200 moveto 600 200 lineto stroke } def /tlsd { % position 83, PC char 214, top left single double newpath 200 -200 moveto 200 300 lineto 600 300 lineto 400 -200 moveto 400 300 lineto stroke } def /crsd { % position 84, PC char 215, cross single double newpath 0 300 moveto 600 300 lineto 200 -200 moveto 200 800 lineto 400 -200 moveto 400 800 lineto stroke } def /crds { % position 85, PC char 216, cross double single newpath 0 200 moveto 600 200 lineto 0 400 moveto 600 400 lineto 300 -200 moveto 300 800 lineto stroke } def /brss { % position 86, PC char 217, bottom right single single newpath 0 300 moveto 300 300 lineto 300 800 lineto stroke } def /tlss { % position 87, PC char 218, top left single single newpath 300 -200 moveto 300 300 lineto 600 300 lineto stroke } def /block { % position 88, PC char 219, solid full size block newpath 0 -200 moveto 0 800 lineto 600 800 lineto 600 -200 lineto 0 -200 lineto closepath fill } def /blockb { % position 89, PC char 220, solid bottom half block newpath 0 -200 moveto 0 300 lineto 600 300 lineto 600 -200 lineto 0 -200 lineto closepath fill } def /blockl { % position 90, PC char 221, solid left half block newpath 0 -200 moveto 0 800 lineto 300 800 lineto 300 -200 lineto 0 -200 lineto closepath fill } def /blockr { % position 91, PC char 222, solid right half block newpath 300 -200 moveto 300 800 lineto 600 800 lineto 600 -200 lineto 300 -200 lineto closepath fill } def /blockt { % position 92, PC char 223, solid top half block newpath 0 300 moveto 0 800 lineto 600 800 lineto 600 300 lineto 0 300 lineto closepath fill } def /updowna { % position 93, PC char 18, up and down pointing arrow /Symbol findfont 1000 scalefont setfont 0 -150 moveto (\255) show 0 -150 moveto (\257) show } def /uarrowhead { % position 94, PC char 30, upwards arrow head newpath 0 0 moveto 600 0 lineto 300 700 lineto 0 0 lineto closepath fill } def /darrowhead { % position 95, PC char 31, downwards arrow head newpath 0 700 moveto 600 700 lineto 300 0 lineto 0 700 lineto closepath fill } def /ltrcorn { % position 96, PC char 170, little top right corner newpath 0 300 moveto 570 300 lineto 570 0 lineto stroke } def /sup2 { % position 97, PC char 253, superscript 2 /Times-Roman findfont 600 scalefont setfont 120 380 moveto (2) show } def /squaredot { % position 98, PC char 254, centered square dot newpath 200 200 moveto 200 400 lineto 400 400 lineto 400 200 lineto 200 200 lineto closepath fill } def /whitedot { % position 99, PC char 8, black square with white dot newpath 0 0 moveto 0 600 lineto 600 600 lineto 600 0 lineto 0 0 lineto closepath fill 300 300 150 0 360 arc closepath 1 setgray fill } def /circle { % position 100, PC char 9, large circle newpath 300 300 270 0 360 arc closepath stroke } def /whitecircle { % position 101, PC char 10, black square with white circle newpath 0 0 moveto 0 600 lineto 600 600 lineto 600 0 lineto 0 0 lineto closepath fill 300 300 225 0 360 arc closepath 100 setlinewidth 1 setgray stroke } def /mars { % position 102, PC char 11, mars masculine newpath 200 200 170 0 360 arc closepath stroke 341 341 moveto 470 470 lineto stroke 550 550 moveto 550 390 lineto 390 550 lineto 550 550 lineto closepath fill } def /venus { % position 103, PC char 12, venus feminine newpath 300 500 170 0 360 arc closepath stroke 300 0 moveto 300 300 lineto 150 150 moveto 450 150 lineto stroke } def /quaver { % position 104, PC char 13, quaver 300 150 translate gsave 30 rotate 1.5 1 scale newpath -100 0 100 0 360 arc closepath fill grestore newpath 0 0 moveto 0 550 lineto stroke 0 550 moveto 0 0 200 550 200 120 curveto 200 550 0 550 0 500 curveto closepath fill } def /doublequaver { % position 105, PC char 14, two joined quavers newpath 250 300 moveto 250 700 lineto 550 550 lineto 550 150 lineto stroke gsave 250 300 translate 30 rotate 1.5 1 scale newpath -100 0 100 0 360 arc closepath fill grestore gsave 550 150 translate 30 rotate 1.5 1 scale newpath -100 0 100 0 360 arc closepath fill grestore } def end /BuildChar { 600 0 setcharwidth 0 setgray 60 setlinewidth 0 setlinecap exch begin Encoding exch get CharProcs exch get end exec } def end /IBMextended newfont definefont pop %End of definition of IBMextended ------------------------------------------------------------------------------ T.Clark@warwick.ac.uk | Post: Computing Services JANET: T.Clark@uk.ac.warwick \ University of Warwick Internet: T.Clark%warwick.ac.uk@nsfnet-relay.ac.uk | Coventry, UK EARN/BITNET: T.Clark%warwick.ac.uk@UKACRL / CV4 7AL UUCP: T.Clark%warwick.ac.uk@ukc.uucp | Phone: +44 203 523224