home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / text / pastex-1.3-2of8.lha / PasTeX / mf / inputs / cyrpunc.mf < prev    next >
Text File  |  1991-07-03  |  33KB  |  782 lines

  1. %% @metafontfile{
  2. %%     filename="cyrpunc.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="782",
  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. % cyrpunc punctuation and digits for cyrillic
  32.  
  33. cmchar "Exclamation point";
  34. beginchar("!",5u#+width_adj#,asc_height#,0);
  35. italcorr asc_height#*slant-2u#-.5width_adj#+.5dot_size#;
  36. adjust_fit(0,0);
  37. pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90);
  38. lft x3l=hround(.5w-.5dot_size); bot y4l=0; z3=z4; dot(3,4);  % dot
  39. numeric bot_width;
  40. bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
  41. pickup fine.nib; pos1(dot_size,0); pos2(bot_width,0);
  42. x1=x2=x3; bot y2=.25[top y4r,x_height]+1;
  43. if square_dots: top y1=h;
  44.  filldraw stroke z1e--z2e;  % stem
  45. else: top z0=(x1,h+o); y1+.5dot_size=h+o;
  46.  filldraw z1r...z0...z1l---z2l--z2r---cycle; fi  % stem and bulb
  47. penlabels(0,1,2,3,4); endchar;
  48.  
  49. cmchar "Per cent sign";
  50. beginchar("%",9u#+max(6u#,2fudge*(hair#+stem#)),
  51.   body_height#,body_height#-asc_height#);
  52. italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi;
  53. adjust_fit(0,0); pickup fine.nib;
  54. numeric left_curve,right_curve;
  55. left_curve=hround 5/6[fudged.hair,fudged.stem];
  56. right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi));
  57. pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360);
  58. top y1r=h; lft x2r=hround u; rt x4r=hround(.5w-1.5u);
  59. bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height);
  60. x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3];
  61. filldraw stroke pulled_super_arc.e(1,2)(superpull)
  62.  & pulled_super_arc.e(2,3)(superpull);  % left half of upper bowl
  63. filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl
  64. pos5(vair,90); pos6(left_curve,180); pos7(vair,270); pos8(right_curve,360);
  65. bot y7r=-d; rt x8r=hround(w-u); lft x6r=hround(.5w+1.5u);
  66. top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height);
  67. x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7];
  68. filldraw stroke pulled_super_arc.e(5,6)(superpull)
  69.  & pulled_super_arc.e(6,7)(superpull);  % left half of lower bowl
  70. filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl
  71. pickup rule.nib; top y9=h; bot y10=-d;
  72. if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps);
  73.  draw z9--z10;  % diagonal
  74. else: rt x9=hround(w-2.5u); lft x10=hround 2.5u; draw z9--z10;  % diagonal
  75.  pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90);
  76.  pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90);
  77.  path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r;
  78.  filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi  % link
  79. penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  80.  
  81. cmchar "Apostrophe";
  82. beginchar("'",5u#,asc_height#,0);
  83. italcorr asc_height#*slant+.5dot_size#-2u#;
  84. adjust_fit(0,0);
  85. x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h;
  86. if monospace: comma(1,a,dot_size,.28u,vround 1.5comma_depth);  % large comma
  87. else: comma(1,a,dot_size,.25u,comma_depth); fi  % comma with increased jut
  88. penlabels(1); endchar;
  89.  
  90. cmchar "Left parenthesis";
  91. beginchar("(",7u# if monospace: -u# fi,body_height#,paren_depth#);
  92. italcorr body_height#*slant-.5u#;
  93. adjust_fit(0,0); pickup fine.nib;
  94. pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
  95. rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u if monospace: +4/3u fi);
  96. top y1=h; y2=.5[y1,y3]=math_axis;
  97. filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
  98.  ...{3(x3e-x2e),y3-y2}z3e;  % arc
  99. penlabels(1,2,3); endchar;
  100.  
  101. cmchar "Right parenthesis";
  102. beginchar(")",7u# if monospace: -u# fi,body_height#,paren_depth#);
  103. italcorr math_axis#*slant-.5u#;
  104. adjust_fit(0,0); pickup fine.nib;
  105. pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
  106. lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u if monospace: -4/3u fi);
  107. top y1=h; y2=.5[y1,y3]=math_axis;
  108. filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
  109.  ...{3(x3e-x2e),y3-y2}z3e;  % arc
  110. penlabels(1,2,3); endchar;
  111.  
  112. cmchar "Asterisk";
  113. beginchar("*",9u#,
  114.   if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0);
  115. italcorr h#*slant-.75u#;
  116. adjust_fit(0,0);
  117. numeric ast_flare; ast_flare=hround .7[thin_join,stem];
  118. x0=.5w; y0=h-.5x_height;
  119. for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
  120.  numeric theta; theta=angle(z[d]-z0);
  121.  fill z0+.5(0,-thin_join)rotated theta
  122.   ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
  123.   ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
  124.   ---z0+.5(0,thin_join)rotated theta--cycle; endfor  % diagonal at angle |d|
  125. labels(0,[-150],[-90],[-30],30,90,150); endchar;
  126.  
  127. cmchar "Comma";
  128. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  129. define_whole_blacker_pixels(dot_diam);
  130. beginchar(",",5u#,dot_diam#,comma_depth#);
  131. adjust_fit(0,0);
  132. x1-.5dot_diam=hround(.5w-.5dot_diam); y1-.5dot_diam=0;
  133. comma(1,a,dot_diam,.2u,comma_depth);  % dot and tail
  134. penlabels(1); endchar;
  135.  
  136. cmchar "Hyphen";
  137. beginchar("-",6u#,x_height#,0);
  138. italcorr .5x_height#*slant-.5u#;
  139. adjust_fit(0,0);
  140. numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi;
  141. pickup crisp.nib; pos1(thickness,90); pos2(thickness,90);
  142. top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps;
  143. if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi;
  144. filldraw stroke z1e--z2e;  % bar
  145. penlabels(1,2); endchar;
  146.  
  147. cmchar "Period";
  148. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  149. define_whole_blacker_pixels(dot_diam);
  150. beginchar(".",5u#,dot_diam#,0);
  151. adjust_fit(0,0); pickup fine.nib;
  152. pos1(dot_diam,0); pos2(dot_diam,90);
  153. lft x1l=hround(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2);  % dot
  154. penlabels(1,2); endchar;
  155.  
  156. cmchar "Virgule (slash)";
  157. beginchar("/",9u#,body_height#,paren_depth#);
  158. italcorr body_height#*slant-.5u#;
  159. adjust_fit(0,0); pickup rule.nib;
  160. rt x1=hround(w-u)+eps; top y1=h+eps;
  161. lft x2=hround u-eps; bot y2=-d-eps;
  162. draw z1--z2;  % diagonal
  163. penlabels(1,2); endchar;
  164.  
  165. cmchar "Colon";
  166. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  167. define_whole_blacker_pixels(dot_diam);
  168. beginchar(":",5u#,x_height#,0);
  169. italcorr x_height#*slant+.5dot_diam#-2u#;
  170. adjust_fit(0,0); pickup fine.nib;
  171. pos1(dot_diam,0); pos2(dot_diam,90);
  172. lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2);  % upper dot
  173. pos3(dot_diam,0); pos4(dot_diam,90);
  174. x3=x1; bot y4l=0; z3=z4; dot(3,4);  % lower dot
  175. penlabels(1,2,3,4); endchar;
  176.  
  177. cmchar "Semicolon";
  178. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  179. define_whole_blacker_pixels(dot_diam);
  180. beginchar(";",5u#,x_height#,comma_depth#);
  181. italcorr x_height#*slant+.5dot_diam#-2u#;
  182. adjust_fit(0,0); pickup fine.nib;
  183. pos1(dot_diam,0); pos2(dot_diam,90);
  184. lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2);  % upper dot
  185. x3-.5dot_diam=hround(.5w-.5dot_diam); y3-.5dot_diam=0;
  186. comma(3,a,dot_diam,.05u,comma_depth);  % lower dot and tail
  187. penlabels(1,2,3); endchar;
  188.  
  189. cmchar "Question mark";
  190. beginchar("?",8.5u#,asc_height#,0);
  191. italcorr .8asc_height#*slant;
  192. adjust_fit(0,0);
  193. pickup tiny.nib; pos7(dot_size,0); pos8(dot_size,90);
  194. lft x7l=hround(.5w-.25u-.5dot_size); bot y8l=0; z7=z8; dot(7,8);  % dot
  195. numeric bot_width;
  196. bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
  197. pickup fine.nib; pos2(vair,90); pos3(curve,0);
  198. pos4(vair,-90); pos5(bot_width,0); pos6(bot_width,0);
  199. x2=x4=x5=x6=x7; rt x3r=hround(w-u); bot y6=1+.25[top y8r,x_height];
  200. top y2r=h+oo; y3=.75[y6,y2]; y4=.5[y6,y2]; y5=.1