-% feta-din.mf
+
+save serif_thick;
+serif_thick# = 1.1 stafflinethickness#;
+define_blacker_pixels (serif_thick);
+med_thick = round (1.5 stafflinethickness);
+bottom_blot = 1.3 serif_thick;
+
+
+
+%
+% 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", "dynz");
+ 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
%
-% from cmbxti10.mf
%
-% feta dynamics
-% too easy now to use this copy from cm, but we might want to do ourselves
%
-% 16pt staff: \font\dynfont=feta-din10 scaled \magstep1
-% 20pt staff: \font\dynfont=feta-din10 scaled \magstep2
+% TODO: insert blots around the serif
+%
+%
+%
+slant_angle = 20;
+
+
+code := 101;
+fet_beginchar("dynamic f", "f", "dynf");
+ 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;
+
%
-% Computer Modern Bold Extended Text Italic 10 point
+% Notes:
+%
+% - The S is trapezoidal (i.e. narrower at the top)
%
-% font_identifier:="CMBXTI"; font_size 10pt#;
+% - 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", "dyns");
+ 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;
-input cmbase;
+
+%
+% piano p, grabbed from Ed Breitkopf Mozart horn concerto 3.
+%
+% Notes:
+%
+% * there is no dishing in the serif (but we do it anyway)
+%
+% * The cheek is a little fatter than the stem
+%
+% * The slant is extreme: 20 degrees
+%
+% * the twiddle (what'sitcalled) is a slightly darker than the serif
+%
+% * The hole in the cheek has a straight right side.
+%
+% * Corners are filled up.
%
-% We bluntly multiply by font-size / 10pt#,
-% before we did plain scaling anyway.
%
-M:=design_size/10;
+save slant;
+slant := ypart (dir(slant_angle));
+currenttransform := currenttransform slanted slant;
+
+code := 111;
+
+
+fet_beginchar("dynamic p", "p", "dynp")
+ %
+ % TODO w really is 13/12 ex
+ % but should do kerning
+ set_char_box (0, 15/12 ex#, descender#, 1.0 ex#);
+
+ save twiddle_thick, stem_thick, cheek_thick;
+ save updir, fill_up;
+ save serif, dishing_angle, p, q;
+ save cheek_medium, left_serif_protude, right_serif_protude;
+ save lower_overshoot;
+
+ pair updir;
+ path serif,q,p;
+ save my_slant_angle;
+ my_slant_angle = 0;
+ updir := dir (90 - my_slant_angle );
+ twiddle_thick = med_thick;
+ cheek_medium = 1/6 ex;
+
+ dishing_angle = 5;
+ fill_up := 1.5 serif_thick;
+ straigh_len = 0.5 ex;
+ lower_overshoot := .3 serif_thick;
+
+ stem_thick = 2/6 ex;
+ cheek_thick = 13/32 ex;
+ cheek_width = 0.72 ex;
+ left_serif_protude = 18/60 ex;
+ right_serif_protude= 15/60 ex;
+
+ penpos1 (twiddle_thick, -slant - 5);
+ penpos2 (cheek_medium, 90 - slant );
+ penpos3 (cheek_medium, 90 - slant);
+
+ x4r - x4l = cheek_thick;
+ penpos4 (whatever, 0);
+ penpos5 (whatever, -38);
+ penpos6 (stem_thick, 0);
+ penpos17 (straigh_len, 90 -slant);
+ whatever [z17l, z17r] = z4l;
+ y17 = 7/16 ex;
+
+ x6l = 0;
+ y6l = - descender + serif_thick/2;
+ z1l = z6l - whatever *dir (90 - my_slant_angle + 20 );
+ y1r = 0.5 ex;
+ y2r = ex;
+ z7 = whatever * updir + z6l;
+ y7 = 43/60 ex;
+
+ z2l = whatever *updir + 0.3 [z7, z1r];
+ y8 = ypart (0.9 [z7, z2l]);
+ z8 = 2/3 [z6l, z6r] + whatever * updir;
+
+
+ y3r = ex;
+ z3l = 0.58 [(stem_thick, -descender), (stem_thick + cheek_width - cheek_thick, -descender)] + whatever * updir;
+ y4r = .38 ex;
+ z4r = whatever*updir + (stem_thick+ cheek_width, -descender);
+
+ z5l = whatever*updir + z3l;
+ y5r = -lower_overshoot;
+ y5l = y5r + cheek_medium * ypart dir(55);
+
+ z9 = z6r + whatever*updir;
+ y9 = .2 [y5l, y5r];
+
+ p :=
+ z2r{right} .. {dir( -60)}z8 & z8{dir 35} .. z3r{right}
+ .. z4r{-updir}
+ .. tension 1.1
+ .. z5r{left} .. z9
+ & z9 -- z6r -- z6l -- z7{updir}
+ .. z2l{left} .. tension 1.2 ..
+ % z1r & z1r -- z1l & z1l
+ simple_serif (z1r, z1l, -90)
+ .. cycle;
+
+
+ save blot_t, corner_t;
+
+ blot_t := 0.13;
+ corner_t := xpart (p intersectiontimes z9);
+
+ z19 = point corner_t - 2 blot_t of p;
+ z20 = point corner_t + blot_t of p;
+ labels(19,20);
+
+ save blot_path;
+ path blot_path;
+
+ pickup pencircle scaled 1;
+
+ fill z19{up} .. {right}z20{updir} .. z19{-(direction corner_t - 2 blot_t of p)} .. cycle;
+
+ pickup pencircle scaled 1;
+ fill p;
+
+ y12 = 0.5 ex;
+ z12 = z6r + whatever*updir;
+
+ save inner_tension;
+ inner_tension = 1.4;
+ q :=
+ z17l .. tension 1.5 .. z17r .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle;
+ unfill q;
+ penlabels (1, 2, 3, 4, 5, 6, 17);
+
+
+
+
+ pickup pencircle scaled serif_thick;
+ lft x11 = -left_serif_protude;
+ rt x10 = stem_thick+ right_serif_protude;
+ bot y10 = bot y11 = -descender;
+
+
+ serif := simple_serif (z10, z11, dishing_angle);
+ draw serif;
+
+ labels(7,8, 9, 10, 11,12);
+
+
+ z13 = point 0.05 of serif;
+ z14 = point 0.85 of serif;
+ z15 = z6l + updir * fill_up +( serif_thick/2, 0);
+ z16 = z6r + updir * 1.2fill_up- +( serif_thick/2, 0);
+ labels(13,14, 15, 16);
+% pickup pencircle scaled 1;
+ draw z13{direction 0.05 of serif} .. z16{updir};
+ draw z14{-(direction 0.85 of serif)} .. z15{updir};
+fet_endchar;
-u#:=M*21.2/36pt#; % unit width
-width_adj#:=M*11/36pt#; % width adjustment for certain characters
-serif_fit#:=M*0pt#; % extra sidebar near lowercase serifs
-cap_serif_fit#:=M*7/36pt#; % extra sidebar near uppercase serifs
-letter_fit#:=M*11/36pt#; % extra space added to all sidebars
+%
+% NOTES:
+%
+% * right stem is fatter and more straight than the left 2 two stems.
+%
+% * The twiddle at the left is similar to the p twiddle
+%
+% * The bottoms of the stems are blotted.
+%
-body_height#:=M*270/36pt#; % height of tallest characters
-asc_height#:=M*250/36pt#; % height of lowercase ascenders
-cap_height#:=M*247/36pt#; % height of caps
-fig_height#:=M*232/36pt#; % height of numerals
-x_height#:=M*160/36pt#; % height of lowercase without ascenders
-math_axis#:=M*90/36pt#; % axis of symmetry for math symbols
-bar_height#:=M*85/36pt#; % height of crossbar in lowercase e
-comma_depth#:=M*70/36pt#; % depth of comma below baseline
-desc_depth#:=M*70/36pt#; % depth of lowercase descenders
+%
+%
+% This is cut & paste programming. Somehow 3 i shapes in two chars (p and m)
+% Doesn't seem worth the trouble of writing a macro.
+%
+code := 108;
+
+fet_beginchar("dynamic m", "m", "dynm");
+ set_char_box (0, 1.5 ex#, 0, 1.0 ex#);
+
+ % should share code with p for twiddle.
+
+ save i_thick, i_angle, i_twiddle_thick,
+ i_twiddle_start_angle, i_twiddle_start_y,
+ i_left_space;
+ save p;
+ save idir, center, right_ending;
+ save overshoot;
+ pair center, idir, right_ending;
+
+ path p;
+
+ overshoot = .25 serif_thick;
+ i_thick := 21 / 80 ex;
+ i_angle := 0;
+ idir := dir(90- i_angle);
+
+ i_left_space = 16/80 ex;
+ i_twiddle_thick = 1.2 serif_thick;
+ i_twiddle_start_y = 8/16 ex;
+ i_twiddle_start_angle = 0;
+ center =(0,0);
+
+ penpos1 (i_twiddle_thick, -i_twiddle_start_angle);
+ y1 = i_twiddle_start_y;
+ z1r = center - (i_left_space,0) + whatever * idir;
+
+ y3 = 0.5 bottom_blot + ypart center;
+ penpos3(i_thick, 0);
+ z3l = center + whatever * idir;
+ y4 = ypart center;
+ penpos4 (i_thick - bottom_blot, 0);
+ z4 - z3 = whatever * idir;
+
+ y2l = 1 ex + overshoot;
+ z2l = .08 [z3l, z3r] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
+ y2r = y5l + 1/9 ex;
+ z2 = 1/2 [z2l, z2r] ;
+ penpos5(i_thick, 0);
+ z5 = z4 + whatever * idir;
+ y5 = 55 / 80 ex;
+
+ p := simple_serif (z1l, z1r, 90) .. tension 1.2 .. z2r{right} .. z5l --- z3l
+ .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
+
+ fill p;
+ right_ending := z5r;
+ penlabels (1, 2, 3 , 4,5);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ clearxy;
+
+ i_angle := -3.2;
+ idir := dir(90 - i_angle);
+ i_left_space := 14/80 ex;
+
+
+ z1r = right_ending;
+ z5l = right_ending + (i_left_space,0);
+ penpos1(serif_thick, - i_twiddle_start_angle);
+
+ y3 = .5 bottom_blot + ypart center;
+ penpos3(i_thick, 0);
+ z3l = z5l + whatever * idir;
+ y4 = ypart center;
+ penpos4(i_thick - bottom_blot, 0);
+ z4 - z3 = whatever * idir;
+
+ y2l = 1 ex+ overshoot;
+
+ z2l = .08 [z3l, z3r] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
+ y2r = y5l + 1/9 ex;
+ z2 = 1/2 [z2l, z2r] ;
+ penpos5(i_thick, 0);
+
+ p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l
+ .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
+
+ fill p;
+ right_ending := z5r;
+ penlabels (1, 2, 3 , 4,5);
+ clearxy;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ i_thick := 23 / 80 ex;
+ i_angle := -6;
+ i_left_space := 14/80 ex;
+
+
+ idir := dir(90- i_angle);
+ z1r = right_ending;
+ z5l = right_ending + (i_left_space,0);
+ penpos5 (whatever, 10);
+ penpos3 (whatever, 20);
+
+ y7 = 0;
+ penpos7(i_thick ,0);
+
+ penpos1(serif_thick, - i_twiddle_start_angle);
+
+ z3l = z7l + whatever * idir;
+ z3r = z7r + whatever * idir;
+ z5l = z7l + whatever * idir;
+ z5r = z7r + whatever * idir;
+
+ save end_twiddle_angle;
+ end_twiddle_angle := 35;
+ penpos6(serif_thick, - end_twiddle_angle);
+ y6l = 23/80 ex + ypart center;
+ z6l = 1.6 [z3l, z3r] + whatever * idir;
+
+
+
+ y3l = 1/8 ex + ypart center;
+ y2l = 1 ex+ overshoot;
+ z2l = .08 [z3l, z3r] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
+ y2r = y5l + 1/9 ex;
+ z2 = 1/2 [z2l, z2r] ;
+ z8 = z7 - (0, 1 overshoot);
+
+ p := simple_serif (z1l, z1r, 90) .. tension 1.05
+ .. z2r{right} .. z5l --- z3l
+ .. z8{right}
+ .. simple_serif(z6r, z6l, 90)
+ .. tension 0.85
+ .. z3r --- z5r
+ .. tension 1.2
+ .. z2l{left} .. cycle;
+
+% pickup pencircle scaled 1;
+% draw p;
+ fill p;
+ right_ending := z5r;
+ penlabels (1, 2, 3 , 4,5,6,7, 8);
+ clearxy;
-crisp#:=M*13/36pt#; % diameter of serif corners
-tiny#:=M*13/36pt#; % diameter of rounded corners
-fine#:=M*10/36pt#; % diameter of sharply rounded corners
-thin_join#:=M*10/36pt#; % width of extrafine details
-hair#:=M*20/36pt#; % lowercase hairline breadth
-stem#:=M*38/36pt#; % lowercase stem breadth
-curve#:=M*43/36pt#; % lowercase curve breadth
-ess#:=M*35/36pt#; % breadth in middle of lowercase s
-flare#:=M*42/36pt#; % diameter of bulbs or breadth of terminals
-dot_size#:=M*53/36pt#; % diameter of dots
-cap_hair#:=M*22/36pt#; % uppercase hairline breadth
-cap_stem#:=M*49/36pt#; % uppercase stem breadth
-cap_curve#:=M*52/36pt#; % uppercase curve breadth
-cap_ess#:=M*50/36pt#; % breadth in middle of uppercase s
-rule_thickness#:=M*.6pt#; % thickness of lines in math symbols
+fet_endchar;
-dish#:=M*1/36pt#; % amount erased at top or bottom of serifs
-bracket#:=M*10/36pt#; % vertical distance from serif base to tangent
-jut#:=M*27/36pt#; % protrusion of lowercase serifs
-cap_jut#:=M*39/36pt#; % protrusion of uppercase serifs
-beak_jut#:=M*10/36pt#; % horizontal protrusion of beak serifs
-beak#:=M*70/36pt#; % vertical protrusion of beak serifs
-vair#:=M*13/36pt#; % vertical diameter of hairlines
-notch_cut#:=M*10pt#; % maximum breadth above or below notches
-bar#:=M*17/36pt#; % lowercase bar thickness
-slab#:=M*17/36pt#; % serif and arm thickness
-cap_bar#:=M*17/36pt#; % uppercase bar thickness
-cap_band#:=M*17/36pt#; % uppercase thickness above/below lobes
-cap_notch_cut#:=M*10pt#; % max breadth above/below uppercase notches
-serif_drop#:=M*3/36pt#; % vertical drop of sloped serifs
-stem_corr#:=M*2/36pt#; % for small refinements of stem breadth
-vair_corr#:=M*1.5/36pt#; % for small refinements of hairline height
-apex_corr#:=M*0pt#; % extra width at diagonal junctions
-o#:=M*6/36pt#; % amount of overshoot for curves
-apex_o#:=M*6/36pt#; % amount of overshoot for diagonal junctions
+code := 113;
-slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
-fudge:=1; % factor applied to weights of heavy characters
-math_spread:=.5; % extra openness of math symbols
-superness:=8/11; % parameter for superellipses
-superpull:=1/8; % extra openness inside bowls
-beak_darkness:=.4; % fraction of triangle inside beak serifs
-ligs:=2; % level of ligatures to be included
-square_dots:=false; % should dots be square?
-hefty:=false; % should we try hard not to be overweight?
-serifs:=true; % should serifs and bulbs be attached?
-monospace:=false; % should all characters have the same width?
-variant_g:=true; % should an italic-style g be used?
-low_asterisk:=false; % should the asterisk be centered at the axis?
-math_fitting:=false; % should math-mode spacing be used?
+currenttransform := identity slanted ypart(dir(15));
+fet_beginchar("dynamic r", "r", "dynr");
+ set_char_box (0, .75 ex#, 0, 1ex#);
+ save base_point, stem_thick, bulb_diam;
+ save twiddle_thick, attach_len, overshoot, taille;
+ stem_thick =.26 ex;
+ bulb_diam = .30 ex;
+ twiddle_thick= 1.1 serif_thick;
+ overshoot = .5 serif_thick;
+ taille = -0.3 serif_thick;
-% "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239)
-% however; perhaps we need two f symbols:
-% - a super-slanted one used in "f" "mf" "sfz" "sf", and
-% - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241)
-%
-% looking at professionally typeset music reveals that typesetters
-% are somewhat unsure about slanting in "mf", "fp", "sfz"
+ pair base_point;
+ base_point = (0,0);
-% "f" and "p" (in any combination) are a lot (factor two) fatter than
-% "s", "m", and "z". sometimes the "m" and "z" are a bit fatter than
-% "s".
+ x1l = 0;
+ y1l = .5 bottom_blot;
-slant:=.68; % tilt ratio $(\Delta x/\Delta y)$
-crisp#:=M*19/36pt#; % diameter of serif corners
-tiny#:=M*19/36pt#; % diameter of rounded corners
-fine#:=M*20/36pt#; % diameter of sharply rounded corners
-thin_join#:=M*20/36pt#; % width of extrafine details
-stem#:=M*72/36pt#; % lowercase stem breadth
-flare#:=M*52/36pt#; % diameter of bulbs or breadth of terminals
+ penpos10(stem_thick - bottom_blot, 0);
+ y10 = 0;
+ x10 = x1;
-mode_setup;
-font_setup;
+ penpos1 (stem_thick, 0);
+ y2l - y1l = 36/47 ex;
+ x2l = x1l;
+ penpos2 (stem_thick, 0);
-num=-1;
-xbar:=M*u;
+ y3 = .77 ex;
+ x3r = x2l - .2 ex;
+ penpos3(twiddle_thick, -20);
-save fcode;
+ x9 = 0.15 [x1r, x1l] ;
+ y9 = y4l - .12 ex ;
-fcode = 101;
-input feta-ital-f;
+ x4l = -0.1 [x1l, x1r];
+ y4l = ex + overshoot;
-bar#:=M*17/36pt#; % lowercase bar thickness
-slant:=.38; % tilt ratio $(\Delta x/\Delta y)$
-stem#:=M*58/36pt#; % lowercase stem breadth
-font_setup;
-xbar:=M*.4u;
+ x4r = 0.62 [x3r, x2l];
+ y4r = 0.5 [y4l, y2l];
-save fcode;
+ penpos5(whatever, -74);
+ y5l - y5r = bulb_diam;
+ y5l = ex + overshoot;
+ x5 = x2r + attach_len;
+ attach_len + bulb_diam/2 + stem_thick = w;
-fcode = 102;
+ z6 = z5;
+ penpos6 (bulb_diam, 0);
+% z7 = z6l + taille* dir(180);
-input feta-ital-f;
-stem#:=M*54/36pt#; % lowercase stem breadth
-hair#:=M*12/36pt#; % lowercase hairline breadth
-vair#:=M*7/36pt#; % vertical diameter of hairlines
+ save alpha;
+ alpha := 35;
+ z7 = z6 + .4 * bulb_diam * dir (-90 -alpha);
+ z8 = 9/10 [z1r, z2r];
-font_setup;
-input feta-ital-p;
+ save p;
+ path p;
+
+ p := z1r .. z10r --- z10l .. z1l
+ --- z2l
+ .. z4r{left}
+ .. tension 1.2
+ .. {down}simple_serif(z3r, z3l,-90){up}
+ .. tension 0.95
+ .. z4l
+ .. z9
+ & z9{curl 0}
+ .. z5l
+ .. z6r{dir(-80)}
+ .. z5r{left}
+ .. z7
+ .. z6l
+ .. tension 1.2
+ .. z8 --- cycle;
+ pickup pencircle scaled 1;
+ draw p;
+ fill p;
+ penlabels (1,2,3, 4,5,6,7,8, 9, 10);
+fet_endchar ;
+
+
+
+
+
+%%% KERNING
+
+ligtable "m" : "p" kern 0.15 ex#, "f" kern -0.1 ex#;
+ligtable "f" : "f" kern -0.13 ex#;
+ligtable "r" : "f" kern 0.1 ex#;
-slant:=.28; % tilt ratio $(\Delta x/\Delta y)$
-stem#:=M*32/36pt#; % lowercase stem breadth
-ess#:=M*28/36pt#; % breadth in middle of lowercase s
-hair#:=M*14/36pt#; % lowercase hairline breadth
-vair#:=M*9/36pt#; % vertical diameter of hairlines
-flare#:=M*36/36pt#; % diameter of bulbs or breadth of terminals
-crisp#:=M*13/36pt#; % diameter of serif corners
-tiny#:=M*13/36pt#; % diameter of rounded corners
-fine#:=M*10/36pt#; % diameter of sharply rounded corners
-thin_join#:=M*10/36pt#; % width of extrafine details
-curve#:=M*43/36pt#; % lowercase curve breadth
-% Chester, Breitkopf suggest smaller sizes of these other chars,
-% using the x-height as reference point.
-x_height#:=M*135/36pt#; % height of lowercase without ascenders
-font_setup;
-input feta-ital-m;
-input feta-ital-r;
-input feta-ital-s;
-input feta-ital-z;
-font_slant slant;
-font_x_height x_height#;
-font_quad 18u#; % to have a working em unit
-%%fet_endfont("feta-din");
+
+
+%% notes from old dyn code.
+
+% "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239)
+% however; perhaps we need two f symbols:
+% - a super-slanted one used in "f" "mf" "sfz" "sf", and
+% - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241)
+%
+% looking at professionally typeset music reveals that typesetters
+% are somewhat unsure about slanting in "mf", "fp", "sfz"
+
+% "f" and "p" (in any combination) are a lot (factor two) fatter than
+% "s", "m", and "z". sometimes the "m" and "z" are a bit fatter than
+% "s".
+
+
+% Chester, Breitkopf suggest smaller sizes of these other chars,
+% using the x-height as reference point.