home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / text / pastex-1.3-7of9.lha / PasTeX / MF / inputs / dc / dxrllett.mf < prev    next >
Text File  |  1994-04-12  |  40KB  |  828 lines

  1. % This is DXRLLETT.MF in text format, as of March 24, 1992
  2. %
  3. % DC fonts Version 1.1 (prerelease of EC fonts)
  4. %
  5. %          [ heavily borrowed from the Computer Modern Roman family of
  6. %            fonts by D. E. Knuth ]
  7. %
  8. % Content:
  9. %
  10. % roman lowercase letters a to z
  11. %
  12.  
  13. dcchar "The letter a";
  14. beginchar("a",9u#,x_height#,0);
  15. bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh);
  16. italcorr 1/3[bh#,x_height#]*slant+.5stem#-serif_fit#-2u#;
  17. adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi);
  18. pickup fine.nib; top y3r=h+vround 1.5oo;
  19. if serifs: pos1(flare,180); pos2(hair,180);
  20.  pos3(vair,90);  lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u;
  21.  y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare);
  22.  bulb(3,2,1);  % bulb
  23. else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r;
  24.  pos3(1/8[vair,thin_join],90);
  25.  x3=.5w-.2u; top y1r=vround .82[bh,top y3r];
  26.  filldraw stroke term.e(3,1,left,.9,4); fi  % terminal
  27. pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,h];
  28. pos5(stem,0); x5=x4; y5=max(.55bh,2vair);
  29. filldraw stroke super_arc.e(3,4)&z4e..z5e;  % arc and stem
  30. pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh;
  31. pos7(hround(curve-2stem_corr),180);
  32. lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r];
  33. pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo;
  34. pos9(thin_join,360); z9l=z5l;
  35. (x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u);
  36. {{interim superness:=more_super;
  37.  filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl
  38. if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr);
  39.  if hair#+.5stem#>1.5u#: pickup tiny.nib;
  40.   pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
  41.   pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh];
  42.   pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0;
  43.   pos12(shaved_stem,0); x11=x12; top y12=slab+eps;
  44.   filldraw z5'l---z10l...z11l{right}--z11r
  45.    --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle;  % foot
  46.  else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
  47.   pos10(shaved_stem,0); x10=x5'; y10=1/3bh;
  48.   pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo;
  49.   pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair);
  50.   pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12);
  51.   (x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10);
  52.   filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi  % hook
  53. else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr);
  54.  pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
  55.  pos10(shaved_stem,0); x10=x5'; bot y10=0;
  56.  filldraw stroke z5'e--z10e; fi  % base of stem
  57. penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
  58.  
  59. dcchar "The letter b";
  60. beginchar("b",10u#+serif_fit#,asc_height#,0);
  61. italcorr .5x_height#*slant+min(.5curve#-u#,-.25u#);
  62. adjust_fit(serif_fit#,0);
  63. pickup tiny.nib; pos1(stem',0); pos2(stem,0);
  64. pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
  65. lft x1l=hround(2.5u-.5stem'); top y1=h;
  66. numeric edge; edge=rt x2r;
  67. pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
  68. pos4(vair,90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180);
  69. rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l),1/3[rt x2,edge]);
  70. y3=1/8[bar_height,x_height];
  71. x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
  72. rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
  73. x6l=x4l-.2u; bot y6r=-oo;
  74. x7=x3; y7=min(y3,y6+y4-y3+.6vair);
  75. (x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x4,x5r]);
  76. (x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x6,x5r]);
  77. filldraw stroke z3e{up}...pulled_arc.e(4,5)&pulled_arc.e(5,6)...{up}z7e; % bowl
  78. y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l));
  79. y2=ypart(((edge,h)--(edge,0))intersectionpoint(z6l{left}...{up}z7l));
  80. pickup tiny.nib; filldraw stroke z1e--z0'e--z0e--z2e;  % stem
  81. pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
  82. z7'=z2; x8l=x7'l; bot y8=0;
  83. filldraw stroke z7'e--z8e;  % point
  84. if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); fi  % upper serif
  85. penlabels(0,1,2,3,4,5,6,7,8); endchar;
  86.  
  87. dcchar "The letter c";
  88. beginchar("c",8u#,x_height#,0);
  89. italcorr x_height#*slant-.2u#;
  90. adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
  91. pickup fine.nib; pos2(vair',90); pos4(vair',270);
  92. x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo;
  93. pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h;
  94. if serifs: pos1(hair,0); pos0(flare,0);
  95.  y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare);
  96.  rt x1r=hround(w-.7u); bulb(2,1,0);  % bulb
  97.  pos5(hair,0); rt x5r=hround(w-.5u);
  98.  y5=max(good.y(.5bar_height-.9),y4l+vair');
  99.  (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
  100.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  101.   & pulled_super_arc.e(3,4)(.5superpull)
  102.   ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e;  % arc and lower terminal
  103. else: pos1(4/7[vair',flare],80);
  104.  rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
  105.  filldraw stroke term.e(2,1,right,.8,4);  % upper terminal
  106.  pos5(.6[vair',flare],275); rt x5r=hround(w-.5u);
  107.  y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
  108.  forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
  109.   if angle direction 1 of p.e>75:
  110.    p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
  111.  filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
  112.   & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi  % arc and lower terminal
  113. penlabels(0,1,2,3,4,5); endchar;
  114.  
  115. dcchar "The letter d";
  116. beginchar("d",10u#+serif_fit#,asc_height#,0);
  117. italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
  118. adjust_fit(0,serif_fit#);
  119. pickup tiny.nib; pos1(stem',0); pos2(stem,0);
  120. pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2;
  121. rt x1r=hround(w-2.5u+.5stem'); top y1=h;
  122. numeric edge; edge=lft x2l;
  123. pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0);
  124. pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
  125. lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]);
  126. y3=1/8[bar_height,x_height];
  127. x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo;
  128. lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height;
  129. x6l=x4l-.2u; bot y6r=-oo;
  130. x7=x3; y7=min(y3,y6+y4-y3+.6vair);
  131. (x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]);
  132. (x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]);
  133. filldraw stroke z3e{up}...pulled_arc.e(4,5)
  134.  & pulled_arc.e(5,6)...{up}z7e; % bowl
  135. y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l));
  136. pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi;
  137. filldraw stroke z1e--z0'e--z0e--z2e;  % stem
  138. if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop);  % upper serif
  139.  sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi  % lower serif
  140. penlabels(0,1,2,3,4,5,6,7); endchar;
  141.  
  142. dcchar "The letter e";
  143. beginchar("e",7.25u#+max(.75u#,.5curve#),x_height#,0);
  144. italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
  145. adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi);
  146. numeric left_curve,right_curve;
  147. left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi;
  148. if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi
  149. if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi
  150. pickup tiny.nib; pos1(right_curve,0);
  151. pos2(vair,90); pos3(left_curve,180);
  152. y1=good.y bar_height; top y2r=h+vround 1.5oo; y0l=bot y1;
  153. rt x1r=hround min(w-.5u,w-u+.5right_curve);
  154. lft x3r=hround max(.5u,1.25u-.5left_curve); x2=.5w+.25u;
  155. {{interim superness:=more_super;
  156.  filldraw stroke super_arc.e(1,2)}};  % right bowl
  157. y3=.5[y2,y4]; bot y4r=-oo; x4=x2+.25u;
  158. if serifs: pos4(vair',270); pos5(hair,360);
  159.  y5=max(good.y(.5bar_height-.9),y4l+vair); x5r=x1r;
  160.  (x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u);
  161.  filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
  162.   ...{x5-x4,5(y5-y4)}z5e; % left bowl, arc, and terminal
  163. else: pos4(vair,270);
  164.  filldraw stroke super_arc.e(2,3) & super_arc.e(3,4);  % left bowl and arc
  165.  pickup fine.nib; pos4'(vair,270); z4=z4';
  166.  pos5(.5[vair,flare],275); rt x5r=hround(w-.6u);
  167.  y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
  168.  filldraw stroke term.e(4',5,right,1,4); fi  % terminal
  169. path testpath; testpath=super_arc.r(2,3) & super_arc.r(3,4);
  170. y1'r=y0r=y0l+.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1;
  171. forsuffixes $=l,r:
  172.  x0$=xpart(((0,y0$)--(x1,y0$)) intersectionpoint testpath); endfor
  173. fill stroke z0e--z1'e;  % crossbar
  174. penlabels(0,1,2,3,4,5); endchar;
  175.  
  176. dcchar "The letter f";
  177. beginchar("f",5.5u#,asc_height#,0);
  178. italco