home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fonts 1
/
freshfonts1.bin
/
bbs
/
programs
/
amiga
/
metafont.lha
/
MF
/
INPUTS
/
LATEX
/
lasy.mf
< prev
next >
Wrap
Text File
|
1992-03-19
|
14KB
|
376 lines
font_identifier:="LASY";
font_coding_scheme:="LaTeX symbols";
% Here we steal a bit from mathsy
mode_setup; font_setup;
autorounding:=0;
font_slant slant; font_x_height x_height#;
font_quad 18u# if not monospace:+4letter_fit# fi;
slant:=mono_charic#:=0; % the remaining characters will not be slanted
currenttransform:=identity yscaled aspect_ratio scaled granularity;
cmchar "Leftward arrowhead";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"050",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(oct"051",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(oct"052",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(oct"053",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 "Square subset sign";
compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
beginchar(oct"074",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(oct"075",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#));
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 "Square";
beginchar(oct"062",2.1math_axis#+4u#,v_center(7u#));
italcorr math_axis#*slant;
adjust_fit(0,0); pickup rule.nib;
numeric a; a=round(2.1math_axis);
x1=x4=good.x 2u; x2=x3=x1+a;
y3=y4=.5(cap_height-a); y1=y2=y3+a;
draw z1--z2--z3--z4--cycle;
labels(1,2,3,4); endchar;
% The size of this character is related to the diamond character, it's
% sightly larger.
% It is NOT the diamond character which has been rotated
% Vertical alignment raised to .5 cap height from math-axis height
% 2 units of sidebearing space on each side, since vertical lines usually
% need a little more space, actually it's 2 units-.5rule.nib
cmchar "Bowtie operator";
beginchar(oct"061",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--c