% CSL Version of % The Computer Modern Symbols family of fonts (by D. E. Knuth, 1979). danger=0; codingscheme "TEX MATHSY"; mi=1; input script; % upper case script alphabet if fixwidth=0: texinfo slant, (6+2ls)pu, 3pu, 2pu, px, (18+4ls)pu; else: texinfo slant, 9pu, 0, 0, px, 9pu; fi; % (The calling file should give the rest of the \&{texinfo}.) new slant; slant=0; trxy 0; % the non-script characters are unslanted minus='000; cdot='001; rslash='004; pm='006; oplus='010; otimes='012; eqv='021; leq='024; geq='025; sim='030; subset='032; supset='033; neq='034; lftarrow='040; rtarrow='041; uparrow='042; dnarrow='043; dblarrow='044; infinity='061; elt='062; under='065; forall='070; exists='071; not='072; cup='133; cap='134; meet='136; join='137; lbrace='146; rbrace='147; vert='152; sharp='161; int='163; diamond='167; at='174; dollar='177; squotes=-1; input lasym; % this covers the more common symbols "Times operator"; call charbegin('002,18,0,0,ph,1/sqrttwo[pa,ph-2pa],0); cpen; x7=1/sqrttwo[.5r,u]; y7=1/sqrttwo[a,h]; x5=x7; x1=x3=r-x7; y1=y7; y3=y5; .5[y1,y3]=a; w10 draw 7..3; % upper left to lower right diagonal draw 5..1. % lower left to upper right diagonal "Asterisk at the axis"; call charbegin('003,9,0,0,.5px+pa,.5px-pa,0); new w99; w99=round(.6pixels.pw+blacker); % thinner than hairline new w98; w98=round .7[w99,w1]; cpen; top1y1=round(a+.5m); top1y1-bot1y2=m; y0=.5[y1,y2]; x0=r-x0; x1=x2=x0; x3=r-x4; x5=r-x6; x3=x5; % left-right symmetry y3=y4; y5=y6; y3-y5=y1-y0; .5[y3,y5]=y0; x4-x0=(.5sqrt3)lft1 3.75u; % asterisk will have 60-degree angles if $m=7.5u$ call `a cdraw(1,0,98,99); % upper arm call `b cdraw(2,0,98,99); % lower arm call `c cdraw(3,0,98,99); % upper left arm call `d cdraw(4,0,98,99); % upper right arm call `e cdraw(5,0,98,99); % lower left arm call `f cdraw(6,0,98,99). % lower right arm "Circle operator"; call charbegin('005,9,0,0,3.5pu+pa,3.5pu-pa,0); cpen; x8=.5r; lft10x6=round u; top10y8=round(a+3.5u); y6=a; call circle(1,2,3,4,5,6,7,8,w10). % bowl "Minus or plus sign"; cpen; if fixwidth=0: if pa+6pu>ph: call charbegin('007,14,0,0,ph,ph-2pa,0); top10y1=h; else: call charbegin('007,14,0,0,6pu+pa,6pu-pa,0); top10y1=a+6u; fi; else: call charbegin('007,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u; fi; .5[y1,y2]=a; x1=x2=.5r; lft10x3=round u; x4=r-x3; y3=y4=a; w10 draw 1..2; % stem draw 3..4; % plus bar x5=x3; x6=x4; y5=y6=y1; draw 5..6. % minus bar "Circle-minus operator"; call charbegin('011,18,0,0,ph,ph-2pa,pa.slant-.5pu); cpen; lft0x6=round u; y6=a; x8=r-x8; top0y8=h+oo; call circle(1,2,3,4,5,6,7,8,w0); % bowl w0 draw 6..2. % bar "Circle-divide operator"; call charbegin('013,18,0,0,ph,ph-2pa,pa.slant-.5pu); cpen; lft0x6=round u; y6=a; x8=r-x8; top0y8=h+oo; call circle(1,2,3,4,5,6,7,8,w0); % bowl w0 draw 5..1. % lower left to upper right diagonal "Circle-dot operator"; call charbegin('014,18,0,0,ph,ph-2pa,pa.slant-.5pu); cpen; lft0x6=round u; y6=a; x8=r-x8; top0y8=h+oo; call circle(1,2,3,4,5,6,7,8,w0); % bowl x0=x8; y0=y2; cpen; new w99; w99=w3sqrt2; w99 draw 0. % dot "Elementary division operator"; call charbegin('015,18,0,0,.5[px,ph],.5[px,ph]-2pa,0); cpen; lft10x1=round u; x2=r-x1; y1=y2=a; w10 draw 1..2; % bar new w99; w99=w3sqrt2; top99y3=.5[m,h]; .5[y3,y4]=a; x3=x4=.5r; w99 draw 3; draw 4. % dots "Intercalation product operator"; call charbegin('016,9,0,0,px,pd+pb,0); vpen; lft3x1=u; rt3x2=r-u; x3=x4=.5r; top3y1=m; y1=y2=y3; bot6y4=-d-b; w3 draw 1..2; % bar hpen; w3 draw 3..4. % stem "Bullet"; call charbegin('017,9,0,0,3.5pu+pa,3.5pu-pa,0); cpen; x8=.5r; lft10x6=round u; top10y8=round(a+3.5u); y6=a; call circle(1,2,3,4,5,6,7,8,w10); % outer boundary x0=x8; y0=y2; cpen; w10 ddraw 1{x2-x8,y2-y8}..2{0,-1}..3{x4-x2,y4-y2}..4{-1,0}.. 5{x6-x4,y6-y4}..6{0,1}..7{x8-x6,y8-y6}..8{1,0}..1{x2-x8,y2-y8}, 0..0..0..0..0..0..0..0..0. % fill it in "Perpendicular sign or lattice bottom"; cpen; if fixwidth=0: if pa+8pu>ph: call charbegin('020,18,0,0,ph,ph-2pa,0); top10y1=h; else: call charbegin('020,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u; fi; else: call charbegin('020,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u; fi; .5[y1,y2]=a; x1=x2=.5r; lft10x3=round u; x4=r-x3; y3=y4=y2; w10 draw 1..2; % stem draw 3..4. % bar "Reflexive subset sign"; call charbegin('022,18,0,0,ph,ph-2pa,0); cpen; lft10x1=round 2.5u; x2=x3=r-x1; top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a); x4=x5=.5r; y4=y2; y5=y3; w10 draw 2..4{-1,0}..1{0,-1}..5{1,0}..3; % stroke x6=x1; x7=x2; y6=y7; bot10y6=2a-h; draw 6..7. % bar "Reflexive superset sign"; call charbegin('023,18,0,0,ph,ph-2pa,0); cpen; lft10x2=round 2.5u; x2=x3=r-x1; top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a); x4=x5=.5r; y4=y2; y5=y3; w10 draw 2..4{1,0}..1{0,-1}..5{-1,0}..3; % stroke x6=x1; x7=x2; y6=y7; bot10y6=2a-h; draw 6..7. % bar "Precedes or equals sign"; call charbegin('026,18,0,0,ph,ph-2pa,0); vpen; lft10x1=round 2.5u; x2=x3=r-x1; top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a); x4=x5=x2; y4=y2+b; y5=y3-b; w10 draw (4..)2..1{-1,0}..1{1,0}..3(..5); % diagonals x6=x1; x7=x2; y6=y7; bot10y6=2a-h; draw 6..7. % bar "Follows or equals sign"; call charbegin('027,18,0,0,ph,ph-2pa,0); vpen; lft10x2=round 2.5u; x2=x3=r-x1; top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a); x4=x5=x2; y4=y2+b; y5=y3-b; w10 draw (4..)2..1{1,0}..1{-1,0}..3(..5); % diagonals x6=x1; x7=x2; y6=y7; bot10y6=2a-h; draw 6..7. % bar "Approximate equality sign"; call charbegin('031,18,0,0,1.1(px-pe)+pa,1.1(px-pe)-pa,0); vpen; top10y1=round(a+1.1(m-e)+eps); top10y1-bot10y2=round(m-e); lft10x3=round u; y5=.5[y1,y2]; y3=y2; y4=y1; x4=r-x3; x5=r-x5; x8=x3; x9=x4; x10=x5; y1-y6=y2-y7=y3-y8=y4-y9=y5-y10=round 1.2(m-e); call `a zdraw(3,1,5,2,4,w10,w10+deltaw,7.5u/(e-m)); % upper stroke call `b zdraw(8,6,10,7,9,w10,w10+deltaw,7.5u/(e-m)). % lower stroke "Dot over equal sign"; call charbegin('035,18,0,0,ph,0,0); cpen; lft10x1=round u; x3=x1; x2=x4=r-x1; y1=y2; y3=y4; y1-y3=round(m-e); .5[y1,y3]=a; w10 draw 1..2; % upper bar draw 3..4; % lower bar new w99; if w31.5u: lft1x2=round .75u; else: x2=good1 1.5u; fi; x1=r-x1; % axis of left-right symmetry x3=r-x2; top0y1=h+oo; bot0y2=-oo; y3=y2; call `a darc(1,2,w1); call `b darc(1,3,w1); % bowl if fixwidth=0: new sqrttwo; sqrttwo=save; fi; cpen; rt10x7=round(r-2u); lft10x8=round 2u; top10y7=h+b; bot10y8=-b; w10 draw 7..8. % diagonal "Angle sign"; call charbegin('066,12,0,0,ph,0,0); cpen; lft10x2=round u; x1=x3=r-x2; top10y1=h; bot10y2=0; y3=y2; w10 draw 1..2..2..3. % diagonal and bar "Hardy's asymptotic equivalence sign"; call charbegin('067,18,0,0,.5[px,ph]+prt/2,.5[px,ph]+prt/2-2pa,0); vpen; lft10x1=round u; x2=x3=r-x1; x4=x1; y1=y2=good10 1/3[m,h]; y3=y4; y1-a=a-y3; x5=x6=.5[x1,x2]; y5=good10 1/3[y1,y4]; y5-a=a-y6; w10 draw 1{x5-x1,2(y5-y1)}..5{1,0}..2{x2-x5,2(y2-y5)}; % upper bar draw 4{x6-x4,2(y6-y4)}..6{1,0}..3{x3-x6,2(y3-y6)}. % lower bar "Hebrew letter aleph"; call charbegin('073,11,0,0,ph,0,0); vpen; lft6x1=round u; y1=2/3[m,h]; x4+x5=x3+x6=x2+x7=x0+x9=x1+x8=r; x2=x3=2.5u; new aa; x2=aa[x1,x8]; y50=aa[y1,y8]; top5y50=top6y2; bot5y50=bot6y3; x0=1.5u; top6y0=h; y4=y0; x4=5u; y4+y5=y3+y6=y2+y7=y1+y8=y0+y9=h; w6 ddraw 0..0{0,-1}..2{x8-x1,y8-y1}..6{x8-x1,y8-y1}..8{0,-1}..9(..5), (4..)0..1{0,-1}..3{x8-x1,y8-y1}..7{x8-x1,y8-y1}.. 9{0,-1}..9; % long diagonal hpen; x10=3.5u; new aa; x10=aa[x1,x8]; y10=aa[y1,y8]; x11=good1 2u; y11=e; x12=.5[x11,x13]; y12=.5[y11,y13]; x13=good5 3.5u; y13=.2e; x14=good5 2u; bot5y14=0; draw |w0#|10{y8-y1,x1-x8}..|w1|11{0,-1}.. |.5[w1,w5]|12{1.5(x13-x11),y13-y11}.. |w5#|13{0,-1}..14{-1,0}; % lower left stroke x15=7.75u; new aa; x15=aa[x1,x8]; y15=aa[y1,y8]; x16=.5[x21,x28]; y16=.5[y21,y28]; vpen; lft6x21=round 7u; y21=y1; x20+x29=x21+x28=x22+x27=x24+x25; x28=x8; y20+y29=y21+y28=y22+y27=y24+y25; y28=.25[m,h]; top5y16=top6y22; x22=x27; x20=7.5u; x24=9.5u; y20=y24=y0; w6 ddraw 20..20{0,-1}..22{x28-x21,y28-y21}..28{0,-1}..29(..25), (24..)20..21{0,-1}..27{x28-x21,y28-y21}.. 29{0,-1}..29; % short diagonal draw 15{0,1}..16{0,1}. % link "Upper case Fraktur R"; call charbegin('074,13,0,0,ph,0,0); new w99; w99=round .25[w0,w1]; hpen; lft0x1=round u; y1=1/3[e,m]; x2=2u; y2=e; w0 draw 1{0,-1}..2{1,0}; % point of upper left flourish x3=3u; top0y3=h+oo; lft99x4=round u; x5=2u; y5=1/3[m,h]; rt99x6=round 3.5u; call `a sdraw(3,4,5,6,2,w99,w8,-(h-e)/(8u)); % flourish x7=x8=good4 6u; y7=m; y8=e; call `b arc(3,7,w4); % upper link w4 draw 7..8; % stem x9=3.5u; bot0y9=-oo; call `c arc(9,8,w4); % lower link x10=5/3u; y10=.3e; x11=4/3u; x12=u; y12=.35e; x13=2u; y13=.45e; new aa; x11=x10+aa(y12-y13); y11=y10+aa(x13-x12); % perpendicular to $12\to13$ w0 draw 9{-1,0}..10{x11-x10,y11-y10}..11; % tail draw 12..13; % cross x14=x7; y14=.75h; x15=9.5u; top99y15=h+o; draw 14{0,1}..15{1,0}; % top of bowl lft4x16=11.5u; y16=.6h; w4 draw 15..16; % diagonal of bowl lft99x17=lft4x16; y17=y16; rt99x26=rt4x15; y26=y15; new aa,bb; rt99x18=aa[rt4x15,rt4x16]; y18=aa[y15,y16]; x18=x17+bb(y15-y16); y18=y17+bb(x16-x15); % perpendicular to $15\to16$ rpen#; w4 draw 17..18; % erase excess hpen; w99 draw 15..26..26..18; % reinforcements x20=x7; y20=y21=.52h; x21=9u; w99 draw 20..21{1,0}..17{x18-x17,y18-y17}..18; % bottom of bowl x22=9.25u; y22=.5e; lft99x24=lft4x23; bot4y23=-o; x24=10.5u; y24=y23; rt99x25=12.5u; y25=e/4; w4 draw 21..22{x22-x21,y22-y21}..23{1,0}; % lower diagonal rpen#; w4 draw 24..25; % erase excess at lower right hpen; w99 draw 24..25. % point of lower right diagonal "Upper case Fraktur I"; call charbegin('075,13,0,0,ph,0,0); % (this letter extended to be same width as the R) new w99; w99=round .25[w0,w1]; hpen; x1=5u; y1=good6 .5h; lft99x2=round u; y2=.75h; x3=x1; top99y3=h+oo; w99 draw 1{-1,0}..2{0,1}..3{1,0}; % shoulder x4=9u; y4=.75h; x5=10.5u; bot99y5=2/3h+1; rt99x6=12.5u; bot99y6=.75h+1; draw |w99#|3{1,0}..|w4#|4{6u,-h}..|w99#|5{1,0}..6{0,1}; % upper stroke lft4x7=round u; y7=good6 .25h; x8=7u; bot4y8=-oo; x9=good4 10.5u; y9=h/6; x10=good4 8.5u; y10=.45h; x11=1/sqrttwo[x12,x10]; y11=1/sqrttwo[y10,y12]; x12=x9; top99y12=.625h; rt99x13=round 12.5u; y13=.5h; draw |w4|7{1,0}..8{1,0}..9{0,1}..|w4#|10{0,1}.. |2/3[w99,w4]|11{x12-x10,y12-y10}..|w99#|12..13{0,-1}. % lower stroke "Lattice top"; cpen; if fixwidth=0: if pa+8pu>ph: call charbegin('076,18,0,0,ph,ph-2pa,0); top10y1=h; else: call charbegin('076,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u; fi; else: call charbegin('076,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u; fi; .5[y1,y2]=a; x1=x2=.5r; lft10x3=round u; x4=r-x3; y3=y4=y1; w10 draw 1..2; % stem draw 3..4. % bar "Zero-width slash to negate a relation"; call charbegin('100,18,0,0,ph+pb,ph+pb-2pa,0); charwd 0; chardw 0; cpen; rt10x1=round(r-2u); lft10x2=round 2u; top10y1=h+b; .5[y1,y2]=a; w10 draw 1..2. % diagonal "Multiset union sign"; call charbegin('135,13,0,0,ph,ph-2pa,0); cpen; lft10x1=round u; x2=x1; x3=r-x3; x4=x5=r-x1; y1=good10(.5[m,h]); .5[y1,y3]=a; y2=y4=2/3[y1,y3]; y5=y1; call qcirc(3,6,2,w10); call qcirc(3,7,4,w10); % cup w10 draw 1..2; draw 4..5; % stems y8=y9=.47[y1,y3]; x8=r-x9=x1+1.75w10-eps; x10=x11=x3; .5[y10,y11]=y8; y11-y10=x9-x8; draw 8..9; draw 10..11. % enclosed plus sign "Left turnstile"; cpen; if fixwidth=0: if pa+8pu>ph: call charbegin('140,18,0,0,ph,ph-2pa,0); top10y1=h; else: call charbegin('140,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u; fi; else: call charbegin('140,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u; fi; .5[y1,y2]=a; x1=x2=x3; lft10x3=round u; x4=r-x3; y3=y4=a; w10 draw 1..2; % stem draw 3..4. % bar "Right turnstile"; cpen; if fixwidth=0: if pa+8pu>ph: call charbegin('141,18,0,0,ph,ph-2pa,0); top10y1=h; else: call charbegin('141,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u; fi; else: call charbegin('141,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u; fi; .5[y1,y2]=a; x1=x2=x4; lft10x3=round u; x4=r-x3; y3=y4=a; w10 draw 1..2; % stem draw 3..4. % bar "Left floor bracket"; call charbegin('142,7,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10 2.5u; x3=x1+3.75u+eps; top10y1=h+b; .5[y1,y2]=a; y3=y2; w10 draw 1..2..2..3. % stem and bar "Right floor bracket"; call charbegin('143,7,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10(r-2.5u); x3=x1-3.75u-eps; top10y1=h+b; .5[y1,y2]=a; y3=y2; w10 draw 1..2..2..3. % stem and bar "Left ceiling bracket"; call charbegin('144,7,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10 2.5u; x3=x1+3.75u+eps; top10y1=h+b; .5[y1,y2]=a; y3=y1; w10 draw 3..1..1..2. % bar and stem "Right ceiling bracket"; call charbegin('145,7,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10(r-2.5u); x3=x1-3.75u-eps; top10y1=h+b; .5[y1,y2]=a; y3=y1; w10 draw 3..1..1..2. % bar and stem "Left angle bracket"; call charbegin('150,6,0,0,ph+pb,ph+pb-2pa,0); cpen; rt10x1=round(r-u); x1=x3; lft10x2=round fixwidth[u,7/3u]; top10y1=h+b; .5[y1,y3]=y2=good10a; w10 draw 1..2..2..3. % diagonals "Right angle bracket"; call charbegin('151,6,0,0,ph+pb,ph+pb-2pa,0); cpen; rt10(r-x1)=round(r-u); x1=x3; lft10(r-x2)=round fixwidth[u,7/3u]; top10y1=h+b; .5[y1,y3]=y2=good10a; w10 draw 1..2..2..3. % diagonals "Double vertical line (norm or cardinality)"; call charbegin('153,9,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10 .25r; top10y1=h+b; .5[y1,y2]=a; x3=x4=r-x1; y3=y1; y4=y2; w10 draw 1..2; draw 3..4. % stems "Double left bracket"; call charbegin('154,8,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10 2.5u; x3=x4=x1+4.75u+eps; x5=x6=x1+round 3u; top10y1=h+b; .5[y1,y2]=a; y3=y5=y1; y4=y6=y2; w10 draw 3..1..1..2..2..4; % bars and left stem draw 5..6. % right stem "Double right bracket"; call charbegin('155,8,0,0,ph+pb,ph+pb-2pa,0); cpen; x1=x2=good10(r-2.5u); x3=x4=x1-4.75u-eps; x5=x6=x1-round 3u; top10y1=h+b; .5[y1,y2]=a; y3=y5=y1; y4=y6=y2; w10 draw 3..1..1..2..2..4; % bars and right stem draw 5..6. % left stem "Radical sign"; call charbegin('160,15,0,0,ph+pb,ph+pb-2pa,0); hpen; x1=good10(20/3u); x2=r+1; top10y2=h+b; .5[y1,y2]=a; y3=y5=y7=good6a; y4=y6=y1; x7=1.5[x2,x1]; lft10x7=lft2x3; rt2x3=rt0x5; lft10x1=lft2x4; rt2x4=rt0x6; x8=x7-u; new aa; x8=aa[x5,x2]; y8=aa[y5,y2]; hpen; w2 draw 3..4; % left diagonal w10 draw 7..4; w0 draw 5..6; % sharpen the corners lpen#; w2 draw 8..5; % erase excess at upper left hpen; w0 draw 8..5; % serif rpen#; w2 draw 1..2; % erase excess at lower right hpen; w10 draw 1..2. % right diagonal "Nabla or backwards-difference operator"; call charbegin('162,15,0,0,ph,0,0); hpen; rt0x2=round(r-u); lft4x4=round u; top0y2=h; top4y4=h; bot4y5=-o; y6=y5; x6-x2=x4-x5; lft4x5=lft0x6; x1=x2; x3=x4; vpen; top8y1=h; y3=y1; w9 draw 1..3; % bar line lpen#; w9 draw 5..4; % erase excess at upper left hpen; w4 draw 5..4; % left diagonal rpen#; w4 draw 6..2; w9 draw 6..2; % erase excess at right hpen; w0 draw 6..2; % right diagonal y7=y4; lft0x7=lft4x4; w0 draw 2..7..7..6. % sharpen upper left corner "Square set union sign (Scott lub)"; call charbegin('164,13,0,0,ph,ph-2pa,0); cpen; lft10x1=round u; x2=x1; x4=x5=r-x1; y1=good10(.5[m,h]); .5[y1,y2]=a; y2=y4; y5=y1; w10 draw 1..2..2..4..4..5. % stroke "Square set intersection sign (Scott glb)"; call charbegin('165,13,0,0,ph,ph-2pa,0); cpen; lft10x1=round u; x2=x1; x4=x5=r-x1; y2=good10(.5[m,h]); .5[y1,y2]=a; y2=y4; y5=y1; w10 draw 1..2..2..4..4..5. % stroke "Square reflexive subset sign"; call charbegin('166,18,0,0,ph,ph-2pa,0); cpen; lft10x6=round 2.5u; x2=x3=x7=r-x6; lft10x4=round x6; top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a); x4=x5; y4=y2; y5=y3; w10 draw 2..4..4..5..5..3; % stroke y6=y7; bot10y6=2a-h; draw 6..7. % bar "Section sign"; call charbegin('170,8,0,0,ph,pd,0); hpen; x1=x4=.5r; rt0x2=rt1x3=round(r-1.5u); lft0x5=lft1x6=round 1.5u; top0y1=h+oo; bot0y4=-d-oo; y2=y3=.125[y1,y4]; y5=y6=.125[y4,y1]; w0 draw 1{1,0}..2{0,-1}; % upper link draw 4{-1,0}..5{0,1}; % lower link cpen; w1 draw 3; draw 6; % bulbs x7=x11=x5; x9=x12=x2; x8=x10=x1; y8=1/3[y1,y4]; y10=1/3[y4,y1]; call `a sdraw(1,7,8,9,10,w1-deltaw,w0,-(h+d)/(36u)); % upper stroke call `b sdraw(8,11,10,12,4,w1-deltaw,w0,-(h+d)/(36u)). % lower stroke "Dagger mark"; call charbegin('171,8,0,0,ph,pd,0); cpen; x1=x2=x3=x4=good1(.5r); lft1x5=round u; x6-x2=x2-x5; top1y1=h; bot6y4=-d; y2=y5=y6=good1m; y3=e; w1 draw 1; draw 5; draw 6; % bulbs hpen; draw |w1|1..|w0|2; % top stem draw |w0|2..|(round .5[w0,w1])-eps #|3..|w0|4; % bottom stem vpen; draw |w1|5..|w0|2; draw |w1|6..|w0|2. % bars "Double dagger mark"; call charbegin('172,8,0,0,ph,pd,0); cpen; x1=x2=x3=x6=x7=x8=good1(.5r); lft1x4=round u; x5-x2=x2-x4; x9=x4; x10=x5; top1y1=h; bot1y3=.5[y1,y8]=top1y6; bot1y8=-d; y2=y4=y5=good1 .5[y1,y3]; y7=y9=y10=good1 .5[y6,y8]; w1 draw 1; draw 3; draw 4; draw 5; draw 6; draw 8; draw 9; draw 10; % bulbs hpen; draw |w1|1..|w0|2; draw |w1|3..|w0|2; draw |w1|6..|w0|7; draw |w1|8..|w0|7; % stems vpen; draw |w1|4..|w0|2; draw |w1|5..|w0|2; draw |w1|9..|w0|7; draw |w1|10..|w0|7. % bars "Paragraph mark"; call charbegin('173,11,0,0,ph,pd,0); cpen; top10y1=h; bot10y6=-d; y4=y7=y9=y1; y8=y6; y3=y5=good10 .5[y1,y6]; lft10x2=round u; y2=.5[y1,y3]; x1=x3=.5r; x4=x5=x6=good10 .5(r+2u); x7=x8=x6+2u; x9=r-u; w10 ddraw 4..1{-1,0}..2{0,-1}..3{1,0}..5, 4..4..4..5..5; % filled bowl draw 6..4..4..9; % left stem and upper serif draw 7..8. % right stem "Copyright symbol"; call charbegin('175,18,0,0,ph,pd,0); new up; up=.5((h-m)-d); % amount to raise baseline of lowercase c cpen; rt3x1=round(r-6u); if top3(top3top6e+2)>.9[e,m]: top3y1=.9[e,m]+up; else: y1=top3top6e+2+up; fi; w3 draw 1; % bulb hpen; rt0x2=rt3x1; y2=y1; x3=x5=.5(r+u); top0y3=m+oo+up; w0 draw 2{0,1}..3{-1,0}; % shoulder if w2>1.5u: lft2x4=round(5.75u); else: x4=good2 6.5u; fi; y4=y5; bot0y5=-oo+up; call `a darc(3,4,w2); % stroke if w0=w1: x6=x2; x7-x5=x5-x4; y7=.5[y3,y5]; new aa; x6=aa[x5,x7]; y6=(sqrt(1-aa.aa))[y7,y5]; else: lft0x6=rt0x2; y6=.5e-1+up; x7=x6; y7=e+up; fi; w0 draw 5{1,0}..6(..7); % point cpen; top10y18=h+oo; bot10y14=-d-oo; lft10x16=round u; rt10x12=round(r-u); call circle(11,12,13,14,15,16,17,18,w10). % enclosing cirle "Sterling sign"; call charbegin('176,12,0,0,ph,0,0); hpen; x1=7.5u; top0y1=h+oo; rt0x2=rt2x3=round(r-1.5u); y2=y3=.75h; y4=y5=.5h; x4=3u-eps; x5=7.5u+eps; x6=x7=good1 5u; y6=.75[y8,y1]; y7=.25[y8,y1]; bot0y8=-oo; x8=2.5u; lft0x9=round u; y9=.1h; w0 draw 1{1,0}..2{0,-1}; % link cpen; w2 draw 3; % bulb call `a arc(1,6,w1); % shoulder hpen; w1 draw 6..7; % stem w0 draw 4..5; % bar call `b arc(8,7,w1); call `c arc(8,9,w0); % loop top11y10=round .2h; bot11y12=-oo; x11=.5[x8,x13]-u; y11=y9; rt0x13=round(r-u); y13=.2h; call `d zdraw(9,10,11,12,13,w11,w7,-(x13-x8-4u)/(.2h)). % arm input lasymext; % possible characters \¬077, \¬156, \¬157