Annotation of researchv10dc/cmd/postscript/printfont/printfont.ps, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.