]> git.donarmstrong.com Git - lilypond.git/blob - mf/parmesan-custodes.mf
release: 1.5.29
[lilypond.git] / mf / parmesan-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, 2002 Juergen Reuter <reuter@ipd.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
106         % head
107         pickup pencircle xscaled blot_diameter yscaled 1.0ht;
108         z1 = (0.0wd, 0.0ht);
109         z2 = z1 + (1.0wd - blot_diameter/2, 0);
110         draw z1 .. z2;
111
112         % stem
113         pickup pencircle scaled stafflinethickness;
114         z3 = (1.0wd - stafflinethickness/2, 0.0ht);
115         z4 = z3 + (0, +1.0ht);
116         draw z3 .. z4;
117 fet_endchar;
118
119
120 % stem down
121 fet_beginchar("Reverse Custos Med.", "rmedicaea", "rmedicaea")
122         save b_h, a_w;
123         a_b := 1.54; % b_h*a_b/a_w = wd/ht
124         b_h := 0.85;
125         a_w := 1.09;
126
127         save a, beta, ht, wd;
128         ht# = noteheight# * mag;
129         2beta# = ht# * b_h;
130         a# = beta# * a_b;
131         wd# = 0.4a# / a_w;
132         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
133         black_notehead_width# := wd#;
134
135         define_pixels(ht, wd);
136
137         % head
138         pickup pencircle xscaled blot_diameter yscaled 1.0ht;
139         z1 = (0.0wd, 0.0ht);
140         z2 = z1 + (1.0wd - blot_diameter/2, 0);
141         draw z1 .. z2;
142
143         % stem
144         pickup pencircle scaled stafflinethickness;
145         z3 = (1.0wd - stafflinethickness/2, 0.0ht);
146         z4 = z3 + (0, -1.0ht);
147         draw z3 .. z4;
148 fet_endchar;
149
150
151 %%%%%%%%
152 %
153 % Editio Vaticana style
154 %
155
156 % stem up
157 fet_beginchar("Custos Ed. Vat.", "vaticana", "vaticana")
158         save b_h, a_w;
159         a_b := 1.54; % b_h*a_b/a_w = wd/ht
160         b_h := 0.85;
161         a_w := 1.09;
162
163         save a, beta, ht, wd;
164         ht# = noteheight# * mag;
165         2beta# = ht# * b_h;
166         a# = beta# * a_b;
167         wd# = 0.4a# / a_w;
168         set_char_box(0, wd#, ht#/2, ht#/2);
169         black_notehead_width# := wd#;
170
171         define_pixels(ht, wd);
172         pickup pencircle scaled stafflinethickness;
173
174         z1 = (0.0wd, +0.05ht);
175         z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
176         penpos1(0.5ht, 90);
177         penpos2(0.5ht, 90);
178         penstroke z1e{z2 - z1} .. {right}z2e;
179
180         z3=(1.0wd, +0.0ht);
181         z4=(1.0wd, +1.0ht);
182         draw z3 -- z4;
183 fet_endchar;
184
185
186 % stem down
187 fet_beginchar("Reverse Custos Ed. Vat.", "rvaticana", "rvaticana")
188         save b_h, a_w;
189         a_b := 1.54; % b_h*a_b/a_w = wd/ht
190         b_h := 0.85;
191         a_w := 1.09;
192
193         save a, beta, ht, wd;
194         ht# = noteheight# * mag;
195         2beta# = ht# * b_h;
196         a# = beta# * a_b;
197         wd# = 0.4a# / a_w;
198         set_char_box(0, wd#, ht#/2, ht#/2);
199         black_notehead_width# := wd#;
200
201         define_pixels(ht, wd);
202         pickup pencircle scaled stafflinethickness;
203
204         z1 = (0.0wd, -0.05ht);
205         z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
206         penpos1(0.5ht, 90);
207         penpos2(0.5ht, 90);
208         penstroke z1e{z2 - z1} .. {right}z2e;
209
210         z3=(1.0wd, -0.0ht);
211         z4=(1.0wd, -1.0ht);
212         draw z3 -- z4;
213 fet_endchar;
214
215
216 %%%%%%%%
217 %
218 % Mensural style
219 %
220
221 % stem up
222 fet_beginchar("Custos Mensural", "mensural", "mensural")
223         save b_h,a_w;
224         a_b:=1.54; % b_h*a_b/a_w = wd/ht
225         b_h:=0.85;
226         a_w:=1.09;
227
228         save a, beta, ht, wd;
229         ht# =noteheight#;
230         2beta#=ht#*b_h;
231         a# = beta#*a_b;
232         wd# = 2a# / a_w;
233         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
234         black_notehead_width# := wd#;
235
236         define_pixels(ht, wd);
237         pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated -35;
238         z1=(0.0wd,-0.2ht);
239         z2=(0.2wd,+0.2ht);
240         z3=(0.4wd,-0.2ht);
241         z4=(0.6wd,+0.2ht);
242         z5=(0.8wd,-0.2ht);
243         z6=(1.6wd,+1.4ht);
244         draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
245 fet_endchar;
246
247 % stem down
248 fet_beginchar("Reverse Custos Mensural", "rmensural", "rmensural")
249         save b_h,a_w;
250         a_b:=1.54; % b_h*a_b/a_w = wd/ht
251         b_h:=0.85;
252         a_w:=1.09;
253
254         save a, beta, ht, wd;
255         ht# =noteheight#;
256         2beta#=ht#*b_h;
257         a# = beta#*a_b;
258         wd# = 2a# / a_w;
259         set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
260         black_notehead_width# := wd#;
261
262         define_pixels(ht, wd);
263         pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated +35;
264         z1=(0.0wd,+0.2ht);
265         z2=(0.2wd,-0.2ht);
266         z3=(0.4wd,+0.2ht);
267         z4=(0.6wd,-0.2ht);
268         z5=(0.8wd,+0.2ht);
269         z6=(1.6wd,-1.4ht);
270         draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
271 fet_endchar;
272
273 fet_endgroup("custodes");
274 define_pixels(black_notehead_width);
275