% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE calu.mf BY D E KNUTH. % IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED! % Calligraphic capitals with `fixed' pens, by N. N. Billawala (1985). % These letters are intended for math, hence |math_fitting| is assumed. % Character codes \0101 through \0132 are generated. cmchar "Calligraphic A"; beginchar("A",14.4u#,cap_height#,0); italcorr .5u#; adjust_fit(-.05w#,0); pickup cal.nib; lft x5=.54w; x7=.9w; top y5=h+.4cap_curve; bot y7=bot_flourish_line; z6=.3[z7,z5]-bend; pickup tilted.nib; lft x1=.05w; x2=.2w; rt x4=x5; y1=y2+.1h; bot y2=bot_flourish_line; top y4=h+.4cap_curve; y3=y6; z3=whatever[z2,z4]+2bend; draw\\(z1..tension 1.2..{right}z2) softjoin flex(z2,z3,z4); % left diagonal pickup cal.nib; erase fill\\(0,bot y5)--(w,bot y5)--(w,top y5)--(0,top y5)--cycle; draw flex(z5,z6,z7) softjoin (z7--z7+cal.extension); % right diagonal draw rt z3--z6; % bar math_fit(.5u#-.1cap_height#*slant,ic#); labels(1,2,3,4,5,6,7); endchar; cmchar "Calligraphic B"; beginchar("B",9.9u#,cap_height#,0); italcorr max(.8h#*slant-.1w#,.3h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; lft x1=lft x3=0; x4=.6[x2,x5]; rt x5=.9w; x6=.4w; rt x7=w; x8=.4[x9,x7]; lft x9=rt x3; top y1=h+o; bot y3=-o; z2=.3[z3,z1]+bend; y4=y1; y5=.6[y6,y4]; y6=.55h; y7=.45[y8,y6]; bot y8=-o; y9=.1h; draw z1-cal.extension--flex(z1,z2,z3); % stem draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10} ...z7{down}...z8{left}...z9; % lobes math_fit(.5u#,.3h#*slant+.5u#); labels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Calligraphic C"; beginchar("C",9.4u#,cap_height#,0); italcorr max(h#*slant-.15w#,.2h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; x0=.7[x2,x1]; rt x1=.85w; x2=.6w; lft x3=0; x4=.5w; rt x5=w; y0=.7h; y1=.8[y0,y2]; top y2=h+o; y3=.5h; bot y4=-o; y5=.2h; draw\\(z0{2(x1-x0),y1-y0}...z1) softjoin (z1...z2{left}....z3{down}...z4...z5); % stroke math_fit(.5u#-.5h#*slant,.2h#*slant+.5u#); labels(0,1,2,3,4,5); endchar; cmchar "Calligraphic D"; beginchar("D",10u#,cap_height#,0); italcorr .6h#*slant+.5u#; adjust_fit(4u#,0); pickup cal.nib; lft x1=lft x3=0; x4=.2[x1,x5]; rt x5=w; x6=.2w; x7=0; top y1=top y4=h; bot y3=0; z2=.5[z3,z1]+bend; y5=.51[y6,y4]; bot y6=bot y7=0; draw flex(z1,z2,z3); % stem draw z1---z4....z5{down}...z6---z7; % lobe draw z1{left}...{down}z1-flourish_change; % swash math_fit(.5u#-.8h#*slant,ic#-.5u#); labels(1,2,3,4,5,6,7); endchar; cmchar "Calligraphic E"; beginchar("E",8.5u#,cap_height#,0); italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; x1=.9[x3,x2]; rt x2=.9w; x3=.6[x4,x2]; lft x4=.05w; x5=.7[x6,x2]; lft x6=0; x7=.5[x6,x8]; rt x8=w; y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3]; y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h; draw\\(z1{2(x2-x1),y2-y1}...z2) softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc draw z5{left}...z6{down}...z7{right}...z8; % lower arc math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); endchar; cmchar "Calligraphic F"; beginchar("F",13.5u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(-.1w#,-u#); pickup cal.nib; x1=.5w; x3=.4w; lft x4=.1w; x5=x2+.35w; x6=.7[x1,x7]; rt x7=w; top y1=top y6=h; z2=.5[z3,z1]+bend; bot y3=-o; y4=.1h; y5=y2; y7=.9h; draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem draw z1-flourish_change+(0,.15asc_height){up}...{right}(z1-(2u,0)) ---z6...{down}z7; % upper bar draw z2--z5--z5-(0,.1cap_curve); % middle bar math_fit(0,.5ic#); labels(1,2,3,4,5,6,7); endchar; cmchar "Calligraphic G"; beginchar("G",9.4u#,cap_height#,.5desc_depth#); italcorr max(h#*slant-.05w#,.5h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; x0=.7[x2,x1]; rt x1=.95w; x2=.6w; lft x3=0; x4=.5w; rt x5=w; x6=.5[x7,x5]; lft x7=.2w; y0=.7h+o; y1=.8[y0,y2]; top y2=h+o; y3=.5[y4,y2]; bot y4=.1h; y5=.5h; bot y6=-d-o; y7=-.5d; draw\\(z0{2(x1-x0),y1-y0}...z1) softjoin (z1...z2{left}....z3{down}...z4...{up}z5); % arc draw z5{down}...z6{left}...z7; % tail math_fit(.5u#-.4h#*slant,.5h#*slant+.5u#); labels(0,1,2,3,4,5,6,7); endchar; cmchar "Calligraphic H"; beginchar("H",12.2u#,cap_height#,0); italcorr max(h#*slant-.2w#,.15h#*slant)+.5u#; adjust_fit(4u#,0); pickup cal.nib; lft x1=lft x3=.5u; rt x4=rt x6=.8w-.6u; rt x9=w; top y1=top y4=h; bot y3=-.06h; bot y6=bot_flourish_line; y9=y6+.1h; z2=.6[z3,z1]+bend; z5=.4[z6,z4]-bend; path p[]; p1=flex(z1,z2,z3); p2=flex(z4,z5,z6); p3=(-w,.45h)--(2w,.45h); rt z7+2bend=p3 intersectionpoint p1; rt z8=p3 intersectionpoint p2; draw (z1-flourish_change-bend{curl2}....z1-(u,0)---z1) softjoin p1; % left stem draw p2 softjoin (z6{right}...{up}z9); % right stem draw z7--z8; % bar math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#); labels(1,2,3,4,5,6,7,8,9); endchar; cmchar "Calligraphic I"; beginchar("I",10.8u#,cap_height#,0); italcorr max(h#*slant+.5cap_curve#-.2w#,.15h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; lft x0=0; x1=.9w; x2=x4=.5w; x5=.2w; x6=.8w; rt x7=1.05w; y0=.8h; top y1=top y2=h; z3=.5[z4,z2]+bend; bot y4=bot y5=bot y6=0; y7=.15h; draw z0{up}...z2---z1; % upper bar z8=.5[z2,z1]; draw z8{left}...z3{down}...{left}.5[z4,z5]; % stem draw z5---z6...{up}z7; % lower bar math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#); labels(0,1,2,3,4,5,6,7); endchar; cmchar "Calligraphic J"; beginchar("J",11.7u#,cap_height#,.5desc_depth#); italcorr h#*slant+.25u#; adjust_fit(0,0); pickup cal.nib; x0=.6w; rt x1=w; rt x2=.75w; x3=.5[x4,x2]; lft x4=0; top y0=top y1=h; y2=.2h; bot y3=-d-o; y4=d; draw z1---z0...{down}z0-(4u,2/7h); % upper bar draw z1{left}...z2{down}...z3{left}...{up}z4; % stem and tail math_fit(.5u#,0); labels(0,1,2,3,4); endchar; cmchar "Calligraphic K"; beginchar("K",11u#,cap_height#,0); italcorr max(h#*slant-.2w#,.2h#*slant)+.5u#; adjust_fit(0,.1w#); pickup cal.nib; lft x1=lft x3=0; top y1=h+o; bot y3=-o; z2=.6[z3,z1]+bend; draw z1-cal.extension--flex(z1,z2,z3); % stem pickup light_cal.nib; rt x4=.9w; x5=x4-.1w; x7=.8w; rt x8=1.1w; y4=.9h; top y5=h+o; bot y7=-o; y8=.2h-o; (lft z6)t_=z2.t_+penoffset up of pen_[cal.nib]; draw z4{up}...{left}z5..tension atleast 2..{down}z6 ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals math_fit(.5u#,.2h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); endchar; cmchar "Calligraphic L"; beginchar("L",10.8u#,cap_height#,0); italcorr .2h#*slant+.5u#; adjust_fit(0,0); pickup heavy_cal.nib; x1=.2w; x2=x1+.3w; rt x3=x2+.25w; lft x4=0; x5=.8[x4,x6]; rt x6=w; x7=.2[x4,x5]; y1=.4h-o; top y2=h+o; y3=.8h; bot y4=bot y5=-o; y6=.2h-o; y7=9/70h-o; path p; p=z4...z7{right}..{right}z5...{up}z6; draw p; % arm draw z4{dir .75angle(direction 0 of p)} ...z1{up}...z2{right}...{down}z3; % stem and flourish math_fit(.5u#,ic#); labels(1,2,3,4,5,6,7); endchar; cmchar "Calligraphic M"; beginchar("M",19.8u#,cap_height#,0); italcorr max(h#*slant-u#,.75cap_curve#)+.5cap_curve#+.5u#; adjust_fit(-.1w#,0); pickup med_cal.nib; (z20)t_=(z5)t_+penoffset down of currentpen =(z4)t_+penoffset down of pen_[tilted.nib]; z6=.3[z7,z5]-bend; z9=.3[z8,z10]+.5bend; z12=.3[z13,z11]-bend; x7=.5[x2,x13]; bot y7=.05h; top y5=h+o; (z0)t_=(z7)t_+penoffset right of currentpen =(z8)t_+penoffset right of pen_[tilted.nib]; pickup cal.nib; (z30)t_=(z11)t_+penoffset up of currentpen =(z10)t_+penoffset up of pen_[tilted.nib]; x13=w; bot y13=bot_flourish_line; pickup tilted.nib; lft x1=.1w; x2=.2w; x4=.2[x2,x7]; x10=.8[x7,x13]; y1=.05h+y2; bot y2=bot_flourish_line; top y10=h+o; z3=whatever[z2,z4]+2bend; y3=y6; draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem erase fill z20--(.5w,y20)--(.5w,top y4)--(x20-4u,top y4)--cycle; pickup med_cal.nib; draw flex(z5,z6,z7); % left diagonal pickup cal.nib; draw flex(z11,z12,z13) softjoin (z13--z13+cal.extension); % right stem pickup tilted.nib; path p; p=flex(z8,z9,z10); erase fill z0--(x0,y0-.5h)--(x9,y0-.5h)--subpath(1,0) of p--cycle; erase fill z30--(x30,y30+.5h)--(x9,y30+.5h)--subpath(1,2) of p--cycle; draw p; % right diagonal math_fit(.5u#-.05h#*slant,ic#); labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,20,30); endchar; cmchar "Calligraphic N"; beginchar("N",9u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(2u#,2.5u#); pickup med_cal.nib; (z0)t_=(z5)t_+penoffset down of currentpen =(z4)t_+penoffset down of pen_[tilted.nib]; (z20)t_=(z7)t_+penoffset up of currentpen =(z8)t_+penoffset up of pen_[tilted.nib]; z6=.3[z7,z5]-bend; rt z7=(w,0); top y5=h+o; pickup tilted.nib; lft x1=x2-2u; x2=-u; x4=0; x10=w; rt x11=w+3u; y1=y2+.05h; bot y2=bot_flourish_line; y3=y6; z3=whatever[z2,z4]+2bend; y10=h; z9=.7[z8,z10]-.5bend; bot y11=h; draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem draw flex(z8,z9,z10)...{right}z11; % right stem pickup med_cal.nib; erase fill z0--(.5w,y0)--(.5w,1.5h)--(x0-4u,1.5h)--cycle; erase fill z20--(.5w,y20)--(.5w,-.5h)--(x20+4u,-.5h)--cycle; draw flex(z5,z6,z7); % diagonal math_fit(.5u#-.05h#*slant,.3h#*slant); labels(0,1,2,3,4,5,6,7,8,9,10,11,20); endchar; cmchar "Calligraphic O"; beginchar("O",12.6u#,cap_height#,0); italcorr .7h#*slant+.5u#; adjust_fit(0,0); pickup cal.nib; x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w; top y1=top y5=h+o; y2=.55h; bot y3=-o; y4=.5h; y6=y2; path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6; draw subpath(0,4.8) of p; % bowl math_fit(.5u#-.3h#*slant,ic#-.5u#); labels(1,2,3,4,5,6); endchar; cmchar "Calligraphic P"; beginchar("P",9u#,cap_height#,0); italcorr .8h#*slant+.5u#; adjust_fit(4u#,0); pickup cal.nib; lft x1=lft x3=0; x4=x6=.3[x1,x5]; rt x5=w; top y1=top y4=h; y3=-o; y5=.55[y6,y4]; bot y6=.3h; z2=.5[z3,z1]+bend; draw flex(z1,z2,z3); % stem draw z1{left}...{down}z1-flourish_change; % swash draw z1---z4...z5{down}...{left}z6; % lobe math_fit(.5u#-.8h#*slant,.5ic#); labels(1,2,3,4,5,6); endchar; cmchar "Calligraphic Q"; beginchar("Q",11.7u#,cap_height#,.5desc_depth#); italcorr max(0,.6h#*slant-2u#)+.5u#; adjust_fit(0,2u#); pickup cal.nib; x0=.6w; x1=.4w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=0; x7=.23w; rt x8=w; x9=x8+2u; y0=.25h; bot y1=.15h; y2=.45[y1,y3]; top y3=h+o; y4=.5h; bot y5=0; y6=y7=y9=0; y8=-d; draw z0...z1{left}...z2{up}...z3{right} ...z4{down}...z5...{left}z7; % bowl draw z7{right}...z8{right}...{up}z9; % tail math_fit(.5u#,ic#); labels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Calligraphic R"; beginchar("R",12.6u#,cap_height#,0); italcorr .2h#*slant; adjust_fit(4u#,0); pickup cal.nib; lft x1=lft x3=0; x4=1/4[x1,x5]; rt x5=.7w; x6=.4[x1,x5]; rt x7=.8w; rt x8=w; top y1=top y4=h; bot y3=bot y7=-o; y5=.55[y6,y4]; bot y6=.4h; y8=.15h; z2=.5[z3,z1]+bend; draw flex(z1,z2,z3); % stem draw z1{left}...{down}z1-flourish_change; % swash draw z1---z4....z5{down}...{left}z6; % lobe draw z6{right}..tension atleast 1.5..z7{right}..z8; % tail math_fit(.5u#-.8h#*slant,ic#); labels(1,2,3,4,5,6,7,8); endchar; cmchar "Calligraphic S"; beginchar("S",9.9u#,cap_height#,0); italcorr max(.9h#*slant-.05w#,.3h#*slant)+.5u#; adjust_fit(0,0); pickup cal.nib; rt x0=rt x1=.95w; x2=.5[x3,x1]; lft x3=.15w; x4=.5[x6,x2]; rt x5=w; x6=.5w; lft x7=0; lft x8=.075w; y0=.8h; y1=.9h; top y2=h+o; y3=.55[y4,y2]; y4=.55[y6,y2]; y5=.45[y6,y4]; bot y6=-o; y7=.2h; y8=.35h; draw\\(z0--z1) softjoin (z1...z2{left}...z3{down}...z4...z5{down} ...z6{left}...z7) softjoin (z7{up}...{right}z8); % stroke math_fit(.5u#-.3h#*slant,.3h#*slant+.5u#); labels(0,1,2,3,4,5,6,7,8); endchar; cmchar "Calligraphic T"; beginchar("T",13u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(0,-.5u#); pickup heavy_cal.nib; x1=.47w; x3=.5w; lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w; top y1=h; bot y3=-.1h; y4=3/4h; top y5=top y6=h; top y7=1.05h; z2=.3[z3,z1]+bend; top y0=y1; x0=x2; z8=(2u,.2h); draw z0---z2...z3; % stem draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7); endchar; cmchar "Calligraphic U"; beginchar("U",11u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(0,0); pickup cal.nib; x1=x2-.15w; lft x2=.05w; x3=x2; x4=.25[x3,x6]; rt x6=rt x8=w; y1=y2-.05h; top y2=h; y3=.3w; bot y4=-o; top y6=h; bot y8=bot_flourish_line; z7=.3[z8,z6]-bend; draw z1...z2{right}..tension 2 and 1..z3{down} ...{right}z4..tension atleast 1.5..{up}z6; % left stem and arc draw flex(z6,z7,z8) softjoin (z8--z8+cal.extension); % right stem math_fit(.5u#-min(.3h#*slant+.1w#,.95h#*slant),.5ic#); labels(1,2,3,4,6,7,8); endchar; cmchar "Calligraphic V"; beginchar("V",11.25u#,cap_height#,0); italcorr .8h#*slant+.5u#; adjust_fit(0,0); pickup med_cal.nib; x1=0; top y1=h; z3=(.48w,0); z0.t_=z2.t_+penoffset down of currentpen =z3.t_+penoffset down of pen_[tilted.nib]; draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal pickup tilted.nib; rt x4=w; x5=x4-.2w; top y4=.8h; top y5=h; path p; p=z3..tension atleast 3 and 1..{up}z4; erase fill z0--(x0,y0-.5h)--(x4,y0-.5h)--(x4+eps,y4)--reverse p--cycle; draw p...{left}z5; % right diagonal math_fit(.5u#+.5cap_curve#-h#*slant,.5ic#); labels(0,1,2,3,4,5); endchar; cmchar "Calligraphic W"; beginchar("W",18u#,cap_height#,0); italcorr .8h#*slant+.5u#; adjust_fit(0,0); pickup med_cal.nib; x1=0; x3=.5[x1,x6]; x6=.52w; x9=.58[x6,x10]; y3=y9=0; top y1=top y6=h; z7=.5[z8,z6]+bend; z4=.5[z3,z5]+bend; (z0)t_=(z2)t_+penoffset down of currentpen =(z3)t_+penoffset down of pen_[tilted.nib]; (z20)t_=(z8)t_+penoffset down of currentpen =(z9)t_+penoffset down of pen_[tilted.nib]; draw z1{right}..tension atleast 1 and infinity..z2; % first diagonal pickup tilted.nib; x5=x6; rt x10=w; x11=x10-.1w; top y5=h; top y10=.8h; top y11=h; erase fill z0--(x0,y0-.5h)--(x5,y0-.5h)--z5..z4..z3--cycle; draw z3..z4..z5; % second diagonal pickup med_cal.nib; erase fill\\(.3w,bot y6)--(w,bot y6)--(w,top y6)--(.3w,top y6)--cycle; draw z6..z7..z8; % third diagonal pickup tilted.nib; path p; p=z9..tension atleast 3 and 1..{up}z10; erase fill z20--(x20,y20-.5h)--(x10,y20-.5h)--(x10+eps,y10) --reverse p--cycle; draw p..{left}z11; % fourth diagonal math_fit(.5u#+.5cap_curve#-h#*slant,.5ic#); labels(0,1,2,3,4,5,6,7,8,9,10,11,20); endchar; cmchar "Calligraphic X"; beginchar("X",11.4u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(0,0); pickup cal.nib; lft x1=.08w; lft x2=.2w; x4-x3=x2-x1; rt x4=w; h-y1=y4=1/9h; top y2=h; bot y3=0; draw z1{up}....z2{right} ... .2[z2+(.1w,0),z3-(.1w,0)]---.8[z2+(.1w,0),z3-(.1w,0)] ...{right}z3....{up}z4; % left diagonal x5=x6-u; rt x6=w; lft x7=0; x8=x7+u; top y5=h; y6=.85h; y7=h-y6; bot y8=0; draw z5{right}...z6{down} ..tension atleast 3..{down}z7...{right}z8; % right diagonal math_fit(.5u#,1/7h#*slant+.5u#); labels(1,2,3,4,5,6,7,8); endchar; cmchar "Calligraphic Y"; beginchar("Y",11.75u#,cap_height#,.5desc_depth#); italcorr .8h#*slant+.5u#; adjust_fit(0,0); pickup med_tilted.nib; rt x5=w; x6=x5-2.2u; top y5=.8h; top y6=h; x4=.4w; lft x3=.15w; y3=good.y 0; y4=good.y -d; path p; p=z3..z4{right}..tension atleast 3 and 1..z5{up}...{left}z6; pickup med_cal.nib; x1=x2-u; y1=y2-.05h; lft x2=.6u; top y2=h; draw z1...z2{right}..tension atleast 1 and infinity ..rt point 4/3 of p; % left diagonal erase fill subpath(2,1) of p--(x5,y4)--(x5+eps,y5)--cycle; pickup med_tilted.nib; draw p; % right diagonal math_fit(max(-1.2u#,.9u#-.95h#*slant),.5ic#); labels(1,2,3,4,5,6); endchar; cmchar "Calligraphic Z"; beginchar("Z",10.4u#,cap_height#,0); italcorr h#*slant+.5u#; adjust_fit(0,0); pickup heavy_cal.nib; lft x1=.05w; x2=.4w; rt x3=w; lft x7=0; x8=.8[x7,x9]; rt x9=1.1w; top y1=58/70h; top y2=top y3=h; bot y7=bot y8=0; bot y9=15/70h; z5=.55[z7,z3]+bend; x10=x5-2.5u; x11=x5+2u; x12=.2[x3,x2]; x13=.2[x7,x8]; y10=y5; bot y11=y10-6/70h; y12=64/70h; y13=6/70h; draw z1{up}...z2{right}...{right}z12...z3; % upper arm draw flex(z3,z5,z7); % diagonal draw z7...z13{right}...{right}z8...{up}z9; % lower arm pickup light_cal.nib; draw z10...z5{right}...{down}z11; % bar math_fit(.5u#,.6ic#); labels(1,2,3,5,7,8,9,10,11,12,13); endchar;