+%%
+%
+% TODO: blot diameter should be fixed, not scalable.
+%
+%
+
+
+save serif_thick;
+serif_thick# = 1.1 linethickness#;
+define_blacker_pixels (serif_thick);
+med_thick = round (1.5 linethickness);
+bottom_blot = 1.3 serif_thick;
+
+
+code := 32;
+fet_beginchar("Space", "space", "space")
+ set_char_box(0, horizontal_space#, 0, ex#);
+fet_endchar;
+
+
+%
+% Couldn't find many z examples. This one is losely inspired
+% by a sfz from Mueller etuden fuer Horn (Edition Hofmeister.)
+%
+
+code := 121;
+fet_beginchar ("dynamic z", "z", "z");
+ set_char_box (0, .98 ex#, 0, 0.9 ex#);
+
+ save thin_thick, top_narrow, over_shoot;
+ save bot_thick;
+
+ thin_thick = serif_thick;
+ top_narrow = thin_thick;
+ top_overshoot = .8 serif_thick;
+ top_thick = .3 h ;
+ bot_thick = .2 ex;
+ bot_overshoot = serif_thick;
+
+ x0 = + top_narrow;
+ y0 = .9 [y1r, y1l];
+ y1l = .72 h;
+ x1r = .34 ex;
+ x2 = .66 ex;
+ y2 = y1r - top_overshoot;
+
+
+ y3 = h - .7 thin_thick;
+ x3 = w - .6 top_narrow - .5 thin_thick;
+
+ y4 = .5 thin_thick;
+ x4 = .5 thin_thick;
+
+ x5l =.25 ex;
+ y5l = .4 bot_overshoot;
+ y6l = -bot_overshoot;
+ x6 = w - 3 top_narrow;
+ x7 = w;
+ y7 = .82 [y8r, y6r];
+ x8r = w - .35 top_narrow;
+ x9 = w;
+ y8r = .45 h;
+
+ penpos1(top_thick, 80);
+ penpos3 (thin_thick, angle(z3-z4) + 90);
+ penpos4(thin_thick, angle (z3-z4) + 90);
+ penpos5(bot_thick, 70);
+ penpos6(3/2 bot_thick, 70);
+ penpos8 (thin_thick, 20);
+
+ penlabels(range 0 thru 9);
+
+ save p,q,r;
+ path p,q,r;
+
+ p := z0{down}
+ .. z1l{dir(10)}
+
+ .. simple_serif (z3l, z3r, 90) .. z2{left} .. z1r{left}
+ .. tension 1.2
+ .. cycle;
+ q := z3l -- z3r -- z4r -- z4l -- cycle;
+ r := simple_serif (z4r, z4l, 90) .. z5l{right}
+ .. z6l{right}
+ .. z7{up}
+ .. simple_serif (z8r, z8l, 90)
+ .. z6r{left} .. z5r{left} .. cycle;
+ pickup pencircle scaled 1;
+% draw p ; draw q ; draw r ;
+
+ fill p; fill q; fill r;
+
+fet_endchar;
+
+
+% forte f, grabbed from Ed Breitkopf Mozart horn concerto 3.
+%
+% NOTES:
+%
+% * the bulbs are open.
+%
+% * blotting around the serif
+%
+%
+%
+% TODO: insert blots around the serif
+%
+%
+%
+slant_angle = 20;
+
+
+code := 101;
+fet_beginchar("dynamic f", "f", "f");
+ set_char_box (0, 1.1 ex#, descender#, ex# + ascender#);
+
+ save left_angle, right_angle;
+ save serif_length, serif_excentricity;
+ save f_thick;
+ save bulb_thick, bulb_diam, fill_up;
+ save p;
+ path p;
+ bulb_diam = 7.5 / 40 ex;
+ bulb_thick = 8.5/40 ex;
+ fill_up = 1.5 serif_thick;
+ save slant;
+ left_angle = slant_angle - 6;
+ right_angle = slant_angle - 3;
+ f_thick = 7/16 ex;
+ serif_length = 0.96 ex;
+ serif_excentricity = 0.01 ex;
+
+
+ % z1 is the "base point"
+ z1 = (0.2 ex, - serif_thick);
+ y2 = y1 + ex;
+ z2l = z1 + whatever*dir (90 - left_angle);
+ penpos2 (f_thick, 0);
+
+ y3l = y1 + ex + ascender;
+ x3l = x1 + 1 ex;
+ penpos3 (med_thick, -90);
+ penpos4 (bulb_thick, -20);
+ z3r = whatever [z4r,z4l];
+
+ x4l - x3l = 1/10 ex;
+
+ penpos5(bulb_thick, -45);
+ x5r = 0.1 [x4l, x4r];
+ y5l = y4l - bulb_diam;
+
+ z6 = z2r + whatever* dir (90 - right_angle);
+ y6 = y1 + 3/8 ex;
+
+ x7 = x1 - 1/4 ex;
+ y7r = y1 -descender;
+ penpos7(med_thick, -90);
+
+ penpos8 (bulb_thick, 160);
+ x8l = x7l - 1/10 ex;
+ z7l = whatever [z8r,z8l];
+
+ penpos9 (bulb_thick, 135);
+ x9r = 0.1 [x8l, x8r];
+ y9l = y8l + bulb_diam;
+ labels(1,6,9);
+ penlabels(2, 3,4,5, 7, 8,9);
+
+ p := z1 --- z2l
+ .. tension 1.1
+ .. z3l{right} .. z4r{down}
+ .. z5r{left} .. z5l{up}
+ .. tension 0.8
+ .. z4l{up} .. z3r{left}
+ .. tension 1.1
+ .. z2r --- z6 .. tension 1.25 .. z7r{left}
+ .. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8
+ .. z8l{down} .. z7l{right} .. cycle;
+ pickup pencircle scaled 1;
+ fill p;
+% draw p;
+
+%
+% todo round for pixels...
+%
+ pickup pencircle scaled round (1.4 serif_thick);
+ (rt x13) - (lft x14) = serif_length;
+ y13 = y14;
+ y14 = y2;
+ 0.5 [x13, x14] = x2 + serif_excentricity;
+
+ draw z13 .. z14;
+
+ penlabels(16);
+ labels(13,14,15);
+fet_endchar;
+
+
+%
+% Notes:
+%
+% - The S is trapezoidal (i.e. narrower at the top)
+%
+% - The white space is differently shaped at the top (the bulb's inner
+% curve is filled up.)
+%
+% - less heavy than the f and p signs.
+%
+
+
+code := 114;
+fet_beginchar("dynamic s", "s", "s");
+ set_char_box (0, 17/24 ex#, 0, 1 ex#);
+
+ save left_angle, right_angle;
+ save s_thick, s_thin;
+ save base_point;
+ save bulb_diam, bulb_len;
+ save over_shoot;
+ over_shoot = 0; % .2 serif_thick;
+ pair base_point;
+
+ bulb_diam = 11/70 ex;
+ bulb_len = 1.0 bulb_diam;
+ left_angle = slant_angle - 2;
+ right_angle = slant_angle -11;
+
+ s_thick = 16/70 ex;
+ s_thin = serif_thick;
+
+ base_point = (0,0);
+
+ penpos1 (bulb_diam, -45);
+ z1 = 0.35 [z2l,z2r] + bulb_len * dir(45);
+ penpos2 (bulb_diam, -25);
+ y2l = 0.845 [y7r, y3r];
+
+ z2l = base_point + whatever * dir (90-left_angle);
+ penpos3 (s_thin, 100);
+ x3l = 1/2 w ;
+ y3l = ypart base_point - over_shoot ;
+
+ penpos4 (s_thick, 25);
+ ypart z4l = ypart z1r;
+ z4r = base_point + (w,0) + whatever *dir(90-right_angle);
+ penpos5 (s_thick, 40);
+ z5 = z3l + whatever * dir (90-right_angle);
+ y5 = ypart (0.48 [z7r, z3r]);
+
+
+ penpos6 (s_thick, 25);
+ z6l = base_point + whatever *dir(90-left_angle);
+ y6r = y9l;
+
+ penpos7 (.9 s_thin, 110);
+ z7l = 0.45 [z6r, z8l] + whatever * dir (90-left_angle);
+ y7r = h + over_shoot;
+
+ penpos8 (.9 bulb_diam, -25);
+ z8 = .6 [z4l,z4r] + whatever *dir(90-right_angle);
+
+ y8r = ypart (0.23 [z7r, z3r]);
+
+ penpos9 (.9 bulb_diam, -45);
+ z9 = .4 [z8r,z8l] + .9 bulb_len * dir (-135);
+
+ penlabels(1,2,3,4,5,6,7,8,9);
+
+ labels(12);
+ save p;
+ path p;
+ p := z2l{down} .. z3l{right} .. z4r{up}
+ .. z5r
+ .. z6r{up}
+ .. z7l{right}
+ %.. z8l{down}
+ ..z9l{down}
+ .. z9r{right} .. z7r{left}
+ .. z6l{down}
+ .. z5l
+ .. z4l{down}
+ .. z3r{left}
+ .. z2r{up} .. z1r{up}
+ .. z1l{left} .. cycle;
+ pickup pencircle scaled 1;
+ fill p;
+fet_endchar;
+
+
+
+