summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/feyn
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
commit215012a8d684889983ec2c0629e1c704e6853d9c (patch)
treeebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/feyn
parent1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (diff)
trunk/Master/texmf-dist/fonts/source
git-svn-id: svn://tug.org/texlive/trunk@101 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/feyn')
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyn.mf274
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyn10.mf37
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyn11.mf37
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyn12.mf37
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feynmac.mf188
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyntext10.mf37
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyntext11.mf37
-rw-r--r--Master/texmf-dist/fonts/source/public/feyn/feyntext12.mf37
8 files changed, 684 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyn.mf b/Master/texmf-dist/fonts/source/public/feyn/feyn.mf
new file mode 100644
index 00000000000..fe748a05fb7
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyn.mf
@@ -0,0 +1,274 @@
+% This is the metafont for the feynfont font.
+%
+% When I look at the property list of the generated TFM (using
+% tftopl) it starts with `(FAMILY CMR)': but this isn't in the cmr
+% family. I can't find anything in cmbase.mf which would cause
+% this. Perhaps I need to read the Metafont Book more closely.
+%
+% $Id: feyn.mf,v 1.6 2002/04/18 22:32:10 norman Exp $
+
+
+mode_setup; font_setup;
+
+% a# is the position of the characters above the baseline.
+a# := math_axis#; % math_axis is defined by cmr
+
+% Feyn macros
+input feynmac;
+
+define_pixels (module,bigarrow,littlearrow,blobr,a);
+define_blacker_pixels (linewidth,thinlinewidth);
+
+pickup pencircle scaled linewidth;
+diagram_pen := savepen;
+
+% general definitions
+phangle := 75;
+
+
+% All the character positions between 0 and hex"7F"
+% have characters in them. Not all of these characters are ones
+% which should appear on paper; some (such as `s' or `l') only
+% appear in ligatures, and others shouldn't appear at all. If,
+% however, there are no characters in these positions, some DVI
+% readers (including TFtoPL and OzTeX for example) complain about a
+% `bad TFM file'. These locations are therefore occupied by the
+% character generated by the errorchar macro, which is 0pt wide, and
+% 1module# high. This character doesn't generate any real error,
+% but the glyph will be manifestly peculiar on paper.
+
+
+gfermion (0, -45);
+gfermion (1, 45);
+gfermion (2, 90);
+
+beginchar (3, 0, module#, 0); errorchar (h); endchar;
+
+gboson (4, -45, 1, 0);
+gboson (5, 45, 1, 0);
+gboson (6, 90, 1, 0);
+gboson (7, 90, 0.85, 0);
+gboson (8, 90, 1.7, 1);
+
+for c=hex"09" upto hex"0F":
+ beginchar (c, 0, module#, 0); errorchar (h); endchar;
+endfor
+
+gghost (hex"10", -45);
+gghost (hex"11", 45);
+
+for c=hex"12" upto hex"1F":
+ beginchar (c, 0, module#, 0); errorchar (h); endchar;
+endfor
+
+gbhalfloop (hex"20", 1.3, 9, 0); % small loop
+gbhalfloop (hex"21", 3, 13, 0); % large loop
+
+beginchar (hex"22", 0, module#, 0); errorchar (h); endchar;
+beginchar (hex"23", 0, module#, 0); errorchar (h); endchar;
+beginchar (hex"24", 0, module#, 0); errorchar (h); endchar;
+beginchar (hex"25", 0, module#, 0); errorchar (h); endchar;
+beginchar (hex"26", 0, module#, 0); errorchar (h); endchar;
+beginchar (hex"27", 0, module#, 0); errorchar (h); endchar;
+
+garrow (hex"28", 0, 0);
+garrow (hex"29", 45, 0);
+garrow (hex"2A", 90, 0);
+garrow (hex"2B", 135, 0);
+garrow (hex"2C", 180, 0);
+garrow (hex"2D", 225, 0);
+garrow (hex"2E", 270, 0);
+garrow (hex"2F", 315, 0);
+
+% Digits 0x30--0x39 go here. Obtain these from the cmr source file: romand.mf.
+input romand;
+
+for c=hex"3A" upto hex"5F":
+ beginchar (c, 0, module#, 0); errorchar (h); endchar;
+endfor
+
+beginchar (hex"60", 2module#, 0, 0); "spacer";
+endchar;
+
+garrow ("a", 0, 1); "arrow";
+
+beginchar ("b", module#, 0, 0); "short spacer";
+ % A previous version of this font had this curious construction, without
+ % explanation. I don't know why it was thought necessary. It seems
+ % to result in a hairline being put in this character. Remove it
+ % for the moment.
+ %pickup pencircle scaled 0pt;
+ %draw (0,0) .. (w,0);
+endchar;
+
+beginchar ("c", 2blobr#, blobr# + a#, blobr#); "complete vertex";
+ pen;
+ draw (0,a) .. (w,a) .. cycle;
+endchar;
+
+beginchar ("d", module#/2, 0, 0); "weeny fermion";
+ pen;
+ draw (0,a)..(w,a);
+endchar;
+
+beginchar ("e", module#, 0, 0); "short fermion";
+ pen;
+ draw (0,a)..(w,a);
+endchar;
+
+beginchar ("f", 2module#, 0, 0); "fermion";
+ pen;
+ draw (0,a)..(w,a);
+endchar;
+
+beginchar ("g", 2module#, 0, 0);
+ pen; "gauge boson";
+ def ::(expr b) = {dir b} looselink {dir -b} enddef;
+ z1 = (0,a); z5 = (w,a);
+ z2-z1 = z3-z2 = z4-z3 = z5-z4;
+ draw z1 ::(phangle) z2 ::(-phangle) z3 ::(phangle) z4 ::(-phangle) z5;
+endchar;
+
+beginchar ("h", 2module#, 0, 0); "ghost";
+ pen;
+ z1 = (0,a); z10 = (w,a);
+ z4-z3 = 2(z2-z1);
+ z4-z3 = z6-z5 = z8-z7;
+ z2-z1 = z3-z2 = z5-z4 = z7-z6 = z9-z8 = z10-z9;
+ draw z1..z2; draw z3..z4; draw z5..z6; draw z7..z8; draw z9..z10;
+endchar;
+
+beginchar ("i", module#, 0, 0); "short ghost";
+ pen;
+ z1 = (0,a); z6 = (w,a);
+ z4-z3 = 2(z2-z1);
+ z2-z1 = z3-z2 = 1/2(z4-z3) = z5-z4 = z6-z5;
+ draw z1..z2; draw z3..z4; draw z5..z6;
+endchar;
+
+beginchar ("j", 0, module#, 0); errorchar (h); endchar;
+
+beginchar ("k", module#/2, 0, 0); "weeny massive fermion";
+ pen;
+ y1 - a = y2 - a = a - y3 = a - y4 = module#/3.5;
+ x1 = x3 = 0;
+ x2 = x4 = w;
+ draw z1--z2;
+ draw z3--z4;
+endchar;
+
+beginchar ("l", module#, 0, 0); "short massive fermion";
+ pen;
+ y1 - a = y2 - a = a - y3 = a - y4 = module#/3.5;
+ x1 = x3 = 0;
+ x2 = x4 = w;
+ draw z1--z2;
+ draw z3--z4;
+endchar;
+
+beginchar ("m", 2module#, 0, 0); "massive fermion";
+ pen;
+ y1 - a = y2 - a = a - y3 = a - y4 = module#/3.5;
+ x1 = x3 = 0;
+ x2 = x4 = w;
+ draw z1--z2;
+ draw z3--z4;
+endchar;
+
+beginchar ("n", 4module#, 2module#-a#, 2module#-a#);
+ pen; "fermion loop";
+ z0 = (0,a); z1 = (w,a);
+ draw z0{dir phangle} ..tension 1.15.. {dir -phangle}z1;
+ draw z0{dir -phangle} ..tension 1.15.. {dir phangle}z1;
+endchar;
+
+gbhalfloop ("o", 2, 11, 0); % gauge boson half loop";
+
+beginchar ("p", 2blobr#, blobr# + a#, blobr# - a#);
+ pen; "proper vertex";
+ picture p[];
+ pair t[];
+ fill (-blobr, 0) .. (blobr, 0) .. cycle;
+ p1 := currentpicture; clearit;
+ draw (-blobr, 0) .. (blobr, 0) .. cycle;
+ p2 := currentpicture; clearit;
+ t1 = 5/6[origin, (0,blobr)] shifted (-blobr, 0);
+ t7 = 5/6[origin, (0,blobr)] shifted (+blobr, 0);
+ forsuffixes s = 2,3,4,5,6 :
+ t[s] = t[s-1] shifted (0, -blobr/3);
+ t[s+6] = t[s+5] shifted (0, -blobr/3);
+ endfor
+ forsuffixes s = 1,2,3,4,5,6,7,8,9,10,11,12 :
+ z[s] = t[s] rotated 45;
+ endfor
+ forsuffixes s = 1,2,3,4,5,6 :
+ draw z[s] -- z[s+6];
+ endfor
+ addto currentpicture also p1;
+ cull currentpicture keeping (2,2); % & the two pictures
+ addto currentpicture also p2;
+ currentpicture := currentpicture shifted (blobr,a);
+ labels (range 1 thru 12);
+endchar;
+
+beginchar ("q", 0, module#, 0); errorchar(h); endchar;
+beginchar ("r", 0, module#, 0); errorchar(h); endchar;
+beginchar ("s", 0, module#, 0); errorchar(h); endchar;
+beginchar ("t", 0, module#, 0); errorchar(h); endchar;
+beginchar ("u", 0, module#, 0); errorchar(h); endchar;
+beginchar ("v", 0, module#, 0); errorchar(h); endchar;
+
+gbhalfloop ("w", 2, 11, 1); % "gauge boson (half) loop, inverted";
+
+beginchar ("x", 0, blobr#/sqrt 2 + a# , blobr#/sqrt2 - a#); "counterterm";
+ pen;
+ -x1 = -x2 = x3 = x4;
+ y1 = -y2 = y3 = -y4;
+ z3 = (2blobr/3, 0) rotated 45;
+ draw z1 .. z4;
+ draw z2 .. z3;
+ currentpicture := currentpicture shifted (0,a);
+endchar;
+
+beginchar ("y", 0, module#, 0); errorchar(h); endchar;
+beginchar ("z", 0, module#, 0); errorchar(h); endchar;
+beginchar (hex"7b", 0, module#, 0); errorchar(h); endchar;
+beginchar (hex"7c", 0, module#, 0); errorchar(h); endchar;
+beginchar (hex"7d", 0, module#, 0); errorchar(h); endchar;
+beginchar (hex"7e", 0, module#, 0); errorchar(h); endchar;
+
+beginchar (hex"7F", module#, a#, 0); "space block";
+ pen;
+ draw origin--(w,h);
+ draw (0,h)--(w,0);
+ % nothing
+endchar;
+
+
+% Construct the ligature tables.
+ligtable "f" : % fermion
+ "s" =: hex"65", % short
+ "u" =: hex"01", % up
+ "d" =: hex"00", % down
+ "v" =: hex"02", % vertical
+ "l" =: hex"6e", % loop
+ "0" =: hex"60"; % spacer
+ligtable hex"65" : % short fermion
+ "0" =: hex"62"; % short spacer
+ligtable "m" :
+ "s" =: hex"6c"; % short massive
+ligtable "g" : % gauge boson
+ "l" =: hex"6F", % loop
+ "u" =: hex"05", % up
+ "d" =: hex"04", % down
+ "v" =: hex"06"; % vertical
+ligtable hex"06" : % vertical boson
+ "s" =: hex"07", % short
+ "b" =: hex"08"; % big
+ligtable hex"6F" : % gauge boson loop
+ "u" =: hex"77"; % lower loop
+ligtable "h" : % ghost
+ "s" =: "i", % short
+ "u" =: hex"11", % up
+ "d" =: hex"10"; % down
+
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyn10.mf b/Master/texmf-dist/fonts/source/public/feyn/feyn10.mf
new file mode 100644
index 00000000000..6c6e926d19b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyn10.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 10pt display size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyn10.mf,v 1.6 2001/08/20 21:40:31 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 10pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.75pt#; % pen width
+thinlinewidth# := 0.5pt#; % thin pen
+bigarrow# := 6pt#; % size of arrows
+littlearrow# := 4pt#;
+blobr# := 6.5pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr10; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyn11.mf b/Master/texmf-dist/fonts/source/public/feyn/feyn11.mf
new file mode 100644
index 00000000000..0b49e8988d1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyn11.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 11pt display size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyn11.mf,v 1.3 2001/08/20 21:40:31 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 11pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.85pt#; % pen width
+thinlinewidth# := 0.55pt#; % thin pen
+bigarrow# := 6.5pt#; % size of arrows
+littlearrow# := 4.5pt#;
+blobr# := 6.5pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr11; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyn12.mf b/Master/texmf-dist/fonts/source/public/feyn/feyn12.mf
new file mode 100644
index 00000000000..38854808ba6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyn12.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 12pt display size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyn12.mf,v 1.4 2001/08/20 21:40:32 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 12pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.9pt#; % pen width
+thinlinewidth# := 0.6pt#; % thin pen
+bigarrow# := 7pt#; % size of arrows
+littlearrow# := 5pt#;
+blobr# := 7.5pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr12; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feynmac.mf b/Master/texmf-dist/fonts/source/public/feyn/feynmac.mf
new file mode 100644
index 00000000000..568720d99be
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feynmac.mf
@@ -0,0 +1,188 @@
+% The following macros produce general gauge boson half-loops, and fermions
+% bosons and ghosts at arbitrary angles.
+%
+% They are:
+% def gbhalfloop (expr charno, wid, nopts, inv) =
+% charno character number
+% wid character width in double modules
+% (= length of fermion)
+% nopts number of intermediate points in the loop
+% inv if <> 0, invert the loop
+%
+% def gfermion (expr code, ang) =
+% def gboson (expr code, ang, stretch, taper) =
+% def gghost (expr code, ang) =
+% code character position
+% ang angle anticlockwise from x-axis
+% -90 <= ang <= +90, or all hell will break loose
+% stretch Produces a character which is of length
+% (2module*stretch). We need this so that we can
+% construct a vertical propagator which will
+% mesh smoothly with a photon half-loop.
+% taper When a vertical photon has to join a loop which
+% is raised at its central point, it has to taper
+% to squeeze into the gap.
+
+
+def looselink = ..tension 0.75.. enddef;
+def pen = pickup diagram_pen enddef;
+
+
+numeric nn;
+def dirlooselink(expr point,rtn) =
+ looselink{(-point) rotated (90-rtn)}point enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+def gbhalfloop (expr charno, wid, nopts, inv) =
+ % charno character number
+ % wid character width in double modules (= length of fermion)
+ % nopts number of intermediate points in the loop
+ % inv if <> 0, invert the loop
+ halfwidth# := wid*module# ;
+ define_pixels (halfwidth);
+ if odd (nopts): nn := nopts
+ else: nn := nopts+1
+ fi; % nn is odd
+ if inv <> 0: % invert it
+ beginchar (charno, 0, a#, halfwidth# + phfudge# - a#);
+ else:
+ beginchar (charno, 0, halfwidth# + phfudge# + a#, 0);
+ fi
+ pen; "gauge boson (half) loop";
+ z1 = (-halfwidth,0);
+ z[nn+1] = (halfwidth, 0);
+ for x = 2 upto nn:
+ z[x] = z1 rotated (- (x-1) * 180 / nn);
+ endfor
+ draw z1{dir (180-phangle)}
+ for x = 2 step 2 until nn:
+ dirlooselink(z[x], phangle) dirlooselink(z[x+1], -phangle)
+ endfor
+ looselink {dir (180+phangle)}z[nn+1];
+ if inv <> 0:
+ currentpicture := currentpicture reflectedabout ((0,0),(1,0)); fi
+ currentpicture := currentpicture shifted (0,a); % shift up to axis
+% labels (range 1 thru nn+1);
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The following characters are in boxes the same vertical size as the black
+% bit of the character, but they project out of the top by an amount equal to
+% the height of the math axis, and are that same height clear of the bottom
+% of the box.
+%
+%%%% -90 <= ang <= +90, or all hell will break loose
+
+
+
+def gfermion (expr code, ang) =
+ beginchar (code, 2module#*(cosd ang), 2module#*(abs sind ang), 0);
+ pen;
+ if ang > 0 : % slopes upward
+ draw (0,a) .. (w,h+a);
+ else :
+ draw (0,h+a) .. (w,a);
+ fi
+ endchar;
+enddef;
+
+def gboson (expr code, ang, stretch, taper) =
+ beginchar (code,
+ 2module#*(cosd ang)*stretch, 2module#*(abs sind ang)*stretch, 0);
+ pen;
+ if ang > 0 : % slopes upward
+ z1 = (0,a); z5 = (w,h+a);
+ else :
+ z1 = (0,h+a); z5 = (w,a);
+ fi
+ z2-z1 = z3-z2 = z4-z3 = z5-z4;
+ def ::(expr b) = {dir (ang+b)} looselink {dir (ang-b)} enddef;
+ draw z1 ::(phangle) z2 ::(-phangle) z3 ::(phangle) z4
+ if taper <> 0 : {dir (ang-phangle)} .. tension 1 and 0.8 ..
+ {dir (ang+phangle/2)}
+ else : ::(-phangle)
+ fi
+ z5;
+ endchar;
+enddef;
+
+def gghost (expr code, ang) =
+ beginchar (code, 2module#*(cosd ang), 2module#*(abs sind ang), 0);
+ pen;
+ if ang > 0 : % slopes upward
+ z1 = (0,a); z10 = (w,h+a);
+ else :
+ z1 = (0,h+a); z10 = (w,a);
+ fi
+ z4-z3 = 2(z2-z1);
+ z4-z3 = z6-z5 = z8-z7;
+ z2-z1 = z3-z2 = z5-z4 = z7-z6 = z9-z8 = z10-z9;
+ draw z1..z2; draw z3..z4; draw z5..z6; draw z7..z8; draw z9..z10;
+ endchar;
+enddef;
+
+def garrow (expr code, ang, onaxis) =
+% If onaxis is 1, the arrow will be on the math axis, if 0, it'll be at the
+% origin, and slightly smaller.
+% We need the latter behaviour because \arrow places the arrow in a
+% particular spot in the diagram.
+
+ numeric localarrowsize;
+
+ if onaxis = 1 :
+ localarrowsize := bigarrow;
+ else :
+ localarrowsize := littlearrow;
+ fi
+
+ beginchar (code, 0, 0, 0); "garrow";
+ pair t[];
+ z1 = (localarrowsize, onaxis*a);
+ z4 = (-localarrowsize/4,onaxis*a);
+ z0 = (-localarrowsize/2,onaxis*a);
+ z2 = z0 + (0,localarrowsize/2);
+ z3 = z0 - (0,localarrowsize/2);
+
+ forsuffixes s = 1,2,3,4 :
+ t[s] = z[s] rotated ang;
+ endfor
+
+ fill t4--t2--t1--t3--cycle;
+ endchar;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Error character.
+%
+% The parameter ht is the nominal height of the character.
+def errorchar (expr ht) =
+ begingroup
+ numeric rad,npetals,ilowest;
+ pair cent;
+ cent=(0,2ht/3); % centre of the flower
+ rad=ht/5; % radius of the inner points
+ npetals=5; % number of petals
+ pickup pencircle scaled (thinlinewidth#); % thin line
+ z0 = cent shifted (rad,0);
+ for i=1 upto npetals-1:
+ z[i] = z0 rotatedabout (cent, i*360/npetals);
+ endfor
+ draw z0{dir 0}
+ for i=1 upto npetals-1:
+ .. tension 0.75 ..{dir (i*360/npetals+180)}z[i]{dir (i*360/npetals)}
+ endfor
+ ..{dir 180}z0;
+ ilowest := 0;
+ for i=1 upto npetals-1:
+ if y[i] <= y[ilowest]: ilowest := i; fi
+ endfor
+ draw z[ilowest]{dir (ilowest*360/npetals)}..origin;
+ %draw z[npetals-2]{dir ((npetals-2)*360/npetals)}..origin;
+ draw origin{dir 0}..(rad,rad);
+ draw (rad,rad){dir 180}..origin;
+ endgroup
+enddef;
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyntext10.mf b/Master/texmf-dist/fonts/source/public/feyn/feyntext10.mf
new file mode 100644
index 00000000000..06760cd0a45
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyntext10.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 10pt text size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyntext10.mf,v 1.2 2001/08/20 21:40:32 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 5pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.5pt#; % pen width
+thinlinewidth# := 0.4pt#; % thin pen
+bigarrow# := 4pt#; % size of arrows
+littlearrow# := 3pt#;
+blobr# := 3.5pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr10; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyntext11.mf b/Master/texmf-dist/fonts/source/public/feyn/feyntext11.mf
new file mode 100644
index 00000000000..89666d6168e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyntext11.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 11pt text size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyntext11.mf,v 1.2 2001/08/20 21:40:33 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 5.5pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.5pt#; % pen width
+thinlinewidth# := 0.4pt#; % thin pen
+bigarrow# := 4.5pt#; % size of arrows
+littlearrow# := 3.5pt#;
+blobr# := 3.5pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr11; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end
diff --git a/Master/texmf-dist/fonts/source/public/feyn/feyntext12.mf b/Master/texmf-dist/fonts/source/public/feyn/feyntext12.mf
new file mode 100644
index 00000000000..8df3015ec26
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/feyn/feyntext12.mf
@@ -0,0 +1,37 @@
+% Feynman diagram font, 12pt text size.
+%
+% Copyright 1991, 1994, 2001, Norman Gray <norman@astro.gla.ac.uk>
+% $Id: feyntext12.mf,v 1.3 2002/04/18 22:33:10 norman Exp $
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% First the base size
+
+module# := 6pt#;
+
+% phfudge is ... what?!
+phfudge# := 0pt#; % must be, for \Diagram macro
+
+linewidth# := 0.55pt#; % pen width
+thinlinewidth# := 0.45pt#; % thin pen
+bigarrow# := 5pt#; % size of arrows
+littlearrow# := 4pt#;
+blobr# := 4pt#; % radius of blobs and crosses
+
+% We want the roman digits from the corresponding cmr font, and that's
+% all. Therefore, we don't want to obey the `generate' command in
+% cmr??.mf. To do this, we read in cmbase, and then set generate to
+% gobble its argument.
+def gobble primary g=enddef; % gobbles its argument
+input cmbase; % Read it explicitly, rather than
+ % implicitly within cmr10
+let generate=gobble;
+input cmr12; % ...but miss out the `generate roman'
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% To business....
+
+input feyn;
+
+end