123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- %
- % Formatted font dump. Assumes all fonts include valid FontBBox arrays.
- %
- /#copies 1 store
- /aspectratio 1 def
- /landscape false def
- /magnification 1 def
- /margin 10 def
- /orientation 0 def
- /rotation 1 def
- /xoffset 0 def
- /yoffset 0 def
- /axescount 0 def
- /charwidth false def
- /graynotdef 0.85 def
- /hireslinewidth 0.2 def
- /longnames false def
- /maxsize 6.0 def
- /minsize 4.5 def
- /numbercell true def
- /radix 16 def
- /labelfont /Helvetica def
- /labelspace 36 def
- /zerocell 0 def
- /roundpage true def
- /useclippath true def
- /pagebbox [0 0 612 792] def
- /inch {72 mul} def
- /min {2 copy gt {exch} if pop} def
- /max {2 copy lt {exch} if pop} def
- /LLx {0 get} bind def
- /LLy {1 get} bind def
- /URx {2 get} bind def
- /URy {3 get} bind def
- /BBoxHeight {dup URy exch LLy sub} bind def
- /BBoxWidth {dup URx exch LLx sub} bind def
- /setup {
- /graylevels [1 0 0] def
- /scratchstring 512 string def
- /Product statusdict begin /product where {pop product}{(Unknown)} ifelse end def
- /Resolution 0 72 dtransform dup mul exch dup mul add sqrt cvi def
- /Version /version where {pop version}{(???)} ifelse def
- landscape {/orientation 90 orientation add def} if
- pagedimensions
- xcenter ycenter translate
- orientation rotation mul rotate
- width 2 div neg height 2 div translate
- xoffset inch yoffset inch neg translate
- margin dup neg translate
- 0 labelspace .75 mul neg translate
- magnification dup aspectratio mul scale
- 0 0 transform round exch round exch itransform translate
- currentdict /linewidth known not {
- /linewidth Resolution 400 le {0}{hireslinewidth} ifelse def
- } if
- } def
- /pagedimensions {
- useclippath {
- /pagebbox [clippath pathbbox newpath] def
- roundpage currentdict /roundpagebbox known and {roundpagebbox} if
- } if
- pagebbox aload pop
- 4 -1 roll exch 4 1 roll 4 copy
- landscape {4 2 roll} if
- sub /width exch def
- sub /height exch def
- add 2 div /xcenter exch def
- add 2 div /ycenter exch def
- } def
- /CharSetup {
- /chcode exch def
- /chname Encoding chcode get def
- /chstring ( ) dup 0 chcode put def
- /chknown true def
- graylevels 0 1 put % initial cell fill
- graylevels 1 0 put % cell text
- graylevels 2 0 put % cell border
- FontDict /CharStrings known {
- FontDict /CharStrings get chname known not {
- /chknown false def
- graylevels 0 0 put
- graylevels 1 1 put
- } if
- } if
- chname /.notdef eq {
- /chknown false def
- graylevels 0 graynotdef put
- graylevels 1 graynotdef put
- } if
- /chwid chknown
- {FontDict 1 scalefont setfont chstring stringwidth pop}
- {0}
- ifelse def
- } bind def
- /CellSetup {
- /gridwidth width margin 2 mul sub def
- /gridheight height labelspace sub margin 2 mul sub def
- /cellwidth gridwidth radix div def
- /cellheight gridheight Entries radix div ceiling div def
- cellwidth cellheight dtransform truncate exch truncate exch idtransform
- /cellheight exch def
- /cellwidth exch def
- labelfont findfont 1 scalefont setfont
- /LabelBBox currentfont /FontBBox get TransformBBox def
- LabelBBox 2 0 Encoding {
- scratchstring cvs stringwidth pop
- 2 copy lt {exch} if
- pop
- } forall put
- /CellLabelSize
- cellheight .20 mul cellwidth .90 mul LabelBBox BestFit
- minsize max
- maxsize min
- def
- zerocell CellOrigin cellheight add neg exch neg exch translate
- } bind def
- /FontSetup {
- FontName findfont 1 scalefont setfont
- /BBox currentfont /FontBBox get TransformBBox def
- /PointSize cellheight .5 mul cellwidth .8 mul BBox BestFit def
- BBox {PointSize mul} forall BBox astore pop
- /xorigin cellwidth BBox BBoxWidth sub 2 div BBox LLx sub def
- /yorigin cellheight BBox BBoxHeight sub 2 div BBox LLy sub def
- } bind def
- /BestFit {
- /bbox exch def
- bbox BBoxWidth div exch
- bbox BBoxHeight div min
- } bind def
- /TransformBBox { % font bbox to user space
- aload pop
- currentfont /FontMatrix get dtransform 4 2 roll
- currentfont /FontMatrix get dtransform 4 2 roll
- 4 array astore % should build user space bbox if all zeros
- } bind def
- /CellOrigin {
- dup
- exch radix mod cellwidth mul
- exch radix idiv 1 add neg cellheight mul
- } bind def
- /CellOutline {
- newpath
- CellOrigin moveto
- cellwidth 0 rlineto
- 0 cellheight rlineto
- cellwidth neg 0 rlineto
- closepath
- } bind def
- /LabelCell {
- gsave
- chcode CellOrigin translate
- linewidth .5 mul setlinewidth
- labelfont findfont CellLabelSize scalefont setfont
- numbercell {
- cellwidth .025 mul cellheight .05 mul moveto
- chcode radix scratchstring cvrs show
- } if
- charwidth chknown and {
- /wid chwid 0.0005 add scratchstring cvs 0 5 getinterval def
- cellwidth wid stringwidth pop 1.10 mul sub cellheight .05 mul moveto
- wid show
- } if
- longnames chknown not or {
- cellwidth .025 mul
- cellheight LabelBBox URy CellLabelSize mul sub .05 sub moveto
- Encoding chcode get scratchstring cvs show
- } if
- axescount 1 ge chknown and { % gsave/grestore if not last
- newpath
- xorigin yorigin translate
- BBox LLx 0 moveto % baseline
- BBox URx 0 lineto stroke
- axescount 2 ge { % vertical through current origin
- 0 BBox LLy moveto
- 0 BBox URy lineto stroke
- } if
- axescount 3 ge { % vertical through next origin
- chwid PointSize mul BBox LLy
- dtransform round exch round exch idtransform moveto
- 0 BBox BBoxHeight rlineto stroke
- %chwid PointSize mul BBox URy lineto stroke
- } if
- } if
- grestore
- } bind def
- /PlaceChar {
- FontName findfont PointSize scalefont setfont
- chcode CellOrigin moveto
- xorigin yorigin rmoveto
- ( ) dup 0 chcode put show
- } bind def
- /LabelPage {
- labelfont findfont labelspace .75 mul .75 mul 18 min scalefont setfont
- 0 labelspace .75 mul .25 mul moveto
- FontName scratchstring cvs show
- labelfont findfont labelspace .25 mul .75 mul 9 min scalefont setfont
- 0 gridheight neg moveto
- 0 labelspace .25 mul .75 mul neg rmoveto
- Product show ( Version ) show Version show
- ( \() show Resolution scratchstring cvs show (dpi\)) show
- gridwidth gridheight neg moveto
- 0 labelspace .25 mul .75 mul neg rmoveto
- (size=, ) stringwidth pop neg 0 rmoveto
- PointSize cvi scratchstring cvs stringwidth pop neg 0 rmoveto
- (gray=, ) stringwidth pop neg 0 rmoveto
- graynotdef scratchstring cvs stringwidth pop neg 0 rmoveto
- (linewidth=) stringwidth pop neg 0 rmoveto
- linewidth scratchstring cvs stringwidth pop neg 0 rmoveto
- (size=) show PointSize cvi scratchstring cvs show (, ) show
- (gray=) show graynotdef scratchstring cvs show (, ) show
- (linewidth=) show linewidth scratchstring cvs show
- } bind def
- %
- % Formatted dump of the encoded characters in a single font.
- %
- /PrintFont {
- /saveobj save def
- /FontName exch def
- /FontDict FontName findfont def
- /Encoding FontDict /Encoding get def
- /Entries Encoding length def
- CellSetup
- FontSetup
- LabelPage
- zerocell 1 Entries 1 sub {
- CharSetup
- graylevels 0 get setgray
- chcode CellOutline fill
- graylevels 1 get setgray
- LabelCell
- PlaceChar
- graylevels 2 get setgray
- linewidth setlinewidth
- chcode CellOutline stroke
- } for
- showpage
- saveobj restore
- } bind def
- %
- % Dump of all ROM and disk fonts - in alphabetical order.
- %
- /AllFonts {
- /AllFontNames FontDirectory maxlength array def
- AllFontNames 0 0 put
- FontDirectory {pop AllFontNames Insert} forall
- /filenameforall where {
- pop
- (fonts/*)
- {(fonts/) search pop pop pop AllFontNames Insert}
- 200 string
- filenameforall
- } if
- 1 1 AllFontNames 0 get {
- AllFontNames exch get cvn PrintFont
- } for
- } bind def
- /Insert { % name in a sorted list
- /List exch def
- /Name exch 128 string cvs def
- /Slot 1 def
- List 0 get {
- Name List Slot get le {exit} if
- /Slot Slot 1 add def
- } repeat
- List 0 get -1 Slot {
- dup List exch get
- List 3 1 roll exch 1 add exch put
- } for
- List Slot Name put
- List 0 List 0 get 1 add put
- } bind def
|