JFIF$        dd7 

Viewing File: /usr/share/ghostscript/lib/printafm.ps

%!
% written by James Clark <jjc@jclark.uucp>
% print an afm file on the standard output
% usage is `fontname printafm' eg `/Times-Roman printafm'

% From the `dvitops' distribution, which included this notice:
% dvitops is not copyrighted; you can do with it exactly as you please.
% I would, however, ask that if you make improvements or modifications,
% you ask me before distributing them to others.

% Altered by d.love@dl.ac.uk to produce input for Rokicki's afm2tfm,
% which groks the format of the Adobe AFMs.

% Modified by L. Peter Deutsch 9/14/93:
%   uses Ghostscript's =only procedure to replace 'buf cvs print'.
% Modified by L. Peter Deutsch 9/6/95:
%   uses Ghostscript's .shellarguments facility to accept the font name
%     on the command line.

% Altered my master@iaas.msu.ru to work with fonts of more than 256 glyphs
% and avoid FSType output. Also print a comment with UniqueID of the font.

/onechar 1 string def

% c toupper - c
/toupper {
        dup dup 8#141 ge exch 8#172 le and {
                8#40 sub
        } if
} bind def

% print unencoded character metric data lines for glyphs in `v' array
% and reset `v' -
/printv {
        % define a new font with v as its encoding vector
        currentfont maxlength dict /f exch def
        currentfont {
                exch dup dup /FID ne exch /Encoding ne and {
                        exch f 3 1 roll put
                } {
                        pop pop
                } ifelse
        } forall
        f /Encoding v put
        f /FontName /temp put
        % make this new font the current font
        /temp f definefont setfont
        % print a entry for each character not in old vector
        /e currentfont /Encoding get def
        0 1 255 {
                dup e exch get
                dup dup /.notdef ne exch s exch known not and {
                        exch -1 printmetric
                } {
                        pop pop
                } ifelse
        } for
        0 1 255 {
                v exch /.notdef put
        } for
} bind def

% printcharmetrics -

/printcharmetrics {
        (StartCharMetrics ) print
        currentfont /CharStrings get dup length exch /.notdef known { 1 sub } if =
        currentfont 1000 scalefont setfont 0 0 moveto
        /e currentfont /Encoding get def
        0 1 255 {
                dup e exch get
                dup /.notdef ne {
                        exch dup printmetric
                } {
                        pop pop
                } ifelse
        } for
        % s contains an entry for each name in the original encoding vector
        /s 256 dict def
        e {
                s exch true put
        } forall
        % v is the new encoding vector
        /v 256 array def
        0 1 255 {
                v exch /.notdef put
        } for
        % fill up v with names in CharStrings
        /i 0 def
        currentfont /CharStrings get {
                pop
                i 255 le {
                        v i 3 -1 roll put
                        /i i 1 add def
                } {
                        printv
                        v 0 3 -1 roll put
                        /i 1 def
                } ifelse
        } forall
        printv
        (EndCharMetrics) =
} bind def

% name actual_code normal_code printmetric -

/printmetric {
        /saved save def
        (C ) print =only
        ( ; WX ) print
        onechar 0 3 -1 roll put
        onechar stringwidth pop round cvi =only
        ( ; N ) print =only
        ( ; B ) print
        onechar false charpath flattenpath mark pathbbox counttomark {
                counttomark -1 roll
                round cvi =only
                ( ) print
        } repeat pop
        (;) =
        saved restore
} bind def

% fontname printafm -

/printafm {
        findfont gsave setfont
        (StartFontMetrics 2.0) =

                % Print the UniqueID

        currentfont /UniqueID known {
                (Comment UniqueID ) print
                currentfont /UniqueID get =only
                (\n) print
        } if

        (FontName ) print currentfont /FontName get =

                % Print the FontInfo

        currentfont /FontInfo get {
                exch
                dup /FSType ne {
                        =string cvs dup dup 0 get 0 exch toupper put print
                        ( ) print =
                } {
                        pop pop
                } ifelse
        } forall

                % Print the FontBBox

        (FontBBox) print
        currentfont /FontBBox get {
                ( ) print round cvi =only
        } forall
        (\n) print

        printcharmetrics
        (EndFontMetrics) =
        grestore
} bind def

% Check for command line arguments.
[ .shellarguments
 { ] dup length 1 eq
    { 0 get printafm }
    { (Usage: printafm fontname\n) print flush }
   ifelse
 }
 { pop }
ifelse
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg