%
% source file of the Feta (not an abbreviation of Font-En-Tja) music font
%
-% (c) 1998--1999 Mats Bengtsson <matsb@s3.kth.se>,
-% Christian Mondrup <scancm@biobase.dk>
+% (c) 1998--2004 Mats Bengtsson <matsb@s3.kth.se>,
+% Christian Mondrup <scancm@biobase.dk>
fet_begingroup("timesig");
-def set_C_width =
- save left_width, right_width;
- left_width# := 0.9 interline#;
- right_width# := .7 interline#;
- define_pixels(left_width,right_width);
-enddef;
+
+%
+% 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 protudes to the right very slightly.
+%
+
def draw_C =
save hair, bulb_rad, left_fatness;
+ save left_width, right_width;
+ save width;
+ width# := 1.8 staff_space#- stafflinethickness#;
+ define_pixels (width);
+
+ left_width# := 1.0 staff_space#;
+ right_width# := 0.8 staff_space#;
+ define_pixels(left_width,right_width);
hair# := stafflinethickness#;
- bulb_rad# := 0.4 interline#;
+ bulb_rad# := 0.4 staff_space#;
define_pixels(hair, bulb_rad);
left_fatness = 0.55;
- x1r = x5r;
- y1r = .45 interline;
- z2 = (0, interline);
- z3r = (-left_width, 0);
- z4 = (0, -interline);
- z5r = (right_width - stafflinethickness, -0.4 interline);
-
- penpos1(hair, 0);
+ x1r - x3r = width;
+ x3r = 0.0;
+ y1r = .45 staff_space;
+ y2 = -y4 = staff_space;
+ x2 = x4;
+ x2 = x3r + staff_space;
+ y3r = 0;
+
+ x5r = x1r + 0.3 stafflinethickness;
+ y5r = -0.37 staff_space;
+ z6l = z1l;
+
+ penpos1(hair, 10);
penpos2(stafflinethickness, 90);
- penpos3(left_fatness * interline, 180);
+ penpos3(left_fatness * staff_space, 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);
+ penpos5(hair, -13);
+ penpos6(hair, 10);
+
+ draw_bulb(-1, z6l, z6r, 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;
+
+ set_char_box(0, width#, staff_space#, staff_space#);
+
+ penlabels(1,2,3,4,5,6);
enddef;
fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
- set_C_width;
- set_char_box(left_width# + interline#, right_width# + interline#,
- interline#, interline#);
-
draw_C;
fet_endchar;
fet_beginchar ("2/2 meter", "C2/2", "allabreve")
- set_C_width;
- set_char_box(left_width# + interline#, right_width# + interline#,
- 1.4 interline#, 1.4 interline#);
-
draw_C;
save excentricity;
pair excentricity;
- excentricity = (-1.25 stafflinethickness, 0);
-
- draw_block((- .75 stafflinethickness, -d) + excentricity, (.75 stafflinethickness , h) + excentricity);
-fet_endchar;
-
-path threequartercircle;
-threequartercircle = halfcircle & quartercircle rotated 180;
-
-save Cdiameter,Cthickness;
-Cdiameter# := 3/2 interline#;
-Cthickness# := 2 stafflinethickness#;
-define_pixels(Cdiameter,Cthickness);
-
-%% tempus imperfectum cum prolatione imperfecta
-fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
-fet_endchar;
-
-%% tempus imperfectum cum prolatione imperfecta proportio dupla
-fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
- draw_block((-Cthickness, -d), (0, h));
-fet_endchar;
-%% tempus perfectum cum prolatione imperfecta
-fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter;
-fet_endchar;
+ xpart excentricity = x2 -1.25 stafflinethickness;
+ ypart excentricity = 0;
-%% tempus imperfectum cum prolatione perfecta
-fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
- pickup pencircle scaled 4 stafflinethickness;
- draw (0,0);
-fet_endchar;
+ save stemlen ;
+ stemlen = 1.4 staff_space;
+ save thick;
+ thick = stafflinethickness / 2 + 0.025 staff_space;
-%% tempus perfectum cum prolatione perfecta
-fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter;
- pickup pencircle scaled 4 stafflinethickness;
- draw (0,0);
-fet_endchar;
-
-%% tempus perfectum cum prolatione imperfecta proportio dupla
-fet_beginchar ("Mensural 3/4 meter", "old3/4", "oldthreefourmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter;
- draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
-
-%% tempus imperfectum cum prolatione perfecta proportio dupla
-fet_beginchar ("Mensural 6/8 meter", "old6/8", "oldsixeightmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 45 scaled Cdiameter;
- pickup pencircle scaled 4 stafflinethickness;
- draw (0,0);
- draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
-
-%% tempus perfectum cum prolatione perfecta proportio dupla
-fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw fullcircle scaled Cdiameter;
- pickup pencircle scaled 4 stafflinethickness;
- draw (0,0);
- draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
-
-%% tempus imperfectum cum prolatione imperfecta diminutio simplex
-fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 225 scaled Cdiameter;
-fet_endchar;
-
-%% tempus imperfectum cum prolatione perfecta diminutio simplex
-fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- .5 Cdiameter#, .5 Cdiameter#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 225 scaled Cdiameter;
- pickup pencircle scaled 4 stafflinethickness;
- draw (0,0);
-fet_endchar;
-
-%% tempus imperfectum cum prolatione imperfecta diminutio duplex
-fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
- set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#,
- interline#, interline#);
-
- pickup pencircle scaled Cthickness;
- draw threequartercircle rotated 225 scaled Cdiameter;
- draw_block((-Cthickness, -d), (0, h));
+ draw_block((- thick, - stemlen) + excentricity, (thick , stemlen) + excentricity);
fet_endchar;
fet_endgroup("timesig");