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 penpos3(right_fat * reduced_il, 180);
41 pickup pencircle scaled thinness;
42 filldraw z1r{up} .. z2{right} .. z3r{down} .. {curl 0} z4 {curl 0}
43 .. z3l{up} .. z2{left} .. z1l{down} -- cycle;
45 draw_bulb(1, z1r, z1extreme, 1.2 , 1.2);
47 pickup pencircle scaled (dot_size * interline);
55 % Inspired by Baerenreiter, Auf dem Strom
58 % FIXME: right vertical tangent seems to be lower than the F-line
59 % FIXME: bulb curve smoothly into "long curve" on the inside
62 % [Wanske] says that the extreme x point should be exactly between
63 % the dots, but her picture shows that the extreme is ~ 0.2 ss lower
65 def draw_bass_klef(expr reduction) =
66 save reduced_il, left_tilt, left_thick;
67 reduced_il# = interline# * reduction;
70 define_pixels(reduced_il);
71 left_thick = .25 reduced_il;
73 set_char_box(0, 2.7 reduced_il#, 2.5 reduced_il#, reduced_il#);
74 x1r - x1l = left_thick;
80 x3r = x1l + 12/7 reduced_il;
82 x3l - x3r = .48 reduced_il;
83 y3l = -0.05 interline;
84 x4 = x1l - stafflinethickness;
86 z5 = (x3l + 1/3 reduced_il, .5 reduced_il);
88 penpos1(whatever, left_tilt);
89 penpos2(1.2 stafflinethickness, -90);
90 penpos3(whatever, 185);
91 penpos4(stafflinethickness, 135);
93 draw_bulb(1, z1r, z1l, .45 reduced_il, 1.0);
96 fill z1r{up} .. z2r{right} .. tension .9 .. z3r{down} .. {curl 0}
97 simple_serif(z4r, z4l, 90) {curl 0}
98 .. z3l{up} .. tension .9 .. z2l{left}
99 .. z1l{dir (-90 + left_tilt)} -- cycle;
103 pickup pencircle scaled (1/3 reduced_il);
108 fet_beginchar("F clef ", "bass", "bassclef")
111 fet_beginchar("F clef (reduced)", "bass_change", "cbassclef")
116 fet_endgroup("klef");