+fet_beginchar ("Numeral 5", "five");
+ save alpha, beta, gamma, delta;
+ save inner_t, outer_t;
+ save pat;
+ path pat;
+
+ set_char_box (0, 27/40 height# * widen, 0, height#);
+
+ message "w:" & decimal w;
+ message "h:" & decimal h;
+
+ alpha = 0;
+ calc_kuulleke (w - thin, alpha);
+
+ z1 = (w / 2 + 1/8 thick, h);
+
+ penpos5 (thin, 0);
+ z5l = (x1l, h - 15/16 thick);
+
+ penpos6 (hair, 90 - 45);
+ z6 = z5r + 1/2 hair * dir (-45);
+
+ penpos7 (thin, 0);
+ z7l = (x1l, h / 2 + thin - hair);
+
+ penlabels (range 1 thru 7);
+
+ gamma = angle (length (z1r - z1), 2 kuulleke);
+
+ pat := z2r{dir (alpha - gamma)}
+ .. z4
+ .. {dir (alpha + gamma)}z3l
+ .. z3r{dir (-135)}
+ .. {left}z6r
+ .. {down}z6l
+ -- z7r{down}
+ .. {up}z7l
+ -- z2l{up}
+ .. cycle;
+
+ beta = 45;
+ delta = 180 + beta + 10;
+ z8r = (x7r, y7r - 1/16 thick + thin);
+ z8l = directionpoint dir (delta) of
+ subpath (6, 7) of pat;
+
+ % include intersection point to improve overlap removal
+ fill subpath (0, 6) of pat
+ .. z8l
+ .. subpath (7, length (pat)) of pat
+ .. cycle;
+
+ penpos9 (thin, 90);
+ y9 = 10/16 [y5, y7];
+ x9 = .36 [x8r, x10r];
+
+ penpos10 (thick, 0);
+ x10r = w + hair / 2;
+ y10r = 1/2 [y9r, y11r];
+
+ penpos11 (hair, -90);
+ y11r = 0;
+ x11r = .7 [0, x10l];
+
+ penlabels (range 8 thru 12);
+
+ 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 (delta)}
+ -- cycle;