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