% -*- 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 % % Voor Cup % Kerning % % Pe = -0.034 pedalh == -0.07 staff-space % ed = -0.27 pedalh == -0.53 staff-space fet_begingroup("pedal") pedalpha = 40; pedbeta = 25; penh#=0.7stafflinethickness#; penw#=4penh#; %penw#=penh#; define_pixels (penh,penw); pedalh# = 2staff_space#; pedalbh# = 4/7pedalh#; 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; path p; bulb = 4/3penw; pickup pencircle scaled penh; penpos 1 (bulb, 180); penpos 2 (bulb, 0); penpos 3 (penh, 0); penpos 4 (penw, 0); z0 = (1/2w, h - 1/2w); z1 = (1/2w, h-1/2bulb); z2 = z1; z3 = (x1, y1-penw); z4 = (x1, y3-2penh); 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 fet_endchar; % skip + and , % code := 44; % - = 45 fet_beginchar("Pedal dash", "-", "pedal-dash") set_char_box(0, 3penw#, 0, pedalbh#); pickup pencircle scaled penh; penpos 1 (penw, 60); penpos 2 (penw, 60); z1l = (0, 2/3h - 1/2penw); z2r = (w, y1l + 1.2penw); penlabels (1,2); penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40}; fet_endchar; fet_beginchar("Pedal dot", ".", "pedal-dot") set_char_box(0, penw#, 0, penw#); pickup pencircle scaled penw; draw (1/2penw,1/2penw); fet_endchar; def draw_pedal_P = begingroup; clearxy; pickup pencircle scaled penh; penpos 1 (penh, 0); penpos 2 (penw, 55); penpos 3 (penw, pedalpha); penpos 4 (1.2penh, -pedalpha); penpos 5 (penh, -pedalpha); penpos 6 (penh, 180-pedalpha); penpos 7 (2penh, 180-pedalpha); penpos 8 (penh, 90); penpos 9 (4/3penw,50); penpos 10 (1.4penw,50); penpos 11 (penh, 90+pedalpha); z1r = (0.6w, h); x2l = x1l - penw; y2 = 0.7h; x3r = x2l + 2penw; y3r = 0.4h; z4l = z5r + 1/4(z3r - z5r); x5 = 1/4w; y5r = 0; z6 = z5; z7 = z6r + 1/3(z8r - z6r); z8r = z5r + 3/5(z3r - z5r); x9l = x10l - penh; y9l = 1/4penh; x10l = w - tand (90-pedalpha)*y11l; y10l = 1/4penh; x11l = w; 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 ..z4e..tension 1.5 ..z5e..z6e..tension 1.5 ..z7e..tension 1.5 ..z8e{right}..tension 1.5 ..z9e{dir -pedalpha} ..z10e..tension 2.5..z11e; penpos 12 (penh, 0); penpos 13 (penw, -90-pedbeta); penpos 14 (penh, 90); penpos 15 (penw, -90+pedbeta); penpos 16 (penh, 180+pedbeta); z12 = (5/9x1, y2); z13l = (1/2x12r, y15r); z14r = z1r; z15l = (1/2[x16,w], y2l + 0.5penw); x16 = 1/4[x1, w]; y16r = y2r; penlabels (12,13,14,15,16); 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)}; endgroup; enddef; def draw_pedal_d = begingroup; clearxy; 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 = (2/3w, pedalbh); z2l = (1/3w, 1/2pedalbh); z3l = (x1l, 0); z4 = (w - 1/2penw, 1/2pedalbh + penh); x5r = 0; 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)}; endgroup; enddef; def draw_pedal_e = begingroup; clearxy; pickup pencircle scaled penh; penpos 1 (penh, pedalpha-90); penpos 2 (penh, pedalpha-90); penpos 3 (3/5penw, pedalpha); penpos 4 (1.2penh, 90+pedalpha); penpos 5 (2/3penw, 180); penpos 6 (penw, 180+pedalpha); penpos 7 (2/3penw, -90-20); penpos 8 (penh, pedalpha-90); z1l = (0, 1/5pedalh); z2 = z1 + dir pedalpha * penw; z3 = (3/5w, 8/9h); z4 = (2/9w, y3); x5r = 0; y5 = y2; x6 = 3/8w; y6r = 1/2penh; z7l = (x6l+penh, y6l); x8r = w; y8 = 1/5pedalh; penlabels (1,2,3,4,5,6,7,8); penstroke z1e{dir pedalpha} ..z2e{dir pedalpha}.. tension 1.1 %urg ..z3e..tension 1.05 ..z4e..tension 1.1 ..z5e..tension 1.5 ..z6e{dir -pedalpha}..tension 1.1 ..z7e.. tension 2.5 ..z8e; endgroup; enddef; % code := 79; % P = 80 fet_beginchar("Pedal P", "P", "pedal-P") set_char_box(0, 5/6pedalh#, 0, pedalh#); draw_pedal_P; fet_endchar; % code := 99; % d = 100 fet_beginchar("Pedal d", "d", "pedal-d") set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#); draw_pedal_d; fet_endchar; fet_beginchar("Pedal e", "e", "pedal-e") 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", "pedal-Ped") 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")