fet_begingroup("klef"); def draw_bass_clef(expr reduction, center) = save thinness, left_shoot, reduced_il; save left_fat, right_fat, dot_size, dot_sep; save hip_factor; left_shoot = 0.3; left_fat = .3; right_fat = .5; dot_size = .4; dot_sep = 1.2; hip_factor = 0.95; thinness = stafflinethickness; reduced_il# = interline# * reduction; define_pixels(reduced_il); set_char_box(left_fat * reduced_il#, (1 + hip_factor + right_fat/2)* reduced_il# + (dot_sep+ 1) * dot_size *reduced_il# , 2.5 reduced_il#, 1.0 reduced_il#) z2 - z1 = (1.1 reduced_il, reduced_il); z3 = (x2 + hip_factor* reduced_il, y1); z4 - z1 = (- left_shoot * reduced_il, -2.5 reduced_il); z1extreme = z1l - ( thinness/2, 0); penpos1(left_fat* reduced_il , 0); z1r = (center, 0); z5 = (x3l + dot_sep * dot_size * interline, .5 interline); penpos3(right_fat * reduced_il, 180); penlabels(1,3); labels(2,4); pickup pencircle scaled thinness; filldraw z1r{up} .. z2{right} .. z3r{down} .. {curl 0} z4 {curl 0} .. z3l{up} .. z2{left} .. z1l{down} -- cycle; draw_bulb(1, z1r, z1extreme, 1.2 , 1.2); pickup pencircle scaled (dot_size * interline); draw z5; draw z5 yscaled -1; enddef; % % Inspired by Baerenreiter, Auf dem Strom % % FIXME: dims % FIXME: right vertical tangent seems to be lower than the F-line % FIXME: bulb curve smoothly into "long curve" on the inside % % % [Wanske] says that the extreme x point should be exactly between % the dots, but her picture shows that the extreme is ~ 0.2 ss lower def draw_bass_klef(expr reduction) = save reduced_il, left_tilt, left_thick; reduced_il# = interline# * reduction; left_tilt = 10; define_pixels(reduced_il); left_thick = .25 reduced_il; set_char_box(0, 2.7 reduced_il#, 2.5 reduced_il#, reduced_il#); x1r - x1l = left_thick; x1l = 0; y1l = 0; y2 = reduced_il; x3r = x1l + 12/7 reduced_il; x2 = .5 [x1,x3]; x3l - x3r = .48 reduced_il; y3l = -0.05 interline; x4 = x1l - stafflinethickness; y4 = -2.2 reduced_il; z5 = (x3l + 1/3 reduced_il, .5 reduced_il); penpos1(whatever, left_tilt); penpos2(1.2 stafflinethickness, -90); penpos3(whatever, 185); penpos4(stafflinethickness, 135); draw_bulb(1, z1r, z1l, .45 reduced_il, 1.0); fill z1r{up} .. z2r{right} .. tension .9 .. z3r{down} .. {curl 0} simple_serif(z4r, z4l, 90) {curl 0} .. z3l{up} .. tension .9 .. z2l{left} .. z1l{dir (-90 + left_tilt)} -- cycle; labels(2,4); penlabels(1,2,3,4); pickup pencircle scaled (1/3 reduced_il); draw z5; draw z5 yscaled -1; enddef; fet_beginchar("F clef ", "bass", "bassclef") draw_bass_klef(1.0); fet_endchar; fet_beginchar("F clef (reduced)", "bass_change", "cbassclef") draw_bass_klef(0.8); fet_endchar; fet_endgroup("klef");