|
|
1.1 ! root 1: % ! 2: % Formatted font dump. Assumes all fonts include valid FontBBox arrays. ! 3: % ! 4: ! 5: /#copies 1 store ! 6: /aspectratio 1 def ! 7: /landscape false def ! 8: /magnification 1 def ! 9: /margin 10 def ! 10: /orientation 0 def ! 11: /rotation 1 def ! 12: /xoffset 0 def ! 13: /yoffset 0 def ! 14: ! 15: /axescount 0 def ! 16: /charwidth false def ! 17: /graynotdef 0.85 def ! 18: /hireslinewidth 0.2 def ! 19: /longnames false def ! 20: /maxsize 6.0 def ! 21: /minsize 4.5 def ! 22: /numbercell true def ! 23: /radix 16 def ! 24: /labelfont /Helvetica def ! 25: /labelspace 36 def ! 26: /zerocell 0 def ! 27: ! 28: /roundpage true def ! 29: /useclippath true def ! 30: /pagebbox [0 0 612 792] def ! 31: ! 32: /inch {72 mul} def ! 33: /min {2 copy gt {exch} if pop} def ! 34: /max {2 copy lt {exch} if pop} def ! 35: ! 36: /LLx {0 get} bind def ! 37: /LLy {1 get} bind def ! 38: /URx {2 get} bind def ! 39: /URy {3 get} bind def ! 40: /BBoxHeight {dup URy exch LLy sub} bind def ! 41: /BBoxWidth {dup URx exch LLx sub} bind def ! 42: ! 43: /setup { ! 44: /graylevels [1 0 0] def ! 45: /scratchstring 512 string def ! 46: /Product statusdict begin /product where {pop product}{(Unknown)} ifelse end def ! 47: /Resolution 0 72 dtransform dup mul exch dup mul add sqrt cvi def ! 48: /Version /version where {pop version}{(???)} ifelse def ! 49: ! 50: landscape {/orientation 90 orientation add def} if ! 51: ! 52: pagedimensions ! 53: xcenter ycenter translate ! 54: orientation rotation mul rotate ! 55: width 2 div neg height 2 div translate ! 56: xoffset inch yoffset inch neg translate ! 57: margin dup neg translate ! 58: 0 labelspace .75 mul neg translate ! 59: magnification dup aspectratio mul scale ! 60: 0 0 transform round exch round exch itransform translate ! 61: ! 62: currentdict /linewidth known not { ! 63: /linewidth Resolution 400 le {0}{hireslinewidth} ifelse def ! 64: } if ! 65: } def ! 66: ! 67: /pagedimensions { ! 68: useclippath { ! 69: /pagebbox [clippath pathbbox newpath] def ! 70: roundpage currentdict /roundpagebbox known and {roundpagebbox} if ! 71: } if ! 72: pagebbox aload pop ! 73: 4 -1 roll exch 4 1 roll 4 copy ! 74: landscape {4 2 roll} if ! 75: sub /width exch def ! 76: sub /height exch def ! 77: add 2 div /xcenter exch def ! 78: add 2 div /ycenter exch def ! 79: } def ! 80: ! 81: /CharSetup { ! 82: /chcode exch def ! 83: /chname Encoding chcode get def ! 84: /chstring ( ) dup 0 chcode put def ! 85: /chknown true def ! 86: ! 87: graylevels 0 1 put % initial cell fill ! 88: graylevels 1 0 put % cell text ! 89: graylevels 2 0 put % cell border ! 90: ! 91: FontDict /CharStrings known { ! 92: FontDict /CharStrings get chname known not { ! 93: /chknown false def ! 94: graylevels 0 0 put ! 95: graylevels 1 1 put ! 96: } if ! 97: } if ! 98: ! 99: chname /.notdef eq { ! 100: /chknown false def ! 101: graylevels 0 graynotdef put ! 102: graylevels 1 graynotdef put ! 103: } if ! 104: ! 105: /chwid chknown ! 106: {FontDict 1 scalefont setfont chstring stringwidth pop} ! 107: {0} ! 108: ifelse def ! 109: } bind def ! 110: ! 111: /CellSetup { ! 112: /gridwidth width margin 2 mul sub def ! 113: /gridheight height labelspace sub margin 2 mul sub def ! 114: /cellwidth gridwidth radix div def ! 115: /cellheight gridheight Entries radix div ceiling div def ! 116: ! 117: cellwidth cellheight dtransform truncate exch truncate exch idtransform ! 118: /cellheight exch def ! 119: /cellwidth exch def ! 120: ! 121: labelfont findfont 1 scalefont setfont ! 122: /LabelBBox currentfont /FontBBox get TransformBBox def ! 123: ! 124: LabelBBox 2 0 Encoding { ! 125: scratchstring cvs stringwidth pop ! 126: 2 copy lt {exch} if ! 127: pop ! 128: } forall put ! 129: ! 130: /CellLabelSize ! 131: cellheight .20 mul cellwidth .90 mul LabelBBox BestFit ! 132: minsize max ! 133: maxsize min ! 134: def ! 135: zerocell CellOrigin cellheight add neg exch neg exch translate ! 136: } bind def ! 137: ! 138: /FontSetup { ! 139: FontName findfont 1 scalefont setfont ! 140: /BBox currentfont /FontBBox get TransformBBox def ! 141: /PointSize cellheight .5 mul cellwidth .8 mul BBox BestFit def ! 142: BBox {PointSize mul} forall BBox astore pop ! 143: ! 144: /xorigin cellwidth BBox BBoxWidth sub 2 div BBox LLx sub def ! 145: /yorigin cellheight BBox BBoxHeight sub 2 div BBox LLy sub def ! 146: } bind def ! 147: ! 148: /BestFit { ! 149: /bbox exch def ! 150: bbox BBoxWidth div exch ! 151: bbox BBoxHeight div min ! 152: } bind def ! 153: ! 154: /TransformBBox { % font bbox to user space ! 155: aload pop ! 156: currentfont /FontMatrix get dtransform 4 2 roll ! 157: currentfont /FontMatrix get dtransform 4 2 roll ! 158: 4 array astore % should build user space bbox if all zeros ! 159: } bind def ! 160: ! 161: /CellOrigin { ! 162: dup ! 163: exch radix mod cellwidth mul ! 164: exch radix idiv 1 add neg cellheight mul ! 165: } bind def ! 166: ! 167: /CellOutline { ! 168: newpath ! 169: CellOrigin moveto ! 170: cellwidth 0 rlineto ! 171: 0 cellheight rlineto ! 172: cellwidth neg 0 rlineto ! 173: closepath ! 174: } bind def ! 175: ! 176: /LabelCell { ! 177: gsave ! 178: chcode CellOrigin translate ! 179: linewidth .5 mul setlinewidth ! 180: labelfont findfont CellLabelSize scalefont setfont ! 181: ! 182: numbercell { ! 183: cellwidth .025 mul cellheight .05 mul moveto ! 184: chcode radix scratchstring cvrs show ! 185: } if ! 186: ! 187: charwidth chknown and { ! 188: /wid chwid 0.0005 add scratchstring cvs 0 5 getinterval def ! 189: cellwidth wid stringwidth pop 1.10 mul sub cellheight .05 mul moveto ! 190: wid show ! 191: } if ! 192: ! 193: longnames chknown not or { ! 194: cellwidth .025 mul ! 195: cellheight LabelBBox URy CellLabelSize mul sub .05 sub moveto ! 196: Encoding chcode get scratchstring cvs show ! 197: } if ! 198: ! 199: axescount 1 ge chknown and { % gsave/grestore if not last ! 200: newpath ! 201: xorigin yorigin translate ! 202: ! 203: BBox LLx 0 moveto % baseline ! 204: BBox URx 0 lineto stroke ! 205: ! 206: axescount 2 ge { % vertical through current origin ! 207: 0 BBox LLy moveto ! 208: 0 BBox URy lineto stroke ! 209: } if ! 210: ! 211: axescount 3 ge { % vertical through next origin ! 212: chwid PointSize mul BBox LLy ! 213: dtransform round exch round exch idtransform moveto ! 214: 0 BBox BBoxHeight rlineto stroke ! 215: %chwid PointSize mul BBox URy lineto stroke ! 216: } if ! 217: } if ! 218: grestore ! 219: } bind def ! 220: ! 221: /PlaceChar { ! 222: FontName findfont PointSize scalefont setfont ! 223: chcode CellOrigin moveto ! 224: xorigin yorigin rmoveto ! 225: ( ) dup 0 chcode put show ! 226: } bind def ! 227: ! 228: /LabelPage { ! 229: labelfont findfont labelspace .75 mul .75 mul 18 min scalefont setfont ! 230: 0 labelspace .75 mul .25 mul moveto ! 231: FontName scratchstring cvs show ! 232: ! 233: labelfont findfont labelspace .25 mul .75 mul 9 min scalefont setfont ! 234: 0 gridheight neg moveto ! 235: 0 labelspace .25 mul .75 mul neg rmoveto ! 236: Product show ( Version ) show Version show ! 237: ( \() show Resolution scratchstring cvs show (dpi\)) show ! 238: ! 239: gridwidth gridheight neg moveto ! 240: 0 labelspace .25 mul .75 mul neg rmoveto ! 241: (size=, ) stringwidth pop neg 0 rmoveto ! 242: PointSize cvi scratchstring cvs stringwidth pop neg 0 rmoveto ! 243: (gray=, ) stringwidth pop neg 0 rmoveto ! 244: graynotdef scratchstring cvs stringwidth pop neg 0 rmoveto ! 245: (linewidth=) stringwidth pop neg 0 rmoveto ! 246: linewidth scratchstring cvs stringwidth pop neg 0 rmoveto ! 247: (size=) show PointSize cvi scratchstring cvs show (, ) show ! 248: (gray=) show graynotdef scratchstring cvs show (, ) show ! 249: (linewidth=) show linewidth scratchstring cvs show ! 250: } bind def ! 251: ! 252: % ! 253: % Formatted dump of the encoded characters in a single font. ! 254: % ! 255: ! 256: /PrintFont { ! 257: /saveobj save def ! 258: /FontName exch def ! 259: /FontDict FontName findfont def ! 260: /Encoding FontDict /Encoding get def ! 261: /Entries Encoding length def ! 262: ! 263: CellSetup ! 264: FontSetup ! 265: LabelPage ! 266: zerocell 1 Entries 1 sub { ! 267: CharSetup ! 268: graylevels 0 get setgray ! 269: chcode CellOutline fill ! 270: graylevels 1 get setgray ! 271: LabelCell ! 272: PlaceChar ! 273: graylevels 2 get setgray ! 274: linewidth setlinewidth ! 275: chcode CellOutline stroke ! 276: } for ! 277: showpage ! 278: saveobj restore ! 279: } bind def ! 280: ! 281: % ! 282: % Dump of all ROM and disk fonts - in alphabetical order. ! 283: % ! 284: ! 285: /AllFonts { ! 286: /AllFontNames FontDirectory maxlength array def ! 287: AllFontNames 0 0 put ! 288: ! 289: FontDirectory {pop AllFontNames Insert} forall ! 290: ! 291: /filenameforall where { ! 292: pop ! 293: (fonts/*) ! 294: {(fonts/) search pop pop pop AllFontNames Insert} ! 295: 200 string ! 296: filenameforall ! 297: } if ! 298: ! 299: 1 1 AllFontNames 0 get { ! 300: AllFontNames exch get cvn PrintFont ! 301: } for ! 302: } bind def ! 303: ! 304: /Insert { % name in a sorted list ! 305: /List exch def ! 306: /Name exch 128 string cvs def ! 307: ! 308: /Slot 1 def ! 309: List 0 get { ! 310: Name List Slot get le {exit} if ! 311: /Slot Slot 1 add def ! 312: } repeat ! 313: ! 314: List 0 get -1 Slot { ! 315: dup List exch get ! 316: List 3 1 roll exch 1 add exch put ! 317: } for ! 318: List Slot Name put ! 319: List 0 List 0 get 1 add put ! 320: } bind def ! 321:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.