X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-toevallig.mf;h=d4f94c536281dca98ce7e7cf4d43f1c8d0a43249;hb=b4d5d1145b0d59ae1ac42c9bc9c43c6d5b055c1c;hp=a0865df28d58cc8964c62721da74e6c4e5254665;hpb=b1eda2bf8186760c557b770833c172a8979bc538;p=lilypond.git diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf index a0865df28d..d4f94c5362 100644 --- a/mf/feta-toevallig.mf +++ b/mf/feta-toevallig.mf @@ -1,8 +1,17 @@ +% +% feta-toevallig.mf -- implement Accidentals +% +% source file of the Feta (Font-En-Tja) music font +% +% (c) 1997, 1998 Han-Wen Nienhuys +% + + % % Accidentals from various sources, notably % -% Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural, flat) -% F Hofmeister edition of Muellers `Etueden fuer Horn' (double sharp) +% Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural) +% F Hofmeister edition of Muellers `Etueden fuer Horn' (double sharp, flat) % @@ -12,6 +21,11 @@ fet_begingroup("accidentals"); +% +% The beams of most sharps have horizontal endings (as if drawn with +% a square pen). [Wanske] does not mention this, so we'll just ignore +% this fact +% fet_beginchar("Sharp" , "1", "sharp"); set_char_box(0, 1.1 interline#, 1.5 interline#, 1.5 interline#); @@ -19,12 +33,12 @@ fet_beginchar("Sharp" , "1", "sharp"); save interbeam, interstem, beamheight, beamwidth, stemwidth; - interbeam := 1.1 interline; + interbeam := 1.05 interline; interstem := 7/16 ; beamheight := 4 stafflinethickness; beamwidth := w; stemwidth := 1.3 stafflinethickness; - roundness := blot_diameter; + roundness := 2blot_diameter; pair center; center := (.5 w, 0); @@ -50,8 +64,9 @@ fet_beginchar("Sharp" , "1", "sharp"); + vspan -- -hspan -vspan -- hspan - vspan -- cycle ) shifted center; - draw_rounded_path((beam shifted (0,-interbeam/2)), roundness); - draw_rounded_path((beam shifted (0,interbeam/2)), roundness); + pickup pencircle scaled roundness; + filldraw (beam shifted (0,-interbeam/2)); + filldraw (beam shifted (0,interbeam/2)); pickup pencircle scaled stemwidth; x3 = x4 = xpart center; @@ -102,6 +117,7 @@ fet_beginchar( "Natural", "0", "natural") labels(1,2,3,4); fet_endchar; + % % Dedicated to my mom. (3/10/97) % @@ -109,70 +125,107 @@ fet_beginchar( "Natural", "0", "natural") % -- HW % -% -% FIXME more metaness -% FIXME distribution of the crooks' thickness -% -% FIXME probably doesn't look quite right. -% +% TODO: remove crook_fatness +def draw_meta_flat(expr xcenter, w, crook_fatness) = + clearxy; + save crook_thinness; + save top_stem_thick, bottom_stem_thick, hair; + save center; + pair center; + center = (xcenter, 0); -def flat_meta_symbol(expr w, d, h, - stemwidth, crook_fatness, crook_thinness, - bottom_stem_thick, top_stem_thick)= + crook_thinness = 1.25 stafflinethickness; + top_stem_thick = 2 stafflinethickness; + bottom_stem_thick = 1.2 stafflinethickness; - z1 = (0, h); - z2 = (0, -d); - brush(z1, top_stem_thick , z2, bottom_stem_thick); - - z3 = (0, 7/16 interline); - z4 = z3 + whatever * (dir 30); - y4 = 1/2 interline ; - y5 = 4/16 interline; - x5 + crook_fatness/2 = w; - z6 = z2 + (0,-1) * (bottom_stem_thick - crook_thinness); - - penpos3(crook_thinness, 90); - penpos4(crook_thinness, 90); - penpos5(crook_fatness, 0); - penpos6(crook_thinness, -90); - labels(1,2,3,4,5,6); - penstroke z3e{dir 32} .. z4e{dir 30} .. z5e{down} .. {dir 220}z6e; - enddef; - -def flat_symbol (expr w, d, h)= - save stemwidth, bottom_stem_thick, top_stem_thick, - crook_thinness, crook_fatness; - stemwidth = stafflinethickness; - crook_fatness = 1/4 interline; - crook_thinness = stemwidth; - bottom_stem_thick = 5/4 stemwidth; - top_stem_thick = 2 stemwidth; - flat_meta_symbol(w,d,h, stemwidth, crook_fatness, crook_thinness, - bottom_stem_thick, top_stem_thick); - enddef; + z1 = (0, 2 interline) + center; + z2 = (0, - 1/2 interline)+ center; + + penpos1(top_stem_thick, 0); + penpos2(bottom_stem_thick, 0); + + fill simple_serif(z1r, z1l, 30) -- z2l -- z2r -- cycle; + + + y3l = (interline - stafflinethickness)/2 + ypart center; + z3l = whatever [z2r,z1r]; + + z3r = .26 [z2r, z1r]; + + + z4 = (3/8 interline, interline/2) + center; + penpos4(whatever, 53); + y4l - y4r = 2 crook_thinness ; +% y4l - y4r = 6/20[crook_thinness, crook_fatness] ; + + y5r = 1/4 interline + ypart center; + x5l = w + xpart center; + penpos5(crook_fatness, -175); + + z8 = (0, - interline/2 - stafflinethickness/2) + center; + + z9 = (x5,0); + + save ne_angle; + ne_angle = angle(z9 - z8); + + z7 = 8/33 [z8,z9]; + z6l = 18/33 [z8,z9] + .5 crook_thinness *dir(ne_angle -90); + + penpos7(crook_thinness, ne_angle + 90); + + z6r = .3 (z9-z8) + z7r; + +% penpos7(crook_thinness, angle(dir(z8-center) -180); + + penpos8(whatever, ne_angle + 90); + x8r = xpart center - bottom_stem_thick/2; + penlabels(range 0 thru 10); + + z10 = (bottom_stem_thick/2, -1/5 interline) + center; + + unfill z3r{up} .. z4r{right} .. tension .9 + .. z6r --- + z7r{left} + .. z10 {up} -- cycle; + fill z8r{down} + .. tension 0.8 ..z8l{(z9-z8)} + .. z7l + .. z6l + .. z5l{up} + .. z4l{left} .. z3l -- cycle; + + labels(10); +enddef; + + % % unfortunately, 600dpi is not enough to show the brush of the stem. % fet_beginchar("Flat", "-1", "flat") - set_char_box(0, 9/12 interline#, .5 interline#, 2 interline#); - flat_symbol (w, d, h); + set_char_box(1.2 stafflinethickness#, .8 interline#, .5 interline#, 2 interline#); + draw_meta_flat(0, w, 1/3 interline); fet_endchar; + fet_beginchar("Double flat", "-2", "flatflat") - set_char_box(0, 18/12 interline#, .5 interline#, 2 interline#); - flat_symbol(w/2, d, h); - addto currentpicture also currentpicture - shifted (w/2 - stafflinethickness/2,0); + save left_wid, overlap, right_wid; + left_wid = .7; + right_wid = .8; + overlap = .05; + set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *interline#, .5 interline#, 2 interline#); + draw_meta_flat(0, left_wid* interline, 1/3 interline); + draw_meta_flat((left_wid - overlap) *interline, + right_wid *interline, 1/3 interline); fet_endchar; - fet_beginchar("Double sharp", "2", "sharpsharp") set_char_box(0, interline#, .5 interline#, .5 interline#); save klaverblad, klaversteel; - klaversteel = 1/12 interline; - klaverblad = 1/3 interline; + klaversteel = 1/15 interline; + klaverblad = .35 interline; z1 = (klaversteel, 0); z2 = (w/2 - klaverblad / 10, h - klaverblad); @@ -180,10 +233,12 @@ fet_beginchar("Double sharp", "2", "sharpsharp") z4 = z2 reflectedabout((0,0), (1,1)); z5 = z1 reflectedabout((0,0), (1,1)); -% labels(1,2,3,4,5); - draw_rounded_path( - z1{dir 45} .. {right}z2 -- z3 -- z4{down} .. {dir 225}z5 .. cycle, - 1/20 interline); + labels(1,2,3,4,5); + pickup pencircle scaled 1/20 interline; + filldraw + z1{dir 45} .. {right}z2 -- z3 -- + z4{down} .. {dir 225}z5 .. cycle; + addto currentpicture also currentpicture yscaled (-d/h); addto currentpicture also currentpicture xscaled (-1); @@ -192,7 +247,38 @@ fet_beginchar("Double sharp", "2", "sharpsharp") currentpicture := currentpicture shifted (w/2,0); - fet_endchar; + +fet_endchar; + + +def draw_paren = + save leftindent; + leftindent# := .2 interline#; + define_pixels(leftindent); + set_char_box(0, .5 interline#+stafflinethickness#, + interline#, interline#); + z1 = (leftindent,h); + z2 = (w-stafflinethickness,0); + z3 = (leftindent,-d); + + penpos1(stafflinethickness, 35); + penpos2(2 stafflinethickness, 0); + penpos3(stafflinethickness, -35); + + penlabels(1,2,3); + fill z2l{down} .. simple_serif(z3l, z3r, 90) .. z2r{up} + .. simple_serif(z1r, z1l, 90) .. z2l{down} -- cycle; +enddef; + +fet_beginchar("Right paranthesis", ")", "rightparen") + draw_paren; +fet_endchar; + +fet_beginchar("Left paranthesis", "(", "leftparen") + draw_paren; + currentpicture := currentpicture xscaled -1; + set_char_box(charwd, charbp, chardp, charht); +fet_endchar; fet_endgroup("accidentals");