summaryrefslogtreecommitdiff
path: root/fonts/cm/mf/italsp.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/cm/mf/italsp.mf
Initial commit
Diffstat (limited to 'fonts/cm/mf/italsp.mf')
-rw-r--r--fonts/cm/mf/italsp.mf128
1 files changed, 128 insertions, 0 deletions
diff --git a/fonts/cm/mf/italsp.mf b/fonts/cm/mf/italsp.mf
new file mode 100644
index 0000000000..a4784a4936
--- /dev/null
+++ b/fonts/cm/mf/italsp.mf
@@ -0,0 +1,128 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE italsp.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+
+% This file contains special letters and letter combinations,
+% compatible with the alphabet `{\tt itall}'.
+
+% Codes \0020--\0021 and \0031--\0034 are generated.
+
+cmchar "Dotless italic letter i";
+beginchar(oct"020",5u#,x_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
+x0=0; x5=w; x2=.5w+.25u; x3=.5w-.25u;
+hook_in(0,1,2)(skewed); hook_out(3,4,5)(skewed); % hooks
+filldraw stroke z2e--z3e; % stem
+penlabels(0,1,2,3,4,5); endchar;
+
+cmchar "Dotless italic letter j";
+beginchar(oct"021",5.5u#,x_height#,desc_depth#);
+italcorr x_height#*slant+.5stem#-2u#;
+adjust_fit(if monospace:2u# else: 0 fi, 0); pickup fine.nib;
+x0=0; x2=x3; pos3(stem,0); lft x3l=hround(w-2u-.5stem);
+hook_in(0,1,2); % opening hook
+pos4(vair,-90); pos5(hair,-180); pos6(flare,-180);
+bot y3=-1/3d; bot y4r=-d-oo; y6-.5flare=-vround.9d;
+x4=1/3(w-u); lft x5r=min(hround-.5u,lft x5r+x4-x5l-eps);
+filldraw stroke z2e---z3e...{left}z4e; % stem and arc
+bulb(4,5,6); % bulb
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Italic German letter es-zet (sharp s)";
+beginchar(oct"031",4.5u#+max(1.5u#,stem#)+max(3.5u#,2flare#),
+ asc_height#,desc_depth#);
+italcorr .9asc_height#*slant-u#;
+adjust_fit(if monospace: u# else: 0 fi,0); pickup fine.nib;
+z88=(.5w-2.75u,h); z89=(.5w-1.75u,-d);
+numeric theta; theta=angle(z88-z89);
+pos1(stem,0); pos2(vair,90); pos3(.5[hair,stem],180);
+pos4(stem,theta+90); pos5(stem,theta-90); pos6(.5[hair,stem],0);
+pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+rt x1r=hround(w-1.5u); lft x8r=hround-.25u; x2=.5[x1,x4]; x7=.5[x8,x5];
+y9-.5flare=vround -.85d; bot y7r=-d-oo; y1=.5[x_height,h]; top y2r=h+oo;
+y4=.25[x_height,h]; y5=.5[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+bulb(7,8,9); % left bulb
+filldraw stroke z1e{up}...z2e{left}...z3e...{z89-z88}z4e; % upper arc
+filldraw z4r--z5l--z5r--z4l--cycle; % stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
+pos11(.1[hair,curve],-30); x11l=2/3[x12l,x1l]; y11=2/3[y1,y12];
+pos12(.3[hair,curve],0); rt x12r=hround(w-3u); y12=.5h;
+pos13(.8[hair,curve],30); x13=.5[x12,x14]; y13=.5[y12,y14];
+pos14(curve,0); rt x14r=hround(w-.5u); y14=.2h;
+pos15(vair,-90); x15=.5[x14,x16]; bot y15r=-oo;
+pos16(hair,-180); pos17(.6[hair,flare],-180);
+lft x16r=hround(rt x5r+.75u); y17-.5(.6[hair,flare])=.07h;
+filldraw stroke z1e{down}...z11e{1.5(x12e-x11e),y12e-y11e}
+ ...{down}z12e...{2(x13-x12),y13-y12}z13e
+ ...{down}z14e...{left}z15e; % stroke
+bulb(15,16,17); % inner bulb
+pickup crisp.nib; pos20(bar,90); pos21(bar,90);
+top y20r=top y21r=x_height;
+lft x20=lft x4r-.5stem-u; z21=whatever[z4,z5];
+filldraw stroke z20e--z21e; % bar
+penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,20,21,88,89); endchar;
+
+cmchar "Italic ligature ae";
+beginchar(oct"032",13u#,x_height#,0);
+italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#);
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib;
+forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor
+numeric heavy_hair; heavy_hair=hround .2[hair,stem];
+numeric light_stem; light_stem=hround .75[hair,stem];
+pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90);
+pos3(light_stem,180); pos4(vair,270); pos5(hair,320);
+x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u);
+lft x3r=hround(.5w-.5light_stem); x5r=good.x(w-.5u); x6=x5;
+y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo;
+top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6;
+filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3)
+ & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e
+pos7(light_stem,0); pos8(light_stem,0);
+x7=x8=x3; y7+.5light_stem=h+oo; y8-.5light_stem=-oo;
+pos7'(vair,-225); pos11(curve,-180); z7'=z7;
+pos12(vair,-90); pos3'(hair,0); z3'=z3;
+lft x11r=hround(1.5u-.5curve); x12=.5[x11,x3];
+y11=.3[y12,y7]; bot y12r=-oo;
+filldraw stroke z7'e{3(x11-x7),y11-y7}...pulled_arc.e(11,12)
+ & pulled_arc.e(12,3'); % bowl of a
+filldraw z7l---z8l..z8r---z7r..cycle; % stem
+penlabels(0,1,2,3,4,5,6,7,8,11,12); endchar;
+
+cmchar "Italic ligature oe";
+beginchar(oct"033",13u#,x_height#,0);
+italcorr max(1/3x_height#*slant,x_height#*slant+.5(.2[hair#,stem#])-u#);
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup fine.nib;
+forsuffixes $=hair,stem: shaved$:=mfudged$; save $; $=shaved$; endfor
+numeric heavy_hair; heavy_hair=hround .2[hair,stem];
+pos0(vair,-90); pos1(heavy_hair,0); pos2(vair,90);
+pos3(stem,180); pos4(vair,270); pos5(hair,320);
+x0=rt x3l; rt x1r=hround(w-1.5u+.5heavy_hair); x2=x4=.5(w+6u);
+lft x3r=hround(.5w-.5stem); x5r=good.x(w-.5u); x6=x5;
+y0=y3=y6=bar_height; y1=.5[y0,y2]; top y2r=h+oo; bot y4r=-oo;
+top y5l=vround(.5bar_height+.5); path p; p=z4{right}..z5..z6;
+filldraw stroke z0e{right}...z1e{up}...pulled_arc.e(2,3)
+ & pulled_arc.e(3,4)...{direction 1 of p}z5e; % arc of e
+pos11(vair,90); pos12(curve,180); pos13(vair,270); pos14(stem,360);
+x11=x13=.5[x12,x14]; lft x12r=hround(1.5u-.5curve); x14=x3;
+top y11=h+oo; y12=y14=.5[y11,y13]; bot y13=-oo;
+filldraw stroke pulled_arc.e(11,12) & pulled_arc.e(12,13)
+ & pulled_arc.e(13,14) & pulled_arc.e(14,11); % bowl
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Italic Scandinavian letter o/slash";
+beginchar(oct"034",9u#,x_height#+.5desc_depth#,.5desc_depth#);
+italcorr h#*slant-u#+.5vair#;
+adjust_fit(0,0); pickup fine.nib;
+pos1(vair,90); pos2(fudged.stem,180);
+pos3(vair,270); pos4(fudged.stem,360);
+x1=x3=.5w; lft x2r=hround(1.5u-.5fudged.stem); x4=w-x2;
+top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo;
+filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
+x5=x4; x6=x2; y5=h; y6=-d;
+numeric theta; theta=angle(z5-z6)-90;
+pickup crisp.nib; pos5(vair,theta); pos6(vair,theta);
+filldraw stroke z5e--z6e; % diagonal
+penlabels(1,2,3,4,5,6); endchar;