%!PS-Adobe-1.0 %%Creator: ah.sei.cmu.edu:dberry (Daniel Berry) %%Title: stdin (ditroff) %%CreationDate: Wed Oct 17 22:08:40 1990 %%EndComments /PageLength 11 def % lib/psdit.pro -- prolog for psdit (ditroff) files % Copyright (c) 1984, 1985 Adobe Systems, Inc. All Rights Reserved. /PageLength 11 def % psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def /sy y ury lly sub div def sx sy scale cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { fontnum fontsize fontslant fontheight mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def % end of psfig additions /$DITroff 140 dict def $DITroff begin /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 PageLength mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /firstpage true def /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /arctoobig 90 def /arctoosmall .05 def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}def /point{.1 resolution add 72 div mul}def /dround {transform round exch round exch itransform}def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{showpage}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def}def /xS{/fontslant exch def}def /s{/fontsize exch def /fontheight fontsize def}def /f{/fontnum exch def}def /F {fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth } def /X{exch currentpoint exch pop moveto show}def /N{3 1 roll moveto show}def /Y{exch currentpoint pop exch moveto show}def /S{show}def /MX{currentpoint exch pop moveto}def /MY{currentpoint pop exch moveto}def /MXY{moveto}def /cb{pop}def % action on unknown char -- nothing for now /n{}def /w{}def /p{pop firstpage not{showpage}if pagesave restore /pagesave save def /firstpage false def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /distance{dup mul exch dup mul add sqrt}def /dstroke{currentpoint stroke moveto}def /Dl{2 copy gsave rlineto stroke grestore rmoveto}def /arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def /Dc{dup arcellipse dstroke}def /De{arcellipse dstroke}def /Da{/endv exch def /endh exch def /centerv exch def /centerh exch def /cradius centerv centerv mul centerh centerh mul add sqrt def /eradius endv endv mul endh endh mul add sqrt def /endang endv endh atan def /startang centerv neg centerh neg atan def /sweep startang endang sub dup 0 lt{360 add}if def sweep arctoobig gt {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def /midh midang cos midrad mul def /midv midang sin midrad mul def midh neg midv neg endh endv centerh centerv midh midv Da currentpoint moveto Da} {sweep arctoosmall ge {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def centerv neg controldelt mul centerh controldelt mul endv neg controldelt mul centerh add endh add endh controldelt mul centerv add endv add centerh endh add centerv endv add rcurveto dstroke} {centerh endh add centerv endv add rlineto dstroke}ifelse}ifelse}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 49 def /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /ocb {/s2 .5 dm def /s4 .25 dm def 2 setlinejoin gsave currentpoint newpath dround translate 0 0 moveto}def /oce {grestore ditwid 0 rmoveto}def /occ {grestore}def /dm {ditsiz mul}def /4p {pop pop pop pop}def /ocprocs 25 dict def ocprocs begin (X0) {ocb oce}def %room for building special characters with X names (X1) {ocb oce}def %all these do is move the width of the char which is 1 em (X2) {ocb oce}def (X3) {ocb oce}def (X4) {ocb oce}def (X5) {ocb oce}def (X6) {ocb oce}def (X7) {ocb oce}def (X8) {ocb oce}def (X9) {ocb oce}def (XX) {ocb oce}def (MD) {ocb 0 -.25 dm moveto .4333 dm -1 dm lineto .8666 dm -.25 dm lineto 0 -.25 dm lineto closepath stroke occ ocb 0 -.75 dm moveto .8666 dm -.75 dm lineto .4333 dm 0 dm lineto 0 -.75 dm lineto closepath stroke oce}def (OU) { ocb .5 dm -.35 dm moveto currentpoint newpath .35 dm 0 360 arc closepath stroke occ ocb .3 dm -.50 dm moveto .3 dm -.3 dm lineto .5 dm -.3 dm .2 dm 180 360 arcn .7 dm -.50 dm lineto stroke oce}def (14) {(1)(4)fraction}def (12) {(1)(2)fraction}def (34) {(3)(4)fraction}def (18) {(1)(8)fraction}def (38) {(3)(8)fraction}def (58) {(5)(8)fraction}def (78) {(7)(8)fraction}def (13) {(1)(3)fraction}def (23) {(2)(3)fraction}def (ff) {gsave (f) show -.06 dm 0 rmoveto (f) show oce}def (Fl) {gsave (f) show -.06 dm 0 rmoveto (\257) show oce}def (Fi) {gsave (f) show -.06 dm 0 rmoveto (\256) show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{-55 725 moveto 500 0 rlineto 25 setlinewidth stroke}def /vr{125 800 moveto 0 -770 rls}def /bv{125 800 moveto 0 -1000 rls}def /br{0 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{125 -200 moveto 125 400 lineto 125 550 260 780 375 800 curveto stroke}def /lb{125 800 moveto 125 200 lineto 125 50 260 -180 375 -200 curveto stroke}def /rt{125 -200 moveto 125 400 lineto 125 550 -10 780 -125 800 curveto stroke}def /rb{125 800 moveto 125 200 lineto 125 50 -10 -180 -125 -200 curveto stroke}def /lk{125 800 moveto 125 700 lineto 125 550 125 320 -125 300 curveto 125 -200 moveto 125 -100 lineto 125 50 125 280 -125 300 curveto stroke}def /rk{125 800 moveto 125 700 lineto 125 550 125 320 375 300 curveto 125 -200 moveto 125 -100 lineto 125 50 125 280 375 300 curveto stroke}def /lf{125 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{125 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{125 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{125 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop %! MF-logo font %0 serverdict begin exitserver /TBuildCharDict 10 dict def /MF-logoFont 10 dict def /fudge 110 def MF-logoFont begin %% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for % Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /hyphen ( newpath %new path 200 350 moveto 596 350 lineto 596 396 lineto 200 396 lineto 200 350 lineto closepath %end path fill ) def /M ( newpath %new path 280 180 moveto 282 186 lineto 284 190 lineto 284 600 lineto 280 586 lineto 260 576 lineto 266 576 lineto 268 578 lineto 274 580 lineto 280 586 lineto 260 576 lineto 240 586 lineto 244 580 lineto 250 578 lineto 254 576 lineto 260 576 lineto 240 586 lineto 236 596 lineto 236 590 lineto 238 590 lineto 306 470 376 348 446 228 curveto 444 230 lineto 448 224 lineto 452 220 lineto 458 216 lineto 462 216 lineto 468 214 lineto 474 216 lineto 476 216 lineto 482 220 lineto 488 224 lineto 490 230 lineto 492 230 lineto 560 350 630 472 700 592 curveto 698 590 lineto 700 596 lineto 700 600 lineto 696 586 lineto 676 576 lineto 682 576 lineto 684 578 lineto 690 580 lineto 696 586 lineto 676 576 lineto 656 586 lineto 660 580 lineto 666 578 lineto 670 576 lineto 676 576 lineto 656 586 lineto 652 596 lineto 652 590 lineto 656 586 lineto 652 596 lineto 656 610 lineto 652 604 lineto 652 600 lineto 650 598 lineto 650 194 lineto 652 194 lineto 652 186 lineto 656 180 lineto 660 178 lineto 666 174 lineto 670 174 lineto 676 172 lineto 682 174 lineto 684 174 lineto 690 178 lineto 696 180 lineto 698 186 lineto 700 190 lineto 700 600 lineto 698 604 lineto 696 610 lineto 690 614 lineto 684 618 lineto 682 618 lineto 676 620 lineto 670 618 lineto 666 618 lineto 660 614 lineto 656 610 lineto 652 604 lineto 582 484 512 362 444 242 curveto 444 234 lineto 448 248 lineto 468 258 lineto 462 258 lineto 458 256 lineto 452 254 lineto 448 248 lineto 468 258 lineto 488 248 lineto 482 254 lineto 476 256 lineto 474 258 lineto 468 258 lineto 488 248 lineto 492 238 lineto 490 244 lineto 420 364 350 486 282 606 curveto 282 604 lineto 280 610 lineto 274 614 lineto 268 618 lineto 266 618 lineto 260 620 lineto 254 618 lineto 250 618 lineto 244 614 lineto 240 610 lineto 236 604 lineto 236 600 lineto 234 598 lineto 234 194 lineto 236 194 lineto 236 186 lineto 240 180 lineto 244 178 lineto 250 174 lineto 254 174 lineto 260 172 lineto 266 174 lineto 268 174 lineto 274 178 lineto 280 180 lineto closepath %end path fill ) def /E ( newpath %new path 556 224 moveto 554 222 lineto 258 222 lineto 260 224 lineto 254 222 lineto 250 222 lineto 244 218 lineto 240 214 lineto 260 224 lineto 280 214 lineto 274 218 lineto 268 222 lineto 266 222 lineto 260 224 lineto 280 214 lineto 284 204 lineto 282 208 lineto 280 214 lineto 284 204 lineto 280 190 lineto 282 194 lineto 284 200 lineto 284 592 lineto 280 578 lineto 260 568 lineto 562 568 lineto 564 570 lineto 570 572 lineto 576 578 lineto 578 582 lineto 580 588 lineto 580 592 lineto 578 596 lineto 576 602 lineto 570 606 lineto 564 610 lineto 562 610 lineto 556 612 lineto 554 610 lineto 258 610 lineto 260 612 lineto 254 610 lineto 250 610 lineto 244 606 lineto 240 602 lineto 236 596 lineto 236 592 lineto 234 590 lineto 234 202 lineto 236 204 lineto 236 194 lineto 240 190 lineto 244 184 lineto 250 182 lineto 254 180 lineto 562 180 lineto 564 182 lineto 570 184 lineto 576 190 lineto 578 194 lineto 580 200 lineto 580 204 lineto 578 208 lineto 576 214 lineto 570 218 lineto 564 222 lineto 562 222 lineto 556 224 lineto closepath %end path %new path 260 352 moveto 518 352 lineto 520 354 lineto 526 356 lineto 532 362 lineto 534 366 lineto 536 372 lineto 536 376 lineto 534 380 lineto 532 386 lineto 526 390 lineto 520 394 lineto 518 394 lineto 512 396 lineto 510 394 lineto 258 394 lineto 260 396 lineto 254 394 lineto 250 394 lineto 244 390 lineto 240 386 lineto 236 380 lineto 236 366 lineto 240 362 lineto 244 356 lineto 250 354 lineto 254 352 lineto 260 352 lineto closepath %end path fill ) def /T ( newpath %new path 202 568 moveto 578 568 lineto 580 570 lineto 586 572 lineto 592 578 lineto 594 582 lineto 596 588 lineto 596 592 lineto 594 596 lineto 592 602 lineto 586 606 lineto 580 610 lineto 578 610 lineto 572 612 lineto 570 610 lineto 202 610 lineto 202 612 lineto 196 610 lineto 194 610 lineto 188 606 lineto 182 602 lineto 180 596 lineto 180 582 lineto 182 578 lineto 188 572 lineto 194 570 lineto 196 568 lineto 202 568 lineto closepath %end path %new path 368 602 moveto 364 596 lineto 364 592 lineto 362 590 lineto 362 194 lineto 364 194 lineto 364 186 lineto 368 180 lineto 372 178 lineto 378 174 lineto 382 174 lineto 388 172 lineto 394 174 lineto 396 174 lineto 402 178 lineto 408 180 lineto 410 186 lineto 412 190 lineto 412 592 lineto 410 596 lineto 408 602 lineto 402 606 lineto 396 610 lineto 394 610 lineto 388 612 lineto 382 610 lineto 378 610 lineto 372 606 lineto 368 602 lineto closepath %end path fill ) def /A ( newpath %new path 280 180 moveto 282 186 lineto 284 190 lineto 284 376 lineto 280 362 lineto 260 352 lineto 586 352 lineto 588 354 lineto 594 356 lineto 600 362 lineto 580 352 lineto 560 362 lineto 564 356 lineto 570 354 lineto 574 352 lineto 580 352 lineto 560 362 lineto 556 372 lineto 556 366 lineto 560 362 lineto 556 372 lineto 560 386 lineto 556 380 lineto 556 376 lineto 554 374 lineto 554 194 lineto 556 194 lineto 556 186 lineto 560 180 lineto 564 178 lineto 570 174 lineto 574 174 lineto 580 172 lineto 586 174 lineto 588 174 lineto 594 178 lineto 600 180 lineto 602 186 lineto 604 190 lineto 604 376 lineto 602 380 lineto 600 386 lineto 594 390 lineto 588 394 lineto 586 394 lineto 580 396 lineto 578 394 lineto 258 394 lineto 260 396 lineto 254 394 lineto 250 394 lineto 244 390 lineto 240 386 lineto 236 380 lineto 236 376 lineto 234 374 lineto 234 194 lineto 236 194 lineto 236 186 lineto 240 180 lineto 244 178 lineto 250 174 lineto 254 174 lineto 260 172 lineto 266 174 lineto 268 174 lineto 274 178 lineto 280 180 lineto closepath %end path %new path 280 362 moveto 282 366 lineto 284 372 lineto 284 410 284 452 292 490 curveto 290 488 lineto 290 484 lineto 294 504 300 522 310 538 curveto 306 532 lineto 308 534 lineto 308 536 310 538 312 542 curveto 314 546 318 548 322 552 curveto 320 552 lineto 324 556 lineto 324 566 lineto 320 552 lineto 300 542 lineto 306 542 lineto 310 544 lineto 316 546 lineto 316 548 lineto 324 554 332 560 340 564 curveto 334 560 lineto 334 562 lineto 340 564 346 566 350 568 curveto 346 566 lineto 348 568 lineto 356 570 364 572 374 574 curveto 372 572 lineto 368 572 lineto 384 576 402 576 420 576 curveto 426 576 lineto 428 578 lineto 434 580 lineto 440 586 lineto 420 576 lineto 400 586 lineto 404 580 lineto 410 578 lineto 414 576 lineto 420 576 lineto 420 574 lineto 438 574 456 574 472 570 curveto 472 572 lineto 466 572 lineto 476 570 484 568 492 566 curveto 488 568 lineto 490 566 lineto 494 564 500 562 506 560 curveto 504 560 lineto 498 564 lineto 500 562 lineto 508 558 516 552 524 546 curveto 522 546 lineto 528 544 lineto 532 542 lineto 538 542 lineto 518 552 lineto 514 562 lineto 514 556 lineto 518 552 lineto 518 550 lineto 522 546 526 544 528 540 curveto 530 536 532 534 532 532 curveto 528 538 lineto 530 536 lineto 540 520 546 502 550 482 curveto 548 484 lineto 548 488 lineto 556 450 556 408 556 370 curveto 556 366 lineto 560 362 lineto 564 356 lineto 570 354 lineto 574 352 lineto 586 352 lineto 588 354 lineto 594 356 lineto 600 362 lineto 602 366 lineto 604 372 lineto 604 376 lineto 602 376 lineto 602 414 602 456 594 494 curveto 596 492 lineto 594 498 lineto 590 518 584 536 574 552 curveto 572 556 lineto 570 558 lineto 570 560 568 562 566 566 curveto 564 570 560 572 556 576 curveto 558 576 lineto 552 580 lineto 552 582 lineto 544 588 536 594 528 598 curveto 522 600 lineto 522 602 lineto 516 604 510 606 506 608 curveto 504 608 lineto 502 610 lineto 494 612 486 614 476 616 curveto 478 614 lineto 472 616 lineto 470 616 lineto 454 620 436 620 418 620 curveto 420 620 lineto 418 618 lineto 400 618 382 618 366 614 curveto 366 616 lineto 360 614 lineto 350 612 342 610 334 608 curveto 332 608 lineto 330 606 lineto 326 604 320 602 314 600 curveto 316 600 lineto 310 598 lineto 308 596 lineto 300 592 292 586 284 580 curveto 286 580 lineto 280 576 lineto 280 574 lineto 276 570 272 568 270 564 curveto 268 560 266 558 266 556 curveto 264 552 lineto 262 550 lineto 252 534 246 516 242 496 curveto 244 498 lineto 242 492 lineto 234 454 234 412 234 374 curveto 236 376 lineto 236 366 lineto 240 362 lineto 244 356 lineto 250 354 lineto 254 352 lineto 266 352 lineto 268 354 lineto 274 356 lineto 280 362 lineto closepath %end path fill ) def /F ( newpath %new path 280 180 moveto 282 186 lineto 284 190 lineto 284 592 lineto 280 578 lineto 260 568 lineto 562 568 lineto 564 570 lineto 570 572 lineto 576 578 lineto 578 582 lineto 580 588 lineto 580 592 lineto 578 596 lineto 576 602 lineto 570 606 lineto 564 610 lineto 562 610 lineto 556 612 lineto 554 610 lineto 258 610 lineto 260 612 lineto 254 610 lineto 250 610 lineto 244 606 lineto 240 602 lineto 236 596 lineto 236 592 lineto 234 590 lineto 234 194 lineto 236 194 lineto 236 186 lineto 240 180 lineto 244 178 lineto 250 174 lineto 254 174 lineto 260 172 lineto 266 174 lineto 268 174 lineto 274 178 lineto 280 180 lineto closepath %end path %new path 260 352 moveto 518 352 lineto 520 354 lineto 526 356 lineto 532 362 lineto 534 366 lineto 536 372 lineto 536 376 lineto 534 380 lineto 532 386 lineto 526 390 lineto 520 394 lineto 518 394 lineto 512 396 lineto 510 394 lineto 258 394 lineto 260 396 lineto 254 394 lineto 250 394 lineto 244 390 lineto 240 386 lineto 236 380 lineto 236 366 lineto 240 362 lineto 244 356 lineto 250 354 lineto 254 352 lineto 260 352 lineto closepath %end path fill ) def /O ( newpath %new path 248 362 moveto 250 366 lineto 252 372 lineto 252 408 252 446 258 480 curveto 256 474 lineto 258 476 lineto 262 494 268 514 278 530 curveto 276 528 lineto 274 524 lineto 278 530 282 536 286 542 curveto 288 544 290 546 292 546 curveto 290 546 lineto 294 550 lineto 294 560 lineto 290 546 lineto 270 536 lineto 276 536 lineto 280 538 lineto 286 540 lineto 286 542 lineto 296 550 306 558 316 562 curveto 314 562 lineto 308 558 lineto 310 560 lineto 316 562 322 564 328 566 curveto 326 566 lineto 324 564 lineto 324 566 lineto 334 568 344 570 352 572 curveto 346 570 lineto 346 572 lineto 370 576 396 576 420 576 curveto 426 576 lineto 428 578 lineto 434 580 lineto 440 586 lineto 420 576 lineto 400 586 lineto 404 580 lineto 410 578 lineto 414 576 lineto 420 576 lineto 420 574 lineto 444 574 470 574 494 570 curveto 492 570 lineto 486 572 lineto 488 570 lineto 496 568 506 566 516 564 curveto 514 564 lineto 512 566 lineto 512 564 lineto 518 562 524 560 530 558 curveto 524 562 lineto 524 560 lineto 534 556 544 548 554 540 curveto 552 540 lineto 558 538 lineto 562 536 lineto 568 536 lineto 548 546 lineto 544 556 lineto 544 550 lineto 548 546 lineto 548 544 lineto 550 544 552 542 554 540 curveto 558 534 562 528 566 522 curveto 564 524 lineto 562 528 lineto 572 512 578 492 582 474 curveto 580 480 lineto 582 478 lineto 588 444 588 406 588 370 curveto 588 366 lineto 592 362 lineto 596 356 lineto 602 354 lineto 606 352 lineto 618 352 lineto 620 354 lineto 626 356 lineto 632 362 lineto 634 366 lineto 636 372 lineto 636 376 lineto 634 376 lineto 634 412 634 450 628 484 curveto 628 488 lineto 626 490 lineto 622 508 616 528 606 544 curveto 608 542 lineto 604 548 lineto 600 554 596 560 592 566 curveto 590 568 588 570 586 570 curveto 588 570 lineto 582 574 lineto 582 576 lineto 572 584 562 592 552 596 curveto 554 596 lineto 548 598 lineto 546 600 lineto 540 602 534 604 528 606 curveto 526 606 lineto 526 608 lineto 516 610 506 612 498 614 curveto 492 614 lineto 492 616 lineto 468 620 442 620 418 620 curveto 420 620 lineto 418 618 lineto 394 618 368 618 344 614 curveto 340 614 lineto 338 612 lineto 330 610 320 608 310 606 curveto 308 606 lineto 308 604 lineto 302 602 296 600 290 598 curveto 284 596 lineto 284 594 lineto 274 590 264 582 254 574 curveto 256 574 lineto 250 570 lineto 250 568 lineto 248 568 246 566 244 564 curveto 240 558 236 552 232 546 curveto 234 548 lineto 230 542 lineto 220 526 214 506 210 488 curveto 210 484 lineto 208 482 lineto 202 448 202 410 202 374 curveto 204 376 lineto 204 366 lineto 208 362 lineto 212 356 lineto 218 354 lineto 222 352 lineto 234 352 lineto 236 354 lineto 242 356 lineto 248 362 lineto closepath %end path %new path 204 372 moveto 204 370 lineto 204 344 204 316 210 292 curveto 208 292 lineto 210 288 lineto 210 286 lineto 214 272 218 256 226 244 curveto 228 240 lineto 230 238 lineto 234 232 238 224 244 218 curveto 244 220 lineto 248 214 lineto 250 214 lineto 250 212 250 212 252 212 curveto 260 204 268 198 278 194 curveto 276 194 lineto 282 192 lineto 284 190 lineto 290 188 296 186 302 184 curveto 304 184 lineto 304 182 lineto 314 180 322 180 332 178 curveto 338 178 lineto 338 176 lineto 364 172 394 172 420 172 curveto 420 174 lineto 446 174 476 174 502 178 curveto 506 178 lineto 508 180 lineto 518 180 526 182 536 184 curveto 538 184 lineto 538 186 lineto 544 188 550 190 556 192 curveto 562 194 lineto 562 196 lineto 572 200 580 206 588 214 curveto 590 214 590 214 590 216 curveto 590 214 lineto 594 220 lineto 596 220 lineto 602 226 606 234 610 240 curveto 612 244 lineto 614 246 lineto 622 258 626 274 630 288 curveto 628 288 lineto 630 292 lineto 630 294 lineto 636 318 636 346 636 372 curveto 636 376 lineto 634 380 lineto 632 386 lineto 626 390 lineto 620 394 lineto 618 394 lineto 612 396 lineto 606 394 lineto 602 394 lineto 596 390 lineto 592 386 lineto 588 380 lineto 588 376 lineto 586 374 lineto 586 348 586 320 580 296 curveto 582 296 lineto 582 300 lineto 578 286 574 270 566 258 curveto 570 264 lineto 568 262 lineto 564 256 560 248 554 242 curveto 554 244 lineto 552 238 lineto 550 234 lineto 550 230 lineto 554 244 lineto 574 254 lineto 568 252 lineto 566 252 lineto 560 248 lineto 558 248 lineto 558 246 558 246 556 246 curveto 548 238 540 232 530 228 curveto 532 228 lineto 538 232 lineto 536 230 lineto 530 228 524 226 518 224 curveto 520 224 lineto 522 226 lineto 522 224 lineto 512 222 504 220 494 218 curveto 500 220 lineto 500 218 lineto 474 214 444 214 418 214 curveto 420 216 lineto 414 214 lineto 410 214 lineto 404 210 lineto 400 206 lineto 420 216 lineto 440 206 lineto 434 210 lineto 428 214 lineto 426 214 lineto 420 216 lineto 418 216 lineto 392 216 362 216 336 220 curveto 338 220 lineto 344 218 lineto 342 220 lineto 332 222 324 224 314 226 curveto 316 226 lineto 318 224 lineto 318 226 lineto 312 228 306 230 300 232 curveto 306 228 lineto 306 230 lineto 296 234 288 240 280 248 curveto 278 248 278 248 278 250 curveto 278 248 lineto 272 252 lineto 270 252 lineto 264 254 lineto 284 244 lineto 288 234 lineto 286 238 lineto 284 244 lineto 282 244 lineto 276 250 272 258 268 264 curveto 272 258 lineto 270 260 lineto 262 272 258 288 254 302 curveto 256 302 lineto 256 298 lineto 250 322 250 350 250 376 curveto 252 376 lineto 250 380 lineto 248 386 lineto 242 390 lineto 236 394 lineto 234 394 lineto 228 396 lineto 222 394 lineto 218 394 lineto 212 390 lineto 208 386 lineto 204 380 lineto 204 372 lineto closepath %end path fill ) def /N ( newpath %new path 280 180 moveto 282 186 lineto 284 190 lineto 284 600 lineto 280 586 lineto 260 576 lineto 266 576 lineto 268 578 lineto 274 580 lineto 280 586 lineto 260 576 lineto 240 586 lineto 244 580 lineto 250 578 lineto 254 576 lineto 260 576 lineto 240 586 lineto 236 596 lineto 236 590 lineto 240 586 lineto 240 584 lineto 346 464 454 344 560 224 curveto 564 220 lineto 570 216 lineto 574 216 lineto 580 214 lineto 586 216 lineto 588 216 lineto 594 220 lineto 600 224 lineto 602 230 lineto 604 234 lineto 604 238 lineto 602 244 lineto 600 248 lineto 598 250 lineto 492 370 384 490 278 610 curveto 280 610 lineto 274 614 lineto 268 618 lineto 266 618 lineto 260 620 lineto 254 618 lineto 250 618 lineto 244 614 lineto 240 610 lineto 236 604 lineto 236 600 lineto 234 598 lineto 234 194 lineto 236 194 lineto 236 186 lineto 240 180 lineto 244 178 lineto 250 174 lineto 254 174 lineto 260 172 lineto 266 174 lineto 268 174 lineto 274 178 lineto 280 180 lineto closepath %end path %new path 600 180 moveto 602 186 lineto 604 190 lineto 604 600 lineto 602 604 lineto 600 610 lineto 594 614 lineto 588 618 lineto 586 618 lineto 580 620 lineto 574 618 lineto 570 618 lineto 564 614 lineto 560 610 lineto 556 604 lineto 556 600 lineto 554 598 lineto 554 194 lineto 556 194 lineto 556 186 lineto 560 180 lineto 564 178 lineto 570 174 lineto 574 174 lineto 580 172 lineto 586 174 lineto 588 174 lineto 594 178 lineto 600 180 lineto closepath %end path fill ) def end % of CharDefs dictionary Encoding 77 /M put Encoding 69 /E put Encoding 84 /T put Encoding 65 /A put Encoding 70 /F put Encoding 79 /O put Encoding 78 /N put Encoding 45 /hyphen put Metrics begin /.notdef 0 def /M 520 fudge add def /E 400 fudge add def /T 416 fudge add def /A 424 fudge add def /F 346 fudge add def /O 434 fudge add def /N 424 fudge add def /hyphen 416 fudge add def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave % bounding box : [180 180 700 700] 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 80 add 1000 setcachedevice -182 fudge add -230 translate 1.1 1.3 scale charproc cvx exec grestore end } def /FontBBox [182 fudge sub 180 700 620] def end /MF-logo MF-logoFont definefont pop %/MF-logo findfont 11 scalefont setfont %100 210 moveto (METAFONT) show %1 2 scale (METAFONT) show %1 2 scale (METAFONT) show %showpage ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f F 2(Times-Italic)xf 2 f F 3(Times-Bold)xf 3 f F 4(Times-BoldItalic)xf 4 f F 5(Courier)xf 5 f F 6(Courier-Oblique)xf 6 f F 7(Courier-Bold)xf 7 f F 8(Courier-BoldOblique)xf 8 f F 9(Helvetica)xf 9 f F 10(Helvetica-Oblique)xf 10 f F 11(Helvetica-Bold)xf 11 f F 12(Helvetica-BoldOblique)xf 12 f F 13(Hebrew-Frank-Ruehl)xf 13 f F 14(Hebrew-Gam)xf 14 f F 15(Hebrew-Gam-Bold)xf 15 f F 16(Hebrew-Yuval)xf 16 f F 17(Hebrew-David)xf 17 f F 18(Hebrew-Tel-Aviv)xf 18 f F 19(Hebrew-OldJaffa)xf 19 f F 20(AvantGarde-Book)xf 20 f F 21(AvantGarde-BookOblique)xf 21 f F 22(AvantGarde-Demi)xf 22 f F 23(AvantGarde-DemiOblique)xf 23 f F 24(NewCenturySchlbk-Roman)xf 24 f F 25(NewCenturySchlbk-Italic)xf 25 f F 26(NewCenturySchlbk-Bold)xf 26 f F 27(NewCenturySchlbk-BoldItalic)xf 27 f F 28(Palatino-Roman)xf 28 f F 29(Palatino-Italic)xf 29 f F 30(Palatino-Bold)xf 30 f F 31(Palatino-BoldItalic)xf 31 f F 32(ZapfChancery-MediumItalic)xf 32 f F 33(ZapfDingbats)xf 33 f F 34(Bookman-Light)xf 34 f F 35(Bookman-LightItalic)xf 35 f F 36(Bookman-Demi)xf 36 f F 37(Bookman-DemiItalic)xf 37 f F 38(Helvetica-Narrow)xf 38 f F 39(Helvetica-Narrow-Oblique)xf 39 f F 40(Helvetica-Narrow-Bold)xf 40 f F 41(Helvetica-Narrow-BoldOblique)xf 41 f F 42(Nescii-Initial-Stroke)xf 42 f F 43(Nescii-Middle-Stroke)xf 43 f F 44(Nescii-Final-Stroke)xf 44 f F 45(Nescii-Standalone-Stroke)xf 45 f F 46(Arabic-Naskh)xf 46 f F 47(Symbol)xf 47 f F 48(DIThacks)xf 48 f F xi %%EndProlog %%Page: 1 2 1 p 10 s 10 xH 0 xS 1 f F 48 f F 576 576(h)N 611(h)X (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S (h)S 12 s 12 xH 1 f F 576 672(Environment)N 1103(for)X 1239(Translating)X 0(MF-logo)xf 0 f F 576 768(METAFONT)N 1 f F 1007(to)X 1106(P)X 10 s 10 xH F 1159(OST)X 12 s 12 xH F 1310(S)X 10 s 10 xH F 1363(CRIPT)X 735 888(Shimon)N 1003(Yanai)X 1215(and)X 1351(Daniel)X 1585(M.)X 1696(Berry)X 3 f F 576 1048(Abstract)N 1 f F 576 1192(This)N 745(paper)X 951(describes)X 1277(a)X 1340(program,)X 9 f F 1661(mf2ps)X 1 f F 1878(,)X 1925(that)X 2073(translates)X 576 1288(a)N 0 f F 654(METAFONT)X 1 f F 1037(font)X 1207(de\256nition)X 1554(into)X 1719(a)X 1796(de\256nition)X 2143(for)X 2278(the)X 576 1384(same)N 769(font)X 926(in)X 1017(the)X 1144(P)X 8 s 8 xH F 1188(OST)X 10 s 10 xH F 1309(S)X 8 s 8 xH F 1353(CRIPT)X 10 s 10 xH F 1564(language.)X 9 f F 1905(mf2ps)X 1 f F 2151(is)X 2233(con-)X 576 1480(structed)N 859(out)X 990(of)X 1086(the)X 1213(part)X 1366(of)X 1461(the)X 0 f F 1587(METAFONT)X 1 f F 1956(program)X 2256(that)X 576 1576(extracts)N 846(the)X 964(envelopes)X 1305(of)X 1392(the)X 1510(letters;)X 1749(these)X 1935(envelopes)X 2277(are)X 576 1672(converted)N 913(into)X 1057(P)X 8 s 8 xH F 1101(OST)X 10 s 10 xH F 1222(S)X 8 s 8 xH F 1266(CRIPT)X 10 s 10 xH F 1468(outlines.)X 3 f F 576 1864(1)N 676(Introduction)X 1 f F 576 2008(This)N 739(paper)X 939(describes)X 1259(a)X 1316(program,)X 9 f F 1632(mf2ps)X 1 f F 1849(,)X 1891(that)X 2033(takes)X 2220(from)X 576 2104(a)N 0 f F 641(METAFONT)X 1 f F 1011([10,)X 1151(11])X 1287(program)X 1588(for)X 1711(a)X 1776(font)X 1934(all)X 2043(the)X 2170(neces-)X 576 2200(sary)N 735(information)X 1138(in)X 1225(order)X 1421(to)X 1509(create)X 1728(an)X 1830(equivalent)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 576 2296(S)N 8 s 8 xH F 620(CRIPT)X 10 s 10 xH F 834([1])X 959(font)X 1119(de\256nition.)X 1476(The)X 1632(program)X 1935(makes)X 2171(use)X 2309(of)X 576 2392(the)N 704(front)X 890(end)X 1036(of)X 1133(the)X 0 f F 1261(METAFONT)X 1 f F 1632(program)X 1935(to)X 2028(extract)X 2278(the)X 576 2488(envelopes)N 920(of)X 1010(the)X 1131(letters)X 1349(to)X 1433(produce)X 1714(the)X 1834(P)X 8 s 8 xH F 1878(OST)X 10 s 10 xH F 1999(S)X 8 s 8 xH F 2043(CRIPT)X 10 s 10 xH F 2247(out-)X 576 2584(lines.)N 791(What)X 1009(makes)X 1258(this)X 1417(process)X 1703(natural)X 1971(is)X 2069(that)X 2234(both)X 0 f F 576 2680(METAFONT)N 1 f F 944(and)X 1087(P)X 8 s 8 xH F 1131(OST)X 10 s 10 xH F 1252(S)X 8 s 8 xH F 1296(CRIPT)X 10 s 10 xH F 1505(make)X 1706(liberal)X 1938(use)X 2072(of)X 2165(Be)X 2223(\302zier)X 576 2776(curves)N 806(to)X 888(describe)X 1176(non-circular)X 1589(curves.)X 735 2872(By)N 852(producing)X 1201(this)X 1340(translator,)X 1687(it)X 1755(is)X 1833(hoped)X 2054(to)X 2141(be)X 2242(able)X 576 2968(to)N 673(produce)X 967(from)X 0 f F 1158(METAFONT)X 1 f F 1534(fonts)X 1729(P)X 8 s 8 xH F 1773(OST)X 10 s 10 xH F 1894(S)X 8 s 8 xH F 1938(CRIPT)X 10 s 10 xH F 2154(outline)X 576 3064(fonts)N 757(which)X 974(are)X 1095(more)X 1282(compact)X 1576(than)X 1736(the)X 1856(bitmapped)X 2216(fonts)X 576 3160(produced)N 899(by)X 1003(the)X 0 f F 1125(METAFONT)X 1 f F 1490(program.)X 1805(Certainly)X 2126(the)X 2247(out-)X 576 3256(line)N 717(fonts)X 898(are)X 1018(more)X 1204(easily)X 1412(scaled)X 1634(to)X 1718(other)X 1905(magni\256cations)X 576 3352(and)N 721(possibly)X 1016(even)X 1196(other)X 1389(design)X 1626(sizes)X 1810(than)X 1976(are)X 2103(bitmaps.)X 576 3448(Moreover,)N 950(doing)X 1169(so)X 1277(makes)X 1519(fonts)X 1717(heretofore)X 2086(available)X 576 3544(only)N 741(on)X 843(T)X 884 3560(E)N 925 3544(X)N 1005([9])X 1121(and)X 1259(other)X 1446(DVI-based)X 1821(formatters,)X 2193(avail-)X 576 3640(able)N 751(on)X 9 f F 874(ditroff)X 1 f F 1114([8])X 1249(and)X 1407(other)X 1614(formatters)X 1986(which)X 2224(have)X 576 3736(evolved,)N 891(or)X 998(have)X 1190(been)X 1382(designed,)X 1727(for)X 1861(use)X 2008(with)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 576 3832(S)N 8 s 8 xH F 620(CRIPT)X 10 s 10 xH F 825(printers.)X 1114(This)X 1280(paper,)X 1503(which)X 1723(is)X 1800(typeset)X 2051(by)X 9 f F 2157(ditroff)X 1 f F 2356(,)X 576 3928(uses)N 741(a)X 804(P)X 8 s 8 xH F 848(OST)X 10 s 10 xH F 969(S)X 8 s 8 xH F 1013(CRIPT)X 10 s 10 xH F 1222(version)X 1485(of)X 1579(the)X 1704(logo)X 1873(font)X 2029(in)X 2118(order)X 2314(to)X 576 4024(print)N 752(the)X 875(word)X 1065(\252)X 0 f F 1101(METAFONT)X 1 f F 1455(\272)X 1517(in)X 1605(the)X 1729(same)X 1920(appearance)X 2309(as)X 576 4120(in)N 685(T)X 726 4136(E)N 767 4120(X-generated)N 1212(documents.)X 1646(Moreover,)X 2030(these)X 2242(new)X 576 4216(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 989(outline)X 1233(fonts)X 1415(can)X 1549(be)X 1647(used)X 1816(in)X 1900(T)X 1941 4232(E)N 1982 4216(X)N 2063(also!)X 2242(One)X 576 4312(needs)N 779(only)X 941(the)X 1059(T)X 1100 4328(E)N 1141 4312(X)N 1191 4328(P)N 1227 4312(S)N 1291([3])X 1405(software.)X 735 4408(The)N 888(organization)X 1318(of)X 1414(this)X 1558(paper)X 1766(is)X 1848(as)X 1944(follows.)X 2233(Sec-)X 576 4504(tion)N 728(2)X 796(presents)X 1087(the)X 1213(background)X 1620(of)X 1715(this)X 1857(work.)X 2069(Section)X 2336(3)X 576 4600(explains)N 864(the)X 984(rationale)X 1287(behind)X 1527(building)X 1815(the)X 1935(translator)X 2260(and)X 576 4696(describes)N 912(a)X 985(previous)X 1298(attempt)X 1575(at)X 1670(writing)X 1938(the)X 2073(translator)X 576 4792(and)N 730(an)X 845(approach)X 1179(to)X 1280(avoid.)X 1517(The)X 1681(software)X 1997(engineering)X 576 4888(aspect)N 808(of)X 906(the)X 1035(translator)X 1369(is)X 1453(described)X 1792(also)X 1952(in)X 2045(Section)X 2316(3.)X 576 4984(The)N 730(details)X 968(of)X 1064(the)X 1191(implementation)X 1722(are)X 1850(exposed)X 2142(in)X 2233(Sec-)X 576 5080(tion)N 738(4.)X 836(Section)X 1114(5)X 1192(describes)X 1528(the)X 1663(operation)X 2003(of)X 2107(the)X 2242(pro-)X 576 5176(gram.)N 786(Section)X 1051(6)X 1116(evaluates)X 1440(the)X 1563(results.)X 1818(Finally)X 2070(Section)X 2336(7)X 576 5272(describes)N 895(improvements)X 1373(to)X 1455(the)X 1573(translator)X 1896(that)X 2036(are)X 2155(left)X 2282(for)X 576 5368(future)N 788(work.)X 3 f F 576 5560(2)N 676(Background)X 1 f F 576 5704(Typesetter)N 943(formatting)X 1309(systems)X 1590(such)X 1765(as)X 1861(T)X 1902 5720(E)N 1943 5704(X)N 2030(and)X 9 f F 2177(ditroff)X 1 f F 2520 672(use)N 2653(fonts)X 2838(as)X 2930(raw)X 3076(material.)X 3384(The)X 3534(formatters)X 3889(accept)X 4120(mixed)X 2520 768(text)N 2661(and)X 2798(commands)X 3166(as)X 3254(input)X 3439(and)X 3577(produce)X 3858(output,)X 4104(which,)X 2520 864(if)N 2592(sent)X 2744(to)X 2829(the)X 2950(laser)X 3125(printers)X 3392(or)X 3481(typesetters,)X 3866(yields)X 4079(format-)X 2520 960(ted)N 2672(text)X 2846(printed)X 3127(on)X 3261(pages.)X 3518(The)X 3697(laser)X 3904(printers)X 4204(and)X 2520 1056(typesetters)N 2887(use)X 3018(fonts,)X 3222(i.e.,)X 3364(sets)X 3508(of)X 3599(printable)X 3907(patterns,)X 4204(one)X 2520 1152(per)N 2666(character,)X 3025(in)X 3130(various)X 3409(representations)X 3938(in)X 4044(order)X 4258(to)X 2520 1248(cause)N 2735(the)X 2869(desired)X 3136(characters)X 3498(to)X 3595(appear)X 3845(on)X 3960(the)X 4093(printed)X 2520 1344(form.)N 2736(For)X 2887(some)X 3096(printers,)X 3401(bitmaps)X 3694(are)X 3833(used,)X 4040(with)X 4222(1's)X 2520 1440(representing)N 2943(inked)X 3147(dots)X 3306(and)X 3448(0's)X 3572(representing)X 3995(non-inked)X 2520 1536(dots.)N 2698(Other)X 2906(printers)X 3176(accept)X 3408(commands)X 3781(that)X 3927(cause)X 4132(draw-)X 2520 1632(ing)N 2658(of)X 2761(the)X 2895(characters,)X 3278(the)X 3412(printer)X 3662(providing)X 4009(the)X 4142(inked)X 2520 1728(dots)N 2692(according)X 3049(to)X 3151(the)X 3289(drawing)X 3592(commands.)X 3999(One)X 4173(such)X 2520 1824(popular)N 2814(command)X 3179(language)X 3518(is)X 3620(P)X 8 s 8 xH F 3664(OST)X 10 s 10 xH F 3785(S)X 8 s 8 xH F 3829(CRIPT)X 10 s 10 xH F 4011(,)X 4080(and)X 4245(its)X 2520 1920(usual)N 2714(use)X 2846(is)X 2924(to)X 3011(specify)X 3268(the)X 3391(outline)X 3639(of)X 3732(the)X 3856(character)X 4178(with)X 2520 2016(the)N 2653(interpreting)X 3062(printer)X 3311(\256lling)X 3536(in)X 3633(the)X 3766(outline)X 4022(with)X 4198(ink.)X 2520 2112(One)N 2694(popular)X 2980(method)X 3261(of)X 3369(describing)X 3744(fonts)X 3945(is)X 4039(with)X 4222(the)X 0 f F 2520 2208(METAFONT)N 1 f F 2884(language,)X 3217(in)X 3301(which)X 3519(declarative)X 3894(de\256nitions)X 4253(of)X 2520 2304(how)N 2689(to)X 2782(paint)X 2973(the)X 3102(characters)X 3460(are)X 3591(given)X 3801(in)X 3895(terms)X 4105(of)X 4204(pen)X 2520 2400(path)N 2699(and)X 2856(pen)X 3013(shape.)X 3257(Another)X 3561(popular)X 3847(method)X 4128(is)X 4222(the)X 2520 2496(same)N 2708(P)X 8 s 8 xH F 2752(OST)X 10 s 10 xH F 2873(S)X 8 s 8 xH F 2917(CRIPT)X 10 s 10 xH F 3122(that)X 3265(many)X 3466(printers)X 3734(accept.)X 3984(The)X 4133(prime)X 2520 2592(di)N 2582 MX (ff)138 606 oc 2630(erence)X 2869(is)X 2950(that)X 3098(the)X 0 f F 3224(METAFONT)X 1 f F 3593(program)X 3892(translates)X 4222(the)X 2520 2688(font)N 2671(de\256nitions)X 3030(into)X 3176(bitmaps)X 3451(prior)X 3629(to)X 3713(sending)X 3985(the)X 4106(font)X 4258(to)X 2520 2784(the)N 2657(printer)X 2910(while)X 3126(a)X 3200(P)X 8 s 8 xH F 3244(OST)X 10 s 10 xH F 3365(S)X 8 s 8 xH F 3409(CRIPT)X 10 s 10 xH F 3629(printer)X 3881(translates)X 4222(the)X 2520 2880(outlines)N 2806(into)X 2963(bitmaps)X 3249(at)X 3340(the)X 3471(time)X 3646(of)X 3746(printing.)X 4052(Interest-)X 2520 2976(ingly,)N 2724(both)X 2886(the)X 0 f F 3004(METAFONT)X 1 f F 3365(language)X 3675(and)X 3811(the)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 3072(language)N 2845(use)X 2987(Be)X 3045(\302zier)X 3233(curves)X 3478(for)X 3607(describing)X 3976(the)X 4110(curves)X 2520 3168(followed)N 2863(by)X 3001(the)X 3157(pen)X 3331(or)X 3456(the)X 3612(outlines.)X 3943(As)X 4089(usually)X 2520 3264(con\256gured)N 2886(these)X 3074(days,)X 3264(T)X 3305 3280(E)N 3346 3264(X)N 3428(uses)X 3590(bitmapped)X 3952(fonts)X 4136(in)X 4222(the)X 2520 3360(Computer)N 2865(Modern)X 3144(family)X 3378(generated)X 3715(by)X 0 f F 3819(METAFONT)X 1 f F 4160(,)X 4204(and)X 9 f F 2520 3456(ditroff)N 1 f F 2775(uses)X 2969(P)X 8 s 8 xH F 3013(OST)X 10 s 10 xH F 3134(S)X 8 s 8 xH F 3178(CRIPT)X 10 s 10 xH F 3416(outline)X 3695(fonts)X 3912(supplied)X 4240(by)X 2520 3552(Adobe.)N 2679 3648(The)N 2859(subsequent)X 3270(subsections)X 3695(delve)X 3925(deeper)X 4196(into)X 2520 3744(these)N 2712(issues)X 2929(in)X 3017(order)X 3213(to)X 3301(be)X 3403(able)X 3563(to)X 3651(state)X 3824(the)X 3948(goal)X 4112(of)X 4205(this)X 2520 3840(paper)N 2719(in)X 2801(the)X 2919(next)X 3077(section.)X 3 f F 2520 4032(2.1)N 2680(Fonts,)X 2947(design)X 3220(sizes,)X 3452(and)X 3637(magni\256cations.)X 1 f F 4231(As)X 2520 4128(mentioned,)N 2904(fonts)X 3090(are)X 3215(the)X 3339(raw)X 3486(material)X 3774(of)X 3866(typesetting.)X 4262(A)X 2520 4224(font)N 2676(is)X 2756(a)X 2819(set)X 2935(of)X 3029(printable)X 3341(patterns,)X 3642(one)X 3785(for)X 3906(each)X 4082(charac-)X 2520 4320(ter,)N 2650(that)X 2795(causes)X 3030(printing)X 3308(of)X 3400(that)X 3545(character)X 3866(in)X 3952(a)X 4012(particular)X 2520 4416(recognizable)N 2970(style)X 3160(on)X 3279(the)X 3416(page.)X 3628(As)X 3757(mentioned,)X 4155(these)X 2520 4512(patterns)N 2821(can)X 2980(be)X 3102(represented)X 3519(by)X 3645(bitmaps)X 3944(or)X 4057(drawing)X 2520 4608(instructions.)N 2679 4704(Characters)N 3057(come)X 3265(in)X 3361(various)X 3632(sizes.)X 3843(There)X 4066(are)X 4200(two)X 2520 4800(independent)N 2948(notions)X 3219(of)X 3322(sizing)X 3549(for)X 3679(fonts,)X 3894(point)X 4093(size)X 4253(or)X 2520 4896(design)N 2764(size)X 2924(and)X 3075(magni\256cation.)X 3571(The)X 2 f F 3732(design)X 3977(size)X 1 f F 4133(is)X 4222(the)X 2520 4992(size)N 2674(at)X 2761(which)X 2986(the)X 3113(character)X 3438(is)X 3520(designed)X 3834(to)X 3925(be)X 4029(used)X 4204(and)X 2520 5088(is,)N 2615(in)X 2699(well-designed)X 3171(text,)X 3333(the)X 3453(size)X 3600(in)X 3684(which)X 3903(the)X 4024(character)X 2520 5184(appears)N 2803(in)X 2902(\256nal,)X 3101(printed)X 3364(copy.)X 3576(Design)X 3839(size)X 4000(is)X 4089(usually)X 2520 5280(expressed)N 2870(in)X 2965(units)X 3153(of)X 3254(points,)X 3503(which)X 3733(are)X 3866(each)X 4048(approxi-)X 2520 5376(mately)N 2778(1/72)X 2960(of)X 3067(an)X 3183(inch.)X 3380(Most)X 3583(normal)X 3849(text)X 4008(in)X 4109(books,)X 2520 5472(newspapers,)N 2940(and)X 3081(magazines)X 3446(is)X 3525(printed)X 3778(in)X 3866(10)X 3972(point)X 4162(type.)X 2520 5568(Headlines)N 2864(are)X 2986(larger,)X 3217(perhaps)X 3490(as)X 3580(large)X 3764(as)X 3854(30)X 3957(points.)X 4195(The)X 2 f F 2520 5664(magni\256cation)N 1 f F 3008(of)X 3123(a)X 3207(font)X 3384(is)X 3485(the)X 3631(inverse)X 3911(of)X 4026(the)X 4173(ratio)X 2465 6084(1)N %%Page: 2 3 2 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(between)N 868(the)X 990(design)X 1223(size)X 1371(of)X 1461(the)X 1582(character)X 1901(and)X 2040(the)X 2161(size)X 2309(of)X 576 768(the)N 701(character)X 1024(as)X 1119(it)X 1191(emerges)X 1487(on)X 1595(the)X 1721(printer,)X 1983(the)X 2109(assump-)X 576 864(tion)N 723(being)X 923(that)X 1065(the)X 1185(\256nal)X 1349(copy)X 1527(is)X 1602(a)X 1660(photo)X 1864(reduction)X 2189(of)X 2278(the)X 576 960(printed)N 845(copy.)X 1063(Thus,)X 1285(if)X 1376(photo)X 1600(reduction)X 1945(halves)X 2193(linear)X 576 1056(dimensions,)N 988(one)X 1132(prints)X 1342(with)X 1512(magni\256cation)X 1980(2.)X 2088(If)X 2170(every-)X 576 1152(thing)N 788(is)X 889(done)X 1093(right,)X 1312(then)X 1498(after)X 1694(reduction,)X 2065(the)X 2211(letter)X 576 1248(appears)N 842(at)X 920(its)X 1015(design)X 1244(size.)X 735 1344(A)N 819(10)X 925(point)X 1115(design)X 1350(sized)X 1541(font)X 1696(printed)X 1949(at)X 2033(magni\256ca-)X 576 1440(tion)N 725(2)X 790(is)X 868(similar)X 1115(to)X 1202(but)X 1329(not)X 1456(quite)X 1641(the)X 1764(same)X 1954(as)X 2046(a)X 2107(20)X 2212(point)X 576 1536(version)N 839(of)X 933(the)X 1058(same)X 1250(font.)X 1446(For)X 1584(example,)X 1904(the)X 2030(serifs)X 2232(on)X 2340(a)X 576 1632(large)N 763(point)X 953(size)X 1104(are)X 1229(smaller)X 1490(than)X 1653(they)X 1816(would)X 2041(be)X 2142(if)X 2216(strict)X 576 1728(linear)N 783(magni\256cation)X 1247(were)X 1428(used.)X 1619(Other)X 1826(proportions,)X 2240(e.g.,)X 576 1824(of)N 679(x-height)X 982(to)X 1080(cap-height)X 1455(and)X 1606(of)X 1708(width)X 1925(to)X 2022(height,)X 2277(are)X 576 1920(also)N 751(di)X 813 MX (ff)138 606 oc 861(erent.)X 1088(While)X 1330(many)X 1554(purists,)X 1833(Knuth)X 2080(included,)X 576 2016(insist)N 773(on)X 881(using)X 1082(a)X 1146(di)X 1208 MX (ff)138 606 oc 1256(erent)X 1445(pattern)X 1696(for)X 1818(each)X 1994(design)X 2231(size,)X 576 2112(many)N 787(people)X 1034(accept)X 1273(magni\256cation)X 1746(as)X 1847(yielding)X 2143(accept-)X 576 2208(able)N 777(fonts)X 1004(at)X 1129(other)X 1361(point)X 1592(sizes.)X 1835(If)X 1955(the)X 2119(unit)X 2309(of)X 576 2304(magni\256cation)N 1047(is)X 1132(not)X 1266(too)X 1400(big)X 1534(the)X 1664(results)X 1905(are)X 2036(acceptable)X 576 2400(even)N 748(to)X 830(many)X 1028(purists.)X 3 f F 576 2592(2.2)N 736(Problems)X 1086(with)X 1262(bitmapped)X 1655(fonts.)X 1 f F 1889(A)X 1972(bitmap)X 2220(for)X 2340(a)X 576 2688(character)N 898(is)X 977(a)X 1039(rectangular)X 1426(array)X 1617(of)X 1709(bits)X 1849(covering)X 2155(the)X 2278(so-)X 576 2784(called)N 802(bounding)X 1138(box)X 1292(or)X 1393(frame)X 1616(that)X 1771(exactly)X 2038(contains)X 2340(a)X 576 2880(letter.)N 789(Figure)X 1026(1)X 1094(shows)X 1322(a)X 1386(low)X 1534(resolution)X 1881(bit)X 1992(map)X 2157(for)X 2278(the)X 576 2976(letter)N 762(\252N\272)X 913(in)X 996(a)X 1053(sans)X 1212(serif)X 1377(font.)X 1548(The)X 1695(inked)X 1895(squares)X 2158(or)X 2247(pix-)X 576 3072(els)N 694(are)X 822(denoted)X 1105(by)X 1214(\2521\272)X 1355(bits)X 1499(and)X 1644(the)X 1771(uninked)X 2058(pixels)X 2277(are)X 576 3168(denoted)N 850(by)X 950(\2520\272)X 1082(bits.)X 1044 3264 MXY 864 1488 0.00 -12.00 108.00 174.00 startFig %! %%%Title: N %%%Creator: fig2ps %%%CreationDate: Fri Jul 6 08:19:03 1990 %%%For: dberry@cs24 (dberry,479C,4325,252027,@$CP037,shlomo,cs24,) %%%Pages: 0 %%%BoundingBox: 0 -12 108 174 %%%Was: 0 0 108 162 %%%EndComments /$F2psDict 32 dict def $F2psDict begin $F2psDict /mtrx matrix put end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 1 setlinecap 1 setlinejoin -72 72 translate 0.000000 162.000000 translate 0.900 -0.900 scale 0.700 setlinewidth %% Polyline newpath 179 79 moveto 199 79 lineto 199 259 lineto 179 259 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 159 219 moveto 179 219 lineto 179 239 lineto 159 239 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 139 179 moveto 159 179 lineto 159 219 lineto 139 219 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 119 139 moveto 139 139 lineto 139 179 lineto 119 179 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 99 99 moveto 119 99 lineto 119 139 lineto 99 139 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 79 79 moveto 99 79 lineto 99 259 lineto 79 259 lineto closepath gsave 0.000 setgray fill grestore stroke $F2psEnd endFig 1341 4896(Figure)N 1570(1)X 576 5056(The)N 738(low)X 895(resolution)X 1252(example)X 1561(of)X 1666(Figure)X 1913(1)X 1991(illustrates)X 2340(a)X 576 5152(major)N 790(problem)X 1083(with)X 1251(bitmapped)X 1615(fonts.)X 1821(Curved)X 2083(lines)X 2260(and)X 576 5248(straight)N 858(lines)X 1051(that)X 1213(are)X 1354(neither)X 1619(vertical)X 1902(nor)X 2051(horizontal)X 576 5344(cannot)N 820(be)X 926(represented)X 1327(exactly)X 1588(by)X 1697(a)X 1762(rectangular)X 2153(pattern)X 576 5440(of)N 669(pixels.)X 906(One)X 1066(is)X 1145(forced)X 1377(to)X 1466(approximate)X 1894(them)X 2081(with)X 2250(rec-)X 576 5536(tangular)N 872(steps.)X 1085(At)X 1198(high)X 1373(resolution,)X 1745(e.g.)X 1893(above)X 2117(1000)X 2309(or)X 576 5632(so,)N 707(the)X 845(human)X 1103(eye)X 1255(cannot)X 1510(see)X 1654(the)X 1793(steps,)X 2014(but)X 2157(at)X 2256(low)X 2520 672(resolution)N 2877(the)X 3012(steps)X 3209(are)X 3344(quite)X 3540(apparent.)X 3893(Visible)X 4160(steps)X 2520 768(are)N 2639(called)X 2851(\252jaggies\272)X 3170(after)X 3338(the)X 3456(jagged)X 3690(edges.)X 2679 864(Bitmaps)N 2977(for)X 3103(a)X 3171(font)X 3332(must)X 3519(be)X 3627(built)X 3805(for)X 3931(each)X 4111(design)X 2520 960(size,)N 2696(magni\256cation,)X 3187(and)X 3334(resolution.)X 3705(If)X 3789(the)X 3917(resolution)X 4267(is)X 2520 1056(\256xed,)N 2724(as)X 2816(is)X 2894(the)X 3017(case)X 3181(on)X 3286(most)X 3466(printers,)X 3756(a)X 3817(bitmap)X 4064(must)X 4244(be)X 2520 1152(built)N 2687(for)X 2802(each)X 2971(design)X 3201(size)X 3346(and)X 3482(magni\256cation.)X 3962(An)X 4080(attempt)X 2520 1248(to)N 2633(use)X 2791(a)X 2878(given)X 3107(bitmap)X 3380(at)X 3489(a)X 3576(larger)X 3815(design)X 4076(size)X 4253(or)X 2520 1344(magni\256cation)N 2999(by)X 3118(just)X 3272(enlarging)X 3614(the)X 3751(area)X 3925(of)X 4031(each)X 4218(dot)X 2520 1440(yields)N 2731(a)X 2787(bad)X 2923(case)X 3082(of)X 3169(jaggies.)X 3 f F 2520 1632(2.3)N 0 f F 2680(METAFONT)X 3 f F 3064(and)X 3235(its)X 3359(environment.)X 0 f F 3879(METAFONT)X 1 f F 4220(,)X 4284(a)X 2520 1728(language)N 2834(for)X 2952(the)X 3074(speci\256cation)X 3503(of)X 3593(fonts)X 3776(or)X 3866(typefaces,)X 4213(has)X 2520 1824(been)N 2719(used)X 2913(to)X 3022(provide)X 3314(fonts)X 3521(for)X 3662(the)X 3808(T)X 3849 1840(E)N 3890 1824(X)N 3996(family)X 4253(of)X 2520 1920(typesetting)N 2911(systems.)X 3224(A)X 0 f F 3322(METAFONT)X 1 f F 3703(user)X 3876(writes)X 4111(a)X 4186(pro-)X 2520 2016(gram)N 2716(for)X 2841(each)X 3020(letter)X 3216(or)X 3314(symbol)X 3580(of)X 3678(an)X 3785(alphabet.)X 4128(These)X 2520 2112(programs)N 2862(are)X 2999(di)X 3061 MX (ff)138 606 oc 3109(erent)X 3308(from)X 3502(the)X 3638(usual)X 3845(computer)X 4186(pro-)X 2520 2208(grams,)N 2771(because)X 3061(they)X 3234(are)X 3369(essentially)X 3743(declarative)X 4132(rather)X 2520 2304(than)N 2726(imperative,)X 3156(using)X 3396(an)X 3539(algebraic)X 3901(language)X 4258(to)X 2520 2400(describe)N 2822(the)X 2955(center)X 3187(stroke)X 3418(or)X 3520(edges)X 3738(of)X 3840(the)X 3973(characters.)X 2520 2496(The)N 2666(description)X 3043(of)X 3131(a)X 3188(letter)X 3373(in)X 0 f F 3455(METAFONT)X 1 f F 3816(is)X 3889(a)X 3945(set)X 4054(of)X 4141(equa-)X 2520 2592(tions)N 2727(describing)X 3113(the)X 3264(strokes.)X 3564(When)X 3809(combined)X 4178(with)X 2520 2688(parameters)N 2900(describing)X 3261(the)X 3385(pen)X 3527(shape)X 3736(and)X 3878(size,)X 4049(one)X 4191(gets)X 2520 2784(a)N 2588(full)X 2731(description)X 3119(of)X 3219(a)X 3288(letter.)X 3506(Sizes)X 3708(and)X 3857(shapes)X 4104(of)X 4204(pen)X 2520 2880(nibs)N 2678(can)X 2815(be)X 2916(varied)X 3142(in)X 0 f F 3229(METAFONT)X 1 f F 3595(and)X 3735(the)X 3857(characters)X 4208(can)X 2520 2976(be)N 2635(built)X 2820(up)X 2939(in)X 3040(such)X 3226(a)X 3301(way)X 3474(that)X 3634(the)X 3772(outlines)X 4065(of)X 4172(each)X 2520 3072(stroke)N 2748(are)X 2879(precisely)X 3201(controlled.)X 3578(Herein)X 3829(lies)X 3972(the)X 4101(advan-)X 2520 3168(tage)N 2680(of)X 0 f F 2774(METAFONT)X 1 f F 3115(;)X 3164(a)X 3227(font)X 3383(is)X 3463(easily)X 3677(speci\256ed)X 3989(and)X 4132(varia-)X 2520 3264(tions)N 2695(are)X 2814(obtained)X 3110(by)X 3210(varying)X 3475(parameters.)X 2679 3360(Currently,)N 3057(the)X 3206(program)X 3529(that)X 3700(converts)X 4024(a)X 4112(set)X 4253(of)X 0 f F 2520 3456(METAFONT)N 1 f F 2914(font)X 3096(descriptions)X 3536(into)X 3713(a)X 3801(bitmapped)X 4191(font)X 2520 3552(translates)N 2858(the)X 2991(description)X 3382(of)X 3484(a)X 3555(letter)X 3755(combined)X 4106(with)X 4284(a)X 2520 3648(point)N 2714(size)X 2869(and)X 3015(a)X 3080(magni\256cation)X 3549(into)X 3702(a)X 3767(bitmap.)X 4038(This)X 4209(bit-)X 2520 3744(map)N 2678(can)X 2810(be)X 2906(sent)X 3055(to)X 3137(the)X 3255(printer)X 3489(to)X 3571(get)X 3689(a)X 3745(letter)X 3930(on)X 4030(the)X 4148(page.)X 2520 3840(Herein)N 2780(lies)X 2932(a)X 3009(disadvantage)X 3469(of)X 0 f F 3577(METAFONT)X 1 f F 3918(;)X 3981(a)X 4058(bit)X 4182(map)X 2520 3936(must)N 2698(be)X 2797(kept)X 2958(for)X 3075(each)X 3246(point)X 3433(size)X 3581(and)X 3720(magni\256cation,)X 4204(and)X 2520 4032(this)N 2655(can)X 2787(require)X 3035(a)X 3091(lot)X 3195(of)X 3282(space.)X 3 f F 2520 4224(2.4)N 2680(The)X 2869(P)X 8 s 8 xH F 2918(OST)X 10 s 10 xH F 3047(S)X 8 s 8 xH F 3091(CRIPT)X 10 s 10 xH F 3346(language.)X 1 f F 3748(The)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 4320(language)N 2834(is)X 2911(an)X 3011(interpretive)X 3405(programming)X 3865(language)X 4178(with)X 2520 4416(graphics)N 2851(capabilities.)X 3296(P)X 8 s 8 xH F 3340(OST)X 10 s 10 xH F 3461(S)X 8 s 8 xH F 3505(CRIPT)X 10 s 10 xH F 3687('s)X 3805(extensive)X 4168(page)X 2520 4512(description)N 2914(capabilities)X 3317(are)X 3454(embedded)X 3822(into)X 3983(a)X 4056(general-)X 2520 4608(purpose)N 2854(programming)X 3370(language)X 3741(framework.)X 4195(The)X 2520 4704(language)N 2834(includes)X 3125(a)X 3185(conventional)X 3622(set)X 3734(of)X 3824(data)X 3981(types)X 4173(such)X 2520 4800(as)N 2611(numbers,)X 2931(arrays,)X 3173(and)X 3314(strings,)X 3572(control)X 3824(primitives)X 4173(such)X 2520 4896(as)N 2650(conditionals,)X 3124(loops)X 3360(and)X 3538(procedures,)X 3973(and)X 4151(some)X 2520 4992(unusual)N 2809(features)X 3104(such)X 3291(as)X 3398(dictionaries.)X 3832(In)X 3939(most)X 4134(P)X 8 s 8 xH F 4178(OST-)X 10 s 10 xH F 2520 5088(S)N 8 s 8 xH F 2564(CRIPT)X 10 s 10 xH F 2774(fonts,)X 2982(each)X 3158(letter)X 3351(is)X 3432(described)X 3767(by)X 3874(an)X 3977(imperative)X 2520 5184(program)N 2825(tracing)X 3081(the)X 3213(outline)X 3469(of)X 3570(the)X 3702(letter.)X 3921(This)X 4097(tracing)X 2520 5280(may)N 2700(include)X 2978(curves)X 3230(given)X 3449(as)X 3557(Be)X 3615(\302zier)X 3809(curves,)X 4080(straight)X 2520 5376(lines,)N 2731(arcs,)X 2921(etc.)X 3075(A)X 3174(P)X 8 s 8 xH F 3218(OST)X 10 s 10 xH F 3339(S)X 8 s 8 xH F 3383(CRIPT)X 10 s 10 xH F 3606(printer)X 3861(interprets)X 4205(this)X 2520 5472(outline)N 2777(program)X 3084(to)X 3181(draw)X 3377(and)X 3528(\256ll)X 3650(in)X 3746(the)X 3878(letters)X 4108(on)X 4222(the)X 2520 5568(page.)N 2731(Some)X 2953(consider)X 3265(the)X 3403(imperative)X 3786(nature)X 4027(of)X 4134(P)X 8 s 8 xH F 4178(OST-)X 10 s 10 xH F 2520 5664(S)N 8 s 8 xH F 2564(CRIPT)X 10 s 10 xH F 2780(to)X 2875(be)X 2984(a)X 3053(disadvantage)X 3505(in)X 3600(comparison)X 4007(to)X 0 f F 4102(META-)X 1 f F 2465 6084(2)N %%Page: 3 4 3 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 576 672(FONT)N 1 f F 741('s)X 853(declarative)X 1260(nature.)X 1535(The)X 1714(main)X 1928(advantage)X 2309(of)X 576 768(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 996(relative)X 1266(to)X 0 f F 1357(METAFONT)X 1 f F 1727(is)X 1809(that)X 1958(one)X 2103(needs)X 2314(to)X 576 864(keep)N 756(only)X 926(the)X 1052(outline.)X 1322(If,)X 1424(as)X 1519(in)X 1609(the)X 1735(usual)X 1932(case,)X 2120(the)X 2247(out-)X 576 960(line)N 747(is)X 851(speci\256ed)X 1186(in)X 1298(terms)X 1526(of)X 1643(a)X 1729(\256xed)X 1939(path)X 2127(through)X 576 1056(Euclidean)N 929(two-space,)X 1307(this)X 1455(outline)X 1710(may)X 1881(be)X 1990(scaled)X 2224(arbi-)X 576 1152(trarily)N 803(to)X 896(yield)X 1087(any)X 1234(magni\256cation.)X 1725(The)X 1880(scaling)X 2137(is)X 2220(done)X 576 1248(by)N 687(the)X 816(P)X 8 s 8 xH F 860(OST)X 10 s 10 xH F 981(S)X 8 s 8 xH F 1025(CRIPT)X 10 s 10 xH F 1238(interpreter)X 1604(at)X 1693(the)X 1822(printer.)X 2087(Thus)X 2278(the)X 576 1344(di)N 638 MX (ff)138 606 oc 686(erent)X 883(magni\256cations)X 1390(do)X 1505(not)X 1642(require)X 1905(any)X 2056(additional)X 576 1440(storage)N 833(space.)X 1057(Actually,)X 1378(the)X 1502(outlines)X 1781(are)X 1906(kept)X 2070(as)X 2163(if)X 2238(they)X 576 1536(were)N 754(for)X 869(the)X 988(Adobe-standard)X 1522(1000)X 1703(dots)X 1857(per)X 1980(emm,)X 2180(which)X 576 1632(at)N 675(a)X 752(design)X 1002(size)X 1168(of)X 1276(10)X 1398(points)X 1635(amounts)X 1948(to)X 2052(7200)X 2254(dpi.)X 576 1728(Because)N 867(a)X 926(typical)X 1166(phototypesetter)X 1682(has)X 1811(a)X 1869(maximum)X 2215(reso-)X 576 1824(lution)N 799(of)X 903(about)X 1118(2500)X 1315(dpi,)X 1474(the)X 1609(outlines)X 1899(are)X 2035(said)X 2201(to)X 2300(be)X 576 1920(arbitrarily)N 939(scaleable.)X 1296(If)X 1392(the)X 1532(outlines)X 1827(are)X 1968(kept,)X 2168(as)X 2277(are)X 576 2016(many)N 0 f F 794(METAFONT)X 1 f F 1175(de\256nitions,)X 1573(as)X 1681(paths)X 1891(through)X 2181(points)X 576 2112(calculated)N 925(by)X 1028(the)X 1149(outline)X 1394(program,)X 1709(then)X 1869(it)X 1935(is)X 2010(possible)X 2294(to,)X 576 2208(say,)N 744(make)X 959(serifs)X 1174(grow)X 1380(more)X 1586(slowly)X 1840(than)X 2020(linearly.)X 2327(It)X 576 2304(would)N 811(then)X 984(be)X 1094(possible)X 1390(to)X 1486(have)X 1672(one)X 1822(P)X 8 s 8 xH F 1866(OST)X 10 s 10 xH F 1987(S)X 8 s 8 xH F 2031(CRIPT)X 10 s 10 xH F 2247(font)X 576 2400(scaleable)N 905(to)X 1001(all)X 1115(design)X 1358(sizes.)X 1588(Generally,)X 1959(outline)X 2216(fonts)X 576 2496(are)N 705(not)X 837(written)X 1094(this)X 1239(way,)X 1423(so)X 1524(that)X 1673(strictly)X 1924(speaking)X 2238(they)X 576 2592(are)N 695(scaleable)X 1010(only)X 1172(to)X 1254(all)X 1354(magni\256cations.)X 735 2688(In)N 823(addition,)X 1126(the)X 1246(P)X 8 s 8 xH F 1290(OST)X 10 s 10 xH F 1411(S)X 8 s 8 xH F 1455(CRIPT)X 10 s 10 xH F 1659(language)X 1971(has)X 2100(a)X 2158(way)X 2314(to)X 576 2784(work)N 786(with)X 973(bitmapped)X 1356(fonts.)X 1601(While)X 1842(the)X 1985(P)X 8 s 8 xH F 2029(OST)X 10 s 10 xH F 2150(S)X 8 s 8 xH F 2194(CRIPT)X 10 s 10 xH F 576 2880(printer)N 815(can)X 952(scale)X 1138(them)X 1323(before)X 1554(printing,)X 1853(the)X 1977(end)X 2119(result)X 2323(is)X 576 2976(that)N 726(each)X 904(of)X 1001(the)X 1129(\256xed)X 1319(number)X 1594(of)X 1691(dots)X 1854(in)X 1945(the)X 2072(bitmap)X 2323(is)X 576 3072(made)N 772(larger)X 983(or)X 1073(smaller.)X 1352(Since)X 1553(the)X 1674(human)X 1915(will)X 2062(see)X 2188(larger)X 576 3168(dots)N 752(as)X 862(jagged)X 1119(lines,)X 1332(such)X 1521(fonts)X 1723(are)X 1864(not)X 2008(really)X 2233(con-)X 576 3264(sidered)N 828(scaleable.)X 3 f F 576 3456(2.5)N 736(Be)X 794(\302zier)X 986(curves.)X 1 f F 1280(Both)X 0 f F 1466(METAFONT)X 1 f F 1838(and)X 1985(P)X 8 s 8 xH F 2029(OST)X 10 s 10 xH F 2150(S)X 8 s 8 xH F 2194(CRIPT)X 10 s 10 xH F 576 3552(use)N 725(Be)X 783(\302zier)X 978(cubics)X 1225(to)X 1329(specify)X 1603(curves.)X 1874(For)X 2026(the)X 2165(Be)X 2223(\302zier)X 576 3648(form,)N 773(four)X 928(points)X 1144(are)X 1264(used,)X 1452(the)X 1571(start)X 1730(point,)X 1935(the)X 2054(end)X 2192(point,)X 576 3744(and)N 716(two)X 860(control)X 1111(points,)X 1350(as)X 1441(shown)X 1674(in)X 1759(the)X 1880(top)X 2005(half)X 2153(of)X 2243(Fig-)X 576 3840(ure)N 708(2.)X 817(The)X 971(tangent)X 1236(vectors)X 1497(of)X 1593(the)X 1720(endpoints)X 2060(are)X 2188(deter-)X 576 3936(mined)N 818(from)X 1016(the)X 1156(line)X 1318(segments)X 2 f F 1658(P)X 7 s 7 xH 1 f F 1707 3952(1)N 10 s 10 xH 2 f F 1741 3936(P)N 7 s 7 xH 1 f F 1790 3952(2)N 10 s 10 xH F 1866 3936(and)N 2 f F 2024(P)X 7 s 7 xH 1 f F 2073 3952(3)N 10 s 10 xH 2 f F 2107 3936(P)N 7 s 7 xH 1 f F 2156 3952(4)N 10 s 10 xH F 2190 3936(.)N 2251(The)X 576 4032(mathematical)N 1053(introduction)X 1489(of)X 1601(the)X 1744(Be)X 1802(\302zier)X 2000(form)X 2202(when)X 576 4128(given)N 774(four)X 928(points)X 2 f F 1143(P)X 7 s 7 xH 1 f F 1192 4144(1)N 10 s 10 xH F 1226 4128(,)N 2 f F 1266(P)X 7 s 7 xH 1 f F 1315 4144(2)N 10 s 10 xH F 1349 4128(,)N 2 f F 1389(P)X 7 s 7 xH 1 f F 1438 4144(3)N 10 s 10 xH F 1472 4128(,)N 1512(and)X 2 f F 1648(P)X 7 s 7 xH 1 f F 1697 4144(4)N 10 s 10 xH F 1751 4128(is)N 2 f F 648 4320(z)N 1 f F 692(\()X 2 f F 719(t)X 1 f F 747(\))X 47 f F 794(=)X 1 f F 858(\(1)X 47 f F 925(-)X 2 f F 969(t)X 1 f F 997(\))X 7 s 7 xH F 1024 4288(3)N 10 s 10 xH 2 f F 1058 4320(P)N 7 s 7 xH 1 f F 1107 4336(1)N 10 s 10 xH 47 f F 1161 4320(+)N 1 f F 1225(3)X 2 f F (t)S 1 f F 1300(\()X 2 f F 1327(t)X 47 f F 1362(-)X 1 f F 1406(1\))X 7 s 7 xH F 1473 4288(2)N 10 s 10 xH 2 f F 1507 4320(P)N 7 s 7 xH 1 f F 1556 4336(2)N 10 s 10 xH 47 f F 1610 4320(+)N 1 f F 1674(3)X 2 f F (t)S 7 s 7 xH 1 f F 1745 4288(2)N 10 s 10 xH F 1779 4320(\(1)N 47 f F 1846(-)X 2 f F 1890(t)X 1 f F 1918(\))X 2 f F 1945(P)X 7 s 7 xH 1 f F 1994 4336(3)N 10 s 10 xH 47 f F 2048 4320(+)N 2 f F 2112(t)X 7 s 7 xH 1 f F 2143 4288(3)N 10 s 10 xH 2 f F 2177 4320(P)N 7 s 7 xH 1 f F 2226 4336(4)N 10 s 10 xH F 2260 4320(,)N 576 4512(for)N 690(0)X 47 f F 750(\243)X 2 f F 814(t)X 47 f F 862(\243)X 1 f F 926(1.)X 735 4608(Two)N 925(characteristics)X 1428(of)X 1538(the)X 1679(Be)X 1737(\302zier)X 1933(form)X 2132(tend)X 2314(to)X 576 4704(make)N 776(it)X 846(widely)X 1090(used)X 1263(in)X 1351(graphics.)X 1668(First,)X 1859(by)X 1964(choosing)X 2278(the)X 576 4800(control)N 850(points)X 1092(one)X 1255(can)X 1414(easily)X 1648(mold)X 1859(the)X 2004(curve)X 2230(to)X 2340(a)X 576 4896(desired)N 836(shape.)X 1067(Second,)X 1351(the)X 1476(four)X 1637(control)X 1891(points)X 2113(taken)X 2314(in)X 576 4992(another)N 839(order)X 1031(de\256ne)X 1250(a)X 1309(convex)X 1564(polygon,)X 2 f F 1869(P)X 7 s 7 xH 1 f F 1918 5008(1)N 10 s 10 xH 2 f F 1975 4992(P)N 7 s 7 xH 1 f F 2024 5008(2)N 10 s 10 xH 2 f F 2081 4992(P)N 7 s 7 xH 1 f F 2130 5008(4)N 10 s 10 xH 2 f F 2187 4992(P)N 7 s 7 xH 1 f F 2236 5008(3)N 10 s 10 xH 2 f F 2293 4992(P)N 7 s 7 xH 1 f F 2342 5008(1)N 10 s 10 xH F 576 5088(in)N 668(this)X 813(case,)X 1002(the)X 2 f F 1130(convex)X 1384(hull)X 1 f F 1504(,)X 1553(which)X 1778(bounds)X 2038(the)X 2165(Be)X 2223(\302zier)X 576 5184(curve.)N 811(The)X 973(convex)X 1242(hull)X 1403(is)X 1493(useful)X 1726(in)X 1825(clipping)X 2124(a)X 2197(curve)X 576 5280(against)N 823(a)X 879(window.)X 735 5376(When)N 962(a)X 0 f F 1033(METAFONT)X 1 f F 1410(user)X 1580(speci\256es)X 1892(a)X 1964(path,)X 0 f F 2158(META-)X 576 5472(FONT)N 1 f F 772(creates)X 1027(a)X 1094(list)X 1222(of)X 1320(knots)X 1524(and)X 1671(control)X 1929(points)X 2154(for)X 2278(the)X 576 5568(associated)N 951(cubic)X 1170(spline)X 1406(curves.)X 1701(If)X 1800(the)X 1943(user)X 2122(has)X 2274(not)X 576 5664(speci\256ed)N 890(the)X 1017(control)X 1273(points)X 1497(explicitly,)X 0 f F 1847(METAFONT)X 1 f F 2216(itself)X 2520 672(\256nds)N 2696(some)X 2886(for)X 3001(the)X 3120(splines)X 3363(of)X 3451(a)X 3508(curve,)X 3729(while)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 768(requires)N 2799(all)X 2899(the)X 3017(four)X 3171(points)X 3386(to)X 3468(be)X 3564(explicitly)X 3886(given.)X 2600 864 MXY 1640 3352 0.00 0.00 205.00 419.00 startFig %! %%%Title: bezier %%%Creator: fig2ps %%%CreationDate: Fri Jul 6 08:19:07 1990 %%%For: dberry@cs24 (dberry,479C,4325,252027,@$CP037,shlomo,cs24,) %%%Pages: 0 %%%BoundingBox: 0 0 205 419 %%%EndComments /$F2psDict 32 dict def $F2psDict begin $F2psDict /mtrx matrix put /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix } def /DrawSplineSection { /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def /xa x1 x2 x1 sub 0.666667 mul add def /ya y1 y2 y1 sub 0.666667 mul add def /xb x3 x2 x3 sub 0.666667 mul add def /yb y3 y2 y3 sub 0.666667 mul add def x1 y1 lineto xa ya xb yb x3 y3 curveto } def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 1 setlinecap 1 setlinejoin -77 80 translate 0.000000 419.000000 translate 0.900 -0.900 scale 0.700 setlinewidth %% Ellipse newpath 299 434 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 259 354 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 199 394 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 179 474 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 159 534 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 99 474 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke %% Ellipse newpath 119 387 2 2 0 360 DrawEllipse gsave 0.000 setgray fill grestore stroke [1 3.200000] 0 setdash %% Polyline newpath 99 199 moveto 179 119 lineto 239 299 lineto 299 199 lineto stroke stroke [] 0 setdash %% Open spline newpath 99.000 474.000 moveto 109.000 431.500 lineto 109.000 431.500 119.000 389.000 139.000 461.500 DrawSplineSection 139.000 461.500 159.000 534.000 169.000 504.000 DrawSplineSection 169.000 504.000 179.000 474.000 189.000 434.000 DrawSplineSection 189.000 434.000 199.000 394.000 229.000 374.000 DrawSplineSection 229.000 374.000 259.000 354.000 279.000 394.000 DrawSplineSection 299.000 434.000 lineto stroke %% Open spline newpath 99.000 199.000 moveto 139.000 159.000 lineto 139.000 159.000 179.000 119.000 209.000 209.000 DrawSplineSection 209.000 209.000 239.000 299.000 269.000 249.000 DrawSplineSection 299.000 199.000 lineto stroke /Times-Italic findfont 12.000 scalefont setfont 299 184 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 304 189 moveto 1 -1 scale (4)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 309 429 moveto 1 -1 scale (7)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 269 349 moveto 1 -1 scale (6)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 209 384 moveto 1 -1 scale (5)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 159 554 moveto 1 -1 scale (3)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 154 549 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 94 469 moveto 1 -1 scale (1)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 89 464 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 130 379 moveto 1 -1 scale (2)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 125 374 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 204 379 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 189 494 moveto 1 -1 scale (4)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 184 489 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 304 424 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 264 344 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 99 179 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 104 184 moveto 1 -1 scale (1)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 179 104 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 184 109 moveto 1 -1 scale (2)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Italic findfont 12.000 scalefont setfont 239 314 moveto 1 -1 scale (P)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale /Times-Roman findfont 9.000 scalefont setfont 244 319 moveto 1 -1 scale (3)dup stringwidth pop 2 div neg 0 rmoveto gsave 0.000 rotate show grestore 1 -1 scale $F2psEnd endFig 3285 4360(Figure)N 3514(2)X 3 f F 2520 4616(3)N 0 f F 2620(METAFONT)X 3 f F 2981(to)X 3068(P)X 8 s 8 xH F 3117(OST)X 10 s 10 xH F 3246(S)X 8 s 8 xH F 3290(CRIPT)X 10 s 10 xH F 3509(compiler\320)X 2520 4712(why)N 2682(and)X 2830(how)X 1 f F 2520 4856(This)N 2701(section)X 2967(describes)X 3305(a)X 3380(major)X 3606(performance)X 4053(problem)X 2520 4952(with)N 0 f F 2706(METAFONT)X 1 f F 3047(-generated)X 3430(fonts)X 3633(that)X 3796(perhaps)X 4089(can)X 4244(be)X 2520 5048(solved)N 2753(by)X 2857(translating)X 3220(them)X 3405(into)X 3554(P)X 8 s 8 xH F 3598(OST)X 10 s 10 xH F 3719(S)X 8 s 8 xH F 3763(CRIPT)X 10 s 10 xH F 3970(fonts.)X 4195(The)X 2520 5144(goals)N 2714(of)X 2806(this)X 2946(translation)X 3308(are)X 3431(established.)X 3831(Based)X 4051(on)X 4155(these)X 2520 5240(goals,)N 2737(a)X 2801(particular)X 3137(approach)X 3460(is)X 3542(adopted)X 3825(to)X 3916(engineer)X 4222(the)X 2520 5336(software)N 2817(largely)X 3060(from)X 3236(existing)X 3509(components.)X 3 f F 2520 5528(3.1)N 2680(A)X 2816(problem)X 3184(with)X 0 f F 3414(METAFONT)X 3 f F 3755(-generated)X 4200(bit-)X 2520 5624(mapped)N 2821(fonts.)X 1 f F 3056(In)X 0 f F 3148(METAFONT)X 1 f F 3489(,)X 3534(one)X 3675(gets)X 3829(one)X 3970(bitmap)X 4217(per)X 2520 5720(point)N 2709(size)X 2859(and)X 3000(magni\256cation.)X 3485(The)X 3635(size)X 3785(of)X 3877(these)X 4067(bitmaps)X 2465 6084(3)N %%Page: 4 5 4 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(grows)N 803(as)X 901(the)X 1029(square)X 1269(of)X 1366(product)X 1641(of)X 1738(the)X 1866(design)X 2105(size)X 2260(and)X 576 768(the)N 711(magni\256cation)X 1188(and)X 1341(requires)X 1637(a)X 1710(large)X 1908(storage)X 2177(space.)X 576 864(Files)N 754(that)X 896(are)X 1017(sent)X 1168(to)X 1252(the)X 1372(printer)X 1608(will)X 1754(be)X 1852(large,)X 2055(especially)X 576 960(if)N 667(lots)X 824(of)X 933(di)X 995 MX (ff)138 606 oc 1043(erent)X 1247(point)X 1454(sizes)X 1653(or)X 1763(magni\256cations)X 2277(are)X 576 1056(used.)N 781(In)X 886(P)X 8 s 8 xH F 930(OST)X 10 s 10 xH F 1051(S)X 8 s 8 xH F 1095(CRIPT)X 10 s 10 xH F 1315(with)X 1495(outline)X 1755(fonts,)X 1972(there)X 2170(is)X 2260(one)X 576 1152(outline)N 824(per)X 953(character)X 1275(which)X 1497(can)X 1635(be)X 1738(scaled)X 1966(arbitrarily)X 2314(to)X 576 1248(any)N 739(magni\256cation)X 1225(that)X 1391(might)X 1623(be)X 1745(needed.)X 2039(Moreover,)X 576 1344(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 999(outline)X 1253(fonts)X 1445(are)X 1576(generally)X 1907(more)X 2104(compact)X 576 1440(than)N 737(bitmapped)X 1098(fonts.)X 1301(For)X 1435(example,)X 1750(an)X 1849(enclosed)X 2152(rectan-)X 576 1536(gle)N 703(is)X 785(represented)X 1185(by)X 1294(its)X 1398(four)X 1561(corner)X 1796(points)X 2020(rather)X 2238(than)X 576 1632(by)N 676(all)X 776(the)X 894(bits)X 1029(enclosed)X 1330(by)X 1430(the)X 1548(rectangle.)X 735 1728(Certainly)N 1063(the)X 1191(outline)X 1443(fonts)X 1633(are)X 1762(more)X 1957(easily)X 2175(scaled)X 576 1824(to)N 662(other)X 851(magni\256cations.)X 1366(By)X 1483(scaling)X 1734(the)X 1855(bitmapped)X 2216(fonts)X 576 1920(downward,)N 971(too)X 1109(much)X 1323(information)X 1737(is)X 1826(lost,)X 1997(and)X 2149(scaling)X 576 2016(upward)N 862(introduces)X 1240(the)X 1382(jaggies.)X 1693(Moreover,)X 2074(the)X 2216(pixel)X 576 2112(array)N 766(is)X 843(device)X 1078(dependent;)X 1455(it)X 1524(is)X 1602(valid)X 1787(for)X 1906(output)X 2135(devices)X 576 2208(of)N 666(only)X 831(one)X 969(particular)X 1299(resolution)X 1641(and)X 1779(one)X 1917(choice)X 2149(of)X 2238(pos-)X 576 2304(sible)N 750(data)X 907(values)X 1135(per)X 1261(pixel.)X 1464(Scaleable)X 1795(fonts)X 1979(have)X 2155(a)X 2215(great)X 576 2400(advantage)N 923(\320)X 1024(you)X 1165(need)X 1337(only)X 1499(one)X 1635(font)X 1784(description)X 2160(\256le)X 2282(for)X 576 2496(all)N 690(magni\256cations)X 1195(of)X 1296(that)X 1450(font.)X 1654(Actually,)X 1985(P)X 8 s 8 xH F 2029(OST)X 10 s 10 xH F 2150(S)X 8 s 8 xH F 2194(CRIPT)X 10 s 10 xH F 576 2592(outline)N 830(fonts)X 1022(are)X 1153(more)X 1350(scaleable)X 1677(even)X 1860(than)X 2029(the)X 0 f F 2158(META-)X 576 2688(FONT)N 1 f F 781(originals)X 1101(for)X 1235(another)X 1516(reason.)X 1786(In)X 1893([9],)X 2048(it)X 2133(is)X 2227(said,)X 576 2784(\252Caution:)N 930(before)X 1179(using)X 1395(this)X 1553(`)X 3 f F 1580(at)X 1 f F 1647(')X 1716(feature)X 1982(\(i.e.)X 2149(scaling)X 576 2880(downward)N 944(or)X 1040(upward\))X 1337(you)X 1486(should)X 1728(check)X 1946(to)X 2038(make)X 2242(sure)X 576 2976(that)N 717(your)X 885(typesetter)X 1218(supports)X 1510(the)X 1629(font)X 1779(at)X 1857(the)X 1975(size)X 2120(in)X 2202(ques-)X 576 3072(tion;)N 747(T)X 788 3088(E)N 829 3072(X)N 913(will)X 1063(accept)X 1295(any)X 47 f F 1437(\341)X 1 f F 1463(desired)X 1721(size)X 47 f F 1846(\361)X 1 f F 1898(that)X 2044(is)X 2123(positive)X 576 3168(and)N 720(less)X 868(than)X 1034(2048)X 1222(points,)X 1465(but)X 1595(the)X 1721(\256nal)X 1891(output)X 2123(will)X 2274(not)X 576 3264(be)N 689(right)X 877(unless)X 1114(the)X 1250(scaled)X 1489(font)X 1656(really)X 1877(is)X 1968(available)X 2296(on)X 576 3360(your)N 749(printing)X 1027(device.\272)X 1318(Getting)X 1583(P)X 8 s 8 xH F 1627(OST)X 10 s 10 xH F 1748(S)X 8 s 8 xH F 1792(CRIPT)X 10 s 10 xH F 1999(outline)X 2246(ver-)X 576 3456(sions)N 783(of)X 0 f F 893(METAFONT)X 1 f F 1277(fonts)X 1480(is)X 1576(possible)X 1882(since)X 2091(both)X 2277(are)X 576 3552(based)N 788(on)X 897(Be)X 955(\302zier)X 1137(curves.)X 1396(Doing)X 1625(so)X 1725(makes)X 1959(fonts)X 2148(hereto-)X 576 3648(fore)N 738(available)X 1061(only)X 1236(on)X 1349(T)X 1390 3664(E)N 1431 3648(X)N 1522(and)X 1671(other)X 1869(DVI-based)X 2255(for-)X 576 3744(matters)N 839(available)X 1156(on)X 9 f F 1265(ditroff)X 1 f F 1491(and)X 1633(other)X 1824(formatters)X 2180(which)X 576 3840(have)N 765(evolved)X 1056(to)X 1155(or)X 1259(have)X 1448(been)X 1637(designed)X 1959(for)X 2090(use)X 2234(with)X 576 3936(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 987(printers.)X 3 f F 576 4128(3.2)N 736(Goals.)X 1 f F 999(Based)X 1223(on)X 1331(the)X 1457(observations)X 1891(of)X 1987(Section)X 2256(3.1,)X 576 4224(the)N 704(goal)X 872(of)X 969(this)X 1114(research)X 1413(is)X 1496(to)X 1588(produce)X 1877(a)X 0 f F 1943(METAFONT)X 1 f F 2314(to)X 576 4320(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 1000(compiler,)X 9 f F 1341(mf2ps)X 1 f F 1558(.)X 1612(Its)X 1726(operational)X 2121(require-)X 576 4416(ments)N 787(are)X 906(items)X 1099(1)X 1159(through)X 1428(5:)X 639 4560(1.)N 735(It)X 831(must)X 1033(be)X 1156(possible)X 1465(to)X 1574(translate)X 1893(any)X 2056(legitimate)X 0 f F 735 4656(METAFONT)N 1 f F 1102(font)X 1257(de\256nition)X 1589(at)X 1673(any)X 1814(given)X 2017(design)X 2251(size)X 735 4752(into)N 879(a)X 935(P)X 8 s 8 xH F 979(OST)X 10 s 10 xH F 1100(S)X 8 s 8 xH F 1144(CRIPT)X 10 s 10 xH F 1346(outline)X 1588(font.)X 639 4896(2.)N 735(The)X 894(resulting)X 1208(P)X 8 s 8 xH F 1252(OST)X 10 s 10 xH F 1373(S)X 8 s 8 xH F 1417(CRIPT)X 10 s 10 xH F 1633(outline)X 1889(font)X 2052(should)X 2300(be)X 735 4992(arbitrarily)N 1076(scaleable.)X 639 5136(3.)N 735(The)X 883(resulting)X 1186(fonts)X 1369(should)X 1606(look)X 1772(like)X 1916(the)X 2038(bitmapped)X 735 5232(fonts)N 915(when)X 1109(printed)X 1356(on)X 1456(the)X 1574(same)X 1759(printer.)X 639 5376(4.)N 735(The)X 894(resulting)X 1208(P)X 8 s 8 xH F 1252(OST)X 10 s 10 xH F 1373(S)X 8 s 8 xH F 1417(CRIPT)X 10 s 10 xH F 1633(outline)X 1889(font)X 2052(should)X 2300(be)X 735 5472(more)N 944(compact)X 2 f F 1260(when)X 1473(sent)X 1646(to)X 1752(the)X 1894(printer)X 1 f F 2159(than)X 2340(a)X 735 5568(P)N 8 s 8 xH F 779(OST)X 10 s 10 xH F 900(S)X 8 s 8 xH F 944(CRIPT)X 10 s 10 xH F 1168(version)X 1446(of)X 1555(the)X 0 f F 1695(METAFONT)X 1 f F 2036(-generated)X 735 5664(bitmapped)N 1093(font.)X 2520 672(The)N 2681(fourth)X 2913(requirement)X 3337(deserves)X 3650(a)X 3722(bit)X 3842(of)X 3946(explanation)X 2520 768(and)N 2669(quali\256cation.)X 3142(First)X 3321(note)X 3492(that)X 3645(what)X 3833(is)X 3918(compared)X 4267(is)X 2520 864(what)N 2737(is)X 2851(sent)X 3041(to)X 3164(the)X 3323(printer.)X 3638(Certainly)X 3998(there)X 4221(are)X 2520 960(compressed)N 2922(versions)X 3212(of)X 3301(the)X 3421(bitmapped)X 3781(fonts)X 3963(that)X 4105(reduce)X 2520 1056(the)N 2651(disk)X 2817(storage)X 3082(requirements)X 3535(of)X 3636(the)X 3768(bitmapped)X 4140(fonts.)X 2520 1152(However,)N 2869(they)X 3041(must)X 3230(be)X 3340(uncompressed)X 3832(before)X 4071(sending)X 2520 1248(them)N 2708(to)X 2798(most)X 2981(printers.)X 3274(It)X 3351(is)X 3432(the)X 3558(printer's)X 3858(storage)X 4118(that)X 4267(is)X 2520 1344(limited;)N 2789(generally)X 3109(disk)X 3263(space)X 3463(is)X 3537(in)X 3620(abundance.)X 4005(However,)X 2520 1440(since)N 2716(printers)X 2992(these)X 3188(days)X 3367(are)X 3498(general)X 3767(purpose)X 4053(comput-)X 2520 1536(ers,)N 2655(what)X 2832(a)X 2889(printer)X 3124(accepts)X 3382(may)X 3540(in)X 3622(fact)X 3763(be)X 3859(a)X 3915(compression)X 2520 1632(that)N 2660(it)X 2724(has)X 2851(been)X 3023(programmed)X 3453(to)X 3535(undo.)X 2679 1728(Now)N 2867(for)X 2993(the)X 3123(case)X 3294(in)X 3388(which)X 3616(disk)X 3781(space)X 3992(is)X 4077(of)X 4177(con-)X 2520 1824(cern,)N 2701(the)X 2821(comparison)X 3217(should)X 3452(still)X 3593(be)X 3690(relative)X 3952(to)X 4035(printable)X 2520 1920(versions.)N 2844(There)X 3069(exist)X 3258(algorithms,)X 3658(e.g.)X 3812(that)X 3970(of)X 4075(Lempel)X 2520 2016(and)N 2662(Ziv)X 2799([13])X 2959(that)X 3104(can)X 3241(be)X 3342(used)X 3514(to)X 3601(compress)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 2112(outline)N 2789(fonts)X 2996(which)X 3239(are,)X 3405(after)X 3600(all,)X 3747(just)X 3910(ASCII)X 4167(\256les.)X 2520 2208(Therefore,)N 2906(in)X 3016(order)X 3234(not)X 3384(to)X 3494(have)X 3694(a)X 3778(contest)X 4052(between)X 2520 2304(compression)N 2947(algorithms,)X 3331(the)X 3451(uncompressed)X 3932(versions)X 4221(are)X 2520 2400(compared.)N 2886(Furthermore,)X 3336(in)X 3427(order)X 3626(not)X 3757(to)X 3848(have)X 4029(a)X 4093(contest)X 2520 2496(between)N 2840(di)X 2902 MX (ff)138 606 oc 2950(erent)X 3163(kinds)X 3388(of)X 3507(printers)X 3804(that)X 3977(may)X 4168(have)X 2520 2592(di)N 2582 MX (ff)138 606 oc 2630(ering)X 2819(font)X 2972(representations,)X 3501(P)X 8 s 8 xH F 3545(OST)X 10 s 10 xH F 3666(S)X 8 s 8 xH F 3710(CRIPT)X 10 s 10 xH F 3915(outline)X 4160(fonts)X 2520 2688(are)N 2655(compared)X 3009(to)X 3108(P)X 8 s 8 xH F 3152(OST)X 10 s 10 xH F 3273(S)X 8 s 8 xH F 3317(CRIPT)X 10 s 10 xH F 3536(bitmapped)X 3911(fonts.)X 4128(When)X 2520 2784(considering)N 2916(disk)X 3071(space,)X 3292(the)X 3412(fact)X 3554(that)X 3695(one)X 3832(bitmapped)X 4191(font)X 2520 2880(is)N 2600(needed)X 2855(for)X 2976(each)X 3151(magni\256cation)X 3618(is)X 3698(taken)X 3899(into)X 4050(account.)X 2520 2976(Thus,)N 2721(the)X 2840(interest)X 3097(is)X 3171(in)X 3254(comparing)X 3618(the)X 3737(size)X 3882(of)X 3969(a)X 4025(scaleable)X 2520 3072(outline)N 2767(font)X 2921(to)X 3008(the)X 3131(total)X 3298(storage)X 3555(for)X 3674(the)X 3797(bitmapped)X 4160(fonts)X 2520 3168(for)N 2634(all)X 2734(magni\256cations)X 3225(of)X 3312(a)X 3368(given)X 3566(design)X 3795(size.)X 2583 3312(5.)N 2679(The)X 2838(resulting)X 3152(P)X 8 s 8 xH F 3196(OST)X 10 s 10 xH F 3317(S)X 8 s 8 xH F 3361(CRIPT)X 10 s 10 xH F 3577(outline)X 3833(font)X 3996(should)X 4244(be)X 2679 3408(more)N 2882(compact)X 3192(than)X 3368(the)X 3504(total)X 3684(of)X 3789(the)X 3925(sizes)X 4118(of)X 4222(the)X 2679 3504(P)N 8 s 8 xH F 2723(OST)X 10 s 10 xH F 2844(S)X 8 s 8 xH F 2888(CRIPT)X 10 s 10 xH F 3104(versions)X 3405(of)X 3506(the)X 0 f F 3639(METAFONT)X 1 f F 3980(-generated)X 2679 3600(bitmapped)N 3055(fonts)X 3253(at)X 3348(each)X 3533(available)X 3860(magni\256cation.)X 2679 3696(Even)N 2872(this)X 3015(comparison)X 3417(is)X 3498(not)X 3629(completely)X 4014(fair)X 4155(since)X 2679 3792(only)N 2862(speci\256c)X 3147(magni\256cations)X 3658(are)X 3797(provided,)X 4142(while)X 2679 3888(the)N 2797(P)X 8 s 8 xH F 2841(OST)X 10 s 10 xH F 2962(S)X 8 s 8 xH F 3006(CRIPT)X 10 s 10 xH F 3208(font)X 3357(is)X 3430(arbitrarily)X 3771(scaleable.)X 2679 4032(Observe)N 2993(\256nally,)X 3263(that)X 3429(the)X 3573(comparison)X 3993(is)X 4093(against)X 2520 4128(magni\256cations)N 3038(of)X 3151(a)X 3233(single)X 3470(design)X 3725(size)X 3896(since)X 4107(purists)X 2520 4224(would)N 2741(argue)X 2941(that)X 3082(there)X 3264(should)X 3498(be)X 3596(a)X 3654(di)X 3716 MX (ff)138 606 oc 3764(erent)X 3947(outline)X 4191(font)X 2520 4320(for)N 2642(each)X 2818(design)X 3055(size.)X 3248(Since)X 3454(there)X 3642(are)X 3768(those)X 3964(that)X 4111(do)X 4218(not)X 2520 4416(require)N 2768(this)X 2903(purity,)X 3134(the)X 3252(various)X 3508(design)X 3737(sizes)X 3913(will)X 4058(be)X 4155(com-)X 2520 4512(pared)N 2719(also.)X 2679 4608(The)N 2824(software)X 3121(engineering)X 3520(goal)X 3678(is)X 3751(item)X 3913(6.)X 2583 4752(6.)N 9 f F 2679(mf2ps)X 1 f F 2916(should)X 3149(be)X 3245(written)X 3492(as)X 3579(much)X 3777(as)X 3864(possible)X 4147(using)X 2679 4848(the)N 2801(existing)X 0 f F 3078(METAFONT)X 1 f F 3443(program)X 3739(both)X 3904(to)X 3989(save)X 4155(work)X 2679 4944(and)N 2831(to)X 2929(ensure)X 3175(that)X 3331(all)X 0 f F 3447(METAFONT)X 1 f F 3788(-acceptable)X 4191(font)X 2679 5040(de\256nitions)N 3036(are)X 3155(handled.)X 2520 5184(The)N 2679(evaluation)X 3047(of)X 3148(the)X 3280(results)X 3523(will)X 3681(be)X 3791(done)X 3982(relative)X 4258(to)X 2520 5280(these)N 2705(goals.)X 3 f F 2520 5472(3.3)N 2680(Previous)X 2999(attempts.)X 1 f F 3359(Leslie)X 3576(Carr)X 3741(wrote)X 3946(a)X 4004(collection)X 2520 5568(of)N 2613(programs)X 2942(to)X 3030(produce)X 3315(P)X 8 s 8 xH F 3359(OST)X 10 s 10 xH F 3480(S)X 8 s 8 xH F 3524(CRIPT)X 10 s 10 xH F 3732(outline)X 3979(fonts)X 4164(from)X 0 f F 2520 5664(METAFONT)N 1 f F 2884(fonts)X 3067(in)X 3152(1987.)X 3355(Carr's)X 3580(programs)X 3907(take)X 4065(as)X 4156(input)X 2465 6084(4)N %%Page: 5 6 5 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(the)N 2 f F 723(log)X 1 f F 874(output)X 1127(\256le)X 1277(of)X 0 f F 1392(METAFONT)X 1 f F 1781(which)X 2025(contains)X 2340(a)X 576 768(description)N 956(of)X 1047(all)X 1151(the)X 1273(paths)X 1466(that)X 0 f F 1610(METAFONT)X 1 f F 1975(traces)X 2187(out)X 2314(in)X 576 864(drawing)N 859(a)X 915(character.)X 735 960(Carr)N 908(has)X 1045(problems)X 1373(of)X 1470(information)X 1878(loss)X 2033(as)X 2131(a)X 2198(result)X 576 1056(of)N 666(not)X 791(having)X 1032(entered)X 1291(into)X 1437(the)X 0 f F 1557(METAFONT)X 1 f F 1920(program.)X 2234(This)X 576 1152(is)N 650(the)X 769(reason)X 1001(why)X 1161(Carr's)X 1384(characters)X 1733(are)X 1854(poor)X 2023(looking.)X 2309(In)X 576 1248([5],)N 721(Carr)X 895(observes,)X 1227(\252In)X 1361(the)X 5 f F 1490(cmr10)X 1 f F 1761(font,)X 1941(the)X 2 f F 2070(crisp)X 1 f F 2260(pen)X 576 1344(has)N 707(diameter)X 1013(zero,)X 1197(so)X 1293(serifs)X 1492(have)X 1669(square)X 1904(corners.)X 2186(In)X 2278(the)X 5 f F 576 1440(cmtt10)N 1 f F 903(font,)X 2 f F 1091(crisp)X 1 f F 1290(is)X 1382(set)X 1510(to)X 1611(a)X 1686(larger)X 1912(value)X 2124(and)X 2278(the)X 576 1536(serifs)N 794(end)X 954(in)X 1060(semicircles.)X 1485(Because)X 1797(the)X 1939(shape)X 2166(of)X 2278(the)X 576 1632(current)N 839(pen)X 989(can)X 1135(NOT)X 1334(be)X 1444(taken)X 1652(into)X 1810(account)X 2094(in)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 576 1728(S)N 8 s 8 xH F 620(CRIPT)X 10 s 10 xH F 802(,)X 852(these)X 1047(di)X 1109 MX (ff)138 606 oc 1157(erences)X 1429(in)X 1521(the)X 1649(characters)X 2007(shapes)X 2252(will)X 576 1824(not)N 711(be)X 820(seen.)X 1015(This)X 1189(is)X 1274(a)X 3 f F 1342(fundamental)X 1 f F 1809(problem:)X 2130(given)X 2340(a)X 576 1920(path)N 2 f F 747(p)X 1 f F 820(and)X 969(a)X 1038(pen)X 2 f F 1187(q)X 1 f F 1260(\(whose)X 1525(shape)X 1741(is)X 1827(also)X 1989(an)X 2099(arbitrary)X 576 2016(path\),)N 0 f F 782(METAFONT)X 1 f F 1144(e)X 1180 MX (ff)138 606 oc 1228(ectively)X 1503(envelopes)X 2 f F 1844(p)X 1 f F 1904(with)X 2066(respect)X 2314(to)X 576 2112(the)N 702(shape)X 914(of)X 2 f F 1010(q)X 1 f F (;)S 1101(P)X 8 s 8 xH F 1145(OST)X 10 s 10 xH F 1266(S)X 8 s 8 xH F 1310(CRIPT)X 10 s 10 xH F 1521(can)X 1662(do)X 1771(nothing)X 2044(other)X 2238(than)X 576 2208(stroke)N 815(it)X 902(to)X 1007(produce)X 1309(a)X 1388(line)X 1551(of)X 1661(constant)X 1970(width.)X 2234(This)X 576 2304(incompatibility)N 1099(comes)X 1339(to)X 1436(light)X 1617(when)X 1826(the)X 1959(width)X 2176(of)X 2278(the)X 576 2400(pen)N 712(is)X 785(signi\256cant)X 1138(to)X 1220(the)X 1338(shape)X 1541(of)X 1628(the)X 1746(character\272.)X 735 2496(In)N 838(order)X 1044(to)X 1142(avoid)X 1356(this)X 1507(problem,)X 9 f F 1832(mf2ps)X 1 f F 2086(\256nds)X 2278(the)X 576 2592(internally)N 928(generated)X 1285(envelope,)X 1639(which)X 1879(is)X 1976(used)X 2167(as)X 2278(the)X 576 2688(boundaries)N 955(of)X 1049(the)X 1174(inked)X 1380(region,)X 1633(and)X 1777(uses)X 1943(this)X 2086(envelope)X 576 2784(as)N 678(the)X 811(outline.)X 1087(It)X 1170(does)X 1351(not)X 1487(matter,)X 1746(then,)X 1938(what)X 2128(the)X 2260(pen)X 576 2880(path)N 734(and)X 870(the)X 988(pen)X 1124(shape)X 1327(are.)X 735 2976(More)N 959(recently,)X 1289(during)X 1549(the)X 1698(time)X 1891(that)X 2062(the)X 2211(work)X 576 3072(described)N 931(herein)X 1179(was)X 1351(being)X 1576(done,)X 1799(there)X 2007(were)X 2211(other)X 576 3168(e)N 612 MX (ff)138 606 oc 660(orts)X 800(with)X 962(similar)X 1204(goals.)X 735 3264(Doug)N 939(Henderson)X 1313([6])X 1433(obtained)X 1735(outline)X 1983(font)X 2138(charac-)X 576 3360(ters)N 714(by)X 816(modifying)X 1171(the)X 5 f F 1291(endchar)X 1 f F 1649(macro,)X 1892(which)X 2110(is)X 2184(called)X 576 3456(for)N 693(each)X 864(character)X 1183(after)X 1354(the)X 1476(bitmap)X 1722(is)X 1799(generated,)X 2156(to)X 2242(take)X 576 3552(the)N 706(bitmap)X 960(for)X 1086(the)X 1216(character)X 1544(and)X 1692(white)X 1901(out)X 2034(all)X 2145(but)X 2278(the)X 576 3648(bits)N 713(on)X 815(the)X 935(edge.)X 1150(The)X 1298(number)X 1566(of)X 1656(bits)X 1794(left)X 1924(on)X 2027(the)X 2148(edge)X 2323(is)X 576 3744(varied)N 803(according)X 1146(to)X 1234(the)X 1357(resolution)X 1702(of)X 1794(the)X 1917(bitmap.)X 2184(These)X 576 3840(outlines,)N 870(being)X 1069(bitmapped,)X 1448(are)X 1568(just)X 1704(as)X 1792(unscaleable)X 2188(as)X 2277(are)X 576 3936(the)N 694(bitmaps)X 967(for)X 1081(the)X 1199(\256lled-in)X 1472(characters.)X 735 4032(Neil)N 898(Raine)X 1110(and)X 1251(Graham)X 1535(Toal)X 1708([12])X 1868(have)X 2046(developed)X 576 4128(software)N 876(that)X 1019(takes)X 1206(the)X 1326(bitmaps)X 1601(and)X 1739(rediscovers)X 2127(the)X 2247(out-)X 576 4224(lines)N 749(by)X 851(tracing)X 1096(the)X 1216(pixels.)X 1450(The)X 1598(outlines)X 1874(that)X 2017(are)X 2139(used)X 2309(as)X 576 4320(the)N 706(basis)X 898(for)X 1024(P)X 8 s 8 xH F 1068(OST)X 10 s 10 xH F 1189(S)X 8 s 8 xH F 1233(CRIPT)X 10 s 10 xH F 1447(fonts)X 1639(are,)X 1790(for)X 1916(the)X 2045(most)X 2231(part,)X 576 4416(generated)N 911(from)X 1089(bitmaps)X 1364(at)X 1444(2400)X 1626(dpi.)X 1770(They)X 1957(\256rst)X 2103(generate)X 576 4512(RISC)N 801(OS)X 951(outline)X 1221(fonts)X 1429(which)X 1673(are)X 1820(screen)X 2074(fonts)X 2282(for)X 576 4608(Acorn's)N 874(Archimedes)X 1301(RISC)X 1517(computer.)X 1880(These)X 2112(are)X 2251(true)X 576 4704(scaleable)N 907(outlines.)X 1216(Then,)X 1437(these)X 1637(outlines)X 1925(are)X 2059(converted)X 576 4800(into)N 728(P)X 8 s 8 xH F 772(OST)X 10 s 10 xH F 893(S)X 8 s 8 xH F 937(CRIPT)X 10 s 10 xH F 1147(format.)X 1409(Toal)X 1584(says)X 1751(that)X 1900(the)X 2027(the)X 2154(quality)X 576 4896(of)N 666(the)X 787(fonts)X 970(produced)X 1292(is)X 1368(not)X 1493(too)X 1618(great)X 1802(at)X 1883(low)X 2025(resolutions)X 576 4992(because)N 871(of)X 978(shortcomings)X 1449(in)X 1551(Adobe's)X 1863(rendering)X 2211(algo-)X 576 5088(rithm.)N 802(He)X 929(adds)X 1109(that)X 1262(at)X 1353(1200)X 1546(dpi)X 1681(on)X 1794(a)X 1862(phototypesetter,)X 576 5184(they)N 759(are)X 903(indistinguishable)X 1494(from)X 0 f F 1695(METAFONT)X 1 f F 2036(-generated)X 576 5280(bitmapped)N 934(fonts.)X 1134(These)X 1346(authors)X 1602(suspect)X 1858(that)X 1998(information)X 576 5376(that)N 720(is)X 797(critical)X 1044(for)X 1163(good)X 1348(appearance)X 1736(is)X 1814(lost)X 1954(when)X 2153(tracing)X 576 5472(an)N 673(outline)X 916(on)X 1017(a)X 1074(bitmap)X 1317(generated)X 1650(from)X 1826(a)X 1882(mathematically)X 576 5568(described)N 909(envelope.)X 1244(Better)X 1466(results)X 1701(should)X 1940(be)X 2042(obtainable)X 576 5664(using)N 769(the)X 887(original)X 1156(envelope.)X 2679 672(John)N 2864(Hobby)X 3116([7])X 3244(has)X 3385(developed)X 3750(a)X 3821(program)X 4128(called)X 2520 768(MetaPost,)N 2865(which)X 3083(translates)X 3408(from)X 3586(an)X 3684(extension)X 4013(of)X 0 f F 4102(META-)X 2520 864(FONT)N 1 f F 2725(into)X 2889(P)X 8 s 8 xH F 2933(OST)X 10 s 10 xH F 3054(S)X 8 s 8 xH F 3098(CRIPT)X 10 s 10 xH F 3320(cubic)X 3534(splines)X 3796(and)X 3953(commands.)X 2520 960(His)N 2678(goal)X 2863(was)X 3035(to)X 3144(turn)X 0 f F 3319(METAFONT)X 1 f F 3706(into)X 3876(a)X 3958(system)X 4226(for)X 2520 1056(typesetting)N 2900(general)X 3166(graphics,)X 3488(including)X 3820(embedded)X 4180(text.)X 2520 1152(His)N 2653(approach,)X 2990(similar)X 3234(to)X 3318(ours,)X 3498(was)X 3645(to)X 3729(modify)X 3982(the)X 0 f F 4102(META-)X 2520 1248(FONT)N 1 f F 2709(program)X 3005(into)X 3154(what)X 3335(he)X 3436(desired.)X 3733(Be\256tting)X 4037(his)X 4155(more)X 2520 1344(general)N 2800(goals,)X 3032(besides)X 3311(modifying)X 3687(the)X 3828(output,)X 4095(he)X 4213(has)X 2520 1440(added)N 2734(new)X 2890(commands)X 3259(to)X 3343(the)X 3463(input)X 3650(language.)X 3983(Moreover,)X 2520 1536(his)N 2646(translation)X 3017(appears)X 3296(to)X 3391(be)X 3500(a)X 3569(direct)X 3784(mapping)X 4096(from)X 4284(a)X 0 f F 2520 1632(METAFONT)N 1 f F 2893(command)X 3241(sequence)X 3568(to)X 3662(a)X 3731(P)X 8 s 8 xH F 3775(OST)X 10 s 10 xH F 3896(S)X 8 s 8 xH F 3940(CRIPT)X 10 s 10 xH F 4155(com-)X 2520 1728(mand)N 2719(sequence.)X 3075(The)X 3221(result)X 3420(is)X 3494(a)X 3551(program)X 3844(more)X 4030(powerful)X 2520 1824(than)N 9 f F 2680(mf2ps)X 1 f F 2897(.)X 2957(It)X 3026(will)X 3170(be)X 3266(interesting)X 3624(to)X 3707(compare)X 4005(fonts)X 4186(pro-)X 2520 1920(duced)N 2736(by)X 2840(MetaPost)X 3166(and)X 9 f F 3308(mf2ps)X 1 f F 3548(for)X 3665(appearance)X 4051(and)X 4190(per-)X 2520 2016(formance.)N 3 f F 2520 2208(3.4)N 2680(Methodology.)X 1 f F 3210(There)X 3439(are)X 3579(a)X 3656(number)X 3942(of)X 4051(ways)X 4258(to)X 2520 2304(build)N 2704(the)X 2822(compiler.)X 3147(They)X 3332(include)X 2583 2448(1.)N 2679(writing)X 2955(the)X 3098(whole)X 3339(compiler)X 3669(from)X 0 f F 3871(METAFONT)X 1 f F 4258(to)X 2679 2544(P)N 8 s 8 xH F 2723(OST)X 10 s 10 xH F 2844(S)X 8 s 8 xH F 2888(CRIPT)X 10 s 10 xH F 3099(from)X 3284(scratch:)X 3563(This)X 3733(has)X 3868(the)X 3994(advantage)X 2679 2640(that)N 2822(one)X 2961(does)X 3131(not)X 3256(have)X 3431(to)X 3516(get)X 3637(into)X 3784(another)X 4048(person's)X 2679 2736(software,)N 3021(which)X 3262(is)X 3360(not)X 3507(very)X 3695(pleasant)X 4003(when)X 4222(the)X 2679 2832(software)N 2985(is)X 3067(so)X 3167(big.)X 3318(On)X 3445(the)X 3573(other)X 3768(hand,)X 3974(one)X 4120(would)X 2679 2928(have)N 2860(to)X 2950(treat)X 3121(the)X 3247(whole)X 3471(job)X 3601(of)X 3696(turning)X 3955(mathemati-)X 2679 3024(cal)N 2795(equations)X 3124(and)X 3262(any)X 3400(arbitrary)X 3699(pen)X 3838(shape)X 4044(into)X 4191(out-)X 2679 3120(lines.)N 2583 3264(2.)N 2679(using)X 2877(the)X 0 f F 3000(METAFONT)X 1 f F 3366(output)X 3595(as)X 3687(was)X 3837(done)X 4018(by)X 4124(Leslie)X 2679 3360(Carr)N 2853([5]:)X 3000(This)X 3173(has)X 3311(the)X 3440(advantage)X 3797(of)X 3894(not)X 4026(requiring)X 2679 3456(delving)N 2947(into)X 3099(another's)X 3426(software,)X 3751(but)X 3881(the)X 4007(generated)X 2679 3552(information)N 3087(is)X 3170(not)X 3302(enough)X 3568(if)X 3647(one)X 3793(wants)X 4010(no)X 4119(devia-)X 2679 3648(tions)N 2854(from)X 3030(the)X 3148(originals.)X 2583 3792(3.)N 2679(getting)X 2927(into)X 3078(the)X 0 f F 3203(METAFONT)X 1 f F 3571(program:)X 3892(This)X 4061(requires)X 2679 3888(examining)N 3039(the)X 3159(internals)X 3457(of)X 3546(the)X 0 f F 3666(METAFONT)X 1 f F 4028(program.)X 2679 3984(However,)N 0 f F 3070(METAFONT)X 1 f F 3487(and)X 3679(P)X 8 s 8 xH F 3723(OST)X 10 s 10 xH F 3844(S)X 8 s 8 xH F 3888(CRIPT)X 10 s 10 xH F 4146(make)X 2679 4080(liberal)N 2936(use)X 3095(of)X 3214(Be)X 3272(\302zier)X 3477(curves)X 3739(to)X 3853(describe)X 4173(non-)X 2679 4176(circular)N 2968(curves.)X 3241(This)X 3426(fact)X 3591(makes)X 3840(the)X 3982(translation)X 2679 4272(process)N 2960(natural.)X 3243(For)X 3394(each)X 3581(speci\256ed)X 3905(path,)X 0 f F 4102(META-)X 2679 4368(FONT)N 1 f F 2895(creates)X 3170(control)X 3448(points)X 3694(for)X 3840(the)X 3990(associated)X 2679 4464(cubic)N 2877(spline)X 3092(curves)X 3326(before)X 3556(calculating)X 3932(the)X 4054(bit)X 4162(map.)X 0 f F 2679 4560(METAFONT)N 1 f F 3045(also)X 3199(calculates)X 3541(the)X 3664(edge)X 3842(o)X (ff)138 606 oc 3930(sets)X 4076(implied)X 2679 4656(by)N 2783(the)X 2905(pen)X 3045(shape.)X 3271(Using)X 3485(the)X 3606(necessary)X 3942(information)X 2679 4752(one)N 2820(can)X 2957(get)X 3080(a)X 3141(new)X 3300(set)X 3414(of)X 3506(control)X 3758(points)X 3978(that)X 4124(de\256ne)X 2679 4848(Be)N 2737(\302zier)X 2911(curves)X 3142(and)X 3278(lines)X 3449(that)X 3589(are)X 3708(needed)X 3956(to)X 4038(build)X 4222(the)X 2679 4944(P)N 8 s 8 xH F 2723(OST)X 10 s 10 xH F 2844(S)X 8 s 8 xH F 2888(CRIPT)X 10 s 10 xH F 3090(outline)X 3332(fonts.)X 3 f F 2520 5136(3.5)N 2680(Software)X 3013(engineering)X 3439(of)X 3532(solution.)X 1 f F 3868(The)X 4019(idea)X 4179(is)X 4258(to)X 2520 5232(split)N 2693(the)X 0 f F 2827(METAFONT)X 1 f F 3204(program)X 3512(into)X 3672(front)X 3864(end)X 4016(and)X 4168(back)X 2520 5328(end.)N 2687(The)X 2843(front)X 3030(end)X 3178(takes)X 0 f F 3375(METAFONT)X 1 f F 3748(speci\256cation)X 4185(of)X 4284(a)X 2520 5424(character,)N 2869(magni\256cation,)X 3361(and)X 3509(point)X 3705(size,)X 3882(and)X 4030(produces)X 2520 5520(the)N 2646(envelope,)X 2984(i.e.,)X 3131(the)X 3258(outline)X 3509(of)X 3605(the)X 3732(character,)X 4077(and)X 4222(the)X 2520 5616(back)N 2700(end)X 2844(\256lls)X 2990(the)X 3115(envelope)X 3432(with)X 3601(bits.)X 3763(Taking)X 4017(the)X 4142(exist-)X 2520 5712(ing)N 2646(front)X 2827(end)X 2968(and)X 3109(writing)X 3365(a)X 3426(new)X 3585(back)X 3762(end)X 3903(that)X 4048(converts)X 2465 6084(5)N %%Page: 6 7 6 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(the)N 697(envelope)X 1010(into)X 1157(a)X 1216(P)X 8 s 8 xH F 1260(OST)X 10 s 10 xH F 1381(S)X 8 s 8 xH F 1425(CRIPT)X 10 s 10 xH F 1630(speci\256cation)X 2058(of)X 2148(an)X 2247(out-)X 576 768(line)N 723(is)X 804(our)X 939(method)X 1207(of)X 1302(producing)X 9 f F 1657(mf2ps)X 1 f F 1874(.)X 1922(The)X 2075(bit-\256lling)X 576 864(process)N 837(will)X 981(be)X 1077(done)X 1253(by)X 1353(the)X 1471(printer.)X 735 960(In)N 851(order)X 1070(to)X 1181(make)X 1404(P)X 8 s 8 xH F 1448(OST)X 10 s 10 xH F 1569(S)X 8 s 8 xH F 1613(CRIPT)X 10 s 10 xH F 1845(fonts)X 2055(arbitrarily)X 576 1056(scaleable,)N 919(we)X 1041(have)X 1221(to)X 1311(ask)X 1446(the)X 9 f F 1574(mf2ps)X 1 f F 1818(program)X 2117(to)X 2206(use)X 2340(a)X 576 1152(very)N 755(large)X 952(magni\256cation,)X 1448(at)X 1542(least)X 1725(to)X 1823(try)X 1948(to)X 2046(match)X 2278(the)X 576 1248(grid)N 741(on)X 857(which)X 1089(Adobe)X 1338(plots)X 1528(the)X 1661(points)X 1891(of)X 1993(its)X 2103(outlines.)X 576 1344(Adobe)N 812(plots)X 989(its)X 1086(characters)X 1435(on)X 1538(a)X 1597(1000)X 47 f F 1777(\264)X 1 f F 1841(1000)X 2024(grid.)X 2196(Thus,)X 576 1440(Adobe's)N 880(resolution)X 1231(is)X 1315(1000)X 1506(dpm)X 1679(\(dots)X 1870(per)X 2004(em\),)X 2180(which)X 576 1536(for)N 704(design)X 947(size)X 1106(10)X 1220(points)X 1449(is)X 1536(7200)X 1730(dpi.)X 1906(Unfortunately,)X 0 f F 576 1632(METAFONT)N 1 f F 917(,)X 960(and)X 1099(thus)X 9 f F 1257(mf2ps)X 1 f F 1497(accepts)X 1757(resolutions)X 2131(only)X 2296(up)X 576 1728(to)N 662(3000)X 846(dpi.)X 992(The)X 1141(results)X 1374(should)X 1611(be)X 1712(su)X 1783 MX (Fi)139 825 oc (cient)S 2030(to)X 2117(produce)X 576 1824(fonts)N 768(scaleable)X 1094(up)X 1205(to)X 1298(magni\256cation)X 1769(7)X 1840(or)X 1938(8,)X 2029(which)X 2256(is)X 2340(a)X 576 1920(reasonable)N 940(range)X 1139(in)X 1221(typesetting.)X 735 2016(This)N 898(approach)X 1214(helps)X 1404(meet)X 1581(goal)X 1740(6)X 1801(because)X 2078(the)X 2198(origi-)X 576 2112(nal)N 731(unchanged)X 0 f F 1136(METAFONT)X 1 f F 1534(program)X 1863(is)X 1973(used.)X 2196(Thus,)X 576 2208(exactly)N 834(the)X 958(same)X 1149(input)X 1339(is)X 1418(accepted)X 1727(as)X 1821(in)X 1910(the)X 0 f F 2035(METAFONT)X 1 f F 576 2304(program.)N 898(There)X 1116(is)X 1198(some)X 1396(extra)X 1586(frosting)X 1864(obtained)X 2169(by)X 2278(the)X 576 2400(chosen)N 834(approach.)X 1185(The)X 1346(program)X 1654(for)X 1784(translating)X 0 f F 2158(META-)X 576 2496(FONT)N 1 f F 772(to)X 865(P)X 8 s 8 xH F 909(OST)X 10 s 10 xH F 1030(S)X 8 s 8 xH F 1074(CRIPT)X 10 s 10 xH F 1287(is)X 1370(actually)X 1654(a)X 1720(bit)X 1834(of)X 1931(an)X 2037(interactive)X 576 2592(environment)N 1006(because)X 1286(the)X 1409(new)X 1568(back)X 1746(end)X 1888(is)X 1967(an)X 2069(extension)X 576 2688(of)N 669(the)X 793(existing)X 1072(one.)X 1234(This)X 1401(existing)X 1679(back-end)X 1999(provides)X 2300(an)X 576 2784(interpreter)N 990(that)X 1189(executes)X 1545(a)X 0 f F 1660(METAFONT)X 1 f F 2080(character)X 576 2880(de\256nition)N 926(and)X 1086(displays)X 1392(the)X 1534(de\256ned)X 1814(character)X 2154(on)X 2278(the)X 576 2976(screen.)N 824(Figure)X 1055(3)X 1117(shows)X 1339(the)X 1459(dump)X 1663(of)X 1752(a)X 1810(screen)X 2038(containing)X 576 3072(several)N 833(windows,)X 1171(one)X 1316(showing)X 1616(a)X 0 f F 1681(METAFONT)X 1 f F 2050(de\256nition,)X 576 3168(another)N 850(showing)X 1154(the)X 1285(result)X 1496(of)X 1596(its)X 1704(interpretation,)X 2190(and)X 2340(a)X 576 3264(third)N 781(containing)X 1172(the)X 1323(P)X 8 s 8 xH F 1367(OST)X 10 s 10 xH F 1488(S)X 8 s 8 xH F 1532(CRIPT)X 10 s 10 xH F 1767(translation)X 2158(of)X 2278(the)X 576 3360(de\256nition)N 915(in)X 1010(the)X 1141(\256rst)X 1298(window.)X 1609(If)X 1697(software)X 2008(to)X 2104(interpret)X 576 3456(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 1006(de\256nitions)X 1382(were)X 1578(available)X 1907(here,)X 2105(a)X 2180(fourth)X 576 3552(window)N 856(could)X 1057(be)X 1156(set)X 1268(up)X 1371(showing)X 1665(the)X 1786(result)X 1987(of)X 2077(interpret-)X 576 3648(ing)N 719(the)X 858(translation)X 1237(of)X 1345(the)X 1484(third)X 1676(window.)X 1994(This)X 2176(would)X 576 3744(allow)N 821(comparison)X 1262(of)X 1396(the)X 1561(character's)X 1982(appearances)X 576 3840(without)N 840(having)X 1078(to)X 1160(print)X 1331(them)X 1511(on)X 1611(paper.)X 3 f F 576 4032(4)N 676(The)X 829(program)X 1 f F 576 4176(In)N 672(the)X 799(following)X 1139(discussion,)X 1522(the)X 0 f F 1650(METAFONT)X 1 f F 2021(program)X 2323(is)X 576 4272(often)N 761(called)X 973(just)X 1108(\252)X 0 f F 1144(METAFONT)X 1 f F 1498(\272.)X 735 4368(The)N 0 f F 882(METAFONT)X 1 f F 1245(program)X 1540(has)X 1670(been)X 1845(written)X 2095(so)X 2189(that)X 2332(it)X 576 4464(can)N 729(be)X 846(made)X 1061(to)X 1164(run)X 1312(e)X 1348 MX (Fi)139 825 oc (ciently)S 1672(in)X 1774(a)X 1850(wide)X 2046(variety)X 2309(of)X 576 4560(operating)N 911(environments)X 1379(by)X 1491(making)X 1763(comparatively)X 2255(few)X 576 4656(changes.)N 891(Such)X 1087(\257exibility)X 1433(is)X 1522(possible)X 1819(because)X 2109(the)X 2242(pro-)X 576 4752(gram)N 782(is)X 876(written)X 1145(in)X 1249(the)X 5 f F 1389(WEB)X 1 f F 1575(language)X 1907(which)X 2145(is)X 2240(at)X 2340(a)X 576 4848(higher)N 818(level)X 1011(than)X 1186(Pascal.)X 1448(The)X 1609(preprocessing)X 2091(step)X 2256(that)X 576 4944(converts)N 5 f F 872(WEB)X 1 f F 1040(to)X 1126(Pascal)X 1355(is)X 1432(able)X 1591(to)X 1678(introduce)X 2006(most)X 2186(of)X 2278(the)X 576 5040(necessary)N 943(re\256nements.)X 1390(Semiautomatic)X 1923(translation)X 2314(to)X 576 5136(other)N 774(languages)X 1129(is)X 1216(also)X 1379(feasible,)X 1683(because)X 1972(the)X 2104(program)X 576 5232(does)N 751(not)X 881(make)X 1083(extensive)X 1414(use)X 1548(of)X 1642(features)X 1924(that)X 2071(are)X 2197(pecu-)X 576 5328(liar)N 703(to)X 785(Pascal.)X 735 5424(The)N 893(program)X 1198(has)X 1339(two)X 1493(important)X 1838(variations:)X 2210(First,)X 576 5520(there)N 771(is)X 858(a)X 928(long)X 1104(and)X 1253(slow)X 1437(version)X 1706(called)X 9 s 9 xH 9 f F 1931(INIMF)X 10 s 10 xH 1 f F 2127(,)X 2180(which)X 576 5616(does)N 754(the)X 884(extra)X 1077(calculations)X 1492(needed)X 1752(to)X 1846(initialize)X 0 f F 2158(META-)X 576 5712(FONT)N 1 f F 741('s)X 821(internal)X 1088(tables.)X 1317(It)X 1388(has)X 1517(to)X 1601(be)X 1699(run)X 1828(\256rst.)X 1994(It)X 2065(initializes)X 2520 672(everything)N 2884(from)X 3061(scratch)X 3310(without)X 3575(reading)X 3837(a)X 3895(base)X 4060(\256le,)X 4204(and)X 2520 768(it)N 2594(has)X 2731(the)X 2859(capability)X 3205(of)X 3301(dumping)X 3614(a)X 3679(base)X 3851(\256le.)X 4002(Secondly,)X 2520 864(there)N 2713(is)X 2798(a)X 2866(shorter)X 3121(and)X 3269(faster)X 3480(production)X 3859(version)X 4128(called)X 9 s 9 xH 9 f F 2520 960(VIRMF)N 10 s 10 xH 1 f F 2744(,)X 2785(which)X 3002(cuts)X 3151(the)X 3269(initialization)X 3693(to)X 3775(a)X 3831(bare)X 3990(minimum.)X 2520 1056(It)N 2596(is)X 2676(a)X 2739(virgin)X 2957(program)X 3256(that)X 3403(needs)X 3613(to)X 3702(input)X 3893(a)X 3957(base)X 4128(\256le)X 4258(in)X 2520 1152(order)N 2715(to)X 2801(get)X 2923(started.)X 9 s 9 xH 9 f F 3181(VIRMF)X 10 s 10 xH 1 f F 3429(typically)X 3733(has)X 3864(more)X 4053(memory)X 2520 1248(capacity)N 2810(than)X 9 s 9 xH 9 f F 2970(INIMF)X 10 s 10 xH 1 f F 3166(,)X 3208(because)X 3485(it)X 3551(does)X 3720(not)X 3845(need)X 4020(the)X 4141(space)X 2520 1344(consumed)N 2865(by)X 2965(the)X 3083(dumping)X 3387(and)X 3523(undumping)X 3907(routines,)X 4205(etc.)X 2679 1440(In)N 2792(order)X 3008(to)X 3116(generate)X 3435(a)X 3518(compiler)X 3850(that)X 4017(translates)X 0 f F 2520 1536(METAFONT)N 1 f F 2916(to)X 3033(P)X 8 s 8 xH F 3077(OST)X 10 s 10 xH F 3198(S)X 8 s 8 xH F 3242(CRIPT)X 10 s 10 xH F 3424(,)X 3499(additional)X 3873(external)X 4186(pro-)X 2520 1632(cedures)N 2807(and)X 2964(functions)X 3303(were)X 3501(added)X 3735(to)X 3839(the)X 0 f F 3979(METAFONT)X 1 f F 2520 1728(program)N 2829(so)X 2937(that)X 3094(it)X 3175(runs)X 3350(exactly)X 3619(the)X 3753(same)X 3954(except)X 4200(that)X 2520 1824(when)N 2715(it)X 2780(asks)X 2939(for)X 3054(an)X 3151(output)X 3376(\256le)X 3499(name,)X 3715(it)X 3781(asks)X 3941(for)X 4057(an)X 4155(addi-)X 2520 1920(tional)N 2732(name,)X 2956(for)X 3080(the)X 3208(extra)X 3398(output)X 3631(\256le)X 3762(that)X 3911(is)X 3993(to)X 4084(contain)X 2520 2016(the)N 2642(P)X 8 s 8 xH F 2686(OST)X 10 s 10 xH F 2807(S)X 8 s 8 xH F 2851(CRIPT)X 10 s 10 xH F 3057(outlines.)X 3354(Those)X 3575(changes)X 3859(were)X 4041(made)X 4240(on)X 2520 2112(the)N 2654(Pascal)X 2894(version)X 3165(of)X 3267(the)X 9 s 9 xH 9 f F 3400(VIRMF)X 10 s 10 xH 1 f F 3624(,)X 3679(and)X 3830(were)X 4022(compiled)X 2520 2208(later)N 2687(with)X 0 f F 2853(METAFONT)X 1 f F 3194('s)X 3277(library)X 3516(\256les.)X 3714(\(It)X 3815(was)X 3965(a)X 4026(complete)X 2520 2304(oversight)N 2840(on)X 2942(our)X 3071(part)X 3218(not)X 3342(to)X 3426(have)X 3600(modi\256ed)X 3906(the)X 5 f F 4025(WEB)X 1 f F 4190(ver-)X 2520 2400(sion)N 2683(of)X 9 s 9 xH 9 f F 2781(VIRMF)X 10 s 10 xH 1 f F 3005(.\))X 3103(A)X 3192(few)X 3344(extra)X 3536(lines)X 3718(were)X 3906(added)X 4129(to)X 4222(the)X 2520 2496(macro)N 2750(\256le,)X 5 f F 2901(plain.mf)X 1 f F (.)S 3333(These)X 3553(act)X 3675(as)X 3770(\257ags,)X 3969(identifying)X 2520 2592(that)N 0 f F 2660(METAFONT)X 1 f F 3021(has)X 3148(entered)X 3405(some)X 3594(of)X 3681(the)X 3799(macros.)X 3 f F 2520 2784(4.1)N 2680(Basic)X 2890(idea.)X 1 f F 3100(To)X 3217(specify)X 3478(a)X 3543(character)X 3868(in)X 0 f F 3959(METAFONT)X 1 f F 4300(,)X 2520 2880(one)N 2668(speci\256es)X 2976(either)X 3191(an)X 3299(envelope)X 3621(\(outline\))X 3929(or)X 4028(a)X 4096(center-)X 2520 2976(line)N 2672(path)X 2842(and)X 2990(a)X 3058(pen)X 3207(head.)X 3432(For)X 3576(the)X 3707(former,)X 0 f F 3979(METAFONT)X 1 f F 2520 3072(just)N 2665(\256lls)X 2814(the)X 2942(envelope)X 3262(with)X 3434(bits.)X 3619(For)X 3760(the)X 3888(latter,)X 0 f F 4102(META-)X 2520 3168(FONT)N 1 f F 2719(pretends)X 3025(that)X 3179(it)X 3257(is)X 3345(drawing)X 3643(the)X 3776(character)X 4107(with)X 4284(a)X 2520 3264(pen)N 2680(of)X 2791(speci\256ed)X 3119(head)X 3314(shape)X 3540(following)X 3894(the)X 4035(speci\256ed)X 2520 3360(path,)N 2704(i.e.,)X 2848(the)X 2972(center)X 3195(of)X 3288(the)X 3412(head)X 3591(stays)X 3778(on)X 3885(the)X 4010(path.)X 4195(The)X 2520 3456(distance)N 2806(from)X 2984(the)X 3104(center-line)X 3470(path)X 3630(and)X 3768(outer)X 3955(edge)X 4129(of)X 4218(ink)X 2520 3552(trail)N 2671(left)X 2800(by)X 2902(pen)X 3040(head)X 3215(is)X 3291(called)X 3506(the)X 2 f F 3627(o)X (ff)138 495 oc 3707(set)X 1 f F 3788(.)X 3851(So,)X 3978(for)X 4095(a)X 4154(char-)X 2520 3648(acter,)N 0 f F 2726(METAFONT)X 1 f F 3096(follows)X 3365(the)X 3492(center-line)X 3865(path)X 4032(to)X 4123(calcu-)X 2520 3744(late)N 2656(the)X 2775(path)X 2934(of)X 3022(o)X (ff)138 606 oc 3110(set)X 3220(points,)X 3456(i.e.,)X 3595(the)X 3714(envelope,)X 4045(and)X 4182(then)X 2520 3840(\256lls)N 2670(the)X 2799(envelope)X 3120(with)X 3293(bits.)X 3479(In)X 3577(either)X 3790(case,)X 0 f F 3979(METAFONT)X 1 f F 2520 3936(ends)N 2687(up)X 2787(\256lling)X 2997(an)X 3093(envelope.)X 2679 4032(We)N 2812(need)X 2985(to)X 3068(break)X 0 f F 3268(METAFONT)X 1 f F 3630(into)X 3775(a)X 3832(front)X 4009(end)X 4146(and)X 4284(a)X 2520 4128(back)N 2703(end)X 2850(at)X 2938(the)X 3066(point)X 3260(just)X 3405(after)X 3583(the)X 3711(envelope)X 4031(has)X 4168(been)X 2520 4224(calculated.)N 2893(Then)X 3085(we)X 3206(provide)X 3479(a)X 3543(new)X 3705(back)X 3885(end)X 4029(that)X 4177(con-)X 2520 4320(verts)N 2713(the)X 2848(envelope)X 3175(into)X 3336(P)X 8 s 8 xH F 3380(OST)X 10 s 10 xH F 3501(S)X 8 s 8 xH F 3545(CRIPT)X 10 s 10 xH F 3764(instead)X 4027(of)X 4130(\256lling)X 2520 4416(the)N 2647(envelope)X 2966(with)X 3137(bits.)X 3301(Note)X 3486(then)X 3653(that)X 3802(the)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 4512(printer)N 2765(will)X 2920(\256ll)X 3039(in)X 3132(the)X 3261(envelope)X 3582(with)X 3755(bits)X 3901(as)X 3999(it)X 4073(\256lls)X 4222(the)X 2520 4608(path)N 2678(obtained)X 2974(from)X 3150(the)X 3268(envelope.)X 2679 4704(The)N 2840(following)X 3187(subsections)X 3593(describe)X 3898(the)X 4033(data)X 4204(and)X 2520 4800(the)N 2638(calculations)X 3041(involved)X 3341(in)X 3423(the)X 3541(new)X 3695(back)X 3867(end.)X 3 f F 2520 4992(4.2)N 2680(Data)X 2884(structures.)X 1 f F 3311(The)X 3475(main)X 3674(data)X 3848(structures)X 4200(that)X 0 f F 2520 5088(METAFONT)N 1 f F 2906(keeps)X 3133(for)X 3271(a)X 3351(character)X 3691(are)X 3834(the)X 3976(center-line)X 2520 5184(path,)N 2702(the)X 2824(pen)X 2964(shape,)X 3191(and)X 3331(the)X 3453(envelope)X 3767(path.)X 3949(There)X 4161(are)X 4284(a)X 2520 5280(few)N 2672(operations)X 3036(that)X 3186(can)X 3328(be)X 3434(performed)X 3799(on)X 3909(paths,)X 4128(called)X 2520 5376(transformations.)N 3 f F 2679 5472(4.2.1)N 0 f F 2899(METAFONT)X 3 f F 3240('s)X 3323(path)X 3503(representation.)X 1 f F 4067(When)X 4284(a)X 0 f F 2520 5568(METAFONT)N 1 f F 2898(user)X 3069(speci\256es)X 3381(a)X 3453(path,)X 0 f F 3647(METAFONT)X 1 f F 4024(creates)X 4284(a)X 2520 5664(list)N 2642(of)X 2734(knots)X 2932(and)X 3073(control)X 3325(points)X 3546(for)X 3666(the)X 3790(associated)X 4146(cubic)X 2465 6084(6)N %%Page: 7 8 7 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(spline)N 793(curves.)X 1049(If)X 1129(the)X 1252(knots)X 1450(are)X 2 f F 1574(z)X 7 s 7 xH 1 f F 1614 688(0)N 10 s 10 xH F 1648 672(,)N 2 f F 1694(z)X 7 s 7 xH 1 f F 1734 688(1)N 10 s 10 xH F 1768 672(,)N 1808(.)X 1848(.)X 1888(.)X 1928(,)X 2 f F 1981(z)X 7 s 7 xH F 2012 688(n)N 10 s 10 xH 1 f F 2046 672(,)N 2091(there)X 2277(are)X 576 768(control)N 835(points)X 2 f F 1062(z)X 7 s 7 xH F 1097 783(k)N 47 f F 1097 736(+)N 10 s 10 xH 1 f F 1167 768(and)N 2 f F 1316(z)X 7 s 7 xH F 1351 783(k)N 47 f F 1385(+)X 1 f F 1416(1)X 47 f F 1351 736(-)N 10 s 10 xH 1 f F 1483 768(such)N 1663(that)X 1816(the)X 1947(cubic)X 2154(splines)X 576 864(between)N 867(the)X 988(knots)X 2 f F 1184(z)X 7 s 7 xH F 1215 880(k)N 10 s 10 xH 1 f F 1269 864(and)N 2 f F 1408(z)X 7 s 7 xH F 1439 880(k)N 47 f F 1473(+)X 1 f F 1504(1)X 10 s 10 xH F 1561 864(are)N 1683(de\256ned)X 1942(by)X 2045(the)X 2165(Be)X 2223(\302zier)X 576 960(formula)N 2 f F 828 1152(z)N 1 f F 872(\()X 2 f F 899(t)X 1 f F 927(\))X 47 f F 974(=)X 2 f F 1038(B)X 1 f F 1100(\()X 2 f F 1127(z)X 7 s 7 xH F 1158 1168(k)N 1 f F 1183(,)X 10 s 10 xH 2 f F 1207 1152(z)N 7 s 7 xH F 1242 1167(k)N 47 f F 1242 1120(+)N 10 s 10 xH 1 f F 1279 1152(,)N 2 f F 1305(z)X 7 s 7 xH F 1340 1167(k)N 47 f F 1374(+)X 1 f F 1405(1)X 47 f F 1340 1120(-)N 10 s 10 xH 1 f F 1439 1152(,)N 2 f F 1465(z)X 7 s 7 xH F 1496 1168(k)N 47 f F 1530(+)X 1 f F 1561(1)X 10 s 10 xH F 1595 1152(;)N 2 f F 1617(t)X 1 f F 1645(\))X 47 f F 974 1267(=)N 1 f F 1038(\(1)X 47 f F 1125(-)X 2 f F 1189(t)X 1 f F 1217(\))X 7 s 7 xH F 1244 1235(3)N 10 s 10 xH 2 f F 1278 1267(z)N 7 s 7 xH F 1309 1283(k)N 10 s 10 xH 47 f F 1360 1267(+)N 1 f F 1424(3)X 2 f F (t)S 1 f F 1499(\()X 2 f F 1526(t)X 47 f F 1574(-)X 1 f F 1638(1\))X 7 s 7 xH F 1705 1235(2)N 10 s 10 xH 2 f F 1739 1267(z)N 7 s 7 xH F 1774 1282(k)N 47 f F 1774 1235(+)N 10 s 10 xH F 1308 1382(+)N 1 f F 1372(3)X 2 f F (t)S 7 s 7 xH 1 f F 1443 1350(2)N 10 s 10 xH F 1477 1382(\(1)N 47 f F 1564(-)X 2 f F 1628(t)X 1 f F 1656(\))X 2 f F 1683(z)X 7 s 7 xH F 1718 1397(k)N 47 f F 1752(+)X 1 f F 1783(1)X 47 f F 1718 1350(-)N 10 s 10 xH F 1843 1382(+)N 2 f F 1907(t)X 7 s 7 xH 1 f F 1938 1350(3)N 10 s 10 xH 2 f F 1972 1382(z)N 7 s 7 xH F 2003 1398(k)N 47 f F 2037(+)X 1 f F 2068(1)X 10 s 10 xH F 2102 1382(,)N 576 1574(for)N 690(0)X 47 f F 750(\243)X 2 f F 814(t)X 47 f F 862(\243)X 1 f F 926(1.)X 735 1670(There)N 950(is)X 1030(a)X 1093(7-word)X 1352(node)X 1535(for)X 1657(each)X 1833(knot)X 2 f F 2003(z)X 7 s 7 xH F 2034 1686(k)N 10 s 10 xH 1 f F 2065 1670(,)N 2113(contain-)X 576 1766(ing)N 706(one)X 850(word)X 1043(of)X 1137(control)X 1391(information)X 1796(and)X 1939(six)X 2059(words)X 2282(for)X 576 1862(the)N 2 f F 696(x)X 1 f F 754(and)X 2 f F 892(y)X 1 f F 950(coordinates)X 1342(of)X 2 f F 1431(z)X 7 s 7 xH F 1466 1877(k)N 47 f F 1466 1830(-)N 10 s 10 xH 1 f F 1525 1862(and)N 2 f F 1663(z)X 7 s 7 xH F 1694 1878(k)N 10 s 10 xH 1 f F 1747 1862(and)N 2 f F 1886(z)X 7 s 7 xH F 1921 1877(k)N 47 f F 1921 1830(+)N 10 s 10 xH 1 f F 1958 1862(.)N 2001(The)X 2149(control)X 576 1958(information)N 1004(appears)X 1299(in)X 1410(the)X 2 f F 1557(left_type)X 1 f F 1882(and)X 2 f F 2047(right_type)X 1 f F 576 2054(\256elds)N 789(and)X 945(they)X 1123(specify)X 1395(properties)X 1757(of)X 1865(the)X 2004(curve)X 2224(as)X 2332(it)X 576 2150(enters)N 803(and)X 954(leaves)X 1190(the)X 1322(knot.)X 1518(There)X 1740(is)X 1827(also)X 1990(a)X 2 f F 2060(link)X 1 f F 2214(\256eld,)X 576 2246(which)N 803(points)X 1029(to)X 1122(the)X 1251(following)X 1593(knot.)X 1786(Before)X 2036(the)X 2165(Be)X 2223(\302zier)X 576 2342(control)N 830(points)X 1052(have)X 1230(been)X 1408(calculated,)X 1780(the)X 1904(memory)X 2197(space)X 576 2438(they)N 741(will)X 892(ultimately)X 1243(occupy)X 1502(is)X 1582(taken)X 1783(up)X 1890(by)X 1998(information)X 576 2534(that)N 742(can)X 899(be)X 1020(used)X 1212(to)X 1319(compute)X 1640(them.)X 1865(The)X 0 f F 2035(METAFONT)X 2 f F 576 2630(make_choices)N 1 f F 1072(procedure)X 1439(chooses)X 1738(angles)X 1988(and)X 2149(control)X 576 2726(points)N 798(for)X 919(the)X 1044(splines)X 1293(of)X 1387(a)X 1450(curve)X 1656(when)X 1857(the)X 1981(user)X 2141(has)X 2274(not)X 576 2822(speci\256ed)N 881(them)X 1061(explicitly.)X 3 f F 735 2918(4.2.2)N 0 f F 955(METAFONT)X 3 f F 1296('s)X 1392(path)X 1585(transformation.)X 1 f F 2184(When)X 0 f F 576 3014(METAFONT)N 1 f F 952(digitizes)X 1258(a)X 1329(path,)X 1522(it)X 1601(reduces)X 1881(the)X 2013(problem)X 2314(to)X 576 3110(the)N 705(special)X 959(case)X 1129(of)X 1228(paths)X 1429(that)X 1581(travel)X 1796(in)X 1890(the)X 2 f F 2020(\256rst)X 2176(octant)X 1 f F 576 3206(directions;)N 938(i.e.,)X 1080(each)X 1252(cubic)X 2 f F 1449(z)X 1 f F 1493(\()X 2 f F 1520(t)X 1 f F 1548(\))X 47 f F 1595(=)X 1 f F 1659(\()X 2 f F 1686(x)X 1 f F 1735(\()X 2 f F 1762(t)X 1 f F 1790(\),)X 2 f F 1843(y)X 1 f F 1892(\()X 2 f F 1919(t)X 1 f F 1947(\)\))X 2024(being)X 2225(digi-)X 576 3302(tized)N 763(will)X 918(have)X 1101(the)X 1230(property)X 1534(that)X 1686(0)X 47 f F 1746(\243)X 2 f F 1810(y)X 47 f F 1852(\242)X 1 f F 1872(\()X 2 f F 1899(t)X 1 f F 1927(\))X 47 f F 1974(\243)X 2 f F 2038(x)X 47 f F 2080(\242)X 1 f F 2100(\()X 2 f F 2127(t)X 1 f F 2155(\).)X 2234(This)X 576 3398(assumption)N 969(makes)X 1203(digitizing)X 1538(simpler)X 1807(and)X 1952(faster)X 2160(than)X 2327(if)X 576 3494(the)N 716(direction)X 1043(of)X 1152(motion)X 1420(has)X 1569(to)X 1673(be)X 1791(tested)X 2021(repeatedly.)X 576 3590(When)N 2 f F 793(z)X 1 f F 837(\()X 2 f F 864(t)X 1 f F 892(\))X 944(is)X 1022(cubic,)X 2 f F 1241(x)X 47 f F 1283(\242)X 1 f F 1303(\()X 2 f F 1330(t)X 1 f F 1358(\))X 1410(and)X 2 f F 1551(y)X 47 f F 1593(\242)X 1 f F 1613(\()X 2 f F 1640(t)X 1 f F 1668(\))X 1720(are)X 1844(quadratic,)X 2188(hence)X 576 3686(each)N 760(of)X 864(the)X 999(four)X 1170(polynomials,)X 2 f F 1622(x)X 47 f F 1664(\242)X 1 f F 1684(\()X 2 f F 1711(t)X 1 f F 1739(\),)X 2 f F 1823(y)X 47 f F 1865(\242)X 1 f F 1885(\()X 2 f F 1912(t)X 1 f F 1940(\),)X 2 f F 2024(x)X 47 f F 2066(\242)X 1 f F 2086(\()X 2 f F 2113(t)X 1 f F 2141(\))X 47 f F 2168(-)X 2 f F 2212(y)X 47 f F 2254(\242)X 1 f F 2274(\()X 2 f F 2301(t)X 1 f F 2329(\),)X 576 3782(and)N 2 f F 721(x)X 47 f F 763(\242)X 1 f F 783(\()X 2 f F 810(t)X 1 f F 838(\))X 47 f F 865(+)X 2 f F 909(y)X 47 f F 951(\242)X 1 f F 971(\()X 2 f F 998(t)X 1 f F 1026(\),)X 1102(crosses)X 1363(through)X 1641(0)X 1709(at)X 1795(most)X 1978(twice.)X 2200(If)X 2282(we)X 576 3878(subdivide)N 925(the)X 1061(given)X 1277(cubic)X 1489(at)X 1585(these)X 1788(places,)X 2048(we)X 2181(get)X 2318(at)X 576 3974(most)N 760(nine)X 927(subintervals.)X 1363(In)X 1459(each)X 1636(of)X 1731(these)X 1924(intervals)X 2228(each)X 576 4070(of)N 2 f F 667(x)X 47 f F 709(\242)X 1 f F 729(\()X 2 f F 756(t)X 1 f F 784(\),)X 2 f F 855(y)X 47 f F 897(\242)X 1 f F 917(\()X 2 f F 944(t)X 1 f F 972(\),)X 2 f F 1043(x)X 47 f F 1085(\242)X 1 f F 1105(\()X 2 f F 1132(t)X 1 f F 1160(\))X 47 f F 1187(-)X 2 f F 1231(y)X 47 f F 1273(\242)X 1 f F 1293(\()X 2 f F 1320(t)X 1 f F 1348(\),)X 1419(and)X 2 f F 1559(x)X 47 f F 1601(\242)X 1 f F 1621(\()X 2 f F 1648(t)X 1 f F 1676(\))X 47 f F 1703(+)X 2 f F 1747(y)X 47 f F 1789(\242)X 1 f F 1809(\()X 2 f F 1836(t)X 1 f F 1864(\))X 1916(has)X 2048(a)X 2109(constant)X 576 4166(sign.)N 766(The)X 927(curve)X 1142(can)X 1290(be)X 1402(transformed)X 1826(in)X 1924(each)X 2108(of)X 2211(these)X 576 4262(subintervals)N 1005(so)X 1118(that)X 1280(it)X 1366(travels)X 1622(entirely)X 1909(in)X 2013(\256rst)X 2180(octant)X 576 4358(directions,)N 933(if)X 1003(we)X 1118(exchange)X 2 f F 1443(x)X 1 f F 1500(and)X 47 f F 1636(-)X 2 f F 1680(x)X 1 f F 1716(,)X 2 f F 1756(y)X 1 f F 1812(and)X 47 f F 1948(-)X 2 f F 1992(y)X 1 f F 2028(,)X 2068(and)X 2 f F 2204(x)X 1 f F 2260(and)X 2 f F 576 4454(y)N 1 f F 632(as)X 719(necessary.)X 3 f F 576 4646(4.3)N 736(Pens)X 923(and)X 1078(envelopes.)X 1 f F 1474(There)X 1689(are)X 1816(two)X 1964(kinds)X 2165(of)X 2260(pen)X 576 4742(heads)N 791(that)X 943(may)X 1112(be)X 1219(used,)X 1417(polygonal)X 1768(and)X 1915(elliptic.)X 2188(There)X 576 4838(are)N 708(a)X 778(number)X 1057(of)X 1158(trade-o)X 1386 MX (ff)138 606 oc 1434(s)X 1499(involved)X 1813(in)X 1909(their)X 2090(use.)X 2251(The)X 576 4934(\256rst)N 725(subsection)X 1088(treats)X 1287(the)X 1410(case)X 1573(of)X 1664(an)X 2 f F 1764(n)X 1 f F (-vertex)S 2056(polygonal)X 576 5030(pen)N 715(shape)X 921(and)X 1060(the)X 1181(second)X 1427(treats)X 1624(the)X 1745(case)X 1907(of)X 1997(an)X 2096(elliptical)X 576 5126(pen)N 717(shape.)X 945(Both)X 1125(describe)X 1418(the)X 1540(in\257uence)X 1858(of)X 1949(pen)X 2089(shape)X 2296(on)X 576 5222(the)N 694(envelope)X 1004(of)X 1091(the)X 1209(font.)X 3 f F 735 5318(4.3.1)N 955(Polygonal)X 1322(pens.)X 1 f F 1547(Suppose)X 1848(that)X 1998(the)X 2126(vertices)X 576 5414(of)N 672(a)X 737(polygon)X 1028(are)X 2 f F 1156(w)X 7 s 7 xH 1 f F 1218 5430(0)N 10 s 10 xH F 1252 5414(,)N 2 f F 1298(w)X 7 s 7 xH 1 f F 1360 5430(1)N 10 s 10 xH F 1394 5414(,)N 1434(.)X 1474(.)X 1514(.)X 1554(,)X 2 f F 1607(w)X 7 s 7 xH F 1660 5430(n)N 47 f F 1697(-)X 1 f F 1728(1)X 10 s 10 xH F 1762 5414(,)N 2 f F 1808(w)X 7 s 7 xH F 1861 5430(n)N 10 s 10 xH 47 f F 1915 5414(=)N 2 f F 1979(w)X 7 s 7 xH 1 f F 2041 5430(0)N 10 s 10 xH F 2103 5414(in)N 2193(coun-)X 576 5510(terclockwise)N 1006(order.)X 1221(A)X 1304(convexity)X 1645(condition)X 1972(requires)X 2256(that)X 576 5606(each)N 757(vertex)X 991(turns)X 1184(left)X 1324(when)X 1531(one)X 1680(proceeds)X 1998(from)X 2 f F 2186(w)X 7 s 7 xH 1 f F 2248 5622(0)N 10 s 10 xH F 2314 5606(to)N 2 f F 576 5702(w)N 7 s 7 xH 1 f F 638 5718(1)N 10 s 10 xH F 718 5678(.)N 758(.)X 798(.)X 864 5702(to)N 2 f F 953(w)X 7 s 7 xH F 1006 5718(n)N 10 s 10 xH 1 f F 1040 5702(.)N 1087(The)X 1239(envelope)X 1556(is)X 1636(obtained)X 1939(if)X 2015(we)X 2136(o)X (ff)138 606 oc 2224(set)X 2340(a)X 2520 672(given)N 2721(curve)X 2 f F 2923(z)X 1 f F 2967(\()X 2 f F 2994(t)X 1 f F 3022(\))X 3071(by)X 2 f F 3173(w)X 7 s 7 xH F 3226 688(k)N 10 s 10 xH 1 f F 3279 672(when)N 3475(that)X 3617(curve)X 3818(is)X 3893(traveling)X 4200(in)X 4284(a)X 2520 768(direction)N 2 f F 2846(z)X 47 f F 2883(\242)X 1 f F 2903(\()X 2 f F 2930(t)X 1 f F 2958(\))X 3026(lying)X 3232(between)X 3542(the)X 3682(directions)X 2 f F 4040(w)X 7 s 7 xH F 4093 784(k)N 10 s 10 xH 47 f F 4124 768(-)N 2 f F 4168(w)X 7 s 7 xH F 4221 784(k)N 47 f F 4255(-)X 1 f F 4286(1)X 10 s 10 xH F 2520 864(and)N 2 f F 2662(w)X 7 s 7 xH F 2715 880(k)N 47 f F 2749(+)X 1 f F 2780(1)X 10 s 10 xH 47 f F 2814 864(-)N 2 f F 2858(w)X 7 s 7 xH F 2911 880(k)N 10 s 10 xH 1 f F 2942 864(.)N 2988(At)X 3094(times)X 2 f F 3293(t)X 1 f F 3341(when)X 3541(the)X 3665(curve)X 3870(direction)X 2 f F 4181(z)X 47 f F 4218(\242)X 1 f F 4238(\()X 2 f F 4265(t)X 1 f F 4293(\))X 2520 960(increases)N 2854(past)X 2 f F 3022(w)X 7 s 7 xH F 3075 976(k)N 47 f F 3109(+)X 1 f F 3140(1)X 10 s 10 xH 47 f F 3174 960(-)N 2 f F 3218(w)X 7 s 7 xH F 3271 976(k)N 10 s 10 xH 1 f F 3302 960(,)N 0 f F 3361(METAFONT)X 1 f F 3742(temporarily)X 4156(stops)X 2520 1056(plotting)N 2793(the)X 2916(o)X (ff)138 606 oc 3004(set)X 3118(curve)X 3322(and)X 3463(inserts)X 3696(a)X 3756(straight)X 4020(line)X 4164(from)X 2 f F 2520 1152(z)N 1 f F 2564(\()X 2 f F 2591(t)X 1 f F 2619(\))X 47 f F 2646(+)X 2 f F 2690(w)X 7 s 7 xH F 2743 1168(k)N 10 s 10 xH 1 f F 2811 1152(to)N 2 f F 2910(z)X 1 f F 2954(\()X 2 f F 2981(t)X 1 f F 3009(\))X 47 f F 3036(+)X 2 f F 3080(w)X 7 s 7 xH F 3133 1168(k)N 47 f F 3167(+)X 1 f F 3198(1)X 10 s 10 xH F 3232 1152(;)N 3291(notice)X 3524(that)X 3681(this)X 3833(straight)X 4110(line)X 4267(is)X 2520 1248(tangent)N 2789(to)X 2884(the)X 3015(o)X (ff)138 606 oc 3103(set)X 3225(curve.)X 3456(Similarly,)X 3805(when)X 4011(the)X 4141(curve)X 2520 1344(direction)N 2825(decreases)X 3154(past)X 2 f F 3303(w)X 7 s 7 xH F 3356 1360(k)N 10 s 10 xH 47 f F 3387 1344(-)N 2 f F 3431(w)X 7 s 7 xH F 3484 1360(k)N 47 f F 3518(-)X 1 f F 3549(1)X 10 s 10 xH F 3583 1344(,)N 0 f F 3623(METAFONT)X 1 f F 3984(stops)X 4169(plot-)X 2520 1440(ting)N 2705(and)X 2882(inserts)X 3152(a)X 3248(straight)X 3548(line)X 3728(from)X 2 f F 3944(z)X 1 f F 3988(\()X 2 f F 4015(t)X 1 f F 4043(\))X 47 f F 4070(+)X 2 f F 4114(w)X 7 s 7 xH F 4167 1456(k)N 10 s 10 xH 1 f F 4258 1440(to)N 2 f F 2520 1536(z)N 1 f F 2564(\()X 2 f F 2591(t)X 1 f F 2619(\))X 47 f F 2646(+)X 2 f F 2690(w)X 7 s 7 xH F 2743 1552(k)N 47 f F 2777(-)X 1 f F 2808(1)X 10 s 10 xH F 2842 1536(;)N 2895(the)X 3024(latter)X 3220(line)X 3371(is)X 3455(actually)X 3740(a)X 3808(retrograde)X 4171(step,)X 2520 1632(which)N 2761(will)X 2929(not)X 3075(be)X 3195(part)X 3364(of)X 3475(the)X 3617(\256nal)X 3803(envelope)X 4137(under)X 0 f F 2520 1728(METAFONT)N 1 f F 2861('s)X 2946(assumptions.)X 3388(The)X 3541(result)X 3747(of)X 3842(this)X 3985(considera-)X 2520 1824(tion)N 2684(is)X 2777(a)X 2853(continuous)X 3243(path)X 3420(that)X 3579(consists)X 3871(of)X 3977(alternating)X 2520 1920(curves)N 2769(and)X 2924(straight)X 3203(line)X 3362(segments.)X 3719(The)X 3883(segments)X 4221(are)X 2520 2016(usually)N 2785(so)X 2890(short,)X 3104(in)X 3200(practice,)X 3509(that)X 3663(they)X 3835(blend)X 4047(with)X 4222(the)X 2520 2112(curves.)N 3 f F 2679 2208(4.3.2)N 2899(Elliptical)X 3243(pens.)X 1 f F 3472(To)X 3595(get)X 3727(the)X 3859(envelope)X 4183(of)X 4284(a)X 2520 2304(cyclic)N 2737(path)X 2900(with)X 3067(respect)X 3319(to)X 3405(an)X 3505(ellipse,)X 0 f F 3758(METAFONT)X 1 f F 4123(calcu-)X 2520 2400(lates)N 2692(the)X 2815(envelope)X 3130(with)X 3298(respect)X 3552(to)X 3640(a)X 3702(polygonal)X 4048(approxi-)X 2520 2496(mation)N 2779(to)X 2878(the)X 3012(ellipse.)X 3277(This)X 3455(has)X 3598(two)X 3754(important)X 4101(advan-)X 2520 2592(tages)N 2705(over)X 2868(trying)X 3079(to)X 3161(obtain)X 3381(the)X 3499(exact)X 3689(envelope:)X 2583 2736(1.)N 2679(Polygonal)X 3041(envelopes)X 3400(give)X 3576(better)X 3797(results,)X 4065(because)X 2679 2832(the)N 2801(polygon)X 3087(has)X 3218(been)X 3394(designed)X 3703(to)X 3788(counteract)X 4146(prob-)X 2679 2928(lems)N 2882(that)X 3054(arise)X 3259(from)X 3468(digitization;)X 3907(the)X 4058(polygon)X 2679 3024(includes)N 2980(sub-pixel)X 3312(corrections)X 3703(to)X 3799(an)X 3908(exact)X 4111(ellipse)X 2679 3120(that)N 2839(make)X 3053(the)X 3191(results)X 3441(essentially)X 3820(independent)X 4253(of)X 2679 3216(where)N 2896(the)X 3014(path)X 3172(falls)X 3330(on)X 3430(the)X 3548(raster.)X 2583 3360(2.)N 2679(Polygonal)X 3046(envelopes)X 3410(of)X 3520(cubic)X 3737(splines)X 4003(are)X 4146(cubic)X 2679 3456(splines.)N 2967(Hence)X 3218(it)X 3307(is)X 3405(not)X 3552(necessary)X 3910(to)X 4017(introduce)X 2679 3552(completely)N 3074(di)X 3136 MX (ff)138 606 oc 3184(erent)X 3385(routines.)X 3703(By)X 3836(contrast,)X 4150(exact)X 2679 3648(envelopes)N 3027(of)X 3121(cubic)X 3322(splines)X 3570(with)X 3738(respect)X 3992(to)X 4080(ellipses)X 2679 3744(are)N 2804(complicated)X 3222(curves,)X 3478(more)X 3669(di)X 3731 MX (Fi)139 825 oc (cult)S 3943(to)X 4031(plot)X 4182(than)X 2679 3840(cubics.)N 3 f F 2520 4032(4.4)N 2680(Taking)X 2948(out)X 3084(data.)X 1 f F 3300(After)X 0 f F 3495(METAFONT)X 1 f F 3861(has)X 3994(calculated)X 2520 4128(the)N 2639(paths)X 2828(and)X 2964(the)X 3082(o)X (ff)138 606 oc 3170(sets,)X 3330(it)X 3394(is)X 3467(ready)X 3666(to)X 3748(send)X 3915(the)X 4033(values)X 4258(to)X 2520 4224(the)N 2 f F 2661(make_moves)X 1 f F 3116(procedure)X 3482(which)X 3722(generates)X 4070(discrete)X 2520 4320(moves)N 2751(for)X 2867(any)X 3004(four)X 3159(points)X 3375(that)X 3516(represent)X 3832(a)X 3889(Be)X 3947(\302zier)X 4121(curve.)X 2520 4416(This)N 2702(is)X 2796(done)X 2993(for)X 3128(each)X 3317(one)X 3474(of)X 3582(the)X 3721(cyclic)X 3954(paths)X 4164(from)X 2520 4512(which)N 2740(the)X 2861(letter)X 3049(is)X 3125(built.)X 3334(When)X 3549(the)X 3670(o)X (ff)138 606 oc 3758(sets)X 3901(are)X 4023(zero,)X 4205(this)X 2520 4608(is)N 2611(done)X 2805(by)X 2923(the)X 2 f F 3059(\256ll_spec)X 1 f F 3364(procedure.)X 3744(Otherwise)X 4113(this)X 4267(is)X 2520 4704(done)N 2705(by)X 2813(the)X 2 f F 2939(\256ll_envelope)X 1 f F 3377(procedure.)X 3747(In)X 3842(the)X 3968(latter)X 4161(case,)X 2520 4800(the)N 2641(line)X 2784(segments,)X 3125(which)X 3345(were)X 3526(discussed)X 3857(earlier,)X 4107(should)X 2520 4896(be)N 2631(taken)X 2840(out)X 2977(also)X 3140(in)X 3236(order)X 3440(to)X 3536(get)X 3668(smooth)X 3937(connections)X 2520 4992(between)N 2810(the)X 2931(di)X 2993 MX (ff)138 606 oc 3041(erent)X 3225(curves)X 3458(that)X 3601(the)X 3722(cyclic)X 3937(path)X 4098(is)X 4174(built)X 2520 5088(from.)N 2764(Because)X 3080(P)X 8 s 8 xH F 3124(OST)X 10 s 10 xH F 3245(S)X 8 s 8 xH F 3289(CRIPT)X 10 s 10 xH F 3519(describes)X 3865(any)X 4028(shape)X 4258(in)X 2520 5184(terms)N 2741(of)X 2851(curves)X 3104(and)X 3263(lines,)X 3477(this)X 3635(is)X 3731(the)X 3872(point)X 4080(to)X 4186(take)X 2520 5280(advantage)N 2909(of)X 0 f F 3039(METAFONT)X 1 f F 3380('s)X 3501(calculations,)X 3966(i.e.,)X 4146(when)X 0 f F 2520 5376(METAFONT)N 1 f F 2892(calls)X 3071(the)X 2 f F 3201(make_moves)X 1 f F 3644(procedure)X 3998(and)X 4146(when)X 0 f F 2520 5472(METAFONT)N 1 f F 2881(draws)X 3093(line)X 3233(segments)X 3551(for)X 3665(o)X (ff)138 606 oc 3753(set)X 3862(corrections.)X 3 f F 2520 5664(4.5)N 2680(Processing)X 3074(the)X 3210(data.)X 1 f F 3430(The)X 3584(generated)X 3926(data)X 4089(are)X 4218(not)X 2465 6084(8)N %%Page: 8 9 8 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(ready)N 796(yet)X 935(to)X 1037(be)X 1153(used.)X 1360(First,)X 1566(we)X 1700(should)X 1953(unskew,)X 2258(i.e.,)X 576 768(transform)N 914(from)X 1096(the)X 1220(\256rst)X 1370(octant)X 1592(back)X 1770(to)X 1858(the)X 1982(original,)X 2278(the)X 576 864(paths)N 775(according)X 1121(to)X 1212(the)X 1339(octant)X 1564(that)X 1713(the)X 1840(paths)X 2038(were)X 2224(trav-)X 576 960(eled)N 747(in)X 846(before)X 1089(they)X 1264(were)X 1459(skewed.)X 1758(This)X 1938(unskewing)X 2323(is)X 576 1056(done)N 766(by)X 880(taking)X 1114(out)X 1250(the)X 1382(octant)X 1612(number)X 1891(at)X 1983(the)X 2114(moment)X 576 1152(that)N 718(the)X 2 f F 838(make_moves)X 1 f F 1271(procedure)X 1615(is)X 1690(called)X 1904(and)X 2042(then)X 2203(using)X 0 f F 576 1248(METAFONT)N 1 f F 917('s)X 2 f F 1007(unskew)X 1 f F 1275(procedure)X 1629(that)X 1780(sets)X 1931(values)X 2 f F 2167(x)X 47 f F 2209(\242)X 1 f F 2260(and)X 2 f F 576 1344(y)N 47 f F 618(\242)X 1 f F 662(to)X 748(the)X 870(original)X 1143(coordinate)X 1506(values)X 1735(of)X 1827(a)X 1888(point,)X 2097(given)X 2300(an)X 576 1440(octant)N 800(code)X 980(and)X 1123(coordinates)X 1520(\()X 2 f F 1547(x)X 1 f F 1583(,)X 2 f F 1609(y)X 1 f F 1651(\))X 1705(after)X 1880(they)X 2045(have)X 2224(been)X 576 1536(mapped)N 850(into)X 995(the)X 1114(\256rst)X 1259(octant)X 1476(and)X 1613(skewed;)X 1897(the)X 2016(new)X 2171(values)X 576 1632(are)N 701(sent)X 855(to)X 942(the)X 2 f F 1065(send_p_s)X 1 f F 1388(procedure.)X 1755(This)X 1922(procedure)X 2269(has)X 576 1728(eight)N 761(formal)X 1000(parameters)X 1378(that)X 1523(are)X 1648(all)X 1754(used)X 1927(when)X 2127(sending)X 576 1824(a)N 637(curve.)X 861(When)X 1078(sending)X 1352(a)X 1412(line,)X 1576(only)X 1742(four)X 1900(parameters)X 2277(are)X 576 1920(used,)N 763(two)X 903(to)X 985(denote)X 1219(the)X 1338(start)X 1497(point)X 1682(and)X 1819(two)X 1960(to)X 2043(denote)X 2278(the)X 576 2016(end)N 729(point;)X 952(the)X 1087(remaining)X 1449(four)X 1620(parameters)X 2009(are)X 2144(sent)X 2309(as)X 576 2112(zeros)N 778(so)X 2 f F 881(send_p_s)X 1 f F 1211(can)X 1355(distinguish)X 1737(whether)X 2029(a)X 2098(line)X 2251(was)X 576 2208(sent)N 728(or)X 818(a)X 877(curve.)X 1119(In)X 1209(the)X 1330(next)X 1491(step,)X 2 f F 1663(send_p_s)X 1 f F 1984(unscales)X 2278(the)X 576 2304(numbers)N 875(because)X 0 f F 1154(METAFONT)X 1 f F 1519(works)X 1739(with)X 1905(units)X 2084(of)X 2175(scaled)X 576 2400(points,)N 832(of)X 940(which)X 1177(there)X 1379(are)X 1519(2)X 7 s 7 xH F 2368(16)Y 10 s 10 xH F 1662 2400(in)N 1764(an)X 1880(ordinary)X 2192(point.)X 576 2496(While)N 796(unscaling,)X 1147(the)X 1269(values)X 1498(are)X 1621(transformed)X 2033(in)X 2119(order)X 2314(to)X 576 2592(send)N 762(them)X 961(to)X 1062(the)X 1199(P)X 8 s 8 xH F 1243(OST)X 10 s 10 xH F 1364(S)X 8 s 8 xH F 1408(CRIPT)X 10 s 10 xH F 1629(dictionary)X 5 f F 1992(FontBBox)X 1 f F 576 2688(command.)N 932(After)X 1122(this)X 1257(pre-processing,)X 1770(the)X 1889(data)X 2044(are)X 2164(sent)X 2314(to)X 576 2784(a)N 632(temporary)X 982(\256le.)X 3 f F 735 2880(4.5.1)N 955(Getting)X 1244(more)X 1454(information.)X 1 f F 1934(When)X 0 f F 2158(META-)X 576 2976(FONT)N 1 f F 765(calls)X 936(the)X 2 f F 1058(make_moves)X 1 f F 1493(procedure,)X 1859(it)X 1927(does)X 2098(not)X 2224(have)X 576 3072(any)N 725(information)X 1136(on)X 1249(the)X 1380(role)X 1538(that)X 1691(this)X 1839(path)X 2011(is)X 2098(going)X 2314(to)X 576 3168(play,)N 774(whether)X 1073(the)X 1211(current)X 1478(cyclic)X 1709(path)X 1886(is)X 1978(going)X 2199(to)X 2300(be)X 2 f F 576 3264(\256lled)N 1 f F 759(or)X 849(whether)X 1131(it)X 1198(will)X 1345(act)X 1462(as)X 1552(a)X 1611(boundary)X 1937(of)X 2027(a)X 2086(region)X 2314(to)X 576 3360(be)N 2 f F 672(erased)X 1 f F 886(.)X 735 3456(In)N 840(order)X 1048(to)X 1149(distinguish)X 1538(between)X 1845(the)X 1982(cases,)X 2211(more)X 576 3552(information)N 987(has)X 1127(to)X 1222(be)X 1331(taken.)X 1558(This)X 1733(is)X 1818(done)X 2006(by)X 2118(copying)X 576 3648(the)N 5 f F 760(plain.mf)X 1 f F 1230(\256le)X 1418(into)X 1629(a)X 1752(new)X 1973(\256le)X 2162(named)X 5 f F 576 3744(myplain.mf)N 1 f F 1086(and)X 1231(adding)X 1478(a)X 1543(few)X 1693(lines)X 1873(to)X 1964(it.)X 2057(The)X 2211(addi-)X 576 3840(tional)N 783(code)X 961(was)X 1112(added)X 1330(in)X 1418(order)X 1614(to)X 1702(identify)X 0 f F 1977(METAFONT)X 1 f F 2318('s)X 576 3936(use)N 704(of)X 791(the)X 909(macros.)X 0 f F 1181(METAFONT)X 1 f F 1542(uses)X 1700(the)X 1818(variables)X 2128(for)X 2242(date)X 576 4032(only)N 764(once,)X 982(when)X 1202(the)X 1346(program)X 1664(is)X 1763(started,)X 2043(so)X 2160(it)X 2251(was)X 576 4128(decided)N 861(to)X 958(use)X 1100(them)X 1294(in)X 1390(the)X 1522(rest)X 1672(of)X 1773(the)X 1905(program.)X 2251(The)X 5 f F 576 4224(year)N 1 f F 862(is)X 1009(changed)X 1372(to)X 47 f F 1529(-)X 1 f F 1573(1)X 1708(when)X 0 f F 1977(METAFONT)X 1 f F 2318('s)X 5 f F 576 4320(pen_stroke)N 1 f F 1077(macro)X 1299(is)X 1373(applied)X 1630(on)X 1730(a)X 1786(cyclic)X 1998(path,)X 2176(i.e.,)X 2314(in)X 576 4416(the)N 709(characters)X 1071(such)X 1253(as)X 1355(\252o\272,)X 1522(\252O\272,)X 1707(and)X 1858(\252Q\272,)X 2043(and)X 2194(to)X 47 f F 2292(-)X 1 f F 2336(2)X 576 4512(when)N 801(the)X 5 f F 950(erase)X 1 f F 1241(macro)X 1493(is)X 1596(called.)X 1858(The)X 5 f F 2033(month)X 1 f F 2323(is)X 576 4608(changed)N 883(when)X 1096(the)X 5 f F 1233(fill)X 1 f F 1464(macro)X 1704(is)X 1797(called.)X 2049(There)X 2277(are)X 576 4704(three)N 757(kinds)X 950(of)X 1037(paths:)X 639 4848(1.)N 735(paths)X 941(to)X 1040(be)X 2 f F 1153(\256lled)X 1 f F 1351(are)X 1488(processed)X 1843(using)X 2054(the)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 735 4944(S)N 8 s 8 xH F 779(CRIPT)X 10 s 10 xH 5 f F 981(fill)X 1 f F 1193(command.)X 639 5088(2.)N 735(paths)X 932(to)X 1022(be)X 2 f F 1126(stroked)X 1 f F 1390(are)X 1517(processed)X 1862(using)X 2063(the)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 735 5184(S)N 8 s 8 xH F 779(CRIPT)X 10 s 10 xH 5 f F 981(eofill)X 1 f F 1289(command.)X 639 5328(3.)N 735(paths)X 928(to)X 1015(be)X 2 f F 1116(erased)X 1 f F 1355(are)X 1479(processed)X 1821(using)X 2019(specialized)X 735 5424(procedures)N 1108(which)X 1324(will)X 1468(be)X 1564(discussed)X 1891(later.)X 735 5568(A)N 826(letter)X 1024(cannot)X 1271(always)X 1527(be)X 1636(treated)X 1888(as)X 1988(one)X 2138(unit)X 2296(by)X 576 5664(means)N 832(of)X 950(the)X 5 f F 1099(fill)X 1 f F 1342(and)X 5 f F 1509(eofill)X 1 f F 1848(commands.)X 2265(For)X 2520 672(instance,)N 2833(the)X 2962(letter)X 3158(\252Q\272)X 3319(is)X 3403(built)X 3580(of)X 3678(two)X 3829(di)X 3891 MX (ff)138 606 oc 3939(erent)X 4131(paths,)X 2520 768(the)N 2643(\256rst)X 2792(of)X 2884(which)X 3105(is)X 3183(stroked)X 3444(and)X 3585(the)X 3708(second)X 3956(of)X 4047(which)X 4267(is)X 2520 864(\256lled.)N 2759(Generating)X 3171(the)X 3325(letter)X 3546(using)X 3775(the)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH 5 f F 2520 960(eofill)N 1 f F 2830(command)X 3168(causes)X 3400(a)X 3458(hole)X 3617(in)X 3700(the)X 3819(image)X 4036(\(see)X 4187(Fig-)X 2520 1056(ure)N 2643(4\).)X 3140 1152 MXY 560 560 0.00 0.00 70.00 70.00 startFig %! Simon font %%%BoundingBox: 0 0 70 70 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_letter_Q ( newpath %%new path 458 668 M -38 0 -74 -18 -102 -44 c -8 -8 -14 -18 -22 -26 c -34 -52 -44 -114 -44 -176 c 2 0 l 0 -60 10 -122 44 -172 c 8 -10 14 -18 22 -24 c 28 -28 62 -46 102 -46 c 0 2 l 40 0 74 18 102 46 c 8 6 14 14 22 24 c 34 50 44 112 44 172 c -2 0 l 0 62 -10 124 -44 176 c -8 8 -14 18 -22 26 c -28 26 -64 44 -102 44 c closepath %%end path %%new path 458 686 M -60 0 -118 -26 -162 -68 c -2 -4 -6 -6 -8 -10 c -46 -50 -70 -118 -70 -186 c 2 0 l 0 -68 24 -134 70 -184 c 2 -2 4 -4 8 -6 c 42 -44 100 -68 162 -68 c 0 2 l 62 0 120 24 162 68 c 4 2 6 4 8 6 c 46 50 70 116 70 184 c -2 0 l 0 68 -24 136 -70 186 c -2 4 -6 6 -8 10 c -44 42 -102 68 -162 68 c closepath %%end path %%new path 466 178 M -2 2 l -4 0 l -6 0 -12 2 -16 4 c 0 -2 l 2 0 l -6 2 -14 8 -18 12 c -2 0 l 6 -4 l 0 0 l -2 2 l -6 6 -10 12 -12 20 c 2 -4 l -2 2 l -2 4 -2 10 -2 16 c 2 0 l -2 2 l 2 -2 l -2 -6 l 2 4 l 0 6 0 12 2 18 c 0 -2 l -2 -2 l 2 0 l 2 8 6 16 12 22 c 0 -2 l -8 -4 l 2 0 l 2 2 l 2 0 l 4 6 12 10 18 12 c -4 -2 l 2 2 l 4 2 10 2 16 2 c -2 -2 l 4 2 l 2 2 l -8 -4 l -6 4 l 4 -2 l 2 -2 l 2 0 l 8 0 16 -2 22 -4 c -2 2 l -2 0 l 10 -4 16 -8 22 -14 c 0 2 l 2 -2 l -6 4 l 0 0 l 2 0 l 8 -10 16 -24 20 -38 c 0 2 l -2 2 l 2 0 l 12 -38 14 -84 26 -122 c -2 2 l 2 -4 l 6 -14 12 -28 22 -38 c -2 2 l 4 -4 l 6 -6 14 -10 22 -14 c 0 2 l 2 -2 l 2 0 l 6 -2 14 -4 22 -4 c 2 0 l 0 2 l 8 0 14 2 20 4 c 0 -2 l 2 2 l 2 0 l 8 4 16 8 24 16 c -2 -2 l 4 4 l 10 10 18 26 24 42 c 0 2 l 2 2 l 6 20 10 46 10 70 c -2 4 l -2 2 l -4 2 l -2 0 l 0 -2 l -2 0 l 2 2 l -4 -2 l -2 -2 l -2 -4 l 0 -8 -2 -16 -4 -22 c 2 0 l 0 2 l -4 -10 -10 -20 -18 -28 c 0 0 l 8 4 l -4 0 l -2 -2 l -8 -8 -18 -14 -28 -18 c 0 2 l 2 0 l -6 -2 -14 -4 -22 -4 c -2 0 l -4 -4 l 8 4 l 6 -4 l -2 4 l -4 0 l 0 2 l -8 0 -14 0 -20 2 c 4 -2 l -2 2 l -10 4 -16 8 -24 14 c -2 0 l 6 -4 l 2 -2 l -2 2 l 0 2 l -34 34 -42 100 -74 134 c 0 -2 l -2 4 l -2 0 l -6 8 -14 12 -24 16 c 2 -2 l -4 2 l -6 2 -14 4 -20 4 c -2 0 l 0 -2 l -6 0 -12 0 -16 -2 c -2 0 l -2 -2 l -6 -2 -14 -6 -18 -12 c 0 2 l -2 -4 l -2 0 l -6 -6 -10 -14 -12 -22 c 0 -2 l -2 0 l -2 -6 -2 -12 -2 -18 c 2 2 l 0 -4 l 0 -6 0 -12 2 -16 c 0 -2 l 2 -2 l 2 -8 6 -14 12 -20 c 2 -2 l 2 0 l 4 -4 12 -10 18 -12 c 0 2 l 2 -2 l 2 0 l 4 -2 10 -4 16 -4 c -2 2 l 6 0 l 2 4 l 2 2 l 0 2 l -2 4 l closepath %%end path eofill ) def end % of CharDefs dictionary Encoding 81 /The_letter_Q put Encoding 89 /The_letter_Y put Metrics begin /The_letter_Q 527 fudge add def /The_letter_Y 525 fudge add def /.notdef 400 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -178 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [178 fudge sub 40 704 688] def end /Simon SimonFont definefont pop /Simon findfont 70 scalefont setfont 0 0 moveto (Q) show endFig 3285 1856(Figure)N 3514(4)X 2520 2016(So)N 2632(while)X 2838(generating)X 3205(a)X 3269(letter,)X 3482(\256ll)X 3599(mode)X 3806(can)X 3947(be)X 4052(changed)X 2520 2112(for)N 2660(each)X 2854(cyclic)X 3092(path.)X 3296(Moreover,)X 3679(when)X 3899(generating)X 4284(a)X 2520 2208(letter)N 2707(whose)X 2934(paths)X 3126(should)X 3362(be)X 3461(\256lled,)X 3668(it)X 3735(is)X 3811(not)X 3936(always)X 4182(pos-)X 2520 2304(sible)N 2691(to)X 2773(use)X 2900(just)X 3035(one)X 5 f F 3171(fill)X 1 f F 3383(command)X 3719(\(see)X 3869(Figure)X 4098(5\).)X 3140 2400 MXY 560 560 0.00 0.00 70.00 70.00 startFig %! Simon font %%%BoundingBox: 0 0 70 70 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_letter_Y ( gsave initclip newpath 0 0 M 0 1000 L 1000 1000 L 1000 0 L 0 0 L %%new path 180 670 0.5 add M 28 -2 0.5 add 58 -2 0.5 add 88 -2 0.5 add c 0 2 0.5 add l 38 0 0.5 add 74 0 0.5 add 110 2 0.5 add c -2 -2 0.5 add l -198 0 l closepath %%end path %%erase %%new path 550 670 0.5 add M 28 -2 0.5 add 56 -2 0.5 add 84 -2 0.5 add c 0 2 0.5 add l 24 0 0.5 add 46 0 0.5 add 68 2 0.5 add c -2 -2 0.5 add l -152 0 l closepath %%end path %%erase %%new path 334 180 0.5 sub M 208 0 0.5 sub l -34 2 0.5 sub -70 2 0.5 sub -104 2 0.5 sub c 0 -2 0.5 sub l -106 0 l closepath %%end path %%erase eoclip newpath %%new path 462 406 M 54 86 106 172 160 258 c 0 2 2 2 2 4 c 4 2 8 4 12 4 c 8 0 l 0 -2 l 0 0 2 0 2 -2 c 2 0 2 -2 2 -4 c -2 0 l 0 -2 l -60 -96 -118 -192 -178 -288 c 0 -188 l 0 -2 0 -4 -2 -6 c -52 0 l -2 0 -4 0 -6 2 c -2 2 -2 4 -2 6 c 2 0 l 0 188 l -2 0 l -58 96 -118 192 -176 288 c 0 2 l 2 0 l 0 2 0 4 2 4 c 0 2 2 2 2 2 c 54 0 l 0 -2 l 6 0 10 -2 12 -4 c 2 -2 2 -2 4 -4 c 52 -86 104 -172 156 -258 c closepath %%end path %%new path 256 624 M 36 0 l -8 16 -18 32 -26 48 c 0 -2 l -88 0 l 0 -22 l 2 0 l 16 0 40 0 54 -4 c 4 -2 10 -6 14 -10 c 2 -4 6 -8 8 -12 c closepath %%end path %%new path 328 624 M -2 2 -2 6 -2 8 c 2 0 l 0 4 0 8 2 10 c 2 0 2 0 4 2 c 12 6 28 6 44 6 c 0 22 l -2 -2 l -108 0 l 8 -16 18 -32 26 -48 c 0 2 l 36 0 l closepath %%end path %%new path 584 604 M 14 0 l 12 22 24 46 36 68 c -2 -2 l -84 0 l 0 -22 l 2 0 l 12 0 24 -2 32 -10 c 2 -2 2 -2 4 -4 c 2 -4 4 -8 4 -14 c -2 0 l 0 -6 -2 -12 -6 -18 c closepath %%end path %%new path 610 604 M 4 6 10 12 14 18 c 8 6 14 12 24 16 c 16 8 34 12 54 12 c 0 22 l -2 -2 l -68 0 l -12 -22 -24 -46 -36 -68 c 2 2 l 12 0 l closepath %%end path %%new path 406 226 M 0 -6 -2 -14 -6 -18 c -2 -2 -4 -2 -6 -4 c -12 -4 -42 -4 -62 -4 c 0 -20 l 108 0 l 0 48 l -2 -2 l -32 0 l closepath %%end path %%new path 468 226 M -30 0 l 0 -46 l 106 0 l 0 22 l -2 0 l -20 0 -50 0 -62 4 c -2 2 -4 2 -6 4 c -4 4 -6 12 -6 18 c closepath %%end path fill grestore ) def end % of CharDefs dictionary Encoding 81 /The_letter_Q put Encoding 89 /The_letter_Y put Metrics begin /The_letter_Q 527 fudge add def /The_letter_Y 525 fudge add def /.notdef 400 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -178 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [178 fudge sub 40 704 688] def end /Simon SimonFont definefont pop /Simon findfont 70 scalefont setfont 0 0 moveto (Y) show endFig 3285 3104(Figure)N 3514(5)X 2520 3264(When)N 2747(a)X 2818(P)X 8 s 8 xH F 2862(OST)X 10 s 10 xH F 2983(S)X 8 s 8 xH F 3027(CRIPT)X 10 s 10 xH 5 f F 3245(fill)X 1 f F 3473(command)X 3825(is)X 3914(applied)X 4186(to)X 4284(a)X 2520 3360(path)N 2692(that)X 2846(is)X 2933(composed)X 3292(of)X 3393(more)X 3591(than)X 3762(one)X 3911(subpath,)X 4213(say)X 2520 3456(two)N 2661(for)X 2776(the)X 2895(sake)X 3059(of)X 3147(simplicity,)X 3507(and)X 3645(one)X 3783(subpath)X 4054(is)X 4129(inside)X 2520 3552(the)N 2654(other)X 2855(and)X 3007(is)X 3095(drawn)X 3331(in)X 3428(a)X 3499(direction)X 3819(opposite)X 4125(to)X 4222(the)X 2520 3648(external)N 2804(one,)X 2966(the)X 3090(internal)X 3361(path)X 3525(is)X 3604(considered)X 3978(a)X 4040(hole)X 4204(and)X 2520 3744(is)N 2593(not)X 2715(\256lled)X 2899(\(see)X 3049(Figure)X 3279(6\).)X 3407(So,)X 3532(if)X 3602(several)X 3851(paths)X 4041(are)X 4161(to)X 4244(be)X 2520 3840(\256lled)N 2723(in)X 2824(this)X 2978(manner,)X 3278(the)X 3414(description)X 3808(of)X 3913(each)X 4099(one)X 4253(of)X 2520 3936(them)N 2702(should)X 2938(be)X 3037(ended)X 3252(with)X 3417(the)X 5 f F 3538(fill)X 1 f F 3753(command.)X 4132(There)X 2520 4032(is)N 2608(one)X 2759(more)X 2959(bene\256t)X 3212(to)X 3309(using)X 3516(this)X 3665(strategy:)X 3975(The)X 4134(P)X 8 s 8 xH F 4178(OST-)X 10 s 10 xH F 2520 4128(S)N 8 s 8 xH F 2564(CRIPT)X 10 s 10 xH 5 f F 2806(current)X 3202(path)X 1 f F 3427(stack)X 3625(becomes)X 3939(empty)X 4172(after)X 2520 4224(encountering)N 2971(any)X 3119(kind)X 3293(of)X 5 f F 3392(fill)X 1 f F 3615(command.)X 3982(Therefore,)X 2520 4320(using)N 2735(the)X 5 f F 2875(fill)X 1 f F 3109(command)X 3467(after)X 3657(each)X 3847(path)X 4027(can)X 4182(help)X 2520 4416(avoid)N 5 f F 2761(stack)X 3091(overflow)X 3565(error)X 1 f F (s)S 3898(if)X 4009(all)X 4151(paths)X 2520 4512(together)N 2803(are)X 2922(too)X 3044(long.)X 3 f F 2679 4608(4.5.2)N 2899(Treating)X 3237(erasing)X 3526(paths.)X 1 f F 3792(There)X 4020(are)X 4159(three)X 2520 4704(methods)N 2822(of)X 2920(handling)X 3231(the)X 3360(problem)X 3658(of)X 3756(paths)X 3956(that)X 4107(should)X 2520 4800(be)N 2616(erased)X 2842(by)X 9 f F 2944(mf2ps)X 1 f F 3181(itself:)X 2583 4944(1.)N 2679(\256lling)X 2896(with)X 3066(white:)X 3294(Because)X 3590(erasing)X 3850(paths)X 4047(are)X 4174(built)X 2679 5040(in)N 2769(order)X 2967(to)X 3057(erase)X 3251(an)X 3355(existing)X 3636(\256lled)X 3828(area)X 3991(and)X 4134(P)X 8 s 8 xH F 4178(OST-)X 10 s 10 xH F 2679 5136(S)N 8 s 8 xH F 2723(CRIPT)X 10 s 10 xH F 2938(overlaps)X 3243(paths)X 3445(\(i.e.,)X 3623(a)X 3692(region)X 3930(is)X 4016(shown)X 4258(in)X 2679 5232(the)N 2798(color)X 2984(that)X 3125(was)X 3271(drawn)X 3493(last\),)X 3671(erasing)X 3923(paths)X 4112(can)X 4244(be)X 2679 5328(implemented)N 3142(by)X 3268(\256lling)X 3504(those)X 3719(paths)X 3934(with)X 4122(white.)X 2679 5424(This)N 2844(solution)X 3124(is)X 3200(the)X 3321(easiest,)X 3578(but)X 3703(it)X 3769(works)X 3987(only)X 4151(if)X 4222(the)X 2679 5520(background)N 3100(is)X 3195(white)X 3415(and)X 3573(the)X 3713(letter)X 3920(is)X 4015(drawn)X 4258(in)X 2679 5616(some)N 2879(level)X 3066(of)X 3164(gray.)X 3358(If)X 3443(one)X 3589(wants)X 3806(to)X 3898(draw)X 4089(a)X 4155(letter)X 2679 5712(with)N 2861(background)X 3280(other)X 3485(than)X 3663(white,)X 3901(the)X 4040(resulting)X 2465 6084(9)N %%Page: 9 10 9 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 608 672 MXY 1736 1968 0.00 -12.00 217.00 234.00 startFig %! %%%Title: O %%%Creator: fig2ps %%%CreationDate: Fri Jul 6 08:19:06 1990 %%%For: dberry@cs24 (dberry,479C,4325,252027,@$CP037,shlomo,cs24,) %%%Pages: 0 %%%BoundingBox: 0 -12 217 234 %%%Was: 0 0 217 222 %%%EndComments /$F2psDict 32 dict def $F2psDict begin $F2psDict /mtrx matrix put /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix } def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 1 setlinecap 1 setlinejoin -71 68 translate 0.000000 222.000000 translate 0.900 -0.900 scale 0.700 setlinewidth %% Ellipse newpath 199 199 121 121 0 360 DrawEllipse gsave 0.750 setgray fill grestore stroke %% Ellipse newpath 199 199 61 61 0 360 DrawEllipse gsave 1.000 setgray fill grestore stroke %% Polyline newpath 189 316 moveto 217 319 lineto 189 322 lineto 189 316 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 210 262 moveto 186 259 lineto 210 256 lineto 210 262 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 188 137 moveto 212 139 lineto 188 143 lineto 188 137 lineto closepath gsave 0.000 setgray fill grestore stroke %% Polyline newpath 210 82 moveto 182 79 lineto 210 75 lineto 210 82 lineto closepath gsave 0.000 setgray fill grestore stroke $F2psEnd endFig 1 f F 1341 2784(Figure)N 1570(6)X 735 2944(appearance)N 1118(will)X 1262(not)X 1384(be)X 1480(correct.)X 639 3088(2.)N 735(calculating)X 1125(new)X 1298(paths)X 1506(resulting)X 1825(from)X 2020(subtracting)X 735 3184(the)N 870(erasing)X 1139(paths)X 1345(from)X 1538(the)X 1673(previous)X 1985(\256lled)X 2185(paths:)X 735 3280(Such)N 920(a)X 981(solution)X 1263(can)X 1400(be)X 1501(global.)X 1746(However,)X 2086(it)X 2155(costs)X 2340(a)X 735 3376(lot)N 868(in)X 979(terms)X 1206(of)X 1322(processing)X 1714(time)X 1905(and)X 2069(accuracy,)X 735 3472(because)N 1018(paths)X 1215(are)X 1343(given)X 1550(implicitly)X 1889(by)X 1998(four)X 2161(points,)X 735 3568(and)N 873(in)X 957(order)X 1149(to)X 1233(calculate)X 1541(the)X 1661(new)X 1816(paths,)X 2026(one)X 2163(should)X 735 3664(\256nd)N 879(the)X 997(intersection)X 1391(points)X 1606(of)X 1693(Be)X 1751(\302zier)X 1924(curves,)X 2175(i.e.,)X 2314(to)X 735 3760(\256nd)N 882(points)X 1100(that)X 1243(lie)X 1346(on)X 1449(both)X 1614(Be)X 1672(\302zier)X 1848(curves,)X 2100(and)X 2238(then)X 735 3856(calculate)N 1048(new)X 1209(curves,)X 1466(which)X 1689(are)X 1815(di)X 1877 MX (Fi)139 825 oc (cult)S 2090(to)X 2179(calcu-)X 735 3952(late)N 871(from)X 1047(those)X 1236(points.)X 639 4096(3.)N 735(using)X 955(the)X 1100(P)X 8 s 8 xH F 1144(OST)X 10 s 10 xH F 1265(S)X 8 s 8 xH F 1309(CRIPT)X 10 s 10 xH 5 f F 1538(eoclip)X 1 f F 1874(command:)X 2260(Be-)X 735 4192(cause)N 936(the)X 1056(letters)X 1274(are)X 1394(bounded)X 1691(in)X 1774(a)X 1831(1000)X 47 f F 2011(\264)X 1 f F 2055(1000)X 2236(box,)X 735 4288(a)N 805(primary)X 1093(square)X 1337(path)X 1509(whose)X 1749(segments)X 2082(are)X 2216(1000)X 735 4384(units)N 923(long)X 1098(should)X 1344(be)X 1453(declared)X 1759(and)X 1908(after)X 2089(it)X 2166(all)X 2278(the)X 735 4480(erasing)N 991(paths)X 1184(should)X 1421(be)X 1521(listed.)X 1738(After)X 1932(relocating)X 2278(the)X 735 4576(erasing)N 1005(paths)X 1212(we)X 1344(are)X 1481(ready)X 1698(to)X 1798(declare)X 5 f F 2068(eoclip)X 1 f F (,)S 735 4672(which)N 957(means)X 1188(that)X 1334(the)X 1458(clipping)X 1747(path)X 1912(is)X 1992(the)X 2117(external)X 735 4768(primary)N 1031(one)X 1189(and)X 1347(the)X 1487(internal)X 1774(paths,)X 2005(the)X 2144(erasing)X 735 4864(paths,)N 959(are)X 1093(holes.)X 1317(This)X 1494(is)X 1583(an)X 1695(elegant)X 1963(solution)X 2256(that)X 735 4960(uses)N 899(the)X 1023(power)X 1250(of)X 1342(the)X 1465(language)X 1780(and)X 1921(is)X 1999(available)X 2314(in)X 735 5056(simple)N 976(situations)X 1310(in)X 1400(which)X 1624(there)X 1813(is)X 1894(no)X 2002(intersection)X 735 5152(between)N 1030(the)X 1155(erasing)X 1414(paths)X 1610(\(see)X 1767(Figure)X 2002(7\).)X 2135(If)X 2215(there)X 735 5248(were)N 923(intersections,)X 1379(a)X 1446(little)X 1623(more)X 1819(sophisticated)X 2269(use)X 735 5344(of)N 827(the)X 5 f F 950(eoclip)X 1 f F 1262(command)X 1602(would)X 1826(be)X 1926(needed.)X 2198(Relo-)X 735 5440(cation)N 970(of)X 1076(the)X 1214(erasing)X 1486(paths)X 1695(is)X 1788(done)X 1984(by)X 2104(the)X 2242(pro-)X 735 5536(cedure)N 5 f F 970(doarrange)X 1 f F (.)S 2788 672 MXY 1264 560 0.00 0.00 158.00 70.00 startFig %! Simon font %%%BoundingBox: 0 0 158 70 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_letter_Q ( newpath %%new path 458 668 M -38 0 -74 -18 -102 -44 c -8 -8 -14 -18 -22 -26 c -34 -52 -44 -114 -44 -176 c 2 0 l 0 -60 10 -122 44 -172 c 8 -10 14 -18 22 -24 c 28 -28 62 -46 102 -46 c 0 2 l 40 0 74 18 102 46 c 8 6 14 14 22 24 c 34 50 44 112 44 172 c -2 0 l 0 62 -10 124 -44 176 c -8 8 -14 18 -22 26 c -28 26 -64 44 -102 44 c closepath %%end path %%new path 458 686 M -60 0 -118 -26 -162 -68 c -2 -4 -6 -6 -8 -10 c -46 -50 -70 -118 -70 -186 c 2 0 l 0 -68 24 -134 70 -184 c 2 -2 4 -4 8 -6 c 42 -44 100 -68 162 -68 c 0 2 l 62 0 120 24 162 68 c 4 2 6 4 8 6 c 46 50 70 116 70 184 c -2 0 l 0 68 -24 136 -70 186 c -2 4 -6 6 -8 10 c -44 42 -102 68 -162 68 c closepath %%end path eofill %%new path 466 178 M -2 2 l -4 0 l -6 0 -12 2 -16 4 c 0 -2 l 2 0 l -6 2 -14 8 -18 12 c -2 0 l 6 -4 l 0 0 l -2 2 l -6 6 -10 12 -12 20 c 2 -4 l -2 2 l -2 4 -2 10 -2 16 c 2 0 l -2 2 l 2 -2 l -2 -6 l 2 4 l 0 6 0 12 2 18 c 0 -2 l -2 -2 l 2 0 l 2 8 6 16 12 22 c 0 -2 l -8 -4 l 2 0 l 2 2 l 2 0 l 4 6 12 10 18 12 c -4 -2 l 2 2 l 4 2 10 2 16 2 c -2 -2 l 4 2 l 2 2 l -8 -4 l -6 4 l 4 -2 l 2 -2 l 2 0 l 8 0 16 -2 22 -4 c -2 2 l -2 0 l 10 -4 16 -8 22 -14 c 0 2 l 2 -2 l -6 4 l 0 0 l 2 0 l 8 -10 16 -24 20 -38 c 0 2 l -2 2 l 2 0 l 12 -38 14 -84 26 -122 c -2 2 l 2 -4 l 6 -14 12 -28 22 -38 c -2 2 l 4 -4 l 6 -6 14 -10 22 -14 c 0 2 l 2 -2 l 2 0 l 6 -2 14 -4 22 -4 c 2 0 l 0 2 l 8 0 14 2 20 4 c 0 -2 l 2 2 l 2 0 l 8 4 16 8 24 16 c -2 -2 l 4 4 l 10 10 18 26 24 42 c 0 2 l 2 2 l 6 20 10 46 10 70 c -2 4 l -2 2 l -4 2 l -2 0 l 0 -2 l -2 0 l 2 2 l -4 -2 l -2 -2 l -2 -4 l 0 -8 -2 -16 -4 -22 c 2 0 l 0 2 l -4 -10 -10 -20 -18 -28 c 0 0 l 8 4 l -4 0 l -2 -2 l -8 -8 -18 -14 -28 -18 c 0 2 l 2 0 l -6 -2 -14 -4 -22 -4 c -2 0 l -4 -4 l 8 4 l 6 -4 l -2 4 l -4 0 l 0 2 l -8 0 -14 0 -20 2 c 4 -2 l -2 2 l -10 4 -16 8 -24 14 c -2 0 l 6 -4 l 2 -2 l -2 2 l 0 2 l -34 34 -42 100 -74 134 c 0 -2 l -2 4 l -2 0 l -6 8 -14 12 -24 16 c 2 -2 l -4 2 l -6 2 -14 4 -20 4 c -2 0 l 0 -2 l -6 0 -12 0 -16 -2 c -2 0 l -2 -2 l -6 -2 -14 -6 -18 -12 c 0 2 l -2 -4 l -2 0 l -6 -6 -10 -14 -12 -22 c 0 -2 l -2 0 l -2 -6 -2 -12 -2 -18 c 2 2 l 0 -4 l 0 -6 0 -12 2 -16 c 0 -2 l 2 -2 l 2 -8 6 -14 12 -20 c 2 -2 l 2 0 l 4 -4 12 -10 18 -12 c 0 2 l 2 -2 l 2 0 l 4 -2 10 -4 16 -4 c -2 2 l 6 0 l 2 4 l 2 2 l 0 2 l -2 4 l closepath %%end path fill ) def /The_letter_Y ( gsave initclip newpath 0 0 M 0 1000 L 1000 1000 L 1000 0 L 0 0 L %%new path 180 670 0.8 add M 28 -2 0.8 add 58 -2 0.8 add 88 -2 0.8 add c 0 2 0.8 add l 38 0 0.8 add 74 0 0.8 add 110 2 0.8 add c -2 -2 0.8 add l -198 0 l closepath %%end path %%erase %%new path 550 670 0.8 add M 28 -2 0.8 add 56 -2 0.8 add 84 -2 0.8 add c 0 2 0.8 add l 24 0 0.8 add 46 0 0.8 add 68 2 0.8 add c -2 -2 0.8 add l -152 0 l closepath %%end path %%erase %%new path 334 180 0.8 sub M 208 0 0.8 sub l -34 2 0.8 sub -70 2 0.8 sub -104 2 0.8 sub c 0 -2 0.8 sub l -106 0 l closepath %%end path %%erase eoclip newpath %%new path 462 406 M 54 86 106 172 160 258 c 0 2 2 2 2 4 c 4 2 8 4 12 4 c 8 0 l 0 -2 l 0 0 2 0 2 -2 c 2 0 2 -2 2 -4 c -2 0 l 0 -2 l -60 -96 -118 -192 -178 -288 c 0 -188 l 0 -2 0 -4 -2 -6 c -52 0 l -2 0 -4 0 -6 2 c -2 2 -2 4 -2 6 c 2 0 l 0 188 l -2 0 l -58 96 -118 192 -176 288 c 0 2 l 2 0 l 0 2 0 4 2 4 c 0 2 2 2 2 2 c 54 0 l 0 -2 l 6 0 10 -2 12 -4 c 2 -2 2 -2 4 -4 c 52 -86 104 -172 156 -258 c closepath %%end path fill %%new path 256 624 M 36 0 l -8 16 -18 32 -26 48 c 0 -2 l -88 0 l 0 -22 l 2 0 l 16 0 40 0 54 -4 c 4 -2 10 -6 14 -10 c 2 -4 6 -8 8 -12 c closepath %%end path fill %%new path 328 624 M -2 2 -2 6 -2 8 c 2 0 l 0 4 0 8 2 10 c 2 0 2 0 4 2 c 12 6 28 6 44 6 c 0 22 l -2 -2 l -108 0 l 8 -16 18 -32 26 -48 c 0 2 l 36 0 l closepath %%end path fill %%new path 584 604 M 14 0 l 12 22 24 46 36 68 c -2 -2 l -84 0 l 0 -22 l 2 0 l 12 0 24 -2 32 -10 c 2 -2 2 -2 4 -4 c 2 -4 4 -8 4 -14 c -2 0 l 0 -6 -2 -12 -6 -18 c closepath %%end path fill %%new path 610 604 M 4 6 10 12 14 18 c 8 6 14 12 24 16 c 16 8 34 12 54 12 c 0 22 l -2 -2 l -68 0 l -12 -22 -24 -46 -36 -68 c 2 2 l 12 0 l closepath %%end path fill %%new path 406 226 M 0 -6 -2 -14 -6 -18 c -2 -2 -4 -2 -6 -4 c -12 -4 -42 -4 -62 -4 c 0 -20 l 108 0 l 0 48 l -2 -2 l -32 0 l closepath %%end path fill %%new path 468 226 M -30 0 l 0 -46 l 106 0 l 0 22 l -2 0 l -20 0 -50 0 -62 4 c -2 2 -4 2 -6 4 c -4 4 -6 12 -6 18 c closepath %%end path fill grestore ) def end % of CharDefs dictionary Encoding 81 /The_letter_Q put Encoding 89 /The_letter_Y put Metrics begin /The_letter_Q 527 fudge add def /The_letter_Y 525 fudge add def /.notdef 400 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -178 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [178 fudge sub 40 704 688] def end /Simon SimonFont definefont pop /Simon findfont 70 scalefont setfont 0 0 moveto (Q Y) show endFig 3285 1376(Figure)N 3514(7)X 2679 1536(There)N 2904(are)X 3040(other)X 3242(problems)X 3577(caused)X 3834(by)X 3952(the)X 4088(erasing)X 2520 1632(paths.)N 2730(Because)X 3019(the)X 3138(erasing)X 3391(paths)X 3581(have)X 3754(segments)X 4073(in)X 4155(com-)X 2520 1728(mon)N 2695(with)X 2870(paths)X 3072(to)X 3168(be)X 3278(\256lled,)X 3496(P)X 8 s 8 xH F 3540(OST)X 10 s 10 xH F 3661(S)X 8 s 8 xH F 3705(CRIPT)X 10 s 10 xH F 3921(must)X 4110(decide)X 2520 1824(whether)N 2805(the)X 2929(common)X 3235(segments)X 3559(are)X 3684(in)X 3772(the)X 3895(clipping)X 4182(path)X 2520 1920(or)N 2611(not.)X 2777(P)X 8 s 8 xH F 2821(OST)X 10 s 10 xH F 2942(S)X 8 s 8 xH F 2986(CRIPT)X 10 s 10 xH F 3192(does)X 3363(not)X 3489(seem)X 3678(to)X 3764(have)X 3940(a)X 4000(consistent)X 2520 2016(policy)N 2754(on)X 2868(that)X 3022(and)X 3172(it)X 3250(seems)X 3479(to)X 3574(be)X 3683(that)X 3836(the)X 3967(decision)X 4267(is)X 2520 2112(taken)N 2714(arbitrarily)X 3055(\(see)X 3205(Figure)X 3434(8\).)X 3260 2208 MXY 320 320 0.00 0.00 40.00 40.00 startFig %! Simon font %%%BoundingBox: 0 0 40 40 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_letter_x ( gsave initclip newpath 0 0 M 0 1000 L 1000 1000 L 1000 0 L 0 0 L %%new path 192 488 M 22 -2 44 -2 66 -2 c 0 2 l 28 0 54 0 82 2 c -2 -2 l -148 0 l closepath %%end path %%erase %%new path 404 180 M 146 0 l -22 2 -44 2 -66 2 c 0 -2 l -82 0 l closepath %%end path %%erase %%new path 410 488 M 24 -2 48 -2 72 -2 c 0 2 l 20 0 38 0 58 2 c -2 -2 l -130 0 l closepath %%end path %%erase %%new path 188 180 M 128 0 l -24 2 -48 2 -72 2 c 0 -2 l -58 0 l closepath %%end path %%erase eoclip newpath %%new path 280 486 M -2 2 -6 4 -8 4 c 0 -2 l -38 0 l -2 0 -2 0 -4 -2 c 0 -2 l 2 0 l 0 -4 l 76 -100 154 -198 230 -298 c 2 -2 6 -2 8 -2 c 38 0 l 2 0 2 0 4 2 c 0 2 l -2 0 l 0 4 l -76 100 -154 198 -230 298 c closepath %%end path fill %%new path 230 180 M 10 0 l 6 0 12 2 16 6 c 0 0 2 2 2 2 c 80 100 160 198 238 298 c 2 0 2 2 2 2 c -2 0 l 0 0 0 0 -2 2 c -2 0 l 0 -2 l -6 0 l -6 0 -12 -2 -16 -6 c 0 0 -2 -2 -2 -2 c -80 -100 -160 -198 -238 -298 c -2 0 -2 -2 -2 -2 c closepath %%end path fill %%new path 264 442 M 24 0 l -10 16 -22 32 -32 48 c 0 -2 l -66 0 l 0 -22 l 2 0 l 16 0 34 0 46 -4 c 6 -2 10 -6 16 -10 c 2 -4 6 -8 10 -12 c closepath %%end path fill %%new path 314 442 M -2 2 -2 6 -2 8 c 2 0 l 0 4 0 6 4 10 c 6 6 14 8 22 8 c 0 22 l -2 -2 l -80 0 l 10 -16 22 -32 32 -48 c 0 2 l 26 0 l closepath %%end path fill %%new path 428 226 M 2 -2 2 -6 2 -8 c -2 0 l 0 -4 0 -6 -4 -10 c -6 -6 -14 -8 -22 -8 c 0 -20 l 82 0 l -10 16 -22 32 -32 48 c 0 -2 l -26 0 l closepath %%end path fill %%new path 478 226 M -24 0 l 10 -16 22 -32 32 -46 c 66 0 l 0 22 l -2 0 l -16 0 -34 0 -46 4 c -6 2 -10 6 -16 10 c -2 4 -6 8 -10 12 c closepath %%end path fill %%new path 422 422 M 12 0 l 16 22 32 46 48 68 c -2 -2 l -72 0 l 0 -22 l 2 0 l 6 0 12 -2 16 -6 c 2 -2 4 -6 4 -10 c 2 -2 2 -4 2 -6 c -2 0 l 0 -8 -4 -18 -10 -24 c closepath %%end path fill %%new path 446 422 M 2 4 6 8 10 12 c 8 8 20 16 32 22 c 16 8 34 12 52 12 c 0 22 l -2 -2 l -58 0 l -16 -22 -32 -46 -48 -68 c 2 2 l 12 0 l closepath %%end path fill %%new path 280 246 M -2 -4 -6 -8 -10 -12 c -8 -8 -20 -16 -32 -22 c -16 -8 -34 -12 -52 -12 c 0 -20 l 60 0 l 16 22 32 46 48 68 c -2 -2 l -12 0 l closepath %%end path fill %%new path 304 246 M -12 0 l -16 -22 -32 -46 -48 -66 c 74 0 l 0 22 l -2 0 l -6 0 -12 2 -16 6 c -2 2 -4 6 -4 10 c -2 2 -2 4 -2 6 c 2 0 l 0 8 4 18 10 24 c closepath %%end path fill %%for fake line newpath 160 180 M 360 0 l 0 .5 l -360 0 l 0 -.5 l closepath fill grestore ) def end % of CharDefs dictionary Encoding 120 /The_letter_x put Metrics begin /The_letter_x 367 fudge add def /.notdef 0 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -186 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [186 fudge sub 180 552 490] def end /Simon SimonFont definefont pop /Simon findfont 40 scalefont setfont 0 0 moveto (x) show endFig 3285 2672(Figure)N 3514(8)X 2520 2832(An)N 2645(attempt)X 2912(to)X 3001(resolve)X 3260(the)X 3385(clipping)X 3674(path)X 3839(problem)X 4133(led)X 4258(to)X 2520 2928(the)N 2653(\256rst)X 2812(author)X 3052(sending)X 3336(the)X 3468(following)X 3813(electronic)X 4164(mes-)X 2520 3024(sage)N 2695(\(obviously,)X 3089(not)X 3223(as)X 3323(nicely)X 3552(formatted)X 3897(as)X 3997(herein\))X 4258(to)X 2520 3120(Glenn)N 2736(Reid)X 2907(of)X 2994(Adobe)X 3228(Systems,)X 3534(Inc.)X 2679 3264(From)N 2872(simon)X 3087(Tue)X 3232(Mar)X 3386(21)X 3486(13:22:32)X 3790(1989)X 2679 3360(To:)N 2810(greid@adobe.com)X 2679 3456(Subject:)N 2961(Problem)X 3252(in)X 3334(PostScript)X 2679 3648(Dear)N 2856(Mr.)X 2994(Reid)X 2679 3840(I)N 2746(have)X 2938(got)X 3080(a)X 3157(problem)X 3465(in)X 3568(understanding)X 4063(the)X 2679 3936(PostScript)N 3040(policy)X 3273(in)X 3368(determining)X 3788(\252what)X 4013(is)X 4099(in)X 2679 4032(the)N 2802(clipping)X 3089(path\272.)X 3328(I)X 3380(think)X 3569(there)X 3755(is)X 3833(a)X 3894(problem)X 2679 4128(in)N 2777(the)X 2911(boundaries.)X 3339(Here)X 3532(is)X 3621(an)X 3733(example)X 4041(that)X 2679 4224(shows)N 2899(that)X 3039(problem:)X 5 f F 2886 4416(gsave)N 2886 4512(initclip)N 2886 4608(newpath)N 2886 4800(0)N 2982(0)X 3078(moveto)X 2886 4896(0)N 2982(1000)X 3222(lineto)X 2886 4992(1000)N 3126(1000)X 3366(lineto)X 2886 5088(1000)N 3126(0)X 3222(lineto)X 2886 5184(0)N 2982(0)X 3078(lineto)X 2886 5376(300)N 3078(100)X 3270(moveto)X 2886 5472(700)N 3078(100)X 3270(lineto)X 2886 5568(700)N 3078(300)X 3270(lineto)X 2886 5664(300)N 3078(300)X 3270(lineto)X 1 f F 2465 6084(10)N %%Page: 10 11 10 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 5 f F 942 672(300)N 1134(100)X 1326(lineto)X 942 864(700)N 1134(900)X 1326(moveto)X 942 960(300)N 1134(900)X 1326(lineto)X 942 1056(300)N 1134(700)X 1326(lineto)X 942 1152(700)N 1134(700)X 1326(lineto)X 942 1248(700)N 1134(900)X 1326(lineto)X 942 1440(eoclip)N 942 1632(newpath)N 942 1728(100)N 1134(100)X 1326(moveto)X 942 1824(900)N 1134(100)X 1326(lineto)X 942 1920(900)N 1134(900)X 1326(lineto)X 942 2016(100)N 1134(900)X 1326(lineto)X 942 2112(100)N 1134(100)X 1326(lineto)X 942 2208(fill)N 942 2304(grestore)N 1 f F 735 2496(As)N 850(you)X 996(see,)X 1145(the)X 1269(problem)X 1562(is)X 1642(that)X 1789(on)X 1896(top)X 2025(of)X 2119(the)X 735 2592(shape,)N 977(the)X 1114(line)X 1273(which)X 1508(belongs)X 1796(to)X 1897(the)X 2034(upper)X 735 2688(\252hole\272)N 971(in)X 1059(the)X 1183(clipping)X 1471(path)X 1635(and)X 1777(to)X 1865(the)X 1989(current)X 735 2784(path)N 894(\()X 942(to)X 1025(be)X 1122(\256lled)X 1307(\))X 1354(is)X 1427(drawn,)X 1668(and)X 1804(on)X 1904(bottom)X 2150(of)X 735 2880(the)N 853(shape)X 1056(it)X 1120(is)X 1193(not.)X 735 3072(This)N 913(is)X 1003(happening)X 1374(both)X 1553(on)X 1670(the)X 1805(Apple)X 2038(Laser)X 735 3168(printer)N 969(and)X 1105(on)X 1205(the)X 1323(QMS-80.)X 735 3360(I)N 782(would)X 1002(be)X 1098(glad)X 1256(to)X 1338(have)X 1510(a)X 1566(reply)X 1751(from)X 1927(you.)X 735 3552(Thanks)N 991(in)X 1073(advance)X 735 3648(Shimon)N 1003(Yanai)X 735 3744(C.S)N 872(Dep.)X 735 3840(Technion)N 576 3984(What)N 783(Mr.)X 934(Reid)X 1118(saw)X 1276(when)X 1483(he)X 1592(printed)X 1853(the)X 1985(P)X 8 s 8 xH F 2029(OST)X 10 s 10 xH F 2150(S)X 8 s 8 xH F 2194(CRIPT)X 10 s 10 xH F 576 4080(commands)N 957(contained)X 1302(in)X 1397(the)X 1528(message)X 1833(is)X 1919(reproduced)X 2314(in)X 576 4176(Figure)N 805(9.)X 1316 4272 MXY 320 416 0.00 0.00 40.00 52.00 startFig %! Simon font %%%BoundingBox: 0 0 40 52 %%%Was: 0 0 40 40 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_square ( gsave initclip newpath 0 0 moveto 0 1000 lineto 1000 1000 lineto 1000 0 lineto 0 0 lineto 300 100 moveto 700 100 lineto 700 300 lineto 300 300 lineto 300 100 lineto 700 900 moveto 300 900 lineto 300 700 lineto 700 700 lineto 700 900 lineto eoclip newpath 100 100 moveto 900 100 lineto 900 900 lineto 100 900 lineto 100 100 lineto fill grestore ) def end % of CharDefs dictionary Encoding 120 /The_square put Metrics begin /The_square 1000 fudge add def /.notdef 0 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -186 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [186 fudge sub 180 552 490] def end /Simon SimonFont definefont pop /Simon findfont 40 scalefont setfont 0 0 moveto (x) show endFig 1341 4832(Figure)N 1570(9)X 576 4992(Mr.)N 714(Reid)X 885(replied)X 1128(with)X 1290(the)X 1408(following:)X 735 5136(From:)N 950(greid@adobe.com)X 1559(\(Glenn)X 1802(Reid\))X 735 5232(To:)N 866(Shimon)X 1134(Yanai)X 1346()X 735 5328(Cc:)N 866(greid@adobe.com)X 735 5424(Subject:)N 1017(Re:)X 1148(Problem)X 1439(in)X 1521(PostScript)X 735 5520(In-Reply-To:)N 1178(Your)X 1363(message)X 1655(of)X 1742(Wed,)X 1934(22)X 2034(Mar)X 2188(89)X 2288(...)X 735 5616(Date:)N 929(Wed,)X 1121(22)X 1221(Mar)X 1375(89)X 1475(11:41:35)X 1779(PST)X 2679 672(The)N 2838(problem)X 3139(is)X 3226(that)X 3380(the)X 3512(path)X 3684(you)X 3838(are)X 3971(\256lling)X 2679 768(falls)N 2842(exactly)X 3099(on)X 3204(the)X 3327(edge)X 3504(of)X 3595(the)X 3717(clipping)X 4003(path.)X 2679 864(This)N 2856(produces)X 3181(a)X 3252(zero-width)X 3635(area)X 3805(to)X 3902(\256ll,)X 4045(and)X 2679 960(unfortunately)N 3158(it)X 3249(sometimes)X 3638(\256lls)X 3803(and)X 3965(some-)X 2679 1056(times)N 2876(does)X 3047(not)X 3174(with)X 3341(the)X 3464(current)X 3717(\256ll)X 3830(algorithm.)X 2679 1152(I)N 2737(believe)X 3000(that)X 3151(it)X 3226(is)X 3310(related)X 3559(to)X 3651(the)X 3779(direction)X 4094(of)X 2679 1248(the)N 2809(paths;)X 3033(if)X 3115(the)X 3246(paths)X 3448(are)X 3580(going)X 3795(in)X 3890(opposite)X 2679 1344(directions)N 3019(along)X 3221(the)X 3343(same)X 3531(line,)X 3694(it)X 3761(will)X 3908(\256ll)X 4019(with)X 2679 1440(a)N 2743(one-pixel)X 3074(area,)X 3257(but)X 3388(if)X 3466(they)X 3633(are)X 3761(going)X 3972(in)X 4063(the)X 2679 1536(same)N 2874(direction,)X 3209(it)X 3283(will)X 3437(not)X 3569(\256ll.)X 3727(I)X 3784(believe)X 4046(this)X 2679 1632(has)N 2840(been)X 3046(\256xed)X 3260(to)X 3376(be)X 3506(more)X 3725(consistent)X 4099(in)X 2679 1728(Display)N 2948(PostScript,)X 3316(for)X 3430(what)X 3606(it's)X 3728(worth.)X 2679 1920(Glenn)N 2895(Reid)X 2679 2016(Adobe)N 2913(Systems)X 2679 2160(The)N 2845(idea)X 3020(of)X 3128(using)X 3342(opposite)X 3654(directions)X 4011(had)X 4168(been)X 2520 2256(checked)N 2805(before)X 3032(sending)X 3302(the)X 3421(letter,)X 3626(so)X 3717(the)X 3835(problem)X 4122(had)X 4258(to)X 2520 2352(be)N 2627(solved)X 2867(within)X 3102(the)X 3231(back)X 3414(end)X 3561(of)X 9 f F 3662(mf2ps)X 1 f F 3879(.)X 3931(The)X 4088(erasing)X 2520 2448(paths)N 2719(near)X 2888(the)X 3016(top)X 3147(of)X 3243(the)X 3370(letter)X 3564(had)X 3709(their)X 2 f F 3885(y)X 1 f F 3950(coordinates)X 2520 2544(increased)N 2850(by)X 2956(0.8)X 3082(points,)X 3323(and)X 3465(those)X 3660(near)X 3826(the)X 3951(bottom)X 4204(had)X 2520 2640(their)N 2 f F 2690(y)X 1 f F 2749(coordinates)X 3142(decreased)X 3483(by)X 3586(the)X 3707(same)X 3895(amount.)X 4178(This)X 2520 2736(shift)N 2701(is)X 2793(invisible)X 3108(to)X 3210(the)X 3348(human)X 3606(eye)X 3758(because)X 4053(the)X 4191(font)X 2520 2832(de\256nitions)N 2884(are)X 3010(in)X 3099(terms)X 3304(of)X 3397(hundreds)X 3717(of)X 3810(points)X 4031(\(see)X 4187(Fig-)X 2520 2928(ure)N 2649(10\).)X 2802(This)X 2970(solution)X 3253(was)X 3404(designed)X 3715(to)X 3804(work)X 3996(with)X 4165(most)X 2520 3024(existing)N 0 f F 2794(METAFONT)X 1 f F 3155(fonts.)X 3355(It)X 3424(is)X 3497(possible)X 3779(that)X 3919(there)X 4100(will)X 4244(be)X 2520 3120(fonts)N 2700(that)X 2840(are)X 2959(not)X 3081(treated)X 3320(well)X 3478(by)X 3578(this)X 3713(solution.)X 3260 3216 MXY 320 320 0.00 0.00 40.00 40.00 startFig %! Simon font %%%BoundingBox: 0 0 40 40 %%0 serverdict begin exitserver /TBuildCharDict 10 dict def /SimonFont 10 dict def /fudge 110 def SimonFont begin %%% /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for %% Character definitions /Metrics 130 dict def /CharDefs 130 dict def CharDefs begin /.notdef () def /The_letter_x ( gsave initclip newpath 0 0 M 0 1000 L 1000 1000 L 1000 0 L 0 0 L %%new path 192 488 0.8 add M 22 -2 0.8 add 44 -2 0.8 add 66 -2 0.8 add c 0 2 0.8 add l 28 0 0.8 add 54 0 0.8 add 82 2 0.8 add c -2 -2 0.8 add l -148 0 l closepath %%end path %%erase %%new path 404 180 0.8 sub M 146 0 0.8 sub l -22 2 0.8 sub -44 2 0.8 sub -66 2 0.8 sub c 0 -2 0.8 sub l -82 0 l closepath %%end path %%erase %%new path 410 488 0.8 add M 24 -2 0.8 add 48 -2 0.8 add 72 -2 0.8 add c 0 2 0.8 add l 20 0 0.8 add 38 0 0.8 add 58 2 0.8 add c -2 -2 0.8 add l -130 0 l closepath %%end path %%erase %%new path 188 180 0.8 sub M 128 0 0.8 sub l -24 2 0.8 sub -48 2 0.8 sub -72 2 0.8 sub c 0 -2 0.8 sub l -58 0 l closepath %%end path %%erase eoclip newpath %%new path 280 486 M -2 2 -6 4 -8 4 c 0 -2 l -38 0 l -2 0 -2 0 -4 -2 c 0 -2 l 2 0 l 0 -4 l 76 -100 154 -198 230 -298 c 2 -2 6 -2 8 -2 c 38 0 l 2 0 2 0 4 2 c 0 2 l -2 0 l 0 4 l -76 100 -154 198 -230 298 c closepath %%end path fill %%new path 230 180 M 10 0 l 6 0 12 2 16 6 c 0 0 2 2 2 2 c 80 100 160 198 238 298 c 2 0 2 2 2 2 c -2 0 l 0 0 0 0 -2 2 c -2 0 l 0 -2 l -6 0 l -6 0 -12 -2 -16 -6 c 0 0 -2 -2 -2 -2 c -80 -100 -160 -198 -238 -298 c -2 0 -2 -2 -2 -2 c closepath %%end path fill %%new path 264 442 M 24 0 l -10 16 -22 32 -32 48 c 0 -2 l -66 0 l 0 -22 l 2 0 l 16 0 34 0 46 -4 c 6 -2 10 -6 16 -10 c 2 -4 6 -8 10 -12 c closepath %%end path fill %%new path 314 442 M -2 2 -2 6 -2 8 c 2 0 l 0 4 0 6 4 10 c 6 6 14 8 22 8 c 0 22 l -2 -2 l -80 0 l 10 -16 22 -32 32 -48 c 0 2 l 26 0 l closepath %%end path fill %%new path 428 226 M 2 -2 2 -6 2 -8 c -2 0 l 0 -4 0 -6 -4 -10 c -6 -6 -14 -8 -22 -8 c 0 -20 l 82 0 l -10 16 -22 32 -32 48 c 0 -2 l -26 0 l closepath %%end path fill %%new path 478 226 M -24 0 l 10 -16 22 -32 32 -46 c 66 0 l 0 22 l -2 0 l -16 0 -34 0 -46 4 c -6 2 -10 6 -16 10 c -2 4 -6 8 -10 12 c closepath %%end path fill %%new path 422 422 M 12 0 l 16 22 32 46 48 68 c -2 -2 l -72 0 l 0 -22 l 2 0 l 6 0 12 -2 16 -6 c 2 -2 4 -6 4 -10 c 2 -2 2 -4 2 -6 c -2 0 l 0 -8 -4 -18 -10 -24 c closepath %%end path fill %%new path 446 422 M 2 4 6 8 10 12 c 8 8 20 16 32 22 c 16 8 34 12 52 12 c 0 22 l -2 -2 l -58 0 l -16 -22 -32 -46 -48 -68 c 2 2 l 12 0 l closepath %%end path fill %%new path 280 246 M -2 -4 -6 -8 -10 -12 c -8 -8 -20 -16 -32 -22 c -16 -8 -34 -12 -52 -12 c 0 -20 l 60 0 l 16 22 32 46 48 68 c -2 -2 l -12 0 l closepath %%end path fill %%new path 304 246 M -12 0 l -16 -22 -32 -46 -48 -66 c 74 0 l 0 22 l -2 0 l -6 0 -12 2 -16 6 c -2 2 -4 6 -4 10 c -2 2 -2 4 -2 6 c 2 0 l 0 8 4 18 10 24 c closepath %%end path fill grestore ) def end % of CharDefs dictionary Encoding 120 /The_letter_x put Metrics begin /The_letter_x 367 fudge add def /.notdef 0 def end /BuildChar { TBuildCharDict begin %% /char exch def /fontdict exch def /M {moveto} def /L {lineto} def /l {rlineto} def /C {curveto} def /c {rcurveto} def /charname fontdict /Encoding get char get def %% /charproc fontdict /CharDefs get charname get def /charwdth fontdict /Metrics get charname get def %% gsave 1.3 1.3 scale 0.2 setflat 0.2 setlinewidth charwdth 0 0 -180 charwdth 1000 setcachedevice -186 fudge add 0 translate charproc cvx exec grestore end } def /FontBBox [186 fudge sub 180 552 490] def end /Simon SimonFont definefont pop /Simon findfont 40 scalefont setfont 0 0 moveto (x) show endFig 3265 3680(Figure)N 3494(10)X 3 f F 2520 3936(4.6)N 2680(Optimization.)X 1 f F 3210(Optimization)X 3669(is)X 3759(done)X 3952(in)X 4051(order)X 4258(to)X 2520 4032(make)N 2728(the)X 2860(description)X 3250(of)X 3351(the)X 3483(fonts)X 3677(shorter)X 3933(and)X 4082(to)X 4177(save)X 2520 4128(work)N 2724(in)X 2825(the)X 2962(P)X 8 s 8 xH F 3006(OST)X 10 s 10 xH F 3127(S)X 8 s 8 xH F 3171(CRIPT)X 10 s 10 xH F 3392(interpreter.)X 3787(This)X 3969(is)X 4062(done)X 4258(in)X 2520 4224(three)N 2701(ways:)X 2583 4368(1.)N 2679(not)X 2817(printing)X 3106(lines)X 3293(with)X 3471(length)X 3707(zero.)X 3903(As)X 4029(was)X 4191(said)X 2679 4464(earlier,)N 2929(the)X 0 f F 3051(METAFONT)X 1 f F 3416(program)X 3712(prints)X 3918(lines)X 4092(to)X 4177(con-)X 2679 4560(nect)N 2834(o)X (ff)138 606 oc 2922(set)X 3032(points.)X 3268(There)X 3478(are)X 3599(times)X 3794(that)X 3936(after)X 4106(round-)X 2679 4656(ing)N 2818(or)X 2922(truncating)X 3284(the)X 3418(output)X 3658(data,)X 3848(the)X 3982(start)X 4156(point)X 2679 4752(and)N 2815(the)X 2933(end)X 3069(point)X 3253(are)X 3372(equal.)X 3586(In)X 3673(such)X 3840(cases,)X 4050(the)X 4169(lines)X 2679 4848(are)N 2798(eliminated.)X 2583 4992(2.)N 2679(checking)X 2999(if)X 3078(the)X 3206(Be)X 3264(\302zier)X 3447(curve)X 3656(acts)X 3811(as)X 3909(a)X 3976(line.)X 4147(From)X 2679 5088(the)N 2803(de\256nition)X 3135(of)X 3227(the)X 3350(Be)X 3408(\302zier)X 3586(curve,)X 3810(it)X 3879(is)X 3957(known)X 4200(that)X 2679 5184(if)N 2759(the)X 2888(two)X 3039(control)X 3297(points)X 3523(lie)X 3634(on)X 3745(the)X 3874(line)X 4025(that)X 4177(con-)X 2679 5280(nects)N 2868(the)X 2990(start)X 3151(point)X 3338(and)X 3477(the)X 3598(end)X 3737(point,)X 3944(the)X 4065(curve)X 4267(is)X 2679 5376(of)N 2781(degree)X 3031(one.)X 3202(In)X 3304(such)X 3486(cases)X 9 f F 3693(mf2ps)X 1 f F 3945(generates)X 4284(a)X 2679 5472(command)N 3019(to)X 3105(print)X 3280(a)X 3340(line)X 3484(from)X 3664(the)X 3786(start)X 3948(point)X 4136(to)X 4222(the)X 2679 5568(end)N 2825(point,)X 3039(thus)X 3202(saving)X 3442(space)X 3652(and)X 3799(avoiding)X 4110(redun-)X 2679 5664(dant)N 2837(calculations)X 3240(for)X 3354(the)X 3472(P)X 8 s 8 xH F 3516(OST)X 10 s 10 xH F 3637(S)X 8 s 8 xH F 3681(CRIPT)X 10 s 10 xH F 3883(interpreter.)X 2445 6084(11)N %%Page: 11 12 11 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 639 672(3.)N 735(checking)X 1056(if)X 1136(a)X 1203(series)X 1417(of)X 1515(consecutive)X 1926(line)X 2078(segments)X 735 768(are)N 865(in)X 958(the)X 1087(same)X 1283(line.)X 1474(This)X 1647(is)X 1730(done)X 1916(by)X 2026(storing)X 2278(the)X 735 864(segments)N 1060(in)X 1149(a)X 1212(bu)X (ff)138 606 oc 1340(er)X 1430(and)X 1573(checking)X 1891(whether)X 2178(a)X 2242(new)X 735 960(segment)N 1022(is)X 1095(collinear)X 1396(with)X 1558(the)X 1676(last)X 1807(stored.)X 3 f F 576 1152(4.7)N 736(Changed)X 1071(or)X 1176(added)X 1413(routines.)X 1 f F 1762(The)X 1916(following)X 2257(is)X 2340(a)X 576 1248(list)N 701(of)X 796(routines)X 1082(that)X 1230(were)X 1415(changed)X 1711(or)X 1806(added)X 2026(in)X 2116(order)X 2314(to)X 576 1344(build)N 9 f F 762(mf2ps)X 1 f F 999(from)X 0 f F 1175(METAFONT)X 1 f F 1516(.)X 2 f F 672 1488(printchar)N 1 f F 994(was)X 1139(modi\256ed)X 1443(to)X 1525(get)X 1643(character)X 1959(names.)X 2 f F 672 1632(\256xdateandtime)N 1 f F 1182(was)X 1345(modi\256ed)X 1667(to)X 1767(initialize)X 2086(variables)X 672 1728(that)N 812(were)X 989(used)X 1156(as)X 1243(\257ags)X 1414(in)X 1496(the)X 1614(macros.)X 2 f F 672 1872(\256llspec)N 1 f F 919(was)X 1064(modi\256ed)X 1368(to)X 1450(send)X 1617(out)X 1739(data)X 1893(on)X 1993(splines.)X 2 f F 672 2016(skewlineedges)N 1 f F 1151(was)X 1296(modi\256ed)X 1600(to)X 1682(send)X 1849(out)X 1971(o)X (ff)138 606 oc 2059(set)X 2168(lines.)X 2 f F 672 2160(dualmoves)N 1 f F 1035(was)X 1180(modi\256ed)X 1484(to)X 1566(send)X 1733(out)X 1855(o)X (ff)138 606 oc 1943(set)X 2052(lines.)X 2 f F 672 2304(\256llenvelope)N 1 f F 1099(was)X 1281(modi\256ed)X 1622(to)X 1741(send)X 1945(out)X 2104(data)X 2296(on)X 672 2400(splines.)N 2 f F 672 2544(dostatement)N 1 f F 1083(was)X 1232(modi\256ed)X 1540(to)X 1626(identify)X 1899(tokens)X 2132(that)X 2277(are)X 672 2640(strings.)N 2 f F 672 2784(main)N 1 f F 864(was)X 1021(modi\256ed)X 1337(to)X 1431(call)X 1579(the)X 9 f F 1711(mf2ps)X 1 f F 1960(procedure)X 2314(in)X 672 2880(the)N 790(beginning)X 1130(and)X 1266(ending)X 1504(of)X 1591(the)X 1709(program.)X 2 f F 672 3024(sendcurve)N 1 f F 1020(was)X 1167(added)X 1381(to)X 1465(unskew)X 1733(spline)X 1947(values)X 2175(and)X 2314(to)X 672 3120(send)N 839(them)X 1019(to)X 1101(the)X 1219(next)X 1377(process.)X 2 f F 672 3264(sendline)N 1 f F 977(was)X 1140(added)X 1371(to)X 1472(unskew)X 1756(line)X 1915(values)X 2159(and)X 2314(to)X 672 3360(send)N 839(them)X 1019(to)X 1101(the)X 1219(next)X 1377(process.)X 2 f F 672 3504(ok)N 1 f F 768(was)X 913(added)X 1125(to)X 1207(check)X 1415(if)X 1484(two)X 1624(lines)X 1795(are)X 1914(collinear.)X 2 f F 672 3648(restore)N 1 f F 931(was)X 1089(added)X 1314(to)X 1409(restore)X 1661(the)X 1792(parameters)X 2178(of)X 2278(the)X 672 3744(last)N 803(line.)X 2 f F 672 3888(recall)N 1 f F 879(was)X 1024(added)X 1236(to)X 1318(recall)X 1517(values)X 1742(from)X 1918(the)X 2036(bu)X (ff)138 606 oc 2164(er.)X 2 f F 672 4032(us)N 1 f F 767(was)X 916(added)X 1132(to)X 1219(convert)X 1485(the)X 0 f F 1608(METAFONT)X 1 f F 1974(scale)X 2160(so)X 2256(that)X 672 4128(a)N 744(letter)X 945(would)X 1181(\256t)X 1283(the)X 1416(Adobe)X 1665(standard)X 1972(1000)X 47 f F 2152(\264)X 1 f F 2216(1000)X 672 4224(bounding)N 994(box.)X 2 f F 672 4368(send_p_s)N 1 f F 999(was)X 1153(added)X 1375(to)X 1467(create)X 1690(a)X 1756(P)X 8 s 8 xH F 1800(OST)X 10 s 10 xH F 1921(S)X 8 s 8 xH F 1965(CRIPT)X 10 s 10 xH F 2177(\256le)X 2309(of)X 672 4464(lines)N 843(and)X 979(curves.)X 2 f F 672 4608(makemoves)N 1 f F 1063(was)X 1208(modi\256ed)X 1512(to)X 1594(send)X 1761(out)X 1883(spline)X 2094(data.)X 2 f F 672 4752(dump)N 1 f F 872(was)X 1019(added)X 1233(to)X 1318(append)X 1573(information)X 1974(from)X 2153(the)X 2274(\256le)X 672 4848(named)N 5 f F 906(f)X 1 f F 974(to)X 1056(the)X 1174(\256le)X 1296(named)X 5 f F 1530(g)X 1 f F (.)S 2 f F 672 4992(checkerase)N 1 f F 1061(was)X 1218(added)X 1442(to)X 1536(identify)X 1817(the)X 1947(\256le)X 2081(that)X 2233(con-)X 672 5088(tains)N 861(\252erase\272)X 1137(commands,)X 1541(and)X 1694(their)X 1878(position)X 2172(within)X 672 5184(the)N 790(\256le.)X 2 f F 672 5328(doarrange)N 1 f F 1051(was)X 1217(added)X 1450(to)X 1553(put)X 1696(erasing)X 1969(paths)X 2179(at)X 2278(the)X 672 5424(beginning)N 1012(of)X 1099(the)X 1217(\256le.)X 2 f F 672 5568(print_start)N 1 f F 1047(was)X 1206(added)X 1432(to)X 1528(signal)X 1753(the)X 1885(beginning)X 2239(of)X 2340(a)X 672 5664(new)N 826(cyclic)X 1038(path)X 1196(to)X 1278(be)X 1374(processed.)X 2 f F 2616 672(print_end)N 1 f F 2951(was)X 3100(added)X 3316(to)X 3402(signal)X 3617(the)X 3739(end)X 3879(of)X 3970(the)X 4092(current)X 2616 768(cyclic)N 2828(path.)X 2 f F 2616 912(init_ps)N 1 f F 2853(was)X 2998(added)X 3210(to)X 3292(make)X 3486(initializations.)X 2 f F 2616 1056(makenewdef)N 1 f F 3037(was)X 3186(added)X 3402(to)X 3488(make)X 3686(initializations)X 4146(when)X 2616 1152(more)N 2801(than)X 2959(one)X 3095(character)X 3411(occurs)X 3641(in)X 3723(the)X 3841(input.)X 2 f F 2616 1296(closeolddef)N 1 f F 3001(was)X 3146(added)X 3358(to)X 3440(close)X 3625(the)X 3743(last)X 3874(de\256nition.)X 2 f F 2616 1440(tini_ps)N 1 f F 2864(was)X 3020(added)X 3243(to)X 3336(handle)X 3581(the)X 3710(ending)X 3959(of)X 4057(the)X 4186(pro-)X 2616 1536(cess.)N 2 f F 2616 1680(auxprintchar)N 1 f F 3054(was)X 3199(added)X 3411(to)X 3493(print)X 3664(characters.)X 2 f F 2616 1824(auxprint)N 1 f F 2907(was)X 3052(added)X 3264(to)X 3346(print)X 3517(strings.)X 3 f F 2520 2016(5)N 2620(Operation)X 2991(of)X 9 f F 3080(mf2ps)X 3 f F 3317(in)X 3403(a)X 9 f F 3465(U)X 8 s 8 xH F 3523(NIX)X 10 s 10 xH 3 f F 3650(environment)X 1 f F 2520 2160(When)N 2758(invoked,)X 9 f F 3084(mf2ps)X 1 f F 3347(\256rst)X 3518(asks)X 3703(for)X 3844(an)X 3967(output)X 4218(\256le)X 2520 2256(name.)N 2746(For)X 2888(the)X 3017(example)X 3320(this)X 3466(\256le)X 3599(is)X 3683(called)X 5 f F 3906(ex1)X 1 f F (.)S 9 f F 4103(mf2ps)X 1 f F 2520 2352(then)N 2678(asks,)X 5 f F 2679 2544(\252Are)N 2919(you)X 3111(creating)X 3543(the)X 3735(whole)X 4023(dic-)X 2679 2640(tionary)N 3063(\(y/n\)?\272.)X 1 f F 2520 2832(If)N 2600(the)X 2724(answer)X 2978(is)X 3057(other)X 3248(than)X 3413(\252)X 5 f F 3449(y)X 1 f F (\272)S 3560(or)X 3654(\252)X 5 f F 3690(Y)X 1 f F (\272,)S 3821(it)X 3892(is)X 3972(considered)X 2520 2928(\252)N 5 f F 2556(no)X 1 f F (\272.)S 2735(If)X 2816(the)X 2941(answer)X 3196(is)X 3276(\252)X 5 f F 3312(y)X 1 f F (\272)S 3423(or)X 3517(\252)X 5 f F 3553(Y)X 1 f F (\272,)S 3684(then)X 3849(the)X 3973(whole)X 4195(dic-)X 2520 3024(tionary)N 2787(is)X 2880(created.)X 3173(This)X 3355(means)X 3600(that)X 9 f F 3762(mf2ps)X 1 f F 4019(creates)X 4284(a)X 2520 3120(P)N 8 s 8 xH F 2564(OST)X 10 s 10 xH F 2685(S)X 8 s 8 xH F 2729(CRIPT)X 10 s 10 xH F 2942(dictionary)X 3297(that)X 3447(includes)X 3744(entries)X 3988(for)X 4112(all)X 4222(the)X 2520 3216(characters)N 2878(that)X 3029(are)X 3159(in)X 3252(the)X 3381(input,)X 3597(e.g.,)X 5 f F 3765(cmr10)X 1 f F 4037(set.)X 4178(This)X 2520 3312(dictionary)N 2873(needs)X 3083(additional)X 3430(de\256nitions)X 3794(such)X 3968(as)X 2 f F 4062(left)X 4191(side)X 2520 3408(bearing,)N 2827(width,)X 3063(bounding)X 3404(box)X 1 f F 3520(,)X 3579(etc.)X 3752(These)X 3983(de\256nitions)X 2520 3504(need)N 2693(information)X 3092(on)X 3193(character)X 3510(features)X 3786(that)X 3927(must)X 4103(be)X 4199(cal-)X 2520 3600(culated)N 2781(within)X 3014(the)X 3141(program.)X 3462(Otherwise,)X 3841(the)X 3969(whole)X 4195(dic-)X 2520 3696(tionary)N 2777(is)X 2860(not)X 2991(created)X 3253(and)X 3398(the)X 3525(program)X 3826(treats)X 4029(the)X 4156(input)X 2520 3792(as)N 2618(a)X 2685(single)X 2907(character)X 3234(de\256nition)X 3571(that)X 3722(is)X 3806(to)X 3900(be)X 4008(translated)X 2520 3888(into)N 2693(a)X 2778(P)X 8 s 8 xH F 2822(OST)X 10 s 10 xH F 2943(S)X 8 s 8 xH F 2987(CRIPT)X 10 s 10 xH F 3218(outline)X 3489(de\256nition.)X 3883(After)X 9 f F 4103(mf2ps)X 1 f F 2520 3984(prompts)N 2815(\252)X 5 f F 2851(**)X 1 f F (\272,)S 3036(we)X 3163(are)X 3295(in)X 3390(the)X 0 f F 3521(METAFONT)X 1 f F 3895(environment.)X 2520 4080(Now)N 2696(the)X 2814(user)X 2968(inputs)X 9 s 9 xH 5 f F 2679 4272(\\mode=hires;\\nodisplays;\\input)N 4012(cmr10;)X 47 f F 4270(\277)X 10 s 10 xH 1 f F 2520 4464(After)N 9 f F 2735(mf2ps)X 1 f F 2995(has)X 3146(\256nished,)X 3463(the)X 3605(resulting)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2520 4560(font)N 2685(dictionary)X 3046(can)X 3194(be)X 3306(used)X 3489(to)X 3587(print)X 3774(text.)X 3950(In)X 4053(order)X 4258(to)X 2520 4656(print)N 2712(text,)X 2894(the)X 3034(font)X 3205(dictionary)X 3572(should)X 3827(be)X 3945(installed)X 4258(in)X 2520 4752(some)N 2716(formatter's)X 3100(font)X 3256(source)X 3493(directory,)X 3830(and)X 3973(then)X 4138(it)X 4208(can)X 2520 4848(be)N 2623(loaded)X 2864(through)X 3140(the)X 3265(formatter's)X 3649(commands.)X 4043(The)X 4195(dic-)X 2520 4944(tionary)N 2776(followed)X 3090(by)X 3199(appropriate)X 9 f F 3596(show)X 1 f F 3811(and)X 9 f F 3958(showpage)X 1 f F 2520 5040(commands)N 2887(can)X 3019(also)X 3168(be)X 3264(sent)X 3413(directly)X 3678(to)X 3760(the)X 3878(printer.)X 3 f F 2520 5232(6)N 2620(Evaluation)X 3012(of)X 3099(results)X 1 f F 2520 5376(This)N 2696(section)X 2957(evaluates)X 3290(the)X 9 f F 3424(mf2ps)X 1 f F 3675(program)X 3982(relative)X 4258(to)X 2520 5472(goals)N 2716(established)X 3099(in)X 3187(section)X 3440(3.2.)X 3586(The)X 3737(program)X 4035(was)X 4186(pro-)X 2520 5568(duced)N 2745(as)X 2845(a)X 2914(variation)X 3232(of)X 0 f F 3332(METAFONT)X 1 f F 3706(and)X 3855(it)X 3933(accepts)X 4204(any)X 0 f F 2520 5664(METAFONT)N 1 f F 2893(font)X 3054(de\256nition)X 3392(and)X 3540(produces)X 3862(a)X 3929(P)X 8 s 8 xH F 3973(OST)X 10 s 10 xH F 4094(S)X 8 s 8 xH F 4138(CRIPT)X 10 s 10 xH F 2445 6084(12)N %%Page: 12 13 12 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 576 672(outline)N 822(font)X 975(scaleable)X 1294(up)X 1398(to)X 1484(magni\256cation)X 1948(8,)X 2033(or)X 2125(to)X 2212(point)X 576 768(size)N 725(80)X 829(if)X 902(you)X 1046(are)X 1169(not)X 1295(a)X 1355(purist.)X 1581(Thus)X 1765(goals)X 1958(6)X 2022(and)X 2161(1)X 2224(have)X 576 864(been)N 756(entirely)X 1029(met)X 1177(and)X 1321(goal)X 1487(2)X 1555(is)X 1637(partially)X 1933(met.)X 2102(To)X 2220(meet)X 576 960(goal)N 753(2)X 832(fully)X 1022(the)X 1159(program)X 1469(must)X 1662(be)X 1776(modi\256ed)X 2098(to)X 2198(allow)X 576 1056(large)N 782(enough)X 1063(arrays)X 1305(to)X 1412(handle)X 1671(magni\256cations)X 2188(up)X 2314(to)X 576 1152(7200;)N 778(this)X 913(is)X 986(left)X 1113(to)X 1195(future)X 1407(work.)X 735 1248(It)N 810(remains)X 1090(to)X 1178(evaluate)X 1472(the)X 1596(appearance)X 1985(and)X 2127(sizes)X 2309(of)X 576 1344(the)N 695(outline)X 938(fonts)X 1119(relative)X 1381(to)X 1464(the)X 1583(bitmapped)X 1942(fonts)X 2122(to)X 2204(see)X 2327(if)X 576 1440(goals)N 765(3,)X 845(4,)X 925(and)X 1061(5)X 1121(have)X 1293(been)X 1465(met.)X 3 f F 576 1632(6.1)N 736(Appearance.)X 1 f F 1229(In)X 1335(order)X 1544(to)X 1645(compare)X 1962(appearances,)X 576 1728(the)N 705(outline)X 958(font)X 1118(\(Subsub\256gure)X 1598(P\))X 1700(and)X 1847(and)X 1994(the)X 2123(300)X 2274(dpi)X 576 1824(bitmapped)N 950(font)X 1115(\(Subsub\256gure)X 1600(M\))X 1735(generated)X 2085(from)X 2278(the)X 576 1920(same)N 0 f F 763(METAFONT)X 1 f F 1126(de\256nition)X 1454(are)X 1575(used)X 1744(to)X 1827(print)X 1999(similar)X 2242(sen-)X 576 2016(tences)N 844(at)X 970(one,)X 1174(two,)X 1382(or)X 1517(three)X 1746(di)X 1808 MX (ff)138 606 oc 1856(erent)X 2085(sizes)X 2309(or)X 576 2112(magni\256cations)N 1070(on)X 1173(three)X 1356(devices)X 1619(of)X 1708(di)X 1770 MX (ff)138 606 oc 1818(ering)X 2005(resolutions.)X 576 2208(The)N 738(sentences)X 1083(are)X 1219(printed)X 1483(in)X 1582(the)X 5 f F 1718(cmr)X 1 f F 1900(\(Sub\256gure)X 2276(R\),)X 5 f F 576 2304(cmtt)N 1 f F 845(\(Sub\256gure)X 1259(T\),)X 1431(and)X 5 f F 1623(lasy)X 1 f F 1891(\(Sub\256gure)X 2305(S\))X 576 2400(typefaces.)N 967(The)X 1139(bitmapped)X 1525(fonts)X 1733(may)X 1919(be)X 2043(printed)X 2318(at)X 576 2496(design)N 814(sizes)X 999(7,)X 1088(8,)X 1177(10,)X 1306(or)X 1402(12,)X 1530(and)X 1674(the)X 1800(outline)X 2050(fonts)X 2238(may)X 576 2592(be)N 678(printed)X 931(at)X 1015(magni\256cations)X 1512(.7,)X 1618(.8,)X 1724(1.0,)X 1870(or)X 1963(1.2.)X 2130(Finally,)X 576 2688(the)N 700(three)X 887(devices)X 1153(are)X 1277(the)X 1400(300)X 1545(dpi)X 1672(LaserWriterII)X 2140(\(Figure)X 576 2784(11-LW300\),)N 1001(the)X 1125(600)X 1271(dpi)X 1399(Varityper)X 1733(\(Figure)X 1995(11-VT600\),)X 576 2880(and)N 724(the)X 853(1270)X 1044(dpi)X 1177(Linotronic)X 1546(300)X 1697(\(Figure)X 1964(11-LT1270\).)X 576 2976(The)N 731(bitmapped)X 1099(font)X 1258(examples)X 1591(are)X 1720(formatted)X 2063(with)X 2236(T)X 2277 2992(E)N 2318 2976(X)N 576 3072(while)N 784(the)X 912(outline)X 1164(font)X 1323(examples)X 1656(are)X 1785(hand-coded)X 2190(P)X 8 s 8 xH F 2234(OST-)X 10 s 10 xH F 576 3168(S)N 8 s 8 xH F 620(CRIPT)X 10 s 10 xH F 832(\256les)X 995(sent)X 1154(directly)X 1430(to)X 1523(the)X 1652(printer.)X 1917(Since)X 2126(the)X 2255(for-)X 576 3264(matter)N 802(with)X 965(which)X 1182(this)X 1318(paper)X 1518(is)X 1592(printed)X 1840(can)X 1972(use)X 2099(arbitrary)X 576 3360(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 1010(fonts,)X 1233(half)X 1402(of)X 1513(the)X 1655(examples)X 2002(could)X 2224(have)X 576 3456(been)N 751(done)X 930(in-line)X 1161(without)X 1427(pasting)X 1680(in.)X 1784(However,)X 2121(for)X 2237(fair-)X 576 3552(ness)N 742(in)X 832(the)X 958(comparison,)X 1380(all)X 1488(examples)X 1819(were)X 2004(cut)X 2130(out)X 2260(and)X 576 3648(pasted)N 801(in.)X 735 3744(There)N 951(are)X 1078(visible)X 1319(di)X 1381 MX (ff)138 606 oc 1429(erences)X 1699(due)X 1843(to)X 1933(di)X 1995 MX (ff)138 606 oc 2043(erences)X 2314(in)X 576 3840(the)N 697(formatting)X 1057(software.)X 1376(T)X 1417 3856(E)N 1458 3840(X)N 1538(squeezes)X 1846(the)X 1966(letters)X 2184(closer)X 576 3936(together)N 871(than)X 1041(does)X 1220(the)X 1350(P)X 8 s 8 xH F 1394(OST)X 10 s 10 xH F 1515(S)X 8 s 8 xH F 1559(CRIPT)X 10 s 10 xH F 1773(engine.)X 2039(Moreover,)X 576 4032(the)N 701(interword)X 1040(space)X 1246(is)X 1326(constant)X 1620(in)X 1709(the)X 1834(P)X 8 s 8 xH F 1878(OST)X 10 s 10 xH F 1999(S)X 8 s 8 xH F 2043(CRIPT)X 10 s 10 xH F 2251(dic-)X 576 4128(tionary)N 824(but)X 947(is)X 1021(varied)X 1244(by)X 1346(T)X 1387 4144(E)N 1428 4128(X)N 1508(according)X 1847(to)X 1931(the)X 2051(line)X 2193(struc-)X 576 4224(ture.)N 769(These)X 989(di)X 1051 MX (ff)138 606 oc 1099(erences)X 1369(are)X 1496(not)X 1626(the)X 1751(di)X 1813 MX (ff)138 606 oc 1861(erences)X 2130(that)X 2277(are)X 576 4320(at)N 654(issue)X 834(here.)X 735 4416(On)N 855(the)X 975(300)X 1117(dpi)X 1241(device,)X 1494(the)X 1615(characters)X 1965(from)X 2144(the)X 2265(bit-)X 576 4512(mapped)N 854(fonts)X 1038(print)X 1213(thinner)X 1464(than)X 1626(are)X 1749(those)X 1942(of)X 2033(the)X 2154(outline)X 576 4608(fonts.)N 801(However,)X 1161(the)X 1304(edges)X 1532(of)X 1644(both)X 1831(sets)X 1996(are)X 2140(equally)X 576 4704(smooth)N 856(or)X 968(jagged)X 1227(as)X 1339(the)X 1482(case)X 1666(may)X 1849(be)X 1970(in)X 2076(all)X 2200(sizes.)X 576 4800(Overall,)N 869(then,)X 1060(the)X 1191(appearance)X 1587(of)X 1687(the)X 1818(characters)X 2178(of)X 2278(the)X 576 4896(bitmapped)N 937(fonts)X 1120(is)X 1196(crisper)X 1438(than)X 1599(that)X 1742(of)X 1832(the)X 1952(outline)X 2196(fonts.)X 576 4992(On)N 697(the)X 818(higher)X 1047(resolution)X 1391(devices,)X 1676(the)X 1798(thicknesses)X 2187(of)X 2278(the)X 576 5088(characters)N 934(are)X 1064(closer)X 1287(to)X 1380(being)X 1588(equal)X 1792(at)X 1880(all)X 1990(sizes.)X 2196(Thus,)X 576 5184(the)N 0 f F 702(METAFONT)X 1 f F 1071(program)X 1371(does)X 1546(a)X 1610(better)X 1821(job)X 1951(of)X 2046(building)X 2340(a)X 576 5280(correctly)N 887(sized)X 1077(bitmap)X 1323(at)X 1405(300)X 1549(dpi)X 1675(than)X 1837(does)X 2008(the)X 2130(300)X 2274(dpi)X 576 5376(P)N 8 s 8 xH F 620(OST)X 10 s 10 xH F 741(S)X 8 s 8 xH F 785(CRIPT)X 10 s 10 xH F 1013(engine)X 1273(of)X 1386(the)X 1530(LaserWriterII.)X 2039(The)X 2211(latter)X 576 5472(seems)N 805(to)X 900(round)X 1120(up)X 1232(too)X 1366(much.)X 1596(However,)X 1943(both)X 2117(seem)X 2314(to)X 576 5568(get)N 696(the)X 816(edges)X 1022(equally)X 1281(smooth)X 1539(even)X 1714(at)X 1795(low)X 1938(sizes)X 2117(and)X 2256(low)X 576 5664(resolutions.)N 2679 672(At)N 2782(the)X 2903(two)X 3046(higher)X 3274(resolutions,)X 3669(the)X 3791(outline)X 4037(fonts)X 4221(are)X 2520 768(signi\256cantly)N 2941(better)X 3150(than)X 3313(the)X 3436(outline)X 3683(fonts)X 3868(at)X 3951(lower)X 4159(reso-)X 2520 864(lutions)N 2767(and)X 2914(are)X 3044(signi\256cantly)X 3470(better)X 3684(than)X 3853(the)X 3982(bitmapped)X 2520 960(fonts)N 2709(at)X 2796(the)X 2923(same)X 3117(resolution)X 3466(of)X 3561(printing.)X 3862(However,)X 4205(this)X 2520 1056(latter)N 2723(is)X 2814(true)X 2977(because)X 3270(the)X 3406(bitmapped)X 3782(fonts)X 3981(were)X 4177(gen-)X 2520 1152(erated)N 2762(by)X 2886(the)X 0 f F 3028(METAFONT)X 1 f F 3413(program)X 3729(speci\256cally)X 4138(to)X 4244(be)X 2520 1248(printed)N 2777(at)X 2865(300)X 3015(dpi.)X 3187(When)X 3409(a)X 3476(300-dpi)X 3756(bitmap)X 4009(is)X 4093(printed)X 2520 1344(with)N 2684(no)X 2786(scaling)X 3035(at)X 3115(600)X 3257(or)X 3346(1270)X 3528(dpi,)X 3672(it)X 3738(remains)X 4014(a)X 4071(300-dpi)X 2520 1440(bitmap.)N 2785(As)X 2898(expected,)X 3228(the)X 3350(300-dpi)X 3623(bitmapped)X 3985(fonts)X 4169(print)X 2520 1536(better)N 2729(at)X 2813(300)X 2958(dpi)X 3085(than)X 3248(they)X 3411(do)X 3516(at)X 3599(the)X 3722(two)X 3867(higher)X 4097(resolu-)X 2520 1632(tions.)N 2679 1728(The)N 2825(generated)X 3159(outlines)X 3434(are)X 3555(not)X 3679(\256ne-tuned)X 4026(for)X 4142(print-)X 2520 1824(ing)N 2641(at)X 2718(low)X 2857(resolutions,)X 3247(such)X 3413(as)X 3499(300)X 3638(dpi,)X 3779(as)X 3865(are)X 3984(the)X 0 f F 4102(META-)X 2520 1920(FONT)N 1 f F 2685(-generated)X 3046(bitmaps.)X 3340(It)X 3410(might)X 3617(be)X 3715(useful)X 3933(to)X 4017(make)X 4213(use)X 2520 2016(of)N 2615(the)X 2741(P)X 8 s 8 xH F 2785(OST)X 10 s 10 xH F 2906(S)X 8 s 8 xH F 2950(CRIPT)X 10 s 10 xH F 3160(facilities)X 3464(for)X 3586(hinting)X 3839(to)X 3928(improve)X 4222(the)X 2520 2112(appearance)N 2913(of)X 3010(the)X 3138(characters)X 3495(printed)X 3752(from)X 3938(the)X 4067(outlines)X 2520 2208(at)N 2598(low)X 2738(resolutions.)X 2679 2304(Figure)N 2937(12)X 3066(shows)X 3315(samples)X 3623(of)X 3740(similar)X 4012(sentences)X 2520 2400(printed)N 2783(on)X 2899(the)X 3033(same)X 3234(three)X 3431(devices)X 3707(using)X 3915(the)X 4048(standard)X 2520 2496(Helvetica,)N 2871(Times)X 3094(Roman,)X 3368(and)X 3507(Courier)X 3776(P)X 8 s 8 xH F 3820(OST)X 10 s 10 xH F 3941(S)X 8 s 8 xH F 3985(CRIPT)X 10 s 10 xH F 4191(out-)X 2520 2592(line)N 2676(fonts)X 2872(built)X 3054(into)X 3213(most)X 3403(P)X 8 s 8 xH F 3447(OST)X 10 s 10 xH F 3568(S)X 8 s 8 xH F 3612(CRIPT)X 10 s 10 xH F 3794(-executing)X 4168(laser)X 2520 2688(printers.)N 2838(It)X 2920(appears)X 3199(to)X 3294(these)X 3492(authors)X 3762(that)X 3916(the)X 4048(standard)X 2520 2784(P)N 8 s 8 xH F 2564(OST)X 10 s 10 xH F 2685(S)X 8 s 8 xH F 2729(CRIPT)X 10 s 10 xH F 2956(fonts)X 3160(are)X 3303(signi\256cantly)X 3742(better)X 3969(than)X 4151(those)X 2520 2880(generated)N 2865(from)X 0 f F 3053(METAFONT)X 1 f F 3426(fonts.)X 3638(However,)X 3985(this)X 4132(is)X 4218(not)X 2520 2976(surprising.)N 2898(Adobe)X 3150(uses)X 3326(a)X 3400(grid)X 3567(of)X 3672(1000)X 47 f F 3852(\264)X 1 f F 3916(1000)X 4114(for)X 4245(its)X 2520 3072(character)N 2847(de\256nitions,)X 3235(resulting)X 3547(in)X 3641(a)X 3709(resolution)X 4061(of)X 4160(7200)X 2520 3168(dpi)N 2650(for)X 2772(characters)X 3127(printed)X 3382(at)X 3468(point)X 3659(size)X 3811(10.)X 3958(Because)X 4253(of)X 2520 3264(size)N 2679(limitations)X 3054(of)X 3155(the)X 0 f F 3287(METAFONT)X 1 f F 3662(program)X 3969(the)X 0 f F 4102(META-)X 2520 3360(FONT)N 1 f F 2706(outline)X 2949(fonts)X 3130(are)X 3249(using)X 3442(a)X 3498(resolution)X 3838(of)X 3925(3,000)X 4125(points)X 2520 3456(per)N 2644(inch.)X 2823(However,)X 3159(when)X 3354(using)X 3548(the)X 3667(letters)X 3885(in)X 3969(small)X 4164(sizes)X 2520 3552(such)N 2702(as)X 2804(from)X 2995(10)X 3110(to)X 3206(70,)X 3340(quality)X 3596(di)X 3658 MX (ff)138 606 oc 3706(erences)X 3982(are)X 4115(hardly)X 2520 3648(visible)N 2756(especially)X 3100(when)X 3298(working)X 3589(with)X 3755(printers)X 4024(that)X 4168(have)X 2520 3744(a)N 2588(resolution)X 2940(of)X 3039(300)X 3190(points)X 3416(per)X 3550(inch)X 3719(such)X 3897(as)X 3995(the)X 4124(Apple)X 2520 3840(LaserWriter.)N 2988(Moreover,)X 3364(Adobe)X 3617(makes)X 3861(liberal)X 4106(use)X 4253(of)X 2520 3936(hinting)N 2780(to)X 2876(improve)X 3177(the)X 3309(appearance)X 3706(of)X 3807(its)X 3916(fonts)X 4109(at)X 4200(low)X 2520 4032(resolutions.)N 2937(We)X 3075(completely)X 3458(ignored)X 3730(hinting,)X 4003(as)X 4097(we)X 4218(did)X 2520 4128(not)N 2642(see)X 2765(any)X 2901(way)X 3055(to)X 3137(automatically)X 3593(generate)X 3886(the)X 4004(hints.)X 3 f F 2520 4320(6.2)N 2680(Sizes)X 2874(of)X 2967(fonts.)X 1 f F 3202(Recall)X 3433(that)X 3579(it)X 3649(is)X 3728(necessary)X 4067(to)X 4155(com-)X 2520 4416(pare)N 2687(the)X 2812(size)X 2964(of)X 3058(the)X 3183(P)X 8 s 8 xH F 3227(OST)X 10 s 10 xH F 3348(S)X 8 s 8 xH F 3392(CRIPT)X 10 s 10 xH F 3601(outline)X 3850(font)X 4006(for)X 4127(a)X 4190(par-)X 2520 4512(ticular)N 0 f F 2769(METAFONT)X 1 f F 3154(de\256nition)X 3504(to)X 3610(the)X 3753(sizes)X 3954(of)X 4066(the)X 4209(bit-)X 2520 4608(mapped)N 2811(fonts)X 3008(in)X 3107(P)X 8 s 8 xH F 3151(OST)X 10 s 10 xH F 3272(S)X 8 s 8 xH F 3316(CRIPT)X 10 s 10 xH F 3535(fonts)X 3732(for)X 3862(the)X 3996(individual)X 2520 4704(and)N 2656(all)X 2756(magni\256cations.)X 2679 4800(This)N 2858(comparison)X 3269(is)X 3360(made)X 3572(in)X 3672(this)X 3825(section)X 4090(for)X 4222(the)X 5 f F 2520 4896(cmr10)N 1 f F 2785(font)X 2939(at)X 3022(the)X 3145(standard)X 3442(set)X 3556(of)X 3648(six)X 3765(magni\256cations)X 4260(1,)X 2520 4992(1.095,)N 2741(1.2,)X 2882(1.44,)X 3063(1.728,)X 3284(and)X 3422(2.07)X 3584(\(which)X 3829(are)X 3950(approxima-)X 2520 5088(tions)N 2706(of)X 2804(1.2)X 2935(raised)X 3158(to)X 3251(the)X 3380(powers)X 3643(0,)X 3734(.5,)X 3844(1,)X 3934(2,)X 4024(3,)X 4114(and)X 4260(4,)X 2520 5184(respectively\).)N 2978(In)X 3068(addition,)X 3373(as)X 3464(a)X 3524(gesture)X 3780(to)X 3866(those)X 4059(who)X 4221(are)X 2520 5280(not)N 2658(purists)X 2907(and)X 3059(accept)X 3300(magni\256cations)X 3806(of)X 3908(the)X 4041(10)X 4156(point)X 2520 5376(design)N 2774(size)X 2944(as)X 3056(di)X 3118 MX (ff)138 606 oc 3166(erent)X 3372(point)X 3581(sizes,)X 3802(the)X 3946(comparison)X 2520 5472(includes)N 2812(the)X 5 f F 2935(cmr)X 1 f F 3104(font)X 3257(at)X 3339(point)X 3527(size)X 3676(5,)X 3760(6,)X 3844(7,)X 3928(8,)X 4012(9,)X 4096(10,)X 4220(12,)X 2520 5568(and)N 2665(17,)X 2795(the)X 2923(standard)X 3225(eight)X 3415(design)X 3654(sizes)X 3840(maintained)X 4226(for)X 2520 5664(use)N 2647(with)X 2809(T)X 2850 5680(E)N 2891 5664(X.)N 2445 6084(13)N %%Page: 13 14 13 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 1 f F 735 672(Table)N 947(1)X 1017(shows)X 1247(the)X 1375(sizes)X 1561(in)X 1653(bytes.)X 1872(Thus)X 2062(it)X 2136(is)X 2219(clear)X 576 768(that)N 721(the)X 843(P)X 8 s 8 xH F 887(OST)X 10 s 10 xH F 1008(S)X 8 s 8 xH F 1052(CRIPT)X 10 s 10 xH F 1258(outline)X 1504(font)X 1657(is)X 1734(bigger)X 1963(than)X 2125(any)X 2265(bit-)X 576 864(mapped)N 855(font)X 1009(and)X 1150(that)X 1295(goal)X 1458(4)X 1523(fails.)X 1707(Moreover,)X 2070(it)X 2140(is)X 2219(clear)X 576 960(that)N 735(the)X 871(outline)X 1131(font)X 1298(is)X 1389(bigger)X 1632(than)X 1808(the)X 1944(sum)X 2115(over)X 2296(all)X 576 1056(magni\256cations)N 1067(of)X 1154(one)X 1290(design)X 1519(size)X 1664(and)X 1801(than)X 1960(the)X 2079(sum)X 2233(over)X 576 1152(all)N 681(standard)X 978(design)X 1212(sizes.)X 1413(Thus)X 1597(goal)X 1759(5)X 1823(fails.)X 2005(In)X 2096(fact,)X 2261(this)X 576 1248(failure)N 830(is)X 927(the)X 1069(reason)X 1323(that)X 1487(the)X 1629(samples)X 1931(of)X 2042(Figure)X 2296(11)X 576 1344(involve)N 841(only)X 1008(upper)X 1216(case)X 1380(letters.)X 1621(Samples)X 1916(with)X 2082(complete)X 576 1440(fonts)N 757(with)X 920(both)X 1083(cases)X 1274(often)X 1460(overloaded)X 1838(the)X 1957(printer)X 2193(avail-)X 576 1536(able)N 730(to)X 812(the)X 930(students)X 1212(at)X 1290(the)X 1408(time)X 1570(this)X 1705(work)X 1890(was)X 2035(done.)X 650 1728(Font)N 939(Design)X 1286(Magni-)X 1676(Bitmap)X 2031(Outlines)X 1041 1824(size)N 1286(\256cation)X 1677(\(size)X 1849(in)X 2031(\(size)X 2203(in)X 1715 1920(bytes\))N 2031(bytes\))X 48 f F 650 1936(i)N 662(i)X (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S 5 f F 650 2032(cmr)N 1 f F 1086(10)X 1286(1.0)X 1691(22,812)X 2031(245,000)X 690 2128(")N 1086(10)X 1286(1.095)X 1691(24,231)X 2111(")X 690 2224(")N 1086(10)X 1286(1.2)X 1691(26,044)X 2111(")X 690 2320(")N 1086(10)X 1286(1.44)X 1691(31,892)X 2111(")X 690 2416(")N 1086(10)X 1286(1.728)X 1691(39,614)X 2111(")X 690 2512(")N 1086(10)X 1286(2.07)X 1691(50,578)X 2111(")X 5 f F 650 2608(cmr)N 1 f F 1126(5)X 1286(1.0)X 1691(16,729)X 2111(")X 690 2704(")N 1126(6)X 1286(1.0)X 1691(17,757)X 2111(")X 690 2800(")N 1126(7)X 1286(1.0)X 1691(18,820)X 2111(")X 690 2896(")N 1126(8)X 1286(1.0)X 1691(20,041)X 2111(")X 690 2992(")N 1126(9)X 1286(1.0)X 1691(21,580)X 2111(")X 690 3088(")N 1086(12)X 1286(1.0)X 1691(25,658)X 2111(")X 690 3184(")N 1086(17)X 1286(1.0)X 1691(37,140)X 2111(")X 48 f F 650 3200(i)N 662(i)X (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S 1 f F 650 3296(Total)N 1651(352,896)X 2031(245,000)X 1354 3416(Table)N 1557(1)X 735 3560(However,)N 1081(do)X 1192(note)X 1361(that)X 1512(the)X 1641(outline)X 1894(font)X 2055(is)X 2140(smaller)X 576 3656(than)N 746(the)X 876(sum)X 1041(over)X 1216(all)X 1328(design)X 1569(sizes)X 1757(and)X 1905(magni\256cations)X 576 3752(thereof.)N 735 3848(So)N 848(in)X 939(terms)X 1147(of)X 1244(disk)X 1407(space)X 1616(for)X 1740(the)X 1868(non-purists,)X 2278(the)X 576 3944(outline)N 825(font)X 981(represents)X 1334(a)X 1397(savings.)X 1684(Again)X 1906(notice)X 2128(that)X 2274(not)X 576 4040(all)N 698(magni\256cations)X 1212(of)X 1322(the)X 1463(bitmapped)X 1844(fonts)X 2047(are)X 2189(main-)X 576 4136(tained)N 822(and)X 988(the)X 1136(outline)X 1408(font)X 1587(is)X 1690(arbitrarily)X 2061(scaleable.)X 576 4232(Moreover,)N 947(as)X 1048(the)X 1180(magni\256cation)X 1654(grows)X 1884(the)X 2016(size)X 2176(of)X 2278(the)X 576 4328(bitmap)N 818(grows)X 1034(even)X 1206(more)X 1391(rapidly.)X 735 4424(The)N 888(disappointment)X 1409(with)X 1579(respect)X 1835(to)X 1925(saving)X 2162(printer)X 576 4520(and)N 713(disk)X 867(memory)X 1155(says)X 1314(that)X 1454(it)X 1518(is)X 1591(important)X 1922(to)X 2004(spend)X 2211(more)X 576 4616(e)N 612 MX (ff)138 606 oc 660(ort)X 769(to)X 851(optimize)X 1151(the)X 1269(outline)X 1511(font.)X 735 4712(All)N 871(is)X 959(not)X 1096(lost,)X 1266(though!)X 1550(As)X 1674(this)X 1824(paper)X 2038(was)X 2198(being)X 576 4808(prepared)N 902(for)X 1040(publication)X 1444(in)X 2 f F 1550(TUGboat)X 1 f F 1852(,)X 1915(one)X 2074(reviewer,)X 576 4904(Nelson)N 829(Beebe,)X 1076(pointed)X 1342(out)X 1470(something)X 1829(that)X 1975(we)X 2095(can)X 2234(only)X 576 5000(kick)N 735(ourselves)X 1059(for)X 1174(not)X 1296(noticing.)X 1598(The)X 1743(P)X 8 s 8 xH F 1787(OST)X 10 s 10 xH F 1908(S)X 8 s 8 xH F 1952(CRIPT)X 10 s 10 xH F 2154(outline)X 576 5096(fonts)N 777(that)X 938(are)X 1078(generated)X 1432(by)X 9 f F 1555(mf2ps)X 1 f F 1813(are)X 1953(horrendously)X 576 5192(wasteful)N 873(in)X 960(space.)X 1184(They)X 1374(use)X 1506(original,)X 1800(built-in)X 2060(command)X 576 5288(names)N 802(and)X 939(absolute)X 1227(coordinates.)X 1638(A)X 1718(signi\256cant)X 2073(reduction)X 576 5384(in)N 661(size)X 809(can)X 944(be)X 1043(obtained)X 1342(by)X 1445(de\256nition)X 1774(and)X 1913(use)X 2043(in)X 2127(the)X 2247(out-)X 576 5480(lines)N 752(of)X 844(single-character)X 1383(command)X 1724(names,)X 1974(e.g.,)X 2136(\252)X 5 f F 2172(M)X 1 f F (\272)S 2282(for)X 576 5576(\252)N 5 f F 612(moveto)X 1 f F (\272,)S 995(and)X 1150(by)X 1269(use)X 1415(of)X 1521(relative)X 1801(versions)X 2106(of)X 2211(these)X 576 5672(commands)N 943(with)X 1105(operands)X 1415(of)X 1502(fewer)X 1706(digits)X 1903(after)X 2071(the)X 2190(initial)X 2520 672(absolute)N 5 f F 2812(moveto)X 1 f F 3125(of)X 3217(any)X 3358(character.)X 3699(A)X 3782(simple)X 4020(\256lter)X 4195(was)X 2520 768(written)N 2769(to)X 2853(obtain)X 3075(new)X 3231(compressed)X 3633(versions)X 3923(of)X 4013(the)X 4134(P)X 8 s 8 xH F 4178(OST-)X 10 s 10 xH F 2520 864(S)N 8 s 8 xH F 2564(CRIPT)X 10 s 10 xH F 2787(outline)X 3050(fonts.)X 3271(The)X 3437(appearances)X 3871(of)X 3978(the)X 4116(output)X 2520 960(when)N 2728(printing)X 3016(with)X 3193(these)X 3393(new)X 3562(versions)X 3864(is)X 3952(unchanged,)X 2520 1056(but)N 2654(what)X 2842(is)X 2927(sent)X 3087(to)X 3180(the)X 3309(printer)X 3554(is)X 3638(signi\256cantly)X 4064(smaller,)X 2520 1152(about)N 2718(37.7%)X 2945(smaller.)X 3221(The)X 3366(reduction)X 3689(on)X 3789(a)X 3845(per-letter)X 4160(basis)X 2520 1248(is)N 2599(about)X 2803(45%.)X 3016(Table)X 3225(2)X 3291(shows)X 3517(the)X 3641(information)X 4045(of)X 4137(Table)X 2520 1344(1)N 2580(for)X 2694(the)X 2812(new)X 2966(versions)X 3253(of)X 3340(the)X 3458(outline)X 3700(fonts.)X 2594 1536(Font)N 2883(Design)X 3230(Magni-)X 3620(Bitmap)X 3975(Outlines)X 2985 1632(size)N 3230(\256cation)X 3621(\(size)X 3793(in)X 3975(\(size)X 4147(in)X 3659 1728(bytes\))N 3975(bytes\))X 48 f F 2594 1744(i)N 2606(i)X (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S 5 f F 2594 1840(cmr)N 1 f F 3030(10)X 3230(1.0)X 3635(22,812)X 3975(152,670)X 2634 1936(")N 3030(10)X 3230(1.095)X 3635(24,231)X 4055(")X 2634 2032(")N 3030(10)X 3230(1.2)X 3635(26,044)X 4055(")X 2634 2128(")N 3030(10)X 3230(1.44)X 3635(31,892)X 4055(")X 2634 2224(")N 3030(10)X 3230(1.728)X 3635(39,614)X 4055(")X 2634 2320(")N 3030(10)X 3230(2.07)X 3635(50,578)X 4055(")X 5 f F 2594 2416(cmr)N 1 f F 3070(5)X 3230(1.0)X 3635(16,729)X 4055(")X 2634 2512(")N 3070(6)X 3230(1.0)X 3635(17,757)X 4055(")X 2634 2608(")N 3070(7)X 3230(1.0)X 3635(18,820)X 4055(")X 2634 2704(")N 3070(8)X 3230(1.0)X 3635(20,041)X 4055(")X 2634 2800(")N 3070(9)X 3230(1.0)X 3635(21,580)X 4055(")X 2634 2896(")N 3030(12)X 3230(1.0)X 3635(25,658)X 4055(")X 2634 2992(")N 3030(17)X 3230(1.0)X 3635(37,140)X 4055(")X 48 f F 2594 3008(i)N 2606(i)X (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S (i)S 1 f F 2594 3104(Total)N 3595(352,896)X 3975(152,670)X 3298 3224(Table)N 3501(2)X 2679 3368(There)N 2911(are)X 3054(still)X 3217(better)X 3444(compressions)X 3924(that)X 4088(can)X 4244(be)X 2520 3464(achieved.)N 2865(According)X 3243(to)X 3344(Beebe)X 3584([4],)X 3736(Toal)X 3921(and)X 4075(Raine's)X 2520 3560(outline)N 2787(representation)X 3287(of)X 5 f F 3400(cmr)X 1 f F 3590(at)X 3694(10)X 3820(points)X 4061(requires)X 2520 3656(about)N 2726(twice)X 2927(the)X 3052(space)X 3258(needed)X 3513(for)X 3634(bitmaps)X 3914(of)X 4008(the)X 4133(same;)X 2520 3752(at)N 2603(14)X 2708(to)X 2795(16)X 2900(points,)X 3140(the)X 3264(outlines)X 3543(and)X 3685(the)X 3809(bitmaps)X 4088(occupy)X 2520 3848(about)N 2728(the)X 2856(same)X 3051(amount)X 3321(of)X 3418(space;)X 3648(above)X 3869(16)X 3978(points,)X 4222(the)X 2520 3944(outlines)N 2809(are)X 2944(smaller)X 3216(than)X 3390(the)X 3524(bitmaps.)X 3833(It)X 3918(is)X 4007(clear)X 4200(that)X 2520 4040(better)N 2727(encodings)X 3076(exist)X 3251(than)X 3413(we)X 3531(explored)X 3836(and)X 3976(these)X 4165(must)X 2520 4136(be)N 2616(explored)X 2917(for)X 3031(any)X 3167(future)X 3379(version)X 3635(of)X 9 f F 3724(mf2ps)X 1 f F 3941(.)X 2679 4232(One)N 2842(such)X 3018(better)X 3230(encoding)X 3553(appears)X 3828(to)X 3919(be)X 4024(that)X 4173(used)X 2520 4328(by)N 2629(Adobe)X 2872(for)X 2995(its)X 3099(own)X 3266(proprietary)X 3652(fonts;)X 3863(fonts)X 4052(encoded)X 2520 4424(this)N 2655(way)X 2809(have)X 2981(a)X 3037(FontType)X 3368(of)X 3456(1.)X 3557(User)X 3730(de\256ned)X 3987(fonts)X 4168(have)X 2520 4520(a)N 2587(FontType)X 2929(of)X 3027(3.)X 3118(Beebe)X 3350([4])X 3475(says)X 3643(that)X 3793(type)X 3961(1)X 4031(fonts)X 4221(are)X 2520 4616(handled)N 2813(with)X 2994(greater)X 3257(e)X 3293 MX (Fi)139 825 oc (ciency)S 3608(than)X 3785(type)X 3962(3)X 4041(fonts)X 4240(on)X 2520 4712(most)N 2700(existing)X 2978(P)X 8 s 8 xH F 3022(OST)X 10 s 10 xH F 3143(S)X 8 s 8 xH F 3187(CRIPT)X 10 s 10 xH F 3394(interpreters,)X 3805(especially)X 4151(those)X 2520 4808(that)N 2683(are)X 2825(based)X 3051(on)X 3174(Adobe-licensed)X 3721(code.)X 3956(Adobe)X 4213(has)X 2520 4904(recently)N 2822(published)X 3175(speci\256cations)X 3653(for)X 3789(the)X 3929(type)X 4109(1)X 4191(font)X 2520 5000(encoding)N 2840([2],)X 2980(thus)X 3139(allowing)X 3445(anyone)X 3703(to)X 3791(produced)X 4116(type)X 4280(1)X 2520 5096(fonts.)N 2729(Beebe)X 2959(believes)X 3251(that)X 3400(the)X 3527(market)X 3778(forces)X 4003(will)X 4155(drive)X 2520 5192(other)N 2708(companies)X 3074(to)X 3159(encode)X 3410(their)X 3580(fonts)X 3763(as)X 3853(type)X 4015(1.)X 4119(More-)X 2520 5288(over,)N 2714(as)X 2812(more)X 3008(and)X 3155(more)X 3351(windowing)X 3742(systems)X 4026(based)X 4240(on)X 2520 5384(P)N 8 s 8 xH F 2564(OST)X 10 s 10 xH F 2685(S)X 8 s 8 xH F 2729(CRIPT)X 10 s 10 xH F 2911(,)X 2954(e.g.,)X 3113(NeWS)X 3350(and)X 3489(NeXT,)X 3733(appear,)X 3992(the)X 4114(attrac-)X 2520 5480(tion)N 2672(of)X 2767(P)X 8 s 8 xH F 2811(OST)X 10 s 10 xH F 2932(S)X 8 s 8 xH F 2976(CRIPT)X 10 s 10 xH F 3186(outline)X 3436(fonts)X 3624(will)X 3776(increase,)X 4088(as)X 4182(then)X 2520 5576(the)N 2651(same)X 2849(font)X 3012(can)X 3158(be)X 3268(used)X 3449(for)X 3577(both)X 3753(printing)X 4040(and)X 4190(pre-)X 2520 5672(viewing.)N 2827(Thus,)X 3036(the)X 3163(incentive)X 3486(will)X 3639(be)X 3743(to)X 3833(convert)X 0 f F 4102(META-)X 1 f F 2445 6084(16)N %%Page: 14 15 14 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 576 672(FONT)N 1 f F 761(fonts)X 941(into)X 1085(type)X 1243(1)X 1303(P)X 8 s 8 xH F 1347(OST)X 10 s 10 xH F 1468(S)X 8 s 8 xH F 1512(CRIPT)X 10 s 10 xH F 1714(outline)X 1956(fonts.)X 735 768(Ultimately,)N 1124(the)X 1250(tradeo)X 1451 MX (ff)138 606 oc 1527(is)X 1608(between)X 1904(the)X 2030(size)X 2183(of)X 2278(the)X 576 864(font)N 741(sent)X 906(to)X 1004(the)X 1138(printer,)X 1408(and)X 1560(the)X 1693(time)X 1870(it)X 1949(takes)X 2149(for)X 2278(the)X 576 960(printer)N 815(to)X 902(decode)X 1155(the)X 1278(program)X 1576(for)X 1696(the)X 1820(characters.)X 2193(How-)X 576 1056(ever,)N 764(with)X 934(proper)X 1172(cacheing,)X 1506(a)X 1570(big)X 1700(enough)X 1964(cache,)X 2196(and)X 2340(a)X 576 1152(not)N 715(very)X 895(fancy)X 1111(document,)X 1484(the)X 1619(decoding)X 1950(is)X 2040(done)X 2234(only)X 576 1248(once)N 748(per)X 871(character)X 1187(for)X 1301(the)X 1419(document!)X 3 f F 576 1440(7)N 676(Future)X 932(work)X 1 f F 576 1584(For)N 708(the)X 827(future,)X 1060(there)X 1242(are)X 1362(a)X 1420(number)X 1687(of)X 1776(improvements)X 2256(that)X 576 1680(can)N 714(be)X 816(made.)X 1055(Currently,)X 1407(each)X 1580(letter)X 1770(of)X 1862(the)X 1985(P)X 8 s 8 xH F 2029(OST)X 10 s 10 xH F 2150(S)X 8 s 8 xH F 2194(CRIPT)X 10 s 10 xH F 576 1776(outline)N 820(fonts)X 1002(is)X 1077(described)X 1407(as)X 1496(a)X 1555(set)X 1667(of)X 1757(cyclic)X 1972(paths.)X 2184(When)X 576 1872(all)N 698(are)X 839(\256lled)X 1045(or)X 1154(stroked,)X 1452(one)X 1609(gets)X 1779(the)X 1918(desired)X 2191(letter.)X 576 1968(Some)N 789(of)X 887(those)X 1087(cyclic)X 1310(paths)X 1510(have)X 1693(a)X 1761(common)X 2073(boundary)X 576 2064(that)N 721(is)X 799(inside)X 1015(the)X 1138(letter)X 1327(and)X 1467(is)X 1544(not)X 1670(necessary)X 2007(for)X 2125(the)X 2247(out-)X 576 2160(line)N 733(description)X 1126(of)X 1230(the)X 1365(letter)X 1567(as)X 1671(a)X 1745(whole.)X 1999(Eliminating)X 576 2256(these)N 772(paths)X 972(and)X 1118(creating)X 1407(one)X 1553(outline)X 1805(for)X 1929(the)X 2057(letter)X 2252(will)X 576 2352(save)N 753(space.)X 986(Today)X 1225(this)X 1374(can)X 1520(be)X 1630(done)X 1820(manually,)X 2172(and)X 2323(is)X 576 2448(worth)N 789(the)X 912(e)X 948 MX (ff)138 606 oc 996(ort)X 1110(because)X 1390(the)X 1513(translation)X 1876(process)X 2142(is)X 2220(done)X 576 2544(only)N 738(once.)X 930(From)X 1123(that)X 1263(time)X 1426(on,)X 1547(the)X 1666(font)X 1816(is)X 1890(used)X 2058(the)X 2177(way)X 2332(it)X 576 2640(is.)N 735 2736(As)N 863(was)X 1027(demonstrated)X 1498(by)X 1617(Beebe's)X 1916(rescue)X 2162(of)X 2269(our)X 576 2832(result,)N 796(closer)X 1010(attention)X 1312(should)X 1547(be)X 1645(paid)X 1805(to)X 1888(obtaining)X 2211(more)X 576 2928(compact)N 869(representations)X 1376(of)X 1464(character)X 1781(outlines,)X 2076(represen-)X 576 3024(tations)N 811(for)X 927(which)X 1145(P)X 8 s 8 xH F 1189(OST)X 10 s 10 xH F 1310(S)X 8 s 8 xH F 1354(CRIPT)X 10 s 10 xH F 1557(routines)X 1836(can)X 1969(be)X 2066(written)X 2314(to)X 576 3120(interpret)N 868(them)X 1048(into)X 1192(standard)X 1484(outline)X 1726(drawing)X 2009(commands.)X 576 3216(Collapsing)N 952(commands)X 1329(into)X 1482(single)X 1702(characters)X 2058(and)X 2203(using)X 576 3312(relative)N 839(movements)X 1231(saved)X 1437(signi\256cant)X 1793(amounts)X 2087(of)X 2177(space.)X 576 3408(Perhaps,)N 882(even)X 1066(more)X 1263(dramatic)X 1576(savings)X 1848(can)X 1992(be)X 2100(obtained)X 576 3504(by)N 676(giving)X 900(coordinates)X 1290(and)X 1426(distances)X 1740(in)X 1822(hexadecimal.)X 735 3600(More)N 945(e)X 981 MX (ff)138 606 oc 1029(ort)X 1154(can)X 1302(be)X 1414(spent)X 1620(on)X 1737(modifying)X 2107(the)X 2242(pro-)X 576 3696(gram)N 790(in)X 901(order)X 1120(to)X 1231(allow)X 1458(magni\256cations)X 1978(up)X 2106(to)X 2216(7200)X 576 3792(points.)N 824(Thus,)X 1037(no)X 1150(jaggies)X 1410(will)X 1567(be)X 1677(seen,)X 1874(as)X 1975(occasionally)X 576 3888(happens)N 866(when)X 1067(using)X 1267(higher)X 1499(magni\256cations,)X 2017(e.g.,)X 2180(in)X 2269(our)X 576 3984(translated)N 915(fonts)X 1102(at)X 1187(magni\256cation)X 1654(8.)X 1741(This)X 1910(could)X 2116(be)X 2220(done)X 576 4080(by)N 692(enlarging)X 1031(the)X 1164(program)X 1471(arrays)X 1703(to)X 1800(handle)X 2049(characters)X 576 4176(based)N 812(on)X 945(7200)X 1159(points.)X 1428(A)X 1540(sophisticated)X 2012(solution)X 2323(is)X 576 4272(required)N 867(if)X 939(one)X 1078(wants)X 1288(to)X 1373(save)X 1539(room)X 1731(while)X 1932(compiling)X 2278(the)X 576 4368(input)N 767(font.)X 943(In)X 1037(such)X 1211(a)X 1274(case,)X 1460(any)X 1603(linear)X 1814(translation)X 2180(which)X 576 4464(is)N 652(done)X 831(within)X 1058(the)X 1179(P)X 8 s 8 xH F 1223(OST)X 10 s 10 xH F 1344(S)X 8 s 8 xH F 1388(CRIPT)X 10 s 10 xH F 1593(program)X 1888(is)X 1964(with)X 2129(a)X 2188(factor)X 576 4560(less)N 716(than)X 874(1.)X 0 f F 735 4656(METAFONT)N 1 f F 1106(was)X 1261(changed)X 1559(for)X 1684(T)X 1725 4672(E)N 1766 4656(X)N 1855(3.0.)X 2006(It)X 2086(is)X 2170(neces-)X 576 4752(sary)N 747(to)X 846(build)X 1047(a)X 1120(new)X 1291(version)X 1564(of)X 9 f F 1670(mf2ps)X 1 f F 1924(based)X 2144(on)X 2261(this)X 576 4848(latest)N 790(version)X 1071(of)X 0 f F 1183(METAFONT)X 1 f F 1524(.)X 1589(As)X 1723(the)X 1866(changes)X 2170(to)X 2278(the)X 0 f F 576 4944(METAFONT)N 1 f F 967(program)X 1289(deal)X 1473(mainly)X 1744(with)X 1935(ligatures)X 2260(and)X 576 5040(kerning,)N 877(the)X 1011(calculation)X 1400(of)X 1504(envelopes)X 1862(is)X 1952(probably)X 2274(not)X 576 5136(a)N 612 MX (ff)138 606 oc 660(ected.)X 869(Therefore,)X 1226(it)X 1289(is)X 1361(likely)X 1562(that)X 1702(the)X 1820(portion)X 2071(of)X 0 f F 2158(META-)X 576 5232(FONT)N 1 f F 769(up)X 877(to)X 967(the)X 1093(calculation)X 1473(of)X 1568(the)X 1694(envelope)X 2012(can)X 2152(still)X 2300(be)X 576 5328(used)N 746(as)X 836(a)X 894(front)X 1072(end)X 1210(for)X 9 f F 1328(mf2ps)X 1 f F 1567(with)X 1731(very)X 1896(little)X 2064(change)X 2314(in)X 576 5424(the)N 694(portion)X 945(of)X 1032(the)X 1150(program)X 1442(we)X 1556(wrote.)X 735 5520(Finally,)N 1018(it)X 1099(might)X 1323(be)X 1437(worthwhile,)X 1860(for)X 1992(the)X 2128(sake)X 2309(of)X 576 5616(portability)N 932(to)X 1017(other)X 1205(systems)X 1481(and)X 1619(enhanceability)X 2109(by)X 2211(other)X 2520 672(humans,)N 2834(to)X 2941(rewrite)X 3214(or)X 3326(to)X 3433(write)X 3643(the)X 3787(next)X 3971(version)X 4253(of)X 9 f F 2520 768(mf2ps)N 1 f F 2757(with)X 5 f F 2919(WEB)X 1 f F (.)S 3 f F 2520 960(Acknowledgments)N 1 f F 2520 1104(The)N 2685(authors)X 2961(thank)X 3179(the)X 2 f F 3317(TUGboat)X 1 f F 3659(editors,)X 3937(and)X 4093(Nelson)X 2520 1200(Beebe)N 2742(for)X 2857(their)X 3025(help,)X 3204(sharp)X 3399(comments,)X 3769(and)X 3906(result-saving)X 2520 1296(ideas.)N 2751(Dealing)X 3032(with)X 3201(their)X 3375(comments)X 3731(made)X 3932(this)X 4074(a)X 4137(better)X 2520 1392(paper.)N 3 f F 2520 1584(References)N 1 f F 2600 1704(1.)N 2 f F 2760(P)X 8 s 8 xH F 2809(OST)X 10 s 10 xH F 2923(S)X 8 s 8 xH F (CRIPT)S 10 s 10 xH F 3230(Language)X 3639(Reference)X 4051(Manual,)X 1 f F 2760 1800(Adobe)N 3004(Systems)X 3300(Incorporated,)X 3761(Addison-Wesley,)X 2760 1896(Reading,)N 3067(MA)X 3216(\(1985\).)X 2600 2016(2.)N 2760(\252Adobe)X 3080(Type)X 3316(1)X 3427(Font)X 3644(Format,\272)X 4002(Part)X 4202(No.)X 2760 2112(LPS0064,)N 3097(Adobe)X 3331(Systems,)X 3637(Inc.)X 3780(\(March,)X 4057(1990\).)X 2600 2232(3.)N 2760(S.)X 2844(von)X 2984(Bechtolsheim,)X 3526(\252The)X 3769(T)X 3810 2248(E)N 3851 2232(X)N 3992(PostScript)X 2760 2328(Software)N 3088(Package,\272)X 2 f F 3450(TUGboat)X 3 f F 3790(10)X 1 f F (\(1\),)S 4022(p.)X 4120(25\26127)X 2760 2424(\(1989\).)N 2600 2544(4.)N 2760(N.)X 2858(Beebe,)X 3099(Private)X 3346(communication,)X 3884(via)X 4003(electronic)X 2760 2640(mail.)N 2982(\(1990\).)X 2600 2760(5.)N 2760(L.)X 2849(Carr,)X 3110(\252Of)X 3329(Metafont)X 3721(and)X 3936(PostScript,\272)X 2 f F 2760 2856(T)N 2796 2872(E)N 2845 2856(Xniques)N 3 f F 3123(5)X 1 f F (,)S 3203(p.)X 3283(141\261152)X 3583(\(August,)X 3881(1987\).)X 2600 2976(6.)N 2760(D.)X 2858(Henderson,)X 3255(\252Outline)X 3561(fonts)X 3751(with)X 0 f F 3923(METAFONT)X 1 f F 4264(,\272)X 2 f F 2760 3072(TUGboat)N 3 f F 3082(10)X 1 f F (\(1\),)S 3296(p.)X 3376(36\26138)X 3596(\(1989\).)X 2600 3192(7.)N 2760(J.D.)X 2909(Hobby,)X 3200(\252A)X 0 f F 3347(METAFONT)X 1 f F 3688(-like)X 3889(System)X 4178(with)X 2760 3288(PostScript)N 3112(Output,\272)X 2 f F 3414(TUGboat)X 3 f F 3740(10)X 1 f F (\(4\),)S 3957(p.)X 4040(505\261512)X 2760 3384(\(1989\).)N 2600 3504(8.)N 2760(B.W.)X 2949(Kernighan,)X 3388(\252A)X 3562(Typesetter-independent)X 2760 3600(TROFF,\272)N 3092(Computing)X 3479(Science)X 3757(Technical)X 4102(Report)X 2760 3696(No.)N 2929(97,)X 3080(Bell)X 3264(Laboratories,)X 3742(Murray)X 4035(Hill,)X 4231(NJ)X 2760 3792(07974)N 2980(\(March,)X 3257(1982\).)X 2600 3912(9.)N 2760(D.E.)X 2927(Knuth,)X 2 f F 3208(The)X 3389(T)X 3425 3928(E)N 3474 3912(Xbook,)N 1 f F 3761(Addison-Wesley,)X 2760 4008(Reading,)N 3067(MA)X 3216(\(1984\).)X 2600 4128(10.)N 2760(D.E.)X 2927(Knuth,)X 2 f F 3226(The)X 0 f F 3425(METAFONT)X 2 f F 3766(book,)X 1 f F 4022(Addison-)X 2760 4224(Wesley,)N 3041(Reading,)X 3348(MA)X 3497(\(1986\).)X 2600 4344(11.)N 2760(D.E.)X 2927(Knuth,)X 0 f F 3272(METAFONT)X 2 f F 3613(:)X 3765(The)X 4011(Program,)X 1 f F 2760 4440(Addison-Wesley,)N 3339(Reading,)X 3646(MA)X 3795(\(1987\).)X 2600 4560(12.)N 2760(G.)X 2858(Toal,)X 3058(Private)X 3319(communication,)X 3871(via)X 4003(electronic)X 2760 4656(mail.)N 2982(\(1990\).)X 2600 4776(13.)N 2760(J.)X 2831(Ziv)X 2974(and)X 3122(A.)X 3220(Lempel,)X 3517(\252A)X 3643(Universal)X 3987(Algorithm)X 2760 4872(for)N 2877(Sequential)X 3237(Data)X 3411(Compression,\272)X 2 f F 3911(IEEE)X 4107(Trans-)X 2760 4968(actions)N 3031(on)X 3151(Information)X 3573(Theory)X 3 f F 3840(3)X 1 f F (,)S 3940(p.)X 4040(337\261343)X 2760 5064(\(May,)N 2974(1977\).)X 9 s 9 xH 47 f F 3000 5344(\340)N 1 f F 3096(Shimon)X 3338(Yanai)X 3096 5432(IBM)N 3250(Science)X 3492(and)X 3614(Technology)X 3192 5520(Center)N 3096 5608(Technion)N 3386(City)X 10 s 10 xH F 2445 6084(17)N %%Page: 15 16 15 p 0(MF-logo)xf 0 f F 10 s 10 xH 0 xS 0 f F 9 s 9 xH 1 f F 1152 664(Haifa)N 1330(32000)X 1152 752(Israel)N 1152 840(yanai@israearn.bitnet)N 47 f F 1056 1016(\340)N 1 f F 1152(Daniel)X 1362(M.)X 1462(Berry)X 1152 1104(Computer)N 1458(Science)X 1152 1192(Technion)N 1152 1280(Haifa)N 1330(32000)X 1152 1368(Israel)N 1152 1456(dberry@cs.technion.ac.il)N 10 s 10 xH F 2445 6084(18)N %%Trailer xt xs