2 % parmesan-custodes.mf -- implement ancient custodes
4 % source file of LilyPond's pretty-but-neat music font
6 % (c) 2000--2002 Juergen Reuter <reuter@ipd.uka.de>
9 save black_notehead_width;
10 numeric black_notehead_width;
12 fet_begingroup ("custodes")
14 noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
15 define_pixels(noteheight);
26 fet_beginchar("Custos Hufnagel", "hufnagel", "hufnagel")
28 a_b:=1.54; % b_h*a_b/a_w = wd/ht
37 set_char_box(0, wd#, ht#/2, ht#/2);
38 black_notehead_width# := wd#;
40 save rh_width, rh_height, rh_edge; % rhombus dimensions
41 rh_width#=0.7ht#; % ht*tan(35)
43 rh_edge#=0.61ht#; % (ht/2)/cos(35)
45 define_pixels(rh_width, rh_height, rh_edge);
47 xscaled stafflinethickness
48 yscaled rh_edge rotated -35;
49 z1=(0.5rh_width,+0.25rh_height);
50 z2=(1.0rh_width,-0.25rh_height);
51 z3=(2.0rh_width,+0.50rh_height);
56 fet_beginchar("Reverse Custos Hufnagel", "rhufnagel", "rhufnagel")
58 a_b:=1.54; % b_h*a_b/a_w = wd/ht
67 set_char_box(0, wd#, ht#/2, ht#/2);
68 black_notehead_width# := wd#;
70 save rh_width, rh_height, rh_edge; % rhombus dimensions
71 rh_width#=0.7ht#; % ht*tan(35)
73 rh_edge#=0.61ht#; % (ht/2)/cos(35)
75 define_pixels(rh_width, rh_height, rh_edge);
77 xscaled stafflinethickness
78 yscaled rh_edge rotated +35;
79 z1=(0.5rh_width,-0.25rh_height);
80 z2=(1.0rh_width,+0.25rh_height);
81 z3=(2.0rh_width,-0.50rh_height);
92 fet_beginchar("Custos Med.", "medicaea", "medicaea")
94 a_b := 1.54; % b_h*a_b/a_w = wd/ht
99 ht# = noteheight# * mag;
103 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
104 black_notehead_width# := wd#;
106 define_pixels(ht, wd);
109 pickup pencircle xscaled blot_diameter yscaled 1.0ht;
111 z2 = z1 + (1.0wd - blot_diameter/2, 0);
115 pickup pencircle scaled stafflinethickness;
116 z3 = (1.0wd - stafflinethickness/2, 0.0ht);
117 z4 = z3 + (0, +1.0ht);
123 fet_beginchar("Reverse Custos Med.", "rmedicaea", "rmedicaea")
125 a_b := 1.54; % b_h*a_b/a_w = wd/ht
129 save a, beta, ht, wd;
130 ht# = noteheight# * mag;
134 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
135 black_notehead_width# := wd#;
137 define_pixels(ht, wd);
140 pickup pencircle xscaled blot_diameter yscaled 1.0ht;
142 z2 = z1 + (1.0wd - blot_diameter/2, 0);
146 pickup pencircle scaled stafflinethickness;
147 z3 = (1.0wd - stafflinethickness/2, 0.0ht);
148 z4 = z3 + (0, -1.0ht);
155 % Editio Vaticana style
159 fet_beginchar("Custos Ed. Vat.", "vaticana", "vaticana")
161 a_b := 1.54; % b_h*a_b/a_w = wd/ht
165 save a, beta, ht, wd;
166 ht# = noteheight# * mag;
170 set_char_box(0, wd#, ht#/2, ht#/2);
171 black_notehead_width# := wd#;
173 define_pixels(ht, wd);
174 pickup pencircle scaled stafflinethickness;
176 z1 = (0.0wd, +0.05ht);
177 z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
180 penstroke z1e{z2 - z1} .. {right}z2e;
189 fet_beginchar("Reverse Custos Ed. Vat.", "rvaticana", "rvaticana")
191 a_b := 1.54; % b_h*a_b/a_w = wd/ht
195 save a, beta, ht, wd;
196 ht# = noteheight# * mag;
200 set_char_box(0, wd#, ht#/2, ht#/2);
201 black_notehead_width# := wd#;
203 define_pixels(ht, wd);
204 pickup pencircle scaled stafflinethickness;
206 z1 = (0.0wd, -0.05ht);
207 z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
210 penstroke z1e{z2 - z1} .. {right}z2e;
224 fet_beginchar("Custos Mensural", "mensural", "mensural")
226 a_b:=1.54; % b_h*a_b/a_w = wd/ht
230 save a, beta, ht, wd;
235 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
236 black_notehead_width# := wd#;
238 define_pixels(ht, wd);
239 pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated -35;
246 draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
250 fet_beginchar("Reverse Custos Mensural", "rmensural", "rmensural")
252 a_b:=1.54; % b_h*a_b/a_w = wd/ht
256 save a, beta, ht, wd;
261 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
262 black_notehead_width# := wd#;
264 define_pixels(ht, wd);
265 pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated +35;
272 draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
275 fet_endgroup ("custodes")