summaryrefslogtreecommitdiff
path: root/fonts/vicentino/kraml/vcpunct.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/vicentino/kraml/vcpunct.mf
Initial commit
Diffstat (limited to 'fonts/vicentino/kraml/vcpunct.mf')
-rw-r--r--fonts/vicentino/kraml/vcpunct.mf324
1 files changed, 324 insertions, 0 deletions
diff --git a/fonts/vicentino/kraml/vcpunct.mf b/fonts/vicentino/kraml/vcpunct.mf
new file mode 100644
index 0000000000..8b4eb551c4
--- /dev/null
+++ b/fonts/vicentino/kraml/vcpunct.mf
@@ -0,0 +1,324 @@
+% VCPUNCT - punctuation characters for vicentino fonts
+% w. kraml, 1991
+
+%% punctuation marks follow here:
+slant:= upperslant;
+currenttransform := identity slanted slant;
+
+beginchar(char 0, 2sw#+s#, ch#, dh#); "the paragraph (or alinea) sign";
+pickup lower_pen;
+x2=x4=.66w; top.y2=h; y6=-dh+th;
+bot.y4=-dh+2th; lft.x6=.25s;
+path stem;
+stem = z2{dir-30}..tension11..
+ z4{dir255}..tension1.1..z6;
+rt.x1=w-.33s; top.y1=h; lft.x3=.1s;
+z5=stem horintersection 2th; y3=.5[y2,y5];
+x7=x3+tw; y7=y3; z9=z5+(tw,0);
+path p; p=z2{left}..{down}z3..{right}z5 & z5{dir170}..{up}z7..{dir10}z2..cycle;
+draw stem; filldraw p; draw z1--z2; draw z5--z9;
+end_char;
+
+beginchar(char 1, 2sw#-1.25s#, ch#, dh#); "the section sign";
+pickup lower_pen;
+x2=x7=w/2; x3=x8=w-x1=w-x6=tw; lft.x5=w-rt.x4=.4s;
+top.y2=h; bot.y7=-dh; y5=y4=.5[y2,y7]; y1=y3=6/7[y7,y2];
+y6=y8=1/7[y7,y2];
+path tra, trb, upp, lop;
+tra= z1{up}..{left}z2..{down}z3..{down}z4;
+trb= z8{down}..{right}z7..{up}z6..{up}z5;
+z5'=tra horintersection 5/7[y7,y2];
+z4'=trb horintersection 2/7[y7,y2];
+upp= z1{dir60}..{left}z2..z3..z5'..z4...z4';
+lop= z8{dir240}..{right}z7..z6..z4'..z5...z5';
+draw upp; draw lop;
+end_char;
+
+beginchar(".", 2tw#+s#, th#, 0); "dot";
+pickup lower_pen;
+bot.z1 = (w/2,0);
+dot.z1;
+end_char;
+
+beginchar(",", 2tw#+1.5s#, th#, th#); "comma";
+pickup lower_pen;
+bot.z1 = (w/2+.5s,0);
+comma z1;
+end_char;
+
+beginchar(":", 2tw#+s#, xh#, 0); "colon";
+pickup lower_pen;
+bot.z1 = (w/2,0); z2=(w/2, 3/4xh);
+dot z1; dot z2;
+end_char;
+
+beginchar(";", 2tw#+1.5s#, xh#, 0); "semicolon";
+pickup lower_pen;
+bot.z1 = (w/2+.5s,0); z2=(w/2, 3/4xh);
+comma z1; dot z2;
+end_char;
+
+beginchar(char 38, 2sw#+2tw#, ch#, 0); "the ampersand \&";
+pickup lower_pen;
+x1-.66s=x2+s=x3=x5=.42w; x4=w-2.9tw; rt.x6=w-.5s;
+top.y1=h-.75s; y2=.6h; y4=.525h; y6=.7[y4,h]; bot.y3=0;
+y4-y5+1.33th=y6-y4;
+draw z1{dir130}..{right}z2 &
+ z2{left}..{right}z3..tension1.25..{dir215}z4;
+path tpart;
+tpart=z5 if modern: else: {dir105} fi
+ ..z4{dir32}..tension1.25.. if modern: {dir100} else: {dir145}fi z6;
+draw if modern: subpath(.2,1.92) of fi tpart;
+end_char;
+
+beginchar("$", 2tw#+sw#, ch#, 0); "the $ (dollar sign)";
+pickup lower_pen;
+x1=w-1.5s; x3=w-s; x2=tw; x4=.5s;
+top.y1=h-th; bot.y4=s;
+y2=2/3h; y3=1/3h;
+y1'=y1-s; x1'=x1-.25s;
+x1''=x4''=w/2; top.y1''=h; bot.y4''=0;
+path sstem;
+sstem=z1'{dir10}..{up}z1&z1..z1''{left}..z2..tension.8..z3..z4''{left}..z4;
+x5=x6=w/2+.5s; bot.y5=h+s; top.y6=-s; draw z5{dir267}..z6;
+draw if modern: subpath(.8,6) of fi sstem;
+labels(1',1'',4'');
+end_char;
+
+beginchar("!", 2tw#+s#, ch#, 0); "exclamation !";
+pickup lower_pen;
+top.y1=top.y1'=top.y2=h; x1=x3=w/2; lft.x2=x1; y3=1/2xh; x1'=.5[x1,x2];
+bot.z4=(w/2,0);
+draw z1{dir268}..z3; draw z1---z1'{dir263}..z3;
+dot z4;
+end_char;
+
+beginchar("?", 3tw#+s#, ch#, 0); "question mark?";
+pickup lower_pen;
+x1+tw=x2=x3=x4=1.5tw; bot.y4=0;
+y3=1/2xh; y2=y3+2th; y1=h-th;
+draw z1{dir40}..tension.84..{dir215}z2...z3;
+dot z4;
+end_char;
+
+beginchar("(", 2tw#+s#, ah#, dh#); "opening parentheses (";
+pickup lower_pen;
+top.rt.z1=(w-.5s,h); bot.rt.z3=(w-.5s,-dh);
+lft.z2=(s,.53[y1,y3]);
+draw z1{curl6}..z2..{curl6}z3;
+end_char;
+
+beginchar(")", 2tw#+s#, ah#, dh#); "closing parentheses )";
+pickup lower_pen;
+top.lft.z1=(.5s,h); bot.lft.z3=(.5s,-dh);
+rt.z2=(w-s,.53[y1,y3]);
+draw z1{curl6}..z2..{curl6}z3;
+end_char;
+
+beginchar("[", 2tw#+s#, ah#, dh#); "opening bracket [";
+pickup lower_pen;
+top.rt.z1=(w-.5s,h); bot.rt.z3=(w-.5s,-dh);
+top.lft.z1'=(s,h); bot.lft.z3'=(s,-dh);
+draw z1---z1'{dir-80}..tension1.5..{dir-100}z3'---z3;
+end_char;
+
+beginchar("]", 2tw#+s#, ah#, dh#); "closing bracket ]";
+pickup lower_pen;
+top.lft.z1=(.5s,h); bot.lft.z3=(.5s,-dh);
+top.rt.z1'=(w-s,h); bot.rt.z3'=(w-s,-dh);
+draw z1---z1'{dir-100}..tension1.5..{dir-80}z3'---z3;
+end_char;
+
+beginchar("/", 2tw#, ah#, dh#); "the virgule (/)";
+pickup lower_pen;
+top.rt.z1=(w-.5s,h); bot.lft.z2=(.5s,-dh);
+draw z1{dir-40}..tension8..{dir-40}z2;
+end_char;
+
+beginchar(char 35, 2sw#+.75s#, ch#, 0); "number sign";
+pickup lower_pen;
+top.lft.z1=(2tw,h);
+bot.lft.z2=(.5tw,0);
+top.rt.z3=(w-.5tw,h);
+bot.rt.z4=(w-2tw,0);
+draw z1--z2; draw z3--z4;
+lft.x5=lft.x7=0; rt.x6=rt.x8=w;
+y5=y6=.62h; y7=y8=.38h;
+draw z5--z6; draw z7--z8;
+end_char;
+
+beginchar(char 37, 2sw#+.25s#, ch#, 0); "percent sign";
+pickup lower_pen;
+top.z1=(1.3tw,h-.7th); bot.z2=(1.3tw,h-4.6th);
+draw z1{left}..z2{right}..cycle;
+top.z3=(w-1.3tw,3.9th); bot.z4=(w-1.3tw,0);
+draw z3{left}..z4{right}..cycle;
+top.rt.z5=(w-.5s,h); bot.lft.z6=(.5s,-1.5th);
+draw z2{right}..{z5-z6}z5 & z5--z6;
+end_char;
+
+beginchar("+", 1/3size#, xh#, 0); "plus";
+pickup lower_pen;
+numeric axis;
+axis=.5[-dh,ah];
+z1 = (s,axis); z2 = (w-s,axis);
+draw z1--z2;
+z3=(w/2,axis+(x2-x1)/2); z4=(w/2,axis-(x2-x1)/2);
+draw z3--z4;
+end_char;
+
+beginchar(char 123, 1/3size#, xh#, 0); "minus";
+pickup lower_pen;
+numeric axis;
+axis=.5[-dh,ah];
+z1 = (s,axis); z2 = (w-s,axis);
+draw z1..z2;
+end_char;
+
+beginchar(char 42, .4size#, xh#, 0); "asterisk";
+pickup lower_pen;
+%pickup cap_serif_pen;
+z0=(w/2,xh);
+z1 = (s,xh); z2 = (w-s,xh);
+draw z1..z2;
+z3 = z1 rotatedaround (z0, 60);
+z5 = z1 rotatedaround (z0, 120);
+z4 = z2 rotatedaround (z0, 60);
+z6 = z2 rotatedaround (z0, 120);
+draw z3..z4; draw z5..z6;
+end_char;
+
+beginchar("-", 2tw#+s#, xh#, 0); "hyphen";
+pickup lower_pen;
+z1 = (.75s,.4h); z2 = (w-.75s,.6h);
+draw z1{dir55}.. {dir-5}.5[z1,z2]{curl0}..z2{dir55};
+end_char;
+
+beginchar(char 124, 8/10size#, xh#, 0); "em rule";
+pickup lower_pen;
+numeric axis;
+axis=.5[-dh,ah];
+z1 = (2.75s,axis); z2 = (w-2.75s,axis);
+z1'= (s,axis-s); z2'= (w-s, axis+s);
+draw z1'{dir35}..z1{right}..{right}z2..{dir35}z2';
+end_char;
+
+
+% quote characters and trema have lowercase slant
+% some others as well
+slant:=lowerslant;
+currenttransform := identity slanted slant;
+
+
+beginchar(char 39, 3.5tw#, ch#, 0); "punctuation ' ";
+pickup lower_pen;
+z1=(1.75tw,h);
+comma z1;
+end_char;
+
+beginchar(char 34, 5tw#, ch#, 0); "punctuation '' ";
+pickup lower_pen;
+z1=(1.75tw,h); z2=(w-1.75tw,h);
+comma z1; comma z2;
+end_char;
+
+beginchar(char96, 3.5tw#, ch#, 0); "punctuation ` ";
+pickup lower_pen;
+z1=(1.75tw,h-s);
+revcomma z1;
+end_char;
+
+beginchar(char 92, 5tw#, ch#, 0); "punctuation `` ";
+pickup lower_pen;
+z1=(1.75tw,h-s); z2=(w-1.5tw,h-s);
+revcomma z1; revcomma z2;
+end_char;
+
+beginchar(char 127, 5/18size#, 17/30 size#, 0); "trema (umlaut)";
+pickup lower_pen;
+top.lft.z1 = (s,h-s); top.rt.z2=(w,h-s);
+dot z1; dot z2;
+end_char;
+
+beginchar(char 95, 3/18size#, 17/30 size#, 0); "dot accent";
+pickup lower_pen;
+top.z1 = (w/2,h-.2s);
+dot z1;
+end_char;
+
+beginchar(char 16, 2tw#+.5s#, xh#, 0); "dotless i";
+pickup lower_pen;
+x2=x3=w/2; lft.x1=.1s; rt.x4=w-.1s; y1=h-th; top.y2=h; bot y3=0; y4=th;
+path stem;
+stem = z1{dir40}..tension2..z2..tension5..z3..tension2..
+ {dir40}z4;
+draw if modern: subpath(0.8,2.2) of fi stem;
+end_char;
+
+beginchar(char 17, 2tw#+.5s#, xh#, dh#); "dotless j";
+pickup lower_pen;
+x2=w/2; lft x1=0; x4=w/2-.1s; y1=h-th; top.y2=h; bot.y6=-dh+.33th;
+bot.y4=-dh+1.1th; x6=.1s;
+path stem;
+stem = z1{dir40}..tension2..z2..tension4.5..
+ z4..tension.825..{dir133.5}z6;
+draw if modern: subpath(0.8, 2.72) of fi stem;
+end_char;
+
+beginchar(char 64, 4tw#+sw#, ch#, 0); "the at-sign";
+pickup lower_pen;
+x1=x2=w-2tw; y1=y5=xh;
+rt. x3=w-tw; y3=3th; bot.y6=bot.y2=2th;
+lft x5=2.5tw; lft x6=2.25tw;
+x7=x9=w/2; y7=xh+2.9th; y9=0; lft.x8=.33s; y8=h/2; rt.x10=w-.25s; y10=1.3th;
+path rightstem; rightstem = z1..tension6.7 ..z2..tension2..{dir35}z3
+ ..{left}z7..{down}z8..{right}z9..{dir36}z10;
+z4 = rightstem horintersection .7xh;
+draw if modern: subpath(0,5.92) of fi rightstem;
+draw z4..tension3..z5..tension2.5..z6{right}..tension1.75..{up}z4;
+end_char;
+
+beginchar(char 20, 6/18size#, 17/30size#, 0); "hatchek";
+pickup lower_pen;
+lft.z1=(.5s,h+1.25s); rt.z3=(w-.25s,h+1.25s); z2=(.55[x1,x3],h-.5s);
+draw z1{right}..tension1.5..z2 & z2..tension1.5..{right}z3;
+end_char;
+
+beginchar(char 21, 6/18size#, 17/30size#, 0); "breve accent";
+pickup lower_pen;
+lft.z1=(.5s,h+1.25s); rt.z3=(w-.25s,h+1.25s);
+draw z1{down}..{up}z3;
+end_char;
+
+beginchar(char 22, 6/18size#, 17/30size#, 0); "macron";
+pickup lower_pen;
+lft.z1=(.5s,h); rt.z3=(w-.25s,h);
+draw z1--z3;
+end_char;
+
+beginchar(char 23, 1.5sw#, 17/30size#, 0); "circle accent";
+pickup lower_pen;
+rt.z1=(2.5s,h+s); lft.z3=(w-2.4s,h+s);
+draw z1{down}..{up}z3..cycle;
+end_char;
+
+beginchar(char 24, 5/18size#, 0, 2/3dh#); "cedilla";
+pickup lower_pen;
+z1=(w/2, 0); z2=(w/2, -1/4dh); z3=(w/3, -2/3dh);
+draw z1---z2{right}..tension.8..{left}z3;
+end_char;
+
+beginchar("^", 6/18size#, 17/30size#, 0); "circumflex";
+pickup lower_pen;
+top.lft.z1=(.5s,h); top.rt.z3=(w-.25s,h); z2=(.55[x1,x3],h+1.35s);
+draw z1{right}..tension1.5..z2 & z2..tension1.5..{right}z3;
+end_char;
+
+beginchar("~", 6/18size#, 17/30size#, 0); "tilde";
+pickup lower_pen;
+top.lft.z1=(.33s,h); top.rt.z4=(w,h+.85s);
+x2=1/3[x1,x4]; x3=2/3[x1,x4];
+y2=y4; y1=y3;
+draw z1{dir36}..z2..z3..{dir36}z4;
+end_char;
+