]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-nummer-code.mf
release: 1.4.13
[lilypond.git] / mf / feta-nummer-code.mf
index 1cd8e52accf5d7ce6a156f17cf601bf4029e2d9e..28bd3b7a0d60e5b3225a005194edf8f69d69e596 100644 (file)
@@ -4,7 +4,18 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 % 
-% (c) 1997--2001 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997--2002 Jan Nieuwenhuizen <janneke@gnu.org>
+
+%
+% These numbers were taken from a part that that the EJE violas played
+% 1997 -- Probably Mendelssohn's ouverture Heimkehr aus der Fremde.
+%
+
+%
+% TODO all the invocation of flare_path are weird -- 
+% the horizontal tangents should be more at the center of the 
+% glyph.
+%
 
 fet_begingroup("number")
 
@@ -12,6 +23,66 @@ define_pixels(height,thick,thick,thin,hair,flare);
 define_pixels(foot_top,foot_width);
 define_pixels(kuulleke);
 
+%
+% Yet Another Bulb Routine with smooth inside curve.
+%
+% alpha = start direction.
+% beta = which side to turn to.
+% flare = diameter of the bulb
+% line = diameter of line attachment
+% direction = is ink on left or right side (1 or -1)
+%
+
+% 
+% move_away_to = amount left (for 2) 
+% turn_to  = amount down (for  2 )
+% 
+def number_flare_path(expr pos,alpha,beta,line,flare,
+
+                       move_away_to,
+                       turn_to, taille, taille_ratio,
+                       direction) =
+       begingroup;
+       clearxy;
+
+%      z5 = z2 + 0.43* flare *dir (alpha - 1.5 beta);
+
+       z4 = (0.75 - taille)  [z2r, z2l] + whatever* dir (alpha - beta) ;
+       z4 = (taille_ratio * taille) [z3l, z3r] + whatever* dir(alpha);
+       penpos1(line,180+beta+alpha);
+       z1r=pos;
+
+       z2r = z1r + move_away_to *dir (alpha) + (line + turn_to) * dir(alpha+beta);
+       z3r = 0.5 [z2l,z2r] + 0.5 *flare *dir(alpha + beta);
+
+       penpos2(flare, alpha );
+       penpos3(flare, alpha +  beta);
+       penlabels(1, 2, 3, 4, 5);
+       pickup pencircle;
+
+       save p;
+       path p;
+       p := z1r{dir(alpha)}
+               .. z2r{dir(180+alpha-beta)}
+               .. z3r{dir(alpha+180)}
+               .. z2l{dir(alpha-beta)} 
+
+
+%%% Two versions of the curve: one with z4, the other with z5.
+%              .. z5{dir(alpha- beta/2 )}
+               ..z4{dir(180+alpha+beta)}
+               ..z1l{dir(alpha+180)};
+%      draw p ;
+       if direction = 1:
+               p
+       else:
+               reverse p
+       fi
+       endgroup
+       enddef;
+
+
+
 def calc_kuulleke(expr w,alpha) = 
        begingroup;
        save beta; beta=(alpha-90)/2;
@@ -48,7 +119,7 @@ def draw_foot(expr xpos) =
        enddef;
 
 def draw_six =
