+
+code := 111;
+
+save serif_thick;
+serif_thick# = 1.1 stafflinethickness#;
+define_blacker_pixels (serif_thick);
+med_thick = round (1.5 stafflinethickness);
+
+
+
+% forte f, grabbed from Ed Breitkopf Mozart horn concerto 3.
+%
+% NOTES:
+%
+% * the bulbs are open.
+%
+% * blotting around the serif
+%
+%
+%
+% TODO: insert blots around the serif
+%
+%
+%
+slant_angle = 20;
+
+
+code := 101;
+fet_beginchar("dynamic f", "f", "dynf");
+ set_char_box (0, 1.25 ex#, descender#, ex# + ascender#);
+
+ save left_angle, right_angle;
+ save serif_length, serif_excentricity;
+ save f_thick;
+ save bulb_thick, bulb_diam, fill_up;
+ save p;
+ path p;
+ bulb_diam = 7.5 / 40 ex;
+ bulb_thick = 8.5/40 ex;
+ fill_up = 1.5 serif_thick;
+ save slant;
+ left_angle = slant_angle - 6;
+ right_angle = slant_angle - 3;
+ f_thick = 7/16 ex;
+ serif_length = 0.96 ex;
+ serif_excentricity = 0.01 ex;
+
+ z1 = (0.375 ex, - serif_thick);
+ y2 = y1 + ex;
+ z2l = z1 + whatever*dir (90 - left_angle);
+ penpos2 (f_thick, 0);
+
+ y3l = y1 + ex + ascender;
+ x3l = x1 + 1 ex;
+ penpos3 (med_thick, -90);
+ penpos4 (bulb_thick, -20);
+ z3r = whatever [z4r,z4l];
+
+ x4l - x3l = 1/10 ex;
+
+ penpos5(bulb_thick, -45);
+ x5r = 0.1 [x4l, x4r];
+ y5l = y4l - bulb_diam;
+
+ z6 = z2r + whatever* dir (90 - right_angle);
+ y6 = y1 + 3/8 ex;
+
+ x7 = x1 - 1/4 ex;
+ y7r = y1 -descender;
+ penpos7(med_thick, -90);
+
+ penpos8 (bulb_thick, 160);
+ x8l = x7l - 1/10 ex;
+ z7l = whatever [z8r,z8l];
+
+ penpos9 (bulb_thick, 135);
+ x9r = 0.1 [x8l, x8r];
+ y9l = y8l + bulb_diam;
+ labels(1,6,9);
+ penlabels(2, 3,4,5, 7, 8,9);
+
+ p := z1 --- z2l
+ .. tension 1.1
+ .. z3l{right} .. z4r{down}
+ .. z5r{left} .. z5l{up}
+ .. tension 0.8
+ .. z4l{up} .. z3r{left}
+ .. tension 1.1
+ .. z2r --- z6 .. tension 1.25 .. z7r{left}
+ .. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8
+ .. z8l{down} .. z7l{right} .. cycle;
+ pickup pencircle scaled 1;
+ fill p;
+% draw p;
+
+ pickup pencircle scaled 1.1 serif_thick;
+ (rt x13) - (lft x14) = serif_length;
+ y13 = y14;
+ y14 = y2;
+ 0.5 [x13, x14] = x2 + serif_excentricity;
+
+ draw z13 .. z14;
+
+ penlabels(16);
+ labels(13,14,15);
+fet_endchar;
+
+
+save slant;
+slant := ypart (dir(20));
+
%
% piano p, grabbed from Ed Breitkopf Mozart horn concerto 3.
%
%
%
-code := 111;
save slant;
-slant := 20;
-currenttransform := identity;
+slant := ypart (dir(slant_angle));
+currenttransform := currenttransform slanted slant;
-save serif_thick;
-serif_thick# = 1.1 stafflinethickness#;
-define_blacker_pixels (serif_thick);
-med_thick = round (1.5 stafflinethickness);
-
fet_beginchar("dynamic p", "p", "dynp")
%
% TODO w really is 13/12 ex
pair updir;
path serif,q,p;
-
- updir := dir (90 - slant );
+ save my_slant_angle;
+ my_slant_angle = 0;
+ updir := dir (90 - my_slant_angle );
twiddle_thick = med_thick;
cheek_medium = 1/6 ex;
straigh_len = 0.5 ex;
stem_thick = 2/6 ex;
- cheek_thick = 11/32 ex;
+ cheek_thick = 13/32 ex;
cheek_width = 0.72 ex;
left_serif_protude = 18/60 ex;
right_serif_protude= 15/60 ex;
penpos2 (cheek_medium, 90 - slant );
penpos3 (cheek_medium, 90 - slant);
-% x4r - x4l = cheek_thick;
- penpos4 (cheek_thick, -slant);
+ x4r - x4l = cheek_thick;
+ penpos4 (whatever, 0);
penpos5 (cheek_medium, -55);
penpos6 (stem_thick, 0);
penpos17 (straigh_len, 90 -slant);
- z17 = z4l;
+ whatever [z17l, z17r] = z4l;
+ y17 = 7/16 ex;
x6l = 0;
y6l = - descender + serif_thick/2;
- x1l = x6l;
+ z1l = z6l - whatever *dir (90 - my_slant_angle + 20 );
y1r = 0.5 ex;
y2r = ex;
z7 = whatever * updir + z6l;
y3r = ex;
z3l = 0.58 [(stem_thick, -descender), (stem_thick + cheek_width - cheek_thick, -descender)] + whatever * updir;
- y4r = 1/3 ex;
+ y4r = 1/3 ex;
z4r = whatever*updir + (stem_thick+ cheek_width, -descender);
z5l = whatever*updir + z3l;
y5l = 1/12 ex;
z9 = z6r + whatever*updir;
- y9 = y5l;
+ y9 = .2 [y5l, y5r];
p :=
z2r{right} .. {dir( -60)}z8 & z8{dir 35} .. z3r{right}
- .. tension 0.9 .. z4r{-updir} .. z5r{left} .. z9
+ .. tension 1.0 .. z4r{-updir} .. z5r{left} .. z9
& z9 -- z6r -- z6l -- z7{updir}
.. z2l{left} .. tension 1.2 ..
% z1r & z1r -- z1l & z1l
save inner_tension;
inner_tension = 1.4;
q :=
- z17l --- z17r .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle;
+ z17l .. tension 1.5 .. z17r .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle;
unfill q;
penlabels (1, 2, 3, 4, 5, 6, 17);
draw z14{-(direction 0.85 of serif)} .. z15{updir};
fet_endchar;
-% forte f, grabbed from Ed Breitkopf Mozart horn concerto 3.
-%
-% NOTES:
-%
-% * the bulbs are open.
-%
-% * blotting around the serif
-%
-%
-%
-% TODO: insert blots around the serif
-%
-%
-%
-
-code := 101;
-fet_beginchar("dynamic f", "f", "dynf");
- set_char_box (0, 1.25 ex#, descender#, ex# + ascender#);
-
- save left_angle, right_angle;
- save serif_length, serif_excentricity;
- save f_thick;
- save bulb_thick, bulb_diam, fill_up;
- save p;
- path p;
- bulb_diam = 7.5 / 40 ex;
- fill_up = 1.5 serif_thick;
- left_angle = slant - 6;
- right_angle = slant - 3;
- f_thick = 3/8 ex;
- bulb_thick = 8/40 ex;
- serif_length = 0.96 ex;
- serif_excentricity = 0.01 ex;
-
- z1 = (0.375 ex, - serif_thick);
- y2 = y1 + ex;
-
- z2l = z1 + whatever*dir (90 - left_angle);
- penpos2 (f_thick, 0);
-
- y3l = y1 + ex + ascender;
- x3l = x1 + 1 ex;
- penpos3 (med_thick, -90);
- penpos4 (bulb_thick, -20);
- z3r = whatever [z4r,z4l];
-
- x4l - x3l = 1/10 ex;
-
- penpos5(bulb_thick, -45);
- x5r = 0.1 [x4l, x4r];
- y5l = y4l - bulb_diam;
-
- z6 = z2r + whatever* dir (90 - right_angle);
- y6 = y1 + 3/8 ex;
-
- x7 = x1 - 1/4 ex;
- y7r = y1 -descender;
- penpos7(med_thick, -90);
-
- penpos8 (bulb_thick, 160);
- x8l = x7l - 1/10 ex;
- z7l = whatever [z8r,z8l];
-
- penpos9 (bulb_thick, 135);
- x9r = 0.1 [x8l, x8r];
- y9l = y8l + bulb_diam;
- labels(1,6,9);
- penlabels(2, 3,4,5, 7, 8,9);
-
- p := z1 --- z2l
- .. tension 1.1
- .. z3l{right} .. z4r{down}
- .. z5r{left} .. z5l{up}
- .. tension 0.8
- .. z4l{up} .. z3r{left}
- .. tension 1.1
- .. z2r --- z6 .. tension 1.25 .. z7r{left}
- .. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8
- .. z8l{down} .. z7l{right} .. cycle;
- pickup pencircle scaled 1;
- fill p;
-% draw p;
-
- pickup pencircle scaled 1.1 serif_thick;
- (rt x13) - (lft x14) = serif_length;
- y13 = y14;
- y14 = y2;
- 0.5 [x13, x14] = x2 + serif_excentricity;
-
- draw z13 .. z14;
-
- penlabels(16);
- labels(13,14,15);
-fet_endchar;
-
%
% NOTES:
%
% Doesn't seem worth the trouble of writing a macro.
%
code := 108;
+
fet_beginchar("dynamic m", "m", "dynm");
set_char_box (0, 1.3 ex#, 0, 1.0 ex#);
path p;
i_thick := 21 / 80 ex;
- i_angle := 20;
+ i_angle := 0;
idir := dir(90- i_angle);
- i_left_space = 16/80 ex;
+ i_left_space = 18/80 ex;
i_twiddle_thick = serif_thick;
- i_twiddle_start_y = 1/2 ex;
- i_twiddle_start_angle = 20;
+ i_twiddle_start_y = 8/16 ex;
+ i_twiddle_start_angle = 0;
+ center =(0,0);
bottom_blot = serif_thick;
penpos1 (i_twiddle_thick, -i_twiddle_start_angle);
- center =(0,0);
-
y1 = i_twiddle_start_y;
z1r = center - (i_left_space,0) + whatever * idir;
penpos3(i_thick, 0);
z3l = center + whatever * idir;
y4 = ypart center;
- penpos4(i_thick - bottom_blot, 0);
+ penpos4 (i_thick - bottom_blot, 0);
z4 - z3 = whatever * idir;
y2l = 1 ex;
- z2l = .25 [z3l, z3r] + whatever * idir;
- z2r = 3/4 [z1r, z3l] + whatever * idir;
+ z2l = .15 [z3l, z3r] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
y2r = y5l + 1/9 ex;
z2 = 1/2 [z2l, z2r] ;
penpos5(i_thick, 0);
z5 = z4 + whatever * idir;
y5 = 55 / 80 ex;
- p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l
- .. z4l --- z4r .. z3r --- z5r .. z2l{left} .. cycle;
+ p := simple_serif (z1l, z1r, 90) .. tension 1.2 .. z2r{right} .. z5l --- z3l
+ .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
fill p;
right_ending := z5r;
-% penlabels (1, 2, 3 , 4,5);
+ penlabels (1, 2, 3 , 4,5);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clearxy;
z4 - z3 = whatever * idir;
y2l = 1 ex;
- z2l = .25 [z3l, z3r] + whatever * idir;
- z2r = 3/4 [z1r, z3l] + whatever * idir;
+ z2l = .15 [z3l, z3r] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
y2r = y5l + 1/9 ex;
z2 = 1/2 [z2l, z2r] ;
penpos5(i_thick, 0);
p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l
- .. z4l --- z4r .. z3r --- z5r .. z2l{left} .. cycle;
+ .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle;
fill p;
right_ending := z5r;
-% penlabels (1, 2, 3 , 4,5);
+ penlabels (1, 2, 3 , 4,5);
clearxy;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i_thick := 25 / 80 ex;
- i_angle := 15;
+ i_thick := 23 / 80 ex;
+ i_angle := -7;
i_left_space := 14/80 ex;
- end_overshoot = 1/2 serif_thick;
+ end_overshoot = .25 serif_thick;
idir := dir(90- i_angle);
save end_twiddle_angle;
end_twiddle_angle := 35;
- penpos6(serif_thick, - end_twiddle_angle);
+ penpos6(.9 serif_thick, - end_twiddle_angle);
y6l = 23/80 ex + ypart center;
z6l = 1.6 [z3l, z3r] + whatever * idir;
y3l = 1/8 ex + ypart center;
y2l = 1 ex+ end_overshoot;
z2l = .08 [z3l, z3r] + whatever * idir;
- z2r = 3/4 [z1r, z3l] + whatever * idir;
+ z2r = 5/8 [z1r, z3l] + whatever * idir;
y2r = y5l + 1/9 ex;
z2 = 1/2 [z2l, z2r] ;
z8 = z7 - (0, 2 end_overshoot);
.. simple_serif(z6r, z6l, 90)
.. tension 0.85
.. z3r --- z5r
- .. tension 1.09
+ .. tension 1.2
.. z2l{left} .. cycle;
% pickup pencircle scaled 1;
% draw p;
fill p;
right_ending := z5r;
-% penlabels (1, 2, 3 , 4,5,6,7, 8);
+ penlabels (1, 2, 3 , 4,5,6,7, 8);
clearxy;
fet_endchar;
%
% (c) 1997--2002 Jan Nieuwenhuizen <janneke@gnu.org>
+
+%
+% TODO all the invocation of flare_path are weird --
+% the horizontal tangents should be more at the center of the
+% glyph.
+%
+
fet_begingroup("number")
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)
+%
+
+%
+% The basic idea, is to put a really bulb shaped ending at
+% an angle of 45 degrees with the normal ending.
+% the length can be controlled using flare_len and flare_thick.
+def number_flare_path(expr pos,alpha,beta,line,flare,
+
+ move_away_to,
+ turn_to,
+ away_from_start_pos, direction) =
+ begingroup;
+ clearxy;
+ save flare_thick, flare_len;
+
+ flare_thick= 0.7 flare;
+ flare_len = 0.9 * 0.75 flare;
+ save taille;
+ taille = -0.05 flare;
+
+
+ penpos1(line,180+beta+alpha);
+ z1r=pos;
+
+ z2r = z1r + move_away_to *dir (alpha) + (line + turn_to) * dir(alpha+beta);
+ penpos2(flare_thick, alpha + 0.45 beta);
+ penpos3(flare_thick, alpha + 0.5 beta);
+
+ z3 = 0.5 [z2l,z2r] + flare_len* dir (alpha + 3/2 beta);
+
+ z4 = z2l + taille * dir (alpha);
+ penlabels(1,2,3,4);
+ pickup pencircle;
+
+ save p;
+ path p;
+ p := z1r{dir(alpha)}
+ .. super_curvelet (z1r, z2r, 0.73, -1)
+ .. z2r{dir(180+alpha-beta)}.. z3r{dir(alpha+180)}
+ ..z3l{dir(180+alpha+beta)}
+
+ ..z4{dir(180+alpha+beta)}
+ .. super_curvelet (z4, z1l, 0.69, 1)
+ ..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;
z3r=(w,1/2[0,y1]);
penpos4(hair,-90);
z4r=(x2,0);
- penpos5(7/8thick,180);
- z5r=(0,y1);
penpos6(hair,90);
z6r=(w-flare,h);
penpos7(7/8thick,180);
penlabels(1,2,3,4,5,6,7,8,9,10,11);
- % TODO: use super_curvelet for stuff connected to flare_path.
-
save t; t=tense;
fill z7{right}..z2r{right}..tension t..z3r{down}
..tension t..z4r{left}
- ..tension t..z7r{up}..tension t..
- flare_path (z6r,0,-90,hair,flare, 1)
+ ..tension t..z7r{up}
+ .. super_curvelet(z7r, z6r, 0.76, 1)
+ .. flare_path (z6r,0,-90,hair,flare, 1)
+
..tension t..z7l{down}..z10l{up}..cycle;
unfill z2l{right}..tension t..z3l{down}..tension t
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);
..{dir(180+beta)}z1l..cycle;
penpos4(thick,0);
- z4r=(w-thin/2,.72h);
+ z4r=(w-thin/2, .71 h);
penpos5(thin,90);
- z5r=(1/2hair+flare,h);
+ y5r = h;
+ x5r = 1/2 hair + 1.0 flare + flare_start* flare;
+
penlabels(1,2,3,4);
penlabels(5,6);
save t; t=tense;
- fill z1l{dir(beta)}..tension t..z4r{up}
- ..tension t..
- flare_path(z5r,180,90,thin,flare,1)
- ..z4l{down}..tension t
+
+ save p;
+ path p ;
+ p := z1l{dir(beta)}..tension t..z4r{up}
+ .. number_flare_path(z5r,180,90,thin, flare,
+ x5r - 1/2 hair,
+ .22 h,
+ flare_start* flare, 1)
+ .. z4l{down}..tension t
..{dir(180+beta)}z1r..cycle;
+
+ pickup pencircle scaled 1;
+% draw p;
+ fill p;
+
fet_endchar;
fet_beginchar("Numeral 3", "3", "three")
pickup pencircle scaled 1;
% draw
fill
- flare_path (z1l, 180, 90, hair, 7/8 flare, -1) ..tension t..
- z2l{down}..z7r{dir(180+alpha)}
+ flare_path (z1l, 180, 90, hair, 7/8 flare, -1)
+ .. super_curvelet(z1l, z2l, 0.76, -1)
+ .. z2l{down}..z7r{dir(180+alpha)}
..z7l{dir(-alpha)}..z5r{down}..tension t..
flare_path (z6r, 180, -90, hair, flare, 1) ..tension t..
save beta; beta=45;
save t; t=tense;
fill z8r{dir(beta)}..z9r{right}..tension t..z10r{down}
- ..tension t..
- flare_path(z11r,180,-90,hair,flare, 1)
+ .. super_curvelet(z10r, z11r, 0.76, 1)
+ .. flare_path(z11r,180,-90,hair,flare, 1)
..z11l{right}..tension t..z10l{up}..tension t
..z9l{left}..z8l{dir(180+beta+10)}..cycle;