% This file contains series of large delimiters for math extension fonts. % The sizes are `{\tt\char`\\big}' (|2dh#|), `{\tt\char`\\Big}' (|3dh#|), % `{\tt\char`\\bigg}' (|4dh#|), and `{\tt\char`\\Bigg}' (|5dh#|), % followed in most cases by an extensible character that can grow % arbitrarily large in |dh#| steps, % where |dh#| is 60\% of the font design size. % (For example, a 10-point font will have large delimiters in sizes % 12$\,$pt, 18$\,$pt, 24$\,$pt, 30$\,$pt, 36$\,$pt, 42$\,$pt, etc.) % Character codes \0000--\0105 and \0150--\0177 are generated. charlist oct"000": oct"020": oct"022": oct"040": oct"060"; % left parentheses charlist oct"001": oct"021": oct"023": oct"041": oct"061"; % right parentheses charlist oct"002": oct"150": oct"024": oct"042": oct"062"; % left brackets charlist oct"003": oct"151": oct"025": oct"043": oct"063"; % right brackets charlist oct"004": oct"152": oct"026": oct"044": oct"064"; % left floors charlist oct"005": oct"153": oct"027": oct"045": oct"065"; % right floors charlist oct"006": oct"154": oct"030": oct"046": oct"066"; % left ceilings charlist oct"007": oct"155": oct"031": oct"047": oct"067"; % right ceilings charlist oct"010": oct"156": oct"032": oct"050": oct"070"; % left braces charlist oct"011": oct"157": oct"033": oct"051": oct"071"; % right braces charlist oct"012": oct"104": oct"034": oct"052"; % left angle brackets charlist oct"013": oct"105": oct"035": oct"053"; % right angle brackets charlist oct"016": oct"056": oct"036": oct"054"; % slashes charlist oct"017": oct"057": oct"037": oct"055"; % backslashes charlist oct"160": oct"161": oct"162": oct"163": oct"164"; % radical signs extensible oct"014": 0,0,0,oct"014"; % vertical line extensible oct"015": 0,0,0,oct"015"; % double vertical line extensible oct"060": oct"060",0,oct"100",oct"102"; % left parenthesis extensible oct"061": oct"061",0,oct"101",oct"103"; % right parenthesis extensible oct"062": oct"062",0,oct"064",oct"066"; % left bracket extensible oct"063": oct"063",0,oct"065",oct"067"; % right bracket extensible oct"064": 0,0,oct"064",oct"066"; % left floor bracket extensible oct"065": 0,0,oct"065",oct"067"; % right floor bracket extensible oct"066": oct"062",0,0,oct"066"; % left ceiling bracket extensible oct"067": oct"063",0,0,oct"067"; % right ceiling bracket extensible oct"070": oct"070",oct"074",oct"072",oct"076"; % left brace extensible oct"071": oct"071",oct"075",oct"073",oct"076"; % right brace extensible oct"072": oct"070",0,oct"072",oct"076"; % sharp left parenthesis extensible oct"073": oct"071",0,oct"073",oct"076"; % sharp right parenthesis extensible oct"074": 0,0,0,oct"077"; % arrow extension modules only extensible oct"075": 0,0,0,oct"167"; % double arrow extension modules only extensible oct"076": 0,0,0,oct"076"; % brace extension modules only extensible oct"077": oct"170",0,oct"171",oct"077"; % updownarrow extensible oct"100": oct"070",0,oct"073",oct"076"; % left moustache extensible oct"101": oct"071",0,oct"072",oct"076"; % right moustache extensible oct"102": 0,0,0,oct"102"; % left parenthesis extension modules only extensible oct"103": 0,0,0,oct"103"; % right parenthesis extension modules only extensible oct"164": oct"166",0,oct"164",oct"165"; % radical sign extensible oct"167": oct"176",0,oct"177",oct"167"; % double updownarrow extensible oct"170": oct"170",0,0,oct"077"; % uparrow extensible oct"171": 0,0,oct"171",oct"077"; % downarrow extensible oct"176": oct"176",0,0,oct"167"; % double uparrow extensible oct"177": 0,0,oct"177",oct"167"; % double downarrow cmchar "\big left parenthesis"; beginchar(oct"000",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(1.5u#,-.25u#); left_paren(hair,stem); endchar; cmchar "\Big left parenthesis"; beginchar(oct"020",9u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(2u#,-.25u#); left_paren(rule_thickness,.5[stem,bold]); endchar; cmchar "\bigg left parenthesis"; beginchar(oct"022",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(2.5u#,-.25u#); left_paren(rule_thickness+.2dw,bold); endchar; cmchar "\Bigg left parenthesis"; beginchar(oct"040",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(3u#,-.25u#); left_paren(rule_thickness+.4dw,bold+dw); endchar; cmchar "Extensible left parenthesis---top"; beginchar(oct"060",12u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(4u#,-.25u#); pickup fine.nib; numeric min_breadth,max_breadth; min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw; pos1(hround min_breadth,0); pos2(hround max_breadth,0); rt x1r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u; top y1=h-1; y2=-d-eps; filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc penlabels(1,2); endchar; cmchar "Extensible left parenthesis---bottom"; beginchar(oct"100",12u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(4u#,-.25u#); pickup fine.nib; numeric min_breadth,max_breadth; min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw; pos3(hround min_breadth,0); pos2(hround max_breadth,0); rt x3r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u; bot y3=1-d; y2=h+eps; filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc penlabels(2,3); endchar; cmchar "Extensible left parenthesis---extension module"; beginchar(oct"102",12u#,0,dh#); adjust_fit(4u#,-.25u#); pickup fine.nib; numeric max_breadth; max_breadth=bold+2dw; pos2(hround max_breadth,0); pos2'(hround max_breadth,0); lft x2l=lft x2'l=hround 1.25u; y2=h+eps; y2'=-d-eps; filldraw stroke z2e--z2'e; % link penlabels(2,2'); endchar; cmchar "\big right parenthesis"; beginchar(oct"001",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(-.25u#,1.5u#); right_paren(hair,stem); endchar; cmchar "\Big right parenthesis"; beginchar(oct"021",9u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(-.25u#,2u#); right_paren(rule_thickness,.5[stem,bold]); endchar; cmchar "\bigg right parenthesis"; beginchar(oct"023",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(-.25u#,2.5u#); right_paren(rule_thickness+.2dw,bold); endchar; cmchar "\Bigg right parenthesis"; beginchar(oct"041",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(-.25u#,3u#); right_paren(rule_thickness+.4dw,bold+dw); endchar; cmchar "Extensible right parenthesis---top"; beginchar(oct"061",12u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(-.25u#,4u#); pickup fine.nib; numeric min_breadth,max_breadth; min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw; pos1(hround min_breadth,0); pos2(hround max_breadth,0); lft x1l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u); top y1=h-1; y2=-d-eps; filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc penlabels(1,2); endchar; cmchar "Extensible right parenthesis---bottom"; beginchar(oct"101",12u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(-.25u#,4u#); pickup fine.nib; numeric min_breadth,max_breadth; min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw; pos3(hround min_breadth,0); pos2(hround max_breadth,0); lft x3l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u); bot y3=1-d; y2=h+eps; filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc penlabels(2,3); endchar; cmchar "Extensible right parenthesis---extension module"; beginchar(oct"103",12u#,0,dh#); adjust_fit(-.25u#,4u#); pickup fine.nib; numeric max_breadth; max_breadth=bold+2dw; pos2(hround max_breadth,0); pos2'(hround max_breadth,0); rt x2r=rt x2'r=hround(w-1.25u); y2=h+eps; y2'=-d-eps; filldraw stroke z2e--z2'e; % link penlabels(2,2'); endchar; cmchar "\big left bracket"; beginchar(oct"002",6u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,true); endchar; cmchar "\Big left bracket"; beginchar(oct"150",6.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,true); endchar; cmchar "\bigg left bracket"; beginchar(oct"024",7u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,true); endchar; cmchar "\Bigg left bracket"; beginchar(oct"042",7.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,true); endchar; cmchar "Extensible left bracket---top"; beginchar(oct"062",8u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(4u#,0); pickup crisp.nib; pos1(stem,0); pos2(stem,0); top y1=h-1; y2=-d-eps; lft x1l=lft x2l=hround(2.5u-.5stem); filldraw stroke z1e--z2e; % stem pos3(stem,90); pos4(stem,90); x3=x1l; rt x4=hround(w-.75u+.5stem); y3r=y4r=y1; filldraw stroke z3e--z4e; % upper bar penlabels(1,2,3,4); endchar; cmchar "Extensible left bracket---bottom"; beginchar(oct"064",8u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(4u#,0); pickup crisp.nib; pos1(stem,0); pos2(stem,0); y1=h+eps; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5stem); filldraw stroke z1e--z2e; % stem pos5(stem,90); pos6(stem,90); x5=x1l; rt x6=hround(w-.75u+.5stem); y5l=y6l=y2; filldraw stroke z5e--z6e; % lower bar penlabels(1,2,5,6); endchar; cmchar "Extensible left bracket---extension module"; beginchar(oct"066",8u#,0,dh#); adjust_fit(4u#,0); pickup crisp.nib; pos1(stem,0); pos2(stem,0); y1=h+1+eps; bot y2=-d-1-eps; lft x1l=lft x2l=hround(2.5u-.5stem); filldraw stroke z1e--z2e; % stem penlabels(1,2); endchar; cmchar "\big right bracket"; beginchar(oct"003",6u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,true); endchar; cmchar "\Big right bracket"; beginchar(oct"151",6.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,true); endchar; cmchar "\bigg right bracket"; beginchar(oct"025",7u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,true); endchar; cmchar "\Bigg right bracket"; beginchar(oct"043",7.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,true); endchar; cmchar "Extensible right bracket---top"; beginchar(oct"063",8u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(0,4u#); pickup crisp.nib; pos1(stem,0); pos2(stem,0); top y1=h-1; y2=-d-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem); filldraw stroke z1e--z2e; % stem pos3(stem,90); pos4(stem,90); x3=x1r; lft x4=hround(.75u-.5stem); y3r=y4r=y1; filldraw stroke z3e--z4e; % upper bar penlabels(1,2,3,4); endchar; cmchar "Extensible right bracket---bottom"; beginchar(oct"065",8u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(0,4u#); pickup crisp.nib; pos1(stem,0); pos2(stem,0); y1=h+eps; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5stem); filldraw stroke z1e--z2e; % stem pos5(stem,90); pos6(stem,90); x5=x1r; lft x6=hround(.75u-.5stem); y5l=y6l=y2; filldraw stroke z5e--z6e; % lower bar penlabels(1,2,5,6); endchar; cmchar "Extensible right bracket---extension module"; beginchar(oct"067",8u#,0,dh#); adjust_fit(0,4u#); pickup crisp.nib; pos1(stem,0); pos2(stem,0); y1=h+1+eps; bot y2=-d-1-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem); filldraw stroke z1e--z2e; % stem penlabels(1,2); endchar; cmchar "\big left floor bracket"; beginchar(oct"004",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(1.5u#,0); left_bracket(rule_thickness,false,true); endchar; cmchar "\Big left floor bracket"; beginchar(oct"152",7.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],false,true); endchar; cmchar "\bigg left floor bracket"; beginchar(oct"026",8u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],false,true); endchar; cmchar "\Bigg left floor bracket"; beginchar(oct"044",8.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],false,true); endchar; cmchar "\big right floor bracket"; beginchar(oct"005",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(0,1.5u#); right_bracket(rule_thickness,false,true); endchar; cmchar "\Big right floor bracket"; beginchar(oct"153",7.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],false,true); endchar; cmchar "\bigg right floor bracket"; beginchar(oct"027",8u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],false,true); endchar; cmchar "\Bigg right floor bracket"; beginchar(oct"045",8.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],false,true); endchar; cmchar "\big left ceiling bracket"; beginchar(oct"006",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,false); endchar; cmchar "\Big left ceiling bracket"; beginchar(oct"154",7.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,false); endchar; cmchar "\bigg left ceiling bracket"; beginchar(oct"030",8u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,false); endchar; cmchar "\Bigg left ceiling bracket"; beginchar(oct"046",8.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,false); endchar; cmchar "\big right ceiling bracket"; beginchar(oct"007",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,false); endchar; cmchar "\Big right ceiling bracket"; beginchar(oct"155",7.5u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,false); endchar; cmchar "\bigg right ceiling bracket"; beginchar(oct"031",8u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,false); endchar; cmchar "\Bigg right ceiling bracket"; beginchar(oct"047",8.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,false); endchar; cmchar "\big left curly brace"; beginchar(oct"010",9u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(.75u#,.75u#); left_curly(hair,stem); endchar; cmchar "\Big left curly brace"; beginchar(oct"156",10u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(u#,u#); left_curly(rule_thickness,.5[stem,bold]); endchar; cmchar "\bigg left curly brace"; beginchar(oct"032",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(1.25u#,1.25u#); left_curly(rule_thickness+.2dw,bold); endchar; cmchar "\Bigg left curly brace"; beginchar(oct"050",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(1.5u#,1.5u#); left_curly(rule_thickness+.4dw,bold+dw); endchar; cmchar "Extensible left curly brace---top"; beginchar(oct"070",12u#,0,1.5dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos1(min_breadth,0); pos1'(min_breadth,0); pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0); rt x1r=rt x1'r=hround(w-1.5u+.5min_breadth); lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine; filldraw z1l{3(x2l-x1l),y2-y1}...z2l---z3l --z3r---z2r...{3(x1r-x2r),y1'-y2}z1'r--z1r--cycle; % stroke penlabels(1,2,3); endchar; cmchar "Extensible left curly brace---bottom"; beginchar(oct"072",12u#,0,1.5dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos7(min_breadth,0); pos7'(min_breadth,0); pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0); rt x7r=rt x7'r=hround(w-1.5u+.5min_breadth); lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness); y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine; filldraw z5l---z6l...{3(x7l-x6l),y7-y6}z7l --z7r--z7'r{3(x6r-x7r),y6-y7'}...z6r---z5r--cycle; % stroke penlabels(5,6,7); endchar; cmchar "Extensible left curly brace---middle"; beginchar(oct"074",12u#,0,3dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos4(min_breadth,0); pos4'(min_breadth,0); forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor lft x4l=lft x4'l=hround(1.5u-.5min_breadth); x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5]; y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine; filldraw z2l---z3l...{3(x4l-x3l),y4-y3}z4l --z4'l{3(x5l-x4l),y5-y4'}...z5l---z6l--z6r---z5r ...{3(x4r-x5r),.5[y4,y4']-y5}.5[z4r,z4'r]{3(x3r-x4r),y3-.5[y4,y4']} ...z3r---z2r--cycle; % stroke penlabels(2,3,4,5,6); endchar; cmchar "Extensible curly brace---extension module"; beginchar(oct"076",12u#,0,.5dh#); adjust_fit(2u#,2u#); pickup fine.nib; pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0); lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y3=-d-eps; filldraw stroke z2e--z3e; % stem penlabels(2,3); endchar; cmchar "\big right curly brace"; beginchar(oct"011",9u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(.75u#,.75u#); right_curly(hair,stem); endchar; cmchar "\Big right curly brace"; beginchar(oct"157",10u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(u#,u#); right_curly(rule_thickness,.5[stem,bold]); endchar; cmchar "\bigg right curly brace"; beginchar(oct"033",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(1.25u#,1.25u#); right_curly(rule_thickness+.2dw,bold); endchar; cmchar "\Bigg right curly brace"; beginchar(oct"051",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(1.5u#,1.5u#); right_curly(rule_thickness+.4dw,bold+dw); endchar; cmchar "Extensible right curly brace---top"; beginchar(oct"071",12u#,0,1.5dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos1(min_breadth,0); pos1'(min_breadth,0); pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0); lft x1l=lft x1'l=hround(1.5u-.5min_breadth); lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine; filldraw z1r{3(x2r-x1r),y2-y1}...z2r---z3r --z3l---z2l...{3(x1l-x2l),y1'-y2}z1'l--z1l--cycle; % stroke penlabels(1,2,3); endchar; cmchar "Extensible right curly brace---bottom"; beginchar(oct"073",12u#,0,1.5dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos7(min_breadth,0); pos7'(min_breadth,0); pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0); lft x7l=lft x7'l=hround(1.5u-.5min_breadth); lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness); y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine; filldraw z5r---z6r...{3(x7r-x6r),y7-y6}z7r --z7l--z7'l{3(x6l-x7l),y6-y7'}...z6l---z5l--cycle; % stroke penlabels(5,6,7); endchar; cmchar "Extensible right curly brace---middle"; beginchar(oct"075",12u#,0,3dh#); adjust_fit(2u#,2u#); pickup fine.nib; numeric min_breadth; min_breadth=hround(rule_thickness+.6dw); pos4(min_breadth,0); pos4'(min_breadth,0); forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor rt x4r=rt x4'r=hround(w-1.5u+.5min_breadth); x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5]; y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine; filldraw z2r---z3r...{3(x4r-x3r),y4-y3}z4r --z4'r{3(x5r-x4r),y5-y4'}...z5r---z6r--z6l---z5l ...{3(x4l-x5l),.5[y4,y4']-y5}.5[z4l,z4'l]{3(x3l-x4l),y3-.5[y4,y4']} ...z3l---z2l--cycle; % stroke penlabels(2,3,4,5,6); endchar; cmchar "Horizontal curly brace tip---down and left"; beginchar(oct"172",.75dh#,3rule_thickness#,0); adjust_fit(0,0); pickup fine.nib; numeric min_breadth; min_breadth=vround(rule_thickness+.6dw); pos1(min_breadth,90); pos1'(min_breadth,90); pos2(heavy_rule_thickness,90); bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth); .5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine; filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke penlabels(1,2); endchar; cmchar "Horizontal curly brace tip---down and right"; beginchar(oct"173",.75dh#,3rule_thickness#,0); adjust_fit(0,0); pickup fine.nib; numeric min_breadth; min_breadth=vround(rule_thickness+.6dw); pos1(min_breadth,90); pos1'(min_breadth,90); pos2(heavy_rule_thickness,90); bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth); .5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine; filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke penlabels(1,2); endchar; cmchar "Horizontal curly brace tip---up and left"; beginchar(oct"174",.75dh#,3rule_thickness#,0); adjust_fit(0,0); pickup fine.nib; numeric min_breadth; min_breadth=vround(rule_thickness+.6dw); pos1(min_breadth,90); pos1'(min_breadth,90); pos2(heavy_rule_thickness,90); bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth); .5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine; filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke penlabels(1,2); endchar; cmchar "Horizontal curly brace tip---up and right"; beginchar(oct"175",.75dh#,3rule_thickness#,0); adjust_fit(0,0); pickup fine.nib; numeric min_breadth; min_breadth=vround(rule_thickness+.6dw); pos1(min_breadth,90); pos1'(min_breadth,90); pos2(heavy_rule_thickness,90); bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth); .5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine; filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke penlabels(1,2); endchar; cmchar "\big left angle bracket"; beginchar(oct"012",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(.75u#,.75u#); left_angle(rule_thickness); endchar; cmchar "\Big left angle bracket"; beginchar(oct"104",9u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(u#,u#); left_angle(.25[rule_thickness,stem]); endchar; cmchar "\bigg left angle bracket"; beginchar(oct"034",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(1.25u#,1.25u#); left_angle(.5[rule_thickness,stem]); endchar; cmchar "\Bigg left angle bracket"; beginchar(oct"052",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(1.5u#,1.5u#); left_angle(.75[rule_thickness,stem]); endchar; cmchar "\big right angle bracket"; beginchar(oct"013",7u#,rule_thickness#,2dh#-rule_thickness#); adjust_fit(.75u#,.75u#); right_angle(rule_thickness); endchar; cmchar "\Big right angle bracket"; beginchar(oct"105",9u#,rule_thickness#,3dh#-rule_thickness#); adjust_fit(u#,u#); right_angle(.25[rule_thickness,stem]); endchar; cmchar "\bigg right angle bracket"; beginchar(oct"035",11u#,rule_thickness#,4dh#-rule_thickness#); adjust_fit(1.25u#,1.25u#); right_angle(.5[rule_thickness,stem]); endchar; cmchar "\Bigg right angle bracket"; beginchar(oct"053",11.5u#,rule_thickness#,5dh#-rule_thickness#); adjust_fit(1.5u#,1.5u#); right_angle(.75[rule_thickness,stem]); endchar; cmchar "\big slash"; beginchar(oct"016",10.4u#,rule_thickness#,2dh#-rule_thickness#); big_slash(rule_thickness+.2dw); endchar; cmchar "\Big slash"; beginchar(oct"056",14.6u#,rule_thickness#,3dh#-rule_thickness#); big_slash(rule_thickness+.6dw); endchar; cmchar "\bigg slash"; beginchar(oct"036",18.8u#,rule_thickness#,4dh#-rule_thickness#); big_slash(rule_thickness+dw); endchar; cmchar "\Bigg slash"; beginchar(oct"054",23u#,rule_thickness#,5dh#-rule_thickness#); big_slash(rule_thickness+1.5dw); endchar; cmchar "\big backslash"; beginchar(oct"017",10.4u#,rule_thickness#,2dh#-rule_thickness#); big_blash(rule_thickness+.2dw); endchar; cmchar "\Big backslash"; beginchar(oct"057",14.6u#,rule_thickness#,3dh#-rule_thickness#); big_blash(rule_thickness+.6dw); endchar; cmchar "\bigg backslash"; beginchar(oct"037",18.8u#,rule_thickness#,4dh#-rule_thickness#); big_blash(rule_thickness+dw); endchar; cmchar "\Bigg backslash"; beginchar(oct"055",23u#,rule_thickness#,5dh#-rule_thickness#); big_blash(rule_thickness+1.5dw); endchar; cmchar "Extensible vertical line---extension module"; beginchar(oct"014",6u#,0,dh#); adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw); x1=x2=good.x .5w; y1=eps; y2=-d-eps; draw z1--z2; % stem labels(1,2); endchar; cmchar "Extensible double vertical line---extension module"; beginchar(oct"015",10u#,0,dh#); adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw); x1=x2=good.x .3w; x3=x4=w-x1; y1=y3=eps; y2=y4=-d-eps; draw z1--z2; draw z3--z4; % stems labels(1,2,3,4); endchar; cmchar "Extensible vertical arrow--top"; beginchar(oct"170",12u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness,barr; thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness]; pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90); lft x1l=hround(.5w-.5thickness); y1=-d-eps; x0=x1=x2; top y0=h; x0-x3=x4-x0=4u+eps; y3=y4=y0-.29asc_height-eps; pos5(barr,angle(z4-z0)); z5l=z0; pos6(barr,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p; filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r) --z3r{z9-z3}..z0 & cycle; % arrowhead and stem penlabels(0,1,2,3,4,5,6,9); endchar; cmchar "Extensible vertical arrow--bottom"; beginchar(oct"171",12u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness,barr; thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness]; pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90); lft x1l=hround(.5w-.5thickness); y1=h+eps; x0=x1=x2; bot y0=-d; x0-x3=x4-x0=4u+eps; y3=y4=y0+.29asc_height+eps; pos5(barr,angle(z4-z0)); z5l=z0; pos6(barr,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p; filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r) --z3l{z9-z3}..z0 & cycle; % arrowhead and stem penlabels(0,1,2,3,4,5,6,9); endchar; cmchar "Extensible vertical arrow--extension module"; beginchar(oct"077",12u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness; thickness=hround(rule_thickness+.2dw); pos1(thickness,0); pos2(thickness,0); lft x1l=hround(.5w-.5thickness); x2=x1; y1=h+1+eps; y2=-d-1-eps; filldraw stroke z1e--z2e; % stem penlabels(1,2); endchar; cmchar "Extensible double vertical arrow--top"; beginchar(oct"176",14u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness; thickness=Vround(rule_thickness+.2dw); pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0); y1=y2=-d-eps; y7=y8=h; top y0=h+eps; x1=x7; x2=x8; rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w; filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars pos3(thickness,90); pos4(thickness,90); x2-x3=x4-x1=4u+eps; y3=y4=y0-.48asc_height-eps; pos5(thickness,angle(z4-z0)); z5l=z0; pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw z0..{z3-z9}z3--(x3,h) --(x4,h)--z4{z9-z4}..z0 & cycle; % erase excess numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p intersectiontimes((x0,-d)--(x0,h))); filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; % arrowhead penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Extensible double vertical arrow--bottom"; beginchar(oct"177",14u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness; thickness=Vround(rule_thickness+.2dw); pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0); y1=y2=h+eps; y7=y8=-d; bot y0=-d-eps; x1=x7; x2=x8; rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w; filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars pos3(thickness,90); pos4(thickness,90); x2-x3=x4-x1=4u+eps; y3=y4=y0+.48asc_height-eps; pos5(thickness,angle(z4-z0)); z5l=z0; pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw z0..{z3-z9}z3--(x3,-d) --(x4,-d)--z4{z9-z4}..z0 & cycle; % erase excess numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p intersectiontimes((x0,-d)--(x0,h))); filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; % arrowhead penlabels(0,1,2,3,4,5,6,7,8,9); endchar; cmchar "Extensible double vertical arrow--extension module"; beginchar(oct"167",14u#,0,dh#); adjust_fit(0,0); pickup crisp.nib; numeric thickness; thickness=Vround(rule_thickness+.2dw); pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0); y1=y2=h+1+eps; y7=y8=-d-1-eps; x1=x7; x2=x8; rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=good.x .5w; filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars penlabels(1,2,7,8); endchar; cmchar "\big radical sign"; beginchar(oct"160",18u#,rule_thickness#,2dh#-rule_thickness#); big_sqrt; endchar; cmchar "\Big radical sign"; beginchar(oct"161",18u#,rule_thickness#,3dh#-rule_thickness#); big_sqrt; endchar; cmchar "\bigg radical sign"; beginchar(oct"162",18u#,rule_thickness#,4dh#-rule_thickness#); big_sqrt; endchar; cmchar "\Bigg radical sign"; beginchar(oct"163",18u#,rule_thickness#,5dh#-rule_thickness#); big_sqrt; endchar; cmchar "Extensible radical sign---bottom"; beginchar(oct"164",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(oct"165",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(oct"166",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;