2 fet_begingroup("klef");
4 def draw_bass_clef(expr reduction, center) =
5 save thinness, left_shoot, reduced_il;
6 save left_fat, right_fat, dot_size, dot_sep;
15 thinness = stafflinethickness;
18 reduced_il# = interline# * reduction;
19 define_pixels(reduced_il);
20 set_char_box(left_fat * reduced_il#,
21 (1 + hip_factor + right_fat/2)* reduced_il# +
22 (dot_sep+ 1) * dot_size *reduced_il#
23 , 2.5 reduced_il#, 1.0 reduced_il#)
25 z2 - z1 = (1.1 reduced_il, reduced_il);
26 z3 = (x2 + hip_factor* reduced_il, y1);
27 z4 - z1 = (- left_shoot * reduced_il, -2.5 reduced_il);
29 z1extreme = z1l - ( thinness/2, 0);
30 penpos1(left_fat* reduced_il , 0);
32 z5 = (x3l + dot_sep * dot_size * interline, .5 interline);
35 % [Wanske] says that the extreme x point should be exactly between
36 % the dots, but her picture shows that the extreme is ~ 0.2 ss lower
37 % hence 170 (and not 180). (.2 is a big amount, but because of
38 % the near vertical shape, it is not very clear.
40 penpos3(right_fat * reduced_il, 180);
46 pickup pencircle scaled thinness;
47 filldraw z1r{up} .. z2{right} .. z3r{down} .. {curl 0} z4 {curl 0}
48 .. z3l{up} .. z2{left} .. z1l{down} -- cycle;
50 draw_bulb(1, z1r, z1extreme, 1.2 , 1.2);
52 pickup pencircle scaled (dot_size * interline);
59 fet_beginchar("F clef", "bass", "ughbassclef")
60 draw_bass_clef(1.0, .5 interline); % .5 -> silly hack to accomodate
64 fet_beginchar("reduced F clef", "bass_change", "ughcbassclef")
65 draw_bass_clef(.8, .5 interline);