.cmchar "The gothic point"; .beginchar(".",5u#,1.431x_height#,0); .adjust_fit(0,0); z1=(0.5w,-apex_o+0.707stem); ygoth_dot(1); .endchar; .cmchar "The gothic colon"; .beginchar(":",5u#,1.431x_height#,0); .adjust_fit(0,0); z1=(0.5w,-apex_o+0.707stem); ygoth_dot(1); z2=(0.5w,x_height+apex_o-0.707stem); ygoth_dot(2) .endchar; .cmchar "The gothic semicolon"; .beginchar(";",5u#,1.431x_height#,0); .adjust_fit(0,0); z1=(0.5w,-apex_o+0.707stem); ygoth_dot(1); z2=(0.5w,x_height+apex_o-0.707stem); ygoth_dot(2) penpos3(hair,-90); penpos4(stem,45); z3l=(0.5w-0.707stem,-stem); z4l=(0.5w,-apex_o); penstroke z3e..z4e{up}; .endchar; .cmchar "The gothic comma"; .beginchar(",",5u#,1.431x_height#,0); .adjust_fit(0,0); z2=(0.5w,-apex_o+0.707stem); ygoth_dot(2) penpos3(hair,-90); penpos4(stem,45); z3l=(0.5w-0.707stem,-stem); z4l=(0.5w,-apex_o); penstroke z3e..z4e{up}; .endchar; .cmchar "The gothic exclamation point"; .beginchar("!",5u#,1.431x_height#,0); .adjust_fit(0,0); z1=(0.5w,-apex_o+0.707stem); ygoth_dot(1); z2=(0.5w,cap_height+apex_o-0.707stem); ygoth_dot(2); penpos3(1.414stem,0); penpos4(hair,0); x3=x4=0.5w; y3=y2; y4=y1+1.414stem; penstroke z4e--z3e; .endchar; .cmchar "The gothic question mark"; .beginchar("?",7.591u#,1.431x_height#,0); .adjust_fit(cap_serif_fit#,cap_serif_fit#); penpos1(hair,25); z1=(0.171w,0.514h); z1'=(0.293w,0.88h); z2=(0.5w,cap_height+apex_o); penpos4(cap_stem,0); z4l=(0.673w,0.676h);%x_height); penpos5(hair,0); penpos6(hair,-15); z7=(0.38w,0.077h); z3=(x2,0.82h); z8=(0.624w,0.225h); z6=(0,0); z5=(0.5w,-apex_o+2.121stem); penpos9(1.15cap_stem,-128); x9l=w; y9r=-apex_o; z10=(0.5w,-apex_o+0.707stem); ygoth_dot(10); penpos50(0.5cap_stem,-45); penpos51(cap_stem,45); z50l=z2; z51r=z2; penstroke z1e{dir115}...z50e{dir45}; penstroke z5e{up}..z4e{up}..z51e{dir135}; .endchar; .cmchar "Left parenthesis"; .beginchar("(",7u#,body_height#,paren_depth#); italcorr body_height#*slant-.5u#; .adjust_fit(0,0); pickup fine.nib; pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0); rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u if monospace: +4/3u fi); top y1=h; y2=.5[y1,y3]=math_axis; filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e ...{3(x3e-x2e),y3-y2}z3e; % arc penlabels(1,2,3); .endchar; .cmchar "Right parenthesis"; .beginchar(")",7u#,body_height#,paren_depth#); italcorr math_axis#*slant-.5u#; .adjust_fit(0,0); pickup fine.nib; pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0); lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u if monospace: -4/3u fi); top y1=h; y2=.5[y1,y3]=math_axis; filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e ...{3(x3e-x2e),y3-y2}z3e; % arc penlabels(1,2,3); .endchar; .cmchar "Opening Gaensefuesschen"; .beginchar(oct"137",7u#+max(2u#,dot_size#),asc_height#,0); italcorr asc_height#*slant+dot_size#-4.1u#; .adjust_fit(0,0); x2+.5dot_size=hround(w-.6u); y2-.5dot_size=0; x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1; comma(1,a,dot_size,.25u,comma_depth); % left dot and tail comma(2,b,dot_size,.25u,comma_depth); % right dot and tail penlabels(1,2); .endchar; .cmchar "Closing Gaensefuesschen"; .beginchar(oct"042",7u#+max(2u#,dot_size#),asc_height#,0); italcorr asc_height#*slant-.1u#; .adjust_fit(0,0); x1-.5dot_size=hround .6u; y1+.5dot_size=h-comma_depth; x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1; ammoc(1,a,dot_size,.25u,comma_depth); % left dot and tail ammoc(2,b,dot_size,.25u,comma_depth); % right dot and tail penlabels(1,2); .endchar; .cmchar "The gothic apostrophe"; .beginchar("'",2hair#+stem#,1.431x_height#,0); .adjust_fit(0,0); penpos1(0.5stem,0); penpos2(stem,0); z1l=(hair,h-foot-0.707stem); z2l=(x1l,h); penstroke z1e--z2e; .endchar; .cmchar "The gothic hyphen"; .beginchar("-",2u#,1.431x_height#,0); .adjust_fit(cap_serif_fit#+0.3u#,cap_serif_fit#); penpos1(stem,-90); penpos2(stem,-90); penpos3(stem,-90); penpos4(stem,-90); x1=x2=0; x3=x4=w; z3-z1=whatever*dir40; z4-z2=whatever*dir40; 0.5[y2,y3]=.5x_height; y1-y2=2.5stem; penstroke z1e--z3e; penstroke z2e--z4e; .endchar; .cmchar "Closing quotes"; .beginchar(oct"042",7u#+max(2u#,dot_size#),asc_height#,0); italcorr asc_height#*slant+dot_size#-4.1u#; .adjust_fit(0,0); x1-.5dot_size=hround .6u; y2+.5dot_size=h; x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1; comma(1,a,dot_size,.25u,comma_depth); % left dot and tail comma(2,b,dot_size,.25u,comma_depth); % right dot and tail penlabels(1,2); .endchar; .cmchar "Opening quotes"; .beginchar(oct"137",7u#+max(2u#,dot_size#),asc_height#,0); italcorr asc_height#*slant-.1u#; .adjust_fit(0,0); x2+.5dot_size=hround(w-.6u); y1+.5dot_size=h-comma_depth; x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1; ammoc(1,a,dot_size,.25u,comma_depth); % left dot and tail ammoc(2,b,dot_size,.25u,comma_depth); % right dot and tail penlabels(1,2); .endchar; .cmchar "En dash"; .beginchar(oct"173",9u#,x_height#,0); italcorr .61803x_height#*slant+.5u#; .adjust_fit(0,0); pickup crisp.nib; pos1(vair,90); pos2(vair,90); top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps; filldraw stroke z1e--z2e; % bar penlabels(1,2); .endchar; .cmchar "Em dash"; .beginchar(oct"174",18u#,x_height#,0); italcorr .61803x_height#*slant+.5u#; .adjust_fit(letter_fit#,letter_fit#); pickup crisp.nib; pos1(vair,90); pos2(vair,90); top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps; filldraw stroke z1e--z2e; % bar penlabels(1,2); .endchar;