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.