font_coding_scheme:="None";
mode_setup; font_setup;


def big_sqrt_refl =
adjust_fit(-letter_fit#,0); pickup rule.nib;
x1=good.x 5/9w; x2=good.x(-.5); bot y1=-d; bot y2=0;
draw z1--z2;  % diagonal
pickup crisp.nib; pos3(max(curve,rule_thickness),0);
x3r=1.5[x2,x1]; y3=.5[y1,y2];
pos4(rule_thickness,0); x4=x1; bot y4=-d;
pos5(vair,45); x5r=good.x(x3r+u); z5r=whatever[z3l,z2];
z6=z5l+whatever*(z2-z3l)=whatever[z3r,z4r];
z7=whatever[z1,z2]=z3l+whatever*(z4r-z3r);
filldraw reverse z5l--z6--z4r--z4--z7--z3l--z5r--cycle;  % left diagonal and serif
penlabels(1,2,3,4,5,6,7); enddef;

numeric mikro; mikro=1.2(asc_height#-x_height#);

def bar_or_vector(expr lh, rh, sol, sor) =
italcorr .7[x_height#,asc_height#]*slant;
adjust_fit(0,0); pickup rule.nib;
lft x1=hround if sol: -.5u else: .5u fi;
rt x2=hround if sor: (w+.5u) else: (w-.5u) fi;
y1=y2=good.y .7[x_height,asc_height];
draw z1--z2;  % bar
if rh:
rt x3=rt x4=hround(x2-u);
y3=y2+.3(asc_height-x_height); y4=y2-.3(asc_height-x_height);
draw z3{x2-x3,2(y2-y3)}...{2(x2-x3),y2-y3}z2;  % upper point
draw z4{x2-x4,2(y2-y4)}...{2(x2-x4),y2-y4}z2;  % lower point
fi;
if lh:
lft x5=lft x6=hround(x1+u);
y5=y1+.3(asc_height-x_height); y6=y1-.3(asc_height-x_height);
draw z5{x1-x5,2(y1-y5)}...{2(x1-x5),y1-y5}z1;  % upper point
draw z6{x1-x6,2(y1-y6)}...{2(x1-x6),y1-y6}z1;  % lower point
fi;
labels(1,2,3,4);
enddef;

def big_bar = bar_or_vector(false,false,false,false); enddef;
def big_vector = bar_or_vector(false,true,false,false); enddef;
def big_backvector = bar_or_vector(true,false,false,false); enddef;


charlist         1:  2:  3:  4:   5;
charlist         9: 10: 11: 12:  13;
extensible       5:  7,  0,  5,   6;
extensible       7:  7,  0,  0, 100;
extensible      13: 15,  0, 13,  14;
extensible      15: 15,  0,  0, 100;
charlist        16: 17: 18: 19:  21;
charlist        24: 25: 26: 27;
extensible      21:  0,  0, 21,  20;
charlist        32: 33: 34;
extensible      34: 34,  0, 35,  36;

cmchar "\textsize radical sign";
beginchar(0,15u#,rule_thickness#,10/6dh#-rule_thickness#);
big_sqrt; endchar;

cmchar "\big radical sign";
beginchar(1,18u#,rule_thickness#,2dh#-rule_thickness#);
big_sqrt; endchar;

cmchar "\Big radical sign";
beginchar(2,18u#,rule_thickness#,3dh#-rule_thickness#);
big_sqrt; endchar;

cmchar "\bigg radical sign";
beginchar(3,18u#,rule_thickness#,4dh#-rule_thickness#);
big_sqrt; endchar;

cmchar "\Bigg radical sign";
beginchar(4,18u#,rule_thickness#,5dh#-rule_thickness#);
big_sqrt; endchar;

cmchar "Extensible radical sign---bottom";
beginchar(5,19u#,0,3dh#);
adjust_fit(0,-letter_fit#); pickup rule.nib;
x1=x2=good.x(w-6u); bot y1=1-d; y2=h+eps;
draw z1--z2;  % diagonal
pickup crisp.nib; pos3(max(curve,rule_thickness),0);
x3l=good.x 3u; y3=.9[y1,y2];
pos4(rule_thickness,0); x4=x1; bot y4=-d;
pos5(vair,-45); x5l=good.x(x3l-u); z5l=whatever[z3r,(x2,body_height)];
z6=z5r+whatever*((x2,body_height)-z3r)=whatever[z3l,z4l];
z7=whatever[z1,z2]=z3r+whatever*(z4l-z3l);
filldraw z5r--z6--z4l--z4--z7--z3r--z5l--cycle;  % left diagonal and serif
penlabels(1,2,3,4,5,6,7); endchar;

cmchar "Extensible radical sign---extension module";
beginchar(6,19u#,0,dh#);
adjust_fit(0,-letter_fit#); pickup rule.nib;
x1=x2=good.x(w-6u); y1=-d-eps; y2=h+eps;
draw z1--z2;  % stem
labels(1,2); endchar;

cmchar "Extensible radical sign---top";
beginchar(7,19u#,rule_thickness#,dh#-rule_thickness#);
adjust_fit(0,-letter_fit#); pickup rule.nib;
x1=x2=good.x(w-6u); x3=good.x(w+.5); y1=-d-eps; bot y2=bot y3=0;
draw z1--z2--z3;  % stem and link
labels(1,2,3); endchar;

cmchar "\textsize reflected radical sign";
beginchar(8,15u#,rule_thickness#,10/6dh#-rule_thickness#);
big_sqrt_refl; endchar;

cmchar "\big reflected radical sign";
beginchar(9,18u#,rule_thickness#,2dh#-rule_thickness#);
big_sqrt_refl; endchar;

cmchar "\Big reflected radical sign";
beginchar(10,18u#,rule_thickness#,3dh#-rule_thickness#);
big_sqrt_refl; endchar;

cmchar "\bigg reflected radical sign";
beginchar(11,18u#,rule_thickness#,4dh#-rule_thickness#);
big_sqrt_refl; endchar;

cmchar "\Bigg reflected radical sign";
beginchar(12,18u#,rule_thickness#,5dh#-rule_thickness#);
big_sqrt_refl; endchar;

cmchar "Extensible reflected radical sign---bottom";
beginchar(13,19u#,0,3dh#);
adjust_fit(-letter_fit#,0); pickup rule.nib;
x1=x2=good.x(6u); bot y1=1-d; y2=h+eps;
draw z1--z2;  % diagonal
pickup crisp.nib; pos3(max(curve,rule_thickness),0);
x3l=good.x (w-3u); y3=.9[y1,y2];
pos4(rule_thickness,0); x4=x1; bot y4=-d;
pos5(vair,45); x5r=good.x(x3r+u); z5r=whatever[z3l,(x2,body_height)];
z6=z5l+whatever*((x2,body_height)-z3l)=whatever[z3r,z4r];
z7=whatever[z1,z2]=z3l+whatever*(z4r-z3r);
filldraw z5l--z6--z4r--z4--z7--z3l--z5r--cycle;  % left diagonal and serif
penlabels(1,2,3,4,5,6,7); endchar;

cmchar "Extensible reflected radical sign---extension module";
beginchar(14,19u#,0,dh#);
adjust_fit(-letter_fit#,0); pickup rule.nib;
x1=x2=good.x(6u); y1=-d-eps; y2=h+eps;
draw z1--z2;  % stem
labels(1,2); endchar;

cmchar "Extensible reflected radical sign---top";
beginchar(15,19u#,rule_thickness#,dh#-rule_thickness#);
adjust_fit(-letter_fit#,0); pickup rule.nib;
x1=x2=good.x(6u); x3=good.x(-.5); y1=-d-eps; bot y2=bot y3=0;
draw z1--z2--z3;  % stem and link
labels(1,2,3); endchar;


cmchar "Wide vector accent 1";
beginchar(16,10u#,body_height#,0);
big_vector; endchar;

cmchar "Wide vector accent 2";
beginchar(17,14u#,body_height#,0);
big_vector; endchar;

cmchar "Wide vector accent 3";
beginchar(18,18u#,body_height#,0);
big_vector; endchar;

cmchar "Wide vector accent 4";
beginchar(19,22u#,body_height#+.05(mikro),0);
big_vector; endchar;

cmchar "Extensible wide vector accent -- middle piece";
beginchar(20,4u#,body_height#+.05(mikro),0);
bar_or_vector(false,false,true,true); endchar;

cmchar "Extensible wide vector accent -- right piece";
beginchar(21,22u#,body_height#+.05(mikro),0);
bar_or_vector(false,true,true,false); endchar;

cmchar "Wide reverse vector accent 1";
beginchar(24,10u#,body_height#,0);
big_backvector; endchar;

cmchar "Wide reverse vector accent 2";
beginchar(25,14u#,body_height#,0);
big_backvector; endchar;

cmchar "Wide reverse vector accent 3";
beginchar(26,18u#,body_height#,0);
big_backvector; endchar;

cmchar "Wide reverse vector accent 4";
beginchar(27,22u#,body_height#+.05(mikro),0);
big_backvector; endchar;

cmchar "Extensible radical sign -- empty repeater";
beginchar(100,19u#,rule_thickness#,dh#-rule_thickness#);
adjust_fit(0,-letter_fit#); endchar;

cmchar "\textstyle integral sign";
beginchar(32,11u#,0,100/54dh#);
italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
adjust_fit(0,-ic#); pickup fine.nib;
pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180);
pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0);
pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
x5=x4=x6; lft x5r=hround(.5w-.5curve);
top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
bulb(3,2,1); bulb(7,8,9);  % bulbs
filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
penlabels(1,2,3,4,5,6,7,8,9); endchar;

cmchar "\displaystyle integral sign";
beginchar(33,14u#,0,150/54dh#);
italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
adjust_fit(0,-ic#); pickup fine.nib;
numeric bulb_size, max_size;
bulb_size=hround(bold+dw); max_size=bold+dw;
pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0);
pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
x5=x4=x6; lft x5r=hround(.5w-.5curve);
top y3r=0; bot y7r=-d;
y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
bulb(3,2,1); bulb(7,8,9);  % bulbs
filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
penlabels(1,2,3,4,5,6,7,8,9); endchar;

cmchar "Extensible integral sign - top";
beginchar(34,14u#,0,50/54dh#);
italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
adjust_fit(0,-ic#); pickup fine.nib;
numeric bulb_size, max_size;
bulb_size=hround(bold+dw); max_size=bold+dw;
pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
pos5(max_size,180); pos5'(max_size,0); z5'=z5;
pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
rt x1r=hround(w-u); w-x3=3u;
x5=x4; lft x5r=hround(.5w-.5curve);
top y3r=0; bot y5=-d; bot y7=-d;
y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
y4=-.5d; bulb(3,2,1);
filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
penlabels(1,2,3,4,5); endchar;

cmchar "Extensible integral sign - bot";
beginchar(35,14u#,0,50/54dh#);
italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
adjust_fit(0,-ic#); pickup fine.nib;
numeric bulb_size, max_size;
bulb_size=hround(bold+dw); max_size=bold+dw;
pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0);
pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
x5=x4=x6; lft x5r=hround(.5w-.5curve);
top y3r=0; bot y7r=-d;
y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
y6=-0.5d; y4=y5=0; bulb(7,8,9);  % bulbs
filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
penlabels(1,2,3,4,5,6,7,8,9); endchar;

cmchar "Extensible integral sign - rep";
beginchar(36,14u#,0,50/54dh#);
italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
adjust_fit(0,-ic#); pickup fine.nib;
numeric max_size; max_size=bold+dw;
pos4(max_size,0); pos6(max_size,0);
x4=x6; lft x4l=hround(.5w-.5curve);
y4=0; y6=-d;
filldraw stroke z4e...z6e;
penlabels(4,6);
endchar;

cmchar "Circumflex (hat) accent";
beginchar(40,9u#,min(asc_height#,2x_height#),0);
adjust_fit(0,0);
pickup crisp.nib; pos2(.5[vair,curve],90); top y2r=h; x2=.5w;
x1=w-x3=good.x 2.25u; y1=y3=.5[x_height,y2];
pos1(hair,angle(z2-z1)+90); pos3(hair,angle(z3-z2)+90);
filldraw stroke z1e--z2e--z3e;  % diagonals
penlabels(0,1,2,3,4); endchar;

cmchar "Example char";
beginchar(41,14u#,asc_height#,0);
adjust_fit(0,0);
pickup rule.nib;
draw (0,0)--(w,h)--(0,h)--(0,0)--(w,0)--(w,h);
endchar;

cmchar "Example char";
beginchar(42,14u#,asc_height#,0);
adjust_fit(0,0);
pickup rule.nib;
draw (0,0)--(w,h);
endchar;





font_x_height x_height#;
font_quad 18u#+4letter_fit#;
% (The calling file should give the other math extension font parameters.)

ligtable 40: 40 kern 2u#;
ligtable 41: 42 kern 7u#;
ligtable 42: 41 kern 7u#;
bye.