summaryrefslogtreecommitdiff
path: root/fonts/fge/fgeit.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/fge/fgeit.mf
Initial commit
Diffstat (limited to 'fonts/fge/fgeit.mf')
-rw-r--r--fonts/fge/fgeit.mf283
1 files changed, 283 insertions, 0 deletions
diff --git a/fonts/fge/fgeit.mf b/fonts/fge/fgeit.mf
new file mode 100644
index 0000000000..74620e5279
--- /dev/null
+++ b/fonts/fge/fgeit.mf
@@ -0,0 +1,283 @@
+% fgeit.mf : fge italic characters
+% J.J. Green 2006
+
+mode_setup;
+font_setup;
+
+proofing := 2;
+
+slantfont slantfge;
+
+% This is an inverted f, but an italic f with a straight
+% descending stem rather than the more usual tail.
+% As with the inverted d (below) a hook is attached to
+% the left.
+
+cmchar "inverted f with hook";
+beginchar("f", 7.5u#, asc_height#, desc_depth#);
+ italcorr h#*slant + 0.5stem# - 2.5u#;
+ adjust_fit(serif_fit# + 2stem_shift#, serif_fit# - 2stem_shift#);
+
+ pickup tiny.nib;
+
+ % stem
+
+ pos1(stem', 0); pos2(stem', 0);
+
+ rt.x1r = hround(w/2 + 5u/4 + stem'/2);
+ x1 = x2;
+ top y1 = h;
+ bot y2 = -1/3d;
+
+ filldraw stroke z1e--z2e;
+
+ % bar
+
+ pos3(bar, 90);
+ pos4(bar, 90);
+ bot y3l = bot y4l = 0;
+
+ rt x4 = hround(w - 1/3u);
+ x2 - x3 = x4 - x2;
+
+ filldraw stroke z3e--z4e;
+
+ % arc and bulb
+
+ pos5(vair', -90);
+ pos6(hair, -180);
+ pos7(flare, -180);
+
+ x5 = 1/2[x2, x6r];
+ bot y5r = -d-oo;
+ y6 = 1/2flair = -0.88d;
+ z6r = z7r;
+ rt x7l = floor 11/4u;
+
+ (x, y5r) = whatever[z5l, z2l];
+ x5r := max(x, 1/2[x6r, x5]);
+
+ filldraw stroke z2e{down}...z5e{left};
+ bulb(5, 6, 7);
+
+ % hook
+
+ pos8(0.5[hair, curve], 0);
+ rt x8r = lft x1l;
+ y8 = 0.5x_height;
+
+ pos9(curve, 90);
+ top y9r = x_height + oo;
+ x9 = 0.4[0, x8l];
+
+ pos10(hair, 180);
+ pos11(hair, -90);
+
+ z9 - z10 = 2.0u*dir(45);
+ z8 - z11 = 2.0u*dir(55);
+
+ filldraw stroke z11e{right}...z8e{up}...{left}z9e...{down}z10e;
+
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
+
+endchar;
+
+% I'm convinced this is a rotated d, which would explain the
+% right serif on the stem. I take the code from itall.mf's p
+% but replace the flat serif with the slanted serif of the d.
+% This looks a little different to the original, but then the
+% d's of the original *do* have a flat serif -- so this is
+% needed for consistency with computer modern's d.
+
+cmchar "inverted d with hook";
+beginchar("p", 13u#, asc_height#, desc_depth#);
+ italcorr 0.7x_height#*slant - u# + 0.5curve#;
+ adjust_fit(0, 0);
+
+ numeric hook_jut;
+ hook_jut = w - 9u;
+
+ pickup fine.nib;
+ x0 = hook_jut;
+ x2 - 0.5stem - hook_jut = hround(2.5u-.5stem);
+ hook_in(0, 1, 2); % opening hook
+
+ pos4(hair, -180);
+ pos5(vair, -90);
+ pos6(curve, 0);
+ pos7(vair, 90);
+ x4=x2;
+ rt x6r=hround(w-1.5u+.5curve);
+ x5=x7=.5[x4, x6];
+ bot y5r=-oo;
+ top y7r=x_height+oo;
+ y4=y6=.5[y5, y7];
+
+ filldraw stroke super_arc.e(4, 5) & pulled_arc.e(5, 6)
+ & pulled_arc.e(6, 7) & super_arc.e(7, 4); % bowl
+
+ pickup tiny.nib;
+ pos2'(stem, 0);
+ pos3(stem, 0);
+ z2=z2';
+ x3=x2;
+ bot y3=-d;
+
+ filldraw stroke z2'e--z3e; % stem
+ sloped_serif.r(3, 2', a, 1/3, jut, serif_drop); % serif
+
+ math_fit(-min(2/3x_height#*slant-.5hair#-.5u#,
+ 2u#-.5stem#-desc_depth#*slant), ic#);
+
+ % bit ad-hoc this
+
+ pos8(hair, 0);
+ z8r=z0l;
+
+ pos9(curve, 90);
+ pos10(hair, 180);
+
+ x9 = 1/2[x8, x10];
+ y9r = 1/2[x_height, h];
+ y10r = 1/4[y9l, y8];
+ x8l - lft x10r = hook_jut;
+
+ % filldraw stroke z8e{up}...{left}z9e...{down}z10e;
+ filldraw stroke super_arc.e(8, 9) & super_arc.e(9, 10);
+
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+
+endchar;
+
+cmchar "Overturned lb ligature";
+beginchar(oct "021", 12u#, x_height#, desc_depth#);
+ italcorr 0.7x_height#*slant - 0.5u#;
+ adjust_fit(0, 0);
+
+ pickup crisp.nib;
+
+ slope := 20;
+ obstem := stem/cosd(slope);
+ tsep := 3.75*stem;
+ thair := 0.3[hair, obstem];
+
+ % 1-2-11-4-5-6 is the left trunk and flourish, 3 is a utility point
+
+ pos1(stem, 0);
+ pos2(obstem, 0);
+ pos4(hair, 180-slope);
+ pos5(hair, -slope);
+ pos11(thair, 90);
+
+ %x1l = 0.5u;
+ x2 = x1;
+ bot y1 = y3 = -d;
+ y2 = 0.70*x_height;
+
+ z2-z3 = whatever*dir(180-slope);
+
+ z4 = 1.13[z3, z2];
+ z5 = whatever[z3, z2];
+
+ x5r = w-0.5u;
+ x4r = 0.5u;
+
+ % z11 lifts the left stroke
+
+ z11 = 0.5[z2, z4] + whatever*dir(90);
+ top y11r = x_height + o;
+
+ % z6 might be better half-way between the trunks
+
+ z6 = 0.89[z3, z2];
+ pos6(hair, angle(z6-z1)+90);
+
+ filldraw stroke z1e--z2e{z2-z1}..z11e..{z1-z2}z4e..tension(1.0)..z5e{z2-z1}..z6e{z1-z6};
+
+ penlabels(1, 2, 3, 11, 4, 5, 6);
+
+ % the right trunk with foot
+
+ pos7(stem, 0);
+ pos8(hair, 90);
+ pos9(obstem, 0);
+ pos10(hair, 180-slope);
+
+ x7-x1 = x9-x2 = tsep;
+ y7 = y1;
+ y9 = y2;
+
+ % the vertical lift point
+
+ x8 = 0.3[x9, x2];
+ top y8r = x_height + o;
+
+ z10l = 0.8[z1r, z2r];
+
+ filldraw stroke z7e--z9e{z9-z7}...z8e{left}..tension(2.0)..{z7-z9}z10e;
+
+ % serif(7, 9, a, 1/3, cap_jut);
+ sloped_serif.r(7, 9, a, 1/3, jut, serif_drop); % serif
+
+ penlabels(7, 8, 9, 10);
+
+endchar;
+
+cmchar "inverted F";
+beginchar("F", 11.5u#-width_adj#, x_height#, desc_depth#);
+ italcorr x_height#*slant-cap_jut#+0.5u#;
+ adjust_fit(0, cap_serif_fit#);
+
+ h := vround(h-stem_corr);
+
+ pickup tiny.nib;
+
+ pos1(cap_stem, 0);
+ pos2(cap_stem, 0);
+
+ rt x1r = rt x2r = hround w - max(2u, 3u-0.5cap_stem);
+ top y1 = x_height;
+ bot y2 = -desc_depth;
+
+ filldraw stroke z1e--z2e; % stem
+
+ pickup crisp.nib;
+
+ pos3(slab, -90);
+ pos4(hair, 180);
+
+ bot y3r = -desc_depth;
+ x3 = x1;
+ rt x4r = hround(0.75u);
+ y4 = good.y(y3r+beak)-eps;
+
+ arm(3, 4, e, beak_darkness, beak_jut); % upper arm and beak
+
+ pos5(cap_bar, -90);
+ pos6(hair, 180);
+
+ top y5l = vround(.5[y2, y1]+.5cap_bar);
+ x5 = x1;
+ pos0(cap_bar, 90);
+
+ pos7(hair, 180);
+ z0 = z5;
+ x6 = x7;
+ y6-y5l = y0l-y7;
+
+ rt x6r = hround(4u-.5hair);
+ y6 = good.y(y5l+.6beak) + eps;
+ rt x9r = hround(w-.5u);
+
+ arm(5, 6, f, beak_darkness, 0);
+ arm(0, 7, g, beak_darkness, 0); % middle arm and serif
+
+ nodish_serif(1, 2, a, 1/3, cap_jut, b, 1/3, .5cap_jut); % upper serif
+ dish_serif(2, 1, c, 1/3, cap_jut, d, 1/3, 1.25cap_jut); % lower serif
+
+ math_fit(0, ic#-2.5u#);
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7);
+
+endchar;
+
+end \ No newline at end of file