]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-pendaal.mf
Imported sources
[lilypond.git] / mf / feta-pendaal.mf
index 2cdbddc0a0a1d26a4f155e8ce3d1b4c5c173cc1e..d509130ad9d557741a7a5e46225ca5e196f05cab 100644 (file)
@@ -1,10 +1,11 @@
+% -*- Fundamental -*-  (emacs-20 mf mode mucks
 % feta-pendaal.mf -- piano pedal markings
 %
 % part of LilyPond's pretty-but-neat music font
 %
 % source file of the Feta (not the Font-En-Tja) music font
 % 
-% (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % Voor Cup
 
@@ -18,9 +19,10 @@ fet_begingroup("pedal")
 pedalpha = 40;
 pedbeta = 25;
 
-penh#=0.7stafflinethickness#;
-penw#=4penh#;
-%penw#=penh#;
+penh#=0.7linethickness#;
+
+penw# = 2penh# + 0.14 staff_space#;
+
 define_pixels (penh,penw);
 
 pedalh# = 2staff_space#;
@@ -30,49 +32,57 @@ define_pixels (pedalh,pedalbh);
 % code values for own pedal font commented out
 % code := 41;  % * = 42
 
-def draw_asterisk_bulb (expr w, h, i) =
-       begingroup;
-       clearxy;
-       save bulb, p;
+fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
+       set_char_box(0, 7/9pedalh#, 0, pedalh#);
+       z0 = (1/2w, h - 1/2w);
+       save bulb, p, radius, thin;
        path p;
-       bulb = 4/3penw;
+
+       thin = 0.8 linethickness;
+
+       bulb + 2 radius = w;
+       0.9 thin +  bulb = (radius * pi * 2) / 8;
 
        pickup pencircle scaled penh;
        penpos 1 (bulb, 180);
        penpos 2 (bulb, 0);
-       penpos 3 (penh, 0);
-       penpos 4 (penw, 0);
+       penpos 3 (thin, 0);
 
-       z0 = (1/2w, h - 1/2w);
-       z1 = (1/2w, h-1/2bulb);
+       z1 = z0 + (0,radius);
        z2 = z1;
-       z3 = (x1, y1-penw);
-       z4 = (x1, y3-2penh);
+
+       save inner_r ;
+       inner_r = .45 radius ;
+
+       z4l = z0 + inner_r * dir (90 + 360/16);
+       z4r = z0 + inner_r * dir (90 - 360/16);
+
+       z4 = .5 [z4l,z4r];
+       z3 = .75 [z1,z4];
+
 
        penlabels (1,2,3,4);
-%      penstroke z1e{up}..z2e{down}..z3e{down}..z4e;
-       p = z1l{up}..z2l{down}..z3l{down}..z4l..z4r
-               ..z3r{up}..z2r{up}..z1r{down}..cycle;
-       p := p rotatedaround (z0, 360/8i);
-       fill p;
-       endgroup;
-       enddef;
 
-fet_beginchar("Pedal asterisk", "*", "pedal-asterisk")
-       set_char_box(0, 7/9pedalh#, 0, pedalh#);
-       z0 = (1/2w, h - 1/2w);
-       for i = 0 upto 7:
-               draw_asterisk_bulb (w, h, i);
-               pickup pencircle scaled penw;
-               undraw z0;
-       endfor
+       %% what is empty path? 
+       p = z3r{up} ..  z1l{up}..z2l{down}..z3l{down} .. z4l{dir (180 + 360/16)}; 
+       for i = 1 upto 7:
+               p := p ... ((z3r{up}.. z1l{up}..z2l{down}..z3l{down}..z4l{dir (180 + 360/16)}) 
+               rotatedaround (z0, 360/8i));
+               endfor
+
+       p := p .. cycle;
+       fill p;
+       pickup pencircle scaled (7/8 inner_r);
+       undraw z0;
 fet_endchar;
 
 % skip + and ,
 
 % code := 44;  % - = 45
 
-fet_beginchar("Pedal dash", "-", "pedal-dash")
+%% ugh. rounded corners!
+
+fet_beginchar("Pedal dash", "-", "pedaldash")
        set_char_box(0, 3penw#, 0, pedalbh#);
        pickup pencircle scaled penh;
 
@@ -84,16 +94,15 @@ fet_beginchar("Pedal dash", "-", "pedal-dash")
        penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
 fet_endchar;
 
-fet_beginchar("Pedal dot", ".", "pedal-dot")
+fet_beginchar("Pedal dot", ".", "pedaldot")
        set_char_box(0, penw#, 0, penw#);
        pickup pencircle scaled penw;
        draw (1/2penw,1/2penw);
 fet_endchar;
 
-% code := 79;  % P = 80
-
-fet_beginchar("Pedal P", "P", "pedal-P")
-       set_char_box(0, 5/6pedalh#, 0, pedalh#);
+def draw_pedal_P =
+       begingroup;
+       clearxy;
        pickup pencircle scaled penh;
 
        penpos 1 (penh, 0);
@@ -127,7 +136,7 @@ fet_beginchar("Pedal P", "P", "pedal-P")
        y11 = 1/5h;
 
        penlabels (1,2,3,4,5,6,7,8,9,10,11);
-       penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
+       soft_penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
                ..z4e..tension 1.5
                ..z5e..z6e..tension 1.5
                ..z7e..tension 1.5
@@ -148,48 +157,18 @@ fet_beginchar("Pedal P", "P", "pedal-P")
        y16r = y2r;
 
        penlabels (12,13,14,15,16);
-       penstroke z12e{down}..tension 1.1
+       soft_penstroke z12e{down}..tension 1.1
                ..z13e{dir (180-pedbeta)}..tension 1.1
                ..z14e{right}..tension 1.1
                ..z15e{dir (180+pedbeta)}..tension 1.1
                ..z16e{dir (90+pedbeta)};
-fet_endchar;
-
-
-% code := 99;  % d = 100
-
-if 0 = 1:
-
-fet_beginchar("Pedal d", "d", "pedal-d")
-       set_char_box(2/9pedalh#, 4/9pedalh#, 0, 7/8pedalh#);
-       pickup pencircle scaled penh;
-
-       penpos 1 (penh, -70);
-       penpos 2 (3/4penw, 0);
-       penpos 3 (2penh, 90);
-       penpos 4 (penw, 190);
-       penpos 5 (penh, -10-90);
-
-       z1l = (1/2w, pedalbh);
-       z2l = (0, 1/2pedalbh);
-       z3l = (1/2w, 0);
-       z4 = (w - 1/2penw, 1/2pedalbh + penh);
-       x5r = -b;
-       y5l = h;
-
-       penlabels (1,2,3,4,5);
-
-       penstroke z1e{dir (-70-90)}..tension 1.1
-               ..z2e{down}..tension 1.1
-               ..z3e{right}..tension 1.1
-               ..z4e{dir (90+10)}..tension 1.1
-               ..z5e{dir (180-10)};
-fet_endchar;
+       endgroup;
+       enddef;
 
-else:
 
-fet_beginchar("Pedal d", "d", "pedal-d")
-       set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
+def draw_pedal_d =
+       begingroup;
+       clearxy;
        pickup pencircle scaled penh;
 
        penpos 1 (penh, -70);
@@ -207,17 +186,17 @@ fet_beginchar("Pedal d", "d", "pedal-d")
 
        penlabels (1,2,3,4,5);
 
-       penstroke z1e{dir (-70-90)}..tension 1.1
+       soft_penstroke z1e{dir (-70-90)}..tension 1.1
                ..z2e{down}..tension 1.1
                ..z3e{right}..tension 1.1
                ..z4e{dir (90+10)}..tension 1.1
                ..z5e{dir (180-10)};
-fet_endchar;
-
-fi
+       endgroup;
+       enddef;
 
-fet_beginchar("Pedal e", "e", "pedal-e")
-       set_char_box(0, 2/5pedalh#, 0, pedalbh#);
+def draw_pedal_e =
+       begingroup;
+       clearxy;
        pickup pencircle scaled penh;
 
        penpos 1 (penh, pedalpha-90);
@@ -247,7 +226,7 @@ fet_beginchar("Pedal e", "e", "pedal-e")
        y8 = 1/5pedalh;
 
        penlabels (1,2,3,4,5,6,7,8);
-       penstroke z1e{dir pedalpha}
+       soft_penstroke z1e{dir pedalpha}
                ..z2e{dir pedalpha}.. tension 1.1
                %urg
                ..z3e..tension 1.05
@@ -256,7 +235,65 @@ fet_beginchar("Pedal e", "e", "pedal-e")
                ..z6e{dir -pedalpha}..tension 1.1
                ..z7e.. tension 2.5
                ..z8e;
+       endgroup;
+       enddef;
+
+
+% code := 79;  % P = 80
+
+fet_beginchar("Pedal P", "P", "pedalP")
+       set_char_box(0, 5/6pedalh#, 0, pedalh#);
+       draw_pedal_P;
+fet_endchar;
+
+% code := 99;  % d = 100
+
+fet_beginchar("Pedal d", "d", "pedald")
+       set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
+       draw_pedal_d;
+fet_endchar;
+
+fet_beginchar("Pedal e", "e", "pedale")
+       set_char_box(0, 2/5pedalh#, 0, pedalbh#);
+       draw_pedal_e;
 fet_endchar;
 
+%
+% Han-Wen insists on having a `Ped' symbol, ready-kerned in mf.
+% The pre 1.3.59 user-scm kerning sucks, but I'm not struck by
+% the looks of this either.
+%
+fet_beginchar("Pedal Ped", "Ped", "pedalPed")
+       P_width# = 5/6pedalh#;
+       e_width# = 2/5pedalh#;
+       d_width# = 2/3pedalh#;
+       define_pixels (P_width, e_width, d_width);
+
+       e_height# = pedalbh#;
+       d_height# = 7/8pedalh#;
+       define_pixels (e_height, d_height);
+
+       % Pe = -0.034 pedalh == -0.07 staff-space
+       % ed = -0.27 pedalh == -0.53 staff-space
+       Pe_kern# = -0.034 pedalh#;
+       ed_kern# = -0.27 pedalh#;
+       define_pixels (Pe_kern, ed_kern);
+
+       w := d_width;
+       h := d_height;
+       draw_pedal_d;
+       currentpicture := currentpicture shifted (e_width + ed_kern, 0);
+       w := e_width;
+       h := e_height;
+       draw_pedal_e;
+       currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
+       w := P_width;
+       h := pedalh;
+       draw_pedal_P;
+       set_char_box(0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
+               0, pedalh#);
+fet_endchar;
+
+
 fet_endgroup("pedal")