]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-pendaal.mf
release: 1.5.47
[lilypond.git] / mf / feta-pendaal.mf
1 % -*- Fundamental -*-  (emacs-20 mf mode mucks
2 % feta-pendaal.mf -- piano pedal markings
3 %
4 % part of LilyPond's pretty-but-neat music font
5 %
6 % source file of the Feta (not the Font-En-Tja) music font
7
8 % (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
9 %
10 % Voor Cup
11
12 % Kerning
13 %
14 % Pe = -0.034 pedalh == -0.07 staff-space
15 % ed = -0.27 pedalh == -0.53 staff-space
16
17 fet_begingroup("pedal")
18
19 pedalpha = 40;
20 pedbeta = 25;
21
22 penh#=0.7stafflinethickness#;
23 penw#=4penh#;
24 %penw#=penh#;
25 define_pixels (penh,penw);
26
27 pedalh# = 2staff_space#;
28 pedalbh# = 4/7pedalh#;
29 define_pixels (pedalh,pedalbh);
30
31 % code values for own pedal font commented out
32 % code := 41;  % * = 42
33
34 def draw_asterisk_bulb (expr w, h, i) =
35         begingroup;
36         clearxy;
37         save bulb, p;
38         path p;
39         bulb = 4/3penw;
40
41         pickup pencircle scaled penh;
42         penpos 1 (bulb, 180);
43         penpos 2 (bulb, 0);
44         penpos 3 (penh, 0);
45         penpos 4 (penw, 0);
46
47         z0 = (1/2w, h - 1/2w);
48         z1 = (1/2w, h-1/2bulb);
49         z2 = z1;
50         z3 = (x1, y1-penw);
51         z4 = (x1, y3-2penh);
52
53         penlabels (1,2,3,4);
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);
58         fill p;
59         endgroup;
60         enddef;
61
62 fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
63         set_char_box(0, 7/9pedalh#, 0, pedalh#);
64         z0 = (1/2w, h - 1/2w);
65         for i = 0 upto 7:
66                 draw_asterisk_bulb (w, h, i);
67                 pickup pencircle scaled penw;
68                 undraw z0;
69         endfor
70 fet_endchar;
71
72 % skip + and ,
73
74 % code := 44;  % - = 45
75
76 fet_beginchar("Pedal dash", "-", "pedaldash")
77         set_char_box(0, 3penw#, 0, pedalbh#);
78         pickup pencircle scaled penh;
79
80         penpos 1 (penw, 60);
81         penpos 2 (penw, 60);
82         z1l = (0, 2/3h - 1/2penw);
83         z2r = (w, y1l + 1.2penw);
84         penlabels (1,2);
85         penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
86 fet_endchar;
87
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);
92 fet_endchar;
93
94 def draw_pedal_P =
95         begingroup;
96         clearxy;
97         pickup pencircle scaled penh;
98
99         penpos 1 (penh, 0);
100         penpos 2 (penw, 55);
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);
106         penpos 8 (penh, 90);
107         penpos 9 (4/3penw,50);
108         penpos 10 (1.4penw,50);
109         penpos 11 (penh, 90+pedalpha);
110
111         z1r = (0.6w, h);
112         x2l = x1l - penw;
113         y2 = 0.7h;
114         x3r = x2l + 2penw;
115         y3r = 0.4h;
116         z4l = z5r + 1/4(z3r - z5r);
117         x5 = 1/4w;
118         y5r = 0;
119         z6 = z5;
120         z7 = z6r + 1/3(z8r - z6r);
121         z8r = z5r + 3/5(z3r - z5r);
122         x9l = x10l - penh;
123         y9l = 1/4penh;
124         x10l = w - tand (90-pedalpha)*y11l;
125         y10l = 1/4penh;
126         x11l = w;
127         y11 = 1/5h;
128
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
131                 ..z4e..tension 1.5
132                 ..z5e..z6e..tension 1.5
133                 ..z7e..tension 1.5
134                 ..z8e{right}..tension 1.5
135                 ..z9e{dir -pedalpha}
136                 ..z10e..tension 2.5..z11e;
137
138         penpos 12 (penh, 0);
139         penpos 13 (penw, -90-pedbeta);
140         penpos 14 (penh, 90);
141         penpos 15 (penw, -90+pedbeta);
142         penpos 16 (penh, 180+pedbeta);
143         z12 = (5/9x1, y2);
144         z13l = (1/2x12r, y15r);
145         z14r = z1r;
146         z15l = (1/2[x16,w], y2l + 0.5penw);
147         x16 = 1/4[x1, w];
148         y16r = y2r;
149
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)};
156         endgroup;
157         enddef;
158
159
160 def draw_pedal_d =
161         begingroup;
162         clearxy;
163         pickup pencircle scaled penh;
164
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);
170
171         z1l = (2/3w, pedalbh);
172         z2l = (1/3w, 1/2pedalbh);
173         z3l = (x1l, 0);
174         z4 = (w - 1/2penw, 1/2pedalbh + penh);
175         x5r = 0;
176         y5l = h;
177
178         penlabels (1,2,3,4,5);
179
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
184                 ..z5e{dir (180-10)};
185         endgroup;
186         enddef;
187
188 def draw_pedal_e =
189         begingroup;
190         clearxy;
191         pickup pencircle scaled penh;
192
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);
201
202         z1l = (0, 1/5pedalh);
203         z2 = z1 + dir pedalpha * penw;
204         z3 = (3/5w, 8/9h);
205
206         z4 = (2/9w,  y3);
207
208         x5r = 0;
209         y5 = y2;
210
211         x6 = 3/8w;
212         y6r = 1/2penh;
213
214         z7l = (x6l+penh, y6l);
215
216         x8r = w;
217         y8 = 1/5pedalh;
218
219         penlabels (1,2,3,4,5,6,7,8);
220         soft_penstroke z1e{dir pedalpha}
221                 ..z2e{dir pedalpha}.. tension 1.1
222                 %urg
223                 ..z3e..tension 1.05
224                 ..z4e..tension 1.1
225                 ..z5e..tension 1.5
226                 ..z6e{dir -pedalpha}..tension 1.1
227                 ..z7e.. tension 2.5
228                 ..z8e;
229         endgroup;
230         enddef;
231
232
233 % code := 79;  % P = 80
234
235 fet_beginchar("Pedal P", "P", "pedalP")
236         set_char_box(0, 5/6pedalh#, 0, pedalh#);
237         draw_pedal_P;
238 fet_endchar;
239
240 % code := 99;  % d = 100
241
242 fet_beginchar("Pedal d", "d", "pedald")
243         set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
244         draw_pedal_d;
245 fet_endchar;
246
247 fet_beginchar("Pedal e", "e", "pedale")
248         set_char_box(0, 2/5pedalh#, 0, pedalbh#);
249         draw_pedal_e;
250 fet_endchar;
251
252 %
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.
256 %
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);
262
263         e_height# = pedalbh#;
264         d_height# = 7/8pedalh#;
265         define_pixels (e_height, d_height);
266
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);
272
273         w := d_width;
274         h := d_height;
275         draw_pedal_d;
276         currentpicture := currentpicture shifted (e_width + ed_kern, 0);
277         w := e_width;
278         h := e_height;
279         draw_pedal_e;
280         currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
281         w := P_width;
282         h := pedalh;
283         draw_pedal_P;
284         set_char_box(0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
285                 0, pedalh#);
286 fet_endchar;
287
288
289 fet_endgroup("pedal")
290