]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-pendaal.mf
* mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt
[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--2003 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
24 penw# = 2penh# + 0.14 staff_space#;
25
26 define_pixels (penh,penw);
27
28 pedalh# = 2staff_space#;
29 pedalbh# = 4/7pedalh#;
30 define_pixels (pedalh,pedalbh);
31
32 % code values for own pedal font commented out
33 % code := 41;  % * = 42
34
35 fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
36         set_char_box(0, 7/9pedalh#, 0, pedalh#);
37         z0 = (1/2w, h - 1/2w);
38         save bulb, p, radius, thin;
39         path p;
40
41         thin = 0.8 stafflinethickness;
42
43         bulb + 2 radius = w;
44         0.9 thin +  bulb = (radius * pi * 2) / 8;
45
46         pickup pencircle scaled penh;
47         penpos 1 (bulb, 180);
48         penpos 2 (bulb, 0);
49         penpos 3 (thin, 0);
50
51         z1 = z0 + (0,radius);
52         z2 = z1;
53
54         save inner_r ;
55         inner_r = .45 radius ;
56
57         z4l = z0 + inner_r * dir (90 + 360/16);
58         z4r = z0 + inner_r * dir (90 - 360/16);
59
60         z4 = .5 [z4l,z4r];
61         z3 = .75 [z1,z4];
62
63
64         penlabels (1,2,3,4);
65
66         %% what is empty path? 
67         p = z3r{up} ..  z1l{up}..z2l{down}..z3l{down} .. z4l{dir (180 + 360/16)}; 
68         for i = 1 upto 7:
69                 p := p ... ((z3r{up}.. z1l{up}..z2l{down}..z3l{down}..z4l{dir (180 + 360/16)}) 
70                 rotatedaround (z0, 360/8i));
71                 endfor
72
73         p := p .. cycle;
74         fill p;
75         pickup pencircle scaled (7/8 inner_r);
76         undraw z0;
77 fet_endchar;
78
79 % skip + and ,
80
81 % code := 44;  % - = 45
82
83 fet_beginchar("Pedal dash", "-", "pedaldash")
84         set_char_box(0, 3penw#, 0, pedalbh#);
85         pickup pencircle scaled penh;
86
87         penpos 1 (penw, 60);
88         penpos 2 (penw, 60);
89         z1l = (0, 2/3h - 1/2penw);
90         z2r = (w, y1l + 1.2penw);
91         penlabels (1,2);
92         penstroke z1e{dir 40}..tension 1.2 ..z2e{dir 40};
93 fet_endchar;
94
95 fet_beginchar("Pedal dot", ".", "pedaldot")
96         set_char_box(0, penw#, 0, penw#);
97         pickup pencircle scaled penw;
98         draw (1/2penw,1/2penw);
99 fet_endchar;
100
101 def draw_pedal_P =
102         begingroup;
103         clearxy;
104         pickup pencircle scaled penh;
105
106         penpos 1 (penh, 0);
107         penpos 2 (penw, 55);
108         penpos 3 (penw, pedalpha);
109         penpos 4 (1.2penh, -pedalpha);
110         penpos 5 (penh, -pedalpha);
111         penpos 6 (penh, 180-pedalpha);
112         penpos 7 (2penh, 180-pedalpha);
113         penpos 8 (penh, 90);
114         penpos 9 (4/3penw,50);
115         penpos 10 (1.4penw,50);
116         penpos 11 (penh, 90+pedalpha);
117
118         z1r = (0.6w, h);
119         x2l = x1l - penw;
120         y2 = 0.7h;
121         x3r = x2l + 2penw;
122         y3r = 0.4h;
123         z4l = z5r + 1/4(z3r - z5r);
124         x5 = 1/4w;
125         y5r = 0;
126         z6 = z5;
127         z7 = z6r + 1/3(z8r - z6r);
128         z8r = z5r + 3/5(z3r - z5r);
129         x9l = x10l - penh;
130         y9l = 1/4penh;
131         x10l = w - tand (90-pedalpha)*y11l;
132         y10l = 1/4penh;
133         x11l = w;
134         y11 = 1/5h;
135
136         penlabels (1,2,3,4,5,6,7,8,9,10,11);
137         soft_penstroke z1e..tension 2.5 .. z2e.. tension 1.5 .. z3e ..tension 2.5
138                 ..z4e..tension 1.5
139                 ..z5e..z6e..tension 1.5
140                 ..z7e..tension 1.5
141                 ..z8e{right}..tension 1.5
142                 ..z9e{dir -pedalpha}
143                 ..z10e..tension 2.5..z11e;
144
145         penpos 12 (penh, 0);
146         penpos 13 (penw, -90-pedbeta);
147         penpos 14 (penh, 90);
148         penpos 15 (penw, -90+pedbeta);
149         penpos 16 (penh, 180+pedbeta);
150         z12 = (5/9x1, y2);
151         z13l = (1/2x12r, y15r);
152         z14r = z1r;
153         z15l = (1/2[x16,w], y2l + 0.5penw);
154         x16 = 1/4[x1, w];
155         y16r = y2r;
156
157         penlabels (12,13,14,15,16);
158         soft_penstroke z12e{down}..tension 1.1
159                 ..z13e{dir (180-pedbeta)}..tension 1.1
160                 ..z14e{right}..tension 1.1
161                 ..z15e{dir (180+pedbeta)}..tension 1.1
162                 ..z16e{dir (90+pedbeta)};
163         endgroup;
164         enddef;
165
166
167 def draw_pedal_d =
168         begingroup;
169         clearxy;
170         pickup pencircle scaled penh;
171
172         penpos 1 (penh, -70);
173         penpos 2 (3/4penw, 0);
174         penpos 3 (2penh, 90);
175         penpos 4 (penw, 190);
176         penpos 5 (penh, -10-90);
177
178         z1l = (2/3w, pedalbh);
179         z2l = (1/3w, 1/2pedalbh);
180         z3l = (x1l, 0);
181         z4 = (w - 1/2penw, 1/2pedalbh + penh);
182         x5r = 0;
183         y5l = h;
184
185         penlabels (1,2,3,4,5);
186
187         soft_penstroke z1e{dir (-70-90)}..tension 1.1
188                 ..z2e{down}..tension 1.1
189                 ..z3e{right}..tension 1.1
190                 ..z4e{dir (90+10)}..tension 1.1
191                 ..z5e{dir (180-10)};
192         endgroup;
193         enddef;
194
195 def draw_pedal_e =
196         begingroup;
197         clearxy;
198         pickup pencircle scaled penh;
199
200         penpos 1 (penh, pedalpha-90);
201         penpos 2 (penh, pedalpha-90);
202         penpos 3 (3/5penw, pedalpha);
203         penpos 4 (1.2penh, 90+pedalpha);
204         penpos 5 (2/3penw, 180);
205         penpos 6 (penw, 180+pedalpha);
206         penpos 7 (2/3penw, -90-20);
207         penpos 8 (penh, pedalpha-90);
208
209         z1l = (0, 1/5pedalh);
210         z2 = z1 + dir pedalpha * penw;
211         z3 = (3/5w, 8/9h);
212
213         z4 = (2/9w,  y3);
214
215         x5r = 0;
216         y5 = y2;
217
218         x6 = 3/8w;
219         y6r = 1/2penh;
220
221         z7l = (x6l+penh, y6l);
222
223         x8r = w;
224         y8 = 1/5pedalh;
225
226         penlabels (1,2,3,4,5,6,7,8);
227         soft_penstroke z1e{dir pedalpha}
228                 ..z2e{dir pedalpha}.. tension 1.1
229                 %urg
230                 ..z3e..tension 1.05
231                 ..z4e..tension 1.1
232                 ..z5e..tension 1.5
233                 ..z6e{dir -pedalpha}..tension 1.1
234                 ..z7e.. tension 2.5
235                 ..z8e;
236         endgroup;
237         enddef;
238
239
240 % code := 79;  % P = 80
241
242 fet_beginchar("Pedal P", "P", "pedalP")
243         set_char_box(0, 5/6pedalh#, 0, pedalh#);
244         draw_pedal_P;
245 fet_endchar;
246
247 % code := 99;  % d = 100
248
249 fet_beginchar("Pedal d", "d", "pedald")
250         set_char_box(0, 2/3pedalh#, 0, 7/8pedalh#);
251         draw_pedal_d;
252 fet_endchar;
253
254 fet_beginchar("Pedal e", "e", "pedale")
255         set_char_box(0, 2/5pedalh#, 0, pedalbh#);
256         draw_pedal_e;
257 fet_endchar;
258
259 %
260 % Han-Wen insists on having a `Ped' symbol, ready-kerned in mf.
261 % The pre 1.3.59 user-scm kerning sucks, but I'm not struck by
262 % the looks of this either.
263 %
264 fet_beginchar("Pedal Ped", "Ped", "pedalPed")
265         P_width# = 5/6pedalh#;
266         e_width# = 2/5pedalh#;
267         d_width# = 2/3pedalh#;
268         define_pixels (P_width, e_width, d_width);
269
270         e_height# = pedalbh#;
271         d_height# = 7/8pedalh#;
272         define_pixels (e_height, d_height);
273
274         % Pe = -0.034 pedalh == -0.07 staff-space
275         % ed = -0.27 pedalh == -0.53 staff-space
276         Pe_kern# = -0.034 pedalh#;
277         ed_kern# = -0.27 pedalh#;
278         define_pixels (Pe_kern, ed_kern);
279
280         w := d_width;
281         h := d_height;
282         draw_pedal_d;
283         currentpicture := currentpicture shifted (e_width + ed_kern, 0);
284         w := e_width;
285         h := e_height;
286         draw_pedal_e;
287         currentpicture := currentpicture shifted (P_width + Pe_kern, 0);
288         w := P_width;
289         h := pedalh;
290         draw_pedal_P;
291         set_char_box(0, P_width# + Pe_kern# + e_width# + ed_kern# + d_width#,
292                 0, pedalh#);
293 fet_endchar;
294
295
296 fet_endgroup("pedal")
297