home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fonts 1 / freshfonts1.bin / bbs / programs / amiga / metafont.lha / MF / INPUTS / AMSFONTS / cyrspu.mf < prev    next >
Text File  |  1991-07-03  |  13KB  |  280 lines

  1. %% @metafontfile{
  2. %%     filename="cyrspu.mf",
  3. %%     version="2.1",
  4. %%     date="30-MAY-1991",
  5. %%     filetype="Metafont: driver",
  6. %%     copyright="Copyright (C) Humanities and Arts Computing Center,
  7. %%            University of Washington;
  8. %%            all rights reserved.  Copying of this file is
  9. %%            authorized only if either:
  10. %%            (1) you make absolutely no changes to your copy
  11. %%                including name; OR
  12. %%            (2) if you do make changes, you first rename it to some
  13. %%                other name.",
  14. %%     author="American Mathematical Society",
  15. %%     address="American Mathematical Society,
  16. %%            Technical Support Group,
  17. %%            P. O. Box 6248,
  18. %%            Providence, RI 02940,
  19. %%            USA",
  20. %%     telephone="401-455-4080 or (in the USA) 800-321-4AMS",
  21. %%     email="Internet: Tech-Support@Math.AMS.com",
  22. %%     codetable="ISO/ASCII",
  23. %%     checksumtype="line count",
  24. %%     checksum="280",
  25. %%     keywords="amsfonts, tex, metafont , cyrillic ",
  26. %%     abstract="This is the driver file for use with 
  27. %%            the cyrillic fonts in AMSFonts 2.1."
  28. %%     }
  29. %
  30. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  31. % cyrspu Uppercase forms having distinct lowercase forms
  32. % including O
  33.  
  34. cmchar "The Russian letter A";
  35. beginchar("A",13u#,cap_height#,0);
  36. adjust_fit(cap_serif_fit#,cap_serif_fit#);
  37. numeric left_stem,right_stem,outer_jut,alpha;
  38. right_stem=cap_stem-stem_corr;
  39. left_stem=min(cap_hair if hefty: -3stem_corr fi,right_stem);
  40. outer_jut=.8cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0;
  41. x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o+apex_oo;
  42. alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
  43. penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
  44. penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
  45. z0=whatever[z1r,z2r]=whatever[z3l,z4l];
  46. if y0<h-cap_notch_cut: y0:=h-cap_notch_cut;
  47.  fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)
  48.   --diag_end(4r,3r,1,1,2l,1l)--diag_end(2l,1l,1,1,1r,2r){z2-z1}
  49.   ...{up}z0+.5left--cycle; % left and right diagonals
  50. else: fill z0--diag_end(0,4l,1,1,4r,3r)--diag_end(4r,3r,1,1,2l,1l)
  51.   --diag_end(2l,1l,1,1,1r,0)--cycle; fi % left and right diagonals
  52. penpos5(whatever,angle(z2-z1)); z5=whatever[z1,z2];
  53. penpos6(whatever,angle(z3-z4)); z6=whatever[z3,z4]; y6=y5;
  54. if hefty: y5r else: y5 fi =5/12y0;
  55. y5r-y5l=y6r-y6l=cap_band; penstroke z5e--z6e; % bar line
  56. if serifs: numeric inner_jut; pickup tiny.nib;
  57.  prime_points_inside(1,2); prime_points_inside(4,3);
  58.  if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut: inner_jut=cap_jut;
  59.  else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
  60.  dish_serif(1',2,a,1/2,outer_jut,b,.6,inner_jut)(dark);  % left serif
  61.  dish_serif(4',3,c,1/2,inner_jut,d,1/3,outer_jut); fi  % right serif
  62. penlabels(0,1,2,3,4,5,6); endchar;
  63.  
  64. cmchar "The Russian letter B";
  65. beginchar("B",12.5u#,cap_height#,0);
  66. italcorr .75cap_height#*slant-.5u#;
  67. adjust_fit(cap_serif_fit#,0);
  68. numeric left_stem,right_curve,middle_weight;
  69. left_stem=cap_stem-hround 2stem_corr; middle_weight=.6vair+.5;
  70. h:=vround(h-stem_corr);
  71. pickup tiny.nib; pos1(left_stem,0); pos2(left_stem,0);
  72. lft x1l=lft x2l=hround max(2u,3u-.5left_stem); top y1=h; bot y2=0;
  73. filldraw stroke z1e--z2e; % stem
  74. pickup crisp.nib;
  75. top y3r=h; x3=x1; pos3(slab,90); 
  76. rt x45r=hround(w-2u); y45=good.y(y3l-beak) - eps; pos45(hair,0);
  77. arm(3,45,e,beak_darkness,beak_jut);
  78. pickup tiny.nib;
  79. penpos4(cap_band,90);
  80. penpos6(middle_weight,-90); penpos7(middle_weight,-90);
  81. penpos8(middle_weight,90); penpos9(middle_weight,90);
  82. penpos5(right_curve-stem_corr,0); penpos10(right_curve,0);
  83. penpos11(cap_band,-90); penpos12(cap_band,-90);
  84. y4=y3; y5=.5[y4,y6]; y6=y7; y7l-y8l=vair;
  85. z12r=bot z2; y11=y12; y10=.5[y11,y9]; y8=y9; .5[y7l,y8l]=.52h;
  86. x4=x6; x9=x11=x4+.5u; x7=x8=x1; x9l:=x4+.25u;
  87. x5r=hround(w-1.5u); x10r=hround(w-u);
  88. if serifs: right_curve=cap_curve-stem_corr; x4=.5[x1,w-1.5u];
  89. else: right_curve=cap_curve-3stem_corr; x4=.5[x1,w-2.5u];
  90.  x4l:=x4l-.5u; x9l:=x9l-.5u; fi
  91. x6l:=x6l-.5u; x11l:=x11l-.5u;
  92. fill stroke z8e..super_arc.e(9,10) & super_arc.e(10,11)..z12e;  % lower lobe
  93. if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut);  % upper serif
  94.  nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi  % lower serif
  95. math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  96.  
  97. cmchar "The Russian letter E";
  98. beginchar("E",12u#-width_adj#,cap_height#,0);
  99. italcorr cap_height#*slant-beak_jut#-.5u#;
  100. adjust_fit(cap_serif_fit#,0);
  101. h:=vround(h-stem_corr);
  102. pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
  103. lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
  104. filldraw stroke z1e--z2e; % stem
  105. pickup crisp.nib; pos3(slab,90); pos4(hair,0);
  106. top y3r=h; x3=x1; rt x4r=hround(w-u); y4=good.y(y3l-beak)-eps;
  107. arm(3,4,e,beak_darkness,beak_jut);  % upper arm and beak
  108. pos5(cap_bar,-90); pos6(hair,0);
  109. top y5l=vround(.52[y2,y1]+.5cap_bar); x5=x1;
  110. pos0(cap_bar,90); pos7(hair,0);
  111. z0=z5; x6=x7; y6-y5l=y0l-y7;
  112. if serifs: rt x6r=hround(w-4.4u+.5hair); y6=good.y(y5l+.6beak)+eps;
  113.  rt x9r=hround(w-.5u);
  114. else: rt x6r=hround(w-1.5u); y6=y5l+eps; rt x9r=hround(w-.75u); fi
  115. arm(5,6,f,beak_darkness,0); arm(0,7,g,beak_darkness,0);  % middle arm and serif
  116. pos8(slab if not serifs:+2stem_corr fi,-90); pos9(hair,0);
  117. bot y8r=0; x8=x2; y9=good.y(y8l+7/6beak)+eps;
  118. arm(8,9,h,beak_darkness,1.5beak_jut);  % lower arm and beak
  119. if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut);  % upper serif
  120.  nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi  % lower serif
  121. math_fit(0,.5ic#); penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  122.  
  123. cmchar "The Russian letter EF (looks like Phi)";
  124. beginchar("F",13u#,cap_height#,0);
  125. italcorr .5cap_height#*slant-.5u#;
  126. adjust_fit(0,0);
  127. numeric shaved_stem,light_curve;
  128. shaved_stem=cap_stem-hround 2stem_corr;
  129. light_curve=cap_curve-hround stem_corr;
  130. pickup tiny.nib; pos1(shaved_stem,0); pos2(shaved_stem,0);
  131. %lft x1l=lft x2l=hround(.5w-.5cap_stem); 
  132. x1=x2=.5w;
  133. top y1=h; bot y2=0;
  134. filldraw stroke z1e--z2e; % stem
  135. penpos3(vair,90); penpos5(vair,-90);
  136. penpos4(light_curve,180); penpos6(light_curve,0);
  137. x4r=hround u; x6r=w-x4r; x3=x5=.5w;
  138. y3r=vround(.85h if serifs:-slab fi); y4=y6=.5[y3,y5];
  139. y5r=vround(.15h if serifs:+slab fi);
  140. penstroke pulled_arc.e(3,4) & pulled_arc.e(4,5)
  141.  & pulled_arc.e(5,6) & pulled_arc.e(6,3) & cycle;  % bowl
  142. if serifs: dish_serif(1,2,a,1/3,1.25cap_jut,b,1/3,1.25cap_jut);  % upper serif
  143.  dish_serif(2,1,c,1/3,1.25cap_jut,d,1/3,1.25cap_jut); fi  % lower serif
  144. math_fit(-.5cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6); endchar;
  145.  
  146. cmchar "The Serbian letter JE";
  147. beginchar("J",9u#,cap_height#,0);
  148. italcorr cap_height#*slant-cap_serif_fit#
  149.  +.75cap_jut#-2.5u#+min(.5cap_stem#,u#);
  150. adjust_fit(0,cap_serif_fit#);
  151. pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0);
  152. top y1=h; rt x1r=hround(w-2u); x2=x1; y2=.21h;
  153. if serifs: pos3(vair,-90); pos4(cap_hair,-180);
  154.  pos5(flare+(cap_stem-stem),-180);
  155.  bot y3r=-o; x3=.5[x4,x2]; y5=1/6h; rt x5l=hround 2.75u; z5r=z4r;
  156.  filldraw stroke z1e--z2e&super_arc.e(2,3);  % stem and arc
  157.  dish_serif(1,2,a,1/3,1.3cap_jut,b,1/3,.75cap_jut);  % serif
  158.  bulb(3,4,5);  % bulb
  159. else: filldraw stroke z1e--z2e;  % stem
  160.  pickup fine.nib; pos3(cap_stem',0); z3=z2;
  161.  pos4(flare,angle(6.5u,-h)); pos5(1.1flare,-100);
  162.  bot y4r=-o; x4r=.5[x5r,x3r]; lft x5r=hround.75u; bot y5r=vround.06h-o;
  163.  filldraw stroke z3e{down}....term.e(4,5,left,1,4); fi % arc and terminal
  164. math_fit(0,.5ic#-.5u#); penlabels(1,2,3,4,5); endchar;
  165.  
  166. cmchar "The Russian letter O";
  167. beginchar("O",14u#-width_adj#,cap_height#,0);
  168. italcorr .7cap_height#*slant-.5u#;
  169. adjust_fit(0,0);
  170. penpos1(vair',90); penpos3(vround(vair+1.5vair_corr),-90);
  171. penpos2(cap_curve,180); penpos4(cap_curve,0);
  172. if monospace: x2r=hround 1.5u;
  173.  interim superness:=sqrt superness;  % make |"O"|, not |"0"|
  174. else: x2r=hround u; fi
  175. x4r=w-x2r; x1=x3=.5w; y1r=h+o; y3r=-o;
  176. y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
  177. penstroke pulled_super_arc.e(1,2)(.5superpull)
  178.  & pulled_super_arc.e(2,3)(.5superpull)
  179.  & pulled_super_arc.e(3,4)(.5superpull)
  180.  & pulled_super_arc.e(4,1)(.5superpull) & cycle;  % bowl
  181. math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#); penlabels(1,2,3,4); endchar;
  182.  
  183. cmchar "The Russian letter ER (looks like P)";
  184. beginchar("R",12u#,cap_height#,0);
  185. italcorr .75cap_h