%*****************************************************************************
% Copyright (c) 1989 by N. N. Billawala
%*****************************************************************************
% number.mf numerals
% 10 characters
iff OK "0": "The number 0";
beginchar("0",num_width_c#+c_mono#,cap#,0);
if mono<>0:save circ; circ1=circ2=circ3=1.05; fi
top z1=(h_stress*w,h+ov_t.uc)//;
lft z2=(0,(1-v_stress)*h)//;
bot z3=((1-h_stress)*w,-ov_b.uc)//;
rt z4=(w,v_stress*h)//;
circular_shape(y1,y3,x2,x4,minor_curve.uc,bowlstem.uc);
showpoints(1,2,3,4);
adjust(.5num_fit_c#+m_a*c_mfit#,.5num_fit_c#+m_a*c_mfit#);
show_character; endchar;
iff OK "1": "The number 1";
beginchar("1",num_width_a#+b_mono#,cap#,0);
save_num(terminal_thickness)=max(.75thin_stem.uc,.3stem.uc);
bot z40=(.5w,0); multpos(1,4,40)(stem.uc,0);
lft x4l=round x40l; bot y4=0;
top z1=(x4,h)//;
onaline(1l,4l)(2l,3l); y3l=y3r=cap_bracket_h;
onaline(1r,4r)(2r,3r); y2r=y2l=max(h-cap_bracket_h,y3l);
y2l:=min(y2l,h-terminal_thickness-(stem.uc*sind max(25-.5oblique,0)));
p1=fullserif(z4,z1,z3l,z3r,1.25hs,1.25hs)--
terminalserif.l(z1,z4,z2l,z2r,1.5pt,max(25-.5oblique,0))--cycle;
showpoints(1,2,3,4);
adjust(.5num_fit_a#+m_a*b_mfit#,.5num_fit_a#+m_a*b_mfit#);
show_character; endchar;
def character_points=
iff OK "2": "The number 2";
beginchar(50+alt8,num_width_b#+b_mono#,cap#,0);
twotension:=10;
z1=(.05w,.9h)//;
rt z3r=(w,if inflection_two:.75h else:.7h fi)//;lft z3l=(z3r-(bowlstem.uc,0));
top y2r=bot y2l+max(1,major_curve.uc)=h+ov_t.uc;
good_x_for(2r)(z1,z3r,.5)a; good_x_for(2l)(z1+(bulb_thickness,0),z3l,.5)b;
top lft z5l=(0,max(1,.9stem.uc))//;
z4l=.5[z5l,z3l];
bot lft z6l=(0,0); z6r=z6l+(0,apex.uc)//;
bot rt z8=(.95w,0);
bot y7l=top y7r-max(1,.9stem.uc)=0;
good_x_for(7l)(z6l,z8,.5)c; good_x_for(7r)(z5r,z8-(tip_thickness,0),.5)d;
ref1=(z6r-(0,max(1,.8thin_stem.uc)))
..tension atleast twotension and 1..z3r{upward};
ref2=z3l{downward}..tension atleast 1 and twotension..z6r;
ref3=(-1,y7r)--(w,y7r);
ref4=z3l{downward}...z4l...z6r{downward}...z6l;
if inflection_two:
rt z5r=ref4 intersectionpoint ref3+(1.3thin_stem.uc,0); z4r=.5[z5r,z3r];
p1=(bulb.tl(z1,z2l,z2r,cs,bulb_thickness,90)soft i_t
ref4 if softpath:)softjoin(z6l fi
--arm.br(z8,z7r,z7l,.5as,.75tip_thickness,90-arm_angle+.5oblique)soft--
z5r if softpath:)softjoin(z5r fi
{upward}..z4r...z3r{upward} o_t z2r{left})--cycle;
else:
rt z5r=ref1 intersectionpoint ref3;
(t1,t2)=ref1 intersectiontimes ref3;
p1=(bulb.tl(z1,z2l,z2r,cs,bulb_thickness,90)soft i_t
ref2 soften(z6r,z6l)
arm.br(z8,z7r,z7l,.5as,.75tip_thickness,90-arm_angle+.5oblique)soft--z5r
if softpath:)softjoin(z5r fi
--subpath(t1,infinity)of ref1 o_t z2r{left})--cycle;
fi
showpoints(1,2,3,4,5,6,7,8);
adjust(.5num_fit_b#+m_a*b_mfit#,.5num_fit_b#+m_a*b_mfit#);
show_character; endchar;
enddef;
def number_two=save a,b;
vardef a=condition(inflection_two)t; testing_codes; character_points; enddef;
vardef b=condition(inflection_two)f; testing_codes; character_points; enddef;
if test_all_characters:a;b;else:if inflection_two:a;else:b;fi fi
enddef;
number_two; save number_two;
def three_diagonal_top(expr addtocode)=
iff OK "3": "The number 3";
beginchar(51+alt6+addtocode,num_width_b#+b_mono#,cap#,0);
top z1=(0w,h)//;
lft z9=(0,.05h)//;
bot lft z10r=(.05w,-ov_b.uc)//;
pos10(minor_curve.uc,-90-oblique);
z5=if open_tail:(.2w,.57h)//;else:(.3w,.55h)//; fi
z3r=(round(.97w),h-apex.uc)//;
z40=(.97w,h)//;
x5r=x5+.45thin_stem.uc*(cosd (90-oblique));
x5l=x5r-.9thin_stem.uc*(cosd (90-oblique));
top y2r=bot y2l+max(1,.9stem.uc)=h;
top y6r=top y5r=round(y5+.45thin_stem.uc);
bot y6l=bot y5l=y5r-max(1,.9thin_stem.uc);
bot y8r=top y8l-minor_curve.uc=-ov_b.uc;
z4l=z5r;
if open_tail:rt z7r=(w,.65[y8r,y6r])//;
lft z7l=(x7r-stem.uc,.65[y8l,y6l]);
else:rt z7r=(w,v_stress[y8r,y6r])//;
lft z7l=(x7r-stem.uc,v_stress[y8l,y6l]); fi
numeric theta[],phi[],d[];
d1=thin_stem.uc;
theta1=angle(length(z3r-z5r) +-+ d1,d1);
phi1=angle(z3r-z5r)-theta1;
multpos(3,4)(thin_stem.uc,phi1-90);
onaline(3l,4l)(41); y41=y2l;
onaline(3r,4r)(42); y42=y5r;
good_x_for(2r)(z1,z40,.4)a; good_x_for(2l)(z1+(bulb_thickness,0),z41,.4)b;
good_x_for(6r)(z42,z7r,.2)c; good_x_for(6l)(z5l,z7l,.3)d;
good_x_for(8r)(z9,z7r,.4)e; good_x_for(8l)(z9+(bulb_thickness,0),z7l,.4)f;
p1=(arm.tl(z1,z2l,z2r,.5as,.5tip_thickness,90)soft
soften(z41,z5r,z5l) z6l{right} i_t z7l{downward} i_t
if open_tail:{-(dir (7*h/w))}z10l--z10r{dir(7*h/w)}
else:bulb.bl(z9,z8l,z8r,.75cs,.75bulb_thickness,90) fi
o_t z7r{upward} o_t z6r{left} soften(z42,z3r,z40) z2r)--cycle;
showpoints(1,2,3,4,5,6,7,8,9,10,40,41,42);
adjust(.5num_fit_b#+m_a*b_mfit#,.5num_fit_b#+m_a*b_mfit#);
show_character; endchar;
enddef;
def three_round_top(expr addtocode)=
iff OK "3": "The number 3";
beginchar(51+alt6+addtocode,num_width_b#+b_mono#,cap#,0);
z1=(.05w,.95h)//;
lft z9=(0,.05h)//;
bot lft z10r=(.05w,-ov_b.uc)//;
pos10(minor_curve.uc,-90-oblique);
z5=(.3w,.55h)//;
x5r=x5+.45thin_stem.uc*(cosd (90-oblique));
x5l=x5r-.9thin_stem.uc*(cosd (90-oblique));
top y2r=bot y2l+minor_curve.uc=h+ov_t.uc;
top y4r=top y5r=round(y5+.45thin_stem.uc);
bot y4l=bot y5l=y5r-max(1,.9thin_stem.uc);
y6=.75[y5l,y5r];
bot y8r=top y8l-major_curve.uc=-ov_b.uc;
rt z3r=(round(.97w),v_stress[y6,y2r])//;
lft z3l=(x3r-stem.uc,v_stress[y5r,y2l]);
if open_tail:rt z7r=(w,.65[y8r,y6])//;
lft z7l=(x7r-stem.uc,.65[y8l,y4l]);
else:rt z7r=(w,v_stress[y8r,y6])//;
lft z7l=(x7r-stem.uc,v_stress[y8l,y4l]); fi
z3=.5[z3l,z3r];
good_x_for(2r)(z1,z3r,.5)a; good_x_for(2l)(z1+(bulb_thickness,0),z3l,.5)b;
good_x_for(4r)(z5r,z3l,.4)c; good_x_for(4l)(z5l,z7l,.4)d;
good_x_for(6)(z5,z3,.6)e;
good_x_for(8r)(z9,z7r,.4)g; good_x_for(8l)(z9+(bulb_thickness,0),z7l,.4)f;
p1=(bulb.tl(z1,z2l,z2r,1.2cs,.75bulb_thickness,90)soft i_t
z3l{downward} i_t z4r{left} soften(z5r,z5l) z4l{right} i_t z7l{downward}
i_t if open_tail:{-(dir (7*h/w))}z10l--z10r{dir(7*h/w)}
else:bulb.bl(z9,z8l,z8r,.75cs,.75bulb_thickness,90) fi
o_t z7r{upward} o_t
z6{left}--(z6+(0,epsilon){right} o_t z3r{upward} o_t z2r{left}))--cycle;
showpoints(1,2,3,4,5,6,7,8,9);
adjust(.5num_fit_b#+m_a*b_mfit#,.5num_fit_b#+m_a*b_mfit#);
show_character; endchar;
enddef;
vardef number_three=save first,second,third,fourth,addtocode;
addtocode:=-1;
vardef first=condition(diagonal_three)t; condition(open_tail)t;
testing_codes; three_diagonal_top(0); enddef;
vardef second=condition(diagonal_three)t; condition(open_tail)f;
testing_codes; three_diagonal_top(incr addtocode); enddef;
vardef third=condition(diagonal_three)f; condition(open_tail)t;
testing_codes; three_round_top(incr addtocode+alt7); enddef;
vardef fourth=condition(diagonal_three)f; condition(open_tail)f;
testing_codes; three_round_top(incr addtocode); enddef;
if test_all_characters:first;second;third;fourth;
elseif diagonal_three and open_tail:first;
elseif diagonal_three and (not open_tail):second;
elseif (not diagonal_three) and open_tail:third;
elseif (not diagonal_three) and (not open_tail):fourth; fi
enddef;
number_three; save number_three,three_diagonal_top,three_round_top;
iff OK "4": "The number 4";
beginchar(52+alt10,num_width_e#+.5*(d_mono#+e_mono#),cap#,0);
min_limit(join_radius)(.5minor_curve.uc);
top rt z11r=(round(.82w),h)//; multpos(11,13)(max(1,stem.uc),0);
rt z13r=(round(.82w),0);
bot lft z4l=(0,round(.2h))//; pos4(apex.uc,90-apex_angle);
onaline(11r,13r)(10r,12r,23,25);
onaline(11l,13l)(12l,20,22,24,26,27);
y12l=y12r=min(cap_bracket_h,y4l); y20=y11r-max(thin_stem.uc,.3stem.uc,1);
y10=if open_four:.75h else:h fi; y27=y10+thin_stem.uc-stem.uc;
y24=y25=y4l; top y23=bot y24+max(1,.9thin_stem.uc);
pos10(apex.uc,0-oblique);
z3l=z4r;
z1r=if open_four:(x13l,h-.5thin_stem.uc)// else:z20 fi; %z1r controls top of 4
multpos(1,2,3)(thin_stem.uc,constant_angle(z1r,z3l,thin_stem.uc));
onaline(1r,3r)(2r,21); y21=y22=y23; y2r=notch_pos[y20,y21];
onaline(2l,3l)(28); y28=y11r; y26=.8[y22,y20];
rt z5=(w,y4l)//;
ref1=z26--z20--z2r;
if open_four:
p1=(z27--fullserif(z13,z11,z12l,z12r,.75hs,.75hs)
soften (z10r,z10) z27)--cycle;
p2=(arm.br(z5,z23,z25,.15as,.25tip_thickness,90-arm_angle+.5oblique)
soften(z21,z1r,z1l,z4r,z4l) z25)--cycle;
else:
p1=(z2l soften(z4r,z4l,z24) fullserif(z13,z11,z12l,z12r,.75hs,.75hs)--z25
if softpath:)softjoin(z25 fi
--arm.br(z5,z23,z25,.15as,.25tip_thickness,90-arm_angle+.5oblique)
soften(z23,z11r,z28) z2l)--cycle;
p1'=(upnotch(ref1,angle(z20-z22),notch_length.uc) soften(z21,z22) z26)
--cycle;
fi
showpoints(1,2,3,4,5,10,11,12,13,20,21,22,23,24,25,26,27,28);
adjust(.5num_fit_e#+m_f*.5(d_mfit#+e_mfit#),
.5num_fit_e#+m_ff*.5(d_mfit#+e_mfit#));
show_character; endchar;
def character_points=
iff OK "5": "The number 5";
beginchar(53+alt6,num_width_b#+b_mono#,cap#,0);
top z1=(.9w,h)//;
top z3l=(round .05w,h)//; multpos(3,5)(thin_stem.uc,0-oblique);
z5l=(round .05w,if open_tail:.6h else:.55h fi)//;
lft z9=(0,.05h)//;
bot lft z10r=(.05w,-ov_b.uc)//;
pos10(minor_curve.uc,-90-oblique);
top y2r=bot y2l+max(1,.9stem.uc)=h;
bot y4l=top y4r-max(1,.9thin_stem.uc)=bot y5l;
bot y8r=top y8l-minor_curve.uc=-ov_b.uc;
if open_tail:rt z7r=(w,.65[y8r,y4r])//;lft z7l=(x7r-stem.uc,.65[y8l,y4l]);
else:rt z7r=(w,v_stress[y8r,y4r])//;
lft z7l=(x7r-stem.uc,v_stress[y8l,y4l]); fi
onaline(3r,5r)(40,41); y40=y2l; y41=y4r;
good_x_for(2r)(z3l,z1,.5)a; good_x_for(2l)(z40,z1-(tip_thickness,0),.5)b;
good_x_for(4r)(z41,z7r,.4)c; good_x_for(4l)(z5l,z7l,.55)d;
good_x_for(8r)(z9,z7r,.4)e; good_x_for(8l)(z9+(bulb_thickness,0),z7l,.4)f;
if open_tail:
p1=(arm.tr(z1,z2l,z2r,.5as,.5tip_thickness,90)soft soften(z3l,z5l)
z4l{right} i_t z7l{downward} i_t
{-(dir (7*h/w))}z10l--z10r{dir(7*h/w)} o_t
z7r{upward} o_t z4r{left} soften(z41,z40) z2l)--cycle;
else:
p1=(arm.tr(z1,z2l,z2r,.5as,.5tip_thickness,90)soft soften(z3l,z5l)
z4l{right} i_t z7l{downward} i_t z8l{left} i_t
bulb.bl(z9,z8l,z8r,.75cs,.75bulb_thickness,90)
o_t z7r{upward} o_t z4r{left} soften(z41,z40) z2l)--cycle;
fi
showpoints(1,2,3,4,5,7,8,9,10,40,41);
adjust(.5num_fit_b#+m_a*b_mfit#,.5num_fit_b#+m_a*b_mfit#);
show_character; endchar;
enddef;
vardef number_five= save a,b;
vardef a=condition(open_tail)t; testing_codes; character_points; enddef;
vardef b=condition(open_tail)f; testing_codes; character_points; enddef;
if test_all_characters:a;b; else:if open_tail:a; else:b; fi fi
enddef;
number_five; save number_five;
def character_points=
iff OK "6": "The number 6";
beginchar(54+alt6,num_width_c#+c_mono#,cap#,0);
save_pairs(good_dir);
top z0r=(.9w,h+ov_t.uc)//; pos0(max(1,.9minor_curve.uc),90+taper_angle);
z1=(.85w,.98h)//;
lft z3r=(0,(1-v_stress)*h)//; rt z3l=z3r+(stem.uc,0);
top y2r=bot y2l+minor_curve.uc=h+ov_t.uc;
good_x_for(2l)(z3l,z1-(bulb_thickness,0),.7)a; good_x_for(2r)(z3r,z1,.7)b;
bot y4r=top y4l-minor_curve.uc=-ov_b.uc;
y6r=y6l+max(1,round(.9minor_curve.uc))=.7h;
rt z5r=(w,v_stress[y4r,y6r])//;
lft z5l=(x5r-stem.uc,v_stress[y4r,y6r]);
good_x_for(4l)(z3l,z5l,.5)c; good_x_for(4r)(z3r,z5r,.5)d;
y100=(.5ductal)[y6l,y3l];
ref1=z4l{left} i_t z3l{upward} i_t if open_tail:z0l else: z2l{right} fi;
z7l=ref1 intersectionpoint ((0,y5r)..(w,y5r)//);
z7r=ref1 intersectionpoint ((0,y100)..(w,y100)//);
(t1,t2)=ref1 intersectiontimes ((0,y100)..(w,y100)//);
good_x_for(6l)(z7l,z5l,.52)e; good_x_for(6r)(z7r,z5r,.5)f;
ref2=z6r{left}...z7r;
if (angle(direction 1 of ref2)<=-90-oblique)and
(angle(direction 1 of ref2)>=-180-oblique):good_dir7=(0,0);
else: good_dir7=dir(-90-oblique);fi
p1'=z6l{left} i_t z7l{downward} i_t z4l{right} i_t z5l{upward} i_t cycle;
p1=if open_tail:(z7r+(0,eps){upward} i_t z0l--z0r
else:(subpath(t1,infinity) of ref1--
bulb.tr(z1,z2l,z2r,.75cs,.75bulb_thickness,90)soft fi
o_t z3r{downward} o_t
z4r{right} o_t z5r{upward} o_t z6r{left}...z7r{good_dir7})--cycle;
showpoints(0,1,2,3,4,5,6,7);
adjust(.5num_fit_c#+m_a*c_mfit#,.5num_fit_c#+m_a*c_mfit#);
show_character; endchar;
enddef;
def number_six=save a,b;
vardef a=condition(open_tail)t; testing_codes; character_points; enddef;
vardef b=condition(open_tail)f; testing_codes; character_points; enddef;
if test_all_characters:a;b;else:if open_tail:a;else:b;fi fi
enddef;
number_six; save number_six;
iff OK "7": "The number 7";
beginchar("7",num_width_b#+b_mono#,cap#,0);
top z1=(0,h)//;
z3r=(w,h-apex.uc)//;
z40=(w,h)//;
z5l=(.05w,0);
z6=(x5l+bowlstem.uc,0);
top y2r=bot y2l+max(1,.9stem.uc)=h;
numeric theta[],phi[],d[];
d1=thin_stem.uc;
theta1=angle(length(z3r-z5l) +-+ d1,d1);
phi1=angle(z3r-z5l)-theta1;
multpos(3,5)(thin_stem.uc,phi1-90);
onaline(3l,5l)(4l,41); y41=y2l; y4l=.5[y5l,y41];
z4r=.5[z3r,z5r];
good_x_for(2r)(z1,z40,.5)a; good_x_for(2l)(z1+(tip_thickness,0),z41,.5)b;
p1=(arm.tl(z1,z2l,z2r,.5as,.75tip_thickness,90-arm_angle+oblique)soft--z41
if softpath:)softjoin( else:--fi
flex(z41,(z4l-(.05w,0)),z5l))softjoin(z5l--z6)softjoin
(flex(z6,(z4r-(.05w,0)),z3r))
if softpath:softjoin(z3r--z40)softjoin else:--fi (z40--z2r)--cycle;
showpoints(1,2,3,4,5,6,40,41);
adjust(.7num_fit_b#+m_e*b_mfit#,.3num_fit_b#+m_ee*b_mfit#);
show_character; endchar;
iff OK "8": "The number 8";
beginchar("8",num_width_c#+d_mono#,cap#,0);
bot z6r=(.5w,-ov_b.uc); top y6l=bot y6r+thin_stem.lc;
top z2l=(x6r,h+ov_t.uc)//; bot y2r=top y2l-thin_stem.lc;
z4=z8=.55[z6r,z2l];
rt z1l=(round(.95w),.5[y4,y2l])//; lft z1r=rt z1l-(thin_stem.lc,0);
lft z3l=(round(.05w),.5[y4,y2l])//; rt z3r=lft z3l+(stem.lc,0);
z1=.5[z1l,z1r]; z3=.5[z3l,z3r];
rt z5r=(w,.5[y6r,y4])//; lft z5l=rt z5r-(stem.lc,0); z5=.5[z5l,z5r];
lft z7r=(0,.5[y6r,y4])//; rt z7l=lft z7r+(thin_stem.lc,0); z7=.5[z7l,z7r];
good_x_for(2r)(z3r,z1r,.5)a;
good_x_for(6l)(z7l,z5l,.5)b;
ref5=z3..z4..z5; ref6=z1..z8..z7;
pos4(max(1,.95stem.lc),
(angle(postcontrol 1 of ref5-precontrol 1 of ref5))+90);
pos8(max(1,thin_stem.lc),
(angle(postcontrol 1 of ref6-precontrol 1 of ref6))+90);
ref1=z2r{left} i_t z3r{downward} i_t z4r o_t z5r{downward} o_t z6r{left};
ref2=z6r{left} o_t z7r{upward} o_t z8l i_t z1r{upward} i_t z2r{left};
ref3=z2l{right} o_t z1l{downward} o_t z8r i_t z7l{downward} i_t z6l{right};
ref4=z6l{right} i_t z5l{upward} i_t z4l o_t z3l{upward} o_t z2l{right};
(t1,t2)=ref1 intersectiontimes ref2; (t3,t4)=ref1 intersectiontimes ref3;
(t5,t6)=ref3 intersectiontimes ref4; (t7,t8)=ref2 intersectiontimes ref4;
p1 =(subpath(0,t4-eps)of ref3)--(subpath(t3+eps,infinity)of ref1)--
(subpath(0,t7-eps)of ref2)--(subpath(t8+eps,infinity)of ref4)--cycle;
p1'=(subpath(0,t1-eps)of ref1)--(subpath(t2+eps,infinity)of ref2)--cycle;
p2'=(subpath(0,t6-eps)of ref4)--(subpath(t5+eps,infinity)of ref3)--cycle;
showpoints(1,2,3,5,6,7,41,42,43,44);
adjust(.5num_fit_c#+m_a*d_mfit#,.5num_fit_c#+m_a*d_mfit#);
show_character; endchar;
def character_points=.
iff OK "9": "The number 9";
beginchar(57+alt6,num_width_c#+c_mono#,cap#,0);
save_pairs(good_dir);
bot z0r=(.1w,-ov_b.uc)//; pos0(max(1,.9minor_curve.uc),-90+taper_angle);
z1=(.15w,.02h)//;
rt z3r=(w,v_stress*h)//; lft z3l=z3r-(stem.uc,0);
bot y2r=top y2l-minor_curve.uc=-ov_b.uc;
good_x_for(2l)(z3l,z1+(bulb_thickness,0),.7)a; good_x_for(2r)(z3r,z1,.7)b;
top y4r=bot y4l+minor_curve.uc=h+ov_t.uc;
y6r=y6l-max(1,round(.9minor_curve.uc))=.3h;
lft z5r=(0,(1-v_stress)[y4r,y6r])//;
rt z5l=(x5r+stem.uc,(1-v_stress)[y4r,y6r]);
good_x_for(4l)(z3l,z5l,.5)c; good_x_for(4r)(z3r,z5r,.5)d;
y100=(.5ductal)[y6l,y3l];
ref1=z4l{right} i_t z3l{downward} i_t if open_tail:z0l else:z2l{left} fi;
z7l=ref1 intersectionpoint ((0,y5r)..(w,y5r)//);
z7r=ref1 intersectionpoint ((0,y100)..(w,y100)//);
(t1,t2)=ref1 intersectiontimes ((0,y100)..(w,y100)//);
good_x_for(6l)(z7l,z5l,.52)e; good_x_for(6r)(z7r,z5r,.5)f;
ref2=z6r{right}...z7r;
if (angle(direction 1 of ref2)<=90-oblique)and
(angle(direction 1 of ref2)>=-oblique):good_dir7=(0,0);
else: good_dir7=dir(90-oblique);fi
p1'=z6l{right} i_t z7l{upward} i_t z4l{left} i_t z5l{downward} i_t cycle;
p1 =if open_tail:(z7r-(0,eps){downward} i_t z0l--z0r
else:(subpath(t1,infinity) of ref1--
bulb.bl(z1,z2l,z2r,.75cs,.75bulb_thickness,90)soft fi
o_t z3r{upward} o_t
z4r{left} o_t z5r{downward} o_t z6r{right}...z7r{good_dir7})--cycle;
showpoints(0,1,2,3,4,5,6,7);
adjust(.5num_fit_c#+m_a*c_mfit#,.5num_fit_c#+m_a*c_mfit#);
show_character; endchar;
enddef;
def number_nine=save a,b;
vardef a=condition(open_tail)t; testing_codes; character_points; enddef;
vardef b=condition(open_tail)f; testing_codes; character_points; enddef;
if test_all_characters:a;b;else:if open_tail:a;else:b;fi fi
enddef;
number_nine; save number_nine;
|