]> git.donarmstrong.com Git - lilypond.git/blob - mf/feta-custodes.mf
ad405ad4b116992e4b1f86f0a73018367d7a39d4
[lilypond.git] / mf / feta-custodes.mf
1 % -*-Fundamental-*-
2 % feta-custodes.mf --  implement custos symbols
3
4 % source file of LilyPond's pretty-but-neat music font
5
6 % (C) 2000 Juergen Reuter <reuterj@ira.uka.de>
7
8
9 save black_notehead_width;
10 numeric black_notehead_width;
11
12 fet_begingroup("custodes");
13
14 noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
15 define_pixels(noteheight);
16
17
18 %%%%%%%%
19 %
20 % Hufnagel style
21 %
22
23 % stem up
24 fet_beginchar("Custos Hufnagel", "hufnagel", "hufnagel")
25         save b_h,a_w;
26         a_b:=1.54; % b_h*a_b/a_w = wd/ht
27         b_h:=0.85;
28         a_w:=1.09;
29
30         save a, beta, ht, wd;
31         ht# =noteheight#;
32         2beta#=ht#*b_h;
33         a# = beta#*a_b;
34         wd# = 2a# / a_w;
35         set_char_box(0, wd#, ht#/2, ht#/2);
36         black_notehead_width# := wd#;
37
38         save rh_width, rh_height, rh_edge; % rhombus dimensions
39         rh_width#=0.7ht#; % ht*tan(35)
40         rh_height#=1.0ht#;
41         rh_edge#=0.61ht#; % (ht/2)/cos(35)
42
43         define_pixels(rh_width, rh_height, rh_edge);
44         pickup pencircle
45           xscaled stafflinethickness
46           yscaled rh_edge rotated -35;
47         z1=(0.5rh_width,+0.25rh_height);
48         z2=(1.0rh_width,-0.25rh_height);
49         z3=(2.0rh_width,+0.50rh_height);
50         draw z1 -- z2 -- z3;
51 fet_endchar;
52
53 % stem down
54 fet_beginchar("Reverse Custos Hufnagel", "rhufnagel", "rhufnagel")
55         save b_h,a_w;
56         a_b:=1.54; % b_h*a_b/a_w = wd/ht
57         b_h:=0.85;
58         a_w:=1.09;
59
60         save a, beta, ht, wd;
61         ht# =noteheight#;
62         2beta#=ht#*b_h;
63         a# = beta#*a_b;
64         wd# = 2a# / a_w;
65         set_char_box(0, wd#, ht#/2, ht#/2);
66         black_notehead_width# := wd#;
67
68         save rh_width, rh_height, rh_edge; % rhombus dimensions
69         rh_width#=0.7ht#; % ht*tan(35)
70         rh_height#=1.0ht#;
71         rh_edge#=0.61ht#; % (ht/2)/cos(35)
72
73         define_pixels(rh_width, rh_height, rh_edge);
74         pickup pencircle
75           xscaled stafflinethickness
76           yscaled rh_edge rotated +35;
77         z1=(0.5rh_width,-0.25rh_height);
78         z2=(1.0rh_width,+0.25rh_height);
79         z3=(2.0rh_width,-0.50rh_height);
80         draw z1 -- z2 -- z3;
81 fet_endchar;
82
83
84 %%%%%%%%
85 %
86 % Medicaea style
87 %
88
89 % stem up
90 fet_beginchar("Custos Med.", "medicaea", "medicaea")
91         save b_h, a_w;
92         a_b := 1.54; % b_h*a_b/a_w = wd/ht
93         b_h := 0.85;
94         a_w := 1.09;
95
96         save a, beta, ht, wd;
97         ht# = noteheight# * mag;
98         2beta# = ht# * b_h;
99         a# = beta# * a_b;
100         wd# = 0.4a# / a_w;
101         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
102         black_notehead_width# := wd#;
103
104         define_pixels(ht, wd);
105         pickup pencircle scaled stafflinethickness;
106
107         z1 = (0.0wd, +0.0ht);
108         z2 = (1.0wd + 0.5stafflinethickness, +0.0ht);
109         penpos1(1.0ht, 90);
110         penpos2(1.0ht, 90);
111         penstroke z1e{z2 - z1} .. {right}z2e;
112
113         z3=(1.0wd, +0.0ht);
114         z4=(1.0wd, +1.0ht);
115         draw z3 -- z4;
116 fet_endchar;
117
118
119 % stem down
120 fet_beginchar("Reverse Custos Med.", "rmedicaea", "rmedicaea")
121         save b_h, a_w;
122         a_b := 1.54; % b_h*a_b/a_w = wd/ht
123         b_h := 0.85;
124         a_w := 1.09;
125
126         save a, beta, ht, wd;
127         ht# = noteheight# * mag;
128         2beta# = ht# * b_h;
129         a# = beta# * a_b;
130         wd# = 0.4a# / a_w;
131         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
132         black_notehead_width# := wd#;
133
134         define_pixels(ht, wd);
135         pickup pencircle scaled stafflinethickness;
136
137         z1 = (0.0wd, +0.0ht);
138         z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
139         penpos1(1.0ht, 90);
140         penpos2(1.0ht, 90);
141         penstroke z1e{z2 - z1} .. {right}z2e;
142
143         z3=(1.0wd, -0.0ht);
144         z4=(1.0wd, -1.0ht);
145         draw z3 -- z4;
146 fet_endchar;
147
148
149 %%%%%%%%
150 %
151 % Editio Vaticana style
152 %
153
154 % stem up
155 fet_beginchar("Custos Ed. Vat.", "vaticana", "vaticana")
156         save b_h, a_w;
157         a_b := 1.54; % b_h*a_b/a_w = wd/ht
158         b_h := 0.85;
159         a_w := 1.09;
160
161         save a, beta, ht, wd;
162         ht# = noteheight# * mag;
163         2beta# = ht# * b_h;
164         a# = beta# * a_b;
165         wd# = 0.4a# / a_w;
166         set_char_box(0, wd#, ht#/2, ht#/2);
167         black_notehead_width# := wd#;
168
169         define_pixels(ht, wd);
170         pickup pencircle scaled stafflinethickness;
171
172         z1 = (0.0wd, +0.05ht);
173         z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
174         penpos1(0.5ht, 90);
175         penpos2(0.5ht, 90);
176         penstroke z1e{z2 - z1} .. {right}z2e;
177
178         z3=(1.0wd, +0.0ht);
179         z4=(1.0wd, +1.0ht);
180         draw z3 -- z4;
181 fet_endchar;
182
183
184 % stem down
185 fet_beginchar("Reverse Custos Ed. Vat.", "rvaticana", "rvaticana")
186         save b_h, a_w;
187         a_b := 1.54; % b_h*a_b/a_w = wd/ht
188         b_h := 0.85;
189         a_w := 1.09;
190
191         save a, beta, ht, wd;
192         ht# = noteheight# * mag;
193         2beta# = ht# * b_h;
194         a# = beta# * a_b;
195         wd# = 0.4a# / a_w;
196         set_char_box(0, wd#, ht#/2, ht#/2);
197         black_notehead_width# := wd#;
198
199         define_pixels(ht, wd);
200         pickup pencircle scaled stafflinethickness;
201
202         z1 = (0.0wd, -0.05ht);
203         z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
204         penpos1(0.5ht, 90);
205         penpos2(0.5ht, 90);
206         penstroke z1e{z2 - z1} .. {right}z2e;
207
208         z3=(1.0wd, -0.0ht);
209         z4=(1.0wd, -1.0ht);
210         draw z3 -- z4;
211 fet_endchar;
212
213
214 %%%%%%%%
215 %
216 % Mensural style
217 %
218
219 % stem up
220 fet_beginchar("Custos Mensural", "mensural", "mensural")
221         save b_h,a_w;
222         a_b:=1.54; % b_h*a_b/a_w = wd/ht
223         b_h:=0.85;
224         a_w:=1.09;
225
226         save a, beta, ht, wd;
227         ht# =noteheight#;
228         2beta#=ht#*b_h;
229         a# = beta#*a_b;
230         wd# = 2a# / a_w;
231         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
232         black_notehead_width# := wd#;
233
234         define_pixels(ht, wd);
235         pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated -35;
236         z1=(0.0wd,-0.2ht);
237         z2=(0.2wd,+0.2ht);
238         z3=(0.4wd,-0.2ht);
239         z4=(0.6wd,+0.2ht);
240         z5=(0.8wd,-0.2ht);
241         z6=(1.6wd,+1.4ht);
242         draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
243 fet_endchar;
244
245 % stem down
246 fet_beginchar("Reverse Custos Mensural", "rmensural", "rmensural")
247         save b_h,a_w;
248         a_b:=1.54; % b_h*a_b/a_w = wd/ht
249         b_h:=0.85;
250         a_w:=1.09;
251
252         save a, beta, ht, wd;
253         ht# =noteheight#;
254         2beta#=ht#*b_h;
255         a# = beta#*a_b;
256         wd# = 2a# / a_w;
257         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
258         black_notehead_width# := wd#;
259
260         define_pixels(ht, wd);
261         pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated +35;
262         z1=(0.0wd,+0.2ht);
263         z2=(0.2wd,-0.2ht);
264         z3=(0.4wd,+0.2ht);
265         z4=(0.6wd,-0.2ht);
266         z5=(0.8wd,+0.2ht);
267         z6=(1.6wd,-1.4ht);
268         draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
269 fet_endchar;
270
271 fet_endgroup("custodes");
272 define_pixels(black_notehead_width);
273