%% 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
%
% 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