% Double Stroke Roman others: % These letters were originally coded by D. E. Knuth in November, 1979, % inspired by the Monotype faces used in {\sl The Art of Computer Programming}. % Sans serif designs by Richard Southall were added in April, 1982. % The programs were revised for the new \MF\ conventions in 1985. % This file {\tt dsromo.mf} was compiled from various Computer % Modern sources and modified for double stroke characters by % Olaf Kummer, 1996. % Version 1.0 cmchar "The numeral 1"; beginchar("1",11u#,fig_height#,0); italcorr fig_height#*slant-.5u#; adjust_fit(0,0); pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0); pos11(doublestroke_thin,0); pos12(doublestroke_thin,0); lft x1l=lft x2l=w-rt x11r; y11=y1; lft x11l=rt x1r+doublestroke_dist; y12=y2; lft x12l=rt x2r+doublestroke_dist; top y1=h+o; bot y2=0; filldraw stroke z1e--z2e; % stem filldraw stroke z11e--z12e; % stroke z13=whatever[z11,z12]; z14=whatever[z1,z2]; y13=y14=top y11-slab; fill top z11--top z1--z14--z13--cycle; % top closure if not serifs: save slab; slab=bar; fi nodish_serif(2,1,a,1/3,min(2u,lft x2l-1.5u), b,0,min(2u,w-1.25u-rt x2r)+doublestroke_dist); % left serif nodish_serif(12,11,c,0,min(2u,lft x2l-1.5u)+doublestroke_dist, d,1/3,min(2u,w-1.25u-rt x2r)); % stroke serif pickup crisp.nib; pos3(slab,-90); pos4(bar,-90); top y3l=h+o; top y4l=if monospace: .75 else: .85 fi\\ h+o; lft x4=max(1u,tiny.lft x1l-2.75u); tiny.rt x1r=lft x3+.25[tiny,hair]; erase fill z3l{x4l-x3l,3(y4l-y3l)}...z4l{left} --(x4l,h+o+1)--(x3l,h+o+1)--cycle; % erase excess at top filldraw stroke z3e{x4e-x3e,3(y4e-y3e)}..z4e{left}; % point penlabels(1,2,3,4); endchar; cmchar "A variant of letter A"; beginchar("a",14.5u#,cap_height#,0); adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric left_stem,right_stem,outer_jut,alpha; right_stem=cap_stem-stem_corr; left_stem=min(cap_hair if hefty: -3stem_corr fi,right_stem); outer_jut=.8cap_jut; y11=y1=y4=0; y12=y2=y3=h+0.4*apex_o; x11l=w-x4r=l+letter_fit+outer_jut+.5u; alpha=diag_ratio(2,left_stem+doublestroke_thick+doublestroke_dist, y2-y11,x4r-x11l-apex_corr); penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); penpos11(alpha*doublestroke_thick,0); penpos12(alpha*doublestroke_thick,0); x1l=x11r+alpha*doublestroke_dist; x2l=x12r+alpha*doublestroke_dist; x2l-x1l=x4r-x3r; x3r=x2r+apex_corr; z0=whatever[z1r,z2r]=whatever[z3l,z4l]; if y0