diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/utilities/mf2ps/doc |
Initial commit
Diffstat (limited to 'fonts/utilities/mf2ps/doc')
34 files changed, 39042 insertions, 0 deletions
diff --git a/fonts/utilities/mf2ps/doc/Fig8.ps b/fonts/utilities/mf2ps/doc/Fig8.ps new file mode 100644 index 0000000000..4f1f96813b --- /dev/null +++ b/fonts/utilities/mf2ps/doc/Fig8.ps @@ -0,0 +1,287 @@ +%! Simon font +%%BoundingBox: 0 -10 40 50 +%%Was: 0 -5 40 40 +%%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_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 +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 +%was: 0 -180 + 0 -200 + charwdth 1000 + setcachedevice + -186 fudge add 0 translate + charproc cvx exec + grestore + end + } def +%was: /FontBBox [186 fudge sub 180 552 490] def + /FontBBox [186 fudge sub 200 552 490] def + + end + + /Simon SimonFont definefont pop + + /Simon findfont 40 scalefont setfont + 0 0 moveto (x) show diff --git a/fonts/utilities/mf2ps/doc/Makefile b/fonts/utilities/mf2ps/doc/Makefile new file mode 100644 index 0000000000..dd388b5747 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/Makefile @@ -0,0 +1,17 @@ +F=paper +PAGES= +QUEUE= +/usr/users/dberry/.refsidx.ia: /usr/users/dberry/.refs + mkey /usr/users/dberry/.refs | inv -n /usr/users/dberry/.refsidx + +$F.ref: $F /usr/users/dberry/.refsidx.ia + refer -e -n -p /usr/users/dberry/.refsidx -sADT $F > $F.ref + +psroff: $F.ref + psfig $F.ref | tbl | eqn | psroff $(PAGES) -ILG -mXP -mpsfig + +$F.dt: $F.ref + psfig -d $F.ref | tbl | eqn | dtroff $(PAGES) -mXP -mpsfig > $F.dt + +$F.ps: $F.ref + psfig $F.ref | tbl | eqn | psroff $(PAGES) -ILG -mXP -mpsfig -t > $F.ps diff --git a/fonts/utilities/mf2ps/doc/README b/fonts/utilities/mf2ps/doc/README new file mode 100644 index 0000000000..813d51ae37 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/README @@ -0,0 +1,10 @@ +This directory contains the troff sources for the mf2ps paper +Environment for Translating \f(LGMETAFONT\fP to PostSscript +published in TUGboat 11:4, pages 525-541 at the end of 1990. + +The refer database addressed by the makefile to make paper.ref from +paper is too big to include here.. So I have left paper.ref here. +Also you may not have the tmac.X macro package to run troff. So I have +left paper.ps in PostScript form here +To get the pieces of the paper, send paper.ps figure.pages.ps and +the *.ps pages of the printsamples through your favorite PS printer. diff --git a/fonts/utilities/mf2ps/doc/fig1.ps b/fonts/utilities/mf2ps/doc/fig1.ps new file mode 100644 index 0000000000..07ee55dffa --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig1.ps @@ -0,0 +1,29 @@ +%! +%%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 diff --git a/fonts/utilities/mf2ps/doc/fig10.ps b/fonts/utilities/mf2ps/doc/fig10.ps new file mode 100644 index 0000000000..c4dedc6357 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig10.ps @@ -0,0 +1,283 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/fig2.ps b/fonts/utilities/mf2ps/doc/fig2.ps new file mode 100644 index 0000000000..9e1e4a2721 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig2.ps @@ -0,0 +1,138 @@ +%! +%%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 diff --git a/fonts/utilities/mf2ps/doc/fig4.ps b/fonts/utilities/mf2ps/doc/fig4.ps new file mode 100644 index 0000000000..fd6a94666b --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig4.ps @@ -0,0 +1,283 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/fig5.ps b/fonts/utilities/mf2ps/doc/fig5.ps new file mode 100644 index 0000000000..bb868ba57c --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig5.ps @@ -0,0 +1,236 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/fig6.ps b/fonts/utilities/mf2ps/doc/fig6.ps new file mode 100644 index 0000000000..a2c6f548c8 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig6.ps @@ -0,0 +1,30 @@ +%! +%%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 diff --git a/fonts/utilities/mf2ps/doc/fig7.ps b/fonts/utilities/mf2ps/doc/fig7.ps new file mode 100644 index 0000000000..7681203441 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig7.ps @@ -0,0 +1,447 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/fig8.ps b/fonts/utilities/mf2ps/doc/fig8.ps new file mode 100644 index 0000000000..7ece37f42a --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig8.ps @@ -0,0 +1,292 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/fig9.ps b/fonts/utilities/mf2ps/doc/fig9.ps new file mode 100644 index 0000000000..f2934f6579 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/fig9.ps @@ -0,0 +1,114 @@ +%! 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 diff --git a/fonts/utilities/mf2ps/doc/figure.pages b/fonts/utilities/mf2ps/doc/figure.pages new file mode 100644 index 0000000000..107f981e65 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/figure.pages @@ -0,0 +1,89 @@ +.en +.pl 11.125i +.LL 6.5i +.ls 1 +.ds BL ''%'' +.hy 14 +\ +.sp 8.25i +.ce +Figure 3 +.bp +.ta .2i +.2i +.nf +R M \07: + 10: + 12: + + P \07: + 10: + 12: + +T M \08: + 10: + 12: + + P \08: + 10: + 12: + +L M 10: + + P 10: +.fi +.sp 2 +.ce +Figure 11-LW300 +.sp 3 +.nf +R M 10: + 12: + + P 10: + 12: + +T M 10: + 12: + + P 10: + 12: + +L M 10: + + P 10: +.fi +.sp 2 +.ce +Figure 11-VT600 +.bp +.nf +R M 10: + 12: + + P 10: + 12: + +T M 10: + 12: + + P 10: + 12: + +L M 10: + + P 10: +.fi +.sp 2 +.ce +Figure 11-LT1270 +.sp 2 +.nf +LW300: +.sp 8v +VT600: +.sp 8v +LT1270: +.sp 8v +.sp +.ce +Figure 12 diff --git a/fonts/utilities/mf2ps/doc/figure.pages.ps b/fonts/utilities/mf2ps/doc/figure.pages.ps new file mode 100644 index 0000000000..57a0330a5d --- /dev/null +++ b/fonts/utilities/mf2ps/doc/figure.pages.ps @@ -0,0 +1,508 @@ +%!PS-Adobe-1.0 +%%Creator: ah.sei.cmu.edu:dberry (Daniel Berry) +%%Title: stdin (ditroff) +%%CreationDate: Wed Oct 17 22:20:03 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 +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 1 +1 p +10 s 10 xH 0 xS 1 f F +10 s 10 xH 0 xS 1 f F +2313 5520(Figure)N +2542(3)X +2428 6084(7)N + +%%Page: 2 2 +2 p +10 s 10 xH 0 xS 1 f F +576 672(R)N +691(M)X +846(7:)X +806 768(10:)N +806 864(12:)N +691 1056(P)N +846(7:)X +806 1152(10:)N +806 1248(12:)N +576 1440(T)N +691(M)X +846(8:)X +806 1536(10:)N +806 1632(12:)N +691 1824(P)N +846(8:)X +806 1920(10:)N +806 2016(12:)N +576 2208(L)N +691(M)X +806(10:)X +691 2400(P)N +806(10:)X +2157 2688(Figure)N +2386(11-LW300)X +576 3072(R)N +691(M)X +806(10:)X +806 3168(12:)N +691 3360(P)N +806(10:)X +806 3456(12:)N +576 3648(T)N +691(M)X +806(10:)X +806 3744(12:)N +691 3936(P)N +806(10:)X +806 4032(12:)N +576 4224(L)N +691(M)X +806(10:)X +691 4416(P)N +806(10:)X +2166 4704(Figure)N +2395(11-VT600)X +2428 6084(14)N + +%%Page: 3 3 +3 p +10 s 10 xH 0 xS 1 f F +576 672(R)N +691(M)X +806(10:)X +806 768(12:)N +691 960(P)N +806(10:)X +806 1056(12:)N +576 1248(T)N +691(M)X +806(10:)X +806 1344(12:)N +691 1536(P)N +806(10:)X +806 1632(12:)N +576 1824(L)N +691(M)X +806(10:)X +691 2016(P)N +806(10:)X +2151 2304(Figure)N +2380(11-LT1270)X +576 2592(LW300:)N +576 3456(VT600:)N +576 4320(LT1270:)N +2293 5280(Figure)N +2522(12)X +2428 6084(15)N + +%%Trailer +xt + +xs diff --git a/fonts/utilities/mf2ps/doc/paper b/fonts/utilities/mf2ps/doc/paper new file mode 100644 index 0000000000..d93f426299 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/paper @@ -0,0 +1,1755 @@ +.pl 11.125i +.de rb +.ta 2m +5m +5m +.nr t1\\n(.i +.ls \\n(sq +.in \\n(sem +.. +.de rf +.br +.ne \\n(scu+\\n(sdu +.sp \\n(sdu +.ti -2m +.. +.de LE +.sp .5v +.. +.de SU +.ne 2v +.br +.ti 1.66P +\f3\\$1\fP +.. +.de Su +.ne 2v +.sp 1v +\fB\&\\$1\fP +.. +.de su +.ne 3v +.sp 1v +.na +\fB\&\\$1\fP +.br +.ad +.. +.de PP +.sp .5v +.. +.de qb +.in +\\n(sju +.LL -\\n(sju +.sp .5v +.. +.de qe +.in -\\n(sju +.LL +\\n(sju +.sp .5v +.. +.de cl +.ta\\n(sou +5m +5m +.in+\\n(snu +.. +.de dl +.br +.in-\\n(snu +.. +.de ES +.ft C +.sp +.nf +.in +1.66P +.. +.de EE +.fi +.ft R +.sp +.in -1.66P +.. +.dehd +.HS +.nrhe+1 +.ie\\n(cn>1\{\ +.ie\\nc>\\n(cn\{\ +'sp\\n(bhu-1v +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Te +.el.tl \\*(To +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'sp|\\n(thu +.nrc 1 1 +.mkmx\} +.el\{\ +.po+\\n(cwu+\\n(csu +'sp|\\n(mxu\}\} +.el\{\ +.if\\n(f5\{\ +.nr% +\\n(f5 +.nrf50 1\} +'sp\\n(bhu-1v +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Te +.el.tl \\*(To +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'sp|\\n(thu\} +.chfx -\\n(tfu +.chfo -\\n(tfu +.if\\n(z1 .fz +.chfo -\\n(tfu +.if!\\n(f0 .ns +.if\\n(f0\{\ +.nrf5\\n(f6 +.nrf6\\n(f7 +.nrf70 +.Ff +.ie\\n(fa\{\ +.nrfa0 +.nrh21\} +.el\{\ +.ie\\nx\{.if (\\n(nlu+5v)>(\\n(.p+\\nyu) .nr h1 1\} +.el\{.if \\n(.tu<6v .nr h1 1\}\}\} +.if\\n(h1=1\{\ +.nrh10 +'bp\} +.if\\n(h2=1\{\ +.nrh20 +.fo\} +.chfo (\\nyu-1v) +.nrhe-1 +.HE +.. +.defo +.FS +.if!\\n(he\{.if \\nx .xf\} +.nrfa0 +.ie\\n(fg\{\ +.nrfa1 +.diGA\} +.el\{\ +.ie\\n(cn<2\{\ +'chfo 32000 +'chfx 32000 +'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Be +.el.tl \\*(Bo +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'bp\} +.el.mf\} +.FE +.. +.demf +.ie\\n+c<=\\n(cn .hd +.el\{\ +.po\\n(cou +.lt 6.63i +'chfo 32000 +'chfx 32000 +'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Be +.el.tl \\*(Bo +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'bp\} +.. +.defn +.ie\\nx .ne \\n(rcv-2v +.el.ne \\n(rcv +.if\\n(fn .AB"Nesting of footnotes is a no no" +.nrfn1 +.daFN +.ev1 +.ie\\n+x=1\{\ +.sp 10p +\s-5\l'5P\(ul'\s+5 +.br\} +.el.sp \\n(srv +.fi +.ad +.. +.\" REFER macros .... citations +.nr se 3u \" space to indent in emms +.de [] +.][ \\$1 +.. +.de ][ +.if \\$1>5 .tm Bad arg to [] +.if !"\\*([O"" .if !\\n([O .as [O . +.[\\$1 +.. +.ds RB ".RE +.ds [. " [ +.ds .] ] +.if n .ds [o "" +.if n .ds [c "" +.if t .ds [o \(lq +.if t .ds [c \(rq +.\" the next lines deal with the problem of .[1] or [1]. +.\" refer will write "linexxx\*(<.[1]\*(>. +.\" and either "<." or ">." should produce the .; +.\" similarly for , +.ds >. . +.ds >, , +.de [5 \" tm style +\\*([A, \\f2\\*([T\\f1, +.ie \\n(TN \\*([M. +.el UCLA Computer Science Department internal memorandum (\\*([D). +.br +.. +.de [0 \" other +.if !"\\*([A"" \\*([A, +.if !"\\*([O"" \\*([O +.if !"\\*([D"" \& (\\*([D). +.br +.. +.de [1 \" journal article +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\*([o\\*([T,\\*([c +\\f2\\*([J\\f1\c +.if !"\\*([V"" .if n \& Vol.\&\c +.if !"\\*([V"" \& \\f3\\*([V\\f1\c +.if !"\\*([N"" (\\*([N)\c +.if !"\\*([P"" \{\ +.ie \\n([P>0 , pp.\c +.el , p.\c +\& \\*([P\c\} +.if !"\\*([I"" .if "\\*([R"" , \\*([I\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.de [2 \" book +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\f2\\*([T,\\f1 +\\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([G"" Gov't. ordering no. \\*([G. +.if !"\\*([O"" \\*([O +.br +.. +.de [4 \" report +.if !"\\*([A"" \\*([A, +\\*([o\\*([T,\\*([c +\\*([R\c +.if !"\\*([G"" \& (\\*([G)\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.de [3 \" article in book +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\*([o\\*([T,\\*([c +.if !"\\*([P"" pp. \\*([P +in \\f2\\*([B\\f1\c +.if !"\\*([E"" , ed. \\*([E\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.\" define warning that mX does not support references as footnotes +.de ]- +.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer' +.. +.de ]< +.\" define the real ]- next-reference macro +. de ]- +. rm [V [P [A [T +. rm [N [C [B [O +. rm [R [I [E [D +. rf +\\\\*([F. \c +\\.. +.\"now start the reference subsection +\\*(RB +.rb +.. +.de ]> +.re +.. +.de ]] +this is never +executed +and just +uses up an end-of-file +bug. +.. +.de TS +.sp +.. +.de TE +.sp .25v +.ce +\\$1 +.sp .5v +.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.el.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.. +.de ca +.sp .5v +.ce +\&\\$1 +.sp 8p +.. +.de CT +.if \\n(ff .F0 "\\$1" "\\n%" +.. +.nr sd 1i/24u \" # of inches to space between references (used as u). +.nr sf 1.66P \" space to indent for paragraph (used as u). +.nr sg 1u \" # of spaces needed before trap to start paragraph(used as v). +.nr sh 0u \" # of spaces done to start a new paragraph (used as v). +.nr si 1u \" # of spaces used to start an example (used as v). +.nr sj 1.66P \" space to indent for an example (used as u); +.nr sn 1.66P \" amount of space to indent for list (used as u). +.nr so 1P \" amount of space to temp indent for each list entry (used as u). +.nr sp 1i/12u \" spacing for each element of list (or sublist) (used as u). +.nr sa 1v \" # of spaces to do before subtitles (used as u). +.nr se 3u \" # of spaces to indent for a reference (used as ems). +.nr sm 1i \" # of spaces of need to do a subtitle (used as u). +.nr fv 3 \" set font variable for subtitles to Helvetica +.nr si 1u \" # of spaces used to start an example (used as v). +.nr sk 1u \" # of spaces left at the end of an example (used as v); +.deRT +.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.el.ta .25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.. +.RT +.EQ +delim $$ +.EN +.ds MF \f(LGMETA\%FONT\fP +.ds TB \fITUG\%boat\fP +.ds BZ B\o'e\(aa'zier +.ds TX T\v'+.2m'\h'-.1m'E\h'-.1m'\v'-.2m'X +.ds LT L\v'-.15m'\h'-.3m'\s-2A\s+2\v'.15m'\h'-.1m'T\v'.2m'\h'-.10m'E\h'-.10m'\v'-.2m'X +.ds BT B\\h'-0.05m'\\s-2I\\h'-0.025m'B\\s0\\h'-0.08m'\\*(TX +.ds pS P\s-2OST\%\s0S\s-2CRIPT\s0 +.ds P1 \f2P\fP\v'.2m'\s-3\f11\fP\s+3\^\v'-.2m' +.ds P2 \f2P\fP\v'.2m'\s-3\f12\fP\s+3\^\v'-.2m' +.ds P3 \f2P\fP\v'.2m'\s-3\f13\fP\s+3\^\v'-.2m' +.ds P4 \f2P\fP\v'.2m'\s-3\f14\fP\s+3\^\v'-.2m' +.en +.LL 39.00P +.ls 1 +.ds BL ''%'' +.hy 14 +The next page begins the paper. The macro package I use cannot start +double columning until AFTER some text is printed.. +.pn 1 +.bp +.MC 2 18.75P 1.5P 1i +.mk xx +\v'-1v'\l'18.7P' +.sp |\n(xxu +\s+2Environment for Translating +.br +\*(MF to \*(pS\s0 +.sp 3p +.ti 1.66P +Shimon Yanai and Daniel M. Berry +.sp 8p +\fBAbstract\fP +.PP +This paper describes a program, \fHmf2ps\fP, that translates a +\*(MF font definition into a definition for the same font in the +\*(pS language. \fHmf2ps\fP is constructed out +of the part of the \*(MF program that extracts the envelopes of the +letters; these envelopes are converted into \*(pS outlines. +.su "1\ \ \ Introduction" +.PP +This paper describes a program, \fHmf2ps\fP, +that takes from a \*(MF +.[ +knu86 +.] +.[ +knu87 +.] +program for a font all the necessary information in order to +create an equivalent \*(pS +.[ +PostScript language reference manual +.] +font definition. The program makes use of the front end of the +\*(MF program to extract the envelopes of the letters to produce the +\*(pS outlines. What makes this process natural is that both \*(MF and +\*(pS make liberal use of \*(BZ curves to describe non-circular +curves. +.pp +By producing this translator, it is hoped to be able to produce from +\*(MF fonts \*(pS outline fonts which are more compact than the +bitmapped fonts produced by the \*(MF program. Certainly the outline +fonts are more easily scaled to other magnifications and possibly even +other design sizes than are bitmaps. Moreover, doing so makes fonts +heretofore available only on \*(TX +.[ +knu84 +.] +and other DVI-based formatters, +available on \fHditroff\fR +.[ +Ker82 +.] +and other formatters which have evolved, +or have been designed, for use with \*(pS printers. This paper, which is +typeset by \fHditroff\fR, uses a \*(pS version of the +logo font in order to print the word \(lq\*(MF\|\(rq in the same appearance as +in \*(TX-generated documents. +Moreover, these new \*(pS outline fonts can be used in \*(TX also! One +needs only the +T\v'+.2m'\h'-.1m'E\h'-.1m'\v'-.2m'X\v'+.2m'\h'-.1m'P\h'-.1m'\v'-.2m'S +.[ +bechtolsheim +.] +software. +.pp +The organization of this paper is as follows. Section 2 presents the +background of this work. Section 3 explains the rationale behind +building the translator and describes a previous attempt at writing the +translator and an approach to avoid. The software engineering aspect of +the translator is described also in Section 3. The details of the +implementation are exposed in Section 4. Section 5 describes the +operation of the program. Section 6 evaluates the results. Finally +Section 7 describes improvements to the translator that are left for +future work. +.su "2\ \ \ Background" +.PP +Typesetter formatting systems such as \*(TX and \fHditroff\fP use fonts +as raw material. The formatters accept mixed text and commands as input +and produce output, which, if sent to the laser printers or typesetters, +yields formatted text printed on pages. The laser printers and +typesetters use fonts, i.e., sets of printable patterns, one per +character, in various representations in order to cause the desired +characters to appear on the printed form. For some printers, bitmaps +are used, with 1's representing inked dots and 0's representing +non-inked dots. Other printers accept commands that cause drawing of +the characters, the printer providing the inked dots according to the +drawing commands. One such popular command language is \*(pS, and its +usual use is to specify the outline of the character with the +interpreting printer filling in the outline with ink. One popular +method of describing fonts is with the \*(MF language, in which +declarative definitions of how to paint the characters are given in +terms of pen path and pen shape. Another popular method is the same +\*(pS that many printers accept. The prime difference is that the \*(MF +program translates the font definitions into bitmaps prior to sending +the font to the printer while a \*(pS printer translates the outlines +into bitmaps at the time of printing. Interestingly, both the \*(MF +language and the \*(pS language use \*(BZ curves for describing the +curves followed by the pen or the outlines. As usually configured +these days, \*(TX uses bitmapped fonts in the Computer Modern family +generated by \*(MF, and \fHditroff\fP uses \*(pS outline fonts supplied +by Adobe. +.pp +The subsequent subsections delve deeper into these issues in order to +be able to state the goal of this paper in the next section. +.Su "2.1\ \ \ Fonts, design sizes, and magnifications." +As mentioned, fonts are the raw material of typesetting. A font is a +set of printable patterns, one for each character, that causes printing +of that character in a particular recognizable style on the page. As +mentioned, these patterns can be represented by bitmaps or drawing +instructions. +.pp +Characters come in various sizes. There are two independent notions of +sizing for fonts, point size or design size and magnification. The +\fIdesign size\fP is the size at which the character is designed to be used +and is, in well-designed text, the size in which the character appears +in final, printed copy. Design size is +usually expressed in units of points, which are each approximately 1/72 +of an inch. Most normal text in books, newspapers, and magazines is +printed in 10 point type. Headlines are larger, perhaps as large as 30 +points. The \fImagnification\fP of a font is the inverse of the ratio +between the design size of the character and the size of the +character as it emerges on the printer, the assumption being that the +final copy is a photo reduction of the printed copy. Thus, if photo +reduction halves linear dimensions, one prints with magnification 2. +If everything is done right, then after reduction, the letter appears at +its design size. +.pp +A 10 point design sized font printed at mag\%ni\%fi\%ca\%tion 2 is similar to +but not quite the same as a 20 point version of the same font. +For example, the serifs on a large point size are smaller than they would +be if strict linear magnification were used. Other proportions, e.g., of +x-height to cap-height and of width to height, are also +different. While many purists, Knuth +included, insist on using a different pattern for each design size, +many people accept magnification as yielding acceptable fonts at other +point sizes. If the unit of magnification is not too big the results +are acceptable even to many purists. +.Su "2.2\ \ \ Problems with bitmapped fonts." +A bitmap for a character is a rectangular array of bits covering the +so-called bounding box or frame that exactly contains a letter. Figure +1 shows a low resolution bit map for the letter \(lqN\(rq in a sans +serif font. The inked squares or pixels are denoted by \(lq1\(rq bits +and the uninked pixels are denoted by \(lq0\(rq bits. +.fs +.F+ +figure fig1.ps +.F- +.ca "Figure 1" +.fe +The low resolution example of Figure 1 illustrates a major problem +with bitmapped fonts. Curved lines and straight lines that are neither +vertical nor horizontal cannot be represented exactly by a rectangular +pattern of pixels. One is forced to approximate them with rectangular +steps. At high resolution, e.g. above 1000 or so, the human eye cannot +see the steps, but at low resolution the steps are quite apparent. +Visible steps are called \(lqjaggies\(rq after the jagged edges. +.pp +Bitmaps for a font must be built for each design size, magnification, +and resolution. If the resolution is fixed, as is the case on most +printers, a bitmap must be built for each design size and +magnification. An attempt to use a given bitmap at a larger design +size or magnification by just enlarging the area of each dot yields a +bad case of jaggies. +.Su "2.3\ \ \ \*(MF and its environment." +.ft 1 +\*(MF, a language for the specification of fonts or typefaces, has been +used to provide fonts for the \*(TX family of typesetting systems. A +\*(MF user writes a program for each letter or symbol of an alphabet. +These programs are different from the usual computer programs, because +they are essentially declarative rather than imperative, using an +algebraic language to describe the center stroke or edges of the characters. The +description of a letter in \*(MF is a set of equations describing the +strokes. When combined with parameters describing the pen shape and +size, one gets a full description of a letter. Sizes and shapes of pen +nibs can be varied in \*(MF and the characters can be built up in such +a way that the outlines of each stroke are precisely controlled. Herein +lies the advantage of \*(MF; a font is easily specified and variations +are obtained by varying parameters. +.pp +Currently, the program that converts a set of \*(MF font descriptions +into a bitmapped font translates the description of a letter combined +with a point size and a magnification into a bitmap. This bitmap can be +sent to the printer to get a letter on the page. Herein lies a +disadvantage of \*(MF; a bit map must be kept for each point size and +magnification, and this can require a lot of space. +.Su "2.4\ \ \ The \*(pS language." +The \*(pS language is an interpretive programming language with +graphics capabilities. \*(pS's extensive page description capabilities +are embedded into a general-purpose programming language framework. The +language includes a conventional set of data types such as numbers, +arrays, and strings, control primitives such as conditionals, loops and +procedures, and some unusual features such as dictionaries. In most +\*(pS fonts, each letter is described by an imperative program tracing +the outline of the letter. This tracing may include curves given as +\*(BZ curves, straight lines, arcs, etc. A \*(pS printer interprets +this outline program to draw and fill in the letters on the page. Some +consider the imperative nature of \*(pS to be a disadvantage in +comparison to \*(MF's declarative nature. The main advantage of \*(pS +relative to \*(MF is that one needs to keep only the outline. If, as in +the usual case, the outline is specified in terms of a fixed path +through Euclidean two-space, this outline may be scaled arbitrarily to +yield any magnification. The scaling is done by the \*(pS interpreter +at the printer. Thus the different magnifications do not require any +additional storage space. Actually, the outlines are kept as if they +were for the Adobe-standard 1000 dots +per emm, which at a design size of 10 points amounts to 7200 dpi. +Because a typical phototypesetter has a maximum resolution of +about 2500 dpi, the outlines are said to be arbitrarily +scaleable. If the outlines are kept, as are many \*(MF definitions, as +paths through points calculated by the outline program, then it is +possible to, say, make serifs grow more slowly than linearly. It would +then be possible to have one \*(pS font scaleable to all design sizes. +Generally, outline fonts are not written this way, so that strictly +speaking they are scaleable only to all magnifications. +.pp +In addition, the \*(pS language has a way to work with bitmapped fonts. +While the \*(pS printer can scale them before printing, the end result +is that each of the fixed number of dots in the bitmap is made larger +or smaller. Since the human will see larger dots as jagged lines, such +fonts are not really considered scaleable. +.Su "2.5\ \ \ \*(BZ curves." +Both \*(MF and \*(pS use \*(BZ cubics to specify curves. For the \*(BZ +form, four points are used, the start point, the end point, and two +control points, as shown in the top half of Figure 2. +The tangent vectors of the +endpoints are determined from the line segments \*(P1\*(P2 and +\*(P3\*(P4. The mathematical introduction of the \*(BZ form +when given four points \*(P1, \*(P2, \*(P3, and \*(P4 is +.sp +.in +.125i +$z(t)~=~(1-t) sup 3 "\*(P1" ~+~3t(t-1) sup 2 "\*(P2" ~+~3t sup 2 (1-t) "\*(P3" ~+~t sup 3 "\*(P4" ,$ +.sp +.in -.125i +for $0~<=~t~<=~1$. +.pp +Two characteristics of the \*(BZ form tend to make it widely used in +graphics. First, by choosing the control points one can easily mold the +curve to a desired shape. Second, the four control points taken in another +order define a convex polygon, \*(P1 \*(P2 \*(P4 \*(P3 \*(P1 in this case, +the \fIconvex hull\fR\h'-.05m', which bounds the \*(BZ +curve. The convex hull is useful in clipping a curve against a window. +.pp +When a \*(MF user specifies a path, \*(MF creates a list of knots and +control points for the associated cubic spline curves. +If the user has not specified the control points explicitly, \*(MF +itself finds some for the splines of a curve, while \*(pS requires all +the four points to be explicitly given. +.fs +.F+ +figure fig2.ps +.F- +.ca "Figure 2" +.fe +.su "3\ \ \ \*(MF to \*(pS compiler\(em why\ and\ how" +.ft 1 +.PP +This section describes a major performance problem with \*(MF-generated +fonts that perhaps can be solved by translating them into \*(pS fonts. +The goals of this translation are established. Based on these goals, a +particular approach is adopted to engineer the software largely from +existing components. +.Su "3.1\ \ \ A problem with \*(MF-generated bitmapped fonts." +.ft 1 +In \*(MF, one gets one bitmap per point size and magnification. The +size of these bitmaps grows as the square of product of the design size +and +the magnification and requires a large storage space. Files that are +sent to the printer will be large, especially if lots of different +point sizes or magnifications are used. In \*(pS with outline fonts, +there is one outline per character which can be scaled arbitrarily to +any magnification that might be needed. Moreover, \*(pS outline fonts +are generally more compact than bitmapped fonts. For example, an +enclosed rectangle is represented by its four corner points rather than +by all the bits enclosed by the rectangle. +.pp +Certainly the outline fonts are more easily scaled to other +magnifications. By scaling the bitmapped fonts downward, too much +information is lost, and scaling upward introduces the jaggies. +Moreover, the pixel array is device dependent; it is valid for output +devices of only one particular resolution and one choice of possible +data values per pixel. Scaleable fonts have a great advantage \(em you +need only one font description file for all magnifications of that font. +Actually, \*(pS outline fonts are more scaleable even than the \*(MF +originals for another reason. In, +.[ +Knu84 +.] +it is said, \(lqCaution: +before using this `\fBat\fR' feature (i.e. scaling downward or upward) you +should check to make sure that your typesetter supports the font at the +size in question; \*(TX will accept any \(L<desired size\(L> that is positive +and less than 2048 points, but the final output will not be right +unless the scaled font really is available on your printing +device.\(rq Getting \*(pS outline versions of \*(MF fonts is possible +since both are based on \*(BZ curves. Doing so makes fonts heretofore +available only on \*(TX and other DVI-based formatters available on +\fHditroff\fR and other formatters which have evolved to or have been +designed for use with \*(pS printers. +.Su "3.2\ \ \ Goals." +Based on the observations of Section 3.1, +the goal of this research is to produce a \*(MF to +\*(pS compiler, \fHmf2ps\fP. Its operational requirements are items 1 +through 5: +.l1 1 +.le +It must be possible to translate any legitimate \*(MF font definition +at any given design size into a \*(pS outline font. +.le +The resulting \*(pS outline font should be arbitrarily scaleable. +.le +The resulting fonts should look like the bitmapped fonts when printed +on the same printer. +.le +The resulting \*(pS outline font should be more compact \fIwhen sent to +the printer\fP than a \*(pS version of the \*(MF-generated bitmapped +font. +.e1 +.sp .5v +The fourth requirement deserves a bit of explanation and qualification. +First note that what is compared is what is sent to the printer. +Certainly there are compressed versions of the bitmapped fonts that +reduce the disk storage requirements of the bitmapped fonts. However, +they must be uncompressed before sending them to most printers. It is the +printer's storage that is limited; generally disk space is in +abundance. However, since printers these days are general purpose +computers, what a printer accepts may in fact be a compression that it +has been programmed to undo. +.pp +Now for the case in which disk space is of concern, the comparison +should still be relative to printable versions. There exist algorithms, +e.g. that of Lempel and Ziv +.[ +lempel ziv +.] +that can be used to compress \*(pS outline fonts which are, after all, +just ASCII files. Therefore, in order not to have a contest between +compression algorithms, the uncompressed versions are compared. Furthermore, +in order not to have a contest between different kinds of printers that may +have differing font representations, \*(pS outline fonts are compared to +\*(pS bitmapped fonts. When +considering disk space, the fact that one bitmapped font is needed for +each magnification is taken into account. Thus, the interest is in +comparing the size of a scaleable outline font to the total storage for +the bitmapped fonts for all magnifications of a given design size. +.cl +.le +The resulting \*(pS outline font should be more compact than the total +of the sizes of the \*(pS versions of the \*(MF-generated bitmapped +fonts at each available magnification. Even this comparison is not +completely fair since only specific magnifications are provided, while +the \*(pS font is arbitrarily scaleable. +.dl +.sp .5v +.pp +Observe finally, that the comparison is against mag\%ni\%fi\%ca\%tions +of a single design size since purists would argue that there should +be a different outline font for each design size. +Since there are those that do not +require this purity, the various design sizes will be compared also. +.pp +The software engineering goal is item 6. +.cl +.le +\fHmf2ps\fP should be written as much as possible using the existing +\*(MF program both to save work and to ensure that all \*(MF-acceptable +font definitions are handled. +.dl +.sp .5v +The evaluation of the results will be +done relative to these goals. +.Su "3.3\ \ \ Previous attempts." +Leslie Carr wrote a collection of programs to produce \*(pS outline +fonts from \*(MF fonts in 1987. Carr's programs take as input the +\fIlog\fR output file of \*(MF which contains a description of all +the paths that \*(MF traces out in drawing a character. +.pp +Carr has problems of information loss as a result of not having entered +into the \*(MF program. This is the reason why Carr's characters are +poor looking. In, +.[ +Car87 +.] +Carr observes, \(lqIn the \&\fCcmr10\fP font, +the \fIcrisp\fP pen has diameter zero, so serifs have square corners. In +the \&\fCcmtt10\fP font, \fIcrisp\fP is set to a larger value and the serifs +end in semicircles. Because the shape of the current pen can NOT be +taken into account in \*(pS, these differences in the characters shapes +will not be seen. This is a \fBfundamental\fR problem: given a path $p$ +and a pen $q$ (whose shape is also an arbitrary path), \*(MF +effectively envelopes $p$ with respect to the shape of $q$; \*(pS can +do nothing other than stroke it to produce a line of constant width. +This incompatibility comes to light when the width of the pen is +significant to the shape of the character\(rq. +.pp +In order to avoid this problem, \fHmf2ps\fP finds the internally +generated envelope, which is used as the boundaries of the inked +region, and uses this envelope as the outline. It does not matter, then, +what the pen path and the pen shape are. +.pp +More recently, during the time that the work described herein was being +done, there were other efforts with similar goals. +.pp +Doug Henderson +.[ +henderson outline fonts +.] +obtained outline font characters by modifying the \&\fCendchar\fP macro, +which is called for each character after the bitmap is generated, to take +the bitmap for the character and white out all but the bits on the edge. +The number of bits left on the edge is varied according to the resolution +of the bitmap. These outlines, being bitmapped, are just as unscaleable as +are the bitmaps for the filled-in characters. +.pp +Neil Raine and Graham Toal +.[ +toal private +.] +have developed software that takes the bitmaps and rediscovers the +outlines by tracing the pixels. The outlines that are used as the basis +for \*(pS fonts are, for the most part, generated from bitmaps at 2400 +dpi. They first generate RISC OS outline fonts which are screen fonts +for Acorn's Archimedes RISC computer. These are true scaleable +outlines. Then, these outlines are converted into \*(pS format. Toal +says that the the quality of the fonts produced is not too great at low +resolutions because of shortcomings in Adobe's rendering algorithm. He +adds that at 1200 dpi on a phototypesetter, they are indistinguishable +from \*(MF-generated bitmapped fonts. These authors suspect that +information that is critical for good appearance is lost when tracing +an outline on a bitmap generated from a mathematically described +envelope. Better results should be obtainable using the original +envelope. +.pp +John Hobby +.[ +hobby postscript output system +.] +has developed a program called MetaPost, which translates from an extension +of \*(MF into \*(pS cubic splines and commands. +His goal was to turn \*(MF into a system for +typesetting general graphics, including embedded text. His approach, +similar to ours, was to modify the \*(MF program into what he desired. +Befitting his more general goals, besides modifying the output, he has +added new commands to the input language. Moreover, his translation appears +to be a direct mapping from a \*(MF command sequence to a +\*(pS command sequence. +The result is a program more powerful than \fHmf2ps\fP. +It will be interesting to compare fonts produced by MetaPost and +\fHmf2ps\fP for appearance and performance. +.Su "3.4\ \ \ Methodology." +There are a number of ways to build the compiler. They include +.l1 1 +.le +writing the whole compiler from \*(MF to \*(pS from scratch: This has +the advantage that one does not have to get into another person's +software, which is not very pleasant when the software is so big. On +the other hand, one would have to treat the whole job of turning +mathematical equations and any arbitrary pen shape into outlines. +.le +using the \*(MF output as was done by Leslie Carr: +.[ +Carr +.] +This has the advantage of not requiring delving into another's +software, but the generated information is not enough if one wants no +deviations from the originals. +.le +getting into the \*(MF program: This requires examining the internals +of the \*(MF program. However, \*(MF and \*(pS make liberal use of +\*(BZ curves to describe non-circular curves. This fact makes the +translation process natural. For each specified path, \*(MF creates +control points for the associated cubic spline curves before +calculating the bit map. \*(MF also calculates the edge offsets implied +by the pen shape. Using the necessary information one can get a new set +of control points that define \*(BZ curves and lines that are needed to +build the \*(pS outline fonts. +.e1 +.Su "3.5\ \ \ Software engineering of solution." +The idea is to split the \*(MF program into front end and back end. The +front end takes \*(MF specification of a character, magnification, and +point size, and produces the envelope, i.e., the outline of the +character, and the back end fills the envelope with bits. Taking the +existing front end and writing a new back end that converts the +envelope into a \*(pS specification of an outline is our method of +producing \fHmf2ps\fP. The bit-filling process will be done by the +printer. +.pp +In order to make \*(pS fonts arbitrarily scaleable, we have to ask the +\fHmf2ps\fP program to use a very large magnification, at least to try to +match the grid on which Adobe plots the points of its outlines. Adobe plots +its characters on a $1000~times~1000$ grid. Thus, Adobe's resolution is +1000 dpm (dots per em), which for design size 10 points is 7200 dpi. +Unfortunately, \*(MF, and thus \fHmf2ps\fP accepts resolutions only up to +3000 dpi. The results should be sufficient to produce fonts scaleable +up to magnification 7 or 8, which is a reasonable range in +typesetting. +.pp +This approach helps meet goal 6 because the original unchanged \*(MF +program is used. Thus, exactly the same input is accepted as in the +\*(MF program. There is some extra frosting obtained by the chosen +approach. The program for translating \*(MF to \*(pS is actually a bit +of an interactive environment because the new back end is an extension +of the existing one. This existing back-end provides an interpreter +that executes a \*(MF character definition and displays the defined +character on the screen. Figure 3 +shows the dump of a screen containing several windows, one showing a +\*(MF definition, another showing the result of its interpretation, and +a third containing the \*(pS translation of the definition in the first +window. If software to interpret \*(pS definitions were available here, +a fourth window could be set up showing the result of interpreting the +translation of the third window. This would allow comparison of the +character's appearances without having to print them on paper. +.su "4\ \ \ The program" +.PP +In the following discussion, the \*(MF program is often called just +\(lq\*(MF\|\(rq. +.pp +The \*(MF program has been written so that it can be made to run +efficiently in a wide variety of operating environments by making +comparatively few changes. Such flexibility is possible because the +program is written in the \&\fCWEB\fR language which is at a higher level +than Pascal. The preprocessing step that converts \&\fCWEB\fR to Pascal +is able to introduce most of the necessary refinements. Semiautomatic +translation to other languages is also feasible, because the program +does not make extensive use of features that are peculiar to Pascal. +.pp +The program has two important variations: First, there is a long and slow +version called \s-1\fHINIMF\fR\s0, which does the extra calculations needed to +initialize \*(MF's internal tables. It has to be run first. It +initializes everything from scratch without reading a base file, and it +has the capability of dumping a base file. Secondly, there is a shorter and +faster production version called \s-1\fHVIRMF\fR\s0, which cuts the +initialization to a bare minimum. It is a virgin program that needs +to input a base file in order to get started. \s-1\fHVIRMF\fR\s0 typically has +more memory capacity than \s-1\fHINIMF\fR\s0, because it does not need the +space consumed by the dumping and undumping routines, etc. +.pp +In order to generate a compiler that translates \*(MF to \*(pS, +additional external procedures and functions were added to the \*(MF +program so that it runs exactly the same except that when it asks for +an output file name, it asks for an additional name, for the extra +output file that is to contain the \*(pS outlines. Those changes were +made on the Pascal version of the \s-1\fHVIRMF\fR\s0, and were compiled later +with \*(MF's library files. +(It was a complete oversight on our part not to have modified the +\&\fCWEB\fP version of \s-1\fHVIRMF\fP\s0.) +A few extra lines were added to the +macro file, \&\fCplain.mf\fR. These act as flags, identifying that +\*(MF has entered some of the macros. +.Su "4.1\ \ \ Basic idea." +To specify a character in \*(MF, one specifies either +an envelope (outline) or +a center-line path and a pen head. +For the former, \*(MF just fills the envelope with bits. +For the latter, \*(MF pretends that it is drawing the character +with a pen of specified +head shape following the specified path, i.e., the center of the head +stays on the path. The distance from the center-line path and outer +edge of ink trail left by pen head is called the \fIoffset\fR\h'-.1m'. +So, for a character, \*(MF follows the center-line path to calculate the path +of offset points, i.e., the envelope, and then fills the envelope with +bits. +In either case, \*(MF ends up filling an envelope. +.pp +We need to break \*(MF into a front end and a back end at the point +just after the envelope has been calculated. Then we provide a new back +end that converts the envelope into \*(pS instead of filling the +envelope with bits. Note then that the \*(pS printer will fill in the +envelope with bits as it fills the path obtained from the envelope. +.pp +The following subsections describe the data and the calculations +involved in the new back end. +.Su "4.2\ \ \ Data structures." +The main data structures that \*(MF keeps for a character are the +center-line path, the pen shape, and the envelope path. There are a few +operations that can be performed on paths, called transformations. +.SU "4.2.1\ \ \ \*(MF's path representation." +.ft 1 +When a \*(MF user specifies a path, \*(MF creates a list of knots and +control points for the associated cubic spline curves. If the knots are +$z sub 0 ,~z sub 1 ,...,~z sub n$, there are control points $z sub k +sup +$ and $z sub k+1 sup -$ such that the cubic splines between the +knots $z sub k$ and $z sub {k+1}$ are defined by the \*(BZ formula +.sp +.in +.4375i +$z(t)~=~B(z sub k, z sub k sup + , z sub k+1 sup - , z sub k+1 ;t)$ +.sp .2v +\h'\w'$z(t)~$'u'$=~(1~-~t) sup 3 z sub k ~+~ 3t(t~-~1) sup 2 z sub k sup +$ +.sp .2v +\h'5P'$+~ 3t sup 2 (1~-~t)z sub k+1 sup - ~+~ t sup 3 z sub k+1$, +.sp +.in -.4375i +for $0~<=~t~<=~1$. +.pp +There is a 7-word node for each knot $z sub k$, containing one word of +control information and six words for the $x$ and $y$ coordinates of $z +sub k sup -$ and $z sub k$ and $z sub k sup +$. The control +information appears in the \fIleft_type\fR and \fIright_type\fR +fields and they specify properties of the curve as it enters and leaves +the knot. There is also a \fIlink\fR field, which points to the +following knot. Before the \*(BZ control points have been calculated, +the memory space they will ultimately occupy is taken up by information +that can be used to compute them. The \*(MF \fImake_choices\fR +procedure chooses angles and control points for the splines of a curve +when the user has not specified them explicitly. +.SU "4.2.2\ \ \ \*(MF's path transformation." +.ft 1 +When \*(MF digitizes a path, it reduces the problem to the special case +of paths that travel in the \fIfirst octant\fR directions; i.e., each +cubic $z(t)~=~(x(t),y(t))$ being digitized will have the property that +$0~<=~y prime (t)~<=~x prime (t)$. This assumption makes digitizing +simpler and faster than if the direction of motion has to be tested +repeatedly. When $z(t)$ is cubic, $x prime (t)$ and $y prime (t)$ are +quadratic, hence each of the four polynomials, $x prime (t)$, $y prime (t)$, $x +prime (t) - y prime (t)$, and $x prime (t) + y prime (t)$, crosses +through $0$ at most twice. If we subdivide the given cubic at these +places, we get at most nine subintervals. In each of these intervals +each of $x prime (t)$, $y prime (t)$, $x prime (t) - y prime (t)$, and +$x prime (t) + y prime (t)$ has a constant sign. The curve can be +transformed in each of these subintervals so that it travels entirely +in first octant directions, if we exchange $x$ and $- x$, $y$ and $- +y$, and $x$ and $y$ as necessary. +.Su "4.3\ \ \ Pens and envelopes." +There are two kinds of pen heads that may be used, polygonal and +elliptic. There are a number of trade-offs involved in their use. The +first subsection treats the case of an $n$-vertex polygonal pen shape +and the second treats the case of an elliptical pen shape. Both +describe the influence of pen shape on the envelope of the font. +.SU "4.3.1\ \ \ Polygonal pens." +Suppose that the vertices of a polygon are $w sub 0 ,~w sub 1 ,...,~w +sub n-1 , ~w sub n ~=~ w sub 0$ in counterclockwise order. A convexity +condition requires that each vertex turns left when one proceeds from +$w sub 0$ to $w sub 1$ $...$ to $w sub n$. The envelope is obtained if we +offset a given curve $z(t)$ by $w sub k$ when that curve is traveling +in a direction $z prime (t)$ lying between the directions $w sub k - w +sub k-1$ and $w sub k+1 - w sub k$. At times $t$ when the curve +direction $z prime (t)$ increases past $w sub k+1 - w sub k$, \*(MF +temporarily stops plotting the offset curve and inserts a straight line +from $z(t) + w sub k$ to $z(t) + w sub k+1$; notice that this straight +line is tangent to the offset curve. Similarly, when the curve +direction decreases past $w sub k - w sub k-1$, \*(MF stops plotting +and inserts a straight line from $z(t) + w sub k$ to $z(t) + w sub +k-1$; the latter line is actually a retrograde step, which will not be +part of the final envelope under \*(MF's assumptions. The result of +this consideration is a continuous path that consists of alternating +curves and straight line segments. The segments are usually so short, +in practice, that they blend with the curves. +.SU "4.3.2\ \ \ Elliptical pens." +To get the envelope of a cyclic path with respect to an ellipse, \*(MF +calculates the envelope with respect to a polygonal approximation to +the ellipse. This has two important advantages over trying to obtain +the exact envelope: +.l1 1 +.le +Polygonal envelopes give better results, because the polygon has +been designed to counteract problems that arise from digitization; the +polygon includes sub-pixel corrections to an exact ellipse that make +the results essentially independent of where the path falls on the +raster. +.le +Polygonal envelopes of cubic splines are cubic splines. Hence it is +not necessary to introduce completely different routines. By contrast, +exact envelopes of cubic splines with respect to ellipses are +complicated curves, more difficult to plot than cubics. +.e1 +.Su "4.4\ \ \ Taking out data." +After \*(MF has calculated the paths and the offsets, it is ready to +send the values to the \fImake_moves\fR procedure which generates +discrete moves for any four points that represent a \*(BZ curve. This +is done for each one of the cyclic paths from which the letter is built. +When the offsets are zero, this is done by the \fIfill_spec\fR +procedure. Otherwise this is done by the \fIfill_envelope\fR +procedure. In the latter case, the line segments, which were discussed +earlier, should be taken out also in order to get smooth connections +between the different curves that the cyclic path is built from. +Because \*(pS describes any shape in terms of curves and lines, this is +the point to take advantage of \*(MF's calculations, i.e., when \*(MF +calls the \fImake_moves\fR procedure and when \*(MF draws line +segments for offset corrections. +.Su "4.5\ \ \ Processing the data." +The generated data are not ready yet to be used. First, we should +unskew, i.e., transform from the first octant back to the original, the +paths according to the octant that the paths were traveled in before +they were skewed. This unskewing is done by taking out the octant +number at the moment that the \fImake_moves\fR procedure is called +and then using \*(MF's \fIunskew\fR procedure that sets values $x +prime$ and $y prime$ to the original coordinate values of a point, +given an octant code and coordinates $(x,y)$ after they have been +mapped into the first octant and skewed; the new values are sent to the +\fIsend_p_s\fR procedure. This procedure has eight formal parameters +that are all used when sending a curve. When sending a line, +only four parameters are used, two to denote the start point and two to +denote the end point; the remaining four parameters are sent as zeros +so \fIsend_p_s\fR can distinguish whether a line was sent or a curve. +In the next step, \fIsend_p_s\fR unscales the numbers because \*(MF +works with units of scaled points, of which there are $2 sup 16$ in an +ordinary point. While unscaling, the values are +transformed in order to send them to the \*(pS dictionary +\&\fCFontBBox\fP command. After this pre-processing, +the data are sent to a temporary file. +.SU "4.5.1\ \ \ Getting more information." +When \*(MF calls the \fImake_moves\fR procedure, it does not have any +information on the role that this path is going to play, whether the +current cyclic path is going to be \fIfilled\fP or whether it will act as +a boundary of a region to be \fIerased\fP. +.pp +In order to distinguish between the cases, more information has to be +taken. This is done by copying the \&\fCplain.mf\fR file into a new +file named \&\fCmyplain.mf\fR and adding a few lines to it. The +additional code was added in order to identify \*(MF's use of the +macros. \*(MF uses the variables for date only once, when the program +is started, so it was decided to use them in the rest of the +program. +The \&\fCyear\fR is changed to $-1$ when \*(MF's \&\fCpen_stroke\fR +macro is applied on a cyclic path, i.e., in the characters such as +\(lqo\(rq, \(lqO\(rq, and \(lqQ\(rq, and to $-2$ when the \&\fCerase\fR +macro is called. The \&\fCmonth\fR is changed when the \&\fCfill\fR +macro is called. There are three kinds of paths: +.l1 1 +.le +paths to be \fIfilled\fP are processed using the \*(pS \&\fCfill\fR +command. +.le +paths to be \fIstroked\fP are processed using the \*(pS \&\fCeofill\fR +command. +.le +paths to be \fIerased\fP are processed using specialized procedures +which will be discussed later. +.e1 +.sp .5v +.pp +A letter cannot always be treated as one unit by means of the +\&\fCfill\fR and \&\fCeofill\fR commands. For instance, the letter +\(lqQ\(rq is built of two different paths, the first of which is +stroked and the second of which is filled. Generating the letter +using the \*(pS \&\fCeofill\fR command causes a hole in the image (see +Figure 4). +.fs +.F+ +figure fig4.ps +.F- +.ca "Figure 4" +.fe +So while generating a letter, fill mode can be changed for each cyclic +path. Moreover, when generating a letter whose paths should be filled, +it is not always possible to use just one \&\fCfill\fR command (see +Figure 5). +.fs +.F+ +figure fig5.ps +.F- +.ca "Figure 5" +.fe +When a \*(pS \&\fCfill\fR command is applied to a path that is composed +of more than one subpath, say two for the sake of simplicity, and one +subpath is inside the other and is drawn in a direction opposite to the +external one, the internal path is considered a hole and is not filled +(see Figure 6). +.fs +.F+ +figure fig6.ps +.F- +.ca "Figure 6" +.fe +So, if several paths are to be filled in this manner, the description +of each one of them should be ended with the \&\fCfill\fR command. +There is one more benefit to using this strategy: The \*(pS \fCcurrent +path\fR stack becomes empty after encountering any kind of \&\fCfill\fR +command. Therefore, using the \&\fCfill\fR command after each path can +help avoid \&\fCstack overflow error\fRs if all paths together are too +long. +.SU "4.5.2\ \ \ Treating erasing paths." +There are three methods of handling the problem of paths that should be +erased by \fHmf2ps\fP itself: +.l1 1 +.le +filling with white: Because erasing paths are built in order to erase +an existing filled area and \*(pS overlaps paths (i.e., a region is +shown in the color that was drawn last), erasing paths can be +implemented by filling those paths with white. This solution is the +easiest, but it works only if the background is white and the letter is +drawn in some level of gray. If one wants to draw a letter with +background other than white, the resulting appearance will not be correct. +.pp +.le +calculating new paths resulting from subtracting the erasing paths from +the previous filled paths: Such a solution can be global. However, it +costs a lot in terms of processing time and accuracy, because paths are +given implicitly by four points, and in order to calculate the new +paths, one should find the intersection points of \*(BZ curves, i.e., +to find points that lie on both \*(BZ curves, and then calculate new +curves, which are difficult to calculate from those points. +.pp +.le +using the \*(pS \&\fCeoclip\fR command: Be\%cause the letters are bounded +in a $1000~times 1000$ box, a primary square path whose segments are +$1000$ units long should be declared and after it all the erasing paths +should be listed. After relocating the erasing paths we are ready to +declare \&\fCeoclip\fR, which means that the clipping path is the +external primary one and the internal paths, the erasing paths, are +holes. This is an elegant solution that uses the power of the language +and is available in simple situations in which there is no intersection +between the erasing paths (see Figure 7). +If there were intersections, a little more +sophisticated use of the \&\fCeoclip\fR command would be needed. Relocation +of the erasing paths is done by the procedure \&\fCdoarrange\fR. +.e1 +.fs +.F+ +figure fig7.ps +.F- +.ca "Figure 7" +.fe +.pp +There are other problems caused by the erasing paths. Because the +erasing paths have segments in common with paths to be filled, \*(pS must +decide whether the common segments are in the clipping path or not. +\*(pS does not seem to have a consistent policy on that and it seems to +be that the decision is taken arbitrarily (see Figure 8). +.fs +.F+ +figure fig8.ps +.F- +.ca "Figure 8" +.fe +An attempt to resolve the clipping path problem led to the first author +sending the following electronic message (obviously, not as nicely +formatted as herein) to Glenn Reid of Adobe Systems, Inc. +.qb +.nf +From simon Tue Mar 21 13:22:32 1989 +To: greid@adobe.com +Subject: Problem in PostScript +.fi +.sp +Dear Mr. Reid +.sp +I have got a problem in understanding the PostScript +policy in determining \(lqwhat is in the clipping path\(rq. +I think there is a problem in the boundaries. +Here is an example that shows that problem: +.es +.ft C + 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 +.ee +.ft R +As you see, the problem is that on top of the shape, the line +which belongs to the upper \(lqhole\(rq in the clipping path and to the +current path ( to be filled ) is drawn, and on bottom of the +shape it is not. +.sp +This is happening both on the Apple Laser printer and on the +QMS-80. +.sp +I would be glad to have a reply from you. +.sp +.nf +Thanks in advance +Shimon Yanai +C.S Dep. +Technion +.fi +.qe +What Mr. Reid saw when he printed the \*(pS commands contained in the +message is reproduced in Figure 9. +.fs +.F+ +figure fig9.ps +.F- +.ca "Figure 9" +.fe +Mr. Reid replied with the following: +.qb +.nf +From: greid@adobe.com (Glenn Reid) +To: Shimon Yanai <simon@techunix> +Cc: greid@adobe.com +Subject: Re: Problem in PostScript +In-Reply-To: Your message of Wed, 22 Mar 89 ... +Date: Wed, 22 Mar 89 11:41:35 PST +.fi +.sp +The problem is that the path you are filling falls exactly on the edge +of the clipping path. This produces a zero-width area to fill, and +unfortunately it sometimes fills and sometimes does not with the +current fill algorithm. I believe that it is related to the direction +of the paths; if the paths are going in opposite directions along the +same line, it will fill with a one-pixel area, but if they are going in +the same direction, it will not fill. +I believe this has been fixed to be more consistent in Display +PostScript, for what it's worth. +.sp +Glenn Reid +.br +Adobe Systems +.qe +.pp +The idea of using opposite directions had been checked before sending +the letter, so the problem had to be solved within the back end of +\fHmf2ps\fP. The +erasing paths near the top of the letter had their $y$ coordinates +increased by 0.8 points, and those near the bottom had their $y$ +coordinates decreased by the same amount. This shift is invisible to +the human eye because the font definitions are in terms of hundreds of +points (see Figure 10). This solution was designed to work with most +existing \*(MF fonts. It is possible that there will be fonts that are not +treated well by this solution. +.fs +.F+ +figure fig10.ps +.F- +.ca "Figure 10" +.fe +.Su "4.6\ \ \ Optimization." +Optimization is done in order to make the description of the fonts +shorter and to save work in the \*(pS interpreter. This is done in +three ways: +.l1 1 +.le +not printing lines with length zero. As was said earlier, the \*(MF +program prints lines to connect offset points. There are times that +after rounding or truncating the output data, the start point and the +end point are equal. In such cases, the lines are eliminated. +.le +checking if the \*(BZ curve acts as a line. From the definition of the +\*(BZ curve, it is known that if the two control points lie on the line +that connects the start point and the end point, the curve is of degree +one. In such cases \fHmf2ps\fP generates a command to print a line from +the start point to the end point, thus saving space and avoiding +redundant calculations for the \*(pS interpreter. +.le +checking if a series of consecutive line segments are in the same line. +This is done by storing the segments in a buffer and checking whether a +new segment is collinear with the last stored. +.e1 +.Su "4.7\ \ \ Changed or added routines." +The following is a list of routines that were changed or added in order +to build \fHmf2ps\fP from \*(MF. +.in +1P +.LE +\fIprintchar\fP was modified to get character names. +.LE +\fIfixdateandtime\fP was modified to initialize variables that were used as flags in the macros. +.LE +\fIfillspec\fP was modified to send out data on splines. +.LE +\fIskewlineedges\fP was modified to send out offset lines. +.LE +\fIdualmoves\fP was modified to send out offset lines. +.LE +\fIfillenvelope\fP was modified to send out data on splines. +.LE +\fIdostatement\fP was modified to identify tokens that are strings. +.LE +\fImain\fP was modified to call the \fHmf2ps\fP procedure in the beginning and ending of the program. +.LE +\fIsendcurve\fP was added to unskew spline values and to send them to the next process. +.LE +\fIsendline\fP was added to unskew line values and to send them to the next process. +.LE +\fIok\fP was added to check if two lines are collinear. +.LE +\fIrestore\fP was added to restore the parameters of the last line. +.LE +\fIrecall\fP was added to recall values from the buffer. +.LE +\fIus\fP was added to convert the \*(MF scale so that a letter would fit the +Adobe standard $1000~times~1000$ bounding box. +.LE +\fIsend_p_s\fP was added to create a \*(pS file of lines and curves. +.LE +\fImakemoves\fP was modified to send out spline data. +.LE +\fIdump\fP was added to append information from the file named \&\fCf\fP to the file named \&\fCg\fP. +.LE +\fIcheckerase\fP was added to identify the file that contains \(lqerase\(rq commands, and their position within the file. +.LE +\fIdoarrange\fP was added to put erasing paths at the beginning of the file. +.LE +\fIprint_start\fP was added to signal the beginning of a new cyclic path to be processed. +.LE +\fIprint_end\fP was added to signal the end of the current cyclic path. +.LE +\fIinit_ps\fP was added to make initializations. +.LE +\fImakenewdef\fP was added to make initializations when more than one character +occurs in the input. +.LE +\fIcloseolddef\fP was added to close the last definition. +.LE +\fItini_ps\fP was added to handle the ending of the process. +.LE +\fIauxprintchar\fP was added to print characters. +.LE +\fIauxprint\fP was added to print strings. +.in -1P +.su "5\ \ \ Operation of \fHmf2ps\fP in a \fHU\s-2NIX\s0\fP environment" +.ft 1 +.PP +When invoked, +\fHmf2ps\fP +first asks for an output file name. For the example this file is called +\&\fCex1\fP. \fHmf2ps\fP then asks, +.ES +.fi +.na +\(lq\&\fCAre you creating the whole dictionary (y/n)?\fP\(rq. +.EE +.ad +If the answer is other than \(lq\&\fCy\fP\(rq +or \(lq\&\fCY\fP\(rq, it is considered \(lq\&\fCno\fP\(rq. If the +answer is \(lq\&\fCy\fP\(rq or \(lq\&\fCY\fP\(rq, then the whole +dictionary is created. This means that \fHmf2ps\fP creates a \*(pS +dictionary that includes entries for all the characters that are in +the input, e.g., \&\fCcmr10\fP set. This dictionary needs additional +definitions such as \fIleft side bearing, width, bounding box\fP, etc. +These definitions need information on character features that must be +calculated within the program. Otherwise, the whole dictionary is not +created and the program treats the input as a single character +definition that is to be translated into a \*(pS outline definition. +After \fHmf2ps\fP prompts \(lq\&\fC**\fP\(rq, we are in the \*(MF +environment. Now the user inputs +.ES +\s-1\\mode=hires;\\nodisplays;\\input cmr10;\(cr\s0 +.EE +After \fHmf2ps\fP has finished, the resulting \*(pS font dictionary can +be used to print text. In order to print text, the font dictionary +should be installed in some formatter's font source directory, and then +it can be loaded through the formatter's commands. The dictionary +followed by appropriate \fHshow\fP and \fHshowpage\fP commands can also +be sent directly to the printer. +.su "6\ \ \ Evaluation of results" +.PP +This section evaluates the \fHmf2ps\fP program relative to goals +established in section 3.2. The program was produced as a variation of +\*(MF and it accepts any \*(MF font definition and produces a \*(pS +outline font scaleable up to magnification 8, or to point size 80 if +you are not a purist. Thus goals 6 and 1 have been entirely met and +goal 2 is partially met. To meet goal 2 fully the program must be +modified to allow large enough arrays to handle magnifications up to +7200; this is left to future work. +.pp +It remains to evaluate the appearance and sizes of the outline fonts +relative to the bitmapped fonts to see if goals 3, 4, and 5 have been +met. +.Su "6.1\ \ \ Appearance." +In order to compare appearances, the outline font (Sub\%sub\%fi\%gure P) +and and the 300 dpi bitmapped font (Sub\%sub\%fi\%gure M) generated from +the same \*(MF definition are used to +print similar sentences at one, two, or three different sizes or +magnifications on three devices of differing resolutions. +The sentences are printed in the \&\fCcmr\fP (Sub\%fi\%gure R), +\&\fCcmtt\fP (Sub\%fi\%gure T), and \&\fClasy\fP (Sub\%fi\%gure S) typefaces. +The bitmapped fonts may be printed at design sizes 7, 8, 10, or 12, and +the outline fonts may be printed at magnifications .7, .8, 1.0, or 1.2. +Finally, the three devices are the 300 dpi LaserWriterII (Figure +11-LW300), the 600 dpi Varityper (Figure 11-VT600), and the 1270 dpi +Linotronic 300 (Figure 11-LT1270). The bitmapped font examples are +formatted with \*(TX while the outline font examples are hand-coded \*(pS +files sent directly to the printer. Since the +formatter with which this paper is printed can use arbitrary \*(pS +fonts, half of the examples could have been done in-line without +pasting in. However, for fairness in the comparison, all examples were +cut out and pasted in. +.pp +There are visible differences due to differences in the formatting +software. \*(TX squeezes the letters closer together than does the \*(pS +engine. Moreover, the interword space is constant in the \*(pS +dictionary but is varied by \*(TX according to the line structure. +These differences are not the differences that are at issue here. +.pp +On the 300 dpi device, the characters from the bitmapped fonts print thinner +than are those of the outline fonts. However, the edges of both sets are +equally smooth or jagged as the case may be in all sizes. Overall, then, +the appearance of the characters of the bitmapped fonts is crisper than +that of the outline fonts. +On the higher resolution devices, +the thicknesses of the characters are closer to being +equal at all sizes. Thus, the \*(MF program does a better job of building a +correctly sized bitmap at 300 dpi than does the 300 dpi \*(pS engine of the +LaserWriterII. The latter seems to round up too much. However, both +seem to get the edges equally smooth even at low sizes and low resolutions. +.pp +At the two higher resolutions, the outline fonts are significantly better +than the outline fonts at lower resolutions and are significantly better +than the bitmapped fonts at the same resolution of printing. However, this +latter is true because the bitmapped fonts were generated by the \*(MF +program specifically to be printed at 300 dpi. +When a 300-dpi bitmap is printed with no scaling at 600 or 1270 dpi, it +remains a 300-dpi bitmap. As expected, the 300-dpi bitmapped fonts print better +at 300 dpi than they do at the two higher resolutions. +.pp +The generated outlines are not fine-tuned for printing at low resolutions, +such as 300 dpi, +as are the \*(MF-generated bitmaps. It might be useful to make use of +the \*(pS facilities for hinting to improve the appearance of the +characters printed from the outlines at low resolutions. +.pp +Figure 12 shows samples of similar sentences printed on the same three +devices using the standard Helvetica, Times +Roman, and Courier \*(pS outline fonts built into most \*(pS-executing +laser printers. +It appears to these authors that the standard \*(pS fonts are +significantly better than those generated from \*(MF fonts. However, +this is not surprising. Adobe uses a grid of $1000~times~1000$ for its +character definitions, resulting in a resolution of 7200 dpi for characters +printed at point size 10. +Because of size limitations of the +\*(MF program the \*(MF outline fonts are using a resolution of 3,000 +points per inch. However, when using the letters in small sizes such as +from 10 to 70, +quality differences are hardly visible especially when working +with printers that have a resolution of 300 points per inch such as the +Apple LaserWriter. +Moreover, Adobe makes liberal use of hinting to +improve the appearance of its fonts at low resolutions. +We completely ignored hinting, as we did not see any way to +automatically generate the hints. +.Su "6.2\ \ \ Sizes of fonts." +Recall that it is necessary to compare the size of the \*(pS outline +font for a particular \*(MF definition to the sizes of the bitmapped +fonts in \*(pS fonts for the individual and all magnifications. +.pp +This comparison is made in this section for the \&\fCcmr10\fP font at the +standard set of six magnifications 1, 1.095, 1.2, 1.44, 1.728, and 2.07 +(which are approximations of 1.2 raised to the powers 0, .5, 1, 2, 3, +and 4, respectively). In addition, as a gesture to those who are not +purists and accept magnifications of the 10 point design size as +different point sizes, the comparison includes the \&\fCcmr\fP font at +point size 5, 6, 7, 8, 9, 10, 12, and 17, the standard eight design +sizes maintained for use with \*(TX. +.pp +Table 1 shows the sizes in bytes. Thus it is clear that the +\*(pS outline font is bigger than any bitmapped font and that goal 4 +fails. Moreover, it is clear that the outline font is bigger than the +sum over all magnifications of one design size and than the sum over +all standard design sizes. Thus goal 5 fails. In fact, this failure is the +reason that the samples of Figure 11 involve only upper case letters. Samples +with complete fonts with both cases often overloaded the printer available +to the students at the time this work was done. +.TS +center; +l r l r l. +Font Design Magni- Bitmap Outlines + size fication (size in (size in + bytes) bytes) +_ +\fCcmr\fP 10 1.0 22,812 245,000 +\ \ " 10 1.095 24,231 \ \ \ \ " +\ \ " 10 1.2 26,044 \ \ \ \ " +\ \ " 10 1.44 31,892 \ \ \ \ " +\ \ " 10 1.728 39,614 \ \ \ \ " +\ \ " 10 2.07 50,578 \ \ \ \ " +\fCcmr\fP 5 1.0 16,729 \ \ \ \ " +\ \ " 6 1.0 17,757 \ \ \ \ " +\ \ " 7 1.0 18,820 \ \ \ \ " +\ \ " 8 1.0 20,041 \ \ \ \ " +\ \ " 9 1.0 21,580 \ \ \ \ " +\ \ " 12 1.0 25,658 \ \ \ \ " +\ \ " 17 1.0 37,140 \ \ \ \ " +_ +Total 352,896 245,000 +.TE "Table 1" +.br +.RT +.pp +However, do note that the outline font is smaller than the sum over all +design sizes and magnifications thereof. +.pp +So in terms of disk space for the non-purists, the outline font +represents a savings. Again notice that not all magnifications of the +bitmapped fonts are maintained and the outline font is arbitrarily +scaleable. Moreover, as the magnification grows the size of the bitmap +grows even more rapidly. +.pp +The disappointment with respect to saving printer and disk memory says +that it is important to spend more effort to optimize the outline +font. +.pp +All is not lost, though! As this paper was being prepared for publication +in \*(TB, +one reviewer, Nelson Beebe, pointed out something that we can only kick +ourselves for not noticing. The \*(pS outline fonts that are generated by +\fHmf2ps\fP are horrendously wasteful in space. They use original, built-in +command names and absolute coordinates. A significant reduction in size can +be obtained by definition and use in the outlines of single-character +command names, e.g., \(lq\fCM\fP\(rq for \(lq\fCmoveto\fP\(rq, and by use +of relative versions of these commands with operands of fewer digits after +the initial absolute \&\fCmoveto\fP of any character. A simple filter was +written to obtain new compressed versions of the \*(pS outline fonts. The +appearances of the output when printing with these new versions is +unchanged, but what is sent to the printer is significantly smaller, about +37.7% smaller. The reduction on a per-letter basis is about 45%. +Table 2 shows the information of Table 1 for the new versions of the +outline fonts. +.TS +center; +l r l r l. +Font Design Magni- Bitmap Outlines + size fication (size in (size in + bytes) bytes) +_ +\fCcmr\fP 10 1.0 22,812 152,670 +\ \ " 10 1.095 24,231 \ \ \ \ " +\ \ " 10 1.2 26,044 \ \ \ \ " +\ \ " 10 1.44 31,892 \ \ \ \ " +\ \ " 10 1.728 39,614 \ \ \ \ " +\ \ " 10 2.07 50,578 \ \ \ \ " +\fCcmr\fP 5 1.0 16,729 \ \ \ \ " +\ \ " 6 1.0 17,757 \ \ \ \ " +\ \ " 7 1.0 18,820 \ \ \ \ " +\ \ " 8 1.0 20,041 \ \ \ \ " +\ \ " 9 1.0 21,580 \ \ \ \ " +\ \ " 12 1.0 25,658 \ \ \ \ " +\ \ " 17 1.0 37,140 \ \ \ \ " +_ +Total 352,896 152,670 +.TE "Table 2" +.br +.RT +.pp +There are still better compressions that can be achieved. According to +Beebe, +.[ +beebe private +.] +Toal and Raine's outline representation of \&\fCcmr\fP at 10 points +requires about twice the space needed for bitmaps of the same; at 14 to +16 points, the outlines and the bitmaps occupy about the same amount of +space; above 16 points, the outlines are smaller than the bitmaps. It +is clear that better encodings exist than we explored and these must be +explored for any future version of \fHmf2ps\fP. +.pp +One such better encoding appears to be that used by Adobe for its own +proprietary fonts; fonts encoded this way have a FontType of 1. +User defined fonts have a FontType of 3. Beebe +.[ +beebe private +.] +says that type 1 fonts are handled with greater efficiency than type 3 +fonts on most existing \*(pS interpreters, especially those that are based +on Adobe-licensed code. +Adobe has recently published specifications for the type 1 font encoding, +.[ +adobe type 1 +.] +thus allowing anyone to produced type 1 fonts. Beebe believes that the +market forces will drive other companies to encode their fonts as type 1. +Moreover, as more and more windowing systems based on \*(pS, e.g., NeWS +and NeXT, appear, the attraction of \*(pS outline fonts will increase, as +then the same font can be used for both printing and previewing. Thus, the +incentive will be to convert \*(MF fonts into type 1 \*(pS outline fonts. +.pp +Ultimately, the tradeoff is between the size of the font sent to the +printer, and the time it takes for the printer to decode the program +for the characters. However, with proper cacheing, a big enough cache, +and a not very fancy document, the decoding is done only once per +character for the document! +.su "7\ \ \ Future work" +.PP +For the future, there are a number of improvements that can be made. +Currently, each letter of the \*(pS outline fonts is described as a set +of cyclic paths. When all are filled or stroked, one gets the desired +letter. Some of those cyclic paths have a common boundary that is +inside the letter and is not necessary for the outline description of +the letter as a whole. Eliminating these paths and creating one +outline for the letter will save space. Today this can be done +manually, and is worth the effort because the translation process is +done only once. From that time on, the font is used the way it is. +.pp +As was demonstrated by Beebe's rescue of our result, closer attention +should be paid to obtaining more compact representations of character +outlines, representations for which \*(pS routines can be written to +interpret them into standard outline drawing commands. +Collapsing commands into single characters and using relative movements +saved significant amounts of space. Perhaps, even more dramatic savings can +be obtained by giving coordinates and distances in hexadecimal. +.pp +More effort can be spent on modifying the program in order to allow +magnifications up to 7200 points. Thus, no jaggies will be seen, as +occasionally happens when using higher magnifications, e.g., in our +translated fonts at magnification 8. This could be done by enlarging +the program arrays to handle characters based on 7200 points. A +sophisticated solution is required if one wants to save room while +compiling the input font. In such a case, any linear translation which +is done within the \*(pS program is with a factor less than 1. +.pp +\*(MF was changed for \*(TX 3.0. It is necessary to build a new version of +\fHmf2ps\fP based on this latest version of \*(MF. As the changes to the +\*(MF program deal mainly with ligatures and kerning, the calculation of +envelopes is probably not affected. Therefore, it is likely that +the portion of \*(MF up to the calculation of the envelope can still be +used as a front end for \fHmf2ps\fP with very little change in the +portion of the program we wrote. +.pp +Finally, it might be worthwhile, for the sake of portability to other +systems and enhanceability by \pother +.sp +humans, to rewrite or to write the next +version of \fHmf2ps\fP with \&\fCWEB\fP. +.su "Acknowledgments" +.PP +The authors thank the +\*(TB editors, and Nelson Beebe for their help, sharp comments, and +result-saving ideas. +Dealing with their comments made this a better paper. +.su "References" +.[ +$LIST$ +.] +.RT +.sp 2 +.ta 1P +1P +.in +6P +.ps 9 +.vs 11 +.nf +.ti -1P +\(dm Shimon Yanai +IBM Science and Technology + Center +Technion City +.sp +Haifa 32000 +Israel +yanai@israearn.bitnet +.sp +.ti -1P +\(dm Daniel M. Berry +Computer Science +Technion +Haifa 32000 +Israel +dberry@cs.technion.ac.il +.fi +.in -6P +.RT diff --git a/fonts/utilities/mf2ps/doc/paper.pdf b/fonts/utilities/mf2ps/doc/paper.pdf Binary files differnew file mode 100644 index 0000000000..343d5ecc7a --- /dev/null +++ b/fonts/utilities/mf2ps/doc/paper.pdf diff --git a/fonts/utilities/mf2ps/doc/paper.ps b/fonts/utilities/mf2ps/doc/paper.ps new file mode 100644 index 0000000000..8803b81c31 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/paper.ps @@ -0,0 +1,16427 @@ +%!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(<simon@techunix>)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 diff --git a/fonts/utilities/mf2ps/doc/paper.ref b/fonts/utilities/mf2ps/doc/paper.ref new file mode 100644 index 0000000000..bbc5117845 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/paper.ref @@ -0,0 +1,1890 @@ +.nr [W \w'10' +.nr [W \w'10' +.pl 11.125i +.de rb +.ta 2m +5m +5m +.nr t1\\n(.i +.ls \\n(sq +.in \\n(sem +.. +.de rf +.br +.ne \\n(scu+\\n(sdu +.sp \\n(sdu +.ti -2m +.. +.de LE +.sp .5v +.. +.de SU +.ne 2v +.br +.ti 1.66P +\f3\\$1\fP +.. +.de Su +.ne 2v +.sp 1v +\fB\&\\$1\fP +.. +.de su +.ne 3v +.sp 1v +.na +\fB\&\\$1\fP +.br +.ad +.. +.de PP +.sp .5v +.. +.de qb +.in +\\n(sju +.LL -\\n(sju +.sp .5v +.. +.de qe +.in -\\n(sju +.LL +\\n(sju +.sp .5v +.. +.de cl +.ta\\n(sou +5m +5m +.in+\\n(snu +.. +.de dl +.br +.in-\\n(snu +.. +.de ES +.ft C +.sp +.nf +.in +1.66P +.. +.de EE +.fi +.ft R +.sp +.in -1.66P +.. +.dehd +.HS +.nrhe+1 +.ie\\n(cn>1\{\ +.ie\\nc>\\n(cn\{\ +'sp\\n(bhu-1v +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Te +.el.tl \\*(To +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'sp|\\n(thu +.nrc 1 1 +.mkmx\} +.el\{\ +.po+\\n(cwu+\\n(csu +'sp|\\n(mxu\}\} +.el\{\ +.if\\n(f5\{\ +.nr% +\\n(f5 +.nrf50 1\} +'sp\\n(bhu-1v +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Te +.el.tl \\*(To +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'sp|\\n(thu\} +.chfx -\\n(tfu +.chfo -\\n(tfu +.if\\n(z1 .fz +.chfo -\\n(tfu +.if!\\n(f0 .ns +.if\\n(f0\{\ +.nrf5\\n(f6 +.nrf6\\n(f7 +.nrf70 +.Ff +.ie\\n(fa\{\ +.nrfa0 +.nrh21\} +.el\{\ +.ie\\nx\{.if (\\n(nlu+5v)>(\\n(.p+\\nyu) .nr h1 1\} +.el\{.if \\n(.tu<6v .nr h1 1\}\}\} +.if\\n(h1=1\{\ +.nrh10 +'bp\} +.if\\n(h2=1\{\ +.nrh20 +.fo\} +.chfo (\\nyu-1v) +.nrhe-1 +.HE +.. +.defo +.FS +.if!\\n(he\{.if \\nx .xf\} +.nrfa0 +.ie\\n(fg\{\ +.nrfa1 +.diGA\} +.el\{\ +.ie\\n(cn<2\{\ +'chfo 32000 +'chfx 32000 +'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Be +.el.tl \\*(Bo +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'bp\} +.el.mf\} +.FE +.. +.demf +.ie\\n+c<=\\n(cn .hd +.el\{\ +.po\\n(cou +.lt 6.63i +'chfo 32000 +'chfx 32000 +'sp(\\n(.pu-\\n(nlu-\\n(tfu+\\n(bfu-1v)u +.nr 1F \\n(.f +.nr 1S \\n(.s +.ft +.ps +.nr 2F \\n(.f +.nr 2S \\n(.s +.ft 1 +.ps 10 +.iee .tl \\*(Be +.el.tl \\*(Bo +.ft \\n(2F +.ps \\n(2S +.ft \\n(1F +.ps \\n(1S +'bp\} +.. +.defn +.ie\\nx .ne \\n(rcv-2v +.el.ne \\n(rcv +.if\\n(fn .AB"Nesting of footnotes is a no no" +.nrfn1 +.daFN +.ev1 +.ie\\n+x=1\{\ +.sp 10p +\s-5\l'5P\(ul'\s+5 +.br\} +.el.sp \\n(srv +.fi +.ad +.. +.\" REFER macros .... citations +.nr se 3u \" space to indent in emms +.de [] +.][ \\$1 +.. +.de ][ +.if \\$1>5 .tm Bad arg to [] +.if !"\\*([O"" .if !\\n([O .as [O . +.[\\$1 +.. +.ds RB ".RE +.ds [. " [ +.ds .] ] +.if n .ds [o "" +.if n .ds [c "" +.if t .ds [o \(lq +.if t .ds [c \(rq +.\" the next lines deal with the problem of .[1] or [1]. +.\" refer will write "linexxx\*(<.[1]\*(>. +.\" and either "<." or ">." should produce the .; +.\" similarly for , +.ds >. . +.ds >, , +.de [5 \" tm style +\\*([A, \\f2\\*([T\\f1, +.ie \\n(TN \\*([M. +.el UCLA Computer Science Department internal memorandum (\\*([D). +.br +.. +.de [0 \" other +.if !"\\*([A"" \\*([A, +.if !"\\*([O"" \\*([O +.if !"\\*([D"" \& (\\*([D). +.br +.. +.de [1 \" journal article +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\*([o\\*([T,\\*([c +\\f2\\*([J\\f1\c +.if !"\\*([V"" .if n \& Vol.\&\c +.if !"\\*([V"" \& \\f3\\*([V\\f1\c +.if !"\\*([N"" (\\*([N)\c +.if !"\\*([P"" \{\ +.ie \\n([P>0 , pp.\c +.el , p.\c +\& \\*([P\c\} +.if !"\\*([I"" .if "\\*([R"" , \\*([I\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.de [2 \" book +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\f2\\*([T,\\f1 +\\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([G"" Gov't. ordering no. \\*([G. +.if !"\\*([O"" \\*([O +.br +.. +.de [4 \" report +.if !"\\*([A"" \\*([A, +\\*([o\\*([T,\\*([c +\\*([R\c +.if !"\\*([G"" \& (\\*([G)\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.de [3 \" article in book +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\*([o\\*([T,\\*([c +.if !"\\*([P"" pp. \\*([P +in \\f2\\*([B\\f1\c +.if !"\\*([E"" , ed. \\*([E\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c +.if !"\\*([D"" \& (\\*([D)\c +\&. +.if !"\\*([O"" \\*([O +.br +.. +.\" define warning that mX does not support references as footnotes +.de ]- +.AB"Can't do references as footnotes. Use '-e' or '-s' option with 'refer' +.. +.de ]< +.\" define the real ]- next-reference macro +. de ]- +. rm [V [P [A [T +. rm [N [C [B [O +. rm [R [I [E [D +. rf +\\\\*([F. \c +\\.. +.\"now start the reference subsection +\\*(RB +.rb +.. +.de ]> +.re +.. +.de ]] +this is never +executed +and just +uses up an end-of-file +bug. +.. +.de TS +.sp +.. +.de TE +.sp .25v +.ce +\\$1 +.sp .5v +.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.el.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.. +.de ca +.sp .5v +.ce +\&\\$1 +.sp 8p +.. +.de CT +.if \\n(ff .F0 "\\$1" "\\n%" +.. +.nr sd 1i/24u \" # of inches to space between references (used as u). +.nr sf 1.66P \" space to indent for paragraph (used as u). +.nr sg 1u \" # of spaces needed before trap to start paragraph(used as v). +.nr sh 0u \" # of spaces done to start a new paragraph (used as v). +.nr si 1u \" # of spaces used to start an example (used as v). +.nr sj 1.66P \" space to indent for an example (used as u); +.nr sn 1.66P \" amount of space to indent for list (used as u). +.nr so 1P \" amount of space to temp indent for each list entry (used as u). +.nr sp 1i/12u \" spacing for each element of list (or sublist) (used as u). +.nr sa 1v \" # of spaces to do before subtitles (used as u). +.nr se 3u \" # of spaces to indent for a reference (used as ems). +.nr sm 1i \" # of spaces of need to do a subtitle (used as u). +.nr fv 3 \" set font variable for subtitles to Helvetica +.nr si 1u \" # of spaces used to start an example (used as v). +.nr sk 1u \" # of spaces left at the end of an example (used as v); +.deRT +.ien .ta .8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.8i +.el.ta .25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.25i +.. +.RT +.EQ +delim $$ +.EN +.ds MF \f(LGMETA\%FONT\fP +.ds TB \fITUG\%boat\fP +.ds BZ B\o'e\(aa'zier +.ds TX T\v'+.2m'\h'-.1m'E\h'-.1m'\v'-.2m'X +.ds LT L\v'-.15m'\h'-.3m'\s-2A\s+2\v'.15m'\h'-.1m'T\v'.2m'\h'-.10m'E\h'-.10m'\v'-.2m'X +.ds BT B\\h'-0.05m'\\s-2I\\h'-0.025m'B\\s0\\h'-0.08m'\\*(TX +.ds pS P\s-2OST\%\s0S\s-2CRIPT\s0 +.ds P1 \f2P\fP\v'.2m'\s-3\f11\fP\s+3\^\v'-.2m' +.ds P2 \f2P\fP\v'.2m'\s-3\f12\fP\s+3\^\v'-.2m' +.ds P3 \f2P\fP\v'.2m'\s-3\f13\fP\s+3\^\v'-.2m' +.ds P4 \f2P\fP\v'.2m'\s-3\f14\fP\s+3\^\v'-.2m' +.en +.LL 39.00P +.ls 1 +.ds BL ''%'' +.hy 14 +The next page begins the paper. The macro package I use cannot start +double columning until AFTER some text is printed.. +.pn 1 +.bp +.MC 2 18.75P 1.5P 1i +.mk xx +\v'-1v'\l'18.7P' +.sp |\n(xxu +\s+2Environment for Translating +.br +\*(MF to \*(pS\s0 +.sp 3p +.ti 1.66P +Shimon Yanai and Daniel M. Berry +.sp 8p +\fBAbstract\fP +.PP +This paper describes a program, \fHmf2ps\fP, that translates a +\*(MF font definition into a definition for the same font in the +\*(pS language. \fHmf2ps\fP is constructed out +of the part of the \*(MF program that extracts the envelopes of the +letters; these envelopes are converted into \*(pS outlines. +.su "1\ \ \ Introduction" +.PP +This paper describes a program, \fHmf2ps\fP, +that takes from a \*(MF\*([.10,\|11\*(.] +program for a font all the necessary information in order to +create an equivalent \*(pS\*([.1\*(.] +font definition. The program makes use of the front end of the +\*(MF program to extract the envelopes of the letters to produce the +\*(pS outlines. What makes this process natural is that both \*(MF and +\*(pS make liberal use of \*(BZ curves to describe non-circular +curves. +.pp +By producing this translator, it is hoped to be able to produce from +\*(MF fonts \*(pS outline fonts which are more compact than the +bitmapped fonts produced by the \*(MF program. Certainly the outline +fonts are more easily scaled to other magnifications and possibly even +other design sizes than are bitmaps. Moreover, doing so makes fonts +heretofore available only on \*(TX\*([.9\*(.] +and other DVI-based formatters, +available on \fHditroff\fR\*([.8\*(.] +and other formatters which have evolved, +or have been designed, for use with \*(pS printers. This paper, which is +typeset by \fHditroff\fR, uses a \*(pS version of the +logo font in order to print the word \(lq\*(MF\|\(rq in the same appearance as +in \*(TX-generated documents. +Moreover, these new \*(pS outline fonts can be used in \*(TX also! One +needs only the +T\v'+.2m'\h'-.1m'E\h'-.1m'\v'-.2m'X\v'+.2m'\h'-.1m'P\h'-.1m'\v'-.2m'S\*([.3\*(.] +software. +.pp +The organization of this paper is as follows. Section 2 presents the +background of this work. Section 3 explains the rationale behind +building the translator and describes a previous attempt at writing the +translator and an approach to avoid. The software engineering aspect of +the translator is described also in Section 3. The details of the +implementation are exposed in Section 4. Section 5 describes the +operation of the program. Section 6 evaluates the results. Finally +Section 7 describes improvements to the translator that are left for +future work. +.su "2\ \ \ Background" +.PP +Typesetter formatting systems such as \*(TX and \fHditroff\fP use fonts +as raw material. The formatters accept mixed text and commands as input +and produce output, which, if sent to the laser printers or typesetters, +yields formatted text printed on pages. The laser printers and +typesetters use fonts, i.e., sets of printable patterns, one per +character, in various representations in order to cause the desired +characters to appear on the printed form. For some printers, bitmaps +are used, with 1's representing inked dots and 0's representing +non-inked dots. Other printers accept commands that cause drawing of +the characters, the printer providing the inked dots according to the +drawing commands. One such popular command language is \*(pS, and its +usual use is to specify the outline of the character with the +interpreting printer filling in the outline with ink. One popular +method of describing fonts is with the \*(MF language, in which +declarative definitions of how to paint the characters are given in +terms of pen path and pen shape. Another popular method is the same +\*(pS that many printers accept. The prime difference is that the \*(MF +program translates the font definitions into bitmaps prior to sending +the font to the printer while a \*(pS printer translates the outlines +into bitmaps at the time of printing. Interestingly, both the \*(MF +language and the \*(pS language use \*(BZ curves for describing the +curves followed by the pen or the outlines. As usually configured +these days, \*(TX uses bitmapped fonts in the Computer Modern family +generated by \*(MF, and \fHditroff\fP uses \*(pS outline fonts supplied +by Adobe. +.pp +The subsequent subsections delve deeper into these issues in order to +be able to state the goal of this paper in the next section. +.Su "2.1\ \ \ Fonts, design sizes, and magnifications." +As mentioned, fonts are the raw material of typesetting. A font is a +set of printable patterns, one for each character, that causes printing +of that character in a particular recognizable style on the page. As +mentioned, these patterns can be represented by bitmaps or drawing +instructions. +.pp +Characters come in various sizes. There are two independent notions of +sizing for fonts, point size or design size and magnification. The +\fIdesign size\fP is the size at which the character is designed to be used +and is, in well-designed text, the size in which the character appears +in final, printed copy. Design size is +usually expressed in units of points, which are each approximately 1/72 +of an inch. Most normal text in books, newspapers, and magazines is +printed in 10 point type. Headlines are larger, perhaps as large as 30 +points. The \fImagnification\fP of a font is the inverse of the ratio +between the design size of the character and the size of the +character as it emerges on the printer, the assumption being that the +final copy is a photo reduction of the printed copy. Thus, if photo +reduction halves linear dimensions, one prints with magnification 2. +If everything is done right, then after reduction, the letter appears at +its design size. +.pp +A 10 point design sized font printed at mag\%ni\%fi\%ca\%tion 2 is similar to +but not quite the same as a 20 point version of the same font. +For example, the serifs on a large point size are smaller than they would +be if strict linear magnification were used. Other proportions, e.g., of +x-height to cap-height and of width to height, are also +different. While many purists, Knuth +included, insist on using a different pattern for each design size, +many people accept magnification as yielding acceptable fonts at other +point sizes. If the unit of magnification is not too big the results +are acceptable even to many purists. +.Su "2.2\ \ \ Problems with bitmapped fonts." +A bitmap for a character is a rectangular array of bits covering the +so-called bounding box or frame that exactly contains a letter. Figure +1 shows a low resolution bit map for the letter \(lqN\(rq in a sans +serif font. The inked squares or pixels are denoted by \(lq1\(rq bits +and the uninked pixels are denoted by \(lq0\(rq bits. +.fs +.F+ +figure fig1.ps +.F- +.ca "Figure 1" +.fe +The low resolution example of Figure 1 illustrates a major problem +with bitmapped fonts. Curved lines and straight lines that are neither +vertical nor horizontal cannot be represented exactly by a rectangular +pattern of pixels. One is forced to approximate them with rectangular +steps. At high resolution, e.g. above 1000 or so, the human eye cannot +see the steps, but at low resolution the steps are quite apparent. +Visible steps are called \(lqjaggies\(rq after the jagged edges. +.pp +Bitmaps for a font must be built for each design size, magnification, +and resolution. If the resolution is fixed, as is the case on most +printers, a bitmap must be built for each design size and +magnification. An attempt to use a given bitmap at a larger design +size or magnification by just enlarging the area of each dot yields a +bad case of jaggies. +.Su "2.3\ \ \ \*(MF and its environment." +.ft 1 +\*(MF, a language for the specification of fonts or typefaces, has been +used to provide fonts for the \*(TX family of typesetting systems. A +\*(MF user writes a program for each letter or symbol of an alphabet. +These programs are different from the usual computer programs, because +they are essentially declarative rather than imperative, using an +algebraic language to describe the center stroke or edges of the characters. The +description of a letter in \*(MF is a set of equations describing the +strokes. When combined with parameters describing the pen shape and +size, one gets a full description of a letter. Sizes and shapes of pen +nibs can be varied in \*(MF and the characters can be built up in such +a way that the outlines of each stroke are precisely controlled. Herein +lies the advantage of \*(MF; a font is easily specified and variations +are obtained by varying parameters. +.pp +Currently, the program that converts a set of \*(MF font descriptions +into a bitmapped font translates the description of a letter combined +with a point size and a magnification into a bitmap. This bitmap can be +sent to the printer to get a letter on the page. Herein lies a +disadvantage of \*(MF; a bit map must be kept for each point size and +magnification, and this can require a lot of space. +.Su "2.4\ \ \ The \*(pS language." +The \*(pS language is an interpretive programming language with +graphics capabilities. \*(pS's extensive page description capabilities +are embedded into a general-purpose programming language framework. The +language includes a conventional set of data types such as numbers, +arrays, and strings, control primitives such as conditionals, loops and +procedures, and some unusual features such as dictionaries. In most +\*(pS fonts, each letter is described by an imperative program tracing +the outline of the letter. This tracing may include curves given as +\*(BZ curves, straight lines, arcs, etc. A \*(pS printer interprets +this outline program to draw and fill in the letters on the page. Some +consider the imperative nature of \*(pS to be a disadvantage in +comparison to \*(MF's declarative nature. The main advantage of \*(pS +relative to \*(MF is that one needs to keep only the outline. If, as in +the usual case, the outline is specified in terms of a fixed path +through Euclidean two-space, this outline may be scaled arbitrarily to +yield any magnification. The scaling is done by the \*(pS interpreter +at the printer. Thus the different magnifications do not require any +additional storage space. Actually, the outlines are kept as if they +were for the Adobe-standard 1000 dots +per emm, which at a design size of 10 points amounts to 7200 dpi. +Because a typical phototypesetter has a maximum resolution of +about 2500 dpi, the outlines are said to be arbitrarily +scaleable. If the outlines are kept, as are many \*(MF definitions, as +paths through points calculated by the outline program, then it is +possible to, say, make serifs grow more slowly than linearly. It would +then be possible to have one \*(pS font scaleable to all design sizes. +Generally, outline fonts are not written this way, so that strictly +speaking they are scaleable only to all magnifications. +.pp +In addition, the \*(pS language has a way to work with bitmapped fonts. +While the \*(pS printer can scale them before printing, the end result +is that each of the fixed number of dots in the bitmap is made larger +or smaller. Since the human will see larger dots as jagged lines, such +fonts are not really considered scaleable. +.Su "2.5\ \ \ \*(BZ curves." +Both \*(MF and \*(pS use \*(BZ cubics to specify curves. For the \*(BZ +form, four points are used, the start point, the end point, and two +control points, as shown in the top half of Figure 2. +The tangent vectors of the +endpoints are determined from the line segments \*(P1\*(P2 and +\*(P3\*(P4. The mathematical introduction of the \*(BZ form +when given four points \*(P1, \*(P2, \*(P3, and \*(P4 is +.sp +.in +.125i +$z(t)~=~(1-t) sup 3 "\*(P1" ~+~3t(t-1) sup 2 "\*(P2" ~+~3t sup 2 (1-t) "\*(P3" ~+~t sup 3 "\*(P4" ,$ +.sp +.in -.125i +for $0~<=~t~<=~1$. +.pp +Two characteristics of the \*(BZ form tend to make it widely used in +graphics. First, by choosing the control points one can easily mold the +curve to a desired shape. Second, the four control points taken in another +order define a convex polygon, \*(P1 \*(P2 \*(P4 \*(P3 \*(P1 in this case, +the \fIconvex hull\fR\h'-.05m', which bounds the \*(BZ +curve. The convex hull is useful in clipping a curve against a window. +.pp +When a \*(MF user specifies a path, \*(MF creates a list of knots and +control points for the associated cubic spline curves. +If the user has not specified the control points explicitly, \*(MF +itself finds some for the splines of a curve, while \*(pS requires all +the four points to be explicitly given. +.fs +.F+ +figure fig2.ps +.F- +.ca "Figure 2" +.fe +.su "3\ \ \ \*(MF to \*(pS compiler\(em why\ and\ how" +.ft 1 +.PP +This section describes a major performance problem with \*(MF-generated +fonts that perhaps can be solved by translating them into \*(pS fonts. +The goals of this translation are established. Based on these goals, a +particular approach is adopted to engineer the software largely from +existing components. +.Su "3.1\ \ \ A problem with \*(MF-generated bitmapped fonts." +.ft 1 +In \*(MF, one gets one bitmap per point size and magnification. The +size of these bitmaps grows as the square of product of the design size +and +the magnification and requires a large storage space. Files that are +sent to the printer will be large, especially if lots of different +point sizes or magnifications are used. In \*(pS with outline fonts, +there is one outline per character which can be scaled arbitrarily to +any magnification that might be needed. Moreover, \*(pS outline fonts +are generally more compact than bitmapped fonts. For example, an +enclosed rectangle is represented by its four corner points rather than +by all the bits enclosed by the rectangle. +.pp +Certainly the outline fonts are more easily scaled to other +magnifications. By scaling the bitmapped fonts downward, too much +information is lost, and scaling upward introduces the jaggies. +Moreover, the pixel array is device dependent; it is valid for output +devices of only one particular resolution and one choice of possible +data values per pixel. Scaleable fonts have a great advantage \(em you +need only one font description file for all magnifications of that font. +Actually, \*(pS outline fonts are more scaleable even than the \*(MF +originals for another reason. In\*(<,\*([.9\*(.]\*(>, +it is said, \(lqCaution: +before using this `\fBat\fR' feature (i.e. scaling downward or upward) you +should check to make sure that your typesetter supports the font at the +size in question; \*(TX will accept any \(L<desired size\(L> that is positive +and less than 2048 points, but the final output will not be right +unless the scaled font really is available on your printing +device.\(rq Getting \*(pS outline versions of \*(MF fonts is possible +since both are based on \*(BZ curves. Doing so makes fonts heretofore +available only on \*(TX and other DVI-based formatters available on +\fHditroff\fR and other formatters which have evolved to or have been +designed for use with \*(pS printers. +.Su "3.2\ \ \ Goals." +Based on the observations of Section 3.1, +the goal of this research is to produce a \*(MF to +\*(pS compiler, \fHmf2ps\fP. Its operational requirements are items 1 +through 5: +.l1 1 +.le +It must be possible to translate any legitimate \*(MF font definition +at any given design size into a \*(pS outline font. +.le +The resulting \*(pS outline font should be arbitrarily scaleable. +.le +The resulting fonts should look like the bitmapped fonts when printed +on the same printer. +.le +The resulting \*(pS outline font should be more compact \fIwhen sent to +the printer\fP than a \*(pS version of the \*(MF-generated bitmapped +font. +.e1 +.sp .5v +The fourth requirement deserves a bit of explanation and qualification. +First note that what is compared is what is sent to the printer. +Certainly there are compressed versions of the bitmapped fonts that +reduce the disk storage requirements of the bitmapped fonts. However, +they must be uncompressed before sending them to most printers. It is the +printer's storage that is limited; generally disk space is in +abundance. However, since printers these days are general purpose +computers, what a printer accepts may in fact be a compression that it +has been programmed to undo. +.pp +Now for the case in which disk space is of concern, the comparison +should still be relative to printable versions. There exist algorithms, +e.g. that of Lempel and Ziv\*([.13\*(.] +that can be used to compress \*(pS outline fonts which are, after all, +just ASCII files. Therefore, in order not to have a contest between +compression algorithms, the uncompressed versions are compared. Furthermore, +in order not to have a contest between different kinds of printers that may +have differing font representations, \*(pS outline fonts are compared to +\*(pS bitmapped fonts. When +considering disk space, the fact that one bitmapped font is needed for +each magnification is taken into account. Thus, the interest is in +comparing the size of a scaleable outline font to the total storage for +the bitmapped fonts for all magnifications of a given design size. +.cl +.le +The resulting \*(pS outline font should be more compact than the total +of the sizes of the \*(pS versions of the \*(MF-generated bitmapped +fonts at each available magnification. Even this comparison is not +completely fair since only specific magnifications are provided, while +the \*(pS font is arbitrarily scaleable. +.dl +.sp .5v +.pp +Observe finally, that the comparison is against mag\%ni\%fi\%ca\%tions +of a single design size since purists would argue that there should +be a different outline font for each design size. +Since there are those that do not +require this purity, the various design sizes will be compared also. +.pp +The software engineering goal is item 6. +.cl +.le +\fHmf2ps\fP should be written as much as possible using the existing +\*(MF program both to save work and to ensure that all \*(MF-acceptable +font definitions are handled. +.dl +.sp .5v +The evaluation of the results will be +done relative to these goals. +.Su "3.3\ \ \ Previous attempts." +Leslie Carr wrote a collection of programs to produce \*(pS outline +fonts from \*(MF fonts in 1987. Carr's programs take as input the +\fIlog\fR output file of \*(MF which contains a description of all +the paths that \*(MF traces out in drawing a character. +.pp +Carr has problems of information loss as a result of not having entered +into the \*(MF program. This is the reason why Carr's characters are +poor looking. In\*(<,\*([.5\*(.]\*(>, +Carr observes, \(lqIn the \&\fCcmr10\fP font, +the \fIcrisp\fP pen has diameter zero, so serifs have square corners. In +the \&\fCcmtt10\fP font, \fIcrisp\fP is set to a larger value and the serifs +end in semicircles. Because the shape of the current pen can NOT be +taken into account in \*(pS, these differences in the characters shapes +will not be seen. This is a \fBfundamental\fR problem: given a path $p$ +and a pen $q$ (whose shape is also an arbitrary path), \*(MF +effectively envelopes $p$ with respect to the shape of $q$; \*(pS can +do nothing other than stroke it to produce a line of constant width. +This incompatibility comes to light when the width of the pen is +significant to the shape of the character\(rq. +.pp +In order to avoid this problem, \fHmf2ps\fP finds the internally +generated envelope, which is used as the boundaries of the inked +region, and uses this envelope as the outline. It does not matter, then, +what the pen path and the pen shape are. +.pp +More recently, during the time that the work described herein was being +done, there were other efforts with similar goals. +.pp +Doug Henderson\*([.6\*(.] +obtained outline font characters by modifying the \&\fCendchar\fP macro, +which is called for each character after the bitmap is generated, to take +the bitmap for the character and white out all but the bits on the edge. +The number of bits left on the edge is varied according to the resolution +of the bitmap. These outlines, being bitmapped, are just as unscaleable as +are the bitmaps for the filled-in characters. +.pp +Neil Raine and Graham Toal\*([.12\*(.] +have developed software that takes the bitmaps and rediscovers the +outlines by tracing the pixels. The outlines that are used as the basis +for \*(pS fonts are, for the most part, generated from bitmaps at 2400 +dpi. They first generate RISC OS outline fonts which are screen fonts +for Acorn's Archimedes RISC computer. These are true scaleable +outlines. Then, these outlines are converted into \*(pS format. Toal +says that the the quality of the fonts produced is not too great at low +resolutions because of shortcomings in Adobe's rendering algorithm. He +adds that at 1200 dpi on a phototypesetter, they are indistinguishable +from \*(MF-generated bitmapped fonts. These authors suspect that +information that is critical for good appearance is lost when tracing +an outline on a bitmap generated from a mathematically described +envelope. Better results should be obtainable using the original +envelope. +.pp +John Hobby\*([.7\*(.] +has developed a program called MetaPost, which translates from an extension +of \*(MF into \*(pS cubic splines and commands. +His goal was to turn \*(MF into a system for +typesetting general graphics, including embedded text. His approach, +similar to ours, was to modify the \*(MF program into what he desired. +Befitting his more general goals, besides modifying the output, he has +added new commands to the input language. Moreover, his translation appears +to be a direct mapping from a \*(MF command sequence to a +\*(pS command sequence. +The result is a program more powerful than \fHmf2ps\fP. +It will be interesting to compare fonts produced by MetaPost and +\fHmf2ps\fP for appearance and performance. +.Su "3.4\ \ \ Methodology." +There are a number of ways to build the compiler. They include +.l1 1 +.le +writing the whole compiler from \*(MF to \*(pS from scratch: This has +the advantage that one does not have to get into another person's +software, which is not very pleasant when the software is so big. On +the other hand, one would have to treat the whole job of turning +mathematical equations and any arbitrary pen shape into outlines. +.le +using the \*(MF output as was done by Leslie Carr\*([.5\*(.]: +This has the advantage of not requiring delving into another's +software, but the generated information is not enough if one wants no +deviations from the originals. +.le +getting into the \*(MF program: This requires examining the internals +of the \*(MF program. However, \*(MF and \*(pS make liberal use of +\*(BZ curves to describe non-circular curves. This fact makes the +translation process natural. For each specified path, \*(MF creates +control points for the associated cubic spline curves before +calculating the bit map. \*(MF also calculates the edge offsets implied +by the pen shape. Using the necessary information one can get a new set +of control points that define \*(BZ curves and lines that are needed to +build the \*(pS outline fonts. +.e1 +.Su "3.5\ \ \ Software engineering of solution." +The idea is to split the \*(MF program into front end and back end. The +front end takes \*(MF specification of a character, magnification, and +point size, and produces the envelope, i.e., the outline of the +character, and the back end fills the envelope with bits. Taking the +existing front end and writing a new back end that converts the +envelope into a \*(pS specification of an outline is our method of +producing \fHmf2ps\fP. The bit-filling process will be done by the +printer. +.pp +In order to make \*(pS fonts arbitrarily scaleable, we have to ask the +\fHmf2ps\fP program to use a very large magnification, at least to try to +match the grid on which Adobe plots the points of its outlines. Adobe plots +its characters on a $1000~times~1000$ grid. Thus, Adobe's resolution is +1000 dpm (dots per em), which for design size 10 points is 7200 dpi. +Unfortunately, \*(MF, and thus \fHmf2ps\fP accepts resolutions only up to +3000 dpi. The results should be sufficient to produce fonts scaleable +up to magnification 7 or 8, which is a reasonable range in +typesetting. +.pp +This approach helps meet goal 6 because the original unchanged \*(MF +program is used. Thus, exactly the same input is accepted as in the +\*(MF program. There is some extra frosting obtained by the chosen +approach. The program for translating \*(MF to \*(pS is actually a bit +of an interactive environment because the new back end is an extension +of the existing one. This existing back-end provides an interpreter +that executes a \*(MF character definition and displays the defined +character on the screen. Figure 3 +shows the dump of a screen containing several windows, one showing a +\*(MF definition, another showing the result of its interpretation, and +a third containing the \*(pS translation of the definition in the first +window. If software to interpret \*(pS definitions were available here, +a fourth window could be set up showing the result of interpreting the +translation of the third window. This would allow comparison of the +character's appearances without having to print them on paper. +.su "4\ \ \ The program" +.PP +In the following discussion, the \*(MF program is often called just +\(lq\*(MF\|\(rq. +.pp +The \*(MF program has been written so that it can be made to run +efficiently in a wide variety of operating environments by making +comparatively few changes. Such flexibility is possible because the +program is written in the \&\fCWEB\fR language which is at a higher level +than Pascal. The preprocessing step that converts \&\fCWEB\fR to Pascal +is able to introduce most of the necessary refinements. Semiautomatic +translation to other languages is also feasible, because the program +does not make extensive use of features that are peculiar to Pascal. +.pp +The program has two important variations: First, there is a long and slow +version called \s-1\fHINIMF\fR\s0, which does the extra calculations needed to +initialize \*(MF's internal tables. It has to be run first. It +initializes everything from scratch without reading a base file, and it +has the capability of dumping a base file. Secondly, there is a shorter and +faster production version called \s-1\fHVIRMF\fR\s0, which cuts the +initialization to a bare minimum. It is a virgin program that needs +to input a base file in order to get started. \s-1\fHVIRMF\fR\s0 typically has +more memory capacity than \s-1\fHINIMF\fR\s0, because it does not need the +space consumed by the dumping and undumping routines, etc. +.pp +In order to generate a compiler that translates \*(MF to \*(pS, +additional external procedures and functions were added to the \*(MF +program so that it runs exactly the same except that when it asks for +an output file name, it asks for an additional name, for the extra +output file that is to contain the \*(pS outlines. Those changes were +made on the Pascal version of the \s-1\fHVIRMF\fR\s0, and were compiled later +with \*(MF's library files. +(It was a complete oversight on our part not to have modified the +\&\fCWEB\fP version of \s-1\fHVIRMF\fP\s0.) +A few extra lines were added to the +macro file, \&\fCplain.mf\fR. These act as flags, identifying that +\*(MF has entered some of the macros. +.Su "4.1\ \ \ Basic idea." +To specify a character in \*(MF, one specifies either +an envelope (outline) or +a center-line path and a pen head. +For the former, \*(MF just fills the envelope with bits. +For the latter, \*(MF pretends that it is drawing the character +with a pen of specified +head shape following the specified path, i.e., the center of the head +stays on the path. The distance from the center-line path and outer +edge of ink trail left by pen head is called the \fIoffset\fR\h'-.1m'. +So, for a character, \*(MF follows the center-line path to calculate the path +of offset points, i.e., the envelope, and then fills the envelope with +bits. +In either case, \*(MF ends up filling an envelope. +.pp +We need to break \*(MF into a front end and a back end at the point +just after the envelope has been calculated. Then we provide a new back +end that converts the envelope into \*(pS instead of filling the +envelope with bits. Note then that the \*(pS printer will fill in the +envelope with bits as it fills the path obtained from the envelope. +.pp +The following subsections describe the data and the calculations +involved in the new back end. +.Su "4.2\ \ \ Data structures." +The main data structures that \*(MF keeps for a character are the +center-line path, the pen shape, and the envelope path. There are a few +operations that can be performed on paths, called transformations. +.SU "4.2.1\ \ \ \*(MF's path representation." +.ft 1 +When a \*(MF user specifies a path, \*(MF creates a list of knots and +control points for the associated cubic spline curves. If the knots are +$z sub 0 ,~z sub 1 ,...,~z sub n$, there are control points $z sub k +sup +$ and $z sub k+1 sup -$ such that the cubic splines between the +knots $z sub k$ and $z sub {k+1}$ are defined by the \*(BZ formula +.sp +.in +.4375i +$z(t)~=~B(z sub k, z sub k sup + , z sub k+1 sup - , z sub k+1 ;t)$ +.sp .2v +\h'\w'$z(t)~$'u'$=~(1~-~t) sup 3 z sub k ~+~ 3t(t~-~1) sup 2 z sub k sup +$ +.sp .2v +\h'5P'$+~ 3t sup 2 (1~-~t)z sub k+1 sup - ~+~ t sup 3 z sub k+1$, +.sp +.in -.4375i +for $0~<=~t~<=~1$. +.pp +There is a 7-word node for each knot $z sub k$, containing one word of +control information and six words for the $x$ and $y$ coordinates of $z +sub k sup -$ and $z sub k$ and $z sub k sup +$. The control +information appears in the \fIleft_type\fR and \fIright_type\fR +fields and they specify properties of the curve as it enters and leaves +the knot. There is also a \fIlink\fR field, which points to the +following knot. Before the \*(BZ control points have been calculated, +the memory space they will ultimately occupy is taken up by information +that can be used to compute them. The \*(MF \fImake_choices\fR +procedure chooses angles and control points for the splines of a curve +when the user has not specified them explicitly. +.SU "4.2.2\ \ \ \*(MF's path transformation." +.ft 1 +When \*(MF digitizes a path, it reduces the problem to the special case +of paths that travel in the \fIfirst octant\fR directions; i.e., each +cubic $z(t)~=~(x(t),y(t))$ being digitized will have the property that +$0~<=~y prime (t)~<=~x prime (t)$. This assumption makes digitizing +simpler and faster than if the direction of motion has to be tested +repeatedly. When $z(t)$ is cubic, $x prime (t)$ and $y prime (t)$ are +quadratic, hence each of the four polynomials, $x prime (t)$, $y prime (t)$, $x +prime (t) - y prime (t)$, and $x prime (t) + y prime (t)$, crosses +through $0$ at most twice. If we subdivide the given cubic at these +places, we get at most nine subintervals. In each of these intervals +each of $x prime (t)$, $y prime (t)$, $x prime (t) - y prime (t)$, and +$x prime (t) + y prime (t)$ has a constant sign. The curve can be +transformed in each of these subintervals so that it travels entirely +in first octant directions, if we exchange $x$ and $- x$, $y$ and $- +y$, and $x$ and $y$ as necessary. +.Su "4.3\ \ \ Pens and envelopes." +There are two kinds of pen heads that may be used, polygonal and +elliptic. There are a number of trade-offs involved in their use. The +first subsection treats the case of an $n$-vertex polygonal pen shape +and the second treats the case of an elliptical pen shape. Both +describe the influence of pen shape on the envelope of the font. +.SU "4.3.1\ \ \ Polygonal pens." +Suppose that the vertices of a polygon are $w sub 0 ,~w sub 1 ,...,~w +sub n-1 , ~w sub n ~=~ w sub 0$ in counterclockwise order. A convexity +condition requires that each vertex turns left when one proceeds from +$w sub 0$ to $w sub 1$ $...$ to $w sub n$. The envelope is obtained if we +offset a given curve $z(t)$ by $w sub k$ when that curve is traveling +in a direction $z prime (t)$ lying between the directions $w sub k - w +sub k-1$ and $w sub k+1 - w sub k$. At times $t$ when the curve +direction $z prime (t)$ increases past $w sub k+1 - w sub k$, \*(MF +temporarily stops plotting the offset curve and inserts a straight line +from $z(t) + w sub k$ to $z(t) + w sub k+1$; notice that this straight +line is tangent to the offset curve. Similarly, when the curve +direction decreases past $w sub k - w sub k-1$, \*(MF stops plotting +and inserts a straight line from $z(t) + w sub k$ to $z(t) + w sub +k-1$; the latter line is actually a retrograde step, which will not be +part of the final envelope under \*(MF's assumptions. The result of +this consideration is a continuous path that consists of alternating +curves and straight line segments. The segments are usually so short, +in practice, that they blend with the curves. +.SU "4.3.2\ \ \ Elliptical pens." +To get the envelope of a cyclic path with respect to an ellipse, \*(MF +calculates the envelope with respect to a polygonal approximation to +the ellipse. This has two important advantages over trying to obtain +the exact envelope: +.l1 1 +.le +Polygonal envelopes give better results, because the polygon has +been designed to counteract problems that arise from digitization; the +polygon includes sub-pixel corrections to an exact ellipse that make +the results essentially independent of where the path falls on the +raster. +.le +Polygonal envelopes of cubic splines are cubic splines. Hence it is +not necessary to introduce completely different routines. By contrast, +exact envelopes of cubic splines with respect to ellipses are +complicated curves, more difficult to plot than cubics. +.e1 +.Su "4.4\ \ \ Taking out data." +After \*(MF has calculated the paths and the offsets, it is ready to +send the values to the \fImake_moves\fR procedure which generates +discrete moves for any four points that represent a \*(BZ curve. This +is done for each one of the cyclic paths from which the letter is built. +When the offsets are zero, this is done by the \fIfill_spec\fR +procedure. Otherwise this is done by the \fIfill_envelope\fR +procedure. In the latter case, the line segments, which were discussed +earlier, should be taken out also in order to get smooth connections +between the different curves that the cyclic path is built from. +Because \*(pS describes any shape in terms of curves and lines, this is +the point to take advantage of \*(MF's calculations, i.e., when \*(MF +calls the \fImake_moves\fR procedure and when \*(MF draws line +segments for offset corrections. +.Su "4.5\ \ \ Processing the data." +The generated data are not ready yet to be used. First, we should +unskew, i.e., transform from the first octant back to the original, the +paths according to the octant that the paths were traveled in before +they were skewed. This unskewing is done by taking out the octant +number at the moment that the \fImake_moves\fR procedure is called +and then using \*(MF's \fIunskew\fR procedure that sets values $x +prime$ and $y prime$ to the original coordinate values of a point, +given an octant code and coordinates $(x,y)$ after they have been +mapped into the first octant and skewed; the new values are sent to the +\fIsend_p_s\fR procedure. This procedure has eight formal parameters +that are all used when sending a curve. When sending a line, +only four parameters are used, two to denote the start point and two to +denote the end point; the remaining four parameters are sent as zeros +so \fIsend_p_s\fR can distinguish whether a line was sent or a curve. +In the next step, \fIsend_p_s\fR unscales the numbers because \*(MF +works with units of scaled points, of which there are $2 sup 16$ in an +ordinary point. While unscaling, the values are +transformed in order to send them to the \*(pS dictionary +\&\fCFontBBox\fP command. After this pre-processing, +the data are sent to a temporary file. +.SU "4.5.1\ \ \ Getting more information." +When \*(MF calls the \fImake_moves\fR procedure, it does not have any +information on the role that this path is going to play, whether the +current cyclic path is going to be \fIfilled\fP or whether it will act as +a boundary of a region to be \fIerased\fP. +.pp +In order to distinguish between the cases, more information has to be +taken. This is done by copying the \&\fCplain.mf\fR file into a new +file named \&\fCmyplain.mf\fR and adding a few lines to it. The +additional code was added in order to identify \*(MF's use of the +macros. \*(MF uses the variables for date only once, when the program +is started, so it was decided to use them in the rest of the +program. +The \&\fCyear\fR is changed to $-1$ when \*(MF's \&\fCpen_stroke\fR +macro is applied on a cyclic path, i.e., in the characters such as +\(lqo\(rq, \(lqO\(rq, and \(lqQ\(rq, and to $-2$ when the \&\fCerase\fR +macro is called. The \&\fCmonth\fR is changed when the \&\fCfill\fR +macro is called. There are three kinds of paths: +.l1 1 +.le +paths to be \fIfilled\fP are processed using the \*(pS \&\fCfill\fR +command. +.le +paths to be \fIstroked\fP are processed using the \*(pS \&\fCeofill\fR +command. +.le +paths to be \fIerased\fP are processed using specialized procedures +which will be discussed later. +.e1 +.sp .5v +.pp +A letter cannot always be treated as one unit by means of the +\&\fCfill\fR and \&\fCeofill\fR commands. For instance, the letter +\(lqQ\(rq is built of two different paths, the first of which is +stroked and the second of which is filled. Generating the letter +using the \*(pS \&\fCeofill\fR command causes a hole in the image (see +Figure 4). +.fs +.F+ +figure fig4.ps +.F- +.ca "Figure 4" +.fe +So while generating a letter, fill mode can be changed for each cyclic +path. Moreover, when generating a letter whose paths should be filled, +it is not always possible to use just one \&\fCfill\fR command (see +Figure 5). +.fs +.F+ +figure fig5.ps +.F- +.ca "Figure 5" +.fe +When a \*(pS \&\fCfill\fR command is applied to a path that is composed +of more than one subpath, say two for the sake of simplicity, and one +subpath is inside the other and is drawn in a direction opposite to the +external one, the internal path is considered a hole and is not filled +(see Figure 6). +.fs +.F+ +figure fig6.ps +.F- +.ca "Figure 6" +.fe +So, if several paths are to be filled in this manner, the description +of each one of them should be ended with the \&\fCfill\fR command. +There is one more benefit to using this strategy: The \*(pS \fCcurrent +path\fR stack becomes empty after encountering any kind of \&\fCfill\fR +command. Therefore, using the \&\fCfill\fR command after each path can +help avoid \&\fCstack overflow error\fRs if all paths together are too +long. +.SU "4.5.2\ \ \ Treating erasing paths." +There are three methods of handling the problem of paths that should be +erased by \fHmf2ps\fP itself: +.l1 1 +.le +filling with white: Because erasing paths are built in order to erase +an existing filled area and \*(pS overlaps paths (i.e., a region is +shown in the color that was drawn last), erasing paths can be +implemented by filling those paths with white. This solution is the +easiest, but it works only if the background is white and the letter is +drawn in some level of gray. If one wants to draw a letter with +background other than white, the resulting appearance will not be correct. +.pp +.le +calculating new paths resulting from subtracting the erasing paths from +the previous filled paths: Such a solution can be global. However, it +costs a lot in terms of processing time and accuracy, because paths are +given implicitly by four points, and in order to calculate the new +paths, one should find the intersection points of \*(BZ curves, i.e., +to find points that lie on both \*(BZ curves, and then calculate new +curves, which are difficult to calculate from those points. +.pp +.le +using the \*(pS \&\fCeoclip\fR command: Be\%cause the letters are bounded +in a $1000~times 1000$ box, a primary square path whose segments are +$1000$ units long should be declared and after it all the erasing paths +should be listed. After relocating the erasing paths we are ready to +declare \&\fCeoclip\fR, which means that the clipping path is the +external primary one and the internal paths, the erasing paths, are +holes. This is an elegant solution that uses the power of the language +and is available in simple situations in which there is no intersection +between the erasing paths (see Figure 7). +If there were intersections, a little more +sophisticated use of the \&\fCeoclip\fR command would be needed. Relocation +of the erasing paths is done by the procedure \&\fCdoarrange\fR. +.e1 +.fs +.F+ +figure fig7.ps +.F- +.ca "Figure 7" +.fe +.pp +There are other problems caused by the erasing paths. Because the +erasing paths have segments in common with paths to be filled, \*(pS must +decide whether the common segments are in the clipping path or not. +\*(pS does not seem to have a consistent policy on that and it seems to +be that the decision is taken arbitrarily (see Figure 8). +.fs +.F+ +figure fig8.ps +.F- +.ca "Figure 8" +.fe +An attempt to resolve the clipping path problem led to the first author +sending the following electronic message (obviously, not as nicely +formatted as herein) to Glenn Reid of Adobe Systems, Inc. +.qb +.nf +From simon Tue Mar 21 13:22:32 1989 +To: greid@adobe.com +Subject: Problem in PostScript +.fi +.sp +Dear Mr. Reid +.sp +I have got a problem in understanding the PostScript +policy in determining \(lqwhat is in the clipping path\(rq. +I think there is a problem in the boundaries. +Here is an example that shows that problem: +.es +.ft C + 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 +.ee +.ft R +As you see, the problem is that on top of the shape, the line +which belongs to the upper \(lqhole\(rq in the clipping path and to the +current path ( to be filled ) is drawn, and on bottom of the +shape it is not. +.sp +This is happening both on the Apple Laser printer and on the +QMS-80. +.sp +I would be glad to have a reply from you. +.sp +.nf +Thanks in advance +Shimon Yanai +C.S Dep. +Technion +.fi +.qe +What Mr. Reid saw when he printed the \*(pS commands contained in the +message is reproduced in Figure 9. +.fs +.F+ +figure fig9.ps +.F- +.ca "Figure 9" +.fe +Mr. Reid replied with the following: +.qb +.nf +From: greid@adobe.com (Glenn Reid) +To: Shimon Yanai <simon@techunix> +Cc: greid@adobe.com +Subject: Re: Problem in PostScript +In-Reply-To: Your message of Wed, 22 Mar 89 ... +Date: Wed, 22 Mar 89 11:41:35 PST +.fi +.sp +The problem is that the path you are filling falls exactly on the edge +of the clipping path. This produces a zero-width area to fill, and +unfortunately it sometimes fills and sometimes does not with the +current fill algorithm. I believe that it is related to the direction +of the paths; if the paths are going in opposite directions along the +same line, it will fill with a one-pixel area, but if they are going in +the same direction, it will not fill. +I believe this has been fixed to be more consistent in Display +PostScript, for what it's worth. +.sp +Glenn Reid +.br +Adobe Systems +.qe +.pp +The idea of using opposite directions had been checked before sending +the letter, so the problem had to be solved within the back end of +\fHmf2ps\fP. The +erasing paths near the top of the letter had their $y$ coordinates +increased by 0.8 points, and those near the bottom had their $y$ +coordinates decreased by the same amount. This shift is invisible to +the human eye because the font definitions are in terms of hundreds of +points (see Figure 10). This solution was designed to work with most +existing \*(MF fonts. It is possible that there will be fonts that are not +treated well by this solution. +.fs +.F+ +figure fig10.ps +.F- +.ca "Figure 10" +.fe +.Su "4.6\ \ \ Optimization." +Optimization is done in order to make the description of the fonts +shorter and to save work in the \*(pS interpreter. This is done in +three ways: +.l1 1 +.le +not printing lines with length zero. As was said earlier, the \*(MF +program prints lines to connect offset points. There are times that +after rounding or truncating the output data, the start point and the +end point are equal. In such cases, the lines are eliminated. +.le +checking if the \*(BZ curve acts as a line. From the definition of the +\*(BZ curve, it is known that if the two control points lie on the line +that connects the start point and the end point, the curve is of degree +one. In such cases \fHmf2ps\fP generates a command to print a line from +the start point to the end point, thus saving space and avoiding +redundant calculations for the \*(pS interpreter. +.le +checking if a series of consecutive line segments are in the same line. +This is done by storing the segments in a buffer and checking whether a +new segment is collinear with the last stored. +.e1 +.Su "4.7\ \ \ Changed or added routines." +The following is a list of routines that were changed or added in order +to build \fHmf2ps\fP from \*(MF. +.in +1P +.LE +\fIprintchar\fP was modified to get character names. +.LE +\fIfixdateandtime\fP was modified to initialize variables that were used as flags in the macros. +.LE +\fIfillspec\fP was modified to send out data on splines. +.LE +\fIskewlineedges\fP was modified to send out offset lines. +.LE +\fIdualmoves\fP was modified to send out offset lines. +.LE +\fIfillenvelope\fP was modified to send out data on splines. +.LE +\fIdostatement\fP was modified to identify tokens that are strings. +.LE +\fImain\fP was modified to call the \fHmf2ps\fP procedure in the beginning and ending of the program. +.LE +\fIsendcurve\fP was added to unskew spline values and to send them to the next process. +.LE +\fIsendline\fP was added to unskew line values and to send them to the next process. +.LE +\fIok\fP was added to check if two lines are collinear. +.LE +\fIrestore\fP was added to restore the parameters of the last line. +.LE +\fIrecall\fP was added to recall values from the buffer. +.LE +\fIus\fP was added to convert the \*(MF scale so that a letter would fit the +Adobe standard $1000~times~1000$ bounding box. +.LE +\fIsend_p_s\fP was added to create a \*(pS file of lines and curves. +.LE +\fImakemoves\fP was modified to send out spline data. +.LE +\fIdump\fP was added to append information from the file named \&\fCf\fP to the file named \&\fCg\fP. +.LE +\fIcheckerase\fP was added to identify the file that contains \(lqerase\(rq commands, and their position within the file. +.LE +\fIdoarrange\fP was added to put erasing paths at the beginning of the file. +.LE +\fIprint_start\fP was added to signal the beginning of a new cyclic path to be processed. +.LE +\fIprint_end\fP was added to signal the end of the current cyclic path. +.LE +\fIinit_ps\fP was added to make initializations. +.LE +\fImakenewdef\fP was added to make initializations when more than one character +occurs in the input. +.LE +\fIcloseolddef\fP was added to close the last definition. +.LE +\fItini_ps\fP was added to handle the ending of the process. +.LE +\fIauxprintchar\fP was added to print characters. +.LE +\fIauxprint\fP was added to print strings. +.in -1P +.su "5\ \ \ Operation of \fHmf2ps\fP in a \fHU\s-2NIX\s0\fP environment" +.ft 1 +.PP +When invoked, +\fHmf2ps\fP +first asks for an output file name. For the example this file is called +\&\fCex1\fP. \fHmf2ps\fP then asks, +.ES +.fi +.na +\(lq\&\fCAre you creating the whole dictionary (y/n)?\fP\(rq. +.EE +.ad +If the answer is other than \(lq\&\fCy\fP\(rq +or \(lq\&\fCY\fP\(rq, it is considered \(lq\&\fCno\fP\(rq. If the +answer is \(lq\&\fCy\fP\(rq or \(lq\&\fCY\fP\(rq, then the whole +dictionary is created. This means that \fHmf2ps\fP creates a \*(pS +dictionary that includes entries for all the characters that are in +the input, e.g., \&\fCcmr10\fP set. This dictionary needs additional +definitions such as \fIleft side bearing, width, bounding box\fP, etc. +These definitions need information on character features that must be +calculated within the program. Otherwise, the whole dictionary is not +created and the program treats the input as a single character +definition that is to be translated into a \*(pS outline definition. +After \fHmf2ps\fP prompts \(lq\&\fC**\fP\(rq, we are in the \*(MF +environment. Now the user inputs +.ES +\s-1\\mode=hires;\\nodisplays;\\input cmr10;\(cr\s0 +.EE +After \fHmf2ps\fP has finished, the resulting \*(pS font dictionary can +be used to print text. In order to print text, the font dictionary +should be installed in some formatter's font source directory, and then +it can be loaded through the formatter's commands. The dictionary +followed by appropriate \fHshow\fP and \fHshowpage\fP commands can also +be sent directly to the printer. +.su "6\ \ \ Evaluation of results" +.PP +This section evaluates the \fHmf2ps\fP program relative to goals +established in section 3.2. The program was produced as a variation of +\*(MF and it accepts any \*(MF font definition and produces a \*(pS +outline font scaleable up to magnification 8, or to point size 80 if +you are not a purist. Thus goals 6 and 1 have been entirely met and +goal 2 is partially met. To meet goal 2 fully the program must be +modified to allow large enough arrays to handle magnifications up to +7200; this is left to future work. +.pp +It remains to evaluate the appearance and sizes of the outline fonts +relative to the bitmapped fonts to see if goals 3, 4, and 5 have been +met. +.Su "6.1\ \ \ Appearance." +In order to compare appearances, the outline font (Sub\%sub\%fi\%gure P) +and and the 300 dpi bitmapped font (Sub\%sub\%fi\%gure M) generated from +the same \*(MF definition are used to +print similar sentences at one, two, or three different sizes or +magnifications on three devices of differing resolutions. +The sentences are printed in the \&\fCcmr\fP (Sub\%fi\%gure R), +\&\fCcmtt\fP (Sub\%fi\%gure T), and \&\fClasy\fP (Sub\%fi\%gure S) typefaces. +The bitmapped fonts may be printed at design sizes 7, 8, 10, or 12, and +the outline fonts may be printed at magnifications .7, .8, 1.0, or 1.2. +Finally, the three devices are the 300 dpi LaserWriterII (Figure +11-LW300), the 600 dpi Varityper (Figure 11-VT600), and the 1270 dpi +Linotronic 300 (Figure 11-LT1270). The bitmapped font examples are +formatted with \*(TX while the outline font examples are hand-coded \*(pS +files sent directly to the printer. Since the +formatter with which this paper is printed can use arbitrary \*(pS +fonts, half of the examples could have been done in-line without +pasting in. However, for fairness in the comparison, all examples were +cut out and pasted in. +.pp +There are visible differences due to differences in the formatting +software. \*(TX squeezes the letters closer together than does the \*(pS +engine. Moreover, the interword space is constant in the \*(pS +dictionary but is varied by \*(TX according to the line structure. +These differences are not the differences that are at issue here. +.pp +On the 300 dpi device, the characters from the bitmapped fonts print thinner +than are those of the outline fonts. However, the edges of both sets are +equally smooth or jagged as the case may be in all sizes. Overall, then, +the appearance of the characters of the bitmapped fonts is crisper than +that of the outline fonts. +On the higher resolution devices, +the thicknesses of the characters are closer to being +equal at all sizes. Thus, the \*(MF program does a better job of building a +correctly sized bitmap at 300 dpi than does the 300 dpi \*(pS engine of the +LaserWriterII. The latter seems to round up too much. However, both +seem to get the edges equally smooth even at low sizes and low resolutions. +.pp +At the two higher resolutions, the outline fonts are significantly better +than the outline fonts at lower resolutions and are significantly better +than the bitmapped fonts at the same resolution of printing. However, this +latter is true because the bitmapped fonts were generated by the \*(MF +program specifically to be printed at 300 dpi. +When a 300-dpi bitmap is printed with no scaling at 600 or 1270 dpi, it +remains a 300-dpi bitmap. As expected, the 300-dpi bitmapped fonts print better +at 300 dpi than they do at the two higher resolutions. +.pp +The generated outlines are not fine-tuned for printing at low resolutions, +such as 300 dpi, +as are the \*(MF-generated bitmaps. It might be useful to make use of +the \*(pS facilities for hinting to improve the appearance of the +characters printed from the outlines at low resolutions. +.pp +Figure 12 shows samples of similar sentences printed on the same three +devices using the standard Helvetica, Times +Roman, and Courier \*(pS outline fonts built into most \*(pS-executing +laser printers. +It appears to these authors that the standard \*(pS fonts are +significantly better than those generated from \*(MF fonts. However, +this is not surprising. Adobe uses a grid of $1000~times~1000$ for its +character definitions, resulting in a resolution of 7200 dpi for characters +printed at point size 10. +Because of size limitations of the +\*(MF program the \*(MF outline fonts are using a resolution of 3,000 +points per inch. However, when using the letters in small sizes such as +from 10 to 70, +quality differences are hardly visible especially when working +with printers that have a resolution of 300 points per inch such as the +Apple LaserWriter. +Moreover, Adobe makes liberal use of hinting to +improve the appearance of its fonts at low resolutions. +We completely ignored hinting, as we did not see any way to +automatically generate the hints. +.Su "6.2\ \ \ Sizes of fonts." +Recall that it is necessary to compare the size of the \*(pS outline +font for a particular \*(MF definition to the sizes of the bitmapped +fonts in \*(pS fonts for the individual and all magnifications. +.pp +This comparison is made in this section for the \&\fCcmr10\fP font at the +standard set of six magnifications 1, 1.095, 1.2, 1.44, 1.728, and 2.07 +(which are approximations of 1.2 raised to the powers 0, .5, 1, 2, 3, +and 4, respectively). In addition, as a gesture to those who are not +purists and accept magnifications of the 10 point design size as +different point sizes, the comparison includes the \&\fCcmr\fP font at +point size 5, 6, 7, 8, 9, 10, 12, and 17, the standard eight design +sizes maintained for use with \*(TX. +.pp +Table 1 shows the sizes in bytes. Thus it is clear that the +\*(pS outline font is bigger than any bitmapped font and that goal 4 +fails. Moreover, it is clear that the outline font is bigger than the +sum over all magnifications of one design size and than the sum over +all standard design sizes. Thus goal 5 fails. In fact, this failure is the +reason that the samples of Figure 11 involve only upper case letters. Samples +with complete fonts with both cases often overloaded the printer available +to the students at the time this work was done. +.TS +center; +l r l r l. +Font Design Magni- Bitmap Outlines + size fication (size in (size in + bytes) bytes) +_ +\fCcmr\fP 10 1.0 22,812 245,000 +\ \ " 10 1.095 24,231 \ \ \ \ " +\ \ " 10 1.2 26,044 \ \ \ \ " +\ \ " 10 1.44 31,892 \ \ \ \ " +\ \ " 10 1.728 39,614 \ \ \ \ " +\ \ " 10 2.07 50,578 \ \ \ \ " +\fCcmr\fP 5 1.0 16,729 \ \ \ \ " +\ \ " 6 1.0 17,757 \ \ \ \ " +\ \ " 7 1.0 18,820 \ \ \ \ " +\ \ " 8 1.0 20,041 \ \ \ \ " +\ \ " 9 1.0 21,580 \ \ \ \ " +\ \ " 12 1.0 25,658 \ \ \ \ " +\ \ " 17 1.0 37,140 \ \ \ \ " +_ +Total 352,896 245,000 +.TE "Table 1" +.br +.RT +.pp +However, do note that the outline font is smaller than the sum over all +design sizes and magnifications thereof. +.pp +So in terms of disk space for the non-purists, the outline font +represents a savings. Again notice that not all magnifications of the +bitmapped fonts are maintained and the outline font is arbitrarily +scaleable. Moreover, as the magnification grows the size of the bitmap +grows even more rapidly. +.pp +The disappointment with respect to saving printer and disk memory says +that it is important to spend more effort to optimize the outline +font. +.pp +All is not lost, though! As this paper was being prepared for publication +in \*(TB, +one reviewer, Nelson Beebe, pointed out something that we can only kick +ourselves for not noticing. The \*(pS outline fonts that are generated by +\fHmf2ps\fP are horrendously wasteful in space. They use original, built-in +command names and absolute coordinates. A significant reduction in size can +be obtained by definition and use in the outlines of single-character +command names, e.g., \(lq\fCM\fP\(rq for \(lq\fCmoveto\fP\(rq, and by use +of relative versions of these commands with operands of fewer digits after +the initial absolute \&\fCmoveto\fP of any character. A simple filter was +written to obtain new compressed versions of the \*(pS outline fonts. The +appearances of the output when printing with these new versions is +unchanged, but what is sent to the printer is significantly smaller, about +37.7% smaller. The reduction on a per-letter basis is about 45%. +Table 2 shows the information of Table 1 for the new versions of the +outline fonts. +.TS +center; +l r l r l. +Font Design Magni- Bitmap Outlines + size fication (size in (size in + bytes) bytes) +_ +\fCcmr\fP 10 1.0 22,812 152,670 +\ \ " 10 1.095 24,231 \ \ \ \ " +\ \ " 10 1.2 26,044 \ \ \ \ " +\ \ " 10 1.44 31,892 \ \ \ \ " +\ \ " 10 1.728 39,614 \ \ \ \ " +\ \ " 10 2.07 50,578 \ \ \ \ " +\fCcmr\fP 5 1.0 16,729 \ \ \ \ " +\ \ " 6 1.0 17,757 \ \ \ \ " +\ \ " 7 1.0 18,820 \ \ \ \ " +\ \ " 8 1.0 20,041 \ \ \ \ " +\ \ " 9 1.0 21,580 \ \ \ \ " +\ \ " 12 1.0 25,658 \ \ \ \ " +\ \ " 17 1.0 37,140 \ \ \ \ " +_ +Total 352,896 152,670 +.TE "Table 2" +.br +.RT +.pp +There are still better compressions that can be achieved. According to +Beebe\*(<,\*([.4\*(.]\*(>, +Toal and Raine's outline representation of \&\fCcmr\fP at 10 points +requires about twice the space needed for bitmaps of the same; at 14 to +16 points, the outlines and the bitmaps occupy about the same amount of +space; above 16 points, the outlines are smaller than the bitmaps. It +is clear that better encodings exist than we explored and these must be +explored for any future version of \fHmf2ps\fP. +.pp +One such better encoding appears to be that used by Adobe for its own +proprietary fonts; fonts encoded this way have a FontType of 1. +User defined fonts have a FontType of 3. Beebe\*([.4\*(.] +says that type 1 fonts are handled with greater efficiency than type 3 +fonts on most existing \*(pS interpreters, especially those that are based +on Adobe-licensed code. +Adobe has recently published specifications for the type 1 font encoding\*(<,\*([.2\*(.]\*(>, +thus allowing anyone to produced type 1 fonts. Beebe believes that the +market forces will drive other companies to encode their fonts as type 1. +Moreover, as more and more windowing systems based on \*(pS, e.g., NeWS +and NeXT, appear, the attraction of \*(pS outline fonts will increase, as +then the same font can be used for both printing and previewing. Thus, the +incentive will be to convert \*(MF fonts into type 1 \*(pS outline fonts. +.pp +Ultimately, the tradeoff is between the size of the font sent to the +printer, and the time it takes for the printer to decode the program +for the characters. However, with proper cacheing, a big enough cache, +and a not very fancy document, the decoding is done only once per +character for the document! +.su "7\ \ \ Future work" +.PP +For the future, there are a number of improvements that can be made. +Currently, each letter of the \*(pS outline fonts is described as a set +of cyclic paths. When all are filled or stroked, one gets the desired +letter. Some of those cyclic paths have a common boundary that is +inside the letter and is not necessary for the outline description of +the letter as a whole. Eliminating these paths and creating one +outline for the letter will save space. Today this can be done +manually, and is worth the effort because the translation process is +done only once. From that time on, the font is used the way it is. +.pp +As was demonstrated by Beebe's rescue of our result, closer attention +should be paid to obtaining more compact representations of character +outlines, representations for which \*(pS routines can be written to +interpret them into standard outline drawing commands. +Collapsing commands into single characters and using relative movements +saved significant amounts of space. Perhaps, even more dramatic savings can +be obtained by giving coordinates and distances in hexadecimal. +.pp +More effort can be spent on modifying the program in order to allow +magnifications up to 7200 points. Thus, no jaggies will be seen, as +occasionally happens when using higher magnifications, e.g., in our +translated fonts at magnification 8. This could be done by enlarging +the program arrays to handle characters based on 7200 points. A +sophisticated solution is required if one wants to save room while +compiling the input font. In such a case, any linear translation which +is done within the \*(pS program is with a factor less than 1. +.pp +\*(MF was changed for \*(TX 3.0. It is necessary to build a new version of +\fHmf2ps\fP based on this latest version of \*(MF. As the changes to the +\*(MF program deal mainly with ligatures and kerning, the calculation of +envelopes is probably not affected. Therefore, it is likely that +the portion of \*(MF up to the calculation of the envelope can still be +used as a front end for \fHmf2ps\fP with very little change in the +portion of the program we wrote. +.pp +Finally, it might be worthwhile, for the sake of portability to other +systems and enhanceability by \pother +.sp +humans, to rewrite or to write the next +version of \fHmf2ps\fP with \&\fCWEB\fP. +.su "Acknowledgments" +.PP +The authors thank the +\*(TB editors, and Nelson Beebe for their help, sharp comments, and +result-saving ideas. +Dealing with their comments made this a better paper. +.su "References" +.]< +.\"1985-P\s-2OST\s0S\s-2CRIP-3 +.ds [F 1 +.]- +.ds [L Adb85 +.ds [K PostScript +.ds [T P\s-2OST\s0S\s-2CRIPT\s0 Language Reference Manual +.ds [I Adobe Systems Incorporated, Addison-Wesley +.ds [C Reading, MA +.ds [D 1985 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 2 book +.\"1990-Adobe-Type-1-Font-Fo-13 +.ds [F 2 +.]- +.ds [L Adb90 +.ds [T Adobe Type 1 Font Format +.ds [I Adobe Systems, Inc. +.ds [D March, 1990 +.ds [R Part No. LPS0064 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 4 tech-report +.\"Bechtolsheim.S.v.-1989-T\v'+.2m'\h'-.1m'E\h-6 +.ds [F 3 +.]- +.ds [L Bec89 +.ds [A S.\ von\ Bechtolsheim +.ds [T The T\v'+.2m'\h'-.1m'E\h'-.1m'\v'-.2m'X PostScript Software Package +.ds [J TUGboat +.ds [V 10 +.ds [N 1 +.ds [P 25\(en27 +.nr [P 0 +.ds [D 1989 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 1 journal-article +.\"Beebe.N.-1990-12 +.ds [F 4 +.]- +.ds [L Bee90 +.ds [A N.\ Beebe +.ds [O Private communication, via electronic mail +.ds [D 1990 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 0 other +.\"Carr.L.-1987-Of-Metafont-and-Post-8 +.ds [F 5 +.]- +.ds [L Car87 +.ds [A L.\ Carr +.ds [T Of Metafont and PostScript +.ds [J T\h'-.1m'\v'+.2m'E\v'-.2m'Xniques +.ds [V 5 +.ds [P 141\(en152 +.nr [P 0 +.ds [C Seattle, WA +.ds [D August, 1987 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 1 journal-article +.\"Henderson.D.-1989-Outline-fonts-with-\-9 +.ds [F 6 +.]- +.ds [L Hen89 +.ds [A D.\ Henderson +.ds [T Outline fonts with \f(LGMETAFONT\fP +.ds [J TUGboat +.ds [V 10 +.ds [N 1 +.ds [P 36\(en38 +.nr [P 0 +.ds [D 1989 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 1 journal-article +.\"Hobby.J.D.-1989-\f(LGMETAFONT\fP-lik-11 +.ds [F 7 +.]- +.ds [L Hob89 +.ds [A J.D.\ Hobby +.ds [T A \f(LGMETAFONT\fP-like System with PostScript Output +.ds [J TUGboat +.ds [V 10 +.ds [N 4 +.ds [P 505\(en512 +.nr [P 0 +.ds [D 1989 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 1 journal-article +.\"Kernighan.B.W.-1982-Typesetter-independe-5 +.ds [F 8 +.]- +.ds [L Ker82 +.ds [A B.W.\ Kernighan +.ds [T A Typesetter-independent TROFF +.ds [R Computing Science Technical Report No. 97 +.ds [I Bell Laboratories +.ds [C Murray Hill, NJ 07974 +.ds [D March, 1982 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 4 tech-report +.\"Knuth.D.E.-1984-T\h'-.1m'\v'+.2m'E\v-4 +.ds [F 9 +.]- +.ds [L Knu84 +.ds [K T\dE\u\(*xbook +.ds [A D.E.\ Knuth +.ds [T The T\h'-.1m'\v'+.2m'E\v'-.2m'Xbook +.ds [I Addison-Wesley +.ds [C Reading, MA +.ds [D 1984 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 2 book +.\"Knuth.D.E.-1986-\f(LGMETAFONT\fPbook-1 +.ds [F 10 +.]- +.ds [L Knu86 +.ds [A D.E.\ Knuth +.ds [T The \f(LGMETAFONT\fPbook +.ds [I Addison-Wesley +.ds [C Reading, MA +.ds [D 1986 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 2 book +.\"Knuth.D.E.-1987-\f(LGMETAFONT\fP:-Th-2 +.ds [F 11 +.]- +.ds [L Knu87 +.ds [A D.E.\ Knuth +.ds [T \f(LGMETAFONT\fP: The Program +.ds [I Addison-Wesley +.ds [C Reading, MA +.ds [D 1987 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 2 book +.\"Toal.G.-1990-10 +.ds [F 12 +.]- +.ds [L Toa90 +.ds [A G.\ Toal +.ds [O Private communication, via electronic mail +.ds [D 1990 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 0 other +.\"Ziv.J.-1977-Universal-Algorithm--7 +.ds [F 13 +.]- +.ds [L ZL77 +.ds [A J.\ Ziv +.as [A " and A.\ Lempel +.ds [T A Universal Algorithm for Sequential Data Compression +.ds [J IEEE Trans\%actions on Information Theory +.ds [V IT-23 +.ds [V 3 +.ds [P 337\(en343 +.nr [P 0 +.ds [D May, 1977 +.nr [T 0 +.nr [A 0 +.nr [O 0 +.][ 1 journal-article +.]> +.RT +.sp 2 +.ta 1P +1P +.in +6P +.ps 9 +.vs 11 +.nf +.ti -1P +\(dm Shimon Yanai +IBM Science and Technology + Center +Technion City +.sp +Haifa 32000 +Israel +yanai@israearn.bitnet +.sp +.ti -1P +\(dm Daniel M. Berry +Computer Science +Technion +Haifa 32000 +Israel +dberry@cs.technion.ac.il +.fi +.in -6P +.RT diff --git a/fonts/utilities/mf2ps/doc/printsamples/README b/fonts/utilities/mf2ps/doc/printsamples/README new file mode 100644 index 0000000000..a3c13aecac --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/README @@ -0,0 +1,15 @@ +builtins.ps - to make figure 12 samples +cm.ps - to make Figure 11 R M examples +cm.tex - to make Figure 11 R M examples +cm7.ps - to make Figure 11 7 R M examples +cm7.tex - to make Figure 11 7 R M examples +cmr.ps - to make Figure 11 R P examples +cmtt.ps - to make Figure 11 T P examples +lasy.ps - to make Figure 11 L P examples +logo.ps - to make a sample of METAFONT in its own font +sy.ps - to make Figure 11 L M examples +sy.tex - to make Figure 11 L M examples +tt.ps - to make Figure 11 T M examples +tt.tex - to make Figure 11 T M examples +tt7.ps - to make Figure 11 8 T M examples +tt7.tex - to make Figure 11 8 T M examples diff --git a/fonts/utilities/mf2ps/doc/printsamples/builtins.ps b/fonts/utilities/mf2ps/doc/printsamples/builtins.ps new file mode 100644 index 0000000000..0b70fc607a --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/builtins.ps @@ -0,0 +1,16 @@ +%! + /Helvetica findfont 10 scalefont setfont + 100 710 moveto (THIS IS HELVETICA TEN POINTS WRITTEN IN POSTSCRIPT) show + /Helvetica findfont 12 scalefont setfont + 100 698 moveto (THIS IS HELVETICA TWELVE POINTS WRITTEN IN POSTSCRIPT) show + + /Times-Roman findfont 10 scalefont setfont + 100 674 moveto (THIS IS TIMES-ROMAN TEN POINTS WRITTEN IN POSTSCRIPT) show + /Times-Roman findfont 12 scalefont setfont + 100 662 moveto (THIS IS TIMES-ROMAN TWELVE POINTS WRITTEN IN POSTSCRIPT) show + + /Courier findfont 10 scalefont setfont + 100 638 moveto (THIS IS COURIER TEN POINTS WRITTEN IN POSTSCRIPT) show + /Courier findfont 12 scalefont setfont + 100 626 moveto (THIS IS COURIER TWELVE POINTS WRITTEN IN POSTSCRIPT) show + showpage diff --git a/fonts/utilities/mf2ps/doc/printsamples/cm.ps b/fonts/utilities/mf2ps/doc/printsamples/cm.ps new file mode 100644 index 0000000000..e6c141fad0 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cm.ps @@ -0,0 +1,211 @@ +%!PS-Adobe-2.0 +%%Creator: dvips by Radical Eye Software +%%Title: cm.dvi +%%Pages: 1 -1 +%%BoundingBox: 0 0 612 792 +%%EndComments +%%BeginDocument: tex.pro +/TeXDict 200 dict def TeXDict begin /bdf{bind def}def /Inch{Resolution mul} +bdf /Dots{72 div Resolution mul}bdf /dopage{72 Resolution div dup neg scale +translate}bdf /@letter{Resolution dup -10 mul dopage}bdf /@note{@letter}bdf +/@a4{Resolution dup -10.6929133858 mul dopage}bdf /@translate{translate}bdf +/@scale{scale}bdf /@rotate{rotate}bdf /@landscape{[0 1 -1 0 0 0]concat +Resolution dup dopage}bdf /@legal{Resolution dup -13 mul dopage}bdf +/@manualfeed{statusdict /manualfeed true put}bdf /@copies{/#copies exch def} +bdf /@FontMatrix[1 0 0 -1 0 0]def /@FontBBox[0 0 1 1]def /dmystr(ZZf@@)def +/newname{dmystr cvn}bdf /df{/fontname exch def dmystr 2 fontname cvx(@@@)cvs +putinterval newname 7 dict def newname load begin /FontType 3 def /FontMatrix +@FontMatrix def /FontBBox @FontBBox def /BitMaps 256 array def /BuildChar{ +CharBuilder}def /Encoding TeXEncoding def end fontname{/foo setfont}2 array +copy cvx def fontname load 0 dmystr 5 string copy cvn cvx put}bdf /dfe{ +newname newname load definefont setfont}bdf /ch-image{ch-data 0 get}bdf +/ch-width{ch-data 1 get}bdf /ch-height{ch-data 2 get}bdf /ch-xoff{ch-data 3 +get}bdf /ch-yoff{ch-data 4 get}bdf /ch-tfmw{ch-data 5 get}bdf /CharBuilder{ +save 3 1 roll exch /BitMaps get exch get /ch-data exch def ch-data null ne{ +ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub +setcachedevice ch-width ch-height true[1 0 0 1 ch-xoff .1 sub ch-yoff .1 sub]{ +ch-image}imagemask}if restore}bdf /dc{/ch-code exch def dup 0 get length 1 lt{ +pop[<00>1 1 0 0 8.00]}if /ch-data exch def newname load /BitMaps get ch-code +ch-data put}bdf /bop{gsave /SaveImage save def 0 0 moveto}bdf /eop{clear +SaveImage restore showpage grestore}bdf /@start{/Resolution exch def +/TeXEncoding 256 array def 0 1 255{TeXEncoding exch 1 string dup 0 3 index put +cvn put}for}bdf /p{show}bdf /RuleMatrix[1 0 0 -1 -.1 -.1]def /BlackDots 8 +string def /v{gsave currentpoint translate false RuleMatrix{BlackDots} +imagemask grestore}bdf /a{moveto}bdf /delta 0 def /tail{dup /delta exch def 0 +rmoveto}bdf /b{exch p tail}bdf /c{p delta 4 sub tail}bdf /d{p delta 3 sub tail +}bdf /e{p delta 2 sub tail}bdf /f{p delta 1 sub tail}bdf /g{p delta 0 rmoveto} +bdf /h{p delta 1 add tail}bdf /i{p delta 2 add tail}bdf /j{p delta 3 add tail} +bdf /k{p delta 4 add tail}bdf /l{p -4 0 rmoveto}bdf /m{p -3 0 rmoveto}bdf /n{ +p -2 0 rmoveto}bdf /o{p -1 0 rmoveto}bdf /q{p 1 0 rmoveto}bdf /r{p 2 0 rmoveto +}bdf /s{p 3 0 rmoveto}bdf /t{p 4 0 rmoveto}bdf /w{0 rmoveto}bdf /x{0 exch +rmoveto}bdf /y{3 -1 roll p moveto}bdf /bos{/section save def}bdf /eos{clear +section restore}bdf /SDict 200 dict def SDict begin /@SpecialDefaults{/hs 8.5 +Inch def /vs 11 Inch def /ho 0 def /vo 0 def /hsc 1 def /vsc 1 def /ang 0 def +/CLIP false def /BBcalc false def}bdf /@hsize{/hs exch def /CLIP true def}bdf +/@vsize{/vs exch def /CLIP true def}bdf /@hoffset{/ho exch def}bdf /@voffset{ +/vo exch def}bdf /@hscale{@scaleunit div /hsc exch def}bdf /@vscale{ +@scaleunit div /vsc exch def}bdf /@angle{/ang exch def}bdf /@scaleunit 100 def +/@rwi{10 div /rwi exch def}bdf /@llx{/llx exch def}bdf /@lly{/lly exch def} +bdf /@urx{/urx exch def}bdf /@ury{/ury exch def /BBcalc true def}bdf +/@setclipper{BBcalc{rwi urx llx sub div dup scale llx neg lly neg translate}{ +hsc vsc scale}ifelse CLIP{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg +0 rlineto closepath clip}{initclip}ifelse}bdf end /@MacSetUp{userdict /md +known{userdict /md get type /dicttype eq{md begin /letter{}def /note{}def +/legal{}def /od{txpose 1 0 mtx defaultmatrix dtransform exch atan/pa exch def +newpath clippath mark{transform{itransform moveto}}{transform{itransform +lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ +itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ +closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put +10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}def /txpose{pxs pys +scale ppr aload pop por{noflips{pop exch neg exch translate pop 1 -1 scale}if +xflip yflip and{pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get +ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip +not and{pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 translate}if yflip xflip not and{ppr 1 get neg ppr 0 get neg translate} +if}{noflips{translate pop pop 270 rotate 1 -1 scale}if xflip yflip and{ +translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 +get ppr 0 get neg sub neg translate}if xflip yflip not and{translate pop pop +90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{ +translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate} +if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 +copy translate .96 dup scale neg exch neg exch translate}if}def /cp{pop pop +showpage pm restore}def end}if}if}def /psf$TeXscale{65536 div}def /startTexFig +{/psf$SavedState save def userdict maxlength dict begin Resolution 72 div dup +neg scale currentpoint translate /psf$ury exch psf$TeXscale def /psf$urx exch +psf$TeXscale def /psf$lly exch psf$TeXscale def /psf$llx exch psf$TeXscale def +/psf$y exch psf$TeXscale def /psf$x exch psf$TeXscale def currentpoint /psf$cy +exch def /psf$cx exch def /psf$sx psf$x psf$urx psf$llx sub div def /psf$sy +psf$y psf$ury psf$lly sub div def psf$sx psf$sy scale psf$cx psf$sx div +psf$llx sub psf$cy psf$sy div psf$ury sub translate /showpage{}def /erasepage{ +}def /copypage{}def @MacSetUp}def /doclip{psf$llx psf$lly psf$urx psf$ury +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 /endTexFig{end +psf$SavedState restore}def /@beginspecial{SDict begin /SpecialSave save def +gsave Resolution 72 div dup neg scale currentpoint translate @SpecialDefaults} +bdf /@setspecial{ho vo translate @setclipper ang rotate /showpage{}def newpath +}bdf /@endspecial{grestore clear SpecialSave restore end}bdf /@defspecial{ +SDict begin}bdf /@fedspecial{end}bdf /li{lineto}bdf /rl{rlineto}bdf /rc{ +rcurveto}bdf /np{/SaveX currentpoint /SaveY exch def def newpath}bdf /st{ +stroke SaveX SaveY moveto}bdf /fil{fill SaveX SaveY moveto}bdf /ellipse{ +/endangle exch def /startangle exch def /yrad exch def /xrad exch def +/savematrix matrix currentmatrix def translate xrad yrad scale 0 0 1 +startangle endangle arc savematrix setmatrix}bdf end +%%EndDocument +TeXDict begin 300 @start /fa df[<FF800FFFFF800FFF1E0001F00C0001F0040001E00400 +01E0060003E0020003C0020003C0010007800100078001FFFF8000FFFF0000800F0000801F0000 +401E0000401E0000603E0000203C0000203C000010780000107800001078000008F0000008F000 +0009F0000005E0000005E0000007E0000003C0000003C000000180000001800000018000>32 34 +-2 0 37]65 dc[<000FF000003FFC0000FC0E0001E0010007C000800F8000400F0000201E0000 +203E0000103C0000107C0000107C00001078000000F8000000F8000000F8000000F8000000F800 +0000F8000000F8000000F8000000780000107C0000107C0000103C0000303E0000301E0000300F +0000700F8000F007C001F001E0037000FC0E70003FF830000FE010>28 34 -3 0 35]67 dc[<FF +FFFFE0FFFFFFE0078003E0078000F0078000700780003007800030078000100780001007800010 +0780000807802008078020080780200007802000078060000780E00007FFE00007FFE0000780E0 +000780600007802000078020200780202007802020078000200780006007800060078000400780 +00C0078001C0078007C0FFFFFFC0FFFFFFC0>29 34 -2 0 33]69 dc[<FFFE0000FFFE00000780 +000007800000078000000780000007800000078000000780000007800000078020000780200007 +80200007802000078060000780E00007FFE00007FFE0000780E000078060000780200007802000 +07802020078020200780002007800020078000600780006007800040078000C0078001C0078007 +C0FFFFFFC0FFFFFFC0>27 34 -2 0 32]70 dc[<FFFC3FFFFFFC3FFF078001E0078001E0078001 +E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780 +01E0078001E0078001E007FFFFE007FFFFE0078001E0078001E0078001E0078001E0078001E007 +8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0FFFC3FFFFFFC3FFF +>32 34 -2 0 37]72 dc[<FFFCFFFC078007800780078007800780078007800780078007800780 +078007800780078007800780078007800780078007800780078007800780078007800780FFFCFF +FC>14 34 -2 0 18]73 dc[<FFFFFF00FFFFFF0007803F0007800F000780030007800300078001 +000780018007800180078000800780008007800080078000800780000007800000078000000780 +000007800000078000000780000007800000078000000780000007800000078000000780000007 +8000000780000007800000078000000780000007800000FFFE0000FFFE0000>25 34 -2 0 30] +76 dc[<FFE0203FFFFFE0703FFF1F007001E004007001E00400F801E00400F801E00400F801E0 +0401E401E00401E401E00401E401E00403C201E00403C201E004078101E004078101E004078101 +E0040F0081E0040F0081E0040F0081E0041E0041E0041E0041E0043C0021E0043C0021E0043C00 +21E004780011E004780011E004780011E004F00009E004F00009E004F00009E005E00005E005E0 +0005E007C00003E0FFC00003FFFFC00003FF>40 34 -2 0 45]77 dc[<FFE00020FFE000601F00 +0060040000E0040001E0040001E0040003E0040003E0040007A004000F2004000F2004001E2004 +003E2004003C20040078200400F8200400F0200401E0200401E0200403C0200407802004078020 +040F0020041F0020041E0020043C0020047C00200478002004F0002004F0002005E0002007C000 +F8FFC007FFFF8007FF>32 34 -2 0 37]78 dc[<000FE00000783C0001E00F0003C00780078003 +C00F0001E01E0000F01E0000F03C0000783C0000787C00007C7C00007C7800003CF800003EF800 +003EF800003EF800003EF800003EF800003EF800003EF800003E7800003C7800003C7C00007C3C +0000783C0000781E0000F01E0000F00F0001E0078003C00380038001E00F0000783C00000FE000 +>31 34 -3 0 38]79 dc[<FFFC0000FFFC00000780000007800000078000000780000007800000 +07800000078000000780000007800000078000000780000007800000078000000780000007FFF8 +0007803E0007800F0007800780078003C0078003C0078003E0078003E0078003E0078003E00780 +03E0078003C0078003C00780078007800F8007803F00FFFFFC00FFFFF000>27 34 -2 0 33]80 +dc[<FFFC007C00FFFC01E300078007C100078007C08007800F808007800F800007800F80000780 +0F800007800F000007800F000007800F000007800F000007800E000007801E000007801C000007 +80380000078070000007FFE0000007803C000007800F00000780078000078007C000078003C000 +078003E000078003E000078003E000078003E000078003E000078007C000078007800007800F00 +0007803E0000FFFFF80000FFFFE00000>33 34 -2 0 36]82 dc[<81FC00C7FF00FE0380F001C0 +E000E0C000E0C000708000708000708000700000700000F00000F00001E00003E0003FC003FF80 +0FFF001FFE003FF0007F0000780000F00000F00000E00020E00020E00020E000606000607000E0 +3801E01C0FE00FFC6003F020>20 34 -3 0 27]83 dc[<03FFFF0003FFFF000007800000078000 +000780000007800000078000000780000007800000078000000780000007800000078000000780 +000007800000078000000780000007800000078000000780000007800000078000800780048007 +80048007800480078004C007800CC007800C400780084007800860078018780780787FFFFFF87F +FFFFF8>30 34 -2 0 35]84 dc[<0000C000000000C000000001E000000001E000000001E00000 +0003D000000003D000000003D0000000078800000007880000000F840000000F040000000F0400 +00001E020000001E020000003E030000003C010000003C0100000078008000007800800000F800 +C00000F000400000F000400001E000200001E000200001E000200003C000100003C000100007C0 +00080007800008000780000C000F80001E00FFF0007FC0FFF0007FC0>34 34 -1 0 37]86 dc[< +00020000800000030001800000070001C00000070001C00000070001C000000F8003E000000F80 +03E000000F8003E000001E40079000001E40079000001E40079000003C200F0800003C200F0800 +003C200F08000078101E04000078101E04000078101E040000F0083C020000F0083C020000F008 +3C020001E00478010001E00478010001E00478010003C002F0008003C002F0008003C002F00080 +078001E00040078001E00040078001E000400F8003E000200F0003C000600F0003C000F0FFF03F +FC03FEFFF03FFC03FE>47 34 -1 0 50]87 dc dfe /fb df[<FFF80F80070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700C7003F000700 +0300>13 27 -4 0 21]49 dc[<FF80FFF01E001F000C001F0004001E0004001E0002003C000200 +3C0002003C000100780001FFF800010078000080F0000080F0000080F0000041E0000041E00000 +43E0000023C0000023C0000037C0000017800000178000000F0000000F0000000F000000060000 +0006000000060000>28 28 -1 0 31]65 dc[<001FC00000E0300003800800070004000E000200 +1C0001003C000100380000807800008070000080F0000000F0000000F0000000F0000000F00000 +00F0000000F0000000F00000007000008078000080380000803C0001801C0001800E0003800700 +078003800B8000E03180001FC080>25 28 -2 0 30]67 dc[<FFFFFC0F003C0F000C0F00060F00 +060F00020F00020F00020F00010F02010F02000F02000F02000F06000FFE000F06000F02000F02 +000F02000F02020F00020F00020F00060F00040F00040F000C0F003CFFFFFC>24 28 -2 0 28] +69 dc[<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F02000F02000F02 +000F02000F06000FFE000F06000F02000F02000F02000F02040F00040F00040F000C0F00080F00 +080F00180F0078FFFFF8>22 28 -2 0 27]70 dc[<FFF3FFC00F003C000F003C000F003C000F00 +3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F +FFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00 +0F003C000F003C000F003C00FFF3FFC0>26 28 -2 0 31]72 dc[<FFF00F000F000F000F000F00 +0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F +000F00FFF0>12 28 -1 0 15]73 dc[<FF8307FF801C0300780008030078000807807800080780 +78000807807800080F407800080F407800081E207800081E207800081E207800083C107800083C +107800083C10780008780878000878087800087808780008F004780008F004780008F004780009 +E002780009E00278000BC00178000BC00178000BC00178000F8000F8000F8000F800FF8000FF80 +>33 28 -2 0 38]77 dc[<FF8004001C000C0008000C0008001C0008003C0008003C0008007C00 +08007C000800F4000801E4000801E4000803C4000807C40008078400080F0400080F0400081E04 +00083C0400083C04000878040008F8040008F0040009E0040009E004000BC004000F8004000F80 +0E00FF007FC0>26 28 -2 0 31]78 dc[<003F800001E0F0000380380007001C000E000E001C00 +07003C00078038000380780003C0780003C0F00001E0F00001E0F00001E0F00001E0F00001E0F0 +0001E0F00001E0F00001E0700001C0780003C038000380380003801C0007000E000E0007001C00 +0380380001E0F000003F8000>27 28 -2 0 32]79 dc[<FFF0000F00000F00000F00000F00000F +00000F00000F00000F00000F00000F00000F00000F00000FFF800F00E00F00780F003C0F001C0F +001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E0FFFF80>23 28 -2 0 28]80 dc +[<FFF007C00F001C200F0038100F0078100F0078100F0078000F0078000F0078000F0078000F00 +78000F0078000F00F0000F00E0000F03C0000FFF00000F01E0000F0078000F003C000F001C000F +001E000F001E000F001E000F001E000F001C000F003C000F0078000F01E000FFFF0000>28 28 +-2 0 31]82 dc[<83F800CC0E00F00300C00300C001808001C08001C08001C00001C00003C000 +03C0000F8000FF8007FF001FFE003FF8007FC0007C0000F00000F00000E00080E00080E0008060 +01807003803007801C198007E080>18 28 -2 0 23]83 dc[<03FFFC00001F8000000F0000000F +0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000800F0020800F0020800F0020C00F0020 +400F0040400F0040600F00C0700F01C07FFFFFC0>27 28 -1 0 30]84 dc[<0018001800001800 +18000018001800003C003C00003C003C00003C003C00007E007E00007A007A00007A007A000079 +00F20000F100F10000F100F10000F081E10001E081E08001E081E08001E043E08003C043C04003 +C043C04003C027C0400780278020078027802007803F80200F001F00100F001F00100F001F0010 +1E001E00181F001F003CFFE0FFE0FF>40 28 -1 0 43]87 dc dfe end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300 + TeXDict begin @letter +%%EndSetup +%%Page: 1 1 + bop 83 42 a fb(THIS)14 b(IS)g(CMR)f(TEN)i(POINTS)f(WRITTEN)f(IN)h(MET)m(AF)o +(ONT)83 91 y fa(THIS)i(IS)g(CMR)g(TWEL)-5 b(VE)16 b(POINTS)g(WRITTEN)g(IN)g +(MET)l(AF)o(ONT)965 2770 y fb(1)g eop +%%Trailer + end +%%EOF diff --git a/fonts/utilities/mf2ps/doc/printsamples/cm.tex b/fonts/utilities/mf2ps/doc/printsamples/cm.tex new file mode 100644 index 0000000000..abdfdc1922 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cm.tex @@ -0,0 +1,8 @@ +\font\test=cmr10 +\test +THIS IS CMR TEN POINTS WRITTEN IN METAFONT + +\font\test=cmr12 +\test +THIS IS CMR TWELVE POINTS WRITTEN IN METAFONT +\bye diff --git a/fonts/utilities/mf2ps/doc/printsamples/cm7.ps b/fonts/utilities/mf2ps/doc/printsamples/cm7.ps new file mode 100644 index 0000000000..916a98ccf9 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cm7.ps @@ -0,0 +1,503 @@ +%! for use by dvi2ps Version 2.00 +% a start (Ha!) at a TeX mode for PostScript. +% The following defines procedures assumed and used by program "dvi2ps" +% and must be downloaded or sent as a header file for all TeX jobs. + +% By: Neal Holtz, Carleton University, Ottawa, Canada +% <holtz@cascade.carleton.cdn> +% <holtz%cascade.carleton.cdn@ubc.csnet> +% June, 1985 +% Last Modified: Aug 25/85 +% oystr 12-Feb-1986 +% Changed @dc macro to check for a badly formed bits in character +% definitions. Can get a <> bit map if a character is not actually +% in the font file. This is absolutely guaranteed to drive the +% printer nuts - it will appear that you can no longer define a +% new font, although the built-ins will still be there. + +% To convert this file into a downloaded file instead of a header +% file, uncomment all of the lines beginning with %-% + +%-%0000000 % Server loop exit password +%-%serverdict begin exitserver +%-% systemdict /statusdict known +%-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} +%-% if + +/TeXDict 200 dict def % define a working dictionary +TeXDict begin % start using it. + + % units are in "dots" (300/inch) +/Resolution 300 def +/Inch {Resolution mul} def % converts inches to internal units + +/Mtrx 6 array def + +%%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%% + +% dvi2ps will output coordinates in the TeX system ([0,0] 1" down and in +% from top left, with y +ive downward). The default PostScript system +% is [0,0] at bottom left, y +ive up. The Many Matrix Machinations in +% the following code are an attempt to reconcile that. The intent is to +% specify the scaling as 1 and have only translations in the matrix to +% properly position the text. Caution: the default device matrices are +% *not* the same in all PostScript devices; that should not matter in most +% of the code below (except for lanscape mode -- in that, rotations of +% -90 degrees resulted in the the rotation matrix [ e 1 ] +% [ 1 e ] +% where the "e"s were almost exactly but not quite unlike zeros. + +/@letter + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top (these are not exactly 1" + Mtrx currentmatrix pop % and -10" because margins aren't set exactly right) + } def + % note mode is like letter, except it uses less VM +/@note + { note initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@landscape + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. +% -90 rotate % it would be nice to be able to do this + Mtrx currentmatrix 0 0.0 put % but instead we have to do things like this because what + Mtrx 1 -1.0 put % should be zero terms aren't (and text comes out wobbly) + Mtrx 2 1.0 put % Fie! This likely will not work on QMS printers + Mtrx 3 0.0 put % (nor on others where the device matrix is not like + Mtrx setmatrix % like it is on the LaserWriter). + 300 310 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@legal + { legal initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 295 -3880 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@manualfeed + { statusdict /manualfeed true put + } def + % n @copies - set number of copies +/@copies + { /#copies exch def + } def + +%%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%% + +/@newfont % id @newfont - -- initialize a new font dictionary + { /newname exch def + pop + newname 7 dict def % allocate new font dictionary + newname load begin + /FontType 3 def + /FontMatrix [1 0 0 -1 0 0] def + /FontBBox [0 0 1 1] def + /BitMaps 128 array def + /BuildChar {CharBuilder} def + /Encoding 128 array def + 0 1 127 {Encoding exch /.undef put} for + end + newname newname load definefont pop + } def + + +% the following is the only character builder we need. it looks up the +% char data in the BitMaps array, and paints the character if possible. +% char data -- a bitmap descriptor -- is an array of length 6, of +% which the various slots are: + +/ch-image {ch-data 0 get} def % the hex string image +/ch-width {ch-data 1 get} def % the number of pixels across +/ch-height {ch-data 2 get} def % the number of pixels tall +/ch-xoff {ch-data 3 get} def % number of pixels below origin +/ch-yoff {ch-data 4 get} def % number of pixels to left of origin +/ch-tfmw {ch-data 5 get} def % spacing to next character + +/CharBuilder % fontdict ch Charbuilder - -- image one character + { /ch-code exch def % save the char code + /font-dict exch def % and the font dict. + /ch-data font-dict /BitMaps get ch-code get def % get the bitmap descriptor for char + ch-data null eq not + { ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub + setcachedevice + ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff] + {ch-image} imagemask + } + if + } def + + +/@sf % fontdict @sf - -- make that the current font + { setfont() pop + } def + + % in the following, the font-cacheing mechanism requires that + % a name unique in the particular font be generated + +/@dc % char-data ch @dc - -- define a new character bitmap in current font + { /ch-code exch def +% ++oystr 12-Feb-86++ + dup 0 get + length 2 lt + { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null + if +% --oystr 12-Feb-86-- + /ch-data exch def + currentfont /BitMaps get ch-code ch-data put + currentfont /Encoding get ch-code + dup ( ) cvs cvn % generate a unique name simply from the character code + put + } def + +/@bop0 % n @bop0 - -- begin the char def section of a new page + { + } def + +/@bop1 % n @bop1 - -- begin a brand new page + { pop + erasepage initgraphics + Mtrx setmatrix + /SaveImage save def() pop + } def + +/@eop % - @eop - -- end a page + { showpage + SaveImage restore() pop + } def + +/@start % - @start - -- start everything + { @letter % (there is not much to do) + } def + +/@end % - @end - -- done the whole shebang + { end + } def + +/p % x y p - -- move to position + { moveto + } def + +/r % x r - -- move right + { 0 rmoveto + } def + +/s % string s - -- show the string + { show + } def + +/c % ch c - -- show the character (code given) + { c-string exch 0 exch put + c-string show + } def + +/c-string ( ) def + +/ru % dx dy ru - -- set a rule (rectangle) + { /dy exch neg def % because dy is height up from bottom + /dx exch def + /x currentpoint /y exch def def % remember current point + newpath x y moveto + dx 0 rlineto + 0 dy rlineto + dx neg 0 rlineto + closepath fill + x y moveto + } def + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the \special command junk +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The structure of the PostScript produced by dvi2ps for \special is: +% @beginspecial +% - any number of @hsize, @hoffset, @hscale, etc., commands +% @setspecial +% - the users file of PostScript commands +% @endspecial + +% The @beginspecial command recognizes whether the Macintosh Laserprep +% has been loaded or not, and redfines some Mac commands if so. +% The @setspecial handles the users shifting, scaling, clipping commands + + +% The following are user settable options from the \special command. + +/@SpecialDefaults + { /hs 8.5 Inch def + /vs 11 Inch def + /ho 0 def + /vo 0 def + /hsc 1 def + /vsc 1 def + /CLIP false def + } def + +% d @hsize - specify a horizontal clipping dimension +% these 2 are executed before the MacDraw initializations +/@hsize {/hs exch def /CLIP true def} def +/@vsize {/vs exch def /CLIP true def} def +% d @hoffset - specify a shift for the drwgs +/@hoffset {/ho exch def} def +/@voffset {/vo excl def} def +% s @hscale - set scale factor +/@hscale {/hsc exch def} def +/@vscale {/vsc exch def} def + +/@setclipper + { hsc vsc scale + CLIP + { newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip } + if + } def + +% this will be invoked as the result of a \special command (for the +% inclusion of PostScript graphics). The basic idea is to change all +% scaling and graphics back to defaults, but to shift the origin +% to the current position on the page. Due to TeXnical difficulties, +% we only set the y-origin. The x-origin is set at the left edge of +% the page. + +/@beginspecial % - @beginspecial - -- enter special mode + { gsave /SpecialSave save def + % the following magic incantation establishes the current point as + % the users origin, and reverts back to default scalings, rotations + currentpoint transform initgraphics itransform translate + @SpecialDefaults % setup default offsets, scales, sizes + @MacSetUp % fix up Mac stuff + } def + +/@setspecial % to setup user specified offsets, scales, sizes (for clipping) + { + MacDrwgs + {md begin /pxt ho def /pyt vo neg def end} + {ho vo translate @setclipper} + ifelse + } def + +/@endspecial % - @endspecial - -- leave special mode + { SpecialSave restore + grestore + } def + +/MacDrwgs false def % will get set if we think the Mac LaserPrep file has been loaded + + % - @MacSetUp - turn-off/fix-up all the MacDraw stuff that might hurt us + % we depend on 'psu' being the first procedure executed + % by a Mac document. We redefine 'psu' to adjust page + % translations, and to do all other the fixups required. + % This stuff will not harm other included PS files +/@MacSetUp + { userdict /md known % if md is defined + { userdict /md get type /dicttype eq % and if it is a dictionary + { /MacDrwgs true def + md begin % then redefine some stuff + /psu % redfine psu to set origins, etc. + /psu load + % this procedure contains almost all the fixup code + { /letter {} def % it is bad manners to execute the real + /note {} def % versions of these (clears page image, etc.) + /legal {} def + statusdict /waittimeout 300 put + /page {pop} def % no printing of pages + /pyt vo neg def % x & y pixel translations + /pxt ho def + } + concatprocs + def + /od % redefine od to set clipping region + /od load + { @setclipper } + concatprocs + def + end } + if } + if + } def + +% p1 p2 concatprocs p - concatenate procedures +/concatprocs + { /p2 exch cvlit def + /p1 exch cvlit def + /p p1 length p2 length add array def + p 0 p1 putinterval + p p1 length p2 putinterval + p cvx + } def + +end % revert to previous dictionary +TeXDict begin @start +%%Title: cm7.dvi +%%Creator: dvi2ps +%%EndProlog +1 @bop0 +[ 1500 ] /cmr7.1500 @newfont +cmr7.1500 @sf +[<07FF000070000070000070000070000070000070000070000070000070000070000070000070008070088070088070084070 + 104070106070307FFFF0> 24 20 -1 0 23.695] 84 @dc +[<FF87FC1C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01FFFE01C00E01C00E01C00E01C00E01C00E01C00 + E01C00E01C00E0FF87FC> 24 20 -1 0 24.503] 72 @dc +[<FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80> 16 20 -1 0 11.992] 73 @dc +[<8FC0F060C0308018801880180018003800F00FF03FC07F007000E000C010C010C030603030F01F10> 16 20 -2 0 18.334] 83 @dc +[<00FC000703000C0080180040300020700020600020E00000E00000E00000E00000E00000E000006000207000203000601800 + 600C00E007036000FC20> 24 20 -2 0 23.695] 67 @dc +[<FE083FE0381C0700101C0700101C0700103A0700103A0700107107001071070010E0870010E0870010E0870011C0470011C0 + 470013802700138027001700170017001700170017001E000F00FE000FE0> 32 20 -1 0 29.864] 77 @dc +[<FF80F81C01CC1C03841C03841C03801C03801C03801C03801C07001C0E001FF8001C07001C03801C01C01C01C01C01C01C01 + C01C03801C0700FFF800> 24 20 -1 0 24.099] 82 @dc +[<FFFFC01C01C01C00C01C00401C00601C00201C00201C08201C08001C18001FF8001C18001C08001C08401C00401C00401C00 + 801C00801C0380FFFF80> 24 20 -1 0 22.312] 69 @dc +[<00300000300000780000780000FC0000E40000E40001C20001C2000381000381000781800700800700800E00400E00401C00 + 201C00203C0030FF00FC> 24 20 -1 0 24.503] 86 @dc +[<FE00203800601000E01000E01001E01003A0100720100F20100E20101C2010382010702010702010E02011C0201380201780 + 201700201E0070FC01FC> 24 20 -1 0 24.503] 78 @dc +[<FF80001C00001C00001C00001C00001C00001C00001C00001C00001FFC001C07001C03801C01C01C01C01C01C01C01C01C01 + C01C03801C0700FFFC00> 24 20 -1 0 22.312] 80 @dc +[<01F800070E001C03803801C03000C07000E07000E0E00070E00070E00070E00070E00070E000706000607000E03000C03801 + C01C0380070E0001F800> 24 20 -2 0 25.483] 79 @dc +[<00C00C0000C00C0000C00C0001E01E0001E01E0001F03E0003903900039039000388710007087080070870800704E0800E04 + E0400E04E0401E03C0601C03C0201C03C0203803803038038030FF1FF0FC> 32 20 -1 0 33.439] 87 @dc +[<FE07FC3800E01000E00801C00801C004038007FF80040380020700020700010E00010E00011E00009C00009C000078000078 + 00007800003000003000> 24 20 -1 0 24.503] 65 @dc +[<FFC0001C00001C00001C00001C00001C00001C00001C10001C10001C30001FF0001C30001C10001C10401C00401C00401C00 + 801C00801C0380FFFF80> 24 20 -1 0 21.418] 70 @dc +[ 1500 ] /cmr10.1500 @newfont +cmr10.1500 @sf +[<03FFFC00001F8000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F + 0000000F0000000F0000000F0000000F0000000F0000000F0000800F0020800F0020800F0020C00F0020400F0040400F0040 + 600F00C0700F01C07FFFFFC0> 32 28 -1 0 29.979] 84 @dc +[<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00 + 3C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00 + 0F003C000F003C00FFF3FFC0> 32 28 -2 0 31.133] 72 @dc +[<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 + 0F000F00FFF0> 16 28 -1 0 14.990] 73 @dc +[<83F800CC0E00F00300C00300C001808001C08001C08001C00001C00003C00003C0000F8000FF8007FF001FFE003FF8007FC0 + 007C0000F00000F00000E00080E00080E000806001807003803007801C198007E080> 24 28 -2 0 23.061] 83 @dc +[<001FC00000E0300003800800070004000E0002001C0001003C000100380000807800008070000080F0000000F0000000F000 + 0000F0000000F0000000F0000000F0000000F00000007000008078000080380000803C0001801C0001800E00038007000780 + 03800B8000E03180001FC080> 32 28 -2 0 29.979] 67 @dc +[<FF8307FF801C030078000803007800080780780008078078000807807800080F407800080F407800081E207800081E207800 + 081E207800083C107800083C107800083C10780008780878000878087800087808780008F004780008F004780008F0047800 + 09E002780009E00278000BC00178000BC00178000BC00178000F8000F8000F8000F800FF8000FF80> 40 28 -2 0 38.051] 77 @dc +[<FFF007C00F001C200F0038100F0078100F0078100F0078000F0078000F0078000F0078000F0078000F0078000F00F0000F00 + E0000F03C0000FFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F003C00 + 0F0078000F01E000FFFF0000> 32 28 -2 0 30.556] 82 @dc +[<FFFFFC0F003C0F000C0F00060F00060F00020F00020F00020F00010F02010F02000F02000F02000F06000FFE000F06000F02 + 000F02000F02000F02020F00020F00020F00060F00040F00040F000C0F003CFFFFFC> 24 28 -2 0 28.250] 69 @dc +[<FF8004001C000C0008000C0008001C0008003C0008003C0008007C0008007C000800F4000801E4000801E4000803C4000807 + C40008078400080F0400080F0400081E0400083C0400083C04000878040008F8040008F0040009E0040009E004000BC00400 + 0F8004000F800E00FF007FC0> 32 28 -2 0 31.133] 78 @dc +[<FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFF800F00E00F00780F00 + 3C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E0FFFF80> 24 28 -2 0 28.250] 80 @dc +[<003F800001E0F0000380380007001C000E000E001C0007003C00078038000380780003C0780003C0F00001E0F00001E0F000 + 01E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C038000380380003801C0007000E000E0007001C00 + 0380380001E0F000003F8000> 32 28 -2 0 32.286] 79 @dc +[<001800180000180018000018001800003C003C00003C003C00003C003C00007E007E00007A007A00007A007A00007900F200 + 00F100F10000F100F10000F081E10001E081E08001E081E08001E043E08003C043C04003C043C04003C027C0400780278020 + 078027802007803F80200F001F00100F001F00100F001F00101E001E00181F001F003CFFE0FFE0FF> 40 28 -1 0 42.663] 87 @dc +[<FF80FFF01E001F000C001F0004001E0004001E0002003C0002003C0002003C000100780001FFF800010078000080F0000080 + F0000080F0000041E0000041E0000043E0000023C0000023C0000037C0000017800000178000000F0000000F0000000F0000 + 000600000006000000060000> 32 28 -1 0 31.133] 65 @dc +[<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F02000F02000F02000F02000F06000FFE000F06000F02 + 000F02000F02000F02040F00040F00040F000C0F00080F00080F00180F0078FFFFF8> 24 28 -2 0 27.097] 70 @dc +[ 1500 ] /cmr12.1500 @newfont +cmr12.1500 @sf +[<03FFFF00000FC000000780000007800000078000000780000007800000078000000780000007800000078000000780000007 + 8000000780000007800000078000000780000007800000078000000780000007800000078000000780008007800480078004 + 8007800480078004C007800C40078008400780084007800860078018780780787FFFFFF8> 32 34 -2 0 35.225] 84 @dc +[<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780 + 01E0078001E0078001E0078001E0078001E007FFFFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0 + 078001E0078001E0078001E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF> 32 34 -2 0 36.563] 72 @dc +[<FFFC0FC007800780078007800780078007800780078007800780078007800780078007800780078007800780078007800780 + 07800780078007800780078007800FC0FFFC> 16 34 -2 0 17.595] 73 @dc +[<81FC00C60300F80180E000C0C000E0C000608000708000708000708000700000700000F00000F00001E00007E0003FC003FF + 800FFF001FFE003FF0007F0000780000F00000F00000E00020E00020E00020E000606000607000E03000E01803E00C0C6003 + F020> 24 34 -3 0 27.097] 83 @dc +[<000FF00000380C0000E0020001C00100078000800F0000400E0000201E0000203C0000103C0000107C000010780000107800 + 0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000078000010780000107C0000103C000030 + 3C0000301E0000300E0000700F000070078000F001C0017000E0067000381830000FE010> 32 34 -3 0 35.225] 67 @dc +[<FFE0203FFF1F007003F00E007001E004007001E00400F801E00400F801E00400F801E00401E401E00401E401E00401E401E0 + 0403C201E00403C201E004078101E004078101E004078101E0040F0081E0040F0081E0040F0081E0041E0041E0041E0041E0 + 043C0021E0043C0021E0043C0021E004780011E004780011E004780011E004F00009E004F00009E004F00009E005E00005E0 + 05E00005E007C00003E00FC00003F0FFC00003FF> 40 34 -2 0 44.692] 77 @dc +[<FFFC007C000FC001E300078007C100078007C08007800F808007800F800007800F800007800F800007800F000007800F0000 + 07800F000007800F000007800E000007801E000007801C00000780380000078070000007FFE0000007803C000007800E0000 + 0780078000078007C000078003C000078003E000078003E000078003E000078003E000078003E000078003C000078007C000 + 078007800007800E00000F803C0000FFFFE00000> 40 34 -2 0 35.894] 82 @dc +[<00020000800000030001800000070001C00000070001C00000070001C000000F8003E000000F8003E000000F8003E000001E + 40079000001E40079000001E40079000003C200F0800003C200F0800003C200F08000078101E04000078101E04000078101E + 040000F0083C020000F0083C020000F0083C020001E00478010001E00478010001E00478010003C002F0008003C002F00080 + 03C002F00080078001E00040078001E00040078001E000400F8003E000200F0003C000200F0003C000701F8007E000F8FFF0 + 3FFC03FE> 48 34 -1 0 50.111] 87 @dc +[<FFFFFFE00F8003E0078000E00780007007800030078000300780001007800010078000100780000807800008078020080780 + 20000780200007802000078060000780E00007FFE0000780E000078060000780200007802000078020000780202007800020 + 0780002007800020078000600780004007800040078000C0078001C00F8007C0FFFFFFC0> 32 34 -2 0 33.185] 69 @dc +[<FFFFFF000F803F0007800F000780030007800300078001000780018007800180078000800780008007800080078000800780 + 0000078000000780000007800000078000000780000007800000078000000780000007800000078000000780000007800000 + 078000000780000007800000078000000780000007800000078000000FC00000FFFE0000> 32 34 -2 0 30.475] 76 @dc +[<0000C000000000C000000001E000000001E000000001E000000003D000000003D000000003D0000000078800000007880000 + 000F840000000F040000000F040000001E020000001E020000003E030000003C010000003C01000000780080000078008000 + 00F800C00000F000400000F000400001E000200001E000200001E000200003C000100003C000100007C00008000780000800 + 07800008000F80000C001F80001F00FFF0007FC0> 40 34 -1 0 36.563] 86 @dc +[<FFFC00000FC00000078000000780000007800000078000000780000007800000078000000780000007800000078000000780 + 000007800000078000000780000007FFF00007803C0007800F0007800780078007C0078003C0078003E0078003E0078003E0 + 078003E0078003E0078003E0078003C0078007C00780078007800F000F803C00FFFFF000> 32 34 -2 0 33.185] 80 @dc +[<000FE00000783C0001E00F0003C00780078003C00F0001E01E0000F01E0000F03C0000783C0000787C00007C7C00007C7800 + 003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003E7800003C7800003C7C00007C3C000078 + 3C0000781E0000F01E0000F00F0001E0078003C00380038001E00F0000783C00000FE000> 32 34 -3 0 37.935] 79 @dc +[<FFE000201F0000600E000060040000E0040001E0040001E0040003E0040003E0040007A004000F2004000F2004001E200400 + 3E2004003C20040078200400F8200400F0200401E0200401E0200403C0200407802004078020040F0020041F0020041E0020 + 043C0020047C00200478002004F0002004F0002005E0002007C0007007C000F8FF8007FF> 32 34 -2 0 36.563] 78 @dc +[<FF800FFF3E0001F80C0000F00C0001F0040001E0040001E0060003E0020003C0020003C0010007800100078001FFFF800080 + 0F0000800F0000801F0000401E0000401E0000603E0000203C0000203C000010780000107800001078000008F0000008F000 + 0009F0000005E0000005E0000007E0000003C0000003C000000180000001800000018000> 32 34 -2 0 36.563] 65 @dc +[<FFFE00000FC00000078000000780000007800000078000000780000007800000078000000780000007800000078020000780 + 20000780200007802000078060000780E00007FFE0000780E000078060000780200007802000078020000780202007800020 + 0780002007800020078000600780004007800040078000C0078001C00F8007C0FFFFFFC0> 32 34 -2 0 31.830] 70 @dc +cmr10.1500 @sf +[<FFF80F80070007000700070007000700070007000700070007000700070007000700070007000700070007000700C7003F00 + 07000300> 16 27 -4 0 20.755] 49 @dc +1 @bop1 +cmr7.1500 @sf +83 42 p (THIS) s +11 r (IS) s +11 r (CMR) s +12 r (SEVEN) s +11 r (POINTS) s +11 r (WRITTEN) s +11 r (IN) s +11 r (MET) s +-1 r (AF) s +-1 r (ONT) s +cmr10.1500 @sf +83 91 p (THIS) s +14 r (IS) s +14 r (CMR) s +14 r (TEN) s +13 r (POINTS) s +14 r (WRITTEN) s +14 r (IN) s +14 r (MET) s +-3 r (AF) s +-1 r (ONT) s +cmr12.1500 @sf +83 141 p (THIS) s +16 r (IS) s +17 r (CMR) s +16 r (TWEL) s +-5 r (VE) s +16 r (POINTS) s +16 r (WRITTEN) s +16 r (IN) s +16 r (MET) s +-3 r (AF) s +-1 r (ONT) s +cmr10.1500 @sf +965 2770 p 49 c +@eop +@end diff --git a/fonts/utilities/mf2ps/doc/printsamples/cm7.tex b/fonts/utilities/mf2ps/doc/printsamples/cm7.tex new file mode 100644 index 0000000000..d2a275b95a --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cm7.tex @@ -0,0 +1,12 @@ +\font\test=cmr7 +\test +THIS IS CMR SEVEN POINTS WRITTEN IN METAFONT + +\font\test=cmr10 +\test +THIS IS CMR TEN POINTS WRITTEN IN METAFONT + +\font\test=cmr12 +\test +THIS IS CMR TWELVE POINTS WRITTEN IN METAFONT +\bye diff --git a/fonts/utilities/mf2ps/doc/printsamples/cmr.ps b/fonts/utilities/mf2ps/doc/printsamples/cmr.ps new file mode 100644 index 0000000000..6237342ee7 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cmr.ps @@ -0,0 +1,4555 @@ +%! Simon font +%0 serverdict begin exitserver +/TBuildCharDict 10 dict def +/SimonFont 10 dict def +/fudge 40 def +SimonFont begin +%% + /FontType 3 def + /FontMatrix [0.000895 0 0 0.000895 0 0] 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_A +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 180 0.5 sub moveto + 346 180 0.5 sub lineto + 318 182 0.5 sub 290 182 0.5 sub 262 182 0.5 sub curveto + 262 180 0.5 sub lineto + 192 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 488 180 0.5 sub moveto + 684 180 0.5 sub lineto + 654 182 0.5 sub 624 182 0.5 sub 594 182 0.5 sub curveto + 594 180 0.5 sub lineto + 486 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 418 600 moveto + 466 462 514 324 562 186 curveto + 562 184 564 182 566 182 curveto + 568 180 570 180 574 180 curveto + 622 180 lineto + 624 180 626 180 626 182 curveto + 628 182 628 184 628 186 curveto + 626 186 lineto + 626 188 lineto + 568 354 510 522 452 688 curveto + 452 690 450 692 450 692 curveto + 448 694 444 696 442 696 curveto + 442 694 lineto + 434 694 lineto + 432 694 428 692 426 690 curveto + 426 690 424 688 424 686 curveto + 366 520 308 352 250 186 curveto + 250 184 lineto + 252 184 lineto + 252 182 252 180 254 180 curveto + 264 180 lineto + 268 180 270 182 272 184 curveto + 274 184 274 186 276 188 curveto + 324 326 370 464 418 602 curveto +closepath +%end path +fill +%new path + 318 344 moveto + 538 344 lineto + 536 352 534 360 532 366 curveto + 532 364 lineto + 324 364 lineto + 322 358 318 350 316 342 curveto +closepath +%end path +fill +%new path + 270 246 moveto + 268 236 262 228 256 222 curveto + 252 218 248 214 242 212 curveto + 228 202 210 200 192 200 curveto + 192 180 lineto + 264 180 lineto + 270 202 278 226 284 248 curveto + 282 246 lineto + 270 246 lineto +closepath +%end path +fill +%new path + 294 246 moveto + 282 246 lineto + 276 224 268 200 262 180 curveto + 348 180 lineto + 348 202 lineto + 346 202 lineto + 332 202 316 206 304 216 curveto + 302 216 302 216 302 218 curveto + 296 224 292 232 292 240 curveto + 294 240 lineto + 294 242 294 246 296 248 curveto +closepath +%end path +fill +%new path + 548 226 moveto + 550 224 550 224 550 222 curveto + 548 222 lineto + 548 218 546 214 542 210 curveto + 540 210 538 208 536 206 curveto + 522 200 504 200 486 200 curveto + 486 180 lineto + 594 180 lineto + 588 196 584 212 580 228 curveto + 580 226 lineto + 546 226 lineto +closepath +%end path +fill +%new path + 612 226 moveto + 582 226 lineto + 586 210 590 194 596 180 curveto + 686 180 lineto + 686 202 lineto + 684 202 lineto + 666 202 642 202 630 206 curveto + 626 208 624 210 622 212 curveto + 618 216 614 222 612 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_B +( +newpath +%new path + 270 668 moveto + 270 664 lineto + 268 664 lineto + 268 188 lineto + 270 188 lineto + 270 184 lineto + 274 180 lineto + 326 180 lineto + 328 184 lineto + 330 186 lineto + 330 664 lineto + 328 668 lineto + 326 670 lineto + 322 672 lineto + 320 672 lineto + 320 670 lineto + 276 670 lineto + 276 672 lineto + 274 670 lineto + 270 668 lineto +closepath +%end path +fill +%new path + 300 650 moveto + 460 650 lineto + 460 648 lineto + 482 648 504 638 520 622 curveto + 522 622 522 620 524 618 curveto + 542 600 550 574 550 548 curveto + 548 548 lineto + 548 520 536 494 518 474 curveto + 516 474 516 474 516 472 curveto + 494 452 466 442 438 442 curveto + 298 442 lineto + 298 432 lineto + 300 434 lineto + 460 434 lineto + 500 434 540 444 574 468 curveto + 578 472 584 476 590 480 curveto + 608 500 620 524 620 550 curveto + 618 550 lineto + 618 578 604 604 584 624 curveto + 580 628 576 632 572 636 curveto + 538 660 498 672 458 672 curveto + 458 670 lineto + 298 670 lineto + 298 648 lineto +closepath +%end path +fill +%new path + 300 428 moveto + 470 428 lineto + 470 426 lineto + 494 426 516 416 534 398 curveto + 536 396 538 394 540 392 curveto + 558 370 568 340 568 310 curveto + 566 310 lineto + 566 280 554 252 534 232 curveto + 514 212 486 200 458 200 curveto + 298 200 lineto + 298 180 lineto + 480 180 lineto + 522 180 562 192 594 218 curveto + 596 222 600 224 604 228 curveto + 626 250 640 280 640 312 curveto + 638 312 lineto + 638 342 624 370 604 390 curveto + 600 394 596 398 592 402 curveto + 560 426 518 438 478 438 curveto + 478 436 lineto + 298 436 lineto + 298 426 lineto +closepath +%end path +fill +%new path + 270 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 194 670 lineto + 194 648 lineto + 196 648 lineto + 216 648 246 648 258 644 curveto + 260 642 262 642 264 640 curveto + 268 636 270 628 270 622 curveto +closepath +%end path +fill +%new path + 330 624 moveto + 330 632 330 640 334 644 curveto + 336 644 336 646 336 646 curveto + 342 650 356 650 368 650 curveto + 368 672 lineto + 366 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 330 624 lineto +closepath +%end path +fill +%new path + 268 226 moveto + 268 220 266 212 262 208 curveto + 260 206 258 206 256 204 curveto + 244 200 214 200 194 200 curveto + 194 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 268 226 lineto +closepath +%end path +fill +%new path + 328 226 moveto + 298 226 lineto + 298 180 lineto + 368 180 lineto + 368 202 lineto + 366 202 lineto + 354 202 340 202 334 206 curveto + 334 206 334 208 332 208 curveto + 328 212 328 220 328 228 curveto +closepath +%end path +fill +) def + +/The_letter_C +( +newpath +%new path + 642 482 moveto + 656 482 lineto + 658 484 lineto + 660 486 lineto + 660 490 lineto + 658 492 lineto + 654 532 640 570 620 602 curveto + 618 604 lineto + 618 606 lineto + 610 616 602 626 592 636 curveto + 592 636 lineto + 592 638 lineto + 572 656 550 670 524 678 curveto + 522 678 lineto + 522 680 lineto + 506 686 490 688 472 688 curveto + 470 688 lineto + 470 686 lineto + 444 686 418 682 394 674 curveto + 392 674 lineto + 392 672 lineto + 356 660 324 640 296 614 curveto + 296 614 lineto + 296 612 lineto + 294 612 294 610 292 610 curveto + 282 598 272 586 264 574 curveto + 264 576 lineto + 262 572 lineto + 234 528 218 478 218 426 curveto + 220 428 lineto + 220 422 lineto + 220 370 236 320 264 276 curveto + 262 278 lineto + 264 274 lineto + 266 274 lineto + 274 262 284 250 294 238 curveto + 296 238 296 236 298 236 curveto + 298 236 lineto + 298 234 lineto + 326 208 358 188 394 178 curveto + 396 178 lineto + 396 176 lineto + 420 168 446 164 472 164 curveto + 472 164 lineto + 474 166 lineto + 494 166 512 170 530 176 curveto + 530 174 lineto + 532 176 lineto + 534 176 lineto + 560 184 584 198 604 218 curveto + 602 216 lineto + 604 218 lineto + 614 228 620 236 628 246 curveto + 626 246 lineto + 628 248 lineto + 630 250 lineto + 648 278 660 314 660 352 curveto + 660 354 lineto + 658 358 lineto + 656 358 lineto + 654 360 lineto + 652 360 lineto + 650 358 lineto + 646 358 lineto + 646 360 lineto + 644 358 lineto + 642 358 lineto + 640 354 lineto + 640 316 630 282 610 254 curveto + 612 256 lineto + 614 258 lineto + 612 258 lineto + 606 248 598 238 590 230 curveto + 592 232 lineto + 590 228 lineto + 590 224 lineto + 592 232 lineto + 598 234 lineto + 596 234 lineto + 592 232 lineto + 574 214 552 200 526 192 curveto + 528 192 lineto + 530 194 lineto + 530 192 lineto + 514 186 496 184 478 184 curveto + 478 186 lineto + 476 184 lineto + 474 184 lineto + 480 186 lineto + 484 184 lineto + 480 186 lineto + 460 186 440 190 422 196 curveto + 424 194 lineto + 426 194 lineto + 398 204 374 218 354 240 curveto + 354 238 lineto + 352 240 lineto + 356 238 lineto + 358 234 lineto + 356 238 lineto + 354 238 lineto + 350 244 344 250 340 256 curveto + 336 260 334 264 330 268 curveto + 332 266 lineto + 334 264 lineto + 332 264 lineto + 302 312 292 370 292 428 curveto + 294 428 lineto + 292 430 lineto + 294 428 lineto + 292 420 lineto + 294 424 lineto + 294 482 304 540 334 588 curveto + 334 586 lineto + 332 584 lineto + 336 588 338 592 342 596 curveto + 346 602 352 608 356 614 curveto + 358 616 lineto + 358 620 lineto + 356 614 lineto + 350 612 lineto + 354 612 lineto + 356 614 lineto + 376 634 400 648 428 658 curveto + 426 656 lineto + 424 656 lineto + 442 662 462 666 480 666 curveto + 482 666 lineto + 484 668 lineto + 478 666 lineto + 474 668 lineto + 474 666 lineto + 478 666 lineto + 478 664 lineto + 494 664 510 662 524 656 curveto + 522 658 lineto + 520 658 lineto + 542 650 562 638 580 620 curveto + 578 622 lineto + 582 620 lineto + 578 622 lineto + 576 626 lineto + 578 622 lineto + 588 612 594 604 602 592 curveto + 600 594 lineto + 598 596 lineto + 600 596 lineto + 620 564 634 526 638 486 curveto + 636 486 lineto + 638 484 lineto + 640 482 lineto + 642 482 lineto +closepath +%end path +fill +%new path + 658 484 moveto + 660 486 lineto + 660 682 lineto + 658 686 lineto + 656 686 lineto + 654 688 lineto + 652 688 lineto + 650 686 lineto + 648 686 lineto + 648 688 lineto + 646 686 lineto + 644 686 lineto + 644 684 lineto + 628 660 612 636 596 614 curveto + 594 612 lineto + 594 608 lineto + 596 604 lineto + 598 604 lineto + 600 600 604 596 606 590 curveto + 606 592 lineto + 604 594 lineto + 624 562 638 524 642 486 curveto + 640 486 lineto + 642 484 lineto + 644 482 lineto + 656 482 lineto + 658 484 lineto +closepath +%end path +fill +) def + +/The_letter_D +( +newpath +%new path + 270 668 moveto + 270 664 lineto + 268 664 lineto + 268 188 lineto + 270 188 lineto + 270 184 lineto + 274 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 276 670 lineto + 276 672 lineto + 274 670 lineto + 270 668 lineto +closepath +%end path +fill +%new path + 302 650 moveto + 442 650 lineto + 442 648 lineto + 484 648 524 632 552 602 curveto + 558 596 564 590 568 584 curveto + 602 536 608 478 608 420 curveto + 606 420 lineto + 606 364 600 306 566 262 curveto + 562 256 558 250 554 246 curveto + 524 216 482 200 440 200 curveto + 300 200 lineto + 300 180 lineto + 460 180 lineto + 516 180 568 204 608 244 curveto + 610 246 614 248 616 250 curveto + 658 298 680 358 680 422 curveto + 678 422 lineto + 678 486 656 550 614 598 curveto + 610 602 606 606 604 610 curveto + 564 648 512 672 458 672 curveto + 458 670 lineto + 300 670 lineto + 300 648 lineto +closepath +%end path +fill +%new path + 270 624 moveto + 302 624 lineto + 302 672 lineto + 300 670 lineto + 194 670 lineto + 194 648 lineto + 196 648 lineto + 216 648 246 648 258 644 curveto + 260 642 262 642 264 640 curveto + 268 636 270 628 270 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 632 332 640 336 644 curveto + 338 644 338 646 338 646 curveto + 344 650 358 650 370 650 curveto + 370 672 lineto + 368 670 lineto + 300 670 lineto + 300 622 lineto + 302 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 268 226 moveto + 268 220 266 212 262 208 curveto + 260 206 258 206 256 204 curveto + 244 200 214 200 194 200 curveto + 194 180 lineto + 302 180 lineto + 302 228 lineto + 300 226 lineto + 268 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 300 226 lineto + 300 180 lineto + 370 180 lineto + 370 202 lineto + 368 202 lineto + 356 202 342 202 336 206 curveto + 336 206 336 208 334 208 curveto + 330 212 330 220 330 228 curveto +closepath +%end path +fill +) def + +/The_letter_E +( +newpath +%new path + 268 666 moveto + 268 662 lineto + 266 662 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 662 lineto + 330 666 lineto + 328 668 lineto + 324 670 lineto + 322 670 lineto + 322 668 lineto + 274 668 lineto + 274 670 lineto + 272 668 lineto + 268 666 lineto +closepath +%end path +fill +%new path + 602 508 moveto + 618 508 lineto + 612 562 604 616 598 670 curveto + 598 668 lineto + 298 668 lineto + 298 646 lineto + 300 648 lineto + 442 648 lineto + 442 646 lineto + 484 646 532 646 562 620 curveto + 562 620 564 618 566 618 curveto + 592 590 598 546 602 506 curveto +closepath +%end path +fill +%new path + 472 528 moveto + 472 504 472 476 456 460 curveto + 440 444 410 444 386 444 curveto + 298 444 lineto + 298 422 lineto + 300 424 lineto + 492 424 lineto + 492 530 lineto + 490 528 lineto + 472 528 lineto +closepath +%end path +fill +%new path + 474 340 moveto + 492 340 lineto + 492 446 lineto + 490 444 lineto + 298 444 lineto + 298 422 lineto + 300 424 lineto + 388 424 lineto + 388 422 lineto + 412 422 442 422 458 406 curveto + 474 390 474 362 474 338 curveto +closepath +%end path +fill +%new path + 620 364 moveto + 612 318 604 262 574 234 curveto + 574 232 572 232 572 230 curveto + 538 200 490 200 446 200 curveto + 298 200 lineto + 298 180 lineto + 610 180 lineto + 620 242 630 304 640 366 curveto + 638 364 lineto + 620 364 lineto +closepath +%end path +fill +%new path + 268 622 moveto + 300 622 lineto + 300 670 lineto + 298 668 lineto + 192 668 lineto + 192 646 lineto + 194 646 lineto + 214 646 244 646 256 642 curveto + 258 640 260 640 262 638 curveto + 266 634 268 626 268 620 curveto +closepath +%end path +fill +%new path + 332 622 moveto + 332 630 332 638 336 642 curveto + 338 642 338 644 338 644 curveto + 344 648 358 648 370 648 curveto + 370 670 lineto + 368 668 lineto + 298 668 lineto + 298 620 lineto + 300 622 lineto + 332 622 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 242 200 212 200 192 200 curveto + 192 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 370 180 lineto + 370 202 lineto + 368 202 lineto + 356 202 342 202 336 206 curveto + 336 206 336 208 334 208 curveto + 330 212 330 220 330 228 curveto +closepath +%end path +fill +) def + +/The_letter_F +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 180 0.5 sub moveto + 422 180 0.5 sub lineto + 382 182 0.5 sub 340 182 0.5 sub 298 182 0.5 sub curveto + 298 180 0.5 sub lineto + 192 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 666 moveto + 268 662 lineto + 266 662 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 662 lineto + 330 666 lineto + 328 668 lineto + 324 670 lineto + 322 670 lineto + 322 668 lineto + 274 668 lineto + 274 670 lineto + 272 668 lineto + 268 666 lineto +closepath +%end path +fill +%new path + 592 508 moveto + 608 508 lineto + 602 562 594 616 588 670 curveto + 588 668 lineto + 298 668 lineto + 298 646 lineto + 300 648 lineto + 438 648 lineto + 438 646 lineto + 478 646 524 646 552 620 curveto + 554 620 554 618 556 618 curveto + 582 592 588 546 592 506 curveto +closepath +%end path +fill +%new path + 468 518 moveto + 468 494 468 464 452 450 curveto + 436 434 408 434 384 434 curveto + 298 434 lineto + 298 412 lineto + 300 414 lineto + 488 414 lineto + 488 520 lineto + 486 518 lineto + 468 518 lineto +closepath +%end path +fill +%new path + 470 330 moveto + 488 330 lineto + 488 436 lineto + 486 434 lineto + 298 434 lineto + 298 412 lineto + 300 414 lineto + 386 414 lineto + 386 412 lineto + 410 412 438 412 454 396 curveto + 470 382 470 352 470 328 curveto +closepath +%end path +fill +%new path + 268 622 moveto + 300 622 lineto + 300 670 lineto + 298 668 lineto + 192 668 lineto + 192 646 lineto + 194 646 lineto + 214 646 244 646 256 642 curveto + 258 640 260 640 262 638 curveto + 266 634 268 626 268 620 curveto +closepath +%end path +fill +%new path + 332 622 moveto + 332 630 332 638 336 642 curveto + 338 642 338 644 338 644 curveto + 344 648 358 648 370 648 curveto + 370 670 lineto + 368 668 lineto + 298 668 lineto + 298 620 lineto + 300 622 lineto + 332 622 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 242 200 212 200 192 200 curveto + 192 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 424 180 lineto + 424 202 lineto + 422 202 lineto + 396 202 360 202 346 206 curveto + 342 208 340 210 336 212 curveto + 332 216 330 222 330 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_G +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 508 376 0.5 add moveto + 548 374 0.5 add 590 374 0.5 add 630 374 0.5 add curveto + 630 376 0.5 add lineto + 658 376 0.5 add 684 376 0.5 add 712 378 0.5 add curveto + 710 376 0.5 add lineto + 506 376 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 596 264 moveto + 598 264 lineto + 598 248 604 234 612 220 curveto + 610 222 lineto + 612 218 lineto + 614 218 lineto + 618 210 624 204 632 196 curveto + 630 198 lineto + 632 196 lineto + 638 190 644 184 652 180 curveto + 658 180 lineto + 660 182 lineto + 662 184 lineto + 662 268 lineto + 660 272 lineto + 658 272 lineto + 656 274 lineto + 654 274 lineto + 652 272 lineto + 602 272 lineto + 602 274 lineto + 600 272 lineto + 598 272 lineto + 596 268 lineto + 596 264 lineto +closepath +%end path +fill +%new path + 644 482 moveto + 658 482 lineto + 660 484 lineto + 662 486 lineto + 662 490 lineto + 660 492 lineto + 656 532 642 570 622 602 curveto + 622 600 lineto + 620 604 lineto + 612 616 604 626 594 636 curveto + 596 634 lineto + 594 636 lineto + 574 656 552 670 526 678 curveto + 524 678 lineto + 524 680 lineto + 508 686 490 688 472 688 curveto + 472 688 lineto + 470 686 lineto + 444 686 420 682 396 674 curveto + 394 674 lineto + 392 672 lineto + 356 660 324 640 296 614 curveto + 296 614 lineto + 296 612 lineto + 294 612 294 610 292 610 curveto + 282 598 272 586 264 574 curveto + 262 572 lineto + 262 570 lineto + 234 528 218 478 218 426 curveto + 220 428 lineto + 220 422 lineto + 220 370 236 320 264 278 curveto + 262 278 lineto + 264 276 lineto + 266 274 lineto + 274 262 284 250 294 238 curveto + 296 238 296 236 298 236 curveto + 298 236 lineto + 298 234 lineto + 326 208 358 188 394 178 curveto + 396 178 lineto + 398 176 lineto + 422 168 446 164 472 164 curveto + 474 164 lineto + 474 166 lineto + 498 166 520 170 540 176 curveto + 542 176 lineto + 542 178 lineto + 562 182 580 192 594 204 curveto + 594 204 lineto + 594 206 lineto + 598 210 602 214 606 220 curveto + 604 218 lineto + 606 222 lineto + 608 222 lineto + 616 234 620 248 620 266 curveto + 620 268 lineto + 618 272 lineto + 616 272 lineto + 614 274 lineto + 612 274 lineto + 610 272 lineto + 602 272 lineto + 602 274 lineto + 600 272 lineto + 598 272 lineto + 596 268 lineto + 596 252 592 238 584 226 curveto + 584 228 lineto + 586 230 lineto + 582 226 580 222 576 218 curveto + 574 216 lineto + 574 212 lineto + 576 218 lineto + 582 220 lineto + 578 220 lineto + 576 218 lineto + 564 206 548 198 530 192 curveto + 532 192 lineto + 534 194 lineto + 534 192 lineto + 518 186 500 184 482 184 curveto + 482 186 lineto + 480 184 lineto + 478 184 lineto + 484 186 lineto + 488 184 lineto + 484 186 lineto + 464 186 444 190 424 196 curveto + 426 194 lineto + 428 194 lineto + 400 204 374 220 354 240 curveto + 352 240 lineto + 356 238 lineto + 358 236 lineto + 356 238 lineto + 354 240 lineto + 350 244 344 250 340 256 curveto + 336 260 334 264 330 268 curveto + 332 268 lineto + 334 264 lineto + 332 266 lineto + 302 312 292 370 292 428 curveto + 294 428 lineto + 292 430 lineto + 294 428 lineto + 292 420 lineto + 294 424 lineto + 294 482 304 540 334 588 curveto + 334 586 lineto + 332 584 lineto + 336 588 338 592 342 596 curveto + 346 602 352 608 356 614 curveto + 356 612 lineto + 358 616 lineto + 358 620 lineto + 356 612 lineto + 350 610 lineto + 352 610 lineto + 354 612 lineto + 356 612 lineto + 376 634 400 648 428 658 curveto + 428 656 lineto + 426 656 lineto + 444 662 462 666 482 666 curveto + 484 666 lineto + 484 668 lineto + 478 666 lineto + 474 668 lineto + 476 666 lineto + 478 666 lineto + 480 664 lineto + 496 664 510 662 524 656 curveto + 524 658 lineto + 522 658 lineto + 544 650 564 638 582 620 curveto + 580 622 lineto + 584 620 lineto + 580 622 lineto + 578 626 lineto + 580 622 lineto + 590 612 598 602 604 592 curveto + 604 594 lineto + 602 596 lineto + 622 564 636 526 640 486 curveto + 638 486 lineto + 640 484 lineto + 642 482 lineto + 644 482 lineto +closepath +%end path +fill +%new path + 660 484 moveto + 662 486 lineto + 662 682 lineto + 660 686 lineto + 658 686 lineto + 656 688 lineto + 654 688 lineto + 652 686 lineto + 650 686 lineto + 650 688 lineto + 648 686 lineto + 646 686 lineto + 646 684 lineto + 630 660 614 636 598 614 curveto + 596 612 lineto + 596 608 lineto + 598 604 lineto + 600 604 lineto + 602 600 606 594 608 590 curveto + 608 592 lineto + 606 594 lineto + 626 562 640 524 644 486 curveto + 642 486 lineto + 644 484 lineto + 646 482 lineto + 658 482 lineto + 660 484 lineto +closepath +%end path +fill +%new path + 598 374 moveto + 596 370 lineto + 596 266 lineto + 598 262 lineto + 600 260 lineto + 604 258 lineto + 606 258 lineto + 606 260 lineto + 656 260 lineto + 654 258 lineto + 658 260 lineto + 660 262 lineto + 662 266 lineto + 662 370 lineto + 660 374 lineto + 658 376 lineto + 654 378 lineto + 652 378 lineto + 652 376 lineto + 602 376 lineto + 604 378 lineto + 600 376 lineto + 598 374 lineto +closepath +%end path +fill +%new path + 598 330 moveto + 630 330 lineto + 630 378 lineto + 628 376 lineto + 506 376 lineto + 506 354 lineto + 508 354 lineto + 534 354 568 354 582 350 curveto + 586 348 590 346 592 344 curveto + 596 340 598 334 598 328 curveto +closepath +%end path +fill +%new path + 662 330 moveto + 662 338 662 344 668 350 curveto + 668 350 670 352 670 352 curveto + 678 356 698 356 712 356 curveto + 712 378 lineto + 710 376 lineto + 628 376 lineto + 628 328 lineto + 630 330 lineto + 662 330 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_H +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 670 0.5 add moveto + 230 668 0.5 add 264 668 0.5 add 300 668 0.5 add curveto + 300 670 0.5 add lineto + 336 670 0.5 add 370 670 0.5 add 406 672 0.5 add curveto + 404 670 0.5 add lineto + 192 670 0.5 add lineto +closepath +%end path +%erase +%new path + 194 180 0.5 sub moveto + 404 180 0.5 sub lineto + 368 182 0.5 sub 334 182 0.5 sub 298 182 0.5 sub curveto + 298 180 0.5 sub lineto + 192 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 474 670 0.5 add moveto + 510 668 0.5 add 544 668 0.5 add 580 668 0.5 add curveto + 580 670 0.5 add lineto + 616 670 0.5 add 650 670 0.5 add 686 672 0.5 add curveto + 684 670 0.5 add lineto + 472 670 0.5 add lineto +closepath +%end path +%erase +%new path + 474 180 0.5 sub moveto + 684 180 0.5 sub lineto + 648 182 0.5 sub 614 182 0.5 sub 578 182 0.5 sub curveto + 578 180 0.5 sub lineto + 472 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 548 668 moveto + 546 664 lineto + 546 186 lineto + 548 184 lineto + 550 180 lineto + 608 180 lineto + 610 184 lineto + 612 186 lineto + 612 664 lineto + 610 668 lineto + 608 670 lineto + 604 672 lineto + 602 672 lineto + 602 670 lineto + 552 670 lineto + 554 672 lineto + 550 670 lineto + 548 668 lineto +closepath +%end path +fill +%new path + 300 424 moveto + 580 424 lineto + 580 446 lineto + 578 444 lineto + 298 444 lineto + 298 422 lineto +closepath +%end path +fill +%new path + 268 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 192 670 lineto + 192 648 lineto + 194 648 lineto + 214 648 244 648 256 644 curveto + 258 642 260 642 262 640 curveto + 266 636 268 628 268 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 630 334 638 338 642 curveto + 340 644 342 644 344 646 curveto + 356 650 386 650 406 650 curveto + 406 672 lineto + 404 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 242 200 212 200 192 200 curveto + 192 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 406 180 lineto + 406 202 lineto + 404 202 lineto + 384 202 354 202 342 206 curveto + 340 208 338 208 336 210 curveto + 332 214 330 222 330 228 curveto +closepath +%end path +fill +%new path + 548 624 moveto + 580 624 lineto + 580 672 lineto + 578 670 lineto + 472 670 lineto + 472 648 lineto + 474 648 lineto + 494 648 524 648 536 644 curveto + 538 642 540 642 542 640 curveto + 546 636 548 628 548 622 curveto +closepath +%end path +fill +%new path + 612 624 moveto + 612 630 614 638 618 642 curveto + 620 644 622 644 624 646 curveto + 636 650 666 650 686 650 curveto + 686 672 lineto + 684 670 lineto + 578 670 lineto + 578 622 lineto + 580 624 lineto + 612 624 lineto +closepath +%end path +fill +%new path + 546 226 moveto + 546 220 544 212 540 208 curveto + 538 206 536 206 534 204 curveto + 522 200 492 200 472 200 curveto + 472 180 lineto + 580 180 lineto + 580 228 lineto + 578 226 lineto + 546 226 lineto +closepath +%end path +fill +%new path + 610 226 moveto + 578 226 lineto + 578 180 lineto + 686 180 lineto + 686 202 lineto + 684 202 lineto + 664 202 634 202 622 206 curveto + 620 208 618 208 616 210 curveto + 612 214 610 222 610 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_I +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 190 670 0.5 add moveto + 226 668 0.5 add 264 668 0.5 add 300 668 0.5 add curveto + 300 670 0.5 add lineto + 336 670 0.5 add 374 670 0.5 add 410 672 0.5 add curveto + 408 670 0.5 add lineto + 188 670 0.5 add lineto +closepath +%end path +%erase +%new path + 190 180 0.5 sub moveto + 408 180 0.5 sub lineto + 372 182 0.5 sub 334 182 0.5 sub 298 182 0.5 sub curveto + 298 180 0.5 sub lineto + 188 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 268 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 188 670 lineto + 188 648 lineto + 190 648 lineto + 212 648 242 648 256 644 curveto + 258 642 260 642 262 640 curveto + 266 636 268 628 268 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 630 334 638 338 642 curveto + 340 644 342 644 344 646 curveto + 358 650 388 650 410 650 curveto + 410 672 lineto + 408 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 240 200 210 200 188 200 curveto + 188 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 410 180 lineto + 410 202 lineto + 408 202 lineto + 386 202 356 202 342 206 curveto + 340 208 338 208 336 210 curveto + 332 214 330 222 330 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_J +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 302 670 0.5 add moveto + 344 668 0.5 add 386 668 0.5 add 428 668 0.5 add curveto + 428 670 0.5 add lineto + 458 670 0.5 add 486 670 0.5 add 516 672 0.5 add curveto + 514 670 0.5 add lineto + 300 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 398 668 moveto + 396 664 lineto + 396 282 lineto + 396 266 394 250 388 236 curveto + 390 238 lineto + 390 240 lineto + 386 228 380 216 374 206 curveto + 370 202 368 198 364 196 curveto + 364 196 lineto + 372 200 lineto + 368 200 lineto + 366 198 lineto + 358 190 348 184 338 180 curveto + 338 182 lineto + 340 182 lineto + 334 180 328 180 322 180 curveto + 320 180 lineto + 316 176 lineto + 316 174 lineto + 314 172 lineto + 316 174 lineto + 316 168 lineto + 320 166 lineto + 322 164 lineto + 324 164 lineto + 326 166 lineto + 342 166 356 168 372 174 curveto + 370 172 lineto + 374 174 lineto + 390 180 406 186 418 198 curveto + 420 200 422 202 424 202 curveto + 426 204 lineto + 428 206 lineto + 440 218 448 232 454 248 curveto + 452 248 lineto + 454 250 lineto + 454 252 lineto + 458 262 460 272 460 282 curveto + 460 664 lineto + 458 668 lineto + 456 670 lineto + 452 672 lineto + 450 672 lineto + 450 670 lineto + 402 670 lineto + 404 672 lineto + 400 670 lineto + 398 668 lineto +closepath +%end path +fill +%new path + 398 624 moveto + 428 624 lineto + 428 672 lineto + 426 670 lineto + 300 670 lineto + 300 648 lineto + 302 648 lineto + 328 648 366 648 382 644 curveto + 386 642 388 640 392 638 curveto + 396 634 398 628 398 622 curveto +closepath +%end path +fill +%new path + 460 624 moveto + 460 632 462 638 466 644 curveto + 466 644 468 644 470 646 curveto + 478 650 500 650 516 650 curveto + 516 672 lineto + 514 670 lineto + 426 670 lineto + 426 622 lineto + 428 624 lineto + 460 624 lineto +closepath +%end path +fill +%new path + 330 176 moveto + 328 180 lineto + 324 180 lineto + 312 180 300 182 288 186 curveto + 290 184 lineto + 292 184 lineto + 276 190 262 198 252 210 curveto + 252 208 lineto + 250 210 lineto + 256 206 lineto + 256 206 lineto + 254 206 lineto + 244 216 238 228 234 240 curveto + 234 238 lineto + 236 236 lineto + 234 236 lineto + 232 246 230 254 230 264 curveto + 232 262 lineto + 230 266 lineto + 228 268 lineto + 224 270 lineto + 222 270 lineto + 222 268 lineto + 214 268 lineto + 216 270 lineto + 212 268 lineto + 210 266 lineto + 208 262 lineto + 208 260 lineto + 210 260 lineto + 210 250 212 242 214 234 curveto + 214 232 lineto + 216 230 lineto + 220 218 226 208 236 198 curveto + 234 200 lineto + 238 196 lineto + 250 184 264 176 282 172 curveto + 284 172 lineto + 284 170 lineto + 296 166 310 164 324 164 curveto + 324 164 lineto + 328 166 lineto + 330 168 lineto + 332 172 lineto + 332 174 lineto + 330 176 lineto +closepath +%end path +fill +%new path + 290 262 moveto + 288 264 lineto + 288 268 288 272 286 274 curveto + 288 274 lineto + 286 276 lineto + 286 278 lineto + 284 282 282 286 278 288 curveto + 280 288 lineto + 276 290 lineto + 276 292 lineto + 272 296 268 298 264 300 curveto + 264 298 lineto + 262 300 lineto + 260 300 lineto + 256 302 252 302 248 302 curveto + 248 302 lineto + 246 300 lineto + 244 300 240 300 236 298 curveto + 236 300 lineto + 234 298 lineto + 232 298 lineto + 228 296 224 294 220 290 curveto + 222 290 lineto + 218 288 lineto + 218 286 lineto + 214 284 212 280 210 276 curveto + 212 276 lineto + 210 274 lineto + 210 272 lineto + 208 270 208 266 208 262 curveto + 208 260 lineto + 210 258 lineto + 210 256 lineto + 214 248 218 240 220 232 curveto + 220 234 lineto + 222 230 lineto + 224 230 lineto + 226 226 230 224 234 222 curveto + 234 224 lineto + 236 222 lineto + 238 222 lineto + 242 220 246 220 248 220 curveto + 250 220 lineto + 250 222 lineto + 254 222 258 222 262 224 curveto + 262 222 lineto + 264 224 lineto + 266 224 lineto + 270 226 274 228 278 232 curveto + 276 232 lineto + 280 234 lineto + 280 236 lineto + 284 238 286 242 288 246 curveto + 286 246 lineto + 288 248 lineto + 288 250 lineto + 290 252 290 256 290 262 curveto + 290 262 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_K +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 670 0.5 add moveto + 230 668 0.5 add 264 668 0.5 add 300 668 0.5 add curveto + 300 670 0.5 add lineto + 336 670 0.5 add 370 670 0.5 add 406 672 0.5 add curveto + 404 670 0.5 add lineto + 192 670 0.5 add lineto +closepath +%end path +%erase +%new path + 194 180 0.5 sub moveto + 404 180 0.5 sub lineto + 368 182 0.5 sub 334 182 0.5 sub 298 182 0.5 sub curveto + 298 180 0.5 sub lineto + 192 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 538 670 0.5 add moveto + 572 668 0.5 add 604 668 0.5 add 636 668 0.5 add curveto + 636 670 0.5 add lineto + 654 670 0.5 add 672 670 0.5 add 690 672 0.5 add curveto + 688 670 0.5 add lineto + 536 670 0.5 add lineto +closepath +%end path +%erase +%new path + 516 180 0.5 sub moveto + 698 180 0.5 sub lineto + 672 182 0.5 sub 646 182 0.5 sub 620 182 0.5 sub curveto + 620 180 0.5 sub lineto + 514 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 300 332 moveto + 416 442 532 554 650 664 curveto + 650 668 lineto + 648 668 lineto + 648 670 lineto + 646 672 646 672 644 672 curveto + 644 670 lineto + 636 670 lineto + 632 670 628 668 626 666 curveto + 516 562 408 458 298 354 curveto + 298 330 lineto +closepath +%end path +fill +%new path + 410 448 moveto + 470 358 530 270 590 182 curveto + 590 182 590 182 592 180 curveto + 654 180 lineto + 654 180 656 180 658 182 curveto + 658 186 lineto + 656 186 lineto + 656 188 lineto + 588 288 520 390 452 490 curveto + 452 488 lineto + 438 474 422 460 408 448 curveto +closepath +%end path +fill +%new path + 268 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 192 670 lineto + 192 648 lineto + 194 648 lineto + 214 648 244 648 256 644 curveto + 258 642 260 642 262 640 curveto + 266 636 268 628 268 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 630 334 638 338 642 curveto + 340 644 342 644 344 646 curveto + 356 650 386 650 406 650 curveto + 406 672 lineto + 404 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 242 200 212 200 192 200 curveto + 192 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 406 180 lineto + 406 202 lineto + 404 202 lineto + 384 202 354 202 342 206 curveto + 340 208 338 208 336 210 curveto + 332 214 330 222 330 228 curveto +closepath +%end path +fill +%new path + 560 604 moveto + 574 604 lineto + 594 626 616 650 636 672 curveto + 634 670 lineto + 536 670 lineto + 536 648 lineto + 538 648 lineto + 548 648 558 646 564 638 curveto + 566 638 568 636 570 632 curveto + 570 630 572 626 572 624 curveto + 570 624 lineto + 570 616 566 608 560 602 curveto + 558 602 lineto +closepath +%end path +fill +%new path + 690 650 moveto + 690 672 lineto + 688 670 lineto + 634 670 lineto + 614 648 592 624 572 602 curveto + 574 604 lineto + 586 604 lineto + 602 618 618 630 636 638 curveto + 654 646 672 650 690 650 curveto +closepath +%end path +fill +%new path + 546 246 moveto + 552 238 558 230 558 222 curveto + 556 222 lineto + 556 218 554 214 552 212 curveto + 552 210 552 210 550 208 curveto + 542 200 526 200 514 200 curveto + 514 180 lineto + 620 180 lineto + 608 202 594 226 580 248 curveto + 580 246 lineto + 544 246 lineto +closepath +%end path +fill +%new path + 616 246 moveto + 582 246 lineto + 596 224 610 200 622 180 curveto + 700 180 lineto + 700 202 lineto + 698 202 lineto + 682 202 664 202 650 210 curveto + 646 212 640 216 636 220 curveto + 628 228 622 238 616 248 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_L +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 670 0.5 add moveto + 230 668 0.5 add 264 668 0.5 add 300 668 0.5 add curveto + 300 670 0.5 add lineto + 342 670 0.5 add 384 670 0.5 add 424 672 0.5 add curveto + 422 670 0.5 add lineto + 192 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 570 364 moveto + 566 318 560 268 528 236 curveto + 502 208 462 200 426 200 curveto + 298 200 lineto + 298 180 lineto + 570 180 lineto + 576 242 584 304 590 366 curveto + 588 364 lineto + 570 364 lineto +closepath +%end path +fill +%new path + 268 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 192 670 lineto + 192 648 lineto + 194 648 lineto + 214 648 244 648 256 644 curveto + 258 642 260 642 262 640 curveto + 266 636 268 628 268 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 630 334 636 338 640 curveto + 342 642 344 644 348 646 curveto + 362 650 398 650 424 650 curveto + 424 672 lineto + 422 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 266 226 moveto + 266 220 264 212 260 208 curveto + 258 206 256 206 254 204 curveto + 242 200 212 200 192 200 curveto + 192 180 lineto + 300 180 lineto + 300 228 lineto + 298 226 lineto + 266 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 298 226 lineto + 298 180 lineto + 370 180 lineto + 370 202 lineto + 368 202 lineto + 356 202 342 202 336 206 curveto + 336 206 336 208 334 208 curveto + 330 212 330 220 330 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_M +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 198 180 0.5 sub moveto + 364 180 0.5 sub lineto + 336 182 0.5 sub 308 182 0.5 sub 280 182 0.5 sub curveto + 280 180 0.5 sub lineto + 196 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 596 180 0.5 sub moveto + 800 180 0.5 sub lineto + 766 182 0.5 sub 732 182 0.5 sub 696 182 0.5 sub curveto + 696 180 0.5 sub lineto + 594 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 272 668 moveto + 272 664 lineto + 270 664 lineto + 270 188 lineto + 272 188 lineto + 272 184 lineto + 276 180 lineto + 288 180 lineto + 290 184 lineto + 292 186 lineto + 292 664 lineto + 290 668 lineto + 288 670 lineto + 284 672 lineto + 282 672 lineto + 282 670 lineto + 278 670 lineto + 278 672 lineto + 276 670 lineto + 272 668 lineto +closepath +%end path +fill +%new path + 670 668 moveto + 668 664 lineto + 668 186 lineto + 670 184 lineto + 672 180 lineto + 724 180 lineto + 726 184 lineto + 728 186 lineto + 728 664 lineto + 726 668 lineto + 724 670 lineto + 720 672 lineto + 718 672 lineto + 718 670 lineto + 674 670 lineto + 676 672 lineto + 672 670 lineto + 670 668 lineto +closepath +%end path +fill +%new path + 282 670 moveto + 344 508 406 348 468 186 curveto + 470 184 470 182 472 182 curveto + 474 180 478 180 480 180 curveto + 480 180 lineto + 482 180 486 182 488 184 curveto + 490 184 490 186 492 188 curveto + 554 350 616 510 678 672 curveto + 676 670 lineto + 668 670 lineto + 666 670 662 668 660 666 curveto + 658 666 658 664 656 662 curveto + 604 524 550 388 498 250 curveto + 498 252 lineto + 446 390 392 526 340 664 curveto + 338 666 338 668 336 668 curveto + 334 670 330 672 328 672 curveto + 328 670 lineto + 280 670 lineto +closepath +%end path +fill +%new path + 272 624 moveto + 282 624 lineto + 282 672 lineto + 280 670 lineto + 196 670 lineto + 196 648 lineto + 198 648 lineto + 218 648 248 648 260 644 curveto + 262 642 264 642 266 640 curveto + 270 636 272 628 272 622 curveto +closepath +%end path +fill +%new path + 270 246 moveto + 270 234 266 224 258 216 curveto + 256 214 254 214 252 212 curveto + 236 202 216 200 196 200 curveto + 196 180 lineto + 282 180 lineto + 282 248 lineto + 280 246 lineto + 270 246 lineto +closepath +%end path +fill +%new path + 290 246 moveto + 280 246 lineto + 280 180 lineto + 366 180 lineto + 366 202 lineto + 364 202 lineto + 344 202 324 204 308 214 curveto + 306 216 304 216 302 218 curveto + 294 226 290 236 290 248 curveto +closepath +%end path +fill +%new path + 728 624 moveto + 728 630 730 638 734 642 curveto + 736 644 738 644 740 646 curveto + 752 650 782 650 802 650 curveto + 802 672 lineto + 800 670 lineto + 696 670 lineto + 696 622 lineto + 698 624 lineto + 728 624 lineto +closepath +%end path +fill +%new path + 668 226 moveto + 668 220 666 212 662 208 curveto + 660 206 658 206 656 204 curveto + 644 200 614 200 594 200 curveto + 594 180 lineto + 698 180 lineto + 698 228 lineto + 696 226 lineto + 668 226 lineto +closepath +%end path +fill +%new path + 726 226 moveto + 696 226 lineto + 696 180 lineto + 802 180 lineto + 802 202 lineto + 800 202 lineto + 780 202 750 202 738 206 curveto + 736 208 734 208 732 210 curveto + 728 214 726 222 726 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_N +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 180 0.5 sub moveto + 360 180 0.5 sub lineto + 332 182 0.5 sub 304 182 0.5 sub 276 182 0.5 sub curveto + 276 180 0.5 sub lineto + 192 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 518 670 0.5 add moveto + 546 668 0.5 add 574 668 0.5 add 602 668 0.5 add curveto + 602 670 0.5 add lineto + 630 670 0.5 add 658 670 0.5 add 686 672 0.5 add curveto + 684 670 0.5 add lineto + 516 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 188 lineto + 268 188 lineto + 268 184 lineto + 272 180 lineto + 284 180 lineto + 286 184 lineto + 288 186 lineto + 288 664 lineto + 286 668 lineto + 284 670 lineto + 280 672 lineto + 278 672 lineto + 278 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 592 668 moveto + 590 664 lineto + 590 186 lineto + 592 184 lineto + 594 180 lineto + 608 180 lineto + 610 184 lineto + 612 186 lineto + 612 664 lineto + 610 668 lineto + 608 670 lineto + 604 672 lineto + 602 672 lineto + 602 670 lineto + 596 670 lineto + 598 672 lineto + 594 670 lineto + 592 668 lineto +closepath +%end path +fill +%new path + 268 662 moveto + 268 660 lineto + 270 658 lineto + 376 500 484 340 592 182 curveto + 592 184 lineto + 594 180 lineto + 602 180 lineto + 606 184 lineto + 606 186 lineto + 608 188 lineto + 608 262 lineto + 606 260 lineto + 606 266 lineto + 604 266 lineto + 514 400 422 534 332 668 curveto + 330 670 lineto + 326 672 lineto + 324 672 lineto + 324 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto + 268 662 lineto +closepath +%end path +fill +%new path + 294 624 moveto + 326 624 lineto + 318 640 308 656 300 672 curveto + 300 670 lineto + 192 670 lineto + 192 648 lineto + 194 648 lineto + 218 648 248 648 266 644 curveto + 274 642 280 638 286 632 curveto + 288 628 292 626 294 622 curveto +closepath +%end path +fill +%new path + 266 246 moveto + 266 234 262 224 254 216 curveto + 252 214 250 214 248 212 curveto + 232 202 212 200 192 200 curveto + 192 180 lineto + 278 180 lineto + 278 248 lineto + 276 246 lineto + 266 246 lineto +closepath +%end path +fill +%new path + 286 246 moveto + 276 246 lineto + 276 180 lineto + 362 180 lineto + 362 202 lineto + 360 202 lineto + 340 202 320 204 304 214 curveto + 302 216 300 216 298 218 curveto + 290 226 286 236 286 248 curveto +closepath +%end path +fill +%new path + 592 604 moveto + 602 604 lineto + 602 672 lineto + 600 670 lineto + 516 670 lineto + 516 648 lineto + 518 648 lineto + 538 648 558 646 574 636 curveto + 576 634 578 634 580 632 curveto + 588 624 592 614 592 602 curveto +closepath +%end path +fill +%new path + 612 604 moveto + 612 616 616 626 624 634 curveto + 626 636 628 636 630 638 curveto + 646 648 666 650 686 650 curveto + 686 672 lineto + 684 670 lineto + 600 670 lineto + 600 602 lineto + 602 604 lineto + 612 604 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_O +( +newpath +%new path + 458 668 moveto + 418 668 382 650 356 624 curveto + 348 616 342 608 336 600 curveto + 302 552 292 492 292 434 curveto + 294 434 lineto + 294 370 304 306 338 252 curveto + 346 242 354 232 362 224 curveto + 388 198 422 180 460 180 curveto + 460 182 lineto + 498 182 532 200 558 226 curveto + 566 234 574 244 582 254 curveto + 616 308 626 372 626 436 curveto + 624 436 lineto + 624 494 614 554 580 602 curveto + 574 610 568 618 560 626 curveto + 534 652 498 670 458 670 curveto +closepath +%end path +%new path + 458 686 moveto + 398 686 340 660 296 618 curveto + 294 614 290 612 288 608 curveto + 242 558 218 490 218 422 curveto + 220 422 lineto + 220 354 244 288 290 238 curveto + 292 236 294 234 298 232 curveto + 340 188 398 164 460 164 curveto + 460 166 lineto + 522 166 580 190 622 234 curveto + 626 236 628 238 630 240 curveto + 676 290 700 356 700 424 curveto + 698 424 lineto + 698 492 674 560 628 610 curveto + 626 614 622 616 620 620 curveto + 576 662 518 688 458 688 curveto +closepath +%end path +eofill +) def + +/The_letter_P +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 196 180 0.5 sub moveto + 406 180 0.5 sub lineto + 370 182 0.5 sub 336 182 0.5 sub 300 182 0.5 sub curveto + 300 180 0.5 sub lineto + 194 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 270 668 moveto + 270 664 lineto + 268 664 lineto + 268 188 lineto + 270 188 lineto + 270 184 lineto + 274 180 lineto + 330 180 lineto + 332 184 lineto + 334 186 lineto + 334 416 lineto + 332 420 lineto + 330 422 lineto + 326 424 lineto + 324 424 lineto + 324 422 lineto + 322 422 lineto + 322 424 lineto + 320 422 lineto + 316 420 lineto + 324 424 lineto + 330 420 lineto + 328 422 lineto + 324 424 lineto + 330 420 lineto + 332 416 lineto + 330 420 lineto + 332 416 lineto + 330 412 lineto + 332 414 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 276 670 lineto + 276 672 lineto + 274 670 lineto + 270 668 lineto +closepath +%end path +fill +%new path + 302 650 moveto + 432 650 lineto + 432 648 lineto + 464 648 498 640 522 618 curveto + 544 596 546 566 546 536 curveto + 544 536 lineto + 544 506 542 476 520 456 curveto + 520 454 lineto + 496 432 462 424 430 424 curveto + 300 424 lineto + 300 406 lineto + 302 408 lineto + 450 408 lineto + 494 408 536 418 570 446 curveto + 576 450 580 454 584 458 curveto + 606 480 620 508 620 538 curveto + 618 538 lineto + 618 570 604 598 582 622 curveto + 578 626 572 630 568 632 curveto + 534 660 492 672 448 672 curveto + 448 670 lineto + 300 670 lineto + 300 648 lineto +closepath +%end path +fill +%new path + 270 624 moveto + 302 624 lineto + 302 672 lineto + 300 670 lineto + 194 670 lineto + 194 648 lineto + 196 648 lineto + 216 648 246 648 258 644 curveto + 260 642 262 642 264 640 curveto + 268 636 270 628 270 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 632 332 640 336 644 curveto + 338 644 338 646 338 646 curveto + 344 650 358 650 370 650 curveto + 370 672 lineto + 368 670 lineto + 300 670 lineto + 300 622 lineto + 302 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 268 226 moveto + 268 220 266 212 262 208 curveto + 260 206 258 206 256 204 curveto + 244 200 214 200 194 200 curveto + 194 180 lineto + 302 180 lineto + 302 228 lineto + 300 226 lineto + 268 226 lineto +closepath +%end path +fill +%new path + 332 226 moveto + 300 226 lineto + 300 180 lineto + 408 180 lineto + 408 202 lineto + 406 202 lineto + 386 202 356 202 344 206 curveto + 342 208 340 208 338 210 curveto + 334 214 332 222 332 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_Q +( +newpath +%new path + 458 668 moveto + 420 668 384 650 356 624 curveto + 348 616 342 606 334 598 curveto + 300 546 290 484 290 422 curveto + 292 422 lineto + 292 362 302 300 336 250 curveto + 344 240 350 232 358 226 curveto + 386 198 420 180 460 180 curveto + 460 182 lineto + 500 182 534 200 562 228 curveto + 570 234 576 242 584 252 curveto + 618 302 628 364 628 424 curveto + 626 424 lineto + 626 486 616 548 582 600 curveto + 574 608 568 618 560 626 curveto + 532 652 496 670 458 670 curveto +closepath +%end path +%new path + 458 686 moveto + 398 686 340 660 296 618 curveto + 294 614 290 612 288 608 curveto + 242 558 218 490 218 422 curveto + 220 422 lineto + 220 354 244 288 290 238 curveto + 292 236 294 234 298 232 curveto + 340 188 398 164 460 164 curveto + 460 166 lineto + 522 166 580 190 622 234 curveto + 626 236 628 238 630 240 curveto + 676 290 700 356 700 424 curveto + 698 424 lineto + 698 492 674 560 628 610 curveto + 626 614 622 616 620 620 curveto + 576 662 518 688 458 688 curveto +closepath +%end path +eofill +%new path + 466 178 moveto + 464 180 lineto + 460 180 lineto + 454 180 448 182 444 184 curveto + 444 182 lineto + 446 182 lineto + 440 184 432 190 428 194 curveto + 426 194 lineto + 432 190 lineto + 432 190 lineto + 430 192 lineto + 424 198 420 204 418 212 curveto + 420 208 lineto + 418 210 lineto + 416 214 416 220 416 226 curveto + 418 226 lineto + 416 228 lineto + 418 226 lineto + 416 220 lineto + 418 224 lineto + 418 230 418 236 420 242 curveto + 420 240 lineto + 418 238 lineto + 420 238 lineto + 422 246 426 254 432 260 curveto + 432 258 lineto + 424 254 lineto + 426 254 lineto + 428 256 lineto + 430 256 lineto + 434 262 442 266 448 268 curveto + 444 266 lineto + 446 268 lineto + 450 270 456 270 462 270 curveto + 460 268 lineto + 464 270 lineto + 466 272 lineto + 458 268 lineto + 452 272 lineto + 456 270 lineto + 458 268 lineto + 460 268 lineto + 468 268 476 266 482 264 curveto + 480 266 lineto + 478 266 lineto + 488 262 494 258 500 252 curveto + 500 254 lineto + 502 252 lineto + 496 256 lineto + 496 256 lineto + 498 256 lineto + 506 246 514 232 518 218 curveto + 518 220 lineto + 516 222 lineto + 518 222 lineto + 530 184 532 138 544 100 curveto + 542 102 lineto + 544 98 lineto + 550 84 556 70 566 60 curveto + 564 62 lineto + 568 58 lineto + 574 52 582 48 590 44 curveto + 590 46 lineto + 592 44 lineto + 594 44 lineto + 600 42 608 40 616 40 curveto + 618 40 lineto + 618 42 lineto + 626 42 632 44 638 46 curveto + 638 44 lineto + 640 46 lineto + 642 46 lineto + 650 50 658 54 666 62 curveto + 664 60 lineto + 668 64 lineto + 678 74 686 90 692 106 curveto + 692 108 lineto + 694 110 lineto + 700 130 704 156 704 180 curveto + 702 184 lineto + 700 186 lineto + 696 188 lineto + 694 188 lineto + 694 186 lineto + 692 186 lineto + 694 188 lineto + 690 186 lineto + 688 184 lineto + 686 180 lineto + 686 172 684 164 682 158 curveto + 684 158 lineto + 684 160 lineto + 680 150 674 140 666 132 curveto + 666 132 lineto + 674 136 lineto + 670 136 lineto + 668 134 lineto + 660 126 650 120 640 116 curveto + 640 118 lineto + 642 118 lineto + 636 116 628 114 620 114 curveto + 618 114 lineto + 614 110 lineto + 622 114 lineto + 628 110 lineto + 626 114 lineto + 622 114 lineto + 622 116 lineto + 614 116 608 116 602 118 curveto + 606 116 lineto + 604 118 lineto + 594 122 588 126 580 132 curveto + 578 132 lineto + 584 128 lineto + 586 126 lineto + 584 128 lineto + 584 130 lineto + 550 164 542 230 510 264 curveto + 510 262 lineto + 508 266 lineto + 506 266 lineto + 500 274 492 278 482 282 curveto + 484 280 lineto + 480 282 lineto + 474 284 466 286 460 286 curveto + 458 286 lineto + 458 284 lineto + 452 284 446 284 442 282 curveto + 440 282 lineto + 438 280 lineto + 432 278 424 274 420 268 curveto + 420 270 lineto + 418 266 lineto + 416 266 lineto + 410 260 406 252 404 244 curveto + 404 242 lineto + 402 242 lineto + 400 236 400 230 400 224 curveto + 402 226 lineto + 402 222 lineto + 402 216 402 210 404 206 curveto + 404 204 lineto + 406 202 lineto + 408 194 412 188 418 182 curveto + 420 180 lineto + 422 180 lineto + 426 176 434 170 440 168 curveto + 440 170 lineto + 442 168 lineto + 444 168 lineto + 448 166 454 164 460 164 curveto + 458 166 lineto + 464 166 lineto + 466 170 lineto + 468 172 lineto + 468 174 lineto + 466 178 lineto +closepath +%end path +fill +) def + +/The_letter_R +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 196 180 0.5 sub moveto + 404 180 0.5 sub lineto + 370 182 0.5 sub 334 182 0.5 sub 300 182 0.5 sub curveto + 300 180 0.5 sub lineto + 194 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 270 668 moveto + 270 664 lineto + 268 664 lineto + 268 188 lineto + 270 188 lineto + 270 184 lineto + 274 180 lineto + 328 180 lineto + 330 184 lineto + 332 186 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 276 670 lineto + 276 672 lineto + 274 670 lineto + 270 668 lineto +closepath +%end path +fill +%new path + 302 650 moveto + 410 650 lineto + 410 648 lineto + 446 648 482 642 508 618 curveto + 510 618 510 616 512 616 curveto + 532 596 536 568 536 540 curveto + 534 540 lineto + 534 512 530 484 510 466 curveto + 508 464 508 462 506 462 curveto + 480 438 444 432 408 432 curveto + 300 432 lineto + 300 416 lineto + 302 418 lineto + 420 418 lineto + 468 418 514 428 554 454 curveto + 564 460 572 466 578 474 curveto + 598 492 610 516 610 542 curveto + 608 542 lineto + 608 570 594 596 574 616 curveto + 568 622 560 628 552 634 curveto + 514 660 466 672 418 672 curveto + 418 670 lineto + 300 670 lineto + 300 648 lineto +closepath +%end path +fill +%new path + 412 430 moveto + 410 426 lineto + 410 424 lineto + 412 420 lineto + 414 418 lineto + 418 416 lineto + 430 416 440 414 450 410 curveto + 450 412 lineto + 448 412 lineto + 462 406 476 398 486 388 curveto + 486 390 lineto + 488 388 lineto + 482 392 lineto + 482 392 lineto + 484 392 lineto + 494 380 502 368 506 354 curveto + 506 356 lineto + 504 358 lineto + 506 358 lineto + 508 348 510 338 510 328 curveto + 510 330 lineto + 508 330 lineto + 508 266 lineto + 510 268 lineto + 510 264 lineto + 510 252 512 242 514 232 curveto + 514 230 lineto + 516 228 lineto + 520 216 526 206 536 196 curveto + 534 198 lineto + 538 194 lineto + 550 184 562 178 578 172 curveto + 576 174 lineto + 580 172 lineto + 596 166 614 164 632 164 curveto + 634 164 lineto + 634 166 lineto + 640 166 644 166 650 168 curveto + 652 168 lineto + 652 170 lineto + 660 172 666 176 672 180 curveto + 670 180 lineto + 674 182 lineto + 682 190 688 200 692 212 curveto + 690 210 lineto + 692 214 lineto + 696 224 698 236 698 246 curveto + 698 248 lineto + 696 250 lineto + 694 254 lineto + 682 254 lineto + 680 250 lineto + 678 248 lineto + 678 246 lineto + 678 236 676 224 672 214 curveto + 674 214 lineto + 674 216 lineto + 670 206 664 196 656 188 curveto + 658 188 lineto + 656 186 lineto + 656 184 lineto + 658 188 lineto + 666 192 lineto + 660 192 lineto + 660 190 lineto + 654 186 648 182 642 180 curveto + 646 182 lineto + 644 180 lineto + 628 180 lineto + 626 176 lineto + 634 180 lineto + 640 176 lineto + 636 180 lineto + 632 180 lineto + 626 180 622 180 618 182 curveto + 622 180 lineto + 620 182 lineto + 614 184 610 186 606 190 curveto + 604 190 lineto + 610 186 lineto + 610 186 lineto + 608 188 lineto + 602 194 596 204 592 216 curveto + 594 214 lineto + 594 212 lineto + 588 228 586 248 582 268 curveto + 582 268 572 332 572 332 curveto + 572 338 570 342 568 348 curveto + 570 346 lineto + 568 350 lineto + 562 364 554 378 544 388 curveto + 544 386 lineto + 542 390 lineto + 540 390 lineto + 526 406 508 416 486 422 curveto + 484 422 lineto + 484 424 lineto + 464 430 442 434 418 434 curveto + 418 434 lineto + 414 432 lineto + 412 430 lineto +closepath +%end path +fill +%new path + 270 624 moveto + 302 624 lineto + 302 672 lineto + 300 670 lineto + 194 670 lineto + 194 648 lineto + 196 648 lineto + 216 648 246 648 258 644 curveto + 260 642 262 642 264 640 curveto + 268 636 270 628 270 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 632 332 640 336 644 curveto + 338 644 338 646 338 646 curveto + 344 650 358 650 370 650 curveto + 370 672 lineto + 368 670 lineto + 300 670 lineto + 300 622 lineto + 302 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 268 226 moveto + 268 220 266 212 262 208 curveto + 260 206 258 206 256 204 curveto + 244 200 214 200 194 200 curveto + 194 180 lineto + 302 180 lineto + 302 228 lineto + 300 226 lineto + 268 226 lineto +closepath +%end path +fill +%new path + 330 226 moveto + 300 226 lineto + 300 180 lineto + 406 180 lineto + 406 202 lineto + 404 202 lineto + 384 202 354 202 342 206 curveto + 340 208 338 208 336 210 curveto + 332 214 330 222 330 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_S +( +newpath +%new path + 360 688 moveto + 358 688 lineto + 356 686 lineto + 342 686 328 684 314 680 curveto + 312 680 lineto + 312 678 lineto + 292 672 274 660 260 646 curveto + 260 646 lineto + 258 646 lineto + 252 638 248 632 242 624 curveto + 244 626 lineto + 242 622 lineto + 240 622 lineto + 226 600 218 574 218 548 curveto + 220 550 lineto + 220 544 lineto + 220 518 228 492 242 472 curveto + 244 470 lineto + 244 468 lineto + 250 460 254 454 260 448 curveto + 262 446 lineto + 276 432 294 422 314 414 curveto + 312 416 lineto + 316 414 lineto + 320 412 324 412 328 410 curveto + 328 410 422 388 422 388 curveto + 424 386 426 386 428 386 curveto + 424 388 lineto + 426 386 lineto + 440 382 454 374 464 362 curveto + 464 364 lineto + 466 362 lineto + 462 364 lineto + 460 368 lineto + 462 364 lineto + 464 364 lineto + 468 358 472 354 476 348 curveto + 474 352 lineto + 474 350 lineto + 488 332 494 308 494 286 curveto + 492 286 lineto + 494 284 lineto + 492 286 lineto + 494 294 lineto + 492 290 lineto + 492 266 486 244 472 224 curveto + 474 226 lineto + 476 228 lineto + 474 228 lineto + 472 222 468 218 464 214 curveto + 464 214 462 212 462 212 curveto + 460 210 lineto + 460 206 lineto + 462 212 lineto + 468 214 lineto + 464 214 lineto + 462 212 lineto + 452 200 438 192 424 188 curveto + 428 190 lineto + 426 188 lineto + 418 186 408 184 398 184 curveto + 398 186 lineto + 396 184 lineto + 394 184 lineto + 392 180 lineto + 392 170 lineto + 394 166 lineto + 396 166 lineto + 398 164 lineto + 400 164 lineto + 402 166 lineto + 414 166 428 168 440 172 curveto + 442 172 lineto + 444 174 lineto + 462 180 480 188 494 204 curveto + 494 204 lineto + 496 204 lineto + 496 206 498 206 500 208 curveto + 504 214 510 220 514 226 curveto + 512 224 lineto + 514 228 lineto + 516 228 lineto + 532 254 540 282 540 312 curveto + 540 314 lineto + 538 316 lineto + 538 346 530 374 514 398 curveto + 512 400 lineto + 512 402 lineto + 506 410 500 416 494 422 curveto + 492 424 lineto + 478 438 462 448 442 456 curveto + 442 454 lineto + 440 456 lineto + 438 456 lineto + 436 458 432 458 428 460 curveto + 428 460 334 482 334 482 curveto + 332 484 330 484 328 484 curveto + 332 482 lineto + 330 484 lineto + 314 488 302 498 290 508 curveto + 288 508 lineto + 292 506 lineto + 294 504 lineto + 292 506 lineto + 292 508 lineto + 286 512 282 518 280 522 curveto + 282 518 lineto + 282 520 lineto + 270 536 264 556 264 576 curveto + 266 574 lineto + 264 578 lineto + 266 574 lineto + 264 568 lineto + 266 570 lineto + 266 572 lineto + 266 592 272 612 284 628 curveto + 282 628 lineto + 280 624 lineto + 282 626 lineto + 284 630 288 636 294 640 curveto + 292 640 lineto + 294 642 lineto + 294 646 lineto + 292 640 lineto + 286 638 lineto + 292 638 lineto + 292 640 lineto + 304 650 318 658 332 664 curveto + 332 662 lineto + 330 662 lineto + 340 666 350 668 360 668 curveto + 362 668 lineto + 364 670 lineto + 366 672 lineto + 366 682 lineto + 364 686 lineto + 362 686 lineto + 360 688 lineto +closepath +%end path +fill +%new path + 520 518 moveto + 518 520 lineto + 514 560 504 594 486 622 curveto + 486 620 lineto + 484 624 lineto + 478 632 472 640 466 646 curveto + 464 648 lineto + 450 662 434 672 414 680 curveto + 414 678 lineto + 412 680 lineto + 410 680 lineto + 394 686 378 688 358 688 curveto + 358 688 lineto + 354 686 lineto + 352 682 lineto + 350 682 lineto + 350 676 lineto + 352 676 lineto + 352 672 lineto + 354 670 lineto + 354 668 lineto + 358 668 lineto + 358 666 lineto + 378 666 394 664 410 658 curveto + 408 660 lineto + 406 660 lineto + 426 652 442 642 456 628 curveto + 456 630 lineto + 458 628 lineto + 454 630 lineto + 452 634 lineto + 454 630 lineto + 456 630 lineto + 462 624 468 616 472 608 curveto + 472 610 lineto + 470 612 lineto + 488 586 498 552 502 514 curveto + 500 514 lineto + 502 512 lineto + 504 510 lineto + 516 510 lineto + 518 512 lineto + 520 514 lineto + 520 518 lineto +closepath +%end path +fill +%new path + 404 184 moveto + 400 186 lineto + 374 186 350 190 330 196 curveto + 332 196 lineto + 334 194 lineto + 334 196 lineto + 310 204 290 216 274 230 curveto + 272 230 lineto + 276 228 lineto + 278 226 lineto + 276 228 lineto + 276 230 lineto + 270 236 264 242 258 250 curveto + 260 250 lineto + 262 246 lineto + 260 248 lineto + 244 272 236 302 236 338 curveto + 238 336 lineto + 236 340 lineto + 234 340 lineto + 232 342 lineto + 230 342 lineto + 228 340 lineto + 224 340 lineto + 226 342 lineto + 222 340 lineto + 220 336 lineto + 220 332 lineto + 220 294 230 260 246 236 curveto + 248 234 lineto + 248 232 lineto + 254 224 260 218 266 210 curveto + 264 212 lineto + 266 210 lineto + 284 194 304 182 328 176 curveto + 330 176 lineto + 330 174 lineto + 350 168 374 164 400 164 curveto + 400 164 lineto + 404 166 lineto + 406 170 lineto + 408 170 lineto + 408 178 lineto + 406 178 lineto + 406 180 lineto + 404 184 lineto +closepath +%end path +fill +%new path + 518 512 moveto + 520 514 lineto + 520 682 lineto + 518 686 lineto + 516 686 lineto + 514 688 lineto + 512 688 lineto + 510 686 lineto + 508 686 lineto + 508 688 lineto + 506 686 lineto + 504 686 lineto + 502 682 lineto + 490 662 478 642 466 624 curveto + 466 620 lineto + 468 618 lineto + 470 616 lineto + 472 614 472 612 474 610 curveto + 472 612 lineto + 470 614 lineto + 472 614 lineto + 490 586 500 552 504 514 curveto + 502 514 lineto + 504 512 lineto + 506 510 lineto + 516 510 lineto + 518 512 lineto +closepath +%end path +fill +%new path + 222 340 moveto + 220 336 lineto + 218 336 lineto + 218 172 lineto + 220 174 lineto + 220 170 lineto + 222 166 lineto + 226 164 lineto + 228 164 lineto + 228 166 lineto + 230 166 lineto + 230 164 lineto + 232 166 lineto + 234 166 lineto + 236 170 lineto + 248 188 260 208 272 226 curveto + 272 230 lineto + 270 232 lineto + 268 234 lineto + 264 238 260 242 258 248 curveto + 258 246 lineto + 260 244 lineto + 244 270 234 300 234 338 curveto + 236 336 lineto + 234 340 lineto + 232 340 lineto + 230 342 lineto + 228 342 lineto + 226 340 lineto + 224 340 lineto + 226 342 lineto + 222 340 lineto +closepath +%end path +fill +) def + +/The_letter_T +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 304 180 0.5 sub moveto + 574 180 0.5 sub lineto + 530 182 0.5 sub 484 182 0.5 sub 438 182 0.5 sub curveto + 438 180 0.5 sub lineto + 302 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 408 664 moveto + 408 660 lineto + 406 660 lineto + 406 188 lineto + 408 188 lineto + 408 184 lineto + 412 180 lineto + 468 180 lineto + 470 184 lineto + 472 186 lineto + 472 660 lineto + 470 664 lineto + 468 666 lineto + 464 668 lineto + 462 668 lineto + 462 666 lineto + 414 666 lineto + 414 668 lineto + 412 666 lineto + 408 664 lineto +closepath +%end path +fill +%new path + 656 506 moveto + 672 506 lineto + 668 560 662 614 658 668 curveto + 658 666 lineto + 438 666 lineto + 438 644 lineto + 440 646 lineto + 542 646 lineto + 542 644 lineto + 572 644 606 640 628 618 curveto + 648 598 652 544 656 504 curveto +closepath +%end path +fill +%new path + 224 506 moveto + 228 546 232 600 252 620 curveto + 274 642 308 646 338 646 curveto + 440 646 lineto + 440 668 lineto + 438 666 lineto + 218 666 lineto + 214 612 208 558 204 504 curveto + 206 506 lineto + 224 506 lineto +closepath +%end path +fill +%new path + 406 226 moveto + 406 220 404 214 400 210 curveto + 396 208 392 206 388 204 curveto + 372 200 330 200 302 200 curveto + 302 180 lineto + 440 180 lineto + 440 228 lineto + 438 226 lineto + 406 226 lineto +closepath +%end path +fill +%new path + 470 226 moveto + 438 226 lineto + 438 180 lineto + 576 180 lineto + 576 202 lineto + 574 202 lineto + 546 202 504 202 488 206 curveto + 484 208 480 210 476 212 curveto + 472 216 470 222 470 228 curveto +closepath +%end path +fill +%new path + 408 620 moveto + 440 620 lineto + 440 668 lineto + 438 666 lineto + 370 666 lineto + 370 644 lineto + 372 644 lineto + 382 644 396 644 402 640 curveto + 402 640 402 638 404 638 curveto + 408 634 408 626 408 618 curveto +closepath +%end path +fill +%new path + 472 620 moveto + 472 628 472 636 476 640 curveto + 478 640 478 642 478 642 curveto + 484 646 498 646 510 646 curveto + 510 668 lineto + 508 666 lineto + 438 666 lineto + 438 618 lineto + 440 620 lineto + 472 620 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_U +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 194 670 0.5 add moveto + 230 668 0.5 add 264 668 0.5 add 300 668 0.5 add curveto + 300 670 0.5 add lineto + 336 670 0.5 add 370 670 0.5 add 406 672 0.5 add curveto + 404 670 0.5 add lineto + 192 670 0.5 add lineto +closepath +%end path +%erase +%new path + 516 670 0.5 add moveto + 544 668 0.5 add 572 668 0.5 add 600 668 0.5 add curveto + 600 670 0.5 add lineto + 630 670 0.5 add 658 670 0.5 add 686 672 0.5 add curveto + 684 670 0.5 add lineto + 514 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 268 668 moveto + 268 664 lineto + 266 664 lineto + 266 344 lineto + 268 344 lineto + 268 340 lineto + 272 336 lineto + 328 336 lineto + 330 340 lineto + 332 342 lineto + 332 664 lineto + 330 668 lineto + 328 670 lineto + 324 672 lineto + 322 672 lineto + 322 670 lineto + 274 670 lineto + 274 672 lineto + 272 670 lineto + 268 668 lineto +closepath +%end path +fill +%new path + 324 352 moveto + 322 352 lineto + 322 350 lineto + 274 350 lineto + 274 352 lineto + 272 350 lineto + 268 348 lineto + 268 342 lineto + 268 322 272 304 276 288 curveto + 276 286 lineto + 278 284 lineto + 286 260 300 236 320 218 curveto + 318 218 lineto + 322 216 lineto + 322 214 lineto + 324 214 lineto + 342 194 366 180 390 174 curveto + 390 176 lineto + 392 174 lineto + 394 174 lineto + 412 168 430 164 450 164 curveto + 450 164 lineto + 452 166 lineto + 466 166 482 168 496 174 curveto + 494 172 lineto + 498 174 lineto + 520 180 540 192 556 208 curveto + 558 210 lineto + 560 212 lineto + 562 214 564 216 566 218 curveto + 582 236 594 258 602 280 curveto + 600 278 lineto + 602 282 lineto + 608 302 612 322 612 344 curveto + 612 664 lineto + 610 668 lineto + 608 670 lineto + 604 672 lineto + 602 672 lineto + 602 670 lineto + 594 670 lineto + 596 672 lineto + 592 670 lineto + 590 668 lineto + 588 664 lineto + 588 344 lineto + 588 322 584 302 578 282 curveto + 580 284 lineto + 580 286 lineto + 572 264 562 244 546 228 curveto + 544 226 542 224 540 222 curveto + 542 222 lineto + 540 220 lineto + 540 218 lineto + 542 222 lineto + 550 226 lineto + 544 226 lineto + 544 224 lineto + 528 208 508 198 488 190 curveto + 488 192 lineto + 490 192 lineto + 478 186 462 184 448 184 curveto + 448 186 lineto + 446 184 lineto + 442 182 lineto + 450 186 lineto + 456 182 lineto + 454 184 lineto + 450 186 lineto + 436 186 424 188 412 192 curveto + 414 190 lineto + 416 190 lineto + 398 196 382 206 368 220 curveto + 366 220 lineto + 372 216 lineto + 374 214 lineto + 372 216 lineto + 372 218 lineto + 368 222 364 226 360 230 curveto + 352 242 344 256 340 270 curveto + 340 268 lineto + 342 266 lineto + 340 266 lineto + 332 292 330 318 330 346 curveto + 332 344 lineto + 330 348 lineto + 328 350 lineto + 324 352 lineto +closepath +%end path +fill +%new path + 268 624 moveto + 300 624 lineto + 300 672 lineto + 298 670 lineto + 192 670 lineto + 192 648 lineto + 194 648 lineto + 214 648 244 648 256 644 curveto + 258 642 260 642 262 640 curveto + 266 636 268 628 268 622 curveto +closepath +%end path +fill +%new path + 332 624 moveto + 332 630 334 638 338 642 curveto + 340 644 342 644 344 646 curveto + 356 650 386 650 406 650 curveto + 406 672 lineto + 404 670 lineto + 298 670 lineto + 298 622 lineto + 300 624 lineto + 332 624 lineto +closepath +%end path +fill +%new path + 590 604 moveto + 600 604 lineto + 600 672 lineto + 598 670 lineto + 514 670 lineto + 514 648 lineto + 516 648 lineto + 536 648 556 646 572 636 curveto + 574 634 576 634 578 632 curveto + 586 624 590 614 590 602 curveto +closepath +%end path +fill +%new path + 612 604 moveto + 612 616 616 626 624 634 curveto + 626 636 628 636 630 638 curveto + 646 648 666 650 686 650 curveto + 686 672 lineto + 684 670 lineto + 598 670 lineto + 598 602 lineto + 600 604 lineto + 612 604 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_V +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 184 670 0.5 add moveto + 212 668 0.5 add 242 668 0.5 add 272 668 0.5 add curveto + 272 670 0.5 add lineto + 308 670 0.5 add 342 670 0.5 add 378 672 0.5 add curveto + 376 670 0.5 add lineto + 182 670 0.5 add lineto +closepath +%end path +%erase +%new path + 544 670 0.5 add moveto + 572 668 0.5 add 602 668 0.5 add 630 668 0.5 add curveto + 630 670 0.5 add lineto + 652 670 0.5 add 674 670 0.5 add 696 672 0.5 add curveto + 694 670 0.5 add lineto + 542 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 462 252 moveto + 514 388 566 526 618 664 curveto + 618 666 620 668 620 668 curveto + 624 670 626 672 630 672 curveto + 636 672 lineto + 636 670 lineto + 638 670 640 670 640 668 curveto + 642 668 642 666 642 664 curveto + 640 664 lineto + 640 662 lineto + 578 498 516 334 452 172 curveto + 452 170 452 168 450 168 curveto + 448 166 444 164 442 164 curveto + 434 164 lineto + 434 166 lineto + 432 166 428 168 426 170 curveto + 424 170 424 172 424 174 curveto + 360 336 298 500 236 664 curveto + 236 666 lineto + 238 666 lineto + 238 668 238 670 240 670 curveto + 240 672 242 672 244 672 curveto + 294 672 lineto + 294 670 lineto + 296 670 300 668 302 666 curveto + 304 666 304 664 304 662 curveto + 358 524 410 386 462 250 curveto +closepath +%end path +fill +%new path + 254 624 moveto + 284 624 lineto + 280 640 274 656 270 672 curveto + 270 670 lineto + 182 670 lineto + 182 648 lineto + 184 648 lineto + 202 648 224 648 236 644 curveto + 238 642 242 640 244 638 curveto + 248 634 252 628 254 622 curveto +closepath +%end path +fill +%new path + 318 624 moveto + 318 628 lineto + 320 628 lineto + 320 632 320 636 324 640 curveto + 326 642 328 642 330 644 curveto + 344 650 362 650 378 650 curveto + 378 672 lineto + 376 670 lineto + 272 670 lineto + 276 654 282 638 286 622 curveto + 286 624 lineto + 320 624 lineto +closepath +%end path +fill +%new path + 596 604 moveto + 606 604 lineto + 614 626 622 650 630 672 curveto + 628 670 lineto + 542 670 lineto + 542 648 lineto + 544 648 lineto + 560 648 576 644 586 634 curveto + 588 634 lineto + 594 628 598 620 598 612 curveto + 596 612 lineto + 596 608 594 606 594 602 curveto +closepath +%end path +fill +%new path + 618 604 moveto + 622 614 628 622 634 628 curveto + 638 632 642 636 646 638 curveto + 662 648 680 650 696 650 curveto + 696 672 lineto + 694 670 lineto + 628 670 lineto + 620 648 612 624 604 602 curveto + 606 604 lineto + 618 604 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_W +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 450 670 0.5 add moveto + 478 668 0.5 add 506 668 0.5 add 534 668 0.5 add curveto + 534 670 0.5 add lineto + 570 670 0.5 add 606 670 0.5 add 640 672 0.5 add curveto + 638 670 0.5 add lineto + 448 670 0.5 add lineto +closepath +%end path +%erase +%new path + 184 670 0.5 add moveto + 210 668 0.5 add 238 668 0.5 add 268 668 0.5 add curveto + 268 670 0.5 add lineto + 302 670 0.5 add 338 670 0.5 add 374 672 0.5 add curveto + 372 670 0.5 add lineto + 182 670 0.5 add lineto +closepath +%end path +%erase +%new path + 746 670 0.5 add moveto + 776 668 0.5 add 806 668 0.5 add 836 668 0.5 add curveto + 836 670 0.5 add lineto + 856 670 0.5 add 876 670 0.5 add 896 672 0.5 add curveto + 894 670 0.5 add lineto + 744 670 0.5 add lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 398 168 moveto + 400 166 402 164 406 164 curveto + 406 166 lineto + 408 166 lineto + 410 166 414 168 416 170 curveto + 416 170 418 172 418 174 curveto + 458 296 500 422 540 546 curveto + 540 544 lineto + 580 420 622 294 662 172 curveto + 662 170 664 168 664 168 curveto + 666 166 670 164 672 164 curveto + 672 166 lineto + 674 166 lineto + 678 166 680 168 682 170 curveto + 684 170 686 172 686 174 curveto + 740 336 792 500 846 664 curveto + 846 666 lineto + 844 666 lineto + 844 668 844 670 842 670 curveto + 842 672 840 672 838 672 curveto + 838 670 lineto + 836 670 lineto + 832 670 830 668 828 666 curveto + 826 666 826 664 824 662 curveto + 782 528 738 396 694 262 curveto + 694 264 lineto + 652 398 608 530 566 664 curveto + 564 666 564 668 562 668 curveto + 560 670 558 672 554 672 curveto + 554 670 lineto + 506 670 lineto + 504 670 502 670 502 668 curveto + 500 668 500 666 500 664 curveto + 502 664 lineto + 502 662 lineto + 512 632 520 604 530 574 curveto + 528 574 lineto + 494 470 462 366 428 262 curveto + 428 264 lineto + 384 398 340 530 298 664 curveto + 298 666 296 668 294 668 curveto + 292 670 290 672 286 672 curveto + 286 670 lineto + 238 670 lineto + 236 670 234 670 234 668 curveto + 232 668 232 666 232 664 curveto + 234 664 lineto + 234 662 lineto + 288 498 340 334 394 172 curveto + 394 170 396 168 398 168 curveto +closepath +%end path +fill +%new path + 562 668 moveto + 560 670 558 672 554 672 curveto + 554 670 lineto + 506 670 lineto + 504 670 502 670 502 668 curveto + 500 668 500 666 500 664 curveto + 502 664 lineto + 502 662 lineto + 528 580 556 498 582 416 curveto + 582 418 lineto + 644 418 lineto + 618 500 592 582 566 664 curveto + 564 666 564 668 562 668 curveto +closepath +%end path +fill +%new path + 514 624 moveto + 546 624 lineto + 542 640 536 656 532 672 curveto + 532 670 lineto + 448 670 lineto + 448 648 lineto + 450 648 lineto + 466 648 488 648 498 644 curveto + 502 642 504 640 506 638 curveto + 510 634 512 628 514 622 curveto +closepath +%end path +fill +%new path + 578 624 moveto + 578 628 lineto + 580 628 lineto + 580 632 582 636 584 640 curveto + 586 640 588 642 590 644 curveto + 606 650 624 650 640 650 curveto + 640 672 lineto + 638 670 lineto + 534 670 lineto + 538 654 544 638 548 622 curveto + 548 624 lineto + 580 624 lineto +closepath +%end path +fill +%new path + 248 624 moveto + 278 624 lineto + 274 640 270 656 266 672 curveto + 266 670 lineto + 182 670 lineto + 182 648 lineto + 184 648 lineto + 200 648 220 648 232 644 curveto + 234 642 236 640 238 638 curveto + 242 634 246 628 248 622 curveto +closepath +%end path +fill +%new path + 310 624 moveto + 310 628 lineto + 312 628 lineto + 312 632 314 636 316 640 curveto + 318 640 320 642 324 644 curveto + 338 650 356 650 374 650 curveto + 374 672 lineto + 372 670 lineto + 268 670 lineto + 272 654 276 638 280 622 curveto + 280 624 lineto + 312 624 lineto +closepath +%end path +fill +%new path + 808 604 moveto + 816 604 lineto + 824 626 830 650 836 672 curveto + 834 670 lineto + 744 670 lineto + 744 648 lineto + 746 648 lineto + 764 648 780 644 794 634 curveto + 796 634 798 632 798 630 curveto + 804 624 808 618 808 610 curveto + 806 610 lineto + 806 602 lineto +closepath +%end path +fill +%new path + 826 604 moveto + 830 614 834 624 842 632 curveto + 844 634 848 636 852 638 curveto + 864 648 880 650 896 650 curveto + 896 672 lineto + 894 670 lineto + 834 670 lineto + 828 648 822 624 814 602 curveto + 816 604 lineto + 826 604 lineto +closepath +%end path +fill +grestore +) def + +/The_letter_X +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 196 670 0.5 add moveto + 226 668 0.5 add 256 668 0.5 add 286 668 0.5 add curveto + 286 670 0.5 add lineto + 322 670 0.5 add 360 670 0.5 add 396 672 0.5 add curveto + 394 670 0.5 add lineto + 194 670 0.5 add lineto +closepath +%end path +%erase +%new path + 494 180 0.5 sub moveto + 692 180 0.5 sub lineto + 662 182 0.5 sub 632 182 0.5 sub 602 182 0.5 sub curveto + 602 180 0.5 sub lineto + 492 180 0.5 sub lineto +closepath +%end path +%erase +%new path + 492 670 0.5 add moveto + 522 668 0.5 add 554 668 0.5 add 586 668 0.5 add curveto + 586 670 0.5 add lineto + 612 670 0.5 add 638 670 0.5 add 662 672 0.5 add curveto + 660 670 0.5 add lineto + 490 670 0.5 add lineto +closepath +%end path +%erase +%new path + 188 180 0.5 sub moveto + 356 180 0.5 sub lineto + 326 182 0.5 sub 294 182 0.5 sub 262 182 0.5 sub curveto + 262 180 0.5 sub lineto + 186 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 318 670 moveto + 316 672 314 672 310 672 curveto + 310 670 lineto + 254 670 lineto + 252 670 250 670 250 668 curveto + 248 668 248 666 248 664 curveto + 250 664 lineto + 250 662 lineto + 358 502 464 342 570 182 curveto + 570 180 lineto + 634 180 lineto + 636 180 638 180 638 182 curveto + 640 182 640 184 640 186 curveto + 638 186 lineto + 638 188 lineto + 530 348 424 508 318 668 curveto + 318 670 lineto +closepath +%end path +fill +%new path + 248 180 moveto + 262 180 lineto + 266 180 272 182 274 186 curveto + 276 186 276 188 276 188 curveto + 386 348 494 508 602 668 curveto + 602 670 lineto + 600 670 lineto + 600 672 lineto + 598 672 lineto + 598 670 lineto + 586 670 lineto + 582 670 576 668 574 664 curveto + 572 664 572 662 572 662 curveto + 462 502 354 342 246 182 curveto + 246 180 lineto +closepath +%end path +fill +%new path + 278 624 moveto + 312 624 lineto + 302 640 294 656 284 672 curveto + 284 670 lineto + 194 670 lineto + 194 648 lineto + 196 648 lineto + 216 648 240 648 252 644 curveto + 258 642 264 638 268 634 curveto + 272 630 274 626 278 622 curveto +closepath +%end path +fill +%new path + 348 624 moveto + 346 626 346 626 346 628 curveto + 348 628 lineto + 348 630 350 634 352 636 curveto + 354 638 356 640 358 642 curveto + 370 648 382 650 396 650 curveto + 396 672 lineto + 394 670 lineto + 286 670 lineto + 296 654 304 638 314 622 curveto + 314 624 lineto + 350 624 lineto +closepath +%end path +fill +%new path + 540 226 moveto + 542 224 542 224 542 222 curveto + 540 222 lineto + 540 220 538 216 536 214 curveto + 534 212 532 210 530 208 curveto + 518 202 506 200 492 200 curveto + 492 180 lineto + 602 180 lineto + 592 196 584 212 574 228 curveto + 574 226 lineto + 538 226 lineto +closepath +%end path +fill +%new path + 610 226 moveto + 576 226 lineto + 586 210 594 194 604 180 curveto + 694 180 lineto + 694 202 lineto + 692 202 lineto + 672 202 648 202 636 206 curveto + 630 208 624 212 620 216 curveto + 616 220 614 224 610 228 curveto +closepath +%end path +fill +%new path + 532 604 moveto + 546 604 lineto + 560 626 572 650 586 672 curveto + 584 670 lineto + 490 670 lineto + 490 648 lineto + 492 648 lineto + 504 648 518 644 528 634 curveto + 528 632 lineto + 534 628 536 622 536 614 curveto + 534 614 lineto + 534 610 532 606 530 602 curveto +closepath +%end path +fill +%new path + 558 604 moveto + 562 610 566 614 570 618 curveto + 580 626 590 634 600 638 curveto + 620 648 642 650 662 650 curveto + 662 672 lineto + 660 670 lineto + 584 670 lineto + 570 648 558 624 544 602 curveto + 546 604 lineto + 558 604 lineto +closepath +%end path +fill +%new path + 290 246 moveto + 286 240 282 236 278 232 curveto + 268 224 258 216 248 212 curveto + 228 202 206 200 186 200 curveto + 186 180 lineto + 264 180 lineto + 278 202 290 226 304 248 curveto + 302 246 lineto + 290 246 lineto +closepath +%end path +fill +%new path + 316 246 moveto + 302 246 lineto + 288 224 276 200 262 180 curveto + 358 180 lineto + 358 202 lineto + 356 202 lineto + 344 202 330 206 320 216 curveto + 320 218 lineto + 314 222 312 228 312 236 curveto + 314 236 lineto + 314 240 316 244 318 248 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_Y +( +gsave +initclip +newpath +0 0 moveto +0 1000 lineto +1000 1000 lineto +1000 0 lineto +0 0 lineto +%new path + 180 670 0.5 add moveto + 208 668 0.5 add 238 668 0.5 add 268 668 0.5 add curveto + 268 670 0.5 add lineto + 306 670 0.5 add 342 670 0.5 add 378 672 0.5 add curveto + 376 670 0.5 add lineto + 178 670 0.5 add lineto +closepath +%end path +%erase +%new path + 550 670 0.5 add moveto + 578 668 0.5 add 606 668 0.5 add 634 668 0.5 add curveto + 634 670 0.5 add lineto + 658 670 0.5 add 680 670 0.5 add 702 672 0.5 add curveto + 700 670 0.5 add lineto + 548 670 0.5 add lineto +closepath +%end path +%erase +%new path + 334 180 0.5 sub moveto + 542 180 0.5 sub lineto + 508 182 0.5 sub 472 182 0.5 sub 438 182 0.5 sub curveto + 438 180 0.5 sub lineto + 332 180 0.5 sub lineto +closepath +%end path +%erase +eoclip +newpath +%new path + 462 406 moveto + 516 492 568 578 622 664 curveto + 622 666 624 666 624 668 curveto + 628 670 632 672 636 672 curveto + 644 672 lineto + 644 670 lineto + 644 670 646 670 646 668 curveto + 648 668 648 666 648 664 curveto + 646 664 lineto + 646 662 lineto + 586 566 528 470 468 374 curveto + 468 186 lineto + 468 184 468 182 466 180 curveto + 414 180 lineto + 412 180 410 180 408 182 curveto + 406 184 406 186 406 188 curveto + 408 188 lineto + 408 376 lineto + 406 376 lineto + 348 472 288 568 230 664 curveto + 230 666 lineto + 232 666 lineto + 232 668 232 670 234 670 curveto + 234 672 236 672 236 672 curveto + 290 672 lineto + 290 670 lineto + 296 670 300 668 302 666 curveto + 304 664 304 664 306 662 curveto + 358 576 410 490 462 404 curveto +closepath +%end path +fill +%new path + 256 624 moveto + 292 624 lineto + 284 640 274 656 266 672 curveto + 266 670 lineto + 178 670 lineto + 178 648 lineto + 180 648 lineto + 196 648 220 648 234 644 curveto + 238 642 244 638 248 634 curveto + 250 630 254 626 256 622 curveto +closepath +%end path +fill +%new path + 328 624 moveto + 326 626 326 630 326 632 curveto + 328 632 lineto + 328 636 328 640 330 642 curveto + 332 642 332 642 334 644 curveto + 346 650 362 650 378 650 curveto + 378 672 lineto + 376 670 lineto + 268 670 lineto + 276 654 286 638 294 622 curveto + 294 624 lineto + 330 624 lineto +closepath +%end path +fill +%new path + 584 604 moveto + 598 604 lineto + 610 626 622 650 634 672 curveto + 632 670 lineto + 548 670 lineto + 548 648 lineto + 550 648 lineto + 562 648 574 646 582 638 curveto + 584 636 584 636 586 634 curveto + 588 630 590 626 590 620 curveto + 588 620 lineto + 588 614 586 608 582 602 curveto +closepath +%end path +fill +%new path + 610 604 moveto + 614 610 620 616 624 622 curveto + 632 628 638 634 648 638 curveto + 664 646 682 650 702 650 curveto + 702 672 lineto + 700 670 lineto + 632 670 lineto + 620 648 608 624 596 602 curveto + 598 604 lineto + 610 604 lineto +closepath +%end path +fill +%new path + 406 226 moveto + 406 220 404 212 400 208 curveto + 398 206 396 206 394 204 curveto + 382 200 352 200 332 200 curveto + 332 180 lineto + 440 180 lineto + 440 228 lineto + 438 226 lineto + 406 226 lineto +closepath +%end path +fill +%new path + 468 226 moveto + 438 226 lineto + 438 180 lineto + 544 180 lineto + 544 202 lineto + 542 202 lineto + 522 202 492 202 480 206 curveto + 478 208 476 208 474 210 curveto + 470 214 468 222 468 228 curveto +closepath +%end path +fill +grestore +) def + +/The_letter_Z +( +newpath +%new path + 512 670 moveto + 514 666 514 662 514 660 curveto + 512 660 lineto + 512 660 220 198 220 198 curveto + 218 196 218 196 218 194 curveto + 218 186 lineto + 220 186 lineto + 220 184 220 182 222 180 curveto + 286 180 lineto + 284 184 284 188 284 192 curveto + 286 192 lineto + 286 192 578 654 580 654 curveto + 580 664 lineto + 578 664 lineto + 578 666 578 668 576 670 curveto + 574 672 572 672 570 672 curveto + 570 670 lineto + 510 670 lineto +closepath +%end path +fill +%new path + 248 510 moveto + 250 548 256 590 284 616 curveto + 284 618 286 618 286 618 curveto + 316 646 360 650 400 650 curveto + 546 650 lineto + 546 672 lineto + 544 670 lineto + 236 670 lineto + 234 616 230 562 228 508 curveto + 230 510 lineto + 248 510 lineto +closepath +%end path +fill +%new path + 564 370 moveto + 562 322 558 268 526 236 curveto + 494 206 446 202 402 202 curveto + 252 202 lineto + 252 180 lineto + 572 180 lineto + 576 244 580 308 584 372 curveto + 582 370 lineto + 564 370 lineto +closepath +%end path +fill +) def + +end % of CharDefs dictionary + +Encoding 65 /The_letter_A put +Encoding 66 /The_letter_B put +Encoding 67 /The_letter_C put +Encoding 68 /The_letter_D put +Encoding 69 /The_letter_E put +Encoding 70 /The_letter_F put +Encoding 71 /The_letter_G put +Encoding 72 /The_letter_H put +Encoding 73 /The_letter_I put +Encoding 74 /The_letter_J put +Encoding 75 /The_letter_K put +Encoding 76 /The_letter_L put +Encoding 77 /The_letter_M put +Encoding 78 /The_letter_N put +Encoding 79 /The_letter_O put +Encoding 80 /The_letter_P put +Encoding 81 /The_letter_Q put +Encoding 82 /The_letter_R put +Encoding 83 /The_letter_S put +Encoding 84 /The_letter_T put +Encoding 85 /The_letter_U put +Encoding 86 /The_letter_V put +Encoding 87 /The_letter_W put +Encoding 88 /The_letter_X put +Encoding 89 /The_letter_Y put +Encoding 90 /The_letter_Z put + +Metrics + begin +/The_letter_A 509 fudge add def +/The_letter_B 463 fudge add def +/The_letter_C 483 fudge add def +/The_letter_D 503 fudge add def +/The_letter_E 463 fudge add def +/The_letter_F 433 fudge add def +/The_letter_G 535 fudge add def +/The_letter_H 509 fudge add def +/The_letter_I 233 fudge add def +/The_letter_J 339 fudge add def +/The_letter_K 523 fudge add def +/The_letter_L 413 fudge add def +/The_letter_M 625 fudge add def +/The_letter_N 509 fudge add def +/The_letter_O 523 fudge add def +/The_letter_P 443 fudge add def +/The_letter_Q 527 fudge add def +/The_letter_R 521 fudge add def +/The_letter_S 363 fudge add def +/The_letter_T 497 fudge add def +/The_letter_U 509 fudge add def +/The_letter_V 519 fudge add def +/The_letter_W 719 fudge add def +/The_letter_X 517 fudge add def +/The_letter_Y 525 fudge add def +/The_letter_Z 407 fudge add def +/.notdef 450 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 + 1.5 1.5 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 896 696] def + + end + + /Simon SimonFont definefont pop + + /Simon findfont 7 scalefont setfont + 100 710 moveto (THIS IS CMR SEVEN POINTS WRITTEN IN POSTSCRIPT) show + /Simon findfont 10 scalefont setfont + 100 698 moveto (THIS IS CMR TEN POINTS WRITTEN IN POSTSCRIPT) show + /Simon findfont 12 scalefont setfont + 100 686 moveto (THIS IS CMR TWELVE POINTS WRITTEN IN POSTSCRIPT) show + showpage diff --git a/fonts/utilities/mf2ps/doc/printsamples/cmtt.ps b/fonts/utilities/mf2ps/doc/printsamples/cmtt.ps new file mode 100644 index 0000000000..de9f6624d3 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/cmtt.ps @@ -0,0 +1,6993 @@ +%! Simon font +%0 serverdict begin exitserver +/TBuildCharDict 10 dict def +/SimonFont 10 dict def +/fudge 80 def +SimonFont begin +%% + /FontType 3 def + /FontMatrix [0.000895 0 0 0.000895 0 0] 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_A +( +newpath +%new path + 370 568 moveto + 370 542 422 322 450 198 curveto + 450 194 454 188 456 186 curveto + 462 180 468 180 476 180 curveto + 486 180 lineto + 490 180 494 182 496 184 curveto + 500 188 502 192 502 196 curveto + 500 196 lineto + 500 200 lineto + 468 336 436 474 404 610 curveto + 404 614 400 620 398 622 curveto + 392 628 386 630 380 630 curveto + 380 628 lineto + 354 628 lineto + 348 628 342 626 336 620 curveto + 334 618 330 612 330 608 curveto + 298 472 266 334 234 198 curveto + 234 194 lineto + 236 194 lineto + 236 190 238 186 242 182 curveto + 244 180 248 180 252 180 curveto + 262 180 lineto + 270 180 276 182 282 188 curveto + 284 190 288 196 288 200 curveto + 316 324 368 544 368 570 curveto + 370 570 lineto +closepath +%end path +fill +%new path + 286 298 moveto + 450 298 lineto + 448 314 444 328 440 342 curveto + 440 340 lineto + 294 340 lineto + 290 326 286 312 284 296 curveto +closepath +%end path +fill +%new path + 202 216 moveto + 200 212 lineto + 198 206 lineto + 198 196 lineto + 200 190 lineto + 202 186 lineto + 206 182 lineto + 210 180 lineto + 270 180 lineto + 274 182 lineto + 278 186 lineto + 280 190 lineto + 282 196 lineto + 282 198 284 200 284 202 curveto + 282 200 lineto + 282 206 lineto + 280 212 lineto + 278 216 lineto + 274 220 lineto + 272 222 lineto + 266 224 lineto + 260 224 lineto + 258 222 lineto + 214 222 lineto + 216 224 lineto + 210 222 lineto + 206 220 lineto + 202 216 lineto +closepath +%end path +fill +%new path + 246 216 moveto + 244 212 lineto + 242 206 lineto + 242 204 240 202 240 200 curveto + 242 202 lineto + 242 196 lineto + 244 190 lineto + 246 186 lineto + 250 182 lineto + 252 180 lineto + 322 180 lineto + 326 182 lineto + 330 186 lineto + 332 190 lineto + 334 196 lineto + 334 206 lineto + 332 212 lineto + 330 216 lineto + 326 220 lineto + 322 222 lineto + 316 224 lineto + 310 224 lineto + 310 222 lineto + 258 222 lineto + 260 224 lineto + 254 222 lineto + 250 220 lineto + 246 216 lineto +closepath +%end path +fill +%new path + 406 216 moveto + 404 212 lineto + 402 206 lineto + 402 196 lineto + 404 190 lineto + 406 186 lineto + 410 182 lineto + 414 180 lineto + 484 180 lineto + 486 182 lineto + 490 186 lineto + 492 190 lineto + 494 196 lineto + 494 202 lineto + 494 204 492 206 492 208 curveto + 494 206 lineto + 492 212 lineto + 490 216 lineto + 486 220 lineto + 482 222 lineto + 476 224 lineto + 470 224 lineto + 470 222 lineto + 418 222 lineto + 420 224 lineto + 414 222 lineto + 410 220 lineto + 406 216 lineto +closepath +%end path +fill +%new path + 458 216 moveto + 456 212 lineto + 454 206 lineto + 454 200 lineto + 454 198 456 196 456 194 curveto + 454 196 lineto + 456 190 lineto + 458 186 lineto + 462 182 lineto + 466 180 lineto + 526 180 lineto + 530 182 lineto + 534 186 lineto + 536 190 lineto + 538 196 lineto + 538 206 lineto + 536 212 lineto + 534 216 lineto + 530 220 lineto + 526 222 lineto + 520 224 lineto + 514 224 lineto + 514 222 lineto + 470 222 lineto + 470 224 lineto + 464 222 lineto + 462 220 lineto + 458 216 lineto +closepath +%end path +fill +) def + +/The_letter_B +( +newpath +%new path + 250 612 moveto + 248 608 lineto + 246 602 lineto + 244 602 lineto + 244 202 lineto + 246 202 lineto + 246 196 lineto + 248 190 lineto + 250 188 lineto + 254 184 lineto + 256 182 lineto + 262 180 lineto + 278 180 lineto + 284 182 lineto + 288 184 lineto + 292 188 lineto + 294 190 lineto + 296 196 lineto + 296 602 lineto + 294 608 lineto + 292 612 lineto + 288 616 lineto + 284 618 lineto + 278 620 lineto + 272 620 lineto + 272 618 lineto + 262 618 lineto + 262 620 lineto + 256 618 lineto + 254 616 lineto + 250 612 lineto +closepath +%end path +fill +%new path + 272 576 moveto + 392 576 lineto + 392 574 lineto + 410 574 428 566 442 554 curveto + 454 540 462 524 462 506 curveto + 460 506 lineto + 460 486 452 468 438 454 curveto + 438 454 436 452 436 452 curveto + 418 436 396 428 374 428 curveto + 270 428 lineto + 270 402 lineto + 272 404 lineto + 392 404 lineto + 422 404 454 414 476 434 curveto + 478 436 480 438 482 440 curveto + 500 458 512 482 512 508 curveto + 510 508 lineto + 510 536 498 564 478 584 curveto + 476 586 476 586 474 588 curveto + 452 608 422 620 390 620 curveto + 390 618 lineto + 270 618 lineto + 270 574 lineto +closepath +%end path +fill +%new path + 272 386 moveto + 400 386 lineto + 400 384 lineto + 420 384 438 376 452 362 curveto + 454 362 454 360 454 360 curveto + 470 344 478 322 478 300 curveto + 476 300 lineto + 476 280 468 262 454 248 curveto + 452 246 452 246 450 244 curveto + 434 230 412 222 390 222 curveto + 270 222 lineto + 270 180 lineto + 406 180 lineto + 440 180 470 192 492 216 curveto + 516 238 528 270 528 302 curveto + 526 302 lineto + 526 330 514 358 494 378 curveto + 492 380 492 380 490 382 curveto + 468 402 436 414 404 414 curveto + 404 412 lineto + 270 412 lineto + 270 384 lineto +closepath +%end path +fill +%new path + 286 584 moveto + 288 586 lineto + 290 592 lineto + 292 594 lineto + 292 598 lineto + 290 596 lineto + 290 602 lineto + 288 608 lineto + 286 612 lineto + 282 616 lineto + 280 618 lineto + 274 620 lineto + 268 620 lineto + 266 618 lineto + 212 618 lineto + 214 620 lineto + 208 618 lineto + 204 616 lineto + 200 612 lineto + 198 608 lineto + 196 602 lineto + 196 592 lineto + 198 586 lineto + 200 584 lineto + 204 580 lineto + 208 578 lineto + 214 576 lineto + 274 576 lineto + 280 578 lineto + 282 580 lineto + 286 584 lineto +closepath +%end path +fill +%new path + 316 584 moveto + 318 586 lineto + 320 592 lineto + 320 602 lineto + 318 608 lineto + 316 612 lineto + 312 616 lineto + 308 618 lineto + 302 620 lineto + 296 620 lineto + 296 618 lineto + 266 618 lineto + 268 620 lineto + 262 618 lineto + 258 616 lineto + 254 612 lineto + 252 608 lineto + 250 602 lineto + 250 592 lineto + 252 586 lineto + 254 584 lineto + 258 580 lineto + 262 578 lineto + 268 576 lineto + 302 576 lineto + 308 578 lineto + 312 580 lineto + 316 584 lineto +closepath +%end path +fill +%new path + 200 216 moveto + 198 212 lineto + 196 206 lineto + 196 196 lineto + 198 190 lineto + 200 186 lineto + 204 182 lineto + 208 180 lineto + 280 180 lineto + 282 182 lineto + 286 186 lineto + 288 190 lineto + 290 196 lineto + 292 196 lineto + 292 202 lineto + 290 200 lineto + 290 206 lineto + 288 212 lineto + 286 216 lineto + 282 220 lineto + 280 222 lineto + 274 224 lineto + 268 224 lineto + 266 222 lineto + 212 222 lineto + 214 224 lineto + 208 222 lineto + 204 220 lineto + 200 216 lineto +closepath +%end path +fill +%new path + 254 216 moveto + 252 212 lineto + 250 206 lineto + 250 196 lineto + 252 190 lineto + 254 186 lineto + 258 182 lineto + 262 180 lineto + 308 180 lineto + 312 182 lineto + 316 186 lineto + 318 190 lineto + 320 196 lineto + 320 206 lineto + 318 212 lineto + 316 216 lineto + 312 220 lineto + 308 222 lineto + 302 224 lineto + 296 224 lineto + 296 222 lineto + 266 222 lineto + 268 224 lineto + 262 222 lineto + 258 220 lineto + 254 216 lineto +closepath +%end path +fill +) def + +/The_letter_C +( +newpath +%new path + 494 468 moveto + 510 468 lineto + 516 470 lineto + 520 472 lineto + 524 476 lineto + 526 478 lineto + 528 484 lineto + 528 490 lineto + 526 492 lineto + 524 502 522 512 520 522 curveto + 520 520 lineto + 518 526 lineto + 518 528 lineto + 514 540 508 550 502 560 curveto + 500 562 lineto + 500 564 lineto + 494 570 488 578 482 584 curveto + 484 582 lineto + 480 586 lineto + 478 588 lineto + 472 594 466 600 460 604 curveto + 460 602 lineto + 458 604 lineto + 456 606 lineto + 448 612 438 616 428 620 curveto + 428 618 lineto + 422 620 lineto + 422 622 lineto + 410 626 396 628 384 628 curveto + 378 628 lineto + 378 626 lineto + 364 626 352 624 342 620 curveto + 342 622 lineto + 336 620 lineto + 336 618 lineto + 324 614 314 610 304 602 curveto + 306 604 lineto + 302 602 lineto + 302 600 lineto + 294 596 286 588 278 582 curveto + 280 582 lineto + 276 578 lineto + 274 578 lineto + 268 572 262 564 256 558 curveto + 254 554 254 552 252 550 curveto + 250 548 lineto + 250 546 lineto + 238 530 230 512 224 494 curveto + 222 488 lineto + 212 460 208 430 208 402 curveto + 210 402 lineto + 210 396 lineto + 210 366 214 336 224 308 curveto + 222 310 lineto + 224 304 lineto + 226 302 lineto + 232 284 240 266 252 250 curveto + 250 250 lineto + 252 248 lineto + 254 246 lineto + 256 244 256 242 258 238 curveto + 264 232 270 224 276 218 curveto + 276 220 lineto + 280 216 lineto + 280 214 lineto + 288 208 296 200 304 196 curveto + 302 196 lineto + 306 194 lineto + 316 186 326 182 338 180 curveto + 336 180 lineto + 342 178 lineto + 344 178 lineto + 354 174 366 172 380 172 curveto + 384 172 lineto + 386 174 lineto + 400 174 416 176 428 180 curveto + 434 180 lineto + 446 184 456 190 466 196 curveto + 468 198 lineto + 470 198 lineto + 476 202 482 208 488 214 curveto + 486 212 lineto + 490 216 lineto + 492 218 lineto + 498 222 502 228 506 234 curveto + 508 236 lineto + 508 238 lineto + 514 246 518 254 520 264 curveto + 520 262 lineto + 522 268 lineto + 522 270 lineto + 526 280 528 292 528 304 curveto + 528 308 lineto + 526 314 lineto + 524 318 lineto + 520 322 lineto + 516 324 lineto + 510 326 lineto + 504 326 lineto + 504 324 lineto + 492 324 lineto + 494 326 lineto + 488 324 lineto + 484 322 lineto + 480 318 lineto + 478 314 lineto + 476 308 lineto + 476 294 474 284 470 272 curveto + 472 274 lineto + 474 280 lineto + 472 278 lineto + 470 270 466 260 460 252 curveto + 460 254 lineto + 462 256 lineto + 458 250 454 244 448 238 curveto + 448 240 lineto + 446 236 lineto + 444 230 lineto + 444 224 lineto + 448 240 lineto + 468 248 lineto + 462 248 lineto + 456 246 lineto + 452 244 lineto + 452 242 lineto + 446 238 442 232 434 228 curveto + 436 230 lineto + 438 232 lineto + 438 230 lineto + 430 226 420 220 412 218 curveto + 418 220 lineto + 406 216 394 214 382 214 curveto + 382 216 lineto + 376 214 lineto + 374 212 lineto + 370 208 lineto + 388 216 lineto + 402 208 lineto + 398 212 lineto + 394 214 lineto + 388 216 lineto + 376 216 364 218 354 222 curveto + 354 220 lineto + 360 218 lineto + 360 220 lineto + 350 224 340 228 330 234 curveto + 332 234 lineto + 334 232 lineto + 326 238 318 244 310 250 curveto + 312 250 lineto + 308 252 lineto + 302 254 lineto + 316 246 lineto + 320 236 lineto + 318 242 lineto + 316 246 lineto + 314 246 lineto + 308 254 302 260 296 268 curveto + 296 270 294 272 292 274 curveto + 294 272 lineto + 296 270 lineto + 294 270 lineto + 284 288 276 304 270 324 curveto + 270 322 lineto + 272 316 lineto + 272 318 lineto + 262 344 258 374 258 404 curveto + 260 402 lineto + 258 408 lineto + 256 412 lineto + 260 402 lineto + 256 388 lineto + 258 390 lineto + 260 396 lineto + 260 398 lineto + 260 426 264 456 274 482 curveto + 272 482 lineto + 270 476 lineto + 272 476 lineto + 278 496 286 514 296 530 curveto + 296 528 lineto + 294 526 lineto + 296 528 298 530 298 532 curveto + 304 540 310 546 316 554 curveto + 316 552 lineto + 318 556 lineto + 320 562 lineto + 320 568 lineto + 316 552 lineto + 296 544 lineto + 302 544 lineto + 308 546 lineto + 312 548 lineto + 312 550 lineto + 320 556 328 562 336 568 curveto + 334 566 lineto + 332 564 lineto + 332 566 lineto + 342 572 352 578 362 580 curveto + 360 580 lineto + 354 578 lineto + 356 578 lineto + 366 582 378 584 390 584 curveto + 388 584 lineto + 394 586 lineto + 398 588 lineto + 402 592 lineto + 382 584 lineto + 370 592 lineto + 374 588 lineto + 376 586 lineto + 382 584 lineto + 384 582 lineto + 394 582 404 580 414 576 curveto + 414 578 lineto + 408 580 lineto + 408 578 lineto + 418 576 426 572 432 566 curveto + 432 568 lineto + 428 570 lineto + 430 568 lineto + 436 564 442 560 448 554 curveto + 446 556 lineto + 450 554 lineto + 456 552 lineto + 442 560 lineto + 438 568 lineto + 440 562 lineto + 442 560 lineto + 444 558 lineto + 448 554 454 546 458 540 curveto + 456 544 lineto + 456 542 lineto + 464 532 470 522 474 510 curveto + 472 510 lineto + 470 516 lineto + 472 516 lineto + 474 504 476 494 478 484 curveto + 476 484 lineto + 478 478 lineto + 480 476 lineto + 484 472 lineto + 488 470 lineto + 494 468 lineto +closepath +%end path +fill +%new path + 524 476 moveto + 526 478 lineto + 528 484 lineto + 528 610 lineto + 526 616 lineto + 524 620 lineto + 520 624 lineto + 516 626 lineto + 510 628 lineto + 504 628 lineto + 504 626 lineto + 500 626 lineto + 500 628 lineto + 494 626 lineto + 492 624 lineto + 488 620 lineto + 486 616 lineto + 484 616 lineto + 476 596 468 578 460 560 curveto + 460 562 lineto + 458 556 lineto + 458 550 lineto + 460 544 lineto + 462 540 lineto + 464 540 lineto + 464 538 lineto + 462 542 lineto + 462 540 lineto + 470 530 474 520 478 508 curveto + 476 514 lineto + 480 504 482 494 482 484 curveto + 484 478 lineto + 486 476 lineto + 490 472 lineto + 492 470 lineto + 498 468 lineto + 510 468 lineto + 516 470 lineto + 520 472 lineto + 524 476 lineto +closepath +%end path +fill +) def + +/The_letter_D +( +newpath +%new path + 242 612 moveto + 240 608 lineto + 238 602 lineto + 236 602 lineto + 236 202 lineto + 238 202 lineto + 238 196 lineto + 240 190 lineto + 242 188 lineto + 246 184 lineto + 248 182 lineto + 254 180 lineto + 270 180 lineto + 276 182 lineto + 280 184 lineto + 284 188 lineto + 286 190 lineto + 288 196 lineto + 288 602 lineto + 286 608 lineto + 284 612 lineto + 280 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 264 618 lineto + 254 618 lineto + 254 620 lineto + 248 618 lineto + 246 616 lineto + 242 612 lineto +closepath +%end path +fill +%new path + 264 576 moveto + 364 576 lineto + 364 574 lineto + 388 574 410 562 426 544 curveto + 434 538 440 530 446 522 curveto + 470 484 480 438 480 394 curveto + 478 394 lineto + 478 350 468 308 444 272 curveto + 438 264 434 258 426 252 curveto + 410 234 386 222 362 222 curveto + 262 222 lineto + 262 180 lineto + 376 180 lineto + 410 180 442 196 466 220 curveto + 472 228 480 236 484 244 curveto + 516 288 530 342 530 396 curveto + 528 396 lineto + 528 452 514 508 482 554 curveto + 476 564 470 572 462 580 curveto + 438 604 408 620 374 620 curveto + 374 618 lineto + 262 618 lineto + 262 574 lineto +closepath +%end path +fill +%new path + 278 584 moveto + 280 586 lineto + 282 592 lineto + 284 594 lineto + 284 598 lineto + 282 596 lineto + 282 602 lineto + 280 608 lineto + 278 612 lineto + 274 616 lineto + 272 618 lineto + 266 620 lineto + 260 620 lineto + 258 618 lineto + 208 618 lineto + 208 620 lineto + 202 618 lineto + 200 616 lineto + 196 612 lineto + 194 608 lineto + 192 602 lineto + 190 602 lineto + 190 598 lineto + 192 598 lineto + 192 592 lineto + 194 586 lineto + 196 584 lineto + 200 580 lineto + 202 578 lineto + 208 576 lineto + 266 576 lineto + 272 578 lineto + 274 580 lineto + 278 584 lineto +closepath +%end path +fill +%new path + 306 584 moveto + 308 586 lineto + 310 592 lineto + 310 602 lineto + 308 608 lineto + 306 612 lineto + 302 616 lineto + 298 618 lineto + 292 620 lineto + 286 620 lineto + 286 618 lineto + 258 618 lineto + 260 620 lineto + 254 618 lineto + 250 616 lineto + 246 612 lineto + 244 608 lineto + 242 602 lineto + 242 592 lineto + 244 586 lineto + 246 584 lineto + 250 580 lineto + 254 578 lineto + 260 576 lineto + 292 576 lineto + 298 578 lineto + 302 580 lineto + 306 584 lineto +closepath +%end path +fill +%new path + 196 216 moveto + 194 212 lineto + 192 206 lineto + 190 206 lineto + 190 200 lineto + 192 202 lineto + 192 196 lineto + 194 190 lineto + 196 186 lineto + 200 182 lineto + 202 180 lineto + 272 180 lineto + 274 182 lineto + 278 186 lineto + 280 190 lineto + 282 196 lineto + 284 196 lineto + 284 202 lineto + 282 200 lineto + 282 206 lineto + 280 212 lineto + 278 216 lineto + 274 220 lineto + 272 222 lineto + 266 224 lineto + 260 224 lineto + 258 222 lineto + 208 222 lineto + 208 224 lineto + 202 222 lineto + 200 220 lineto + 196 216 lineto +closepath +%end path +fill +%new path + 246 216 moveto + 244 212 lineto + 242 206 lineto + 242 196 lineto + 244 190 lineto + 246 186 lineto + 250 182 lineto + 254 180 lineto + 298 180 lineto + 302 182 lineto + 306 186 lineto + 308 190 lineto + 310 196 lineto + 310 206 lineto + 308 212 lineto + 306 216 lineto + 302 220 lineto + 298 222 lineto + 292 224 lineto + 286 224 lineto + 286 222 lineto + 258 222 lineto + 260 224 lineto + 254 222 lineto + 250 220 lineto + 246 216 lineto +closepath +%end path +fill +) def + +/The_letter_E +( +newpath +%new path + 254 612 moveto + 252 608 lineto + 250 602 lineto + 248 602 lineto + 248 202 lineto + 250 202 lineto + 250 196 lineto + 252 190 lineto + 254 188 lineto + 258 184 lineto + 260 182 lineto + 266 180 lineto + 282 180 lineto + 288 182 lineto + 292 184 lineto + 296 188 lineto + 298 190 lineto + 300 196 lineto + 300 602 lineto + 298 608 lineto + 296 612 lineto + 292 616 lineto + 288 618 lineto + 282 620 lineto + 276 620 lineto + 276 618 lineto + 266 618 lineto + 266 620 lineto + 260 618 lineto + 258 616 lineto + 254 612 lineto +closepath +%end path +fill +%new path + 492 506 moveto + 498 506 lineto + 498 508 lineto + 510 508 lineto + 508 506 lineto + 514 508 lineto + 518 510 lineto + 522 514 lineto + 524 518 lineto + 526 524 lineto + 526 602 lineto + 524 608 lineto + 522 612 lineto + 518 616 lineto + 514 618 lineto + 508 620 lineto + 502 620 lineto + 502 618 lineto + 270 618 lineto + 272 620 lineto + 266 618 lineto + 262 616 lineto + 258 612 lineto + 256 608 lineto + 254 602 lineto + 254 592 lineto + 256 586 lineto + 258 582 lineto + 262 578 lineto + 266 576 lineto + 272 574 lineto + 278 574 lineto + 278 576 lineto + 498 576 lineto + 498 574 lineto + 504 576 lineto + 506 578 lineto + 510 582 lineto + 492 574 lineto + 478 582 lineto + 482 578 lineto + 486 576 lineto + 492 574 lineto + 478 582 lineto + 474 592 lineto + 476 586 lineto + 478 582 lineto + 474 592 lineto + 478 606 lineto + 476 604 lineto + 474 598 lineto + 474 524 lineto + 476 518 lineto + 478 514 lineto + 482 510 lineto + 486 508 lineto + 492 506 lineto +closepath +%end path +fill +%new path + 396 462 moveto + 394 458 lineto + 392 452 lineto + 392 406 lineto + 396 422 lineto + 416 430 lineto + 410 430 lineto + 408 428 lineto + 270 428 lineto + 272 430 lineto + 266 428 lineto + 262 426 lineto + 258 422 lineto + 256 418 lineto + 254 412 lineto + 254 402 lineto + 256 396 lineto + 258 392 lineto + 262 388 lineto + 266 386 lineto + 272 384 lineto + 278 384 lineto + 278 386 lineto + 428 386 lineto + 426 384 lineto + 432 386 lineto + 436 388 lineto + 440 392 lineto + 442 396 lineto + 444 402 lineto + 444 452 lineto + 442 458 lineto + 440 462 lineto + 436 466 lineto + 432 468 lineto + 426 470 lineto + 420 470 lineto + 420 468 lineto + 408 468 lineto + 410 470 lineto + 404 468 lineto + 400 466 lineto + 396 462 lineto +closepath +%end path +fill +%new path + 410 344 moveto + 416 344 lineto + 416 346 lineto + 428 346 lineto + 426 344 lineto + 432 346 lineto + 436 348 lineto + 440 352 lineto + 442 356 lineto + 444 362 lineto + 444 412 lineto + 442 418 lineto + 440 422 lineto + 436 426 lineto + 432 428 lineto + 426 430 lineto + 420 430 lineto + 420 428 lineto + 270 428 lineto + 272 430 lineto + 266 428 lineto + 262 426 lineto + 258 422 lineto + 256 418 lineto + 254 412 lineto + 254 402 lineto + 256 396 lineto + 258 392 lineto + 262 388 lineto + 266 386 lineto + 272 384 lineto + 278 384 lineto + 278 386 lineto + 416 386 lineto + 416 384 lineto + 422 386 lineto + 424 388 lineto + 428 392 lineto + 410 384 lineto + 396 392 lineto + 400 388 lineto + 404 386 lineto + 410 384 lineto + 396 392 lineto + 392 402 lineto + 394 396 lineto + 396 392 lineto + 392 402 lineto + 396 416 lineto + 394 414 lineto + 392 408 lineto + 392 362 lineto + 394 356 lineto + 396 352 lineto + 400 348 lineto + 404 346 lineto + 410 344 lineto +closepath +%end path +fill +%new path + 494 296 moveto + 492 292 lineto + 490 286 lineto + 490 200 lineto + 494 216 lineto + 514 224 lineto + 508 224 lineto + 506 222 lineto + 270 222 lineto + 272 224 lineto + 266 222 lineto + 262 220 lineto + 258 216 lineto + 256 212 lineto + 254 206 lineto + 254 196 lineto + 256 190 lineto + 258 188 lineto + 262 184 lineto + 266 182 lineto + 272 180 lineto + 524 180 lineto + 530 182 lineto + 534 184 lineto + 538 188 lineto + 540 190 lineto + 542 196 lineto + 542 286 lineto + 540 292 lineto + 538 296 lineto + 534 300 lineto + 530 302 lineto + 524 304 lineto + 518 304 lineto + 518 302 lineto + 506 302 lineto + 508 304 lineto + 502 302 lineto + 498 300 lineto + 494 296 lineto +closepath +%end path +fill +%new path + 290 584 moveto + 292 586 lineto + 294 592 lineto + 296 594 lineto + 296 598 lineto + 294 596 lineto + 294 602 lineto + 292 608 lineto + 290 612 lineto + 286 616 lineto + 284 618 lineto + 278 620 lineto + 272 620 lineto + 270 618 lineto + 214 618 lineto + 216 620 lineto + 210 618 lineto + 206 616 lineto + 202 612 lineto + 200 608 lineto + 198 602 lineto + 198 592 lineto + 200 586 lineto + 202 584 lineto + 206 580 lineto + 210 578 lineto + 216 576 lineto + 278 576 lineto + 284 578 lineto + 286 580 lineto + 290 584 lineto +closepath +%end path +fill +%new path + 320 584 moveto + 322 586 lineto + 324 592 lineto + 326 594 lineto + 326 598 lineto + 324 596 lineto + 324 602 lineto + 322 608 lineto + 320 612 lineto + 316 616 lineto + 314 618 lineto + 308 620 lineto + 302 620 lineto + 300 618 lineto + 270 618 lineto + 272 620 lineto + 266 618 lineto + 262 616 lineto + 258 612 lineto + 256 608 lineto + 254 602 lineto + 254 592 lineto + 256 586 lineto + 258 584 lineto + 262 580 lineto + 266 578 lineto + 272 576 lineto + 308 576 lineto + 314 578 lineto + 316 580 lineto + 320 584 lineto +closepath +%end path +fill +%new path + 202 216 moveto + 200 212 lineto + 198 206 lineto + 198 196 lineto + 200 190 lineto + 202 186 lineto + 206 182 lineto + 210 180 lineto + 284 180 lineto + 286 182 lineto + 290 186 lineto + 292 190 lineto + 294 196 lineto + 296 196 lineto + 296 202 lineto + 294 200 lineto + 294 206 lineto + 292 212 lineto + 290 216 lineto + 286 220 lineto + 284 222 lineto + 278 224 lineto + 272 224 lineto + 270 222 lineto + 214 222 lineto + 216 224 lineto + 210 222 lineto + 206 220 lineto + 202 216 lineto +closepath +%end path +fill +%new path + 258 216 moveto + 256 212 lineto + 254 206 lineto + 254 196 lineto + 256 190 lineto + 258 186 lineto + 262 182 lineto + 266 180 lineto + 314 180 lineto + 316 182 lineto + 320 186 lineto + 322 190 lineto + 324 196 lineto + 326 196 lineto + 326 202 lineto + 324 200 lineto + 324 206 lineto + 322 212 lineto + 320 216 lineto + 316 220 lineto + 314 222 lineto + 308 224 lineto + 302 224 lineto + 300 222 lineto + 270 222 lineto + 272 224 lineto + 266 222 lineto + 262 220 lineto + 258 216 lineto +closepath +%end path +fill +) def + +/The_letter_F +( +newpath +%new path + 258 612 moveto + 256 608 lineto + 254 602 lineto + 252 602 lineto + 252 202 lineto + 254 202 lineto + 254 196 lineto + 256 190 lineto + 258 188 lineto + 262 184 lineto + 264 182 lineto + 270 180 lineto + 286 180 lineto + 292 182 lineto + 296 184 lineto + 300 188 lineto + 302 190 lineto + 304 196 lineto + 304 602 lineto + 302 608 lineto + 300 612 lineto + 296 616 lineto + 292 618 lineto + 286 620 lineto + 280 620 lineto + 280 618 lineto + 270 618 lineto + 270 620 lineto + 264 618 lineto + 262 616 lineto + 258 612 lineto +closepath +%end path +fill +%new path + 500 506 moveto + 506 506 lineto + 506 508 lineto + 518 508 lineto + 516 506 lineto + 522 508 lineto + 526 510 lineto + 530 514 lineto + 532 518 lineto + 534 524 lineto + 534 602 lineto + 532 608 lineto + 530 612 lineto + 526 616 lineto + 522 618 lineto + 516 620 lineto + 510 620 lineto + 510 618 lineto + 274 618 lineto + 276 620 lineto + 270 618 lineto + 266 616 lineto + 262 612 lineto + 260 608 lineto + 258 602 lineto + 258 592 lineto + 260 586 lineto + 262 582 lineto + 266 578 lineto + 270 576 lineto + 276 574 lineto + 282 574 lineto + 282 576 lineto + 506 576 lineto + 506 574 lineto + 512 576 lineto + 514 578 lineto + 518 582 lineto + 500 574 lineto + 486 582 lineto + 490 578 lineto + 494 576 lineto + 500 574 lineto + 486 582 lineto + 482 592 lineto + 484 586 lineto + 486 582 lineto + 482 592 lineto + 486 606 lineto + 484 604 lineto + 482 598 lineto + 482 524 lineto + 484 518 lineto + 486 514 lineto + 490 510 lineto + 494 508 lineto + 500 506 lineto +closepath +%end path +fill +%new path + 404 454 moveto + 402 450 lineto + 400 444 lineto + 400 398 lineto + 404 414 lineto + 424 422 lineto + 418 422 lineto + 416 420 lineto + 274 420 lineto + 276 422 lineto + 270 420 lineto + 266 418 lineto + 262 414 lineto + 260 410 lineto + 258 404 lineto + 258 394 lineto + 260 388 lineto + 262 384 lineto + 266 380 lineto + 270 378 lineto + 276 376 lineto + 282 376 lineto + 282 378 lineto + 436 378 lineto + 434 376 lineto + 440 378 lineto + 444 380 lineto + 448 384 lineto + 450 388 lineto + 452 394 lineto + 452 444 lineto + 450 450 lineto + 448 454 lineto + 444 458 lineto + 440 460 lineto + 434 462 lineto + 428 462 lineto + 428 460 lineto + 416 460 lineto + 418 462 lineto + 412 460 lineto + 408 458 lineto + 404 454 lineto +closepath +%end path +fill +%new path + 418 336 moveto + 424 336 lineto + 424 338 lineto + 436 338 lineto + 434 336 lineto + 440 338 lineto + 444 340 lineto + 448 344 lineto + 450 348 lineto + 452 354 lineto + 452 404 lineto + 450 410 lineto + 448 414 lineto + 444 418 lineto + 440 420 lineto + 434 422 lineto + 428 422 lineto + 428 420 lineto + 274 420 lineto + 276 422 lineto + 270 420 lineto + 266 418 lineto + 262 414 lineto + 260 410 lineto + 258 404 lineto + 258 394 lineto + 260 388 lineto + 262 384 lineto + 266 380 lineto + 270 378 lineto + 276 376 lineto + 282 376 lineto + 282 378 lineto + 424 378 lineto + 424 376 lineto + 430 378 lineto + 432 380 lineto + 436 384 lineto + 418 376 lineto + 404 384 lineto + 408 380 lineto + 412 378 lineto + 418 376 lineto + 404 384 lineto + 400 394 lineto + 402 388 lineto + 404 384 lineto + 400 394 lineto + 404 408 lineto + 402 406 lineto + 400 400 lineto + 400 354 lineto + 402 348 lineto + 404 344 lineto + 408 340 lineto + 412 338 lineto + 418 336 lineto +closepath +%end path +fill +%new path + 294 584 moveto + 296 586 lineto + 298 592 lineto + 300 594 lineto + 300 598 lineto + 298 596 lineto + 298 602 lineto + 296 608 lineto + 294 612 lineto + 290 616 lineto + 288 618 lineto + 282 620 lineto + 276 620 lineto + 274 618 lineto + 216 618 lineto + 216 620 lineto + 210 618 lineto + 208 616 lineto + 204 612 lineto + 202 608 lineto + 200 602 lineto + 198 602 lineto + 198 598 lineto + 200 598 lineto + 200 592 lineto + 202 586 lineto + 204 584 lineto + 208 580 lineto + 210 578 lineto + 216 576 lineto + 282 576 lineto + 288 578 lineto + 290 580 lineto + 294 584 lineto +closepath +%end path +fill +%new path + 326 584 moveto + 328 586 lineto + 330 592 lineto + 330 602 lineto + 328 608 lineto + 326 612 lineto + 322 616 lineto + 318 618 lineto + 312 620 lineto + 306 620 lineto + 306 618 lineto + 274 618 lineto + 276 620 lineto + 270 618 lineto + 266 616 lineto + 262 612 lineto + 260 608 lineto + 258 602 lineto + 258 592 lineto + 260 586 lineto + 262 584 lineto + 266 580 lineto + 270 578 lineto + 276 576 lineto + 312 576 lineto + 318 578 lineto + 322 580 lineto + 326 584 lineto +closepath +%end path +fill +%new path + 204 216 moveto + 202 212 lineto + 200 206 lineto + 198 206 lineto + 198 200 lineto + 200 202 lineto + 200 196 lineto + 202 190 lineto + 204 186 lineto + 208 182 lineto + 210 180 lineto + 288 180 lineto + 290 182 lineto + 294 186 lineto + 296 190 lineto + 298 196 lineto + 300 196 lineto + 300 202 lineto + 298 200 lineto + 298 206 lineto + 296 212 lineto + 294 216 lineto + 290 220 lineto + 288 222 lineto + 282 224 lineto + 276 224 lineto + 274 222 lineto + 216 222 lineto + 216 224 lineto + 210 222 lineto + 208 220 lineto + 204 216 lineto +closepath +%end path +fill +%new path + 262 216 moveto + 260 212 lineto + 258 206 lineto + 258 196 lineto + 260 190 lineto + 262 186 lineto + 266 182 lineto + 270 180 lineto + 358 180 lineto + 362 182 lineto + 366 186 lineto + 368 190 lineto + 370 196 lineto + 370 206 lineto + 368 212 lineto + 366 216 lineto + 362 220 lineto + 358 222 lineto + 352 224 lineto + 346 224 lineto + 346 222 lineto + 274 222 lineto + 276 224 lineto + 270 222 lineto + 266 220 lineto + 262 216 lineto +closepath +%end path +fill +) def + +/The_letter_G +( +newpath +%new path + 470 468 moveto + 486 468 lineto + 492 470 lineto + 496 472 lineto + 500 476 lineto + 502 478 lineto + 504 484 lineto + 504 490 lineto + 502 492 lineto + 500 502 498 514 494 524 curveto + 496 524 lineto + 494 530 lineto + 492 530 lineto + 488 544 484 554 476 564 curveto + 478 564 lineto + 476 566 lineto + 474 568 lineto + 470 576 464 582 458 588 curveto + 460 586 lineto + 456 590 lineto + 454 592 lineto + 448 598 442 602 436 606 curveto + 438 606 lineto + 434 608 lineto + 426 614 418 618 408 620 curveto + 410 620 lineto + 404 622 lineto + 402 622 lineto + 392 626 380 628 370 628 curveto + 364 628 lineto + 364 626 lineto + 352 626 342 624 332 620 curveto + 334 622 lineto + 328 620 lineto + 326 618 lineto + 318 616 308 612 300 606 curveto + 298 604 lineto + 296 604 lineto + 290 598 282 592 276 586 curveto + 276 588 lineto + 272 584 lineto + 272 582 lineto + 264 574 258 566 252 558 curveto + 250 556 250 556 250 556 curveto + 252 558 lineto + 250 554 lineto + 248 554 lineto + 238 536 228 518 222 498 curveto + 224 500 lineto + 222 494 lineto + 220 492 lineto + 210 464 206 432 206 402 curveto + 208 402 lineto + 208 396 lineto + 208 364 212 332 222 304 curveto + 224 298 lineto + 230 278 240 260 250 242 curveto + 250 244 lineto + 252 240 lineto + 252 240 252 240 254 238 curveto + 260 230 266 222 274 214 curveto + 272 214 lineto + 276 210 lineto + 278 210 lineto + 284 204 292 198 298 192 curveto + 298 194 lineto + 300 192 lineto + 302 190 lineto + 310 184 320 180 328 180 curveto + 334 178 lineto + 344 174 354 172 366 172 curveto + 370 172 lineto + 372 174 lineto + 382 174 392 176 402 178 curveto + 400 178 lineto + 406 180 lineto + 408 180 lineto + 416 182 422 186 430 190 curveto + 428 188 lineto + 432 190 lineto + 432 192 lineto + 438 196 444 200 448 204 curveto + 452 208 lineto + 458 214 464 222 468 228 curveto + 470 230 lineto + 470 232 lineto + 478 244 486 258 490 272 curveto + 492 278 lineto + 500 302 504 328 504 354 curveto + 504 358 lineto + 502 364 lineto + 500 368 lineto + 496 372 lineto + 492 374 lineto + 486 376 lineto + 480 376 lineto + 480 374 lineto + 468 374 lineto + 470 376 lineto + 464 374 lineto + 460 372 lineto + 456 368 lineto + 454 364 lineto + 452 358 lineto + 452 330 448 302 440 276 curveto + 440 278 lineto + 442 284 lineto + 442 282 lineto + 438 268 432 256 424 244 curveto + 424 246 lineto + 426 248 lineto + 422 242 416 236 412 230 curveto + 412 232 lineto + 410 228 lineto + 408 222 lineto + 408 216 lineto + 412 232 lineto + 432 240 lineto + 426 240 lineto + 420 238 lineto + 416 236 lineto + 416 234 lineto + 412 230 406 226 402 224 curveto + 404 224 lineto + 406 226 lineto + 400 222 392 218 386 216 curveto + 388 218 lineto + 394 220 lineto + 392 218 lineto + 384 216 376 214 366 214 curveto + 366 216 lineto + 360 214 lineto + 358 212 lineto + 354 208 lineto + 372 216 lineto + 386 208 lineto + 382 212 lineto + 378 214 lineto + 372 216 lineto + 362 216 352 218 344 220 curveto + 350 218 lineto + 342 222 332 226 326 230 curveto + 330 228 lineto + 328 228 lineto + 322 234 314 240 308 246 curveto + 310 244 lineto + 306 246 lineto + 300 248 lineto + 314 240 lineto + 318 232 lineto + 316 238 lineto + 314 240 lineto + 312 242 lineto + 304 248 298 258 292 266 curveto + 294 262 lineto + 294 264 lineto + 292 264 lineto + 282 282 274 298 268 316 curveto + 270 316 lineto + 272 310 lineto + 270 310 lineto + 260 340 256 372 256 404 curveto + 258 402 lineto + 256 408 lineto + 254 412 lineto + 258 402 lineto + 254 388 lineto + 256 390 lineto + 258 396 lineto + 258 398 lineto + 258 428 262 460 272 488 curveto + 270 482 lineto + 276 502 284 518 296 536 curveto + 294 536 lineto + 292 532 lineto + 294 534 lineto + 300 542 306 550 314 558 curveto + 316 560 lineto + 318 566 lineto + 318 572 lineto + 314 558 lineto + 294 550 lineto + 300 550 lineto + 306 552 lineto + 310 554 lineto + 316 560 324 566 330 570 curveto + 326 568 lineto + 328 568 lineto + 336 574 344 578 352 582 curveto + 352 580 lineto + 346 578 lineto + 346 580 lineto + 356 582 364 584 374 584 curveto + 380 586 lineto + 382 588 lineto + 386 592 lineto + 368 584 lineto + 354 592 lineto + 358 588 lineto + 362 586 lineto + 368 584 lineto + 368 582 lineto + 378 582 388 580 396 578 curveto + 394 578 lineto + 388 580 lineto + 390 580 lineto + 398 578 404 574 410 570 curveto + 406 572 lineto + 408 572 lineto + 414 568 418 564 424 558 curveto + 422 560 lineto + 426 558 lineto + 432 556 lineto + 418 564 lineto + 414 572 lineto + 416 566 lineto + 418 564 lineto + 420 562 lineto + 424 558 430 552 434 544 curveto + 432 546 lineto + 430 548 lineto + 432 548 lineto + 438 538 444 526 448 514 curveto + 446 520 lineto + 450 508 452 496 454 484 curveto + 452 484 lineto + 454 478 lineto + 456 476 lineto + 460 472 lineto + 464 470 lineto + 470 468 lineto +closepath +%end path +fill +%new path + 500 476 moveto + 502 478 lineto + 504 484 lineto + 504 610 lineto + 502 616 lineto + 500 620 lineto + 496 624 lineto + 492 626 lineto + 486 628 lineto + 480 628 lineto + 480 626 lineto + 476 626 lineto + 476 628 lineto + 470 626 lineto + 468 624 lineto + 464 620 lineto + 462 616 lineto + 460 616 lineto + 452 598 444 580 436 562 curveto + 436 564 lineto + 434 558 lineto + 434 552 lineto + 436 546 lineto + 438 544 lineto + 444 534 450 524 454 512 curveto + 452 512 lineto + 450 518 lineto + 452 518 lineto + 456 506 458 494 458 484 curveto + 460 478 lineto + 462 476 lineto + 466 472 lineto + 468 470 lineto + 474 468 lineto + 486 468 lineto + 492 470 lineto + 496 472 lineto + 500 476 lineto +closepath +%end path +fill +%new path + 456 368 moveto + 454 364 lineto + 452 358 lineto + 452 196 lineto + 454 190 lineto + 456 188 lineto + 460 184 lineto + 464 182 lineto + 470 180 lineto + 486 180 lineto + 492 182 lineto + 496 184 lineto + 500 188 lineto + 502 190 lineto + 504 196 lineto + 504 358 lineto + 502 364 lineto + 500 368 lineto + 496 372 lineto + 492 374 lineto + 486 376 lineto + 480 376 lineto + 480 374 lineto + 468 374 lineto + 470 376 lineto + 464 374 lineto + 460 372 lineto + 456 368 lineto +closepath +%end path +fill +%new path + 494 340 moveto + 496 342 lineto + 498 348 lineto + 498 358 lineto + 496 364 lineto + 494 368 lineto + 490 372 lineto + 486 374 lineto + 480 376 lineto + 474 376 lineto + 474 374 lineto + 408 374 lineto + 410 376 lineto + 404 374 lineto + 400 372 lineto + 396 368 lineto + 394 364 lineto + 392 358 lineto + 392 348 lineto + 394 342 lineto + 396 340 lineto + 400 336 lineto + 404 334 lineto + 410 332 lineto + 480 332 lineto + 486 334 lineto + 490 336 lineto + 494 340 lineto +closepath +%end path +fill +%new path + 532 340 moveto + 534 342 lineto + 536 348 lineto + 538 350 lineto + 538 354 lineto + 536 352 lineto + 536 358 lineto + 534 364 lineto + 532 368 lineto + 528 372 lineto + 526 374 lineto + 520 376 lineto + 514 376 lineto + 512 374 lineto + 474 374 lineto + 474 376 lineto + 468 374 lineto + 466 372 lineto + 462 368 lineto + 460 364 lineto + 458 358 lineto + 456 358 lineto + 456 354 lineto + 458 354 lineto + 458 348 lineto + 460 342 lineto + 462 340 lineto + 466 336 lineto + 468 334 lineto + 474 332 lineto + 520 332 lineto + 526 334 lineto + 528 336 lineto + 532 340 lineto +closepath +%end path +fill +) def + +/The_letter_H +( +newpath +%new path + 246 612 moveto + 244 608 lineto + 242 602 lineto + 240 602 lineto + 240 202 lineto + 242 202 lineto + 242 196 lineto + 244 190 lineto + 246 188 lineto + 250 184 lineto + 252 182 lineto + 258 180 lineto + 274 180 lineto + 280 182 lineto + 284 184 lineto + 288 188 lineto + 290 190 lineto + 292 196 lineto + 292 602 lineto + 290 608 lineto + 288 612 lineto + 284 616 lineto + 280 618 lineto + 274 620 lineto + 268 620 lineto + 268 618 lineto + 258 618 lineto + 258 620 lineto + 252 618 lineto + 250 616 lineto + 246 612 lineto +closepath +%end path +fill +%new path + 448 612 moveto + 446 608 lineto + 444 602 lineto + 444 196 lineto + 446 190 lineto + 448 188 lineto + 452 184 lineto + 456 182 lineto + 462 180 lineto + 478 180 lineto + 484 182 lineto + 488 184 lineto + 492 188 lineto + 494 190 lineto + 496 196 lineto + 496 602 lineto + 494 608 lineto + 492 612 lineto + 488 616 lineto + 484 618 lineto + 478 620 lineto + 472 620 lineto + 472 618 lineto + 460 618 lineto + 462 620 lineto + 456 618 lineto + 452 616 lineto + 448 612 lineto +closepath +%end path +fill +%new path + 268 386 moveto + 470 386 lineto + 470 430 lineto + 468 428 lineto + 266 428 lineto + 266 384 lineto +closepath +%end path +fill +%new path + 282 584 moveto + 284 586 lineto + 286 592 lineto + 288 594 lineto + 288 598 lineto + 286 596 lineto + 286 602 lineto + 284 608 lineto + 282 612 lineto + 278 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 262 618 lineto + 210 618 lineto + 210 620 lineto + 204 618 lineto + 202 616 lineto + 198 612 lineto + 196 608 lineto + 194 602 lineto + 192 602 lineto + 192 598 lineto + 194 598 lineto + 194 592 lineto + 196 586 lineto + 198 584 lineto + 202 580 lineto + 204 578 lineto + 210 576 lineto + 270 576 lineto + 276 578 lineto + 278 580 lineto + 282 584 lineto +closepath +%end path +fill +%new path + 334 584 moveto + 336 586 lineto + 338 592 lineto + 340 594 lineto + 340 598 lineto + 338 596 lineto + 338 602 lineto + 336 608 lineto + 334 612 lineto + 330 616 lineto + 328 618 lineto + 322 620 lineto + 316 620 lineto + 314 618 lineto + 262 618 lineto + 264 620 lineto + 258 618 lineto + 254 616 lineto + 250 612 lineto + 248 608 lineto + 246 602 lineto + 246 592 lineto + 248 586 lineto + 250 584 lineto + 254 580 lineto + 258 578 lineto + 264 576 lineto + 322 576 lineto + 328 578 lineto + 330 580 lineto + 334 584 lineto +closepath +%end path +fill +%new path + 198 216 moveto + 196 212 lineto + 194 206 lineto + 192 206 lineto + 192 200 lineto + 194 202 lineto + 194 196 lineto + 196 190 lineto + 198 186 lineto + 202 182 lineto + 204 180 lineto + 276 180 lineto + 278 182 lineto + 282 186 lineto + 284 190 lineto + 286 196 lineto + 288 196 lineto + 288 202 lineto + 286 200 lineto + 286 206 lineto + 284 212 lineto + 282 216 lineto + 278 220 lineto + 276 222 lineto + 270 224 lineto + 264 224 lineto + 262 222 lineto + 210 222 lineto + 210 224 lineto + 204 222 lineto + 202 220 lineto + 198 216 lineto +closepath +%end path +fill +%new path + 250 216 moveto + 248 212 lineto + 246 206 lineto + 246 196 lineto + 248 190 lineto + 250 186 lineto + 254 182 lineto + 258 180 lineto + 328 180 lineto + 330 182 lineto + 334 186 lineto + 336 190 lineto + 338 196 lineto + 340 196 lineto + 340 202 lineto + 338 200 lineto + 338 206 lineto + 336 212 lineto + 334 216 lineto + 330 220 lineto + 328 222 lineto + 322 224 lineto + 316 224 lineto + 314 222 lineto + 262 222 lineto + 264 224 lineto + 258 222 lineto + 254 220 lineto + 250 216 lineto +closepath +%end path +fill +%new path + 486 584 moveto + 488 586 lineto + 490 592 lineto + 490 602 lineto + 488 608 lineto + 486 612 lineto + 482 616 lineto + 478 618 lineto + 472 620 lineto + 466 620 lineto + 466 618 lineto + 414 618 lineto + 414 620 lineto + 408 618 lineto + 406 616 lineto + 402 612 lineto + 400 608 lineto + 398 602 lineto + 396 602 lineto + 396 598 lineto + 398 598 lineto + 398 592 lineto + 400 586 lineto + 402 584 lineto + 406 580 lineto + 408 578 lineto + 414 576 lineto + 472 576 lineto + 478 578 lineto + 482 580 lineto + 486 584 lineto +closepath +%end path +fill +%new path + 538 584 moveto + 540 586 lineto + 542 592 lineto + 544 594 lineto + 544 598 lineto + 542 596 lineto + 542 602 lineto + 540 608 lineto + 538 612 lineto + 534 616 lineto + 532 618 lineto + 526 620 lineto + 520 620 lineto + 518 618 lineto + 466 618 lineto + 466 620 lineto + 460 618 lineto + 458 616 lineto + 454 612 lineto + 452 608 lineto + 450 602 lineto + 448 602 lineto + 448 598 lineto + 450 598 lineto + 450 592 lineto + 452 586 lineto + 454 584 lineto + 458 580 lineto + 460 578 lineto + 466 576 lineto + 526 576 lineto + 532 578 lineto + 534 580 lineto + 538 584 lineto +closepath +%end path +fill +%new path + 402 216 moveto + 400 212 lineto + 398 206 lineto + 396 206 lineto + 396 200 lineto + 398 202 lineto + 398 196 lineto + 400 190 lineto + 402 186 lineto + 406 182 lineto + 408 180 lineto + 478 180 lineto + 482 182 lineto + 486 186 lineto + 488 190 lineto + 490 196 lineto + 490 206 lineto + 488 212 lineto + 486 216 lineto + 482 220 lineto + 478 222 lineto + 472 224 lineto + 466 224 lineto + 466 222 lineto + 414 222 lineto + 414 224 lineto + 408 222 lineto + 406 220 lineto + 402 216 lineto +closepath +%end path +fill +%new path + 454 216 moveto + 452 212 lineto + 450 206 lineto + 448 206 lineto + 448 200 lineto + 450 202 lineto + 450 196 lineto + 452 190 lineto + 454 186 lineto + 458 182 lineto + 460 180 lineto + 532 180 lineto + 534 182 lineto + 538 186 lineto + 540 190 lineto + 542 196 lineto + 544 196 lineto + 544 202 lineto + 542 200 lineto + 542 206 lineto + 540 212 lineto + 538 216 lineto + 534 220 lineto + 532 222 lineto + 526 224 lineto + 520 224 lineto + 518 222 lineto + 466 222 lineto + 466 224 lineto + 460 222 lineto + 458 220 lineto + 454 216 lineto +closepath +%end path +fill +) def + +/The_letter_I +( +newpath +%new path + 348 612 moveto + 346 608 lineto + 344 602 lineto + 342 602 lineto + 342 202 lineto + 344 202 lineto + 344 196 lineto + 346 190 lineto + 348 188 lineto + 352 184 lineto + 354 182 lineto + 360 180 lineto + 376 180 lineto + 382 182 lineto + 386 184 lineto + 390 188 lineto + 392 190 lineto + 394 196 lineto + 394 602 lineto + 392 608 lineto + 390 612 lineto + 386 616 lineto + 382 618 lineto + 376 620 lineto + 370 620 lineto + 370 618 lineto + 360 618 lineto + 360 620 lineto + 354 618 lineto + 352 616 lineto + 348 612 lineto +closepath +%end path +fill +%new path + 384 584 moveto + 386 586 lineto + 388 592 lineto + 390 594 lineto + 390 598 lineto + 388 596 lineto + 388 602 lineto + 386 608 lineto + 384 612 lineto + 380 616 lineto + 378 618 lineto + 372 620 lineto + 366 620 lineto + 364 618 lineto + 252 618 lineto + 252 620 lineto + 246 618 lineto + 244 616 lineto + 240 612 lineto + 238 608 lineto + 236 602 lineto + 234 602 lineto + 234 598 lineto + 236 598 lineto + 236 592 lineto + 238 586 lineto + 240 584 lineto + 244 580 lineto + 246 578 lineto + 252 576 lineto + 372 576 lineto + 378 578 lineto + 380 580 lineto + 384 584 lineto +closepath +%end path +fill +%new path + 496 584 moveto + 498 586 lineto + 500 592 lineto + 502 594 lineto + 502 598 lineto + 500 596 lineto + 500 602 lineto + 498 608 lineto + 496 612 lineto + 492 616 lineto + 490 618 lineto + 484 620 lineto + 478 620 lineto + 476 618 lineto + 364 618 lineto + 366 620 lineto + 360 618 lineto + 356 616 lineto + 352 612 lineto + 350 608 lineto + 348 602 lineto + 348 592 lineto + 350 586 lineto + 352 584 lineto + 356 580 lineto + 360 578 lineto + 366 576 lineto + 484 576 lineto + 490 578 lineto + 492 580 lineto + 496 584 lineto +closepath +%end path +fill +%new path + 240 216 moveto + 238 212 lineto + 236 206 lineto + 234 206 lineto + 234 200 lineto + 236 202 lineto + 236 196 lineto + 238 190 lineto + 240 186 lineto + 244 182 lineto + 246 180 lineto + 378 180 lineto + 380 182 lineto + 384 186 lineto + 386 190 lineto + 388 196 lineto + 390 196 lineto + 390 202 lineto + 388 200 lineto + 388 206 lineto + 386 212 lineto + 384 216 lineto + 380 220 lineto + 378 222 lineto + 372 224 lineto + 366 224 lineto + 364 222 lineto + 252 222 lineto + 252 224 lineto + 246 222 lineto + 244 220 lineto + 240 216 lineto +closepath +%end path +fill +%new path + 352 216 moveto + 350 212 lineto + 348 206 lineto + 348 196 lineto + 350 190 lineto + 352 186 lineto + 356 182 lineto + 360 180 lineto + 490 180 lineto + 492 182 lineto + 496 186 lineto + 498 190 lineto + 500 196 lineto + 502 196 lineto + 502 202 lineto + 500 200 lineto + 500 206 lineto + 498 212 lineto + 496 216 lineto + 492 220 lineto + 490 222 lineto + 484 224 lineto + 478 224 lineto + 476 222 lineto + 364 222 lineto + 366 224 lineto + 360 222 lineto + 356 220 lineto + 352 216 lineto +closepath +%end path +fill +) def + +/The_letter_J +( +newpath +%new path + 426 612 moveto + 424 608 lineto + 422 602 lineto + 422 274 lineto + 422 266 420 260 418 252 curveto + 420 254 lineto + 422 260 lineto + 420 258 lineto + 418 252 416 248 412 242 curveto + 414 244 lineto + 416 246 lineto + 414 246 lineto + 412 240 408 236 404 234 curveto + 406 234 lineto + 404 232 lineto + 402 226 lineto + 402 220 lineto + 406 234 lineto + 424 242 lineto + 418 242 lineto + 412 240 lineto + 410 238 lineto + 408 238 lineto + 406 236 406 234 404 232 curveto + 400 230 398 228 396 226 curveto + 396 228 lineto + 400 230 lineto + 398 228 lineto + 392 224 384 220 376 218 curveto + 382 220 lineto + 370 216 360 214 348 214 curveto + 348 216 lineto + 342 214 lineto + 340 212 lineto + 336 208 lineto + 334 204 lineto + 332 198 lineto + 330 198 lineto + 330 192 lineto + 332 194 lineto + 332 188 lineto + 334 182 lineto + 336 180 lineto + 340 176 lineto + 342 174 lineto + 348 172 lineto + 354 172 lineto + 356 174 lineto + 370 174 382 176 396 180 curveto + 402 180 lineto + 410 184 418 188 426 192 curveto + 428 194 lineto + 430 194 lineto + 432 196 434 198 436 200 curveto + 440 202 442 204 444 206 curveto + 442 206 lineto + 446 210 lineto + 448 210 lineto + 452 214 456 218 458 222 curveto + 460 224 lineto + 460 226 lineto + 464 232 466 236 468 242 curveto + 470 248 lineto + 472 256 474 262 474 270 curveto + 474 602 lineto + 472 608 lineto + 470 612 lineto + 466 616 lineto + 462 618 lineto + 456 620 lineto + 450 620 lineto + 450 618 lineto + 438 618 lineto + 440 620 lineto + 434 618 lineto + 430 616 lineto + 426 612 lineto +closepath +%end path +fill +%new path + 464 584 moveto + 466 586 lineto + 468 592 lineto + 468 602 lineto + 466 608 lineto + 464 612 lineto + 460 616 lineto + 456 618 lineto + 450 620 lineto + 444 620 lineto + 444 618 lineto + 350 618 lineto + 352 620 lineto + 346 618 lineto + 342 616 lineto + 338 612 lineto + 336 608 lineto + 334 602 lineto + 334 592 lineto + 336 586 lineto + 338 584 lineto + 342 580 lineto + 346 578 lineto + 352 576 lineto + 450 576 lineto + 456 578 lineto + 460 580 lineto + 464 584 lineto +closepath +%end path +fill +%new path + 520 584 moveto + 522 586 lineto + 524 592 lineto + 524 602 lineto + 522 608 lineto + 520 612 lineto + 516 616 lineto + 512 618 lineto + 506 620 lineto + 500 620 lineto + 500 618 lineto + 444 618 lineto + 444 620 lineto + 438 618 lineto + 436 616 lineto + 432 612 lineto + 430 608 lineto + 428 602 lineto + 426 602 lineto + 426 598 lineto + 428 598 lineto + 428 592 lineto + 430 586 lineto + 432 584 lineto + 436 580 lineto + 438 578 lineto + 444 576 lineto + 506 576 lineto + 512 578 lineto + 516 580 lineto + 520 584 lineto +closepath +%end path +fill +%new path + 368 208 moveto + 364 212 lineto + 360 214 lineto + 354 216 lineto + 338 216 322 218 308 224 curveto + 308 222 lineto + 314 220 lineto + 314 222 lineto + 306 224 298 228 292 232 curveto + 292 230 lineto + 296 228 lineto + 294 230 lineto + 292 232 288 234 286 236 curveto + 284 238 lineto + 278 240 lineto + 290 232 lineto + 294 222 lineto + 292 228 lineto + 290 232 lineto + 288 236 286 238 284 240 curveto + 286 236 lineto + 286 238 lineto + 284 240 282 244 280 248 curveto + 282 246 lineto + 284 240 lineto + 282 242 lineto + 280 246 280 252 280 256 curveto + 282 256 lineto + 280 262 lineto + 278 264 lineto + 274 268 lineto + 270 270 lineto + 264 272 lineto + 248 272 lineto + 242 270 lineto + 238 268 lineto + 234 264 lineto + 232 262 lineto + 230 256 lineto + 230 250 lineto + 232 248 lineto + 232 242 232 238 234 232 curveto + 234 234 lineto + 236 228 lineto + 236 226 lineto + 238 222 240 220 242 216 curveto + 240 216 lineto + 242 214 lineto + 244 212 lineto + 246 210 248 208 250 204 curveto + 250 206 lineto + 254 202 lineto + 254 200 lineto + 258 198 260 196 264 192 curveto + 264 194 lineto + 266 192 lineto + 268 190 lineto + 274 186 282 182 290 180 curveto + 296 180 lineto + 312 174 332 172 350 172 curveto + 354 172 lineto + 360 174 lineto + 364 176 lineto + 368 180 lineto + 370 182 lineto + 372 188 lineto + 372 198 lineto + 370 204 lineto + 368 208 lineto +closepath +%end path +fill +%new path + 296 256 moveto + 294 256 lineto + 294 260 lineto + 292 266 lineto + 292 268 290 268 290 270 curveto + 292 268 lineto + 290 272 lineto + 288 272 lineto + 288 272 288 274 286 274 curveto + 288 272 lineto + 284 276 lineto + 282 278 lineto + 282 278 lineto + 280 280 lineto + 278 282 lineto + 276 282 lineto + 270 284 lineto + 268 286 266 286 264 286 curveto + 266 284 lineto + 258 284 lineto + 258 284 256 284 254 282 curveto + 256 284 lineto + 250 282 lineto + 248 280 lineto + 246 280 lineto + 244 278 lineto + 242 278 lineto + 242 276 lineto + 238 272 lineto + 236 272 236 270 236 270 curveto + 236 272 lineto + 234 268 lineto + 234 266 232 266 232 264 curveto + 234 266 lineto + 232 260 lineto + 230 258 lineto + 230 250 lineto + 232 244 lineto + 234 240 lineto + 236 240 lineto + 240 236 244 232 248 228 curveto + 246 228 lineto + 250 224 lineto + 254 222 lineto + 260 220 lineto + 266 220 lineto + 266 222 lineto + 270 222 lineto + 276 224 lineto + 278 224 lineto + 278 224 280 224 280 226 curveto + 280 224 lineto + 282 226 lineto + 284 228 lineto + 288 232 lineto + 290 234 290 234 290 234 curveto + 292 236 lineto + 292 238 lineto + 292 238 294 240 294 240 curveto + 292 240 lineto + 294 246 lineto + 296 246 lineto + 296 256 lineto +closepath +%end path +fill +) def + +/The_letter_K +( +newpath +%new path + 248 612 moveto + 246 608 lineto + 244 602 lineto + 242 602 lineto + 242 202 lineto + 244 202 lineto + 244 196 lineto + 246 190 lineto + 248 188 lineto + 252 184 lineto + 254 182 lineto + 260 180 lineto + 266 180 lineto + 272 182 lineto + 276 184 lineto + 280 188 lineto + 282 190 lineto + 284 196 lineto + 284 602 lineto + 282 608 lineto + 280 612 lineto + 276 616 lineto + 272 618 lineto + 266 620 lineto + 260 620 lineto + 260 620 lineto + 254 618 lineto + 252 616 lineto + 248 612 lineto +closepath +%end path +fill +%new path + 264 294 moveto + 346 396 426 498 508 600 curveto + 510 602 510 606 510 608 curveto + 508 608 lineto + 508 610 506 614 504 616 curveto + 502 618 500 620 496 620 curveto + 496 618 lineto + 484 618 lineto + 476 618 470 616 464 610 curveto + 464 610 464 608 462 608 curveto + 396 524 328 440 262 356 curveto + 262 292 lineto +closepath +%end path +fill +%new path + 340 422 moveto + 384 344 428 266 472 188 curveto + 474 186 474 186 476 184 curveto + 480 180 484 180 490 180 curveto + 502 180 lineto + 506 180 508 182 510 184 curveto + 514 186 514 190 514 194 curveto + 512 194 lineto + 512 200 lineto + 462 286 414 372 366 456 curveto + 366 454 lineto + 356 444 348 432 338 422 curveto +closepath +%end path +fill +%new path + 280 584 moveto + 282 586 lineto + 284 592 lineto + 284 598 lineto + 282 600 lineto + 282 604 lineto + 284 602 lineto + 282 608 lineto + 280 612 lineto + 276 616 lineto + 272 618 lineto + 266 620 lineto + 260 620 lineto + 260 618 lineto + 214 618 lineto + 214 620 lineto + 208 618 lineto + 206 616 lineto + 202 612 lineto + 200 608 lineto + 198 602 lineto + 196 602 lineto + 196 598 lineto + 198 598 lineto + 198 592 lineto + 200 586 lineto + 202 584 lineto + 206 580 lineto + 208 578 lineto + 214 576 lineto + 266 576 lineto + 272 578 lineto + 276 580 lineto + 280 584 lineto +closepath +%end path +fill +%new path + 324 584 moveto + 326 586 lineto + 328 592 lineto + 330 594 lineto + 330 598 lineto + 328 596 lineto + 328 602 lineto + 326 608 lineto + 324 612 lineto + 320 616 lineto + 318 618 lineto + 312 620 lineto + 306 620 lineto + 304 618 lineto + 260 618 lineto + 260 620 lineto + 254 618 lineto + 252 616 lineto + 248 612 lineto + 246 608 lineto + 244 602 lineto + 242 602 lineto + 242 598 lineto + 244 598 lineto + 244 592 lineto + 246 586 lineto + 248 584 lineto + 252 580 lineto + 254 578 lineto + 260 576 lineto + 312 576 lineto + 318 578 lineto + 320 580 lineto + 324 584 lineto +closepath +%end path +fill +%new path + 202 216 moveto + 200 212 lineto + 198 206 lineto + 196 206 lineto + 196 200 lineto + 198 202 lineto + 198 196 lineto + 200 190 lineto + 202 186 lineto + 206 182 lineto + 208 180 lineto + 272 180 lineto + 276 182 lineto + 280 186 lineto + 282 190 lineto + 284 196 lineto + 284 206 lineto + 282 212 lineto + 280 216 lineto + 276 220 lineto + 272 222 lineto + 266 224 lineto + 260 224 lineto + 260 222 lineto + 214 222 lineto + 214 224 lineto + 208 222 lineto + 206 220 lineto + 202 216 lineto +closepath +%end path +fill +%new path + 248 216 moveto + 246 212 lineto + 244 206 lineto + 244 196 lineto + 246 190 lineto + 248 186 lineto + 252 182 lineto + 254 180 lineto + 318 180 lineto + 320 182 lineto + 324 186 lineto + 326 190 lineto + 328 196 lineto + 330 196 lineto + 330 202 lineto + 328 200 lineto + 328 206 lineto + 326 212 lineto + 324 216 lineto + 320 220 lineto + 318 222 lineto + 312 224 lineto + 306 224 lineto + 304 222 lineto + 260 222 lineto + 260 224 lineto + 254 222 lineto + 252 220 lineto + 248 216 lineto +closepath +%end path +fill +%new path + 494 584 moveto + 496 586 496 586 498 588 curveto + 496 588 lineto + 498 590 lineto + 500 596 lineto + 500 602 lineto + 498 608 lineto + 496 612 lineto + 492 616 lineto + 490 618 lineto + 484 620 lineto + 478 620 lineto + 476 618 lineto + 422 618 lineto + 424 620 lineto + 418 618 lineto + 414 616 lineto + 410 612 lineto + 408 608 lineto + 406 602 lineto + 406 592 lineto + 408 586 lineto + 410 584 lineto + 414 580 lineto + 418 578 lineto + 424 576 lineto + 480 576 lineto + 486 578 lineto + 490 580 lineto + 494 584 lineto +closepath +%end path +fill +%new path + 524 584 moveto + 526 586 lineto + 528 592 lineto + 530 594 lineto + 530 598 lineto + 528 596 lineto + 528 602 lineto + 526 608 lineto + 524 612 lineto + 520 616 lineto + 518 618 lineto + 512 620 lineto + 506 620 lineto + 504 618 lineto + 476 618 lineto + 478 620 lineto + 472 618 lineto + 468 616 lineto + 464 612 lineto + 464 610 lineto + 462 608 462 608 460 606 curveto + 462 608 lineto + 460 604 lineto + 458 598 lineto + 458 592 lineto + 460 586 lineto + 462 584 lineto + 466 580 lineto + 468 578 lineto + 474 576 lineto + 512 576 lineto + 518 578 lineto + 520 580 lineto + 524 584 lineto +closepath +%end path +fill +%new path + 428 216 moveto + 426 212 lineto + 424 206 lineto + 422 206 lineto + 422 200 lineto + 424 202 lineto + 424 196 lineto + 426 190 lineto + 428 186 lineto + 432 182 lineto + 434 180 lineto + 498 180 lineto + 500 182 lineto + 504 186 lineto + 506 190 lineto + 508 196 lineto + 508 202 lineto + 506 208 lineto + 506 210 504 212 504 214 curveto + 504 212 lineto + 502 216 lineto + 498 220 lineto + 496 222 lineto + 490 224 lineto + 484 224 lineto + 482 222 lineto + 440 222 lineto + 440 224 lineto + 434 222 lineto + 432 220 lineto + 428 216 lineto +closepath +%end path +fill +%new path + 470 216 moveto + 468 212 lineto + 466 206 lineto + 466 200 lineto + 468 194 lineto + 470 194 lineto + 470 192 472 190 472 188 curveto + 470 190 lineto + 472 186 lineto + 476 182 lineto + 480 180 lineto + 526 180 lineto + 528 182 lineto + 532 186 lineto + 534 190 lineto + 536 196 lineto + 538 196 lineto + 538 202 lineto + 536 200 lineto + 536 206 lineto + 534 212 lineto + 532 216 lineto + 528 220 lineto + 526 222 lineto + 520 224 lineto + 514 224 lineto + 512 222 lineto + 482 222 lineto + 484 224 lineto + 478 222 lineto + 474 220 lineto + 470 216 lineto +closepath +%end path +fill +) def + +/The_letter_L +( +newpath +%new path + 262 612 moveto + 260 608 lineto + 258 602 lineto + 256 602 lineto + 256 202 lineto + 258 202 lineto + 258 196 lineto + 260 190 lineto + 262 188 lineto + 266 184 lineto + 268 182 lineto + 274 180 lineto + 290 180 lineto + 296 182 lineto + 300 184 lineto + 304 188 lineto + 306 190 lineto + 308 196 lineto + 308 602 lineto + 306 608 lineto + 304 612 lineto + 300 616 lineto + 296 618 lineto + 290 620 lineto + 284 620 lineto + 284 618 lineto + 274 618 lineto + 274 620 lineto + 268 618 lineto + 266 616 lineto + 262 612 lineto +closepath +%end path +fill +%new path + 484 294 moveto + 482 292 lineto + 480 286 lineto + 480 200 lineto + 484 216 lineto + 504 224 lineto + 498 224 lineto + 496 222 lineto + 278 222 lineto + 280 224 lineto + 274 222 lineto + 270 220 lineto + 266 216 lineto + 264 212 lineto + 262 206 lineto + 262 196 lineto + 264 190 lineto + 266 188 lineto + 270 184 lineto + 274 182 lineto + 280 180 lineto + 514 180 lineto + 520 182 lineto + 524 184 lineto + 528 188 lineto + 530 190 lineto + 532 196 lineto + 532 286 lineto + 530 292 lineto + 528 294 lineto + 524 298 lineto + 520 300 lineto + 514 302 lineto + 498 302 lineto + 492 300 lineto + 488 298 lineto + 484 294 lineto +closepath +%end path +fill +%new path + 298 584 moveto + 300 586 lineto + 302 592 lineto + 304 594 lineto + 304 598 lineto + 302 596 lineto + 302 602 lineto + 300 608 lineto + 298 612 lineto + 294 616 lineto + 292 618 lineto + 286 620 lineto + 280 620 lineto + 278 618 lineto + 218 618 lineto + 218 620 lineto + 212 618 lineto + 210 616 lineto + 206 612 lineto + 204 608 lineto + 202 602 lineto + 200 602 lineto + 200 598 lineto + 202 598 lineto + 202 592 lineto + 204 586 lineto + 206 584 lineto + 210 580 lineto + 212 578 lineto + 218 576 lineto + 286 576 lineto + 292 578 lineto + 294 580 lineto + 298 584 lineto +closepath +%end path +fill +%new path + 372 584 moveto + 374 586 lineto + 376 592 lineto + 378 594 lineto + 378 598 lineto + 376 596 lineto + 376 602 lineto + 374 608 lineto + 372 612 lineto + 368 616 lineto + 366 618 lineto + 360 620 lineto + 354 620 lineto + 352 618 lineto + 278 618 lineto + 280 620 lineto + 274 618 lineto + 270 616 lineto + 266 612 lineto + 264 608 lineto + 262 602 lineto + 262 592 lineto + 264 586 lineto + 266 584 lineto + 270 580 lineto + 274 578 lineto + 280 576 lineto + 360 576 lineto + 366 578 lineto + 368 580 lineto + 372 584 lineto +closepath +%end path +fill +%new path + 206 216 moveto + 204 212 lineto + 202 206 lineto + 200 206 lineto + 200 200 lineto + 202 202 lineto + 202 196 lineto + 204 190 lineto + 206 186 lineto + 210 182 lineto + 212 180 lineto + 292 180 lineto + 294 182 lineto + 298 186 lineto + 300 190 lineto + 302 196 lineto + 304 196 lineto + 304 202 lineto + 302 200 lineto + 302 206 lineto + 300 212 lineto + 298 216 lineto + 294 220 lineto + 292 222 lineto + 286 224 lineto + 280 224 lineto + 278 222 lineto + 218 222 lineto + 218 224 lineto + 212 222 lineto + 210 220 lineto + 206 216 lineto +closepath +%end path +fill +%new path + 266 216 moveto + 264 212 lineto + 262 206 lineto + 262 196 lineto + 264 190 lineto + 266 186 lineto + 270 182 lineto + 274 180 lineto + 324 180 lineto + 326 182 lineto + 330 186 lineto + 332 190 lineto + 334 196 lineto + 336 196 lineto + 336 202 lineto + 334 200 lineto + 334 206 lineto + 332 212 lineto + 330 216 lineto + 326 220 lineto + 324 222 lineto + 318 224 lineto + 312 224 lineto + 310 222 lineto + 278 222 lineto + 280 224 lineto + 274 222 lineto + 270 220 lineto + 266 216 lineto +closepath +%end path +fill +) def + +/The_letter_M +( +newpath +%new path + 234 612 moveto + 232 608 lineto + 230 602 lineto + 228 602 lineto + 228 202 lineto + 230 202 lineto + 230 196 lineto + 232 190 lineto + 234 188 lineto + 238 184 lineto + 240 182 lineto + 246 180 lineto + 252 180 lineto + 258 182 lineto + 262 184 lineto + 266 188 lineto + 268 190 lineto + 270 196 lineto + 270 602 lineto + 268 608 lineto + 266 612 lineto + 262 616 lineto + 258 618 lineto + 252 620 lineto + 246 620 lineto + 246 620 lineto + 240 618 lineto + 238 616 lineto + 234 612 lineto +closepath +%end path +fill +%new path + 470 612 moveto + 468 608 lineto + 466 602 lineto + 466 196 lineto + 468 190 lineto + 470 188 lineto + 474 184 lineto + 478 182 lineto + 484 180 lineto + 490 180 lineto + 496 182 lineto + 500 184 lineto + 504 188 lineto + 506 190 lineto + 508 196 lineto + 508 602 lineto + 506 608 lineto + 504 612 lineto + 500 616 lineto + 496 618 lineto + 490 620 lineto + 484 620 lineto + 484 618 lineto + 482 618 lineto + 484 620 lineto + 478 618 lineto + 474 616 lineto + 470 612 lineto +closepath +%end path +fill +%new path + 248 618 moveto + 242 612 240 604 240 598 curveto + 242 598 lineto + 242 590 246 582 252 576 curveto + 256 572 264 568 272 568 curveto + 272 552 318 418 342 344 curveto + 344 340 346 336 350 332 curveto + 354 328 362 324 370 324 curveto + 370 326 lineto + 372 326 lineto + 370 324 lineto + 364 324 lineto + 366 326 lineto + 368 326 lineto + 376 326 384 330 388 334 curveto + 392 338 394 342 396 346 curveto + 420 420 466 554 466 570 curveto + 474 570 482 574 486 578 curveto + 492 584 496 592 496 600 curveto + 494 600 lineto + 494 606 492 614 486 620 curveto + 486 618 lineto + 468 618 lineto + 460 618 452 614 446 610 curveto + 444 606 440 602 440 598 curveto + 414 524 368 386 368 374 curveto + 366 374 lineto + 366 376 lineto + 366 388 320 526 294 600 curveto + 294 604 290 608 288 612 curveto + 282 616 274 620 266 620 curveto + 266 618 lineto + 248 618 lineto +closepath +%end path +fill +%new path + 266 584 moveto + 268 586 lineto + 270 592 lineto + 270 598 lineto + 268 600 lineto + 268 604 lineto + 270 602 lineto + 268 608 lineto + 266 612 lineto + 262 616 lineto + 258 618 lineto + 252 620 lineto + 246 620 lineto + 246 618 lineto + 206 618 lineto + 208 620 lineto + 202 618 lineto + 198 616 lineto + 194 612 lineto + 192 608 lineto + 190 602 lineto + 190 592 lineto + 192 586 lineto + 194 584 lineto + 198 580 lineto + 202 578 lineto + 208 576 lineto + 252 576 lineto + 258 578 lineto + 262 580 lineto + 266 584 lineto +closepath +%end path +fill +%new path + 194 216 moveto + 192 212 lineto + 190 206 lineto + 190 196 lineto + 192 190 lineto + 194 186 lineto + 198 182 lineto + 202 180 lineto + 258 180 lineto + 262 182 lineto + 266 186 lineto + 268 190 lineto + 270 196 lineto + 270 206 lineto + 268 212 lineto + 266 216 lineto + 262 220 lineto + 258 222 lineto + 252 224 lineto + 246 224 lineto + 246 222 lineto + 206 222 lineto + 208 224 lineto + 202 222 lineto + 198 220 lineto + 194 216 lineto +closepath +%end path +fill +%new path + 234 216 moveto + 232 212 lineto + 230 206 lineto + 230 196 lineto + 232 190 lineto + 234 186 lineto + 238 182 lineto + 240 180 lineto + 296 180 lineto + 300 182 lineto + 304 186 lineto + 306 190 lineto + 308 196 lineto + 308 206 lineto + 306 212 lineto + 304 216 lineto + 300 220 lineto + 296 222 lineto + 290 224 lineto + 284 224 lineto + 284 222 lineto + 246 222 lineto + 246 224 lineto + 240 222 lineto + 238 220 lineto + 234 216 lineto +closepath +%end path +fill +%new path + 542 584 moveto + 544 586 lineto + 546 592 lineto + 546 602 lineto + 544 608 lineto + 542 612 lineto + 538 616 lineto + 534 618 lineto + 528 620 lineto + 522 620 lineto + 522 618 lineto + 482 618 lineto + 484 620 lineto + 478 618 lineto + 474 616 lineto + 470 612 lineto + 468 608 lineto + 466 602 lineto + 466 592 lineto + 468 586 lineto + 470 584 lineto + 474 580 lineto + 478 578 lineto + 484 576 lineto + 528 576 lineto + 534 578 lineto + 538 580 lineto + 542 584 lineto +closepath +%end path +fill +%new path + 432 216 moveto + 430 212 lineto + 428 206 lineto + 428 196 lineto + 430 190 lineto + 432 186 lineto + 436 182 lineto + 440 180 lineto + 496 180 lineto + 498 182 lineto + 502 186 lineto + 504 190 lineto + 506 196 lineto + 508 196 lineto + 508 206 lineto + 506 212 lineto + 504 216 lineto + 500 220 lineto + 496 222 lineto + 490 224 lineto + 484 224 lineto + 484 222 lineto + 444 222 lineto + 446 224 lineto + 440 222 lineto + 436 220 lineto + 432 216 lineto +closepath +%end path +fill +%new path + 470 216 moveto + 468 212 lineto + 466 206 lineto + 466 200 lineto + 468 200 lineto + 468 194 lineto + 466 196 lineto + 468 190 lineto + 470 186 lineto + 474 182 lineto + 478 180 lineto + 534 180 lineto + 538 182 lineto + 542 186 lineto + 544 190 lineto + 546 196 lineto + 546 206 lineto + 544 212 lineto + 542 216 lineto + 538 220 lineto + 534 222 lineto + 528 224 lineto + 522 224 lineto + 522 222 lineto + 482 222 lineto + 484 224 lineto + 478 222 lineto + 474 220 lineto + 470 216 lineto +closepath +%end path +fill +) def + +/The_letter_N +( +newpath +%new path + 252 612 moveto + 250 608 lineto + 248 602 lineto + 246 602 lineto + 246 202 lineto + 248 202 lineto + 248 196 lineto + 250 190 lineto + 252 188 lineto + 256 184 lineto + 258 182 lineto + 264 180 lineto + 270 180 lineto + 276 182 lineto + 280 184 lineto + 284 188 lineto + 286 190 lineto + 288 196 lineto + 288 602 lineto + 286 608 lineto + 284 612 lineto + 280 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 264 620 lineto + 258 618 lineto + 256 616 lineto + 252 612 lineto +closepath +%end path +fill +%new path + 452 612 moveto + 450 608 lineto + 448 602 lineto + 448 196 lineto + 450 190 lineto + 452 188 lineto + 456 184 lineto + 460 182 lineto + 466 180 lineto + 472 180 lineto + 478 182 lineto + 482 184 lineto + 486 188 lineto + 488 190 lineto + 490 196 lineto + 490 602 lineto + 488 608 lineto + 486 612 lineto + 482 616 lineto + 478 618 lineto + 472 620 lineto + 466 620 lineto + 466 618 lineto + 464 618 lineto + 466 620 lineto + 460 618 lineto + 456 616 lineto + 452 612 lineto +closepath +%end path +fill +%new path + 266 618 moveto + 260 612 258 604 258 598 curveto + 260 598 lineto + 260 590 264 582 270 576 curveto + 274 572 282 568 290 568 curveto + 290 558 376 322 422 198 curveto + 424 194 426 190 430 186 curveto + 436 182 444 180 452 180 curveto + 470 180 lineto + 476 186 478 194 478 200 curveto + 476 200 lineto + 476 208 472 216 466 222 curveto + 462 226 454 230 446 230 curveto + 446 240 360 476 314 600 curveto + 312 604 310 608 306 612 curveto + 300 616 292 620 284 620 curveto + 284 618 lineto + 266 618 lineto +closepath +%end path +fill +%new path + 284 584 moveto + 286 586 lineto + 288 592 lineto + 288 598 lineto + 286 600 lineto + 286 604 lineto + 288 602 lineto + 286 608 lineto + 284 612 lineto + 280 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 264 618 lineto + 216 618 lineto + 216 620 lineto + 210 618 lineto + 208 616 lineto + 204 612 lineto + 202 608 lineto + 200 602 lineto + 198 602 lineto + 198 598 lineto + 200 598 lineto + 200 592 lineto + 202 586 lineto + 204 584 lineto + 208 580 lineto + 210 578 lineto + 216 576 lineto + 270 576 lineto + 276 578 lineto + 280 580 lineto + 284 584 lineto +closepath +%end path +fill +%new path + 204 216 moveto + 202 212 lineto + 200 206 lineto + 198 206 lineto + 198 200 lineto + 200 202 lineto + 200 196 lineto + 202 190 lineto + 204 186 lineto + 208 182 lineto + 210 180 lineto + 276 180 lineto + 280 182 lineto + 284 186 lineto + 286 190 lineto + 288 196 lineto + 288 206 lineto + 286 212 lineto + 284 216 lineto + 280 220 lineto + 276 222 lineto + 270 224 lineto + 264 224 lineto + 264 222 lineto + 216 222 lineto + 216 224 lineto + 210 222 lineto + 208 220 lineto + 204 216 lineto +closepath +%end path +fill +%new path + 252 216 moveto + 250 212 lineto + 248 206 lineto + 248 196 lineto + 250 190 lineto + 252 186 lineto + 256 182 lineto + 258 180 lineto + 324 180 lineto + 326 182 lineto + 330 186 lineto + 332 190 lineto + 334 196 lineto + 336 196 lineto + 336 202 lineto + 334 200 lineto + 334 206 lineto + 332 212 lineto + 330 216 lineto + 326 220 lineto + 324 222 lineto + 318 224 lineto + 312 224 lineto + 310 222 lineto + 264 222 lineto + 264 224 lineto + 258 222 lineto + 256 220 lineto + 252 216 lineto +closepath +%end path +fill +%new path + 486 584 moveto + 488 586 lineto + 490 592 lineto + 490 598 lineto + 488 600 lineto + 488 602 lineto + 486 608 lineto + 484 612 lineto + 480 616 lineto + 478 618 lineto + 472 620 lineto + 466 620 lineto + 464 618 lineto + 418 618 lineto + 418 620 lineto + 412 618 lineto + 410 616 lineto + 406 612 lineto + 404 608 lineto + 402 602 lineto + 400 602 lineto + 400 598 lineto + 402 598 lineto + 402 592 lineto + 404 586 lineto + 406 584 lineto + 410 580 lineto + 412 578 lineto + 418 576 lineto + 472 576 lineto + 478 578 lineto + 482 580 lineto + 486 584 lineto +closepath +%end path +fill +%new path + 532 584 moveto + 534 586 lineto + 536 592 lineto + 538 594 lineto + 538 598 lineto + 536 596 lineto + 536 602 lineto + 534 608 lineto + 532 612 lineto + 528 616 lineto + 526 618 lineto + 520 620 lineto + 514 620 lineto + 512 618 lineto + 464 618 lineto + 466 620 lineto + 460 618 lineto + 456 616 lineto + 452 612 lineto + 450 608 lineto + 448 602 lineto + 448 592 lineto + 450 586 lineto + 452 584 lineto + 456 580 lineto + 460 578 lineto + 466 576 lineto + 520 576 lineto + 526 578 lineto + 528 580 lineto + 532 584 lineto +closepath +%end path +fill +) def + +/The_letter_O +( +newpath +%new path + 368 582 moveto + 340 582 308 582 292 564 curveto + 288 562 286 558 284 554 curveto + 268 526 268 458 268 406 curveto + 270 406 lineto + 270 352 270 276 286 244 curveto + 288 240 290 236 294 234 curveto + 312 216 342 214 370 214 curveto + 370 216 lineto + 396 216 426 218 444 236 curveto + 448 238 450 242 452 246 curveto + 468 278 468 354 468 408 curveto + 466 408 lineto + 466 460 466 528 450 556 curveto + 448 560 446 564 442 566 curveto + 426 584 394 584 368 584 curveto +closepath +%end path +%new path + 368 626 moveto + 324 626 276 626 250 600 curveto + 246 596 244 594 242 590 curveto + 218 554 218 464 218 398 curveto + 220 398 lineto + 220 332 220 242 244 206 curveto + 246 202 248 200 252 196 curveto + 278 172 326 172 370 172 curveto + 370 174 lineto + 412 174 460 174 486 198 curveto + 490 202 492 204 494 208 curveto + 518 244 518 334 518 400 curveto + 516 400 lineto + 516 466 516 556 492 592 curveto + 490 596 488 598 484 602 curveto + 458 628 410 628 368 628 curveto +closepath +%end path +eofill +) def + +/The_letter_P +( +newpath +%new path + 254 612 moveto + 252 608 lineto + 250 602 lineto + 248 602 lineto + 248 202 lineto + 250 202 lineto + 250 196 lineto + 252 190 lineto + 254 188 lineto + 258 184 lineto + 260 182 lineto + 266 180 lineto + 282 180 lineto + 288 182 lineto + 292 184 lineto + 296 188 lineto + 298 190 lineto + 300 196 lineto + 300 602 lineto + 298 608 lineto + 296 612 lineto + 292 616 lineto + 288 618 lineto + 282 620 lineto + 276 620 lineto + 276 618 lineto + 266 618 lineto + 266 620 lineto + 260 618 lineto + 258 616 lineto + 254 612 lineto +closepath +%end path +fill +%new path + 276 576 moveto + 380 576 lineto + 380 574 lineto + 406 574 430 566 448 548 curveto + 448 548 450 546 450 546 curveto + 466 530 476 508 476 486 curveto + 474 486 lineto + 474 464 464 442 448 426 curveto + 448 426 446 424 446 424 curveto + 428 406 404 398 378 398 curveto + 274 398 lineto + 274 354 lineto + 276 356 lineto + 392 356 lineto + 428 356 462 370 486 394 curveto + 488 394 488 394 488 396 curveto + 512 420 526 454 526 488 curveto + 524 488 lineto + 524 522 510 556 486 580 curveto + 486 582 486 582 484 582 curveto + 460 606 426 620 390 620 curveto + 390 618 lineto + 274 618 lineto + 274 574 lineto +closepath +%end path +fill +%new path + 290 584 moveto + 292 586 lineto + 294 592 lineto + 296 594 lineto + 296 598 lineto + 294 596 lineto + 294 602 lineto + 292 608 lineto + 290 612 lineto + 286 616 lineto + 284 618 lineto + 278 620 lineto + 272 620 lineto + 270 618 lineto + 214 618 lineto + 216 620 lineto + 210 618 lineto + 206 616 lineto + 202 612 lineto + 200 608 lineto + 198 602 lineto + 198 592 lineto + 200 586 lineto + 202 584 lineto + 206 580 lineto + 210 578 lineto + 216 576 lineto + 278 576 lineto + 284 578 lineto + 286 580 lineto + 290 584 lineto +closepath +%end path +fill +%new path + 320 584 moveto + 322 586 lineto + 324 592 lineto + 326 594 lineto + 326 598 lineto + 324 596 lineto + 324 602 lineto + 322 608 lineto + 320 612 lineto + 316 616 lineto + 314 618 lineto + 308 620 lineto + 302 620 lineto + 300 618 lineto + 270 618 lineto + 272 620 lineto + 266 618 lineto + 262 616 lineto + 258 612 lineto + 256 608 lineto + 254 602 lineto + 254 592 lineto + 256 586 lineto + 258 584 lineto + 262 580 lineto + 266 578 lineto + 272 576 lineto + 308 576 lineto + 314 578 lineto + 316 580 lineto + 320 584 lineto +closepath +%end path +fill +%new path + 202 216 moveto + 200 212 lineto + 198 206 lineto + 198 196 lineto + 200 190 lineto + 202 186 lineto + 206 182 lineto + 210 180 lineto + 284 180 lineto + 286 182 lineto + 290 186 lineto + 292 190 lineto + 294 196 lineto + 296 196 lineto + 296 202 lineto + 294 200 lineto + 294 206 lineto + 292 212 lineto + 290 216 lineto + 286 220 lineto + 284 222 lineto + 278 224 lineto + 272 224 lineto + 270 222 lineto + 214 222 lineto + 216 224 lineto + 210 222 lineto + 206 220 lineto + 202 216 lineto +closepath +%end path +fill +%new path + 258 216 moveto + 256 212 lineto + 254 206 lineto + 254 196 lineto + 256 190 lineto + 258 186 lineto + 262 182 lineto + 266 180 lineto + 340 180 lineto + 342 182 lineto + 346 186 lineto + 348 190 lineto + 350 196 lineto + 352 196 lineto + 352 202 lineto + 350 200 lineto + 350 206 lineto + 348 212 lineto + 346 216 lineto + 342 220 lineto + 340 222 lineto + 334 224 lineto + 328 224 lineto + 326 222 lineto + 270 222 lineto + 272 224 lineto + 266 222 lineto + 262 220 lineto + 258 216 lineto +closepath +%end path +fill +) def + +/The_letter_Q +( +newpath +%new path + 368 582 moveto + 340 582 310 580 292 564 curveto + 288 560 286 556 284 552 curveto + 268 524 268 450 268 398 curveto + 270 398 lineto + 270 346 270 272 286 244 curveto + 288 240 290 236 294 232 curveto + 312 216 342 214 370 214 curveto + 370 216 lineto + 396 216 426 218 444 234 curveto + 448 238 450 242 452 246 curveto + 468 274 468 348 468 400 curveto + 466 400 lineto + 466 452 466 526 450 554 curveto + 448 558 446 562 442 566 curveto + 424 582 394 584 368 584 curveto +closepath +%end path +%new path + 368 626 moveto + 324 626 276 626 250 600 curveto + 246 596 244 594 242 590 curveto + 218 554 218 464 218 398 curveto + 220 398 lineto + 220 332 220 242 244 206 curveto + 246 202 248 200 252 196 curveto + 278 172 326 172 370 172 curveto + 370 174 lineto + 412 174 460 174 486 198 curveto + 490 202 492 204 494 208 curveto + 518 244 518 334 518 400 curveto + 516 400 lineto + 516 466 516 556 492 592 curveto + 490 596 488 598 484 602 curveto + 458 628 410 628 368 628 curveto +closepath +%end path +eofill +%new path + 396 302 moveto + 394 302 392 304 390 304 curveto + 390 302 lineto + 362 302 lineto + 358 302 354 300 352 298 curveto + 350 296 348 292 348 288 curveto + 350 288 lineto + 350 286 350 284 352 282 curveto + 386 218 418 154 452 90 curveto + 454 88 454 86 456 86 curveto + 460 82 464 80 470 80 curveto + 470 82 lineto + 496 82 lineto + 500 82 502 84 504 86 curveto + 508 88 508 92 508 96 curveto + 506 96 lineto + 506 102 lineto + 470 168 434 232 398 300 curveto + 398 300 396 300 396 302 curveto +closepath +%end path +fill +) def + +/The_letter_R +( +newpath +%new path + 246 612 moveto + 244 608 lineto + 242 602 lineto + 240 602 lineto + 240 202 lineto + 242 202 lineto + 242 196 lineto + 244 190 lineto + 246 188 lineto + 250 184 lineto + 252 182 lineto + 258 180 lineto + 274 180 lineto + 280 182 lineto + 284 184 lineto + 288 188 lineto + 290 190 lineto + 292 196 lineto + 292 602 lineto + 290 608 lineto + 288 612 lineto + 284 616 lineto + 280 618 lineto + 274 620 lineto + 268 620 lineto + 268 618 lineto + 258 618 lineto + 258 620 lineto + 252 618 lineto + 250 616 lineto + 246 612 lineto +closepath +%end path +fill +%new path + 268 576 moveto + 348 576 lineto + 348 574 lineto + 372 574 396 566 414 552 curveto + 416 550 418 548 420 546 curveto + 434 532 442 516 442 498 curveto + 440 498 lineto + 440 478 432 462 418 448 curveto + 416 446 414 444 412 442 curveto + 394 428 370 420 346 420 curveto + 266 420 lineto + 266 376 lineto + 268 378 lineto + 354 378 lineto + 390 378 424 390 452 414 curveto + 454 416 456 418 458 418 curveto + 478 440 492 468 492 500 curveto + 490 500 lineto + 490 530 476 558 456 580 curveto + 454 580 452 582 450 584 curveto + 422 608 388 620 352 620 curveto + 352 618 lineto + 266 618 lineto + 266 574 lineto +closepath +%end path +fill +%new path + 338 414 moveto + 336 410 lineto + 334 404 lineto + 332 404 lineto + 332 398 lineto + 334 400 lineto + 334 394 lineto + 336 388 lineto + 338 384 lineto + 342 380 lineto + 344 378 lineto + 350 376 lineto + 352 376 lineto + 362 376 372 374 382 372 curveto + 376 374 lineto + 384 370 392 366 398 362 curveto + 398 364 lineto + 394 366 lineto + 396 364 lineto + 400 362 404 358 408 354 curveto + 410 352 lineto + 416 350 lineto + 404 358 lineto + 400 368 lineto + 402 362 lineto + 404 358 lineto + 408 354 412 350 414 346 curveto + 412 346 lineto + 410 350 lineto + 412 348 lineto + 416 344 418 338 420 332 curveto + 418 338 lineto + 420 330 422 322 422 316 curveto + 424 310 lineto + 426 308 lineto + 422 316 lineto + 426 332 lineto + 424 328 lineto + 422 322 lineto + 420 322 lineto + 420 268 lineto + 422 268 lineto + 422 262 lineto + 422 248 424 234 428 222 curveto + 426 224 lineto + 428 218 lineto + 430 216 lineto + 432 210 434 206 436 202 curveto + 438 200 lineto + 438 198 lineto + 440 196 442 192 444 190 curveto + 444 192 lineto + 448 188 lineto + 448 186 lineto + 450 184 454 182 456 182 curveto + 454 182 lineto + 458 180 lineto + 462 180 464 178 468 176 curveto + 468 178 lineto + 474 176 lineto + 474 174 lineto + 480 172 484 172 492 172 curveto + 496 172 lineto + 498 174 lineto + 500 174 504 174 508 176 curveto + 506 174 lineto + 512 176 lineto + 514 178 lineto + 516 178 520 180 522 180 curveto + 524 180 lineto + 526 182 lineto + 528 184 530 184 532 186 curveto + 530 186 lineto + 534 190 lineto + 536 190 lineto + 538 192 540 196 540 198 curveto + 540 196 lineto + 542 200 lineto + 546 206 548 210 550 216 curveto + 548 214 lineto + 550 220 lineto + 552 222 lineto + 554 230 556 238 556 248 curveto + 556 252 lineto + 554 258 lineto + 552 262 lineto + 548 266 lineto + 544 268 lineto + 538 270 lineto + 532 270 lineto + 532 268 lineto + 520 268 lineto + 522 270 lineto + 516 268 lineto + 512 266 lineto + 508 262 lineto + 506 258 lineto + 504 252 lineto + 504 240 502 230 500 222 curveto + 502 228 lineto + 500 224 498 220 496 216 curveto + 498 216 lineto + 500 220 lineto + 498 218 lineto + 496 216 496 214 494 214 curveto + 492 212 lineto + 490 206 lineto + 490 200 lineto + 494 214 lineto + 514 222 lineto + 508 222 lineto + 502 220 lineto + 498 218 lineto + 496 216 496 216 494 214 curveto + 494 216 lineto + 498 218 lineto + 496 216 lineto + 496 214 494 214 492 214 curveto + 498 216 lineto + 494 214 492 214 490 214 curveto + 490 216 lineto + 484 214 lineto + 482 212 lineto + 478 208 lineto + 496 216 lineto + 510 208 lineto + 506 212 lineto + 502 214 lineto + 496 216 lineto + 490 216 486 216 482 218 curveto + 482 216 lineto + 488 214 lineto + 488 216 lineto + 484 216 482 218 480 220 curveto + 482 218 lineto + 484 216 lineto + 484 218 lineto + 482 218 480 220 478 222 curveto + 480 220 lineto + 476 222 lineto + 470 224 lineto + 484 216 lineto + 488 208 lineto + 486 214 lineto + 484 216 lineto + 482 218 lineto + 480 220 478 222 478 224 curveto + 478 222 lineto + 480 220 lineto + 476 224 474 228 474 234 curveto + 474 232 lineto + 476 226 lineto + 476 228 lineto + 472 240 470 254 470 270 curveto + 472 268 lineto + 470 274 lineto + 468 278 lineto + 472 268 lineto + 468 254 lineto + 470 256 lineto + 472 262 lineto + 472 322 lineto + 470 324 lineto + 470 332 468 338 466 346 curveto + 468 344 lineto + 466 350 lineto + 464 352 lineto + 462 358 460 364 456 370 curveto + 456 368 lineto + 454 372 lineto + 450 376 448 380 444 384 curveto + 440 388 lineto + 436 392 430 396 426 400 curveto + 424 402 lineto + 422 402 lineto + 416 408 406 412 398 414 curveto + 392 416 lineto + 380 420 368 422 356 422 curveto + 350 422 lineto + 344 420 lineto + 342 418 lineto + 338 414 lineto +closepath +%end path +fill +%new path + 282 584 moveto + 284 586 lineto + 286 592 lineto + 288 594 lineto + 288 598 lineto + 286 596 lineto + 286 602 lineto + 284 608 lineto + 282 612 lineto + 278 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 262 618 lineto + 210 618 lineto + 210 620 lineto + 204 618 lineto + 202 616 lineto + 198 612 lineto + 196 608 lineto + 194 602 lineto + 192 602 lineto + 192 598 lineto + 194 598 lineto + 194 592 lineto + 196 586 lineto + 198 584 lineto + 202 580 lineto + 204 578 lineto + 210 576 lineto + 270 576 lineto + 276 578 lineto + 278 580 lineto + 282 584 lineto +closepath +%end path +fill +%new path + 310 584 moveto + 312 586 lineto + 314 592 lineto + 316 594 lineto + 316 598 lineto + 314 596 lineto + 314 602 lineto + 312 608 lineto + 310 612 lineto + 306 616 lineto + 304 618 lineto + 298 620 lineto + 292 620 lineto + 290 618 lineto + 262 618 lineto + 264 620 lineto + 258 618 lineto + 254 616 lineto + 250 612 lineto + 248 608 lineto + 246 602 lineto + 246 592 lineto + 248 586 lineto + 250 584 lineto + 254 580 lineto + 258 578 lineto + 264 576 lineto + 298 576 lineto + 304 578 lineto + 306 580 lineto + 310 584 lineto +closepath +%end path +fill +%new path + 198 216 moveto + 196 212 lineto + 194 206 lineto + 192 206 lineto + 192 200 lineto + 194 202 lineto + 194 196 lineto + 196 190 lineto + 198 186 lineto + 202 182 lineto + 204 180 lineto + 276 180 lineto + 278 182 lineto + 282 186 lineto + 284 190 lineto + 286 196 lineto + 288 196 lineto + 288 202 lineto + 286 200 lineto + 286 206 lineto + 284 212 lineto + 282 216 lineto + 278 220 lineto + 276 222 lineto + 270 224 lineto + 264 224 lineto + 262 222 lineto + 210 222 lineto + 210 224 lineto + 204 222 lineto + 202 220 lineto + 198 216 lineto +closepath +%end path +fill +%new path + 250 216 moveto + 248 212 lineto + 246 206 lineto + 246 196 lineto + 248 190 lineto + 250 186 lineto + 254 182 lineto + 258 180 lineto + 328 180 lineto + 330 182 lineto + 334 186 lineto + 336 190 lineto + 338 196 lineto + 340 196 lineto + 340 202 lineto + 338 200 lineto + 338 206 lineto + 336 212 lineto + 334 216 lineto + 330 220 lineto + 328 222 lineto + 322 224 lineto + 316 224 lineto + 314 222 lineto + 262 222 lineto + 264 224 lineto + 258 222 lineto + 254 220 lineto + 250 216 lineto +closepath +%end path +fill +) def + +/The_letter_S +( +newpath +%new path + 352 628 moveto + 346 628 lineto + 346 626 lineto + 332 626 318 624 306 620 curveto + 300 618 lineto + 290 614 280 610 272 604 curveto + 272 606 lineto + 270 604 lineto + 268 602 lineto + 264 600 260 596 256 594 curveto + 256 592 254 590 252 588 curveto + 252 590 lineto + 248 586 lineto + 248 584 lineto + 244 580 240 574 236 570 curveto + 234 568 lineto + 234 566 lineto + 228 560 226 552 222 544 curveto + 224 546 lineto + 222 540 lineto + 220 538 lineto + 218 530 216 520 216 510 curveto + 218 512 lineto + 218 504 lineto + 218 496 220 486 222 478 curveto + 224 472 lineto + 228 464 230 456 236 450 curveto + 234 450 lineto + 236 448 lineto + 238 446 lineto + 240 440 244 436 250 432 curveto + 248 432 lineto + 252 428 lineto + 254 428 lineto + 258 422 264 418 270 414 curveto + 272 412 lineto + 274 412 lineto + 282 406 292 402 302 398 curveto + 300 398 lineto + 306 396 lineto + 308 396 lineto + 312 394 314 394 318 392 curveto + 318 392 410 372 410 372 curveto + 412 370 416 370 418 368 curveto + 418 370 lineto + 412 372 lineto + 412 370 lineto + 422 368 430 364 438 358 curveto + 438 360 lineto + 434 362 lineto + 436 360 lineto + 440 356 446 352 450 348 curveto + 452 346 lineto + 458 344 lineto + 446 352 lineto + 442 362 lineto + 444 356 lineto + 446 352 lineto + 452 346 456 342 460 336 curveto + 458 338 lineto + 456 340 lineto + 458 340 lineto + 462 332 466 324 470 316 curveto + 468 316 lineto + 466 322 lineto + 468 322 lineto + 470 312 472 302 472 292 curveto + 470 292 lineto + 472 286 lineto + 474 284 lineto + 470 292 lineto + 474 308 lineto + 472 304 lineto + 470 298 lineto + 470 286 468 276 466 266 curveto + 466 268 lineto + 468 274 lineto + 468 272 lineto + 464 264 460 256 456 250 curveto + 458 254 lineto + 458 252 lineto + 454 246 450 242 444 236 curveto + 446 238 lineto + 444 234 lineto + 442 228 lineto + 442 222 lineto + 446 238 lineto + 464 246 lineto + 458 246 lineto + 452 244 lineto + 450 242 lineto + 448 240 lineto + 444 236 438 232 434 228 curveto + 438 230 lineto + 436 230 lineto + 428 224 420 220 412 218 curveto + 418 220 lineto + 406 216 394 214 382 214 curveto + 384 216 lineto + 378 214 lineto + 374 212 lineto + 370 208 lineto + 368 204 lineto + 366 198 lineto + 366 188 lineto + 368 182 lineto + 370 180 lineto + 374 176 lineto + 378 174 lineto + 384 172 lineto + 390 172 lineto + 390 174 lineto + 404 174 416 176 428 180 curveto + 426 178 lineto + 432 180 lineto + 434 180 lineto + 444 184 452 188 460 194 curveto + 460 192 lineto + 462 194 lineto + 464 196 lineto + 470 198 474 202 480 208 curveto + 480 208 lineto + 484 212 lineto + 484 214 lineto + 490 218 494 224 498 230 curveto + 498 228 lineto + 500 232 lineto + 506 240 510 248 512 258 curveto + 512 256 lineto + 514 262 lineto + 514 264 lineto + 518 274 520 286 520 296 curveto + 520 302 lineto + 518 302 lineto + 518 314 516 324 512 334 curveto + 514 334 lineto + 512 340 lineto + 510 340 lineto + 508 350 504 358 498 366 curveto + 500 364 lineto + 498 368 lineto + 496 368 lineto + 492 374 488 380 482 386 curveto + 484 384 lineto + 480 388 lineto + 478 390 lineto + 474 394 468 400 462 404 curveto + 462 402 lineto + 460 404 lineto + 458 406 lineto + 450 410 442 416 432 418 curveto + 426 420 lineto + 422 422 418 422 416 424 curveto + 416 424 324 444 324 444 curveto + 320 446 318 446 314 448 curveto + 316 446 lineto + 322 444 lineto + 320 446 lineto + 310 448 302 452 294 458 curveto + 296 458 lineto + 298 456 lineto + 292 460 286 464 282 468 curveto + 280 470 lineto + 274 472 lineto + 286 464 lineto + 290 454 lineto + 288 460 lineto + 286 464 lineto + 282 470 278 474 274 478 curveto + 276 478 lineto + 278 474 lineto + 276 476 lineto + 272 482 268 488 266 496 curveto + 268 496 lineto + 270 490 lineto + 268 490 lineto + 266 498 264 506 264 516 curveto + 266 514 lineto + 264 520 lineto + 262 524 lineto + 266 514 lineto + 262 500 lineto + 264 502 lineto + 266 508 lineto + 266 510 lineto + 266 518 268 528 270 536 curveto + 270 534 lineto + 268 528 lineto + 268 530 lineto + 270 536 274 544 278 550 curveto + 278 548 lineto + 276 546 lineto + 280 552 284 556 288 560 curveto + 286 560 lineto + 288 562 lineto + 290 568 lineto + 290 574 lineto + 286 560 lineto + 268 552 lineto + 274 552 lineto + 280 554 lineto + 282 556 lineto + 284 556 lineto + 286 558 286 560 288 562 curveto + 292 564 296 568 300 570 curveto + 298 568 lineto + 296 566 lineto + 296 568 lineto + 304 572 312 578 322 580 curveto + 316 578 lineto + 328 582 340 584 354 584 curveto + 352 584 lineto + 358 586 lineto + 362 588 lineto + 366 592 lineto + 368 594 lineto + 370 600 lineto + 370 610 lineto + 368 616 lineto + 366 620 lineto + 362 624 lineto + 358 626 lineto + 352 628 lineto +closepath +%end path +fill +%new path + 502 498 moveto + 500 500 lineto + 498 510 496 520 494 530 curveto + 492 536 lineto + 488 546 482 556 478 566 curveto + 478 564 lineto + 476 568 lineto + 472 574 466 580 462 584 curveto + 458 588 lineto + 452 594 448 598 442 602 curveto + 440 604 lineto + 438 604 lineto + 430 610 420 614 410 618 curveto + 404 620 lineto + 388 626 370 628 352 628 curveto + 346 628 lineto + 340 626 lineto + 338 624 lineto + 334 620 lineto + 332 616 lineto + 330 610 lineto + 328 610 lineto + 328 606 lineto + 330 606 lineto + 330 600 lineto + 332 594 lineto + 334 592 lineto + 338 588 lineto + 340 586 lineto + 346 584 lineto + 348 582 lineto + 364 582 380 580 394 574 curveto + 392 576 lineto + 386 578 lineto + 388 576 lineto + 398 574 406 570 414 564 curveto + 414 566 lineto + 410 568 lineto + 412 566 lineto + 416 562 422 558 426 554 curveto + 428 552 lineto + 434 550 lineto + 422 558 lineto + 418 568 lineto + 420 562 lineto + 422 558 lineto + 428 552 432 548 436 542 curveto + 434 542 lineto + 432 546 lineto + 434 544 lineto + 440 536 444 526 448 516 curveto + 446 518 lineto + 444 524 lineto + 446 522 lineto + 448 512 450 502 452 492 curveto + 450 492 lineto + 452 486 lineto + 454 484 lineto + 458 480 lineto + 462 478 lineto + 468 476 lineto + 484 476 lineto + 490 478 lineto + 494 480 lineto + 498 484 lineto + 500 486 lineto + 502 492 lineto + 502 498 lineto +closepath +%end path +fill +%new path + 402 208 moveto + 398 212 lineto + 396 214 lineto + 390 216 lineto + 388 216 lineto + 364 216 342 220 322 226 curveto + 324 224 lineto + 330 222 lineto + 328 224 lineto + 318 228 306 232 298 238 curveto + 302 236 lineto + 300 236 lineto + 296 240 290 244 286 248 curveto + 284 250 lineto + 278 252 lineto + 290 244 lineto + 294 234 lineto + 292 240 lineto + 290 244 lineto + 286 250 282 254 278 258 curveto + 280 254 lineto + 280 256 lineto + 276 262 272 270 270 278 curveto + 270 276 lineto + 272 270 lineto + 272 272 lineto + 268 282 266 294 266 308 curveto + 268 306 lineto + 266 312 lineto + 264 316 lineto + 260 320 lineto + 256 322 lineto + 250 324 lineto + 244 324 lineto + 244 322 lineto + 234 322 lineto + 234 324 lineto + 228 322 lineto + 226 320 lineto + 222 316 lineto + 220 312 lineto + 218 306 lineto + 218 300 lineto + 218 286 220 274 224 262 curveto + 222 264 lineto + 224 258 lineto + 226 256 lineto + 228 248 232 242 236 234 curveto + 236 236 lineto + 238 232 lineto + 242 226 246 222 250 218 curveto + 254 214 lineto + 258 208 264 204 270 200 curveto + 268 202 lineto + 272 200 lineto + 272 198 lineto + 282 192 294 186 306 182 curveto + 304 184 lineto + 310 182 lineto + 312 180 lineto + 334 176 358 172 384 172 curveto + 390 172 lineto + 396 174 lineto + 398 176 lineto + 402 180 lineto + 404 182 lineto + 406 188 lineto + 408 188 lineto + 408 194 lineto + 406 192 lineto + 406 198 lineto + 404 204 lineto + 402 208 lineto +closepath +%end path +fill +%new path + 498 484 moveto + 500 486 lineto + 502 492 lineto + 502 610 lineto + 500 616 lineto + 498 620 lineto + 494 624 lineto + 490 626 lineto + 484 628 lineto + 478 628 lineto + 478 626 lineto + 474 626 lineto + 474 628 lineto + 468 626 lineto + 466 624 lineto + 462 620 lineto + 460 616 lineto + 458 610 lineto + 456 610 lineto + 450 590 444 570 438 552 curveto + 438 546 lineto + 440 540 lineto + 442 540 lineto + 446 532 450 524 452 516 curveto + 452 518 lineto + 450 524 lineto + 450 522 lineto + 454 512 456 502 456 492 curveto + 458 486 lineto + 460 484 lineto + 464 480 lineto + 466 478 lineto + 472 476 lineto + 484 476 lineto + 490 478 lineto + 494 480 lineto + 498 484 lineto +closepath +%end path +fill +%new path + 222 316 moveto + 220 312 lineto + 218 306 lineto + 216 306 lineto + 216 192 lineto + 218 194 lineto + 218 188 lineto + 220 182 lineto + 222 180 lineto + 226 176 lineto + 228 174 lineto + 234 172 lineto + 240 172 lineto + 242 174 lineto + 244 174 lineto + 244 172 lineto + 250 174 lineto + 252 176 lineto + 256 180 lineto + 258 182 lineto + 260 188 lineto + 262 188 lineto + 266 208 272 226 278 244 curveto + 278 248 lineto + 276 254 lineto + 274 256 lineto + 270 262 268 270 264 278 curveto + 266 276 lineto + 268 270 lineto + 266 272 lineto + 262 282 262 294 262 308 curveto + 262 306 lineto + 260 312 lineto + 258 316 lineto + 254 320 lineto + 252 322 lineto + 246 324 lineto + 240 324 lineto + 238 322 lineto + 234 322 lineto + 234 324 lineto + 228 322 lineto + 226 320 lineto + 222 316 lineto +closepath +%end path +fill +) def + +/The_letter_T +( +newpath +%new path + 348 612 moveto + 346 608 lineto + 344 602 lineto + 342 602 lineto + 342 202 lineto + 344 202 lineto + 344 196 lineto + 346 190 lineto + 348 188 lineto + 352 184 lineto + 354 182 lineto + 360 180 lineto + 376 180 lineto + 382 182 lineto + 386 184 lineto + 390 188 lineto + 392 190 lineto + 394 196 lineto + 394 602 lineto + 392 608 lineto + 390 612 lineto + 386 616 lineto + 382 618 lineto + 376 620 lineto + 370 620 lineto + 370 618 lineto + 360 618 lineto + 360 620 lineto + 354 618 lineto + 352 616 lineto + 348 612 lineto +closepath +%end path +fill +%new path + 506 506 moveto + 512 506 lineto + 512 508 lineto + 524 508 lineto + 522 506 lineto + 528 508 lineto + 532 510 lineto + 536 514 lineto + 538 518 lineto + 540 524 lineto + 540 602 lineto + 538 608 lineto + 536 612 lineto + 532 616 lineto + 528 618 lineto + 522 620 lineto + 516 620 lineto + 516 618 lineto + 364 618 lineto + 366 620 lineto + 360 618 lineto + 356 616 lineto + 352 612 lineto + 350 608 lineto + 348 602 lineto + 348 592 lineto + 350 586 lineto + 352 582 lineto + 356 578 lineto + 360 576 lineto + 366 574 lineto + 372 574 lineto + 372 576 lineto + 512 576 lineto + 512 574 lineto + 518 576 lineto + 520 578 lineto + 524 582 lineto + 506 574 lineto + 492 582 lineto + 496 578 lineto + 500 576 lineto + 506 574 lineto + 492 582 lineto + 488 592 lineto + 490 586 lineto + 492 582 lineto + 488 592 lineto + 492 606 lineto + 490 604 lineto + 488 598 lineto + 488 524 lineto + 490 518 lineto + 492 514 lineto + 496 510 lineto + 500 508 lineto + 506 506 lineto +closepath +%end path +fill +%new path + 244 514 moveto + 246 518 lineto + 248 524 lineto + 248 598 lineto + 244 582 lineto + 224 574 lineto + 230 574 lineto + 232 576 lineto + 372 576 lineto + 372 574 lineto + 378 576 lineto + 380 578 lineto + 384 582 lineto + 386 586 lineto + 388 592 lineto + 390 592 lineto + 390 598 lineto + 388 596 lineto + 388 602 lineto + 386 608 lineto + 384 612 lineto + 380 616 lineto + 378 618 lineto + 372 620 lineto + 366 620 lineto + 364 618 lineto + 214 618 lineto + 214 620 lineto + 208 618 lineto + 206 616 lineto + 202 612 lineto + 200 608 lineto + 198 602 lineto + 196 602 lineto + 196 528 lineto + 198 530 lineto + 198 524 lineto + 200 518 lineto + 202 514 lineto + 206 510 lineto + 208 508 lineto + 214 506 lineto + 220 506 lineto + 222 508 lineto + 232 508 lineto + 230 506 lineto + 236 508 lineto + 240 510 lineto + 244 514 lineto +closepath +%end path +fill +%new path + 280 216 moveto + 278 212 lineto + 276 206 lineto + 276 196 lineto + 278 190 lineto + 280 186 lineto + 284 182 lineto + 288 180 lineto + 378 180 lineto + 380 182 lineto + 384 186 lineto + 386 190 lineto + 388 196 lineto + 390 196 lineto + 390 202 lineto + 388 200 lineto + 388 206 lineto + 386 212 lineto + 384 216 lineto + 380 220 lineto + 378 222 lineto + 372 224 lineto + 366 224 lineto + 364 222 lineto + 292 222 lineto + 294 224 lineto + 288 222 lineto + 284 220 lineto + 280 216 lineto +closepath +%end path +fill +%new path + 352 216 moveto + 350 212 lineto + 348 206 lineto + 348 196 lineto + 350 190 lineto + 352 186 lineto + 356 182 lineto + 360 180 lineto + 448 180 lineto + 452 182 lineto + 456 186 lineto + 458 190 lineto + 460 196 lineto + 460 206 lineto + 458 212 lineto + 456 216 lineto + 452 220 lineto + 448 222 lineto + 442 224 lineto + 436 224 lineto + 436 222 lineto + 364 222 lineto + 366 224 lineto + 360 222 lineto + 356 220 lineto + 352 216 lineto +closepath +%end path +fill +%new path + 384 584 moveto + 386 586 lineto + 388 592 lineto + 390 594 lineto + 390 598 lineto + 388 596 lineto + 388 602 lineto + 386 608 lineto + 384 612 lineto + 380 616 lineto + 378 618 lineto + 372 620 lineto + 366 620 lineto + 364 618 lineto + 336 618 lineto + 336 620 lineto + 330 618 lineto + 328 616 lineto + 324 612 lineto + 322 608 lineto + 320 602 lineto + 318 602 lineto + 318 598 lineto + 320 598 lineto + 320 592 lineto + 322 586 lineto + 324 584 lineto + 328 580 lineto + 330 578 lineto + 336 576 lineto + 372 576 lineto + 378 578 lineto + 380 580 lineto + 384 584 lineto +closepath +%end path +fill +%new path + 412 584 moveto + 414 586 lineto + 416 592 lineto + 418 594 lineto + 418 598 lineto + 416 596 lineto + 416 602 lineto + 414 608 lineto + 412 612 lineto + 408 616 lineto + 406 618 lineto + 400 620 lineto + 394 620 lineto + 392 618 lineto + 364 618 lineto + 366 620 lineto + 360 618 lineto + 356 616 lineto + 352 612 lineto + 350 608 lineto + 348 602 lineto + 348 592 lineto + 350 586 lineto + 352 584 lineto + 356 580 lineto + 360 578 lineto + 366 576 lineto + 400 576 lineto + 406 578 lineto + 408 580 lineto + 412 584 lineto +closepath +%end path +fill +) def + +/The_letter_U +( +newpath +%new path + 254 612 moveto + 252 608 lineto + 250 602 lineto + 248 602 lineto + 248 328 lineto + 250 328 lineto + 250 322 lineto + 252 316 lineto + 254 314 lineto + 258 310 lineto + 260 308 lineto + 266 306 lineto + 282 306 lineto + 288 308 lineto + 292 310 lineto + 296 314 lineto + 298 316 lineto + 300 322 lineto + 300 602 lineto + 298 608 lineto + 296 612 lineto + 292 616 lineto + 288 618 lineto + 282 620 lineto + 276 620 lineto + 276 618 lineto + 266 618 lineto + 266 620 lineto + 260 618 lineto + 258 616 lineto + 254 612 lineto +closepath +%end path +fill +%new path + 282 346 moveto + 276 346 lineto + 276 344 lineto + 266 344 lineto + 266 346 lineto + 260 344 lineto + 258 342 lineto + 254 338 lineto + 252 334 lineto + 250 328 lineto + 250 322 lineto + 250 304 252 288 258 272 curveto + 256 274 lineto + 258 268 lineto + 260 266 lineto + 264 254 270 244 276 234 curveto + 278 232 lineto + 278 230 lineto + 282 226 284 222 288 218 curveto + 290 216 292 212 294 210 curveto + 294 212 lineto + 298 208 lineto + 298 206 lineto + 304 200 310 196 316 192 curveto + 318 190 lineto + 320 190 lineto + 328 184 336 180 344 180 curveto + 350 178 lineto + 360 174 372 172 382 172 curveto + 388 172 lineto + 388 174 lineto + 398 174 410 176 420 180 curveto + 418 178 lineto + 424 180 lineto + 426 180 lineto + 434 182 442 186 450 192 curveto + 450 190 lineto + 452 192 lineto + 454 194 lineto + 460 198 466 202 472 208 curveto + 470 208 lineto + 474 212 lineto + 476 212 lineto + 478 214 480 218 482 220 curveto + 486 224 488 228 492 232 curveto + 490 232 lineto + 492 234 lineto + 494 236 lineto + 500 246 506 256 510 268 curveto + 512 274 lineto + 518 290 520 306 520 324 curveto + 520 602 lineto + 518 608 lineto + 516 612 lineto + 512 616 lineto + 508 618 lineto + 502 620 lineto + 496 620 lineto + 496 618 lineto + 484 618 lineto + 486 620 lineto + 480 618 lineto + 476 616 lineto + 472 612 lineto + 470 608 lineto + 468 602 lineto + 468 328 lineto + 468 310 466 294 460 278 curveto + 462 278 lineto + 464 284 lineto + 462 284 lineto + 458 272 452 260 446 250 curveto + 448 252 lineto + 450 254 lineto + 448 254 lineto + 446 250 444 248 442 244 curveto + 438 242 436 238 432 236 curveto + 434 236 lineto + 432 234 lineto + 430 228 lineto + 430 222 lineto + 434 236 lineto + 452 244 lineto + 446 244 lineto + 440 242 lineto + 438 240 lineto + 436 240 lineto + 432 234 426 230 420 226 curveto + 422 226 lineto + 424 228 lineto + 416 222 408 220 400 216 curveto + 402 218 lineto + 408 220 lineto + 406 218 lineto + 398 216 390 214 380 214 curveto + 382 216 lineto + 376 214 lineto + 372 212 lineto + 368 208 lineto + 388 216 lineto + 400 208 lineto + 396 212 lineto + 394 214 lineto + 388 216 lineto + 386 216 lineto + 376 216 368 218 360 220 curveto + 366 218 lineto + 358 222 350 224 342 230 curveto + 344 228 lineto + 346 226 lineto + 346 228 lineto + 340 232 334 236 330 242 curveto + 330 240 lineto + 328 242 lineto + 322 244 lineto + 334 236 lineto + 338 228 lineto + 336 234 lineto + 334 236 lineto + 334 238 lineto + 330 240 328 244 324 246 curveto + 322 250 320 252 318 256 curveto + 318 254 lineto + 320 252 lineto + 314 262 308 274 304 286 curveto + 304 284 lineto + 306 278 lineto + 306 280 lineto + 300 296 298 312 298 330 curveto + 300 328 lineto + 298 334 lineto + 296 338 lineto + 292 342 lineto + 288 344 lineto + 282 346 lineto +closepath +%end path +fill +%new path + 290 584 moveto + 292 586 lineto + 294 592 lineto + 296 594 lineto + 296 598 lineto + 294 596 lineto + 294 602 lineto + 292 608 lineto + 290 612 lineto + 286 616 lineto + 284 618 lineto + 278 620 lineto + 272 620 lineto + 270 618 lineto + 214 618 lineto + 216 620 lineto + 210 618 lineto + 206 616 lineto + 202 612 lineto + 200 608 lineto + 198 602 lineto + 198 592 lineto + 200 586 lineto + 202 584 lineto + 206 580 lineto + 210 578 lineto + 216 576 lineto + 278 576 lineto + 284 578 lineto + 286 580 lineto + 290 584 lineto +closepath +%end path +fill +%new path + 346 584 moveto + 348 586 lineto + 350 592 lineto + 352 594 lineto + 352 598 lineto + 350 596 lineto + 350 602 lineto + 348 608 lineto + 346 612 lineto + 342 616 lineto + 340 618 lineto + 334 620 lineto + 328 620 lineto + 326 618 lineto + 270 618 lineto + 272 620 lineto + 266 618 lineto + 262 616 lineto + 258 612 lineto + 256 608 lineto + 254 602 lineto + 254 592 lineto + 256 586 lineto + 258 584 lineto + 262 580 lineto + 266 578 lineto + 272 576 lineto + 334 576 lineto + 340 578 lineto + 342 580 lineto + 346 584 lineto +closepath +%end path +fill +%new path + 510 584 moveto + 512 586 lineto + 514 592 lineto + 514 602 lineto + 512 608 lineto + 510 612 lineto + 506 616 lineto + 502 618 lineto + 496 620 lineto + 490 620 lineto + 490 618 lineto + 434 618 lineto + 434 620 lineto + 428 618 lineto + 426 616 lineto + 422 612 lineto + 420 608 lineto + 418 602 lineto + 416 602 lineto + 416 598 lineto + 418 598 lineto + 418 592 lineto + 420 586 lineto + 422 584 lineto + 426 580 lineto + 428 578 lineto + 434 576 lineto + 496 576 lineto + 502 578 lineto + 506 580 lineto + 510 584 lineto +closepath +%end path +fill +%new path + 566 584 moveto + 568 586 lineto + 570 592 lineto + 570 602 lineto + 568 608 lineto + 566 612 lineto + 562 616 lineto + 558 618 lineto + 552 620 lineto + 546 620 lineto + 546 618 lineto + 490 618 lineto + 490 620 lineto + 484 618 lineto + 482 616 lineto + 478 612 lineto + 476 608 lineto + 474 602 lineto + 472 602 lineto + 472 598 lineto + 474 598 lineto + 474 592 lineto + 476 586 lineto + 478 584 lineto + 482 580 lineto + 484 578 lineto + 490 576 lineto + 552 576 lineto + 558 578 lineto + 562 580 lineto + 566 584 lineto +closepath +%end path +fill +) def + +/The_letter_V +( +newpath +%new path + 370 230 moveto + 370 252 428 476 458 600 curveto + 460 604 462 608 466 612 curveto + 470 618 478 620 484 620 curveto + 494 620 lineto + 494 618 lineto + 500 618 504 616 506 614 curveto + 510 610 510 606 510 602 curveto + 508 602 lineto + 508 598 lineto + 474 462 440 328 404 192 curveto + 404 188 402 184 398 180 curveto + 394 176 386 174 380 174 curveto + 354 174 lineto + 354 176 lineto + 348 176 340 178 336 182 curveto + 332 186 330 190 330 194 curveto + 294 330 260 464 226 600 curveto + 226 604 lineto + 228 604 lineto + 228 608 228 612 232 616 curveto + 234 618 238 620 244 620 curveto + 254 620 lineto + 254 618 lineto + 260 618 268 616 272 610 curveto + 276 606 278 602 280 598 curveto + 310 474 368 250 368 228 curveto + 368 230 lineto + 370 230 lineto +closepath +%end path +fill +%new path + 270 584 moveto + 272 586 lineto + 274 592 lineto + 274 598 lineto + 272 600 lineto + 272 602 lineto + 270 608 lineto + 268 612 lineto + 264 616 lineto + 262 618 lineto + 256 620 lineto + 250 620 lineto + 248 618 lineto + 208 618 lineto + 210 620 lineto + 204 618 lineto + 200 616 lineto + 196 612 lineto + 194 608 lineto + 192 602 lineto + 192 592 lineto + 194 586 lineto + 196 584 lineto + 200 580 lineto + 204 578 lineto + 210 576 lineto + 256 576 lineto + 262 578 lineto + 266 580 lineto + 270 584 lineto +closepath +%end path +fill +%new path + 320 584 moveto + 322 586 lineto + 324 592 lineto + 326 594 lineto + 326 598 lineto + 324 596 lineto + 324 602 lineto + 322 608 lineto + 320 612 lineto + 316 616 lineto + 314 618 lineto + 308 620 lineto + 302 620 lineto + 300 618 lineto + 248 618 lineto + 250 620 lineto + 244 618 lineto + 240 616 lineto + 236 612 lineto + 234 608 lineto + 232 602 lineto + 232 596 lineto + 234 596 lineto + 234 592 lineto + 236 586 lineto + 238 584 lineto + 242 580 lineto + 244 578 lineto + 250 576 lineto + 308 576 lineto + 314 578 lineto + 316 580 lineto + 320 584 lineto +closepath +%end path +fill +%new path + 498 584 moveto + 500 586 lineto + 502 592 lineto + 504 594 lineto + 504 602 lineto + 502 608 lineto + 500 612 lineto + 496 616 lineto + 492 618 lineto + 486 620 lineto + 480 620 lineto + 480 618 lineto + 428 618 lineto + 428 620 lineto + 422 618 lineto + 420 616 lineto + 416 612 lineto + 414 608 lineto + 412 602 lineto + 410 602 lineto + 410 598 lineto + 412 598 lineto + 412 592 lineto + 414 586 lineto + 416 584 lineto + 420 580 lineto + 422 578 lineto + 428 576 lineto + 486 576 lineto + 492 578 lineto + 494 580 lineto + 498 584 lineto +closepath +%end path +fill +%new path + 540 584 moveto + 542 586 lineto + 544 592 lineto + 544 602 lineto + 542 608 lineto + 540 612 lineto + 536 616 lineto + 532 618 lineto + 526 620 lineto + 520 620 lineto + 520 618 lineto + 480 618 lineto + 480 620 lineto + 474 618 lineto + 472 616 lineto + 468 612 lineto + 466 608 lineto + 464 602 lineto + 462 602 lineto + 462 592 lineto + 464 586 lineto + 466 584 lineto + 470 580 lineto + 474 578 lineto + 480 576 lineto + 526 576 lineto + 532 578 lineto + 536 580 lineto + 540 584 lineto +closepath +%end path +fill +) def + +/The_letter_W +( +newpath +%new path + 274 180 moveto + 280 176 284 174 292 174 curveto + 292 176 lineto + 300 176 lineto + 308 176 314 178 320 182 curveto + 322 184 324 190 326 194 curveto + 342 260 368 376 368 394 curveto + 370 394 lineto + 370 392 lineto + 370 374 396 258 412 192 curveto + 414 188 416 182 418 180 curveto + 424 176 430 174 438 174 curveto + 438 176 lineto + 446 176 lineto + 454 176 458 178 464 180 curveto + 466 184 470 188 470 194 curveto + 488 330 508 464 526 600 curveto + 526 602 lineto + 524 602 lineto + 524 608 522 612 520 614 curveto + 516 618 512 620 506 620 curveto + 506 618 lineto + 500 618 494 616 490 612 curveto + 486 608 484 604 484 598 curveto + 466 474 438 262 438 228 curveto + 436 228 lineto + 436 230 lineto + 436 260 412 360 398 424 curveto + 396 428 394 434 390 436 curveto + 386 442 380 444 372 444 curveto + 372 442 lineto + 362 442 lineto + 354 442 348 440 344 434 curveto + 340 432 338 426 336 422 curveto + 322 358 298 258 298 228 curveto + 296 228 lineto + 296 230 lineto + 296 264 268 476 250 600 curveto + 250 606 248 610 244 614 curveto + 240 618 234 620 228 620 curveto + 228 618 lineto + 222 618 218 616 214 612 curveto + 212 610 210 606 210 600 curveto + 212 600 lineto + 212 598 lineto + 230 462 250 328 268 192 curveto + 268 186 272 182 274 180 curveto +closepath +%end path +fill +%new path + 248 584 moveto + 250 586 lineto + 252 592 lineto + 252 598 lineto + 250 600 lineto + 250 604 lineto + 252 602 lineto + 250 608 lineto + 248 612 lineto + 244 616 lineto + 240 618 lineto + 234 620 lineto + 228 620 lineto + 228 618 lineto + 204 618 lineto + 204 620 lineto + 198 618 lineto + 196 616 lineto + 192 612 lineto + 190 608 lineto + 188 602 lineto + 186 602 lineto + 186 598 lineto + 188 598 lineto + 188 592 lineto + 190 586 lineto + 192 584 lineto + 196 580 lineto + 198 578 lineto + 204 576 lineto + 234 576 lineto + 240 578 lineto + 244 580 lineto + 248 584 lineto +closepath +%end path +fill +%new path + 298 584 moveto + 300 586 lineto + 302 592 lineto + 304 594 lineto + 304 598 lineto + 302 596 lineto + 302 602 lineto + 300 608 lineto + 298 612 lineto + 294 616 lineto + 292 618 lineto + 286 620 lineto + 280 620 lineto + 278 618 lineto + 228 618 lineto + 228 620 lineto + 222 618 lineto + 220 616 lineto + 216 612 lineto + 214 608 lineto + 212 602 lineto + 212 592 lineto + 214 586 lineto + 216 584 lineto + 220 580 lineto + 222 578 lineto + 228 576 lineto + 286 576 lineto + 292 578 lineto + 294 580 lineto + 298 584 lineto +closepath +%end path +fill +%new path + 520 584 moveto + 522 586 lineto + 524 592 lineto + 526 594 lineto + 526 598 lineto + 524 596 lineto + 524 602 lineto + 522 608 lineto + 520 612 lineto + 516 616 lineto + 514 618 lineto + 508 620 lineto + 502 620 lineto + 500 618 lineto + 450 618 lineto + 450 620 lineto + 444 618 lineto + 442 616 lineto + 438 612 lineto + 436 608 lineto + 434 602 lineto + 432 602 lineto + 432 598 lineto + 434 598 lineto + 434 592 lineto + 436 586 lineto + 438 584 lineto + 442 580 lineto + 444 578 lineto + 450 576 lineto + 508 576 lineto + 514 578 lineto + 516 580 lineto + 520 584 lineto +closepath +%end path +fill +%new path + 544 584 moveto + 546 586 lineto + 548 592 lineto + 550 594 lineto + 550 598 lineto + 548 596 lineto + 548 602 lineto + 546 608 lineto + 544 612 lineto + 540 616 lineto + 538 618 lineto + 532 620 lineto + 526 620 lineto + 524 618 lineto + 500 618 lineto + 502 620 lineto + 496 618 lineto + 492 616 lineto + 488 612 lineto + 486 608 lineto + 484 602 lineto + 484 592 lineto + 486 586 lineto + 488 584 lineto + 492 580 lineto + 496 578 lineto + 502 576 lineto + 532 576 lineto + 538 578 lineto + 540 580 lineto + 544 584 lineto +closepath +%end path +fill +) def + +/The_letter_X +( +newpath +%new path + 286 614 moveto + 282 618 278 620 272 620 curveto + 272 618 lineto + 250 618 lineto + 246 618 244 616 240 614 curveto + 238 612 236 608 236 604 curveto + 238 604 lineto + 238 602 240 600 240 598 curveto + 274 536 306 474 340 412 curveto + 338 412 lineto + 302 340 266 270 230 198 curveto + 230 192 lineto + 232 192 lineto + 232 188 232 184 236 182 curveto + 238 180 242 180 244 180 curveto + 268 180 lineto + 272 180 276 182 280 186 curveto + 280 186 282 188 282 190 curveto + 310 248 338 306 366 364 curveto + 366 362 lineto + 394 304 424 246 454 188 curveto + 454 186 456 184 458 184 curveto + 460 180 466 180 470 180 curveto + 492 180 lineto + 496 180 500 182 502 184 curveto + 504 186 506 190 506 194 curveto + 504 194 lineto + 504 196 504 198 502 200 curveto + 464 272 426 342 388 414 curveto + 390 414 lineto + 422 476 452 538 484 600 curveto + 484 602 486 604 486 606 curveto + 484 606 lineto + 484 610 482 614 478 616 curveto + 476 618 474 620 470 620 curveto + 470 618 lineto + 448 618 lineto + 442 618 438 616 434 612 curveto + 434 612 432 610 432 608 curveto + 408 562 386 516 364 470 curveto + 364 472 lineto + 338 518 314 564 290 610 curveto + 288 612 288 614 286 614 curveto +closepath +%end path +fill +%new path + 286 584 moveto + 288 586 lineto + 290 592 lineto + 290 598 lineto + 288 604 lineto + 286 606 lineto + 286 606 286 608 284 610 curveto + 286 608 lineto + 284 612 lineto + 280 616 lineto + 276 618 lineto + 270 620 lineto + 264 620 lineto + 264 618 lineto + 222 618 lineto + 224 620 lineto + 218 618 lineto + 214 616 lineto + 210 612 lineto + 208 608 lineto + 206 602 lineto + 206 592 lineto + 208 586 lineto + 210 584 lineto + 214 580 lineto + 218 578 lineto + 224 576 lineto + 272 576 lineto + 278 578 lineto + 282 580 lineto + 286 584 lineto +closepath +%end path +fill +%new path + 336 584 moveto + 338 586 lineto + 340 592 lineto + 342 594 lineto + 342 598 lineto + 340 596 lineto + 340 602 lineto + 338 608 lineto + 336 612 lineto + 332 616 lineto + 330 618 lineto + 324 620 lineto + 318 620 lineto + 316 618 lineto + 264 618 lineto + 264 620 lineto + 258 618 lineto + 256 616 lineto + 252 612 lineto + 250 608 lineto + 248 602 lineto + 248 596 lineto + 250 590 lineto + 252 588 252 586 252 586 curveto + 254 584 lineto + 258 580 lineto + 260 578 lineto + 266 576 lineto + 324 576 lineto + 330 578 lineto + 332 580 lineto + 336 584 lineto +closepath +%end path +fill +%new path + 408 216 moveto + 406 212 lineto + 404 206 lineto + 402 206 lineto + 402 200 lineto + 404 202 lineto + 404 196 lineto + 406 190 lineto + 408 186 lineto + 412 182 lineto + 414 180 lineto + 484 180 lineto + 488 182 lineto + 492 186 lineto + 494 190 lineto + 496 196 lineto + 496 202 lineto + 494 208 lineto + 492 208 lineto + 492 210 492 212 490 214 curveto + 492 212 lineto + 490 216 lineto + 486 220 lineto + 482 222 lineto + 476 224 lineto + 470 224 lineto + 470 222 lineto + 420 222 lineto + 420 224 lineto + 414 222 lineto + 412 220 lineto + 408 216 lineto +closepath +%end path +fill +%new path + 458 216 moveto + 456 212 lineto + 454 206 lineto + 454 200 lineto + 456 194 lineto + 458 192 458 190 458 188 curveto + 458 190 lineto + 460 186 lineto + 464 182 lineto + 466 180 lineto + 526 180 lineto + 528 182 lineto + 532 186 lineto + 534 190 lineto + 536 196 lineto + 538 196 lineto + 538 202 lineto + 536 200 lineto + 536 206 lineto + 534 212 lineto + 532 216 lineto + 528 220 lineto + 526 222 lineto + 520 224 lineto + 514 224 lineto + 512 222 lineto + 470 222 lineto + 470 224 lineto + 464 222 lineto + 462 220 lineto + 458 216 lineto +closepath +%end path +fill +%new path + 470 584 moveto + 472 586 lineto + 472 588 lineto + 472 588 474 590 474 592 curveto + 472 590 lineto + 474 596 lineto + 474 602 lineto + 472 608 lineto + 470 612 lineto + 466 616 lineto + 464 618 lineto + 458 620 lineto + 452 620 lineto + 450 618 lineto + 398 618 lineto + 400 620 lineto + 394 618 lineto + 390 616 lineto + 386 612 lineto + 384 608 lineto + 382 602 lineto + 382 592 lineto + 384 586 lineto + 386 584 lineto + 390 580 lineto + 394 578 lineto + 400 576 lineto + 456 576 lineto + 462 578 lineto + 466 580 lineto + 470 584 lineto +closepath +%end path +fill +%new path + 512 584 moveto + 514 586 lineto + 516 592 lineto + 516 602 lineto + 514 608 lineto + 512 612 lineto + 508 616 lineto + 504 618 lineto + 498 620 lineto + 492 620 lineto + 492 618 lineto + 450 618 lineto + 452 620 lineto + 446 618 lineto + 442 616 lineto + 438 612 lineto + 436 608 lineto + 436 606 434 604 434 604 curveto + 436 604 lineto + 434 598 lineto + 434 592 lineto + 436 586 lineto + 438 584 lineto + 442 580 lineto + 444 578 lineto + 450 576 lineto + 498 576 lineto + 504 578 lineto + 508 580 lineto + 512 584 lineto +closepath +%end path +fill +%new path + 202 216 moveto + 200 212 lineto + 198 206 lineto + 198 196 lineto + 200 190 lineto + 202 186 lineto + 206 182 lineto + 210 180 lineto + 268 180 lineto + 272 182 lineto + 276 186 lineto + 278 190 lineto + 278 192 280 194 280 196 curveto + 280 194 lineto + 282 200 lineto + 282 206 lineto + 280 212 lineto + 278 216 lineto + 274 220 lineto + 270 222 lineto + 264 224 lineto + 258 224 lineto + 258 222 lineto + 214 222 lineto + 216 224 lineto + 210 222 lineto + 206 220 lineto + 202 216 lineto +closepath +%end path +fill +%new path + 246 216 moveto + 244 212 lineto + 242 212 lineto + 242 210 240 208 240 206 curveto + 242 208 lineto + 240 202 lineto + 240 196 lineto + 242 190 lineto + 244 186 lineto + 248 182 lineto + 250 180 lineto + 320 180 lineto + 324 182 lineto + 328 186 lineto + 330 190 lineto + 332 196 lineto + 332 206 lineto + 330 212 lineto + 328 216 lineto + 324 220 lineto + 320 222 lineto + 314 224 lineto + 308 224 lineto + 308 222 lineto + 258 222 lineto + 258 224 lineto + 252 222 lineto + 250 220 lineto + 246 216 lineto +closepath +%end path +fill +) def + +/The_letter_Y +( +newpath +%new path + 370 406 moveto + 370 422 424 536 456 600 curveto + 458 604 460 606 462 610 curveto + 470 616 478 620 488 620 curveto + 500 620 lineto + 500 618 lineto + 502 618 506 616 508 614 curveto + 512 612 512 608 512 604 curveto + 510 604 lineto + 510 598 lineto + 470 516 432 436 392 354 curveto + 392 198 lineto + 392 192 390 188 386 184 curveto + 382 180 378 180 372 180 curveto + 362 180 lineto + 356 180 352 182 348 186 curveto + 344 190 342 194 342 200 curveto + 344 200 lineto + 344 356 lineto + 342 356 lineto + 302 438 264 518 224 600 curveto + 224 602 222 604 222 606 curveto + 224 606 lineto + 224 610 226 614 230 616 curveto + 232 618 236 620 238 620 curveto + 250 620 lineto + 250 618 lineto + 260 618 268 614 276 608 curveto + 278 604 280 602 282 598 curveto + 314 534 368 420 368 404 curveto + 368 406 lineto + 370 406 lineto +closepath +%end path +fill +%new path + 272 584 moveto + 274 586 lineto + 276 592 lineto + 276 598 lineto + 274 604 lineto + 272 606 lineto + 272 606 270 608 270 610 curveto + 272 608 lineto + 270 612 lineto + 266 616 lineto + 262 618 lineto + 256 620 lineto + 250 620 lineto + 250 618 lineto + 208 618 lineto + 210 620 lineto + 204 618 lineto + 200 616 lineto + 196 612 lineto + 194 608 lineto + 192 602 lineto + 192 592 lineto + 194 586 lineto + 196 584 lineto + 200 580 lineto + 204 578 lineto + 210 576 lineto + 258 576 lineto + 264 578 lineto + 268 580 lineto + 272 584 lineto +closepath +%end path +fill +%new path + 322 584 moveto + 324 586 lineto + 326 592 lineto + 326 602 lineto + 324 608 lineto + 322 612 lineto + 318 616 lineto + 314 618 lineto + 308 620 lineto + 302 620 lineto + 302 618 lineto + 250 618 lineto + 250 620 lineto + 244 618 lineto + 242 616 lineto + 238 612 lineto + 236 608 lineto + 234 602 lineto + 234 596 lineto + 236 590 lineto + 236 588 238 586 238 586 curveto + 240 584 lineto + 244 580 lineto + 246 578 lineto + 252 576 lineto + 308 576 lineto + 314 578 lineto + 318 580 lineto + 322 584 lineto +closepath +%end path +fill +%new path + 496 584 moveto + 498 586 lineto + 500 588 lineto + 500 588 502 590 502 592 curveto + 500 590 lineto + 502 596 lineto + 502 602 lineto + 500 608 lineto + 498 612 lineto + 494 616 lineto + 492 618 lineto + 486 620 lineto + 480 620 lineto + 478 618 lineto + 426 618 lineto + 428 620 lineto + 422 618 lineto + 418 616 lineto + 414 612 lineto + 412 608 lineto + 410 602 lineto + 410 592 lineto + 412 586 lineto + 414 584 lineto + 418 580 lineto + 422 578 lineto + 428 576 lineto + 484 576 lineto + 490 578 lineto + 492 580 lineto + 496 584 lineto +closepath +%end path +fill +%new path + 540 584 moveto + 542 586 lineto + 544 592 lineto + 544 602 lineto + 542 608 lineto + 540 612 lineto + 536 616 lineto + 532 618 lineto + 526 620 lineto + 520 620 lineto + 520 618 lineto + 478 618 lineto + 480 620 lineto + 474 618 lineto + 470 616 lineto + 466 612 lineto + 464 608 lineto + 464 606 462 604 462 604 curveto + 460 598 lineto + 460 592 lineto + 462 586 lineto + 464 584 lineto + 468 580 lineto + 472 578 lineto + 478 576 lineto + 526 576 lineto + 532 578 lineto + 536 580 lineto + 540 584 lineto +closepath +%end path +fill +%new path + 300 216 moveto + 298 212 lineto + 296 206 lineto + 294 206 lineto + 294 200 lineto + 296 202 lineto + 296 196 lineto + 298 190 lineto + 300 186 lineto + 304 182 lineto + 306 180 lineto + 378 180 lineto + 380 182 lineto + 384 186 lineto + 386 190 lineto + 388 196 lineto + 390 196 lineto + 390 202 lineto + 388 200 lineto + 388 206 lineto + 386 212 lineto + 384 216 lineto + 380 220 lineto + 378 222 lineto + 372 224 lineto + 366 224 lineto + 364 222 lineto + 312 222 lineto + 312 224 lineto + 306 222 lineto + 304 220 lineto + 300 216 lineto +closepath +%end path +fill +%new path + 352 216 moveto + 350 212 lineto + 348 206 lineto + 348 196 lineto + 350 190 lineto + 352 186 lineto + 356 182 lineto + 360 180 lineto + 430 180 lineto + 432 182 lineto + 436 186 lineto + 438 190 lineto + 440 196 lineto + 442 196 lineto + 442 202 lineto + 440 200 lineto + 440 206 lineto + 438 212 lineto + 436 216 lineto + 432 220 lineto + 430 222 lineto + 424 224 lineto + 418 224 lineto + 416 222 lineto + 364 222 lineto + 366 224 lineto + 360 222 lineto + 356 220 lineto + 352 216 lineto +closepath +%end path +fill +) def + +/The_letter_Z +( +newpath +%new path + 474 618 moveto + 474 612 476 606 478 600 curveto + 476 600 lineto + 476 600 216 220 216 220 curveto + 214 216 212 212 212 208 curveto + 212 198 lineto + 214 198 lineto + 214 192 216 188 220 184 curveto + 224 180 228 180 234 180 curveto + 262 180 lineto + 262 186 260 192 258 198 curveto + 260 198 lineto + 260 198 520 578 520 578 curveto + 522 582 524 586 524 590 curveto + 524 600 lineto + 522 600 lineto + 522 606 520 610 516 614 curveto + 512 618 508 620 502 620 curveto + 502 618 lineto + 472 618 lineto +closepath +%end path +fill +%new path + 268 514 moveto + 270 518 lineto + 272 524 lineto + 272 598 lineto + 268 582 lineto + 248 574 lineto + 254 574 lineto + 256 576 lineto + 502 576 lineto + 500 574 lineto + 506 576 lineto + 510 578 lineto + 514 582 lineto + 516 586 lineto + 518 592 lineto + 518 602 lineto + 516 608 lineto + 514 612 lineto + 510 616 lineto + 506 618 lineto + 500 620 lineto + 494 620 lineto + 494 618 lineto + 238 618 lineto + 238 620 lineto + 232 618 lineto + 230 616 lineto + 226 612 lineto + 224 608 lineto + 222 602 lineto + 220 602 lineto + 220 528 lineto + 222 530 lineto + 222 524 lineto + 224 518 lineto + 226 514 lineto + 230 510 lineto + 232 508 lineto + 238 506 lineto + 244 506 lineto + 246 508 lineto + 256 508 lineto + 254 506 lineto + 260 508 lineto + 264 510 lineto + 268 514 lineto +closepath +%end path +fill +%new path + 480 298 moveto + 478 294 lineto + 476 288 lineto + 476 200 lineto + 480 216 lineto + 500 224 lineto + 494 224 lineto + 492 222 lineto + 234 222 lineto + 236 224 lineto + 230 222 lineto + 226 220 lineto + 222 216 lineto + 220 212 lineto + 218 206 lineto + 218 196 lineto + 220 190 lineto + 222 188 lineto + 226 184 lineto + 230 182 lineto + 236 180 lineto + 510 180 lineto + 516 182 lineto + 520 184 lineto + 524 188 lineto + 526 190 lineto + 528 196 lineto + 528 288 lineto + 526 294 lineto + 524 298 lineto + 520 302 lineto + 516 304 lineto + 510 306 lineto + 504 306 lineto + 504 304 lineto + 492 304 lineto + 494 306 lineto + 488 304 lineto + 484 302 lineto + 480 298 lineto +closepath +%end path +fill +) def + +end % of CharDefs dictionary + +Encoding 65 /The_letter_A put +Encoding 66 /The_letter_B put +Encoding 67 /The_letter_C put +Encoding 68 /The_letter_D put +Encoding 69 /The_letter_E put +Encoding 70 /The_letter_F put +Encoding 71 /The_letter_G put +Encoding 72 /The_letter_H put +Encoding 73 /The_letter_I put +Encoding 74 /The_letter_J put +Encoding 75 /The_letter_K put +Encoding 76 /The_letter_L put +Encoding 77 /The_letter_M put +Encoding 78 /The_letter_N put +Encoding 79 /The_letter_O put +Encoding 80 /The_letter_P put +Encoding 81 /The_letter_Q put +Encoding 82 /The_letter_R put +Encoding 83 /The_letter_S put +Encoding 84 /The_letter_T put +Encoding 85 /The_letter_U put +Encoding 86 /The_letter_V put +Encoding 87 /The_letter_W put +Encoding 88 /The_letter_X put +Encoding 89 /The_letter_Y put +Encoding 90 /The_letter_Z put + +Metrics + begin +/The_letter_A 353 fudge add def +/The_letter_B 343 fudge add def +/The_letter_C 343 fudge add def +/The_letter_D 345 fudge add def +/The_letter_E 357 fudge add def +/The_letter_F 349 fudge add def +/The_letter_G 353 fudge add def +/The_letter_H 359 fudge add def +/The_letter_I 317 fudge add def +/The_letter_J 339 fudge add def +/The_letter_K 353 fudge add def +/The_letter_L 347 fudge add def +/The_letter_M 361 fudge add def +/The_letter_N 353 fudge add def +/The_letter_O 333 fudge add def +/The_letter_P 341 fudge add def +/The_letter_Q 333 fudge add def +/The_letter_R 371 fudge add def +/The_letter_S 335 fudge add def +/The_letter_T 355 fudge add def +/The_letter_U 385 fudge add def +/The_letter_V 359 fudge add def +/The_letter_W 365 fudge add def +/The_letter_X 353 fudge add def +/The_letter_Y 359 fudge add def +/The_letter_Z 343 fudge add def +/.notdef 450 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 + 1.5 1.5 scale + 0.2 setflat + 0.2 setlinewidth + charwdth 0 + 0 -180 + charwdth 1000 + setcachedevice + -186 fudge add -180 translate + charproc cvx exec + grestore + end + } def + /FontBBox [186 fudge sub 80 570 630] def + + end + + /Simon SimonFont definefont pop + + /Simon findfont 8 scalefont setfont + 100 710 moveto (THIS IS CMTT EIGHT POINTS WRITTEN IN POSTSCRIPT) show + /Simon findfont 10 scalefont setfont + 100 698 moveto (THIS IS CMTT TEN POINTS WRITTEN IN POSTSCRIPT) show + /Simon findfont 12 scalefont setfont + 100 686 moveto (THIS IS CMTT TWELVE POINTS WRITTEN IN POSTSCRIPT) show + showpage diff --git a/fonts/utilities/mf2ps/doc/printsamples/lasy.ps b/fonts/utilities/mf2ps/doc/printsamples/lasy.ps new file mode 100644 index 0000000000..294ddac973 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/lasy.ps @@ -0,0 +1,1715 @@ +%! Simon font +%0 serverdict begin exitserver +/TBuildCharDict 10 dict def +/SimonFont 10 dict def +/fudge 110 def +SimonFont begin +%% + /FontType 3 def + /FontMatrix [0.000895 0 0 0.000895 0 0] 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 + + +/Leftward_arrowhead +( +newpath +%new path + 220 356 moveto + 224 354 lineto + 224 352 lineto + 250 342 274 326 294 306 curveto + 292 308 lineto + 296 306 lineto + 290 310 lineto + 288 314 lineto + 290 310 lineto + 310 288 328 264 338 234 curveto + 338 236 lineto + 340 232 lineto + 354 232 lineto + 358 236 lineto + 358 244 lineto + 356 244 lineto + 344 274 328 300 306 322 curveto + 304 324 lineto + 302 326 lineto + 286 342 266 358 244 368 curveto + 244 366 lineto + 242 368 lineto + 248 364 lineto + 248 358 lineto + 250 360 lineto + 248 360 lineto + 248 356 lineto + 240 352 lineto + 242 352 lineto + 244 354 lineto + 246 354 lineto + 268 364 288 380 304 396 curveto + 306 398 lineto + 308 400 lineto + 330 422 346 448 358 478 curveto + 358 484 lineto + 354 488 lineto + 340 488 lineto + 338 484 lineto + 336 484 lineto + 326 454 308 430 288 408 curveto + 290 410 lineto + 288 406 lineto + 288 404 lineto + 290 410 lineto + 298 414 lineto + 296 414 lineto + 292 412 lineto + 272 392 248 376 222 366 curveto + 224 368 lineto + 220 364 lineto + 220 356 lineto +closepath +%end path +fill +) def + +/Rightward_arrowhead +( +newpath +%new path + 378 364 moveto + 376 368 lineto + 374 368 lineto + 348 378 324 394 304 414 curveto + 306 412 lineto + 302 414 lineto + 308 410 lineto + 310 406 lineto + 308 410 lineto + 288 432 270 456 260 486 curveto + 260 484 lineto + 258 488 lineto + 244 488 lineto + 240 484 lineto + 240 476 lineto + 242 476 lineto + 254 446 270 420 292 398 curveto + 294 396 lineto + 296 394 lineto + 312 378 332 362 354 352 curveto + 354 354 lineto + 356 352 lineto + 350 356 lineto + 350 362 lineto + 348 360 lineto + 350 360 lineto + 350 364 lineto + 358 368 lineto + 356 368 lineto + 354 366 lineto + 352 366 lineto + 330 356 310 340 294 324 curveto + 292 322 lineto + 290 320 lineto + 268 298 252 272 240 242 curveto + 240 236 lineto + 244 232 lineto + 258 232 lineto + 260 236 lineto + 262 236 lineto + 272 266 290 290 310 312 curveto + 308 310 lineto + 310 314 lineto + 310 316 lineto + 308 310 lineto + 300 306 lineto + 302 306 lineto + 306 308 lineto + 326 328 350 344 376 354 curveto + 378 356 lineto + 380 360 lineto + 380 362 lineto + 378 364 lineto +closepath +%end path +fill +) def + +/Upward_arrowhead +( +newpath +%new path + 352 176 moveto + 340 150 324 126 306 106 curveto + 306 108 lineto + 314 112 lineto + 312 112 lineto + 310 110 lineto + 308 110 lineto + 288 90 262 72 234 62 curveto + 232 60 lineto + 230 56 lineto + 230 48 lineto + 232 46 lineto + 234 42 lineto + 242 42 lineto + 244 44 lineto + 274 56 300 72 322 94 curveto + 320 94 lineto + 324 96 lineto + 324 98 lineto + 342 114 356 134 366 156 curveto + 366 156 lineto + 358 152 lineto + 364 152 lineto + 366 156 lineto + 358 152 lineto + 352 156 lineto + 356 152 lineto + 358 152 lineto + 352 156 lineto + 352 156 lineto + 354 154 lineto + 364 132 378 112 396 96 curveto + 394 96 lineto + 398 94 lineto + 398 92 lineto + 420 70 446 54 476 42 curveto + 484 42 lineto + 486 46 lineto + 488 48 lineto + 488 56 lineto + 486 60 lineto + 484 62 lineto + 482 64 lineto + 454 74 428 92 408 112 curveto + 408 110 lineto + 406 112 lineto + 412 108 lineto + 412 108 lineto + 410 108 lineto + 392 128 376 152 366 178 curveto + 366 176 lineto + 364 180 lineto + 356 180 lineto + 352 176 lineto +closepath +%end path +fill +) def + +/Downward_arrowhead +( +newpath +%new path + 366 184 moveto + 368 184 lineto + 378 210 394 234 412 254 curveto + 412 252 lineto + 404 248 lineto + 406 248 lineto + 408 250 lineto + 410 250 lineto + 430 270 456 288 484 298 curveto + 486 300 lineto + 488 304 lineto + 488 312 lineto + 486 314 lineto + 484 318 lineto + 476 318 lineto + 474 316 lineto + 444 304 418 288 396 266 curveto + 398 266 lineto + 394 264 lineto + 394 262 lineto + 376 246 362 226 352 204 curveto + 352 204 lineto + 360 208 lineto + 354 208 lineto + 352 204 lineto + 360 208 lineto + 366 204 lineto + 362 208 lineto + 360 208 lineto + 366 204 lineto + 366 204 lineto + 364 206 lineto + 354 228 340 248 322 264 curveto + 324 264 lineto + 320 266 lineto + 320 268 lineto + 298 290 272 306 242 318 curveto + 234 318 lineto + 232 314 lineto + 230 312 lineto + 230 304 lineto + 232 300 lineto + 234 298 lineto + 236 296 lineto + 264 286 290 268 310 248 curveto + 310 250 lineto + 312 248 lineto + 306 252 lineto + 306 252 lineto + 308 252 lineto + 326 232 342 208 354 182 curveto + 352 184 lineto + 356 180 lineto + 364 180 lineto + 366 184 lineto +closepath +%end path +fill +) def + +/Square_subset_sign +( +newpath +%new path + 682 570 moveto + 678 570 lineto + 676 568 lineto + 260 568 lineto + 260 570 lineto + 254 568 lineto + 250 564 lineto + 248 560 lineto + 248 556 lineto + 246 556 lineto + 246 168 lineto + 248 170 lineto + 248 162 lineto + 250 158 lineto + 254 154 lineto + 260 152 lineto + 264 152 lineto + 266 154 lineto + 682 154 lineto + 682 152 lineto + 688 154 lineto + 692 158 lineto + 694 162 lineto + 694 174 lineto + 692 176 lineto + 688 180 lineto + 254 180 lineto + 250 176 lineto + 264 180 lineto + 274 176 lineto + 270 180 lineto + 264 180 lineto + 274 176 lineto + 278 170 lineto + 276 174 lineto + 274 176 lineto + 278 170 lineto + 274 158 lineto + 276 162 lineto + 278 166 lineto + 278 556 lineto + 274 546 lineto + 260 540 lineto + 682 540 lineto + 688 542 lineto + 692 546 lineto + 694 548 lineto + 694 560 lineto + 692 564 lineto + 688 568 lineto + 682 570 lineto +closepath +%end path +fill +) def + +/Square_superset_sign +( +newpath +%new path + 236 540 moveto + 658 540 lineto + 664 542 lineto + 668 546 lineto + 654 540 lineto + 644 546 lineto + 648 542 lineto + 654 540 lineto + 644 546 lineto + 642 552 lineto + 642 548 lineto + 644 546 lineto + 642 552 lineto + 644 564 lineto + 642 560 lineto + 642 556 lineto + 640 556 lineto + 640 168 lineto + 642 170 lineto + 642 166 lineto + 644 176 lineto + 658 180 lineto + 230 180 lineto + 226 176 lineto + 224 174 lineto + 224 162 lineto + 226 158 lineto + 230 154 lineto + 236 152 lineto + 240 152 lineto + 242 154 lineto + 660 154 lineto + 658 152 lineto + 664 154 lineto + 668 158 lineto + 670 162 lineto + 672 166 lineto + 672 556 lineto + 670 560 lineto + 668 564 lineto + 664 568 lineto + 658 570 lineto + 654 570 lineto + 654 568 lineto + 236 568 lineto + 236 570 lineto + 230 568 lineto + 226 564 lineto + 224 560 lineto + 224 548 lineto + 226 546 lineto + 230 542 lineto + 236 540 lineto +closepath +%end path +fill +) def + +/Diamond +( +newpath +%new path + 678 424 moveto + 682 434 lineto + 680 434 lineto + 604 356 528 280 452 204 curveto + 450 202 lineto + 450 194 lineto + 452 204 lineto + 466 210 lineto + 462 210 lineto + 456 208 lineto + 452 204 lineto + 466 210 lineto + 476 204 lineto + 472 208 lineto + 466 210 lineto + 476 204 lineto + 480 198 lineto + 478 202 lineto + 476 204 lineto + 476 206 lineto + 398 282 322 358 246 436 curveto + 248 434 lineto + 250 428 lineto + 248 416 lineto + 248 418 lineto + 324 494 400 570 478 648 curveto + 476 646 lineto + 478 650 lineto + 480 654 lineto + 480 658 lineto + 476 646 lineto + 462 640 lineto + 466 640 lineto + 472 642 lineto + 476 646 lineto + 462 640 lineto + 452 646 lineto + 456 642 lineto + 462 640 lineto + 452 646 lineto + 450 654 lineto + 450 650 lineto + 452 646 lineto + 454 646 lineto + 530 568 606 492 682 416 curveto + 678 424 lineto +closepath +%end path +%new path + 708 428 moveto + 708 432 lineto + 706 434 lineto + 704 436 lineto + 628 512 552 588 476 666 curveto + 476 664 lineto + 472 668 lineto + 466 670 lineto + 462 670 lineto + 456 668 lineto + 452 664 lineto + 374 586 298 510 222 434 curveto + 224 434 lineto + 222 432 lineto + 220 428 lineto + 220 424 lineto + 222 420 lineto + 224 416 lineto + 300 338 376 262 454 186 curveto + 452 186 lineto + 456 182 lineto + 462 180 lineto + 466 180 lineto + 472 182 lineto + 476 186 lineto + 478 188 lineto + 554 264 630 340 706 418 curveto + 706 416 lineto + 708 420 lineto + 708 428 lineto +closepath +%end path +fill +) def + +/Square +( +newpath +%new path + 272 606 moveto + 258 600 lineto + 262 600 lineto + 264 602 lineto + 644 602 lineto + 642 600 lineto + 648 602 lineto + 652 606 lineto + 638 600 lineto + 628 606 lineto + 632 602 lineto + 638 600 lineto + 628 606 lineto + 626 614 lineto + 626 610 lineto + 628 606 lineto + 626 614 lineto + 628 624 lineto + 626 622 lineto + 626 618 lineto + 624 616 lineto + 624 236 lineto + 626 238 lineto + 626 234 lineto + 628 244 lineto + 642 250 lineto + 258 250 lineto + 252 248 lineto + 248 244 lineto + 262 250 lineto + 272 244 lineto + 268 248 lineto + 262 250 lineto + 272 244 lineto + 276 238 lineto + 274 242 lineto + 272 244 lineto + 276 238 lineto + 272 226 lineto + 274 230 lineto + 276 234 lineto + 276 618 lineto + 272 606 lineto +closepath +%end path +%new path + 248 624 moveto + 246 622 lineto + 246 618 lineto + 244 616 lineto + 244 236 lineto + 246 238 lineto + 246 230 lineto + 248 226 lineto + 252 222 lineto + 258 220 lineto + 262 220 lineto + 264 222 lineto + 644 222 lineto + 642 220 lineto + 648 222 lineto + 652 226 lineto + 654 230 lineto + 656 234 lineto + 656 618 lineto + 654 622 lineto + 652 624 lineto + 648 628 lineto + 642 630 lineto + 258 630 lineto + 252 628 lineto + 248 624 lineto +closepath +%end path +fill +) def + +/Bowtie_operator +( +newpath +%new path + 252 218 moveto + 254 218 lineto + 386 352 518 484 652 618 curveto + 650 618 lineto + 652 620 lineto + 654 624 lineto + 654 628 lineto + 650 618 lineto + 636 612 lineto + 640 612 lineto + 646 614 lineto + 650 618 lineto + 636 612 lineto + 626 618 lineto + 630 614 lineto + 636 612 lineto + 626 618 lineto + 624 624 lineto + 624 620 lineto + 626 618 lineto + 624 624 lineto + 626 636 lineto + 624 632 lineto + 624 628 lineto + 622 628 lineto + 622 228 lineto + 624 228 lineto + 624 224 lineto + 626 236 lineto + 640 242 lineto + 636 242 lineto + 630 240 lineto + 626 236 lineto + 640 242 lineto + 650 236 lineto + 646 240 lineto + 640 242 lineto + 650 236 lineto + 654 228 lineto + 652 232 lineto + 650 236 lineto + 516 370 384 502 252 636 curveto + 248 640 lineto + 242 642 lineto + 238 642 lineto + 232 640 lineto + 228 636 lineto + 226 632 lineto + 226 628 lineto + 224 628 lineto + 224 228 lineto + 226 228 lineto + 226 220 lineto + 228 218 lineto + 232 214 lineto + 238 212 lineto + 242 212 lineto + 248 214 lineto + 252 218 lineto +closepath +%end path +%new path + 256 228 moveto + 252 218 lineto + 254 220 lineto + 256 224 lineto + 256 628 lineto + 252 618 lineto + 238 612 lineto + 242 612 lineto + 248 614 lineto + 252 618 lineto + 238 612 lineto + 228 618 lineto + 232 614 lineto + 238 612 lineto + 228 618 lineto + 226 624 lineto + 226 620 lineto + 228 618 lineto + 230 616 lineto + 362 482 494 350 628 216 curveto + 626 218 lineto + 630 214 lineto + 636 212 lineto + 640 212 lineto + 646 214 lineto + 650 218 lineto + 652 220 lineto + 654 224 lineto + 654 628 lineto + 652 632 lineto + 650 636 lineto + 646 640 lineto + 640 642 lineto + 636 642 lineto + 630 640 lineto + 626 636 lineto + 626 634 lineto + 492 500 360 368 228 234 curveto + 228 236 lineto + 226 232 lineto + 226 224 lineto + 228 236 lineto + 242 242 lineto + 238 242 lineto + 232 240 lineto + 228 236 lineto + 242 242 lineto + 252 236 lineto + 248 240 lineto + 242 242 lineto + 252 236 lineto + 256 228 lineto + 254 232 lineto + 252 236 lineto + 256 228 lineto +closepath +%end path +fill +) def + +/Upside-down_Uppercase_Greek_Omega +( +newpath +%new path + 510 662 moveto + 510 624 518 590 530 556 curveto + 528 558 lineto + 530 554 lineto + 544 516 558 480 572 442 curveto + 570 444 lineto + 570 446 lineto + 582 412 590 378 590 342 curveto + 588 342 lineto + 590 340 lineto + 588 342 lineto + 590 348 lineto + 588 344 lineto + 588 320 584 300 578 278 curveto + 578 280 lineto + 580 282 lineto + 578 282 lineto + 572 260 562 240 546 224 curveto + 544 222 542 222 542 220 curveto + 542 220 lineto + 550 224 lineto + 546 224 lineto + 544 222 lineto + 528 206 506 192 484 186 curveto + 488 188 lineto + 486 186 lineto + 470 180 454 180 438 180 curveto + 436 180 lineto + 432 176 lineto + 440 180 lineto + 446 176 lineto + 444 180 lineto + 440 180 lineto + 422 180 406 182 390 188 curveto + 394 186 lineto + 392 188 lineto + 370 194 348 208 332 224 curveto + 330 224 lineto + 336 220 lineto + 336 220 lineto + 334 222 lineto + 334 224 332 224 330 226 curveto + 314 242 304 262 298 284 curveto + 298 282 lineto + 300 280 lineto + 298 280 lineto + 292 302 288 322 288 346 curveto + 290 344 lineto + 288 348 lineto + 290 344 lineto + 288 340 lineto + 290 342 lineto + 290 344 lineto + 290 380 298 414 310 448 curveto + 308 446 lineto + 308 444 lineto + 322 482 336 518 350 556 curveto + 348 554 lineto + 350 558 lineto + 362 592 370 626 370 664 curveto + 370 664 lineto + 368 668 lineto + 366 670 lineto + 362 672 lineto + 360 672 lineto + 360 670 lineto + 358 670 lineto + 360 672 lineto + 356 670 lineto + 354 668 lineto + 352 664 lineto + 352 644 348 626 342 608 curveto + 344 608 lineto + 344 610 lineto + 318 536 254 476 228 402 curveto + 230 402 lineto + 228 400 lineto + 228 398 lineto + 222 380 218 362 218 344 curveto + 220 344 lineto + 220 342 lineto + 220 326 222 310 228 296 curveto + 226 298 lineto + 228 294 lineto + 236 270 250 248 268 230 curveto + 270 228 lineto + 272 226 lineto + 276 222 282 218 286 214 curveto + 306 196 330 184 356 178 curveto + 358 178 lineto + 358 176 lineto + 384 168 412 164 440 164 curveto + 440 164 lineto + 442 166 lineto + 468 166 496 170 522 178 curveto + 524 178 lineto + 524 180 lineto + 550 186 574 198 594 216 curveto + 598 220 604 224 608 228 curveto + 610 230 lineto + 612 232 lineto + 630 250 644 272 652 296 curveto + 650 294 lineto + 652 298 lineto + 658 312 660 328 660 344 curveto + 660 344 lineto + 658 346 lineto + 658 364 654 382 648 400 curveto + 650 400 lineto + 648 402 lineto + 648 404 lineto + 622 478 558 538 532 612 curveto + 534 612 lineto + 534 610 lineto + 528 628 524 646 524 666 curveto + 526 664 lineto + 524 668 lineto + 522 670 lineto + 518 672 lineto + 516 672 lineto + 516 672 lineto + 514 670 lineto + 510 668 lineto + 510 662 lineto +closepath +%end path +fill +%new path + 656 558 moveto + 664 558 lineto + 666 562 lineto + 668 564 lineto + 668 566 lineto + 666 568 lineto + 658 600 650 632 642 666 curveto + 644 664 lineto + 642 668 lineto + 640 670 lineto + 636 672 lineto + 634 672 lineto + 634 670 lineto + 516 670 lineto + 516 672 lineto + 514 670 lineto + 510 668 lineto + 510 662 lineto + 510 652 512 642 512 632 curveto + 512 630 lineto + 516 628 lineto + 518 626 lineto + 520 626 lineto + 522 628 lineto + 582 628 lineto + 580 626 lineto + 584 628 lineto + 586 630 lineto + 578 626 lineto + 572 630 lineto + 576 628 lineto + 578 626 lineto + 580 626 lineto + 596 626 620 626 630 622 curveto + 630 624 lineto + 628 624 lineto + 630 622 632 622 632 620 curveto + 634 620 lineto + 632 622 lineto + 636 620 lineto + 630 624 lineto + 628 628 lineto + 630 624 lineto + 634 620 636 614 638 606 curveto + 636 610 lineto + 638 608 lineto + 642 594 646 576 650 564 curveto + 648 564 lineto + 650 562 lineto + 652 558 lineto + 656 558 lineto +closepath +%end path +fill +%new path + 228 562 moveto + 230 564 lineto + 230 566 lineto + 234 578 238 596 242 610 curveto + 240 606 lineto + 242 608 lineto + 244 616 246 622 250 626 curveto + 248 624 lineto + 250 628 lineto + 250 630 lineto + 248 624 lineto + 240 620 lineto + 242 620 lineto + 246 622 lineto + 248 622 lineto + 248 624 250 624 252 626 curveto + 252 624 lineto + 250 624 lineto + 260 628 284 628 300 628 curveto + 360 628 lineto + 360 626 lineto + 362 628 lineto + 366 630 lineto + 366 634 lineto + 368 634 lineto + 368 644 370 654 370 664 curveto + 368 662 lineto + 368 668 lineto + 364 670 lineto + 362 672 lineto + 360 672 lineto + 358 670 lineto + 242 670 lineto + 242 672 lineto + 240 670 lineto + 236 668 lineto + 236 664 lineto + 234 664 lineto + 226 630 218 598 210 566 curveto + 212 566 lineto + 212 562 lineto + 216 558 lineto + 226 558 lineto + 228 562 lineto +closepath +%end path +fill +) def + +/Leads_to_character_extension +( +newpath +%new path + 192 352 moveto + 202 366 214 380 226 392 curveto + 226 390 lineto + 228 394 lineto + 228 402 lineto + 226 390 lineto + 212 384 lineto + 216 384 lineto + 222 386 lineto + 222 388 lineto + 240 404 258 418 278 426 curveto + 278 424 lineto + 272 422 lineto + 272 424 lineto + 282 426 292 428 302 428 curveto + 308 430 lineto + 312 434 lineto + 298 428 lineto + 288 434 lineto + 292 430 lineto + 298 428 lineto + 298 426 lineto + 308 426 318 424 328 422 curveto + 326 422 lineto + 320 424 lineto + 322 424 lineto + 342 416 360 402 378 386 curveto + 376 386 lineto + 382 384 lineto + 372 390 lineto + 370 398 lineto + 370 394 lineto + 372 390 lineto + 374 390 lineto + 386 378 398 364 408 350 curveto + 418 336 430 322 442 310 curveto + 442 312 lineto + 446 308 lineto + 446 306 lineto + 464 290 482 276 502 268 curveto + 502 270 lineto + 508 268 lineto + 508 266 lineto + 518 264 528 262 538 262 curveto + 538 264 lineto + 542 264 lineto + 552 264 562 266 572 268 curveto + 570 268 lineto + 576 270 lineto + 578 270 lineto + 598 278 616 292 634 308 curveto + 632 308 lineto + 636 312 lineto + 638 312 lineto + 650 324 662 338 672 352 curveto + 674 354 lineto + 674 366 lineto + 672 370 lineto + 668 374 lineto + 662 376 lineto + 658 376 lineto + 652 374 lineto + 648 370 lineto + 646 368 lineto + 636 354 624 340 612 328 curveto + 612 330 lineto + 610 326 lineto + 610 318 lineto + 612 330 lineto + 626 336 lineto + 622 336 lineto + 616 334 lineto + 616 332 lineto + 598 316 580 302 560 294 curveto + 560 296 lineto + 566 298 lineto + 566 296 lineto + 556 294 546 292 536 292 curveto + 538 294 lineto + 532 292 lineto + 528 288 lineto + 542 294 lineto + 552 288 lineto + 548 292 lineto + 542 294 lineto + 540 294 lineto + 530 294 520 296 510 298 curveto + 512 298 lineto + 518 296 lineto + 516 296 lineto + 496 304 478 318 460 334 curveto + 462 334 lineto + 456 336 lineto + 466 330 lineto + 468 322 lineto + 468 326 lineto + 466 330 lineto + 464 330 lineto + 452 342 440 356 430 370 curveto + 420 384 408 398 396 410 curveto + 396 408 lineto + 392 412 lineto + 392 414 lineto + 374 430 356 444 336 452 curveto + 336 450 lineto + 330 452 lineto + 330 454 lineto + 320 456 310 458 300 458 curveto + 298 458 lineto + 296 456 lineto + 286 456 276 454 266 452 curveto + 268 452 lineto + 262 450 lineto + 260 450 lineto + 240 442 222 428 204 412 curveto + 206 412 lineto + 202 408 lineto + 200 408 lineto + 188 396 178 382 168 368 curveto + 168 370 lineto + 166 366 lineto + 166 354 lineto + 168 352 lineto + 172 348 lineto + 178 346 lineto + 182 346 lineto + 188 348 lineto + 192 352 lineto +closepath +%end path +fill +) def + +/Leads_to_character_with_arrowhead +( +newpath +%new path + 858 364 moveto + 856 368 lineto + 854 368 lineto + 828 378 804 394 784 414 curveto + 786 412 lineto + 782 414 lineto + 788 410 lineto + 790 406 lineto + 788 410 lineto + 768 432 750 456 740 486 curveto + 740 484 lineto + 738 488 lineto + 724 488 lineto + 720 484 lineto + 720 476 lineto + 722 476 lineto + 734 446 750 420 772 398 curveto + 774 396 lineto + 776 394 lineto + 792 378 812 362 834 352 curveto + 834 354 lineto + 836 352 lineto + 830 356 lineto + 830 362 lineto + 828 360 lineto + 830 360 lineto + 830 364 lineto + 838 368 lineto + 836 368 lineto + 834 366 lineto + 832 366 lineto + 810 356 790 340 774 324 curveto + 772 322 lineto + 770 320 lineto + 748 298 732 272 720 242 curveto + 720 236 lineto + 724 232 lineto + 738 232 lineto + 740 236 lineto + 742 236 lineto + 752 266 770 290 790 312 curveto + 788 310 lineto + 790 314 lineto + 790 316 lineto + 788 310 lineto + 780 306 lineto + 782 306 lineto + 786 308 lineto + 806 328 830 344 856 354 curveto + 858 356 lineto + 860 360 lineto + 860 362 lineto + 858 364 lineto +closepath +%end path +%new path + 192 352 moveto + 202 366 214 380 226 392 curveto + 226 390 lineto + 228 394 lineto + 228 402 lineto + 226 390 lineto + 212 384 lineto + 216 384 lineto + 222 386 lineto + 222 388 lineto + 240 404 258 418 278 426 curveto + 278 424 lineto + 272 422 lineto + 272 424 lineto + 282 426 292 428 302 428 curveto + 308 430 lineto + 312 434 lineto + 298 428 lineto + 288 434 lineto + 292 430 lineto + 298 428 lineto + 298 426 lineto + 308 426 318 424 328 422 curveto + 326 422 lineto + 320 424 lineto + 322 424 lineto + 342 416 360 402 378 386 curveto + 376 386 lineto + 382 384 lineto + 372 390 lineto + 370 398 lineto + 370 394 lineto + 372 390 lineto + 374 390 lineto + 386 378 398 364 408 350 curveto + 418 336 430 322 442 310 curveto + 442 312 lineto + 446 308 lineto + 446 306 lineto + 464 290 482 276 502 268 curveto + 502 270 lineto + 508 268 lineto + 508 266 lineto + 518 264 528 262 538 262 curveto + 538 264 lineto + 542 264 lineto + 552 264 562 266 570 268 curveto + 576 270 lineto + 620 286 654 328 698 344 curveto + 696 342 lineto + 690 340 lineto + 692 342 lineto + 700 344 710 346 720 346 curveto + 824 346 lineto + 830 348 lineto + 834 352 lineto + 836 354 lineto + 838 358 lineto + 838 362 lineto + 836 366 lineto + 834 370 lineto + 830 374 lineto + 824 376 lineto + 820 376 lineto + 820 374 lineto + 714 374 lineto + 704 374 694 372 686 370 curveto + 680 368 lineto + 636 352 602 310 558 294 curveto + 560 296 lineto + 566 298 lineto + 564 296 lineto + 556 294 546 292 536 292 curveto + 538 294 lineto + 532 292 lineto + 528 288 lineto + 542 294 lineto + 552 288 lineto + 548 292 lineto + 542 294 lineto + 540 294 lineto + 530 294 520 296 510 298 curveto + 512 298 lineto + 518 296 lineto + 516 296 lineto + 496 304 478 318 460 334 curveto + 462 334 lineto + 456 336 lineto + 466 330 lineto + 468 322 lineto + 468 326 lineto + 466 330 lineto + 464 330 lineto + 452 342 440 356 430 370 curveto + 420 384 408 398 396 410 curveto + 396 408 lineto + 392 412 lineto + 392 414 lineto + 374 430 356 444 336 452 curveto + 336 450 lineto + 330 452 lineto + 330 454 lineto + 320 456 310 458 300 458 curveto + 298 458 lineto + 296 456 lineto + 286 456 276 454 266 452 curveto + 268 452 lineto + 262 450 lineto + 260 450 lineto + 240 442 222 428 204 412 curveto + 206 412 lineto + 202 408 lineto + 200 408 lineto + 188 396 178 382 168 368 curveto + 168 370 lineto + 166 366 lineto + 166 354 lineto + 168 352 lineto + 172 348 lineto + 178 346 lineto + 182 346 lineto + 188 348 lineto + 192 352 lineto +closepath +%end path +fill +) def + +/LASY_lhd_triangle +( +newpath +%new path + 666 570 moveto + 662 570 lineto + 656 568 lineto + 656 566 lineto + 518 502 382 436 244 372 curveto + 246 374 lineto + 242 370 lineto + 240 366 lineto + 238 362 lineto + 238 358 lineto + 240 354 lineto + 242 352 lineto + 246 348 lineto + 246 346 lineto + 384 282 520 216 658 154 curveto + 656 154 lineto + 662 152 lineto + 666 152 lineto + 672 154 lineto + 676 158 lineto + 678 162 lineto + 680 166 lineto + 680 556 lineto + 678 560 lineto + 676 564 lineto + 672 568 lineto + 666 570 lineto +closepath +%end path +%new path + 650 552 moveto + 652 564 lineto + 650 560 lineto + 650 556 lineto + 648 556 lineto + 648 168 lineto + 650 170 lineto + 650 166 lineto + 652 176 lineto + 666 180 lineto + 656 180 lineto + 652 176 lineto + 666 180 lineto + 676 176 lineto + 672 180 lineto + 534 244 398 310 260 374 curveto + 262 374 lineto + 256 376 lineto + 266 370 lineto + 268 362 lineto + 268 366 lineto + 266 370 lineto + 268 362 lineto + 266 352 lineto + 268 354 lineto + 268 362 lineto + 266 352 lineto + 252 346 lineto + 256 346 lineto + 262 348 lineto + 400 412 536 478 674 542 curveto + 672 542 lineto + 676 546 lineto + 662 540 lineto + 652 546 lineto + 656 542 lineto + 662 540 lineto + 652 546 lineto + 650 552 lineto + 650 548 lineto + 652 546 lineto + 650 552 lineto +closepath +%end path +fill +) def + +/LASY_unlhd_triangle +( +newpath +%new path + 666 638 moveto + 662 638 lineto + 656 636 lineto + 656 634 lineto + 518 570 382 504 244 440 curveto + 246 440 lineto + 242 436 lineto + 240 434 lineto + 238 430 lineto + 238 426 lineto + 240 422 lineto + 242 418 lineto + 246 414 lineto + 384 350 520 284 658 220 curveto + 656 220 lineto + 662 218 lineto + 666 218 lineto + 672 220 lineto + 676 224 lineto + 678 228 lineto + 680 232 lineto + 680 624 lineto + 678 628 lineto + 676 632 lineto + 672 636 lineto + 666 638 lineto +closepath +%end path +%new path + 650 620 moveto + 652 632 lineto + 650 628 lineto + 650 624 lineto + 648 624 lineto + 648 234 lineto + 650 236 lineto + 650 232 lineto + 652 242 lineto + 666 248 lineto + 662 248 lineto + 656 246 lineto + 652 242 lineto + 666 248 lineto + 676 242 lineto + 672 246 lineto + 672 248 lineto + 534 312 398 378 260 442 curveto + 262 440 lineto + 256 442 lineto + 266 436 lineto + 268 430 lineto + 268 434 lineto + 266 436 lineto + 268 430 lineto + 266 418 lineto + 268 422 lineto + 268 430 lineto + 266 418 lineto + 252 412 lineto + 256 412 lineto + 262 414 lineto + 262 416 lineto + 400 480 536 546 674 610 curveto + 672 610 lineto + 676 614 lineto + 662 608 lineto + 652 614 lineto + 656 610 lineto + 662 608 lineto + 652 614 lineto + 650 620 lineto + 650 616 lineto + 652 614 lineto + 650 620 lineto +closepath +%end path +%new path + 666 110 moveto + 252 110 lineto + 246 108 lineto + 242 104 lineto + 240 102 lineto + 238 98 lineto + 238 94 lineto + 240 90 lineto + 242 86 lineto + 246 82 lineto + 252 80 lineto + 256 80 lineto + 256 82 lineto + 668 82 lineto + 666 80 lineto + 672 82 lineto + 676 86 lineto + 678 90 lineto + 680 94 lineto + 680 98 lineto + 678 102 lineto + 676 104 lineto + 672 108 lineto + 666 110 lineto +closepath +%end path +fill +) def + +/LASY_rhd_triangle +( +newpath +%new path + 252 540 moveto + 242 546 lineto + 246 542 lineto + 246 540 lineto + 384 476 520 410 658 346 curveto + 656 348 lineto + 662 346 lineto + 652 352 lineto + 650 358 lineto + 650 354 lineto + 652 352 lineto + 650 358 lineto + 652 370 lineto + 650 366 lineto + 650 358 lineto + 652 370 lineto + 666 376 lineto + 662 376 lineto + 656 374 lineto + 656 372 lineto + 518 308 382 242 244 180 curveto + 246 180 lineto + 242 176 lineto + 256 180 lineto + 266 176 lineto + 262 180 lineto + 256 180 lineto + 266 176 lineto + 268 170 lineto + 268 174 lineto + 266 176 lineto + 268 170 lineto + 266 158 lineto + 268 162 lineto + 268 166 lineto + 270 166 lineto + 270 554 lineto + 268 552 lineto + 268 556 lineto + 266 546 lineto + 252 540 lineto + 256 540 lineto + 262 542 lineto + 266 546 lineto + 252 540 lineto +closepath +%end path +%new path + 242 564 moveto + 240 560 lineto + 238 556 lineto + 238 166 lineto + 240 162 lineto + 242 158 lineto + 246 154 lineto + 252 152 lineto + 256 152 lineto + 262 154 lineto + 262 156 lineto + 400 218 536 284 674 348 curveto + 672 348 lineto + 676 352 lineto + 678 354 lineto + 680 358 lineto + 680 362 lineto + 678 366 lineto + 676 370 lineto + 672 374 lineto + 534 438 398 504 260 568 curveto + 262 568 lineto + 256 570 lineto + 252 570 lineto + 246 568 lineto + 242 564 lineto +closepath +%end path +fill +) def + +/LASY_unrhd_triangle +( +newpath +%new path + 252 608 moveto + 242 614 lineto + 246 610 lineto + 246 608 lineto + 384 544 520 478 658 414 curveto + 656 414 lineto + 662 412 lineto + 652 418 lineto + 650 426 lineto + 650 422 lineto + 652 418 lineto + 650 426 lineto + 652 436 lineto + 650 434 lineto + 650 426 lineto + 652 436 lineto + 666 442 lineto + 662 442 lineto + 656 440 lineto + 518 376 382 310 244 246 curveto + 246 246 lineto + 242 242 lineto + 256 248 lineto + 266 242 lineto + 262 246 lineto + 256 248 lineto + 266 242 lineto + 268 236 lineto + 268 240 lineto + 266 242 lineto + 268 236 lineto + 266 224 lineto + 268 228 lineto + 268 232 lineto + 270 232 lineto + 270 622 lineto + 268 620 lineto + 268 624 lineto + 266 614 lineto + 252 608 lineto + 256 608 lineto + 262 610 lineto + 266 614 lineto + 252 608 lineto +closepath +%end path +%new path + 242 632 moveto + 240 628 lineto + 238 624 lineto + 238 232 lineto + 240 228 lineto + 242 224 lineto + 246 220 lineto + 252 218 lineto + 256 218 lineto + 262 220 lineto + 262 222 lineto + 400 286 536 352 674 416 curveto + 672 414 lineto + 676 418 lineto + 678 422 lineto + 680 426 lineto + 680 430 lineto + 678 434 lineto + 676 436 lineto + 672 440 lineto + 672 442 lineto + 534 506 398 572 260 636 curveto + 262 636 lineto + 256 638 lineto + 252 638 lineto + 246 636 lineto + 242 632 lineto +closepath +%end path +%new path + 252 80 moveto + 256 80 lineto + 256 82 lineto + 668 82 lineto + 666 80 lineto + 672 82 lineto + 676 86 lineto + 678 90 lineto + 680 94 lineto + 680 98 lineto + 678 102 lineto + 676 104 lineto + 672 108 lineto + 666 110 lineto + 252 110 lineto + 246 108 lineto + 242 104 lineto + 240 102 lineto + 238 98 lineto + 238 94 lineto + 240 90 lineto + 242 86 lineto + 246 82 lineto + 252 80 lineto +closepath +%end path +fill +) def + +end % of CharDefs dictionary + +Encoding 65 /Leftward_arrowhead put +Encoding 66 /Rightward_arrowhead put +Encoding 67 /Upward_arrowhead put +Encoding 68 /Downward_arrowhead put +Encoding 69 /Square_subset_sign put +Encoding 70 /Square_superset_sign put +Encoding 71 /Diamond put +Encoding 72 /Square put +Encoding 73 /Bowtie_operator put +Encoding 74 /Upside-down_Uppercase_Greek_Omega put +Encoding 75 /Leads_to_character_extension put +Encoding 76 /Leads_to_character_with_arrowhead put +Encoding 77 /LASY_lhd_triangle put +Encoding 78 /LASY_unlhd_triangle put +Encoding 79 /LASY_rhd_triangle put +Encoding 80 /LASY_unrhd_triangle put + +Metrics + begin +/Leftward_arrowhead 139 fudge add def +/Rightward_arrowhead 141 fudge add def +/Upward_arrowhead 259 fudge add def +/Downward_arrowhead 259 fudge add def +/Square_subset_sign 449 fudge add def +/Square_superset_sign 449 fudge add def +/Diamond 489 fudge add def +/Square 413 fudge add def +/Bowtie_operator 431 fudge add def +/Upside-down_Uppercase_Greek_Omega 459 fudge add def +/Leads_to_character_extension 509 fudge add def +/Leads_to_character_with_arrowhead 695 fudge add def +/LASY_lhd_triangle 443 fudge add def +/LASY_unlhd_triangle 443 fudge add def +/LASY_rhd_triangle 443 fudge add def +/LASY_unrhd_triangle 443 fudge add def +/.notdef 225 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 + 1.3 1.3 scale + 0.2 setflat + 0.2 setlinewidth + charwdth 10 + 0 -100 + charwdth 1000 + setcachedevice + -166 0 translate + charproc cvx exec + grestore + end + } def + /FontBBox [166 fudge sub 42 860 672] + + end + + /Simon SimonFont definefont pop + + /Simon findfont 13 scalefont setfont + 100 710 moveto (EF GH IKL M N O P) show + showpage diff --git a/fonts/utilities/mf2ps/doc/printsamples/logo.ps b/fonts/utilities/mf2ps/doc/printsamples/logo.ps new file mode 100644 index 0000000000..fbd242302b --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/logo.ps @@ -0,0 +1,1096 @@ +%! Simon font +%0 serverdict begin exitserver +/TBuildCharDict 10 dict def +/SimonFont 10 dict def +/fudge 150 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 + +/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 + +Metrics + begin +/.notdef 0 def +/M 466 fudge add def +/E 346 fudge add def +/T 414 fudge 80 sub add def +/A 370 fudge add def +/F 346 fudge add def +/O 434 fudge add def +/N 370 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 + 1.1 1.3 scale + % bounding box : [180 180 700 700] + 0.2 setflat + 0.2 setlinewidth + charwdth 10 + 0 -100 + charwdth 80 add 1000 + setcachedevice + -182 0 translate + charproc cvx exec + grestore + end + } def + /FontBBox [182 fudge sub 180 700 620] def + + end + + /Simon SimonFont definefont pop + + /Simon findfont 11 scalefont setfont + 100 210 moveto (METAFONT) show + showpage + diff --git a/fonts/utilities/mf2ps/doc/printsamples/sy.ps b/fonts/utilities/mf2ps/doc/printsamples/sy.ps new file mode 100644 index 0000000000..1e020e5833 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/sy.ps @@ -0,0 +1,415 @@ +%! for use by dvi2ps Version 2.00 +% a start (Ha!) at a TeX mode for PostScript. +% The following defines procedures assumed and used by program "dvi2ps" +% and must be downloaded or sent as a header file for all TeX jobs. + +% By: Neal Holtz, Carleton University, Ottawa, Canada +% <holtz@cascade.carleton.cdn> +% <holtz%cascade.carleton.cdn@ubc.csnet> +% June, 1985 +% Last Modified: Aug 25/85 +% oystr 12-Feb-1986 +% Changed @dc macro to check for a badly formed bits in character +% definitions. Can get a <> bit map if a character is not actually +% in the font file. This is absolutely guaranteed to drive the +% printer nuts - it will appear that you can no longer define a +% new font, although the built-ins will still be there. +% pam 5-Jan-1988 +% Expanded arrays for 256 character gf fonts. + +% To convert this file into a downloaded file instead of a header +% file, uncomment all of the lines beginning with %-% + +%-%0000000 % Server loop exit password +%-%serverdict begin exitserver +%-% systemdict /statusdict known +%-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} +%-% if + +/TeXDict 200 dict def % define a working dictionary +TeXDict begin % start using it. + + % units are in "dots" (300/inch) +/Resolution 300 def +/Inch {Resolution mul} def % converts inches to internal units + +/Mtrx 6 array def + +%%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%% + +% dvi2ps will output coordinates in the TeX system ([0,0] 1" down and in +% from top left, with y +ive downward). The default PostScript system +% is [0,0] at bottom left, y +ive up. The Many Matrix Machinations in +% the following code are an attempt to reconcile that. The intent is to +% specify the scaling as 1 and have only translations in the matrix to +% properly position the text. Caution: the default device matrices are +% *not* the same in all PostScript devices; that should not matter in most +% of the code below (except for lanscape mode -- in that, rotations of +% -90 degrees resulted in the the rotation matrix [ e 1 ] +% [ 1 e ] +% where the "e"s were almost exactly but not quite unlike zeros. + +/@letter + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top (these are not exactly 1" + Mtrx currentmatrix pop % and -10" because margins aren't set exactly right) + } def + % note mode is like letter, except it uses less VM +/@note + { note initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@landscape + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. +% -90 rotate % it would be nice to be able to do this + Mtrx currentmatrix 0 0.0 put % but instead we have to do things like this because what + Mtrx 1 -1.0 put % should be zero terms aren't (and text comes out wobbly) + Mtrx 2 1.0 put % Fie! This likely will not work on QMS printers + Mtrx 3 0.0 put % (nor on others where the device matrix is not like + Mtrx setmatrix % like it is on the LaserWriter). + 300 310 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@legal + { legal initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 295 -3880 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@manualfeed + { statusdict /manualfeed true put + } def + % n @copies - set number of copies +/@copies + { /#copies exch def + } def + +%%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%% + +/@newfont % id @newfont - -- initialize a new font dictionary + { /newname exch def + pop + newname 7 dict def % allocate new font dictionary + newname load begin + /FontType 3 def + /FontMatrix [1 0 0 -1 0 0] def + /FontBBox [0 0 1 1] def +% pam 5-Jan-1988 array enlarged for gf fonts + /BitMaps 256 array def + /BuildChar {CharBuilder} def + /Encoding 256 array def + 0 1 255 {Encoding exch /.undef put} for + end + newname newname load definefont pop + } def + + +% the following is the only character builder we need. it looks up the +% char data in the BitMaps array, and paints the character if possible. +% char data -- a bitmap descriptor -- is an array of length 6, of +% which the various slots are: + +/ch-image {ch-data 0 get} def % the hex string image +/ch-width {ch-data 1 get} def % the number of pixels across +/ch-height {ch-data 2 get} def % the number of pixels tall +/ch-xoff {ch-data 3 get} def % number of pixels below origin +/ch-yoff {ch-data 4 get} def % number of pixels to left of origin +/ch-tfmw {ch-data 5 get} def % spacing to next character + +/CharBuilder % fontdict ch Charbuilder - -- image one character + { /ch-code exch def % save the char code + /font-dict exch def % and the font dict. + /ch-data font-dict /BitMaps get ch-code get def % get the bitmap descriptor for char + ch-data null eq not + { ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub + setcachedevice + ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff] + {ch-image} imagemask + } + if + } def + + +/@sf % fontdict @sf - -- make that the current font + { setfont() pop + } def + + % in the following, the font-cacheing mechanism requires that + % a name unique in the particular font be generated + +/@dc % char-data ch @dc - -- define a new character bitmap in current font + { /ch-code exch def +% ++oystr 12-Feb-86++ + dup 0 get + length 2 lt + { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null + if +% --oystr 12-Feb-86-- + /ch-data exch def + currentfont /BitMaps get ch-code ch-data put + currentfont /Encoding get ch-code + dup ( ) cvs cvn % generate a unique name simply from the character code + put + } def + +/@bop0 % n @bop0 - -- begin the char def section of a new page + { + } def + +/@bop1 % n @bop1 - -- begin a brand new page + { pop + erasepage initgraphics + Mtrx setmatrix + /SaveImage save def() pop + } def + +/@eop % - @eop - -- end a page + { showpage + SaveImage restore() pop + } def + +/@start % - @start - -- start everything + { @letter % (there is not much to do) + } def + +/@end % - @end - -- done the whole shebang + { end + } def + +/p % x y p - -- move to position + { moveto + } def + +/r % x r - -- move right + { 0 rmoveto + } def + +/s % string s - -- show the string + { show + } def + +/c % ch c - -- show the character (code given) + { c-string exch 0 exch put + c-string show + } def + +/c-string ( ) def + +/ru % dx dy ru - -- set a rule (rectangle) + { /dy exch neg def % because dy is height up from bottom + /dx exch def + /x currentpoint /y exch def def % remember current point + newpath x y moveto + dx 0 rlineto + 0 dy rlineto + dx neg 0 rlineto + closepath fill + x y moveto + } def + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the \special command junk +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The structure of the PostScript produced by dvi2ps for \special is: +% @beginspecial +% - any number of @hsize, @hoffset, @hscale, etc., commands +% @setspecial +% - the users file of PostScript commands +% @endspecial + +% The @beginspecial command recognizes whether the Macintosh Laserprep +% has been loaded or not, and redfines some Mac commands if so. +% The @setspecial handles the users shifting, scaling, clipping commands + + +% The following are user settable options from the \special command. + +/@SpecialDefaults + { /hs 8.5 Inch def + /vs 11 Inch def + /ho 0 def + /vo 0 def + /hsc 1 def + /vsc 1 def + /CLIP false def + } def + +% d @hsize - specify a horizontal clipping dimension +% these 2 are executed before the MacDraw initializations +/@hsize {/hs exch def /CLIP true def} def +/@vsize {/vs exch def /CLIP true def} def +% d @hoffset - specify a shift for the drwgs +/@hoffset {/ho exch def} def +/@voffset {/vo excl def} def +% s @hscale - set scale factor +/@hscale {/hsc exch def} def +/@vscale {/vsc exch def} def + +/@setclipper + { hsc vsc scale + CLIP + { newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip } + if + } def + +% this will be invoked as the result of a \special command (for the +% inclusion of PostScript graphics). The basic idea is to change all +% scaling and graphics back to defaults, but to shift the origin +% to the current position on the page. Due to TeXnical difficulties, +% we only set the y-origin. The x-origin is set at the left edge of +% the page. + +/@beginspecial % - @beginspecial - -- enter special mode + { gsave /SpecialSave save def + % the following magic incantation establishes the current point as + % the users origin, and reverts back to default scalings, rotations + currentpoint transform initgraphics itransform translate + @SpecialDefaults % setup default offsets, scales, sizes + @MacSetUp % fix up Mac stuff + } def + +/@setspecial % to setup user specified offsets, scales, sizes (for clipping) + { + MacDrwgs + {md begin /pxt ho def /pyt vo neg def end} + {ho vo translate @setclipper} + ifelse + } def + +/@endspecial % - @endspecial - -- leave special mode + { SpecialSave restore + grestore + } def + +/MacDrwgs false def % will get set if we think the Mac LaserPrep file has been loaded + + % - @MacSetUp - turn-off/fix-up all the MacDraw stuff that might hurt us + % we depend on 'psu' being the first procedure executed + % by a Mac document. We redefine 'psu' to adjust page + % translations, and to do all other the fixups required. + % This stuff will not harm other included PS files +/@MacSetUp + { userdict /md known % if md is defined + { userdict /md get type /dicttype eq % and if it is a dictionary + { /MacDrwgs true def + md begin % then redefine some stuff + /psu % redfine psu to set origins, etc. + /psu load + % this procedure contains almost all the fixup code + { /letter {} def % it is bad manners to execute the real + /note {} def % versions of these (clears page image, etc.) + /legal {} def + statusdict /waittimeout 300 put + /page {pop} def % no printing of pages + /pyt vo neg def % x & y pixel translations + /pxt ho def + } + concatprocs + def + /od % redefine od to set clipping region + /od load + { @setclipper } + concatprocs + def + end } + if } + if + } def + +% p1 p2 concatprocs p - concatenate procedures +/concatprocs + { /p2 exch cvlit def + /p1 exch cvlit def + /p p1 length p2 length add array def + p 0 p1 putinterval + p p1 length p2 putinterval + p cvx + } def + +end % revert to previous dictionary +TeXDict begin @start +%%Title: sy.dvi +%%Creator: dvi2ps +%%EndProlog +1 @bop0 +[ 360 ] /lasy10.360 @newfont +lasy10.360 @sf +[<7FFFFFFCFFFFFFFEC0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C000 + 0000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000 + C0000000C0000000C0000000FFFFFFFE7FFFFFFC> 32 30 -4 3 38.743] 60 @dc +[<7FFFFFFCFFFFFFFE000000060000000600000006000000060000000600000006000000060000000600000006000000060000 + 0006000000060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006 + 000000060000000600000006FFFFFFFE7FFFFFFC> 32 30 -3 3 38.743] 61 @dc +[<000020000000007000000000D8000000018C000000030600000006030000000C018000001800C00000300060000060003000 + 00C00018000180000C00030000060006000003000C0000018018000000C03000000060600000003060000000303000000060 + 18000000C00C00000180060000030003000006000180000C0000C000180000600030000030006000001800C000000C018000 + 0006030000000306000000018C00000000D8000000007000000000200000> 40 36 -1 1 39.435] 51 @dc +[<FFFFFFE0FFFFFFE0C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C000 + 0060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060C0000060 + FFFFFFE07FFFFFC0> 32 27 -5 -4 37.221] 50 @dc +[<40000018E0000038F0000078D80000D8CC000198C6000318C3000618C1800C18C0C01818C0603018C0306018C018C018C00D + 8018C0070018C0070018C00D8018C018C018C0306018C0603018C0C01818C1800C18C3000618C6000318CC000198D80000D8 + F0000078E000003840000018> 32 28 -3 -3 35.975] 49 @dc +[ 360 ] /cmsy10.360 @newfont +cmsy10.360 @sf +[<800007E00080001FF00080003FF800C000781C00C001E00E006003C006007007800300381E0003001FFC0001000FF8000100 + 07E0000100> 40 11 -3 -7 38.743] 24 @dc +lasy10.360 @sf +[<000000000600000000000300000000000300000001F00180000007FC018000000E0F00C000001803806000003000E0384000 + 60007FFCC000C0001FFE7001800000383803000000600E0E000000C007FC0000018001F00000018000000000030000000000 + 0300000000000600> 48 18 1 -3 49.812] 59 @dc +[ 300 ] /cmmi12.300 @newfont +cmmi12.300 @sf +[<0000001800000078000001E00000078000001E00000078000003E000000F8000003C000000F0000003C000000F0000003C00 + 0000F0000000F00000003C0000000F00000003C0000000F00000003C0000000F80000003E0000000780000001E0000000780 + 000001E00000007800000018> 32 28 -4 2 37.935] 60 @dc +cmsy10.360 @sf +[<FFFFFFFC7FFFFFF800000000000000000000000000000000000000000000000000000000000000000000000C0000003C0000 + 00F0000003C000000F0000003C000000F0000007C000001F00000078000001E00000078000001E00000078000000E0000000 + 780000001E0000000780000001E0000000780000001F00000007C0000000F00000003C0000000F00000003C0000000F00000 + 003C0000000C> 32 39 -4 7 38.743] 20 @dc +cmmi12.300 @sf +[<C0000000F00000003C0000000F00000003C0000000F00000003E0000000F80000001E0000000780000001E00000007800000 + 01E00000007800000078000001E00000078000001E00000078000001E000000F8000003E000000F0000003C000000F000000 + 3C000000F0000000C0000000> 32 28 -4 2 37.935] 62 @dc +cmsy10.360 @sf +[<FFFFFFFC7FFFFFF80000000000000000000000000000000000000000000000000000000000000000C0000000700000003C00 + 00000F00000003C0000000F00000003C0000000F80000003E0000000780000001E0000000780000001E0000000780000001C + 00000078000001E00000078000001E00000078000003E000000F8000003C000000F0000003C000000F0000003C000000F000 + 0000C0000000> 32 39 -4 7 38.743] 21 @dc +[ 300 ] /cmr12.300 @newfont +cmr12.300 @sf +[<FFFE07C003800380038003800380038003800380038003800380038003800380038003800380038003800380038003800380 + 0380038003800380F3800F8003800080> 16 33 -4 0 24.387] 49 @dc +1 @bop1 +lasy10.360 @sf +73 45 p (<=) s +14 r (32) s +14 r 49 c +cmsy10.360 @sf +0 r 24 c +lasy10.360 @sf +0 r 59 c +cmmi12.300 @sf +14 r 60 c +424 48 p 3 29 ru +cmsy10.360 @sf +448 45 p 20 c +480 41 p 3 27 ru +518 48 p 3 29 ru +cmmi12.300 @sf +514 45 p 62 c +567 41 p 3 27 ru +cmsy10.360 @sf +563 45 p 21 c +cmr12.300 @sf +963 2828 p 49 c +@eop +@end diff --git a/fonts/utilities/mf2ps/doc/printsamples/sy.tex b/fonts/utilities/mf2ps/doc/printsamples/sy.tex new file mode 100644 index 0000000000..7cb83ed5f3 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/sy.tex @@ -0,0 +1,11 @@ +\documentstyle [12pt] {article} + +\oddsidemargin 0in +\evensidemargin 0in +\topmargin -0.5in +\textheight 9.0in +\textwidth 6.5in + +\begin{document} +$ \sqsubset \sqsupset \Diamond \Box \Join \sim \leadsto \lhd \unlhd \rhd \unrhd $ +\end{document} diff --git a/fonts/utilities/mf2ps/doc/printsamples/tt.ps b/fonts/utilities/mf2ps/doc/printsamples/tt.ps new file mode 100644 index 0000000000..3989da772a --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/tt.ps @@ -0,0 +1,180 @@ +%!PS-Adobe-2.0 +%%Creator: dvips by Radical Eye Software +%%Title: tt.dvi +%%Pages: 1 -1 +%%BoundingBox: 0 0 612 792 +%%EndComments +%%BeginDocument: tex.pro +/TeXDict 200 dict def TeXDict begin /bdf{bind def}def /Inch{Resolution mul} +bdf /Dots{72 div Resolution mul}bdf /dopage{72 Resolution div dup neg scale +translate}bdf /@letter{Resolution dup -10 mul dopage}bdf /@note{@letter}bdf +/@a4{Resolution dup -10.6929133858 mul dopage}bdf /@translate{translate}bdf +/@scale{scale}bdf /@rotate{rotate}bdf /@landscape{[0 1 -1 0 0 0]concat +Resolution dup dopage}bdf /@legal{Resolution dup -13 mul dopage}bdf +/@manualfeed{statusdict /manualfeed true put}bdf /@copies{/#copies exch def} +bdf /@FontMatrix[1 0 0 -1 0 0]def /@FontBBox[0 0 1 1]def /dmystr(ZZf@@)def +/newname{dmystr cvn}bdf /df{/fontname exch def dmystr 2 fontname cvx(@@@)cvs +putinterval newname 7 dict def newname load begin /FontType 3 def /FontMatrix +@FontMatrix def /FontBBox @FontBBox def /BitMaps 256 array def /BuildChar{ +CharBuilder}def /Encoding TeXEncoding def end fontname{/foo setfont}2 array +copy cvx def fontname load 0 dmystr 5 string copy cvn cvx put}bdf /dfe{ +newname newname load definefont setfont}bdf /ch-image{ch-data 0 get}bdf +/ch-width{ch-data 1 get}bdf /ch-height{ch-data 2 get}bdf /ch-xoff{ch-data 3 +get}bdf /ch-yoff{ch-data 4 get}bdf /ch-tfmw{ch-data 5 get}bdf /CharBuilder{ +save 3 1 roll exch /BitMaps get exch get /ch-data exch def ch-data null ne{ +ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub +setcachedevice ch-width ch-height true[1 0 0 1 ch-xoff .1 sub ch-yoff .1 sub]{ +ch-image}imagemask}if restore}bdf /dc{/ch-code exch def dup 0 get length 1 lt{ +pop[<00>1 1 0 0 8.00]}if /ch-data exch def newname load /BitMaps get ch-code +ch-data put}bdf /bop{gsave /SaveImage save def 0 0 moveto}bdf /eop{clear +SaveImage restore showpage grestore}bdf /@start{/Resolution exch def +/TeXEncoding 256 array def 0 1 255{TeXEncoding exch 1 string dup 0 3 index put +cvn put}for}bdf /p{show}bdf /RuleMatrix[1 0 0 -1 -.1 -.1]def /BlackDots 8 +string def /v{gsave currentpoint translate false RuleMatrix{BlackDots} +imagemask grestore}bdf /a{moveto}bdf /delta 0 def /tail{dup /delta exch def 0 +rmoveto}bdf /b{exch p tail}bdf /c{p delta 4 sub tail}bdf /d{p delta 3 sub tail +}bdf /e{p delta 2 sub tail}bdf /f{p delta 1 sub tail}bdf /g{p delta 0 rmoveto} +bdf /h{p delta 1 add tail}bdf /i{p delta 2 add tail}bdf /j{p delta 3 add tail} +bdf /k{p delta 4 add tail}bdf /l{p -4 0 rmoveto}bdf /m{p -3 0 rmoveto}bdf /n{ +p -2 0 rmoveto}bdf /o{p -1 0 rmoveto}bdf /q{p 1 0 rmoveto}bdf /r{p 2 0 rmoveto +}bdf /s{p 3 0 rmoveto}bdf /t{p 4 0 rmoveto}bdf /w{0 rmoveto}bdf /x{0 exch +rmoveto}bdf /y{3 -1 roll p moveto}bdf /bos{/section save def}bdf /eos{clear +section restore}bdf /SDict 200 dict def SDict begin /@SpecialDefaults{/hs 8.5 +Inch def /vs 11 Inch def /ho 0 def /vo 0 def /hsc 1 def /vsc 1 def /ang 0 def +/CLIP false def /BBcalc false def}bdf /@hsize{/hs exch def /CLIP true def}bdf +/@vsize{/vs exch def /CLIP true def}bdf /@hoffset{/ho exch def}bdf /@voffset{ +/vo exch def}bdf /@hscale{@scaleunit div /hsc exch def}bdf /@vscale{ +@scaleunit div /vsc exch def}bdf /@angle{/ang exch def}bdf /@scaleunit 100 def +/@rwi{10 div /rwi exch def}bdf /@llx{/llx exch def}bdf /@lly{/lly exch def} +bdf /@urx{/urx exch def}bdf /@ury{/ury exch def /BBcalc true def}bdf +/@setclipper{BBcalc{rwi urx llx sub div dup scale llx neg lly neg translate}{ +hsc vsc scale}ifelse CLIP{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg +0 rlineto closepath clip}{initclip}ifelse}bdf end /@MacSetUp{userdict /md +known{userdict /md get type /dicttype eq{md begin /letter{}def /note{}def +/legal{}def /od{txpose 1 0 mtx defaultmatrix dtransform exch atan/pa exch def +newpath clippath mark{transform{itransform moveto}}{transform{itransform +lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ +itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ +closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put +10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}def /txpose{pxs pys +scale ppr aload pop por{noflips{pop exch neg exch translate pop 1 -1 scale}if +xflip yflip and{pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get +ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip +not and{pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 translate}if yflip xflip not and{ppr 1 get neg ppr 0 get neg translate} +if}{noflips{translate pop pop 270 rotate 1 -1 scale}if xflip yflip and{ +translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 +get ppr 0 get neg sub neg translate}if xflip yflip not and{translate pop pop +90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{ +translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate} +if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 +copy translate .96 dup scale neg exch neg exch translate}if}def /cp{pop pop +showpage pm restore}def end}if}if}def /psf$TeXscale{65536 div}def /startTexFig +{/psf$SavedState save def userdict maxlength dict begin Resolution 72 div dup +neg scale currentpoint translate /psf$ury exch psf$TeXscale def /psf$urx exch +psf$TeXscale def /psf$lly exch psf$TeXscale def /psf$llx exch psf$TeXscale def +/psf$y exch psf$TeXscale def /psf$x exch psf$TeXscale def currentpoint /psf$cy +exch def /psf$cx exch def /psf$sx psf$x psf$urx psf$llx sub div def /psf$sy +psf$y psf$ury psf$lly sub div def psf$sx psf$sy scale psf$cx psf$sx div +psf$llx sub psf$cy psf$sy div psf$ury sub translate /showpage{}def /erasepage{ +}def /copypage{}def @MacSetUp}def /doclip{psf$llx psf$lly psf$urx psf$ury +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 /endTexFig{end +psf$SavedState restore}def /@beginspecial{SDict begin /SpecialSave save def +gsave Resolution 72 div dup neg scale currentpoint translate @SpecialDefaults} +bdf /@setspecial{ho vo translate @setclipper ang rotate /showpage{}def newpath +}bdf /@endspecial{grestore clear SpecialSave restore end}bdf /@defspecial{ +SDict begin}bdf /@fedspecial{end}bdf /li{lineto}bdf /rl{rlineto}bdf /rc{ +rcurveto}bdf /np{/SaveX currentpoint /SaveY exch def def newpath}bdf /st{ +stroke SaveX SaveY moveto}bdf /fil{fill SaveX SaveY moveto}bdf /ellipse{ +/endangle exch def /startangle exch def /yrad exch def /xrad exch def +/savematrix matrix currentmatrix def translate xrad yrad scale 0 0 1 +startangle endangle arc savematrix setmatrix}bdf end +%%EndDocument +TeXDict begin 300 @start /fa df[<7F01FCFF83FE7F01FC1C00700E00E00E00E00E00E00E +00E00FFFE007FFC007FFC00701C00701C003838003838003838003838001C70001C70001C70001 +C70000C60000C60000EE0000EE0000EE00006C00007C00007C00003800>23 30 -1 0 26]65 dc +[<00FE0003FF8007FFC00F83E01E00F01C00703C0078780038700038700038F00000E00000E000 +00E00000E00000E00000E00000E00000E00000F000007000387000387800383C00781C00781E00 +F80F83F807FFF803FFB800FE38>21 30 -2 0 26]67 dc[<FFFFFCFFFFFCFFFFFC1C001C1C001C +1C001C1C001C1C001C1C00001C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E00 +1C0E001C0E001C00001C00001C00001C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8>22 30 +-2 0 26]69 dc[<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E +00000E03800E03800E03800FFF800FFF800FFF800E03800E03800E03800E00000E00000E00000E +001C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC>22 30 -1 0 26]70 dc[<FF83FEFF83FEFF83 +FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFFF01FFF +F01FFFF01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FEFF83 +FEFF83FE>23 30 -1 0 26]72 dc[<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C000 +01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 +01C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80>17 30 -4 0 26]73 dc[<7F +FFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E00000E00000E00000E +00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E +00007FE000FFF0007FE000>22 30 -1 0 26]76 dc[<7F007F00FF80FF807F007F001C001C001C +001C001C001C001C001C001C001C001C001C001C001C001C1C1C001C1C1C001C3E1C001C361C00 +1C361C001C771C001C771C001C631C001CE39C001CE39C001CC19C001CC19C001DC1DC001DC1DC +001D80DC001D80DC001D80DC007F007F00FF007F807E003F00>25 30 0 0 26]77 dc[<FF80F0 +FF81F0FF81F01C03701C03701C07701C06701C06701C0E701C0E701C0C701C1C701C1C701C1870 +1C38701C38701C30701C70701C70701C60701CE0701CE0701CC0701CC0701DC0701D80701D8070 +FF03FEFF03FEFE03FE>23 30 -1 0 26]78 dc[<0FFE003FFF807FFFC07C07C07001C0F001E0F0 +01E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E0 +00E0E000E0E000E0E000E0E000E0F001E07001C07C07C07FFFC03FFF800FFE00>19 30 -3 0 26 +]79 dc[<FF8000FF8000FF80001C00001C00001C00001C00001C00001C00001C00001C00001C00 +001FFE001FFF801FFFC01C03E01C00F01C00701C00781C00381C00381C00381C00381C00781C00 +701C00F01C03E0FFFFC0FFFF80FFFE00>21 30 -2 0 26]80 dc[<FF803CFF807EFF80FF1C00E7 +1C00E71C00E71C00E21C00E01C00E01C00E01C00E01C00E01C01E01C07C01FFF801FFF001FFF80 +1C07C01C01E01C00F01C00701C00701C00701C00701C00F01C01E01C07C0FFFF80FFFF00FFFC00 +>24 30 -1 0 26]82 dc[<E3FC00FFFE00FFFF80FE0780F003C0F001E0E000E0E000E06000E000 +00E00001E00001C00003C0000F8001FF000FFE001FF8003F0000780000F00000E00000E001C0E0 +01C0E001C0F003C07007C07C1FC03FFFC01FFDC007F1C0>19 30 -3 0 26]83 dc[<03FF8003FF +8003FF800038000038000038000038000038000038000038000038000038000038000038000038 +00003800003800003800003800003800003800003800003800E0380EE0380EE0380EE0380EFFFF +FEFFFFFE7FFFFE>23 30 -1 0 26]84 dc[<003800007C00007C00006C0000EE0000EE0000EE00 +00C60001C70001C70001C70001C7000383800383800383800383800701C00701C00701C00701C0 +0E00E00E00E00E00E01E00F01C00701C00701C0070FF01FEFF01FEFF01FE>23 30 -1 0 26]86 +dc[<0701C00F83E00F83E00D83600D83600D83600DC7600DC7600DC7601CC6701CC6701CEE701C +EE701CEE701CEE701CEE701C7C70387C3838003838003838003838003838003838003838003878 +003C70001CFE00FEFF01FEFE00FE>23 30 -1 0 26]87 dc dfe /fb df[<7F1FC0FF1FE07F1F +C01C07001C07001C07001FFF000FFE000FFE000E0E000E0E00071C00071C00071C00071C00071C +0003180003B80003B80003B80001B00001B00001F00001F00000E000>19 25 -1 0 22]65 dc[< +01F00007FC000FFE001F0F003C0780780380780380700380F00000E00000E00000E00000E00000 +E00000E00000E00000F000007003807803807807803C07801F0F800FFF8007FF8001F180>17 25 +-2 0 22]67 dc[<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00E01C00E01C00001C1C001C +1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C01C01C01C01C01C01C01C07FFFC0FF +FFC07FFFC0>19 25 -1 0 22]69 dc[<FF8000FFC000FF80001C00001C00001C00001C00001C00 +001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00E01C00E01C00 +E01C00E0FFFFE0FFFFE0FFFFE0>19 25 -1 0 22]70 dc[<7F1FC0FFBFE07F1FC01C07001C0700 +1C07001C07001C07001C07001C07001C07001C07001FFF001FFF001FFF001C07001C07001C0700 +1C07001C07001C07001C07007F1FC0FFBFE07F1FC0>19 25 -1 0 22]72 dc[<FFFEFFFEFFFE03 +80038003800380038003800380038003800380038003800380038003800380038003800380FFFE +FFFEFFFE>15 25 -3 0 22]73 dc[<FE0FE0FE0FE0FE0FE0380380380380380380380380380380 +38E38038E38039F38039B38039B38039B38039B3803BBB803BBB803B1B803B1B803B1B803B1B80 +3A0B80FE0FE0FE0FE0FC07E0>19 25 -1 0 22]77 dc[<7F0F00FF9F007F1F001C17001C37001C +37001C37001C77001C77001C67001C67001CE7001CE7001CE7001CC7001CC7001DC7001DC7001D +87001D87001D87001D07007F1FC0FF3FE07E1FC0>19 25 -1 0 22]78 dc[<1FFC003FFE007FFF +00780F00F00780F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E003 +80E00380E00380E00380E00380F00780780F007FFF003FFE001FFC00>17 25 -2 0 22]79 dc[< +7F0000FF80007F00001C00001C00001C00001C00001C00001C00001C00001FF8001FFE001FFF00 +1C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F807FFF00FFFE007FF800>18 25 +-1 0 22]80 dc[<7F03C0FF87E07F0FF01C0E701C0E701C0E201C0E001C0E001C0E001C0E001C +3E001FFC001FF8001FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E007FFC00FF +F8007FE000>20 25 -1 0 22]82 dc[<C7F000FFFC00FFFE00F80F00F00780E00380E003800003 +80000380000780000F0000FE0007FC001FF0007F8000780000F00000E00000E00700E00700F00F +00781F007FFF001FFF0007E300>17 25 -2 0 22]83 dc[<07FC000FFE0007FC0000E00000E000 +00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 +E0E0E0E0E0E0E0E0E0E0E0E0FFFFE0FFFFE07FFFE0>19 25 -1 0 22]84 dc[<0E0E000F1E000F +1E001B1B0019130019B30019B30019B30019B30019B30019B30039B38039F38039F38038E38038 +03803803803803803001807001C07001C07001C0FC07E0FE0FE0FC07E0>19 25 -1 0 22]87 dc +dfe /fc df[<FFF80F800700070007000700070007000700070007000700070007000700070007 +00070007000700070007000700C7003F0007000300>13 27 -4 0 21]49 dc dfe end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300 + TeXDict begin @letter +%%EndSetup +%%Page: 1 1 + bop 83 42 a fb(THIS)21 b(IS)g(CMTT)g(TEN)h(POINTS)e(WRITTEN)g(IN)i(METAFONT) +83 91 y fa(THIS)i(IS)h(CMTT)f(TWELVE)g(POINTS)f(WRITTEN)g(IN)i(METAFONT)965 +2770 y fc(1)g eop +%%Trailer + end +%%EOF diff --git a/fonts/utilities/mf2ps/doc/printsamples/tt.tex b/fonts/utilities/mf2ps/doc/printsamples/tt.tex new file mode 100644 index 0000000000..9eaad5ce86 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/tt.tex @@ -0,0 +1,8 @@ +\font\test=cmtt10 +\test +THIS IS CMTT TEN POINTS WRITTEN IN METAFONT + +\font\test=cmtt12 +\test +THIS IS CMTT TWELVE POINTS WRITTEN IN METAFONT +\bye diff --git a/fonts/utilities/mf2ps/doc/printsamples/tt7.ps b/fonts/utilities/mf2ps/doc/printsamples/tt7.ps new file mode 100644 index 0000000000..a61024be70 --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/tt7.ps @@ -0,0 +1,457 @@ +%! for use by dvi2ps Version 2.00 +% a start (Ha!) at a TeX mode for PostScript. +% The following defines procedures assumed and used by program "dvi2ps" +% and must be downloaded or sent as a header file for all TeX jobs. + +% By: Neal Holtz, Carleton University, Ottawa, Canada +% <holtz@cascade.carleton.cdn> +% <holtz%cascade.carleton.cdn@ubc.csnet> +% June, 1985 +% Last Modified: Aug 25/85 +% oystr 12-Feb-1986 +% Changed @dc macro to check for a badly formed bits in character +% definitions. Can get a <> bit map if a character is not actually +% in the font file. This is absolutely guaranteed to drive the +% printer nuts - it will appear that you can no longer define a +% new font, although the built-ins will still be there. + +% To convert this file into a downloaded file instead of a header +% file, uncomment all of the lines beginning with %-% + +%-%0000000 % Server loop exit password +%-%serverdict begin exitserver +%-% systemdict /statusdict known +%-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} +%-% if + +/TeXDict 200 dict def % define a working dictionary +TeXDict begin % start using it. + + % units are in "dots" (300/inch) +/Resolution 300 def +/Inch {Resolution mul} def % converts inches to internal units + +/Mtrx 6 array def + +%%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%% + +% dvi2ps will output coordinates in the TeX system ([0,0] 1" down and in +% from top left, with y +ive downward). The default PostScript system +% is [0,0] at bottom left, y +ive up. The Many Matrix Machinations in +% the following code are an attempt to reconcile that. The intent is to +% specify the scaling as 1 and have only translations in the matrix to +% properly position the text. Caution: the default device matrices are +% *not* the same in all PostScript devices; that should not matter in most +% of the code below (except for lanscape mode -- in that, rotations of +% -90 degrees resulted in the the rotation matrix [ e 1 ] +% [ 1 e ] +% where the "e"s were almost exactly but not quite unlike zeros. + +/@letter + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top (these are not exactly 1" + Mtrx currentmatrix pop % and -10" because margins aren't set exactly right) + } def + % note mode is like letter, except it uses less VM +/@note + { note initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 310 -3005 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@landscape + { letter initmatrix + 72 Resolution div dup neg scale % set scaling to 1. +% -90 rotate % it would be nice to be able to do this + Mtrx currentmatrix 0 0.0 put % but instead we have to do things like this because what + Mtrx 1 -1.0 put % should be zero terms aren't (and text comes out wobbly) + Mtrx 2 1.0 put % Fie! This likely will not work on QMS printers + Mtrx 3 0.0 put % (nor on others where the device matrix is not like + Mtrx setmatrix % like it is on the LaserWriter). + 300 310 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@legal + { legal initmatrix + 72 Resolution div dup neg scale % set scaling to 1. + 295 -3880 translate % move origin to top + Mtrx currentmatrix pop + } def + +/@manualfeed + { statusdict /manualfeed true put + } def + % n @copies - set number of copies +/@copies + { /#copies exch def + } def + +%%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%% + +/@newfont % id @newfont - -- initialize a new font dictionary + { /newname exch def + pop + newname 7 dict def % allocate new font dictionary + newname load begin + /FontType 3 def + /FontMatrix [1 0 0 -1 0 0] def + /FontBBox [0 0 1 1] def + /BitMaps 128 array def + /BuildChar {CharBuilder} def + /Encoding 128 array def + 0 1 127 {Encoding exch /.undef put} for + end + newname newname load definefont pop + } def + + +% the following is the only character builder we need. it looks up the +% char data in the BitMaps array, and paints the character if possible. +% char data -- a bitmap descriptor -- is an array of length 6, of +% which the various slots are: + +/ch-image {ch-data 0 get} def % the hex string image +/ch-width {ch-data 1 get} def % the number of pixels across +/ch-height {ch-data 2 get} def % the number of pixels tall +/ch-xoff {ch-data 3 get} def % number of pixels below origin +/ch-yoff {ch-data 4 get} def % number of pixels to left of origin +/ch-tfmw {ch-data 5 get} def % spacing to next character + +/CharBuilder % fontdict ch Charbuilder - -- image one character + { /ch-code exch def % save the char code + /font-dict exch def % and the font dict. + /ch-data font-dict /BitMaps get ch-code get def % get the bitmap descriptor for char + ch-data null eq not + { ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub + setcachedevice + ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff] + {ch-image} imagemask + } + if + } def + + +/@sf % fontdict @sf - -- make that the current font + { setfont() pop + } def + + % in the following, the font-cacheing mechanism requires that + % a name unique in the particular font be generated + +/@dc % char-data ch @dc - -- define a new character bitmap in current font + { /ch-code exch def +% ++oystr 12-Feb-86++ + dup 0 get + length 2 lt + { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null + if +% --oystr 12-Feb-86-- + /ch-data exch def + currentfont /BitMaps get ch-code ch-data put + currentfont /Encoding get ch-code + dup ( ) cvs cvn % generate a unique name simply from the character code + put + } def + +/@bop0 % n @bop0 - -- begin the char def section of a new page + { + } def + +/@bop1 % n @bop1 - -- begin a brand new page + { pop + erasepage initgraphics + Mtrx setmatrix + /SaveImage save def() pop + } def + +/@eop % - @eop - -- end a page + { showpage + SaveImage restore() pop + } def + +/@start % - @start - -- start everything + { @letter % (there is not much to do) + } def + +/@end % - @end - -- done the whole shebang + { end + } def + +/p % x y p - -- move to position + { moveto + } def + +/r % x r - -- move right + { 0 rmoveto + } def + +/s % string s - -- show the string + { show + } def + +/c % ch c - -- show the character (code given) + { c-string exch 0 exch put + c-string show + } def + +/c-string ( ) def + +/ru % dx dy ru - -- set a rule (rectangle) + { /dy exch neg def % because dy is height up from bottom + /dx exch def + /x currentpoint /y exch def def % remember current point + newpath x y moveto + dx 0 rlineto + 0 dy rlineto + dx neg 0 rlineto + closepath fill + x y moveto + } def + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the \special command junk +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The structure of the PostScript produced by dvi2ps for \special is: +% @beginspecial +% - any number of @hsize, @hoffset, @hscale, etc., commands +% @setspecial +% - the users file of PostScript commands +% @endspecial + +% The @beginspecial command recognizes whether the Macintosh Laserprep +% has been loaded or not, and redfines some Mac commands if so. +% The @setspecial handles the users shifting, scaling, clipping commands + + +% The following are user settable options from the \special command. + +/@SpecialDefaults + { /hs 8.5 Inch def + /vs 11 Inch def + /ho 0 def + /vo 0 def + /hsc 1 def + /vsc 1 def + /CLIP false def + } def + +% d @hsize - specify a horizontal clipping dimension +% these 2 are executed before the MacDraw initializations +/@hsize {/hs exch def /CLIP true def} def +/@vsize {/vs exch def /CLIP true def} def +% d @hoffset - specify a shift for the drwgs +/@hoffset {/ho exch def} def +/@voffset {/vo excl def} def +% s @hscale - set scale factor +/@hscale {/hsc exch def} def +/@vscale {/vsc exch def} def + +/@setclipper + { hsc vsc scale + CLIP + { newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip } + if + } def + +% this will be invoked as the result of a \special command (for the +% inclusion of PostScript graphics). The basic idea is to change all +% scaling and graphics back to defaults, but to shift the origin +% to the current position on the page. Due to TeXnical difficulties, +% we only set the y-origin. The x-origin is set at the left edge of +% the page. + +/@beginspecial % - @beginspecial - -- enter special mode + { gsave /SpecialSave save def + % the following magic incantation establishes the current point as + % the users origin, and reverts back to default scalings, rotations + currentpoint transform initgraphics itransform translate + @SpecialDefaults % setup default offsets, scales, sizes + @MacSetUp % fix up Mac stuff + } def + +/@setspecial % to setup user specified offsets, scales, sizes (for clipping) + { + MacDrwgs + {md begin /pxt ho def /pyt vo neg def end} + {ho vo translate @setclipper} + ifelse + } def + +/@endspecial % - @endspecial - -- leave special mode + { SpecialSave restore + grestore + } def + +/MacDrwgs false def % will get set if we think the Mac LaserPrep file has been loaded + + % - @MacSetUp - turn-off/fix-up all the MacDraw stuff that might hurt us + % we depend on 'psu' being the first procedure executed + % by a Mac document. We redefine 'psu' to adjust page + % translations, and to do all other the fixups required. + % This stuff will not harm other included PS files +/@MacSetUp + { userdict /md known % if md is defined + { userdict /md get type /dicttype eq % and if it is a dictionary + { /MacDrwgs true def + md begin % then redefine some stuff + /psu % redfine psu to set origins, etc. + /psu load + % this procedure contains almost all the fixup code + { /letter {} def % it is bad manners to execute the real + /note {} def % versions of these (clears page image, etc.) + /legal {} def + statusdict /waittimeout 300 put + /page {pop} def % no printing of pages + /pyt vo neg def % x & y pixel translations + /pxt ho def + } + concatprocs + def + /od % redefine od to set clipping region + /od load + { @setclipper } + concatprocs + def + end } + if } + if + } def + +% p1 p2 concatprocs p - concatenate procedures +/concatprocs + { /p2 exch cvlit def + /p1 exch cvlit def + /p p1 length p2 length add array def + p 0 p1 putinterval + p p1 length p2 putinterval + p cvx + } def + +end % revert to previous dictionary +TeXDict begin @start +%%Title: tt7.dvi +%%Creator: dvi2ps +%%EndProlog +1 @bop0 +[ 1500 ] /cmtt8.1500 @newfont +cmtt8.1500 @sf +[<1FF01FF00380038003800380038003800380038003800380038003800380E38EE38EE38EFFFEFFFE> 16 20 -1 0 17.642] 84 @dc +[<FEFEFEFE38383838383838383838383838383FF83FF83838383838383838383838383838FEFEFEFE> 16 20 -1 0 17.642] 72 @dc +[<FFF8FFF80700070007000700070007000700070007000700070007000700070007000700FFF8FFF8> 16 20 -2 0 17.642] 73 @dc +[<CF80FFE0F070F078E038E0380038007800F00FF03FE07F00F000F000E070E070E0F070F03FF01F30> 16 20 -2 0 17.642] 83 @dc +[<03E00FF81C3C381E780E700EF00EE000E000E000E000E000E000F00E700E781E381E1C3E0FFE03E6> 16 20 -1 0 17.642] 67 @dc +[<FE3F80FE3F80380E00380E00380E00380E00380E0039CE0039CE003BEE003B6E003B6E003B6E003B6E003B6E003B6E003A2E + 003A2E00FE3F80FE3F80> 24 20 0 0 17.642] 77 @dc +[<FFFEFFFE380E380E380E380E380038E038E03FE03FE038E038E038003800380E380E380EFFFEFFFE> 16 20 -1 0 17.642] 69 @dc +[<07B81FF83CF8387870787038F038E038E1FEE1FEE000E000E000F0387038703838783CF81FF80798> 16 20 -1 0 17.642] 71 @dc +[<FE00FE003800380038003800380038003FE03FF8383C381C380E380E380E380E381C383CFFF8FFE0> 16 20 -1 0 17.642] 80 @dc +[<3FE07FF07070E038E038E038E038E038E038E038E038E038E038E038E038E038E03870707FF03FE0> 16 20 -2 0 17.642] 79 @dc +[<FEF8FEF838B838B839B839B839B839B839B839B83B383B383B383B383B383B383A383A38FEFEFEFE> 16 20 -1 0 17.642] 78 @dc +[<0E38001E3C001F7C001B6C001B6C001B6C001B6C001B6C001B6C001BEC003BEE003BEE00380E00380E00380E00380E00380E + 00380E00FE3F80FE3F80> 24 20 0 0 17.642] 87 @dc +[<FE1CFE3F38773877387038703870387038F03FE03FE038F03878383838383838387838F0FFE0FF80> 16 20 -1 0 17.642] 82 @dc +[<FEFEFEFE3838383838381FF01FF01C701C701C700C600EE00EE00EE00EE006C006C007C007C00380> 16 20 -1 0 17.642] 65 @dc +[<FF00FF003800380038003800380038E038E03FE03FE038E038E038003800380E380E380EFFFEFFFE> 16 20 -1 0 17.642] 70 @dc +[ 1500 ] /cmtt10.1500 @newfont +cmtt10.1500 @sf +[<07FC000FFE0007FC0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 + 0000E000E0E0E0E0E0E0E0E0E0E0E0E0FFFFE0FFFFE07FFFE0> 24 25 -1 0 21.793] 84 @dc +[<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001C07001C07001FFF001FFF001FFF001C07001C07 + 001C07001C07001C07001C07001C07007F1FC0FFBFE07F1FC0> 24 25 -1 0 21.793] 72 @dc +[<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380038003800380038003800380FFFEFFFEFFFE> 16 25 -3 0 21.793] 73 @dc +[<C7F000FFFC00FFFE00F80F00F00780E00380E00380000380000380000780000F0000FE0007FC001FF0007F8000780000F000 + 00E00000E00700E00700F00F00781F007FFF001FFF0007E300> 24 25 -2 0 21.793] 83 @dc +[<01F00007FC000FFE001F0F003C0780780380780380700380F00000E00000E00000E00000E00000E00000E00000E00000F000 + 007003807803807807803C07801F0F800FFF8007FF8001F180> 24 25 -2 0 21.793] 67 @dc +[<FE0FE0FE0FE0FE0FE038038038038038038038038038038038E38038E38039F38039B38039B38039B38039B3803BBB803B1B + 803B1B803B1B803B1B803B1B803A0B80FE0FE0FE0FE0FC07E0> 24 25 -1 0 21.793] 77 @dc +[<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00E01C00E01C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00 + 001C00001C01C01C01C01C01C01C01C07FFFC0FFFFC07FFFC0> 24 25 -1 0 21.793] 69 @dc +[<7F0F00FF9F007F1F001C17001C37001C37001C37001C77001C77001C67001C67001CE7001CE7001CE7001CC7001CC7001DC7 + 001DC7001D87001D87001D87001D07007F1FC0FF3FE07E1FC0> 24 25 -1 0 21.793] 78 @dc +[<7F0000FF80007F00001C00001C00001C00001C00001C00001C00001C00001FF8001FFE001FFF001C0F801C03801C03C01C01 + C01C01C01C01C01C03C01C03801C0F807FFF00FFFE007FF800> 24 25 -1 0 21.793] 80 @dc +[<1FFC003FFE007FFF00780F00F00780F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003 + 80E00380E00380E00380F00780780F007FFF003FFE001FFC00> 24 25 -2 0 21.793] 79 @dc +[<0E0E000F1E000F1E001B1B0019130019B30019B30019B30019B30019B30019B30039B38039F38039F38038E3803803803803 + 803803803001807001C07001C07001C0FC07E0FE0FE0FC07E0> 24 25 -1 0 21.793] 87 @dc +[<7F03C0FF87E07F0FF01C0E701C0E701C0E201C0E001C0E001C0E001C0E001C3E001FFC001FF8001FFC001C1E001C0F001C07 + 001C07001C07001C07001C0F001C1E007FFC00FFF8007FE000> 24 25 -1 0 21.793] 82 @dc +[<7F1FC0FF1FE07F1FC01C07001C07001C07001FFF000FFE000FFE000E0E000E0E00071C00071C00071C00071C00071C000318 + 0003B80003B80003B80001B00001B00001F00001F00000E000> 24 25 -1 0 21.793] 65 @dc +[<FF8000FFC000FF80001C00001C00001C00001C00001C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00 + 001C00001C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE0> 24 25 -1 0 21.793] 70 @dc +[ 1500 ] /cmtt12.1500 @newfont +cmtt12.1500 @sf +[<03FF8003FF8003FF800038000038000038000038000038000038000038000038000038000038000038000038000038000038 + 00003800003800003800003800003800003800E0380EE0380EE0380EE0380EFFFFFEFFFFFE7FFFFE> 24 30 -1 0 25.632] 84 @dc +[<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFFF01FFFF01FFF + F01C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FEFF83FEFF83FE> 24 30 -1 0 25.632] 72 @dc +[<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 + 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80> 24 30 -4 0 25.632] 73 @dc +[<E3FC00FFFE00FFFF80FE0780F003C0F001E0E000E0E000E06000E00000E00001E00001C00003C0000F8001FF000FFE001FF8 + 003F0000780000F00000E00000E001C0E001C0E001C0F003C07007C07C1FC03FFFC01FFDC007F1C0> 24 30 -3 0 25.632] 83 @dc +[<00FE0003FF8007FFC00F83E01E00F01C00703C0078780038700038700038F00000E00000E00000E00000E00000E00000E000 + 00E00000E00000F000007000387000387800383C00781C00781E00F80F83F807FFF803FFB800FE38> 24 30 -2 0 25.632] 67 @dc +[<7F007F00FF80FF807F007F001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C1C1C001C1C1C001C3E + 1C001C361C001C361C001C771C001C771C001C631C001CE39C001CE39C001CC19C001CC19C001DC1DC001DC1DC001D80DC00 + 1D80DC001D80DC007F007F00FF007F807E003F00> 32 30 0 0 25.632] 77 @dc +[<0701C00F83E00F83E00D83600D83600D83600DC7600DC7600DC7601CC6701CC6701CEE701CEE701CEE701CEE701CEE701C7C + 70387C3838003838003838003838003838003838003838003878003C70001CFE00FEFF01FEFE00FE> 24 30 -1 0 25.632] 87 @dc +[<FFFFFCFFFFFCFFFFFC1C001C1C001C1C001C1C001C1C001C1C00001C00001C00001C0E001C0E001C0E001FFE001FFE001FFE + 001C0E001C0E001C0E001C00001C00001C00001C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8> 24 30 -2 0 25.632] 69 @dc +[<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E00000E00000E00000E00000E00000E00000E00 + 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FE000FFF0007FE000> 24 30 -1 0 25.632] 76 @dc +[<003800007C00007C00006C0000EE0000EE0000EE0000C60001C70001C70001C70001C7000383800383800383800383800701 + C00701C00701C00701C00E00E00E00E00E00E01E00F01C00701C00701C0070FF01FEFF01FEFF01FE> 24 30 -1 0 25.632] 86 @dc +[<FF8000FF8000FF80001C00001C00001C00001C00001C00001C00001C00001C00001C00001FFE001FFF801FFFC01C03E01C00 + F01C00701C00781C00381C00381C00381C00381C00781C00701C00F01C03E0FFFFC0FFFF80FFFE00> 24 30 -2 0 25.632] 80 @dc +[<0FFE003FFF807FFFC07C07C07001C0F001E0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000 + E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07C07C07FFFC03FFF800FFE00> 24 30 -3 0 25.632] 79 @dc +[<FF80F0FF81F0FF81F01C03701C03701C07701C06701C06701C0E701C0E701C0C701C1C701C1C701C18701C38701C38701C30 + 701C70701C70701C60701CE0701CE0701CC0701CC0701DC0701D80701D8070FF03FEFF03FEFE03FE> 24 30 -1 0 25.632] 78 @dc +[<FF803CFF807EFF80FF1C00E71C00E71C00E71C00E21C00E01C00E01C00E01C00E01C00E01C01E01C07C01FFF801FFF001FFF + 801C07C01C01E01C00F01C00701C00701C00701C00701C00F01C01E01C07C0FFFF80FFFF00FFFC00> 24 30 -1 0 25.632] 82 @dc +[<7F01FCFF83FE7F01FC1C00700E00E00E00E00E00E00E00E00FFFE007FFC007FFC00701C00701C00383800383800383800383 + 8001C70001C70001C70001C70000C60000C60000EE0000EE0000EE00006C00007C00007C00003800> 24 30 -1 0 25.632] 65 @dc +[<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E03800E03800E03800FFF800FFF800FFF + 800E03800E03800E03800E00000E00000E00000E001C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC> 24 30 -1 0 25.632] 70 @dc +[ 1500 ] /cmr10.1500 @newfont +cmr10.1500 @sf +[<FFF80F80070007000700070007000700070007000700070007000700070007000700070007000700070007000700C7003F00 + 07000300> 16 27 -4 0 20.755] 49 @dc +1 @bop1 +cmtt8.1500 @sf +83 42 p (THIS) s +18 r (IS) s +17 r (CMTT) s +18 r (EIGHT) s +18 r (POINTS) s +17 r (WRITTEN) s +18 r (IN) s +18 r (METAFONT) s +cmtt10.1500 @sf +83 91 p (THIS) s +22 r (IS) s +22 r (CMTT) s +21 r (TEN) s +22 r (POINTS) s +22 r (WRITTEN) s +22 r (IN) s +22 r (METAFONT) s +cmtt12.1500 @sf +83 141 p (THIS) s +26 r (IS) s +25 r (CMTT) s +26 r (TWELVE) s +26 r (POINTS) s +25 r (WRITTEN) s +26 r (IN) s +25 r (METAFONT) s +cmr10.1500 @sf +965 2770 p 49 c +@eop +@end diff --git a/fonts/utilities/mf2ps/doc/printsamples/tt7.tex b/fonts/utilities/mf2ps/doc/printsamples/tt7.tex new file mode 100644 index 0000000000..093783b32b --- /dev/null +++ b/fonts/utilities/mf2ps/doc/printsamples/tt7.tex @@ -0,0 +1,12 @@ +\font\test=cmtt8 +\test +THIS IS CMTT EIGHT POINTS WRITTEN IN METAFONT + +\font\test=cmtt10 +\test +THIS IS CMTT TEN POINTS WRITTEN IN METAFONT + +\font\test=cmtt12 +\test +THIS IS CMTT TWELVE POINTS WRITTEN IN METAFONT +\bye |