X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-timesig.mf;h=116a6764a4ee6a3225ccae17c4f9d1dbe71a9762;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=cc22ca8ab9c2dcac57b70dfa66b93256b07dccca;hpb=68a168bff1fec7f8011b2afa82d4fc89182c4bf7;p=lilypond.git diff --git a/mf/feta-timesig.mf b/mf/feta-timesig.mf index cc22ca8ab9..116a6764a4 100644 --- a/mf/feta-timesig.mf +++ b/mf/feta-timesig.mf @@ -1,194 +1,108 @@ -% +% % 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 , +% +% (c) 1998--2008 Mats Bengtsson , % Christian Mondrup -fet_begingroup("timesig"); +fet_begingroup ("timesig"); -def set_C_width = - save left_width, right_width; - left_width# := 1.0 staff_space#; - right_width# := 0.8 staff_space#; - 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 protrudes to the right very slightly. +% def draw_C = - save hair, bulb_rad, left_fatness; - - - hair# := stafflinethickness#; - bulb_rad# := 0.4 staff_space#; - define_pixels(hair, bulb_rad); - left_fatness = 0.55; - - x1r = x5r; - 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); -enddef; + save hair, bulb_rad, left_fatness; + save left_width, right_width; + save width, lower_offset; -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#); + width# := 1.8 staff_space# - stafflinethickness#; - draw_C; -fet_endchar; + left_width := 1.0 staff_space; + right_width := 0.8 staff_space; -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#); - - draw_C; - save excentricity; - pair excentricity; - excentricity = (-1.25 stafflinethickness, 0); + hair := stafflinethickness; - draw_block((- .75 stafflinethickness, -d) + excentricity, (.75 stafflinethickness , h) + excentricity); -fet_endchar; + bulb_rad := 0.40 staff_space - .6 stafflinethickness; + left_fatness := 0.55 * staff_space; + lower_offset := 0.3 stafflinethickness; -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; + set_char_box (0, width#, staff_space#, staff_space#); -%% 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; + d := d - feta_shift; -%% 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; + 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); -%% 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; + x5r = x1r + lower_offset; + y5r = -0.37 h; -%% 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; + penpos1 (hair, 10); + penpos2 (stafflinethickness_rounded, 90); + penpos3 (left_fatness, 180); + penpos4 (stafflinethickness_rounded, -90); + penpos5 (hair, -13); -%% 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; + draw_bulb (-1, z1l, z1r, bulb_rad, .8); -%% 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; + save s; + s := 0.735; -%% 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; + 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; -%% 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; -%% 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_beginchar ("4/4 meter", "C44"); + draw_C; fet_endchar; -%% 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)); + +fet_beginchar ("2/2 meter", "C22"); + save eccentricity, top_stemlen, bottom_stemlen, thick, left_pos; + + draw_C; + + 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); + + bottom_stemlen := bottom_stemlen - feta_shift; + + draw_block ((x2 + eccentricity, -bottom_stemlen), + (x2 + eccentricity + thick, top_stemlen)); fet_endchar; -fet_endgroup("timesig"); +fet_endgroup ("timesig");