new mc,lbowl,rbowl,rstem,rv,hic; % quantities used to compute spacing mc=mi/pu; % converts to relative units when $\\{mi}=1$ lbowl=.3phh.slant+.5pu; % used at left of upper-case bowl rbowl=.7phh.slant-.5pu; % used at right of upper-case bowl rstem=phh.slant+(ucs+2sc-1.5)pu; % used at right of tall stem rv=phh.slant+(ucs+2sc-1)pu; % used at right of tall diagonal hic=1-.5mi; % used when half the italic correction goes into \\{rtcorr} hspc=2w10; % horizontal space between vert bars dspc=2.5w10; % horizontal space between diagonal bars, curves "The letter A"; call charbegin(`A,13,0,0,phh,0,0); cpen; x2=round u; x5=r-x2; x4=.75[x2,x5]; x1=.25[x2,x5]; x6=x5-hspc; x3=x4-hspc; x7=.5[x3,x6]; x9=x1-w10; x8=x2; top10y1=hh; bot10y2=0; y9=y3=y4=y1; y2=y6=y5; y8=y7=.35hh; w10 draw 4..5; draw 3..6; draw 8..7; draw 6..5; new w99; w99=hspc; cpen#; w99 draw 9..8; cpen; w10 draw 1..2; draw 1..4. "The letter B"; call charbegin(`B,12,0,0,phh,0,0); cpen; lft10x1= round u; x2=x4=x5=x1+hspc; x9=r-x1; x10=x9-.5u; x6=x9-dspc; x1=x3; y3=y4=y8; top10y1=hh; bot10y3=0; y5=y6=good10(.5[y1,y3]); y1=y2=y7; call hcirc(7,17,10,100,6,w10); call hcirc(6,16,9,19,8,w10); w10 draw 1..7; draw 1..3; draw 2..4; draw 5..6; draw 7..8; draw 3..8. "The letter C"; call charbegin(`C,13,0,0,phh,0,0); cpen; lft10x1=round u; x2=good10 .5r; x4=x5=good10(r-x1); x0=x2; top10y2=hh+oo; y3=good10 0; y0=y1; y4=y12; y5=y11; call hcirc(2,12,1,11,3,w10); x6=x7=x1+dspc; bot10y6=y0-sqrt(((x2-x1)*(x2-x1))-((x6-x0)*(x6-x0))); top10y7=y0+sqrt(((x2-x1)*(x2-x1))-((x7-x0)*(x7-x0))); cpen; w10 draw 2{1,0}..4{1,-1}; draw 3{1,0}..5{1,1}; draw 6..7. "The letter D"; call charbegin(`D,13,0,0,phh,0,0); cpen; lft10x6=round u; y6=.5hh; x8=.5r; top10y8=hh+oo; call circle(1,2,3,4,5,6,7,8,w10); cpen#; new w99; w99=w10; w99 draw 8..7..6..5..4; x9=x10=x6; x11=x12=x6+hspc; x13=x14=x2-dspc; y9=y11=y8; y10=y12=y4; y13=w10+y1; y14=y3-w10; cpen; w10 draw 9..8; draw 9..10; draw 10..4; draw 13..14; draw 11..12. "The letter E"; call charbegin(`E,12,0,0,phh,0,0); cpen; lft10x1=round u; x1=x2; x6=x7=x8=(r-x1); x3=x5=x4=x1+hspc; x9=x7-w10; top10y1=hh; bot10y2=0; y9=y5=y7=.5hh; y1=y3=y6; y2=y4=y8; w10 draw 1..6; draw 1..2; draw 5..9; draw 3..4; draw 2..8. "The letter F"; call charbegin(`F,12,0,0,phh,0,0); cpen; lft10x1=round u; x1=x2; x6=x7=(r-x1); x3=x5=x4=x1+hspc; x9=x7-w10; top10y1=hh; bot10y2=0; y9=y5=y7=.5hh; y1=y3=y6; y2=y4; w10 draw 1..6; draw 1..2; draw 5..9; draw 3..4; draw 2..4. "The letter G"; call charbegin(`G,14,0,0,phh,0,0); cpen; lft10x6=round u; y6=.5hh; x15=x8=.5r; top10y8=hh+oo; x4=x8=.5[x6,x2]; y2=y6=.5[y4,y8]; x0=x8; y0=y6; call qcirc(4,3,2,w10); call qcirc(4,5,6,w10); call qcirc(8,7,6,w10); x10=x9=x6+dspc; x12=x14=x2-dspc; x1=1/sqrttwo[x8,x2]; y1=1/sqrttwo[y2,y8]; y15=y14=y2; bot10y9=y0-sqrt(((x8-x6)*(x8-x6))-((x9-x0)*(x9-x0))); top10y10=y0+sqrt(((x8-x6)*(x8-x6))-((x10-x0)*(x10-x0))); bot10y12=y0-sqrt(((x8-x6)*(x8-x6))-((x12-x0)*(x12-x0))); cpen; w10 draw 8{x2-x8,0}..1{x2-x8,y2-y8}; draw 9..10; draw 15..2; draw 14..12. "The letter H"; call charbegin(`H,13,0,0,phh,0,0); cpen; lft10x1=round u; x4=r-x1; x2=x1+hspc; x3=x4-hspc; x5=x1; x6=x9=x2; x7=x10=x3; x8=x4; top10y1=hh; bot10y5=0; y1=y2=y3=y4; y5=y6=y7=y8; y9=.5[y2,y6]; y10=.5[y3,y7]; w10 draw 1..2; draw 3..4; draw 5..6; draw 7..8; draw 9..10; draw 1..5; draw 2..6; draw 3..7; draw 4..8. "The letter I"; call charbegin(`I,6,0,0,phh,0,0); cpen; x1=good10(.5r-w10); x2=x1+hspc; x4=x1; x3=x2; top10y1=hh; bot10y4=0; y1=y2; y4=y3; w10 draw 1..2; draw 2..3; draw 3..4; draw 1..4. "The letter J"; call charbegin(`J,11,0,0,phh,0,0); cpen; lft10x6=round u; x4=x8=.5[x6,x2]; x1=x6; x7=x10=x9-hspc; x8=.5r; x9=x2; y1=y7=y9=y8; y2=y6=.5[y4,y8]; bot10y10=y2-sqrt(((x8-x6)*(x8-x6))-((x10-x8)*(x10-x8))); top10y8=hh+oo; y6=.5hh; call qcirc(4,3,2,w10); x16=x6; y16=.3hh; call qcirc(4,5,16,w10); w10 draw 7..9; draw 9..2; draw 7..10. "The letter K"; call charbegin(`K,14,0,0,phh,0,0); cpen; lft10x1=round u; x7=x6=r-x1; x1=x3; x2=x5=x4=x1+hspc; x9=x5+w10; x10=x9+hspc; x8=x7-dspc; top10y1=hh; bot10y3=0; .5r=y5; y9=y5+.5w10; y10=y9+w10; y7=y8=y3=y4; y1=y2=y6; w10 draw 1..2; draw 1..3; draw 3..4; draw 5..6; draw 9..8; draw 10..7; draw 2..4; draw 8..7. "The letter L"; call charbegin(`L,12,0,0,phh,0,0); cpen; lft10x1=round u; x1=x2; x8=(r-x1); x3=x4=x1+hspc; top10y1=hh; bot10y2=0; y1=y3; y2=y4=y8; w10 draw 1..3; draw 1..2; draw 3..4; draw 2..8. "The letter M"; call charbegin(`M,16,0,0,phh,0,0); cpen; lft10x1=round u; rt10x8=r-x1; x3=good10(x1+1.5w10); x6=good10(x8-hspc); x5=.5[x1,x8]; x1=x2=x10; x4=good10(x5-hspc); x7=x6; x9=x8; top10y1=hh; bot10y2=0; y10=y1-1.5w10; y1=y3=y6=y8; y2=y4=y5=y7=y9; w10 draw 1..2; draw 1..3; draw 10..4; draw 3..5; draw 6..5; draw 4..5; draw 6..7; draw 6..8; draw 7..9; draw 8..9. "The letter N"; call charbegin(`N,14,0,0,phh,0,0); cpen; lft10x1=round u; x3=x5=x4=r-x1; x1=x8=x2; x6=good10(x4-1.5.w10); x7=good10(x1+1.5.w10); top10 y1=hh; bot10y2=0; y1=y7=y3; y2=y4=y6; y5=y4+1.5.w10; y8=y1-1.5.w10; w10 draw 1..7; draw 1..2; draw 8..6; draw 7..5; draw 3..4; draw 6..4. "The letter O"; call charbegin(`O,14,0,0,phh,0,0); cpen; lft10x6=round u; y6=good10 .5hh; x8=good10 .5r; y8-y6=x8-x6; x0=x8; y0=y6; call circle(1,2,3,4,5,6,7,8,w10); x10=x9=x6+dspc; bot10y9=y0-sqrt(((x8-x6)*(x8-x6))-((x9-x0)*(x9-x0))); top10y10=y0+sqrt(((x8-x6)*(x8-x6))-((x10-x0)*(x10-x0))); x12=x13=x2-dspc; bot10y12=y0-sqrt(((x8-x6)*(x8-x6))-((x12-x0)*(x12-x0))); top10y13=y0+sqrt(((x8-x6)*(x8-x6))-((x13-x0)*(x13-x0))); cpen; w10 draw 12..13; draw 9..10. "The letter P"; call charbegin(`P,12,0,0,phh,0,0); cpen; lft10x1= round u; x2=x4=x5=x1+hspc; x9=r-x1; x6=x9-dspc; x1=x3; y3=y4; top10y1=hh; bot10y3=0; y5=y6=good10 .5hh; y1=y2=y7; call hcirc(7,17,9,19,6,w10); w10 draw 1..7; draw 1..3; draw 2..4; draw 3..4; draw 5..6; draw 7..6. "The letter Q"; call charbegin(`Q,14,0,0,phh,0,0); cpen; lft10x6=round u; y6=good10 .5hh; x8=good10 .5r; y8-y6=x8-x6; x0=x8; y0=y6; call circle(1,2,3,4,5,6,7,8,w10); x10=x9=x6+dspc; bot10y9=y0-sqrt(((x8-x6)*(x8-x6))-((x9-x0)*(x9-x0))); top10y10=y0+sqrt(((x8-x6)*(x8-x6))-((x9-x0)*(x10-x0))); x12=x13=x2-dspc; bot10y12=y0-sqrt(((x8-x6)*(x8-x6))-((x12-x0)*(x12-x0))); top10y13=y0+sqrt(((x8-x6)*(x8-x6))-((x13-x0)*(x13-x0))); cpen; w10 draw 12..13; draw 9..10; x14=x15=4.5u; y14=0; new aa; x15=aa[x5,x4]; y15=(sqrt(1-aa.aa))[.5y5+.5y4,y4]; x16=6.5u; y16=.15hh+1.5w6; w0 draw (14..)15..16{1,0}; % left part of tail vpen; x17=x18=x19=11u; bot8y18=bot6y19=-dd; top6y17=top8y18; x110=round 13u; top8y110=0; w6 ddraw 16{1,0}..17{1,0},16{1,0}..19{1,0}; % middle part of tail w9 draw 18{1,0}..110{0,1}. % right part of tail "The letter R"; call charbegin(`R,12,0,0,phh,0,0); cpen; lft10x1= round u; x2=x4=x5=x1+hspc; x9=r-x1; x10=x9; x11=x6-dspc; x12=x10-dspc; x6=x9-dspc; x1=x3; top10y1=hh; bot10y3=0; y5=y6=good10 .5hh; y1=y2=y7; y3=y4=y10=y12; y11=y6; call hcirc(7,17,9,19,6,w10); w10 draw 1..7; draw 1..3; draw 2..4; draw 3..4; draw 5..6; draw 7..6; draw 11..12; draw 12..10; draw 6..10. "The letter S"; call charbegin(`S,10,0,0,phh,0,0); hpen; top0y1=hh+o; bot0y5=-o; x3=.5r; y3=.52hh; lft10x2=round(u+.5hspc); rt10x4=round((r-u)-.5hspc); x1=x5=x3; lft10x6=round 2/3u; rt10x7=round(r-1.25u); y6=1/3[top10 0,y3]; y7=1/4[bot10 hh,y3]; w10 draw 6{x5-x6,3(y5-y6)}..5{1,0}; % lower left stroke x303-x3=x3-x103=x302-x2=x2-x102=x304-x4=x4-x104=w10; y303-y3=y3-y103=w10; new aa; if m+oo-e>e: aa=m+oo-e; else: aa=e; fi; call `a sdraw(1,102,103,104,5,w10,w10,w10,w10,w10,-aa/(12u)); % middle stroke call `b sdraw(1,302,303,304,5,w10,w10,w10,w10,w10,-aa/(12u)); % middle stroke hpen; w10 draw 7{x1-x7,2(y1-y7)}..1{-1,0}. % upper right stroke "The letter T"; call charbegin(`T,13,0,0,phh,0,0); cpen; lft10x1=round u; x2=r-x1; x3=good10(.5r-w10); x4=x3+hspc; x5=x3; x6=x4; top10y1=hh; bot10y5=0; y1=y2=y3=y4; y5=y6; w10 draw 1..2; draw 3..5; draw 5..6; draw 4..6. "The letter U"; call charbegin(`U,13,0,0,phh,0,0); cpen; lft10x6=round u; x4=x8=.5[x6,x2]; x1=x6; x7=x10=x6+hspc; x8=.5r; x9=x2; y1=y7=y9=y8; y2=y6=.5[y4,y8]; top10y8=hh+oo; y6=.5hh; bot10y10=y2-sqrt(((x8-x6)*(x8-x6))-((x10-x8)*(x10-x8))); call qcirc(4,3,2,w10); call qcirc(4,5,6,w10); w10 draw 1..6; draw 1..7; draw 9..2; draw 7..10. "The letter V"; call charbegin(`V,13,0,0,phh,0,0); cpen; lft10 x1=round u; x5=r-x1; x2=x1+hspc; x3=good10(.5r-w10); x4=x3+hspc; top10y1=hh; bot10y3=0; y1=y2=y5; y3=y4; w10 draw 1..2; draw 1..3; draw 2..4; draw 3..4; draw 4..5. "The letter W"; call charbegin(`W,18,0,0,phh,0,0); cpen; lft10 x1=round u; x9=r-x1; x2=x1+hspc; x3=x2; x4=x3+hspc; x5=good10 .5r; x6=x5+hspc; x7=x6; x8=x7+hspc; top10y1=hh; bot10y3=0; y1=y2=y5=y6=y9; y3=y4=y7=y8; w10 draw 1..2; draw 1..3; draw 2..4; draw 3..4; draw 4..5; draw 5..6; draw 5..7; draw 6..8; draw 7..8; draw 9..8. "The letter X"; call charbegin(`X,13,0,0,phh,0,0); cpen; lft10x1=round u; x5=r-x1; x1=x6; x5=x4; x2=good10(x1+dspc); x3=good10(x4-dspc); top10y1=hh; y1=y2=y5; bot10y6=0; y6=y3=y4; new aa,bb; x8=aa[x2,x4]; x8=bb[x5,x6]; y8=aa[y2,y4]; y8=bb[y5,y6]; new aa,bb; x7=aa[x1,x3]; x7=bb[x5,x6]; y7=aa[y1,y3]; y7=bb[y5,y6]; w10 draw 1..3; draw 1..2; draw 3..4; draw 2..4; draw 6..7; draw 8..5. "The letter Y"; call charbegin(`Y,13,0,0,phh,0,0); cpen; top10y1=hh; bot10y6=0; .5hh=y4=y5; y6=y7; y1=y2=y3; lft10x1=round u; x3=r-x1; x2=x1+dspc; x4=good10(.5r-w10); x5=good10(.5r+w10); x4=x6; x5=x7; w10 draw 1..2; draw 1..4; draw 2..5; draw 3..5; draw 4..6; draw 6..7; draw 5..7. "The letter Z"; call charbegin(`Z,11,0,0,phh,0,0); cpen; top10y1=hh; bot10y4=0; y1=y2=y3; y4=y5=y6; lft10x1=round u; x6=r-x1; x2=x6; x4=x1; x3=x2-dspc; x5=x4+dspc; w10 draw 1..2; draw 4..6; draw 3..4; draw 2..5.