]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-timesig.mf
Prepare glyph shapes for mf2pt1 conversion.
[lilypond.git] / mf / feta-timesig.mf
index cc22ca8ab9c2dcac57b70dfa66b93256b07dccca..26f177075905f8b7af3e36043d2d6dce89913c21 100644 (file)
-% 
+%
 % feta-timesig.mf --  implement Time Signatures
-% 
+%
 % source file of the Feta (not an abbreviation of Font-En-Tja) music font
-% 
-% (c) 1998--2001 Mats Bengtsson <matsb@s3.kth.se>,
+%
+% (c) 1998--2004 Mats Bengtsson <matsb@s3.kth.se>,
 %               Christian Mondrup <scancm@biobase.dk>
 
-fet_begingroup("timesig");
+fet_begingroup ("timesig");
 
-def set_C_width =
+
+%
+% 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);
-enddef;
-
-def draw_C =
-       save hair, bulb_rad, left_fatness;
+       define_pixels (left_width, right_width);
 
-  
        hair# := stafflinethickness#;
        bulb_rad# := 0.4 staff_space#;
-       define_pixels(hair, bulb_rad);
+       define_pixels (hair, bulb_rad);
        left_fatness = 0.55;
-       
-       x1r = x5r;
+
+       x1r - x3r = width;
+       x3r = 0.0;
        y1r = .45 staff_space;
-       z2 = (0, staff_space);
-       z3r = (-left_width, 0);
-       z4 = (0, -staff_space);
-       z5r = (right_width - stafflinethickness, -0.4 staff_space);
-       
-       penpos1(hair, 10);
-       penpos2(stafflinethickness, 90);
-       penpos3(left_fatness * staff_space, 180);
-       penpos4(stafflinethickness, -90);
-       penpos5(hair, -5);
-       z6l = z1l;
-       penpos6(hair, 0);
-       
-       draw_bulb(-1, z6l,  z6r, bulb_rad, .8);
-
-       fill z1l{dir (100)} .. z2l{left} .. z3l{down} .. z4l{right} ..
-       simple_serif(z5l, z5r, -90) .. 
-       z4r{left} .. z3r{up} .. z2r{right} .. {dir (-80)}z1r -- cycle;
-       
-       penlabels(1,2,3,4,5,6);
+       y2 = -y4 = staff_space;
+       x2 = x4;
+       x2 = x3r + staff_space;
+       y3r = 0;
+
+       x5r = x1r + 0.3 stafflinethickness;
+       y5r = -0.37 staff_space;
+
+       penpos1 (hair, 10);
+       penpos2 (stafflinethickness, 90);
+       penpos3 (left_fatness * staff_space, 180);
+       penpos4 (stafflinethickness, -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;
+
+       set_char_box (0, width#, staff_space#, staff_space#);
+
+       penlabels (1, 2, 3, 4, 5);
 enddef;
 
-fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
-       set_C_width;
-       set_char_box(left_width# + staff_space#, right_width# + staff_space#, 
-               staff_space#, staff_space#);
-
-       draw_C;
-fet_endchar;
 
-fet_beginchar ("2/2 meter", "C2/2", "allabreve")
-       set_C_width;
-       set_char_box(left_width# + staff_space#, right_width# + staff_space#, 
-               1.4 staff_space#, 1.4 staff_space#);
-       
+fet_beginchar ("4/4 meter", "C44")
        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 staff_space#;
-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# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .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# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       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# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw fullcircle scaled Cdiameter;
-fet_endchar;
-
-%% tempus imperfectum cum prolatione perfecta
-fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 45 scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-fet_endchar;
-
-%% tempus perfectum cum prolatione perfecta
-fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .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# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       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# + staff_space#, .5 Cdiameter# + staff_space#, 
-                staff_space#, staff_space#);
-       
-       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;
+fet_beginchar ("2/2 meter", "C22")
+       save excentricity, stemlen, thick;
+       pair excentricity;
 
-%% tempus perfectum cum prolatione perfecta proportio dupla
-fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       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;
+       draw_C;
 
-%% tempus imperfectum cum prolatione imperfecta diminutio simplex
-fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-       .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 225 scaled Cdiameter;
-fet_endchar;
+       xpart excentricity = x2 - 1.25 stafflinethickness;
+       ypart excentricity = 0;
 
-%% tempus imperfectum cum prolatione perfecta diminutio simplex
-fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 225 scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-fet_endchar;
+       stemlen = 1.4 staff_space;
+       thick = stafflinethickness / 2 + 0.025 staff_space;
 
-%% tempus imperfectum cum prolatione imperfecta diminutio duplex
-fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       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");
+fet_endgroup ("timesig");