322 lines
7.4 KiB
PostScript
322 lines
7.4 KiB
PostScript
%
|
|
% 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
|
|
|