-       set_char_box(0, 2/3height#*widen, 0, height#);
+       set_char_box(0, .68  height#*widen, 0, height#);
        message "w:"&decimal w;
        message "h:"&decimal h;
 
@@ -57,26 +128,45 @@ def draw_six =
        penpos2(hair,90);
        
        z2=(w/2,y1);
-       penpos3(7/8thick,0);
+
+       penpos3 (15/16 thick,0);
        % yup, should use the path fract [] "everywhere"
-       z3r=(w,1/2[0,y1]);
+       x3r=w;
+       y3r = .5 [y4r, y2r];
        penpos4(hair,-90);
        z4r=(x2,0);
-       penpos5(7/8thick,180);
-       z5r=(0,y1);
        penpos6(hair,90);
-       z6r=(w-flare,h);
-       penpos7(7/8thick,180);
-       z7r=(0,h/2);
-       penpos10(7/8thick,180);
+       x6r = .56 w;
+       y6r = h;
+       penpos7(thick,180);
+
+       x7r=0;
+       y7r = .50 h;
+
+       penpos10(thick,180);
        z10r=(0,y3);
        penlabels(1,2,3,4,5,6,7,8,9,10,11);
-       save t; t=tense;
-       fill z7{right}..z2r{right}..tension t..z3r{down}
-               ..tension t..z4r{left}
-               ..tension t..z7r{up}..tension t..z6r{right}
-               ..z6l{left}..tension t..z7l{down}..z10l{up}..cycle;
-       draw_flare(z6r,0,-90,hair,flare);
+
+
+       save outer_t; outer_t= 0.88;
+       save t ; t := tense; 
+       fill
+%      draw
+               z7{right}..z2r{right}
+               ..tension outer_t
+               ..z3r{down}
+               ..tension outer_t
+               ..z4r{left}
+%              ..tension t
+               ..z7r{up}
+%              .. flare_path (z6r,0,-90,hair,flare, 1)
+               .. number_flare_path (z6r, 0,-90,hair,flare,
+                       w - x6r -hair/2, .16 h, 0.05, 2.5, 1)
+
+%              ..tension t
+               ..z7l{down}
+                .. {down}z10l -- cycle;
+
        unfill z2l{right}..tension t..z3l{down}..tension t
                ..z4l{left}..tension t..z10l{up}..tension t..cycle;
        enddef;
@@ -85,6 +175,10 @@ save dot_diam;
 dot_diam# = 7/8flare#;
 define_pixels(dot_diam);
 
+code := 32;
+fet_beginchar("Space", "space", "space")
+       set_char_box(0, space#,  0,height#);
+fet_endchar;
 
 code := 43;  % , = 44 
 
@@ -125,8 +219,7 @@ fet_endchar;
 code := 47; % 0 = 48
 
 fet_beginchar("Numeral 0", "0", "zero")
-%      set_char_box(0, 4/5height#*widen, 0, height#);
-       set_char_box(0, 11/15height#*widen, 0, height#);
+       set_char_box(0, 11/15height# * widen, 0, height#);
        message "w:"&decimal w;
        message "h:"&decimal h;
        penpos1(thin,90);
@@ -177,36 +270,51 @@ fet_beginchar("Numeral 1", "1", "one")
 fet_endchar;
 
 fet_beginchar("Numeral 2", "2", "two")
-       set_char_box(0, 11/15height#*widen, 0, height#);
+       set_char_box(0, 22/30 height#*widen, 0, height#);
        message "w:"&decimal w;
        message "h:"&decimal h;
        clearxy;
        save alpha; alpha=-45*widen;
        save beta; beta=85;
        save gamma; gamma=beta-10;
+       save flare_start_distance;
+
+       flare_start = 0.25 ;
        save theta; theta=20/widen;
        penpos1(hair,90+beta);
        z1=(0,0)+(1/2sqrt(2)*hair)*dir(45);
        penpos3(hair,90+gamma);
        z3=(w,thick)+(1/2sqrt(2)*hair)*dir(-135);
-       penpos2(thick,90+alpha);
-       x2-x1=x3-x2; y2=11/16thick/widen;
-       fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(gamma)}z3r
-               ..z3l{dir(180+gamma)}..{dir(180+alpha)}z2l
+       penpos2(thick, 90+alpha -15);
+       x2-x1=x3-x2;
+       y2=10/16 thick/widen;
+       fill z1r{dir(beta)}.. tension 0.9 .. {dir(alpha + 10)}z2r..{dir(gamma)}z3r
+               ..z3l{dir(180+gamma)}..{dir(180+alpha - 5)}z2l
                ..{dir(180+beta)}z1l..cycle;
 
        penpos4(thick,0);
-       z4r=(w-thin/2,.72h);
-       penpos5(thin,90);
-       z5r=(1/2hair+flare,h);
+       z4r=(w-thin/2, .71 h);
+       penpos5(hair,90);
+       y5r = h;
+       x5r = 9/20 w ;
+
        penlabels(1,2,3,4);
        penlabels(5,6);
        save t; t=tense;
-       fill z1l{dir(beta)}..tension t..z4r{up}
-               ..tension t..z5r{left}..z5l{right}
-               ..z4l{down}..tension t
+
+       save p;
+       path p ;
+       p := z1l{dir(beta)}..tension t..z4r{up}
+               .. number_flare_path(z5r,180,90,hair, 1.05 flare,
+                               x5r  - 1/2 hair,
+                               .21 h, 0.006, 0.4, 1)
+               .. z4l{down}..tension t
                ..{dir(180+beta)}z1r..cycle;
-       draw_flare(z5r,180,90,thin,flare);
+
+       pickup pencircle scaled 1;
+%      draw p;
+       fill p;
+
 fet_endchar;
 
 fet_beginchar("Numeral 3", "3", "three")
@@ -214,32 +322,66 @@ fet_beginchar("Numeral 3", "3", "three")
        message "w:"&decimal w;
        message "h:"&decimal h;
        penpos1(hair,-90);
-       z1l=(17/16thick,h);
+
+%      flare_start = 0.25 ;
+       x1l = 36/80 w;
+       y1l = h;
+       
+%      z1l=(17/16thick,h);
        penpos2(7/8thick,180);
-       z2l=(w-thick/8,3/4h+thick/16);
+       x2l= w-thick/8;
+       y2l = 3/4h + thick*  3/32; 
        penpos3(thin,90);
        z3=(w/2,h/2+1/8thick);
        penpos4(thin,90);
        z4=(5/8thick+1/2thin,y3);
        penpos5(thick,0);
-       z5r=(w,1/4h+thick/16);
+       x5r=w;
+       y5r = 17/64 h + thick/16;
+
        penpos6(hair,-90);
-       z6r=(9/8thick,0);
+
+       x6r= 37/80 w;
+       y6r = 0;
        penpos7(3/2thin,90);
-       z7=(x5,y3);
+       x7 = .83 w ;
+       y7 = y3;
        penlabels(1,2,3,4,5,6,7);
        save alpha; alpha=25;
        save t; t=tense;
-       fill z1l{right}..tension t..z2l{down}..z7r{dir(180+alpha)}
-               ..z7l{dir(-alpha)}..z5r{down}..tension t..z6r{left}
-               ..z6l{right}..tension t..z5l{up}
-               ..tension t..z3l{left}..z4l{left}
-               ..z4r{right}..z3r{right}..tension t..z2r{up}
-               ..tension t..z1r{left}..cycle;
-       draw_flare(z1l,180,90,hair,7/8flare);
-       draw_flare(z6r,180,-90,hair,flare);
+       save outer_t; outer_t := 0.93;
+       pickup pencircle scaled 1;
+
+%      draw
+       fill
+               number_flare_path (z1l, 180, 90, hair,  7/8 flare, x1l - .5 hair,
+                       .16 h, 0.06, 1.5,  -1)
+               ..tension outer_t
+               .. z2l{down}
+               .. tension outer_t
+               ..z7r{dir(180+alpha)}
+               ..z7l{dir(-alpha)}
+               .. tension outer_t 
+               ..z5r{down}
+               .. tension outer_t
+               .. number_flare_path (z6r, 180, -90, hair,  flare, x6l,
+                       .18 h, 0.06, 1.5,  1)
+
+               .. z5l{up}
+               ..tension t
+               ..z3l{left}
+               ..z4l{left}
+               ..z4r{right}
+               ..z3r{right}
+               ..tension t
+               ..z2r{up}
+               ..tension t
+               .. cycle
+;
 fet_endchar;
 
+
+       
 fet_beginchar("Numeral 4", "4", "four")
        set_char_box(0, 4/5height#*widen, 0, height#);
        message "w:"&decimal w;
@@ -283,10 +425,11 @@ fet_beginchar("Numeral 4", "4", "four")
 fet_endchar;
 
 fet_beginchar("Numeral 5", "5", "five")
-       set_char_box(0, 7/10height#*widen, 0, height#);
+       set_char_box(0, 27/40 height#*widen, 0, height#);
        message "w:"&decimal w;
        message "h:"&decimal h;
        calc_kuulleke(w-thin,0);
+
        z1=(w/2+1/8thick,h);
        save alpha; alpha=0;
        penpos5(thin,0);
@@ -303,19 +446,35 @@ fet_beginchar("Numeral 5", "5", "five")
        penpos8(thin,90);
        z8l=(x7r,y7r-1/16thick);
        penpos9(thin,90);
-       z9=(x11+3/16thick,10/16[y5,y7]);
+
+       
+       y9=10/16[y5,y7];
+       x9 = .36 [x8r, x10r] ;
+
        penpos10(thick,0);
-       z10r=(w,1/2[y9r,y11r]);
+       x10r = w+ hair/2;
+       y10r = 1/2[y9r,y11r];
        penpos11(hair,-90);
-        z11r=(9/8thick,0);
-       penlabels(8,9,10,11);
+       y11r = 0;
+       x11r = .7 [0, x10l]; 
+
+       penlabels(8,9,10,11, 12);
        save beta; beta=45;
-       save t; t=tense;
-       fill z8r{dir(beta)}..z9r{right}..tension t..z10r{down}
-               ..tension t..z11r{left}
-               ..z11l{right}..tension t..z10l{up}..tension t
+
+       save inner_t, outer_t;
+       inner_t= 1.0;
+       outer_t= .85;
+       fill z8r{dir(beta)}..z9r{right}
+               ..tension outer_t
+               ..z10r{down}
+               .. number_flare_path (z11r, 180, -90, hair,  flare, x11l,
+                       .18 h, 0.06, 1.5,  1)
+               ..z11l{right}
+               ..tension inner_t
+               ..z10l{up}
+               ..tension inner_t
                ..z9l{left}..z8l{dir(180+beta+10)}..cycle;
-       draw_flare(z11r,180,-90,hair,flare);
+
 fet_endchar;
 
 fet_beginchar("Numeral 6", "6", "six")
@@ -384,21 +543,22 @@ fet_beginchar("Numeral 8", "8", "eight")
        save alpha; alpha=60;
        save beta; beta=alpha-15;
        z1=(w/2,h/2+thick/8);
-       penpos2(hair,90+180+beta);
+       penpos2(14/8 thin,0);
        z2=(w/3,h/2+thin);
        penpos3(3/2thin,0);
        z3l=(0,h/4+thin/2);
        penpos4(hair,90);
-       z4l=(x1,0);
+
+       z4l=(x1 ,0);
        penpos5(thick,90+90+alpha);
        z5=z1+w/4*dir(alpha-90);
        penpos6(thick,90+90+alpha);
        z6=z1+(w/4-thin/2)*dir(90+alpha);
        penpos7(hair,90);
-       z7r=(x1,h);
+       z7r= (x1 + .02 w ,h);
        penpos8(3/2thin,0);
        z8r=(w-thin/2,3/4h+thin/2);
-       penpos9(hair,90+180+beta);
+       penpos9( 13/8 thin,0);
        z9=(2/3w,h/2);
        penlabels(1,2,3,4,5,6,7,8,9);
        save t; t=tense;