1 % -*- Fundamental -*- (emacs-20 mf mode mucks
2 % feta-pendaal.mf -- piano pedal markings
4 % part of LilyPond's pretty-but-neat music font
6 % source file of the Feta (not the Font-En-Tja) music font
8 % (c) 2000--2003 Jan Nieuwenhuizen <janneke@gnu.org>
14 % Pe = -0.034 pedalh == -0.07 staff-space
15 % ed = -0.27 pedalh == -0.53 staff-space
17 fet_begingroup("pedal")
22 penh#=0.7stafflinethickness#;
25 define_pixels (penh,penw);
27 pedalh# = 2staff_space#;
28 pedalbh# = 4/7pedalh#;
29 define_pixels (pedalh,pedalbh);
31 % code values for own pedal font commented out
32 % code := 41; % * = 42
34 def draw_asterisk_bulb (expr w, h, i) =
41 pickup pencircle scaled penh;
47 z0 = (1/2w, h - 1/2w);
48 z1 = (1/2w, h-1/2bulb);
54 % penstroke z1e{up}..z2e{down}..z3e{down}..z4e;
55 p = z1l{up}..z2l{down}..z3l{down}..z4l..z4r
56 ..z3r{up}..z2r{up}..z1r{down}..cycle;
57 p := p rotatedaround (z0, 360/8i);
62 fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
63 set_char_box(0, 7/9pedalh#, 0, pedalh#);
64 z0 = (1/2w, h - 1/2w);
66 draw_asterisk_bulb (w, h, i);
67 pickup pencircle scaled penw;
74 % code := 44; % - = 45
76 fet_beginchar("Pedal dash", "-", "pedaldash")
77 set_char_box(0, 3penw#, 0, pedalbh#);
78 pickup pencircle scaled penh;
82 z1l = (0, 2/3h - 1/2penw);
83 z2r = (w, y1l + 1.2penw);
85 penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
88 fet_beginchar("Pedal dot", ".", "pedaldot")
89 set_char_box(0, penw#, 0, penw#);
90 pickup pencircle scaled penw;
91 draw (1/2penw,1/2penw);
97 pickup pencircle scaled penh;
101 penpos 3 (penw, pedalpha);
102 penpos 4 (1.2penh, -pedalpha);
103 penpos 5 (penh, -pedalpha);
104 penpos 6 (penh, 180-pedalpha);
105 penpos 7 (2penh, 180-pedalpha);
107 penpos 9 (4/3penw,50);
108 penpos 10 (1.4penw,50);
109 penpos 11 (penh, 90+pedalpha);
116 z4l = z5r + 1/4(z3r - z5r);
120 z7 = z6r + 1/3(z8r - z6r);
121 z8r = z5r + 3/5(z3r - z5r);
124 x10l = w - tand (90-pedalpha)*y11l;
129 penlabels (1,2,3,4,5,6,7,8,9,10,11);
130 soft_penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
132 ..z5e..z6e..tension 1.5
134 ..z8e{right}..tension 1.5
136 ..z10e..tension 2.5..z11e;
139 penpos 13 (penw, -90-pedbeta);
140 penpos 14 (penh, 90);
141 penpos 15 (penw, -90+pedbeta);
142 penpos 16 (penh, 180+pedbeta);
144 z13l = (1/2x12r, y15r);
146 z15l = (1/2[x16,w], y2l + 0.5penw);
150 penlabels (12,13,14,15,16);
151 soft_penstroke z12e{down}..tension 1.1
152 ..z13e{dir (180-pedbeta)}..tension 1.1
153 ..z14e{right}..tension 1.1
154 ..z15e{dir (180+pedbeta)}..tension 1.1
155 ..z16e{dir (90+pedbeta)};
163 pickup pencircle scaled penh;
165 penpos 1 (penh, -70);
166 penpos 2 (3/4penw, 0);
167 penpos 3 (2penh, 90);
168 penpos 4 (penw, 190);
169 penpos 5 (penh, -10-90);
171 z1l = (2/3w, pedalbh);
172 z2l = (1/3w, 1/2pedalbh);
174 z4 = (w - 1/2penw, 1/2pedalbh + penh);
178 penlabels (1,2,3,4,5);
180 soft_penstroke z1e{dir (-70-90)}..tension 1.1
181 ..z2e{down}..tension 1.1
182 ..z3e{right}..tension 1.1
183 ..z4e{dir (90+10)}..tension 1.1
191 pickup pencircle scaled penh;
193 penpos 1 (penh, pedalpha-90);
194 penpos 2 (penh, pedalpha-90);
195 penpos 3 (3/5penw, pedalpha);
196 penpos 4 (1.2penh, 90+pedalpha);
197 penpos 5 (2/3penw, 180);
198 penpos 6 (penw, 180+pedalpha);
199 penpos 7 (2/3penw, -90-20);
200 penpos 8 (penh, pedalpha-90);
202 z1l = (0, 1/5pedalh);
203 z2 = z1 + dir pedalpha * penw;
214 z7l = (x6l+penh, y6l);
219 penlabels (1,2,3,4,5,6,7,8);
220 soft_penstroke z1e{dir pedalpha}
221 ..z2e{dir pedalpha}.. tension 1.1
226 ..z6e{dir -pedalpha}..tension 1.1
233 % code := 79; % P = 80
235 fet_beginchar("Pedal P", "P", "pedalP")
236 set_char_box(0, 5/6pedalh#, 0, pedalh#);
240 % code := 99; % d = 100
242 fet_beginchar("Pedal d", "d", "pedald")
243 set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
247 fet_beginchar("Pedal e", "e", "pedale")
248 set_char_box(0, 2/5pedalh#, 0, pedalbh#);
253 % Han-Wen insists on having a `Ped' symbol, ready-kerned in mf.
254 % The pre 1.3.59 user-scm kerning sucks, but I'm not struck by
255 % the looks of this either.
257 fet_beginchar("Pedal Ped", "Ped", "pedalPed")
258 P_width# = 5/6pedalh#;
259 e_width# = 2/5pedalh#;
260 d_width# = 2/3pedalh#;
261 define_pixels (P_width, e_width, d_width);
263 e_height# = pedalbh#;
264 d_height# = 7/8pedalh#;
265 define_pixels (e_height, d_height);
267 % Pe = -0.034 pedalh == -0.07 staff-space
268 % ed = -0.27 pedalh == -0.53 staff-space
269 Pe_kern# = -0.034 pedalh#;
270 ed_kern# = -0.27 pedalh#;
271 define_pixels (Pe_kern, ed_kern);
276 currentpicture := currentpicture shifted (e_width + ed_kern, 0);
280 currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
284 set_char_box(0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
289 fet_endgroup("pedal")