summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/bbold
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/bbold
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/bbold')
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbbase.mf374
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbgreekl.mf684
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbgreeku.mf315
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbligs.mf91
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bblower.mf760
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbnum.mf300
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold.mf9
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold10.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold12.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold17.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold5.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold6.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold7.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold8.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbold9.mf19
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbparams.mf205
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbpunc.mf691
-rw-r--r--Master/texmf-dist/fonts/source/public/bbold/bbupper.mf698
18 files changed, 4279 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbbase.mf b/Master/texmf-dist/fonts/source/public/bbold/bbbase.mf
new file mode 100644
index 00000000000..dd1f3c633b0
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbbase.mf
@@ -0,0 +1,374 @@
+% Blackboard bold base file, containing lots of horrible hacks.
+% Alan Jeffrey, 12--18 Dec 1989.
+
+% DIGITIZATION
+
+% I'm doing all my own digitization, so I don't need help from MF.
+autorounding := 0;
+
+% To get the unsharp version of x#, say unsharp x#.
+def unsharp = hppp * enddef;
+
+% The only pen I'm working with is of size pen_size. This makes life
+% rather easier. To find the x-coordinate whose left-hand edge is
+% at hround x, say leftround x, and similarly for rightround,
+% topround and bottomround.
+def leftround expr x = hround x + 1/2 pen_size enddef;
+def rightround expr x = hround x - 1/2 pen_size enddef;
+def topround expr y = vround y - 1/2 pen_size enddef;
+def bottomround expr y = vround y + 1/2 pen_size enddef;
+
+% Using this, I can give the equivalent of define_whole_pixels...
+def define_whole_top_pixels (text t) =
+ forsuffixes $ = t:
+ $ := topround unsharp $.#;
+ endfor
+enddef;
+
+def define_whole_bottom_pixels (text t) =
+ forsuffixes $ = t:
+ $ := bottomround unsharp $.#;
+ endfor
+enddef;
+
+% POINTS
+
+% The point y~x is short for (x,y). The reason for switching the
+% points around is that I find it easier to say Top~Left than
+% (Left, Top).
+primarydef x ~ y = (y,x) enddef;
+
+% To find the average of two points, say p -+- q.
+primarydef x ~ y = (y,x) enddef;
+tertiarydef x -+- y = .5[x,y] enddef;
+
+% To get the point 1/2fatness above p, say above p. This is useful
+% for drawing lines fatness in width. Similarly we have commands
+% below, leftof and rightof.
+def above secondary p =
+ p + 1/2fatness * up
+enddef;
+
+def below secondary p =
+ p + 1/2fatness * down
+enddef;
+
+def leftof secondary p =
+ p + 1/2fatness * left
+enddef;
+
+def rightof secondary p =
+ p + 1/2fatness * right
+enddef;
+
+% The command farleftof is equivalent to leftof leftof, and similarly
+% farrightof.
+def farleftof secondary p =
+ p + fatness * left
+enddef;
+
+def farrightof secondary p =
+ p + fatness * right
+enddef;
+
+% To get curves with o-correction, we need to be able to move
+% o pixels up or down.
+def oabove secondary p =
+ p + o * up
+enddef;
+
+def obelow secondary p =
+ p + o * down
+enddef;
+
+% DECLARATIONS
+
+% To declare a new variable foo of type T, say var (T) foo.
+def var (text type) text declarations =
+ save declarations;
+ type declarations
+enddef;
+
+% PATHS
+
+% Given a cyclic path p, outline p draws the path and fills the inside
+% with white. This is stolen from the MF book, exercise 13.11.
+def outline expr c =
+ begingroup
+ picture region;
+ region := nullpicture;
+ interim turningcheck := 0;
+ addto region contour c;
+ cull region dropping (0,0);
+ cullit;
+ addto currentpicture also -region;
+ cullit;
+ draw c
+ endgroup
+enddef;
+
+% Given a path p, leftside p is the path 1/2 fatness to its left,
+% and similarly rightside.
+def leftside primary apath =
+ apath shifted (1/2fatness * left)
+enddef;
+
+def rightside primary apath =
+ apath shifted (1/2fatness * right)
+enddef;
+
+% Given a path p, fatten p draws the leftside of p,
+% the rightside of p, and joins them up with straight lines.
+def fatten expr apath =
+ leftside apath
+ -- (reverse rightside apath)
+ -- cycle
+enddef;
+
+% Given a point p, splodge p draws an o-corrected circle of radius
+% fatness around p.
+def splodge expr apoint =
+ above apoint + o*up {right}
+ .. rightof apoint + o*right {down}
+ .. below apoint + o*down {left}
+ .. leftof apoint + o*left {up}
+ .. cycle
+enddef;
+
+% The command splodgel does the same, but doesn't close the cycle,
+% and leaves the current point at the left of the circle.
+def splodgel tertiary apoint =
+ leftof apoint + o*left {up}
+ .. above apoint + o*up {right}
+ .. rightof apoint + o*right {down}
+ .. below apoint + o*down {left}
+ .. leftof apoint + o*left {up}
+enddef;
+
+% Similarly, splodger leaves the current point at the right of the
+% circle.
+def splodger tertiary apoint =
+ rightof apoint + o*right {down}
+ .. below apoint + o*down {left}
+ .. leftof apoint + o*left {up}
+ .. above apoint + o*up {right}
+ .. rightof apoint + o*right {down}
+enddef;
+
+% CLIPPING
+
+% sometime (p, q) gives the time along p when it intersects q.
+def sometime (expr apath, bpath) =
+ xpart (apath intersectiontimes bpath)
+enddef;
+
+% othertime (p, q) gives another time at which p intersects q.
+def othertime (expr apath, bpath) =
+ length apath - sometime (reverse apath) (reverse bpath)
+enddef;
+
+% firsttime (p, q) gives the smallest of sometime (p,q) and othertime (p,q).
+def firsttime (expr apath, bpath) =
+ min (sometime (apath) (bpath), othertime (apath) (bpath))
+enddef;
+
+% lasttime (p, q) gives the largest of the two times.
+def lasttime (expr apath, bpath) =
+ max (sometime (apath) (bpath), othertime (apath) (bpath))
+enddef;
+
+% We can then clip p with q by finding the subpath of p from 0 to
+% the time p intersects q.
+def cliponce (expr apath, clippath) =
+ subpath (0, sometime (apath) (clippath)) of apath
+enddef;
+
+% Similarly, if p intersects q twice, we can find the path between
+% the two times it intersects with cliptwice.
+def cliptwice (expr apath, clippath) =
+ subpath
+ (firsttime (apath) (clippath), lasttime (apath) (clippath))
+ of apath
+enddef;
+
+% Given a path p and two paths q and r which intersect p,
+% we can find the path between when p crosses q and when p crosses r.
+% someclipbetween (p, q, r) will always start at q and finish at r.
+def someclipbetween (expr apath, firstclip, secondclip) =
+ subpath
+ (sometime (apath) (firstclip),
+ sometime (apath) (secondclip))
+ of
+ apath
+enddef;
+
+% firstclipbetween does the same, but if p intersects q and r more
+% than once, it gives the first clipping.
+def firstclipbetween (expr apath, firstclip, secondclip) =
+ subpath
+ (firsttime (apath) (firstclip),
+ firsttime (apath) (secondclip))
+ of
+ apath
+enddef;
+
+% lastclipbetween gives the last clipping.
+def lastclipbetween (expr apath, firstclip, secondclip) =
+ subpath
+ (lasttime (apath) (firstclip),
+ lasttime (apath) (secondclip))
+ of
+ apath
+enddef;
+
+% We can join these together and clip fat lines.
+def fatcliponce (expr apath, clippath) =
+ cliponce (leftside apath) (clippath)
+ -- someclipbetween (clippath) (leftside apath) (rightside apath)
+ -- reverse cliponce (rightside apath) (clippath)
+ -- cycle
+enddef;
+
+def fatcliptwice (expr apath, clippath) =
+ cliptwice (leftside apath) (clippath)
+ -- lastclipbetween (clippath) (leftside apath) (rightside apath)
+ -- cliptwice (rightside apath) (reverse clippath)
+ -- firstclipbetween (clippath) (rightside apath) (leftside apath)
+ -- cycle
+enddef;
+
+% BBCHAR.
+
+% bbchar (c) (l#, w#, r#) (t#, b#) begins a character at code c,
+% of width w# with l# gap at the left and r# gap at the right.
+% It's topmost point is at t# and its bottommost point at b#.
+% From these parameters we calculate Width (the width of the character
+% in whole pixels) and hardTop and hardBottom (the exact top and bottom
+% of the character). Top is then 1/2 pensize from the top of the character,
+% and Bottom is 1/2 pensize from the bottom. This means if we draw a line
+% through top, the top of it will exactly touch the top. We then calculate
+% Left, Middle, and Right in the same way, using calculateLeftetc.
+
+def bbchar
+ (expr code)
+ (expr sharphardLeft, sharpWidth, sharprightgap)
+ (expr sharphardTop, sharphardBottom) =
+
+ beginchar
+ (code)
+ (sharphardLeft + sharpWidth + sharprightgap)
+ (max (sharphardTop, 0pt#))
+ (max (-sharphardBottom, 0pt#));
+
+ save Top, Bottom, Horizon, hardTop, hardBottom,
+ Width, hardLeft, hardRight, Left, Right, Middle;
+
+ hardTop# = sharphardTop;
+ hardBottom# = sharphardBottom;
+ Width# = sharpWidth;
+ hardLeft# = sharphardLeft;
+ hardRight# = sharphardLeft + sharpWidth;
+
+ define_whole_pixels (Width);
+ define_whole_vertical_pixels (hardTop, hardBottom);
+ Top = topround hardTop;
+ Bottom = bottomround hardBottom;
+
+ Horizon = .5 [Top, Bottom];
+
+ calculateLeftetc;
+
+ pickup pencircle scaled pen_size;
+
+enddef;
+
+def calculateLeftetc =
+ hardLeft := floor (unsharp hardLeft#);
+ hardRight := hardLeft + Width;
+
+ Left := (hardLeft + 1/2pen_size);
+ Middle := (hardLeft + 1/2Width);
+ Right := (hardRight - 1/2pen_size);
+enddef;
+
+% bbcap is bbchar with the top at ATop# and the bottom at aBottom#.
+def bbcap (expr code, leftgap, width, rightgap) =
+ bbchar (code) (leftgap, width, rightgap) (ATop#, aBottom#);
+enddef;
+
+% bbnum is bbchar with the dimensions of a number hard-wired.
+def bbnum (expr code) =
+ bbchar (code) (medgap#, numeral#, medgap#) (oneTop#, aBottom#);
+enddef;
+
+% For characters such as < and > which appear a lot blacker than the
+% others, we can surround the character by beginblacker n ... endblacker,
+% which temporarily multiplies fatness by n.
+def beginblacker expr blackness =
+ begingroup
+ save oldfatness;
+ oldfatness# := fatness#;
+ save fatness;
+ fatness# := oldfatness# * blackness;
+ define_whole_pixels (fatness)
+enddef;
+
+let endblacker = endgroup;
+
+% SYMMETRY
+
+% To try to get characters symmetric, we need to round the width so there
+% are the same number of characters on the left of the central vertical
+% as there are on the right. So if we are symmetrical around a pen of
+% size 2n, we need to make the width even. If we are symmetrical around
+% a pen of size 2n+1 we need to make the width odd. This is done with
+% roundlike (x) y, which rounds y to be even iff x is even.
+
+def roundlike (expr x) expr y =
+ 2 * (round (x -+- y)) - x
+enddef;
+
+% To make the character symmetric, we round Width like pen_size.
+def symmetric =
+ Width := roundlike (pen_size) unsharp Width#;
+ calculateLeftetc
+enddef;
+
+% To make the character symmetric around a fat vertical, we round
+% Width like fatness + pen_size.
+def fatsymmetric =
+ Width := roundlike (fatness + pen_size) unsharp Width#;
+ calculateLeftetc
+enddef;
+
+% DRAWING THE CHARACTERS ON THE SCREEN
+
+% makebox and maketicks nicked from cmbase, adjusted for this job.
+
+def makebox(text rule) =
+ for y=0, hardBottom, hardTop:
+ rule((0,y)t_,(w,y)t_); endfor % horizontals
+ for x=0,hardLeft,hardRight,w:
+ rule((x,hardBottom)t_,(x,hardTop)t_); endfor % verticals
+enddef;
+
+def maketicks(text rule) =
+ for y=0, hardBottom, hardTop:
+ rule((-10,y)t_,(0,y)t_); % horizontals at left
+ rule((w,y)t_,(w+10,y)t_); % horizontals at right
+ endfor
+ for x=0,hardLeft,hardRight,w:
+ rule((x,hardBottom-10)t_,(x,hardBottom)t_); % verticals at bottom
+ rule((x,hardTop)t_,(x,hardTop+10)t_); % verticals at top
+ endfor % verticals at top
+enddef;
+
+% HACKS TO MAKE CMR WORK
+
+% Some parameters I never use, but are needed by the cmr parameter files.
+boolean
+ square_dots, hefty, serifs, monospace,
+ variant_g, low_asterisk, math_fitting;
+
+% And that's that.
+
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbgreekl.mf b/Master/texmf-dist/fonts/source/public/bbold/bbgreekl.mf
new file mode 100644
index 00000000000..a6b70be9e6a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbgreekl.mf
@@ -0,0 +1,684 @@
+% Blackboard bold lower case Greek, Alan Jeffrey, 15--18 Dec 1989.
+%
+% These characters occupy spaces oct "013" to oct "040", and oct "177".
+% This is because ! occupies oct "041" and I have to stick omega
+% somewhere.
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "013")
+ (smallgap#, medlower#, smallgap# + jut#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek alpha";
+
+ % The curve.
+ var (path) alphapath;
+
+ alphapath
+ = Top~(Right + jut) {down}
+ .. obelow Bottom~Middle {left}
+ .. Horizon~Left {up}
+ .. oabove Top~Middle {right}
+ .. Bottom~(Right + jut){right};
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof obelow Bottom~Left -- rightof oabove Top~Left)
+ (alphapath);
+
+ % The curve.
+ draw alphapath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "014")
+ (medgap#, smalllower# + fatness#, smallgap#)
+ (bTop#, gBottom#);
+
+ "Lowercase Greek beta";
+
+ % The top curve.
+ var (path) betapath;
+
+ betapath
+ = aBottom~Left
+ --- aTop~Left
+ .. oabove rightof Top~Middle {right}
+ .. (Top -+- aTop)~Right {down}
+ .. rightof aTop~Middle {left};
+
+ % The emphasis
+ draw
+ fatcliponce
+ (rightof Bottom~Left -- rightof oabove Top~Left)
+ (betapath);
+
+ % The top curve.
+ draw betapath;
+
+ % The bottom curve.
+ draw
+ rightof aTop~Middle {right}
+ .. aMiddle~Right {down}
+ .. obelow rightof aBottom~Middle {left}
+ .. farrightof (aBottom + cCurl)~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "015")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, gBottom#);
+
+ "Lowercase Greek gamma";
+
+ % The curve.
+ var (path) gammapath;
+
+ gammapath
+ = Top~Left {right}
+ .. aBottom~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. aBottom~Left {up}
+ .. Top~Right {right};
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- rightof Top~Left)
+ (subpath (1,infinity) of gammapath);
+
+ % The curve.
+ draw gammapath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "016")
+ (smallgap#, medlower#, smallgap#)
+ (bTop#, aBottom#);
+
+ "Lowercase Greek delta";
+
+ % The path.
+ var (path) deltapath;
+
+ deltapath
+ = aTop~Middle {left}
+ .. aMiddle~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. aMiddle~Right {up}
+ .. aTop~Middle
+ .. (aTop -+- Top)~Left {up}
+ .. oabove Top~Middle {right}
+ .. (Top - cCurl)~Right;
+
+ % The emphasis, clipped by the first bit of the curve (ie the bowl).
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- rightof Top~Left)
+ (subpath (0,4) of deltapath);
+
+ % The curve.
+ draw deltapath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "017")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek epsilon";
+
+ % The curve.
+ var (path) epsilonpath;
+
+ epsilonpath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. aMiddle~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (epsilonpath);
+
+ % The curve.
+ draw epsilonpath;
+
+ % The bar.
+ draw
+ farrightof eBar~Left
+ -- farrightof eBar~(Left + jut)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "020")
+ (medgap#, smalllower#, smallgap#)
+ (bTop#, gBottom#);
+
+ "Lowercase Greek zeta";
+
+ % The curl.
+ var (path) zetapath;
+
+ zetapath
+ = Top~Right
+ .. aMiddle~Left {down}
+ .. aBottom~Middle
+ .. (aBottom -+- Bottom)~Right {down}
+ .. Bottom~(Right - jut) {left};
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- rightof Top~Left)
+ (zetapath);
+
+ % The curl.
+ draw zetapath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "021")
+ (medgap#, smalllower# + fatness#, medgap#)
+ (aTop#, gBottom#);
+
+ "Lowercase Greek eta";
+
+ % The emphasis.
+ draw
+ fatten
+ rightof aBottom~Left
+ -- rightof Top~Left;
+
+ % The curl.
+ draw
+ farrightof (Top - cCurl)~Left
+ .. oabove rightof Top~Middle {right}
+ .. (Top - hCurl)~Right
+ --- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "022")
+ (smallgap#, medlower#, smallgap#)
+ (bTop#, aBottom#);
+
+ "Lowercase Greek theta";
+
+ % The curve.
+ var (path) thetapath;
+
+ thetapath
+ = Horizon~Right {up}
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. cycle;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof obelow Bottom~Left -- oabove rightof Top~Left)
+ (thetapath);
+
+ % The curve.
+ draw thetapath;
+
+ % The bar.
+ draw
+ farrightof Horizon~Left
+ -- Horizon~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "023")
+ (medgap#, tiny#, medgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek iota";
+
+ % The vertical, clipped by a curve.
+ draw
+ fatcliponce
+ (Top~Middle -- Bottom~Middle)
+ (leftof (Bottom + hCurl)~Middle {down}
+ .. rightof Bottom~Middle {right})
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "024")
+ (medgap#, smalllower# + fatness#, smallgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek kappa";
+
+ % The vertical.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The top stroke.
+ draw
+ farrightof eBar~Left
+ -- Top~Right;
+
+ % The bottom stroke.
+ draw
+ farrightof eBar~Left {right}
+ .. Bottom~Right {right}
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "025")
+ (smallgap#, medlower#, smallgap#)
+ (bTop#, aBottom#);
+
+ "Lowercase Greek lambda";
+
+ % The SW diagonal.
+ draw
+ Horizon~Middle
+ -- Bottom~Left;
+
+ % The SE diagonal, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- leftof Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "026")
+ (medgap#, smalllower# + fatness#, medgap#)
+ (aTop#, gBottom#);
+
+ "Lowercase Greek mu";
+
+ % The left vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The curl.
+ draw
+ farrightof (aBottom + cCurl)~Left
+ .. obelow rightof aBottom~Middle {right}
+ .. (aBottom + hCurl)~Right
+ --- Top~Right;
+
+ % The right vertical.
+ draw
+ Top~Right
+ -- aBottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "027")
+ (medgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek nu";
+
+ % The left vertical, clipped by the stroke.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof Bottom~Left)
+ (Bottom~Left .. Top~Right {up});
+
+ % The stroke.
+ draw
+ Bottom~Left
+ .. Top~Right {up}
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "030")
+ (medgap#, smalllower#, smallgap#)
+ (bTop#, gBottom#);
+
+ "Lowercase Greek xi";
+
+ % The curls.
+ var (path) xitop, xibottom;
+
+ xibottom
+ = farrightof aTop~(Left + jut) {left}
+ .. aMiddle~Left {down}
+ .. aBottom~Middle
+ .. (aBottom -+- Bottom)~Right {down}
+ .. Bottom~(Right - jut) {left};
+
+ xitop
+ = Top~Right {left}
+ .. (Top -+- aTop)~Left {down}
+ .. farrightof aTop~(Left + jut) {right};
+
+ % The top emphasis.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- rightof Top~Left)
+ (xitop);
+
+ % The top curl.
+ draw xitop;
+
+ % The bottom emphasis.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- rightof Top~Left)
+ (xibottom);
+
+ % The bottom curl.
+ draw xibottom
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "031")
+ (smallgap#, smalllower# + fatness#, smallgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek pi";
+
+ % The top bar.
+ draw
+ Top~Left
+ --- Top~Right;
+
+ % The left vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~(Left + jut)
+ -- rightof Top~(Left + jut);
+
+ % The right vertical.
+ draw
+ Bottom~(Right - jut)
+ -- Top~(Right - jut)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "032")
+ (medgap#, medlower#, smallgap#)
+ (aTop#, gBottom#);
+
+ "Lowercase Greek rho";
+
+ % The bowl.
+ var (path) rhopath;
+
+ rhopath
+ = aMiddle~Left {up}
+ .. oabove aTop~Middle {right}
+ .. aMiddle~Right {down}
+ .. obelow aBottom~Middle {left}
+ .. cycle;
+
+ % The bowl.
+ draw rhopath;
+
+ % The emphasis, clipped by the beginning of the curve.
+ outline
+ fatcliponce
+ (rightof Bottom~Left -- rightof bracketTop~Left)
+ (subpath (0,2) of rhopath);
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "033")
+ (smallgap#, medlower#, smallgap# + jut#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek sigma";
+
+ % The bowl.
+ var (path) sigmapath;
+
+ sigmapath
+ = Horizon~Right {up}
+ .. Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. cycle;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof obelow Bottom~Left -- rightof Top~Left)
+ (sigmapath);
+
+ % The bowl.
+ draw sigmapath;
+
+ % The bar, jutting out to the right.
+ draw
+ Top~Middle
+ -- Top~(Right + jut)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "034")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ fatsymmetric;
+
+ "Lowercase Greek tau";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The vertical, clipped by a curve.
+ draw
+ fatcliponce
+ (Top~Middle -- Bottom~Middle)
+ (leftof (Bottom + hCurl)~Middle {down}
+ .. rightof Bottom~Middle {right})
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "035")
+ (medgap#, medlower#, medgap#)
+ (aTop#, aBottom#);
+
+ "Lowercase Greek upsilon";
+
+ % The curve.
+ var (path) upsilonpath;
+
+ upsilonpath
+ = Top~Left
+ --- (Bottom + hCurl)~Left
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + hCurl)~Right
+ --- Top~Right;
+
+ % The emphasis.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof obelow Bottom~Left)
+ (upsilonpath);
+
+ % The curve.
+ draw upsilonpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "036")
+ (smallgap#, medlower#, smallgap#)
+ (bTop#, gBottom#);
+
+ fatsymmetric;
+
+ "Lowercase Greek phi";
+
+ % The bowl.
+ draw
+ Middle~Right {up}
+ .. aTop~Middle {left}
+ .. aMiddle~Left {down}
+ .. aBottom~Middle {right}
+ .. cycle;
+
+ % The vertical, fattened.
+ outline
+ fatten
+ Top~Middle
+ -- Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "037")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, gBottom#);
+
+ "Lowercase Greek chi";
+
+ % The SE diagonal.
+ draw
+ Top~Left
+ -- Bottom~Right;
+
+ % The SW diagonal, fattened.
+ outline
+ fatten
+ leftof Top~Right
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "040")
+ (medgap#, medlower#, medgap#)
+ (bTop#, gBottom#);
+
+ fatsymmetric;
+
+ "Lowercase Greek psi";
+
+ % The curve.
+ draw
+ aTop~Left
+ --- (aBottom + hCurl)~Left
+ .. aBottom~Middle {right}
+ .. (aBottom + hCurl)~Right
+ --- aTop~Right;
+
+ % The vertical, fattened.
+ outline
+ fatten
+ Top~Middle
+ -- Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "177")
+ (smallgap#, biglower#, smallgap#)
+ (aTop#, aBottom#);
+
+ symmetric;
+
+ "Lowercase Greek omega";
+
+ % The left curve.
+ var (path) omegapath;
+
+ omegapath
+ = farrightof Top~Left
+ .. Horizon~Left {down}
+ .. obelow Bottom~(Left -+- Middle) {right}
+ .. eBar~Middle {up};
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof Top~Left -- obelow rightof Bottom~Left)
+ (omegapath);
+
+ % The left curve.
+ draw omegapath;
+
+ % The right curve.
+ draw
+ eBar~Middle {down}
+ .. obelow Bottom~(Right -+- Middle) {right}
+ .. Horizon~Right {up}
+ .. farleftof Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbgreeku.mf b/Master/texmf-dist/fonts/source/public/bbold/bbgreeku.mf
new file mode 100644
index 00000000000..802810a5286
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbgreeku.mf
@@ -0,0 +1,315 @@
+% Blackboard bold uppercase greek, Alan Jeffrey, 13--18 Dec 1989.
+%
+% These characters occupy the same space they do in cmr, ie oct "000"
+% to oct "012".
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "000")
+ (biggap#, smallcap#, smallgap#);
+
+ "Uppercase Greek Gamma";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The horizontal.
+ draw
+ Top~Left
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "001")
+ (smallgap#, medcap#, smallgap#);
+
+ symmetric;
+
+ "Uppercase Greek Delta";
+
+ % Left diagonal, clipped by the right diagonal.
+ draw
+ fatcliponce
+ (rightof Bottom~Left -- rightof Top~Middle)
+ (Top~Middle -- Bottom~Right);
+
+ % Right diagonal.
+ draw
+ Top~Middle
+ -- Bottom~Right;
+
+ % Base.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "002")
+ (medgap#, medcap#, medgap#);
+
+ "Uppercase Greek Theta";
+
+ % The circle.
+ var (path) Thetapath;
+
+ Thetapath
+ = oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. Horizon~Right {up}
+ .. cycle;
+
+ % The emphasis at the left.
+ draw
+ fatcliptwice
+ (rightof obelow Bottom~Left -- oabove rightof Top~Left)
+ (Thetapath);
+
+ % The circle.
+ draw Thetapath;
+
+ % The dash in the middle.
+ draw
+ farrightof Horizon~(Left + space)
+ -- Horizon~(Right - space)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "003")
+ (smallgap#, medcap#, smallgap#);
+
+ symmetric;
+
+ "Uppercase Greek Lambda";
+
+ % Left diagonal, clipped by the right diagonal.
+ draw
+ fatcliponce
+ (rightof Bottom~Left -- rightof Top~Middle)
+ (Top~Middle -- Bottom~Right);
+
+ % Right diagonal.
+ draw
+ Top~Middle
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "004")
+ (medgap#, medcap#, medgap#);
+
+ symmetric;
+
+ "Uppercase Greek Xi";
+
+ % Top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % Middle line.
+ draw
+ Horizon~(Left + bigspace)
+ -- Horizon~(Right - bigspace);
+
+ % Bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "005")
+ (biggap#, smallcap#, biggap#);
+
+ "Uppercase Greek Pi";
+
+ % The right line.
+ draw
+ Top~Right
+ -- Bottom~Right;
+
+ % The bar.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The left line, fattened.
+ draw
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "006")
+ (medgap#, medcap#, medgap#);
+
+ "Uppercase Greek Sigma";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right;
+
+ % The diagonals.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- Horizon~Middle
+ -- rightof Top~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "007")
+ (smallgap#, medcap#, smallgap#);
+
+ fatsymmetric;
+
+ "Uppercase Greek Upsilon";
+
+ % The stem.
+ draw
+ fatten
+ Bottom~Middle
+ -- BBar~Middle;
+
+ % The left arc.
+ draw
+ leftof BBar~Middle
+ --- leftof (Top - CCurl)~Middle
+ .. oabove ((leftof Top~Left) -+- (Top~Middle)) {left}
+ .. (Top - CCurl)~Left {down};
+
+ % The right arc.
+ draw
+ rightof BBar~Middle {up}
+ --- rightof (Top - CCurl)~Middle
+ .. oabove ((rightof Top~Right) -+- (Top~Middle)) {right}
+ .. (Top - CCurl)~Right {down}
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "010")
+ (medgap#, medcap#, medgap#);
+
+ fatsymmetric;
+
+ "Uppercase Greek Phi";
+
+ % The circle.
+ draw
+ (Top - CCurl)~Middle {left}
+ .. Horizon~Left {down}
+ .. (Bottom + CCurl)~Middle {right}
+ .. Horizon~Right {up}
+ .. cycle;
+
+ % The vertical.
+ outline
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "011")
+ (smallgap#, medcap#, smallgap#);
+
+ fatsymmetric;
+
+ "Uppercase Greek Psi";
+
+ % The stroke.
+ draw
+ (Top - CCurl)~Left {right}
+ .. leftof Horizon~(Left -+- Middle) {down}
+ .. (Bottom + CCurl)~Middle {right}
+ .. rightof Horizon~(Right -+- Middle) {up}
+ .. (Top - CCurl)~Right {right};
+
+ % The vertical.
+ outline
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ (oct "012")
+ (medgap#, medcap#, medgap#);
+
+ "Uppercase Greek Omega";
+
+ % The curve.
+ var (path) Omegapath;
+
+ Omegapath
+ = farrightof Bottom~Left
+ .. Horizon~Left {up}
+ .. oabove Top~Middle {right}
+ .. Horizon~Right {down}
+ .. farleftof Bottom~Right ;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- oabove rightof Top~Left)
+ (Omegapath);
+
+ % The curve.
+ draw Omegapath;
+
+ % The left foot.
+ draw
+ Bottom~Left
+ -- farrightof Bottom~Left;
+
+ % The right foot.
+ draw
+ Bottom~Right
+ -- farleftof Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbligs.mf b/Master/texmf-dist/fonts/source/public/bbold/bbligs.mf
new file mode 100644
index 00000000000..92a38e4775d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbligs.mf
@@ -0,0 +1,91 @@
+% Blackboard bold ligatures, Alan Jeffrey, 13--18 Dec 1989.
+%
+% Provides --, ---, `` and ''.
+% These are put in positions
+%
+% -- oct "173"
+% --- oct "175"
+% `` oct "176"
+% '' oct "042"
+
+ligtable "-": "-" =: oct "173";
+ligtable oct "173": "-" =: oct "175";
+ligtable "`": "`" =: oct "176";
+ligtable "'": "'" =: oct "042";
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "173")
+ (smallgap#, 0.5bigcap#, smallgap#)
+ (aTop#, aBottom#);
+
+ "En dash `--'";
+
+ % The line.
+ draw
+ dashMiddle~Left
+ -- dashMiddle~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "175")
+ (smallgap#, bigcap#, smallgap#)
+ (aTop#, aBottom#);
+
+ "Em dash `---'";
+
+ % The line.
+ draw
+ dashMiddle~Left
+ -- dashMiddle~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "176")
+ (medgap#, 2tiny# + space#, medgap#)
+ (bTop#, bTop# - tiny# - comma_depth#);
+
+ "Opening quotes ```'";
+
+ % The left quote.
+ draw
+ splodgel above rightof Bottom~Left
+ .. farrightof Top~Left;
+
+ % The right quote.
+ draw
+ splodgel above leftof Bottom~Right
+ .. Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (oct "042")
+ (medgap#, 2tiny# + space#, medgap#)
+ (bTop#, bTop# - tiny# - comma_depth#);
+
+ "Closing quotes `'''";
+
+ % The left quote
+ draw
+ splodger below rightof Top~Left
+ .. Bottom~Left;
+
+ % The right quote
+ draw
+ splodger below leftof Top~Right
+ .. farleftof Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bblower.mf b/Master/texmf-dist/fonts/source/public/bbold/bblower.mf
new file mode 100644
index 00000000000..9bbd5e7195a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bblower.mf
@@ -0,0 +1,760 @@
+% Blackboard bold lower case, Alan Jeffrey, 12--18 Dec 1989.
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("a")
+ (smallgap#, medlower#, medgap#)
+ (aTop#, aBottom#);
+
+ "The letter a";
+
+ % The curve.
+ var (path) apath;
+
+ apath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The emphasis to the left, clipped by the curve.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- obelow rightof Bottom~Left)
+ (apath);
+
+ % The curve.
+ draw apath;
+
+ % The line at the right.
+ draw
+ Top~Right
+ -- Bottom~Right;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("b")
+ (medgap#, medlower# + fatness#, smallgap#)
+ (bTop#, aBottom#);
+
+ "The letter b";
+
+ % The curve.
+ draw
+ farrightof (aTop - cCurl)~Left
+ .. oabove rightof aTop~Middle {right}
+ .. aMiddle~Right {down}
+ .. obelow rightof Bottom~Middle {left}
+ .. farrightof (Bottom + cCurl)~Left;
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("c")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter c";
+
+ % The curve.
+ var (path) cpath;
+
+ cpath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The emphasis to the left, clipped by the curve.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- obelow rightof Bottom~Left)
+ (cpath);
+
+ % The curve.
+ draw cpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("d")
+ (smallgap#, medlower#, medgap#)
+ (bTop#, aBottom#);
+
+ "The letter d";
+
+ % The curve.
+ var (path) dpath;
+
+ dpath
+ = (aTop - cCurl)~Right
+ .. oabove aTop~Middle {left}
+ .. aMiddle~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The emphasis to the left, clipped by the curve.
+ draw
+ fatcliptwice
+ (oabove rightof aTop~Left -- obelow rightof Bottom~Left)
+ (dpath);
+
+ % The curve.
+ draw dpath;
+
+ % The line at the right.
+ draw
+ Bottom~Right
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("e")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter e";
+
+ % The curve.
+ var (path) epath;
+
+ epath
+ = eBar~Right
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The bar.
+ draw
+ farrightof eBar~Left
+ -- eBar~Right;
+
+ % The emphasis to the left, clipped by the curve.
+ outline
+ fatcliptwice
+ (oabove rightof Top~Left -- obelow rightof Bottom~Left)
+ (epath);
+
+ % The curve.
+ draw epath;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("f")
+ (medgap#, smalllower#, 0pt#)
+ (bTop#, aBottom#);
+
+ "The letter f";
+
+ % The curve.
+ var (path) fpath;
+
+ fpath
+ = (Top - hCurl)~Left {up}
+ .. oabove Top~Middle {right}
+ .. (Top - cCurl)~Right;
+
+ % The bar.
+ draw
+ aTop~Left
+ -- farrightof aTop~(Left + jut);
+
+ % The emphasis at the left of the curve.
+ outline
+ fatcliponce
+ (rightof Bottom~Left -- oabove rightof Top~Left)
+ (fpath);
+
+ % The curve.
+ draw fpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("g")
+ (smallgap#, medlower#, medgap#)
+ (aTop#, gBottom#);
+
+ "The letter g";
+
+ % The bowl path.
+ var (path) gpath;
+
+ gpath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. aMiddle~Left {down}
+ .. obelow aBottom~Middle {right}
+ .. (aBottom + cCurl)~Right;
+
+ % Emphasis of the bowl.
+ draw
+ fatcliptwice
+ (obelow rightof aBottom~Left -- oabove rightof Top~Left)
+ (gpath);
+
+ % The bowl.
+ draw gpath;
+
+ % The tail.
+ draw
+ Top~Right
+ --- aBottom~Right
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + gCurl)~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("h")
+ (medgap#, smalllower# + fatness#, medgap#)
+ (bTop#, aBottom#);
+
+ "The letter h";
+
+ % The curve.
+ draw
+ farrightof (aTop - cCurl)~Left
+ .. oabove rightof aTop~Middle {right}
+ .. (aTop - hCurl)~Right
+ --- Bottom~Right;
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("i")
+ (medgap#, tiny#, medgap#)
+ (iTop#, aBottom#);
+
+ fatsymmetric;
+
+ "The letter i";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ Bottom~Middle
+ -- aTop~Middle;
+
+ % The dot.
+ draw
+ splodge
+ below Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("j")
+ (0pt#, smalllower#, medgap#)
+ (iTop#, gBottom#);
+
+ "The letter j";
+
+ % The curve.
+ var (path) jpath;
+
+ jpath
+ = aTop~Right
+ --- aBottom~Right
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + gCurl)~Left;
+
+ % The emphasis.
+ draw
+ fatcliponce
+ (leftof aTop~Right -- obelow leftof Bottom~Right)
+ (jpath);
+
+ % The curve.
+ draw jpath;
+
+ % The dot.
+ draw
+ splodge
+ below leftof Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("k")
+ (medgap#, smalllower# + fatness#, smallgap#)
+ (bTop#, aBottom#);
+
+ "The letter k";
+
+ % The point at which the top diagonal hits the left side of the character.
+ % It is somewhere along the line from aTop~Right to eBar~Middle.
+
+ z1 = whatever[aTop~Right, eBar~Middle];
+ x1 = Left;
+
+ % The top diagonal.
+ draw
+ z1 -- aTop~Right;
+
+ % The bottom diagonal.
+ draw
+ eBar~Middle
+ -- Bottom~Right;
+
+ % The left edge, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("l")
+ (medgap#, tiny#, medgap#)
+ (bTop#, aBottom#);
+
+ "The letter l";
+
+ % The fattened vertical, clipped at the left by a curve.
+
+ draw
+ fatcliponce
+ (Top~Middle -- Bottom~Middle)
+ (leftof Horizon~Middle
+ --- leftof (Bottom + hCurl)~Middle
+ .. rightof Bottom~Middle {right})
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("m")
+ (medgap#, biglower#, medgap#)
+ (aTop#, aBottom#);
+
+ symmetric;
+
+ "The letter m";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The first bump.
+ draw
+ farrightof (Top - cCurl)~Left
+ .. oabove (farrightof Top~Left -+- rightof Top~Middle) {right}
+ .. rightof (Top - hCurl)~Middle
+ --- rightof Bottom~Middle;
+
+ % The second bump.
+ draw
+ rightof (Top - hCurl)~Middle {up}
+ .. oabove (rightof Top~Middle -+- Top~Right) {right}
+ .. (Top - hCurl)~Right
+ --- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("n")
+ (medgap#, smalllower# + fatness#, medgap#)
+ (aTop#, aBottom#);
+
+ "The letter n";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The bump.
+ draw
+ farrightof (Top - cCurl)~Left
+ .. oabove rightof Top~Middle {right}
+ .. (Top - hCurl)~Right
+ --- Bottom~Right;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("o")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter o";
+
+ % The circle;
+ var (path) opath;
+
+ opath
+ = oabove Top~Middle {right}
+ .. Horizon~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. Horizon~Left {up}
+ .. cycle;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (opath);
+
+ % The o.
+ draw opath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("p")
+ (medgap#, medlower# + fatness#, smallgap#)
+ (aTop#, gBottom#);
+
+ "The letter p";
+
+ % The curve.
+ draw
+ farrightof (Top - cCurl)~Left
+ .. oabove rightof Top~Middle {right}
+ .. aMiddle~Right {down}
+ .. obelow rightof aBottom~Middle {left}
+ .. farrightof (aBottom + cCurl)~Left;
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("q")
+ (smallgap#, medlower#, medgap#)
+ (aTop#, gBottom#);
+
+ "The letter q";
+
+ % The curve.
+ var (path) qpath;
+
+ qpath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. aMiddle~Left {down}
+ .. obelow aBottom~Middle {right}
+ .. (aBottom + cCurl)~Right;
+
+ % The emphasis to the left, clipped by the curve.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- obelow rightof Bottom~Left)
+ (qpath);
+
+ % The curve.
+ draw qpath;
+
+ % The line at the right.
+ draw
+ Bottom~Right
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("r")
+ (medgap#, smalllower# + fatness#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter r";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The bump.
+ draw
+ farrightof (Top - cCurl)~Left
+ .. oabove rightof Top~Middle {right}
+ .. (Top - cCurl)~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("s")
+ (smallgap#, smalllower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter s";
+
+ % The path of the S.
+ var (path) spath;
+
+ spath
+ = (Top - cCurl)~Right
+ .. oabove Top~Middle {left}
+ .. (Top -+- eBar)~Left {down}
+ .. eBar~Middle {right}
+ .. (eBar -+- Bottom)~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + cCurl)~Left;
+
+ % The emphasis at the top left of the S.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- obelow rightof Bottom~Left)
+ (subpath (0, 4) of spath);
+
+ % The path of the S.
+ draw spath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("t")
+ (medgap#, smalllower#, smallgap#)
+ (bTop#, aBottom#);
+
+ "The letter t";
+
+ % The curve.
+ var (path) tpath;
+
+ tpath
+ = (Bottom + hCurl)~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + cCurl)~Right;
+
+ % The bar.
+ draw
+ aTop~Left
+ -- aTop~Right;
+
+ % The emphasis.
+ outline
+ fatcliponce
+ (rightof Top~Left -- obelow rightof Bottom~Left)
+ (tpath);
+
+ % The curve.
+ draw tpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("u")
+ (medgap#, medlower#, medgap#)
+ (aTop#, aBottom#);
+
+ "The letter u";
+
+ % The curve of the u.
+ var (path) upath;
+
+ upath
+ = Top~Left
+ --- Horizon~Left
+ .. obelow Bottom~Middle {right}
+ .. {up} Horizon~Right;
+
+ % The emphasis.
+ draw
+ fatcliponce
+ (rightof Top~Left -- obelow rightof Bottom~Left)
+ (upath);
+
+ % The curve.
+ draw upath;
+
+ % The right line.
+ draw
+ Bottom~Right
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("v")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ symmetric;
+
+ "The letter v";
+
+ % The left diagonal, clipped by the right.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof Bottom~Middle)
+ (Bottom~Middle -- Top~Right);
+
+ % The right diagonal.
+ draw
+ Bottom~Middle
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("w")
+ (smallgap#, biglower#, smallgap#)
+ (aTop#, aBottom#);
+
+ symmetric;
+
+ "The letter w";
+
+ % The left diagonal, clipped by the rest.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof Bottom~(Left -+- Middle))
+ (Bottom~(Left -+- Middle) -- eBar~Middle);
+
+ % The rest of the letter.
+ draw
+ Bottom~(Left -+- Middle)
+ -- eBar~Middle
+ -- Bottom~(Middle -+- Right)
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("x")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter x";
+
+ % The SE diagonal.
+ draw
+ Top~Left
+ -- Bottom~Right;
+
+ % The SW diagonal, fattened.
+ outline
+ fatten
+ leftof Top~Right
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("y")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, gBottom#);
+
+ symmetric;
+
+ "The letter y";
+
+ % The left diagonal, fattened, and clipped by the right.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof aBottom~Middle)
+ (Top~Right -- aBottom~Middle);
+
+ % The right diagonal and tail.
+ draw
+ Top~Right
+ --- aBottom~Middle
+ .. obelow Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("z")
+ (smallgap#, medlower#, smallgap#)
+ (aTop#, aBottom#);
+
+ "The letter z";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The diagonal, fattened.
+ draw
+ fatten
+ leftof Top~Right
+ -- rightof Bottom~Left;
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbnum.mf b/Master/texmf-dist/fonts/source/public/bbold/bbnum.mf
new file mode 100644
index 00000000000..1be5023e1b1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbnum.mf
@@ -0,0 +1,300 @@
+% Blackboard bold numerals, Alan Jeffrey, 12--18 Dec 1989.
+
+% -------------------------------------------------------------------
+
+bbnum ("0");
+ "The number 0";
+
+ % The curve.
+ var (path) zeropath;
+
+ zeropath
+ = oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. Horizon~Right {up}
+ .. cycle;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (zeropath);
+
+ % The curve.
+ draw zeropath;
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("1");
+
+ fatsymmetric;
+
+ "The number 1";
+
+ % The top serif.
+ draw
+ rightof Top~Middle
+ -- (Top - CCurl)~Left;
+
+ % The vertical, clipped by the top serif.
+ draw
+ fatcliponce
+ (Bottom~Middle -- Top~Middle)
+ (rightof Top~Middle -- (Top - CCurl)~Left);
+
+ % The bottom serif.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("2");
+ "The number 2";
+
+ % The outline.
+ var (path) twopath;
+
+ twopath
+ = (Top-CCurl)~Left
+ .. oabove Top~Middle {right}
+ .. (Top -+- threeBar)~Right {down}
+ .. Bottom~Left {down};
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (leftof Bottom~Right -- oabove leftof Top~Right)
+ (twopath);
+
+ % The curve.
+ draw twopath;
+
+ % The base line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("3");
+ "The number 3";
+
+ % The curve.
+ var (path) threepath;
+
+ threepath
+ = (Top - CCurl)~Left
+ .. oabove Top~Middle {right}
+ .. (Top -+- threeBar)~Right {down}
+ .. threeBar~Middle {left}
+ & threeBar~Middle {right}
+ .. (threeBar -+- Bottom)~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + CCurl)~Left;
+
+ % The top emphasis.
+ draw
+ fatcliptwice
+ (leftof threeBar~Right -- oabove leftof Top~Right)
+ (threepath);
+
+ % The bottom emphasis.
+ draw
+ fatcliptwice
+ (obelow leftof Bottom~Right -- leftof threeBar~Right)
+ (threepath);
+
+ % The curve.
+ draw threepath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("4");
+ "The number 4";
+
+ % The right of the vertical is jut away from the right of the character.
+ var (numeric) verticalRight;
+
+ verticalRight + jut = Right;
+
+ % The bar.
+ draw
+ ABar~Left
+ -- ABar~Right;
+
+ % The vertical, fattened and clipped by the diagonal.
+ outline
+ fatcliponce
+ (leftof Bottom~verticalRight -- leftof Top~verticalRight)
+ (Top~verticalRight -- ABar~Left);
+
+ % The diagonal.
+ draw
+ Top~verticalRight
+ -- ABar~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("5");
+ "The number 5";
+
+ % The top horizontal.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The vertical, fattened.
+ draw
+ fatten
+ rightof (Bottom + sixBowl)~Left
+ -- rightof Top~Left;
+
+ % The curve.
+ draw
+ (Bottom + sixBowl)~Left
+ --- (Bottom + sixBowl)~Middle
+ .. (Bottom + 1/2sixBowl)~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + CCurl)~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("6");
+ "The number 6";
+
+ % The bowl.
+ var (path) sixpath;
+
+ sixpath
+ = (Bottom + 1/2sixBowl)~Right {up}
+ .. (Bottom + sixBowl)~Middle {left}
+ .. (Bottom + 1/2sixBowl)~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. cycle;
+
+ % The tail.
+ draw
+ (Bottom + 1/2sixBowl)~Left
+ --- (Bottom + sixBowl)~Left
+ .. oabove Top~Middle {right}
+ .. (Top - CCurl)~Right;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- rightof (Bottom + sixBowl)~Left)
+ (sixpath);
+
+ % The bowl.
+ draw sixpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("7");
+ "The number 7";
+
+ % The vertical.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The diagonal.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- leftof Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("8");
+ "The number 8";
+
+ % The bowls.
+ var (path) eighttop, eightbottom;
+
+ eighttop
+ = oabove Top~Middle {left}
+ .. (Top -+- threeBar)~Left {down}
+ .. threeBar~Middle {right}
+ .. (threeBar -+- Top)~Right {up}
+ .. cycle;
+
+ eightbottom
+ = threeBar~Middle {left}
+ .. (threeBar -+- Bottom)~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom -+- threeBar)~Right {up}
+ .. cycle;
+
+ % The top emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (eighttop);
+
+ % The bottom emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (eightbottom);
+
+ % The top bowl.
+ draw eighttop;
+
+ % The bottom bowl.
+ draw eightbottom
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbnum ("9");
+ "The number 9";
+
+ % The bowl.
+ var (path) ninepath;
+
+ ninepath
+ = (Top - sixBowl)~Middle {left}
+ .. (Top - 1/2sixBowl)~Left {up}
+ .. oabove Top~Middle {right}
+ .. (Top - 1/2sixBowl)~Right {down}
+ .. cycle;
+
+ % The tail.
+ draw
+ (Top - 1/2sixBowl)~Right
+ --- (Top - sixBowl)~Right
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + CCurl)~Left;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- rightof (Top - sixBowl)~Left)
+ (ninepath);
+
+ % The bowl.
+ draw ninepath
+
+endchar;
+
+% -------------------------------------------------------------------
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold.mf
new file mode 100644
index 00000000000..bf0f53e34c4
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold.mf
@@ -0,0 +1,9 @@
+input bbparams;
+input bbgreeku;
+input bbgreekl;
+input bbnum;
+input bbupper;
+input bblower;
+input bbpunc;
+input bbligs;
+
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold10.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold10.mf
new file mode 100644
index 00000000000..f0a077a94c6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold10.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 10pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr10;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold12.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold12.mf
new file mode 100644
index 00000000000..ecf09875891
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold12.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 12pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr12;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold17.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold17.mf
new file mode 100644
index 00000000000..69b43b69800
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold17.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 17pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr17;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold5.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold5.mf
new file mode 100644
index 00000000000..fa3bbbfbd70
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold5.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 5pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr5;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold6.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold6.mf
new file mode 100644
index 00000000000..8a65b013a80
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold6.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 6pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr6;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold7.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold7.mf
new file mode 100644
index 00000000000..b4493e51f52
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold7.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 7pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr7;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold8.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold8.mf
new file mode 100644
index 00000000000..8fa4db16366
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold8.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 8pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr8;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbold9.mf b/Master/texmf-dist/fonts/source/public/bbold/bbold9.mf
new file mode 100644
index 00000000000..7e0cafe281c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbold9.mf
@@ -0,0 +1,19 @@
+% Blackboard bold 9pt. Alan Jeffrey, 18 Dec 1989.
+
+mode_setup;
+
+input bbbase;
+
+% Hacks to make sure cmr doesn't generate the font, and doesn't load cmbase.
+cmbase := 1;
+def generate suffix t = enddef;
+
+% Input the cmr parameters.
+input cmr9;
+
+font_identifier := "BBOLD";
+font_coding_scheme := "Blackboard bold";
+
+% Then generate blackboard bold.
+input bbold;
+bye;
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbparams.mf b/Master/texmf-dist/fonts/source/public/bbold/bbparams.mf
new file mode 100644
index 00000000000..b344ccb1584
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbparams.mf
@@ -0,0 +1,205 @@
+% Blackboard bold parameters, Alan Jeffrey 14--18 Dec 1989.
+%
+% These parameters are deduced from those set in bboldNN.mf.
+%
+% The only horizontal parameter we take in is the unit u#,
+% from which we calculate all the horizontal distances.
+%
+% The distance between the two strokes in a fat line is fatness.
+
+fatness# := 2.3u#;
+
+% The size of a pen is rule_thickness.
+
+pen_size# := rule_thickness#;
+
+% Characters with space inside them (for example the
+% gap between the bar and the dot in a ! have either smallspace,
+% space# or bigspace# worth of space.
+
+smallspace# := u#;
+space# := 2u#;
+bigspace# := 3u#;
+
+% Characters with bits jutting out of them (for example the feet in
+% ] or the bar in f) have jut# worth of stick-outiness.
+
+jut# := 1.5u#;
+bigjut# := 2.5u#;
+
+% Some characters are exactly fatness# + pen_size# wide, as they are
+% drawn with just one vertical line.
+%
+% tiny --- I, i, l, |, ,, :, ;, ., `, ', !.
+%
+% Others have a small amount jutting out from the side, like the
+% top and bottom of a ].
+%
+% tiny+jut --- [, ], (, ).
+
+tiny# := fatness# + pen_size#;
+
+% Upper case characters come in three sizes:
+%
+% small --- B, E, F, J, K, L, P, R, S, Gamma, Pi, ?, $, /, \,
+%
+% medium --- A, C, D, G, H, M, N, O, Q, T, U, V, X, Y, Z,
+% Delta, Theta, Lamba, Xi, Sigma, Upsilon, Phi, Psi, Omega,
+%
+% big --- W.
+
+smallcap# := 9u#;
+medcap# := 10u#;
+bigcap# := 14u#;
+
+% Lower case characters come in three sizes:
+%
+% small --- f, j, s, t,
+%
+% small + fatness --- h, k, n, r,
+%
+% medium --- a, c, d, e, g, o, q, u, v, x, y, z,
+%
+% medium + fatness --- b, p,
+%
+% big --- m, w.
+%
+% The letters with verticals at the left have fatness added on
+% so that the curves are the same size as the other letters.
+
+smalllower# := 6u#;
+medlower# := 7.5u#;
+biglower# := 11u#;
+
+% Numerals are all the same size.
+
+numeral# := 8u#;
+
+% Arithmetic operators (in this case just +) are all the same size.
+
+arithmetic# := 12u#;
+
+% Characters have three kinds of space at the side:
+%
+% small --- for example around a T,
+%
+% medium --- for example around an O,
+%
+% large --- for example around an I.
+
+smallgap# := 1/2u#;
+medgap# := 1u#;
+biggap# := 1.5u#;
+
+% Whereas we've only got one horizontal measurement stolen from cmr,
+% there are lots of vertical ones. We can use these to work out
+% our measurements.
+%
+% Characters can have various top positions:
+%
+% ATop --- the top of all capitals, Greek, and some punctuation,
+%
+% aTop --- the top of lower case without ascenders,
+%
+% bTop --- the top of lower case with ascenders,
+%
+% iTop --- the top of i and j,
+%
+% oneTop --- the top of numerals,
+%
+% bracketTop --- the top of a bracket (also the top of the body size).
+
+ATop# := cap_height#;
+aTop# := x_height#;
+bTop# := asc_height#;
+oneTop# := fig_height#;
+bracketTop# := body_height#;
+iTop# := min(x_height# + space# + fatness#, asc_height#);
+
+% The bottoms of characters can be:
+%
+% aBottom --- the base line,
+%
+% gBottom --- the bottom of a descender,
+%
+% bracketBottom --- the bottom of a bracket (also the bottom of the body).
+
+aBottom# := 0pt#;
+gBottom# := -desc_depth#;
+.5 [bracketBottom#, bracketTop#] = math_axis#; % Brackets are centered.
+
+% Various characters such as A, B, G, e, and 3 have bars in them.
+
+ABar# := .25 [aBottom#, ATop#];
+BBar# := .52 [aBottom#, ATop#]; % number nicked from cmr.
+GBar# := .50 [aBottom#, ATop#];
+eBar# := bar_height#;
+threeBar# := .54[aBottom#, oneTop#]; % number nicked from cmr.
+
+% The top of a Q's tail is at QTailTop, and the bottom is at QTailBottom.
+
+QTailTop# := .28 [aBottom#, ATop#]; % number nicked from cmr.
+QTailBottom# := aBottom# - comma_depth#; % number nicked from cmr.
+
+% Various sorts of letters have various amounts of curl in them.
+%
+% CCurl --- the amount the end of a C curls,
+% cCurl --- the amount the end of a c curls,
+% gCurl --- the amount the tail of a g curls,
+% hCurl --- the distance from the bottom of an h to the point where
+% the right of the curve becomes vertical.
+
+CCurl# := .2 (ATop# - aBottom#);
+cCurl# := .2 (aTop# - aBottom#);
+gCurl# := .2 (aBottom# - gBottom#);
+hCurl# := .4 (aTop# - aBottom#);
+
+% The numbers five, six and eight have bowls, which are sixBowl# tall.
+
+sixBowl# := aTop# - aBottom#; % These bowls are as tall as an a.
+
+% A less than (and a greater than) is lessthan# tall.
+
+lessthan# := math_spread [5/4x_height#, 3/2x_height#]; % Numbers from cmr.
+
+% Right, I'll now turn these nice sharp measurements into grotty
+% approximate pixelly ones.
+
+define_corrected_pixels (o);
+
+define_whole_blacker_pixels
+ (pen_size);
+
+define_whole_pixels
+ (fatness, jut, bigjut, smallspace, space, bigspace);
+
+define_whole_vertical_pixels
+ (CCurl, cCurl, gCurl, hCurl, sixBowl);
+
+define_whole_top_pixels
+ (ATop, aTop, bTop, oneTop, bracketTop, QTailTop);
+
+define_whole_bottom_pixels
+ (QTailBottom, aBottom, gBottom, bracketBottom);
+
+pickup pencircle scaled pen_size;
+define_good_y_pixels
+ (ABar, BBar, GBar, eBar, threeBar);
+
+% And now some handy numbers, which I don't need sharp versions of.
+
+aMiddle := .5[aBottom, aTop];
+dashMiddle := .61803 [aBottom, aTop]; % Number stolen from cmr.
+
+% I can now set the font parameters for the TFM files, stolen from cmr.
+
+font_normal_space := 6u#;
+font_normal_stretch := 3u#;
+font_normal_shrink := 2u#;
+font_quad := 18u#;
+font_extra_space := 2u#;
+font_x_height := x_height#;
+
+% And that's that.
+
+
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbpunc.mf b/Master/texmf-dist/fonts/source/public/bbold/bbpunc.mf
new file mode 100644
index 00000000000..a539fe2f821
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbpunc.mf
@@ -0,0 +1,691 @@
+% Blackboard bold punctuation, Alan Jeffrey, 13--18 Dec 1989.
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("!")
+ (biggap#, tiny#, biggap#);
+
+ fatsymmetric;
+
+ "Exclamation mark `!'";
+
+ % The vertical.
+ draw
+ fatten
+ Top~Middle
+ -- (Bottom + space + fatness)~Middle;
+
+ % The dot.
+ draw
+ splodge
+ above Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("#")
+ (medgap#, arithmetic#, medgap#)
+ (ATop#, gBottom#);
+
+ "The hash sign `#'";
+
+ % The top line.
+ draw
+ (Horizon + space)~Left
+ -- (Horizon + space)~Right;
+
+ % The bottom line.
+ draw
+ (Horizon - space)~Left
+ -- (Horizon - space)~Right;
+
+ % The right vertical.
+ draw
+ rightof Top~(Middle + space)
+ -- rightof Bottom~(Middle + space);
+
+ % The left vertical.
+ outline
+ fatten
+ rightof Top~(Middle - space)
+ -- rightof Bottom~(Middle - space)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("$")
+ (medgap#, smallcap#, medgap#)
+ (ATop# + jut#, aBottom# - jut#);
+
+ fatsymmetric;
+
+ "Dollar sign `$'";
+
+ % The path of the S.
+ draw
+ (Top - CCurl)~Right
+ .. ATop~Middle {left}
+ .. (ATop -+- BBar)~Left {down}
+ .. BBar~Middle {right}
+ .. (BBar -+- aBottom)~Right {down}
+ .. aBottom~Middle {left}
+ .. (Bottom + CCurl)~Left;
+
+ % The vertical.
+ outline
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("%")
+ (medgap#, smallcap#, medgap#)
+ (bracketTop#, aBottom# + aTop# - bracketTop#);
+
+ fatsymmetric;
+
+ "Per cent sign `%'";
+
+ % The dot at top left.
+ draw
+ splodge
+ below rightof Top~Left;
+
+ % The dot at bottom right.
+ draw
+ splodge
+ above leftof Bottom~Right;
+
+ % The diagonal.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- leftof Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("&")
+ (medgap#, arithmetic#, medgap#)
+ (ATop#, aBottom#);
+
+ "Ampersand `&'";
+
+ % z1 is the top point at which the curls cross. It is somewhere
+ % between the top point and the bottom point, and is at aTop.
+
+ z1 = whatever[leftof Top~Middle, Bottom~(Left -+- Middle)];
+ y1 = aTop;
+
+ % The curve.
+ var (path) ampersandpath;
+
+ ampersandpath
+ = (Bottom + cCurl)~Right
+ .. obelow Bottom~(Right - jut) {left}
+ ... z1
+ .. oabove leftof Top~Middle {right}
+ .. z1
+ .. aMiddle~Left {down}
+ .. obelow Bottom~(Left -+- Middle) {right}
+ .. aMiddle~(Right - space);
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- rightof Top~Left)
+ (ampersandpath);
+
+ % The curve.
+ draw ampersandpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("'")
+ (medgap#, tiny#, medgap#)
+ (bTop#, bTop# - tiny# - comma_depth#);
+
+ fatsymmetric;
+
+ "Apostrophe `''";
+
+ % The dot and tail.
+ draw
+ splodger below Top~Middle
+ .. Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("(")
+ (biggap#, tiny# + jut#, smallgap#)
+ (bracketTop#, bracketBottom#);
+
+ "Left bracket `('";
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- rightof Top~Left)
+ (Bottom~Right {left} .. Horizon~Left .. Top~Right {right});
+
+ % The curve.
+ draw
+ Bottom~Right {left}
+ .. Horizon~Left
+ .. Top~Right {right}
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (")")
+ (smallgap#, tiny# + jut#, biggap#)
+ (bracketTop#, bracketBottom#);
+
+ "Right bracket `)'";
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (leftof Bottom~Right -- leftof Top~Right)
+ (Bottom~Left {right} .. Horizon~Right .. Top~Left {left});
+
+ % The curve.
+ draw
+ Bottom~Left {right}
+ .. Horizon~Right
+ .. Top~Left {left}
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("*")
+ (medgap#, (sqrt3)/2 * arithmetic#, medgap#)
+ (math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#)
+
+ fatsymmetric;
+
+ "Star `*'";
+
+ % The distance from the top of the character to the top of the diagonals.
+ var (numeric) adistance;
+ adistance = round ((Top - Horizon) / 2);
+
+ % The NW diagonal.
+ draw
+ (Bottom + adistance)~Right
+ -- (Top - adistance)~Left;
+
+ % The NE diagonal.
+ draw
+ (Bottom + adistance)~Left
+ -- (Top -adistance)~Right;
+
+ % The vertical, fattened.
+ outline
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("+")
+ (medgap#, arithmetic#, medgap#)
+ (math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#)
+
+ "Plus sign `+'";
+
+ % The horizontal line.
+ draw
+ Horizon~Left
+ -- Horizon~Right;
+
+ % The vertical, fattened.
+ outline
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (",")
+ (medgap#, tiny#, medgap#)
+ (aBottom# + tiny#, aBottom# - comma_depth#);
+
+ fatsymmetric;
+
+ "Comma `,'";
+
+ % The dot and tail.
+ draw
+ splodger above aBottom~Middle
+ .. Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("-")
+ (smallgap#, smalllower#, medgap#)
+ (aTop#, aBottom#);
+
+ "Hyphen `-'";
+
+ % The line.
+ draw
+ Horizon~Left
+ -- Horizon~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (".")
+ (medgap#, tiny#, medgap#)
+ (aBottom# + tiny#, aBottom#);
+
+ fatsymmetric;
+
+ "Full stop `.'";
+
+ % The dot.
+ draw
+ splodge
+ above Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("/")
+ (smallgap#, smallcap#, smallgap#)
+ (bracketTop#, bracketBottom#);
+
+ "Virgule (slash) `/'";
+
+ % The line.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- leftof Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (":")
+ (medgap#, tiny#, medgap#)
+ (aTop#, aBottom#);
+
+ fatsymmetric;
+
+ "Colon `:'";
+
+ % The top dot.
+ draw
+ splodge
+ below Top~Middle;
+
+ % The bottom dot.
+ draw
+ splodge
+ above Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ (";")
+ (medgap#, tiny#, medgap#)
+ (aTop#, aBottom# - comma_depth#);
+
+ fatsymmetric;
+
+ "Semicolon `;'";
+
+ % The upper dot.
+ draw
+ splodge
+ below Top~Middle;
+
+ % The lower dot and tail.
+ draw
+ splodger above aBottom~Middle
+ .. Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+beginblacker 1.5;
+bbchar
+ ("<")
+ (biggap#, arithmetic#, biggap#)
+ (math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#);
+
+ "Less than sign `<'";
+
+ % The top diagonal.
+ draw
+ Top~Right
+ --- Horizon~Left;
+
+ % The bottom diagonal, fattened, and clipped by the top.
+ % We need to carry on the diagonal past where it started,
+ % so we extend it up to the top of the character.
+ draw
+ fatcliponce
+ (leftof Bottom~Right
+ --- rightof Horizon~Left
+ .. farrightof Top~(2Left - Right))
+ (Top~Right -- Horizon~Left)
+
+endchar;
+endblacker;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("=")
+ (medgap#, tiny#, medgap#)
+ (math_axis# + 1/2tiny#, math_axis# - 1/2tiny#);
+
+ fatsymmetric;
+
+ "Centred dot";
+
+ % The dot.
+ draw
+ splodge
+ above Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+beginblacker 1.5;
+
+bbchar
+ (">")
+ (biggap#, arithmetic#, biggap#)
+ (math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#);
+
+ "Greater than sign `>'";
+
+ % The top diagonal.
+ draw
+ Top~Left
+ --- Horizon~Right;
+
+ % The bottom diagonal, fattened, and clipped by the top.
+ % We need to carry on the diagonal past where it started,
+ % so we extend it up to the top of the character.
+ draw
+ fatcliponce
+ (rightof Bottom~Left
+ --- leftof Horizon~Right
+ .. farleftof Top~(2Right - Left))
+ (Top~Left -- Horizon~Right)
+
+endchar;
+endblacker;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("?")
+ (medgap#, smallcap#, medgap#);
+
+ fatsymmetric;
+
+ "Question mark `?'";
+
+ % The height of the bottom of the curl.
+ var (numeric) curlBottom;
+
+ curlBottom = Bottom + fatness + space;
+
+ % The curl.
+ var (path) questionpath;
+
+ questionpath
+ = (Top - CCurl)~Left
+ .. oabove Top~Middle {right}
+ .. (1/3[Top, curlBottom])~Right {down}
+ .. rightof (2/3[Top, curlBottom])~Middle {left}
+ .. leftof curlBottom~Middle {down};
+
+ draw questionpath;
+
+ % The emphasis, clipped with the bottom bit of the question path.
+ draw
+ fatcliponce
+ (curlBottom~Middle -- oabove Top~Middle)
+ (subpath (2, infinity) of questionpath);
+
+ % The dot.
+ draw
+ splodge
+ above Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("@")
+ (medgap#, tiny# + 2fatness#, medgap#)
+ (ATop#, aBottom#);
+
+ "At sign `@'";
+
+ % The curl.
+ var (path) atpath;
+
+ atpath
+ = (Bottom + CCurl)~Right
+ .. obelow Bottom~Middle {left}
+ .. Horizon~Left {up}
+ .. oabove Top~Middle {right}
+ .. splodger leftof Horizon~Right;
+
+ % The emphasis.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (atpath);
+
+ % The curl.
+ draw atpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("[")
+ (biggap#, tiny# + jut#, smallgap#)
+ (bracketTop#, bracketBottom#);
+
+ "Left square bracket `['";
+
+ % The vertical.
+ draw
+ fatten
+ rightof Bottom~Left
+ -- rightof Top~Left;
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("\")
+ (smallgap#, smallcap#, smallgap#)
+ (bracketTop#, bracketBottom#);
+
+ "Reverse slash `\'";
+
+ % The line.
+ draw
+ fatten
+ leftof Bottom~Right
+ -- rightof Top~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("]")
+ (smallgap#, tiny# + jut#, biggap#)
+ (bracketTop#, bracketBottom#);
+
+ "Right square bracket `]'";
+
+ % The vertical.
+ draw
+ fatten
+ leftof Bottom~Right
+ -- leftof Top~Right;
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+beginblacker 1.25;
+bbchar
+ ("^")
+ (biggap#, tiny# + jut#, smallgap#)
+ (bracketTop#, bracketBottom#);
+
+ "Left angle bracket";
+
+ % The emphasis, clipped by the bracket.
+ draw
+ fatcliptwice
+ (rightof Bottom~Left -- rightof Top~Left)
+ (Bottom~Right -- Horizon~Left -- Top~Right);
+
+ % The bracket.
+ draw
+ Bottom~Right
+ -- Horizon~Left
+ -- Top~Right
+
+endchar;
+endblacker;
+
+% -------------------------------------------------------------------
+
+beginblacker 1.25;
+bbchar
+ ("_")
+ (smallgap#, tiny# + jut#, biggap#)
+ (bracketTop#, bracketBottom#);
+
+ "Right angle bracket";
+
+ % The emphasis, clipped by the bracket.
+ draw
+ fatcliptwice
+ (leftof Bottom~Right -- leftof Top~Right)
+ (Bottom~Left -- Horizon~Right -- Top~Left);
+
+ % The bracket.
+ draw
+ Bottom~Left
+ -- Horizon~Right
+ -- Top~Left
+
+endchar;
+endblacker;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("`")
+ (medgap#, tiny#, medgap#)
+ (bTop#, bTop# - tiny# - comma_depth#);
+
+ fatsymmetric;
+
+ "Reverse apostrophe ``'";
+
+ % The dot and tail.
+ draw
+ splodgel above Bottom~Middle
+ .. Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("|")
+ (biggap#, tiny#, biggap#)
+ (bracketTop#, bracketBottom#);
+
+ "Vertical bar `|'";
+
+ % The line.
+ draw
+ fatten
+ Bottom~Middle
+ -- Top~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
diff --git a/Master/texmf-dist/fonts/source/public/bbold/bbupper.mf b/Master/texmf-dist/fonts/source/public/bbold/bbupper.mf
new file mode 100644
index 00000000000..c839abf2ed9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/bbold/bbupper.mf
@@ -0,0 +1,698 @@
+% Blackboard bold capitals, Alan Jeffrey, 11--14 Dec 1989.
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("A")
+ (smallgap#, medcap#, smallgap#);
+
+ "The letter A";
+
+ % The bar, clipped by the wedge.
+ draw
+ cliptwice
+ (ABar~Left -- ABar~Right)
+ (Bottom~Left -- Top~Middle -- Bottom~Right);
+
+ % The left line, fattened, and clipped by the right line.
+ outline
+ fatcliponce
+ (rightof Bottom~Left -- rightof Top~Middle)
+ (Top~Middle -- Bottom~Right);
+
+ % The right line.
+ draw
+ Top~Middle
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("B")
+ (biggap#, smallcap#, medgap#);
+
+ "The letter B";
+
+ % The top arc.
+ draw
+ Top~Left
+ -- Top~Middle {right}
+ .. (Top -+- BBar)~Right
+ .. {left} BBar~Middle
+ -- BBar~Left;
+
+ % The bottom arc.
+ draw
+ BBar~Left
+ -- BBar~Middle {right}
+ .. (BBar -+- Bottom)~Right
+ .. {left} Bottom~Middle
+ -- Bottom~Left;
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("C")
+ (medgap#, medcap#, medgap#);
+
+ "The letter C";
+
+ % The curve of the C.
+ var (path) Cpath;
+
+ Cpath
+ = (Top - CCurl)~Right
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + CCurl)~Right;
+
+ % The fat line emphasising the left side, clipped by the curve.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (Cpath);
+
+ % The curve.
+ draw Cpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("D")
+ (biggap#, medcap#, medgap#);
+
+ "The letter D";
+
+ % The curve of the D.
+ draw
+ Top~Left
+ -- Top~Middle {right}
+ .. Horizon~Right {down}
+ .. {left} Bottom~Middle
+ -- Bottom~Left;
+
+ % The left line, fattened.
+ draw
+ fatten
+ rightof Top~Left
+ --- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("E")
+ (biggap#, smallcap#, smallgap#);
+
+ "The letter E";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The bar.
+ draw
+ BBar~Left
+ -- farrightof BBar~(Left + bigjut);
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right;
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("F")
+ (biggap#, smallcap#, smallgap#);
+
+ "The letter F";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The bar.
+ draw
+ BBar~Left
+ -- farrightof BBar~(Left + bigjut);
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("G")
+ (medgap#, medcap#, medgap#);
+
+ "The letter G";
+
+ % The curve of the G (which is the same as of a C).
+ var (path) Gpath;
+
+ Gpath
+ = (Top - CCurl)~Right
+ .. oabove Top~Middle {left}
+ .. Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. (Bottom + CCurl)~Right;
+
+ % The emphasis for the left of the curve.
+ draw
+ fatcliptwice
+ (rightof obelow Bottom~Left -- oabove rightof Top~Left)
+ (Gpath);
+
+ % The curve.
+ draw Gpath;
+
+ % The bar.
+ draw
+ (Bottom + CCurl)~Right
+ -- GBar~Right
+ -- GBar~(Right - bigjut)
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("H")
+ (biggap#, medcap#, biggap#);
+
+ "The letter H";
+
+ % The right line.
+ draw
+ Top~Right
+ -- Bottom~Right;
+
+ % The bar.
+ draw
+ BBar~Left
+ -- BBar~Right;
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("I")
+ (biggap#, tiny#, biggap#);
+
+ "The letter I";
+
+ % The vertical, fattened.
+ draw
+ fatten
+ Top~Middle
+ -- Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("J")
+ (medgap#, smallcap#, biggap#);
+
+ "The letter J";
+
+ % The curve.
+ var (path) Jpath;
+
+ Jpath
+ = Top~Right
+ -- (Bottom -+- Top)~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + CCurl)~Left;
+
+ % The emphasis on the J, clipped by the curve.
+ draw
+ fatcliponce
+ (leftof Top~Right -- obelow leftof Bottom~Right)
+ (Jpath);
+
+ % The curve.
+ draw Jpath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("K")
+ (biggap#, smallcap#, medgap#);
+
+ "The letter K";
+
+ % The point at which the top diagonal hits the left side of the character.
+ % It is somewhere along the line from the top right to BBar~Middle.
+
+ z1 = whatever[Top~Right, BBar~Middle];
+ x1 = Left;
+
+ % The top diagonal.
+ draw
+ z1 -- Top~Right;
+
+ % The bottom diagonal.
+ draw
+ BBar~Middle
+ -- Bottom~Right;
+
+ % The left edge, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("L")
+ (biggap#, smallcap#, smallgap#);
+
+ "The letter L";
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right;
+
+ % The left line, fattened.
+ draw
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("M")
+ (biggap#, medcap#, biggap#);
+
+ symmetric;
+
+ "The letter M";
+
+ % The left line, fattened and clipped by the left diagonal.
+
+ draw
+ fatcliponce
+ (rightof Bottom~Left -- rightof Top~Left)
+ (Top~Left -- BBar~Middle);
+
+ % The rest of the letter.
+ draw
+ Top~Left
+ -- BBar~Middle
+ -- Top~Right
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("N")
+ (biggap#, medcap#, biggap#);
+
+ "The letter N";
+
+ % The left line, fattened and clipped by the diagonal.
+
+ draw
+ fatcliponce
+ (rightof Bottom~Left -- rightof Top~Left)
+ (Top~Left -- Bottom~Right);
+
+ % The rest of the letter.
+ draw
+ Top~Left
+ -- Bottom~Right
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("O")
+ (medgap#, medcap#, medgap#);
+
+ "The letter O";
+
+ % The path of the O.
+ var (path) Opath;
+
+ Opath
+ = oabove Top~Middle
+ .. Horizon~Left
+ .. obelow Bottom~Middle
+ .. Horizon~Right
+ .. cycle;
+
+ % The emphasis at the left of the O, clipped by the O curve.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (Opath);
+
+ % The curve.
+ draw Opath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("P")
+ (biggap#, smallcap#, medgap#);
+
+ "The letter P";
+
+ % The arc.
+ draw
+ Top~Left
+ -- Top~Middle {right}
+ .. (Top -+- BBar)~Right
+ .. {left} BBar~Middle
+ -- BBar~Left;
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbchar
+ ("Q")
+ (medgap#, medcap#, medgap#)
+ (ATop#, QTailBottom#);
+
+ "The letter Q";
+
+ % The path of the Q.
+ var (path) Qpath;
+
+ Qpath
+ = oabove Top~Middle
+ .. (Top -+- aBottom)~Left
+ .. obelow aBottom~Middle
+ .. (Top -+- aBottom)~Right
+ .. cycle;
+
+ % The emphasis at the left of the Q, clipped by the Q curve.
+ draw
+ fatcliptwice
+ (obelow rightof Bottom~Left -- oabove rightof Top~Left)
+ (Qpath);
+
+ % The curve.
+ draw Qpath;
+
+ % The tail.
+ draw
+ QTailTop~Middle
+ -- QTailBottom~Right
+
+endchar;
+
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("R")
+ (biggap#, smallcap#, medgap#);
+
+ "The letter R";
+
+ % The arc.
+ draw
+ Top~Left
+ -- Top~Middle {right}
+ .. (Top -+- BBar)~Right
+ .. {left} BBar~Middle
+ -- BBar~Left;
+
+ % The left line, fattened.
+ outline
+ fatten
+ rightof Top~Left
+ -- rightof Bottom~Left;
+
+ % The diagonal.
+ draw
+ BBar~Middle
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("S")
+ (medgap#, smallcap#, medgap#);
+
+ "The letter S";
+
+ % The path of the S.
+ var (path) Spath;
+
+ Spath
+ = (Top - CCurl)~Right
+ .. oabove Top~Middle {left}
+ .. (Top -+- BBar)~Left {down}
+ .. BBar~Middle {right}
+ .. (BBar -+- Bottom)~Right {down}
+ .. obelow Bottom~Middle {left}
+ .. (Bottom + CCurl)~Left;
+
+ % The emphasis at the top left of the S.
+ draw
+ fatcliptwice
+ (oabove rightof Top~Left -- rightof BBar~Left)
+ (subpath (0, 4) of Spath);
+
+ % The path of the S.
+ draw Spath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("T")
+ (smallgap#, medcap#, smallgap#);
+
+ fatsymmetric;
+
+ "The letter T";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The vertical, fattened.
+ draw
+ fatten
+ Top~Middle
+ -- Bottom~Middle
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("U")
+ (biggap#, medcap#, biggap#);
+
+ "The letter U";
+
+ % The path of the U.
+ var (path) Upath;
+
+ Upath
+ = Top~Left
+ -- Horizon~Left {down}
+ .. obelow Bottom~Middle {right}
+ .. {up} Horizon~Right
+ -- Top~Right;
+
+ % The emphasis of the U.
+ draw
+ fatcliponce
+ (rightof Top~Left -- obelow rightof Bottom~Left)
+ (Upath);
+
+ % The path of the U.
+ draw Upath
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("V")
+ (smallgap#, medcap#, smallgap#);
+
+ symmetric;
+
+ "The letter V";
+
+ % The left diagonal, clipped by the right.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof Bottom~Middle)
+ (Bottom~Middle -- Top~Right);
+
+ % The right diagonal.
+ draw
+ Bottom~Middle
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("W")
+ (smallgap#, bigcap#, smallgap#);
+
+ symmetric;
+
+ "The letter W";
+
+ % The left diagonal, clipped by the rest.
+ draw
+ fatcliponce
+ (rightof Top~Left -- rightof Bottom~(Left -+- Middle))
+ (Bottom~(Left -+- Middle) -- BBar~Middle);
+
+ % The rest of the letter.
+ draw
+ Bottom~(Left -+- Middle)
+ -- BBar~Middle
+ -- Bottom~(Middle -+- Right)
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("X")
+ (medgap#, medcap#, medgap#);
+
+ "The letter X";
+
+ % The SE diagonal.
+ draw
+ Top~Left
+ -- Bottom~Right;
+
+ % The SW diagonal, fattened.
+ outline
+ fatten
+ leftof Top~Right
+ -- rightof Bottom~Left
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("Y")
+ (smallgap#, medcap#, smallgap#);
+
+ fatsymmetric;
+
+ "The letter Y";
+
+ % The fat stroke running top left to bottom.
+ draw
+ fatten
+ rightof Top~Left
+ -- BBar~Middle
+ -- Bottom~Middle;
+
+ % The right diagonal.
+ draw
+ rightof BBar~Middle
+ -- Top~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+
+bbcap
+ ("Z")
+ (medgap#, medcap#, medgap#);
+
+ "The letter Z";
+
+ % The top line.
+ draw
+ Top~Left
+ -- Top~Right;
+
+ % The diagonal, fattened.
+ draw
+ fatten
+ leftof Top~Right
+ -- rightof Bottom~Left;
+
+ % The bottom line.
+ draw
+ Bottom~Left
+ -- Bottom~Right
+
+endchar;
+
+% -------------------------------------------------------------------
+