diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/wasy/lasychr.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/wasy/lasychr.mf | 388 |
1 files changed, 388 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/wasy/lasychr.mf b/Master/texmf-dist/fonts/source/public/wasy/lasychr.mf new file mode 100644 index 00000000000..0c94770291e --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/wasy/lasychr.mf @@ -0,0 +1,388 @@ +% +% Copyright, The LaTeX Project and Roland Waldi, 1992. +% +% These characters are taken from LASY.MF from the LaTeX project with minor +% changes and extensions (so 100% compatible). LASY.MF is part of the +% "LaTeX fonts" package which is usually part of every LaTeX system. It +% is also available at the URL +% ftp://ftp.dante.de/tex-archive/fonts/latex/ +% +% Permission is granted without fee to use, modify and distribute this +% file, but you are not allowed to distribute this file or any files +% derived from it using the name LASY.MF. +% + +cmchar "Leftward arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"28",6u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; lft x0=hround u; +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t[]; path p[]; +(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r); +z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r); +filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the leftward arrow +% The tip of the arrowhead rests one unit from left edge, same as left arrow +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) new intersectinpoint z10 is introduced and path slightly altered +% 3) name, code number and width changed, otherwise essentially the same + + + +cmchar "Rightward arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"29",6u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; rt x0=hround(w-u); +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t[]; path p[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the rightward arrow +% The tip of the arrowhead rests one unit from right edge, same as right arrow +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) new intersectinpoint z10 is introduced and path slightly altered +% 3) name, code number and width changed, otherwise essentially the same + + + +cmchar "Upward arrowhead"; +beginchar(hex"2A",9u#,asc_height#,asc_depth#); +italcorr .76asc_height#*slant+.5crisp#-u#; +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,90); pos4(bar,90); +top z0=(.5w,0); x0-x3=x4-x0=3u+eps; +y3=y4=y0-.24asc_height-eps; +pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t[]; path p[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the upward arrow +% The tip of the arrowhead rests on the baseline for reference +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) point z0 is moved down from the ascender line; the tip touches +% the baseline +% 3) new intersectinpoint z10 is introduced and path slightly altered +% 4) name and code number changed, otherwise essentially the same + + + +cmchar "Downward arrowhead"; +beginchar(hex"2B",9u#,asc_height#,asc_depth#); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,90); pos4(bar,90); +bot z0=(.5w,0); x0-x3=x4-x0=3u+eps; +y3=y4=y0+.24asc_height+eps; +pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; % z9 iintroduces curve to arrowhead +numeric t[]; path p[]; % rather direction{z9-z4} does this +(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r); +z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r); +filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the downward arrow +% The tip of the arrowhead rests on the baseline for reference +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) point z0 is moved up from the descender line to rest on the baseline +% 3) new intersectinpoint z10 is introduced and path slightly altered +% 4) name and code number changed, otherwise essentially the same + + +cmchar "Upside-down Uppercase Greek Omega"; +beginchar(hex"30",13u#,cap_height#,0); +italcorr cap_height#*slant-.35u#; %italcorr .75cap_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; pos1(vair,-90); pos2(cap_curve,0); +pos3(vair,0); pos4(cap_curve,180); pos5(vair,180); +x1=.5w; bot y1r=0-o; lft x4r=hround u; y2=y4=1/3h; x2=w-x4; +rt x5l=hround(1/3(w+.5u)+.5hair); top y3=top y5=h; x3=w-x5; +filldraw stroke z3e{down}...{down}z2e + & pulled_super_arc.e(2,1)(.5superpull) + & pulled_super_arc.e(1,4)(.5superpull) + & z4e{up}...{up}z5e; % bowl +numeric arm_thickness; path p; p=z3{down}...{down}z2; +arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi); +pickup crisp.nib; pos6(arm_thickness,90); pos7(fudged.hair,0); +top y6r=h; x6=x3; rt x7r=hround (w-.8u); y7=good.y(y6l-.5beak)+eps; +(x,y)=p intersectionpoint((0,y6l)--(w+h,y6l)); x6l:=x; +arm(6,7,a,.5beak_darkness,1.2beak_jut); % right arm and beak +pos8(arm_thickness,90); pos9(fudged.hair,180); +y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l; +arm(8,9,b,.5beak_darkness,-1.2beak_jut); % left arm and beak +math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar; + +% This character is taken from the Upper Case Omega of cmr +% Directions and reference points are reversed and flipped +% pos angles are flipped by 180 degrees +% vertical values are reversed, up/down directions in the +% filldraw stroke are reversed +% left strokes same, but changes reference points +% italic correction based on furthest pont of character , so made it +% full cap_height minus amount for the beak, taken from the cap XI +% I suppose a transformation of paths would have worked also, but this +% way, limits are maintained better, i think +% w+h instead of just w in intersection to make sure paths do intersect + +cmchar "Square subset sign"; +compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$' +beginchar(hex"3C",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround(1.5u+oo); x1=x4=hround(w-1.5u)+eps; x3=x2; +y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread; +draw z1--z2--z3--z4; % bars and stem +labels(1,2,3,4); endchar; + +% This character is an alteration of the square subset or equal to sign +% Changes: +% 1) changed position of y1 to be .5 of the spread above the math_axis +% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount +% which was used in calculations for the lower bar +% 3) name and code number and height changed, otherwise essentially the same + +cmchar "Square superset sign"; +compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$' +beginchar(hex"3D",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +x1=x4=hround 1.5u-eps; rt x2=hround(w-1.5u-oo); x3=x2; +y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread; +draw z1--z2--z3--z4; % bars and stem +labels(1,2,3,4); endchar; + +% This character is an alteration of the square superset or equal to sign +% Changes: +% 1) changed position of y1 to be .5 of the spread above the math_axis +% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount +% which was used in calculations for the lower bar +% 3) name and code number and height changed, otherwise essentially the same + +cmchar "Diamond"; +%beginchar(oct"063",2(.85asc_height#-math_axis#)+2u#,v_center(7u#)); +beginchar(hex"33",2(.85asc_height#-math_axis#)+2u#, + v_center(2(.85asc_height#-math_axis#))); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=.85asc_height-math_axis; +x4=x8=good.x .5w; w:=r:=2x4; rt x2=w-lft x6=good.x(x4+a); +y2=y6=.5[y4,y8]=.5cap_height; top y8=good.y(y2+a); +draw z2--z4--z6--z8--cycle; +labels(2,4,6,8); endchar; + +% This character is an alteration of the diamond operator +% The four tips are equidistant from the center point (.5w,math_axis), +% this distance being half of the cap height +% and related to that in the square character +% slightly less though, since it looks too big if the actually have same +% length +% Changes: +% 1) To the amount a, which gives the distance of the tips from the center +% 2) The width is related to the asc_height, so it changes with it +% 3) name and code number and width changed, otherwise essentially the same +% The numbers stay the same, for any referencing + +cmchar "Bowtie operator"; +beginchar(hex"31",13u#,v_center(7u#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(1.1*math_axis); +x1=x4=good.x 1.5u; x2=x3=w-x1; +y1=y2=good.y(.5(cap_height-2a)); y3=y4=y1+2a; +draw z1--z3--z2--z4--cycle; +labels(1,2,3,4); endchar; + +% Arbitrary width given +% Length of the bars at the edges are 2.2*math_axis length +% and it's vertically aligned on the high, i.e., .5 cap height as opposed +% to being aligned on the math axis + + + + +cmchar "Leads to character extension"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"3A",12u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(.45math_axis); +y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis; +x11=0; x15=w; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; +path p; p=z12{right}...z13...z14{right}; +draw z11{dir(-angle direction 1 of p)}...z12{right}...z13... + z14{right}...z15{dir(-angle direction 1 of p)}; +penlabels(11,12,13,14,15); endchar; + +% This character is an extension to fit with the Leads to character with +% arrowhead +% This character goes from edge to edge and a series of these can be linked +% as desired. +% It has 2/3 the width of that character, and if this relation is kept, the +% the curves should all match + + + +cmchar "Leads to character with arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"3B",18u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; rt x0=hround(w-u); +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t[]; path p[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +pickup rule.nib; +numeric a; a=round(.45math_axis); +y11=y13=y15=y16=y0; y12-a=y14+a=good.y math_axis; +%x11=0; x15=2/3w; z17=lft z10; +%x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.3[x15,x0]; +x11=0; x15=0.7w; z17=lft z10; +x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.5[x15,x0]; +path p; p=z12{right}...z13...z14{right}; +draw z11{dir(-angle direction 1 of p)}... + z12{right}...z13...z14{right}...z16{right}...z17; +penlabels(0,3,4,5,6,9,10,11,12,13,14,15,16); endchar; + +% This character uses the rightward arrow arrowhead +% The width is the same as that of the regular arrow +% An extension character can be added for longer squiggles + + +cmchar "LASY \lhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(1,14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +draw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +% taken directly from CMR "less than" character +% the path was closed to make a triangle + +cmchar "black LASY \lhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(16,14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup crisp.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + + +cmchar "LASY \unlhd triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(2,14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3--cycle; % triangle +x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar +labels(1,2,3,8,9); endchar; + +% taken directly from CMR "less than or equal to sign" +% the "less than" path was closed to make a triangle + + + +cmchar "LASY \rhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(3,14u#,v_center(spread#+rule_thickness#)); +italcorr math_axis#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +draw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +% taken directly from CMR "greater than" character +% the path was closed to make a triangle + +cmchar "black LASY \rhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(17,14u#,v_center(spread#+rule_thickness#)); +italcorr math_axis#*slant-u#; +adjust_fit(0,0); pickup crisp.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +cmchar "LASY \unrhd triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(4,14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.5u-eps; x2=w-x1; x3=x1; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3--cycle; % triangle +x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar +labels(1,2,3,8,9); endchar; + +% taken directly from CMR "greater than or equal to sign" +% the "greater than" path was closed to make a triangle + +cmchar "upwards pointing black triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"4B",spread#+rule_thickness#,v_center(11u#)); +italcorr 0; +adjust_fit(0,0); pickup crisp.nib; +top y2= h+eps; y1=y3; y2-y1 = vround (h+d); +x1-x3=spread; x2=.5[x1,x3]=good.x .5w; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +cmchar "downwards pointing black triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"4C",spread#+rule_thickness#,v_center(11u#)); +italcorr 0; +adjust_fit(0,0); pickup crisp.nib; +bot y2= (-d)-eps; y1=y3; y1-y2 = vround (h+d); +x1-x3=spread; x2=.5[x1,x3]=good.x .5w; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + |