2 % feta-custodes.mf -- implement custos symbols
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);
24 fet_beginchar("Custos Hufnagel", "hufnagel", "hufnagel")
26 a_b:=1.54; % b_h*a_b/a_w = wd/ht
35 set_char_box(0, wd#, ht#/2, ht#/2);
36 black_notehead_width# := wd#;
38 save rh_width, rh_height, rh_edge; % rhombus dimensions
39 rh_width#=0.7ht#; % ht*tan(35)
41 rh_edge#=0.61ht#; % (ht/2)/cos(35)
43 define_pixels(rh_width, rh_height, rh_edge);
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);
54 fet_beginchar("Reverse Custos Hufnagel", "rhufnagel", "rhufnagel")
56 a_b:=1.54; % b_h*a_b/a_w = wd/ht
65 set_char_box(0, wd#, ht#/2, ht#/2);
66 black_notehead_width# := wd#;
68 save rh_width, rh_height, rh_edge; % rhombus dimensions
69 rh_width#=0.7ht#; % ht*tan(35)
71 rh_edge#=0.61ht#; % (ht/2)/cos(35)
73 define_pixels(rh_width, rh_height, rh_edge);
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);
90 fet_beginchar("Custos Med.", "medicaea", "medicaea")
92 a_b := 1.54; % b_h*a_b/a_w = wd/ht
97 ht# = noteheight# * mag;
101 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
102 black_notehead_width# := wd#;
104 define_pixels(ht, wd);
107 pickup pencircle xscaled blot_diameter yscaled 1.0ht;
109 z2 = z1 + (1.0wd - blot_diameter/2, 0);
113 pickup pencircle scaled stafflinethickness;
114 z3 = (1.0wd - stafflinethickness/2, 0.0ht);
115 z4 = z3 + (0, +1.0ht);
121 fet_beginchar("Reverse Custos Med.", "rmedicaea", "rmedicaea")
123 a_b := 1.54; % b_h*a_b/a_w = wd/ht
127 save a, beta, ht, wd;
128 ht# = noteheight# * mag;
132 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
133 black_notehead_width# := wd#;
135 define_pixels(ht, wd);
138 pickup pencircle xscaled blot_diameter yscaled 1.0ht;
140 z2 = z1 + (1.0wd - blot_diameter/2, 0);
144 pickup pencircle scaled stafflinethickness;
145 z3 = (1.0wd - stafflinethickness/2, 0.0ht);
146 z4 = z3 + (0, -1.0ht);
153 % Editio Vaticana style
157 fet_beginchar("Custos Ed. Vat.", "vaticana", "vaticana")
159 a_b := 1.54; % b_h*a_b/a_w = wd/ht
163 save a, beta, ht, wd;
164 ht# = noteheight# * mag;
168 set_char_box(0, wd#, ht#/2, ht#/2);
169 black_notehead_width# := wd#;
171 define_pixels(ht, wd);
172 pickup pencircle scaled stafflinethickness;
174 z1 = (0.0wd, +0.05ht);
175 z2 = (1.0wd + 0.5stafflinethickness, 0.0ht);
178 penstroke z1e{z2 - z1} .. {right}z2e;
187 fet_beginchar("Reverse Custos Ed. Vat.", "rvaticana", "rvaticana")
189 a_b := 1.54; % b_h*a_b/a_w = wd/ht
193 save a, beta, ht, wd;
194 ht# = noteheight# * mag;
198 set_char_box(0, wd#, ht#/2, ht#/2);
199 black_notehead_width# := wd#;
201 define_pixels(ht, wd);
202 pickup pencircle scaled stafflinethickness;
204 z1 = (0.0wd, -0.05ht);
205 z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
208 penstroke z1e{z2 - z1} .. {right}z2e;
222 fet_beginchar("Custos Mensural", "mensural", "mensural")
224 a_b:=1.54; % b_h*a_b/a_w = wd/ht
228 save a, beta, ht, wd;
233 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
234 black_notehead_width# := wd#;
236 define_pixels(ht, wd);
237 pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated -35;
244 draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
248 fet_beginchar("Reverse Custos Mensural", "rmensural", "rmensural")
250 a_b:=1.54; % b_h*a_b/a_w = wd/ht
254 save a, beta, ht, wd;
259 set_char_box(0, wd#, ht#/2, ht#/2); % width intentionally too small
260 black_notehead_width# := wd#;
262 define_pixels(ht, wd);
263 pickup pencircle xscaled stafflinethickness yscaled 0.4ht rotated +35;
270 draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
273 fet_endgroup("custodes");
274 define_pixels(black_notehead_width);