Annotation of researchv10dc/cmd/postscript/printfont/printfont.ps, revision 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.