% This is FCCSCSPU.MF % Version 1.1a % Date 19-MAR-1992 % % This file is part of the fc-package % See fc.rme for more information % % J"org Knappen % Institut f"ur Kernphysik % Postfach 39 80 % D-W 6500 Mainz % knappen@vkpmzd.kph.uni-mainz.de % % [ heavily borrowed from the Computer Modern Roman family % of fonts by D. E. Knuth and from DC fonts Version 1.0 % (prerelease of EC fonts) ] % % Content: % % Metafont program for the characters in positions of ligatures % for the "caps and small caps" fonts % % I,J,FI,FL,FFI,FFL,SS, D with bar, long D, FJ, T-ESH % cmchar "The letter I"; beginchar(oct"031",max(6u#,4u#+cap_stem#),cap_height#,0); italcorr cap_height#*slant-.25u#; adjust_fit(cap_serif_fit#,cap_serif_fit#); pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem if serifs: dish_serif(1,2,a,1/3,1.05cap_jut,b,1/3,1.05cap_jut); % upper serif dish_serif(2,1,c,1/3,1.05cap_jut,d,1/3,1.05cap_jut); fi % lower serif math_fit(0,.5ic#); penlabels(1,2); endchar; cmchar "The letter J"; beginchar(oct"032",9u#,cap_height#,0); italcorr cap_height#*slant-cap_serif_fit# +.75cap_jut#-2.5u#+min(.5cap_stem#,u#); adjust_fit(0,cap_serif_fit#); pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); top y1=h; rt x1r=hround(w-2u); x2=x1; y2=.21h; if serifs: pos3(vair,-90); pos4(cap_hair,-180); pos5(flare+(cap_stem-stem),-180); bot y3r=-o; x3=.5[x4,x2]; y5=1/6h; rt x5l=hround 2.75u; z5r=z4r; filldraw stroke z1e--z2e&super_arc.e(2,3); % stem and arc dish_serif(1,2,a,1/3,1.3cap_jut,b,1/3,.75cap_jut); % serif bulb(3,4,5); % bulb else: filldraw stroke z1e--z2e; % stem pickup fine.nib; pos3(cap_stem',0); z3=z2; pos4(flare,angle(6.5u,-h)); pos5(1.1flare,-100); bot y4r=-o; x4r=.5[x5r,x3r]; lft x5r=hround.75u; bot y5r=vround.06h-o; filldraw stroke z3e{down}....term.e(4,5,left,1,4); fi % arc and terminal math_fit(0,.5ic#-.5u#); penlabels(1,2,3,4,5); endchar; cmchar "The letter FF"; beginchar(oct"033",2(11.5u#-width_adj#),cap_height#,0); italcorr cap_height#*slant-.25u#; normal_adjust_fit(cap_serif_fit#,0); h:=vround(h-stem_corr); w':=11.5u-width_adj; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(w'-.5u); else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif % the second F currentpicture:=currentpicture + currentpicture shifted (w',0); math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar; cmchar "The letter FI"; beginchar(oct"034",11.5u#-width_adj#+max(6u#,4u#+cap_stem#),cap_height#,0); italcorr cap_height#*slant-.25u#; normal_adjust_fit(cap_serif_fit#,0); h:=vround(h-stem_corr); w':=11.5u-width_adj; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(w'-.5u); else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif % the I xshift:=w'; w':=w-xshift; pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0); lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0; filldraw stroke z11e--z12e; % stem if serifs: dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar; cmchar "The letter FL"; beginchar(oct"035",(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0); italcorr cap_height#*slant-.25u#; normal_adjust_fit(cap_serif_fit#,0); h:=vround(h-stem_corr); w':=11.5u-width_adj; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(w'-.5u); else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif % the L xshift:=w'; pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0); lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0; filldraw stroke z11e--z12e; % stem pickup crisp.nib; pos13(slab,-90); pos14(hair,0); bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u); arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar; cmchar "The letter FFI"; beginchar(oct"036",2(11.5u#-width_adj#)+max(6u#,4u#+cap_stem#),cap_height#,0); italcorr cap_height#*slant-.25u#; normal_adjust_fit(cap_serif_fit#,0); h:=vround(h-stem_corr); w':=11.5u-width_adj; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(w'-.5u); else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif % the second F currentpicture:=currentpicture + currentpicture shifted (w',0); % the I xshift:=2w'; w':=w-xshift; pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0); lft x11l=lft x12l=hround(xshift+.5w'-.5cap_stem); top y11=h; bot y12=0; filldraw stroke z11e--z12e; % stem if serifs: dish_serif(11,12,aa,1/3,1.05cap_jut,bb,1/3,1.05cap_jut); % upper serif dish_serif(12,11,gg,1/3,1.05cap_jut,dd,1/3,1.05cap_jut); fi % lower serif math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar; cmchar "The letter FFL"; beginchar(oct"037",2(11.5u#-width_adj#)+11u#-width_adj#,cap_height#,0); italcorr cap_height#*slant-.25u#; normal_adjust_fit(cap_serif_fit#,0); h:=vround(h-stem_corr); w':=11.5u-width_adj; pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(w'-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(w'-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(w'-.5u); else: rt x6r=hround(w'-1.5u); y6=y5l+eps; rt x9r=hround(w'-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif % the I currentpicture:=currentpicture + currentpicture shifted (w',0); % the L xshift:=2w'; pickup tiny.nib; pos11(cap_stem,0); pos12(cap_stem,0); lft x11l=lft x12l=hround xshift+max(2u,3u-.5cap_stem); top y11=h; bot y12=0; filldraw stroke z11e--z12e; % stem pickup crisp.nib; pos13(slab,-90); pos14(hair,0); bot y13r=0; x13=x12; y14=y13l+7/6beak+eps; rt x14r=hround(w-.75u); arm(13,14,eee,1.2beak_darkness,beak_jut); % lower arm and beak if serifs: dish_serif(11,12,aaa,1/3,cap_jut,bbb,1/3,1.25cap_jut); % upper serif nodish_serif(12,11,ccc,1/3,cap_jut,ddd,1/3,.5cap_jut); fi % lower serif math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7,8,9,11,12); endchar; iff known scharfes_s: cmchar "Two letters S"; beginchar(scharfes_s,10u#,cap_height#,0); italcorr cap_height#*slant-u#; adjust_fit(0,0); numeric theta; theta=90-angle(50u,h); slope:=-h/50u; % angle at middle numeric s_slab; s_slab=if serifs:slab else:vround .2[slab,cap_stem] fi; numeric ess'; ess'=max(fine.breadth,cap_ess); pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90); pos0(ess',theta); pos7(s_slab,-90); x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o; y0=.52h; lft x3l=hround u; rt x6r=hround(w-u); x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; filldraw stroke super_arc.e(2,3) & z3e{down} ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke if serifs: pos1(hair,180); pos8(hair,180); rt x1l=hround(w-1.5u); lft x8r=hround u; bot y1=vround 2/3h+1; top y8=vround 1/3h-1; filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc filldraw stroke z7e{left}....{up}z8e; % lower arc path upper_arc, lower_arc; upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2; lower_arc=z7{left}....{up}z8; pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0); x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb t:=xpart(lower_arc intersectiontimes(z9r--z8')); filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb else: pos1(1.2flare,-100); pos8(1.2flare,-100); x1l=good.x(x1l+w-1.75u-rt x1); lft x8r=hround .8u; top y1l=vround .93h+o; bot y8r=vround .1h-o; filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal r:=r+w+shrink_fit; charwd:=2charwd; addto currentpicture also currentpicture shifted (w+shrink_fit,0); penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10); endchar; iff known crossed_d: cmchar"Capital letter crossed D"; % Capital of icelandic edh, kroatian dje and % ewe d with tail % cmchar "Capital Eth"; % from im beginchar(crossed_d,13.5u#,cap_height#,0); italcorr .7cap_height#*slant-.5u#; adjust_fit(cap_serif_fit#,0); pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem penpos3(cap_band,90); penpos4(cap_band,90); penpos5(cap_curve-stem_corr,0); penpos6(cap_band,-90); penpos7(cap_band,-90); z3r=top z1; y4=y3; y5=.51[y4,y6]; y6=y7; z7r=bot z2; x4=x6=.5w+.25u; x5r=hround(w-u); x4l:=x6l:=x4-.25cap_curve; fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif pickup crisp.nib; y9-.5bar=.2[bar_height,x_height]; y10+.5bar=.8[bar_height,x_height]; lft x9=0; x1-x9=x10-x1; numeric theta; theta=angle(z10-z9)+90; pos9(bar,theta); pos10(bar,theta); filldraw stroke z9e--z10e; % cross piece (from "Cross for polish l and L") math_fit(0,ic#-.5u#); penlabels(1,2,3,4,5,6,7,9,10); endchar; iff known fj_lig: cmchar "The ligature FJ"; % jk from cm F and J beginchar(fj_lig,20.5u#,cap_height#,0); italcorr cap_height#*slant-cap_serif_fit# +.75cap_jut#-2.5u#+min(.5cap_stem#,u#); adjust_fit(cap_serif_fit#,cap_serif_fit#); % first the J numeric ww; ww=26/41w; pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); top y1=h; rt x1r=hround(w-2u); x2=x1; y2=.21h; if serifs: pos3(vair,-90); pos4(cap_hair,-180); pos5(flare+(cap_stem-stem),-180); bot y3r=-o; x3=.5[x4,x2]; y5=1/6h; rt x5l=hround ww; z5r=z4r; filldraw stroke z1e--z2e&super_arc.e(2,3); % stem and arc dish_serif(1,2,a,1/3,1.3cap_jut,b,1/3,.75cap_jut); % serif pickup tiny.nib; bulb(3,4,5); % bulb else: filldraw stroke z1e--z2e; % stem pickup fine.nib; pos3(cap_stem',0); z3=z2; pos4(flare,angle(6.5u,-h)); pos5(1.1flare,-100); bot y4r=-o; x4r=.5[x5r,x3r]; lft x5r=hround(ww+.75u); bot y5r=vround.06h-o; filldraw stroke z3e{down}....term.e(4,5,left,1,4); fi % arc and terminal penlabels(1,2,3,4,5); clearxy; % Now the F h:=vround(h-stem_corr); pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(ww-.75u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,beak_jut); % upper arm and beak pos5(cap_bar,-90); pos6(hair,0); top y5l=vround(.5[y2,y1]+.5cap_bar); x5=x1; pos0(cap_bar,90); pos7(hair,0); z0=z5; x6=x7; y6-y5l=y0l-y7; if serifs: rt x6r=hround(ww-4u+.5hair); y6=good.y(y5l+.6beak)+eps; rt x9r=hround(ww-.5u); else: rt x6r=hround(ww-1.5u); y6=y5l+eps; rt x9r=hround(ww-.75u); fi arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0); % middle arm and serif if serifs: 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); fi % lower serif math_fit(0,ic#-.5u#); penlabels(0,1,2,3,4,5,6,7,8,9); endchar; iff known t_esh_lig: cmchar "Capital ligature T-ESH"; % jk beginchar(t_esh_lig,21u#,cap_height#,0); italcorr asc_height#*slant+.75u#; adjust_fit(if monospace:0,u# else: 0,0 fi); pickup fine.nib; % first the Esh numeric ww; ww=13/21w; pos0(flare+(cap_stem-stem),0); pos1(cap_hair,0); pos2(cap_band,90); pos4(cap_stem,180); pos5(cap_stem,0); pos7(cap_band,-90); pos8(cap_hair,-180); pos9(flare+(cap_stem-stem),-180); rt x1r=hround(w+.25u); lft x8r=hround(ww-.35u); x2=.6[x1,x4]; x7=.6[x8,x5]; y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo; y4=.25[x_height,h]; y5=.75[-d,y4]; x4=x5=hround(.5[ww,w]); bulb(2,1,0); bulb(7,8,9); % bulbs filldraw stroke z2e{left}...{down}z4e; % upper arc filldraw z4r--z5l--z5r--z4l--cycle; % stem filldraw stroke z5e{down}...{left}z7e; % lower arc penlabels(0,1,2,4,5,7,8,9); % now the T clearxy; h:=vround(h-2stem_corr); pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); lft x1l=lft x2l=hround(.5ww-.5cap_stem); top y1=h; bot y2=0; filldraw stroke z1e--z2e; % stem pickup crisp.nib; pos3(slab,90); pos4(hair,0); top y3r=h; x3=x1; rt x4r=hround(ww-.65u); y4=good.y(y3l-beak)-eps; arm(3,4,e,beak_darkness,.7beak_jut); % right arm and beak pos5(hair,180); x5=ww-x4; y5=y4; arm(3,5,f,beak_darkness,-.7beak_jut); % left arm and beak if serifs: dish_serif(2,1,c,1/3,1.414cap_jut,d,1/3,1.414cap_jut); % lower serif nodish_serif(1,2,a,1/3,.5cap_jut,b,1/3,.5cap_jut); fi % upper bracketing penlabels(1,2,3,4,5,6); endchar; endinput;