]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-klef.mf
patch::: 0.1.31: pats!
[lilypond.git] / mf / feta-klef.mf
index 56903d7f8ecd7b2bcd6b2f449f725e9ecc60e64b..2e9d1ff8c2ef241071d2bf3edf4d966e79451aa6 100644 (file)
@@ -3,21 +3,71 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% 
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>,
+% Jan Nieuwenhuizen <jan@digicash.com>
 
 fet_begingroup("klef");
 
-
 def draw_staff(expr first, last)=
        pickup pencircle scaled stafflinethickness;
        for i:= first step 1 until last:
                draw (- interline, i* interline) .. (4 interline, i* interline);
        endfor
+       enddef;
+
+def draw_c_clef (expr reduction) = 
+       save hair, norm, reduced_il;
+       reduced_il#=interline#*reduction;
+       norm#:=2/3reduced_il#;
+       hair#:=1/6norm#;
+       define_pixels (hair,norm,reduced_il);
+       set_char_box (0, 11/4interline#, 2 reduced_il#, 2 reduced_il#);
+       % huh, what's y-zero?
+       draw_block ((0,-d), (1/2reduced_il,h));
+       draw_block ((1/2reduced_il+stafflinethickness,-d), 
+         (1/2reduced_il+2stafflinethickness,h));
+       
+       save xoff;
+       xoff=1/2reduced_il+2hair;
+       penpos1(hair,-90);
+       z1l=(xoff+norm+hair/2,h);
+       penpos2(norm-hair,180);
+       z2l=(w,h/2);
+       penpos3(hair,90);
+       z3=(((w-xoff)/2)+xoff,2hair);
+       penpos4(hair,90);
+       z4=(xoff+hair+1/2norm+hair,y3);
+
+       penpos6(hair,-90);
+       z6r=(xoff+norm+hair,-d);
+
+       save t; t=0.833;
+       save p; path p;
+       p = z4r{right}..z3r{right}..tension t..z2r{up}
+               ..z1r{left}..z1l{right}..z2l{down}
+               ..z3l{left}..z4l{left};
+       pickup pencircle scaled 1pt#;
+       % boehoe, howto?
+%      draw p..(p yscaled -1)..cycle;
+       fill p..cycle;
+       fill (p yscaled -1)..cycle;
+       penlabels (1,2,3,4);
+
+       % ugh, should be bulb, not flare
+       draw_flare(z1l,180,90,hair,norm);
+       draw_flare(z6r,180,-90,hair,norm+hair);
+       enddef;
+
+fet_beginchar ("C clef", "ugh_alto", "ugh_altoclef")
+       if test = 1:
+               draw_staff (-1,3);
+       fi;
+       draw_c_clef (1.0);
+fet_endchar;
 
- enddef;
-
-
+fet_beginchar ("C clef", "ugh_alto_change", "ugh_caltoclef")
+       draw_c_clef (.8);
+fet_endchar;
 
 %
 % Inspired by Baerenreiter and Breitkopf