From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- fonts/ec/src/expunct.mf | 349 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 fonts/ec/src/expunct.mf (limited to 'fonts/ec/src/expunct.mf') diff --git a/fonts/ec/src/expunct.mf b/fonts/ec/src/expunct.mf new file mode 100644 index 0000000000..1bb2bc8199 --- /dev/null +++ b/fonts/ec/src/expunct.mf @@ -0,0 +1,349 @@ +% expunct.mf +% +% (c) Copyright 1995, 1996, 1997 J"org Knappen +% (c) Copyright 1990, 1992 Norbert Schwarz +% +% This file is part of ecfonts version 1.0 +% +% Please read the files 00readme.txt, 00inst.txt, 00error.txt, and +% copyrite.txt for further information +% +% You find some documentation in ecdoc.tex (needs LaTeX2e) +% +% Content: +% +% punctuation + +%%% italcorr corrital + +version_check(1,0); % |version_check| was introduced in dc1.3 + +ecchar "Single left guillemet"; % jk +beginchar(oct"016",8u#,2bar_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); + pickup fine.nib; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + rt x1r=rt x3r=w-2u-eps; + lft x2l=hround(if not monospace: 2 fi\\ u)-eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + fi + penlabels(1,2,3); +endchar; + +ecchar "Single right guillemet"; % jk +beginchar(oct"017",8u#,2bar_height#,0); +italcorr h#*slant-u#; +adjust_fit(0,0); + pickup fine.nib; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + lft x1l=lft x3l=2u+eps; + rt x2r=w-hround(if not monospace: 2 fi\\ u)+eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + fi +penlabels(1,2,3); endchar; + +ecchar "French opening quotes"; % from pl_cud (plfonts) +beginchar_twice( + if not hefty: oct"023",10u#,2bar_height#,0 + else: oct"023",12u#,2bar_height#,0 + fi); +adjust_fit(0,0); + pickup fine.nib; + numeric the_shift,shift_corr; + the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + rt x1r=rt x3r=hround(.6w-shift_corr)-eps; + lft x2l=hround(if not monospace: 2 fi\\ u-shift_corr)-eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + for i:=1,2,3: + forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*right; endfor + endfor + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; filldraw stroke z1'e--z2'e--z3'e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + filldraw stroke + z1'e{(x2'e-x1'e),1.8(y2'e-y1'e)}..{curl1}z2'e{curl1}.. + {(x3'e-x2'e),1.8(y3'e-y2'e)}z3'e; + fi; +% italic correction is set to |0| in |beginchar|, so let's correct it + corrital z1'r; + penlabels(1,2,3,1',2',3'); +repeat_once; +endchar; + +ecchar "French closing quotes"; % from pl_cud (plfonts) +beginchar_twice( + if not hefty: oct"024",10u#,2bar_height#,0 + else: oct"024",12u#,2bar_height#,0 + fi); +adjust_fit(0,0) + pickup fine.nib; + numeric the_shift,shift_corr; + the_shift=hround(max(3u,1.7stem)); shift_corr=the_shift-3u; + pos1(qvair,0); pos2(if monospace: qvair else: stem fi,0); pos3(qvair,0); + lft x1l=lft x3l=w-hround(.6w-shift_corr)+eps; + rt x2r=w-hround(if not monospace: 2 fi\\ u-shift_corr)+eps; + bot y3=0; y2=good.y(h/2); top y1=2y2; + for i:=1,2,3: + forsuffixes $:=r, ,l: z[i]'$=z[i]$ + the_shift*left; endfor + endfor + if not serifs or monospace: + filldraw stroke z1e--z2e--z3e; filldraw stroke z1'e--z2'e--z3'e; + else: + filldraw stroke + z1e{(x2e-x1e),1.8(y2e-y1e)}..{curl1}z2e{curl1}.. + {(x3e-x2e),1.8(y3e-y2e)}z3e; + filldraw stroke + z1'e{(x2'e-x1'e),1.8(y2'e-y1'e)}..{curl1}z2'e{curl1}.. + {(x3'e-x2'e),1.8(y3'e-y2'e)}z3'e; + fi; +% italic correction is set to |0| in |beginchar|, so let's correct it + corrital z2r; + penlabels(1,2,3,1',2',3'); +repeat_once; +endchar; + +ecchar "German opening comma"; +beginchar(oct"015",5u#,pdot_diam#,comma_depth#); +adjust_fit(0,0); +x1-.5pdot_diam=hround(.5w-.5pdot_diam); y1-.5pdot_diam=0; +comma(1,a,pdot_diam,.2u,comma_depth); % dot and tail +penlabels(1); endchar; + +ecchar "German Opening quotes"; +beginchar(oct"022",3u#+max(2u#,pdot_diam#),pdot_diam#,comma_depth#); +italcorr asc_height#*slant+pdot_diam#-4.1u#; +adjust_fit(.5u#,.5u#); +x2+.5pdot_diam=hround(w-.6u+.5pdot_diam); y2-.5pdot_diam=0; +x1=w-x2; y2=y1; +comma(1,a,pdot_diam,.25u,comma_depth); % left dot and tail +comma(2,b,pdot_diam,.25u,comma_depth); % right dot and tail +penlabels(1,2); endchar; + +ecchar "Exclamation point"; +beginchar("!",5u#+width_adj#,asc_height#,0); +italcorr asc_height#*slant-2u#-.5width_adj#+.5pdot_diam#; +adjust_fit(0,0); +pickup tiny.nib; pos3(pdot_diam,0); pos4(pdot_diam,90); +lft x3l=hround(.5w-.5pdot_diam); bot y4l=0; z3=z4; dot(3,4); % dot +numeric bot_width; +bot_width=if hefty:max(hround .8pdot_diam,fine.breadth) else: hair fi; +pickup fine.nib; pos1(pdot_diam,0); pos2(bot_width,0); +x1=x2=x3; bot y2=.25[top y4r,x_height]+1; +if square_dots: top y1=h; + filldraw stroke z1e--z2e; % stem +else: top z0=(x1,h+o); y1+.5pdot_diam=h+o; + filldraw z1r...z0...z1l---z2l--z2r---cycle; fi % stem and bulb +penlabels(0,1,2,3,4); endchar; + + + +ecchar "Apostrophe"; +beginchar("'",5u#,asc_height#,0); +italcorr asc_height#*slant+.5pdot_diam#-2u#; +adjust_fit(0,0); +x1-.5pdot_diam=hround(.5w-.5pdot_diam); y1+.5pdot_diam=h; +if monospace: comma(1,a,pdot_diam,.28u,vround 1.5comma_depth); % large comma +else: comma(1,a,pdot_diam,.25u,comma_depth); fi % comma with increased jut +penlabels(1); endchar; + + +ecchar "Asterisk"; +beginchar("*",9u#, + if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0); +italcorr h#*slant-.75u#; +adjust_fit(0,0); +numeric ast_flare; ast_flare=hround .7[thin_join,stem]; +x0=.5w; y0=h-.5x_height; +for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height; + numeric theta; theta=angle(z[d]-z0); + fill z0+.5(0,-thin_join)rotated theta + ---z[d]+.5(-ast_flare,-ast_flare)rotated theta + ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta + ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d| +labels(0,[-150],[-90],[-30],30,90,150); endchar; + +ecchar "Plus sign"; +beginarithchar("+"); pickup extra_rule.nib; +x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis; +lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis; +draw z1--z2; % stem +draw z3--z4; % crossbar +labels(1,2,3,4); endchar; + +ecchar "Comma"; +beginchar(",",5u#,pdot_diam#,comma_depth#); +adjust_fit(0,0); +x1-.5pdot_diam=hround(.5w-.5pdot_diam); y1-.5pdot_diam=0; +comma(1,a,pdot_diam,.2u,comma_depth); % dot and tail +penlabels(1); endchar; + +ecchar "Period"; +beginchar(".",5u#,pdot_diam#,0); +adjust_fit(0,0); pickup fine.nib; +pos1(pdot_diam,0); pos2(pdot_diam,90); +lft x1l=hround(.5w-.5pdot_diam); bot y2l=0; z1=z2; dot(1,2); % dot +penlabels(1,2); endchar; + +ecchar "Virgule (slash)"; +beginchar("/",9u#,body_height#,paren_depth#); +italcorr body_height#*slant-.5u#; +adjust_fit(0,0); pickup extra_rule.nib; +rt x1=hround(w-u)+eps; top y1=h+eps; +lft x2=hround u-eps; bot y2=-d-eps; +draw z1--z2; % diagonal +penlabels(1,2); endchar; + +ecchar "Colon"; +beginchar(":",5u#,x_height#,0); +italcorr x_height#*slant+.5pdot_diam#-2u#; +adjust_fit(0,0); pickup fine.nib; +pos1(pdot_diam,0); pos2(pdot_diam,90); +lft x1l=hround(.5w-.5pdot_diam); top y2r=h; z1=z2; dot(1,2); % upper dot +pos3(pdot_diam,0); pos4(pdot_diam,90); +x3=x1; bot y4l=0; z3=z4; dot(3,4); % lower dot +penlabels(1,2,3,4); endchar; + +ecchar "Semicolon"; +beginchar(";",5u#,x_height#,comma_depth#); +italcorr x_height#*slant+.5pdot_diam#-2u#; +adjust_fit(0,0); pickup fine.nib; +pos1(pdot_diam,0); pos2(pdot_diam,90); +lft x1l=hround(.5w-.5pdot_diam); top y2r=h; z1=z2; dot(1,2); % upper dot +x3-.5pdot_diam=hround(.5w-.5pdot_diam); y3-.5pdot_diam=0; +comma(3,a,pdot_diam,.2u,comma_depth); % lower dot and tail +penlabels(1,2,3); endchar; + +ecchar "Equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar("=",14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-.5u#; +adjust_fit(0,0); pickup extra_rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; % upper bar +draw z3--z4; % lower bar +labels(1,2,3,4); endchar; + + + +ecchar "Reverse apostrophe"; +beginchar("`",5u#,asc_height#,0); +italcorr asc_height#*slant+.5pdot_diam#-2u#; +adjust_fit(0,0); +x1-.5pdot_diam=hround(.5w-.5pdot_diam); y1+.5pdot_diam=h-comma_depth; +if monospace: ammoc(1,a,pdot_diam,.28u,vround 1.5comma_depth); % large ammoc +else: ammoc(1,a,pdot_diam,.25u,comma_depth); fi % normal ammoc +penlabels(1); endchar; + + +ecchar "Spanish open exclamation point"; +beginchar(oct"275",5u#+width_adj#,asc_height#-desc_depth#,desc_depth#); +italcorr h#*slant-2u#-.5width_adj#+.5pdot_diam#; +adjust_fit(0,0); +pickup tiny.nib; pos3(pdot_diam,0); pos4(pdot_diam,90); +lft x3l=hround(.5w-.5pdot_diam); top y4r=h; z3=z4; dot(3,4); % dot +numeric top_width; +top_width=if hefty:max(hround .8pdot_diam,fine.breadth) else: hair fi; +pickup fine.nib; pos1(pdot_diam,0); pos2(top_width,0); +x1=x2=x3; top y2=.25[bot y4l,h-x_height]-1; +if square_dots: bot y1=-d; + filldraw stroke z1e--z2e; % stem +else: bot z0=(x1,-d-o); y1-.5pdot_diam=-d-o; + filldraw z1l...z0...z1r---z2r--z2l---cycle; fi % stem and bulb +penlabels(0,1,2,3,4); endchar; + + +ecchar "Closing quotes"; +beginchar(oct"021",3u#+max(2u#,pdot_diam#),asc_height#,0); +italcorr asc_height#*slant+pdot_diam#-4.1u#; +adjust_fit(.5u#,.5u#); +x1+.5pdot_diam=hround(.6u+.5pdot_diam); y2+.5pdot_diam=h; +x2=w-x1; y2=y1; +comma(1,a,pdot_diam,.25u,comma_depth); % left dot and tail +comma(2,b,pdot_diam,.25u,comma_depth); % right dot and tail +penlabels(1,2); endchar; + +ecchar "Hyphen"; +beginchar("-",6u#,x_height#,0); +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi; +pickup crisp.nib; pos1(thickness,90); pos2(thickness,90); +top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps; +if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi; +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +ecchar "Opening quotes"; +beginchar(oct"20",3u#+max(2u#,pdot_diam#),asc_height#,0); +italcorr asc_height#*slant-.1u#; +adjust_fit(.5u#,.5u#); +x2+.5pdot_diam=hround(w-.6u+.5pdot_diam); y1+.5pdot_diam=h-comma_depth; +x1=w-x2; y2=y1; +ammoc(1,a,pdot_diam,.25u,comma_depth); % left dot and tail +ammoc(2,b,pdot_diam,.25u,comma_depth); % right dot and tail +penlabels(1,2); endchar; + +iff not monospace: +ecchar "En dash"; +beginchar(oct"025",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; + + +iff monospace: +ecchar "Hyphen"; +beginchar(oct"025",6u#,x_height#,0); +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi; +pickup crisp.nib; pos1(thickness,90); pos2(thickness,90); +top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps; +if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi; +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +iff not monospace: +ecchar "Em dash"; +beginchar(oct"026",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; + +iff monospace: +ecchar "Hyphen"; +beginchar(oct"026",6u#,x_height#,0); +italcorr .5x_height#*slant-.5u#; +adjust_fit(0,0); +numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi; +pickup crisp.nib; pos1(thickness,90); pos2(thickness,90); +top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps; +if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi; +filldraw stroke z1e--z2e; % bar +penlabels(1,2); endchar; + +endinput; -- cgit v1.2.3