-%
+%
% feta-timesig.mf -- implement Time Signatures
-%
-% source file of the Feta (Font-En-Tja) music font
-%
-% (c) 1998 Mats Bengtsson <matsb@s3.kth.se>
+%
+% source file of the Feta (not an abbreviation of Font-En-Tja) music font
+%
+% (c) 1998--2009 Mats Bengtsson <matsb@s3.kth.se>,
+% Christian Mondrup <scancm@biobase.dk>
-fet_begingroup("timesig");
+fet_begingroup ("timesig");
+
+
+%
+% Originally by Mats B. nuked by Han-Wen, inspired by
+% Baerenreiter BA320 (Bach Cello Suites, Suite III).
+%
+% Notes:
+%
+% * The inside curve of the C is rather straight.
+% * The outside curve of the C is rather round.
+% * Right tips of the C point slightly outward.
+% * Lower tip protrudes to the right very slightly.
+%
def draw_C =
- save hair, bulb_rad;
- hair# := stafflinethickness#;
- bulb_rad# := interline# / 3;
- define_pixels(hair, bulb_rad);
-
- x1r = x5;
- y1r = .4 interline;
- z2 = (0, interline);
- z3r = (-b, 0);
- z4 = (0, -interline);
- z5r = (w, -2 stafflinethickness);
-
- penpos1(hair, 0);
- penpos2(stafflinethickness, 90);
- penpos3(4 stafflinethickness, 180);
- penpos4(stafflinethickness, -90);
- penpos5(hair, -5);
-
- draw_bulb(-1, z1l, z1r, bulb_rad, .8);
-
- fill z1l{up} .. z2l{left} .. z3l{down} .. z4l{right} ..
- simple_serif(z5l, z5r, -90) ..
- z4r{left} .. z3r{up} .. z2r{right} .. z1r -- cycle;
-
-% labels(1,2,3,4,5);
- penlabels(1,2,3,4,5);
+ save hair, bulb_rad, left_fatness;
+ save left_width, right_width;
+ save width, lower_offset;
+
+ width# := 1.8 staff_space# - stafflinethickness#;
+
+ left_width := 1.0 staff_space;
+ right_width := 0.8 staff_space;
+
+ hair := stafflinethickness;
+
+ bulb_rad := 0.40 staff_space - .6 stafflinethickness;
+ left_fatness := 0.55 * staff_space;
+ lower_offset := 0.3 stafflinethickness;
+
+ set_char_box (0, width#, staff_space#, staff_space#);
+
+ d := d - feta_shift;
+
+ x1r = w;
+ x3r = 0;
+ y1r = .45 h;
+ y2r = h + vround (.5 stafflinethickness_rounded);
+ y4r = -d - vround (.5 stafflinethickness_rounded);
+ x2 = x4;
+ x2 = x3r + h;
+ y3r = .5 (h - d);
+
+ x5r = x1r + lower_offset;
+ y5r = -0.37 h;
+
+ penpos1 (hair, 10);
+ penpos2 (stafflinethickness_rounded, 90);
+ penpos3 (left_fatness, 180);
+ penpos4 (stafflinethickness_rounded, -90);
+ penpos5 (hair, -13);
+
+ draw_bulb (-1, z1l, z1r, bulb_rad, .8);
+
+ save s;
+ s := 0.735;
+
+ fill z1l{dir (100)}
+ .. z2l{left}
+ ..tension 0.8.. z3l{down}
+ ..tension 0.8.. z4l{right}
+ .. simple_serif (z5l, z5r, -90)
+ .. z4r{left}
+ .. super_curvelet (z4r, z3r, s, -1)
+ .. z3r{up}
+ .. super_curvelet (z3r, z2r, s, 1)
+ .. z2r{right}
+ .. {dir (-80)}z1r
+ -- cycle;
+
+ penlabels (1, 2, 3, 4, 5);
+
+ draw_staff (-2, 2, 0);
enddef;
-fet_beginchar ("4/4 meter", "C", "fourfourmeter")
- set_char_box(.8 interline#, .7 interline#, interline#, interline#);
-
- draw_C;
-fet_endchar;
-fet_beginchar ("2/2 meter", "C2", "allabreve")
- set_char_box(.8 interline#, .7 interline#, 1.4 interline#, 1.4 interline#);
-
+fet_beginchar ("4/4 meter", "C44");
draw_C;
- draw_block((-1.5stafflinethickness, -d), (0, h));
fet_endchar;
-path threequartercircle;
-threequartercircle = halfcircle & quartercircle rotated 180;
-
-save Cdiameter,Cthickness;
-Cdiameter# := 3/2 interline#;
-Cthickness# := 2 stafflinethickness#;
-define_pixels(Cdiameter,Cthickness);
-fet_beginchar ("Mensural 4/4 meter", "oldC", "oldfourfourmeter")
- set_char_box(.5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
-fet_endchar;
+fet_beginchar ("2/2 meter", "C22");
+ save eccentricity, top_stemlen, bottom_stemlen, thick, left_pos;
-fet_beginchar ("Mensural 2/2 meter", "oldC2", "oldallabreve")
- set_char_box(.5 Cdiameter#, .5 Cdiameter#, interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
- draw_block((-Cthickness, -d), (0, h));
-fet_endchar;
+ draw_C;
-fet_beginchar ("Mensural 3/2 meter", "old3_2", "oldthreetwometer")
- set_char_box(.5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter;
-fet_endchar;
+ eccentricity = -1.75 stafflinethickness - 0.025 staff_space;
+ top_stemlen# = bottom_stemlen# = 1.4 staff_space#;
+ thick# = stafflinethickness# + 0.05 staff_space#;
+ define_whole_pixels (top_stemlen, bottom_stemlen);
+ define_whole_blacker_pixels (thick);
-fet_beginchar ("Mensural 6/4 meter", "old6_4", "oldsixfourmeter")
- set_char_box(.5 Cdiameter#, .5 Cdiameter#,
- .5 Cdiameter# + .5 interline#, Cdiameter#+ .5 interline#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter
- shifted (0,.5 interline);
- pickup pencircle scaled 3 stafflinethickness;
- draw (0,.5 interline);
-fet_endchar;
+ bottom_stemlen := bottom_stemlen - feta_shift;
-fet_beginchar ("Mensural 9/4 meter", "old9_4", "oldninefourmeter")
- set_char_box(.5 Cdiameter#, .5 Cdiameter#,
- .5 Cdiameter# + .5 interline#, Cdiameter#+ .5 interline#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter shifted (0,.5 interline);
- pickup pencircle scaled 3 stafflinethickness;
- draw (0,.5 interline);
+ draw_block ((x2 + eccentricity, -bottom_stemlen),
+ (x2 + eccentricity + thick, top_stemlen));
fet_endchar;
-
-fet_endgroup("timesig");
+fet_endgroup ("timesig");