summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/fonts/mathabx/README67
-rw-r--r--Master/texmf-dist/doc/fonts/mathabx/mathtest.pdfbin0 -> 732301 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/mathabx/mathtest.tex993
-rw-r--r--Master/texmf-dist/doc/fonts/mathabx/testmac.tex521
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha12.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha5.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha6.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha7.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matha9.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf367
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf280
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf1367
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf946
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf67
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf421
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf664
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf1456
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf298
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf846
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf264
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf1464
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf1105
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf229
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf375
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf97
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf2220
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf416
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf673
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf498
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf168
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf237
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf257
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf1001
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf189
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf516
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf435
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf371
-rw-r--r--Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf107
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfmbin0 -> 1372 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfmbin0 -> 1380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfmbin0 -> 1376 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfmbin0 -> 1380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfmbin0 -> 1380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfmbin0 -> 1380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfmbin0 -> 1380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfmbin0 -> 1196 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfmbin0 -> 1384 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfmbin0 -> 1992 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfmbin0 -> 700 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfmbin0 -> 928 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfmbin0 -> 1520 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfmbin0 -> 1532 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfmbin0 -> 1540 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfmbin0 -> 1528 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfmbin0 -> 1540 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfmbin0 -> 1524 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfmbin0 -> 1532 bytes
-rw-r--r--Master/texmf-dist/tex/generic/mathabx/mathabx.dcl1127
-rw-r--r--Master/texmf-dist/tex/generic/mathabx/mathabx.sty80
-rw-r--r--Master/texmf-dist/tex/generic/mathabx/mathabx.tex145
-rwxr-xr-xMaster/tlpkg/bin/ctan2tds4
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/mathabx.tlpsrc2
90 files changed, 20525 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/fonts/mathabx/README b/Master/texmf-dist/doc/fonts/mathabx/README
new file mode 100644
index 00000000000..e0f1cd558b5
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/mathabx/README
@@ -0,0 +1,67 @@
+Mathabx fonts series
+--------------------
+
+Last modification: May 16, 2005
+---------------------------------
+
+Summary
+-------
+
+The mathabx series are a large mathematical symbols set designed and
+defined in MetaFont language. Many of common and uncommon symbols can
+be found in these series. Encoding, metrics, designs are not supposed
+to be frozen since improvements, changes of mind can always
+happen. These programs are intended to produce bitmap fonts and a lot
+of care is given about rasterization.
+
+Brief description of the fonts
+------------------------------
+
+mathaXX (XX ranges from 5 to 12): quite common mathematical symbols;
+
+mathbXX (XX ranges from 5 to 12): quite uncommon mathematical symbols;
+
+mathxXX (XX ranges from 5 to 12): large and extensible mathematical
+symbols which fit the two previous series;
+
+mathcXX (XX ranges from 10 to 10): unsupported (yet) since it is an
+incomplete calligraphic series;
+
+mathuXX (XX ranges from 10 to 10): unsupported (forever) since it is a
+too strange symbols series;
+
+mathuxXX (XX ranges from 10 to 10): unsupported (forever) since it is
+a too strange large or extensible symbols series.
+
+Suggested TDS location for all ``.mf'' files:
+---------------------------------------------
+$TEXMF/fonts/source/public/mathabx
+
+Brief description of the (La)TeX files
+--------------------------------------
+
+mathabx.tex: ``plain TeX'' input file which defines the 3 families
+matha (5,7,10), mathb (5,7,10) and mathx (10,10,10) then read
+mathabx.dcl;
+
+mathabx.sty: LaTeX input file which defines the 3 families matha,
+mathb and mathx according to LaTeX fonts selection scheme, then read
+mathabx.dcl;
+
+mathabx.dcl: declaration of every new or conpound symbol.
+
+Suggested TDS location: $TEXMF/tex/generic/misc/
+-----------------------
+
+Support for installation: Almost none.
+-------------------------
+
+Documentation: mathtest.tex, testmac.tex.
+--------------
+
+mathtest.tex is a plain tex file that uses testmac as a macro file and which need that all the fonts should be properly installed. See postscript (or PDF) outputs provided in this distribution.
+
+Brief commentary: Happy TeXing.
+-----------------
+
+Anthony Phan.
diff --git a/Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf b/Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf
new file mode 100644
index 00000000000..7c8cf3fb1c6
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/mathabx/mathtest.tex b/Master/texmf-dist/doc/fonts/mathabx/mathtest.tex
new file mode 100644
index 00000000000..3dd30398b0b
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/mathabx/mathtest.tex
@@ -0,0 +1,993 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TEST FOR MATH faces and symbols
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\magnification=\magstep1
+\input testmac.tex
+%\hsize=17truecm\hoffset=-0.54truecm
+%\vsize=25.7truecm\voffset=-0.54truecm
+\input amssym.def
+\input amssym
+\long\def\comments#1\endcomments{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% conservation des anciennes macros
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\let\Surd=\surd
+\let\infinity=\infty
+\let\voidset=\emptyset
+\let\In=\in
+\let\Subset=\subset
+\let\Forall=\forall
+\let\Exists=\exists
+\let\Dagger=\dagger
+\let\DDagger=\ddagger
+\let\oldpartial=\partial
+\let\oldflat=\flat
+\let\oldnatural=\natural
+\let\oldsharp=\sharp
+\let\oldnorm=\|
+\let\oldbigotimes=\bigotimes
+\let\oldsum=\sum
+\let\oldprod=\prod
+\let\oldcoprod=\coprod
+\let\oldint=\intop
+\let\oldoint=\ointop
+\let\oldsqrt=\sqrt
+\let\oldwidetilde=\widetilde
+\let\oldwidehat=\widehat
+%
+% in math (display) mode
+%
+\let\normall=\mathopen
+\let\normalm=\mathrel
+\let\normalr=\mathclose
+\catcode`\@=11
+\def\biggg#1{{\hbox{$\left#1\vbox to20.5\p@{}\right.\n@space$}}}
+\catcode`\@=12
+\def\bigggl{\mathopen\biggg}
+\def\bigggr{\mathclose\biggg}
+\def\bigggm{\mathrel\biggg}
+\def\testdelimiter#1{
+ \csname#1l\endcsname({\rm H}
+ \csname#1m\endcsname|{\rm O}
+ \csname#1r\endcsname)
+ =\csname#1l\endcsname[{\rm H}
+ \csname#1m\endcsname\thickvert{\rm O}
+ \csname#1r\endcsname]
+ =\csname#1l\endcsname\{{\rm H}
+ \csname#1m\endcsname|{\rm O}
+ \csname#1r\endcsname\}
+ =\csname#1l\endcsname\langle {\rm H}
+ \csname#1m\endcsname|{\rm O}
+ \csname#1r\endcsname\rangle
+ =\csname#1l\endcsname\ldbrack{\rm H}
+ \csname#1m\endcsname|{\rm O}
+ \csname#1r\endcsname\rdbrack
+ =\csname#1l\endcsname\lceil{\rm H}
+ \csname#1m\endcsname\thickvert{\rm O}
+ \csname#1r\endcsname\rceil
+\cr
+ =\csname#1l\endcsname\lfloor{\rm H}
+ \csname#1m\endcsname\thickvert{\rm O}
+ \csname#1r\endcsname\rfloor
+ =\csname#1l\endcsname\lgroup{\rm H}
+ \csname#1m\endcsname\thickvert{\rm O}
+ \csname#1r\endcsname\rgroup
+%=\csname#1l\endcsname\lmoustache {\rm H}\csname#1r\endcsname\rmoustache
+ =\csname#1l\endcsname|{\rm H}\csname#1r\endcsname|
+ =\csname#1l\endcsname\Vert {\rm H}\csname#1r\endcsname\Vert
+ =\csname#1l\endcsname\vvvert {\rm H}\csname#1r\endcsname\vvvert
+ =\csname#1l\endcsname\uparrow {\rm H}
+ \csname#1m\endcsname\updownarrow{\rm H}
+ \csname#1r\endcsname\downarrow
+ =\csname#1l\endcsname\Uparrow {\rm H}
+ \csname#1m\endcsname\Updownarrow{\rm H}
+ \csname#1r\endcsname\Downarrow
+ =\sqrt{\csname#1m\endcsname|}}
+\def\testwideaccent#1#2{\hbox{\tt\string#2}\hfill
+ #1#2{I}=#1#2{H}=#1#2{II}=#1#2{III}=
+ #1#2{IIII}=#1#2{IIIII}=#1#2{IIIIII}=#1#2{IIIIIIII}}
+\def\testcs#1#2{\allowbreak\noindent\leavevmode
+ \hbox to 0.1\hsize{$#1{#2}$\hss}\nobreak
+ \hbox to 0.4001\hsize{\tt\string#1\hss}\ignorespaces}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\title{\shadedtext{Mathabx series}}
+\subtitle{\shadedtext{Informations and tests}}
+\author{\shadedtext{Anthony Phan}}
+\maketitle
+
+The mathabx series are a large mathematical symbols set designed and
+defined in MetaFont language. Many common and uncommon symbols can be
+found in these series. These programs are intended to produce bitmap
+fonts and a lot of care is given about rasterization. Encoding,
+metrics, designs are not supposed to be frozen since improvements,
+changes of mind can always happen. Thus, {\it this distribution is
+still (\today) at a ``merely for evaluation'' level}. Please check my
+home page to get the last updates:
+$$
+\hbox{\catcode`\~=12\tt http://www-math.univ-poitiers.fr/~phan/metafont.html}
+$$
+
+By now, there are three main series of fonts: {\it matha},
+{\it mathb} and {\it mathx}. The {\it matha}\/
+series consist in quite usual mathematical symbols, more precisely they
+contain the, say, 64 mathematical symbols one can use
+and suppose other ones know their meaning. The {\it mathb}\/
+series is a kind of twin of {\it matha}, but it is the one
+people should not show outside of the house: these symbols
+do not have a very well known meaning and, thus, should not
+be used. The {\it mathx}\/ series is the set of extensible
+delimiters and large operators fitting {\it matha}\/ and
+{\it mathb}\/; its encoding doesn't match at all the {\it cmex}\/
+one, but it may change in the future.
+
+Since a metafont designer doesn't always know when to stop
+creating or coding stuff, many pieces of code remained once
+the three former series where filled. The remaining stuff
+has been put in {\it mathu}\/ ({\it u}\/ stands for
+unsupported) and in {\it mathux}\/ ({\it ux}\/ stands for
+unsupported extensible). There is also
+``work in progress''-material: some full OT1 implementation
+of calligraphic characters. If this last task find an end,
+there would be a {\it mathc}\/ series---where {\it c}\/ would
+stand for calligraphic.
+
+The translation of this document into english is not yet finished.
+We do apologize for this.
+
+\section*{Progress}
+
+\subsection*{April 29, 2002}
+First posting on CTAN.
+
+\subsection*{June 19, 2002}
+A few changes have been done:
+
+\item{$\bullet$}
+Some large symbols are now thicker (\cs{\bigcup}, etc.);
+
+\item{$\bullet$}
+``Flat cups'' have been introduced (\cs{\bigcup}, etc.),
+that means that the roundish parts of those symbols are
+now ``flatter''.
+
+\subsection*{November 16, 2002}
+
+\item{$\bullet$}
+Some work has been done on the calligraphic set. The uppercase
+subset should be exactly the {\it Computer Modern}\/'s one. So
+kerning has to be done in order to get a nice stuff.
+
+\item{$\bullet$}
+The series\/ {\it mathux}\/ are in progress. It will contain
+more extensible symbols (unnecessary I think, so still unsupported).
+
+\item{$\bullet$}
+Binary operators {\tt\string\sprod} and {\tt\string\scoprod}
+have been added to {\it matha}\/ at locations {\tt"3C} and {\tt "3D}.
+I love those symbols and I believe that they must lie on the
+main symbols series.
+
+\subsection*{July 29, 2003}
+
+\item{$\bullet$}
+Some \LaTeX\ bugs have been fixed in {\tt mathabx.dcl}
+with the help of some very kind users (Patrick Cousot, Hung N. Duong,
+Kohsaku Hotta).
+
+\item{$\bullet$}
+The file {\tt mathgrey.mf} is no longer used. This means
+that {\tt mathu10} has no more grey characters. It seems that
+those characters are not compatible with some postscript
+or such translation (with {\tt TeXtrace} for instance).
+
+\item{$\bullet$}
+The \LaTeX\ style file {\tt mathabx.sty} allows options
+which are {\it matha}, {\it mathb}\/ and {\it mathx}.
+These options define which series will be used.
+If no option is given, the three series will be used.
+(The plain\TeX\ file {\tt mathabx.tex} does not allow
+anything of this kind.)
+
+\subsection*{October 23, 2003}
+
+\item{$\bullet$} The {\tt\string\bar} and {\tt\string\widebar}
+accents have changed of height (which is now smaller).
+
+\item{$\bullet$} Arrows have a wider breadth and a lighter
+head.
+
+\item{$\bullet$} A little work on calligraphic digits has been done.
+
+\item{$\bullet$} Double brackets formerly named
+{\tt\string\lbbbrack} and {\tt\string\rbbbrack} are now
+named {\tt\string\ldbrack} and {\tt\string\rdbrack}, and
+they still have their curious aliases {\tt\string\lsemantic}
+and {\tt\string\rsemantic}.
+
+\subsection*{May 18, 2005}
+
+\item{$\bullet$} I didn't pay attention until recently to
+the fact that square roots may appear also in
+{\tt\string\scriptstyle} and {\tt\string\scriptscriptstyle}
+modes. This makes necessary to make the corresponding symbols
+go across some usual symbols set and the extensible characters set.
+This is repaired: a basic radical symbol now lies in {\it matha}\/
+at location {\tt"37}.
+In fact, the former basic radical symbol in {\it mathx}\/ still exists
+at place {\tt"60} and there was no problem if {\it mathx}\/ is used
+in 3 different sizes.
+
+\item{$\bullet$} The {\tt\string\bar} and {\tt\string\widebar}
+accents have been restored to their former heights.
+
+\item{$\bullet$} Large greek like symbols (sums, products, coproducts)
+have been revised. Text\-style product and coproduct widths have been
+increased by $u\#$. Also, in {\it matha}, small sum, product, coproduct
+have changed of encoding since the small sum has been introduced.
+
+\item{$\bullet$} {\it mathc}\/ has finally been introduced.
+It is still an uncomplete calligraphic set. Also existing glyphs
+may be revised.
+
+\item{$\bullet$} Integrals have been revised. Comments are welcome.
+
+\item{$\bullet$} Astronomical/logical symbols are in progress.
+
+\item{$\bullet$} Plain\TeX/\LaTeX\ files have been revised.
+
+\section{List of every mathabx' symbols}
+
+Thereafter will be loaded
+plain\TeX\ definitions files related to these fonts families.
+Assigning any value to the control sequence\/ {\tt\string\proofmode}
+like\/ {\tt\string\let\string\proofmode=!}, for instance,
+the definition of every symbol will be made together with the
+printing of the related informations. The control sequence
+{\tt\string\proofmode} will be reset to\/ {\tt\string\undefined}
+at the end of the loading. This can be helpful for instantaneous
+documentation.
+
+About the names of the different control sequences, we mostly tried to
+conform to the usual names. If in the following there is some apparent
+mismatch with\/ {\it AMS}\/ denomination, it is normally supported.
+Below is printed first the symbol, then if it already exists the {\it
+Computer Modern}\/ or\/ {\it AMS}\/ one, the name of the control
+sequence, in exponent the spacing value of the symbol (``other''
+means that it is an accent or such, it does not really matter),
+at last---if any---its aliases.
+
+\let\proofmode=!
+\fuzzytext
+\input mathabx.tex
+\normaltext
+
+\section{Special constructions}
+
+The special constructions described here are defined in the file
+{\tt mathabx.dcl}. Usual plain\TeX/\LaTeX\ constructions should
+be supported if not replaced by some {\it mathabx}\/ symbol.
+
+\item{$\bullet$}
+The control sequences
+{\tt\string\not}, {\tt\string\varnot}, {\tt\string\changenotsign}
+are described in some next section.
+
+\item{$\bullet$} The control sequences {\tt\string\overbrace}, etc.,
+have been defined as suggested by Matthias Clasen and Ulrik Vieth
+in {\it newmath}.
+\medbreak
+\testcs\overbrace{abcde}
+\testcs\underbrace{abcde}
+\testcs\overgroup{abcde}
+\testcs\undergroup{abcde}
+\medbreak
+\item{$\bullet$} The control sequences {\tt\string\overrightarrow},
+etc., have been defined anew ({\it see}\/~{\tt mathabx.dcl}). They
+will certainly be improved since they work only in textstyle and
+displaystyle modes (as for standard plain\TeX/\LaTeX).
+$$
+\overrightarrow{abcde}^{\overrightarrow{abcde}^{\overrightarrow{abcde}}}
+$$
+\medbreak
+\testcs\overrightarrow{abcde}
+\testcs\overleftarrow{abcde}
+\testcs\overleftrightarrow{abcde}
+\testcs\underrightarrow{abcde}
+\testcs\underleftarrow{abcde}
+\testcs\underleftrightarrow{abcde}
+\testcs\overRightarrow{abcde}
+\testcs\overLeftarrow{abcde}
+\testcs\overLeftRightarrow{abcde}
+\testcs\underRightarrow{abcde}
+\testcs\underLeftarrow{abcde}
+\testcs\underLeftRightarrow{abcde}
+\medbreak
+
+\item{$\bullet$} The build-in accent {\tt\string\wideparen}
+allows to build other accent-like control sequences.
+\medbreak
+\testcs\widering{abcde}
+\testcs\widedot{abcde}
+\testcs\wideddot{abcde}
+\testcs\widedddot{abcde}
+\testcs\wideddddot{abcde}
+\medbreak
+
+\item{$\bullet$}
+At last, some symbols like {\tt\string\int},
+{\tt\string\bigcomplement},
+{\tt\string\surd}, must be defined by some {\tt\string\def}
+because of limits or such.
+
+\noindent
+But it seems clear when viewing what is done elsewhere that the already too large mathabx set should (really?) be extended. This may be done by combining already existing symbols. If not, I would once again take my pen, some paper and my keyboard if necessary.
+
+\section{Global installation}
+
+In the {\it mathabx.me}\/ distribution, MetaFont source files
+({\tt xxx.mf}) are all located in the {\tt source/} directory.
+They may be moved to a (new) subdirectory named {\tt mathabx}
+of {\tt\$TEXMF/fonts/source/public/}, thus in
+$$
+\hbox{\tt\$TEXMF/fonts/source/public/mathabx/}
+$$
+where {\tt\$TEXMF}
+stands for the root directory of the \TeX MF distribution of
+the computer. Plain\TeX/\LaTeX input files are all located
+in the {\tt texinputs} directory of this distribution.
+The three files {\tt mathabx.tex}, {\tt mathabx.sty}
+and {\tt mathabx.dcl} may be moved to the directory
+$$
+\hbox{\tt\$TEXMF/tex/generic/misc/}
+$$
+(other location may be also fine). Other \TeX\ files are
+there for documentation. They can be removed.
+
+At last, the \TeX MF system needs to know that new files
+have been added. This can be done by executing from a console
+{\tt texhash} or such, some command that refreshes the \TeX MF
+database. We don't provide more informations on
+this last subject since it may depend on every particular \TeX MF
+distribution and computer system.
+
+If a previous {\it mathabx}\/ distribution has been already
+installed, please remove every bitmap fonts ({\tt xxx.yyypk})
+and metrics ({\tt xxx.tfm}) related to {\it mathabx} (only!)
+since all of them may change from a ditribution to another.
+
+We won't write anything about local installation (on Unices
+systems for instance), nor about Type 1 conversions and installation
+of the {\it mathabx}\/ fonts. One can find informations about these
+two last topics on the World Wide Web (but maybe in japanese).
+
+\section{Use with plain\TeX}
+
+The basic input file is {\tt mathabx.tex}. It requires {\tt mathabx.dcl}
+which is common to plain\TeX\ and \LaTeX. So one should type
+$$
+ \cs{\input\ mathabx.tex}
+$$
+at the beginning of his (her) plain\TeX\ document. This sets up
+all the symbols previously described and defines $3$ new families
+of mathematical symbols whose numbers are \cs\mathafam,
+\cs\mathbfam\ and \cs\mathxfam. Pointsizes are $10\,\rm pt$, {\it i.e.},
+textstyle is $10\,\rm pt$, scriptstyle is $7\,\rm pt$
+and scriptscriptstyle is $5\,\rm pt$ for \cs\mathafam\ and \cs\mathbfam\
+families. For \cs\mathxfam\ the three styles correspond to a pointsize
+equal to $10\,\rm pt$ as for {\tt cmex} in plain\TeX. Changing pointsizes
+is easy since any plain\TeX user know how to do so (one can also look
+into {\tt mathabx.tex} to make sure). Remember that setting the
+control sequence {\tt\string\proofmode} to a known value
+before inputing {\tt mathabx.tex} would lead to the verbose
+mode as illustrated in Section~1 of this document.
+
+\section{Use with \LaTeX}
+
+The basic package is {\tt mathabx.sty}. It requires {\tt mathabx.dcl}
+which is common to plain\TeX\ and \LaTeX. So one should type
+$$
+ {\tt\cs\usepackage\{mathabx\}}
+$$
+in the preamble of his (her) \LaTeX\ document. This sets up
+all the symbols previously described and defines $3$ new families
+of mathematical symbols whose \LaTeX\ names are {\tt matha},
+{\tt mathb} and {\tt mathx} (according to \LaTeX\ font selection scheme).
+These families behave as expected with pointsize changes.
+The possible options of the {\tt mathabx} package are
+{\tt matha}, {\tt mathb} and {\tt mathx}. They allow to select
+which families would be actually defines. For instance
+$$
+ {\tt\cs\usepackage[matha,mathx]\{mathabx\}}
+$$
+ignores the {\it mathb}\/ family and load only {\it matha}\/
+and {\it mathx}\/ families. Remember that no option means
+that the three families would be loaded. No individual
+symbol selection has been setted. If one wants to use only,
+say, a couple of symbols in the {\it mathabx}\/ series,
+he (she) would have to it by him(her)self.
+
+\section{The control sequence \tt\string\not}
+
+With plain\TeX\ or \LaTeX, the control sequence\/ {\tt\string\not}
+only invocates a particular mathematical character (slanted line)
+which is of relation-type. This character, which width is zero, \dots
+
+Ce caract\`ere, qui est de longueur
+nulle, recouvre le caract\`ere suivant d'autant mieux que son
+mode d'espacement est du type relation et que sa largeur a une
+certaine valeur (celle des signes\/ $+$ ou\/ $=$). Autrement, le
+recouvrement peut \^etre assez mauvais (en fait, inadapt\'e).
+
+\par
+
+Dans les s\'eries pr\'esent\'ees ici, certaines n\'egations
+ont \'et\'e d\'efinies. Il semblait alors souhaitable que
+la commande\/ {\tt\string\not} suivie par l'appel d'un caract\`ere
+poss\'edant sa n\'egation propre ait pour r\'esultat cette derni\`ere.
+Il suffisait pour cela de d\'efinir\/ {\tt\string\not} comme une
+commande \`a un argument qui teste si cet argument est une commande
+dont la n\'egation est d\'efinie
+(si celle-ci est\/ {\tt\string\xxx}, le test porte sur l'existence
+de\/ {\tt\string\notxxx} ou de\/ {\tt\string\nxxx}),
+auquel cas ce sera elle qui sera appliqu\'ee, sinon
+(si l'argument n'est pas une commande, par exemple si c'est un caract\`ere,
+ou si la n\'egation n'est pas d\'efinie) la m\'ethode
+de superposition sera utilis\'ee.
+
+\par
+
+Le caract\`ere de n\'egation est appel\'e par\/ {\tt\string\notsign},
+il appartient \`a la s\'erie\/ {\it matha}\/ et est droit. On peut y
+pr\'ef\'erer une ligne inclin\'ee pr\'esente dans la s\'erie
+{\it mathb}\/ et nomm\'ee\/ {\tt\string\varnotsign}. Il suffit alors
+d'\'echanger les noms. C'est ce que fait la commande
+{\tt\string\changenotsign} et ce de mani\`ere
+\'eventuellement locale.
+Ainsi on aura~:
+$$
+A\not=B
+\qquad\hbox{\tt\string\changenotsign}\qquad
+\changenotsign
+A\not=B
+$$
+bien qu'on doive pr\'ef\'erer sur cet exemple l'emploi
+de la commande\/ {\tt\string\neq}~:\/ $A\neq B$.
+Ci-dessous nous avons recours \`a la commande\/ {\tt\string\not}
+(sauf pour\/ {\tt\string\neq}) pour des relations dont la n\'egation
+est d\'efinie~:
+$$
+a=b\neq c\equiv d\not\equiv e\sim f\not\sim g \approx h\not\approx i
+\simeq j\not\simeq k\cong l\not\cong m,
+$$
+puis pour des relations (entre autres) dont la n\'egation
+n'est pas d\'efinie~:
+$$
+\changenotsign
+a\topdoteq b\not\topdoteq c\botdoteq d\not\botdoteq
+e\dotseq f\not\dotseq g
+\changenotsign
+\risingdotseq h\not\risingdotseq i
+\fallingdotseq j\not\fallingdotseq
+\changenotsign
+k S l\not S m,
+$$
+o\`u on se sera servi de\/ {\tt\string\changenotsign}
+\`a certains endroits. Il est \`a remarquer que
+l'espacement est perturb\'e de mani\`ere coh\'erente,
+c'est-\`a-dire de la m\^eme fa\c con qu'il l'aurait \'et\'e
+par le\/ {\tt\string\not} classique.
+\par
+Nous avons aussi d\'efini la commande\/ {\tt\string\varnot}
+de fonctionnement semblable \`a celui de l'instruction
+{\tt\string\not}~:\/ {\tt\string\varnot\string\xxx} teste si
+{\tt\string\varnotxxx} est d\'efini et, si oui ex\'ecute
+cette derni\`ere, sinon applique\/ {\tt\string\varnotsign\string\xxx}.
+Nous reprenons la formule pr\'ec\'edente avec cette commande~:
+$$
+a\topdoteq b\varnot\topdoteq c\botdoteq d\varnot\botdoteq
+e\dotseq f\varnot\dotseq g
+\risingdotseq h\not\risingdotseq i
+\fallingdotseq j\not\fallingdotseq
+k S l\varnot S m,
+$$
+o\`u on ne voit aucune diff\'erence. En revanche,
+$$
+a=b\varnot= c\equiv d\varnot\equiv e\sim f\varnot\sim g
+\approx h\varnot\approx i
+\simeq j\varnot\simeq k\cong l\varnot\cong m
+$$
+emploie dans ce cas uniquement la m\'ethode de juxtaposition.
+
+\section{Mayan numerals}
+
+The presence of Mayan numerals in these series is related only to the history
+of the development of them. At the beginning, we wanted to keep some\dots
+
+La pr\'esence de chiffres mayas dans ces s\'eries
+n'est li\'ee qu'\`a l'histoire du d\'evelop\-pement
+de celles-ci. Nous d\'esirions au d\'epart conserver
+quelques ressemblances avec les s\'eries destin\'ees
+au texte (caract\`eres alphab\'etiques et num\'eraux).
+L'absence ou la raret\'e de possibilit\'e de composer
+selon des num\'erations anciennes nous aura pouss\'e
+\`a nous y int\'eresser un peu. Le r\'esultat est
+illustr\'e ci-dessous~:
+$$
+\mayadelimiters([,])
+\maya{1251}+\maya{2135}=\maya{3386}\neq\mayadigit{0}.
+$$
+This line has been typesetted with
+\smallbreak
+{\tt\string\mayadelimiters([,])\par
+\string\maya$\{$1251$\}$%
++%
+\string\maya$\{$2135$\}$%
+=%
+\string\maya$\{$3386$\}$%
+\string\neq
+\string\mayadigit$\{$0$\}$}.
+\smallbreak
+\noindent
+Keeping these characters and the corresponding control sequences
+is always an open question.
+
+\section{La commande\/ {\tt\string\prime} et ses amies}
+
+Nous avons r\'eintroduit les signes\/ {\tt\string\prime}
+multiples associ\'es aux commandes\/ {\tt\string\prime},
+{\tt\string\second},\/ {\tt\string\third} et\/ {\tt\string\fourth}.
+Une commande naturellement associ\'ee est\/ {\tt\string\degree}
+correspondant \`a un symbole semblable \`a celui appel\'e
+par\/ {\tt\string\circ}. Il est n\'eanmoins diff\'erent car
+il doit \^etre homog\`ene \`a l'ensemble des symboles
+pr\'ec\'edents (comparer\/ $44^\circ$ et\/ $44^\degree$).
+$$
+44^\degree+36^\prime+89^\second+46^\third+99^\fourth
+$$
+La construction habituelle ({\it i.e.}\/ {\tt 99''''})
+supporte une propri\'et\'e de ligaturage
+sur les caract\`eres correspondants.
+C'est ce que l'on voit ci-dessous~:
+$$
+44^\degree+36'+89''+46'''+99'''',
+\qquad
+\hbox{mais}
+\quad
+99'''''
+\quad
+\hbox{ou}
+\quad
+99''''''''.
+$$
+(Il faut y regarder de tr\`es pr\`es pour y voir
+ce qu'il faut voir\dots)
+
+\section{Various trials}
+
+We begin by some meaningless expressions:
+$$
+\displaylines{
+G\triangleleft H\trianglelefteq A \trianglerighteq B \triangleright C
+\cr
+|G|\not\triangleleft|H|\not\trianglelefteq|A|
+\not\trianglerighteq|B|\not\triangleright|C|.
+}
+$$
+Then we look at variations with mathematical style:
+$$
+\infty^{\infty^\infty}
+\qquad
+\infinity^{\infinity^\infinity}
+\qquad
+\in^{\in^\in}
+\qquad
+\subset^{\subset^\subset}
+\qquad
+\subseteq^{\subseteq^\subseteq}
+\qquad
+<^{<^<}
+\qquad
+\sqrt x^{\sqrt x^{\sqrt x}}
+$$
+The first {\tt\string\infty} symbol is from {\it matha}, the next one is
+the {\it Computer Modern}\/ one.
+
+Other trials with sometimes {\it Computer Modern}\/ symbols for comparison:
+$$
+\displaylines{
+\Gamma\ssum \Sigma\sprod \Pi\scoprod D,\qquad f:X\righttoleftarrow\cr
+{\partial f\over\partial x}(x)
+\simeq
+{\oldpartial f\over\oldpartial x}(x)
+\qquad
+\oldflat\flat\oldnatural\natural\oldsharp\sharp\hbox{bof bof}
+\cr
+\oldnorm T(h)f-f\oldnorm=\|T(h)f-f\|
+\cr
+A\cap B\cup C\uplus D \vee E\wedge F
+\cr
+A\sqcap B\sqcup C\squplus D \veebar E\barwedge F\veedoublebar G
+\doublebarwedge F \curlyvee H \curlywedge I
+\cr
+\dagger\Dagger\ddagger\DDagger
+\qquad
+A^{\dagger^\dagger}
+\cdot A^{\Dagger^\Dagger}
+\qquad
+A\Asterisk A\coAsterisk\{y\}\star[x]\ast(z)
+\qquad
+\surd\Surd
+\cr
+\forall x\in y^\perp,\ \exists S\subseteq R,
+\ \exists x,\ (\Exists x),\quad
+z\cap y,\ x\in y
+\cr
+f\mapsto g\longmapsto h,\qquad
+f\hookrightarrow g \hookleftarrow h,\qquad
+A\Mapstochar\Relbar\joinrel\Rightarrow B
+\Leftarrow\joinrel\Relbar\Mapsfromchar C,\qquad
+a\leftsquigarrow b\leftrightsquigarrow
+c\rightsquigarrow d.
+}
+$$
+Integrals in displaystyle then in textstyle (I don't want to forget that these signs are derived from the letter ``S'' even if I draw them my way):
+$$
+\displaylines{
+\int\int\int_0^t f\circ g(x)\,{\rm d}x=
+\int\iint_0^t f\circ g(x)\,{\rm d}x=
+\iiint_0^t f\circ g(x)\,{\rm d}x
+\cr
+\oldint\nolimits_0^t\oldoint_C f\circ g(x)\,{\rm d}x=
+\int_0^t\oint_C f\circ g(x)\,{\rm d}x=
+\oiint_S f\circ g(x)\,{\rm d}x
+\cr
+\textstyle\int\int\int_0^t f\circ g(x)\,{\rm d}x=
+\int\iint_0^t f\circ g(x)\,{\rm d}x=
+\iiint_0^t f\circ g(x)\,{\rm d}x
+\cr
+\textstyle\oldint_0^t\oldoint_C f\circ g(x)\,{\rm d}x=
+\textstyle\int_0^t\oint_C f\circ g(x)\,{\rm d}x=
+\oiint_S f\circ g(x)\,{\rm d}x
+}
+$$
+Sums and products, etc., in displaystyle:
+$$
+\displaylines{
+\prod_{i=0}^{i=n}\prod_{j=0}^{j=n}
+\prod_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\prod_{i=0}^{i=n}\coprod_{j=0}^{j=n}
+\prod_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\coprod_{i=0}^{i=n}\coprod_{j=0}^{j=n}
+\coprod_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\oldprod_{i=0}^{i=n}\oldcoprod_{j=0}^{j=n}
+\oldprod_{k=0}^{k=n}\Gamma^{ij}_k
+\cr
+\prod_{i=0}^{i=n}\prod_{j=0}^{j=n}
+\prod_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\biggl(\prod_{i=0}^{i=n}\sum_{j=0}^{j=n}
+\prod_{k=0}^{k=n}\Gamma^{ij}_k\biggr)
+=
+\biggl[
+\sum_{i=0}^{i=n}\sum_{j=0}^{j=n}
+\sum_{k=0}^{k=n}\Gamma^{ij}_k\biggr]
+=
+\biggl[\oldsum_{i=0}^{i=n}\oldsum_{j=0}^{j=n}
+\oldsum_{k=0}^{k=n}\Gamma^{ij}_k\biggr]
+\cr
+\bigcup_{i=0}^{i=n}\bigcap_{j=0}^{j=n}
+\bigcup_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\bigcup_{i=0}^{i=n}\bigvee_{j=0}^{j=n}
+\bigcup_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\bigcup_{i=0}^{i=n}\bigwedge_{j=0}^{j=n}
+\bigcup_{k=0}^{k=n}\Gamma^{ij}_k
+=
+\bigvee_{i=0}^{i=n}\bigwedge_{j=0}^{j=n}
+\bigvee_{k=0}^{k=n}\Gamma^{ij}_k
+}
+$$
+Sums and products, etc., in textstyle:
+$$
+\displaylines{
+\textstyle
+\prod\prod
+\prod\Gamma^{ij}_k
+=
+\prod\coprod
+\prod\Gamma^{ij}_k
+=
+\coprod\coprod
+\coprod\Gamma^{ij}_k
+=
+\oldprod\oldcoprod
+\oldprod\Gamma^{ij}_k
+\cr
+\textstyle
+\prod\prod
+\prod\Gamma^{ij}_k
+=
+\bigl(\prod\sum
+\prod\Gamma^{ij}_k\bigr)
+=
+\bigl[
+\sum\sum
+\sum\Gamma^{ij}_k\bigr]
+=
+\bigl[\oldsum\oldsum
+\oldsum\Gamma^{ij}_k\bigr]
+\cr
+\textstyle
+\bigcup\bigcap
+\bigcup\Gamma^{ij}_k
+=
+\bigcup\bigvee
+\bigcup\Gamma^{ij}_k
+=
+\bigcup\bigwedge
+\bigcup\Gamma^{ij}_k
+=
+\bigvee\bigwedge
+\bigvee\Gamma^{ij}_k
+\cr}
+$$
+
+\section{Delimiters}
+
+The whole set of extensible delimiters is presented below.
+Some of those delimiters are quite close to\/ {\it Computer
+Modern}\/'s ones, for instance parentheses are almost the same.
+By now there are a few differences. Left and right groups
+are fully supported, i.e. every sizes exist. Moustaches
+are built in the font but not in a satisfactory way, so
+that the corresponding control sequences have not been
+written down. Some vertical lines are not supported, these
+are the ones that could be built with various extension moduli
+as in\/ {\it Computer Modern}.
+$$
+\displaylines{
+(X,X)=[X,X]=\{X,X\}=
+\langle X^c,X^c\rangle
+\equiv
+[X^c,X^c]
+=
+\ulcorner X\urcorner
+=
+\llcorner X\lrcorner
+=
+\ulcorner X\lrcorner
+=
+\llcorner X\urcorner
+\cr
+\testdelimiter{normal}
+\cr
+\testdelimiter{big}
+\cr
+\testdelimiter{Big}
+\cr
+\testdelimiter{bigg}
+\cr
+\testdelimiter{Bigg}
+\cr
+\testdelimiter{biggg}
+\cr
+}
+$$
+
+\section{Accents and wide accents}
+Here are some basic accents.
+$$
+\def\test#1{\hbox{\tt\string#1\ o}\quad#1o}
+\displaylines{
+\test\ring,\quad
+\test\dot,\quad\test\ddot,\quad\test\dddot,\quad\test\ddddot,\cr
+}
+$$
+Thus,
+$$
+\ddddot y -4\dddot y +5x\ddot y +f(x)\dot y=g(x)\in\ring C
+$$
+Here we have extensible accents. Control sequences {\tt\string\oldxxx}
+just invoke former symbols when they exist, these control sequence
+are defined only for this test file.
+$$
+\displaylines{
+\testwideaccent{\skew3}{\widehat}
+\cr
+\testwideaccent{\skew3}{\oldwidehat}
+\cr
+\testwideaccent{\skew3}{\widecheck}
+\cr
+\testwideaccent{\skew3}{\widetilde}
+\cr
+\testwideaccent{\skew3}{\oldwidetilde}
+\cr
+\testwideaccent{\skew3}{\widearrow}
+\cr
+\testwideaccent{\skew3}{\wideparen}
+\cr
+\testwideaccent{\skew3}{\widering}
+\cr
+\testwideaccent{\skew3}{\widedot}
+\cr
+\testwideaccent{\skew3}{\wideddot}
+\cr
+\testwideaccent{\skew3}{\widedddot}
+\cr
+\testwideaccent{\skew3}{\wideddddot}
+\cr
+\testwideaccent{\skew3}{\widebar}
+\cr
+\hbox{{\tt\string\overleftarrow} is not of accent type}\hfill
+\overleftarrow{IIIIIIIIIIIIIIIIIIIIIIIIIII}
+}
+$$
+According to Matthias Clasen's construction: {\tt\string\overbrace},
+{\tt\string\underbrace}, {\tt\string\overgroup}, {\tt\string\undergroup}
+$$
+\overbrace{\underbrace{HHHHHHHHHH}}^{AAAAAAAAAAAA}_{HHHHHHHHHHH}
+\qquad
+\overgroup{\undergroup{HHHHHHHHHH}}^{AAAAAAAAAAAA}_{HHHHHHHHHHH}
+$$
+
+\section{Astronomical symbols}
+
+Astronomical/logical symbols are in progress (coding, design, etc.).
+There is not enough room yet in the {\it mathb}\/ series to provide a
+complete set of such symbols. If Mayan numerals are supressed,
+maybe\dots
+$$
+\left\lfilet\enspace\vcenter{\advance\hsize by -4\parindent
+The Earth~$\Earth$ (or~$\varEarth$)
+is in rotation around the Sun~$\Sun$
+like Mercury~$\Mercury$, Venus~$\Venus$,
+Mars~$\Mars$, Saturn~$\Saturn$, Jupiter~$\Jupiter$,
+Uranus~$\Uranus$, Neptune~$\Neptune$ and Pluto~$\Pluto$.
+But the Moon~$\Moon$ is not.\par}\enspace\right\rfilet
+$$
+Also, there are Aries $\Aries$, Taurus $\Taurus$, Gemini $\Gemini$,
+Leo $\Leo$, Libra $\Libra$, Scorpio $\Scorpio$, etc. (Notice the use of
+{\tt\string\lfilet} and {\tt\string\rfilet} in the previous
+paragraph---which names may be changed.)
+
+Of course, some symbols have an {\it alias}\/
+such as\/ {\tt\string\girl} and\/ {\tt\string\boy}:
+$$
+ \{(\boy,\boy),(\boy,\girl),(\girl,\boy),(\girl,\girl)\}.
+$$
+These symbols are nice in some usual exercices of
+elementary Probability Theory.
+
+The {\tt\string\rip} sign is mostly for fun. It is not an
+astronomical/logical symbol but is located among them in {\it
+mathb}. In the Theory of Markov Processes, a cemetery sign is often
+needed. We have designed the following ugly and not so necessary one:
+$\rip{}\rip\rip\rip$. Many successive {\tt\string\rip} signs glue to
+each others.
+
+\section{Unsupported}
+
+{\font\unsupported=mathc10
+\unsupported
+As one can see further on, many things are unsupported. But this does not mean that few things extracted from unsupported stuff are not interesting. Below, one can see some shape that comes from my favorite pen and another I saw once on the web and thought it was astonishingly beautiful.
+{\font\unsupported=mathu10
+\def\greekfill{\hss\cleaders\hbox{\unsupported\char"9D}\hfill}%
+\def\ghaneanfill{\hss\cleaders\hbox{\unsupported\char"9E}\hfill}%
+\medbreak
+\line{\greekfill}
+\line{\ghaneanfill}}
+\medbreak\noindent
+See {\it mathc10}, {\it mathu10}, {\it mathux10} in the next pages.}
+\newpage
+
+\section{Mathabx font tables}
+
+\subsection*{Matha, major symbols series}
+
+{\def\fontname{matha10 }
+\startfont\table}
+%{\def\fontname{matha5 }
+%\startfont\table}
+
+\newpage
+
+\subsection*{Mathb, minor symbols series}
+
+{\def\fontname{mathb10 }
+\startfont\table}
+%{\def\fontname{mathb5 }
+%\startfont\table}
+
+\newpage
+
+\subsection*{Mathx, major extensible symbols series}
+{\centerlargechars
+\def\fontname{mathx10 }
+\startfont\table}
+%{\centerlargechars
+%\def\fontname{mathx5 }
+%\startfont\table}
+
+\newpage
+
+\subsection*{Mathc, unsupported calligraphic series}
+{\font\unsupported=mathc10
+\unsupported
+The series\/ {\it mathc}\/ have some features that may interest
+people: it contains the whole set of calligraphic characters
+of\/ {\tt cmsy} and also extends it. The first part of this extension
+is the latin lowercase letters, and also the punctuation which
+make it a quite complete OT1 font. This part of the extension is due
+to me. Hebrew characters have been converted to MetaFont,
+adapted and extended (dagesh sign) also by me, but the source
+is some ``professional'' or commercial font.
+
+Things are in progress: <\,punctuation\,>, <<\,ligatures\,>>, greek letters\dots\
+Designs are deeply based on {\it Computer Modern}.
+Thus these series should be named
+cmchXX\dots }
+
+\docomparison{mathc10 }{cmsy10}from 65 to 90.
+\docomparison{cmsy10 }{cmmi10}from 65 to 90.
+\docomparison{mathc10 }{cmmi10}from 65 to 90.
+\docomparison{mathc10 }{cmmi10}from 97 to 122.
+
+\UsualTest{mathc10 }
+
+
+\subsection*{Random test of gray}
+
+{\font\currentfont=mathc10\currentfont
+\mixfrom 97 to 122.
+\mixfrom 160 to 191.
+\digits
+}
+%\mixfrom 192 to 255.}
+
+\newpage
+
+\subsection*{Mathu, unsupported symbols series}
+
+{\centerlargechars
+\def\fontname{mathu10 }
+\startfont\table}
+
+\subsection*{Mathux, unsupported extensible symbols series}
+
+{\centerlargechars
+\def\fontname{mathux10 }
+\startfont\table}
+
+\subsection*{Mathastrotest10, about the metaness
+of astronomical/logical symbols}\break
+Who cares about astronomical/logical symbols? So why trying to do
+something great with them? General shapes are even unstable: they are
+never the same from a reference to another. I think that I've been
+convinced by the presence of some such symbols in the fonts tables of
+the famous book ``The Printing of Mathematics''. By the way it
+remembers me that if I want to extend this subset of {\it mathb}, I
+would have to take into account that I have already put some metaness
+in these designs.
+
+\medbreak\noindent
+{\font\currentfont=mathastrotest10
+\currentfont
+\count0=0
+\loop\ifnum\count0<32\relax\count1=\count0
+{\loop\ifnum\count1<256\char\the\count1\advance\count1 by 32\repeat}
+\hfil\allowbreak\advance\count0 by 1\repeat}
+
+{\def\fontname{mathastrotest10 }
+\startfont\table}
+
+
+\bye
+
+
+
+
diff --git a/Master/texmf-dist/doc/fonts/mathabx/testmac.tex b/Master/texmf-dist/doc/fonts/mathabx/testmac.tex
new file mode 100644
index 00000000000..c68a15c5a9d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/mathabx/testmac.tex
@@ -0,0 +1,521 @@
+%
+% TESTMAC.tex (december 20, 2003)
+%
+\catcode`\@=11
+%
+% Page setup
+%
+%\magnification=\magstep1
+\voffset=0.12 true cm
+\hoffset=0.31 true cm
+\vsize=24.2 true cm
+\hsize=15.3 true cm
+\parindent=1.333em
+%
+% Heading
+%
+\font\nineit=cmti9
+\font\twelverm=cmr12
+\newif\iftitle
+\titlefalse
+\footline={\hfil}
+\headline={\iftitle\hfil\global\titlefalse
+ \ifodd\pageno\advance\pageno by 1\fi
+ \else\vbox{\line{\ifodd\pageno
+ {\nineit\@title}\hfil\llap{\tenrm\folio}
+ \else\rlap{\tenrm\folio}\hfill{\nineit\@title}%
+ \fi}\vskip6pt\hrule}\fi}
+%
+% Sectionning
+%
+\def\,{\ifmmode\mskip\thinmuskip\else\thinspace\fi}
+\def\dots{\ifmmode\ldots\else%
+ .\kern\fontdimen3\font
+ .\kern\fontdimen3\font
+ .\fi}
+%
+\def\french{\frenchspacing\language=1
+ \def\@textsep{~---~}%
+ \def\Author{Auteur~}\def\LastVersion{Derni\`ere version~}%
+ \def\today{\day\space\ifcase\month\or
+ janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
+ juillet\or ao\^ut\or septembre\or octobre\or novembre\or
+ d\'ecembre\fi\space\number\day,\space\number\year}}%
+%
+\def\english{\frenchspacing\language=0
+ \let\@textsep\enspace
+ \def\Author{Author}\def\LastVersion{Last version}%
+ \def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or
+ December\fi\space\number\day,\space\number\year}}%
+%
+\def\title#1{\gdef\@title{#1}}%
+\def\subtitle#1{\def\@subtitle{#1}}%
+\def\author#1{\def\@author{#1}}%
+%
+\def\maketitle{\global\titletrue{\parindent=0pt
+ \leavevmode
+ \ifx\@title\undefined\else{\twelverm\@title}\par\fi
+ \vskip 6pt
+ \hrule height 6pt
+ \vskip 6pt
+ \ifx\@subtitle\undefined\else\hfill{\twelverm\@subtitle}\par\fi
+ \ifx\@author\undefined\else\hfill{\rm\Author: \@author}\par\fi
+ \hfill{\rm\LastVersion: \today}}\vskip2\baselineskip}
+%
+\newcount\sectno
+\newcount\subsectno
+\def\section#1{\vskip\z@ plus\baselineskip
+ \penalty-250\vskip\z@ plus-\baselineskip
+ \bigbreak\noindent\ifx#1*%
+ \def\@tmp##1{{\bf##1}\par\nobreak\medskip}\else
+ \global\advance\sectno by 1
+ \global\subsectno=0
+ \def\@tmp{\the\sectno.\enspace{\bf#1}\par\nobreak\medskip}\fi
+ \@tmp}%
+\def\subsection#1{\medbreak\noindent\ifx#1*%
+ \def\@tmp##1{{\bf##1\unskip.}\@textsep\ignorespaces}\else
+ \global\advance\subsectno by 1
+ \def\@tmp{\the\subsectno.\enspace{\bf#1\unskip.}%
+ \@textsep\ignorespaces}\fi
+ \@tmp}%
+\def\description{\medbreak\bgroup
+ \def\item##1{\medbreak\hangindent\parindent\leavevmode
+ \hskip-\parindent{\bf##1.}\enspace\ignorespaces}%
+ \def\subitem##1{\smallbreak\hangindent2\parindent\leavevmode
+ {\it##1.}\enspace\ignorespaces}%
+ \def\subsubitem##1{\par\hangindent3\parindent\leavevmode
+ \hskip\parindent{##1.}\enspace\ignorespaces}%
+ \let\itemitem=\subitem}%
+\def\enddescription{\egroup\medbreak}%
+\def\cs#1{\hbox{\tt\string#1}}%
+%
+% verbatim
+%
+\newdimen\tabindent\tabindent=2em
+\let\verbatimsep\quad
+{\obeyspaces\gdef {\leavevmode\space}%
+\catcode`\^^I=\active\gdef^^I{\hskip\tabindent}}%
+\def\rawverbatim{%
+ \def\@numberedverbatimpar{\def\par{\ifvmode
+ \endgraf\vskip\baselineskip\advance\count@ by 1
+ \else\endgraf\fi}%
+ \everypar={\advance\count@ by 1\leavevmode
+ \llap{\the\count@\verbatimsep}}}%
+ \def\@verbatimpar{\def\par{\ifvmode
+ \endgraf\vskip\baselineskip\else\endgraf\fi}%
+ \everypar={}}}%
+\def\smartverbatim{%
+ \def\@numberedverbatimpar{%
+ \def\par{\ifvmode\endgraf
+ \ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip
+ \@verbatimskiptrue\fi\else\endgraf\fi}%
+ \everypar={\advance\count@ by 1\leavevmode
+ \@ifverbatimskip
+ \llap{\the\count@\verbatimsep}%
+ \@verbatimskipfalse\fi}}%
+ \def\@verbatimpar{%
+ \def\par{\ifvmode\endgraf
+ \ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi
+ \else\endgraf\fi}%
+ \everypar={}}}%
+%
+\def\@verbatimskiptrue{\let\@ifverbatimskip\iftrue}%
+\def\@verbatimskipfalse{\let\@ifverbatimskip\iffalse}%
+\smartverbatim
+\def\verb{\bgroup\tt\uncatcodespecials\obeyspaces\@verb}%
+\def\verbatim{\medbreak\bgroup
+ \rightskip=0\p@ minus 1000\p@
+ \tt\uncatcodespecials\obeyspaces
+ \catcode`\^^I=\active\@verbatim}%
+\def\@verbatim#1{\ifx#1[%
+ \@verbatimskiptrue
+ \@numberedverbatimpar\obeylines\let\@next=\@@verbatim
+ \else\@verbatimpar\obeylines\parindent=0\p@
+ \def\@next{\@@@verbatim#1}\fi\@next}%
+\def\@@verbatim#1]{\setbox0=\hbox{#1\verbatimsep}\parindent=\wd0
+ \count@=0\@@@verbatim}%
+\def\verbatimfile#1{\ifx#1[\let\@next\@verbatimfile
+ \else\def\@next{\@@verbatimfile{\input #1}}\fi\@next}%
+\def\@verbatimfile#1]#2{\@@verbatimfile{[#1]\input #2}}%
+{\catcode`\|=0\catcode`\\=12
+|gdef|@verb#1\endverb{#1|egroup}%
+|gdef|@@@verbatim#1\endverbatim{#1|egroup|medbreak}%
+|gdef|@@verbatimfile#1{|verbatim #1|relax\endverbatim}}%
+\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials}%
+%
+\long\def\comments#1\endcomments{}%
+\def\fuzzytext{\tolerance=9999\hfuzz=3em\vfuzz=0.1pt}%
+\def\normaltext{\tolerance=200\hfuzz=0.1pt\vfuzz=0.1pt}%
+\def\newpage{\par\vfill\eject}%
+\newdimen\shadeshift\shadeshift=1pt
+\def\shadedtext#1{{\setbox0=\hbox{#1}\leavevmode
+ \vtop to 0pt{\rlap{\special{color push rgb 0.75 0.75 0.75}%
+ \kern0.1em\lower0.1em\copy0
+ \special{color pop}}\vss}\box0}}%
+\long\def\shadedparagraph#1\par{{\setbox0=\vbox{\hsize=\hsize#1}%
+ \noindent\leavevmode
+ \vtop to 0pt{\rlap{\special{color push rgb 0.75 0.75 0.75}%
+ \kern0.1em\lower0.1em\copy0
+ \special{color pop}}\vss}\box0\par}}%
+%
+% font tests
+%
+\newcount\n\newcount\m
+\def\mixfrom#1to#2.{\medbreak\noindent
+% {\it (Random generator by Donald Arseneau.)}\par\noindent
+ {\count255=#2%
+ \advance\count255 by -#1%
+ \n=0\loop\ifnum\n<25 \m=0%
+ {\loop\ifnum\m<43\setrannum{\count@}{#1}{#2}%
+ \char\count@
+ \advance\m by 1
+ \repeat}
+ \advance\n by 1\endgraf\noindent
+ \repeat}\medbreak}
+%
+\def\compare#1#2{\medbreak\noindent{%
+ \font\ftestfont=#1\font\stestfont=#2%
+ \count255=0%
+ {\bf#1\unskip/\ignorespaces#2}
+ \par\nobreak\medskip\noindent
+ {\loop\ifnum\count255<256
+ {\ftestfont\char\count255
+ \stestfont\char\count255}
+ \advance\count255 by 1\repeat}}\medbreak}
+%
+\def\docomparison#1#2from#3to#4.{\medbreak\noindent{%
+ \font\ftestfont=#1\font\stestfont=#2%
+ \count255=#3%
+ \count0=#4\advance\count0 by 1
+ {\bf#1\unskip/\ignorespaces#2}
+ \par\medskip\noindent
+ {\loop\ifnum\count255<\count0
+ {\ftestfont\char\count255
+ \stestfont\char\count255$_{_{\the\count255}}$}
+ \advance\count255 by 1\repeat}}\medbreak}
+%
+\def\usuals#1{\medbreak\noindent{\bf#1\unskip.}~---~{%
+ \font\testfont=#1\testfont\setbaselineskip
+ \let\-=\allowbreak\unskip
+ A\-B\-C\-D\-E\-F\-G\-H\-I\-J\-K\-L\-M\-%
+ N\-O\-P\-Q\-R\-T\-S\-U\-V\-W\-X\-Y\-Z \-
+ a\-b\-c\-d\-e\-f\-g\-h\-i\-j\-k\-l\-m\-%
+ n\-o\-p\-q\-r\-s{}\-t\-u\-v\-w\-x\-y\-z \-
+ \AE\-\OE\-\O
+ \ae\-\oe\-\o\-\ss
+ +\-=\-\# @ 1\-2\-3\-4\-5\-6\-7\-8\-9\-0 \-\$ \& () []%
+ \medbreak}}
+\def\kerningtable[#1,#2][#3,#4]{\medbreak\noindent{\parindent=0pt
+ \m=#4 \advance\m by -#3 \advance\m by 1
+ \dim=\hsize \divide\dim by \m
+ \m=#1 \advance\m by -1
+ \n=#3 \advance\n by -1
+ {\loop\leavevmode
+ \ifnum\m<#2
+ \advance\m by 1
+ {\loop
+ \ifnum\n<#4
+ \advance\n by 1
+ \setbox0\hbox{\char\m\char\n}%
+ \setbox1\hbox{\char\m\null\char\n}%
+ \hbox to \dim{\char\m\char\n
+ \ifdim\wd0=\wd1\else{\rm*}\fi\hss}%
+ \repeat}\endgraf
+ \repeat}%
+ }\medbreak}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\hyphenation{prom-i-nent}
+
+%\newcount\m \newcount\n
+\newcount\p \newdimen\dim
+\chardef\other=12
+
+\def\hours{\n=\time \divide\n 60
+ \m=-\n \multiply\m 60 \advance\m \time
+ \twodigits\n\ heures \twodigits\m\ minutes}
+
+\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
+
+\def\startfont{\tracinglostchars=0
+ \fuzzytext
+% \tolerance=1000
+% \raggedbottom
+ \parindent=0pt
+% \newlinechar=`@
+% \hyphenpenalty=200
+% \doublehyphendemerits=30000
+ \font\testfont=\fontname
+% \spaceskip=0pt
+ % \leftline{{\bf\fontname\unskip}\ (tel que le \today, \`a \hours)}
+ % \nobreak\medskip\nobreak
+ \testfont %\setbaselineskip
+% \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt
+% \else\rightskip=0pt plus 2em \fi
+% \spaceskip=\fontdimen2\testfont % space between words (\raggedright)
+% \xspaceskip=\fontdimen2\testfont
+% \advance\xspaceskip by\fontdimen7\testfont
+ }
+
+\def\setbaselineskip{\setbox0=\hbox{\n=0
+ \loop\char\n \ifnum \n<255 \advance\n 1 \repeat}
+ \baselineskip=6pt \advance\baselineskip\ht0
+ \advance\baselineskip\dp0 }
+
+\def\setchar#1{{\escapechar-1\message{\string#1 character = }%
+ \def\do##1{\catcode`##1=\other}\dospecials
+ \read-1 to\next
+ \expandafter\finsetchar\next\next#1}}
+\def\finsetchar#1#2\next#3{\global\chardef#3=`#1
+ \ifnum #3=`\# \global\chardef#3=#2 \fi}
+\def\promptthree{\setchar\background
+ \setchar\starting \setchar\ending}
+
+\def\mixture{\promptthree \domix\mixpattern}
+\def\alternation{\promptthree \domix\altpattern}
+\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1}
+\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0}
+\def\domix#1{\par\chardef\0=\background \n=\starting
+ \loop \chardef\1=\n #1\endgraf
+ \ifnum \n<\ending \advance\n 1 \repeat}
+
+\def\Ł{\discretionary{\background}{\background}{\background}}
+\def\series{\promptthree \Ł\doseries\starting\ending\par}
+\def\doseries#1#2{\n=#1\loop\char\n\Ł\ifnum\n<#2\advance\n 1 \repeat}
+\def\complower{\Ł\doseries{`a}{`z}\doseries{'31}{'34}\par}
+\def\compupper{\Ł\doseries{`A}{`Z}\doseries{'35}{'37}\par}
+\def\compdigs{\Ł\doseries{`0}{`9}\par}
+\def\alphabet{\setchar\background\complower}
+\def\ALPHABET{\setchar\background\compupper}
+
+\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}}
+\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}}
+\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}}
+\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2
+ \loop{#1} \ifnum\background<#3\m=\background\advance\m 1
+ \chardef\background=\m \repeat \chardef\background=#4
+ \loop{#1} \ifnum\background<#5\m=\background\advance\m 1
+ \chardef\background=\m \repeat}
+
+\def\names{ {\AA}ngel\aa\ Beatrice Claire
+ Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris
+ Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave
+ Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula
+ Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par}
+\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid}
+ \dopunct{HIE}\dopunct{TIP}\dopunct{fluff}
+ \$1,234.56 + 7/8 = 9\% @ \#0\par}
+\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par}
+
+\def\bigtest{\sample
+ hamburgefonstiv HAMBURGEFONSTIV\par
+ \names \punct \lowers \uppers \digits}
+
+\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial
+ \mathchardef\Gamma="100 \mathchardef\Delta="101
+ \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104
+ \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107
+ \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A
+ \def\ii{i} \def\jj{j}
+ \def\\##1{|##1|+}\mathtrial
+ \def\\##1{##1_2+}\mathtrial
+ \def\\##1{##1^2+}\mathtrial
+ \def\\##1{##1/2+}\mathtrial
+ \def\\##1{2/##1+}\mathtrial
+ \def\\##1{##1,{}+}\mathtrial
+ \def\\##1{d##1+}\mathtrial
+ \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial}
+\newcount\skewtrial \skewtrial='177
+\def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L \\M \\N \\O
+ \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z \\a \\b \\c \\d \\e \\f \\g
+ \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y
+ \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta
+ \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau
+ \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi
+ \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon
+ \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par}
+\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests
+ \def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L
+ \\M \\N \\O \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z$\par}
+ \math\endgroup}
+
+\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
+\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
+ \m=\n \divide\m by 64 \xdef\0{\the\m}%
+ \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
+\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
+ \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
+ \global\p=\lastpenalty}} % \p=1 if none of the characters exist
+\def\oddline{\cr
+ \noalign{\nointerlineskip}
+ \multispan{19}\hrulefill&
+ \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
+ \noalign{\nointerlineskip}}
+\newif\ifskipping
+\def\evenline{\loop\skippingfalse
+ \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m
+ \expandafter\setdigs\meaning\next \testrow
+ \ifnum\p=1 \skippingtrue \fi\fi
+ \ifskipping \global\advance\n 16 \repeat
+ \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
+ \next}
+\def\morechart{\cr\noalign{\hrule\penalty5000}
+ \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
+ \chartline \evenline}
+\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
+\def\chartstrut{\lower4.5pt\vbox to14pt{}}
+\def\table{\bigbreak\global\n=0
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule##\cr
+ \lower6.5pt\null
+ &\hbox to 0pt{\hss\rm\fontname\hss}
+ &&\oct0&&\oct1&&\oct2&&\oct3&&\oct4
+ &&\oct5&&\oct6&&\oct7&\evenline}
+\def\endchart{\cr\noalign{\hrule}
+ \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
+ &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup\bigbreak\par}
+\def\:{\setbox0=\hbox{\char\n}%
+ \ifdim\ht0>7.5pt\reposition
+ \else\ifdim\dp0>2.5pt\reposition\fi\fi
+ \box0\global\advance\n 1 }
+\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
+ \advance\dim 2pt \dp0=\dim}
+\def\centerlargechars{
+ \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
+
+\def\text{{%\advance\baselineskip-4pt
+%\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz}
+%\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2.5\wd0 \fi\fi
+On November 14, 1885, Senator \& Mrs.~Leland Stanford called
+together at their San Francisco mansion the 24~prominent men who had
+been chosen as the first trustees of The Leland Stanford Junior University.
+They handed to the board the Founding Grant of the University, which they
+had executed three days before. This document---with various amendments,
+legislative acts, and court decrees---remains as the University's charter.
+In bold, sweeping language it stipulates that the objectives of the University
+are ``to qualify students for personal success and direct usefulness in life;
+and to promote the publick welfare by exercising an influence in behalf of
+humanity and civilization, teaching the blessings of liberty regulated by
+law, and inculcating love and reverence for the great principles of
+government as derived from the inalienable rights of man to life, liberty,
+and the pursuit of happiness.'' \moretext
+(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}}
+\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres
+often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole
+in fluffy souffl\'es? }
+\def\omitaccents{\let\moretext=\relax}
+\def\sample{\table\text}
+\def\UsualTest#1{{\def\fontname{#1 }\startfont\sample\names}}
+\english
+\def\LaTeX{L\kern-.36em%
+ {\setbox\z@\hbox{T}%
+ \vbox to\ht\z@{\hbox{$\rm\scriptstyle A$}%
+ \vss}%
+ }%
+ \kern-.15em%
+ \TeX}
+\catcode`\@=12
+
+% RANDOM.TEX v.1 (Donald Arseneau)
+% Generating "random" numbers in TeX.
+%
+% Random integers are generated in the range 1 to 2147483646 by the
+% macro \nextrandom. The result is returned in the counter \randomi.
+% Do not change \randomi except, perhaps, to initialize it at some
+% random value. If you do not initialize it, it will be initialized
+% using the time and date. (This is a sparse initialization, giving
+% fewer than a million different starting values, but you should use
+% other sources of numbers if they are available--just remember that
+% most of the numbers available to TeX are not at all random.)
+%
+% The \nextrandom command is not very useful by itself, unless you
+% have exactly 2147483646 things to choose from. Much more useful
+% is the \setrannum command which sets a given counter to a random
+% value within a specified range. There are three parameters:
+% \setrannum {<counter>} {<minimum>} {<maximum>}. For example, to
+% simulate a die-roll: \setrannum{\die}{1}{6} \ifcase\die... .
+%
+% If you need random numbers that are not integers, you will have to
+% use dimen registers and \setrandimen. For example, to set a random
+% page width: \setrandimen \hsize{3in}{6.5in}. The "\pointless" macro
+% will remove the "pt" that TeX gives so you can use the dimensions
+% as pure `real' numbers. In that case, specify the range in pt units.
+% For example,
+% \setrandimen\answer{2.71828pt}{3.14159pt}
+% The answer is \pointless\answer.
+%
+% The random number generator is the one by Lewis, Goodman, and Miller
+% (1969) and used as "ran0" in "Numerical Recipies" using Schrage's
+% method for avoiding overflows. The multiplier is 16807 (7^5), the
+% added constant is 0, and the modulus is 2147483647 (2^{31}-1). The
+% range of integers generated is 1 - 2147483646. A smaller range would
+% reduce the complexity of the macros a bit, but not much--most of the
+% code deals with initialization and type-conversion. On the other hand,
+% the large range may be wasted due to the sparse seed initialization.
+
+\newcount\randomi % the random number seed (while executing)
+\global\randomi\catcode`\@ % scratch variable during definitions
+\catcode`\@=11
+
+\def\nextrandom{\begingroup
+ \ifnum\randomi<\@ne % then initialize with time
+ \global\randomi\time
+ \global\multiply\randomi388 \global\advance\randomi\year
+ \global\multiply\randomi31 \global\advance\randomi\day
+ \global\multiply\randomi97 \global\advance\randomi\month
+ \message{Randomizer (from random.tex) initialized to \the\randomi.}%
+ \nextrandom \nextrandom \nextrandom
+ \fi
+ \count@ii\randomi
+ \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
+ \count@\count@ii
+ \multiply\count@ii 127773
+ \global\advance\randomi-\count@ii % random mod 127773
+ \global\multiply\randomi 16807
+ \multiply\count@ 2836
+ \global\advance\randomi-\count@
+ \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
+ \endgroup
+}
+
+\countdef\count@ii=2 % use only in boxes!
+\ifx\@tempcnta\undefined \csname newcount\endcsname \@tempcnta \fi
+\ifx\@tempcntb\undefined \csname newcount\endcsname \@tempcntb \fi
+
+\def\setrannum#1#2#3{% count register, minimum, maximum
+ \@tempcnta#3\advance\@tempcnta-#2\advance\@tempcnta\@ne
+ \@tempcntb 2147483645 % = m - 2 = 2^{31} - 3
+ \divide\@tempcntb\@tempcnta
+ \getr@nval
+ \advance\ranval#2\relax
+ #1\ranval
+}
+
+\def\setrandim#1#2#3{% dimen register, minimum length, maximum length
+ \dimen@#2\dimen@ii#3\relax
+ \setrannum\ranval\dimen@\dimen@ii
+ #1\ranval sp\relax
+}
+
+\def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters
+ \nextrandom
+ \ranval\randomi \advance\ranval\m@ne \divide\ranval\@tempcntb
+ \ifnum\ranval<\@tempcnta\else \expandafter\getr@nval \fi
+}
+
+\def\pointless{\expandafter\PoinTless\the}
+{\catcode`p=12 \catcode`t=12
+\gdef\PoinTless#1pt{#1}}
+
+\catcode`\@=\randomi
+\global\randomi=0
+\newcount\ranval
+
+\endinput
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf
new file mode 100644
index 00000000000..dadcb3a2490
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha10.mf (math serie A at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 10pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf
new file mode 100644
index 00000000000..7c5b5fe1652
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha12.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha12.mf (math serie A at 12 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 12pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf
new file mode 100644
index 00000000000..fdd43a1747d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha5.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha5.mf (math serie A at 5 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 5pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf
new file mode 100644
index 00000000000..f4096c42236
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha6.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha6.mf (math serie A at 6 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 6pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf
new file mode 100644
index 00000000000..155252b1d5c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha7.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha7.mf (math serie A at 7 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 7pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf
new file mode 100644
index 00000000000..045bb4e47ad
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha8.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha8.mf (math serie A at 8 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 8pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf b/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf
new file mode 100644
index 00000000000..6726698b995
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matha9.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha9.mf (math serie A at 9 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 9pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathadrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf
new file mode 100644
index 00000000000..6a524b899d5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf
@@ -0,0 +1,367 @@
+% mathematical symbols by Anthony Phan.
+% file: mathacnt.mf (accents)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+% ACCENTS (nullissime)
+
+diacritics_proofing;% changes extra_endchar for proof mode.
+hat_w:=hex"70";
+check_w:=hex"71";
+tilde_w:=hex"72";
+bar_w:=hex"73";
+arrow_w:=hex"74";
+paren_w:=hex"75";
+
+hat_ww:=hex"78"; hat_www:=hex"79";
+hat_wwww:=hex"7A"; hat_wwwww:=hex"7B";
+check_ww:=hex"7C"; check_www:=hex"7D";
+check_wwww:=hex"7E"; check_wwwww:=hex"7F";
+tilde_ww:=hex"80"; tilde_www:=hex"81";
+tilde_wwww:=hex"82"; tilde_wwwww:=hex"83";
+bar_ww:=hex"84"; bar_www:=hex"85";
+bar_wwww:=hex"86"; bar_wwwww:=hex"87";
+arrow_ww:=hex"88"; arrow_www:=hex"89";
+arrow_wwww:=hex"8A"; arrow_wwwww:=hex"8B";
+paren_ww:=hex"8C"; paren_www:=hex"8D";
+paren_wwww:=hex"8E"; paren_wwwww:=hex"8F";
+
+charlist hat_w: hat_ww: hat_www: hat_wwww: hat_wwwww;
+charlist check_w: check_ww: check_www: check_wwww: check_wwwww;
+charlist tilde_w: tilde_ww: tilde_www: tilde_wwww: tilde_wwwww;
+charlist bar_w: bar_ww: bar_www: bar_wwww: bar_wwwww;
+charlist arrow_w: arrow_ww: arrow_www: arrow_wwww: arrow_wwwww;
+charlist paren_w: paren_ww: paren_www: paren_wwww: paren_wwwww;
+
+vardef tmp_program(expr orientation,overshot,appr,coef)=
+ save a,b,c;
+ pickup crisp.nib;
+ b=coef[0.8[vair,stem],stem];
+ b'=coef[min(vair,hair),max(vair,hair)];
+ if orientation=up:
+ top y2r=top y3r=h+overshot;
+ bot y1r=bot y4r=vround 0.5[x_height,h];
+ else:
+ bot y2r=bot y3r=vround 0.5[x_height,h]-overshot;
+ top y1r=top y4r=h; fi
+ lft x2r=hround 0.5(w-b);
+ rt x3r-lft x2r=hround b;
+ lft x1r=appr; x4r-x3r=x2r-x1r;
+ x=0.5(b-b')/length(z2r-z1r);
+ a=if orientation=up: 180+ fi (angle(z2r-z1r)-angle(x,1+-+x));
+ pos1(b',a); pos2(b,a); pos3(b,180-a); pos4(b',180-a);
+ z0=whatever[z1l,z2l]; z0=whatever[z3l,z4l];
+ filldraw z1r--z2r--z3r--z4r--z4l--z0--z1l--cycle;
+ penlabels(0,1,2,3,4)
+enddef;
+
+use_rule1;
+
+beginchar(hat_accent,7u#+2appr#,min(asc_height#,2x_height#),0);
+ "Circumflex accent";
+ tmp_program(up,0,appr+u,0);
+endchar;
+
+beginchar(hat_w,8u#+2appr#,0.5[asc_height#,body_height#],0);
+ "Wide circumflex accent 1";
+ tmp_program(up,o,appr-0.5u,0.2);
+endchar;
+
+beginchar(hat_ww,16u#+2appr#,body_height#,0);
+ "Wide circumflex accent 2";
+ tmp_program(up,o,appr-0.5u,0.4);
+endchar;
+
+beginchar(hat_www,24u#+2appr#,body_height#,0);
+ "Wide circumflex accent 3";
+ tmp_program(up,o,appr-0.5u,0.6);
+endchar;
+
+beginchar(hat_wwww,32u#+2appr#,body_height#,0);
+ "Wide circumflex accent 4";
+ tmp_program(up,o,appr-0.5u,0.8);
+endchar;
+
+beginchar(hat_wwwww,40u#+2appr#,body_height#,0);
+ "Wide circumflex accent 5";
+ tmp_program(up,o,appr-0.5u,1);
+endchar;
+
+beginchar(check_accent,7u#+2appr#,min(asc_height#,2x_height#),0);
+ "Check accent";
+ tmp_program(down,0,appr-0.5u,0);
+endchar;
+
+beginchar(check_w,8u#+2appr#,0.5[asc_height#,body_height#],0);
+ "Wide check accent 1";
+ tmp_program(down,o,appr-0.5u,0.2);
+endchar;
+
+beginchar(check_ww,16u#+2appr#,body_height#,0);
+ "Wide check accent 2";
+ tmp_program(down,o,appr-0.5u,0.4);
+endchar;
+
+beginchar(check_www,24u#+2appr#,body_height#,0);
+ "Wide check accent 3";
+ tmp_program(down,o,appr-0.5u,0.6);
+endchar;
+
+beginchar(check_wwww,32u#+2appr#,body_height#,0);
+ "Wide check accent 4";
+ tmp_program(down,o,appr-0.5u,0.8);
+endchar;
+
+beginchar(check_wwwww,40u#+2appr#,body_height#,0);
+ "Wide check accent 5";
+ tmp_program(down,o,appr-0.5u,1);
+endchar;
+
+vardef tmp_program(expr height,depth,approach,coef)=
+ pickup tiny.nib;
+ save a,b,c;
+ a=angle(w-2approach,9(height-depth));
+ b=angle(w-2approach,-3(height-depth));
+ b'=coef[0.5[vair,hair],max(vair,hair)];
+ c=coef[0.8[vair,stem],stem];
+ pos1(b',a+90); pos9(b',a+90); pos5(c,b+90);
+ bot y7l=depth-eps; top y3r=height+eps;
+ y1l=good.y 1/6[y7l,y3r]; y3r-y9r=y1l-y7l;
+ top y3r-bot y3l=top y7r-bot y7l=vround 0.5[b',c];
+ lft x1r=w-rt x9l=approach;
+ z5=0.5[z1,z9];
+ forsuffixes $=r,l: y2$=y3$=y4$; y6$=y7$=y8$;
+ z2$-z1$=whatever*dir a; z8$-z9$=whatever*dir a;
+ z4$-z5$=whatever*dir b; z6$-z5$=whatever*dir b;
+ x3$=0.666[x2$,x4$]; x7$=0.666[x8$,x6$];
+ endfor
+ filldraw stroke z1e..controls .666[z1e,z2e] and .666[z3e,z2e]
+ ..z3e..controls .666[z3e,z4e] and .666[z5e,z4e]
+ ..z5e..controls .666[z5e,z6e] and .666[z7e,z6e]
+ ..z7e..controls .666[z7e,z8e] and .666[z9e,z8e]..z9e;
+%penlabels(1,2,3,4,5,6,7,8,9);
+enddef;
+
+beginchar(tilde_accent,7u#+2appr#,min(asc_height#,2x_height#),0);
+ "Tilde accent";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr,0);
+endchar;
+
+beginchar(tilde_w,8u#+2appr#,0.5[asc_height#,body_height#],0);
+ "Wide tilde accent 1";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.2);
+endchar;
+
+beginchar(tilde_ww,16u#+2appr#,body_height#,0);
+ "Wide tilde accent 2";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.4);
+endchar;
+
+beginchar(tilde_www,24u#+2appr#,body_height#,0);
+ "Wide tilde accent 3";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.6);
+endchar;
+
+beginchar(tilde_wwww,32u#+2appr#,body_height#,0);
+ "Wide tilde accent 4";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,0.8);
+endchar;
+
+beginchar(tilde_wwwww,40u#+2appr#,body_height#,0);
+ "Wide tilde accent 5";
+ tmp_program(h,vround 0.5[x_height,asc_height],appr-0.5u,1);
+endchar;
+
+% changes august 23, 2004.
+
+beginchar(bar_accent,7u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,asc_height#],0);
+ "Bar accent";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.25u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(bar_w,8u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,body_height#],0);
+ "Wide bar accent 1";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(bar_ww,16u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,body_height#],0);
+ "Wide bar accent 2";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(bar_www,24u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,body_height#],0);
+ "Wide bar accent 3";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(bar_wwww,32u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,body_height#],0);
+ "Wide bar accent 4";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(bar_wwwww,40u#+2appr#,
+ %x_height#+body_height#-cap_height#,0);
+ 0.5[x_height#,body_height#],0);
+ "Wide bar accent 5";
+ pickup crisp.nib;
+ a:=vround 0.0[min(0.2[vair,stem],rth0),rth1];
+ pos1(a,90); pos2(a,90); lft x1-appr=w-appr-rt x2=hround 0.0u;
+ top y1r=top y2r=vround(h+0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+arrow_stress := 0.52;
+arrow_tense1 := 0.75;
+arrow_tense2 := 0.875;
+
+beginchar(arrow_accent,7u#+2appr#,min(asc_height#,2x_height#),0);
+ "Arrow accent";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.25u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_w,8u#+2appr#,0.5[asc_height#,body_height#],0);
+ "Wide arrow accent 1";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.3u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_ww,16u#+2appr#,body_height#,0);
+ "Wide arrow accent 2";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.35u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_www,24u#+2appr#,body_height#,0);
+ "Wide arrow accent 3";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.4u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_wwww,32u#+2appr#,body_height#,0);
+ "Wide arrow accent 4";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.45u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_wwwww,40u#+2appr#,body_height#,0);
+ "Wide arrow accent 5";
+ pickup tiny.nib;
+ arrow_width := 2ceiling 0.3(h-x_height)+rth;
+ arrow_height := hround 3.5u;
+ arrow_breadth := rth;
+ y2=y3=vround(0.7[x_height,h]-0.5rth)+0.5rth;
+ lft x2=w-rt x3=appr-hround 0.5u;
+ arrow_head1(z2..z3,both); x2r=x2l=x2; y1r=y2r; y1l=y2l;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+def tmp_program(expr orientation,overshot,approach,coef)=
+ pickup tiny.nib;
+ a:=vround 0.5[vair,stem]; pos2(a,90);
+ y2+0.5a=vround(h+0.5a+overshot); y1r=y3r=good.y 1/3[x_height,h];
+ lft x1r=w-rt x3r=hround approach; x2=0.5[x1r,x3r];
+ z1'-z1r=(z2r-z1r) xscaled 1/3;
+ z3'-z3r=(z2r-z3r) xscaled 1/3;
+ pos1(hair,angle(z1'-z1r)+90);
+ pos3(hair,angle(z3'-z3r)-90);
+ filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'};
+ penlabels(1,2,3); labels(1',3');
+enddef;
+
+beginchar(paren_accent,7u#+2appr#,0.5[x_height#,asc_height#],0);
+ "Parenthesis accent";
+ tmp_program(up,0,appr+0.25u,0);
+endchar;
+
+beginchar(paren_w,8u#+2appr#,0.5[x_height#,body_height#],0);
+ "Wide parenthesis accent 1";
+ tmp_program(up,o,appr,0.2);
+endchar;
+
+beginchar(paren_ww,16u#+2appr#,0.5[x_height#,body_height#],0);
+ "Wide parenthesis accent 2";
+ tmp_program(up,o,appr-0.25u,0.4);
+endchar;
+
+beginchar(paren_www,24u#+2appr#,0.5[x_height#,body_height#],0);
+ "Wide parenthesis accent 3";
+ tmp_program(up,o,appr-0.5u,0.6);
+endchar;
+
+beginchar(paren_wwww,32u#+2appr#,0.5[x_height#,body_height#],0);
+ "Wide parenthesis accent 4";
+ tmp_program(up,o,appr-0.5u,0.8);
+endchar;
+
+beginchar(paren_wwwww,40u#+2appr#,0.5[x_height#,body_height#],0);
+ "Wide parenthesis accent 5";
+ tmp_program(up,o,appr-0.5u,1);
+endchar;
+
+standard_proofing;% restore extra_endchar.
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf
new file mode 100644
index 00000000000..d196c6f55bc
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf
@@ -0,0 +1,280 @@
+% mathematical symbols by Anthony Phan.
+% file: mathadrv.mf (driver file for matha serie)
+% last modification: May 16, 2005.
+
+mode_setup;
+
+math_setup;
+
+% Activate to allow characters with undefined code.
+% (for proof mode compilation)
+% let iff=always_iff;
+
+% BINARY OPERATORS, RELATIONS
+
+input mathasym;
+
+% RELATIONS
+
+% MISCELLANEOUS
+
+negation_sign := hex"20";% we're not making any text font
+dominated := hex"21";
+dominating := hex"22";
+hash_sign := hex"23";
+
+not_sign := hex"7F";
+
+%negation_sign := hex"26";
+%reverse_negation_sign := hex"27";
+
+vdash_sign := hex"24";
+dashv_sign := hex"25";
+vdash_not := hex"26";
+dashv_not := hex"27";
+vDash_sign := hex"28";
+Dashv_sign := hex"29";
+vDash_not := hex"2A";
+Dashv_not := hex"2B";
+Vdash_sign := hex"2C";
+dashV_sign := hex"2D";
+Vdash_not := hex"2E";
+dashV_not := hex"2F";
+% hex"30"...hex"35", numerals...
+
+degree_sign := hex"30";
+prime_sign := hex"31";
+second_sign := hex"32";
+third_sign := hex"33";
+fourth_sign := hex"34";
+
+ligtable prime_sign : prime_sign =: second_sign;
+ligtable second_sign : prime_sign =: third_sign;
+ligtable third_sign : prime_sign =: fourth_sign;
+
+musical_flat_sign := hex"35";
+musical_natural_sign := hex"36";
+musical_sharp_sign := hex"37";
+
+% mathfine.mf
+
+Infinity := hex"38";
+proportionnal_to := hex"39";
+dagger := hex"3A";
+double_dagger := hex"3B";
+
+% mathbigs.mf
+
+small_summation_sign := hex"3C";
+small_product_sign := hex"3D";
+small_coproduct_sign := hex"3E";
+radical_sign := hex"3F";
+
+% upper_asterisk := hex"3A"; lower_asterisk := hex"3B";
+% triple_asterisk := hex"3C";
+% colon_sign := hex"5B";
+
+Dominated := hex"CE";
+Dominating := hex"CF";
+
+% LETTER LIKE SYMBOLS
+
+% mathltlk.mf
+
+for_all := hex"40";
+complement := hex"41";
+partial := hex"42";
+partial_slash := hex"43";
+there_exists := hex"44";
+there_not_exists := hex"45";
+F_inverse := hex"46";
+G_inverse := hex"47";
+empty_set := hex"48";
+diameter_sign := hex"49";
+top_sign := hex"4A";
+bot_sign := hex"4B";
+not_top_sign := hex"4C";
+not_bot_sign := hex"4D";
+wedge_curly := hex"4E";
+vee_curly := hex"4F";
+%%%%%%%% Q_inverse := hex"4A";
+%%%%%%%% Bourbaki_Z := hex"4F";
+
+belong_to := hex"50";
+not_belong_to := hex"52";
+var_not_belong_to := hex"54";
+belong_to_bar := hex"56";
+rev_belong_to := hex"51";
+not_rev_belong_to := hex"53";
+var_not_rev_belong_to := hex"55";
+rev_belong_to_bar := hex"57";
+
+cap_sign := hex"58";
+cup_sign := hex"59";
+cup_plus := hex"5A";
+sqcap_sign := hex"5B";
+sqcup_sign := hex"5C";
+sqcup_plus := hex"5D";
+wedge_sign := hex"5E";
+vee_sign := hex"5F";
+
+% DELIMITERS
+
+paren_left := hex"70";
+paren_right := hex"71";
+bracket_left := hex"72";
+bracket_right := hex"73";
+brace_left := hex"74";
+brace_right := hex"75";
+bbbracket_left := hex"76";
+bbbracket_right := hex"77";
+angle_left := hex"78";
+angle_right := hex"79";
+backslash := hex"7A";
+slash := hex"7B";
+vert_sign := hex"7C";
+vvert_sign := hex"7D";
+vvvert_sign := hex"7E";
+
+% TRIANGLES AS RELATIONS
+
+triangle_left := hex"98"; triangle_right := hex"99";
+not_triangle_left := hex"9A"; not_triangle_right := hex"9B";
+triangle_left_eq := hex"9C"; triangle_right_eq := hex"9D";
+not_triangle_left_eq := hex"9E"; not_triangle_right_eq := hex"9F";
+
+% ARROWS and HARPOONS
+
+arrow_left := hex"D0";
+arrow_right := hex"D1";
+arrow_up := hex"D2";
+arrow_down := hex"D3";
+arrow_northwest := hex"D4";
+arrow_northeast := hex"D5";
+arrow_southwest := hex"D6";
+arrow_southeast := hex"D7";
+arrow_left_right := hex"D8";
+arrow_up_down := hex"D9";
+arrow_left_not := hex"DA";
+arrow_right_not := hex"DB";
+arrow_left_right_not := hex"DC";
+
+relbar_char := hex"DD";
+maps_to_char := hex"DE";
+maps_from_char := hex"DF";
+
+harpoon_left_up := hex"E0";
+harpoon_right_up := hex"E1";
+harpoon_left_down := hex"E2";
+harpoon_right_down := hex"E3";
+harpoon_up_left := hex"E4";
+harpoon_down_left := hex"E5";
+harpoon_up_right := hex"E6";
+harpoon_down_right := hex"E7";
+harpoons_left_right := hex"E8";
+harpoons_right_left := hex"E9";
+harpoons_up_down := hex"EA";
+harpoons_down_up := hex"EB";
+
+double_arrow_left := hex"F0";
+double_arrow_right := hex"F1";
+double_arrow_up := hex"F2";
+double_arrow_down := hex"F3";
+double_arrow_left_right := hex"F4";
+double_arrow_up_down := hex"F5";
+double_arrow_left_not := hex"F6";
+double_arrow_right_not := hex"F7";
+double_arrow_left_right_not := hex"F8";
+Relbar_char := hex"F9";
+Maps_to_char := hex"FA";
+Maps_from_char := hex"FB";
+
+% let the show begin :
+
+input mathltlk;
+input mathfine;
+input mathbigs;
+input mathsmsy;
+input mathsymb;
+input matharrw;
+input mathbdel;
+
+main_name_string := "subset";
+t := hex"80";
+forsuffixes $=, _not, _eq, _not_eq, _eq_not,
+ _eq_varnot, _eqq, _not_eqq, _eqq_not, _eqq_varnot,
+ _double, _double_not:
+ main_name_with($) := t; t := t+2; endfor;
+input mathsubs;
+
+main_name_string := "supset";
+t := hex"81";
+forsuffixes $=, _not, _eq, _not_eq, _eq_not,
+ _eq_varnot, _eqq, _not_eqq, _eqq_not, _eqq_varnot,
+ _double, _double_not:
+ main_name_with($) := t; t := t+2; endfor;
+input mathsubs;
+
+main_name_string := "less";
+t := hex"A0";
+forsuffixes $=, _not, _slant, _not_slant,
+ _eq, _not_eq, _eq_not, %_eqvarnot,
+ _eqq, _not_eqq, _eqq_not, _eqq_varnot,
+ _upperslant, _not_upperslant,
+ _opposite, _eq_opposite, _eqq_opposite,
+ _sim, _not_sim, _sim_not, _approx, _not_approx, _approx_not, _dot:
+ main_name_with($) := t; t := t+2; endfor;
+input mathineq;
+
+main_name_string := "greater";
+t := hex"A1";
+forsuffixes $=, _not, _slant, _not_slant,
+ _eq, _not_eq, _eq_not, %_eq_varnot,
+ _eqq, _not_eqq, _eqq_not, _eqq_varnot,
+ _upperslant, _not_upperslant,
+ _opposite, _eq_opposite, _eqq_opposite,
+ _sim, _not_sim, _sim_not, _approx, _not_approx, _approx_not, _dot:
+ main_name_with($) := t; t := t+2; endfor;
+input mathineq;
+
+main_name_string := "mcircle";% ``m'' stands for medium.
+t := hex"60";
+forsuffixes $=_plus, _minus, _times, _division,
+ _dot, _circle, _asterisk, _co_asterisk,
+ _left, _right, _top, _bot,
+ _sign, _slash, _backslash, _triangle_up:
+ main_name_with($) := t; t := t+1; endfor;
+input mathmbcb;
+
+% see also:
+% _peace_and_love, _ying_yang,
+% _truc, _curt, _full_circle, _five_star, _six_star,
+% _triangle_down, _triangle_left, _triangle_right,
+% _top_dot_minus, _bot_dot_minus, _horiz, _vert, _cross, _across,
+% _wedge, _vee,
+% _black_left, _black_right, _black_top, _black_bot,
+% _black_northwest, _black_northeast, _black_southwest, _black_southeast:
+
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+%font_normal_stretch=3u#;
+%font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+font_extra_space=2u#;
+font_normal_space=6u#+2letter_fit#;
+
+end.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf b/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf
new file mode 100644
index 00000000000..9486d72e1b0
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf
@@ -0,0 +1,1367 @@
+% mathematical symbols by Anthony Phan.
+% file: matharrw.mf (arrow kit)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+use_rule1;
+
+%turningcheck:=0;
+
+arrow_head_fitting:=false;
+arrow_width := 2ceiling 0.84spread1+rth;
+arrow_height# := 4.2u#;
+arrow_height := round 4.2u;
+arrow_breadth := rth;
+arrow_stress := 0.52;%0.65;
+arrow_tense1 := 0.75;
+arrow_tense2 := 0.875;
+
+% Funny thing: using def for the next definition would
+% lead to strange things with transforms. The path must
+% be a whole thing (grouping). One could also use
+% parentheses.
+
+vardef straight_path(expr dir,overshot)=
+ save x_; x_=hround(0.5w+0.5rth)-0.5rth;
+ if dir=up:(x_,-d)..(x_,h+overshot-pen_top)
+ elseif dir=down:(x_,h)..(x_,-d-overshot-pen_bot)
+ elseif dir=left:(w-appr,math_axis)..(appr-overshot-pen_lft,math_axis)
+ else:(appr,math_axis)..(w-appr+overshot-pen_rt,math_axis) fi
+enddef;
+
+% ARROWS
+
+beginchar(arrow_left,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Left arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Right arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),both);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_left_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Left-right arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ arrow_head2(straight_path(right,0),both);
+ filldraw z1l--z2r--z2l--z1r--cycle;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_left_not,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Negated left arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ v_adjust(3r,4l,y1,arrow_width);% to be checked
+ lft x4l=w-rt x3r=appr+hround 6u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_right_not,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Negated right arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),both);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ v_adjust(3r,4l,y1,arrow_width);% to be checked
+ lft x4l=w-rt x3r=appr+hround 6u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_left_right_not,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Negated left-right arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ arrow_head2(straight_path(right,0),both);
+ filldraw z1l--z2r--z2l--z1r--cycle;
+ v_adjust(3r,4l,y1,arrow_width);% to be checked
+ lft x4l=w-rt x3r=appr+hround 6u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_up,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Upward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0),both);% corrected 2002/07/29
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_down,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Downward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0),both);% corrected 2002/07/29
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_up_down,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Upward-Downward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0),both);% corrected 2002/07/29
+ arrow_head2(straight_path(down,0),both);% corrected 2002/07/29
+ filldraw z1l--z2r--z2l--z1r--cycle;;
+ penlabels(1,2);
+endchar;
+
+beginchar(arrow_northwest,
+ 16u#+2appr#,asc_height#,asc_depth#);
+ "Northwest arrow";
+ pickup rule.nib; bot y2=-d; rt x2=w-appr;
+ pickup tiny.nib; top y3=h; lft x3=appr;
+ arrow_head1(z2..z3,both);
+ pickup rule.nib; draw z1..z2;
+ penlabels(1); labels(2,3);
+endchar;
+
+beginchar(arrow_northeast,
+ 16u#+2appr#,asc_height#,asc_depth#);
+ "Northeast arrow";
+ pickup rule.nib; bot y2=-d; lft x2=appr;
+ pickup tiny.nib; top y3=h; rt x3=w-appr;
+ arrow_head1(z2..z3,both);
+ pickup rule.nib; draw z1..z2;
+ penlabels(1); labels(2,3);
+endchar;
+
+beginchar(arrow_southwest,
+ 16u#+2appr#,asc_height#,asc_depth#);
+ "Southwest arrow";
+ pickup rule.nib; top y2=h; rt x2=w-appr;
+ pickup tiny.nib; bot y3=-d; lft x3=appr;
+ arrow_head1(z2..z3,both);
+ pickup rule.nib; draw z1..z2;
+ penlabels(1); labels(2,3);
+endchar;
+
+beginchar(arrow_southeast,
+ 16u#+2appr#,asc_height#,asc_depth#);
+ "Southeast arrow";
+ pickup rule.nib; top y2=h; lft x2=appr;
+ pickup tiny.nib; bot y3=-d; rt x3=w-appr;
+ arrow_head1(z2..z3,both);
+ pickup rule.nib; draw z1..z2;
+ penlabels(1); labels(2,3);
+endchar;
+
+beginchar(arrows_left_left,
+ 16u#+2appr#,v_center(spread2#+spread1#+rth#));
+ "Left-left arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,0.5spread2),both);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(left,0) shifted (0,-0.5spread2),both);
+ rt x4=w-appr; y4=y3; pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_right_right,
+ 16u#+2appr#,v_center(spread2#+spread1#+rth#));
+ "Right_right arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,0.5spread2),both);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(right,0) shifted (0,-0.5spread2),both);
+ lft x4=appr; y4=y3; pos4(rth,-90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_left_right,
+ 16u#+2appr#,v_center(spread2#+spread1#+rth#));
+ "Left-right arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,0.5spread2),both);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(right,0) shifted (0,-0.5spread2),both);
+ lft x4=appr; y4=y3; pos4(rth,-90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_right_left,
+ 16u#+2appr#,v_center(spread2#+spread1#+rth#));
+ "Right-left arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,0.5spread2),both);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(left,0) shifted (0,-0.5spread2),both);
+ rt x4=w-appr; y4=y3; pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_up_up,
+ 7u#+spread2#+2appr#,asc_height#,asc_depth#);
+ "Upward arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0)% corrected 2002/07/29
+ shifted (-0.5spread2,0),both);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(up,0)% corrected 2002/07/29
+ shifted (0.5spread2,0),both);
+ bot y4=-d; x4=x3; pos4(rth,0);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_down_down,
+ 7u#+spread2#+2appr#,asc_height#,asc_depth#);
+ "Downward arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0)% corrected 2002/07/29
+ shifted (-0.5spread2,0),both);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(down,0)% corrected 2002/07/29
+ shifted (0.5spread2,0),both);
+ top y4=h; x4=x3; pos4(rth,180);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_up_down,
+ 7u#+spread2#+2appr#,asc_height#,asc_depth#);
+ "Upward_downward arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0)% corrected 2002/07/29
+ shifted (-0.5spread2,0),both);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(down,0)% corrected 2002/07/29
+ shifted (0.5spread2,0),both);
+ top y4=h; x4=x3; pos4(rth,180);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrows_down_up,
+ 7u#+spread2#+2appr#,asc_height#,asc_depth#);
+ "Downward-upward arrows";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0)% corrected 2002/07/29
+ shifted (-0.5spread2,0),both);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(up,0)% corrected 2002/07/29
+ shifted (0.5spread2,0),both);
+ bot y4=-d; x4=x3; pos4(rth,0);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+% STRANGE ARROWS
+
+beginchar(arrow_shift_up_left,
+ arithmetic_bounds);
+ "Up_left shift arrow";
+ pickup tiny.nib;
+ pos3(rth,0); rt x3r=w-Appr; bot y3=-d-o;
+ arrow_head1(straight_path(left,0) shifted (0,vround 3u),both);
+ forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(arrow_shift_up_right,
+ arithmetic_bounds);
+ "Up_right shift arrow";
+ pickup tiny.nib;
+ pos3(rth,0); lft x3l=Appr; bot y3=-d-o;
+ arrow_head1(straight_path(right,0) shifted (0,vround 3u),both);
+ forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(arrow_shift_down_left,
+ arithmetic_bounds);
+ "Down-left shift arrow";
+ pickup tiny.nib;
+ pos3(rth,180); rt x3l=w-Appr; top y3=h+o;
+ arrow_head1(straight_path(left,0) shifted (0,-vround 3u),both);
+ forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(arrow_shift_down_right,
+ arithmetic_bounds);
+ "Down-right shift arrow";
+ pickup tiny.nib;
+ pos3(rth,180); lft x3r=Appr; top y3=h+o;
+ arrow_head1(straight_path(right,0) shifted (0,-vround 3u),both);
+ forsuffixes $=,r,l: y2$=y1$; x2$=x3$; endfor
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(arrow_squig_left,
+ 6*3.5u#+arrow_height#+2appr#,v_center(spread1#+rth#));
+ "Left squig-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ pickup rule.nib;
+ y2=y1;
+ y3=y5=y7=math_axis+0.5spread1;
+ y4=y6=y8=math_axis-0.5spread1;
+ x8=w-appr; x8-x2=6*3.5u;
+ x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8;
+ autorounded;
+ draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 2}...
+ z3{right}...0.5[z4,z3]{(z4-z3) yscaled 3}...
+ z4{right}...0.5[z5,z4]{(z5-z4) yscaled 3}...
+ z5{right}...0.5[z6,z5]{(z6-z5) yscaled 3}...
+ z6{right}...0.5[z7,z6]{(z7-z6) yscaled 3}...
+ z7{right}...0.5[z8,z7]{(z8-z7) yscaled 3}...
+ z8{right};
+ cullit; unfill (x8+1,top y8+1)--(x8+1,bot y8-1)
+ --(rt x8+1,bot y8-1)--(rt x8+1,top y8+1)--cycle;
+ labels(2,3,4,5,6,7,8); penlabels(1);
+endchar;
+
+beginchar(arrow_squig_right,
+ 6*3.5u#+arrow_height#+2appr#,v_center(spread1#+rth#));
+ "Right squig-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),both);
+ pickup rule.nib;
+ y2=y1;
+ y3=y5=y7=math_axis-0.5spread1;
+ y4=y6=y8=math_axis+0.5spread1;
+ x8=appr; x2-x8=6*3.5u;
+ x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8;
+ autorounded;
+ draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 2}...
+ z3{left}...0.5[z4,z3]{(z4-z3) yscaled 3}...
+ z4{left}...0.5[z5,z4]{(z5-z4) yscaled 3}...
+ z5{left}...0.5[z6,z5]{(z6-z5) yscaled 3}...
+ z6{left}...0.5[z7,z6]{(z7-z6) yscaled 3}...
+ z7{left}...0.5[z8,z7]{(z8-z7) yscaled 3}...
+ z8{left};
+ cullit; unfill (x8-1,top y8+1)--(x8-1,bot y8-1)
+ --(lft x8-1,bot y8-1)--(lft x8-1,top y8+1)--cycle;
+ labels(2,3,4,5,6,7,8); penlabels(1);
+endchar;
+
+beginchar(arrow_squig_left_right,
+ 7*3.5u#+2*arrow_height#+2appr#,v_center(spread1#+rth#));
+ "Left right squig-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ arrow_head10(straight_path(right,0),both);
+ pickup rule.nib;
+ y2=y1; y9=y10;
+ y3=y5=y7=math_axis+0.5spread1;
+ y4=y6=y8=math_axis-0.5spread1;
+ x9-x2=7*3.5u; 0.5[x2,x9]=0.5w;
+ x2-x3=x3-x4=x4-x5=x5-x6=x6-x7=x7-x8=x8-x9;
+ autorounded;
+ draw z1---z2...0.5[z3,z2]{(z3-z2) yscaled 3}...
+ z3{right}...0.5[z4,z3]{(z4-z3) yscaled 3}...
+ z4{right}...0.5[z5,z4]{(z5-z4) yscaled 3}...
+ z5{right}...0.5[z6,z5]{(z6-z5) yscaled 3}...
+ z6{right}...0.5[z7,z6]{(z7-z6) yscaled 3}...
+ z7{right}...0.5[z8,z7]{(z8-z7) yscaled 3}...
+ z8{right}...0.5[z9,z8]{(z9-z8) yscaled 3}...
+ z9---z10;
+ labels(2,3,4,5,6); penlabels(1,7);
+endchar;
+
+beginchar(arrow_curve_top_left,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Top-left curved arrow";
+ pickup tiny.nib;
+ bot y1=bot y3=-d-eps; y2+0.5rth=h+o;
+ rt x1=w-appr; x2=0.5w; lft x3=appr;
+ z0=(z2-z1) yscaled 3;
+ tmp_path:=z1{z0}...z2{left}...z3{(z3-z2) yscaled 3};
+ arrow_head4(tmp_path,both);
+ pos1(rth,angle z0-90); pos2(rth,90);
+ filldraw stroke z1e{z0}...z2e{left}
+ ...z4e{direction arrow_time of tmp_path};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_curve_top_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Top-right curved arrow";
+ pickup tiny.nib;
+ bot y1=bot y3=-d-eps; y2+0.5rth=h+o;
+ lft x1=appr; x2=0.5w; rt x3=w-appr;
+ z0=(z2-z1) yscaled 3;
+ tmp_path:=z1{z0}...z2{right}...z3{(z3-z2) yscaled 3};
+ arrow_head4(tmp_path,both);
+ pos1(rth,angle z0-90); pos2(rth,-90);
+ filldraw stroke z1e{z0}...z2e{right}
+ ...z4e{direction arrow_time of tmp_path};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_curve_top_left_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Top-left-right curved arrow";
+ pickup tiny.nib;
+ bot y1=bot y3=-d-eps; y2+0.5rth=h+o;
+ rt x1=w-appr; x2=0.5w; lft x3=appr;
+ tmp_path:=z1{(z2-z1) yscaled 3}...z2{left}...z3{(z3-z2) yscaled 3};
+ arrow_head0(reverse tmp_path,both); t:=2-arrow_time;
+ arrow_head4(tmp_path,both);
+ pickup rule.nib;
+ draw subpath (t,arrow_time) of tmp_path;
+ labels(1,2,3); penlabels(0,4);
+endchar;
+
+beginchar(arrow_curve_bot_left,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Bot-left curved arrow";
+ pickup tiny.nib;
+ top y1=top y3=h+eps; y2-0.5rth=-d-o;
+ rt x1=w-appr; x2=0.5w; lft x3=appr;
+ z0=(z2-z1) yscaled 3;
+ tmp_path:=z1{z0}...z2{left}...z3{(z3-z2) yscaled 3};
+ arrow_head4(tmp_path,both);
+ pos1(rth,angle z0-90); pos2(rth,90);
+ filldraw stroke z1e{z0}...z2e{left}
+ ...z4e{direction arrow_time of tmp_path};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_curve_bot_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Bot-right curved arrow";
+ pickup tiny.nib;
+ top y1=top y3=h+eps; y2-0.5rth=-d-o;
+ lft x1=appr; x2=0.5w; rt x3=w-appr;
+ z0=(z2-z1) yscaled 3;
+ tmp_path:=z1{z0}...z2{right}...z3{(z3-z2) yscaled 3};
+ arrow_head4(tmp_path,both);
+ pos1(rth,angle z0-90); pos2(rth,-90);
+ filldraw stroke z1e{z0}...z2e{right}
+ ...z4e{direction arrow_time of tmp_path};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_curve_bot_left_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Bot-left-right curved arrow";
+ pickup tiny.nib;
+ top y1=top y3=h+eps; y2-0.5rth=-d-o;
+ rt x1=w-appr; x2=0.5w; lft x3=appr;
+ tmp_path:=z1{(z2-z1) yscaled 3}...z2{left}...z3{(z3-z2) yscaled 3};
+ arrow_head0(reverse tmp_path,both); t:=2-arrow_time;
+ arrow_head4(tmp_path,both);
+ pickup rule.nib;
+ draw subpath (t,arrow_time) of tmp_path;
+ labels(1,2,3); penlabels(0,4);
+endchar;
+
+beginchar(arrow_loop_up_left,
+ 16u#+2appr#,v_center(12u#));
+ "Up-left loop-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ lft x8l=w-appr-hround 6u; bot y8=-d;
+ pos7(rth,180); pos8(rth,180);
+ y1=y2=y3=y7; x2=x6=x7=x8;
+ filldraw stroke z8e..z7e;
+ pickup rule.nib; autorounded;
+ top y5=h; rt x4=w-appr;
+ y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6];
+ draw z1..z2..z3 right_to_up z4
+ up_to_left z5 left_to_down z6..z7;
+ labels(1,2,3,4,5,6); penlabels(7,8);
+endchar;
+
+beginchar(arrow_loop_up_right,
+ 16u#+2appr#,v_center(12u#));
+ "Up-right loop-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),both);
+ rt x8r=appr+hround 6u; bot y8=-d;
+ pos7(rth,180); pos8(rth,180);
+ y1=y2=y3=y7; x2=x6=x7=x8;
+ filldraw stroke z8e..z7e;
+ pickup rule.nib; autorounded;
+ top y5=h; lft x4=appr;
+ y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6];
+ draw z1..z2..z3 left_to_up z4
+ up_to_right z5 right_to_down z6..z7;
+ labels(1,2,3,4,5,6); penlabels(7,8);
+endchar;
+
+beginchar(arrow_loop_down_left,
+ 16u#+2appr#,v_center(12u#));
+ "Down-left loop-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),both);
+ lft x8r=w-appr-hround 6u; top y8=h;
+ pos7(rth,0); pos8(rth,0);
+ y1=y2=y3=y7; x2=x6=x7=x8;
+ filldraw stroke z8e..z7e;
+ pickup rule.nib; autorounded;
+ bot y5=-d; rt x4=w-appr;
+ y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6];
+ draw z1..z2..z3 right_to_down z4
+ down_to_left z5 left_to_up z6..z7;
+ labels(1,2,3,4,5,6); penlabels(7,8);
+endchar;
+
+beginchar(arrow_loop_down_right,
+ 16u#+2appr#,v_center(12u#));
+ "Down-right loop-arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),both);
+ rt x8l=appr+hround 6u; top y8=h;
+ pos7(rth,0); pos8(rth,0);
+ y1=y2=y3=y7; x2=x6=x7=x8;
+ filldraw stroke z8e..z7e;
+ pickup rule.nib; autorounded;
+ bot y5=-d; lft x4=appr;
+ y4=y6=0.5[y3,y5]; x3=x5=0.5[x4,x6];
+ draw z1..z2..z3 left_to_down z4
+ down_to_right z5 right_to_up z6..z7;
+ labels(1,2,3,4,5,6); penlabels(7,8);
+endchar;
+
+beginchar(arrow_circle_left,
+ arithmetic_bounds);
+ "Left circle-arrow";
+ arrow_head_fitting:=true;
+ a:=6.75u; t:=0.25;
+ pickup rule.nib;
+ x0=x1=x3=good.x 0.5w;
+ y0=y2=y4=math_axis;
+ y1-y0=y0-y3=x4-x0=x0-x2=round(a-0.5rth);
+ tmp_path:=subpath (t,8-t) of
+ (z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1);
+ pickup tiny.nib;
+ arrow_head5(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath(0,arrow_time) of tmp_path;
+ labels(1,2,3,4); penlabels(1);
+endchar;
+
+beginchar(arrow_circle_right,
+ arithmetic_bounds);
+ "Right circle-arrow";
+ arrow_head_fitting:=true;
+ a:=6.75u; t:=0.25;
+ pickup rule.nib;
+ x0=x1=x3=good.x 0.5w;
+ y0=y2=y4=math_axis;
+ y1-y0=y0-y3=x2-x0=x0-x4=round(a-0.5rth);
+ tmp_path:=subpath (t,8-t) of
+ (z1 right_to_down z2 down_to_left
+ z3 left_to_up z4 up_to_right z1);
+ pickup tiny.nib;
+ arrow_head5(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath(0,arrow_time) of tmp_path;
+ labels(1,2,3,4); penlabels(1);
+endchar;
+
+beginchar(arrow_left_to_right,
+ 16u#+2appr#,v_center(12u#));
+ "Left to right arrow";
+ arrow_head_fitting:=true;
+ pickup rule.nib;
+ x1=x5=w-appr; lft x3=appr; top y2=h-vround 0.5u; y1-y5=spread1;
+ 0.5[y1,y5]=0.5[y2,y4]=y3=math_axis;
+ x2=x4=3/8[appr,w-appr];
+ tmp_path:=z1{(z2-z1) yscaled 2}...z2 left_to_down
+ z3 down_to_right z4...z5{(z5-z4) yscaled 2};
+ pickup tiny.nib;
+ arrow_head6(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath (0,arrow_time) of tmp_path;
+ labels(1,2,3,4,5); penlabels(6);
+endchar;
+
+beginchar(arrow_right_to_left,
+ 16u#+2appr#,v_center(12u#));
+ "Right to left arrow";
+ arrow_head_fitting:=true;
+ pickup rule.nib;
+ x1=x5=appr; rt x3=w-appr; top y4=h-vround 0.5u; y5-y1=spread1;
+ 0.5[y1,y5]=0.5[y2,y4]=y3=math_axis;
+ x2=x4=5/8[appr,w-appr];
+ tmp_path:=z1{(z2-z1) yscaled 2}...z2 right_to_up
+ z3 up_to_left z4...z5{(z5-z4) yscaled 2};
+ pickup tiny.nib;
+ arrow_head6(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath (0,arrow_time) of tmp_path;
+ labels(1,2,3,4,5); penlabels(6);
+endchar;
+
+beginchar(arrow_up_to_down,
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "Up to down arrow";
+ arrow_head_fitting:=true;
+ pickup rule.nib;
+ y1=y5=-d; top y3=h; lft x4=appr+hround 0.5u; x1-x5=spread1;
+ 0.5[x1,x5]=0.5[x2,x4]=x3=0.5w;
+ y2=y4=5/8[-d,h];
+ tmp_path:=z1{(z2-z1) xscaled 2}...z2 up_to_left
+ z3 left_to_down z4...z5{(z5-z4) xscaled 2};
+ pickup tiny.nib;
+ arrow_head6(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath (0,arrow_time) of tmp_path;
+ labels(1,2,3,4,5); penlabels(6);
+endchar;
+
+beginchar(arrow_down_to_up,
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "Down to up arrow";
+ arrow_head_fitting:=true;
+ pickup rule.nib;
+ y1=y5=h; bot y3=-d; lft x2=appr+hround 0.5u; x5-x1=spread1;
+ 0.5[x1,x5]=0.5[x2,x4]=x3=0.5w;
+ y2=y4=3/8[-d,h];
+ tmp_path:=z1{(z2-z1) xscaled 2}...z2 down_to_right
+ z3 right_to_up z4...z5{(z5-z4) xscaled 2};
+ pickup tiny.nib;
+ arrow_head6(tmp_path,both);
+ pickup rule.nib;
+ cutdraw subpath (0,arrow_time) of tmp_path;
+ labels(1,2,3,4,5); penlabels(6);
+endchar;
+
+% HARPOONS
+
+beginchar(harpoon_left_up,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Left up-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),right);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_right_up,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Right up-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),left);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_left_down,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Left down-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),left);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_right_down,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Right down-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),right);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_up_left,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Upward left-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0),left);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_down_left,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Upward left-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0),right);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_up_right,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Downward right-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0),right);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoon_down_right,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Downward right-harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0),left);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+beginchar(harpoons_left_left,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left-left harpoons";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(left,0) shifted (0,-0.5spread1),left);
+ rt x4=w-appr; y4=y3; pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_right_right,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Right-right harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(right,0) shifted (0,-0.5spread1),right);
+ lft x4=appr; y4=y3; pos4(rth,-90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_left_right,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left-right harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(right,0) shifted (0,-0.5spread1),right);
+ lft x4=appr; y4=y3; pos4(rth,-90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_right_left,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Right-left harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(left,0) shifted (0,-0.5spread1),left);
+ rt x4=w-appr; y4=y3; pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_up_up,
+ 7u#+spread1#+2appr#,asc_height#,asc_depth#);
+ "Upward-upward hapoons";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0) shifted (-0.5spread1,0),left);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(up,0) shifted (0.5spread1,0),right);
+ bot y4=-d; x4=x3; pos4(rth,0);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_down_down,
+ 7u#+spread1#+2appr#,asc_height#,asc_depth#);
+ "Downward-downward hapoons";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0) shifted (-0.5spread1,0),right);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(down,0) shifted (0.5spread1,0),left);
+ top y4=h; x4=x3; pos4(rth,180);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_up_down,
+ 7u#+spread1#+2appr#,asc_height#,asc_depth#);
+ "Upward-downward hapoons";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0) shifted (-0.5spread1,0),left);
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(down,0) shifted (0.5spread1,0),left);
+ top y4=h; x4=x3; pos4(rth,180);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoons_down_up,
+ 7u#+spread1#+2appr#,asc_height#,asc_depth#);
+ "Downward-upward hapoons";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,0) shifted (-0.5spread1,0),right);
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+ arrow_head3(straight_path(up,0) shifted (0.5spread1,0),right);
+ bot y4=-d; x4=x3; pos4(rth,0);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+%
+% T. Chaundy uniquely
+%
+
+beginchar(harpoon_left_bar,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left-bar harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,0.5spread1),right);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ lft x3=appr; rt x4=w-appr;
+ y4=y3=math_axis-0.5spread1;
+ pos3(rth,90); pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoon_right_bar,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Right-bar harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,0.5spread1),left);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ lft x3=appr; rt x4=w-appr;
+ y4=y3=math_axis-0.5spread1;
+ pos3(rth,90); pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoon_bar_left,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Bar-left harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0) shifted (0,-0.5spread1),left);
+ rt x2=w-appr; y2=y1; pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ lft x3=appr; rt x4=w-appr;
+ y4=y3=math_axis+0.5spread1;
+ pos3(rth,90); pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoon_bar_right,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Bar-right harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0) shifted (0,-0.5spread1),right);
+ lft x2=appr; y2=y1; pos2(rth,-90);
+ filldraw stroke z1e..z2e;
+ lft x3=appr; rt x4=w-appr;
+ y4=y3=math_axis+0.5spread1;
+ pos3(rth,90); pos4(rth,90);
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(harpoon_left_right,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Left-right harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(left,0),right);
+ arrow_head2(straight_path(right,0),right);
+ filldraw z1l--z2r--z2l--z1r--cycle;
+endchar;
+
+beginchar(harpoon_right_left,
+ 16u#+2appr#,v_center(spread1#+rth#));
+ "Right-left harpoon";
+ pickup tiny.nib;
+ arrow_head1(straight_path(right,0),left);
+ arrow_head2(straight_path(left,0),left);
+ filldraw z1l--z2r--z2l--z1r--cycle;
+endchar;
+
+% ARROW KIT
+
+beginchar(maps_to_char,0,v_center(spread1#+rth#));
+ "Maps to char";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=lft x2l=appr; x3=x1r; x4=x3+ceiling 0.5u;
+ y3=y4=math_axis; 0.5[y1,y2]=y3;
+ top y1-bot y2=arrow_width;%2vround 0.60arrow_width;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(maps_from_char,0,v_center(spread1#+rth#));
+ "Maps from char";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,-90); pos4(rth,-90);
+ rt x1r=rt x2r=-appr; x3=x1l; x4=x3-ceiling 0.5u;
+ y3=y4=math_axis; 0.5[y1,y2]=y3;
+ top y1-bot y2=arrow_width; %2vround 0.60arrow_width;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(relbar_char,12u#+2appr#,v_center(spread1#+rth#));
+ "Relation bar char";
+ pickup tiny.nib; pos1(rth,90); pos2(rth,90);
+ y1=y2=math_axis; lft x1=appr; rt x2=w-appr;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+%
+% trop \'ecras\'es \`a mon go\^ut.
+%
+
+beginchar(hook_left,3u#+2appr#,v_center(spread1#+rth#));
+ "Left hook";
+ pickup tiny.nib; pos1(rth,90); pos2(rth,0); pos3(rth,-90);
+ y3=math_axis; y1-y3=vround min(1.4spread1,3u);
+ y2=0.5[y1,y3]; lft x1=lft x3=appr; rt x2r=w-appr;
+ filldraw stroke z1e right_to_down z2e down_to_left z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(hook_right,3u#+2appr#,v_center(spread1#+rth#));
+ "Right hook";
+ pickup tiny.nib; pos1(rth,-90); pos2(rth,0); pos3(rth,90);
+ y3=math_axis; y1-y3=vround min(1.4spread1,3u);
+ y2=0.5[y1,y3]; rt x1=rt x3=w-appr; lft x2l=appr;
+ filldraw stroke z1e left_to_down z2e down_to_right z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(diag_up,16u#+2appr#,asc_height#,asc_depth#);
+ "Diagonal up";
+ pickup rule.nib;
+ lft x1=appr; rt x2=w-appr; bot y1=-d; top y2=h;
+ draw z1..z2; labels(1,2);
+endchar;
+
+beginchar(diag_down,16u#+2appr#,asc_height#,asc_depth#);
+ "Diagonal down";
+ pickup rule.nib;
+ lft x1=appr; rt x2=w-appr; top y1=h; bot y2=-d;
+ draw z1..z2; labels(1,2);
+endchar;
+
+% DOUBLE ARROWS
+
+% for horizontal arrows...
+
+double_arrow_width := 2ceiling 0.70spread1+spread1+rth1;
+double_arrow_height := round 6.5u;
+double_arrow_tense := 0.65;
+double_arrow_flatness:= 0.25;
+
+beginchar(double_arrow_left,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((appr,math_axis),left);
+ pos2r(rth,90); pos2l(rth,90);
+ rt x2r=rt x2l=w-appr; y2r=y1r; y2l=y1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_right,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Right double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((w-appr,math_axis),right);
+ pos2r(rth,-90); pos2l(rth,-90);
+ lft x2r=lft x2l=appr; y2r=y1r; y2l=y1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_left_right,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left-right double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((appr-o,math_axis),left);
+ double_arrow_head2((w-appr+o,math_axis),right);
+ filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle;
+ filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle;
+endchar;
+
+beginchar(double_arrow_left_not,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((appr,math_axis),left);
+ pos2r(rth,90); pos2l(rth,90);
+ rt x2r=rt x2l=w-appr; y2r=y1r; y2l=y1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ v_adjust(3r,4l,y1,double_arrow_width);% to be checked
+ lft x4l-appr=hround 7u; w-appr-rt x3r=hround 5u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(2r,2l,3,4);
+endchar;
+
+beginchar(double_arrow_right_not,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Right double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((w-appr,math_axis),right);
+ pos2r(rth,-90); pos2l(rth,-90);
+ lft x2r=lft x2l=appr; y2r=y1r; y2l=y1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ v_adjust(3r,4l,y1,double_arrow_width);% to be checked
+ lft x4l=appr+hround 5u; w-rt x3r=appr+hround 7u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(2r,2l,3,4);
+endchar;
+
+beginchar(double_arrow_left_right_not,
+ 16u#+2appr#,v_center(2spread1#+rth#));
+ "Left-right double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((appr-o,math_axis),left);
+ double_arrow_head2((w-appr+o,math_axis),right);
+ filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle;
+ filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle;
+ v_adjust(3r,4l,y1,double_arrow_width);% to be checked
+ lft x4l=w-rt x3r=appr+hround 6.5u;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny,-1);
+ filldraw stroke z3e..z4e;
+ penlabels(3,4);
+endchar;
+
+% for horizontal arrows...
+
+double_arrow_width := 2ceiling 0.70spread1+spread1+rth1;
+double_arrow_height := round 6.5u;
+double_arrow_tense := 0.65;
+double_arrow_flatness:= 0.25;
+
+beginchar(double_arrow_up,
+ 9u#+2appr#,asc_height#,asc_depth#);
+ "Up double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ h+o),up);
+ pos2r(rth,0); pos2l(rth,0);
+ bot y2r=bot y2l=-d; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_down,
+ 9u#+2appr#,asc_height#,asc_depth#);
+ "Down double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ -d-o),down);
+ pos2r(rth,180); pos2l(rth,180);
+ top y2r=top y2l=h; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_up_down,
+ 9u#+2appr#,body_height#,paren_depth#);
+ "Up-down double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ h+o),up);
+ double_arrow_head2((hround 0.5(w-rth)+0.5rth,
+ -d-o),down);
+ filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle;
+ filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle;
+endchar;
+
+beginchar(Relbar_char,12u#+2appr#,v_center(2spread1#+rth#));
+ "Double relation bar char";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=appr; rt x2=rt x4=w-appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(Maps_to_char,0,v_center(2spread1#+rth#));
+ "Double maps to char";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ pos5(rth,90); pos6(rth,90);
+ lft x1l=lft x2l=appr; x3=x5r=x1r; x4=x6=x3+ceiling 0.5u;
+ y3=y4=math_axis+0.5spread1; y5=y6=math_axis-0.5spread1;
+ 0.5[y1,y2]=math_axis;
+ top y1-bot y2=arrow_width % 2vround 0.60arrow_width
+ +spread1;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(Maps_from_char,0,v_center(2spread1#+rth#));
+ "Double maps from char";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,-90); pos4(rth,-90);
+ pos5(rth,-90); pos6(rth,-90);
+ rt x1r=rt x2r=-appr; x3=x5r=x1l; x4=x6=x3-ceiling 0.5u;
+ y3=y4=math_axis+0.5spread1; y5=y6=math_axis-0.5spread1;
+ 0.5[y1,y2]=math_axis;
+ top y1-bot y2=arrow_width % 2vround 0.60arrow_width
+ +spread1;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+endchar;
+
+% EXTENSIBLE ARROWS (revoir les parametres)
+
+use_rule1;
+
+arrow_width := 2ceiling 0.70spread1+rth;
+arrow_height# := 4u#;
+arrow_height := round 4u;
+arrow_breadth := rth;
+arrow_stress := 0.65;
+arrow_tense1 := 0.75;
+arrow_tense2 := 0.875;
+
+beginchar(arrow_top,10u#+2appr#,0,dh#);
+ pickup tiny.nib;
+ a:=hround rth1+0.2dw; save rth; rth:=a;
+ lft x2l=hround 0.5(w-rth);
+ y2=-d-eps; pos2(rth,0); top y3=h; x3=x2;
+ arrow_head1(z2..z3,both);
+ filldraw stroke z1e--z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_bot,10u#+2appr#,0,dh#);
+ pickup tiny.nib;
+ a:=hround rth1+0.2dw; save rth; rth:=a;
+ lft x2r=hround 0.5(w-rth);
+ y2=h+eps; pos2(rth,180); bot y3=-d; x3=x2;
+ arrow_head1(z2..z3,both);
+ filldraw stroke z1e--z2e; penlabels(1,2);
+endchar;
+
+beginchar(arrow_mod,10u#+2appr#,0,dh#);
+ pickup tiny.nib;
+ a:=hround rth1+0.2dw; save rth; rth:=a;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ y1=h+eps; y2=-d-eps; pos1(rth,0); pos2(rth,0);
+ filldraw stroke z1e--z2e; penlabels(1,2);
+endchar;
+
+% for horizontal arrows...
+
+double_arrow_width := 2ceiling 0.70spread1+spread1+rth;
+double_arrow_height := round 6.5u;
+double_arrow_tense := 0.65;
+double_arrow_flatness:= 0.25;
+
+beginchar(double_arrow_top,
+ 12u#+2appr#,0,dh#);
+ "double arrow top";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ h+o),up);
+ pos2r(rth,0); pos2l(rth,0);
+ y2r=y2l=-d-1-eps; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_bot,
+ 12u#+2appr#,0,dh#);
+ "double arrow bot";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ -d-o),down);
+ pos2r(rth,180); pos2l(rth,180);
+ y2r=y2l=h+1+eps; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+endchar;
+
+beginchar(double_arrow_mod,
+ 12u#+2appr#,0,dh#);
+ "double arrow extension's module";
+ pickup tiny.nib;
+ x3-x1=x4-x2=spread1;
+ 0.5[x1,x3]=0.5[x2,x4]=hround 0.5(w-rth)+0.5rth;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ y1=y3=h+1+eps; y2=y4=-d-1-eps;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+endinput;
+
+beginchar(arrow_up_not,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Negated upward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,0),both);% corrected 2002/07/29
+ bot y2=-d; x2=x1; pos2(rth,0);
+ filldraw stroke z1e..z2e;
+%
+ x3r=x3l=x1c.l; x4r=x4l=x1c.r; 0.5[y3l,y4r]=0.5[-d,h];
+ y1c.r-y4r=vround 1/3(y1c.r-0.5[-d,h]);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_down_not,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Negated downward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(down,o),both);% corrected 2002/07/29
+ top y2=h; x2=x1; pos2(rth,180);
+ filldraw stroke z1e..z2e;
+%
+ x3r=x3l=x1c.r; x4r=x4l=x1c.l; 0.5[y3l,y4r]=0.5[-d,h];
+ y3l-y1c.r=vround 1/3(0.5[-d,h]-y1c.r);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(arrow_up_down_not,
+ 7u#+2appr#,asc_height#,asc_depth#);
+ "Negated Upward-Downward arrow";
+ pickup tiny.nib;
+ arrow_head1(straight_path(up,o),both);% corrected 2002/07/29
+ arrow_head2(straight_path(down,o),both);% corrected 2002/07/29
+ filldraw z1l--z2r--z2l--z1r--cycle;;
+%
+ x3r=x3l=x1c.l; x4r=x4l=x1c.r; 0.5[y3l,y4r]=0.5[-d,h];
+ y1c.r-y4r=vround 1/3(y1c.r-0.5[-d,h]);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(double_arrow_up_not,
+ 9u#+2appr#,asc_height#,asc_depth#);
+ "Negated Up double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ h+o),up);
+ pos2r(rth,0); pos2l(rth,0);
+ bot y2r=bot y2l=-d; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+%
+ rt x4r=rt x4l=x1a.l; x3l=x3r=2x1-x4r;
+ 0.5[y3l,y4r]=0.5[-d,h];
+ y1a.l-top y4r=vround 1/5(y1a.l-0.5[-d,h]);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(3,4);
+endchar;
+
+beginchar(double_arrow_down_not,
+ 9u#+2appr#,asc_height#,asc_depth#);
+ "Negated down double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ -d-o),down);
+ pos2r(rth,180); pos2l(rth,180);
+ top y2r=top y2l=h; x2r=x1r; x2l=x1l;
+ filldraw stroke z1r.e..z2r.e;
+ filldraw stroke z1l.e..z2l.e;
+ penlabels(2r,2l);
+%
+ lft x3r=lft x3l=x1a.l; x4l=x4r=2x1-x3r;
+ 0.5[y3l,y4r]=0.5[-d,h];
+ bot y3l-y1a.l=vround 1/5(0.5[-d,h]-y1a.l);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(3,4);
+endchar;
+
+beginchar(double_arrow_up_down_not,
+ 9u#+2appr#,body_height#,paren_depth#);
+ "Negated up-down double arrow";
+ pickup tiny.nib;
+ double_arrow_head1((hround 0.5(w-rth)+0.5rth,
+ h+o),up);
+ double_arrow_head2((hround 0.5(w-rth)+0.5rth,
+ -d-o),down);
+ filldraw z1r.r--z1r.l--z2l.r--z2l.l--cycle;
+ filldraw z1l.r--z1l.l--z2r.r--z2r.l--cycle;
+%
+ rt x4r=rt x4l=x1a.l; x3l=x3r=2x1-x4r;
+ 0.5[y3l,y4r]=0.5[-d,h];
+ y1a.l-top y4r=vround 1/5(y1a.l-0.5[-d,h]);
+ a:=rth-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z3e..z4e;
+ penlabels(3,4);
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf
new file mode 100644
index 00000000000..f037c718c95
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf
@@ -0,0 +1,946 @@
+% mathematical symbols by Anthony Phan.
+% file: mathastr.mf (mathematical astronomical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+% stem_corr had been added (darkness).
+% also vair_corr and slab.
+
+%astro := 1;
+
+% from cmbase.mf
+
+% super_arc.r(suffix $, $$) and super_arc.l(suffix $, $$)
+% have the same effect as a right_to_down
+
+vardef pulled_super_arc.r(suffix $, $$)(expr superpull) =
+ pair center, corner;
+ if y$ = y$r: center = (x$$r, y$r); corner = (x$r, y$$r);
+ else: center = (x$r, y$$r); corner = (x$$r, y$r); fi
+ z$r{corner-z$r}...superness[center, corner]{z$$r-z$r}
+ ...{z$$r-corner}z$$r
+enddef;
+
+vardef pulled_super_arc.l(suffix $, $$)(expr superpull) =
+ pair center, corner, outer_point;
+ if y$ = y$r: center = (x$$l, y$l); corner = (x$l, y$$l);
+ outer_point = superness[(x$$r, y$r), (x$r, y$$r)];
+ else: center = (x$l, y$$l); corner = (x$$l, y$l);
+ outer_point = superness[(x$r, y$$r), (x$$r, y$r)]; fi
+ z$l{corner-z$l}
+ ...superpull[superness[center, corner], outer_point]{z$$l-z$l}
+ ...{z$$l-corner}z$$l
+enddef;
+
+vardef pulled_arc@#(suffix $, $$) =
+ pulled_super_arc@#($, $$)(superpull)
+enddef;
+
+% let's go
+
+use_rule4;
+
+boolean serifs;
+if astro > 0.75: serifs := true; else: serifs := false; fi
+
+astro.hair := hround astro[rth, hair];
+astro.vair := vround astro[rth, vair];
+astro.stem := hround astro[rth, stem];
+astro.light_stem := astro[rth, 0.9[vair, 0.85stem]];
+astro.curve := hround astro[rth, curve];
+astro.vair' := vround astro[rth, vair'];
+astro.cap_hair := vround astro[rth, cap_hair];
+astro.cap_stem := hround astro[rth, cap_stem];
+astro.cap_curve := hround astro[rth, cap_curve];
+astro.rth := astro[rth, rth];
+astro.beak := astro[0, 0.38cap_height-astro.cap_hair];
+astro.slab := vround astro[rth, slab];
+
+superpull := astro*1/6;
+arrow_breadth := astro[0, vair];
+arrow_stress := astro[1, 0.7];
+arrow_tense1 := astro[1, 0.75];
+arrow_tense2 := astro[1, 0.875];
+
+% absolutely okay
+beginchar(astro_sun, 13u#+2appr#, cap_height#, 0);
+ "Sun";
+ italcorr 0; % italcorr 0.6cap_height#*slant-.5u#;
+ autorounded;
+ pickup null.nib;
+% circle
+ penpos1(astro.vair', 90);
+ penpos2(hround astro[rth, cap_curve-stem_corr], 180);
+ penpos3(vround astro[rth, vair+1.5vair_corr], -90);
+ penpos4(hround astro[rth, cap_curve-stem_corr], 0);
+ y1r = h+o; y3r = -o; y2 = y4 = 0.5h;
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52h];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+% dot
+ adjust_dot5((x1, y2), astro[2.7rth, 1.3dtsz], true, true);
+ dot(5, 5');
+ penlabels(1, 2, 3, 4);
+endchar;
+
+% okay
+beginchar(astro_left_moon, 10u#+2appr#, cap_height#, 0);
+ "Left moon (Moon)";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ save tmp_path, a, t; path tmp_path[];
+%
+% Two solutions may be considered for
+% this construction. The first (and the
+% one which is done here) is to put the
+% two centers of circles at a predeterminated
+% distance $a$ from each others (namely $a = 4u$)
+% and do the construction hoping that edges
+% will fit the right bound.
+% The second one consists in calculating that
+% distance $a$ to make sure that edges will lie
+% on the right bound (the calculations are shown
+% commentated). The problem with this method
+% is that there is no control of the clear part's
+% width of the drawing. Moreover, when the inner
+% radius become too small there is no more solution
+% to that problem (see below).
+%
+%% The actual width of the drawing must be 10u.
+%% The problem is to calculate the distance
+%% between the two centers to make it work.
+%% Alas when the two radius are too far from
+%% each over, this problem has no solution.
+%%
+%% 6.5u = radius of great circle.
+%% 3.5u = 10u-6.5u = (inner width)-radius.
+%% 6.5u-rth = radius of small circle.
+%%
+% b = (3.5u)**2+(rth**2)-2*6.5u*rth;
+% if b> = 0: a = hround(3.5u+sqrt b);
+% else: a = hround(3.5u); fi
+ a = hround(4u-rth+astro.rth);
+ penpos2(vround astro.rth, 90);
+ penpos3(hround astro.rth, 180);
+ penpos4(vround astro.rth, -90);
+ penpos1(hround astro.rth, 0);
+ x3r = appr; x1r-x3r = 13u; y2r = h+o; y4r = -o;
+ y1 = y3 = 0.5[y2, y4]; x2 = x4 = 0.5[x1, x3];
+ tmp_path1 = z1r up_to_left z2r left_to_down z3r
+ down_to_right z4r right_to_up z1r..cycle;
+ tmp_path2 = z1l up_to_left z2l left_to_down z3l
+ down_to_right z4l right_to_up z1l..cycle;
+ tmp_path3 = tmp_path1 shifted (a, 0);
+ tmp_path4 = tmp_path2 shifted (a, 0);
+%
+% The presence of epsilons makes almost certain
+% that paths won't have double points causing
+% trouble with filling commands.
+%
+ (t1-eps, t4-eps) = (subpath (0, 4) of tmp_path1)
+ intersectiontimes (subpath (0, 4) of tmp_path4);
+ (t2-4+eps, t3-4+eps) = (subpath (4, 8) of tmp_path1)
+ intersectiontimes (subpath (4, 8) of tmp_path4);
+ (t5-eps, t8-eps) = (subpath (0, 4) of tmp_path2)
+ intersectiontimes (subpath (0, 4) of tmp_path3);
+ (t6-4+eps, t7-4+eps) = (subpath (4, 8) of tmp_path2)
+ intersectiontimes (subpath (4, 8) of tmp_path3);
+ fill subpath (t1, t2) of tmp_path1
+ ..reverse subpath(t4, t3) of tmp_path4..cycle;
+ unfill subpath (t5, t6) of tmp_path2
+ ..reverse subpath(t8, t7) of tmp_path3..cycle;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_right_moon, 10u#+2appr#, cap_height#, 0);
+ "Right moon";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ save tmp_path, a, t; path tmp_path[];
+ a = -hround(4u-rth+astro.rth);
+ penpos2(vround astro.rth, 90);
+ penpos3(hround astro.rth, 0);
+ penpos4(vround astro.rth, -90);
+ penpos1(hround astro.rth, 180);
+ x3 = w-appr-0.5rth; x1r-x3r = -13u; y2r = h+o; y4r = -o;
+ y1 = y3 = 0.5[y2, y4]; x2 = x4 = 0.5[x1, x3];
+ tmp_path1 = z1r up_to_left z2r left_to_down z3r
+ down_to_right z4r right_to_up z1r..cycle;
+ tmp_path2 = z1l up_to_left z2l left_to_down z3l
+ down_to_right z4l right_to_up z1l..cycle;
+ tmp_path3 = tmp_path1 shifted (a, 0);
+ tmp_path4 = tmp_path2 shifted (a, 0);
+ (t1-eps, t4-eps) = (subpath (0, 4) of tmp_path1)
+ intersectiontimes (subpath (0, 4) of tmp_path4);
+ (t2-4+eps, t3-4+eps) = (subpath (4, 8) of tmp_path1)
+ intersectiontimes (subpath (4, 8) of tmp_path4);
+ (t5-eps, t8-eps) = (subpath (0, 4) of tmp_path2)
+ intersectiontimes (subpath (0, 4) of tmp_path3);
+ (t6-4+eps, t7-4+eps) = (subpath (4, 8) of tmp_path2)
+ intersectiontimes (subpath (4, 8) of tmp_path3);
+ fill subpath (t1, t2) of tmp_path1
+ ..reverse subpath(t4, t3) of tmp_path4..cycle;
+ unfill subpath (t5, t6) of tmp_path2
+ ..reverse subpath(t8, t7) of tmp_path3..cycle;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_full_moon, 13u#+2appr#, cap_height#, 0);
+ "Full moon";
+ italcorr 0; % italcorr 0.6cap_height#*slant-.5u#;
+ autorounded;
+% circle
+ penpos1(vround astro.rth, 90);
+ penpos2(hround astro.rth, 180);
+ penpos3(vround astro.rth, -90);
+ penpos4(hround astro.rth, 0);
+ y1r = h+o; y3r = -o; y2 = y4 = 0.5h;
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, y2];
+ penstroke z1e left_to_down z2e down_to_right
+ z3e right_to_up z4e up_to_left z1e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_new_moon, 13u#+2appr#, cap_height#, 0);
+ "New moon";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ autorounded;
+ x4 = w-appr; x2 = appr; y1 = h+o; y3 = -o;
+ y2 = y4 = 0.5h; x1 = x3 = 0.5[x2, x4];
+ fill z1 left_to_down z2 down_to_right z3
+ right_to_up z4 up_to_left z1..cycle;
+ labels(1, 2, 3, 4);
+endchar;
+
+% okay
+beginchar(astro_mercury, 9u#+2appr#, cap_height#, 0);
+ "Mercury";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ save a; a = astro.light_stem;
+ ensure_centering_of(a);
+% circle
+ penpos1(astro.vair, 90);
+ penpos2(astro.curve, 180);
+ penpos3(astro.vair, -90);
+ penpos4(astro.curve, 0);
+ y1r = cap_height+oo;
+ y3r = vround astro[0.30cap_height, cap_height-x_height]-oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+% queue
+ tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3)
+ & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle;
+ pickup crisp.nib;
+ bot y5 = -o; bot y6l = bot y7l = vround(0.5[-d, y3r]-0.5a);% a little higher
+ pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90);
+ x5 = x3; x5l-x6 = x7-x5r = hround 0.5(x1-x2l);
+ save t;
+ forsuffixes $ = , r, l:
+ t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2)));
+ endfor
+ filldraw subpath (t.r, t.l) of tmp_path--z5l--z5r--cycle;
+ filldraw stroke z6e..z7e;
+% horns
+ tmp_path := reverse tmp_path;
+ save p; path p.r, p.l;
+ a := astro[rth, stem];
+ pos8(a, 90); pos9(hround 0.5[a, astro.vair], 180);
+ pos10(astro.vair, -90); pos11(hround 0.5[a, astro.vair], 0);
+ lft x9r = appr; x8 = x10 = x1; rt x11r = w-appr;
+ y9 = y11 = 0.5[y8, y10] = y1;
+ top y8 = vround max(1.22cap_height, y1r+a);
+ p.r = z8r left_to_down z9r down_to_right
+ z10r right_to_up z11r up_to_left z8r;
+ p.l = z8l right_to_down z11l down_to_left
+ z10l left_to_up z9l up_to_right z8l;
+ t1 = xpart(p.r intersectiontimes (z8..(x9r, y8)));
+ (t2, t3-4) = p.r intersectiontimes subpath (4, 8) of tmp_path;
+ (t5, t4-4) = p.l intersectiontimes subpath (4, 8) of tmp_path;
+ t6-6 = xpart(subpath (6, 8) of p.l intersectiontimes
+ ((point t1 of p.r)..(x1, y2)));
+ t7 = xpart(p.r intersectiontimes (z8..(x11r, y8)));
+ (t8, t9) = p.r intersectiontimes subpath (0, 4) of tmp_path;
+ (t11, t10) = p.l intersectiontimes subpath (0, 4) of tmp_path;
+ t12 = xpart(subpath (0, 2) of p.l intersectiontimes
+ ((point t7 of p.r)..(x1, y2)));
+ interim turningcheck := 0;% I hate turning numbers
+ filldraw subpath (t1, t2) of p.r
+ --subpath (t3, t4) of tmp_path
+ --subpath (t5, t6) of p.l -- cycle;
+ filldraw subpath (t12, t11) of p.l
+ --subpath (t10, t9) of tmp_path
+ --subpath (t8, t7) of p.r -- cycle;
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
+endchar;
+
+% okay
+beginchar(astro_venus, 9u#+2appr#, cap_height#, 0);
+ "Venus";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ save a, t; a = astro.light_stem;
+ ensure_centering_of(a);
+% circle
+ penpos1(astro.vair, 90);
+ penpos2(astro.curve, 180);
+ penpos3(astro.vair', -90);
+ penpos4(astro.curve, 0);
+ y1r = cap_height+oo;
+ y3r = vround astro[0.30cap_height, cap_height-x_height]-oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1)& cycle;
+% queue
+ tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3)
+ & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle;
+ pickup crisp.nib;
+ bot y5 = -o; bot y6l = bot y7l = vround(0.5[-d, y3r]-0.5a);% a little higher
+ pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90);
+ x5 = x3; x5l-x6 = x7-x5r = hround 0.5(x1-x2l);
+ forsuffixes $ = , r, l:
+ t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2)));
+ endfor
+ filldraw subpath (t.r, t.l) of tmp_path--z5l--z5r--cycle;
+ filldraw stroke z6e..z7e;
+ penlabels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+% absolutely okay
+beginchar(astro_earth, 13u#+2appr#, cap_height#, 0);
+ "Earth";
+ italcorr 0; % italcorr 0.6cap_height#*slant-.5u#;
+ save a; a = astro.light_stem;
+ ensure_centering_of(a);
+ pickup null.nib;
+ autorounded;
+% circle
+ penpos1(astro.vair', 90);
+ penpos2(hround astro[rth, cap_curve-2stem_corr], 180);
+ penpos3(vround astro[rth, vair+1.5vair_corr], -90);
+ penpos4(hround astro[rth, cap_curve-2stem_corr], 0);
+ y1r = h+o; y3r = -o; y2 = y4 = 0.5h;
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52h];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+% cross
+ tmp_path := z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_right z1;
+ penpos5(hround a, 0); penpos6(vround a, 90);
+ x5 = x6 = 0.5w;
+ y5 = y6 = vround(y2-0.5vround a)+0.5vround a;
+ forsuffixes $ = , r, l:
+ z7$ = tmp_path intersectionpoint (z5$..(x5$, y1r));
+ z8$ = tmp_path intersectionpoint (z5$..(x5$, y3r));
+ z9$ = tmp_path intersectionpoint (z6$..(x2r, y6$));
+ z10$ = tmp_path intersectionpoint (z6$..(x4r, y6$));
+ endfor
+ fill z7r..z7..z7l--z8l..z8..z8r--cycle;
+ fill z9r..z9..z9l--z10l..z10..z10r--cycle;
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+endchar;
+
+% almost okay (see arrows dimensions)
+beginchar(astro_mars, 9u#+2appr#, body_height#, 0);
+ "Mars";
+ italcorr 0; % italcorr body_height#*slant-.5u#;
+ save a; a = astro.light_stem;
+ % ensure_centering_of(a);% just for homogeneity
+ % circle
+ penpos1(astro.vair, 90);
+ penpos2(astro.curve, 180);
+ penpos3(astro.vair', -90);
+ penpos4(astro.curve, 0);
+ y1r = vround astro[0.70cap_height, x_height]+oo;
+ y3r = -oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+ % arrow
+ tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3)
+ & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle;
+ z6 = (x1, y2); top y7 = body_height+o; rt x7 = w-appr;
+ arrow_height := vround astro[0.2cap_height, 0.3cap_height];
+ arrow_width := max(4.9rth, rth+3u);
+ save rth; rth = a;
+ arrow_head5(z6..z7, both);
+ z6r-z6 = z5r-z5; z6-z6l = z5-z5l;
+ save t;
+ forsuffixes $ = r, l:
+ t$ = xpart(tmp_path intersectiontimes (z6$..z5$));
+ endfor
+ filldraw if t.l>t.r: subpath (t.r, t.l) of tmp_path
+ else: subpath (t.r, 8) of tmp_path & subpath (0, t.l) of tmp_path fi
+ --z5l--z5r--cycle;
+ penlabels(1, 2, 3, 4, 6, 7);
+endchar;
+
+% humm
+beginchar(astro_jupiter, 10u#+2appr#, asc_height#, desc_depth#);
+ "Jupiter";
+ italcorr 0; % italcorr body_height#*slant-.5u#;
+ pickup crisp.nib;
+ %
+ top y1r = h; bot y2l = -d;
+ rt x1r = w-appr-.5u;
+ lft x2l = appr+3u;
+ adjust_slanted_bar(1r, 2l, 1l, 2r)(astro[rth, cap_stem]-crisp, -1);
+ z1r-z1 = z1-z1l; z2r-z2 = z2-z2l;
+ filldraw stroke z1e..z2e;
+ %
+ top y3r-bot y3l = top y4r-bot y4l = astro.cap_hair;
+ z3r-z3l = whatever*(z1-z2);
+ bot y3l = bot y4l = bot y5l = vround 0.0h;
+ lft x5l = appr-0.5u;
+ adjust_slanted_bar(1l, 5l, 0, 5)(0.5(astro.cap_hair-crisp), -1);
+ z5r-z5 = z5-z5l;
+ top y8 = h-0.5rth; lft x8 = appr;
+ z0' = 0.72[z5, z1l]; z6 = 0.25[z5, z1l];
+ pos6(astro.cap_hair, angle(z1l-z5)-90);
+ pos8(astro.cap_curve, angle(z8-z0')-90);
+ x4l = x5; z4r-z4l = whatever*(z6-z5); z3 = 0.5[z3l, z3r];
+ filldraw stroke z5e---z6e{z0'-z6}...{z8-z0'}z8e;
+ %
+ if serifs:
+ save beak_jut, bracket, cap_jut;
+ cap_jut = hround astro[0, 1.8u];
+ bracket = 0.5cap_jut;
+ serif(1, 2, bracket, cap_jut, astro.slab, true, dish,
+ cap_jut, astro.slab, true, dish);
+ serif(2, 1, bracket, cap_jut, astro.slab, true, dish,
+ cap_jut, astro.slab, true, dish);
+ z3l = whatever[z1r, z2r];
+ beak_jut = (astro.beak+astro.slab)*(x1-x2)/(y1-y2);
+ arm3(astro.beak, beak_jut, astro.slab, beak_darkness, up, w-appr+0.75u);
+ else: x3l = 0.8[x2, x1];
+ fi
+ filldraw stroke z3e..z4e;
+ labels(0, 0'); penlabels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+% humm
+beginchar(astro_saturn, 9.5u#+2appr#, body_height#, 0);
+ "Saturn";
+ italcorr 0; % italcorr body_height#*slant-.5u#;
+ % curve
+ pickup crisp.nib;
+ pos1(astro.cap_hair, 180); pos2(astro.cap_hair, 90);
+ pos3(hround 0.43[astro.cap_hair, astro.cap_stem], 0);
+ pos5(hround 0.44[astro.cap_hair, astro.cap_stem], 0);
+ pos6(astro.cap_hair, 90);
+ pos7(hround 0.44[astro.cap_hair, astro.cap_stem], 180);
+ pos10(astro.cap_stem, 0);
+ lft x10l = appr+hround 1.5u;
+ x10r = x1l;
+ rt x3r = rt x7l = w-appr;
+ x2 = (astro[0.5,0.57])[x1l, x3l];
+ rt x5r+eps = hround astro[x2, x10r+0.5[astro.cap_hair, astro.cap_stem]];
+ x6 = 0.5[x5, x7];
+ %
+ % Construction with tangent circles
+ %
+ save d, k, R; k = (x7-x5)/(x3-x1);
+ k' = (1+k-2sqrt k)/((1-k)**2);
+ bot y6l = -o;
+ top y2r = vround 0.8h+o;
+ R = k'*(y2-y6);
+ y3 = y2-R; bot y1 = bot y10 = vround y3;
+ y5 = y7 = y6+k*R;
+ z4 = (1/(1+k))[(x2, y1), (x6, y5)]; d = R/(x2-x1);
+ pos4(astro.cap_stem, angle((y1-y5)/d, (x6-x2)*d)-90);
+ % stem
+ save rth; rth = astro.cap_stem;
+ arrow_height := vround astro[h-cap_height, 0.2cap_height]+o;
+ arrow_width := rth+hround 2(2.25u)+0.5;
+ arrow_head9(z10..(x10, h+o-pen_top), left);
+ filldraw stroke z9e..z10e;
+ %
+ x7 := x7r+1;
+ tmp_path := z6l right_to_up z7l;
+ t := xpart(tmp_path intersectiontimes (z7..(x7, y6l)));
+ autorounded;
+ filldraw subpath (0, t) of tmp_path
+ --z7--z7r down_to_left z6r--cycle;
+ filldraw stroke z1e up_to_right z2e right_to_down
+ z3e...z4e{((y5-y1)/d, (x2-x6)*d)}
+ ...z5e down_to_right z6e;
+ penlabels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+endchar;
+
+% almost okay (see arrows dimensions)
+beginchar(astro_uranus, 9u#+2appr#, body_height#, 0);
+ "Uranus";
+ italcorr 0; % italcorr body_height#*slant-.5u#;
+ save a;
+ a = astro.light_stem;
+ ensure_centering_of(a);% just for homogeneity
+% circle
+ penpos1(astro.vair, 90);
+ penpos2(hround astro[rth, curve-stem_corr], 180);
+ penpos3(astro.vair', -90);
+ penpos4(hround astro[rth, curve-stem_corr], 0);
+ y1r = vround astro[0.70cap_height, x_height]+oo;
+ y3r = -oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+% dot
+ adjust_dot5((x1, y2), astro[1.6rth, dtsz], true, true);
+ dot(5, 5');
+% arrow
+ tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3)
+ & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle;
+ arrow_height := vround astro[0.2cap_height, 0.3cap_height]+eps;
+ arrow_width := max(4.9rth, rth+3u);
+ save rth; rth = hround a;
+ arrow_head6(z1..(x1, body_height+o-pen_top), both);
+ save t;
+ forsuffixes $ = , r, l:
+ t$ = xpart(tmp_path intersectiontimes (z6$..(x6$, y2)));
+ endfor
+ pickup crisp.nib;
+ filldraw subpath (t.r, 8) of tmp_path
+ & subpath (0, t.l) of tmp_path --z6l--z6r--cycle;
+ penlabels(1, 2, 3, 4, 6, 7);
+endchar;
+
+% almost okay (see arrows dimensions)
+beginchar(astro_neptune, 10.5u#+2Appr#, cap_height#, 0);
+ "Neptune";
+ italcorr 0; % italcorr cap_height#*slant-.5u#;
+ save a;
+ a = hround astro[rth, cap_stem-2stem_corr];
+ ensure_centering_of(a);
+% stems
+ x1-0.5a = hround astro[Appr, appr];
+ x3 = x7 = 0.5w;
+ x1 = x2; x4-x3 = x3-x1;
+ pickup crisp.nib;
+% arrows
+ save rth; rth = a;
+ arrow_height := vround astro[0.125cap_height, 0.25cap_height]+eps;
+ arrow_width := min(3a, x3-x1-0.5u, 2.5u+a);
+ arrow_head0((x1, 0)..(x1, h+o-pen_top), both);
+ arrow_head5((x4, 0)..(x4, h+o-pen_top), both);
+ arrow_head6((x3, 0)..(x3, h+o-pen_top), both);
+% cup and queue
+ pos1(a, 180); pos2(a, 180); pos3(astro.vair, -90); pos4(a, 0); pos7(a, 0);
+ pos8(vround astro.light_stem, 90); pos9(vround astro.light_stem, 90);
+ bot y3r = vround 0.2cap_height;
+ y1 = y0; y2 = y4 = 0.5[y1, y3]; bot y7 = -o;
+ top y8r = top y9r = vround 0.2cap_height-1;
+ x7l-x8 = x9-x7r = hround 0.5(x3-x1-a);
+ filldraw stroke z1e..z2e down_to_right z3e right_to_up z4e..z5e;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ penlabels(1, 2, 3, 4, 7, 8, 9);
+endchar;
+
+% The serifs are not cm compatible
+beginchar(astro_pluto, 7.75u#+Appr#+appr#, cap_height#, 0);
+ "Pluto";
+ italcorr 0; % italcorr 0.75cap_height#*slant-.5u#;
+ pickup crisp.nib;
+ %
+ % stem
+ %
+ pos1(astro.cap_stem, 0);
+ pos2(astro.cap_stem, 0);
+ top y1 = h; bot y2 = 0; lft x1l = lft x2l = Appr;
+ filldraw stroke z1e..z2e;
+ %
+ % curve
+ %
+ penpos3(astro.cap_hair, 90);
+ penpos4(astro.cap_hair, 90);
+ penpos5(astro.cap_curve, 0);
+ penpos6(astro.vair, -90);
+ penpos7(astro.vair, -90);
+ y3r = y4r = h; y5 = 0.5[y4, y6];
+ y6r = y7r = vround astro[0.275h, 0.5h-astro.vair];
+ x3 = x7 = x1; x5r = w-appr; x4 = x6 = 0.4[x3, x5];
+ penstroke z3e..pulled_arc.e(4, 5) & pulled_arc.e(5, 6)..z7e;
+ %
+ % arm or beak, and serifs
+ %
+ pos9(astro.slab, 90); pos10(astro.slab, 90); y9l = y10l = y2; x9 = x2r;
+ if serifs: x10 = 0.5w;
+ save beak_jut, bracket, cap_jut;
+ beak_jut = hround astro[0, 0.75u];
+ cap_jut = hround astro[0, 1.8u];
+ bracket = 0.5cap_jut;
+ arm10(astro.beak, beak_jut, astro.slab, beak_darkness, up, w-appr);
+ serif(1, 2, bracket, cap_jut, astro.slab, true,
+ 0, 0.5cap_jut, astro.slab, true, 0);
+ serif(2, 1, bracket, cap_jut, astro.slab, true,
+ 0, 0.5cap_jut, astro.slab, true, 0);
+ else: rt x10 = w-appr; fi
+ filldraw stroke z9e..z10e;
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
+endchar;
+
+% okay
+beginchar(astro_varearth, 9u#+2appr#, cap_height#, 0);
+ "Variant Earth";
+ italcorr 0; % italcorr x_height#*slant-.5u#;
+ save a;
+ a = astro.light_stem;
+ ensure_centering_of(a);
+ % circle
+ penpos1(astro.vair, 90);
+ penpos2(astro.curve, 180);
+ penpos3(astro.vair', -90);
+ penpos4(astro.curve, 0);
+ y1r = vround astro[0.70cap_height, x_height]+oo;
+ y3r = -oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+ % head
+ tmp_path := pulled_arc.r(1, 2) & pulled_arc.r(2, 3)
+ & pulled_arc.r(3, 4) & pulled_arc.r(4, 1) & cycle;
+ pickup crisp.nib;
+ top y5 = h+o; top y6r = top y7r = vround(0.5[h, y1r]+0.5o+0.5a);
+ pos5(hround a, 0); pos6(vround a, 90); pos7(vround a, 90);
+ x5 = x1; x5l-x6 = x7-x5r = hround 0.5(x1-x2l);
+ save t;
+ forsuffixes $ = , r, l:
+ t$ = xpart(tmp_path intersectiontimes (z5$..(x5$, y2)));
+ endfor
+ filldraw subpath (t.r, 8) of tmp_path
+ & subpath (0, t.l) of tmp_path --z5l--z5r--cycle;
+ filldraw stroke z6e..z7e;
+ penlabels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+beginchar(astro_aries, 13u#+2appr#, cap_height#, 0);
+ "Aries";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ save a, b;
+ a = 10; b = hround astro[1.2rth,astro.cap_stem];
+ ensure_centering_of(b);
+ x1 = x2 = x3 = 0.5w; y3 = 0.5h;
+ if serifs:
+ save bracket, cap_jut;
+ pickup crisp.nib;
+ cap_jut = hround astro[0, 1.8u];
+ bracket = 0.5cap_jut;
+ bot y2=0;
+ pos2(b, 0); pos3(b, 0);
+ serif(2, 3, bracket, cap_jut, astro.slab, true, dish,
+ cap_jut, astro.slab, true, dish);
+ filldraw stroke z2e..z3e;
+ else:
+ pickup tiny.nib;
+ bot y1 = -d-o; y2-y1 = o;
+ pos1(max(0.75b, tiny+eps), 0);
+ pos2(b, 0); pos3(b, 0);
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1);
+ fi
+ pickup tiny.nib;
+ pos3a(astro.light_stem, 0); pos4a(vround astro.light_stem, 90);
+ pos5a(astro.curve, 180); pos6a(astro.cap_hair, 270-a);
+ pos3b(astro.light_stem, 180); pos4b(vround astro.light_stem, 90);
+ pos5b(astro.curve, 0); pos6b(astro.cap_hair, -90+a);
+ y3 = y3a = y3b;
+ top y4a.r = top y4b.r = h+o;
+ y5a = y5b = 0.6[y6a, y4a];
+ bot y6a.r = bot y6b.r = vround 0.5h;
+ lft x3a.l = 0.5(w-b); rt x3b.l = 0.5(w+b);
+ x4a = 0.6[x3a, x5a]; x4b = 0.6[x3b, x5b];
+ lft x5a.r = appr; rt x5b.r = w-appr;
+ x6a.r = good.x 0.5[x5a.r, x3a.l];
+ x3a.l-x6a.r = x6b.r-x3b.l;
+ filldraw stroke z3a.e up_to_left z4a.e
+ & pulled_arc.e(4a, 5a)...z6a.e{dir -a};
+ filldraw stroke z3b.e up_to_right z4b.e
+ & pulled_arc.e(4b, 5b)...z6b.e{dir(180+a)};
+ penlabels(1, 2, 3, 3a, 4a, 5a, 6a, 3b, 4b, 5b, 6b);
+endchar;
+
+% okay
+beginchar(astro_taurus, 9u#+2appr#, cap_height#, 0);
+ "Taurus";
+ italcorr 0; % italcorr x_height#*slant-.5u#;
+% circle
+ penpos1(astro.vair, 90);
+ penpos2(astro.curve, 180);
+ penpos3(astro.vair', -90);
+ penpos4(astro.curve, 0);
+ y1r = vround astro[0.70cap_height, x_height]+oo;
+ y3r = -oo;
+ y2 = y4 = 0.5[y1, y3];
+ x2r = appr; x4r = w-appr; x1 = x3 = 0.5[x2, x4];
+ y2l := y4l := astro[y2, 0.52[y3, y1]];
+ penstroke pulled_arc.e(1, 2) & pulled_arc.e(2, 3)
+ & pulled_arc.e(3, 4) & pulled_arc.e(4, 1) & cycle;
+% head
+ pickup crisp.nib;
+ pos5(astro.hair, 180);
+ pos6(vround astro.light_stem, -90);
+ pos7(astro.hair, 0);
+ top y5 = top y7 = h+o; bot y6r = y1l;
+ lft x5r = appr; rt x7r = w-appr; x6 = x1;
+ filldraw stroke z5e down_to_right z6e right_to_up z7e;
+ penlabels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+beginchar(astro_gemini, 11u#+2appr#, cap_height#, 0);
+ "Gemini";
+ italcorr 0; % italcorr asc_height#*slant-.5u#;
+ pickup crisp.nib;
+ save c, bracket;
+ bracket = 0.5hround astro[0, 1.8u];
+ c = hround 0.25(w-2appr-2astro.stem);
+ % stems
+ pos1(astro.stem, 0); pos2(astro.stem, 0);
+ pos3(astro.stem, 0); pos4(astro.stem, 0);
+ top y1 = top y3 = h; bot y2 = bot y4 = 0;
+ lft x1l = lft x2l = appr+c; rt x3r = rt x4r = w-appr-c;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ % serifs
+ if serifs:
+ serif(1, 2, bracket, c, astro.slab, true, dish, 0.0c, astro.slab, true, 0);
+ serif(2, 1, bracket, c, astro.slab, true, dish, 0.0c, astro.slab, true, 0);
+ serif(3, 4, bracket, 0.0c, astro.slab, true, 0, c, astro.slab, true, dish);
+ serif(4, 3, bracket, 0.0c, astro.slab, true, 0, c, astro.slab, true, dish);
+ filldraw z1e--z1f--z3c--z3d--cycle;
+ filldraw z2e--z2f--z4c--z4d--cycle;
+ else:
+ pos5(astro.slab, 90); pos6(astro.slab, 90);
+ pos7(astro.slab, 90); pos8(astro.slab, 90);
+ lft x5r = lft x7l = appr; rt x6r = rt x8l = w-appr;
+ y5r = y6r = y1; y7l = y8l = y2;
+ filldraw stroke z5e..z6e;
+ filldraw stroke z7e..z8e;
+ penlabels(5, 6, 7, 8);
+ fi
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_cancer, 13u#+2appr#, cap_height#, 0);
+ "Cancer";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_leo, 13u#+2appr#, cap_height#, 0);
+ "Leo";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ pickup crisp.nib;
+ pos1(astro.cap_hair,0);
+ pos2(astro.vair,90);
+ pos3(astro.cap_hair,180);
+ pos4(astro.vair,-90);
+ pos5(astro.cap_hair,180);
+ pos6(astro.cap_curve,180);
+ pos7(astro.vair,90);
+ pos8(astro.cap_curve,0);
+ pos9(astro.cap_hair,0);
+ pos10(astro.vair,90);
+ pos11(astro.cap_hair,180);
+ bot y4r=bot y10.l=-o; top y7r=h+o;top y2r=vround 0.3h+o;
+ y1=y3=y5=y9=0.5[y2, y4]; y6=y8=0.6[y1,y7]; y11=good.y y9;
+ lft x3r=appr; rt x11l=w-appr;
+ lft x6r=w-rt x8r=appr+hround(2.5u-0.5astro.cap_curve);
+ rt x1r-lft x3r=rt x11l-lft x9l=hround 5u;
+ x5=x1; x2=x4=0.5[x1,x3]; x10=0.5[x9,x11];
+ x7=0.5[x6, x8];
+ filldraw stroke z1e up_to_left z2e left_to_down z3e down_to_right z4e
+ right_to_up z1e;
+ filldraw stroke z5e{up}...pulled_arc.e(6,7)&pulled_arc.e(7,8)...z9e
+ down_to_right z10e right_to_up z11e;
+ penlabels(1,2,3,4,5,6,7,8,9,10,11);
+endchar;
+
+beginchar(astro_virgo, 13u#+2appr#, cap_height#, 0);
+ "Virgo";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_libra, 13u#+2appr#, cap_height#, 0);
+ "Libra";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ pickup crisp.nib;
+ save a, b;
+ % horizontal stems
+ top y1r-bot y1l = astro.slab;
+ y1=0.5[y1r, y1l]; x1 = x1l= x1r;
+ forsuffixes $ = 2, 3, 4, 5, 6:
+ y$r-y$l = y1r-y1l; y$ = 0.5[y$r, y$l]; x$ = x$l = x$r;
+ endfor
+ bot y1l = 0; y1 = y2;
+ y3-y1= vround astro[0.375x_height, 0.2x_height]; y3 = y4 = y5 = y6;
+ rt x4= hround(0.5w-astro[1.5u, 1u]); x5 = w-x4; lft x1= appr; rt x2=w-appr;
+ % ellipses $(x-x_0)^2/a^2+(y-y_0)^2/b^2=1$
+ pos8(astro.curve, 180); pos9(astro.vair, 90); pos10(astro.curve, 0);
+ top y9r=h+o; lft x8r=w-rt x10r=appr+hround(2u-0.5astro.curve);
+ x0 = x9 = 0.5w; y7l = y7r = y11l = y11r = y4r; x7l = x4r; x11l = x5r;
+ % inner ellipse
+ a = x10l-x0;
+ b*(1+-+((x11l-x0)/a)) = (-b+y9l-y7l);
+ y0 = y8 = y10 = y9l-b;
+ z7'l=unitvector((y7l-y0)/b/b, -(x7l-x0)/a/a);
+ z11'l=unitvector((y11l-y0)/b/b, -(x11l-x0)/a/a);
+ % outer ellipse
+ a := x10r-x0;
+ b := y9r-y0;
+ x0-x7r = x11r-x0 = a*(1+-+((y11r-y0)/b));
+ z7'r=unitvector((y7r-y0)/b/b, -(x7r-x0)/a/a);
+ z11'r=unitvector((y11r-y0)/b/b, -(x11r-x0)/a/a);
+ % draw things
+ if serifs: x3=x7r; x6=x11r;
+ arm3(astro.beak, -astro[0, 0.75u], -astro.slab,
+ beak_darkness, up, appr-0.75u);
+ arm6(astro.beak, astro[0, 0.75u], astro.slab,
+ beak_darkness, up, w-appr+0.75u);
+ else: x3=x1; x6=x2;
+ fi
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e;
+ filldraw stroke z7e{z7'e}...pulled_arc.e(8, 9)
+ & pulled_arc.e(9, 10)...z11e{z11'e};
+ penlabels(0, 1, 2, 3, 4,5,6,7,8,9,10,11);
+endchar;
+
+%iff false:
+beginchar(astro_scorpio,15u#+2appr#,cap_height#,0.5desc_depth#);
+ "Scorpio";
+% italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#;
+% adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#);
+% numeric shaved_stem; shaved_stem=hround(mfudged.stem-2stem_corr);
+ pickup crisp.nib;
+ pos1(astro.cap_stem,0); pos2(astro.cap_stem,0);
+ pos3(astro.cap_stem,0); pos4(astro.cap_stem,0);
+ pos5(astro.cap_stem,0); pos6(astro.cap_stem,0);
+ pos6'(astro.cap_stem,180); pos7(astro.vair,-90);
+ lft x1l=appr+hround(1.5u-.5astro.cap_stem);
+ x5-x3=x3-x1=hround 5u; x1=x2; x3=x4; x5=x6;
+ bot y2=0; y2=y4; y6=0.25x_height; y1=y3=y5=0.7h;
+ for $ = 3, 5:
+ pos[$]a(astro.cap_hair, 180); top y[$]b.r-bot y[$]b.l=astro.vair;
+ rt x[$]a.l=x[$-2]r; y[$]a=astro[0.7h,0.55h]; top y[$]b.r=h+o;
+ x[$]b.r=astro[0.5[x[$]a, x[$]], 0.5[rt x[$]a.l, rt x[$]r]];
+ z[$]b.l= whatever[z[$]a.l, z[$]b.r];
+ x[$]b = x[$]b.r; y[$]b=0.5[y[$]b.l, y[$]b.r];
+ filldraw stroke z[$]a.e{up}...z[$]b.e{right}
+ & pulled_arc.e([$]b, [$])..z[$+1]e;
+ endfor
+ lft x1a=appr-hround u; top y1a.r=h+o; pos1a(astro.vair,90);
+ filldraw stroke pulled_arc.e(1a, 1)..z2e;
+ z6=z6'; bot y7r=-d; x7=0.5[x6,w];
+ save rth; rth = astro.hair;
+ arrow_height := vround astro[0.125cap_height, 0.25cap_height]+eps;
+ arrow_width := 3.5u;
+ arrow_head8(z7{right}...(w,0.25x_height){up}, both);
+ filldraw stroke pulled_arc.e(6',7)...{z8a-z8}z8e;
+ if serifs:
+ save beak_jut, bracket, cap_jut;
+ cap_jut = hround astro[0, 1.8u];
+ bracket = 0.5cap_jut;
+ serif(2, 1, bracket, cap_jut, astro.slab, true, dish,
+ cap_jut-0.5u, astro.slab, true, dish);
+ serif(4, 3, bracket, cap_jut-0.5u, astro.slab, true, dish,
+ cap_jut-0.5u, astro.slab, true, dish);
+ fi
+ penlabels(1,1a,2,3,3a,3b,4,5,5a,5b,6,7);
+endchar;
+
+beginchar(astro_sagittarius, 13u#+2appr#, cap_height#, 0);
+ "Sagittarius";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ save a, rth; a= angle(w-2appr,h+2o); rth=astro.light_stem;
+ pickup crisp.nib; lft x1l=appr; bot y1r=-o;
+ pos1(astro.light_stem, a-90);
+ arrow_height := vround astro[0.2cap_height, 0.3cap_height]+eps;
+ arrow_width := max(4.9rth, rth+3u);
+ arrow_head2((appr,-o)..(w-appr, h+o), both);
+ pos3(astro.light_stem,a); pos4(astro.light_stem,a);
+ z3-z2c.l=whatever*(z2-z1); z0=1/3[z1,z2]; z3-z0=whatever*dir(a+90);
+ z3-z0=z0-z4;
+% autorounded;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_capricorn, 13u#+2appr#, cap_height#, 0);
+ "Capricorn";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_aquarius, 13u#+2appr#, cap_height#, 0);
+ "Aquarius";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar(astro_pisces, 13u#+2appr#, cap_height#, 0);
+ "Pisces";
+ italcorr 0; % italcorr 0.7x_height#*slant-.5u#;
+ pickup crisp.nib;
+ pos1(astro.vair, 90); pos2(astro.curve,0); pos3(astro.vair, -90);
+ pos4(astro.vair, 90); pos5(astro.curve,180); pos6(astro.vair, -90);
+ pos7(vround astro.light_stem,90); pos8(vround astro.light_stem,90);
+ top y1r=top y4r=h+o; bot y3r=bot y6r=-o;
+ top y7r=top y8r=vround(0.5h+0.5astro.light_stem); y2=y5=y7;
+ lft x3=lft x1=appr; rt x4=rt x6=w-appr;
+ lft x2l=w-rt x5l=appr+hround(4u-.5astro.curve);
+ lft x7=w-rt x8=appr+hround u;
+ filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3);
+ filldraw stroke pulled_arc.e(4,5)&pulled_arc.e(5,6);
+ filldraw stroke z7e..z8e;
+ penlabels(1, 2, 3, 4,5,6,7,8);
+endchar;
+
+% The next symbol is intended to figure ``cemetery''
+% in the theory of Markov processes.
+% Usualy, this concept is represented by a partial derivative
+% symbol or a Greek lowercase delta. It seems that
+% no specific symbol has been designed before.
+
+use_rule1;
+beginchar(cemetery, 10u#+2appr#, cap_height#, 0);
+ "Cemetery symbol";
+ pickup rule.nib;
+ ensure_centering_of(rth);
+ x1 = x2 = 0.5w;
+ lft x5 = appr; rt x8 = w-appr; bot y5 = bot y8 = 0;
+ y1 = h; x3 = w-x4 = appr+hround 1.5u;
+ y2 = good.y 0.2[y5, y1]; y3 = y4 = good.y 2/3[top y2, y1];
+ z6 = 0.5[z5, z2]; z7 = 0.5[z8, z2];
+ tmp_path := z5{right}...z6{0.5(x2-x6), y2-y6}...z2{right}
+ ...z7{0.5(x7-x2), y7-y2}...z8{right};
+ draw tmp_path;
+ penpos1(rth, 0); penpos2(rth, 0);
+ penpos3(rth, 90); penpos4(rth, 90);
+ penstroke z1e..z2e; penstroke z3e..z4e;
+ save a, b, c, number_of_slashes; a = max(h, w);
+ pickup crisp.nib;
+ x5' = good.x appr; x8' = good.x w-appr; y5 = y5'; y8 = y8';
+ pos5(rth, 90); pos5'(rth, 90); pos8(rth, 90); pos8'(rth, 90);
+ filldraw stroke z5e..z5'e; filldraw stroke z8e..z8'e;
+ pickup fine.nib;
+ number_of_slashes = 6; c = hround((x8-x5)/(number_of_slashes+1));
+ number_of_slashes := round((x8-x5)/max(c, 1))-1;
+ for i = 1 upto number_of_slashes:
+ bot y[i+8]l = 0; x[i+8]l = x5+i*c;
+ z[i+8]r = tmp_path intersectionpoint (z[i+8]l..z[i+8]l+(a, a));
+ draw z[i+8]l..z[i+8]r; penlabels([i+8]);
+ endfor;
+ penlabels(1, 2, 3, 4, 5, 8, 5', 8'); labels(6, 7);
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf
new file mode 100644
index 00000000000..7e88651e7f2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: matha10.mf (math serie A at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="matha"; font_size 10pt#;
+font_coding_scheme "matha";
+
+input mathprmt;
+input mathastrotestdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf
new file mode 100644
index 00000000000..1df430d3d4a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf
@@ -0,0 +1,67 @@
+% mathematical symbols by Anthony Phan.
+% file: mathastrotestdrv.mf (test file for astonomical/logical symbols)
+% last modification: May 16, 2005.
+
+mode_setup;
+math_setup;
+
+% ASTRONOMICAL SYMBOLS
+
+% mathastr.mf
+
+astro_sun :=hex"00";
+astro_mercury :=hex"01";
+astro_venus :=hex"02";
+astro_earth :=hex"03";
+astro_mars :=hex"04";
+astro_jupiter :=hex"05";
+astro_saturn :=hex"06";
+astro_uranus :=hex"07";
+astro_neptune :=hex"08";
+astro_pluto :=hex"09";
+astro_varearth :=hex"0A";
+astro_left_moon :=hex"0B";
+astro_right_moon:=hex"0C";
+astro_full_moon :=hex"0D";
+astro_new_moon :=hex"0E";
+%cemetery :=hex"0F";
+%ligtable cemetery:cemetery kern-2(u#+letter_fit#);
+
+astro_aries :=hex"10";
+astro_taurus :=hex"11";
+astro_gemini :=hex"12";
+astro_cancer := hex"13";
+astro_leo := hex"14";
+astro_virgo := hex"15";
+astro_libra := hex"16";
+astro_scorpio := hex"17";
+astro_sagittarius := hex"18";
+astro_capricornus := hex"19";
+astro_aquarius := hex"1A";
+astro_pisces := hex"1B";
+
+extra_endchar := "";
+standard_proofing;
+
+extra_endchar := extra_endchar & "; charcode := charcode+code_offset;";
+
+astro:=0/7; code_offset:=0*32; input mathastr;
+astro:=1/7; code_offset:=1*32; input mathastr;
+astro:=2/7; code_offset:=2*32; input mathastr;
+astro:=3/7; code_offset:=3*32; input mathastr;
+astro:=4/7; code_offset:=4*32; input mathastr;
+astro:=5/7; code_offset:=5*32; input mathastr;
+astro:=6/7; code_offset:=6*32; input mathastr;
+astro:=7/7; code_offset:=7*32; input mathastr;
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+%font_normal_stretch=3u#;
+%font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+font_extra_space=2u#;
+font_normal_space=6u#+2letter_fit#;
+
+end.
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf
new file mode 100644
index 00000000000..e78f764498e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf
@@ -0,0 +1,421 @@
+% mathematical symbols by Anthony Phan.
+% file: mathsymb.mf (various mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height,
+enddef;
+
+use_rule1;
+make_sim_picture;
+
+% standard
+% beginchar(hex"20",6u#+2letter_fit#,0,0);
+% "Normal space";
+% endchar;
+
+%
+% Usual binary operators.
+%
+
+currentlocation_:=hex"00";
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Plus sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Minus sign";
+ pickup tiny.nib; pos1(rth,90); pos2(rth,90);
+ y1=y2=math_axis; lft x1=Appr; rt x2=w-Appr;
+ filldraw stroke z1e..z2e; penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Times sign";
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis;
+ z1-z0=z0-z2=(z0'-z0) rotated 45; z3-z0=z0-z4=(z0'-z0) rotated -45;
+ pos1(rth+2eps,-45); pos2(rth+2eps,-45);
+ pos3(rth+2eps,45); pos4(rth+2eps,45);
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z3e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Division sign";
+ pickup tiny.nib;
+ lft x1=Appr; rt x2=w-Appr;
+ y2=y1=math_axis; pos1(rth,90); pos2(rth,90);
+ filldraw stroke z1e..z2e;
+ pickup null.nib;
+ adjust_dot3((0.5[x1,x2],y1+math_spread[0.5x_height,0.6x_height]),
+ dtsz,true,false); dot(3,3');
+ adjust_dot4((0.5[x1,x2],y1-math_spread[0.5x_height,0.6x_height]),
+ dtsz,true,false); dot(4,4');
+ penlabels(1,2);
+endchar;
+
+beginchar(currentlocation,3u#+2appr#,v_center(7u#));
+ "Centered dot";
+ pickup null.nib;
+ adjust_dot1((0.5w,math_axis),dtsz,false,false);
+ dot(1,1');
+endchar;
+
+% known as \circ
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small circle";
+ pickup rule.nib0;
+ adjust_dot1((0.5w,math_axis),max(7u,dtsz+rth0),false,false);
+ full_dot:=false; dot(1,1');
+endchar;
+
+beginchar(currentlocation,ast_size#+2appr#,v_center(ast_size#));
+ "Small asterisk";
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_curve,dag_stem;
+ dag_curve=ast_curve; dag_stem=ast_stem;
+ b=1.8ast_stem; c=1.4ast_stem;
+ %
+ x0=hround(0.5w-0.5dag_curve)+0.5dag_curve;
+ y0=0.5[-d,h];
+ for $=1 upto 6: z[$]=b*dir($*60+30)+z0;
+ z[$]'=c*dir($*60+60)+z0; endfor
+ filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps,
+ dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle;
+endchar;
+
+beginchar(currentlocation,ast_size#+2appr#,v_center(ast_size#));
+ "Small co-asterisk";
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_curve,dag_stem;
+ dag_curve=ast_curve; dag_stem=ast_stem;
+ b=1.8ast_stem; c=1.4ast_stem;
+ %
+ x0=hround(0.5w-0.5dag_curve)+0.5dag_curve;
+ y0=0.5[-d,h];
+ for $=1 upto 6: z[$]=b*dir($*60-60)+z0;
+ z[$]'=c*dir($*60-30)+z0; endfor
+ filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps,
+ dag_curve,dag_stem,dir($*60-60))...z[$]'...endfor cycle;
+ labels(0,1',2',3',4',5',6');
+endchar;
+
+% beginchar(currentlocation,arithmetic_bounds);
+% "Truc sign";
+% pickup tiny.nib;
+% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+% top y1=top y3r=top y4r=h; bot y2=-d;
+% lft x1l=hround 0.5(w-rth); x2=x1;
+% lft x3=Appr; x1-x3=x4-x1; filldraw stroke z1e..z2e;
+% filldraw stroke z3e..z4e; penlabels(1,2,3,4);
+% endchar;
+
+% beginchar(currentlocation,arithmetic_bounds);
+% "curT sign";
+% pickup tiny.nib;
+% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+% bot y1=bot y3l=bot y4l=-d; top y2=h;
+% lft x1l=hround 0.5(w-rth); x2=x1;
+% lft x3=appr; x1-x3=x4-x1; filldraw stroke z2e..z1e;
+% filldraw stroke z3e..z4e; penlabels(1,2,3,4);
+% endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Plus-minus sign";
+ numeric a; a=min(vround(rth+0.3u),0.5spread1);
+ pickup tiny.nib; pos1(rth,0); pos2(rth,0);
+ pos3(rth,90); pos4(rth,90); pos5(rth,90); pos6(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1; lft x3=Appr;
+ x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis+0.5spread1;
+ top y5r=top y6r=bot y2-a; x5=x3; x6=x4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Minus-plus sign";
+ numeric a; a=min(vround(rth+0.3u),0.5spread1);
+ pickup tiny.nib; pos1(rth,0); pos2(rth,0);
+ pos3(rth,90); pos4(rth,90); pos5(rth,90); pos6(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1; lft x3=Appr;
+ x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis-0.5spread1;
+ bot y5l=bot y6l=top y1+a; x5=x3; x6=x4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Left times sign";
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis;
+ z1-z0=(z0'-z0) rotated 45; z3-z0=(z0'-z0) rotated -45;
+ pos1(rth+2eps,-45); pos2(rth+2eps,-45);
+ pos3(rth+2eps,45); pos4(rth+2eps,45);
+ lft x2l=lft x4l=hround(2x0-rt x1r);
+ z2=whatever[z0,z1]; z4=whatever[z0,z3];
+ rt x2'-lft x2l=rt x4'-lft x4l=rth;
+ z2'=whatever[z1l,z2l]; z4'=whatever[z3l,z4l];
+ filldraw z1l--z2'--z4'--z3l--z3r--z4r
+ --z4l--z2l--z2r--z1r--cycle;
+ penlabels(1,2,3,4); labels(2',4');
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Right times sign";
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; lft x0'=Appr; y0=y0'=math_axis;
+ z1-z0=(z0'-z0) rotated 45; z3-z0=(z0'-z0) rotated -45;
+ pos1(rth+2eps,-45); pos2(rth+2eps,-45);
+ pos3(rth+2eps,45); pos4(rth+2eps,45);
+ rt x2l=rt x4l=hround(2x0-lft x1r);
+ z2=whatever[z0,z1]; z4=whatever[z0,z3];
+ lft x2'-rt x2r=lft x4'-rt x4r=-rth;
+ z2'=whatever[z1r,z2r]; z4'=whatever[z3r,z4r];
+ filldraw z1r--z2'--z4'--z3r--z3l--z4l
+ --z4r--z2r--z2l--z1l--cycle;
+ penlabels(1,2,3,4); labels(2',4');
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small diamond";
+ pickup tiny.nib;
+ a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0);
+ y2r=y4r=good.y math_axis; x1r=x3r=good.x 0.5w;
+ y1r-y2r=y2r-y3r=vround(0.5a*sqrt(2)-tiny)+eps;
+ x2r-x1r=x1r-x4r=hround(0.5a*sqrt(2)-tiny)+eps;
+ z1l-z1r=z3r-z3l=(rth0-tiny)/sind(45)
+ *(unitvector(z4r-z1r)+unitvector(z2r-z1r));
+ z2l-z2r=z4r-z4l=(rth0-tiny)/sind(45)
+ *(unitvector(z3r-z2r)+unitvector(z1r-z2r));
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ penlabels(1,2,3,4);
+endchar;
+
+% known as \bullet
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small full circle";
+ pickup nullpen;
+ adjust_dot1((0.5w,math_axis),max(7u-rth0,dtsz),false,false);
+ dot(1,1');
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small five star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),5,3.5u+o,0.2,90,false);
+ labels(a);
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small six star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),6,3.5u+o,0.4,90,false);
+ labels(a);
+endchar;
+
+% currentlocation_:=hex"10";
+
+beginchar(currentlocation,12u#+2appr#,v_center(spread1#+rth#));
+ "Equality sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#));
+ "Identity sign";
+ pickup tiny.nib; for i=1 upto 6: pos[i](rth,90); endfor
+ lft x1=appr; x1=x3=x5; rt x2=w-appr; x2=x4=x6;
+ y1=y2; y3=y4; y5=y6; y3=math_axis; y1-y3=y3-y5=spread1;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % middle bar
+ filldraw stroke z5e..z6e; % lower bar
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(spread1#+rth#));
+ "Similarity sign";
+ currentpicture:=sim_picture;
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+2rth#));
+ "Similarity-similarity sign";
+ currentpicture:=(sim_picture shifted(0,0.5(spread1+rth)))
+ +(sim_picture shifted(0,-0.5(spread1+rth)));
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#));
+ "Similarity-bar sign";
+ currentpicture:=sim_picture shifted(0,vround 0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(3spread1#+rth#));
+ "Similarity-equal sign";
+ currentpicture:=sim_picture shifted(0,spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y3=y4=math_axis-1.5spread1; y1-y3=y2-y4=spread1;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,v_center(2spread1#+rth#));
+ "Smile-frown sign";
+ pickup tiny.nib;
+ pos2(rth,90); pos5(rth,90);
+ 0.5[y2,y5]=math_axis; y2-y5=spread1;
+ y1l=y3l=y2l+0.5spread1; y4r=y6r=y5r-0.5spread1;
+ lft x1l=lft x4r=appr; rt x3l=rt x6r=w-appr; x2=x5=0.5[x1l,x3l];
+ z1'-z1l=(z2l-z1l) xscaled 1/2; z4'-z4r=(z5r-z4r) xscaled 1/2;
+ z3'-z3l=(z2l-z3l) xscaled 1/2; z6'-z6r=(z5r-z6r) xscaled 1/2;
+ pos1(rth,angle(z1'-z1l)+90); pos4(rth,angle(z4'-z4r)+90);
+ pos3(rth,angle(z3'-z3l)-90); pos6(rth,angle(z6'-z6r)-90);
+ filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'};
+ filldraw stroke z4e{z4'-z4r}...z5e{right}...z6e{z6r-z6'};
+ penlabels(1,2,3,4,5,6); labels(1',3',4',6');
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,asc_height#,asc_depth#);
+ "Divide sign";
+ pickup tiny.nib; pos1(rth0,0); pos2(rth0,0);
+ rt x1r=rt x2r=hround(0.5w+0.5rth0);
+ top y1=h; bot y2=-d; filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+% currentlocation_:=hex"18";
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Not equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ lft x6l=w-rt x5r=Appr+hround 1.75u;
+ top y5r=h+eps; 0.5[bot y6l,top y5r]=math_axis;
+ adjust_slanted_bar(6l,5r,6r,5l)(rth-tiny.breadth,-1);
+ filldraw stroke z5e..z6e;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,asc_height#,asc_depth#);
+ "not identity sign";
+ pickup tiny.nib; for i=1 upto 6: pos[i](rth,90); endfor
+ lft x1=appr; x1=x3=x5; rt x2=w-appr; x2=x4=x6;
+ y1=y2; y3=y4; y5=y6; y3=math_axis; y1-y3=y3-y5=spread1;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % middle bar
+ filldraw stroke z5e..z6e; % lower bar
+ lft x8l=w-rt x7r=appr+hround 1.75u;
+ top y7r=h+eps; 0.5[bot y8l,top y7r]=math_axis;
+ adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny.breadth,-1);
+ filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Not similarity sign";
+ currentpicture:=sim_picture;
+ pickup tiny.nib;
+ lft x2l-Appr=w-Appr-rt x1r=hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny.breadth,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Not similarity-similarity sign";
+ currentpicture:=(sim_picture shifted(0,0.5(spread1+rth)))
+ +(sim_picture shifted(0,-0.5(spread1+rth)));
+ pickup tiny.nib;
+ lft x2l-Appr=w-Appr-rt x1r=hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny.breadth,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Not similarity-bar sign";
+ currentpicture:=sim_picture shifted(0,vround 0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1;
+ filldraw stroke z1e..z2e;
+ lft x4l-Appr=w-Appr-rt x3r=hround 1.75u;
+ top y3r=h+eps; 0.5[bot y4l,top y3r]=math_axis;
+ adjust_slanted_bar(4l,3r,4r,3l)(rth-tiny.breadth,-1);
+ filldraw stroke z3e..z4e; penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,12u#+2appr#,asc_height#,asc_depth#);
+ "Not similarity-equal sign";
+ currentpicture:=sim_picture shifted(0,spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y3=y4=math_axis-1.5spread1; y1-y3=y2-y4=spread1;
+ lft x6l-appr=w-appr-rt x5r=hround 1.75u;
+ top y5r=h+eps; 0.5[bot y6l,top y5r]=math_axis;
+ adjust_slanted_bar(6l,5r,6r,5l)(rth-tiny.breadth,-1);
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z6e..z5e; penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Not smile-frown sign";
+ pickup tiny.nib;
+ pos2(rth,90); pos5(rth,90);
+ 0.5[y2,y5]=math_axis; y2-y5=spread1;
+ y1l=y3l=y2l+0.5spread1; y4r=y6r=y5r-0.5spread1;
+ lft x1l=lft x4r=appr; rt x3l=rt x6r=w-appr; x2=x5=0.5[x1l,x3l];
+ z1'-z1l=(z2l-z1l) xscaled 1/2; z4'-z4r=(z5r-z4r) xscaled 1/2;
+ z3'-z3l=(z2l-z3l) xscaled 1/2; z6'-z6r=(z5r-z6r) xscaled 1/2;
+ pos1(rth,angle(z1'-z1l)+90); pos4(rth,angle(z4'-z4r)+90);
+ pos3(rth,angle(z3'-z3l)-90); pos6(rth,angle(z6'-z6r)-90);
+ filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'};
+ filldraw stroke z4e{z4'-z4r}...z5e{right}...z6e{z6r-z6'};
+ lft x8l=w-rt x7r=Appr+hround 1.75u;
+ top y7r=h+eps; 0.5[bot y8l,top y7r]=math_axis;
+ adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny.breadth,-1);
+ filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); labels(1',3',4',6');
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,asc_height#,asc_depth#);
+ "Not divide";
+ pickup tiny.nib; pos1(rth0,0); pos2(rth0,0);
+ rt x1r=rt x2r=hround(0.5w+0.5rth0);
+ top y1=h; bot y2=-d;
+ lft x3l=appr-eps; x1l-x3l=x4r-x1r; x3l=x3r; x4l=x4r;
+ h-top y4r=bot y3l+d=hround 0.15(h+d)-eps;
+ a:=rth0-tiny; b:=abs(z4r-z3l);
+ y3r-y3l=y4r-y4l=a/(((x4r-x3l)/b)*((b+-+a)/b)+((y4r-y3l)/b)*(a/b));
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar; \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf
new file mode 100644
index 00000000000..09b84c5fdf1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb10.mf (math serie B at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 10pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf
new file mode 100644
index 00000000000..5b76c09a478
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb12.mf (math serie B at 12 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 10pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf
new file mode 100644
index 00000000000..71edb0f1675
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb5.mf (math serie B at 5 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 5pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf
new file mode 100644
index 00000000000..d9e7eb041eb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb6.mf (math serie B at 6 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 6pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf
new file mode 100644
index 00000000000..3267f29cbbb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb7.mf (math serie B at 7 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 7pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf
new file mode 100644
index 00000000000..95fe675b7c3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb8.mf (math serie B at 8 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 8pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf
new file mode 100644
index 00000000000..0994cff7734
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathb9.mf (math serie B at 9 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathb"; font_size 9pt#;
+font_coding_scheme "mathb";
+
+input mathprmt;
+input mathbdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf
new file mode 100644
index 00000000000..03619996ddc
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf
@@ -0,0 +1,664 @@
+% mathematical symbols by Anthony Phan.
+% file: mathbase.mf (base file)
+% last modification: May 16, 2005.
+
+mathbase := 1; % when |mathbase| is known, this file has been input
+
+newinternal slant, currentbreadth, math_spread, superness, stress;
+slant := 0; superness := 1/sqrt 2; stress := 0.5;
+
+string main_name_string, tmp_string,
+extra_beginchar_save, extra_endchar_save;
+
+picture tmp_picture;
+path tmp_path, tmpp_path;
+
+boolean true_size, tmp_boolean, dagesh;
+true_size := false;% see mathhbrw.mf
+
+pair both; both = (1, 1);
+
+def autorounded = interim autorounding := 2 enddef;
+
+def localtransform = save currenttransform;
+ transform currenttransform; currenttransform
+enddef;
+
+numeric currentlocation_;
+
+vardef currentlocation =
+ currentlocation_ := currentlocation_+1;
+ currentlocation_-1
+enddef;
+
+def main_name_with(suffix $) =
+ scantokens(main_name_string & str$)
+enddef;
+
+def math_setup =
+ autorounding := 0; smoothing := 0;
+ appr# := u#+letter_fit#; Appr# := 1.5u#+letter_fit#;
+ numeric paren_depth#, asc_depth#, body_depth#;
+ 0.5[body_height#, -paren_depth#] = math_axis#;
+ 0.5[asc_height#, -asc_depth#] = math_axis#;
+ body_depth# := desc_depth#+body_height#-asc_height#;
+ %
+ define_pixels(u, dh, dish, stem_corr, vair_corr);
+ define_whole_blacker_pixels(hair, stem, curve,
+ cap_hair, cap_stem, cap_curve, dtsz, ast_curve, ast_stem);
+ define_whole_vertical_blacker_pixels(vair, slab);% cap_bar...
+ define_whole_vertical_pixels(body_height, asc_height,
+ cap_height, fig_height, x_height, desc_depth,
+ asc_depth, body_depth, paren_depth);
+ define_whole_pixels(letter_fit, appr, Appr,
+ crisp, tiny, fine, ast_size);
+ define_corrected_pixels(o);
+ define_horizontal_corrected_pixels(ho);
+ lowres_fix(stem, curve) 1.2;
+ lowres_fix(cap_stem, cap_curve) 1.2;
+ lowres_fix(hair, cap_hair) 1.2;
+ oo := vround(0.5o#*hppp*o_correction)+eps;
+ dw := (curve#-stem#)*hppp; bold := curve#*hppp+blacker;
+ vair' := vround(vair+vair_corr);
+ %
+ % usual pens.
+ %
+ clear_pen_memory;
+ if fine = 0: fine := 1; fi
+ null := 0;
+ forsuffixes $ = null, crisp, tiny, fine:
+ $.breadth := $;
+ pickup if $ = 0: nullpen else: pencircle scaled $ fi;
+ $ := $-eps; $.nib := savepen; breadth_[$.nib] := $;
+ endfor
+ $ := 0;
+ forever:
+ exitif unknown rth[$].#;
+ rth[$] := ceiling(rth[$].#*hppp);
+ pickup pencircle scaled rth[$];
+ rule.nib[$] := savepen;
+ $ := $+1;
+ endfor
+ %
+ % spreads
+ %
+ for $ = 0 upto 10:
+ if known spread[$].#:
+ spread[$] := 2ceiling(0.5spread[$].#*hppp);
+ fi
+ endfor
+ %
+ % current transform (slant is not taken into account)
+ %
+ currenttransform = identity
+ yscaled aspect_ratio scaled granularity;
+ %
+ % proofing
+ %
+ standard_proofing;
+ use_rule1;
+enddef;
+
+% The following environment enables people to draw a picture
+% almost like drawing a character. The resulting picture is
+% stored in $_picture and then it can be used in at any
+% place later.
+
+def beginpicture(suffix $)(expr w_sharp, h_sharp, d_sharp) =
+ begingroup
+ save picturename;
+ w := hround(w_sharp*hppp); h := vround(h_sharp*hppp);
+ d := vround(d_sharp*hppp); clearxy; clearit; clearpen;
+ string picturename; picturename = str $ &"_picture";
+ enddef;
+
+ def endpicture =
+ expandafter picture scantokens picturename;
+ scantokens picturename = currentpicture;
+ endgroup
+enddef;
+
+vardef use_rule@# =
+ rth := rth@#; rth# := rth@#.#;
+ rule.nib := rule.nib@#;
+ math_axis := vround(math_axis#*hppp-0.5rth)+0.5rth;
+enddef;
+
+def numeric_pickup_ primary q =
+ currentpen := pen_[q];
+ pen_lft := pen_lft_[q]; pen_rt := pen_rt_[q];
+ pen_top := pen_top_[q]; pen_bot := pen_bot_[q];
+ currentpen_path := pen_path_[q];
+ if known breadth_[q]: currentbreadth := breadth_[q]; fi
+enddef;
+
+%def compute_spread(expr normal_spread, big_spread) =
+% spread# := math_spread[normal_spread, big_spread];
+% spread := 2ceiling((spread#)*hppp/2)
+%enddef;
+
+def v_center(expr h_sharp) =
+ .5h_sharp+math_axis#, .5h_sharp-math_axis#
+enddef;
+
+def ensure_centering_of(expr stem) =
+ if hround 0.5(w-hround stem)+0.5hround stem<> 0.5w:
+ change_width; fi
+enddef;
+
+vardef v_adjust(suffix $, $$)(expr middle, height) =
+ top y$-middle = middle-bot y$$ = vround 0.5(height-rth)+0.5rth
+enddef;
+
+def arithmetic_bounds =
+ 12u#+2appr#, math_axis#+6u#, 6u#-math_axis#
+enddef;
+
+def padded expr del_sharp =
+ charht := charht+del_sharp; chardp := chardp+del_sharp
+enddef;
+
+%vardef pos@#(expr b, d) =
+% if known b: if b <= currentbreadth: errmessage "bad pos"; fi fi
+% save d_; pair d_; d_ = dir d;
+% z@#r-z@#l+penoffset d_ of currentpen+penoffset -d_ of currentpen = b*d_;
+% x@# = .5(x@#l+x@#r); y@# = .5(y@#l+y@#r) enddef;
+
+vardef pos@#(expr b, d) =
+ if known b: if b <= currentbreadth: errmessage "bad pos"; fi fi
+ (x@#r-x@#l, y@#r-y@#l) = (b-currentbreadth, 0) rotated d;
+ x@# = .5(x@#l+x@#r); y@# = .5(y@#l+y@#r) enddef;
+
+vardef stroke text t =
+ forsuffixes e = l, r: path_.e := t;endfor
+ if cycle path_.l:
+ errmessage "Beware: `stroke' doesn't work with cycles";
+ fi
+ path_.l -- reverse path_.r -- cycle
+enddef;
+
+% DIAGONALS
+
+def diag_width(expr $, $$) =
+ $/abs sind angle $$
+enddef;
+
+%vardef diag_height(expr $, $$) =
+% $/abs cosd angle $$
+%enddef;
+
+% $ <---> $$$; $$ <---> $$$$. sign = +1 for \, -1 for /.
+
+vardef adjust_slanted_bar(suffix $, $$, $$$, $$$$)(expr thickness, sign) =
+ save a, b;
+ if abs(y$$-y$) = thickness:
+ (a1, a2) = (z$$-z$);
+ if a1 = 0: b = 0;% b should then be infinite.
+ else: b = if sign<0: - fi (a1++a2)*((a1++a2)/2a1);
+ fi
+ else:
+ a = angle(z$$-z$);
+ b = (cosd(a)/sind(a) if sign<0: - else: + fi
+ (((y$$-y$)/(thickness)/sind(a))+-+1))
+ /(((y$$-y$)/(thickness))**2-1)*(y$$-y$);
+ fi
+ z$$$ = (x$-b, y$); z$$$$ = (x$$+b, y$$)
+enddef;
+
+% supplementary points for diagonal strokes
+% as in cm's \#. (see MetaFontbook, p. 200--201)
+% Well, ...
+
+vardef diag_stroke.@#(suffix $, $$, s)(text y_list) =
+ z$.@#--for y_ = y_list:
+ (good.x(((x$.s-x$$.s)/(y$.s-y$$.s))*(y_-y$$r)+x$$.s), y_)
+ +z$.@#-z$.s
+ --endfor z$$.@#
+enddef;
+
+% CIRCLES, ELLIPSES AND RELATED THINGS
+
+primarydef w up_to_right z =
+ w{0, ypart(z-w)}
+ ...(superness[xpart z, xpart w],
+ superness[ypart w, ypart z]){z-w}
+ ...{xpart(z-w), 0}z
+enddef;
+
+let up_to_left = up_to_right;
+let down_to_right = up_to_right;
+let down_to_left = up_to_right;
+
+primarydef w right_to_up z =
+ w{xpart(z-w), 0}
+ ...(superness[xpart w, xpart z],
+ superness[ypart z, ypart w]){z-w}
+ ...{0, ypart(z-w)}z
+enddef;
+
+let right_to_down = right_to_up;
+let left_to_up = right_to_up;
+let left_to_down = right_to_up;
+
+def ellipse_set(suffix $, @, @@, $$) =
+ alpha_ := slope*(x@-x$); beta_ := y$$-y$-slope*(x$$-x$);
+ gamma_ := alpha_/beta_;
+ y@-y$ = .5(beta_-alpha_*gamma_);
+ x@@-x$ = -2gamma_*(x@-x$)/(1+gamma_*gamma_);
+ y@@-y$$ = slope*(x@@-x$$)
+enddef;
+
+def hellipse_set(suffix $, @, @@, $$) =
+ alpha_ := (y@-y$)/slope; beta_ := x$$-x$-(y$$-y$)/slope;
+ gamma_ := alpha_/beta_;
+ x@-x$ = .5(beta_-alpha_*gamma_);
+ y@@-y$ = -2gamma_*(y@-y$)/(1+gamma_*gamma_);
+ x@@-x$$ = (y@@-y$$)/slope
+enddef;
+
+vardef adjust_elliptic_arc(suffix $, $$, $$$) =
+ save a, b;
+ if known (y$$$-y$): a = (1+-+((y$$$-y$)/(y$$-y$)));
+ x$$-x$ = (x$$$-x$)/(1+a); b = (1+-+((x$$$-x$$)/(x$$-x$)));
+ else: b = (1+-+((x$$$-x$$)/(x$$-x$)));
+ y$$$-y$ = (y$$-y$)*b; a = (1+-+((y$$$-y$)/(y$$-y$)));
+ fi
+ y$$$' = y$$; x$$$' = (((1-b)/a)*(b/a))[x$$$, x$$];
+enddef;
+
+def flatcup(expr zi, zii, ziii) =
+ zi..controls (xpart zi, flatness[ypart zi, ypart zii])
+ and (xpart zi, ypart zii)
+ ..zii..controls (xpart ziii, ypart zii)
+ and (xpart ziii, flatness[ypart ziii, ypart zii])..ziii
+enddef;
+
+% DOTS
+
+boolean full_dot; full_dot := true;
+
+def dot(suffix $, $$) =
+ autorounded;
+ if full_dot: filldraw else: draw fi
+ dot_path($, $$); full_dot := true;
+enddef;
+
+def dot_path(suffix $, $$) =
+ (x$, 0.5[y$, y$$]) down_to_right (0.5[x$, x$$], y$) right_to_up
+ (x$$, 0.5[y$, y$$]) up_to_left (0.5[x$, x$$], y$$) left_to_down
+ (x$, 0.5[y$, y$$])...cycle
+enddef;
+
+vardef adjust_dot@#(expr center, diameter, h_fit, v_fit) =
+ if v_fit: save y_min, y_max;
+ bot y_min = vround(ypart center-0.5diameter)-eps;
+ top y_max = vround(ypart center+0.5diameter)+eps;
+ y@#'-ypart center = ypart center-y@#
+ = max(y_max-ypart center, ypart center-y_min);
+ else:
+ bot y@# = vround(ypart center-0.5diameter)-eps;
+ top y@#'-bot y@# = vround diameter+2eps; fi
+ if h_fit: save x_min, x_max;
+ lft x_min = hround(xpart center-0.5diameter)-eps;
+ rt x_max = hround(xpart center+0.5diameter)+eps;
+ x@#'-xpart center = xpart center-x@#
+ = max(x_max-xpart center, xpart center-x_min);
+ else:
+ lft x@# = vround(xpart center-0.5diameter)-eps;
+ rt x@#'-lft x@# = hround(diameter)+2eps; fi
+ labels(@#, @#');
+enddef;
+
+% VERY DESIGN DEPENDENT MACROS
+
+% DAGGERS AND ASTERISKS
+
+vardef dagger_stroke@#(expr height, curve, stem, u_) =
+ save alpha, a, b, c, R;
+ alpha = angle u_-90; R = 0.5(curve-currentbreadth);
+ a = stress*(height-curve+0.5currentbreadth)+R;
+ b = 0.5(stem-currentbreadth);
+ c = (a*R-b*sqrt(a**2+b**2-R**2))/(a**2+b**2);
+ z@#c-z@# = (height-0.5currentbreadth)*u_;
+ z@#c-z@#b = R*u_; z@#d-z@#b = -a*u_; z@#a = (c*(R/a))[z@#b, z@#d];
+ penpos@#(2b, alpha); penpos@#d(2b, alpha);
+ penpos@#a(2R*(1+-+c), alpha); penpos@#b(2R, alpha);
+ penlabels(@#a, @#b, @#c, @#d, @#);
+ z@#r{u_}...z@#a.r{z@#a.r-z@#d.r}...z@#b.r{u_}...
+ (superness[z@#b, z@#b.r]+superness[z@#b, z@#c]-z@#b){z@#c-z@#b.r}
+ ...z@#c{z@#b.l-z@#b.r}...
+ (superness[z@#b, z@#b.l]+superness[z@#b, z@#c]-z@#b){z@#b.l-z@#c}
+ ...z@#b.l{-u_}...z@#a.l{z@#d.l-z@#a.l}...{-u_}z@#l
+enddef;
+
+% ARROWS
+
+numeric arrow_height, arrow_width, arrow_breadth, arrow_stress,
+arrow_tense[], arrow_time, double_arrow_height, double_arrow_width,
+double_arrow_tense, double_arrow_flatness;
+
+boolean arrow_head_fitting;
+arrow_head_fitting := false;
+
+vardef arrow_head@#(expr p, side) =
+ save a, t; numeric a[];
+ a1 = angle direction infinity of p; pos@#a(rth, a1-90);
+ z@#a = point infinity of p
+ if arrow_head_fitting: -0.5currentbreadth*dir a1 fi;
+ t := xpart(p intersectiontimes (halfcircle rotated(a1+90)
+ scaled (2arrow_stress*arrow_height-currentbreadth)
+ shifted z@#a));
+ a2 := angle direction t of p; arrow_time := t;
+ z@# = point t of p; pos@#(rth, a2-90);
+ z@#-z@#c = (1-arrow_stress)*arrow_height*dir a2;
+ z@#c.r-z@#c = z@#c-z@#c.l = 0.5(arrow_width-currentbreadth)*dir(a2-90);
+ z@#b.r-z@#c.r = z@#b.l-z@#c.l = max(arrow_breadth-currentbreadth, 0)*dir a2;
+ z@#b = p intersectionpoint (z@#b.r..z@#b.l);
+ t := xpart(p intersectiontimes (halfcircle rotated(a1+90)
+ scaled (2arrow_tense2[1, arrow_stress]*arrow_height-currentbreadth)
+ shifted z@#a));
+ a3 = angle direction t of p; z@#' = point t of p; pos@#'(rth, a3-90);
+ z@#a' = if arrow_tense1<1:
+ p intersectionpoint (halfcircle rotated(a1+90)
+ scaled(arrow_tense1[length(z@#b-z@#a), 0]*2) shifted z@#a);
+ else: z@#a; fi
+ filldraw
+ if side = right: z@#a.l{-dir a1}...{-dir a2}z@#l
+ else: z@#a...{z@#b.l-z@#a'}z@#b.l--z@#c.l{z@#'l-z@#c.l}...z@#l
+ fi --
+ if side = left: z@#r{dir a2}...z@#a.r{dir a1}
+ else: z@#r...{z@#c.r-z@#'r}z@#c.r--z@#b.r{z@#a'-z@#b.r}...z@#a
+ fi -- cycle;
+ labels(@#a'); penlabels(@#', @#a, @#b, @#c);
+ arrow_head_fitting := false;
+enddef;
+
+vardef double_arrow_head@#(expr head, vect) =
+ save a, b, u_, v_; pair u_, v_;
+ u_ = unitvector vect; v_ = u_ rotated 90;
+ z@# = z@#' = head;
+ z@#-z@#m = double_arrow_height*u_;
+ pos@#'(rth, angle u_-90);
+ pos@#m(rth, angle u_-90);
+ z@#-z@#b.r = z@#m-z@#m.b = 0.5rth*double_arrow_flatness*v_;
+ a = angle(-double_arrow_height, 0.5double_arrow_width);
+ b = (cosd(a)/sind(a)+
+ ((0.5double_arrow_width/rth/sind(a))+-+1))
+ /((0.5double_arrow_width/rth)**2-1)
+ *0.5double_arrow_width;
+ z@#c.l = double_arrow_tense[z@#m.b, z@#b.r-b*u_];
+ z@#m-z@#a.l = 0.5double_arrow_width*v_;
+ b := rth/abs sind(angle(z@#a.l-z@#c.l)-angle(-u_));
+ z@#a.r-z@#a.l = z@#c.r-z@#c.l = b*u_;
+ z@#ab = 0.5[z@#a.r, z@#c.r];
+ penpos@#b(rth, angle(z@#b.r-z@#ab)-90);
+ %
+ save p, t; path p[]; numeric t[];
+ z@#a = 0.5[z@#a.r, z@#a.l];
+ p1 = z@#a{z@#ab-z@#a.r}...{z@#b.r-z@#ab}z@#b;
+ p3 = z@#a.r{z@#ab-z@#a.r}...{z@#b.r-z@#ab}z@#b.r;
+ p5 = if (z@#b.l-z@#) dotprod v_<0:
+ z@#'l+(u_ dotprod (z@#b.l-z@#))*u_-- fi
+ z@#b.l{z@#ab-z@#b.r}...{z@#a.r-z@#ab}z@#a.l;
+ p2 = reverse p1 reflectedabout (z@#, z@#m);
+ p4 = reverse p3 reflectedabout (z@#, z@#m);
+ p6 = reverse p5 reflectedabout (z@#, z@#m);
+ t5 = xpart(p5 intersectiontimes (z@#+eps*v_ .. z@#m+eps*v_));
+ t6 = xpart(p6 intersectiontimes (z@#-eps*v_ .. z@#m-eps*v_));
+ fill p3--z@#+eps*v_--subpath (t5, length p5) of p5--cycle;
+ fill z@#-eps*v_--p4--subpath (0, t6) of p6--cycle;
+ forsuffixes $ = l, , r:
+ z@#r$ = p1 intersectionpoint
+ ((z@#'$..z@#m$) shifted (-0.5spread1*v_));
+ z@#l$ = p2 intersectionpoint
+ ((z@#'$..z@#m$) shifted (0.5spread1*v_));
+ endfor
+ penlabels(@#, @#', @#a, @#b, @#c, @#r, @#l, @#m); labels(@#ab, @#m.b);
+enddef;
+
+% ARM, BEAK and SERIFS (personal taste)
+
+% vardef arm@#(expr beak, beak_jut, breadth, darkness, orientation, x_limit) =
+% save a; a = 90;
+% if orientation = up: y@#a = min(y@#l, y@#r); y@#d = max(y@#l, y@#r);
+% y@#b-y@#d = vround beak; a := -a;
+% else: y@#a = max(y@#l, y@#r); y@#d = min(y@#l, y@#r);
+% y@#b-y@#d = -vround beak; fi
+% if x_limit>x@#: rt x@#b = hround x_limit; x@#b-x@#a = hround beak_jut;
+% else: lft x@#b = hround x_limit; x@#b-x@#a = -hround beak_jut; a := -a; fi
+% z@#c-z@#b = max(0, breadth-currentbreadth)
+% *unitvector(z@#a-z@#b)rotated a;
+% z@#d-z@#c = whatever*(z@#a-z@#b);
+% filldraw z@#c{z@#d-z@#c}...
+% if y@#l = y@#.d: darkness[z@#d, 0.5[z@#c, z@#l]]{z@#l-z@#c}
+% ...z@#l{z@#l-z@#d}--z@#r
+% else: darkness[z@#d, 0.5[z@#c, z@#r]]{z@#r-z@#c}
+% ...z@#r{z@#r-z@#d}--z@#l fi
+% --z@#a--z@#b--cycle;
+% labels(@#a, @#b, @#c, @#d);
+% enddef;
+
+vardef arm@#(expr beak, beak_jut, hair, darkness, direction, limit) =
+ y@#d = y@#r; y@#a = y@#b = y@#r if ypart direction > 0: + else: - fi vround beak;
+ y@#c = y@#l;
+ rt x@#b = hround limit; lft x@#a = hround(limit-hair);
+ x@#b-x@#c = hround beak_jut; z@#d-z@#a = whatever*(z@#c-z@#b);
+ filldraw z@#r{z@#d-z@#r}...darkness[z@#d, 0.5[z@#r, z@#a]]...
+ z@#a{z@#a-z@#d}--z@#b--z@#c--z@#l--cycle;
+ labels(@#a, @#b, @#c, @#d);
+enddef;
+
+vardef serif(suffix $, $$)
+ (expr bracket, left_jut, left_slab, dished_left, left_dish,
+ right_jut, right_slab, dished_right, right_dish) =
+ save a, b; b = cosd angle(z$$-z$);
+ a = max(0.5left_jut, 0.5right_jut, bracket);
+ if y$<y$$: top y$b = bot y$+vround left_slab;
+ top y$g = bot y$+vround right_slab;
+ y$a-y$b = y$h-y$g = bracket;
+ top y$c-bot y$d = left_slab+left_dish;
+ top y$f-bot y$e = right_slab+right_dish;
+ else: bot y$b = top y$-vround left_slab;
+ bot y$g = top y$-vround right_slab;
+ y$a-y$b = y$h-y$g = -bracket;
+ bot y$c-top y$d = -left_slab-left_dish;
+ bot y$f-top y$e = -right_slab-right_dish;
+ fi
+ if dished_left: y$c = y$b; else: y$d = y$; fi
+ if dished_right: y$f = y$g; else: y$e = y$; fi
+ if x$l<x$r: z$a = whatever[z$l, z$$l];
+ z$h = whatever[z$r, z$$r];
+ x$c = x$d = x$l-hround(left_jut-b*abs(y$b-y$));
+ x$e = x$f = x$r+hround(right_jut+b*abs(y$g-y$));
+ x$l-x$b = min(left_jut, a);
+ x$g-x$r = min(right_jut, a);
+ else: z$a = whatever[z$r, z$$r];
+ z$h = whatever[z$l, z$$l];
+ x$c = x$d = x$r-hround(left_jut-b*abs(y$b-y$));
+ x$e = x$f = x$l+hround(right_jut+b*abs(y$g-y$));
+ x$r-x$b = min(left_jut, a);
+ x$g-x$l = min(right_jut, a);
+ fi
+ filldraw z$a{z$-z$$}...z$b{left}...z$c--z$d...z${right}
+ ...z$e--z$f...z$g{left}...{z$$-z$}z$h--cycle;
+ labels($a, $b, $c, $d, $e, $f, $g, $h);
+enddef;
+
+% SIM: drawn once, used many times
+
+def make_sim_picture =
+ if unknown sim_picture:
+ beginpicture(sim, 12u#+2appr#, v_center(spread1#+rth#));
+ pickup tiny.nib;
+ save a, b;
+ a = angle(1, 1.25(h+d)/u);
+ b = angle(1, -(h+d)/4.5u);
+ pos1(hair, a+90); pos9(hair, a+90); pos5(stem, b+90);
+ bot y7l = -d-eps; top y3r = h+eps;
+ y1l = good.y 0.225[y7l, y3r]; y3r-y9r = y1l-y7l;
+ top y3r-bot y3l = top y7r-bot y7l = vround 0.5[hair, stem];
+ lft x1r = Appr-eps; rt x9l = w-Appr+eps;
+ z5 = 0.5[z1, z9];
+ forsuffixes $ = r, l: y2$ = y3$ = y4$; y6$ = y7$ = y8$;
+ z2$-z1$ = whatever*dir a; z8$-z9$ = whatever*dir a;
+ z4$-z5$ = whatever*dir b; z6$-z5$ = whatever*dir b;
+ x3$ = 0.6525[x2$, x4$]; x7$ = 0.6525[x8$, x6$];
+ endfor
+ filldraw stroke z1e..controls 0.66[z1e, z2e] and 0.66[z3e, z2e]
+ ..z3e..controls 0.4[z3e, z4e] and 1[z5e, z4e]% 1 for inflexion point
+ ..z5e..controls 1[z5e, z6e] and 0.4[z7e, z6e]
+ ..z7e..controls 0.66[z7e, z8e] and 0.66[z9e, z8e]..z9e;
+ %penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ endpicture;
+ fi
+enddef;
+
+% TRIANGLES
+
+% makes an equilateral triangle optionally fully centered.
+
+numeric triangle_foot;
+
+vardef set_triangle@#(expr orientation, a, rth, centered, fit_bounds) =
+ if orientation = left:
+ rt x1@#r = rt x3@#r = if centered:
+ hround(0.5w+0.5a/sqrt3);
+ else: hround triangle_foot; fi
+ x1@#r-x2@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps;
+ y2@#r = good.y 0.5[-d, h];
+ y3@#r-y2@#r = y2@#r-y1@#r = vround(0.5(a-currentbreadth))+eps;
+ elseif orientation = right:
+ lft x1@#r = lft x3@#r = if centered:
+ hround(0.5w-0.5a/sqrt3);
+ else: hround triangle_foot; fi
+ x2@#r-x1@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps;
+ y2@#r = good.y 0.5[-d, h];
+ y2@#r-y3@#r = y1@#r-y2@#r = vround(0.5(a-currentbreadth))+eps;
+ elseif orientation = down:
+ top y1@#r = top y3@#r = if centered:
+ vround(math_axis+0.5a/sqrt3);
+ else: vround triangle_foot; fi
+ y1@#r-y2@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps;
+ x2@#r = good.x 0.5w;
+ x1@#r-x2@#r = x2@#r-x3@#r
+ = hround 0.5min(a-currentbreadth, w-2appr-currentbreadth+2ho)+eps;
+ else:
+ bot y1@#r = bot y3@#r = if centered:
+ vround(math_axis-0.5a/sqrt3);
+ else: vround triangle_foot; fi
+ y2@#r-y1@#r = hround(0.5a*sqrt(3)-currentbreadth)+eps;
+ x2@#r = good.x 0.5w;
+ x3@#r-x2@#r = x2@#r-x1@#r
+ = hround 0.5min(a-currentbreadth, w-2appr-currentbreadth+2ho)+eps;
+ fi
+ z1@#l-z1@#r = (rth-currentbreadth)/sind(60)
+ *(unitvector(z3@#r-z1@#r)+unitvector(z2@#r-z1@#r));
+ z2@#l-z2@#r = (rth-currentbreadth)/sind(60)
+ *(unitvector(z3@#r-z2@#r)+unitvector(z1@#r-z2@#r));
+ z3@#l-z3@#r = (rth-currentbreadth)/sind(60)
+ *(unitvector(z1@#r-z3@#r)+unitvector(z2@#r-z3@#r));
+ penlabels(1@#, 2@#, 3@#);
+enddef;
+
+% It's buggy
+vardef draw_star@#(expr center, n_edges, radius, tense, angle_init, void) =
+ save a, b, theta; theta = 360/n_edges;
+ x@# = good.x xpart center; y@# = good.y ypart center;
+ % external points
+ a = radius-0.5currentbreadth;
+ b = (1-tense)*a*cosd theta/cosd(theta/2);
+ for $ = 1 upto n_edges:
+ z@#[2$-1]l = z@#+round(a*dir(($-1)*theta+angle_init));
+ z@#[2$]l = z@#+round(b*dir(($-0.5)*theta+angle_init));
+ labels(@#[2$-1]l, @#[2$]l);
+ endfor
+ if void:
+ % internal points
+ a := (rth-currentbreadth)/
+ abs sind(angle(z@#[1]l-z@#[2]l)-angle(z@#[1]l-z@#));
+ b := (rth-currentbreadth)/
+ abs sind(angle(z@#[2]l-z@#[1]l)-angle(z@#[2]l-z@#));
+ for $ = 1 upto n_edges:
+ z@#[2$-1]l-z@#[2$-1]r = a*dir(($-1)*theta+angle_init);
+ z@#[2$]l-z@#[2$]r = b*dir(($-0.5)*theta+angle_init);
+ labels(@#[2$-1]r, @#[2$]r);
+ endfor
+ filldraw stroke for $ = 1 upto 2n_edges: z@#[$]e--endfor z@#[1]e;
+ else:
+ filldraw for $ = 1 upto 2n_edges: z@#[$]l--endfor cycle;
+ fi
+enddef;
+
+% ADMINISTRATION
+
+% PROOFING
+
+def horizontal_rules_list =
+ -body_depth, -desc_depth, x_height, cap_height, asc_height, body_height
+enddef;
+
+def makebox(text rule) =
+ for y = -d.o_, 0, h.o_:
+ rule((-xoffset, y), (w-xoffset, y)); endfor
+ for y = horizontal_rules_list:
+ rule((appr-xoffset, y), (w-appr-xoffset, y));
+ endfor
+ for x = -xoffset, appr-xoffset, w-appr-xoffset, w-xoffset:
+ rule((x, -d.o_), (x, h.o_)); endfor
+ for x = appr+u-xoffset step u until w-appr-1.5-xoffset:
+ rule((x, -d.o_), (x, h.o_)); endfor
+ if charic<>0:
+ rule((w-xoffset+charic*hppp, h.o_),
+ (w-xoffset+charic*hppp, .5[h, -d].o_)); fi
+enddef;
+
+def accents_proofing =
+ for $ = 0 upto 19:
+ makelabel("", (0.5w-xoffset, 0.5x_height)
+ +(4u*cosd($*360/20), 0.5x_height*sind($*360/20)));
+ endfor
+enddef;
+
+def diacritics_proofing =
+ if proofing>0: extra_endchar := extra_endchar&"accents_proofing;"; fi
+enddef;
+
+def standard_proofing =
+ if proofing>0: extra_endchar := "additions_to_proof;"; fi
+enddef;
+
+def additions_to_proof =
+ makelabel.lft("baseline", (-xoffset, 0));
+ if h>math_axis: makelabel.lft("math axis", (-xoffset, math_axis)); fi
+enddef;
+
+% `iff' CONSTRUCTION
+
+let semi_ = ;; let colon_ = :; let endchar_ = endchar;
+def iff expr b = if b:let next_ = use_it else:let next_ = lose_it fi; next_ enddef;
+def use_it = let : = restore_colon; enddef;
+def restore_colon = let : = colon_; enddef;
+def lose_it = let endchar = fi;
+let ; = fix_ semi_ if false enddef;
+def fix_ = let ; = semi_; let endchar = endchar_;
+enddef;
+def always_iff = let : = endgroup; killboolean enddef;
+def killboolean text t = use_it enddef;
+
+% Not the fastest solution
+def beginchar(expr c, w_sharp, h_sharp, d_sharp) =
+ iff known c:
+ begingroup
+ charcode := byte c;
+ charwd := w_sharp;
+ charht := h_sharp;
+ chardp := d_sharp;
+ w := hround(charwd*hppp);
+ h := vround(charht*hppp);
+ d := vround(chardp*hppp);
+ charic := 0; clearxy; clearit;
+ clearpen;
+ scantokens extra_beginchar;
+ enddef;
+
+ endinput;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf
new file mode 100644
index 00000000000..0a178a37f26
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf
@@ -0,0 +1,1456 @@
+% mathematical symbols by Anthony Phan.
+% file: mathbdel.mf (big delimiters)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list =
+ 0.5[-d, h]-math_axis, 0.5[-d, h]-math_axis+x_height,
+ 0.25[-d, h], 0.5[-d, h], 0.75[-d, h] enddef;
+
+% Since I thinck that adjust_fit's strategy is too
+% complex, I just cut actual width in three parts:
+% ``visible'' width, ``internal'' adjustment and
+% finally ``external'' adjustment. Letter_fit# is
+% added automatically (there is no use of appr#'s).
+
+vardef set_width(expr inner_sharp, internal_sharp, external_sharp) =
+ internal_adjustment := hround((internal_sharp+letter_fit#)*hppp);
+ external_adjustment := hround((external_sharp+letter_fit#)*hppp);
+ inner_sharp+internal_sharp+external_sharp+2letter_fit#
+enddef;
+
+% PARENTHESIS (look at cm)
+
+def tmp_program(expr orientation, hair, stem, do_top, do_bot) =
+ pickup fine.nib;
+ pos1(hround hair, 0); pos2(hround stem, 0); pos3(hround hair, 0);
+ if orientation = left:
+ rt x1r = rt x3r = hround(w-internal_adjustment-0.25u+0.5hair);
+ lft x2l = external_adjustment+hround 0.25u;
+ else:
+ lft x1l = lft x3l = hround(internal_adjustment+0.25u-0.5hair);
+ rt x2r = w-external_adjustment-hround 0.25u;
+ fi
+ if do_top and do_bot:
+ top y1 = h; bot y3 = -d; y2 = 0.5[y1, y3];
+ filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down}
+ ...{3(x3e-x2e), y3-y2}z3e;
+ elseif do_top:
+ top y1 = h; y2 = -d-eps;
+ filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down};
+ elseif do_bot:
+ y2 = h+eps; bot y3 = -d;
+ filldraw stroke z2e{down}...{3(x3e-x2e), y3-y2}z3e;
+ else:
+ pos2'(hround stem, 0); x2' = x2;
+ y2 = h+eps; y2' = -d-eps;
+ filldraw stroke z2e..z2'e;
+ fi
+ penlabels(1, 2, 3, 2');
+enddef;
+
+beginchar(paren_left,
+ 5u#+2appr#, body_height#, paren_depth#);
+ "Left parenthesis";
+% italcorr body_height#*slant-0.5u#;
+ pickup fine.nib;
+ pos1(vair, 0); pos2(0.75[hair, stem], 0); pos3(vair, 0);
+ rt x1r = rt x3r = w-appr; lft x2l = hround(x1-4u);
+ top y1 = h; y2 = 0.5[y1, y3] = math_axis;
+ filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down}
+ ...{3(x3e-x2e), y3-y2}z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(paren_left_big, %7u#,
+ set_width(5u#, (1-0.25)*u#, (1+1.5)*u#), rth.frac#, 2dh#-rth.frac#);
+ "big left parenthesis";
+% adjust_fit(1.5u#, -.25u#);
+ tmp_program(left, hair, stem, true, true);
+endchar;
+
+beginchar(paren_left_Big, %9u#,
+ set_width(7u#, (1-0.25)*u#, (1+2)*u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left parenthesis";
+% adjust_fit(2u#, -.25u#);
+ tmp_program(left, rth1, .5[stem, bold], true, true);
+endchar;
+
+beginchar(paren_left_bigg, %11u#,
+ set_width(9u#, (1-0.25)*u#, (1+2.5)*u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left parenthesis";
+% adjust_fit(2.5u#, -.25u#);
+ tmp_program(left, rth1+.2dw, bold, true, true);
+endchar;
+
+beginchar(paren_left_Bigg, %11.5u#,
+ set_width(9.5u#, (1-0.25)*u#, (1+3)*u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left parenthesis";
+% adjust_fit(3u#, -.25u#);
+ tmp_program(left, rth1+.4dw, bold+dw, true, true);
+endchar;
+
+beginchar(paren_left_top, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#);
+ "left perenthesis' extension top";
+% adjust_fit(4u#, -.25u#); pickup fine.nib;
+ tmp_program(left, rth1+.6dw, bold+2dw, true, false);
+endchar;
+
+beginchar(paren_left_bot, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#);
+ "left parenthesis' extension bot";
+% adjust_fit(4u#, -.25u#); pickup fine.nib;
+ tmp_program(left, rth1+.6dw, bold+2dw, false, true);
+endchar;
+
+beginchar(paren_left_mid, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1+4)*u#), 0, dh#);
+ "left parenthesis' extension mid";
+% adjust_fit(4u#, -.25u#); pickup fine.nib;
+ tmp_program(left, rth1+.6dw, bold+2dw, false, false);
+endchar;
+
+beginchar(paren_right,
+ 5u#+2appr#, body_height#, paren_depth#);
+ "Right parenthesis";
+% italcorr math_axis#*slant-0.5u#;
+ pickup fine.nib;
+ pos1(vair, 0); pos2(0.75[hair, stem], 0); pos3(vair, 0);
+ lft x1l = lft x3l = appr; rt x2r = hround(x1+4u);
+ top y1 = h; y2 = 0.5[y1, y3] = math_axis;
+ filldraw stroke z1e{3(x2e-x1e), y2-y1}...z2e{down}
+ ...{3(x3e-x2e), y3-y2}z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(paren_right_big, %7u#,
+ set_width(5u#, (1-0.25)*u#, (1+1.5)*u#), rth.frac#, 2dh#-rth.frac#);
+ "big right parenthesis";
+% adjust_fit(-.25u#, 1.5u#);
+ tmp_program(right, hair, stem, true, true);
+endchar;
+
+beginchar(paren_right_Big, %9u#,
+ set_width(7u#, (1-0.25)*u#, (1+2)*u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right parenthesis";
+% adjust_fit(-.25u#, 2u#);
+ tmp_program(right, rth1, .5[stem, bold], true, true);
+endchar;
+
+beginchar(paren_right_bigg, %11u#,
+ set_width(9u#, (1-0.25)*u#, (1+2.5)*u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right parenthesis";
+% adjust_fit(-.25u#, 2.5u#);
+ tmp_program(right, rth1+.2dw, bold, true, true);
+endchar;
+
+beginchar(paren_right_Bigg, %11.5u#,
+ set_width(9.5u#, (1-0.25)*u#, (1+3)*u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right parenthesis";
+% adjust_fit(-.25u#, 3u#);
+ tmp_program(right, rth1+.4dw, bold+dw, true, true);
+endchar;
+
+beginchar(paren_right_top, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1.4)*u#), rth.frac#, 3dh#-rth.frac#);
+ "right parenthesis' extension top";
+% adjust_fit(-.25u#, 4u#); pickup fine.nib;
+ tmp_program(right, rth1+.6dw, bold+2dw, true, false);
+endchar;
+
+beginchar(paren_right_bot, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1+4)*u#), rth.frac#, 3dh#-rth.frac#);
+ "right parenthesis' extension top";
+% adjust_fit(-.25u#, 4u#); pickup fine.nib;
+ tmp_program(right, rth1+.6dw, bold+2dw, false, true);
+endchar;
+
+beginchar(paren_right_mid, %12u#,
+ set_width(10u#, (1-0.25)*u#, (1.4)*u#), 0, dh#);
+ "big right parenthesis' extension mid";
+% adjust_fit(-.25u#, 4u#); pickup fine.nib;
+ tmp_program(right, rth1+.6dw, bold+2dw, false, false);
+endchar;
+
+% BRACKETS
+
+def tmp_program(expr orientation, stem, rth, do_top, do_bot, not_ext) =
+ pickup tiny.nib;
+ pos1(hround stem, 0); pos2(hround stem, 0);
+ pos3(vround rth, 90); pos4(vround rth, 90);
+ pos5(vround rth, 90); pos6(vround rth, 90);
+ if do_top or not_ext: top y1 = h; else: y1 = h+eps; fi
+ if do_bot or not_ext: bot y2 = -d; else: y2 = -d-eps; fi
+ y1 = y3r = y4r; y2 = y5l = y6l;
+ if orientation = left:
+ lft x1l = lft x2l = min(external_adjustment, hround 0.5(w-stem));
+ rt x3r = rt x5l = w-internal_adjustment;
+ x4r = x1r; x6l = x2r;
+ else:
+ rt x1r = rt x2r = max(w-external_adjustment, hround 0.5(w+stem));
+ lft x4r = lft x6l = internal_adjustment;
+ x3r = x1l; x5l = x2l;
+ fi
+ filldraw stroke z1e--z2e;
+ if do_top: filldraw stroke z3e--z4e; fi
+ if do_bot: filldraw stroke z5e--z6e; fi
+ penlabels(1, 2, 3, 4, 5, 6);
+enddef;
+
+% HALF BRACKETS (true heights or depths are to be discussed)
+
+% okay
+beginchar(bracket_upper_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Upper left bracket";
+ a := d; d := -vround 0.75[-d, h];
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, true, false, true);
+ d := a;
+endchar;
+
+% okay
+beginchar(bracket_lower_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Lower left bracket";
+ a := h; h := vround 0.25[-d, h];
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+ h := a;
+endchar;
+
+% okay
+beginchar(bracket_upper_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Upper right bracket";
+ a := d; d := -vround 0.75[-d, h];
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, true, false, true);
+ d := a;
+endchar;
+
+% okay
+beginchar(bracket_lower_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Lower right bracket";
+ a := h; h := vround 0.25[-d, h];
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+ h := a;
+endchar;
+
+% okay
+beginchar(bracket_upper_lower_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Upper lower left bracket";
+ a := d; d := -vround 0.75[-d, h];
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, true, false, true);
+ d := a;
+ clearxy;
+ a := h; h := vround 0.25[-d, h];
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+ h := a;
+endchar;
+
+% okay
+beginchar(bracket_upper_lower_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Upper lower right bracket";
+ a := d; d := -vround 0.75[-d, h];
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, true, false, true);
+ d := a;
+ clearxy;
+ a := h; h := vround 0.25[-d, h];
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+ h := a;
+endchar;
+
+% okay
+beginchar(bracket_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Left bracket";
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, true, true, true);
+endchar;
+
+beginchar(bracket_left_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big left bracket";
+ tmp_program(left, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_left_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left bracket";
+ tmp_program(left, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_left_bigg,
+ set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left bracket";
+ tmp_program(left, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_left_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left bracket";
+ tmp_program(left, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_left_top,
+ set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "left bracket's extension top";
+ tmp_program(left, 0.95cap_stem, rth1, true, false, false);
+endchar;
+
+beginchar(bracket_left_bot,
+ set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "left bracket's extension bottom";
+ tmp_program(left, 0.95cap_stem, rth1, false, true, false);
+endchar;
+
+beginchar(bracket_left_mid,
+ set_width(7u#, 1.5u#, 5u#), 0, dh#);
+ "left bracket's extension module";
+ tmp_program(left, 0.95cap_stem, rth1, false, false, false);
+endchar;
+
+% okay
+beginchar(bracket_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Right bracket";
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, true, true, true);
+endchar;
+
+beginchar(bracket_right_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big right bracket";
+ tmp_program(right, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_right_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right bracket";
+ tmp_program(right, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_right_bigg,
+ set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right bracket";
+ tmp_program(right, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_right_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right bracket";
+ tmp_program(right, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], true, true, true);
+endchar;
+
+beginchar(bracket_right_top,
+ set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "right bracket's extension top";
+ tmp_program(right, 0.95cap_stem, rth1, true, false, false);
+endchar;
+
+beginchar(bracket_right_bot,
+ set_width(7u#, 1.5u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "right bracket's extension bottom";
+ tmp_program(right, 0.95cap_stem, rth1, false, true, false);
+endchar;
+
+beginchar(bracket_right_mid,
+ set_width(7u#, 1.5u#, 5u#), 0, dh#);
+ "right bracket's extension module";
+ tmp_program(right, 0.95cap_stem, rth1, false, false, false);
+endchar;
+
+% okay
+beginchar(ceiling_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Left ceiling";
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, true, false, true);
+endchar;
+
+beginchar(ceiling_left_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big left ceiling";
+ tmp_program(left, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_left_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left ceiling";
+ tmp_program(left, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_left_bigg,
+ set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left ceiling";
+ tmp_program(left, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_left_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left ceiling";
+ tmp_program(left, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], true, false, true);
+endchar;
+
+% okay
+beginchar(ceiling_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Right ceiling";
+ tmp_program(right, 0[0.95stem, 0.95cap_stem], rth0, true, false, true);
+endchar;
+
+beginchar(ceiling_right_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big right ceiling";
+ tmp_program(right, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_right_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right ceiling";
+ tmp_program(right, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_right_bigg,
+ set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right ceiling";
+ tmp_program(right, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], true, false, true);
+endchar;
+
+beginchar(ceiling_right_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right ceiling";
+ tmp_program(right, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], true, false, true);
+endchar;
+
+% okay
+beginchar(floor_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Left floor";
+ tmp_program(left, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+endchar;
+
+beginchar(floor_left_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big left floor";
+ tmp_program(left, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_left_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left floor";
+ tmp_program(left, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_left_bigg,
+ set_width(5.5u#, 0.8u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left floor";
+ tmp_program(left, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_left_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left floor";
+ tmp_program(left, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], false, true, true);
+endchar;
+
+% okay
+beginchar(floor_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Right floor";
+ tmp_program(right, 0[0.95stem, 0.95cap_stem],
+ rth0, false, true, true);
+endchar;
+
+beginchar(floor_right_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big right floor";
+ tmp_program(right, 0.125[0.95stem, 0.95cap_stem],
+ 0.125[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_right_Big,
+ set_width(5u#, 0.6u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right floor";
+ tmp_program(right, 0.25[0.95stem, 0.95cap_stem],
+ 0.25[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_right_bigg,
+ set_width(5.5u#, 0.80u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right floor";
+ tmp_program(right, 0.5[0.95stem, 0.95cap_stem],
+ 0.5[rth0, rth1], false, true, true);
+endchar;
+
+beginchar(floor_right_Bigg,
+ set_width(6u#, 1.00u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right floor";
+ tmp_program(right, 0.75[0.95stem, 0.95cap_stem],
+ 0.75[rth0, rth1], false, true, true);
+endchar;
+
+% BRACES
+
+def tmp_program(expr orientation, stem, hair, factor, superness) =
+ pickup fine.nib;
+ if orientation = left:
+ rt x5l = w-internal_adjustment;
+ lft x1 = external_adjustment;
+ else:
+ lft x5l = internal_adjustment;
+ rt x1 = w-external_adjustment;
+ fi
+ x3 = 0.5[x1, x5l];
+ y1+0.5hair = vround(0.5[-d, h]+0.5hair); pos1(hround hair, 90);
+ top y5r = h+eps; y3 = 0.5[y1l, y5r]; y2 = y2l = y1l; y1r = y2r;
+ x2 = factor[x3, x5l]; a := 0.5[angle(z3-z2), 90]; pos5(hair, a);
+ pos3(stem, angle(z3-z2) if orientation = left: + else: - fi 90);
+ forsuffixes $ = r, l:
+ z2$-z3$ = whatever*(z2-z3);
+ z4$-z3$ = whatever*(z2-z3);
+ z4$-z5$ = whatever*dir(a+90);
+ forsuffixes @ = 1, 2, 3, 4, 5:
+ x@'.$ = x@.$; y@'.$-y1 = y1-y@.$;
+ endfor
+ endfor
+ autorounded;
+ filldraw stroke z1e{x5e-x1e, 0}...
+ (z2e+(1-superness)*(z1e-z2e)+(1-superness)*(z3e-z2e)){z3e-z1e}
+ ...z3e{z3e-z2e}...
+ (z4e+(1-superness)*(z3e-z4e)+(1-superness)*(z5e-z4e)){z5e-z3e}
+ ...z5e{z5e-z4e};
+ filldraw stroke z1'e{x5'e-x1'e, 0}...
+ (z2'e+(1-superness)*(z1'e-z2'e)+(1-superness)*(z3'e-z2'e)){z3'e-z1'e}
+ ...z3'e{z3'e-z2'e}...
+ (z4'e+(1-superness)*(z3'e-z4'e)+(1-superness)*(z5'e-z4'e)){z5'e-z3'e}
+ ...z5'e{z5'e-z4'e};
+% filldraw stroke z1e{x5e-x1e, 0}..
+% controls 0.5[z1e, z2e] and z2e ..z3e..
+% controls z4e and 0.5[z5e, z4e] ..z5e;
+% filldraw stroke z1'e{x5'e-x1'e, 0}..
+% controls 0.5[z1'e, z2'e] and z2'e ..z3'e..
+% controls z4'e and 0.5[z5'e, z4'e] ..z5'e;
+ penlabels(1, 2, 3, 4, 5, 1', 2', 3', 4', 5');
+enddef;
+
+beginchar(brace_left,
+ set_width(5u#, 1.5u#, 1.5u#), body_height#, paren_depth#);
+ "left brace";
+ tmp_program(left, 0[stem, cap_stem],
+ 0[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_left_big,
+ set_width(6u#, 1.75*u#, 1.75*u#), rth.frac#, 2dh#-rth.frac#);
+ "big left brace";
+ tmp_program(left, 0.125[stem, cap_stem],
+ 0.125[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_left_Big,
+ set_width(7u#, 2*u#, 2*u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left brace";
+ tmp_program(left, 0.25[stem, cap_stem],
+ 0.25[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_left_bigg,
+ set_width(8u#, 2.25*u#, 2.25*u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left brace";
+ tmp_program(left, 0.5[stem, cap_stem],
+ 0.5[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_left_Bigg,
+ set_width(9u#, 2.5*u#, 2.5*u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left brace";
+ tmp_program(left, 0.75[stem, cap_stem],
+ 0.75[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_left_top,
+ set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#);
+ "left brace's extension top";
+ a := cap_stem;
+ pickup fine.nib;
+ top y1l = h; top y1l-y2 = 0.5(h+d); y3 = -d-eps;
+ rt x1 = w-internal_adjustment;
+ x2 = x3 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a;
+ pos1(rth1, -90); pos2(a, 0); pos3(a, 0);
+ filldraw stroke z1e left_to_down z2e..z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(brace_left_bot,
+ set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#);
+ "left brace's extension bot";
+ a := cap_stem;
+ pickup fine.nib;
+ y1 = h+eps; y2-bot y3l = 0.5(h+d); bot y3l = -d;
+ rt x3 = w-internal_adjustment;
+ x1 = x2 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a;
+ pos1(a, 0); pos2(a, 0); pos3(rth1, 90);
+ filldraw stroke z1e..z2e down_to_right z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(brace_left_mid,
+ set_width(10u#, 3*u#, 3*u#), 0, 3dh#);
+ "left brace's extension mid";
+ a := cap_stem;
+ pickup fine.nib;
+ y1 = h+eps;
+ y3+0.5rth1 = vround(0.5[-d, h]+0.5rth1);
+ y2-bot y3r = top y3l-y4 = 0.25(h+d); y5 = -d-eps;
+ x1 = x2 = x4 = x5 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a;
+ lft x3 = external_adjustment;
+ pos1(a, 0); pos2(a, 0); pos3(rth1, -90); pos4(a, 180); pos5(a, 180);
+ filldraw stroke z1e..z2e down_to_left z3e;
+ filldraw stroke z3e right_to_down z4e..z5e;
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(brace_left_mod,
+ set_width(10u#, 3*u#, 3*u#), 0, 0.5dh#);
+ "left brace's extension module";
+ a := cap_stem;
+ pickup fine.nib; y1 = h+eps; y2 = -d-eps;
+ x1 = x2 = hround(0.5[external_adjustment, w-internal_adjustment]-0.5a)+0.5a;
+ pos1(a, 0); pos2(a, 0); filldraw stroke z1e..z2e; penlabels(1, 2);
+endchar;
+
+beginchar(brace_right,
+ set_width(5u#, 1.5u#, 1.5u#), body_height#, paren_depth#);
+ "Right brace";
+ internal_adjustment := appr+hround 0.5u;
+ external_adjustment := appr+hround 0.5u;
+ tmp_program(right, 0[stem, cap_stem],
+ 0[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_right_big,
+ set_width(6u#, 1.75*u#, 1.75*u#), rth.frac#, 2dh#-rth.frac#);
+ "big right brace";
+ tmp_program(right, 0.125[stem, cap_stem],
+ 0.125[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_right_Big,
+ set_width(7u#, 2*u#, 2*u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right brace";
+ tmp_program(right, 0.25[stem, cap_stem],
+ 0.25[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_right_bigg,
+ set_width(8u#, 2.25*u#, 2.25*u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right brace";
+ tmp_program(right, 0.5[stem, cap_stem],
+ 0.5[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_right_Bigg,
+ set_width(9u#, 2.5*u#, 2.5*u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right brace";
+ tmp_program(right, 0.75[stem, cap_stem],
+ 0.75[hair, rth1], 0.5, superness);
+endchar;
+
+beginchar(brace_right_top,
+ set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#);
+ "right brace's extension top";
+ a := cap_stem;
+ pickup fine.nib;
+ top y1r = h; top y1r-y2 = 0.5(h+d); y3 = -d-eps;
+ lft x1 = internal_adjustment;
+ x2 = x3 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a;
+ pos1(rth1, 90); pos2(a, 0); pos3(a, 0);
+ filldraw stroke z1e right_to_down z2e..z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(brace_right_bot,
+ set_width(10u#, 3*u#, 3*u#), 0, 1.5dh#);
+ "right brace's extension bot";
+ a := cap_stem;
+ pickup fine.nib;
+ y1 = h+eps; y2-bot y3r = 0.5(h+d); bot y3r = -d;
+ lft x3 = internal_adjustment;
+ x1 = x2 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a;
+ pos1(a, 0); pos2(a, 0); pos3(rth1, -90);
+ filldraw stroke z1e..z2e down_to_left z3e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(brace_right_mid,
+ set_width(10u#, 3*u#, 3*u#), 0, 3dh#);
+ "right brace's extension mid";
+ a := cap_stem;
+ pickup fine.nib;
+ y1 = h+eps;
+ y3+0.5rth1 = vround(0.5[-d, h]+0.5rth1);
+ y2-bot y3l = top y3r-y4 = 0.25(h+d);
+ y5 = -d-eps;
+ x1 = x2 = x4 = x5 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a;
+ rt x3 = w-external_adjustment;
+ pos1(a, 0); pos2(a, 0); pos3(rth1, 90); pos4(a, 180); pos5(a, 180);
+ filldraw stroke z1e..z2e down_to_right z3e;
+ filldraw stroke z3e right_to_down z4e..z5e;
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(brace_right_mod,
+ set_width(10u#, 3*u#, 3*u#), 0, 0.5dh#);
+ "right brace's extension module";
+ a := cap_stem;
+ pickup fine.nib; y1 = h+eps; y2 = -d-eps;
+ x1 = x2 = hround(0.5[internal_adjustment, w-external_adjustment]-0.5a)+0.5a;
+ pos1(a, 0); pos2(a, 0); filldraw stroke z1e..z2e; penlabels(1, 2);
+endchar;
+
+% ANGLES
+
+def tmp_program(expr orientation, rth) =
+ pickup tiny.nib;
+ top y1r = h+eps; y2l = good.y 0.5[-d, h]; y1r-y2l = y2l-y3r;
+ if orientation = left:
+ rt x1r = rt x3r = w-internal_adjustment+eps;
+ lft x2l = external_adjustment-eps;
+ adjust_slanted_bar(1r, 2l, 1l, 2a)(max(rth-tiny, 1), -1);
+ adjust_slanted_bar(3r, 2l, 3l, 2b)(max(rth-tiny, 1), 1);
+ else:
+ lft x1r = lft x3r = internal_adjustment-eps;
+ rt x2l = w-external_adjustment+eps;
+ adjust_slanted_bar(1r, 2l, 1l, 2a)(max(rth-tiny, 1), 1);
+ adjust_slanted_bar(3r, 2l, 3l, 2b)(max(rth-tiny, 1), -1);
+ fi
+ z2r = whatever[z1r, z2a]; z2r = whatever[z3r, z2b];
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1, 2, 3); labels(2a, 2b);
+enddef;
+
+% almost okay
+beginchar(angle_left,
+ set_width(6.5u#, 0.5u#, 0.5u#), body_height#, paren_depth#);
+ "Left angle";
+ tmp_program(left, rth0);
+endchar;
+
+beginchar(angle_left_big,
+ set_width(8u#, 0.75u#, 0.75u#), rth.frac#, 2dh#-rth.frac#);
+ "big left angle";
+ tmp_program(left, 0.125[rth0, rth2]);
+endchar;
+
+beginchar(angle_left_Big,
+ set_width(10u#, 1.0u#, 1.0u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left angle";
+ tmp_program(left, 0.25[rth0, rth2]);
+endchar;
+
+beginchar(angle_left_bigg,
+ set_width(12u#, 1.25u#, 1.25u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left angle";
+ tmp_program(left, 0.5[rth0, rth2]);
+endchar;
+
+beginchar(angle_left_Bigg,
+ set_width(14u#, 1.5u#, 1.5u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left angle";
+ tmp_program(left, 0.75[rth0, rth2]);
+endchar;
+
+% almost okay
+beginchar(angle_right,
+ set_width(6.5u#, 0.5u#, 0.5u#), body_height#, paren_depth#);
+ "Right angle";
+ tmp_program(right, rth0);
+endchar;
+
+beginchar(angle_right_big,
+ set_width(8u#, 0.75u#, 0.75u#), rth.frac#, 2dh#-rth.frac#);
+ "big right angle";
+ tmp_program(right, 0.125[rth0, rth2]);
+endchar;
+
+beginchar(angle_right_Big,
+ set_width(10u#, 1.0u#, 1.0u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right angle";
+ tmp_program(right, 0.25[rth0, rth2]);
+endchar;
+
+beginchar(angle_right_bigg,
+ set_width(12u#, 1.25u#, 1.25u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right angle";
+ tmp_program(right, 0.5[rth0, rth2]);
+endchar;
+
+beginchar(angle_right_Bigg,
+ set_width(14u#, 1.5u#, 1.5u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right angle";
+ tmp_program(right, 0.75[rth0, rth2]);
+endchar;
+
+% SLASHES
+
+vardef tmp_program(expr orientation, thickness, slash_slant) =
+ pickup tiny.nib;
+ top y1 = h; y1 = y1l = y1r; bot y2 = -d; y2 = y2l = y2r;
+ 0.5[x1, x2] = 0.5w;
+ x1-x2 = if orientation = left: - fi slash_slant*(y1-y2);
+ x1r-x1l = x2r-x2l = diag_width(thickness-tiny, z1-z2);
+ 0.5[x1l, x1r] = x1; 0.5[x2l, x2r] = x2;
+ filldraw stroke z1e..z2e;
+ penlabels(1, 2);
+enddef;
+
+beginchar(backslash,
+ set_width((body_height#+paren_depth#)*0.375
+ +(0[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.2u#, 0.2u#),
+ body_height#, paren_depth#);
+ "backslash";
+ tmp_program(left, 0[rth0, rth2], 0.375);
+endchar;
+
+beginchar(backslash_thick,
+ set_width((body_height#+paren_depth#)*0.375
+ +(0.95stem#-tiny#)*(1++0.375)+tiny#,
+ 0.2u#, 0.2u#),
+ body_height#, paren_depth#);
+ "Thick backslash";
+ tmp_program(left, 0.95stem, 0.375);
+endchar;
+
+beginchar(backslash_big,
+ set_width(2dh#*0.375
+ +(0.125[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.4u#, 0.4u#),
+ rth.frac#, 2dh#-rth.frac#);
+ "big backslash";
+ tmp_program(left, 0.125[rth0, rth2], 0.375);
+endchar;
+
+beginchar(backslash_Big,
+ set_width(3dh#*0.375
+ +(0.25[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.7u#, 0.7u#),
+ rth.frac#, 3dh#-rth.frac#);
+ "Big backslash";
+ tmp_program(left, 0.25[rth0, rth2], 0.375);
+endchar;
+
+beginchar(backslash_bigg,
+ set_width(4dh#*0.375
+ +(0.5[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 1.0u#, 1.0u#),
+ rth.frac#, 4dh#-rth.frac#);
+ "bigg backslash";
+ tmp_program(left, 0.5[rth0, rth2], 0.375);
+endchar;
+
+beginchar(backslash_Bigg,
+ set_width(5dh#*0.375
+ +(0.75[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 1.2u#, 1.2u#),
+ rth.frac#, 5dh#-rth.frac#);
+ "Bigg backslash";
+ tmp_program(left, 0.75[rth0, rth2], 0.375);
+endchar;
+
+beginchar(slash,
+ set_width((body_height#+paren_depth#)*0.375
+ +(0[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.2u#, 0.2u#),
+ body_height#, paren_depth#);
+ "slash";
+ tmp_program(right, 0[rth0, rth2], 0.375);
+endchar;
+
+beginchar(slash_thick,
+ set_width((body_height#+paren_depth#)*0.375
+ +(0.95stem#-tiny#)*(1++0.375)+tiny#,
+ 0.2u#, 0.2u#),
+ body_height#, paren_depth#);
+ "Thick slash";
+ tmp_program(right, 0.95stem, 0.375);
+endchar;
+
+beginchar(slash_big,
+ set_width(2dh#*0.375
+ +(0.125[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.4u#, 0.4u#),
+ rth.frac#, 2dh#-rth.frac#);
+ "big slash";
+ tmp_program(right, 0.125[rth0, rth2], 0.375);
+endchar;
+
+beginchar(slash_Big,
+ set_width(3dh#*0.375
+ +(0.25[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 0.7u#, 0.7u#),
+ rth.frac#, 3dh#-rth.frac#);
+ "Big slash";
+ tmp_program(right, 0.25[rth0, rth2], 0.375);
+endchar;
+
+beginchar(slash_bigg,
+ set_width(4dh#*0.375
+ +(0.5[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 1.0u#, 1.0u#),
+ rth.frac#, 4dh#-rth.frac#);
+ "bigg slash";
+ tmp_program(right, 0.5[rth0, rth2], 0.375);
+endchar;
+
+beginchar(slash_Bigg,
+ set_width(5dh#*0.375
+ +(0.75[rth0#, rth2#]-tiny#)*(1++0.375)+tiny#,
+ 1.2u#, 1.2u#),
+ rth.frac#, 5dh#-rth.frac#);
+ "Bigg slash";
+ tmp_program(right, 0.75[rth0, rth2], 0.375);
+endchar;
+
+%
+% blackboard bold brackets
+%
+
+def tmp_program(expr orientation, rth, thick,
+ do_top, do_bot, not_ext) =
+ save a, b;
+ a = hround(rth*(1++slant)); b = hround(thick*(1++slant));
+ y5r = y6r = h if do_top or not_ext: else: +eps fi;
+ y7r = y8r = -d if do_bot or not_ext: else: -eps fi;
+ if orientation = left:
+ forsuffixes @# = 1, 2, 3, 4: x@#r-x@# = x@#-x@#l = -0.5a; endfor
+ x1r = x2r = x5r = x7r = min(external_adjustment,
+ hround 0.5(w-a-b));
+ x1-x3 = x2-x4 = -b; x6r = x8r = w-internal_adjustment;
+ else:
+ forsuffixes @# = 1, 2, 3, 4: x@#r-x@# = x@#-x@#l = 0.5a; endfor
+ x1r = x2r = x5r = x7r = max(w-external_adjustment,
+ hround 0.5(w+a+b));
+ x1-x3 = x2-x4 = b; x6r = x8r = internal_adjustment;
+ fi
+ forsuffixes @ = 1, 1r, 1l, 3, 3r, 3l: z@ = whatever[z5r, z6r]; endfor
+ forsuffixes @ = 2, 2r, 2l, 4, 4r, 4l: z@ = whatever[z7r, z8r]; endfor
+ penpos5(rth, 90); penpos6(rth, 90);
+ penpos7(rth, -90); penpos8(rth, -90);
+ penstroke z1e..z2e; penstroke z3e..z4e;
+ if do_top: penstroke z5e..z6e; fi
+ if do_bot: penstroke z7e..z8e; fi
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8);
+enddef;
+
+beginchar(bbbracket_left,
+ set_width(5u#, 0.5u#, 2u#), body_height#, paren_depth#);
+ "Left bbbracket";
+ tmp_program(left, rth0, 2.2u, true, true, true);
+endchar;
+
+beginchar(bbbracket_left_big,
+ set_width(5.5u#, 0.75u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big left bbbracket";
+ tmp_program(left, 0.125[rth0, rth1], 0.125[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_left_Big,
+ set_width(6.0u#, 1.0u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big left bbbracket";
+ tmp_program(left, 0.25[rth0, rth1], 0.25[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_left_bigg,
+ set_width(6.5u#, 1.25u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg left bbbracket";
+ tmp_program(left, 0.5[rth0, rth1], 0.5[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_left_Bigg,
+ set_width(7.0u#, 1.5u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg left bbbracket";
+ tmp_program(left, 0.75[rth0, rth1], 0.75[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_left_top,
+ set_width(8u#, 2u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "Left bbbracket's extension top";
+ tmp_program(left, rth1, 3.0u, true, false, false);
+endchar;
+
+beginchar(bbbracket_left_bot,
+ set_width(8u#, 2u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "Left bbbracket's extension bottom";
+ tmp_program(left, rth1, 3.0u, false, true, false);
+endchar;
+
+beginchar(bbbracket_left_mid,
+ set_width(8u#, 2u#, 5u#), 0, dh#);
+ "Left bbbracket's extension module";
+ tmp_program(left, rth1, 3.0u, false, false, false);
+endchar;
+
+beginchar(bbbracket_right,
+ set_width(5u#, 0.5u#, 2u#), body_height#, paren_depth#);
+ "Right bbbracket";
+ tmp_program(right, rth0, 2.2u, true, true, true);
+endchar;
+
+beginchar(bbbracket_right_big,
+ set_width(5.5u#, 0.75u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big right bbbracket";
+ tmp_program(right, 0.125[rth0, rth1], 0.125[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_right_Big,
+ set_width(6.0u#, 1.0u#, 3u#), rth.frac#, 3dh#-rth.frac#);
+ "Big right bbbracket";
+ tmp_program(right, 0.25[rth0, rth1], 0.25[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_right_bigg,
+ set_width(6.5u#, 1.25u#, 3.5u#), rth.frac#, 4dh#-rth.frac#);
+ "bigg right bbbracket";
+ tmp_program(right, 0.5[rth0, rth1], 0.5[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_right_Bigg,
+ set_width(7.0u#, 1.5u#, 4u#), rth.frac#, 5dh#-rth.frac#);
+ "Bigg right bbbracket";
+ tmp_program(right, 0.75[rth0, rth1], 0.75[2.2u, 3.0u], true, true, true);
+endchar;
+
+beginchar(bbbracket_right_top,
+ set_width(8u#, 2.0u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "Right bbbracket's extension top";
+ tmp_program(right, rth1, 3.0u, true, false, false);
+endchar;
+
+beginchar(bbbracket_right_bot,
+ set_width(8u#, 2.0u#, 5u#), rth.frac#, 3dh#-rth.frac#);
+ "Right bbbracket's extension bottom";
+ tmp_program(right, rth1, 3.0u, false, true, false);
+endchar;
+
+beginchar(bbbracket_right_mid,
+ set_width(8u#, 2.0u#, 5u#), 0, dh#);
+ "Right bbbracket's extension module";
+ tmp_program(right, rth1, 3.0u, false, false, false);
+endchar;
+
+%
+% A poursuivre
+%
+
+beginchar(vert_sign, 3u#+2appr#, body_height#, paren_depth#);
+ "Vertical line";
+ ensure_centering_of(rth1);
+ pickup tiny.nib;
+ pos1(rth1, 0); pos2(rth1, 0); x1 = x2 = 0.5w;
+ top y1 = h; bot y2 = -d; filldraw stroke z1e..z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(vert_mod, 3u#+2appr#, 0, dh#);
+ "Vertical line's module";
+ ensure_centering_of(rth1);
+ pickup tiny.nib;
+ pos1(rth1, 0); pos2(rth1, 0); x1 = x2 = 0.5w;
+ y1 = h+eps; y2 = -d-eps; filldraw stroke z1e..z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(vert_thick, 3u#+2appr#, body_height#, paren_depth#);
+ "Thick vertical line";
+ ensure_centering_of(0.95stem);
+ pickup tiny.nib;
+ pos1(hround 0.95stem, 0); pos2(hround 0.95stem, 0); x1 = x2 = 0.5w;
+ top y1 = h; bot y2 = -d; filldraw stroke z1e..z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(vert_thick_mod, 3u#+2appr#, 0, dh#);
+ "Thick vertical line's module";
+ ensure_centering_of(0.95stem);
+ pickup tiny.nib;
+ pos1(hround 0.95stem, 0); pos2(hround 0.95stem, 0);
+ x1 = x2 = 0.5w; y1 = h+eps; y2 = -d-eps; filldraw stroke z1e..z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(vvert_sign, 5.5u#+2appr#, body_height#, paren_depth#);
+ "Double vertical line";
+ numeric a; a = max(2.5u-rth0, 2rth0);% blank space between bars
+ pickup tiny.nib;
+ pos1(rth0, 0); pos2(rth0, 0); pos3(rth0, 0); pos4(rth0, 0);
+ rt x1r = rt x2r = hround 0.5(w-a);
+ w-rt x3r = lft x1l; x3 = x4;
+ top y1 = top y3 = h; bot y2 = bot y4 = -d;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(vvert_mod, 5.5u#+2appr#, 0, dh#);
+ "Double vertical line's module";
+ numeric a; a = max(2.5u-rth0, 2rth0);% blank space between bars
+ pickup tiny.nib;
+ pos1(rth0, 0); pos2(rth0, 0); pos3(rth0, 0); pos4(rth0, 0);
+ rt x1r = rt x2r = hround 0.5(w-a);
+ w-rt x3r = lft x1l; x3 = x4;
+ y1 = y3 = h+eps; y2 = y4 = -d-eps;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(vvvert_sign, 9u#+2appr#, body_height#, paren_depth#);
+ "Triple vertical line";
+ ensure_centering_of(rth0);
+ numeric a; a = max(2.75u-rth0, 2rth0);% blank space between bars
+ pickup tiny.nib;
+ pos1(rth0, 0); pos2(rth0, 0);
+ pos3(rth0, 0); pos4(rth0, 0);
+ pos5(rth0, 0); pos6(rth0, 0);
+ x3 = x4 = 0.5w; x1 = x2; x5 = x6;
+ lft x5l-rt x3r = lft x3l-rt x1r = hround a;
+ top y1 = top y3 = top y5 = h;
+ bot y2 = bot y4 = bot y6 = -d;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e;
+ penlabels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(vvvert_mod, 9u#+2appr#, 0, dh#);
+ "Triple vertical line's module";
+ ensure_centering_of(rth0);
+ numeric a; a = max(2.75u-rth0, 2rth0);% blank space between bars
+ pickup tiny.nib;
+ pos1(rth0, 0); pos2(rth0, 0);
+ pos3(rth0, 0); pos4(rth0, 0);
+ pos5(rth0, 0); pos6(rth0, 0);
+ x3 = x4 = 0.5w; x1 = x2; x5 = x6;
+ lft x5l-rt x3r = lft x3l-rt x1r = hround a;
+ y1 = y3 = y5 = h+eps; y2 = y4 = y6 = -d-eps;
+ filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e;
+ penlabels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(left_filet, 4stem#+2appr#, 0, dh#);
+ "extensible left filet";
+ pickup fine.nib;
+ y1r = y1l = 0; y5r = y5l = -d;
+ forsuffixes $ = r, l: y2$ = 0.25[y1r, y5r];
+ y3$ = 0.5[y1r, y5r]; y4$ = 0.75[y1r, y5r]; endfor
+ x1l = x5l = x4r = good.x 0.5w;
+ x1l-lft x3l = rt x2r-x4r = 2stem;
+ x2l = x4l = 0.5[x1l, x3l]; x1r = x3r = x5r = 0.5[x2r, x4r];
+ filldraw z1l{down}...z2l{(z3l-z1l)xscaled 2}...z3l{down}
+ ...z4l{(z5l-z3l)xscaled 2}...z5l{down}--
+ z5r{(z4r-z5r)xscaled 2}...z4r{up}...
+ z3r{(z2r-z3r)xscaled 2}...z2r{up}...
+ z1r{(z1r-z2r)xscaled 2}--cycle;
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(right_filet, 4stem#+2appr#, 0, dh#);
+ "extensible right filet";
+ pickup fine.nib;
+ y1r = y1l = 0; y5r = y5l = -d;
+ forsuffixes $ = r, l: y2$ = 0.25[y1r, y5r];
+ y3$ = 0.5[y1r, y5r]; y4$ = 0.75[y1r, y5r]; endfor
+ x1r = x5r = x2l = good.x 0.5w;
+ x2l-lft x4l = rt x3r-x1r = 2stem;
+ x1l = x3l = x5l = 0.5[x2l, x4l]; x2r = x4r = 0.5[x1r, x3r];
+ filldraw z1r{down}...z2r{(z3r-z1r)xscaled 2}...z3r{down}
+ ...z4r{(z5r-z3r)xscaled 2}...z5r{down}--
+ z5l{(z4l-z5l)xscaled 2}...z4l{up}...
+ z3l{(z2l-z3l)xscaled 2}...z2l{up}...
+ z1l{(z1l-z2l)xscaled 2}--cycle;
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+% HORIZONTAL BRACES (almost okay, check xdvi problems)
+
+beginchar(overbrace_left, 0.75dh#+appr#, cap_stem#, dh#);
+ "overbrace's left piece";
+ pickup fine.nib;
+ pos1(rth1, 180); pos2(cap_stem, 90);
+ bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ bot y1r = vround(y2-min(5u, 0.4dh+0.5cap_stem));
+ lft x1r = appr; x2 = w+eps;
+ filldraw stroke z1e up_to_right z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(overbrace_mid, 1.5dh#, cap_stem#, dh#);
+ "overbrace's middle piece";
+ pickup fine.nib;
+ pos1(cap_stem, -90); pos2(rth1, 0); pos3(cap_stem, 90);
+ bot y1r = bot y3l = vround (0.5[-d, h]-0.5cap_stem);
+ top y2 = vround(y3+min(5u, 0.4dh+0.5cap_stem));
+ x2 = hround 0.5(w-rth1); x1 = -eps; x3 = w+eps;
+ filldraw stroke z1e right_to_down z2e;
+ filldraw stroke z3e left_to_down z2e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(overbrace_right, 0.75dh#+appr#, cap_stem#, dh#);
+ "overbrace's right piece";
+ pickup fine.nib;
+ pos1(rth1, 0); pos2(cap_stem, 90);
+ bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ bot y1r = vround(y2-min(5u, 0.4dh+0.5cap_stem));
+ rt x1r = w-appr; x2 = -eps;
+ filldraw stroke z1e up_to_left z2e;
+ penlabels(1, 2);
+endchar;
+
+% 4u# ???
+beginchar(overbrace_mod, 0.5dh#, cap_stem#, dh#);
+ "overbrace's module piece";
+ pickup fine.nib;
+ pos1(cap_stem, 90); pos2(cap_stem, 90);
+ bot y1l = bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ x1 = -eps; x2 = w+eps;
+ filldraw stroke z1e..z2e; penlabels(1, 2);
+endchar;
+
+beginchar(underbrace_left, 0.75dh#+appr#, cap_stem#, dh#);
+ "underbrace's left piece";
+ pickup fine.nib;
+ pos1(rth1, 0); pos2(cap_stem, 90);
+ bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ top y1l = vround(y2+min(5u, 0.4dh+0.5cap_stem));
+ lft x1l = appr; x2 = w+eps;
+ filldraw stroke z1e down_to_right z2e;
+ penlabels(1, 2);
+endchar;
+
+beginchar(underbrace_mid, 1.5dh#, cap_stem#, dh#);
+ "underbrace's middle piece";
+ pickup fine.nib;
+ pos1(cap_stem, 90); pos2(rth1, 0); pos3(cap_stem, -90);
+ bot y1l = bot y3r = vround (0.5[-d, h]-0.5cap_stem);
+ bot y2 = vround(y3-min(5u, 0.4dh+0.5cap_stem));
+ x2 = hround 0.5(w-rth1); x1 = -eps; x3 = w+eps;
+ filldraw stroke z1e right_to_down z2e;
+ filldraw stroke z3e left_to_down z2e;
+ penlabels(1, 2, 3);
+endchar;
+
+beginchar(underbrace_right, 0.75dh#+appr#, cap_stem#, dh#);
+ "underbrace's right piece";
+ pickup fine.nib;
+ pos1(rth1, 180); pos2(cap_stem, 90);
+ bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ top y1l = vround(y2+min(5u, 0.4dh+0.5cap_stem));
+ rt x1l = w-appr; x2 = -eps;
+ filldraw stroke z1e down_to_left z2e;
+ penlabels(1, 2);
+endchar;
+
+% 4u# ???
+beginchar(underbrace_mod, 0.5dh#, cap_stem#, dh#);
+ "underbrace's module piece";
+ pickup fine.nib;
+ pos1(cap_stem, 90); pos2(cap_stem, 90);
+ bot y1l = bot y2l = vround (0.5[-d, h]-0.5cap_stem);
+ x1 = -eps; x2 = w+eps;
+ filldraw stroke z1e..z2e; penlabels(1, 2);
+endchar;
+
+% RADICALS
+rth := ceiling(rth.frac#*hppp);
+
+vardef tmp_program =
+% imperative coordinates
+ save a, b, c, f, sl; a = 2.75; b = 1.25;% slope factors
+ pickup crisp.nib; x1' = w; lft x5l = appr;
+ top y1r = h; y1' = h-0.5rth; bot y2r = bot y3r = -d-eps;
+ top y4l = vround 0.5[-d, h]+o; y5l = good.y 0.75[y2r, y4l];
+% numerical calculus
+ c = a*(y4l-y5l)+b*(y4l-y2r)+y1'-y2r;
+ vardef f(expr sl) =
+ sl*c-(1++(b*sl))*(curve-crisp)+0.5(rth-crisp)*(1+(1++sl))<x1'-x5l
+ enddef;
+ sl = solve f(0, (x1'-x5l)/(y1'-y5l));
+% setting other key points
+ x4l = good.x(x5l+a*sl*(y4l-y5l));
+ x2r = good.x(x1'-sl*(y1'-y2r)+0.5(rth-crisp)*(1++sl));
+ penpos1((rth-crisp)*(1++sl), 0);
+ pos5(min(hair, rth), angle(z4l-z5l)-90);
+ rt x2r-lft x3r = rth; z1r-z2r = whatever*(sl, 1);
+ adjust_slanted_bar(3r, 4l, 3, 4)(curve-crisp, -1);
+ z1l-z2l = whatever*(z1r-z2r); z2l = whatever[z3, z4l];
+ z4r-z5r = whatever*(z4l-z5l); z4r = whatever[z3r, z4];
+ z3l = 0.5[z2l, z4l];% it's not an interesting point
+ filldraw stroke z1e--z2e--z3e--z4e--z5e;
+ penlabels(1, 2, 3, 4, 5); labels(1');
+enddef;
+
+beginchar(radical_sign,
+ 15u#+letter_fit#, rth.frac#, body_height#+paren_depth#-rth.frac#);
+ "radical sign";
+ tmp_program;
+endchar;
+
+beginchar(radical_big,
+ 18u#+letter_fit#, rth.frac#, 2dh#-rth.frac#);
+ "big radical sign";
+ tmp_program;
+endchar;
+
+beginchar(radical_Big,
+ 18u#+letter_fit#, rth.frac#, 3dh#-rth.frac#);
+ "Big radical sign";
+ tmp_program;
+endchar;
+
+beginchar(radical_bigg,
+ 18u#+letter_fit#, rth.frac#, 4dh#-rth.frac#);
+ "bigg radical sign";
+ tmp_program;
+endchar;
+
+beginchar(radical_Bigg,
+ 18u#+letter_fit#, rth.frac#, 5dh#-rth.frac#);
+ "Bigg radical sign";
+ tmp_program;
+endchar;
+
+beginchar(radical_bot, 19u#+letter_fit#, 0, 3dh#);
+ "Extensible radical sign---bottom";
+ % imperative coordinates
+ save a, b, c, f, sl; a = 1; b = 1;% slope factors
+ pickup crisp.nib;
+ rt x1r = rt x2r = hround(w-6u+0.5rth); lft x5l = appr;
+ top y1r = h+1+eps; bot y2r = bot y3r = -d-eps;
+ top y4l = vround 0.9[-d, h]+o; y5l = good.y 0.75[y2r, y4l];
+% numerical calculus
+ c = a*(y4l-y5l)+b*(y4l-y2r);
+ vardef f(expr sl) =
+ sl*c-(1++(b*sl))*(curve-crisp)+0.5(rth-crisp)<x1r-x5l
+ enddef;
+ sl = solve f(0, (x1r-x5l)/(y1r-y5l));
+% setting other key points
+ x4l = good.x(x5l+a*sl*(y4l-y5l)); x3r = x1l;
+ pos1(rth, 0); pos5(min(hair, rth), angle(z4l-z5l)-90);
+ adjust_slanted_bar(3r, 4l, 3, 4)(curve-crisp, -1);
+ z1l-z2l = whatever*(z1r-z2r); z2l = whatever[z3, z4l];
+ z4r-z5r = whatever*(z4l-z5l); z4r = whatever[z3r, z4];
+ z3l = 0.5[z2l, z4l];% it's not an interesting point
+ filldraw stroke z1e--z2e--z3e--z4e--z5e;
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(radical_mod, 19u#+letter_fit#, 0, dh#);
+ "Extensible radical sign---module";
+ pickup crisp.nib; rt x1r = rt x2r = hround(w-6u+0.5rth);
+ y1 = h+1+eps; y2 = -d-1-eps; pos1(rth, 0); pos2(rth, 0);
+ filldraw stroke z1e..z2e; penlabels(1, 2);
+endchar;
+
+beginchar(radical_top, 19u#+letter_fit#, rth.frac#, dh#-rth.frac#);
+ "Extensible radical sign---top";
+ pickup crisp.nib; rt x3r = rt x2r = hround(w-6u+0.5rth);
+ x1 = good.x(w+0.5); bot y1r = bot y2r = 0; y3 = -d-1-eps;
+ x2l = x3l; y1l = y2l; pos1(rth, -90); pos3(rth, 0);
+ filldraw stroke z1e--z2e--z3e; penlabels(1, 2, 3);
+endchar;
+
+beginchar(group_left,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Left group";
+ a := hround 0[0.95stem, 0.95cap_stem];
+ pickup fine.nib;
+ top y1l = h; bot y4l = -d;
+ y2 = 0.75[y4r, y1r]; y3 = 0.25[y4r, y1r];
+ rt x1 = rt x4 = w-internal_adjustment;
+ lft x2l = lft x3l = external_adjustment;
+ pos1(rth0, -90); pos2(a, 0); pos3(a, 0); pos4(rth0, 90);
+ filldraw stroke z1e left_to_down
+ z2e..z3e down_to_right z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(group_left_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big left group";
+ a := hround 0.125[0.95stem, 0.95cap_stem];
+ pickup fine.nib;
+ top y1l = h; bot y4l = -d;
+ y2 = 0.75[y4r, y1r]; y3 = 0.25[y4r, y1r];
+ rt x1 = rt x4 = w-internal_adjustment;
+ lft x2l = lft x3l = external_adjustment;
+ pos1(rth0, -90); pos2(a, 0); pos3(a, 0); pos4(rth0, 90);
+ filldraw stroke z1e left_to_down
+ z2e..z3e down_to_right z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(group_right,
+ set_width(4u#, 0.2u#, 2u#), body_height#, paren_depth#);
+ "Right group";
+ a := hround 0[0.95stem, 0.95cap_stem];
+ pickup fine.nib;
+ top y1r = h; bot y4r = -d;
+ y2 = 0.75[y4l, y1l]; y3 = 0.25[y4l, y1l];
+ lft x1 = lft x4 = internal_adjustment;
+ rt x2r = rt x3r = w-external_adjustment;
+ pos1(rth0, 90); pos2(a, 0); pos3(a, 0); pos4(rth0, -90);
+ filldraw stroke z1e right_to_down
+ z2e..z3e down_to_left z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(group_right_big,
+ set_width(4.5u#, 0.4u#, 2.5u#), rth.frac#, 2dh#-rth.frac#);
+ "big right group";
+ a := hround 0.125[0.95stem, 0.95cap_stem];
+ pickup fine.nib;
+ top y1r = h; bot y4r = -d;
+ y2 = 0.75[y4l, y1l]; y3 = 0.25[y4l, y1l];
+ lft x1 = lft x4 = internal_adjustment;
+ rt x2r = rt x3r = w-external_adjustment;
+ pos1(rth0, 90); pos2(a, 0); pos3(a, 0); pos4(rth0, -90);
+ filldraw stroke z1e right_to_down
+ z2e..z3e down_to_left z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf
new file mode 100644
index 00000000000..43915e90c4b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf
@@ -0,0 +1,298 @@
+% mathematical symbols by Anthony Phan.
+% file: mathbdrv.mf (driver file for mathb serie)
+% last modification: May 16, 2005.
+
+mode_setup;
+
+math_setup;
+
+% Activate to allow characters with undefined code.
+% (for proof mode compilation)
+% let iff=always_iff;
+
+% BINARY OPERATORS
+
+currentlocation_ := 0;
+input mathbsym;
+
+% RELATIONS
+
+varnot_sign := hex"7F";
+
+% mathsymb.mf
+
+top_dot_equal_sign := hex"10";
+bot_dot_equal_sign := hex"11";
+top_bot_dot_equal_sign := hex"12";
+rising_dots_equal_sign := hex"13";
+falling_dots_equal_sign := hex"14";
+colon_equal_sign := hex"15";
+equal_colon_sign := hex"16";
+bump_equal := hex"17";
+pump_equal := hex"18";
+Bump_equal := hex"19";
+circ_equal_sign := hex"1A";
+equal_circ_sign := hex"1B";
+triangle_equal_sign := hex"1C";
+correspondance_sign := hex"1D";
+
+% MISCELLANEOUS
+
+Dominated_curly := hex"CE";
+Dominating_curly := hex"CF";
+
+% mathsymb.mf
+
+%times_left_three := hex"56";
+%times_right_three := hex"57";
+
+between_sign := hex"20";
+smile_sign := hex"21";
+frown_sign := hex"22";
+var_hash_sign := hex"23";
+times_left_three := hex"24";
+times_right_three := hex"25";
+pitchfork_sign := hex"26";
+bowtie_sign := hex"27";
+
+%between_sign := hex"2A";
+
+VDash_sign := hex"28";
+DashV_sign := hex"29";
+VDash_not := hex"2A";
+DashV_not := hex"2B";
+Vvdash_sign := hex"2C";
+dashVv_sign := hex"2D";
+Vvdash_not := hex"2E";
+dashVv_not := hex"2F";
+
+% MISCELLANEOUS
+% maya numerals
+
+therefore_sign := hex"36";
+because_sign := hex"37";
+
+accent_circ := hex"38";
+accent_dot := hex"39";
+accent_ddot := hex"3A";
+accent_dddot := hex"3B";
+accent_ddddot := hex"3C";
+
+angle_sign := hex"3D";
+measured_angle := hex"3E";
+spherical_angle := hex"3F";
+
+% ASTRONOMICAL SYMBOLS
+
+% mathastr.mf
+
+astro_sun := hex"40";
+astro_mercury := hex"41";
+astro_venus := hex"42";
+astro_earth := hex"43";
+astro_mars := hex"44";
+astro_jupiter := hex"45";
+astro_saturn := hex"46";
+astro_uranus := hex"47";
+astro_neptune := hex"48";
+astro_pluto := hex"49";
+astro_varearth := hex"4A";
+astro_left_moon := hex"4B";
+astro_right_moon := hex"4C";
+astro_full_moon := hex"4D";
+astro_new_moon := hex"4E";
+cemetery := hex"4F";
+ligtable cemetery:cemetery kern-2(u#+letter_fit#);
+
+astro_aries := hex"50";
+astro_taurus := hex"51";
+astro_gemini := hex"52";
+%astro_cancer := hex"53";
+astro_leo := hex"54";
+%astro_virgo := hex"55";
+astro_libra := hex"56";
+astro_scorpio := hex"57";
+%astro_sagittarius := hex"58";
+%astro_capricornus := hex"59";
+%astro_aquarius := hex"59";
+%astro_pisces := hex"59";
+
+% LETTER LIKE SYMBOLS
+
+% mathltlk.mf
+
+wedge_eq := hex"58";
+vee_eq := hex"59";
+wedge_eqq := hex"5A";
+vee_eqq := hex"5B";
+double_cap_sign := hex"5C";
+double_cup_sign := hex"5D";
+double_sqcap_sign := hex"5E";
+double_sqcup_sign := hex"5F";
+
+% DELIMITERS
+
+group_left := hex"70";
+group_right := hex"71";
+ceiling_left := hex"72";
+ceiling_right := hex"73";
+floor_left := hex"74";
+floor_right := hex"75";
+bracket_upper_lower_left := hex"76";
+bracket_upper_lower_right := hex"77";
+bracket_upper_left := hex"78";
+bracket_upper_right := hex"79";
+bracket_lower_left := hex"7A";
+bracket_lower_right := hex"7B";
+backslash_thick := hex"7C";
+slash_thick := hex"7D";
+vert_thick := hex"7E";
+
+% TRIANGLES AS BINARY OPERATORS
+
+triangle_small_up := hex"98";
+triangle_small_down := hex"99";
+triangle_small_left := hex"9A";
+triangle_small_right := hex"9B";
+triangle_small_full_up := hex"9C";
+triangle_small_full_down := hex"9D";
+triangle_small_full_left := hex"9E";
+triangle_small_full_right := hex"9F";
+
+% ARROWS and HARPOONS
+
+arrows_left_left := hex"D0";
+arrows_right_right := hex"D1";
+arrows_up_up := hex"D2";
+arrows_down_down := hex"D3";
+arrows_left_right := hex"D4";
+arrows_right_left := hex"D5";
+arrows_up_down := hex"D6";
+arrows_down_up := hex"D7";
+
+harpoons_left_left := hex"D8";
+harpoons_right_right := hex"D9";
+harpoons_up_up := hex"DA";
+harpoons_down_down := hex"DB";
+harpoon_left_bar := hex"DC";
+harpoon_right_bar := hex"DD";
+harpoon_bar_left := hex"DE";
+harpoon_bar_right := hex"DF";
+
+harpoon_left_right := hex"E0";
+harpoon_right_left := hex"E1";
+
+hook_left := hex"E2";
+hook_right := hex"E3";
+diag_up := hex"E4";
+diag_down := hex"E5";
+
+arrow_shift_up_left := hex"E8";
+arrow_shift_up_right := hex"E9";
+arrow_shift_down_left := hex"EA";
+arrow_shift_down_right := hex"EB";
+arrow_loop_up_left := hex"EC";
+arrow_loop_up_right := hex"ED";
+arrow_loop_down_left := hex"EE";
+arrow_loop_down_right := hex"EF";
+
+arrow_curve_top_left := hex"F0";
+arrow_curve_top_right := hex"F1";
+arrow_curve_top_left_right := hex"F2";
+arrow_curve_bot_left := hex"F3";
+arrow_curve_bot_right := hex"F4";
+arrow_curve_bot_left_right := hex"F5";
+arrow_circle_left := hex"F6";
+arrow_circle_right := hex"F7";
+arrow_squig_left := hex"F8";
+arrow_squig_right := hex"F9";
+arrow_squig_left_right := hex"FA";
+% ????????????? := hex"FB";
+arrow_left_to_right := hex"FC";
+arrow_right_to_left := hex"FD";
+arrow_up_to_down := hex"FE";
+arrow_down_to_up := hex"FF";
+
+% let the show begin :
+
+input mathastr;
+input maydigit;
+input mathltlk;
+input mathfine;
+input mathsymb;
+input mathsmsy;
+input mathbdel;
+input matharrw;
+
+main_name_string := "sqsubset";
+t := hex"80";
+forsuffixes $=,_not,_eq,_not_eq,_eq_not,
+ _eq_varnot,_eqq,_not_eqq,_eqq_not,_eqq_varnot,
+ _double,_double_not:
+ main_name_with($) := t; t := t+2; endfor;
+input mathsubs;
+
+main_name_string := "sqsupset";
+t := hex"81";
+forsuffixes $=,_not,_eq,_not_eq,_eq_not,
+ _eq_varnot,_eqq,_not_eqq,_eqq_not,_eqq_varnot,
+ _double,_double_not:
+ main_name_with($) := t; t := t+2; endfor;
+input mathsubs;
+
+main_name_string := "predecessor";
+t := hex"A0";
+forsuffixes $=,_not,_slant,_not_slant,
+ _eq,_not_eq,_eq_not,%_eq_varnot,
+ _eqq,_not_eqq,_eqq_not,_eqq_varnot,
+ _upperslant,_not_upperslant,
+ _opposite,_eq_opposite,_eqq_opposite,
+ _sim,_not_sim,_sim_not,_approx,_not_approx,_approx_not,_dot:
+ main_name_with($) := t; t := t+2; endfor;
+input mathineq;
+
+main_name_string := "successor";
+t := hex"A1";
+forsuffixes $=,_not,_slant,_not_slant,
+ _eq,_not_eq,_eq_not,%_eq_varnot,
+ _eqq,_not_eqq,_eqq_not,_eqq_varnot,
+ _upperslant,_not_upperslant,
+ _opposite,_eq_opposite,_eqq_opposite,
+ _sim,_not_sim,_sim_not,_approx,_not_approx,_approx_not,_dot:
+ main_name_with($) := t; t := t+2; endfor;
+input mathineq;
+
+main_name_string := "mbox";% ``m'' stands for medium.
+t := hex"60";
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ main_name_with($) := t; t := t+1; endfor;
+input mathmbcb;
+
+% see also:
+% _peace_and_love,_ying_yang,
+% _truc,_curt,_full_circle,_five_star,_six_star,
+% _triangle_down,_triangle_left,_triangle_right,
+% _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+% _wedge,_vee,
+% _black_left,_black_right,_black_top,_black_bot,
+% _black_northwest,_black_northeast,_black_southwest,_black_southeast:
+
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+%font_normal_stretch=3u#;
+%font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+font_extra_space=2u#;
+font_normal_space=6u#+2letter_fit#;
+
+end.
+
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf
new file mode 100644
index 00000000000..63b82899e5a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf
@@ -0,0 +1,846 @@
+% mathematical symbols by Anthony Phan.
+% file: mathbigs.mf (large symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list =
+ 0.5[-d, h]-math_axis, 0.5[-d, h]-math_axis+x_height,
+ 0.25[-d, h], 0.5[-d, h], 0.75[-d, h] enddef;
+
+% PARAMETERS
+
+text_rth# := 0[0.95stem#, 0.95cap_stem#];
+disp_rth# := 0.75[0.95stem#, 0.95cap_stem#];
+disp_stem# := 1.25cap_stem#;
+disp_hair# := max(rth1#, cap_hair#*(cap_curve#/cap_stem#));
+define_whole_blacker_pixels(text_rth, disp_rth, disp_stem, disp_hair);
+
+% SUMMATIONS
+
+def tmp_program(expr lowerstem, sidestem, upperstem, beak, hair, beakjut, lo) =
+ pickup crisp.nib;
+ top y1 = top y2 = h; bot y5 = bot y6 = -d;
+ bot y12 = h-vround upperstem; y12 = y13 = y13';
+ bot y14 = bot y15 = h-vround(upperstem+beak);
+ top y9 = -d+vround lowerstem; y9 = y9' = y10;
+ top y7 = top y8 = -d+vround(lowerstem+beak);
+ y3 = y12; y0 = 0.5[y12, y9];
+ rt x6 = w-appr; x6 = x7 = x15 = x1+hround beakjut;
+ lft x2 = appr; x2 = x3; rt x5 = appr-hround lo;
+ rt x7-lft x8 = rt x15- lft x14 = hround hair;
+ x0 = floor(0.5[x2, x7])+0.5;
+ x9 = x13 = 0.5[x0, x14]; x9' = x8; z13'-z14 = whatever*(z1-z15);
+ adjust_slanted_bar(3, 0, 3', 0', max(.5(sidestem-crisp), 1), 1);
+ z11-z0 = z0-z0'; z12 = whatever[z3+2(z3'-z3), z11];
+ adjust_slanted_bar(5, 11, 5', 11', max(hair-crisp, 1), -1);
+ z10 = whatever[z11, z5'];
+ z4 = whatever[z5', z11']; z4 = whatever[z3, z0'];
+ filldraw z1--z2--z3--z4--z5--z6--z7--z8{down}
+ ...beak_darkness[z9', 0.5[z8, z9]]...z9{left}
+ --z10--z11--z12--z13{right}
+ ...beak_darkness[z13', 0.5[z13, z14]]...z14{z15-z1}
+ --z15--cycle;
+ labels(0, 0', 1, 2, 3, 3', 4, 5, 5', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+enddef;
+
+beginchar(small_summation_sign, 8u#+2appr#, 0.8asc_height#, 0);
+ "Small summation sign";
+ tmp_program(stem, stem, hair, 0.36h-stem, hair, 0.2u, 0.5u);
+endchar;
+
+beginchar(summation_sign, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle summation sign";
+ tmp_program(cap_stem, cap_stem, cap_hair, 0.333d-d/9,
+ cap_hair, 0.4u, 5/7u);
+endchar;
+
+beginchar(Summation_sign, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle summation sign";
+ tmp_program(disp_stem, disp_stem, disp_hair, 0.333d-d/9,
+ disp_hair, 0.75u, u);
+
+endchar;
+
+% PRODUCTS AND COPRODUCTS
+
+def tmp_program(expr orientation, appr_corr,
+ stem, hair, jut, inner_jut, bracket, dish) =
+ if orientation = up: top y1 = top y3 = h; bot y2 = bot y4 = -d;
+ else: top y2 = top y4 = h; bot y1 = bot y3 = -d; fi
+ pos1(hround stem, 0); pos2(hround stem, 0);
+ pos3(hround stem, 0); pos4(hround stem, 0);
+ lft x1l = lft x2l = appr+hround(appr_corr+jut);
+ rt x3r = rt x4r = w-appr-hround(appr_corr+jut);
+ serif(1, 2, bracket, jut, hair, false, dish, 0, hair, true, 0);
+ serif(2, 1, bracket, jut, hair, true, dish, inner_jut, hair, true, dish);
+ serif(3, 4, bracket, 0, hair, false, 0, jut, hair, true, dish);
+ serif(4, 3, bracket, inner_jut, hair, true, dish, jut, hair, true, dish);
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw z1f--z3c--z3d--z1e--cycle;
+ penlabels(1, 2, 3, 4);
+enddef;
+
+beginchar(small_product_sign, 8u#+2appr#, 0.8asc_height#, 0);
+ "Small product sign";
+ pickup crisp.nib;
+ tmp_program(up, -0.875u, stem, hair, u, u, 0.5u, dish);
+endchar;
+
+beginchar(product_sign, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle product sign";
+ pickup crisp.nib;
+ tmp_program(up, 0, cap_stem, cap_hair, 1.8u, 1.8u, 0.9u, dish);
+endchar;
+
+beginchar(Product_sign, 21u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle product sign";
+ pickup crisp.nib;
+ tmp_program(up, 0, disp_stem, disp_hair, 2.4u, 2.4u, 1.2u, dish);
+endchar;
+
+beginchar(small_coproduct_sign, 8u#+2appr#, 0.8asc_height#, 0);
+ "Small coproduct sign";
+ pickup crisp.nib;
+ tmp_program(down, -0.875u, stem, hair, u, u, 0.5u, dish);
+endchar;
+
+beginchar(coproduct_sign, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle coproduct sign";
+ pickup crisp.nib;
+ tmp_program(down, 0, cap_stem, cap_hair, 1.8u, 1.8u, 0.9u, dish);
+endchar;
+
+beginchar(Coproduct_sign, 21u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle coproduct sign";
+ pickup crisp.nib;
+ tmp_program(down, 0, disp_stem, disp_hair, 2.4u, 2.4u, 1.2u, dish);
+endchar;
+
+% BIG PLUS, BIG TIMES
+
+beginchar(bplus_sign, 10/6dh#+2appr#, 0, 10/6dh#);
+ "Textstyle big plus sign";
+ use_rule2;
+ pickup rule.nib; y3 = y4 = good.y 0.5[-d, h];
+ pickup tiny.nib;
+ pos1(rth, 0); pos2(rth, 0); pos3(rth, 90); pos4(rth, 90);
+ lft x1l = hround 0.5(w-rth); x2 = x1;
+ lft x3 = Appr; x1-x3 = x4-x1 = y1-y3 = y3-y2;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bplus_sign, 14/6dh#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle big plus sign";
+ use_rule3;
+ pickup rule.nib; y3 = y4 = good.y 0.5[-d, h];
+ pickup tiny.nib;
+ pos1(rth, 0); pos2(rth, 0); pos3(rth, 90); pos4(rth, 90);
+ lft x1l = hround 0.5(w-rth); x2 = x1;
+ lft x3 = Appr; x1-x3 = x4-x1 = y1-y3 = y3-y2;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(btimes_sign, 10/6dh#+2appr#, 0, 10/6dh#);
+ "Textstyle big times sign";
+ use_rule2;
+ pickup rule.nib; x0 = good.x 0.5w;
+ y0 = y0' = good.y 0.5[-d, h];
+ pickup tiny.nib; rt x0' = w-Appr;
+ z1-z0 = z0-z2 = (z0'-z0) rotated 45; z3-z0 = z0-z4 = (z0'-z0) rotated -45;
+ pos1(rth+2eps, -45); pos2(rth+2eps, -45);
+ pos3(rth+2eps, 45); pos4(rth+2eps, 45);
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z3e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Btimes_sign, 14/6dh#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle big times sign";
+ use_rule3;
+ pickup rule.nib; x0 = good.x 0.5w;
+ y0 = y0' = good.y 0.5[-d, h];
+ pickup tiny.nib; rt x0' = w-Appr;
+ z1-z0 = z0-z2 = (z0'-z0) rotated 45; z3-z0 = z0-z4 = (z0'-z0) rotated -45;
+ pos1(rth+2eps, -45); pos2(rth+2eps, -45);
+ pos3(rth+2eps, 45); pos4(rth+2eps, 45);
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z3e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+% COMPLEMENTS
+
+beginchar(bcomplement, 7.5u#+2appr#, 0, 10/6dh#);
+ "Textstyle complement";
+ autorounded; pickup tiny.nib;
+ pos1(text_rth, 0); pos2(text_rth, 0);
+ pos7(text_rth, 0); pos8(text_rth, 0);
+ h-bot y1 = top y8+d = vround 0.25(h+d);
+ y3+0.5text_rth = h+vround(o*((h+d)/cap_height))+eps;
+ y6-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ rt x1r = w-appr; x1 = x2 = x7 = x8;
+ x4 = x5 = appr+0.5text_rth; x3 = x6 = 0.5[x1, x4];
+ y2 = y4 = max(y3-x1+x3, 1/6[y1, y3]);
+ y5 = y7 = min(y6+x1-x3, 1/6[y8, y6]);
+ filldraw stroke z1e..z2e; filldraw stroke z7e..z8e;
+ pickup pencircle scaled text_rth;
+ draw flatcup(z2, z3, z4)..flatcup(z5, z6, z7);
+% z4..z5 down_to_right z6 right_to_up z7;
+ penlabels(1, 2, 7, 8); labels(3, 4, 5, 6);
+endchar;
+
+beginchar(Bcomplement, 10u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "displaystyle complement";
+ autorounded; pickup tiny.nib;
+ pos1(disp_rth, 0); pos2(disp_rth, 0);
+ pos7(disp_rth, 0); pos8(disp_rth, 0);
+ h-bot y1 = top y8+d = vround 0.25(h+d);
+ y3+0.5disp_rth = h+vround(o*((h+d)/cap_height))+eps;
+ y6-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ rt x1r = w-appr; x1 = x2 = x7 = x8;
+ x4 = x5 = appr+0.5disp_rth; x3 = x6 = 0.5[x1, x4];
+ y2 = y4 = max(y3-x1+x3, 1/6[y1, y3]);
+ y5 = y7 = min(y6+x1-x3, 1/6[y8, y6]);
+ filldraw stroke z1e..z2e; filldraw stroke z7e..z8e;
+ pickup pencircle scaled disp_rth;
+ draw flatcup(z2, z3, z4)..flatcup(z5, z6, z7);
+% z2 up_to_left z3 left_to_down
+% z4..z5 down_to_right z6 right_to_up z7;
+ penlabels(1, 2, 7, 8); labels(3, 4, 5, 6);
+endchar;
+
+%
+% TRUCS
+%
+
+beginchar(btruc_sign, 10/6dh#+2appr#, 0, 10/6dh#);
+ "Textstyle truc sign";
+ pickup tiny.nib;
+ pos1(rth2, 0); pos2(rth2, 0); pos3(rth2, 90); pos4(rth2, 90);
+ top y1 = top y3r = top y4r = h; bot y2 = -d;
+ lft x1l = hround 0.5(w-rth2); x2 = x1;
+ lft x3 = Appr; x1-x3 = x4-x1; filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Btruc_sign, 14/6dh#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle truc sign";
+ pickup tiny.nib;
+ pos1(rth3, 0); pos2(rth3, 0); pos3(rth3, 90); pos4(rth3, 90);
+ top y1 = top y3r = top y4r = h; bot y2 = -d;
+ lft x1l = hround 0.5(w-rth2); x2 = x1;
+ lft x3 = Appr; x1-x3 = x4-x1; filldraw stroke z1e..z2e;
+ filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(bcurt_sign, 10/6dh#+2appr#, 0, 10/6dh#);
+ "Textstyle curT sign";
+ pickup tiny.nib;
+ pos1(rth2, 0); pos2(rth2, 0); pos3(rth2, 90); pos4(rth2, 90);
+ bot y1 = bot y3l = bot y4l = -d; top y2 = h;
+ lft x1l = hround 0.5(w-rth); x2 = x1;
+ lft x3 = appr; x1-x3 = x4-x1; filldraw stroke z2e..z1e;
+ filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bcurt_sign, 14/6dh#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle curT sign";
+ pickup tiny.nib;
+ pos1(rth3, 0); pos2(rth3, 0); pos3(rth3, 90); pos4(rth3, 90);
+ bot y1 = bot y3l = bot y4l = -d; top y2 = h;
+ lft x1l = hround 0.5(w-rth); x2 = x1;
+ lft x3 = appr; x1-x3 = x4-x1; filldraw stroke z2e..z1e;
+ filldraw stroke z3e..z4e; penlabels(1, 2, 3, 4);
+endchar;
+
+%
+% CUPS AND CAPS : STEMS MATCH BRACKETS ONES
+%
+
+beginchar(bcap_sign, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle cap sign";
+ pickup tiny.nib;
+ pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ bot y1 = bot y5 = -d; y3+0.5text_rth = h+vround(o*((h+d)/cap_height))+eps;
+ y2 = y4 = max(y3-0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(Bcap_sign, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle cap sign";
+ pickup tiny.nib;
+ pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ bot y1 = bot y5 = -d; y3+0.5disp_rth = h+vround(o*((h+d)/cap_height))+eps;
+ y2 = y4 = max(y3-0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(bcup_sign, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle cup sign";
+ pickup tiny.nib;
+ pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ top y1 = top y5 = h; y3-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(Bcup_sign, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle cup sign";
+ pickup tiny.nib;
+ pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ top y1 = top y5 = h; y3-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(bcup_plus, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle cup-plus sign";
+ ensure_centering_of(rth2);
+ %
+ pickup tiny.nib;
+ pos1(text_rth, 0); pos2(text_rth, 0); pos4(text_rth, 0); pos5(text_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ top y1 = top y5 = h; y3-0.5text_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ %
+ pos6(rth2, 0); pos7(rth2, 0); pos8(rth2, 90); pos9(rth2, 90);
+ y8 = y9 = vround(0.5[-d, h]-0.5rth2)+0.5rth2;
+ x6 = x7 = 0.5w;
+ numeric a;
+ a = 0.5(min(lft x5l-rt x1r-2.6u, h+d-text_rth-1.3u)-text_rth);
+ y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ %
+ pickup pencircle scaled text_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+beginchar(Bcup_plus, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle cup-plus sign";
+ ensure_centering_of(rth3);
+ %
+ pickup tiny.nib;
+ pos1(disp_rth, 0); pos2(disp_rth, 0); pos4(disp_rth, 0); pos5(disp_rth, 0);
+ lft x1l = lft x2l = appr; rt x4r = rt x5r = w-appr; x3 = 0.5[x2, x4];
+ top y1 = top y5 = h; y3-0.5disp_rth = -d-vround(o*((h+d)/cap_height))-eps;
+ y2 = y4 = min(y3+0.5(x4-x2), 0.5[y3, y1]);
+ filldraw stroke z2e..z1e; filldraw stroke z4e..z5e;
+ %
+ pos6(rth3, 0); pos7(rth3, 0); pos8(rth3, 90); pos9(rth3, 90);
+ y8 = y9 = vround(0.5[-d, h]-0.5rth3)+0.5rth3;
+ x6 = x7 = 0.5w;
+ numeric a;
+ a = 0.5(min(lft x5l-rt x1r-2.9u, h+d-disp_rth-1.45u)-disp_rth);
+ y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ %
+ pickup pencircle scaled disp_rth; autorounded; draw flatcup(z2, z3, z4);
+ penlabels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+beginchar(bsqcap_sign, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle square cap sign";
+ pickup tiny.nib;
+ pos1(text_rth, 180); pos4(text_rth, 0);
+ top y2r = top y3r = h; bot y1 = bot y4 = -d;
+ top y2r-bot y2l = top y3r-bot y3l = text_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bsqcap_sign, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle square cap sign";
+ pickup tiny.nib;
+ pos1(disp_rth, 180); pos4(disp_rth, 0);
+ top y2r = top y3r = h; bot y1 = bot y4 = -d;
+ top y2r-bot y2l = top y3r-bot y3l = disp_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(bsqcup_sign, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle square cup sign";
+ pickup tiny.nib;
+ pos1(text_rth, 180); pos4(text_rth, 0);
+ bot y2r = bot y3r = -d; top y1 = top y4 = h;
+ top y2l-bot y2r = top y3l-bot y3r = text_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bsqcup_sign, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle square cup sign";
+ pickup tiny.nib;
+ pos1(disp_rth, 180); pos4(disp_rth, 0);
+ bot y2r = bot y3r = -d; top y1 = top y4 = h;
+ top y2l-bot y2r = top y3l-bot y3r = disp_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(bsqcup_plus, 14u#+2appr#, 0, 10/6dh#);
+ "Textstyle square cup-plus sign";
+ ensure_centering_of(rth2);
+ %
+ pickup tiny.nib;
+ pos1(text_rth, 180); pos4(text_rth, 0);
+ bot y2r = bot y3r = -d; top y1 = top y4 = h;
+ top y2l-bot y2r = top y3l-bot y3r = text_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ %
+ pos6(rth2, 0); pos7(rth2, 0); pos8(rth2, 90); pos9(rth2, 90);
+ y8 = y9 = vround(0.5[-d, h]-0.5rth2)+0.5rth2;
+ x6 = x7 = 0.5w;
+ numeric a;
+ a = 0.5(min(lft x4l-rt x1l-2.6u, h+d-text_rth-1.3u)-text_rth);
+ y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ penlabels(1, 2, 3, 4, 6, 7, 8, 9);
+endchar;
+
+beginchar(Bsqcup_plus, 18u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle square cup-plus sign";
+ ensure_centering_of(rth3);
+ %
+ pickup tiny.nib;
+ pos1(disp_rth, 180); pos4(disp_rth, 0);
+ bot y2r = bot y3r = -d; top y1 = top y4 = h;
+ top y2l-bot y2r = top y3l-bot y3r = disp_rth;
+ lft x1r = appr; rt x4r = w-appr;
+ x2r = x1r; x3r = x4r; x2l = x1l; x3l = x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ %
+ pos6(rth3, 0); pos7(rth3, 0); pos8(rth3, 90); pos9(rth3, 90);
+ y8 = y9 = vround(0.5[-d, h]-0.5rth3)+0.5rth3;
+ x6 = x7 = 0.5w;
+ numeric a;
+ a = 0.5(min(lft x4l-rt x1l-2.9u, h+d-disp_rth-1.45u)-disp_rth);
+ y6-y8r = y8l-y7 = vround a; x6l-x8 = x9-x6r = hround a;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ penlabels(1, 2, 3, 4, 6, 7, 8, 9);
+endchar;
+
+%
+% WEDGES AND VEES
+%
+
+beginchar(bwedge_sign, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle wedge sign";
+ pickup tiny.nib;
+ lft x1 = appr; x2 = good.x 0.5w;
+ x3-x2 = x2-x1; bot y1 = -d; y1 = y3 = y4 = y6;
+ top y2 = h+vround(o*((h+d)/cap_height))+eps;
+ x6-x1 = diag_width(text_rth-tiny, z2-z1);
+ x3-x4 = diag_width(text_rth-tiny, z2-z3);
+ z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1);
+ filldraw z1--z2--z3--z4--z5--z6--cycle;
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(Bwedge_sign, 22.4u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle wedge sign";
+ pickup tiny.nib;
+ lft x1 = appr; x2 = good.x 0.5w;
+ x3-x2 = x2-x1; bot y1 = -d; y1 = y3 = y4 = y6;
+ top y2 = h+vround(o*((h+d)/cap_height))+eps;
+ x6-x1 = diag_width(disp_rth-tiny, z2-z1);
+ x3-x4 = diag_width(disp_rth-tiny, z2-z3);
+ z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1);
+ filldraw z1--z2--z3--z4--z5--z6--cycle;
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(bvee_sign, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle vee sign";
+ pickup tiny.nib;
+ lft x1 = appr; x2 = good.x 0.5w;
+ x3-x2 = x2-x1; top y1 = h; y1 = y3 = y4 = y6;
+ bot y2 = -d-vround(o*((h+d)/cap_height))-eps;
+ x6-x1 = diag_width(text_rth-tiny, z2-z1);
+ x3-x4 = diag_width(text_rth-tiny, z2-z3);
+ z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1);
+ filldraw z1--z2--z3--z4--z5--z6--cycle;
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(Bvee_sign, 22.4u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle vee sign";
+ pickup tiny.nib;
+ lft x1 = appr; x2 = good.x 0.5w;
+ x3-x2 = x2-x1; top y1 = h; y1 = y3 = y4 = y6;
+ bot y2 = -d-vround(o*((h+d)/cap_height))-eps;
+ x6-x1 = diag_width(disp_rth-tiny, z2-z1);
+ x3-x4 = diag_width(disp_rth-tiny, z2-z3);
+ z5-z4 = whatever*(z2-z3); z5-z6 = whatever*(z2-z1);
+ filldraw z1--z2--z3--z4--z5--z6--cycle;
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+beginchar(bwedge_curly, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle curly wedge sign";
+ pickup tiny.nib;
+ x2 = hround 0.5(w-text_rth)+0.5text_rth;
+ top y2 = h+vround(o*((h+d)/cap_height))+eps;
+ pos2(text_rth, 0); bot y1r = bot y3l = -d;
+ lft x1r = appr;
+ x3l-x2r = x2l-x1r; x1l = x1r; x3l = x3r;
+ x4 = x2; pos4(text_rth, 0); y4 = 0.625[y2, y1r];
+ y1l-y1r = y3r-y3l = (text_rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{down}...z1e{z1r-z4r};
+ filldraw stroke z2e{down}...z3e{z3l-z4l};
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bwedge_curly, 22.4u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle curly wedge sign";
+ pickup tiny.nib;
+ x2 = hround 0.5(w-disp_rth)+0.5disp_rth;
+ top y2 = h+vround(o*((h+d)/cap_height))+eps;
+ pos2(disp_rth, 0); bot y1r = bot y3l = -d;
+ lft x1r = appr;
+ x3l-x2r = x2l-x1r; x1l = x1r; x3l = x3r;
+ x4 = x2; pos4(disp_rth, 0); y4 = 0.625[y2, y1r];
+ y1l-y1r = y3r-y3l = (disp_rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{down}...z1e{z1r-z4r};
+ filldraw stroke z2e{down}...z3e{z3l-z4l};
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(bvee_curly, 16u#+2appr#, 0, 10/6dh#);
+ "Textstyle curly vee sign";
+ pickup tiny.nib;
+ x2 = hround 0.5(w-text_rth)+0.5text_rth;
+ bot y2 = -d-vround(o*((h+d)/cap_height))-eps;
+ pos2(text_rth, 0); top y1r = top y3l = h;
+ lft x1r = appr;
+ x1l = x1r; x3l = x3r; x3l-x2r = x2l-x1r;
+ x4 = x2; pos4(text_rth, 0); y4 = 0.625[y2, y1r];
+ y1r-y1l = y3l-y3r = (text_rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{up}...z1e{z1r-z4r};
+ filldraw stroke z2e{up}...z3e{z3l-z4l};
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bvee_curly, 22.4u#+2appr#, 0, 14/6dh#);
+ padded bigop_padding#;
+ "Displaystyle curly vee sign";
+ pickup tiny.nib;
+ x2 = hround 0.5(w-disp_rth)+0.5disp_rth;
+ bot y2 = -d-vround(o*((h+d)/cap_height))-eps;
+ pos2(disp_rth, 0); top y1r = top y3l = h;
+ lft x1r = appr;
+ x1l = x1r; x3l = x3r; x3l-x2r = x2l-x1r;
+ x4 = x2; pos4(disp_rth, 0); y4 = 0.625[y2, y1r];
+ y1r-y1l = y3l-y3r = (disp_rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{up}...z1e{z1r-z4r};
+ filldraw stroke z2e{up}...z3e{z3l-z4l};
+ penlabels(1, 2, 3, 4);
+endchar;
+
+% UGLY
+
+beginchar(btriangle_up, 16u#+2appr#, 0, 10/6dh#);
+ "Big triangle up";
+ pickup tiny.nib; lft x1r = appr;
+ x2r = good.x 0.5w; x3r-x2r = x2r-x1r;
+ bot y1r = -d; y1r = y3r = y1 = y3; top y2r = h+o;
+ top y1l-bot y1r = top y3l-bot y3r = rth;
+ x1-x1r = diag_width(rth-tiny, z2r-z1r);
+ x3r-x3 = diag_width(rth-tiny, z2r-z3r);
+ z2l-z1 = whatever*(z2r-z1r); z2l-z3 = whatever*(z2r-z3r);
+ z1l = whatever[z1, z2l]; z3l = whatever[z3, z2l];
+ filldraw stroke z1e--z2e--z3e--z1e; penlabels(1, 2, 3);
+endchar;
+
+beginchar(btriangle_down, 16u#+2appr#, 0, 10/6dh#);
+ "Big triangle down";
+ pickup tiny.nib; lft x1r = appr;
+ x2r = good.x 0.5w; x3r-x2r = x2r-x1r;
+ top y1r = h; y1r = y3r = y1 = y3; bot y2r = -d-o;
+ top y1r-bot y1l = top y3r-bot y3l = rth;
+ x1-x1r = diag_width(rth-tiny, z2r-z1r);
+ x3r-x3 = diag_width(rth-tiny, z2r-z3r);
+ z2l-z1 = whatever*(z2r-z1r); z2l-z3 = whatever*(z2r-z3r);
+ z1l = whatever[z1, z2l]; z3l = whatever[z3, z2l];
+ filldraw stroke z1e--z2e--z3e--z1e; penlabels(1, 2, 3);
+endchar;
+
+% INTEGRALS
+
+beginchar(bintegral_sign,6u#+2appr#,0,100/54dh#);
+ "Textstyle integral sign";
+ z.c=(0.5w,0.5[-d,h]);
+ y.t=y.tl=y.tr=h; y.b=y.bl=y.br=-d;
+ x.c-x.t=x.b-x.c=2.3u;% slope
+ x.tr-x.t=x.t-x.tl=x.br-x.b=x.b-x.bl=.5cap_stem/sind(angle(z.t-z.c));
+ z1 = 0.52[z.bl,z.tl];
+ z2 = (hround(appr+u), 0.82[-d, h]);
+ z3 = (w-appr-2.3u, 1[-d, h]);
+ z4 = (w-appr, 0.63[y3, y5]);
+ z5 = (w-appr-0.7u, vround(h-0.2dh));
+ z6 = (w-appr-2.5u, 1[-d, h]-cap_hair);
+ z7 = 0.75[z.br,z.tr];
+ x1.2=x2; z1.2-z1=whatever*(z.t-z.c);
+ y6.7=y6; z6.7-z7=whatever*(z.t-z.c);
+ path lastpath;
+ lastpath :=
+ z1..controls 0.6[z1,z1.2] and 0.5[z2,z1.2]..
+ z2..controls(x2, 0.55[y2, y3]) and (0.65[x3, x2], y3)..
+ z3..controls(0.79[x3, x4], y3) and (x4, 0.44[y4, y3])..
+ z4..controls(x4, 0.6[y4, y5]) and (0.6[x5, x4], y5)..
+ z5..controls(0.65[x5, x6], y5) and (0.6[x6, x5], y6)..
+ z6..controls 0.6[z6, z6.7] and 0.65[z7, z6.7]..
+ z7;
+ lastpath := lastpath--lastpath rotated 180 shifted (w, -d)--cycle;
+ fill lastpath;
+ labels(1,2,3,4,5,6,7,1.2,6.7);
+ charwd:=charwd-u#; italcorr 0.5u#; w:= round(charwd*hppp);
+ tmp_picture := currentpicture;
+endchar;
+
+beginchar(bintegral_double, 11.5u#+2appr#, 0, 100/54dh#);
+ "Textstyle double integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 6.5u, 0));
+endchar;
+
+beginchar(bintegral_triple,
+ 18u#+2appr#, 0, 100/54dh#);
+ "Textstyle triple integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 6.5u, 0))
+ +(tmp_picture shifted (2hround 6.5u, 0));
+endchar;
+
+beginchar(bintegral_contour, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle contour integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup rule.nib0;
+ rt x1 = w-appr+hround 1.5u+eps;
+ lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+3.5u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ labels(1,2,3,4);
+endchar;
+
+arrow_head_fitting:= true;
+arrow_width := 2ceiling 0.70spread1+rth;
+arrow_height# := 4u#;
+arrow_height := round 4u;
+arrow_breadth := rth;
+arrow_stress := 0.65;
+arrow_tense1 := 0.75;
+arrow_tense2 := 0.875;
+
+beginchar(bintegral_contour_pos, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle positive contour integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup rule.nib0;
+ rt x1 = w-appr+hround 1.5u+eps;
+ lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+3.5u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ pickup tiny.nib;
+ arrow_head5(subpath (0,3) of (z4 right_to_up z1 up_to_left z2), both);
+ labels(1, 2, 3, 4, 5, 5l, 5r);
+endchar;
+
+beginchar(bintegral_contour_neg, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle negative contour integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup rule.nib0;
+ rt x1 = w-appr+hround 1.5u+eps;
+ lft x3 = appr-hround 0.5u-eps; x2=x4=0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+3.5u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ pickup tiny.nib;
+ arrow_head5(subpath (0,3) of (z2 right_to_down z1 down_to_left z4), both);
+ labels(1, 2, 3, 4, 5, 5l, 5r);
+endchar;
+
+beginchar(bintegral_square, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle square integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup tiny.nib;
+ top y1r = top y2r = vround(0.5[-d, h]+3.5u);
+ rt x2r = rt x3r = w-appr+hround 1.5u;
+ 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h];
+ lft x1r=lft x4r=appr-hround 0.5u;
+ rt x1l-lft x1r = rt x2r-lft x2l
+ = rt x3r-lft x3l = rt x4l-lft x4r = rth0;
+ top y1r-bot y1l = top y2r-bot y2l
+ = top y3l-bot y3r = top y4l-bot y4r = rth0;
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ penlabels(1, 2, 3, 4);
+endchar;
+
+beginchar(bintegral_square_pos, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle positive square integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup tiny.nib;
+ top y1r = top y2r = vround(0.5[-d, h]+3.5u);
+ rt x2r = rt x3r = w-appr+hround 1.5u;
+ 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h];
+ lft x1r=lft x4r=appr-hround 0.5u;
+ rt x1l-lft x1r = rt x2r-lft x2l
+ = rt x3r-lft x3l = rt x4l-lft x4r = rth0;
+ top y1r-bot y1l = top y2r-bot y2l
+ = top y3l-bot y3r = top y4l-bot y4r = rth0;
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ pickup tiny.nib; z2=0.5[z2l,z2r]; z3=0.5[z3l,z3r];
+ arrow_head5(z3..0.75[z3,z2], both);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(bintegral_square_neg, 5u#+2appr#, 0, 100/54dh#);
+ "Textstyle negative square integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture;
+ pickup tiny.nib;
+ top y1r = top y2r = vround(0.5[-d, h]+3.5u);
+ rt x2r = rt x3r = w-appr+hround 1.5u;
+ 0.5[y1r, y3r] = 0.5[y2r, y4r] = 0.5[-d, h];
+ lft x1r=lft x4r=appr-hround 0.5u;
+ rt x1l-lft x1r = rt x2r-lft x2l
+ = rt x3r-lft x3l = rt x4l-lft x4r = rth0;
+ top y1r-bot y1l = top y2r-bot y2l
+ = top y3l-bot y3r = top y4l-bot y4r = rth0;
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ pickup tiny.nib; z2=0.5[z2l,z2r]; z3=0.5[z3l,z3r];
+ arrow_head5(z2..0.75[z2,z3], both);
+ penlabels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar(bintegral_dblcont, 11u#+2appr#, 0, 100/54dh#);
+ "Textstyle double contour integral sign";
+ italcorr 0.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 6u, 0));
+ pickup rule.nib0;
+ rt x1 = w-appr+hround 1.5u+eps; lft x3 = appr-hround 0.5u-eps;
+ x2 = x4 = 0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+3.5u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar(Bintegral_sign, 12u#+2appr#,0,200/54dh#);
+% save disp_stem; disp_stem=hround 2.2u;%46/36pt;
+ z1 = (hround(0.5w-0.5disp_stem), 0.52[-d, h]);
+ z2 = (w-appr-2.6u, 1[-d, h]);
+ z3 = (w-appr, 0.63[y2, y4]);
+ z4 = (w-appr-0.9u, vround(h-0.24dh));
+ z5 = (w-appr-2.8u, 1[-d, h]-disp_hair);
+ z6 = (x1+disp_stem, 0.75[-d, h]);
+ path lastpath;
+ lastpath :=
+ z1..controls(x1, 0.6[y1, y2]) and (0.85[x2, x1], y2)..
+ z2..controls(0.79[x2, x3], y2) and (x3, 0.44[y3, y2])..
+ z3..controls(x3, 0.6[y3, y4]) and (0.6[x4, x3], y4)..
+ z4..controls(0.65[x4, x5], y4) and (0.6[x5, x4], y5)..
+ z5..controls(0.55[x5, x6], y5) and (x6, 0.8[y6, y5])..
+ z6;
+ lastpath := lastpath--lastpath shifted (-x1,0)
+ rotated 180 shifted (x6, -d)--cycle;
+ fill lastpath;
+ labels(1,2,3,4,5,6);
+ charwd:=charwd-5u#; italcorr 4.5u#; w:= round(charwd*hppp);
+ tmp_picture := currentpicture;
+ integral_x:=x1;
+endchar;
+
+beginchar(Bintegral_double, 16.5u#+2appr#, 0,200/54dh#);
+ "Displaystyle double integral sign";
+ italcorr 4.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 9.5u, 0));
+endchar;
+
+beginchar(Bintegral_triple, 26u#+2appr#, 0,200/54dh#);
+ "Displaystyle triple integral sign";
+ italcorr 4.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 9.5u, 0))
+ +(tmp_picture shifted (2hround 9.5u, 0));
+endchar;
+
+beginchar(Bintegral_contour, 7u#+2appr#, 0,200/54dh#);
+ "Displaystyle contour integral sign";
+ italcorr 4.5u#;
+ currentpicture := tmp_picture;
+ pickup rule.nib0;
+ lft x3 = appr+hround 0.75u-eps;
+ x1 = 2integral_x-x3+disp_stem;
+ x2=x4=0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+5.25u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ labels(1,2,3,4);
+endchar;
+
+beginchar(Bintegral_dblcont, 16u#+2appr#, 0,200/54dh#);
+ "Displaystyle double contour integral sign";
+ italcorr 4.5u#;
+ currentpicture := tmp_picture+(tmp_picture shifted (hround 9u, 0));
+ pickup rule.nib0;
+ lft x3 = appr-eps;
+ x1 = 2integral_x-x3+disp_stem+hround 9u;
+ x2=x4=0.5[x1,x3];
+ top y2 = vround(0.5[-d, h]+6u)+eps;
+ 0.5[y2, y4] = 0.5[-d, h] = y1 = y3;
+ draw z1 up_to_left z2 left_to_down z3
+ down_to_right z4 right_to_up z1;
+ labels(1,2,3,4);
+endchar;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf
new file mode 100644
index 00000000000..f8855a3736d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf
@@ -0,0 +1,264 @@
+% mathematical symbols by Anthony Phan.
+% file: mathsymb.mf (various mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height,
+ math_axis-0.5spread1,math_axis-0.5spread2,math_axis-0.5spread3,
+ math_axis-0.5spread4,
+ math_axis+0.5spread1,math_axis+0.5spread2,math_axis+0.5spread3,
+ math_axis+0.5spread4,
+enddef;
+
+%%% !!! marked signs are to be revised
+
+use_rule1;
+
+% standard
+
+beginchar(hex"20",6u#+2letter_fit#,0,0);
+ "Normal space";
+endchar;
+
+% hex"00"
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Top dot plus sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ pickup null.nib;
+ adjust_dot5((x1,y3+6.5u+0.5dtsz),dtsz,true,false); dot(5,5');
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Top dot minus sign";
+ pickup tiny.nib;
+ lft x1=Appr; rt x2=w-Appr;
+ y2=y1=math_axis; pos1(rth,90); pos2(rth,90);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ adjust_dot3((0.5[x1,x2],y1+math_spread[0.5x_height,0.6x_height]),
+ dtsz,true,false); dot(3,3');
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Top dot times sign";
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; rt x0'=w-Appr; y0=y0'=math_axis;
+ z1-z0=z0-z2=(z0'-z0) rotated 45; z3-z0=z0-z4=(z0'-z0) rotated -45;
+ pos1(rth+2eps,-45); pos2(rth+2eps,-45);
+ pos3(rth+2eps,45); pos4(rth+2eps,45);
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z3e;
+ pickup null.nib;
+ adjust_dot5((x0,y0+5.5u+0.5dtsz),dtsz,true,false); dot(5,5');
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Bot dot minus sign";
+ pickup tiny.nib;
+ lft x1=Appr; rt x2=w-Appr;
+ y2=y1=math_axis; pos1(rth,90); pos2(rth,90);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ adjust_dot3((0.5[x1,x2],y1-math_spread[0.5x_height,0.6x_height]),
+ dtsz,true,false); dot(3,3');
+endchar;
+
+beginchar(currentlocation,3u#+2appr#,cap_height#,0);
+ "Cap centered dot";
+ pickup null.nib;
+ adjust_dot1((0.5w,0.5h),1.2dtsz,false,false);
+ dot(1,1');
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small box";
+ pickup tiny.nib;
+ a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0);
+ top y1r=top y2r=vround(math_axis+0.5a);
+ bot y3r=bot y4r=top y1r-vround a;
+ lft x1r=lft x4r=hround 0.5(w-a);
+ rt x2r=rt x3r=lft x1r+hround a;
+ rt x1l-lft x1r=rt x2r-lft x2l
+ =rt x3r-lft x3l=rt x4l-lft x4r=rth0;
+ top y1r-bot y1l=top y2r-bot y2l
+ =top y3l-bot y3r=top y4l-bot y4r=rth0;
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Large asterisk";
+ autorounded;
+ interim stress:=0.5; pickup null.nib;
+ numeric b,c,dag_curve,dag_stem; spread:=12u;
+ b=2.6hair; c=0.625b; dag_curve=round 1.1cap_curve; dag_stem=hair;
+ %
+ x0=hround(0.5w-0.5dag_curve)+0.5dag_curve;
+ y0=0.5[-d,h];
+ for $=1 upto 6: z[$]=b*dir($*60+30)+z0;
+ z[$]'=c*dir($*60+60)+z0; endfor
+ filldraw for $=1 upto 6: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle;
+ labels(0,1',2',3',4',5',6');
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Large co-asterisk";
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_curve,dag_stem; spread:=12u;
+ b=2.6hair; c=0.625b; dag_curve=round 1.1cap_curve; dag_stem=hair;
+ %
+ x0=hround(0.5w-0.5dag_curve)+0.5dag_curve;
+ y0=0.5[-d,h];
+ for $=1 upto 6: z[$]=b*dir($*60-60)+z0;
+ z[$]'=c*dir($*60-30)+z0; endfor
+ filldraw for $=1 upto 6: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir($*60-60))...z[$]'...endfor cycle;
+ labels(0,1',2',3',4',5',6');
+endchar;
+
+% beginchar(currentlocation,arithmetic_bounds);
+% "Top dot truc sign";
+% pickup tiny.nib;
+% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+% top y1=top y3r=top y4r=h; bot y2=-d;
+% lft x1l=hround 0.5(w-rth); x2=x1;
+% lft x3=Appr; x1-x3=x4-x1; filldraw stroke z1e..z2e;
+% filldraw stroke z3e..z4e; pickup null.nib;
+% adjust_dot5((x1,h+u+0.5dtsz),dtsz,true,false); dot(5,5');
+% penlabels(1,2,3,4);
+% endchar;
+
+% beginchar(currentlocation,arithmetic_bounds);
+% "Top dot curT sign";
+% pickup tiny.nib;
+% pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+% bot y1=bot y3l=bot y4l=-d; top y2=h;
+% lft x1l=hround 0.5(w-rth); x2=x1;
+% lft x3=appr; x1-x3=x4-x1; filldraw stroke z2e..z1e;
+% filldraw stroke z3e..z4e; pickup null.nib;
+% adjust_dot5((x1,h+u+0.5dtsz),dtsz,true,false); dot(5,5');
+% penlabels(1,2,3,4);
+% endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Top circ plus sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ pickup rule.nib0;
+ adjust_dot5((x1,y3+6u+0.5rth0+1.5u),3u+rth0,true,false);
+ full_dot:=false; dot(5,5');
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Plus circle sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=Appr; x1-x3=x4-x1=y1-y3=y3-y2; y3=y4=math_axis;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ pickup rule.nib; z0=(x1,y3);
+ rt x5=ceiling rt 0.75[Appr,w-Appr]+eps; y5=y0;
+ z5-z0=z0-z7; z6-z0=z0-z8=(z5-z0) rotated 90;
+ draw superellipse(z5,z6,z7,z8,superness);
+ penlabels(1,2,3,4); labels(5,6,7,8);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Convolution sign";
+ numeric darkness; darkness=0.8;
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; rt x1=w-Appr; y0=y1=y1'=y1''=math_axis;
+ x1'=min(x0+2.5rth,0.5[x0,x1]); x1''=min(x0+1.25rth,0.25[x0,x1]);
+ forsuffixes $=,':
+ z1$-z0=z0-z2$; z3$-z0=z0-z4$=(z1$-z0) rotated 45;
+ z5$-z0=z0-z6$=(z1$-z0) rotated 90;
+ z7$-z0=z0-z8$=(z1$-z0) rotated -45;
+ pos1$(rth,90); pos2$(rth,90); pos3$(rth,135); pos4$(rth,135);
+ pos5$(rth,0); pos6$(rth,0); pos7$(rth,45); pos8$(rth,45);
+ penlabels(1$,2$,3$,4$,5$,6$,7$,8$);
+ endfor
+ z1''-z0=z0-z2''; z3''-z0=z0-z4''=(z1''-z0) rotated 45;
+ z5''-z0=z0-z6''=(z1''-z0) rotated 90;
+ z7''-z0=z0-z8''=(z1''-z0) rotated -45;
+ pos1''(darkness*rth,90); pos2''(darkness*rth,90);
+ pos3''(darkness*rth,135); pos4''(darkness*rth,135);
+ pos5''(darkness*rth,0); pos6''(darkness*rth,0);
+ pos7''(darkness*rth,45); pos8''(darkness*rth,45);
+ penlabels(1'',2'',3'',4'',5'',6'',7'',8'');
+ filldraw stroke z2e---z2'e...z2''e---z1''e...z1'e---z1e;
+ filldraw stroke z4e---z4'e...z4''e---z3''e...z3'e---z3e;
+ filldraw stroke z5e---z5'e...z5''e---z6''e...z6'e---z6e;
+ filldraw stroke z8e---z8'e...z8''e---z7''e...z7'e---z7e;
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Divide on times sign";
+ numeric darkness; darkness=0.8;
+ pickup rule.nib; x0=good.x 0.5w;
+ pickup tiny.nib; rt x1=w-Appr; y0=y1=y1'=y1''=math_axis;
+ x1'=min(x0+2.5rth,0.5[x0,x1]); x1''=min(x0+1.25rth,0.25[x0,x1]);
+ z1-z0=z0-z2; z1'-z0=z0-z2'; z1''-z0=z0-z2'';
+ z3-z0=z0-z4=(z1-z0) rotated 45; z7-z0=z0-z8=(z1-z0) rotated 135;
+ pos1(rth,90); pos2(rth,90); pos1'(rth,90); pos2'(rth,90);
+ pos3(rth,135); pos4(rth,135); pos7(rth,225); pos8(rth,225);
+ pos1''(darkness*rth,90); pos2''(darkness*rth,90);
+ filldraw stroke z2e---z2'e...z2''e---z1''e...z1'e---z1e;
+ filldraw stroke z4e..z3e; filldraw stroke z8e..z7e;
+ pickup null.nib;
+ adjust_dot5((x0,y0+5.5u-0.5dtsz),dtsz,true,false); dot(5,5');
+ adjust_dot6((x0,y0-5.5u+0.5dtsz),dtsz,true,false); dot(6,6');
+ penlabels(1,1',1'',2,2',2'',3,4,7,8);
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small full diamond";
+ pickup tiny.nib;
+ a:=sqrt(3.14159)*0.5*max(7u,dtsz+rth0)-0.5rth0;
+ y2=y4=good.y math_axis; x1=x3=good.x 0.5w;
+ y1-y2=y2-y3=vround(0.5a*sqrt(2)-tiny)+eps;
+ x2-x1=x1-x4=hround(0.5a*sqrt(2)-tiny)+eps;
+ fill z1--z2--z3--z4--cycle;
+ labels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,7u#+2appr#,v_center(7u#));
+ "Small full box";
+ pickup tiny.nib;
+ a:=sqrt(3.14159)*0.5*max(7u-rth0,dtsz);
+ top y1=top y2=vround(math_axis+0.5a);
+ bot y3=bot y4=top y1-vround a;
+ lft x1=lft x4=hround 0.5(w-a);
+ rt x2=rt x3=lft x1+hround a;
+ filldraw z1--z4--z3--z2--cycle;
+ labels(1,2,3,4);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Big five star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),5,6u+o,0.1,90,false);
+ labels(a);
+endchar;
+
+beginchar(currentlocation,arithmetic_bounds);
+ "Big six star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),6,6u+o,0.3,90,false);
+ labels(a);
+endchar;
+
+% hex"10"
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf
new file mode 100644
index 00000000000..a64516bda8e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathu10.mf (math serie U at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathc"; font_size 10pt#;
+font_coding_scheme "mathc";
+
+input mathprmt;
+input mathcdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf
new file mode 100644
index 00000000000..54c2c06236e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf
@@ -0,0 +1,1464 @@
+% mathematical symbols by Anthony Phan.
+% file: mathcall.mf (calligraphic font)
+% last modification: May 16, 2005.
+
+%
+% LOWERCASE
+%
+% design, metrics and italic corrections checked (nov. 28, 2002).
+%
+
+cmchar "Calligraphic a";
+beginchar("a", 9u#, x_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = vround 0.98h; x1 = x2 = good.x(w-2.5u); x4 = w;
+ draw z1..hook_out(2, 3, 4);
+ top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8];
+ x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7];
+ draw z5 up_to_left z6 left_to_down z7
+ down_to_right z8 right_to_up z5;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic b";
+beginchar("b", 8u#, asc_height#, 0);
+ italcorr .75x_height#*slant+0.5curve#-u# if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; y2 = 0.5x_height; bot y3 = -oo;
+ y4 = 0.5x_height; top y5 = x_height+oo;
+ x1 = x2 = good.x 1.5u; x3 = 0.5[x2, x4];
+ x4 = good.x(w-1.25u); x5 = 0.5[x2, x4];
+ draw z1-cal.extension--z1..z2{down}
+ ...z3{right}...z4{up}...z5{left}...z2{down};
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+cmchar "Calligraphic c";
+beginchar("c", 8u#, x_height#, 0);
+ italcorr max(0.25x_height#*slant+0.5lower_cal_width#,
+ 0.85x_height#*slant+0.5lower_cal_width#-1.1u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x2-x1 = hround u; rt x2 = hround(w-1.1u);
+ if x2 > w-1.25u: x2 := good.x w-1.25u; fi
+ x3 = 0.6[x4, x2]; x4 = good.x 1.25u;
+ x5 = 0.5[x4, x6]; x6 = good.x w;
+ top y3 = h+oo; y4 = .5h; bot y5 = -oo;
+ y1 = good.y 0.65[y5, y3]; y2 = .8[y5, y3];
+ y6 = good.y 1/4x_height;
+ draw z1 ... z2 up_to_left z3 left_to_down
+ z4 down_to_right z5...z6;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "Calligraphic d";
+beginchar("d", 9u#, asc_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ h#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; x1 = x2 = good.x(w-2.5u); x4 = w;
+ draw z1-cal.extension--z1---hook_out(2, 3, 4);
+ top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8];
+ x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7];
+ draw z5 up_to_left z6 left_to_down z7
+ down_to_right z8 right_to_up z5;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic e";
+beginchar("e", 8u#, x_height#, 0);
+ italcorr max(0.25x_height#*slant+0.5lower_cal_width#,
+ 0.85x_height#*slant+0.5lower_cal_width#-1.1u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ rt x1 = hround(w-1.1u); x2 = 0.6[x3, x1];
+ if x1 > w-1.25u: x1 := good.x w-1.25u; fi
+ x3 = good.x 1.25u; x4 = 0.5[x3, x5]; x5 = good.x w;
+ y1 = 0.8[y4, y2]; top y2 = h+oo; y3 = .5h; bot y4 = -oo;
+ y5 = good.y 1/4x_height;
+ draw z3 right_to_up z1 up_to_left z2
+ left_to_down z3 down_to_right z4...z5;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+cmchar "Calligraphic f";
+beginchar("f", 5.5u#, asc_height#, desc_depth#);
+ italcorr asc_height#*slant+.75u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ z88 = (0.5w-0.5u, h); z89 = (0.5w+0.5u, -d);
+ top y2 = h+oo; bot y5 = -d-oo; top y8 = top y9 = x_height;
+ y2-y0 = y6-y5 = vround 0.35min(d, h-x_height);
+ y1 = 0.5[y0, y2]; y6 = 0.5[y5, y7];
+ y3 = 0.25[x_height, y2]; y4 = 0.5[y5, y3];
+ rt x1-w = -lft x6 = hround 0.25u; x7-x6 = hround 0.5u;
+ x0 = x1; x2 = 0.4[x1, x3]; x5 = 0.4[x6, x4];
+ z3 = whatever[z88, z89]; z4 = whatever[z88, z89];
+ lft x8 = hround(lft x3-0.5stem-1.25u);
+ rt x9 = hround(rt x3+0.5stem+1.7u);
+ draw (z0--z1) softjoin (z1 up_to_left z2....z3
+ ---z4....z5{left}...z6);%...z7);
+ draw z8..z9;
+ %
+ math_fit(desc_depth#*slant+u#, x_height#*slant);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic g";
+beginchar("g", 8u#, x_height#, desc_depth#);
+ italcorr x_height#*slant+0.5lower_cal_width#-u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = vround 0.98h;
+ top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8];
+ x1 = x2 = x5 = good.x(w-1.5u); x4 = 1.5u;
+ x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7];
+ draw z1..desc_curve(2, 3, 4);
+ draw z5 up_to_left z6 left_to_down z7
+ down_to_right z8 right_to_up z5;
+ %
+ math_fit(-min(.3x_height#*slant+0.5curve#-u#,
+ 1.5u#-desc_depth#*slant), ic#-1/3x_height#*slant);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic h";
+beginchar("h", 9u#, asc_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ 0.75x_height#*slant+0.5lower_cal_width#-2u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; bot y2 = -oo;
+ x1 = x2 = good.x 1.5u;
+ x4 = w-2.45u; x5 = w-2.80u; x7 = w;
+ draw z1-cal.extension--z1--z2
+ --ital_arch(2, 3, 4)...hook_out(5, 6, 7);
+ %
+ math_fit(0, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic i";
+beginchar("i", 5u#, min(10/7x_height#+0.5flare#, asc_height#), 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ (h#-0.5flare#)*slant
+ -2.5u#-0.4(h#-x_height#)*slant+0.5flare#+0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(0.5w+0.30u);
+ x4 = good.x(0.5w-0.30u); x6 = w;
+ draw hook_in(1, 2, 3)...hook_out(4, 5, 6);
+ %
+ pickup fine_cal.nib;
+ cal_dot7(0.5w-0.4(h-x_height)*slant, h+1-0.5flare, flare);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6); penlabels(7, 7');
+endchar;
+
+cmchar "Calligraphic j";
+beginchar("j", 5u#, min(10/7x_height#+0.5flare#, asc_height#), desc_depth#);
+ italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#,
+ (h#-0.5flare#)*slant
+ -1.5u#+0.5lower_cal_width#-0.6(h#-x_height#)*slant+0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x(w-1.5u);
+ x6 = good.x 0; x0 = rt x3;
+ draw hook_in(1, 2, 3)..desc_curve(4, 5, 6);
+ %
+ pickup fine_cal.nib;
+ cal_dot7(x0-0.5flare-0.6(h-x_height)*slant, h+1-0.5flare, flare);
+ %
+ math_fit(desc_depth#*slant, x_height#*slant+0.5stem#-u#);
+ labels(1, 2, 3, 4, 5, 6); penlabels(7, 7');
+endchar;
+
+cmchar "Calligraphic k";
+beginchar("k", 8.5u#, asc_height#, 0);
+ italcorr max(0.2x_height#*slant+0.1w#,
+ 0.95x_height#*slant-0.1w#+0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u;
+ draw z1-cal.extension--z1--z2;
+ %
+ rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w;
+ y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo;
+ (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib];
+ draw z4{up}...{left}z5..tension atleast 2..{down}z6
+ ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals
+ %
+ math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic l";
+beginchar("l", 4.5u#, asc_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ asc_height#*slant+0.5lower_cal_width#-2.1u#) if math_fitting: +0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; x1 = x2 = good.x 1.9u; x4 = w;
+ draw z1-cal.extension--z1---hook_out(2, 3, 4);
+ %
+ math_fit(-0.5u#, 1/3x_height#*slant+0.5hair#+u#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic m";
+beginchar("m", 15u#, x_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ 0.75x_height#*slant+0.5lower_cal_width#-2u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x 2.5u; x6 = x7 = good.x 0.5w;
+ x9 = good.x(w-2.45u); x10 = good.x(w-2.80u); x12 = w;
+ bot y4 = bot y7 = -oo;
+ draw hook_in(1, 2, 3)---z4;
+ draw ital_arch(4, 5, 6)---z7;
+ draw ital_arch(7, 8, 9)...hook_out(10, 11, 12);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
+endchar;
+
+cmchar "Calligraphic n";
+beginchar("n", 10u#, x_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ 0.75x_height#*slant+0.5lower_cal_width#-2u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo;
+ x6 = good.x(w-2.45u); x7 = good.x(w-2.80u);
+ x9 = w;
+ draw hook_in(1, 2, 3)---z4;
+ draw ital_arch(4, 5, 6)...hook_out(7, 8, 9);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+endchar;
+
+cmchar "Calligraphic o";
+beginchar("o", 9u#, x_height#, 0);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ % not good
+% x5 = good.x 0.75[x2, x1]; x6 = 0.5[x5, x7]; x7 = good.x w;
+% y5 = 0.75[y6, y1]; y6 = good.y 0.6[y3, y1]; y7 = good.y 3/4x_height;
+% draw z1{left}...z5 down_to_right z6...z7;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic p";
+beginchar("p", 9u#, x_height#, desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -d-eps;
+ draw hook_in(1, 2, 3)..z4;
+ top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8];
+ x5 = good.x(w-1.25u); x7 = x3; x6 = x8 = 0.5[x5, x7];
+ draw z5 up_to_left z6 left_to_down z7
+ down_to_right z8 right_to_up z5;
+ %
+ math_fit(-min(2/3x_height#*slant-0.5hair#-0.5u#,
+ 2u#-0.5stem#-desc_depth#*slant), ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic q";
+beginchar("q", 8u#, x_height#, desc_depth#);
+ italcorr x_height#*slant+0.5lower_cal_width#-u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = vround 0.98h; bot y2 = -d-eps;
+ x1 = x2 = good.x(w-1.5u);
+ draw z1--z2--z2+cal.extension;
+ top y6 = x_height+oo; bot y8 = -oo; y5 = y7 = 0.5[y6, y8];
+ x5 = x1; x7 = good.x(1.25u); x6 = x8 = 0.5[x5, x7];
+ draw z5 up_to_left z6 left_to_down z7
+ down_to_right z8 right_to_up z5;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#-1/3x_height#*slant);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic r";
+beginchar("r", 7.25u#, x_height#, 0);
+ italcorr 0.8x_height#*slant+0.5lower_cal_width#-0.15u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo;
+ draw hook_in(1, 2, 3)---z4;
+ y5 = y2; y7 = good.y 0.65[y4, y5]; y6 = .8[y4, y5];
+ x6 = good.x(w-0.65u); x6-x7 = hround 0.75u; x5 = 0.75[x4, x6];
+ draw z4{up}...z5 right_to_down z6...z7;
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-0.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic s";
+beginchar("s", 5.25u#+1.75u#, x_height#, 0);
+ italcorr 0.9x_height#*slant-0.05w#+0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ rt x0 = rt x1 = .95w; x2 = .5[x3, x1]; lft x3 = .15w; x4 = .5[x6, x2];
+ rt x5 = w; x6 = .5w; lft x7 = 0; lft x8 = .075w;
+ y0 = .8h; y1 = .9h; top y2 = h+o; y3 = .55[y4, y2]; y4 = .55[y6, y2];
+ y5 = .45[y6, y4]; bot y6 = -o; y7 = .2h; y8 = .35h;
+ draw\\(z0--z1) softjoin (z1...z2{left}...z3{down}...z4...z5{down}
+ ...z6{left}...z7) softjoin (z7{up}...{right}z8); % stroke
+ math_fit(0, ic#);
+ labels(0, 1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic t";
+beginchar("t", 5.5u#, min(asc_height#, 10/7x_height#), 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant-.25u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; x1 = x2 = good.x 2u; x4 = w;
+ draw z1---hook_out(2, 3, 4);
+ lft x5 = hround -0.75u; rt x6 = hround(w-0.65u);
+ top y5 = top y6 = x_height;
+ draw z5..z6;
+ %
+ math_fit(1.25u#-x_height#*slant, ic#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "Calligraphic u";
+beginchar("u", 9.5u#, x_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant+0.5lower_cal_width#-2u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-2.5u); x10 = w;
+ y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up};
+ draw z7..hook_out(8, 9, 10);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 6, 7, 8, 9, 10);
+endchar;
+
+%cmchar "Calligraphic v";
+% beginchar("v", 8u#, x_height#, 0);
+% italcorr 0.8x_height#*slant;
+% adjust_fit(0, 0.5u#);
+% %
+% pickup lower_cal.nib;
+% x1 = 0; top y1 = h; z3 = (.48w, 0);
+% z0.t_ = z2.t_+penoffset down of currentpen
+% = z3.t_+penoffset down of pen_[tilted.nib];
+% draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal
+% pickup tilted.nib;
+% rt x4 = w; x5 = x4-.2w; top y4 = .8h; top y5 = h;
+% path p; p = z3..tension atleast 3 and 1..{up}z4;
+% erase fill z0--(x0, y0-0.5h)--(x4, y0-0.5h)--(x4+eps, y4)--reverse p--cycle;
+% draw p...{left}z5; % right diagonal
+% %
+% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 2/3ic#);
+% labels(0, 1, 2, 3, 4, 5);
+% endchar;
+
+cmchar "Calligraphic v";
+beginchar("v", 8.75u#, x_height#, 0);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi; % same as "o"
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2.25u);
+ y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h+oo;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7;
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic w";
+% beginchar("w", 12.3u#, x_height#, 0);
+% italcorr 0.8x_height#*slant;
+% adjust_fit(0.2u#, 0.5u#);
+% %
+% pickup lower_cal.nib;
+% x1 = 0; x3 = .5[x1, x6]; x6 = .52w;
+% x9 = .58[x6, x10]; y3 = y9 = 0; top y1 = top y6 = h;
+% z7 = .5[z8, z6]+bend; z4 = .5[z3, z5]+bend;
+% (z0)t_ = (z2)t_+penoffset down of currentpen
+% = (z3)t_+penoffset down of pen_[tilted.nib];
+% (z20)t_ = (z8)t_+penoffset down of currentpen
+% = (z9)t_+penoffset down of pen_[tilted.nib];
+% draw z1{right}..tension atleast 1 and infinity..z2; % first diagonal
+% pickup tilted.nib;
+% x5 = x6; rt x10 = w;
+% x11 = x10-.1w; top y5 = h; top y10 = .8h; top y11 = h;
+% erase fill z0--(x0, y0-0.5h)--(x5, y0-0.5h)--z5..z4..z3--cycle;
+% draw z3..z4..z5; % second diagonal
+% pickup lower_cal.nib;
+% erase fill\\(.3w, bot y6)--(w, bot y6)--(w, top y6)--(.3w, top y6)--cycle;
+% draw z6..z7..z8; % third diagonal
+% pickup tilted.nib;
+% path p; p = z9..tension atleast 3 and 1..{up}z10;
+% erase fill z20--(x20, y20-0.5h)--(x10, y20-0.5h)--(x10+eps, y10)
+% --reverse p--cycle;
+% draw p..{left}z11; % fourth diagonal
+% %
+% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 3/4ic#);
+% labels(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20);
+% endchar;
+
+cmchar "Calligraphic w";
+beginchar("w", 12.5u#, x_height#, 0);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi; % same as "o"
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = x7 = good.x 0.5[2.5u,w-1.5u]; x8 = 0.5[x6,x9];
+ x9 = good.x(w-1.25u); x10 = good.x(w-2.25u);
+ y4 = 0.7[y5, y6]; bot y5 = bot y8 = -oo; y6 = y9 = 0.57h;
+ top y7 = top y10 = h+oo;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6---z7;
+ draw z6 down_to_right z8...z9{up}...z10;
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic x";
+beginchar("x", 8.25u#, x_height#, 0);
+ italcorr max(1/9x_height#*slant, 0.9x_height#*slant+.5u#);
+ adjust_fit(0, 0.25u#);
+ %
+ pickup lower_cal.nib;
+ lft x1 = .08w; lft x2 = .2w; x4-x3 = x2-x1; rt x4 = w;
+ h-y1 = y4 = 1/9h; top y2 = h; bot y3 = 0;
+ draw z1{up}....z2{right}
+ ... .2[z2+(.1w, 0), z3-(.1w, 0)]---.8[z2+(.1w, 0), z3-(.1w, 0)]
+ ...{right}z3....{up}z4; % left diagonal
+ x5 = x6-u; rt x6 = w; lft x7 = 0; x8 = x7+u;
+ top y5 = h; y6 = .85h; y7 = h-y6; bot y8 = 0;
+ draw z5{right}...z6{down}
+ ..tension atleast 3..{down}z7...{right}z8; % right diagonal
+ %
+ math_fit(0, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic y";
+beginchar("y", 8.5u#, x_height#, desc_depth#);
+ italcorr x_height#*slant+0.5lower_cal_width#-0.5u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = x10 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = x7 = x8 = good.x(w-1.5u);
+ y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up};
+ draw z7..desc_curve(8, 9, 10);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#-1/3x_height#*slant);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+endchar;
+
+cmchar "Calligraphic z";
+beginchar("z", 5.5u#+max(1.5u#, stem#), x_height#, 0);%desc_depth#);
+ italcorr x_height#*slant+0.5lower_cal_width#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ y1 = good.y 3/4x_height;
+ top y2 = h+oo; top y3 = vround 0.98h+eps;
+ bot y4 = -oo; bot y5 = -oo;
+ y6 = good.y 1/4x_height;
+ x1 = x4 = good.x u; x6 = good.x w; x6-x3 = hround 0.5u;
+ x2 = 0.25[x1, x3]; x5 = 0.25[x6, x4];
+ draw z1 ... z2{right}..{z3-z4}z3
+ --z4{z3-z4}..z5{right}... z6;
+ %
+ math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#);
+ labels(1, 2, 3, 5, 6);
+endchar;
+
+%
+% LATIN EXTENSION
+%
+% the three first have been checked: design, metrics
+% and italic corrections (nov. 28, 2002).
+%
+
+cmchar "Calligraphic dotless i";
+beginchar(hex"10", 5u#, x_height#, 0);% height
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ 0.8x_height#*slant+0.5lower_cal_width#-1.7u#);
+ italcorr 1/3x_height#*slant+0.5hair#+0.5u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(0.5w+0.30u);
+ x4 = good.x(0.5w-0.30u); x6 = w;
+ draw hook_in(1, 2, 3)...hook_out(4, 5, 6);
+ %
+ math_fit(0, 0);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic dotless j";
+beginchar(hex"11", 5u#, x_height#, desc_depth#);
+ italcorr max(0.8x_height#*slant+0.5lower_cal_width#-u#,
+ 0.8x_height#*slant+0.5lower_cal_width#-0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x(w-1.5u);
+ x6 = good.x 0;
+ draw hook_in(1, 2, 3)..desc_curve(4, 5, 6);
+ %
+ math_fit(0, 0);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "Calligraphic es-zet";
+beginchar(oct"31", 8u#, asc_height#, desc_depth#);
+ italcorr max(.8h#*slant-.1w#, .5x_height#*slant)+.5u#;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = x3 = good.x 1.5u; x4 = .6[x2, x5]; rt x5 = .9w; x6 = .4w;
+ rt x7 = w;
+ x8 = .4[x9, x7]; lft x9 = rt x3;
+ top y1 = x_height+oo; bot y3 = -d-eps; z2 = .3[z3, z1]+bend;
+ top y4 = h+oo; y5 = .6[y6, y4]; y6 = .55h; y7 = .45[y8, y6];
+ bot y8 = -oo; y9 = .1h;
+ draw z1-cal.extension--flex(z1, z2, z3); % stem
+ draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10}
+ ...z7{down}...z8{left}...z9; % lobes
+ %
+ math_fit(.5u#, .3h#*slant+.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+cmchar "Calligraphic ae";
+beginchar(oct"32", 13u#, x_height#, 0);
+ italcorr max(0.25x_height#*slant+0.5lower_cal_width#,
+ 0.85x_height#*slant+0.5lower_cal_width#-1.1u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x 0.5w;
+ x1 = 0.5[x2, x4]; x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ %
+ rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5];
+ if x5 > w-1.25u: x5 := good.x w-1.25u; fi
+ x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w;
+ y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo;
+ y9 = good.y 1/4x_height;
+ draw z7 right_to_up z5 up_to_left z6
+ left_to_down z7 down_to_right z8...z9;
+ %
+ top y10=vround 0.98h; bot y11=0;
+ x10=x11=x4; draw z10..z11;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+endchar;
+
+cmchar "Calligraphic oe";
+beginchar(oct"33", 13u#, x_height#, 0);
+ italcorr max(0.25x_height#*slant+0.5lower_cal_width#,
+ 0.85x_height#*slant+0.5lower_cal_width#-1.1u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x 0.5w; x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ %
+ rt x5 = hround(w-1.1u); x6 = 0.6[x7, x5];
+ if x5 > w-1.25u: x5 := good.x w-1.25u; fi
+ x7 = x4; x8 = 0.5[x7, x9]; x9 = good.x w;
+ y5 = 0.8[y8, y6]; top y6 = h+oo; y7 = .5h; bot y8 = -oo;
+ y9 = good.y 1/4x_height;
+ draw z7 right_to_up z5 up_to_left z6
+ left_to_down z7 down_to_right z8...z9;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+cmchar "Calligraphic o/slash";
+beginchar(oct"34", 9u#, x_height#+0.5desc_depth#, 0.5desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = x_height+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ %
+ pickup fine_cal.nib;
+ x5=good.x x4; x6=good.x x2; top y5=h+eps; bot y6=-d-eps; draw z5..z6;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "Calligraphic AE";
+beginchar(oct"35",18u#,cap_height#,0);
+ italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ w':=hround 8.5u;
+ x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w';
+ x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w;
+ y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3];
+ y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h;
+ %
+ pickup tilted.nib;
+ lft x4'=.05w'+w-w';
+ w':=hround 14.4u;
+ lft x1'=.05w'; x2'=.2w';
+ y1'=y2'+.1h; bot y2'=bot_flourish_line;
+ y3'=y6; z3'=whatever[z2',z4]+2bend; y4'=y4;
+ draw\\(z1'..tension 1.2..{right}z2') softjoin (z2'...z3'...z4'{up});
+% left diagonal
+ pickup cal.nib;
+ draw\\(z1{2(x2-x1),y2-y1}...z2)
+ softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc
+ draw z5{left}...z6{down}...z7{right}...z8; % lower arc
+ draw rt z3'--z6; % bar
+ math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#);
+ labels(1',2',3',4',1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "Calligraphic OE";
+beginchar(oct"36",16u#,cap_height#,0);
+ italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ w':=hround 8.5u;
+ x1=.9[x3,x2]; rt x2=.9w'+w-w'; x3=.6[x4,x2]; lft x4=.05w'+w-w';
+ x5=.7[x6,x2]; lft x6=w-w'; x7=.5[x6,x8]; rt x8=w;
+ y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3];
+ y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h;
+ draw\\(z1{2(x2-x1),y2-y1}...z2)
+ softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc
+ draw z5{left}...z6{down}...z7{right}...z8; % lower arc
+ %
+ w':=hround 12.6u;
+ x1'=.3w'; lft x2'=0; x3'=0.6[x2',x6]; x5'=0.75[x2',x4];
+ lft x6'=.27w';
+ top y1'=top y5'=h+o; y2'=.55h; bot y3'=-o; y6'=y2';
+ draw z1'...z2'{down}...z3'{right}...z6{up};
+ save p; path p; p = z4{up}...z5'{left}...{down}z6';
+ draw subpath (0,1.8) of p;
+ math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#);
+ labels(1',2',3',5',6',1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "Calligraphic O/slash";
+beginchar(oct"37",12.6u#,cap_height#+0.25desc_depth#, 0.25desc_depth#);
+ italcorr .7h#*slant+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w;
+ top y1=top y5=cap_height+o; y2=.55cap_height;
+ bot y3=-o; y4=.5cap_height; y6=y2;
+ path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6;
+ draw subpath(0,4.8) of p; % bowl
+% pickup .nib;
+ top y7= vround(h+0.25desc_depth)+eps; bot y8=-hround(0.25desc_depth)-eps;
+ x7 = good.x x4; x8 = good.x 0.1[x2, x6]; draw z7..z8;
+ math_fit(.5u#-.3h#*slant,ic#-.5u#);
+ labels(1,2,3,4,5,6);
+endchar;
+
+%
+% DIGITS
+%
+
+beginchar("0", 9u#, fig_height#, 0);
+ "The digit 0";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ numeric a; a = min(0.25h, 0.5(x_height-o));
+ top y1 = h+o; bot y3 = -o; y2 = y4 = 0.5[y1, y3];
+ lft x2 = hround max(0.7u, lft 1.45u); x4 = w-x2;
+ x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right z3
+ right_to_up z4 up_to_left z1;
+ labels(1, 2, 3, 4);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("1", 9u#, fig_height#, 0);
+ "The digit 1";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y2 = h+o; bot y3 = -max(hround(0.05h)+eps, oo); y1 = good.y 0.35[y2, y3];
+ rt x2-lft x1 = hround 4.875u; rt x2 = w-hround 2.125u;
+ rt x3 = w-hround 3.75u;
+ draw z1{x2-x1, 0.5(y2-y1)}...z2 & z2{x3-x2, 0.4(y3-y2)}...{down}z3;
+ labels(1, 2, 3);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("2", 9u#, fig_height#, 0);
+ "The digit 2";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y2 = h+o; bot y5 = bot y6 = 0; y1 = y3 = good.y 0.75h;
+ lft x1 = lft x5+eps = hround u; rt x3 = rt x6-eps = w-hround u;
+ x2 = x4 = 0.5[x1, x3]; y4 = 0.4[y5, y3];
+ draw z1 up_to_right z2 right_to_down z3...z4---z5--z6;
+ labels(1, 2, 3, 4, 5, 6);
+ math_fit(0, 0.5ic#);
+endchar;
+
+% beginchar("3", 9u#, fig_height#, 0);
+% "The digit 3";
+% italcorr fig_height#*slant-0.5u#;
+% adjust_fit(0, 0);
+% pickup lower_cal.nib;
+% bot y2 = -o; top y5 = top y6 = x_height;
+% y1 = good.y 1/4x_height;
+% y3 = a; y5-y4 = y3-y2; top y7 = top y8 = h;
+% rt x3 = w-hround u; x3 = x4 = x7+hround 0.5u-eps;
+% lft x1 = hround u; x1+hround 0.5u-eps = x8;
+% lft x6 = hround 3u-eps;
+% x2 = x5 = 0.5[x1, x3];
+% draw z1 ... z2 right_to_up z3..z4 up_to_left z5--z6--z7--z8;
+% labels(1, 2, 3, 4, 5, 6, 7, 8);
+% math_fit(0, 0.5ic#);
+% endchar;
+
+beginchar("3", 9u#,fig_height#,0);
+ "The digit 3";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0,0); pickup lower_cal.nib;
+ lft x2 = hround 1.25u; x3=.46[x2,x4]; x4=good.x(w-2u);
+ x5=.7[x6,x2]; x6= good.x(w-1.25u); x7=.5[x6,x8]; lft x8 = hround u;
+ x1=good.x 0.6[x5, x2];
+ %y1=y2-.1h;
+ y2=.85h+oo; top y3=h+oo; y4=.5[y5,y3];
+ y5=good.y .55h; y6=.5[y5,y7]; bot y7=-oo; y8=good.y 1/4x_height;
+ y1 = good.y 0.55[y5, y3];
+ draw\\(z1{2(x2-x1),y2-y1}...z2)
+ softjoin (z2...z3 right_to_down z4...{left}z5); % upper arc
+ draw z5 right_to_down z6...z7{left}...z8; % lower arc
+ math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#);
+ labels(1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar("4", 9u#, fig_height#, 0);
+ "The digit 4";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y1 = h+o; bot y5 = -max(hround(0.05h)+eps, oo); top y4 = x_height+eps;
+ y2 = y3 = good.y(0.5x_height);
+ rt x3 = w-hround 0.1u+eps;
+ lft x2 = hround 0.5u-eps;
+ x1 = good.x 0.33[x2, x3];
+ x4 = good.x 0.725[x2, x3];
+ x5 = good.x 0.475[x2, x3];
+ draw z1{down}...z2--z3; draw z4{x5-x4, 0.45(y5-y4)}..z5{down};
+ labels(1, 2, 3, 4, 5);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("5", 9u#, fig_height#, 0);
+ "The digit 5";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ bot y2 = -o; top y4 = x_height+eps; y1 = good.y 1/4x_height;
+ y3 = 0.5[y2, y4]; y5 = good.y 0.2[y4, y2]; top y6 = top y7 = h;
+ rt x3 = w-hround u; x3 = x7+hround 0.5u-eps;
+ lft x1 = hround u; x1+hround 0.5u = x5 = x6;
+ x2 = x4 = 0.5[x1, x3];
+ draw z1 ... z2 right_to_up z3
+ up_to_left z4 ... z5&z5..{0.5(x6-x4), y6-y4}z6&z6..{x7-x5, 0.5(y7-y5)}z7;
+ labels(1, 2, 3, 4, 5, 6, 7);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("6", 9u#, fig_height#, 0);
+ "The digit 6";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y2 = h+o; bot y4 = -o; y1 = good.y(h-0.2x_height);
+ top y6 = x_height+eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6];
+ lft x3 = hround max(0.7u, lft 1.45u); x5 = w-x3;
+ rt x1 = w-hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5];
+ draw z1 ... z2{left} ... z3 down_to_right z4
+ right_to_up z5 up_to_left z6 ...z3;
+ labels(1, 2, 3, 4, 5, 6);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("7", 9u#, fig_height#, 0);
+ "The digit 7";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y2 = top y3 = h+o; bot y4 = -max(hround(0.05h)+eps, oo);
+ y1 = good.y 0.3[y2, y4];
+ lft x1 = lft x2 = hround 0.75u; rt x3 = w-hround 0.25u;
+ x4 = good.x 0.4[x2, x3];
+ draw z1{0.2(x3-x1), y3-y1}..z2 & z2{x4-x2, 0.2(y4-y2)}..z3
+ &z3{x4-x3, 0.4(y4-y3)}..z4;
+ labels(1, 2, 3, 4);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("8", 9u#, fig_height#, 0);
+ "The digit 8";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ bot y1 = vround 0.5h; bot y4 = -o;
+ y1-y2 = y1-y6 = y3-y4; y3 = y5 = a;
+ lft x2 = lft x3 = hround u;
+ rt x5 = rt x6 = w-hround u;
+ x1 = x4 = x7 = 0.5[x2, x6];
+ top y7 = h+o; y8 = y9 = 0.5[y7, y1];
+ lft x8 = w-rt x9 = hround 1.4u-eps;
+ draw z1 left_to_down z2..z3 down_to_right z4 right_to_up z5..z6
+ up_to_left z1; draw superellipse(z9, z7, z8, z1, superness);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ math_fit(0, 0.5ic#);
+endchar;
+
+beginchar("9", 9u#, fig_height#, 0);
+ "The digit 9";
+ italcorr fig_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ bot y2 = -o; top y4 = h+o; y1 = good.y 0.2x_height;
+ bot y6 = h-x_height-eps; y3 = 0.45[y4, y2]; y5 = 0.5[y4, y6];
+ lft x5 = hround max(0.7u, lft 1.45u); x3 = w-x5;
+ lft x1 = hround u; x2 = 0.6[x3, x1]; x4 = x6 = 0.5[x3, x5];
+ draw z1 ... z2{right}... z3 up_to_left z4
+ left_to_down z5 down_to_right z6 ...z3;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ math_fit(0, 0.5ic#);
+endchar;
+
+%
+% PUNCTUATION
+%
+
+call_spanish_query:=0;
+call_spanish_shriek:=1;
+call_laquo:=2;
+call_raquo:=3;
+
+vardef complete_quote@#(expr $,$$)=
+ pickup lower_cal.nib;
+ bot y@#.c=hround 0.06h; y@#.b=good.y 0.5h; y@#.a-y@#.b=y@#.b-y@#.c;
+ if $$<0: lft x@#.a=lft x@#.c=rt x@#.b-(hround 4u+2eps)=$;
+ else: rt x@#.a=rt x@#.c=lft x@#.b+(hround 4u+2eps)=$; fi
+ draw z@#.a{(z@#.b-z@#.a) yscaled 3}..z@#.b
+ &z@#.b..{(z@#.c-z@#.b) yscaled 3}z@#.c;
+ labels(@#.a,@#.b,@#.c);
+enddef;
+
+beginchar("<",8u#,x_height#,0);
+ "French single opening quote";
+ complete_quote1(w-hround 2u+eps,1);
+endchar;
+
+beginchar(">",8u#,x_height#,0);
+ "French single closing quote";
+ complete_quote1(hround 2u-eps,-1);
+endchar;
+
+beginchar(call_laquo,10u#,x_height#,0);
+ "French double opening quote";
+ complete_quote1(w-hround u+eps,1);
+ complete_quote2(w-hround 4u+eps,1);
+endchar;
+
+beginchar(call_raquo,10u#,x_height#,0);
+ "French double closing quote";
+ complete_quote1(hround u-eps,-1);
+ complete_quote2(hround 4u-eps,-1);
+endchar;
+
+cmchar "Hash mark (number sign)";
+spread#:=math_spread[0.45x_height#,0.55x_height#];
+spread:=2ceiling(spread#*hppp/2)+eps;
+beginchar("#",15u#,asc_height#,asc_depth#);
+ italcorr (math_axis#+.5(spread#+rth1#))*slant-.5u#;
+ adjust_fit(0,0);
+ pickup lower_cal.nib; lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
+ y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
+ draw z1--z2; % upper bar
+ draw z3--z4; % lower bar
+ lft x6=hround 3u; rt x7=hround(w-3u); x5-x6=x7-x8;
+ x8=good.x .5\\w;
+ top y5=top y7=h+eps; bot y6=bot y8=-d-eps;
+ y15=y1; z15=whatever[z5,z6]; y36=y3; z36=whatever[z5,z6];
+ y27=y2; z27=whatever[z7,z8]; y48=y4; z48=whatever[z7,z8];
+ draw z5--if x5>x6+1:(good.x(x15+.5),y1)--(good.x(x15-.5),y1)
+ --(good.x(x36+.5),y3)--(good.x(x36-.5),y3)--fi\\z6; % left diagonal
+ draw z7--if x7>x8+1:(good.x(x27+.5),y2)--(good.x(x27-.5),y2)
+ --(good.x(x48+.5),y4)--(good.x(x48-.5),y4)--fi\\z8; % right diagonal
+ labels(1,2,3,4,5,6,7,8,15,27,36,48);
+endchar;
+
+cmchar "Plus sign";
+beginchar("+",arithmetic_bounds);
+ pickup lower_cal.nib;
+ x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis;
+ lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis;
+ draw z1--z2; % stem
+ draw z3--z4; % crossbar
+ labels(1,2,3,4);
+endchar;
+
+beginchar("*",9u#,body_height#,0);
+ "Asterisk";
+ italcorr body_height#*slant-u#;
+ pickup lower_cal.nib;
+ top y1=h+eps; bot y2=h-x_height-eps;
+ x1=x2=good.x 0.5w;
+ x3=good.x (x1-3u*cosd 30);
+ x1-x3=x1-x6=x5-x1=x4-x1;
+ y3=good.y (0.5[y1,y2]+3u*sind 30);
+ y1-y3=y1-y5=y4-y2=y6-y2;
+ draw z1..z2; draw z3..z4; draw z5..z6;
+ labels(1,2,3,4,5,6);
+endchar;
+
+cmchar "Virgule (slash)";
+beginchar("/",9u#,body_height#,paren_depth#);
+ italcorr body_height#*slant-.5u#;
+ pickup fine_cal.nib;
+ rt x1=hround(w-u)+eps; top y1=h+eps;
+ lft x2=hround u-eps; bot y2=-d-eps;
+ draw z1--z2; % diagonal
+ labels(1,2);
+endchar;
+
+beginchar("=",14u#,v_center(spread#+rth1#));
+ italcorr h#*slant-.5u#;
+ adjust_fit(0,0); pickup lower_cal.nib;
+ lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
+ y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
+ draw z1--z2; % upper bar
+ draw z3--z4; % lower bar
+ labels(1,2,3,4);
+endchar;
+
+cmchar "Calligraphic dot";
+beginchar(".", 5u#, dtsz#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ cal_dot1(0.5w, 0.5dtsz, dtsz);
+ math_fit(0, 0);
+ penlabels(1, 1');
+endchar;
+
+cmchar "Calligraphic comma";
+beginchar(", ", 5u#, dtsz#, comma_depth#);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ cal_comma1(0.5w, 0.5dtsz, 1, -comma_depth);
+ math_fit(0, 0);
+endchar;
+
+cal_apostrophe=hex"27"; cal_reverse_apostrophe=hex"60";
+cal_opening_quotes=hex"5C"; cal_closing_quotes=hex"22";
+
+cmchar "Calligraphic apostrophe";
+beginchar(cal_apostrophe, 5u#, asc_height#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ cal_comma1(0.5w, h-0.5dtsz, 1, h-comma_depth-dtsz);
+ math_fit(0, 0);
+endchar;
+
+cmchar "Calligraphic reverse apostrophe";
+beginchar(cal_reverse_apostrophe, 5u#, asc_height#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ cal_comma1(0.5w, h-0.5dtsz-comma_depth,
+ -1, h);
+ math_fit(0, 0);
+endchar;
+
+cmchar "Calligraphic opening quotes";
+beginchar(cal_opening_quotes, 7u#+max(2u#, dtsz#),
+ asc_height#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ cal_comma1(w-0.6u-0.5dtsz,
+ h-0.5dtsz-comma_depth, -1, h);
+ cal_comma2(w-0.6u-0.5dtsz-1.5u-max(2u, dtsz),
+ h-0.5dtsz-comma_depth, -1, h);
+ math_fit(0, 0);
+endchar;
+
+cmchar "Calligraphic closing quotes";
+beginchar(cal_closing_quotes, 7u#+max(2u#, dtsz#),
+ asc_height#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ cal_comma1(0.6u+0.5dtsz,
+ h-0.5dtsz, 1, h-dtsz-comma_depth);
+ cal_comma2(0.6u+0.5dtsz+1.5u+max(2u, dtsz),
+ h-0.5dtsz, 1, h-dtsz-comma_depth);
+ math_fit(0, 0);
+endchar;
+
+cmchar "Calligraphic semicolon";
+beginchar(";", 5u#, x_height#, comma_depth#);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ cal_dot1(0.5w, h-0.5dtsz, dtsz);
+ cal_comma2(0.5w, 0.5dtsz, 1, -comma_depth);
+ math_fit(0, 0);
+endchar;
+
+cmchar "Calligraphic colon";
+beginchar(":", 5u#, x_height#, 0);
+ italcorr 0.5u#;
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ cal_dot1(0.5w, 0.5dtsz, dtsz);
+ cal_dot2(0.5w, h-0.5dtsz, dtsz);
+ math_fit(0, 0);
+ penlabels(1, 1', 2, 2');
+endchar;
+
+cmchar "Calligraphic hyphen";
+beginchar("-", 6u#, x_height#, 0);
+ italcorr 0.5x_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ y1 = y3 = good.y 0.5h;
+ lft x1 = hround 0.2u-eps; rt x3 = hround(w-u)+eps;
+ z2 = 0.5[z1, z3];
+ draw z1{w, h}...z2{w, -0.5h}...z3{w, h};
+ math_fit(0, 0);
+ labels(1, 2, 3);
+endchar;
+
+cmchar "Calligraphic en-dash";
+beginchar(oct"173", 9u#, x_height#, 0);
+ italcorr 0.61803x_height#*slant+0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps;
+ draw z1..z2; math_fit(0, 0); labels(1, 2);
+endchar;
+
+cmchar "Calligraphic em-dash";
+beginchar(oct"174", 18u#, x_height#, 0);
+ italcorr 0.61803x_height#*slant+0.5u#;
+ adjust_fit(letter_fit#, letter_fit#);
+ pickup lower_cal.nib;
+ y1 = y2 = good.y 0.61803h; lft x1 = -eps; rt x2 = w+eps;
+ draw z1..z2; math_fit(0, 0); labels(1, 2, 3);
+endchar;
+
+beginchar("(", 6u#, asc_height#, desc_depth#);
+ italcorr asc_height#*slant;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3);
+ rt x1 = rt x3 = hround(w-0.5u); lft x2 = hround u;
+ draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3;
+ labels(1, 2, 3);
+ endchar;
+
+ beginchar(")", 6u#, asc_height#, desc_depth#);
+ italcorr asc_height#*slant;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ top y1 = h; bot y3 = -d; y2 = 0.5(y1+y3);
+ lft x1 = lft x3 = hround(0.5u); rt x2 = hround(w-u);
+ draw z1{x2-x1, 0.5(y2-y1)}...z2{down}...{x3-x2, 0.5(y3-y2)}z3;
+ labels(1, 2, 3);
+endchar;
+
+beginchar("[", 6u#, asc_height#, desc_depth#);
+ italcorr asc_height#*slant;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5];
+ rt x1 = rt x5 = hround(w-0.25u); lft x2 = lft x4 = hround 1.25u;
+ lft x3 = hround 1.5u;
+ draw z1--z2...z3{down}...z4--z5;
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar("]", 6u#, asc_height#, desc_depth#);
+ italcorr asc_height#*slant;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ top y1 = top y2 = h; bot y4 = bot y5 = -d; y3 = 0.5[y1, y5];
+ lft x1 = lft x5 = hround(0.25u); rt x2 = rt x4 = hround(w-1.25u);
+ rt x3 = hround(w-1.5u);
+ draw z1--z2...z3{down}...z4--z5;
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+beginchar("!", 5u#, asc_height#, 0);
+ "Exclamation point";
+ italcorr asc_height#*slant-2u#+0.5curve#;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ x1=x2=good.x 0.5w;
+ top y2= h+eps;
+ cal_dot3(0.5w, 0.5dtsz, dtsz);
+ bot y1=ceiling 0.25[top y3.b, x_height]-eps;
+ draw z1..z2; labels(1, 2);
+endchar;
+
+beginchar(call_spanish_shriek, 5u#, asc_height#-desc_depth#, desc_depth#);
+ "Spanish shriek";
+ italcorr (charht-0.5dtsz#)*slant-2u#+0.5dtsz#;
+ adjust_fit(0, 0);
+ pickup med_cal.nib;
+ x1=x2=good.x 0.5w;
+ bot y2=-d-eps;
+ cal_dot3(0.5w, h-0.5dtsz, dtsz);
+ top y1=floor 0.25[bot y3.d, h-x_height]+eps;
+ draw z1..z2; labels(1, 2);
+endchar;
+
+cmchar "Question mark";
+beginchar("?", 9u#, asc_height#, 0);
+ italcorr 0.8asc_height#*slant-0.5u#;
+ pickup med_cal.nib;
+ cal_dot9(0.5w, 0.5dtsz, dtsz);
+ top y4 = h+oo; bot y7=ceiling 0.25[top y9.b, x_height]-eps;
+ y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1= good.y 0.4[y2,y3];
+ y6=1/9[y7,y4]; y8 = good.y 0.8[y7, y6];
+ x3=good.x 1.5u; x5=good.x(w-1.25u); x4=0.55[x3,x5]; x7=0.5w;
+ x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4];
+ x8=good.x 0.5[x7,x5];
+ draw z1...z2 left_to_up z3 ...z4 right_to_down z5...z6 down_to_right z7...z8;
+ labels(1, 2, 3, 4, 5, 6,7,8);
+endchar;
+
+beginchar(call_spanish_query, 9u#, asc_height#-desc_depth#, desc_depth#);
+ "Spanish query";
+ pickup med_cal.nib;
+ cal_dot9(0.5w, h-0.5dtsz, dtsz);
+ bot y4 = -d-oo; top y7=ceiling 0.25[bot y9.d, h-x_height]+eps;
+ y2=good.y 0.5[y7, y4]; y3=y5=0.5[y2,y4]; y1=good.y 0.4[y2,y3];
+ y6=1/9[y7,y4]; y8 = good.y 0.8[y7,y6];
+ x3=good.x(w-1.5u); x5=good.x 1.25u; x4=0.55[x3,x5]; x7=0.5w;
+ x1=good.x 0.5[x3,x5]; x2=0.25[x3,x5]; x6=good.x 2/3[x3,x4];
+ x8=good.x 0.5[x7,x5];
+ draw z1...z2 right_to_down z3 ...z4 left_to_up z5...z6 up_to_left z7...z8;
+ labels(1, 2, 3, 4, 5, 6,7,8);
+endchar;
+
+% just look at italic corection and math fitting
+cmchar "Calligraphic ampersand";
+beginchar(oct"46", 14u#, asc_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = vround 0.98x_height;
+ bot y2 = bot y7 = -oo;
+ top y5 = h+oo;
+ y3 = 0.5[y2, x_height]; y4 = y6 = 0.6[x_height, y5];
+ y8 = good.y 7/8[x_height, y7];
+ x1 = x7 = good.x(w-2.5u);
+ x3 = good.x 1.25u; x6 = good.x 3u;
+ x8 = good.x w; x2 = 5u; x4-x6=hround 3u; x5=0.6[x6,x4];
+ draw z1{down}...z2 left_to_up z3...z4 up_to_left z5 left_to_down z6
+ ...z7{right}...z8;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+%
+% ACCENTS
+%
+
+cmchar "Calligraphic grave accent";
+beginchar(oct"22", 9u#, min(asc_height#, 2x_height#), 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup pencircle xscaled stem yscaled hair;
+ top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps;
+ lft x1 = hround 1.75u; rt x2 = hround 2/3[x1, w-x1];
+ draw z1{x2-x1, 2(y2-y1)}..z2;
+ labels(1, 2);
+endchar;
+
+cmchar "Calligraphic acute accent";
+beginchar(oct"23", 9u#, min(asc_height#, 2x_height#), 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup pencircle xscaled stem yscaled hair;
+ top y1 = h+eps; bot y2 = vround 1/3[x_height, h]-eps;
+ rt x1 = w-hround 1.75u; lft x2 = hround 2/3[x1, w-x1];
+ draw z1{x2-x1, 2(y2-y1)}..z2;
+ labels(1, 2);
+endchar;
+
+% HUM
+cmchar "Calligraphic tilde accent";
+beginchar(oct"176", 9u#,
+ min(asc_height#, 10/7x_height#+0.5flare#), 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ bot y4 = vround 1/3[x_height, h]-eps;
+ top y2 = h+eps; y1 = y3 = y5 = good.y 0.5[y2, y4];
+ lft x1 = w-rt x5 = hround 1.25u;
+ x2 = 0.25[x1, x5]; x3 = 0.5[x1, x5]; x4 = 0.75[x1, x5];
+ draw z1{(z2-z1) yscaled 2}...z2{right}...
+ z3{(z4-z3)yscaled 2}...z4{right} ...{(z5-z4) yscaled 2}z5;
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+cmchar "Calligraphic circumflex accent";
+beginchar(oct"136", 9u#, min(asc_height#, 2x_height#), 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup pencircle xscaled stem yscaled hair;
+ top y2 = h+eps; bot y1 = bot y3 = vround 1/3[x_height, h]-eps;
+ lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3];
+ draw z1..{x2-x1, 2(y2-y1)}z2
+ &z2{x3-x2, 2(y3-y2)}..z3;
+ labels(1, 2, 3);
+endchar;
+
+cmchar "Calligraphic hacheck accent";
+beginchar(oct"24", 9u#, min(asc_height#, 2x_height#), 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup pencircle xscaled stem yscaled hair;
+ top y1 = top y3 = h+eps; bot y2 = vround 1/3[x_height, h]-eps;
+ lft x1 = w-rt x3 = hround 1.75u; x2 = good.x 0.5[x1, x3];
+ draw z1..{x2-x1, 2(y2-y1)}z2
+ &z2{x3-x2, 2(y3-y2)}..z3;
+ labels(1, 2, 3);
+endchar;
+
+cmchar "Calligraphic breve accent";
+beginchar(oct"25", 9u#, min(asc_height#, 2x_height#), 0);
+ "Breve accent";
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+% pickup pencircle xscaled stem yscaled hair;
+ pickup lower_cal.nib;
+ top y1 = top y3=h+eps; bot y2=vround 1/3[x_height, h]-eps;
+ lft x1 = w-rt x3=hround 1.5u; x2=0.5[x1, x3];
+ draw z1 down_to_right z2 right_to_up z3; labels(1, 2, 3);
+endchar;
+
+cmchar "Calligraphic macron accent";
+beginchar(oct"26", 9u#, 0.4[x_height#, asc_height#]+0.5hair#, 0);
+ italcorr charht*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib; top y1 = top y2 = h;
+ lft x1 = w-rt x2 = hround 1.25u;
+ draw z1..z2; labels(1, 2);
+endchar;
+
+cmchar "Calligraphic circ accent";
+beginchar(oct"27", 14.4u#
+ +4/3(asc_height#-x_height#)*slant+1.5u#,
+ asc_height#, 0);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ numeric a, b; b = vround(1/3[x_height, h]);
+ a = round max(3.6u, h+o-b);
+ top y2 = b+a+eps; bot y4 = b-eps;
+ y0 = y1 = y3 = 0.5[y4, y2]; x0 = x2 = x4 = 0.5w;
+ lft x3 = hround(x0-0.5a)-eps; x1-x0 = x0-x3;
+ draw superellipse(z1, z2, z3, z4, superness);
+ labels(1, 2, 3, 4, 0);
+endchar;
+
+cmchar "Calligraphic cedilla accent";
+beginchar(oct"30", 9u#, 0, desc_depth#);
+ italcorr asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ bot y1 = -oo; top y2 = -vround max(o, -d/6);
+ bot y4 = -d; y3 = 0.5[y2, y4]; y5 = good.y 0.4[y4, y3];
+ x1 = x2 = x4 = good.x 0.5w;
+ lft x5 = w-rt x3 = hround 1.5u-eps;
+ draw z1--z2 right_to_down z3 down_to_left
+ z4 ... z5;
+ labels(1, 2, 3, 4, 5);
+endchar;
+
+cmchar "Calligraphic dot accent";
+beginchar(oct"137", 9u#,
+ min(asc_height#, 10/7x_height#+0.5flare#), 0);
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ cal_dot1(0.5w, h-0.5flare, flare);
+ math_fit(0, 0);
+ penlabels(1, 1');
+endchar;
+
+cmchar "Calligraphic umlaut accent";
+beginchar(oct"177", 9u#,
+ min(asc_height#, 10/7x_height#+0.5flare#), 0);
+ adjust_fit(0, 0);
+ pickup fine_cal.nib;
+ cal_dot1(2.75u, h-0.5flare, flare);
+ cal_dot2(w-2.75u, h-0.5flare, flare);
+ math_fit(0, 0);
+ penlabels(1, 1', 2, 2');
+endchar;
+
+cmchar "Calligraphic long umlaut accent";
+beginchar(oct"175", 9u#, min(asc_height#, 2x_height#), 0);
+ adjust_fit(0, 0);
+ pickup pencircle xscaled stem yscaled hair;
+ top y1 = top y3 = h+eps;
+ bot y2 = bot y4 = vround 1/3[x_height, h]-eps;
+ lft x4 = hround 2.25u; rt x1 = w-hround 1.5u;
+ x1-x3 = x2-x4 = hround 3u;
+ draw z1{x2-x1, 2(y2-y1)}..z2;
+ draw z3{x4-x3, 2(y4-y3)}..z4;
+ labels(1, 2, 3, 4);
+endchar;
+
+beginchar("@", 15u#, asc_height#, 0);
+ "The at sign";
+ italcorr 0.7asc_height#*slant-0.5u#;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ top y1 = 0.75h+eps; bot y3 = vround 0.25h-eps; y4 = 0.333[y3, y5];
+ top y5 = h+o; y6 = 0.5[y5, y7]; bot y7 = -o; y8 = good.y 0.15h;
+ y2 = 0.2[y3, y1];
+ rt x4 = rt x8 = w-hround u+eps; lft x6 = hround u-eps;
+ x5 = x7 = 0.5[x4, x6];
+ x1 = x2 = good.x(0.7[x6, x4]); x3 = 0.333[x2, x4];
+ draw z1..z2 down_to_right z3 right_to_up z4 up_to_left z5
+ left_to_down z6 down_to_right z7...z8;
+ %
+ y9b = good.y(0.73[y7, y5]); y9d = good.y(0.27[y7, y5]);
+ 0.5[y9b, y9d] = y9a = y9c;
+ y9a-y9e = 0.4*(y9b-y9e);
+ x9a = x1; x9c = good.x 0.71[x4, x6];
+ x9b = x9d = 0.5[x9a, x9c];
+ draw z9a up_to_left z9b...z9c down_to_right
+ z9d right_to_up z9a;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9a, 9b, 9c, 9d);
+ math_fit(0, 0);
+endchar;
+
+skewchar=oct"060"; skew#=.5u#;
+
+ligtable cal_reverse_apostrophe: cal_reverse_apostrophe=: cal_opening_quotes;
+ligtable cal_apostrophe: cal_apostrophe=: cal_closing_quotes;
+ligtable "!": cal_reverse_apostrophe =: call_spanish_shriek;
+ligtable "?": cal_reverse_apostrophe =: call_spanish_query;
+ligtable "<": "<" =: call_laquo;
+ligtable ">": ">" =: call_raquo;
+
+ligtable "-" : "-" =: oct"173";
+ligtable oct"173" : "-" =: oct"174";
+
+ligtable "I": "T": "V": skewchar kern skew#;
+ligtable "D": "R": "U": "W": "Y": skewchar kern 3skew#;
+ligtable "E": "G": "O": "Q": skewchar kern 4skew#;
+ligtable "B": "C": "L": "S": "X": "Z": skewchar kern 5skew#;
+ligtable "J": skewchar kern 6skew#;
+ligtable "A": skewchar kern 7skew#;
+
+ligtable "F": skewchar kern 4skew#,
+"a" kern -2u#, "e" kern -2u#, "o" kern -2u#, "r" kern -u#;
+
+ligtable "H": skewchar kern 4skew#,
+"a" kern -u#, "e" kern -u#, "o" kern -u#;
+
+ligtable "K": skewchar kern 2skew#,
+"a" kern -u#, "e" kern -u#, "o" kern -u#;
+
+ligtable "M": skewchar kern 5skew#,
+"a" kern -u#, "e" kern -u#, "o" kern -u#, "r" kern -u#;
+
+ligtable "N": skewchar kern 3skew#,
+"a" kern -u#, "e" kern -u#, "o" kern -u#;
+
+ligtable "P": skewchar kern 3skew#,
+"a" kern -u#, "e" kern -u#, "o" kern -u#;
+
+ligtable "f": "a" kern -0.5u#, "e" kern -0.5u#, "o" kern -0.5u#;
+ligtable "h": "m": "n": "t": "x":
+"a" kern -0.25u#, "e" kern -0.25u#, "o" kern -0.25u#,
+"d" kern -0.25u#, "g" kern -0.25u#, "q" kern -0.25u#;
+ligtable "o": "x" kern -0.25u#;
+
+endinput.
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf
new file mode 100644
index 00000000000..3fa14501e45
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf
@@ -0,0 +1,1105 @@
+% mathematical symbols by Anthony Phan.
+% file: mathcallgreek.mf (calligraphic font)
+% last modification: May 16, 2005.
+
+%
+% UPPERCASE
+%
+
+let math_fit = do_math_fit;
+math_fitting := true;
+
+cmchar "Calligraphic Alpha";
+beginchar(hex"81",14.4u#,cap_height#,0);
+ italcorr .5u#;
+ adjust_fit(-.05w#,0); pickup cal.nib;
+ lft x5=.54w; x7=.9w;
+ top y5=h+.4cap_curve; bot y7=bot_flourish_line;
+ z6=.3[z7,z5]-bend;
+ pickup tilted.nib;
+ lft x1=.05w; x2=.2w; rt x4=x5;
+ y1=y2+.1h; bot y2=bot_flourish_line; top y4=h+.4cap_curve;
+ y3=y6; z3=whatever[z2,z4]+2bend;
+ draw\\(z1..tension 1.2..{right}z2) softjoin flex(z2,z3,z4); % left diagonal
+ pickup cal.nib;
+ erase fill\\(0,bot y5)--(w,bot y5)--(w,top y5)--(0,top y5)--cycle;
+ draw flex(z5,z6,z7) softjoin (z7--z7+cal.extension); % right diagonal
+ draw rt z3--z6; % bar
+ math_fit(.5u#-.1cap_height#*slant,ic#); labels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic Beta";
+beginchar(hex"82",9.9u#,cap_height#,0);
+ italcorr max(.8h#*slant-.1w#,.3h#*slant)+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ lft x1=lft x3=0; x4=.6[x2,x5]; rt x5=.9w; x6=.4w; rt x7=w;
+ x8=.4[x9,x7]; lft x9=rt x3;
+ top y1=h+o; bot y3=-o; z2=.3[z3,z1]+bend;
+ y4=y1; y5=.6[y6,y4]; y6=.55h; y7=.45[y8,y6]; bot y8=-o; y9=.1h;
+ draw z1-cal.extension--flex(z1,z2,z3); % stem
+ draw z2{up}...z4...z5{down}...{dir 200}z6{dir 10}
+ ...z7{down}...z8{left}...z9; % lobes
+ math_fit(.5u#,.3h#*slant+.5u#); labels(1,2,3,4,5,6,7,8,9);
+endchar;
+
+cmchar "Calligraphic Gamma";
+beginchar(hex"83",13.5u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(-.1w#,-u#); pickup cal.nib;
+ x1=.5w; x3=.4w; lft x4=.1w; x5=x2+.35w; x6=.7[x1,x7]; rt x7=w;
+ top y1=top y6=h; z2=.5[z3,z1]+1.2bend;
+ bot y3=-o; y4=.1h; y5=y2; y7=.9h;
+ draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
+ draw z1-flourish_change{up}...(z1-(u,0))---z6...{down}z7; % upper bar
+ math_fit(0,.5ic#); labels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic Epsilon";
+beginchar(hex"85",8.5u#,cap_height#,0);
+ italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ x1=.9[x3,x2]; rt x2=.9w; x3=.6[x4,x2]; lft x4=.05w;
+ x5=.7[x6,x2]; lft x6=0; x7=.5[x6,x8]; rt x8=w;
+ y1=y2-.1h; y2=.9h+o; top y3=h+o; y4=.5[y5,y3];
+ y5=.55h; y6=.6[y5,y7]; bot y7=-o; y8=.2h;
+ draw\\(z1{2(x2-x1),y2-y1}...z2)
+ softjoin (z2...z3{left}...z4{down}...{right}z5); % upper arc
+ draw z5{left}...z6{down}...z7{right}...z8; % lower arc
+ math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#);
+ labels(1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "Calligraphic Zeta";
+beginchar(hex"86",10.4u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(0,0); pickup heavy_cal.nib;
+ lft x1=.05w; x2=.4w; rt x3=w; lft x7=0; x8=.8[x7,x9]; rt x9=1.1w;
+ top y1=58/70h; top y2=top y3=h; bot y7=bot y8=0; bot y9=15/70h;
+ z5=.55[z7,z3]+bend;
+ x10=x5-2.5u; x11=x5+2u; x12=.2[x3,x2]; x13=.2[x7,x8];
+ y10=y5; bot y11=y10-6/70h; y12=64/70h; y13=6/70h;
+ draw z1{up}...z2{right}...{right}z12...z3; % upper arm
+ draw flex(z3,z5,z7); % diagonal
+ draw z7...z13{right}...{right}z8...{up}z9; % lower arm
+ pickup light_cal.nib;
+ draw z10...z5{right}...{down}z11; % bar
+ math_fit(.5u#,.6ic#); labels(1,2,3,5,7,8,9,10,11,12,13);
+endchar;
+
+
+cmchar "Calligraphic Eta";
+beginchar(hex"87",12.2u#,cap_height#,0);
+ italcorr max(h#*slant-.2w#,.15h#*slant)+.5u#;
+ adjust_fit(4u#,0); pickup cal.nib;
+ lft x1=lft x3=.5u; rt x4=rt x6=.8w-.6u; rt x9=w;
+ top y1=top y4=h; bot y3=-.06h; bot y6=bot_flourish_line; y9=y6+.1h;
+ z2=.6[z3,z1]+bend; z5=.4[z6,z4]-bend;
+ path p[]; p1=flex(z1,z2,z3); p2=flex(z4,z5,z6);
+ p3=(-w,.45h)--(2w,.45h);
+ rt z7+2bend=p3 intersectionpoint p1; rt z8=p3 intersectionpoint p2;
+ draw (z1-flourish_change-bend{curl2}....z1-(u,0)---z1) softjoin p1; % left stem
+ draw p2 softjoin (z6{right}...{up}z9); % right stem
+ draw z7--z8; % bar
+ math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#);
+ labels(1,2,3,4,5,6,7,8,9);
+endchar;
+
+cmchar "Calligraphic Theta";
+beginchar(hex"88",12.6u#,cap_height#,0);
+ italcorr .7h#*slant+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w;
+ top y1=top y5=h+o; y2=.55h; bot y3=-o; y4=.5h; y6=y2;
+ y9 = good.y 0.65h; y7 = y10 = good.y 0.35h; y8 = good.y 0.5h;
+ x7 = x6; x8 = 0.5w; x9 = x10 = w-x6;
+ draw z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6
+ --z7{up}...z8{right}...z9{up}--z10;
+ math_fit(.5u#-.3h#*slant,ic#-.5u#);
+ labels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+cmchar "Calligraphic Iota";
+beginchar(hex"89",10.8u#,cap_height#,0);
+ italcorr max(h#*slant+.5cap_curve#-.2w#,.15h#*slant)+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ lft x0=0; x1=.9w; x2=x4=.5w; x5=.2w; x6=.8w; rt x7=1.05w;
+ y0=.8h; top y1=top y2=h; z3=.5[z4,z2]+bend;
+ bot y4=bot y5=bot y6=0; y7=.15h;
+ draw z0{up}...z2---z1; % upper bar
+ z8=.5[z2,z1];
+ draw z8{left}...z3{down}...{left}.5[z4,z5]; % stem
+ draw z5---z6...{up}z7; % lower bar
+ math_fit(.5u#-.8h#*slant,.15h#*slant+.5u#);
+ labels(0,1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic K";
+beginchar(hex"8A",11u#,cap_height#,0);
+ italcorr max(h#*slant-.2w#,.2h#*slant)+.5u#;
+ adjust_fit(0,.1w#); pickup cal.nib;
+ lft x1=lft x3=0; top y1=h+o; bot y3=-o; z2=.6[z3,z1]+bend;
+ draw z1-cal.extension--flex(z1,z2,z3); % stem
+ pickup light_cal.nib;
+ rt x4=.9w; x5=x4-.1w; x7=.8w; rt x8=1.1w;
+ y4=.9h; top y5=h+o; bot y7=-o; y8=.2h-o;
+ (lft z6)t_=z2.t_+penoffset up of pen_[cal.nib];
+ draw z4{up}...{left}z5..tension atleast 2..{down}z6
+ ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals
+ math_fit(.5u#,.2h#*slant+.5u#); labels(1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "Calligraphic Lambda";
+beginchar(hex"8B",14.4u#,cap_height#,0);
+ italcorr .5u#;
+ adjust_fit(-.05w#,0); pickup cal.nib;
+ lft x5=.54w; x7=.9w;
+ top y5=h+.4cap_curve; bot y7=bot_flourish_line;
+ z6=.3[z7,z5]-bend;
+ pickup tilted.nib;
+ lft x1=.05w; x2=.2w; rt x4=x5;
+ y1=y2+.1h; bot y2=bot_flourish_line; top y4=h+.4cap_curve;
+ y3=y6; z3=whatever[z2,z4]+2bend;
+ draw\\(z1..tension 1.2..{right}z2) softjoin flex(z2,z3,z4); % left diagonal
+ pickup cal.nib;
+ erase fill\\(0,bot y5)--(w,bot y5)--(w,top y5)--(0,top y5)--cycle;
+ draw flex(z5,z6,z7) softjoin (z7--z7+cal.extension); % right diagonal
+ math_fit(.5u#-.1cap_height#*slant,ic#); labels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic Mu";
+beginchar(hex"8C",19.8u#,cap_height#,0);
+ italcorr max(h#*slant-u#,.75cap_curve#)+.5cap_curve#+.5u#;
+ adjust_fit(-.1w#,0); pickup med_cal.nib;
+ (z20)t_=(z5)t_+penoffset down of currentpen
+ =(z4)t_+penoffset down of pen_[tilted.nib];
+ z6=.3[z7,z5]-bend; z9=.3[z8,z10]+.5bend; z12=.3[z13,z11]-bend;
+ x7=.5[x2,x13]; bot y7=.05h; top y5=h+o;
+ (z0)t_=(z7)t_+penoffset right of currentpen
+ =(z8)t_+penoffset right of pen_[tilted.nib];
+ pickup cal.nib;
+ (z30)t_=(z11)t_+penoffset up of currentpen
+ =(z10)t_+penoffset up of pen_[tilted.nib];
+ x13=w; bot y13=bot_flourish_line;
+ pickup tilted.nib;
+ lft x1=.1w; x2=.2w; x4=.2[x2,x7]; x10=.8[x7,x13];
+ y1=.05h+y2; bot y2=bot_flourish_line; top y10=h+o;
+ z3=whatever[z2,z4]+2bend; y3=y6;
+ draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem
+ erase fill z20--(.5w,y20)--(.5w,top y4)--(x20-4u,top y4)--cycle;
+ pickup med_cal.nib;
+ draw flex(z5,z6,z7); % left diagonal
+ pickup cal.nib;
+ draw flex(z11,z12,z13) softjoin (z13--z13+cal.extension); % right stem
+ pickup tilted.nib;
+ path p; p=flex(z8,z9,z10);
+ erase fill z0--(x0,y0-.5h)--(x9,y0-.5h)--subpath(1,0) of p--cycle;
+ erase fill z30--(x30,y30+.5h)--(x9,y30+.5h)--subpath(1,2) of p--cycle;
+ draw p; % right diagonal
+ math_fit(.5u#-.05h#*slant,ic#);
+ labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,20,30);
+endchar;
+
+cmchar "Calligraphic Nu";
+beginchar(hex"8D",9u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(2u#,2.5u#); pickup med_cal.nib;
+ (z0)t_=(z5)t_+penoffset down of currentpen
+ =(z4)t_+penoffset down of pen_[tilted.nib];
+ (z20)t_=(z7)t_+penoffset up of currentpen
+ =(z8)t_+penoffset up of pen_[tilted.nib];
+ z6=.3[z7,z5]-bend; rt z7=(w,0); top y5=h+o;
+ pickup tilted.nib;
+ lft x1=x2-2u; x2=-u; x4=0; x10=w; rt x11=w+3u;
+ y1=y2+.05h; bot y2=bot_flourish_line;
+ y3=y6; z3=whatever[z2,z4]+2bend;
+ y10=h; z9=.7[z8,z10]-.5bend; bot y11=h;
+ draw\\(z1..tension1.2..{right}z2) softjoin flex(z2,z3,z4); % left stem
+ draw flex(z8,z9,z10)...{right}z11; % right stem
+ pickup med_cal.nib;
+ erase fill z0--(.5w,y0)--(.5w,1.5h)--(x0-4u,1.5h)--cycle;
+ erase fill z20--(.5w,y20)--(.5w,-.5h)--(x20+4u,-.5h)--cycle;
+ draw flex(z5,z6,z7); % diagonal
+ math_fit(.5u#-.05h#*slant,.3h#*slant);
+ labels(0,1,2,3,4,5,6,7,8,9,10,11,20);
+endchar;
+
+cmchar "Calligraphic Omicron";
+beginchar(hex"8F",12.6u#,cap_height#,0);
+ italcorr .7h#*slant+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ x1=.3w; lft x2=0; x3=.5w; rt x4=w; x5=.6w; lft x6=.27w;
+ top y1=top y5=h+o; y2=.55h; bot y3=-o; y4=.5h; y6=y2;
+ path p; p=z1...z2{down}...z3{right}...z4{up}...z5{left}...{down}z6;
+ draw subpath(0,4.8) of p; % bowl
+ math_fit(.5u#-.3h#*slant,ic#-.5u#);
+ labels(1,2,3,4,5,6);
+endchar;
+
+%
+% a revoir
+%
+
+cmchar "Calligraphic Pi";
+beginchar(hex"90",13u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(0,-.5u#);
+ pickup heavy_cal.nib;
+ x1=x3-0.03w; x3=.3w;
+ lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w;
+ top y1=h; y4=3/4h; top y5=top y6=h; top y7=1.05h;
+ draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms
+ pickup tilted.nib;
+ bot y3=-.1h;
+ z2=.3[z3,z1]+bend;
+ top y0=y1; x0=x2;
+ draw z0---z2...z3; % left stem
+ pickup cal.nib;
+ x8 = 0.75w; x10 = 0.9w;
+ top y8=y1; bot y10=bot_flourish_line;
+ z9=.3[z10,z8]-bend;
+ draw flex(z8,z9,z10) softjoin (z10--z10+cal.extension); % right stem
+ math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic Rho";
+beginchar(hex"91",9u#,cap_height#,0);
+ italcorr .8h#*slant+.5u#;
+ adjust_fit(4u#,0); pickup cal.nib;
+ lft x1=lft x3=0; x4=x6=.3[x1,x5]; rt x5=w;
+ top y1=top y4=h; y3=-o; y5=.55[y6,y4]; bot y6=.3h;
+ z2=.5[z3,z1]+bend;
+ draw flex(z1,z2,z3); % stem
+ draw z1{left}...{down}z1-flourish_change; % swash
+ draw z1---z4...z5{down}...{left}z6; % lobe
+ math_fit(.5u#-.8h#*slant,.5ic#); labels(1,2,3,4,5,6);
+endchar;
+
+cmchar "Calligraphic Tau";
+beginchar(hex"93",13u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(0,-.5u#); pickup heavy_cal.nib;
+ x1=.47w; x3=.5w; lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w;
+ top y1=h; bot y3=-.1h; y4=3/4h; top y5=top y6=h; top y7=1.05h;
+ z2=.3[z3,z1]+bend;
+ top y0=y1; x0=x2;
+ z8=(2u,.2h);
+ draw z0---z2...z3; % stem
+ draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms
+ math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Calligraphic Chi";
+beginchar(hex"96",11.4u#,cap_height#,0);
+ italcorr h#*slant+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ lft x1=.08w; lft x2=.2w; x4-x3=x2-x1; rt x4=w;
+ h-y1=y4=1/9h; top y2=h; bot y3=0;
+ draw z1{up}....z2{right}
+ ... .2[z2+(.1w,0),z3-(.1w,0)]---.8[z2+(.1w,0),z3-(.1w,0)]
+ ...{right}z3....{up}z4; % left diagonal
+ x5=x6-u; rt x6=w; lft x7=0; x8=x7+u;
+ top y5=h; y6=.85h; y7=h-y6; bot y8=0;
+ draw z5{right}...z6{down}
+ ..tension atleast 3..{down}z7...{right}z8; % right diagonal
+ math_fit(.5u#,1/7h#*slant+.5u#); labels(1,2,3,4,5,6,7,8);
+endchar;
+
+%
+% LOWERCASE
+%
+
+let math_fit = ignore_math_fit;
+math_fitting := false;
+
+% just look at italic corection and math fitting
+cmchar "Calligraphic alpha";
+beginchar(hex"A1", 11u#, x_height#, 0);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant+0.5lower_cal_width#-2u#) if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = vround 0.98h;
+ bot y2 = bot y5 = -oo;
+ top y4 = x_height+oo;
+ y3 = 0.5[y2, y4];
+ y6 = good.y 7/8[x_height, y5];
+ x1 = x5 = good.x(w-2.5u);
+ x3 = good.x 1.25u;
+ x6 = w; x2 = x4 = 0.5[x3, 6.5u];
+ draw z1{down}...z2 left_to_up z3 up_to_right z4...z5{right}...z6;
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+% just look at italic corection and math fitting
+cmchar "Calligraphic beta";
+beginchar(hex"A2", 8u#, asc_height#, desc_depth#);
+ italcorr max(.8h#*slant-.1w#, .5x_height#*slant)+.5u#;
+ adjust_fit(0, 0);
+ % see es-zet
+ pickup lower_cal.nib;
+ x2-x1=hround 0.5u; x2 = good.x 1.5u; x4 = .6[x2, x5];
+ x5 = good.x(0.9w-1.25u); lft x6 = x2; x7 = good.x(w-1.25u);
+ x8 = .4[x9, x7]; lft x9 = rt x2;
+ bot y1 = -d-eps; y2 = 0.5x_height;
+ top y4 = h+oo; y5 = .6[y6, y4]; y6 = .55h; y7 = .45[y8, y6];
+ bot y8 = -oo; y9 = .1h;
+% draw z1-cal.extension--flex(z1, z2, z3); % stem
+ draw z1...z2{up}...z4...z5{down}...{dir 200}z6{dir 10}
+ ...z7{down}...z8{left}...z9; % lobes
+ %
+ math_fit(.5u#, .3h#*slant+.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+% just look at math fitting
+cmchar "Calligraphic gamma";
+beginchar(hex"A3", 10u#, x_height#, desc_depth#);
+ italcorr h#*slant;
+ adjust_fit(0, 0);
+ pickup lower_cal.nib;
+ x1 = good.x 0; x3 = good.x(w-3.4u);
+ x2 = max(1.25u, 0.5[x1, x3]);%0.5[x1, x3];
+ x5 = good.x 3.8u;
+ x4=2/3[x3, x5];
+ rt x6 = hround(w-0.5u);
+ top y2 = x_height+oo; y1 = good.y 7/8[0, y2]; bot y4 = -d-eps;
+ y3 = y5 = 0.825[y2, y4]; top y6=vround 0.98 h;
+ draw z1...z2{right}... z3 down_to_left z4 left_to_up z5...z6{up};
+ math_fit(.5u#, .3h#*slant+.5u#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "Calligraphic epsilon";
+beginchar(hex"A5", 8u#,x_height#,0);
+ italcorr max(h#*slant-.1w#,.2h#*slant)+.5u#;
+ adjust_fit(0,0); pickup lower_cal.nib;
+ rt x2 = hround(w-1.1u); x3=.6[x4,x2]; x4=good.x(1.5u);
+ x5=.7[x6,x2]; x6= good.x 1.25u; x7=.5[x6,x8]; x8 = good.x w;
+ x1=good.x 0.6[x5, x2];
+ %y1=y2-.1h;
+ y2=.9h+oo; top y3=h+oo; y4=.5[y5,y3];
+ y5=good.y .55h; y6=.5[y5,y7]; bot y7=-oo; y8=good.y 1/4x_height;
+ y1 = good.y 0.6[y5, y3];
+ draw\\(z1{2(x2-x1),y2-y1}...z2)
+ softjoin (z2...z3{left}...z4 down_to_right z5); % upper arc
+ draw z5{left}...z6 down_to_right z7...z8; % lower arc
+ math_fit(.5u#-.2h#*slant,.2h#*slant+.5u#);
+ labels(1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "The letter eta";
+beginchar(hex"A7", 9u#, x_height#, desc_depth#);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ 0.75x_height#*slant+0.5lower_cal_width#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = x4 = good.x 2.5u; bot y4 = -oo;
+ x6 = x7 = good.x(w-1.5u); bot y7 = -d-eps;
+ draw hook_in(1, 2, 3)---z4;
+ draw ital_arch(4, 5, 6)...z7{down};
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "The letter theta";
+beginchar(hex"A8", 8u#, asc_height#, 0);
+ italcorr .7asc_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ z5 = z1; x6 = good.x 0.2[x2, x4]; x7 = 0.7[x2, x4];
+ y6 = 0.8[y3, y5]; y7 = good.y 0.43[y3, y5];
+ save p; path p; p = z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z5 left_to_down z6...z7{right}...z4;
+ draw subpath (1.75, 12) of p;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "The letter theta (variant)";
+beginchar(hex"BA", 9.5u#, asc_height#, 0);
+ italcorr .7asc_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ bot y5 = -oo; top y7 = h+oo; y6 = 0.5[y5, y7];
+ y4 = 0.7[y5, 0.57x_height];
+ y8 = 0.8[y5, y7]; y9 = good.y 0.43[y5, y7];
+ top y10 = x_height+oo; y10 := good.y 7/8[0, y10];
+ x1 = 0; x3 = good.x 2.5u;
+ x6 = good.x(w-1.75u);
+ x5 = x7 = 0.5[x3, x6];
+ x8 = good.x 0.2[x3, x6]; x9 = 0.75[x3, x6]; x10 = good.x w;
+ draw hook_in(1,2,3)...
+ z5{right} ... z6 up_to_left z7 left_to_down z8...z9{right}...z10;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+cmchar "The letter kappa";
+beginchar(hex"A9", 9u#, x_height#, 0);
+ italcorr max(0.2x_height#*slant+0.1w#,
+ 0.95x_height#*slant-0.1w#+0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u;
+ draw z1-cal.extension--z1--z2;
+ %
+ rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w;
+ y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo;
+ (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib];
+ draw z4{up}...{left}z5..tension atleast 2..{down}z6
+ ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals
+ %
+ math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+cmchar "Calligraphic mu";
+beginchar(hex"AB", 9u#, x_height#, desc_depth#);
+ italcorr max(0.15x_height#*slant+0.5lower_cal_width#,
+ x_height#*slant+0.5lower_cal_width#-2u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = x2 = x3 = good.x 1.5u;
+ x4 = 0.5[x2, x5]; x5 = x6 = x7 = good.x(w-2.5u); x9 = w;
+ bot y1 = -d-eps; top y2 = h;
+ y3 = 0.7[y4, y5]; bot y4 = -oo; y5 = 0.57h; top y6 = h;
+ draw z1..z2;
+ draw z3 down_to_right z4...z5{up};
+ draw z6..hook_out(7, 8, 9);
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 6, 7, 8, 9);
+endchar;
+
+%cmchar "Calligraphic nu";
+% beginchar(hex"AC", 9u#, x_height#, 0);
+% italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+% if math_fitting: -0.5u# fi; % same as "o"
+% adjust_fit(0, 0);
+% %
+% pickup lower_cal.nib;
+% x1 = good.x 0; x2 = 0.5[x1,x3]; x3 = x4-.25(y3-y4);
+% x4 = good.x 0.5w; x5 = good.x(w-1.25u); x6 = good.x(w-2u);
+% top y2 = x_height+oo; y1 = good.y 7/8[0, y2];
+% y3 = .57x_height;%3/4x_height;
+% bot y4 = -oo; y5 = 0.57h; top y6 = h+oo;
+% draw z1...z2{right}...z3---z4;
+% draw z4{(x5-x4), 1/3(y5-y4)}...z5{up}...z6;
+% %
+% math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+% labels(1, 2, 3, 4, 5, 6);
+% endchar;
+
+cmchar "Calligraphic nu";
+beginchar(hex"AC", 8u#, x_height#, 0);
+ italcorr 0.8x_height#*slant;
+ adjust_fit(0, 0.5u#);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; top y1 = h; z3 = (.48w, 0);
+ z0.t_ = z2.t_+penoffset down of currentpen
+ = z3.t_+penoffset down of pen_[tilted.nib];
+ draw z1{right}..tension atleast 1 and infinity..z2; % left diagonal
+ pickup tilted.nib;
+ rt x4 = w; x5 = x4-.2w; top y4 = .8h; top y5 = h;
+ path p; p = z3..tension atleast 3 and 1..{up}z4;
+ erase fill z0--(x0, y0-0.5h)--(x4, y0-0.5h)--(x4+eps, y4)--reverse p--cycle;
+ draw p...{left}z5; % right diagonal
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, 2/3ic#);
+ labels(0, 1, 2, 3, 4, 5);
+endchar;
+
+cmchar "The letter omicron";
+beginchar(hex"AF", 9u#, x_height#, 0);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4);
+endchar;
+
+cmchar "Calligraphic pi";
+beginchar(hex"B0", 9u#, x_height#, 0);
+ italcorr x_height#*slant+0.5u# if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y2 =top y4= h; y2-y1 = vround 0.2h; top y3 = 0.98h;
+ x1 = good.x u; x2 = 3.5u; x3=good.x(w-2.5u); rt x4=w;
+ draw z1...z2{right}...z3{right}...z4;
+ top y9 = vround 0.98h; x9 = x10 = good.x(w-2.5u); x12 = w;
+ draw z9..hook_out(10, 11, 12);
+ bot y6=-oo; x5=0; x6=0.5[x5,x2]; y5-y6=vround 0.1h;
+ z7=0.3[z6,z2];
+ draw z5...z6{right}...z2{up};
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8,9,10,11,12);
+endchar;
+
+cmchar "The letter rho";
+beginchar(hex"B1", 8u#, x_height#, desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ % like letter "b"
+ pickup lower_cal.nib;
+ bot y1 = -d-eps; y2 = 0.5x_height; bot y5 = -oo;
+ y4 = 0.5x_height; top y3 = x_height+oo;
+ x1 = x2 = good.x 1.5u; x3 = 0.5[x2, x4];
+ x4 = good.x(w-1.25u); x5 = 0.5[x2, x4];
+ draw z1..z2{up}
+ ...z3{right}...z4{down}...z5{left}...z2{up};
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(0, 1, 2, 3, 4, 5);
+endchar;
+
+cmchar "The letter rho (variant)";
+beginchar(hex"BD", 8u#, x_height#, desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ % like letter "b"
+ pickup lower_cal.nib;
+ bot y1 = -d-eps; y2 = 0.5x_height; bot y5 = -oo;
+ y4 = 0.5x_height; top y3 = x_height+oo;
+ rt x1 = w; x2 = good.x 1.5u; x3 = 0.5[x2, x4];
+ x4 = good.x(w-1.25u); x5 = 0.5[x2, x4];
+ draw z1...(x5, good.y 0.25[y1, y5]){left}...z2{up}
+ ...z3{right}...z4{down}...z5{left}...z2{up};
+ %
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(0, 1, 2, 3, 4, 5);
+endchar;
+
+cmchar "Calligraphic upsilon";
+beginchar(hex"B4", 9u#, x_height#, 0);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi; % same as "o"
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2u);
+ y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57h; top y7 = h+oo;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7;
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "The letter phi";
+beginchar(hex"B5", 11u#, asc_height#, asc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi; % same as "o"
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = x_height+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ draw z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z1;
+ pickup fine_cal.nib;
+ x5= x6 =good.x 0.5w; top y5 =h+eps; bot y6=-d-eps;
+ draw z5..z6;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6);
+endchar;
+
+cmchar "The letter phi (variant)";
+beginchar(hex"BF", 11u#, x_height#, desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi;
+ adjust_fit(0, 0);%(-0.25u#, -0.25u#);
+ %
+ pickup lower_cal.nib;
+ top y1 = h+oo; bot y3 = -oo; y2 = y4 = 0.5[y1, y3];
+ x2 = good.x 1.25u; x4 = good.x(w-1.25u); x1 = x3 = 0.5[x2, x4];
+ x5 = 0.5[x6,x4]; x6 = x7 = good.x 0.5[x2, x4];
+ y5 = y1; y6 = 0.5[y3, y5]; bot y7 = -d-eps;
+ save p; path p; p = z1 left_to_down z2 down_to_right
+ z3 right_to_up z4 up_to_left z5 left_to_down z6..z7;
+ draw subpath (.75, 12) of p;
+ math_fit(-.3x_height#*slant+0.5curve#-u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7);
+endchar;
+
+cmchar "Calligraphic chi";
+beginchar(hex"B6",11u#,x_height#,desc_depth#);
+ italcorr h#*slant+.5u#;
+ adjust_fit(0,0); pickup cal.nib;
+ lft x1=.08w; lft x2=.2w; x4-x3=x2-x1; rt x4=w;
+ h-y1=d+y4=1/9(h+d); top y2=h; bot y3=-d-eps;
+ draw z1{up}....z2{right}
+ ... .2[z2+(.1w,0),z3-(.1w,0)]---.8[z2+(.1w,0),z3-(.1w,0)]
+ ...{right}z3....{up}z4; % left diagonal
+ x5=x6-u; rt x6=w; lft x7=0; x8=x7+u;
+ top y5=h; y6=.85[-d,h]; y7=h-d-y6; bot y8=-d-eps;
+ draw z5{right}...z6{down}
+ ..tension atleast 3..{down}z7...{right}z8; % right diagonal
+ math_fit(.5u#,1/7h#*slant+.5u#); labels(1,2,3,4,5,6,7,8);
+endchar;
+
+cmchar "Calligraphic psi";
+beginchar(hex"B7", 11u#, asc_height#, desc_depth#);
+ italcorr .7x_height#*slant+0.5lower_cal_width#-u#
+ if math_fitting: -0.5u# fi; % same as "o"
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ x1 = 0; x3 = good.x(2.80u); x4 = good.x(2.3u);
+ x5 = 0.5[x4, x6]; x6 = good.x(w-1.25u); x7 = good.x(w-2u);
+ y4 = 0.7[y5, y6]; bot y5 = -oo; y6 = 0.57x_height; top y7 = x_height+oo;
+ draw hook_in(1, 2, 3)...z4 down_to_right z5...z6{up}...z7;
+ pickup fine_cal.nib;
+ x8 = x9 = good.x(0.5[2.5u, w-1.5u]); top y8 = h+eps; bot y9 = -d-eps;
+ draw z8..z9;
+ %
+ math_fit(-2/3x_height#*slant+0.5hair#+0.5u#, ic#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+endchar;
+
+endinput.
+
+
+%
+% GREEK LOWERCASE
+%
+
+apprr:=apprl:=hround u;
+beginchar(oct"241", 10u#, x_height#, 0);
+ "The letter alpha";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y1 = h+eps; top y5 = h+u_o; bot y2 = -d_o; bot y6 = -eps;
+ 0.5[y3, y4] = 0.5[y2, y5]; y4-y3 = loop_squareness*(y5-y2);
+ lft x3 = lft x4 = apprl-ho; rt x1 = rt x6 = w-apprr+eps;
+ x2 = x5 = 0.375[x3, x6];
+ draw z1 hang_to z2 left_to_up z3..z4 up_to_right z5
+ hook_to z6; labels(1, 2, 3, 4, 5, 6);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"242", 8u#, asc_height#, desc_depth#);
+ "The letter beta";
+ italcorr 0.8asc_height#*slant-u#+ho#;
+ pickup lower_cal.nib;
+ bot y1 = -d; top y5 = x_height; top y3 = h+u_o; bot y7 = -d_o;
+ 0.5[y4', y4] = 0.5[y5, y3]; 0.5[y6', y6] = 0.5[y7, y5]; y8 = hook_h;
+ y4-y4' = loop_squareness*(y3-y5);
+ y6-y6' = loop_squareness*(y5-y7); y2 = y4';
+ lft x1 = apprl; x1 = x2 = x8; rt x4+hround 0.5u = rt x6 = w-apprr+ho;
+ x3 = 0.55[x2, x4]; x7 = 0.5[x8, x6]; lft x5 = rt x1+hround u;
+ x4 = x4'; x6 = x6';
+ draw z1..z2 up_to_right z3 right_to_down z4..z4' down_to_left z5
+ &z5 right_to_down z6..z6' down_to_left z7 left_to_up z8;
+ labels(1, 2, 3, 4, 4', 5, 6, 6', 7, 8);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"243", 8u#, x_height#, desc_depth#);
+ "The letter gamma";
+ italcorr x_height#*slant;
+ pickup lower_cal.nib; numeric a; a = 0.60;
+ top y1 = top y7 = h+eps; bot y4 = -d-d_o; y3 = y5 = 0.2[y4, y1];
+ lft x1 = apprl-hround 0.5u; rt x7 = w-apprr+hround 0.5u;
+ x5-x1 = x7-x3 = hround 1.5u; x4 = 0.5[x3, x5];
+ x2 = a[x1, x3]; x6 = a[x7, x5]; y2 = a[y3, y1]; y6 = a[y5, y7];
+ draw z1...z2{z3-z1}...z3 down_to_left
+ z4 left_to_up z5...z6{z7-z5}...z7;
+ labels(1, 2, 3, 4, 5, 6, 7);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"244", 8u#, asc_height#, 0);
+ "The letter delta";
+ italcorr 0.9asc_height#*slant-u#;
+ pickup lower_cal.nib;
+ top y1 = top y2 = h; y5 = good.x x_height; bot y8 = -d_o;
+ rt x7-ho = rt x1+hround 0.5u = w-apprr;
+ lft x9+ho = lft x3+eps = apprl;
+ x5 = x8 = 0.5[x9, x7]; x2 = 0.4[x3, x1];
+ slope := -h/17u;
+ ellipse_set(2, 3, 4, 5); ellipse_set(8, 7, 6, 5);
+ y7 = y9; y10 = y6; x6-x5 = x5-x10;
+ draw z1{x2-x1, 2(y2-y1)}
+ ..z2 left_to_down z3 ...z4---z6...z7
+ down_to_left z8 left_to_up z9...z10---z5;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"245", 7u#, x_height#, 0);
+ "The letter epsilon";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y1 = h; bot y4 = -d_o; y6 = y7 = good.y 0.51[y4, y1];
+ y2-y3 = loop_squareness*(y1-y4); y5 = good.y 0.15h;
+ y6 = 2/3[y3, y2]; x4 = 0.55[x2, x5];
+ rt x1 = rt x7+hround 0.5u = rt x5-hround 0.5u = w-apprr;
+ lft x2 = apprl-ho; x2 = x3 = x6;
+ draw z1 left_to_down z2..z3 down_to_right z4 hook_to z5;
+ draw z6..z7; labels(1, 2, 3, 4, 5, 6, 7);
+ math_fit(0, ic#);
+endchar;
+
+ % ???
+
+beginchar(oct"245", 7u#, x_height#, 0);
+ "The letter variant epsilon";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y2 = h+u_o; bot y6 = -d_o;
+ y3 = 0.5[y2, y4]; y5 = 0.5[y4, y6]; y7 = hook_h;
+ y1 = good.y 0.9[y6, y2]; y4 = good.y 0.5[y7, y1];
+ rt x1 = rt x4+hround 1.5u = rt x7-hround 0.5u = w-apprr;
+ lft x3 = lft x5 = apprl-ho; x2 = 0.6[x3, x1]; x6 = 0.5[x5, x7];
+ draw z1{x2-x1, 3(y2-y1)}
+ ...z2 left_to_down z3 down_to_right z4
+ &z4 left_to_down z5 down_to_right z6 hook_to z7;
+ labels(1, 2, 3, 4, 5, 6, 7);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"246", 8u#, asc_height#, desc_depth#);
+ "The letter zeta";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y1 = h; top y2 = top y3 = top y4 = vround(y1-0.25(h-x_height));
+ bot y6 = bot y7 = 0; bot y9 = -d;
+ y5 = 0.3[y6, y4]; y8 = 0.5[y9, y7];
+ lft x1 = apprl+hround 1.5u; lft x5 = apprl-ho;
+ rt x3 = w-apprr-hround u; rt x8 = w-apprr+ho;
+ x2 = 0.7[x1, x3];
+ x4 = 0.85[x5, x3];
+ x6-x5 = x8-x7 = 0.4(x8-x5);
+ x9 = good.x(0.5[x5, x8]);
+ draw z1 down_to_right z2..z3&z3..z4 left_to_down z5
+ down_to_right z6...z7right_to_down z8 down_to_left z9;
+ labels(range 1 thru 9);
+ math_fit(0, ic#);
+endchar;
+
+
+
+ % ?
+
+beginchar(oct"251", 12u#, asc_height#, 0);
+ "The letter variant theta";
+ italcorr 0.7asc_height#*slant-1.5u#+ho#;
+ pickup lower_cal.nib;
+ lft x1 = lft x3-hook_w = apprl-hround 0.5u;
+ x2 = 1/3[x3, x1];
+ rt x5 = lft x3+hround(6u)+ho;
+ x4 = 0.5[apprl, w-apprr]; x6 = 0.5[x3, x5];
+ x7 = good.x 0.2[x3, x5];
+ x9-x8 = 0.5hook_w;
+ rt x9 = w-apprr+hround 0.5u;
+ y1+hook_h = top y2-eps = x_height; bot y4 = -d_o; top y6 = h+u_o;
+ y5 = y8 = good.y 0.5[y4, y6]; y3 = 0.25[y2, y4]; y7 = 0.7[y5, y6];
+ y8-y9 = vround hook_h;
+ draw z1 hang_to z2 right_to_down z3 down_to_right
+ z4 right_to_up z5 up_to_left z6 left_to_down
+ z7 down_to_right z8 right_to_down z9;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"252", 2.5u#+curve#, x_height#, 0);
+ "The letter iota";
+ italcorr x_height#*slant-2u#;
+ pickup lower_cal.nib; rt x1 = w-apprr-hround 1.5u; top y1 = h+eps;
+ draw right_hook1;
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"253", 8u#, x_height#, 0);
+ "The letter kappa";
+ italcorr max(0.2x_height#*slant+0.1w#,
+ 0.95x_height#*slant-0.1w#+0.5u#);
+ adjust_fit(0, 0);
+ %
+ pickup lower_cal.nib;
+ top y1 = h; bot y2 = -oo; x1 = x2 = good.x 1.5u;
+ draw z1-cal.extension--z1--z2;
+ %
+ rt x4 = .9w; x5 = x4-.1w; x7 = .8w; rt x8 = 1.1w;
+ y4 = .9x_height; top y5 = x_height+oo; bot y7 = -oo; y8 = .2x_height-oo;
+ (lft z6)t_ = (x2, 0.4x_height).t_+penoffset up of pen_[lower_cal.nib];
+ draw z4{up}...{left}z5..tension atleast 2..{down}z6
+ ..tension atleast 3 and atleast 2..z7{right}...{up}z8; % diagonals
+ %
+ math_fit(0, 1/3x_height#*slant+0.5hair#+0.5u#);
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+endchar;
+
+ % ?
+
+beginchar(oct"253", 10u#, x_height#, 0);
+ "The letter variant kappa";
+ italcorr x_height#*slant-0.75u#;
+ pickup lower_cal.nib;
+ top y1 = top y4-u_o = h; bot y3+d_o = bot y6 = 0;
+ y2 = h-y5 = 1/3[y1, y6];
+ lft x1 = apprl-hround 0.5u-eps;
+ rt x6 = w-apprr+hround 0.5u+eps;
+ x3-x1 = x6-x4 = hround 0.75u;
+ x2-x1 = x6-x5 = hround 2.55u+eps;
+ draw z1 right_to_down z2...{z3-z4}z3
+ --z4{z3-z4}...z5 down_to_right z6;
+ labels(1, 2, 3, 4, 5, 6);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"254", 8u#, asc_height#, 0);
+ "The letter lambda";
+% no italic correction
+ pickup lower_cal.nib;
+ top y1 = h+eps; bot y2 = bot y3 = -eps;
+ top y4 = max(x_height, 0.5h);;
+ apprl-lft x3 = rt x2-(w-apprr) = hround 0.5u-eps;
+ x4 = 0.5[x2, x3]; z1 = whatever[z2, z4];
+ draw z1..z2; draw z3..z4; labels(1, 2, 3, 4);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"255", 8u#, x_height#, desc_depth#);
+ "The letter mu";
+ italcorr x_height#*slant-1.5u#;
+ pickup lower_cal.nib;
+ top y1a = h+eps; bot y1b = -d-eps; lft x1a = lft x1b = apprl;
+ draw z1a..z1b;
+ x2a = x1a; rt x2c = rt x2d = w-apprr; x2b = 0.5[x2a, x2c];
+ bot y2b = -d_o; top y2d = h+eps;
+ y2a = 0.5[y2d, y2b]; y2c = 2/3[y2d, y2b];
+ draw z2a down_to_right z2b right_to_up z2c..z2d;
+ labels(1a, 1b, 2a, 2b, 2c, 2d);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"256", 7u#, asc_height#, 0);
+ "The letter nu";
+ italcorr 0.7asc_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib;
+ top y1 = x_height+eps;
+ bot y2 = -d_o; top y4 = h+eps; y3 = 0.5[y2, y4];
+ lft x1 = apprl-hround 0.5u; rt x3 = w-apprr+ho;
+ x2 = x4 = good.x 0.5[x1, x3];
+ draw z1--z2{2(x3-x2), y3-y2}...z3{up}
+ ...{x4-x3, (1-superness)*(y4-y3)}z4;
+ labels(1, 2, 3, 4);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"257", 8u#, asc_height#, desc_depth#);
+ "The letter xi";
+ italcorr x_height#*slant-.5u#;
+ pickup lower_cal.nib;
+ top y1 = h; top y2 = top y3 = top y4 = vround(y1-0.25(h-x_height));
+ top y6 = top y7 = top y8 = vround 0.5h; bot y10 = bot y11 = 0; bot y13 = -d;
+ y5 = 0.5[y6, y4]; y9 = 0.4[y10, y8]; y12 = 0.5[y13, y11];
+ lft x1 = apprl+hround 1.5u; lft x5 = apprl; lft x9 = apprl-ho;
+ rt x3 = rt x7 = w-apprr-hround u; rt x12 = w-apprr+ho;
+ x2 = 0.7[x1, x3];
+ x4 = 0.85[x5, x3];
+ x6 = 0.7[x5, x7];
+ x8 = 0.8[x9, x7];
+ x10-x9 = x12-x11 = 0.4(x12-x9);
+ x13 = good.x 0.5[x9, x12];
+ draw z1 down_to_right z2..z3&z3..z4 left_to_down z5
+ down_to_right z6..z7&z7..z8 left_to_down z9 down_to_right z10
+ ...z11 right_to_down z12 down_to_left z13;
+ labels(range 1 thru 13);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"261", 9u#, x_height#, desc_depth#);
+ "The letter pi";
+ italcorr x_height#*slant;
+ pickup lower_cal.nib;
+ top y1 = h; y1 = y2 = y3 = y5; bot y4 = bot y6 = -eps;
+ lft x1 = apprl-eps-hround 0.5u;
+ rt x2 = w-apprr+eps+hround 0.5u;
+ x3 = x4; x5 = x6; x3-x1 = x2-x5;
+ x3 = good.x 0.25[apprl, w-apprr];
+ draw z1..z2; draw z3..z4; draw z5..z6;
+ labels(1, 2, 3, 4, 5, 6);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"262", 8u#, x_height#, desc_depth#);
+ "The letter rho";
+ italcorr 0.7x_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib; set_loop1(right); draw_loop1(right);
+ bot y2 = -d-eps; x2 = x1c; draw z1c..z2; labels(2);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"263", 8u#, x_height#, desc_depth#);
+ "The letter variant rho";
+ italcorr 0.7x_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib; set_loop1(right); draw_loop1(right);
+ bot y3 = bot y4 = -d; y2 = 0.5[y1c, y3];
+ x2 = x1c; rt x4 = w-apprr+eps; x3 = 0.5[x2, x4];
+ draw z1c..z2 down_to_right z3..z4; labels(2, 3, 4);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"264", 9u#, x_height#, 0);
+ "The letter sigma";
+ italcorr x_height#*slant;
+ save loop_right; loop_right = apprr+hround u;
+ pickup lower_cal.nib; set_loop1(both); draw_loop1(both);
+ rt x3 = w-apprr+hround 0.5u+eps; top y3 = h;
+ z2 = 0.5[z1b, z3];
+ draw z1b...z2{(z3-z2) yscaled 2}...z3; labels(2, 3);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"265", 7u#, x_height#, comma_depth#);
+ "The letter variant sigma";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y2 = h+u_o; bot y7 = -d-d_o; bot y4 = bot y5 = 0;
+ y2-y1 = vround 0.06h; y8-y7 = vround 0.08h;
+ y3 = 0.45[y4, y2]; y6 = 0.5[y7, y5];
+ lft x3 = apprl-ho; rt x1-eps = rt x6-ho = w-apprr;
+ x2 = 0.7[x3, x1]; x4 = 0.45[x3, x6]; x5 = 0.55[x3, x6];
+ x7 = 0.7[x3, x6]; x8 = good.x x4;
+ draw z1{x2-x1, 2(y2-y1)}
+ ...z2 left_to_down z3 down_to_right z4
+ ...z5right_to_down z6 down_to_left z7 hook_to z8;
+ labels(1, 2, 3, 4, 5, 6, 7, 8);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"266", 8u#, x_height#, desc_depth#);
+ "The letter tau";
+ italcorr x_height#*slant;
+ center_stem(3, 4);
+ top y1 = h; y1 = y2 = y3; bot y4 = -eps;
+ lft x1 = apprl-eps-hround 0.5u;
+ rt x2 = w-apprr+eps+hround 0.5u;
+ draw z1..z2; draw z3..z4;
+ labels(1, 2, 3, 4);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"267", 8u#, x_height#, 0);
+ "The letter upsilon";
+ italcorr x_height#*slant-0.5u#;
+ pickup lower_cal.nib;
+ top y1 = top y5 = h+eps; bot y3 = -d_o; y2 = y4 = 0.5[y3, y1];
+ lft x1 = lft x2 = apprl; rt x4 = rt x5 = w-apprr; x3 = 0.5[x1, x5];
+ draw z1..z2 down_to_right z3 right_to_up z4..z5;
+ labels(1, 2, 3, 4, 5);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"270", 10u#, cap_height#, desc_depth#);
+ "The letter phi";
+ italcorr 0.7x_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib; set_loop1(both); draw_loop1(both);
+ top y2 = h+eps; bot y3 = -d-eps; x2 = x3 = good.x 0.5[apprl, w-apprr];
+ draw z2..z3; labels(2, 3);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"271", 10u#, x_height#, desc_depth#);
+ "The letter variant phi";
+ italcorr 0.7x_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib;
+ top y1-eps = top y5-u_o = h; bot y3 = -d_o; bot y7 = -d-eps;
+ 0.5[y2, y2'] = 0.5[y3, y5]; y2-y2' = loop_squareness*(y1-y3);
+ y2 = y4; y2' = y4'; y6 = 2/3[y3, y5];
+ lft x2 = lft x2' = apprl-ho; rt x4 = rt x4' = w-apprr+ho;
+ x3 = x6 = x7 = good.x 0.5[x2, x4];
+ x5 = 1/3[x6, x4]; x1 = good.x 0.65[x2, x6];
+ draw z1 left_to_down z2..z2' down_to_right z3 right_to_up
+ z4'..z4 up_to_left z5 left_to_down z6..z7;
+ labels(1, 2, 2', 3, 4, 4', 5, 6, 7);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"272", 9u#, x_height#, desc_depth#);
+ "The letter chi";
+ italcorr x_height#*slant;
+ pickup lower_cal.nib;
+ top y1 = top y3 = h+eps; bot y2 = bot y4 = -d-eps;
+ lft x1+hround 0.25u = lft x4+hround 0.5u = apprl-eps;
+ rt x2-hround 0.5u = rt x3-hround 0.25u = w-apprr+eps;
+ draw z1..z2; draw z3..z4; labels(1, 2, 3, 4);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"273", 10u#, asc_height#, desc_depth#);
+ "The letter psi";
+ italcorr x_height#*slant-0.5u#;
+ center_stem(6, 7);
+ top y1 = top y5 = x_height+eps; bot y3 = -d_o; y2 = y4 = 0.5[y3, y1];
+ lft x1 = lft x2 = apprl; rt x4 = rt x5 = w-apprr; x3 = 0.5[x1, x5];
+ top y6 = h+eps; bot y7 = -d-eps;
+ draw z1..z2 down_to_right z3 right_to_up z4..z5;
+ draw z6..z7; labels(1, 2, 3, 4, 5, 6, 7);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"274", 12u#, x_height#, 0);
+ "The letter omega";
+ italcorr 0.7x_height#*slant-0.5u#+ho#;
+ pickup lower_cal.nib;
+ top y1 = top y9 = h+eps; bot y3 = bot y7 = -d_o; y2 = y8 = 0.5[y3, y1];
+ y4 = y6 = 0.5[y3, y1]; y5 = good.y 0.75[y3, y1]+eps;
+ lft x2 = apprl-ho; rt x8 = w-apprr+ho;
+ x1 = good.x(x2+1.2u); x9 = good.x(x8-1.2u);
+ x3 = 0.265[x2, x8]; x7 = 0.735[x2, x8]; x5 = good.x 0.5[x2, x8];
+ x4-x5 = x5-x6 = hround 0.7u+eps;
+ draw z1{3(x2-x1), y2-y1}
+ ...z2 down_to_right z3 right_to_up z4 up_to_left
+ z5 left_to_down z6 down_to_right z7 right_to_up z8
+ ...{3(x9-x8), y9-y8}z9;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ math_fit(0, ic#);
+endchar;
+
+beginchar(oct"275", 14u#, x_height#, 0);
+ "The letter variant pi";
+ italcorr (x_height#+hook_h#)*slant;
+ pickup lower_cal.nib;
+ top y1 = top y9 = h; bot y3 = bot y7 = -d_o; y2 = y8 = 0.5[y3, y1];
+ y4 = y6 = 0.6[y3, y1]; y5 = good.y 0.7[y3, y1]+eps;
+ lft x2 = apprl+hround 2u-ho; rt x8 = w-apprr-hround 0.4u+ho;
+ x1 = good.x(x2+1.2u); x9 = good.x(x8-1.2u);
+ x3 = 0.265[x2, x8]; x7 = 0.735[x2, x8]; x5 = good.x 0.5[x2, x8];
+ x4-x5 = x5-x6 = hround 0.25u+eps;
+ draw z1{3(x2-x1), y2-y1}
+ ...z2 down_to_right z3 right_to_up z4 up_to_left
+ z5 left_to_down z6 down_to_right z7 right_to_up z8
+ ...{3(x9-x8), y9-y8}z9;
+ y10 = hang_h; top y11 = h; y11 = y12; y13 = y12;
+ apprl-lft x10 = rt x13-(w-apprr) = hround 0.5u;
+ x11 = min(x10+pi_hang_w, x1); x12 = max(x13-pi_hang_w, x9);
+ draw z10--z11..z12 right_to_up z13;
+ labels(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
+ math_fit(0, ic#);
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf
new file mode 100644
index 00000000000..3780a3914da
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf
@@ -0,0 +1,229 @@
+% mathematical symbols by Anthony Phan.
+% file: mathadrv.mf (driver file for matha serie,
+% U stands for Unsupported)
+% last modification: May 16, 2005.
+
+mode_setup;
+math_setup;
+%
+% This file calls calu.mf and then extends
+% the superb work of N. N. Billawala into
+% a whole OT1 font.
+%
+
+%
+% First thing to do is to copy Computer Modern's
+% control sequences and setup.
+%
+%slant := 0;
+newinternal l, r, shrink_fit; % adjustments to spacing
+boolean math_fitting;
+
+flare := dtsz;
+flare# := dtsz#;
+
+def cal_setup =
+ let adjust_fit = normal_adjust_fit;
+ pickup pencircle xscaled cap_curve yscaled cap_hair rotated 30;
+ cal.nib := savepen;
+ pair cal.extension; cal.extension := (.75cap_curve, 0) rotated 30;
+ pickup pencircle xscaled cap_curve yscaled cap_hair rotated 70;
+ tilted.nib := savepen;
+ pickup pencircle xscaled curve yscaled cap_hair rotated 70;
+ med_tilted.nib := savepen;
+ pickup pencircle xscaled cap_stem yscaled cap_hair rotated 30;
+ med_cal.nib := savepen;
+ pickup pencircle xscaled stem yscaled cap_hair rotated 30;
+ light_cal.nib := savepen;
+ %
+ % lowercase and punctuation
+ %
+ pickup pencircle xscaled curve yscaled hair rotated 30;
+ lower_cal.nib := savepen;
+ lower_cal_width# := curve#*cosd 30+hair#*sind 30;
+ pickup pencircle xscaled 0.5[hair, curve] yscaled hair rotated 30;
+ fine_cal.nib := savepen;
+ %
+ pickup pencircle xscaled(cap_curve+dw) yscaled cap_hair rotated 30;
+ heavy_cal.nib := savepen;
+ bot_flourish_line := -0.5u-o;
+ pair bend; bend = (.5u, 0);
+ pair flourish_change; flourish_change = (4u, .2asc_height);
+ join_radius := u;
+ shrink_fit := 1+hround(2letter_fit#*hppp)-2letter_fit;
+enddef;
+
+let cmchar = \;
+def .... = .. tension atleast .9 .. enddef;
+vardef w# = charwd enddef;
+vardef d# = chardp enddef;
+vardef h# = charht enddef;
+vardef ic# = charic enddef;
+
+def do_expansion(expr expansion_factor) =
+ forsuffixes $ = u, jut, cap_jut, beak_jut, apex_corr:
+ $ := $.#*expansion_factor*hppp; endfor
+enddef;
+
+def normal_adjust_fit(expr left_adjustment, right_adjustment) =
+ numeric charwd_in; charwd_in = charwd;
+ l := -hround(left_adjustment*hppp)-letter_fit;
+ interim xoffset := -l;
+ charwd := charwd+2letter_fit#+left_adjustment+right_adjustment;
+ r := l+hround(charwd*hppp)-shrink_fit;
+ w := r-hround(right_adjustment*hppp)-letter_fit;
+ do_expansion(w/(charwd_in*hppp));
+enddef;
+
+def mono_adjust_fit(expr left_adjustment, right_adjustment) =
+ numeric charwd_in; charwd_in = charwd;
+ numeric expansion_factor;
+ mono_charwd# = 2letter_fit#
+ +expansion_factor*(charwd+left_adjustment+right_adjustment);
+ l := -hround(left_adjustment*expansion_factor*hppp)-letter_fit;
+ interim xoffset := -l;
+ r := l+mono_charwd-shrink_fit;
+ w := r-hround(right_adjustment*expansion_factor*hppp)-letter_fit;
+ charwd := mono_charwd#; charic := mono_charic#;
+ do_expansion(w/(charwd_in*hppp));
+enddef;
+
+extra_endchar := extra_endchar&"r := r+shrink_fit; w := r-l;";
+
+def ignore_math_fit(expr left_adjustment, right_adjustment) = enddef;
+
+def do_math_fit(expr left_adjustment, right_adjustment) =
+ l := l-hround(left_adjustment*hppp); interim xoffset := -l;
+ charwd := charwd+left_adjustment+right_adjustment;
+ r := l+hround(charwd*hppp)-shrink_fit;
+ charic := charic-right_adjustment;
+ if charic<0: charic := 0; fi
+enddef;
+
+currenttransform := identity slanted slant
+yscaled aspect_ratio scaled granularity;
+def t_ = transformed currenttransform enddef;
+
+cal_setup;
+autorounding := hair;
+
+%
+% UPPERCASE
+%
+
+let math_fit = do_math_fit;
+math_fitting := true;
+input calu.mf;
+
+%
+% OTHER CASES
+%
+
+let math_fit = ignore_math_fit;
+math_fitting := false;
+
+vardef hook_in(suffix $, $$, $$$) =
+ x$ := good.x x$;
+ x$$ = max(x$$$-1.25u, 0.5[x$, x$$$]);
+ top y$$ = x_height+oo; y$ = good.y 7/8[0, y$$];
+ y$$$ = 3/4x_height;
+ z$...z$$ right_to_down z$$$
+enddef;
+
+vardef hook_out(suffix $, $$, $$$) =
+ x$$$ := good.x x$$$;
+ x$$ = min(x$+1.25u, 0.5[x$, x$$$]);
+ bot y$$ = -oo; y$ = 1/4x_height; y$$$ = good.y 7/8[x_height, y$$];
+ z$ down_to_right z$$...z$$$ % super_arc
+enddef;
+
+vardef ital_arch(suffix $, $$, $$$) =
+ x$$ = 0.6[x$, x$$$];
+ top y$$ = x_height+oo; y$$$ = 0.65x_height;
+ z${up}...z$$ right_to_down z$$$ % super_arc
+enddef;
+
+vardef desc_curve(suffix $, $$, $$$) =
+ x$$$ := good.x x$$$; x$$ = 0.6[x$, x$$$];
+ y$ = 0; bot y$$ = -d-oo; y$$$ = good.y 1/3[y$$, y$];
+ z${down}...z$$ left_to_up z$$$...z$$$+round(1.1u*dir 60)
+enddef;
+
+vardef cal_dot@#(expr $, $$, dotsize) =
+ rt x@#a-lft x@#c = top y@#b-bot y@#d = dotsize+2eps;
+ rt x@#a = hround($+0.5dotsize)+eps;
+ top y@#b = vround($$+0.5dotsize)+eps;
+ y@#a = y@#c = 0.5[y@#b, y@#d];
+ x@#b = x@#d = 0.5[x@#c, x@#a];
+ filldraw superellipse(z@#a, z@#b, z@#c, z@#d, superness);
+ labels(@#a, @#b, @#c, @#d);
+enddef;
+
+comma_depth# := 0.75desc_depth#;
+comma_depth := vround 0.75desc_depth;
+
+vardef cal_comma@#(expr $, $$, deviation, prof) =
+ pickup fine_cal.nib;
+ cal_dot@#($, $$, dtsz);
+ if $$>prof: bot else: top fi y@#f = prof;
+ y@#e = 0.25[$$, y@#f];
+ if deviation>0:
+ x@#f = x@#c; rt x@#e = hround($+dtsz)+eps;
+ draw if $$>prof: z@#b else: z@#d fi right_to_down z@#e
+ ...{x@#f-x@#e, (1-superness)*(y@#f-y@#e)}z@#f;
+ else:
+ x@#f = x@#a; lft x@#e = hround($-dtsz)-eps;
+ draw if $$<prof: z@#d else: z@#b fi right_to_up z@#e
+ ...{x@#f-x@#e, (1-superness)*(y@#f-y@#e)}z@#f;
+ fi
+ labels(@#e, @#f);
+enddef;
+
+%
+% LOWERCASE, DIGITS, PUNCTUATION
+%
+
+input mathcall;
+
+%
+% GREEK
+%
+
+input mathcallgreek;
+
+currenttransform := identity
+yscaled aspect_ratio scaled granularity;
+autorounding := 0;
+extra_endchar := "";
+standard_proofing;
+
+extra_endchar := extra_endchar & "; charcode := charcode+code_offset;";
+dagesh := false; code_offset := 128;
+
+%
+% HEBREW
+%
+
+input mathhbrw;
+
+dagesh := true; code_offset := 160;
+
+%
+% HEBREAW WITH DAGESH
+%
+
+input mathhbrw;
+
+code_offset := 0;
+
+% parameters for TFM files.
+
+font_slant = 0;
+font_x_height = x_height#;
+font_normal_stretch = 3u#;
+font_normal_shrink = 2u#;
+font_quad = 18u#+4letter_fit#;
+font_extra_space = 2u#;
+font_normal_space = 6u#+2letter_fit#;
+
+end.
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf
new file mode 100644
index 00000000000..f8a2b748471
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf
@@ -0,0 +1,375 @@
+% mathematical symbols by Anthony Phan.
+% file: mathfine.mf (various fine mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+%beginchar(Infinity,13.8u#+2appr#,v_center(0.2[x_height#,cap_height#]));
+% "Infinity";
+% numeric a,b; pickup fine.nib;
+% b=vround 0.3[fine,curve];
+% a=vround((h+d)/18); slope:=(h+d)/3u;
+% pos5(curve,angle(-1,-slope)-90);
+% pos11(b,-90); pos14(b,-90);
+% y1=y9=y5=(h-d)/2; top y7r=h+eps; bot y11r=-d-eps;
+% y7r-y14l=y3l-y11r=a; y3-y3l=y3r-y3=y7-y7l=y7r-y7=y11l-y11;
+% lft x1=appr; rt x9=w-appr; (x5-x1)/(y14-y3)=(x9-x5)/(y7-y11);
+% forsuffixes $=,r,l:
+% hellipse_set(1,3$,4$,5$); hellipse_set(9,7$,6$,5$);
+% endfor
+% slope:=-slope;
+% hellipse_set(1,14,13,5); hellipse_set(9,11,12,5);
+% y15=y13; x13-x14=x14-x15; x15=x2; y15-y1=y1-y2;
+% y10=y12; x10-x11=x11-x12; x8=x10; y10-y9=y9-y8;
+% filldraw stroke z1{down}...z2{1,slope}...z3e{right}...z4e---z6e
+% ...z7e{right}...z8{1,slope}...z9{down}...z10{-1,slope}...
+% z11e{left}...z12---z13...z14e{left}...z15{-1,slope}...z1{down};
+% penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+% tmp_picture:=currentpicture;
+%endchar;
+
+beginchar(Infinity,13.8u#+2appr#,v_center(spread3#));
+ "Infinity";
+ numeric a,b; pickup fine.nib;
+ a=vround((h+d+2o)/18); b=vround 0.3[fine,curve];
+ slope:=(h+d+2o)/3.15u;
+ pos5(0.3[stem,curve],angle(-1,-slope)-90);
+ pos11(b,-90); pos14(b,-90);
+ y1=y9=y5=(h-d)/2; top y7r=h+o; bot y11r=-d-o;
+ y7r-y14l=y3l-y11r=a; y3-y3l=y3r-y3=y7-y7l=y7r-y7=y11l-y11;
+ lft x1=appr; rt x9=w-appr; (x5-x1)/(y14-y3)=(x9-x5)/(y7-y11);
+ forsuffixes $=,r,l:
+ hellipse_set(1,3$,4$,5$); hellipse_set(9,7$,6$,5$);
+ endfor
+ slope:=-slope;
+ hellipse_set(1,14,13,5); hellipse_set(9,11,12,5);
+ y15=y13; x13-x14=x14-x15; x15=x2; y15-y1=y1-y2;
+ y10=y12; x10-x11=x11-x12; x8=x10; y10-y9=y9-y8;
+ filldraw stroke z1{down}...z2{1,slope}...z3e{right}...z4e---z6e
+ ...z7e{right}...z8{1,slope}...z9{down}...z10{-1,slope}...
+ z11e{left}...z12---z13...z14e{left}...z15{-1,slope}...z1{down};
+ penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ tmp_picture:=currentpicture;
+endchar;
+
+iff (known Infinity) and (known proportionnal_to):
+beginchar(proportionnal_to,12u#+2appr#,v_center(spread3#));
+ "Proportionnal to sign";
+ currentpicture:=tmp_picture;
+ cullit;
+ unfill (w-appr,-d)--(w-appr+4u,-d)--
+ (w-appr+4u,h)--(w-appr,h)--cycle;
+endchar;
+
+%
+% a revoir
+%
+beginchar(partial,6.8u#+2appr#,asc_height#,0);
+ "Partial derivative";
+ italcorr x_height#*slant-0.5u#-0.8u#;
+ localtransform = identity slanted slant
+ yscaled aspect_ratio scaled granularity
+ shifted (-hround 0.8u,0);
+ pickup fine.nib; pos2(stem,90); pos5(curve,180);
+ lft x1-hround 0.35u=lft x5r+eps=appr;
+ rt x3=w-appr+eps; x2=0.4[x1,x3]; x4=0.5[x5r,x3];
+ x6=0.5[x5,x3];
+ top y2r=asc_height+o; bot y4=-o;
+ top y6=max(x_height,0.5asc_height)+oo;
+ y3=0.5[y4,y2r]; y5=0.5[y4,y6]; y1=good.y 0.84[y4,y2r];
+ filldraw stroke z1 up_to_right z2e right_to_down z3;
+ filldraw stroke z4 left_to_up z5e up_to_right z6;
+ draw z3 down_to_left z4; draw z6{right}...z3;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(partial_slash,6.8u#+2appr#,asc_height#,asc_depth#);
+ "Slashed partial derivative";
+ italcorr x_height#*slant-0.5u#-0.8u#;
+ localtransform=identity slanted slant
+ yscaled aspect_ratio scaled granularity
+ shifted (-hround 0.8u,0);
+ pickup fine.nib; pos2(stem,90); pos5(curve,180);
+ lft x1-hround 0.35u=lft x5r+eps=appr;
+ rt x3=w-appr+eps; x2=0.4[x1,x3]; x4=0.5[x5r,x3];
+ x6=0.5[x5,x3];
+ top y2r=asc_height+o; bot y4=-o;
+ top y6=max(x_height,0.5asc_height)+oo;
+ y3=0.5[y4,y2r]; y5=0.5[y4,y6]; y1=good.y 0.84[y4,y2r];
+ filldraw stroke z1 up_to_right z2e right_to_down z3;
+ filldraw stroke z4 left_to_up z5e up_to_right z6;
+ draw z3 down_to_left z4; draw z6{right}...z3;
+ %
+ bot y8=-d; y7-asc_height=-y8;
+ z7=whatever[z4,z6]; z8=whatever[z4,z6];
+ numeric a;
+ a=diag_width(max((rth0-fine),0),(z7-z8) slanted slant);
+ penpos7(a,0); penpos8(a,0); filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+%
+% daggers and asterisks
+%
+
+numeric dag_stem,dag_Stem;
+dag_stem=hround 0.3[curve,cap_curve];
+dag_Stem=hround 0.6[curve,cap_curve];
+
+beginchar(dagger,6u#+2appr#,asc_height#,asc_depth#);
+ "Dagger mark";
+% italcorr (0.75asc_height#-0.25asc_depth#)*slant-0.5u#;
+ interim stress:=0.5;
+ pickup fine.nib;
+ x1=hround(0.5w-0.5dag_stem)+0.5dag_stem;
+ y1=vround(0.25[h,-d]-0.5curve)+0.5curve;
+ y4=good.y 0.4[h,-d]; z1=z2=z3;
+ filldraw dagger_stroke1(h+oo-y1,dag_stem,hair,up)--cycle;
+ x1=x4=x4a=x4b=x5; bot y5=-d-o;
+ y4a=stress[y1,y4]; y4b=stress[y5,y4];
+ pos4(dag_Stem,0); pos5(hair,0);
+ filldraw stroke z1e{down}...{z4e-z4a}z4e{z4b-z4e}...z5e{down};
+ interim stress:=0.4;
+ filldraw dagger_stroke2(x1-appr+eps,curve,vair,left)--cycle;
+ filldraw dagger_stroke3(x1-appr+eps,curve,vair,right)--cycle;
+ labels(4,4a,4b,4r,4l,5,5r,5l);
+endchar;
+
+beginchar(double_dagger,6u#+2appr#,asc_height#,asc_depth#);
+ "Double dagger mark";
+% italcorr (0.75asc_height#-0.25asc_depth#)*slant-0.5u#;
+ interim stress:=0.5; pickup fine.nib;
+ x1=hround(0.5w-0.5dag_stem)+0.5dag_stem;
+ y1=vround(0.25[h,-d]-0.5curve)+0.5curve;
+ x1=x2=x3=x4=x5=x6=x7=x8=x9=x10; y1=y2=y3; h-y1-d=y4=y5=y6;
+ filldraw dagger_stroke1(h+oo-y1,dag_stem,hair,up)--cycle;
+ filldraw dagger_stroke4(h+oo-y1,dag_stem,hair,down)--cycle;
+ y7=good.y 0.35[h,-d]; z10l=z4r; z10r=z4l; y1-y7=y9-y4;
+ y8=0.5[y7,y9]; pos7(dag_Stem,0);
+ pos8(hair,0); pos9(dag_Stem,0);
+ z7a=stress[z1,z7]; z7b=stress[z8,z7];
+ z9a=stress[z4,z9]; z9b=stress[z8,z9];
+ filldraw stroke z1e{down}...{z7e-z7a}z7e{z7b-z7e}...z8e{down}
+ ...{z9e-z9b}z9e{z9a-z9e}...z10e{down};
+ interim stress:=0.4;
+ filldraw dagger_stroke2(x1-appr,curve,vair,left)--cycle;
+ filldraw dagger_stroke3(x1-appr+eps,curve,vair,right)--cycle;
+ filldraw dagger_stroke5(x1-appr+eps,curve,vair,left)--cycle;
+ filldraw dagger_stroke6(x1-appr+eps,curve,vair,right)--cycle;
+ labels(7a,7b,9a,9b); penlabels(7,8,9,10);
+endchar;
+
+if (known upper_asterisk)
+ or (known lower_asterisk)
+ or (known triple_asterisk):
+ beginpicture(tmp,ast_size#+2appr#,ast_size#,0);
+ autorounded; interim stress:=0.5; pickup null.nib;
+ numeric b,c,dag_curve,dag_stem;
+ dag_curve=ast_curve; dag_stem=ast_stem;
+ b=1.8ast_stem; c=1.4ast_stem;
+ %
+ x0=hround(0.5w-0.5dag_curve)+0.5dag_curve; y0=0.5[-d,h];
+ for $=1 upto 6: z[$]=b*dir($*60+30)+z0;
+ z[$]'=c*dir($*60+60)+z0; endfor
+ filldraw for $=1 upto 6: dagger_stroke[$](round(0.5ast_size-b)+eps,
+ dag_curve,dag_stem,dir($*60+30))...z[$]'...endfor cycle;
+ endpicture;
+fi
+
+beginchar(upper_asterisk,ast_size#+2appr#,body_height#,0);
+ "Upper asterisk";
+% italcorr body_height#*slant-0.5u#;
+ currentpicture:=tmp_picture shifted(0,h-ast_size);
+endchar;
+
+beginchar(lower_asterisk,ast_size#+2appr#,
+ ast_size#-body_depth#,body_depth#);
+ "Lower asterisk";
+% italcorr charht*slant-0.5u;
+ currentpicture:=tmp_picture shifted(0,-body_depth);
+endchar;
+
+beginchar(triple_asterisk,20u#+2appr#,body_height#,body_depth#);
+ "Triple asterisks";
+% italcorr charht*slant-0.5u;
+ currentpicture:=
+ tmp_picture shifted(hround 6.5u,h-ast_size)+
+ tmp_picture shifted(2hround 6.5u-hround 13u,-d)+
+ tmp_picture shifted(hround 13u,-d);
+endchar;
+
+%
+% Musical signs (supposed to be identical to cm's ones...)
+%
+
+beginchar(musical_flat_sign,5u#+2appr#,body_height#,0);
+ "Musical flat sign";
+ pickup crisp.nib;
+ pos1(hair,0); pos2(hair,180); pos3(hair,0); x1=x2=x3;
+ pos4(.25[hair,curve],60); pos5(curve,0);
+ lft x1l=appr; x4=0.5w; rt x5r=w-appr;
+ top y1=h; bot y3=-o; top y4=x_height+o;
+ y2=y4-.2x_height; y5=3/4x_height;
+ filldraw stroke z1e--z3e; % stem
+ filldraw stroke z2e{up}...z4e{right}...z5e{down}
+ ...{2(x3-x5e),y3-y5e}z3e; % bowl
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(musical_natural_sign,5u#+2appr#,asc_height#,desc_depth#);
+ "Musical natural sign";
+ pickup crisp.nib;
+ pos1(hair,0); pos2(curve,90); pos3(curve,90);
+ pos4(curve,90); pos5(curve,90); pos6(hair,0);
+ rt x1r=hround 7/8u+appr; x2=x4=x1l; x3=x5=x6r=w-x2;
+ y1=h+o; top y2r=0; .5[y2,y3]=0; y4-y2=y5-y3=x_height; bot y6=-d-o;
+ x2'=x1r; z2'=whatever[z2r,z3r]; x5'=x6l; z5'=whatever[z4l,z5l];
+ (x1r,y)=z1l+whatever*(z5-z4); y6l:=y6l-(y-y1r); y1r:=y;
+ filldraw z1l--z2l--z3l--z3r--z2'--z1r--cycle; % left stem and lower bar
+ filldraw z6r--z5r--z4r--z4l--z5'--z6l--cycle; % right stem and upper bar
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(musical_sharp_sign,5u#+2appr#,asc_height#,desc_depth#);
+ "Musical sharp sign";
+ pickup crisp.nib;
+ pos1(curve,90); pos2(curve,90); pos3(curve,90); pos4(curve,90);
+ lft x1=lft x3=appr; rt x2=rt x4=w-appr;
+ top y3r=0; .5[y3,y4]=0; y1-y3=y2-y4=x_height;
+ filldraw stroke z1e--z2e; filldraw stroke z3e--z4e; % bars
+ numeric theta,hstem; theta=angle(z2-z1);
+ (hstem-crisp)*cosd theta=hair-crisp;
+ pos5(hstem,theta); pos6(hstem,theta);
+ pos7(hstem,theta); pos8(hstem,theta);
+ lft x5l=lft x6l=hround(2u-.5hair); x7=x8=w-x6;
+ top y7l=h+o; bot y6r=-d-o; z7-z5=z8-z6=(whatever,0) rotated theta;
+ filldraw stroke z5e--z6e; filldraw stroke z7e--z8e; % stems
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar(degree_sign,
+ 5u#+2appr#,0.8asc_height#,0);
+ "Degree sign";
+ b:=round min(6.5u,8/12h);
+ pickup rule.nib0;
+ adjust_dot1((0.5w,6.5/12h),b,true,true);
+ full_dot:=false; dot(1,1');
+endchar;
+
+beginchar(prime_sign,
+ u#+max(1.75u#,curve#+2(curve#-stem#))+2appr#,
+ 0.8asc_height#,0);
+ "Prime sign";
+ pickup fine.nib;
+ a:=hround(bold+2dw); b:=hround 0.5[vair,stem];
+ y1+0.5a=h; x1+0.5a=w-appr+hround 0.75u;
+ y3=1/12asc_height; x3-0.5b=appr-hround 0.5u;
+ save r,R,u_; pair u_; u_=unitvector(z1-z3);
+ R=0.5(a-fine); x=R/(length(z1-z3)++0.5(b-fine));
+ z1-z2=R*x*u_; z0-z1=R*u_; c:=angle(z1-z3)-90;
+ penpos1(2R,c); penpos2(2R*(1+-+x),c); pos3(b,c);
+ filldraw z3r---z2r...z1r{u_}...
+ (superness[z1,z1.r]+superness[z1,z0]-z1){z0-z1.r}
+ ...z0{z1.l-z1.r}...
+ (superness[z1,z1.l]+superness[z1,z0]-z1){z1.l-z0}
+ ...z1.l{-u_}...z2l---z3l--cycle;
+ penlabels(0,1,2,3);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(second_sign,
+ u#+2.25u#+2letter_fit#+2max(1.75u#,curve#+2(curve#-stem#))+2appr#,
+ 0.8asc_height#,0);
+ "Second sign";
+ a:=hround(bold+2dw+2.25u+2letter_fit);
+ currentpicture:=tmp_picture+(tmp_picture shifted (a,0));
+endchar;
+
+beginchar(third_sign,
+ u#+2*2.00u#+4letter_fit#+3max(1.75u#,curve#+2(curve#-stem#))+2appr#,
+ 0.8asc_height#,0);
+ "Third sign";
+ a:=hround(bold+2dw+2.00u+2letter_fit);
+ currentpicture:=tmp_picture+(tmp_picture shifted (a,0))
+ +(tmp_picture shifted (2a,0));
+endchar;
+
+beginchar(fourth_sign,
+ u#+3*1.75u#+6letter_fit#+4max(1.75u#,curve#+2(curve#-stem#))+2appr#,
+ 0.8asc_height#,0);
+ "Fourth sign";
+ a:=hround(bold+2dw+1.75u+2letter_fit);
+ currentpicture:=tmp_picture+(tmp_picture shifted (a,0))
+ +(tmp_picture shifted (2a,0))+(tmp_picture shifted (3a,0));
+endchar;
+
+beginchar(backprime_sign,
+ u#+max(1.75u#,curve#+2(curve#-stem#))+2appr#,0.8asc_height#,0);
+ "Backrime sign";
+ pickup fine.nib;
+ a:=hround(bold+2dw); b:=hround 0.5[vair,stem];
+ y1+0.5a=h; x1-0.5a=appr-hround 0.75u;
+ y3=1/12asc_height; x3+0.5b=w-appr+hround 0.5u;
+ save r,R,u_; pair u_; u_=unitvector(z1-z3);
+ R=0.5(a-fine); x=R/(length(z1-z3)++0.5(b-fine));
+ z1-z2=R*x*u_; z0-z1=R*u_; c:=angle(z1-z3)-90;
+ penpos1(2R,c); penpos2(2R*(1+-+x),c); pos3(b,c);
+ filldraw z3r---z2r...z1r{u_}...
+ (superness[z1,z1.r]+superness[z1,z0]-z1){z0-z1.r}
+ ...z0{z1.l-z1.r}...
+ (superness[z1,z1.l]+superness[z1,z0]-z1){z1.l-z0}
+ ...z1.l{-u_}...z2l---z3l--cycle;
+ penlabels(0,1,2,3);
+endchar;
+
+beginchar(accent_circ,
+ 5u#+2appr#,asc_height#,0);
+ "Circ accent";
+ b:=max(h+2o-1/3[x_height,h],4u);
+ pickup pencircle scaled hair;
+ adjust_dot1((0.5w,max(1/3[x_height,h]+0.5b-o,x_height+2o)),b,false,false);
+ full_dot:=false; dot(1,1');
+endchar;
+
+beginchar(accent_dot,
+ 3u#+2appr#,
+ min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0);
+ "Dot accent";
+ b:=max(dtsz,cap_curve); ensure_centering_of(b);
+ pickup null.nib;
+ adjust_dot1((0.5w,h+1-0.5b),b,false,false); dot(1,1');
+endchar;
+
+beginchar(accent_ddot,7u#+2appr#,
+ min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0);
+ "Ddot accent";
+ b:=max(dtsz,cap_curve);% ensure_centering_of(b);
+ pickup null.nib;
+ adjust_dot1((0.5w-1.75u,h+1-0.5b),b,false,false); dot(1,1');
+ adjust_dot2((0.5w+1.75u,h+1-0.5b),b,false,false); dot(2,2');
+endchar;
+
+beginchar(accent_dddot,8u#+2appr#,
+ min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0);
+ "Dddot accent";
+ a:=hround 3.25u; b:=max(dtsz,cap_curve); ensure_centering_of(b);
+ pickup null.nib;
+ adjust_dot1((0.5w-a,h+1-0.5b),b,false,false); dot(1,1');
+ adjust_dot2((0.5w,h+1-0.5b),b,false,false); dot(2,2');
+ adjust_dot3((0.5w+a,h+1-0.5b),b,false,false); dot(3,3');
+endchar;
+
+beginchar(accent_ddddot,9u#+2appr#,
+ min(7/10[x_height#,asc_height]+0.5max(dtsz#,cap_curve#),asc_height#),0);
+ "Ddddot accent";
+ a:=hround 3u; b:=max(dtsz,cap_curve);% ensure_centering_of(b);
+ pickup null.nib;
+ adjust_dot1((0.5w-1.5a,h+1-0.5b),b,false,false); dot(1,1');
+ adjust_dot2((0.5w-0.5a,h+1-0.5b),b,false,false); dot(2,2');
+ adjust_dot3((0.5w+0.5a,h+1-0.5b),b,false,false); dot(3,3');
+ adjust_dot4((0.5w+1.5a,h+1-0.5b),b,false,false); dot(4,4');
+endchar;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf
new file mode 100644
index 00000000000..4a8f675edbb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf
@@ -0,0 +1,97 @@
+% mathematical symbols by Anthony Phan.
+% file: mathgrey.mf (grey symbols)
+% last modification: May 16, 2005.
+
+def horizontal_rules_list=
+ 0.5[-d,h]-math_axis,0.5[-d,h]-math_axis+x_height,
+ 0.25[-d,h],0.5[-d,h],0.75[-d,h] enddef;
+
+% basic pieces and parameters
+
+grey_ppi=1200;% maximum resolution
+grey_sc:=round max(1,pixels_per_inch/grey_ppi);
+grey_ht:=4grey_sc; grey_wd:=4grey_sc;
+picture grey.light,grey.medium,grey.dark;
+grey.light=nullpicture;
+grey.medium=nullpicture;
+grey.dark=nullpicture;
+for z=(0,2),(1,0),(2,3),(3,1):
+ addto grey.light contour
+ (unitsquare scaled grey_sc) shifted (z scaled grey_sc);
+endfor
+for z=(0,1),(0,3),(1,0),(1,2),(2,1),(2,3),(3,0),(3,2):
+ addto grey.medium contour
+ (unitsquare scaled grey_sc) shifted (z scaled grey_sc);
+endfor
+addto grey.dark contour
+(0,0)--(grey_wd,0)--(grey_wd,grey_ht)--(0,grey_ht)--cycle;
+for z=(0,2),(1,0),(2,3),(3,1):
+ addto grey.dark contour
+ (unitsquare scaled grey_sc) shifted (z scaled grey_sc) withweight -1;
+endfor
+
+% The whole bounding box is shaded (tmp_light not currentpicture).
+
+vardef grey_background@#(expr x_min,x_max,y_min,y_max)=
+ for j=floor(y_min/grey_ht) upto ceiling(y_max/grey_ht):
+ for i=floor(x_min/grey_wd) upto ceiling(x_max/grey_wd):
+ addto tmp_picture also (grey.@# shifted (i*grey_wd,j*grey_ht));
+ endfor endfor
+enddef;
+
+% The path p must lies within the character bounding box.
+
+vardef grey_fill(expr p,x_min,x_max,y_min,y_max)(suffix @#)=
+ tmp_picture:=nullpicture;
+ grey_background@#(x_min,x_max,y_min,y_max);
+ addto tmp_picture contour p;
+ cull tmp_picture keeping (2,infinity);
+ addto tmp_picture also currentpicture;
+ currentpicture:=tmp_picture;
+enddef;
+
+def tmp_program(expr circle,radius)(suffix @#)=
+ x0=good.x 0.5w; y0=good.y 0.5[-d,h];
+ if circle:
+ for i=1 upto 8:
+ z[i]=z0+round(radius-0.5rth)*right rotated(45*(i-1));
+ endfor; labels(0,1,2,3,4,5,6,7,8);
+ tmp_path:=z1{up}...z2{z3-z1}
+ ...z3{left}...z4{z5-z3}...z5{down}...z6{z7-z5}
+ ...z7{right}...z8{z1-z7}...cycle;
+ else:
+ for i=1 step 2 until 7:
+ z[i]=z0+round(6.75u-0.5rth)*right rotated(45*(i-1));
+ endfor;
+ x1=x2=x8; x5=x4=x6; y2=y3=y4; y6=y7=y8;
+ labels(0,1,2,3,4,5,6,7,8);
+ tmp_path:=z1--z2--z3--z4--z5--z6--z7--z8--cycle;
+ fi
+ grey_fill(tmp_path,x5,x1,y7,y3,@#);
+enddef;
+
+beginchar(hex"DD",arithmetic_bounds);
+ tmp_program(true,6.75u,light);
+endchar;
+
+beginchar(hex"FD",arithmetic_bounds);
+ tmp_program(false,6.75u,light);
+endchar;
+
+beginchar(hex"DE",arithmetic_bounds);
+ tmp_program(true,6.75u,medium);
+endchar;
+
+beginchar(hex"FE",arithmetic_bounds);
+ tmp_program(false,6.75u,medium);
+endchar;
+
+beginchar(hex"DF",arithmetic_bounds);
+ tmp_program(true,6.75u,dark);
+endchar;
+
+beginchar(hex"FF",arithmetic_bounds);
+ tmp_program(false,6.75u,dark);
+endchar;
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf
new file mode 100644
index 00000000000..a09e30a017b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf
@@ -0,0 +1,2220 @@
+% mathematical symbols by Anthony Phan.
+% file: mathhbrw.mf (Bold Hebrew Letters)
+% last modification: May 16, 2005.
+% Origin see below:
+
+% cap_height# = 247 / 36 / 0.075 * 1.2 / designsize* FY#
+% ( = 10.97777 for 10 pt# fonts)
+% u#=20/36pt;
+def horizontal_rules_list=0.1h,0.2h,0.3h,0.4h,0.5h,0.6h,0.7h,0.8h,0.9h,
+ -body_depth,-desc_depth,cap_height,body_height
+enddef;
+
+if dagesh: tmp_string:=" with dagesh";
+else: tmp_string:=""; fi
+t:=turningcheck;
+extra_endchar_save:=extra_endchar;
+
+% look at the end of this file: we restore
+% initial values of turningcherck and extra_endchar.
+
+% font Normal HehenHebTBol at 12pt
+% converted from True Type format by TTF2MF ver. 0.02
+
+FX# := 18u#/1.2 * 0.075;
+FY# := designsize/1.2 * 0.075;
+
+def nonzerowinding =
+ cull currentpicture dropping (0,0);
+enddef;
+extra_endchar := extra_endchar & "nonzerowinding;";
+%
+smoothing := 0; autorounding := 0; turningcheck := 0;
+define_pixels (FX, FY);
+%
+
+beginchar(64, 10.703FX#,if true_size: 11.156FY#, 0.328FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((0.75,0)
+ --(0.75,0.594)
+ ..controls(1.063,0.615)and(1.268,0.664)
+ ..(1.367,0.742)
+ ..controls(1.435,0.794)and(1.495,0.872)
+ ..(1.547,0.977)
+ ..controls(1.599,1.081)and(1.625,1.174)
+ ..(1.625,1.258)
+ ..controls(1.625,1.372)and(1.555,1.549)
+ ..(1.414,1.789)
+ ..controls(1.133,2.263)and(0.953,2.604)
+ ..(0.875,2.813)
+ ..controls(0.797,3.021)and(0.758,3.266)
+ ..(0.758,3.547)
+ ..controls(0.758,3.984)and(0.883,4.423)
+ ..(1.133,4.863)
+ ..controls(1.383,5.303)and(1.82,5.849)
+ ..(2.445,6.5)
+ --(2.156,6.836)
+ ..controls(1.833,7.164)and(1.625,7.384)
+ ..(1.531,7.496)
+ ..controls(1.438,7.608)and(1.328,7.776)
+ ..(1.203,8)
+ ..controls(0.948,8.448)and(0.82,8.896)
+ ..(0.82,9.344)
+ ..controls(0.82,9.969)and(1.003,10.438)
+ ..(1.367,10.75)
+ ..controls(1.669,11.016)and(1.971,11.148)
+ ..(2.273,11.148)
+ ..controls(2.388,11.148)and(2.445,11.102)
+ ..(2.445,11.008)
+ ..controls(2.445,10.982)and(2.438,10.93)
+ ..(2.422,10.852)
+ ..controls(2.411,10.81)and(2.406,10.768)
+ ..(2.406,10.727)
+ ..controls(2.406,10.404)and(2.651,10.01)
+ ..(3.141,9.547)
+ --(6.375,6.5)
+ --(7.148,7.797)
+ ..controls(6.747,8.182)and(6.497,8.453)
+ ..(6.398,8.609)
+ ..controls(6.299,8.766)and(6.25,8.969)
+ ..(6.25,9.219)
+ ..controls(6.25,9.724)and(6.424,10.177)
+ ..(6.773,10.578)
+ ..controls(7.107,10.964)and(7.419,11.156)
+ ..(7.711,11.156)
+ ..controls(7.779,11.156)and(7.822,11.141)
+ ..(7.84,11.109)
+ ..controls(7.858,11.078)and(7.896,10.969)
+ ..(7.953,10.781)
+ ..controls(7.995,10.646)and(8.079,10.512)
+ ..(8.207,10.379)
+ ..controls(8.335,10.246)and(8.586,10.029)
+ ..(8.961,9.727)
+ ..controls(9.612,9.201)and(9.938,8.682)
+ ..(9.938,8.172)
+ ..controls(9.938,7.859)and(9.829,7.508)
+ ..(9.613,7.117)
+ ..controls(9.397,6.727)and(9.115,6.378)
+ ..(8.766,6.07)
+ ..controls(8.349,6.815)and(8.005,7.188)
+ ..(7.734,7.188)
+ ..controls(7.62,7.188)and(7.471,7.029)
+ ..(7.289,6.711)
+ --(6.859,5.992)
+ --(8.117,4.75)
+ ..controls(8.617,4.26)and(8.927,3.945)
+ ..(9.047,3.805)
+ ..controls(9.167,3.664)and(9.31,3.456)
+ ..(9.477,3.18)
+ ..controls(9.799,2.633)and(9.961,2.083)
+ ..(9.961,1.531)
+ ..controls(9.961,0.979)and(9.826,0.526)
+ ..(9.555,0.172)
+ ..controls(9.31,-0.161)and(9.115,-0.328)
+ ..(8.969,-0.328)
+ ..controls(8.911,-0.328)and(8.863,-0.293)
+ ..(8.824,-0.223)
+ ..controls(8.785,-0.152)and(8.727,0.008)
+ ..(8.648,0.258)
+ ..controls(8.477,0.674)and(8.029,1.211)
+ ..(7.305,1.867)
+ --(3.094,5.938)
+ ..controls(2.995,6.031)and(2.919,6.078)
+ ..(2.867,6.078)
+ ..controls(2.768,6.078)and(2.654,5.975)
+ ..(2.523,5.77)
+ ..controls(2.393,5.564)and(2.328,5.38)
+ ..(2.328,5.219)
+ ..controls(2.328,4.964)and(2.44,4.688)
+ ..(2.664,4.391)
+ ..controls(2.716,4.323)and(3.003,4.029)
+ ..(3.523,3.508)
+ ..controls(3.773,3.258)and(3.979,2.953)
+ ..(4.141,2.594)
+ ..controls(4.302,2.234)and(4.383,1.906)
+ ..(4.383,1.609)
+ ..controls(4.383,1.01)and(4.104,0.474)
+ ..(3.547,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((6.65u,0.5dtsz),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(65, 10.008FX#,if true_size: 11.273FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.586,0)
+ --(0.211,0)
+ ..controls(0.315,0.563)and(0.395,0.919)
+ ..(0.449,1.07)
+ ..controls(0.504,1.221)and(0.773,1.82)
+ ..(1.258,2.867)
+ --(7.477,2.867)
+ ..controls(7.523,3.424)and(7.547,3.984)
+ ..(7.547,4.547)
+ ..controls(7.547,5.276)and(7.516,5.828)
+ ..(7.453,6.203)
+ ..controls(7.391,6.578)and(7.279,6.911)
+ ..(7.117,7.203)
+ ..controls(6.982,7.443)and(6.827,7.602)
+ ..(6.652,7.68)
+ ..controls(6.478,7.758)and(6.185,7.797)
+ ..(5.773,7.797)
+ --(2.844,7.797)
+ ..controls(2.276,7.797)and(1.852,7.872)
+ ..(1.57,8.023)
+ ..controls(1.023,8.31)and(0.75,8.813)
+ ..(0.75,9.531)
+ ..controls(0.75,9.984)and(0.896,10.43)
+ ..(1.188,10.867)
+ ..controls(1.37,11.138)and(1.529,11.273)
+ ..(1.664,11.273)
+ ..controls(1.742,11.273)and(1.79,11.259)
+ ..(1.809,11.23)
+ ..controls(1.827,11.202)and(1.854,11.107)
+ ..(1.891,10.945)
+ ..controls(1.948,10.753)and(2.161,10.659)
+ ..(2.531,10.664)
+ --(5.492,10.664)
+ ..controls(6.034,10.664)and(6.415,10.641)
+ ..(6.637,10.594)
+ ..controls(6.858,10.547)and(7.07,10.448)
+ ..(7.273,10.297)
+ ..controls(7.602,10.052)and(7.837,9.716)
+ ..(7.98,9.289)
+ ..controls(8.124,8.862)and(8.211,8.253)
+ ..(8.242,7.461)
+ ..controls(8.284,6.263)and(8.305,5.378)
+ ..(8.305,4.805)
+ ..controls(8.305,4.122)and(8.273,3.477)
+ ..(8.211,2.867)
+ --(9.258,2.867)
+ ..controls(9.117,2.456)and(8.986,1.992)
+ ..(8.863,1.477)
+ ..controls(8.741,0.961)and(8.648,0.469)
+ ..(8.586,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.2u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(66, 6.164FX#,if true_size: 11.25FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((0.836,2.891)
+ --(3.383,2.891)
+ ..controls(3.534,2.891)and(3.625,2.897)
+ ..(3.656,2.91)
+ ..controls(3.688,2.923)and(3.703,2.961)
+ ..(3.703,3.023)
+ ..controls(3.703,3.044)and(3.685,3.169)
+ ..(3.648,3.398)
+ ..controls(3.617,3.622)and(3.602,3.901)
+ ..(3.602,4.234)
+ ..controls(3.602,4.906)and(3.654,5.615)
+ ..(3.758,6.359)
+ ..controls(3.81,6.708)and(3.836,6.982)
+ ..(3.836,7.18)
+ ..controls(3.836,7.383)and(3.772,7.549)
+ ..(3.645,7.68)
+ ..controls(3.517,7.81)and(3.354,7.875)
+ ..(3.156,7.875)
+ ..controls(3.047,7.875)and(2.919,7.862)
+ ..(2.773,7.836)
+ ..controls(2.544,7.794)and(2.383,7.773)
+ ..(2.289,7.773)
+ ..controls(1.883,7.773)and(1.534,7.974)
+ ..(1.242,8.375)
+ ..controls(1.029,8.672)and(0.922,9.005)
+ ..(0.922,9.375)
+ ..controls(0.922,9.807)and(1.016,10.228)
+ ..(1.203,10.637)
+ ..controls(1.391,11.046)and(1.586,11.25)
+ ..(1.789,11.25)
+ ..controls(1.883,11.25)and(1.966,11.174)
+ ..(2.039,11.023)
+ ..controls(2.148,10.805)and(2.339,10.695)
+ ..(2.609,10.695)
+ ..controls(2.641,10.695)and(2.732,10.698)
+ ..(2.883,10.703)
+ ..controls(2.904,10.703)and(2.935,10.703)
+ ..(2.977,10.703)
+ ..controls(3.466,10.703)and(3.85,10.521)
+ ..(4.129,10.156)
+ ..controls(4.408,9.792)and(4.547,9.286)
+ ..(4.547,8.641)
+ ..controls(4.547,8.51)and(4.542,8.354)
+ ..(4.531,8.172)
+ ..controls(4.505,7.698)and(4.492,7.417)
+ ..(4.492,7.328)
+ ..controls(4.492,6.646)and(4.565,5.747)
+ ..(4.711,4.633)
+ ..controls(4.862,3.456)and(4.938,2.779)
+ ..(4.938,2.602)
+ ..controls(4.938,2.398)and(4.927,2.029)
+ ..(4.906,1.492)
+ ..controls(4.896,1.378)and(4.888,1.016)
+ ..(4.883,0.406)
+ ..controls(4.878,0.135)and(4.784,0)
+ ..(4.602,0)
+ ..controls(4.471,0)and(4.383,0.12)
+ ..(4.336,0.359)
+ --(4.07,1.773)
+ ..controls(4.034,1.961)and(3.997,2.086)
+ ..(3.961,2.148)
+ ..controls(3.924,2.211)and(3.87,2.242)
+ ..(3.797,2.242)
+ ..controls(3.719,2.242)and(3.659,2.161)
+ ..(3.617,2)
+ --(3.07,0)
+ ..controls(2.341,0.005)and(1.742,0.008)
+ ..(1.273,0.008)
+ ..controls(1.018,0.008)and(0.664,0.005)
+ ..(0.211,0)
+ ..controls(0.263,0.255)and(0.38,0.786)
+ ..(0.563,1.594)
+ ..controls(0.651,1.974)and(0.742,2.406)
+ ..(0.836,2.891)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((2.4u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(67, 10FX#,if true_size: 11.234FY#, 0.125FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((1.867,10.664)
+ --(7.547,10.664)
+ ..controls(7.943,10.664)and(8.189,10.654)
+ ..(8.285,10.633)
+ ..controls(8.382,10.612)and(8.5,10.547)
+ ..(8.641,10.438)
+ ..controls(8.813,10.302)and(8.936,10.133)
+ ..(9.012,9.93)
+ ..controls(9.087,9.727)and(9.125,9.456)
+ ..(9.125,9.117)
+ ..controls(9.125,8.69)and(9.061,8.374)
+ ..(8.934,8.168)
+ ..controls(8.806,7.962)and(8.591,7.833)
+ ..(8.289,7.781)
+ ..controls(8.169,7.766)and(8.109,7.711)
+ ..(8.109,7.617)
+ ..controls(8.109,7.565)and(8.115,7.44)
+ ..(8.125,7.242)
+ --(8.391,2.664)
+ ..controls(8.401,2.508)and(8.406,2.276)
+ ..(8.406,1.969)
+ ..controls(8.406,1.464)and(8.378,1.087)
+ ..(8.32,0.84)
+ ..controls(8.263,0.592)and(8.159,0.388)
+ ..(8.008,0.227)
+ ..controls(7.784,-0.008)and(7.536,-0.125)
+ ..(7.266,-0.125)
+ ..controls(7.089,-0.125)and(7,-0.029)
+ ..(7,0.164)
+ ..controls(7,0.174)and(7.01,0.362)
+ ..(7.031,0.727)
+ --(7.359,7.008)
+ ..controls(7.375,7.32)and(7.383,7.513)
+ ..(7.383,7.586)
+ ..controls(7.383,7.669)and(7.362,7.717)
+ ..(7.32,7.73)
+ ..controls(7.279,7.743)and(7.135,7.75)
+ ..(6.891,7.75)
+ --(1.867,7.75)
+ ..controls(1.477,7.75)and(1.173,7.785)
+ ..(0.957,7.855)
+ ..controls(0.741,7.926)and(0.547,8.052)
+ ..(0.375,8.234)
+ ..controls(0.141,8.484)and(0.023,8.875)
+ ..(0.023,9.406)
+ ..controls(0.023,10.01)and(0.148,10.474)
+ ..(0.398,10.797)
+ ..controls(0.622,11.089)and(0.888,11.234)
+ ..(1.195,11.234)
+ ..controls(1.315,11.234)and(1.375,11.188)
+ ..(1.375,11.094)
+ ..controls(1.375,11.073)and(1.372,11.052)
+ ..(1.367,11.031)
+ ..controls(1.357,10.927)and(1.352,10.854)
+ ..(1.352,10.813)
+ ..controls(1.352,10.745)and(1.378,10.703)
+ ..(1.43,10.688)
+ ..controls(1.482,10.672)and(1.628,10.664)
+ ..(1.867,10.664)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((4.9u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(68, 10.766FX#,if true_size: 11.211FY#, 0.008FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.18,0)
+ --(8.18,7.711)
+ ..controls(8.174,7.779)and(8.141,7.813)
+ ..(8.078,7.813)
+ --(2.797,7.813)
+ ..controls(2.302,7.813)and(1.922,7.872)
+ ..(1.656,7.992)
+ ..controls(1.422,8.096)and(1.234,8.283)
+ ..(1.094,8.551)
+ ..controls(0.953,8.819)and(0.883,9.12)
+ ..(0.883,9.453)
+ ..controls(0.883,10.104)and(1.052,10.596)
+ ..(1.391,10.93)
+ ..controls(1.578,11.117)and(1.776,11.211)
+ ..(1.984,11.211)
+ ..controls(2.036,11.211)and(2.07,11.174)
+ ..(2.086,11.102)
+ ..controls(2.128,10.862)and(2.174,10.714)
+ ..(2.227,10.656)
+ ..controls(2.279,10.599)and(2.391,10.57)
+ ..(2.563,10.57)
+ --(8.539,10.57)
+ ..controls(9.456,10.57)and(9.914,10.117)
+ ..(9.914,9.211)
+ ..controls(9.914,8.852)and(9.841,8.529)
+ ..(9.695,8.242)
+ ..controls(9.596,8.034)and(9.388,7.891)
+ ..(9.07,7.813)
+ ..controls(8.935,7.776)and(8.867,7.703)
+ ..(8.867,7.594)
+ ..controls(8.867,7.542)and(8.87,7.482)
+ ..(8.875,7.414)
+ --(9.336,1.898)
+ ..controls(9.357,1.664)and(9.367,1.5)
+ ..(9.367,1.406)
+ ..controls(9.367,1)and(9.268,0.663)
+ ..(9.07,0.395)
+ ..controls(8.872,0.126)and(8.622,-0.008)
+ ..(8.32,-0.008)
+ ..controls(8.294,-0.008)and(8.247,-0.005)
+ ..(8.18,0)
+ --cycle) xscaled FX yscaled FY;
+ fill((0.852,0)
+ ..controls(1.008,0.432)and(1.109,0.852)
+ ..(1.156,1.258)
+ ..controls(1.203,1.664)and(1.227,2.318)
+ ..(1.227,3.219)
+ ..controls(1.227,3.786)and(1.24,4.165)
+ ..(1.266,4.355)
+ ..controls(1.292,4.546)and(1.357,4.747)
+ ..(1.461,4.961)
+ ..controls(1.565,5.18)and(1.694,5.367)
+ ..(1.848,5.523)
+ ..controls(2.001,5.68)and(2.133,5.758)
+ ..(2.242,5.758)
+ ..controls(2.31,5.758)and(2.378,5.734)
+ ..(2.445,5.688)
+ ..controls(2.513,5.641)and(2.547,5.594)
+ ..(2.547,5.547)
+ ..controls(2.547,5.516)and(2.529,5.471)
+ ..(2.492,5.414)
+ ..controls(2.346,5.195)and(2.253,5.025)
+ ..(2.211,4.902)
+ ..controls(2.169,4.78)and(2.148,4.609)
+ ..(2.148,4.391)
+ ..controls(2.148,4.161)and(2.206,3.75)
+ ..(2.32,3.156)
+ ..controls(2.419,2.656)and(2.469,2.229)
+ ..(2.469,1.875)
+ ..controls(2.469,1.24)and(2.323,0.76)
+ ..(2.031,0.438)
+ ..controls(1.771,0.141)and(1.456,-0.008)
+ ..(1.086,-0.008)
+ --(0.945,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.8u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(69, 5.094FX#,if true_size: 11.25FY#, 0.117FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((3.844,8.719)
+ --(3.867,1.672)
+ ..controls(3.872,1.135)and(3.773,0.677)
+ ..(3.57,0.297)
+ ..controls(3.424,0.021)and(3.271,-0.117)
+ ..(3.109,-0.117)
+ ..controls(3.005,-0.117)and(2.941,-0.076)
+ ..(2.918,0.008)
+ ..controls(2.895,0.091)and(2.883,0.315)
+ ..(2.883,0.68)
+ --(2.883,3.617)
+ ..controls(2.883,4.091)and(2.898,4.559)
+ ..(2.93,5.02)
+ ..controls(2.961,5.48)and(3.005,5.927)
+ ..(3.063,6.359)
+ ..controls(3.109,6.672)and(3.133,6.932)
+ ..(3.133,7.141)
+ ..controls(3.133,7.359)and(3.07,7.536)
+ ..(2.945,7.672)
+ ..controls(2.82,7.807)and(2.654,7.875)
+ ..(2.445,7.875)
+ ..controls(2.336,7.875)and(2.208,7.862)
+ ..(2.063,7.836)
+ ..controls(1.833,7.794)and(1.672,7.773)
+ ..(1.578,7.773)
+ ..controls(1.172,7.773)and(0.823,7.974)
+ ..(0.531,8.375)
+ ..controls(0.318,8.672)and(0.211,9.005)
+ ..(0.211,9.375)
+ ..controls(0.211,9.807)and(0.306,10.228)
+ ..(0.496,10.637)
+ ..controls(0.686,11.046)and(0.88,11.25)
+ ..(1.078,11.25)
+ ..controls(1.177,11.25)and(1.26,11.174)
+ ..(1.328,11.023)
+ ..controls(1.438,10.805)and(1.628,10.695)
+ ..(1.898,10.695)
+ ..controls(1.987,10.695)and(2.078,10.698)
+ ..(2.172,10.703)
+ ..controls(2.214,10.703)and(2.247,10.703)
+ ..(2.273,10.703)
+ ..controls(2.664,10.703)and(2.984,10.589)
+ ..(3.234,10.359)
+ ..controls(3.641,9.99)and(3.844,9.443)
+ ..(3.844,8.719)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((1.9u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(70, 5.039FX#,if true_size: 11.305FY#, 0.102FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((4.242,7.234)
+ ..controls(3.872,7.573)and(3.568,7.742)
+ ..(3.328,7.742)
+ ..controls(3.161,7.742)and(3.029,7.678)
+ ..(2.93,7.551)
+ ..controls(2.831,7.423)and(2.781,7.25)
+ ..(2.781,7.031)
+ ..controls(2.781,6.76)and(2.803,6.503)
+ ..(2.848,6.258)
+ ..controls(2.892,6.013)and(3.044,5.289)
+ ..(3.305,4.086)
+ ..controls(3.409,3.607)and(3.461,3.086)
+ ..(3.461,2.523)
+ ..controls(3.461,1.883)and(3.359,1.208)
+ ..(3.156,0.5)
+ ..controls(3.094,0.281)and(3.022,0.126)
+ ..(2.941,0.035)
+ ..controls(2.861,-0.056)and(2.758,-0.102)
+ ..(2.633,-0.102)
+ ..controls(2.388,-0.102)and(2.266,0.018)
+ ..(2.266,0.258)
+ ..controls(2.266,0.326)and(2.279,0.411)
+ ..(2.305,0.516)
+ ..controls(2.357,0.771)and(2.383,1.008)
+ ..(2.383,1.227)
+ ..controls(2.383,1.695)and(2.26,2.411)
+ ..(2.016,3.375)
+ ..controls(1.776,4.333)and(1.656,5.01)
+ ..(1.656,5.406)
+ ..controls(1.656,6.047)and(1.857,6.755)
+ ..(2.258,7.531)
+ ..controls(2.279,7.573)and(2.289,7.607)
+ ..(2.289,7.633)
+ ..controls(2.289,7.695)and(2.221,7.734)
+ ..(2.086,7.75)
+ ..controls(1.758,7.792)and(1.451,7.885)
+ ..(1.164,8.031)
+ ..controls(0.742,8.25)and(0.531,8.708)
+ ..(0.531,9.406)
+ ..controls(0.531,9.953)and(0.641,10.422)
+ ..(0.859,10.813)
+ ..controls(1.036,11.141)and(1.211,11.305)
+ ..(1.383,11.305)
+ ..controls(1.435,11.305)and(1.474,11.29)
+ ..(1.5,11.262)
+ ..controls(1.526,11.233)and(1.589,11.133)
+ ..(1.688,10.961)
+ ..controls(1.755,10.841)and(1.863,10.763)
+ ..(2.012,10.727)
+ ..controls(2.16,10.69)and(2.503,10.659)
+ ..(3.039,10.633)
+ ..controls(3.633,10.607)and(4.094,10.409)
+ ..(4.422,10.039)
+ ..controls(4.693,9.732)and(4.828,9.365)
+ ..(4.828,8.938)
+ ..controls(4.828,8.365)and(4.633,7.797)
+ ..(4.242,7.234)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((0.5u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(71, 10.734FX#,if true_size: 11.07FY#, 0.094FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((3.109,7.75)
+ ..controls(2.458,7.391)and(2.133,6.677)
+ ..(2.133,5.609)
+ ..controls(2.133,5.323)and(2.201,4.75)
+ ..(2.336,3.891)
+ ..controls(2.451,3.161)and(2.508,2.521)
+ ..(2.508,1.969)
+ ..controls(2.508,1.266)and(2.378,0.75)
+ ..(2.117,0.422)
+ ..controls(2.008,0.276)and(1.855,0.154)
+ ..(1.66,0.055)
+ ..controls(1.465,-0.044)and(1.286,-0.094)
+ ..(1.125,-0.094)
+ ..controls(0.974,-0.094)and(0.898,-0.036)
+ ..(0.898,0.078)
+ ..controls(0.898,0.167)and(0.932,0.284)
+ ..(1,0.43)
+ ..controls(1.073,0.586)and(1.139,0.906)
+ ..(1.199,1.391)
+ ..controls(1.259,1.875)and(1.289,2.339)
+ ..(1.289,2.781)
+ ..controls(1.289,2.958)and(1.271,3.409)
+ ..(1.234,4.133)
+ ..controls(1.219,4.424)and(1.211,4.695)
+ ..(1.211,4.945)
+ ..controls(1.211,5.57)and(1.276,6.073)
+ ..(1.406,6.453)
+ ..controls(1.536,6.833)and(1.786,7.255)
+ ..(2.156,7.719)
+ ..controls(1.75,7.74)and(1.431,7.913)
+ ..(1.199,8.238)
+ ..controls(0.967,8.564)and(0.852,9.003)
+ ..(0.852,9.555)
+ ..controls(0.852,10.091)and(0.995,10.497)
+ ..(1.281,10.773)
+ ..controls(1.495,10.971)and(1.701,11.07)
+ ..(1.898,11.07)
+ ..controls(1.966,11.07)and(2.008,11.055)
+ ..(2.023,11.023)
+ ..controls(2.039,10.992)and(2.057,10.898)
+ ..(2.078,10.742)
+ ..controls(2.094,10.596)and(2.299,10.521)
+ ..(2.695,10.516)
+ --(8.477,10.516)
+ ..controls(8.852,10.516)and(9.09,10.504)
+ ..(9.191,10.48)
+ ..controls(9.293,10.457)and(9.404,10.385)
+ ..(9.523,10.266)
+ ..controls(9.763,10.031)and(9.883,9.656)
+ ..(9.883,9.141)
+ ..controls(9.883,8.682)and(9.82,8.336)
+ ..(9.695,8.102)
+ ..controls(9.633,7.987)and(9.557,7.904)
+ ..(9.469,7.852)
+ ..controls(9.38,7.799)and(9.224,7.75)
+ ..(9,7.703)
+ ..controls(8.891,7.677)and(8.836,7.63)
+ ..(8.836,7.563)
+ ..controls(8.836,7.547)and(8.841,7.492)
+ ..(8.852,7.398)
+ --(9.328,2.633)
+ ..controls(9.38,2.096)and(9.406,1.698)
+ ..(9.406,1.438)
+ ..controls(9.406,0.995)and(9.346,0.664)
+ ..(9.227,0.445)
+ ..controls(9.138,0.289)and(9.014,0.16)
+ ..(8.855,0.059)
+ ..controls(8.697,-0.043)and(8.539,-0.094)
+ ..(8.383,-0.094)
+ ..controls(8.294,-0.094)and(8.237,-0.069)
+ ..(8.211,-0.02)
+ ..controls(8.185,0.03)and(8.172,0.138)
+ ..(8.172,0.305)
+ --(8.172,7.398)
+ --(8.172,7.578)
+ ..controls(8.172,7.667)and(8.161,7.716)
+ ..(8.141,7.727)
+ ..controls(8.12,7.737)and(7.992,7.745)
+ ..(7.758,7.75)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.9u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(72, 10.898FX#,if true_size: 11.313FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.93,0)
+ --(1.203,0)
+ ..controls(1.208,0.224)and(1.211,0.385)
+ ..(1.211,0.484)
+ ..controls(1.211,0.854)and(1.156,1.734)
+ ..(1.047,3.125)
+ ..controls(1.005,3.677)and(0.984,4.128)
+ ..(0.984,4.477)
+ ..controls(0.984,5.555)and(1.315,6.557)
+ ..(1.977,7.484)
+ ..controls(2.013,7.542)and(2.031,7.583)
+ ..(2.031,7.609)
+ ..controls(2.031,7.646)and(1.88,7.799)
+ ..(1.578,8.07)
+ ..controls(1.271,8.341)and(1.117,8.661)
+ ..(1.117,9.031)
+ ..controls(1.117,9.891)and(1.552,10.651)
+ ..(2.422,11.313)
+ ..controls(2.464,11.026)and(2.533,10.837)
+ ..(2.629,10.746)
+ ..controls(2.725,10.655)and(3.049,10.477)
+ ..(3.602,10.211)
+ ..controls(4.237,9.904)and(4.555,9.451)
+ ..(4.555,8.852)
+ ..controls(4.555,8.284)and(4.273,7.586)
+ ..(3.711,6.758)
+ ..controls(3.247,7.107)and(2.94,7.281)
+ ..(2.789,7.281)
+ ..controls(2.628,7.281)and(2.449,7.055)
+ ..(2.254,6.602)
+ ..controls(2.059,6.148)and(1.961,5.727)
+ ..(1.961,5.336)
+ ..controls(1.961,4.914)and(2.007,4.447)
+ ..(2.098,3.934)
+ ..controls(2.189,3.421)and(2.297,3.029)
+ ..(2.422,2.758)
+ --(8.93,2.758)
+ ..controls(9.117,3.409)and(9.211,4.13)
+ ..(9.211,4.922)
+ ..controls(9.211,5.729)and(9.016,6.385)
+ ..(8.625,6.891)
+ ..controls(8.182,7.458)and(7.693,7.742)
+ ..(7.156,7.742)
+ ..controls(6.911,7.742)and(6.667,7.663)
+ ..(6.422,7.504)
+ ..controls(6.177,7.345)and(5.974,7.133)
+ ..(5.813,6.867)
+ ..controls(5.578,6.477)and(5.461,5.958)
+ ..(5.461,5.313)
+ ..controls(5.461,5.167)and(5.469,4.99)
+ ..(5.484,4.781)
+ --(4.719,4.781)
+ ..controls(4.714,4.885)and(4.711,4.964)
+ ..(4.711,5.016)
+ ..controls(4.711,5.646)and(4.896,6.432)
+ ..(5.266,7.375)
+ ..controls(5.563,8.135)and(5.711,8.997)
+ ..(5.711,9.961)
+ ..controls(5.711,10.242)and(5.674,10.536)
+ ..(5.602,10.844)
+ ..controls(5.872,10.87)and(6.068,10.883)
+ ..(6.188,10.883)
+ ..controls(7.12,10.883)and(7.898,10.591)
+ ..(8.523,10.008)
+ ..controls(8.956,9.602)and(9.299,8.97)
+ ..(9.555,8.113)
+ ..controls(9.81,7.257)and(9.938,6.302)
+ ..(9.938,5.25)
+ ..controls(9.938,4.635)and(9.874,3.993)
+ ..(9.746,3.324)
+ ..controls(9.618,2.655)and(9.346,1.547)
+ ..(8.93,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((8.2u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(73, 5.109FX#,if true_size: 11.273FY#, -5.117FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((2.672,10.703)
+ ..controls(3.224,10.703)and(3.629,10.497)
+ ..(3.887,10.086)
+ ..controls(4.145,9.674)and(4.273,9.026)
+ ..(4.273,8.141)
+ ..controls(4.273,7.411)and(4.138,6.555)
+ ..(3.867,5.57)
+ ..controls(3.784,5.268)and(3.651,5.117)
+ ..(3.469,5.117)
+ ..controls(3.198,5.117)and(3.063,5.19)
+ ..(3.063,5.336)
+ ..controls(3.063,5.398)and(3.099,5.516)
+ ..(3.172,5.688)
+ ..controls(3.354,6.109)and(3.445,6.539)
+ ..(3.445,6.977)
+ ..controls(3.445,7.628)and(2.919,7.935)
+ ..(1.867,7.898)
+ ..controls(0.763,7.852)and(0.211,8.331)
+ ..(0.211,9.336)
+ ..controls(0.211,9.909)and(0.331,10.409)
+ ..(0.57,10.836)
+ ..controls(0.638,10.956)and(0.724,11.059)
+ ..(0.828,11.145)
+ ..controls(0.932,11.23)and(1.023,11.273)
+ ..(1.102,11.273)
+ ..controls(1.143,11.273)and(1.172,11.259)
+ ..(1.188,11.23)
+ ..controls(1.203,11.202)and(1.232,11.112)
+ ..(1.273,10.961)
+ ..controls(1.305,10.846)and(1.365,10.77)
+ ..(1.453,10.73)
+ ..controls(1.542,10.691)and(1.701,10.672)
+ ..(1.93,10.672)
+ ..controls(2.003,10.672)and(2.083,10.674)
+ ..(2.172,10.68)
+ ..controls(2.453,10.695)and(2.62,10.703)
+ ..(2.672,10.703)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((2u,0.55h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(74, 9.922FX#,if true_size: 11.203FY#, 3.813FY#
+ else: cap_height#,desc_depth# fi);
+ "Hebrew letter" & tmp_string;
+ fill((1.828,10.664)
+ --(7.492,10.664)
+ --(7.742,10.672)
+ --(7.914,10.672)
+ ..controls(8.268,10.672)and(8.549,10.556)
+ ..(8.758,10.324)
+ ..controls(8.966,10.092)and(9.07,9.779)
+ ..(9.07,9.383)
+ ..controls(9.07,9.003)and(9.003,8.664)
+ ..(8.867,8.367)
+ ..controls(8.779,8.174)and(8.586,8.003)
+ ..(8.289,7.852)
+ ..controls(8.154,7.789)and(8.065,7.727)
+ ..(8.023,7.664)
+ ..controls(7.982,7.602)and(7.961,7.505)
+ ..(7.961,7.375)
+ ..controls(7.961,7.276)and(7.964,7.182)
+ ..(7.969,7.094)
+ --(8.492,-0.898)
+ ..controls(8.503,-1.06)and(8.508,-1.201)
+ ..(8.508,-1.32)
+ ..controls(8.508,-1.924)and(8.453,-2.409)
+ ..(8.344,-2.773)
+ ..controls(8.245,-3.102)and(8.092,-3.357)
+ ..(7.887,-3.539)
+ ..controls(7.681,-3.721)and(7.443,-3.813)
+ ..(7.172,-3.813)
+ ..controls(6.958,-3.813)and(6.857,-3.724)
+ ..(6.867,-3.547)
+ --(6.883,-3.281)
+ --(7.344,7.234)
+ ..controls(7.349,7.38)and(7.352,7.461)
+ ..(7.352,7.477)
+ ..controls(7.352,7.612)and(7.298,7.702)
+ ..(7.191,7.746)
+ ..controls(7.085,7.79)and(6.87,7.813)
+ ..(6.547,7.813)
+ --(1.828,7.813)
+ ..controls(1.135,7.813)and(0.664,7.958)
+ ..(0.414,8.25)
+ ..controls(0.138,8.578)and(0,9.026)
+ ..(0,9.594)
+ ..controls(0,10.115)and(0.125,10.516)
+ ..(0.375,10.797)
+ ..controls(0.609,11.068)and(0.839,11.203)
+ ..(1.063,11.203)
+ ..controls(1.135,11.203)and(1.214,11.109)
+ ..(1.297,10.922)
+ ..controls(1.344,10.813)and(1.4,10.742)
+ ..(1.465,10.711)
+ ..controls(1.53,10.68)and(1.651,10.664)
+ ..(1.828,10.664)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.2u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(75, 10.438FX#,if true_size: 11.305FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.313,0)
+ --(0.211,0)
+ ..controls(0.268,0.224)and(0.432,0.708)
+ ..(0.703,1.453)
+ ..controls(0.76,1.583)and(0.904,2.055)
+ ..(1.133,2.867)
+ --(8.086,2.867)
+ ..controls(8.336,2.867)and(8.495,2.895)
+ ..(8.563,2.949)
+ ..controls(8.63,3.004)and(8.664,3.135)
+ ..(8.664,3.344)
+ ..controls(8.664,4.786)and(8.492,5.859)
+ ..(8.148,6.563)
+ ..controls(7.945,6.984)and(7.63,7.303)
+ ..(7.203,7.52)
+ ..controls(6.776,7.736)and(6.25,7.844)
+ ..(5.625,7.844)
+ --(2.531,7.844)
+ ..controls(1.938,7.844)and(1.536,7.982)
+ ..(1.328,8.258)
+ ..controls(1.094,8.56)and(0.977,8.99)
+ ..(0.977,9.547)
+ ..controls(0.977,10.042)and(1.076,10.484)
+ ..(1.273,10.875)
+ ..controls(1.419,11.161)and(1.57,11.305)
+ ..(1.727,11.305)
+ ..controls(1.81,11.305)and(1.93,11.177)
+ ..(2.086,10.922)
+ ..controls(2.18,10.76)and(2.461,10.674)
+ ..(2.93,10.664)
+ --(5.484,10.664)
+ ..controls(5.974,10.664)and(6.324,10.647)
+ ..(6.535,10.613)
+ ..controls(6.746,10.579)and(6.984,10.5)
+ ..(7.25,10.375)
+ ..controls(7.88,10.083)and(8.372,9.589)
+ ..(8.727,8.891)
+ ..controls(8.945,8.464)and(9.102,7.901)
+ ..(9.195,7.203)
+ ..controls(9.289,6.505)and(9.336,5.565)
+ ..(9.336,4.383)
+ --(9.328,2.836)
+ ..controls(9.328,2.794)and(9.333,2.643)
+ ..(9.344,2.383)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.5u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(76, 9.586FX#,if true_size: 15.555FY#, 0.133FY#
+ else: 1.4cap_height#,0 fi);
+"Hebrew letter" & tmp_string;
+fill((2.539,10.664)
+ --(7.047,10.664)
+ ..controls(7.38,10.664)and(7.647,10.62)
+ ..(7.848,10.531)
+ ..controls(8.048,10.443)and(8.221,10.292)
+ ..(8.367,10.078)
+ ..controls(8.497,9.891)and(8.578,9.72)
+ ..(8.609,9.566)
+ ..controls(8.641,9.413)and(8.677,9.021)
+ ..(8.719,8.391)
+ --(8.891,6.172)
+ ..controls(8.896,6.099)and(8.898,6.018)
+ ..(8.898,5.93)
+ ..controls(8.898,5.305)and(8.714,4.74)
+ ..(8.344,4.234)
+ ..controls(8.109,3.906)and(7.497,3.354)
+ ..(6.508,2.578)
+ ..controls(5.628,1.87)and(5.018,1.219)
+ ..(4.68,0.625)
+ ..controls(4.508,0.328)and(4.357,0.128)
+ ..(4.227,0.023)
+ ..controls(4.096,-0.081)and(3.93,-0.133)
+ ..(3.727,-0.133)
+ ..controls(3.206,-0.133)and(2.945,0.141)
+ ..(2.945,0.688)
+ ..controls(2.945,1.068)and(3.112,1.445)
+ ..(3.445,1.82)
+ ..controls(3.721,2.128)and(4.133,2.43)
+ ..(4.68,2.727)
+ ..controls(4.768,2.773)and(5.443,3.102)
+ ..(6.703,3.711)
+ ..controls(7.594,4.143)and(8.039,4.813)
+ ..(8.039,5.719)
+ ..controls(8.039,6.229)and(7.909,6.701)
+ ..(7.648,7.133)
+ ..controls(7.487,7.404)and(7.283,7.598)
+ ..(7.035,7.715)
+ ..controls(6.788,7.832)and(6.456,7.891)
+ ..(6.039,7.891)
+ --(1.477,7.891)
+ ..controls(1.159,7.891)and(0.945,7.902)
+ ..(0.836,7.926)
+ ..controls(0.727,7.949)and(0.625,8.008)
+ ..(0.531,8.102)
+ ..controls(0.318,8.305)and(0.211,8.695)
+ ..(0.211,9.273)
+ ..controls(0.211,10.336)and(0.411,11.346)
+ ..(0.813,12.305)
+ ..controls(0.932,12.586)and(1.159,12.982)
+ ..(1.492,13.492)
+ ..controls(1.555,13.586)and(1.586,13.672)
+ ..(1.586,13.75)
+ ..controls(1.586,13.823)and(1.497,13.992)
+ ..(1.32,14.258)
+ ..controls(1.201,14.44)and(1.141,14.617)
+ ..(1.141,14.789)
+ ..controls(1.141,14.992)and(1.201,15.171)
+ ..(1.32,15.324)
+ ..controls(1.44,15.478)and(1.581,15.555)
+ ..(1.742,15.555)
+ ..controls(1.924,15.555)and(2.13,15.438)
+ ..(2.359,15.203)
+ ..controls(2.589,14.969)and(2.703,14.758)
+ ..(2.703,14.57)
+ ..controls(2.703,14.398)and(2.665,14.242)
+ ..(2.59,14.102)
+ ..controls(2.514,13.961)and(2.276,13.607)
+ ..(1.875,13.039)
+ ..controls(1.667,12.742)and(1.563,12.339)
+ ..(1.563,11.828)
+ ..controls(1.563,11.229)and(1.708,10.865)
+ ..(2,10.734)
+ ..controls(2.109,10.688)and(2.289,10.664)
+ ..(2.539,10.664)
+ --cycle) xscaled FX yscaled FY;
+if dagesh: adjust_dot0((5.25u,0.5cap_height),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(77, 11.016FX#,if true_size: 11.297FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((9.734,0)
+ --(1.281,0)
+ --(1.281,5.336)
+ ..controls(1.281,5.612)and(1.302,5.883)
+ ..(1.344,6.148)
+ ..controls(1.385,6.414)and(1.438,6.607)
+ ..(1.5,6.727)
+ ..controls(1.557,6.841)and(1.689,7.012)
+ ..(1.895,7.238)
+ ..controls(2.1,7.465)and(2.271,7.628)
+ ..(2.406,7.727)
+ ..controls(2.453,7.758)and(2.477,7.781)
+ ..(2.477,7.797)
+ ..controls(2.477,7.813)and(2.445,7.836)
+ ..(2.383,7.867)
+ ..controls(2.018,8.034)and(1.754,8.242)
+ ..(1.59,8.492)
+ ..controls(1.426,8.742)and(1.344,9.057)
+ ..(1.344,9.438)
+ ..controls(1.344,9.964)and(1.487,10.417)
+ ..(1.773,10.797)
+ ..controls(1.872,10.927)and(1.986,11.043)
+ ..(2.113,11.145)
+ ..controls(2.241,11.246)and(2.341,11.297)
+ ..(2.414,11.297)
+ ..controls(2.466,11.297)and(2.503,11.279)
+ ..(2.523,11.242)
+ ..controls(2.544,11.206)and(2.576,11.109)
+ ..(2.617,10.953)
+ ..controls(2.648,10.833)and(2.701,10.755)
+ ..(2.773,10.719)
+ ..controls(2.846,10.682)and(2.987,10.664)
+ ..(3.195,10.664)
+ --(7.648,10.664)
+ ..controls(8.013,10.664)and(8.31,10.613)
+ ..(8.539,10.512)
+ ..controls(8.768,10.41)and(8.974,10.237)
+ ..(9.156,9.992)
+ ..controls(9.563,9.404)and(9.755,8.583)
+ ..(9.734,7.531)
+ --cycle) xscaled FX yscaled FY;
+ fill((3.242,7.875)
+ ..controls(2.898,7.531)and(2.668,7.217)
+ ..(2.551,6.934)
+ ..controls(2.434,6.65)and(2.375,6.273)
+ ..(2.375,5.805)
+ --(2.375,3.172)
+ ..controls(2.375,3.047)and(2.398,2.965)
+ ..(2.445,2.926)
+ ..controls(2.492,2.887)and(2.594,2.867)
+ ..(2.75,2.867)
+ --(8.711,2.867)
+ ..controls(8.883,2.867)and(8.986,2.875)
+ ..(9.02,2.891)
+ ..controls(9.053,2.906)and(9.07,2.951)
+ ..(9.07,3.023)
+ --(9.07,6.297)
+ ..controls(9.07,6.896)and(8.96,7.309)
+ ..(8.738,7.535)
+ ..controls(8.517,7.762)and(8.115,7.875)
+ ..(7.531,7.875)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((6.35u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(78, 10.672FX#,if true_size: 11.32FY#, 0.188FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.93,0)
+ --(3.445,0)
+ ..controls(3.753,0.708)and(3.906,1.359)
+ ..(3.906,1.953)
+ ..controls(3.906,2.141)and(3.891,2.404)
+ ..(3.859,2.742)
+ --(8.5,2.742)
+ ..controls(8.76,2.742)and(8.904,2.755)
+ ..(8.93,2.781)
+ ..controls(8.987,2.828)and(9.016,3.026)
+ ..(9.016,3.375)
+ ..controls(9.016,4.266)and(8.906,5.065)
+ ..(8.688,5.773)
+ ..controls(8.474,6.456)and(8.06,6.992)
+ ..(7.445,7.383)
+ ..controls(6.914,7.716)and(6.305,7.883)
+ ..(5.617,7.883)
+ ..controls(4.513,7.883)and(3.633,7.477)
+ ..(2.977,6.664)
+ ..controls(2.732,6.357)and(2.54,6.013)
+ ..(2.402,5.633)
+ ..controls(2.264,5.253)and(2.195,4.872)
+ ..(2.195,4.492)
+ --(2.266,2.469)
+ ..controls(2.266,1.797)and(2.23,1.309)
+ ..(2.16,1.004)
+ ..controls(2.09,0.699)and(1.953,0.438)
+ ..(1.75,0.219)
+ ..controls(1.505,-0.052)and(1.263,-0.188)
+ ..(1.023,-0.188)
+ ..controls(0.872,-0.188)and(0.797,-0.122)
+ ..(0.797,0.008)
+ ..controls(0.797,0.055)and(0.813,0.122)
+ ..(0.844,0.211)
+ ..controls(0.995,0.695)and(1.076,1.635)
+ ..(1.086,3.031)
+ ..controls(1.102,4.063)and(1.174,4.779)
+ ..(1.305,5.18)
+ ..controls(1.398,5.445)and(1.586,5.793)
+ ..(1.867,6.223)
+ ..controls(2.148,6.652)and(2.427,7.013)
+ ..(2.703,7.305)
+ ..controls(2.745,7.352)and(2.766,7.385)
+ ..(2.766,7.406)
+ ..controls(2.766,7.453)and(2.552,7.549)
+ ..(2.125,7.695)
+ ..controls(1.75,7.831)and(1.43,8.115)
+ ..(1.164,8.547)
+ ..controls(1.018,8.786)and(0.945,9.07)
+ ..(0.945,9.398)
+ ..controls(0.945,9.794)and(1.02,10.112)
+ ..(1.168,10.352)
+ ..controls(1.316,10.591)and(1.638,10.914)
+ ..(2.133,11.32)
+ ..controls(2.201,11.112)and(2.303,10.943)
+ ..(2.441,10.813)
+ ..controls(2.579,10.682)and(2.797,10.557)
+ ..(3.094,10.438)
+ ..controls(3.531,10.255)and(3.819,10.083)
+ ..(3.957,9.922)
+ ..controls(4.095,9.76)and(4.164,9.516)
+ ..(4.164,9.188)
+ ..controls(4.164,9.021)and(4.12,8.745)
+ ..(4.031,8.359)
+ ..controls(4.026,8.339)and(4.023,8.318)
+ ..(4.023,8.297)
+ ..controls(4.023,8.25)and(4.052,8.227)
+ ..(4.109,8.227)
+ ..controls(4.214,8.227)and(4.344,8.271)
+ ..(4.5,8.359)
+ ..controls(4.786,8.521)and(4.986,8.715)
+ ..(5.098,8.941)
+ ..controls(5.21,9.168)and(5.266,9.495)
+ ..(5.266,9.922)
+ ..controls(5.266,10.26)and(5.219,10.602)
+ ..(5.125,10.945)
+ ..controls(5.443,10.992)and(5.667,11.016)
+ ..(5.797,11.016)
+ ..controls(6.63,11.016)and(7.378,10.719)
+ ..(8.039,10.125)
+ ..controls(8.878,9.375)and(9.388,8.255)
+ ..(9.57,6.766)
+ ..controls(9.648,6.125)and(9.688,5.318)
+ ..(9.688,4.344)
+ ..controls(9.688,2.786)and(9.435,1.339)
+ ..(8.93,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((6.25u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(79, 5.414FX#,if true_size: 11.344FY#, 3.641FY#
+ else: cap_height#,desc_depth# fi);
+ "Hebrew letter" & tmp_string;
+ fill((2.664,-2.508)
+ --(2.664,0.836)
+ --(2.656,1.578)
+ --(2.648,2.906)
+ --(2.633,4.18)
+ ..controls(2.633,5.326)and(2.805,6.271)
+ ..(3.148,7.016)
+ ..controls(3.258,7.255)and(3.313,7.409)
+ ..(3.313,7.477)
+ ..controls(3.313,7.565)and(3.271,7.63)
+ ..(3.188,7.672)
+ ..controls(3.104,7.719)and(2.661,7.807)
+ ..(1.859,7.938)
+ ..controls(0.766,8.115)and(0.219,8.62)
+ ..(0.219,9.453)
+ ..controls(0.219,9.974)and(0.372,10.44)
+ ..(0.68,10.852)
+ ..controls(0.924,11.18)and(1.135,11.344)
+ ..(1.313,11.344)
+ ..controls(1.385,11.344)and(1.43,11.331)
+ ..(1.445,11.305)
+ ..controls(1.461,11.279)and(1.479,11.193)
+ ..(1.5,11.047)
+ ..controls(1.563,10.828)and(1.859,10.672)
+ ..(2.391,10.578)
+ ..controls(2.87,10.49)and(3.219,10.41)
+ ..(3.438,10.34)
+ ..controls(3.656,10.27)and(3.833,10.177)
+ ..(3.969,10.063)
+ ..controls(4.281,9.813)and(4.438,9.435)
+ ..(4.438,8.93)
+ ..controls(4.438,8.503)and(4.294,7.997)
+ ..(4.008,7.414)
+ ..controls(3.732,6.857)and(3.563,6.473)
+ ..(3.5,6.262)
+ ..controls(3.438,6.051)and(3.406,5.768)
+ ..(3.406,5.414)
+ ..controls(3.406,4.945)and(3.508,4.021)
+ ..(3.711,2.641)
+ ..controls(3.982,0.828)and(4.117,-0.49)
+ ..(4.117,-1.313)
+ ..controls(4.117,-1.917)and(4.004,-2.456)
+ ..(3.777,-2.93)
+ ..controls(3.551,-3.404)and(3.292,-3.641)
+ ..(3,-3.641)
+ ..controls(2.766,-3.641)and(2.648,-3.461)
+ ..(2.648,-3.102)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((1.4u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(80, 6.008FX#,if true_size: 11.367FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((4.359,0)
+ --(0.227,0)
+ ..controls(0.216,0.151)and(0.211,0.263)
+ ..(0.211,0.336)
+ ..controls(0.211,0.758)and(0.404,1.625)
+ ..(0.789,2.938)
+ --(3.5,2.938)
+ ..controls(3.495,3.052)and(3.492,3.146)
+ ..(3.492,3.219)
+ ..controls(3.492,3.802)and(3.612,5.016)
+ ..(3.852,6.859)
+ ..controls(3.867,6.979)and(3.875,7.089)
+ ..(3.875,7.188)
+ ..controls(3.875,7.38)and(3.823,7.536)
+ ..(3.719,7.656)
+ ..controls(3.615,7.776)and(3.477,7.836)
+ ..(3.305,7.836)
+ ..controls(3.211,7.836)and(3.068,7.826)
+ ..(2.875,7.805)
+ ..controls(2.75,7.789)and(2.628,7.781)
+ ..(2.508,7.781)
+ ..controls(1.987,7.781)and(1.599,7.94)
+ ..(1.344,8.258)
+ ..controls(1.109,8.555)and(0.992,8.935)
+ ..(0.992,9.398)
+ ..controls(0.992,9.935)and(1.115,10.422)
+ ..(1.359,10.859)
+ ..controls(1.547,11.198)and(1.763,11.367)
+ ..(2.008,11.367)
+ ..controls(2.143,11.367)and(2.219,11.279)
+ ..(2.234,11.102)
+ ..controls(2.25,10.898)and(2.29,10.781)
+ ..(2.355,10.75)
+ ..controls(2.421,10.719)and(2.68,10.69)
+ ..(3.133,10.664)
+ ..controls(4.143,10.607)and(4.648,10.049)
+ ..(4.648,8.992)
+ ..controls(4.648,8.768)and(4.628,8.44)
+ ..(4.586,8.008)
+ ..controls(4.529,7.456)and(4.5,7.042)
+ ..(4.5,6.766)
+ ..controls(4.5,6.427)and(4.531,5.906)
+ ..(4.594,5.203)
+ ..controls(4.714,3.932)and(4.773,3.112)
+ ..(4.773,2.742)
+ ..controls(4.773,1.674)and(4.635,0.76)
+ ..(4.359,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((2.5u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(81, 9.891FX#,if true_size: 11.227FY#, 0.227FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((1.891,7.758)
+ ..controls(1.49,7.867)and(1.214,8.036)
+ ..(1.063,8.266)
+ ..controls(0.88,8.542)and(0.789,8.878)
+ ..(0.789,9.273)
+ ..controls(0.789,9.831)and(0.982,10.336)
+ ..(1.367,10.789)
+ ..controls(1.612,11.081)and(1.831,11.227)
+ ..(2.023,11.227)
+ ..controls(2.159,11.227)and(2.234,11.133)
+ ..(2.25,10.945)
+ ..controls(2.26,10.826)and(2.29,10.749)
+ ..(2.34,10.715)
+ ..controls(2.389,10.681)and(2.5,10.664)
+ ..(2.672,10.664)
+ --(6.133,10.664)
+ ..controls(6.44,10.664)and(6.664,10.642)
+ ..(6.805,10.598)
+ ..controls(6.945,10.553)and(7.12,10.451)
+ ..(7.328,10.289)
+ ..controls(7.891,9.857)and(8.336,9.203)
+ ..(8.664,8.328)
+ ..controls(8.992,7.453)and(9.156,6.479)
+ ..(9.156,5.406)
+ ..controls(9.156,4.052)and(8.917,2.88)
+ ..(8.438,1.891)
+ ..controls(8.068,1.125)and(7.624,0.581)
+ ..(7.105,0.258)
+ ..controls(6.587,-0.065)and(5.896,-0.227)
+ ..(5.031,-0.227)
+ ..controls(4.604,-0.227)and(4.173,-0.19)
+ ..(3.738,-0.117)
+ ..controls(3.303,-0.044)and(2.974,0.047)
+ ..(2.75,0.156)
+ ..controls(2.198,0.422)and(1.74,0.935)
+ ..(1.375,1.695)
+ ..controls(0.958,2.565)and(0.75,3.51)
+ ..(0.75,4.531)
+ ..controls(0.75,5.224)and(0.836,5.813)
+ ..(1.008,6.297)
+ ..controls(1.18,6.781)and(1.474,7.268)
+ ..(1.891,7.758)
+ --cycle) xscaled FX yscaled FY;
+ fill((6.398,7.758)
+ --(3.633,7.758)
+ ..controls(3.055,7.758)and(2.552,7.484)
+ ..(2.125,6.938)
+ ..controls(1.927,6.682)and(1.768,6.387)
+ ..(1.648,6.051)
+ ..controls(1.529,5.715)and(1.469,5.396)
+ ..(1.469,5.094)
+ ..controls(1.469,4.333)and(1.763,3.716)
+ ..(2.352,3.242)
+ ..controls(2.628,3.023)and(2.945,2.871)
+ ..(3.305,2.785)
+ ..controls(3.664,2.699)and(4.167,2.656)
+ ..(4.813,2.656)
+ ..controls(5.5,2.656)and(6.043,2.693)
+ ..(6.441,2.766)
+ ..controls(6.84,2.839)and(7.177,2.961)
+ ..(7.453,3.133)
+ ..controls(7.781,3.346)and(8.039,3.65)
+ ..(8.227,4.043)
+ ..controls(8.414,4.436)and(8.508,4.88)
+ ..(8.508,5.375)
+ ..controls(8.508,6.302)and(8.198,6.99)
+ ..(7.578,7.438)
+ ..controls(7.406,7.563)and(7.238,7.647)
+ ..(7.074,7.691)
+ ..controls(6.91,7.736)and(6.685,7.758)
+ ..(6.398,7.758)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.55u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(82, 9.602FX#,if true_size: 11.297FY#, 0.305FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((0.68,2.828)
+ --(2.336,2.977)
+ ..controls(2.737,3.008)and(2.98,3.039)
+ ..(3.066,3.07)
+ ..controls(3.152,3.102)and(3.195,3.172)
+ ..(3.195,3.281)
+ ..controls(3.195,3.453)and(3.138,3.719)
+ ..(3.023,4.078)
+ ..controls(2.945,4.313)and(2.878,4.493)
+ ..(2.82,4.621)
+ ..controls(2.763,4.749)and(2.599,5.078)
+ ..(2.328,5.609)
+ ..controls(2.198,5.87)and(2.133,6.154)
+ ..(2.133,6.461)
+ ..controls(2.133,6.68)and(2.211,7.034)
+ ..(2.367,7.523)
+ ..controls(2.393,7.602)and(2.406,7.669)
+ ..(2.406,7.727)
+ ..controls(2.406,7.815)and(2.378,7.88)
+ ..(2.32,7.922)
+ ..controls(2.263,7.964)and(2.117,8.034)
+ ..(1.883,8.133)
+ ..controls(1.674,8.211)and(1.509,8.365)
+ ..(1.387,8.594)
+ ..controls(1.264,8.823)and(1.203,9.083)
+ ..(1.203,9.375)
+ ..controls(1.203,9.76)and(1.318,10.198)
+ ..(1.547,10.688)
+ ..controls(1.729,11.094)and(1.906,11.297)
+ ..(2.078,11.297)
+ ..controls(2.125,11.297)and(2.216,11.219)
+ ..(2.352,11.063)
+ ..controls(2.456,10.932)and(2.771,10.794)
+ ..(3.297,10.648)
+ ..controls(3.833,10.503)and(4.197,10.324)
+ ..(4.387,10.113)
+ ..controls(4.577,9.902)and(4.672,9.565)
+ ..(4.672,9.102)
+ ..controls(4.672,8.732)and(4.599,8.365)
+ ..(4.453,8)
+ ..controls(4.391,7.833)and(4.352,7.729)
+ ..(4.336,7.688)
+ ..controls(4.284,7.542)and(4.208,7.469)
+ ..(4.109,7.469)
+ ..controls(4.031,7.469)and(3.833,7.526)
+ ..(3.516,7.641)
+ ..controls(3.406,7.677)and(3.31,7.695)
+ ..(3.227,7.695)
+ ..controls(3.122,7.695)and(3.033,7.667)
+ ..(2.957,7.609)
+ ..controls(2.882,7.552)and(2.844,7.482)
+ ..(2.844,7.398)
+ ..controls(2.844,7.185)and(3.141,6.422)
+ ..(3.734,5.109)
+ ..controls(3.849,4.854)and(3.904,4.693)
+ ..(3.898,4.625)
+ --(3.836,3.359)
+ ..controls(3.836,3.313)and(3.867,3.268)
+ ..(3.93,3.227)
+ ..controls(3.992,3.185)and(4.065,3.164)
+ ..(4.148,3.164)
+ ..controls(4.367,3.164)and(4.699,3.202)
+ ..(5.145,3.277)
+ ..controls(5.59,3.353)and(5.88,3.422)
+ ..(6.016,3.484)
+ ..controls(6.432,3.677)and(6.81,4.281)
+ ..(7.148,5.297)
+ ..controls(7.398,6.047)and(7.604,6.503)
+ ..(7.766,6.664)
+ ..controls(7.833,6.753)and(7.867,6.82)
+ ..(7.867,6.867)
+ ..controls(7.867,7.018)and(7.583,7.19)
+ ..(7.016,7.383)
+ ..controls(6.578,7.529)and(6.24,7.74)
+ ..(6,8.016)
+ ..controls(5.76,8.292)and(5.641,8.607)
+ ..(5.641,8.961)
+ ..controls(5.641,9.513)and(5.849,10.057)
+ ..(6.266,10.594)
+ ..controls(6.557,10.964)and(6.768,11.148)
+ ..(6.898,11.148)
+ ..controls(6.987,11.148)and(7.096,11.031)
+ ..(7.227,10.797)
+ ..controls(7.284,10.698)and(7.355,10.626)
+ ..(7.441,10.582)
+ ..controls(7.527,10.538)and(7.721,10.469)
+ ..(8.023,10.375)
+ ..controls(8.419,10.26)and(8.728,10.082)
+ ..(8.949,9.84)
+ ..controls(9.171,9.598)and(9.281,9.32)
+ ..(9.281,9.008)
+ ..controls(9.281,8.711)and(9.236,8.435)
+ ..(9.145,8.18)
+ ..controls(9.053,7.924)and(8.823,7.419)
+ ..(8.453,6.664)
+ ..controls(8.063,5.893)and(7.745,4.505)
+ ..(7.5,2.5)
+ ..controls(7.391,1.609)and(7.142,1.023)
+ ..(6.754,0.742)
+ ..controls(6.366,0.461)and(5.568,0.292)
+ ..(4.359,0.234)
+ ..controls(3.745,0.208)and(3.012,0.141)
+ ..(2.16,0.031)
+ ..controls(1.309,-0.078)and(0.625,-0.19)
+ ..(0.109,-0.305)
+ ..controls(0.365,0.711)and(0.555,1.755)
+ ..(0.68,2.828)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((6u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(83, 10.195FX#,if true_size: 11.227FY#, 3.805FY#
+ else: cap_height#,desc_depth# fi);
+ "Hebrew letter" & tmp_string;
+ fill((1.641,7.773)
+ ..controls(1.224,8.008)and(0.935,8.25)
+ ..(0.773,8.5)
+ ..controls(0.612,8.75)and(0.531,9.078)
+ ..(0.531,9.484)
+ ..controls(0.531,9.917)and(0.609,10.315)
+ ..(0.766,10.68)
+ ..controls(0.922,11.044)and(1.091,11.227)
+ ..(1.273,11.227)
+ ..controls(1.32,11.227)and(1.355,11.214)
+ ..(1.379,11.188)
+ ..controls(1.402,11.161)and(1.461,11.068)
+ ..(1.555,10.906)
+ ..controls(1.669,10.74)and(1.872,10.659)
+ ..(2.164,10.664)
+ --(7.039,10.664)
+ ..controls(7.82,10.706)and(8.305,10.229)
+ ..(8.492,9.234)
+ ..controls(8.674,8.177)and(8.792,5.375)
+ ..(8.844,0.828)
+ --(8.922,-1.703)
+ ..controls(8.922,-2.344)and(8.833,-2.828)
+ ..(8.656,-3.156)
+ ..controls(8.427,-3.589)and(8.151,-3.805)
+ ..(7.828,-3.805)
+ ..controls(7.682,-3.805)and(7.563,-3.727)
+ ..(7.469,-3.57)
+ ..controls(7.375,-3.414)and(7.328,-3.216)
+ ..(7.328,-2.977)
+ ..controls(7.328,-2.919)and(7.344,-2.727)
+ ..(7.375,-2.398)
+ --(7.984,6.617)
+ ..controls(8,6.883)and(8.008,7.055)
+ ..(8.008,7.133)
+ ..controls(8.008,7.398)and(7.951,7.572)
+ ..(7.836,7.652)
+ ..controls(7.721,7.733)and(7.469,7.773)
+ ..(7.078,7.773)
+ --(3.75,7.773)
+ ..controls(3.13,7.773)and(2.711,7.734)
+ ..(2.492,7.656)
+ ..controls(2.19,7.547)and(2.039,7.339)
+ ..(2.039,7.031)
+ ..controls(2.039,6.833)and(2.109,6.701)
+ ..(2.25,6.633)
+ ..controls(2.391,6.565)and(2.669,6.531)
+ ..(3.086,6.531)
+ ..controls(3.154,6.531)and(3.232,6.534)
+ ..(3.32,6.539)
+ ..controls(3.56,6.544)and(3.742,6.547)
+ ..(3.867,6.547)
+ ..controls(4.279,6.547)and(4.557,6.393)
+ ..(4.703,6.086)
+ ..controls(4.807,5.867)and(4.859,5.633)
+ ..(4.859,5.383)
+ ..controls(4.859,5.112)and(4.798,4.866)
+ ..(4.676,4.645)
+ ..controls(4.553,4.423)and(4.393,4.268)
+ ..(4.195,4.18)
+ ..controls(3.961,4.081)and(3.589,4.031)
+ ..(3.078,4.031)
+ ..controls(2.964,4.031)and(2.852,4.034)
+ ..(2.742,4.039)
+ ..controls(2.404,4.055)and(2.198,4.063)
+ ..(2.125,4.063)
+ ..controls(1.901,4.063)and(1.732,4.035)
+ ..(1.617,3.98)
+ ..controls(1.503,3.926)and(1.352,3.802)
+ ..(1.164,3.609)
+ ..controls(1.076,3.526)and(0.971,3.484)
+ ..(0.852,3.484)
+ ..controls(0.669,3.484)and(0.578,3.57)
+ ..(0.578,3.742)
+ ..controls(0.578,3.81)and(0.591,3.893)
+ ..(0.617,3.992)
+ ..controls(0.69,4.299)and(0.727,4.583)
+ ..(0.727,4.844)
+ ..controls(0.727,4.885)and(0.724,4.938)
+ ..(0.719,5)
+ ..controls(0.703,5.307)and(0.695,5.482)
+ ..(0.695,5.523)
+ ..controls(0.695,5.732)and(0.733,5.974)
+ ..(0.809,6.25)
+ ..controls(0.884,6.526)and(0.977,6.758)
+ ..(1.086,6.945)
+ ..controls(1.122,7.008)and(1.307,7.284)
+ ..(1.641,7.773)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((7.1u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(84, 10.594FX#,if true_size: 11.258FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.68,0)
+ --(1.141,0)
+ ..controls(0.979,0)and(0.865,0.03)
+ ..(0.797,0.09)
+ ..controls(0.729,0.15)and(0.695,0.255)
+ ..(0.695,0.406)
+ ..controls(0.695,0.578)and(0.734,0.784)
+ ..(0.813,1.023)
+ --(1.336,2.648)
+ --(8.961,2.648)
+ ..controls(8.997,3.289)and(9.016,3.763)
+ ..(9.016,4.07)
+ ..controls(9.016,5.852)and(8.523,7.029)
+ ..(7.539,7.602)
+ ..controls(7.18,7.815)and(6.617,7.935)
+ ..(5.852,7.961)
+ ..controls(5.753,7.966)and(5.198,7.971)
+ ..(4.188,7.977)
+ --(3.023,7.977)
+ ..controls(2.711,7.659)and(2.555,7.341)
+ ..(2.555,7.023)
+ ..controls(2.555,6.768)and(2.786,6.641)
+ ..(3.25,6.641)
+ --(3.969,6.641)
+ ..controls(4.328,6.641)and(4.607,6.591)
+ ..(4.805,6.492)
+ ..controls(5.159,6.315)and(5.336,5.964)
+ ..(5.336,5.438)
+ ..controls(5.336,4.651)and(4.935,4.258)
+ ..(4.133,4.258)
+ --(3.461,4.273)
+ --(2.617,4.273)
+ ..controls(2.331,4.273)and(2.105,4.221)
+ ..(1.941,4.117)
+ ..controls(1.777,4.013)and(1.576,3.797)
+ ..(1.336,3.469)
+ --(0.977,3.688)
+ ..controls(0.997,3.771)and(1.042,3.932)
+ ..(1.109,4.172)
+ ..controls(1.141,4.297)and(1.156,4.451)
+ ..(1.156,4.633)
+ ..controls(1.156,4.742)and(1.154,4.859)
+ ..(1.148,4.984)
+ ..controls(1.148,5.083)and(1.148,5.182)
+ ..(1.148,5.281)
+ ..controls(1.148,5.75)and(1.217,6.158)
+ ..(1.355,6.504)
+ ..controls(1.493,6.85)and(1.758,7.276)
+ ..(2.148,7.781)
+ ..controls(2.19,7.833)and(2.211,7.88)
+ ..(2.211,7.922)
+ ..controls(2.211,7.969)and(2.141,8.01)
+ ..(2,8.047)
+ ..controls(1.771,8.109)and(1.605,8.177)
+ ..(1.504,8.25)
+ ..controls(1.402,8.323)and(1.313,8.44)
+ ..(1.234,8.602)
+ ..controls(1.089,8.893)and(1.016,9.214)
+ ..(1.016,9.563)
+ ..controls(1.016,9.995)and(1.109,10.396)
+ ..(1.297,10.766)
+ ..controls(1.365,10.901)and(1.451,11.017)
+ ..(1.555,11.113)
+ ..controls(1.659,11.21)and(1.75,11.258)
+ ..(1.828,11.258)
+ ..controls(1.901,11.258)and(1.948,11.208)
+ ..(1.969,11.109)
+ ..controls(2,10.969)and(2.066,10.859)
+ ..(2.168,10.781)
+ ..controls(2.27,10.703)and(2.391,10.664)
+ ..(2.531,10.664)
+ --(4.563,10.664)
+ ..controls(5.594,10.664)and(6.391,10.607)
+ ..(6.953,10.492)
+ ..controls(7.88,10.31)and(8.557,9.823)
+ ..(8.984,9.031)
+ ..controls(9.411,8.24)and(9.625,7.083)
+ ..(9.625,5.563)
+ ..controls(9.625,5.37)and(9.612,4.432)
+ ..(9.586,2.75)
+ --(9.578,2.156)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((8u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(85, 10.383FX#,if true_size: 11.273FY#, 3.641FY#
+ else: cap_height#,desc_depth# fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.438,6.703)
+ ..controls(8.26,7.182)and(8.018,7.422)
+ ..(7.711,7.422)
+ ..controls(7.477,7.422)and(7.12,7.104)
+ ..(6.641,6.469)
+ ..controls(6.161,5.833)and(5.68,5.036)
+ ..(5.195,4.078)
+ ..controls(4.831,3.359)and(4.581,2.807)
+ ..(4.445,2.422)
+ ..controls(4.31,2.036)and(4.242,1.688)
+ ..(4.242,1.375)
+ ..controls(4.242,1.219)and(4.253,1.081)
+ ..(4.273,0.961)
+ ..controls(4.294,0.841)and(4.365,0.503)
+ ..(4.484,-0.055)
+ ..controls(4.536,-0.284)and(4.563,-0.617)
+ ..(4.563,-1.055)
+ ..controls(4.563,-1.997)and(4.398,-2.706)
+ ..(4.07,-3.18)
+ ..controls(3.852,-3.487)and(3.602,-3.641)
+ ..(3.32,-3.641)
+ ..controls(3.169,-3.641)and(3.065,-3.591)
+ ..(3.008,-3.492)
+ ..controls(2.961,-3.404)and(2.938,-3.034)
+ ..(2.938,-2.383)
+ --(2.938,2.906)
+ ..controls(2.938,4.01)and(2.973,4.842)
+ ..(3.043,5.402)
+ ..controls(3.113,5.962)and(3.253,6.513)
+ ..(3.461,7.055)
+ ..controls(3.482,7.107)and(3.492,7.159)
+ ..(3.492,7.211)
+ ..controls(3.492,7.383)and(3.242,7.516)
+ ..(2.742,7.609)
+ ..controls(2.18,7.719)and(1.729,7.927)
+ ..(1.391,8.234)
+ ..controls(1.031,8.557)and(0.852,8.969)
+ ..(0.852,9.469)
+ ..controls(0.852,9.885)and(1.008,10.297)
+ ..(1.32,10.703)
+ ..controls(1.581,11.036)and(1.807,11.203)
+ ..(2,11.203)
+ ..controls(2.104,11.203)and(2.185,11.13)
+ ..(2.242,10.984)
+ ..controls(2.305,10.844)and(2.378,10.754)
+ ..(2.461,10.715)
+ ..controls(2.544,10.676)and(2.81,10.607)
+ ..(3.258,10.508)
+ ..controls(3.654,10.424)and(4.021,10.26)
+ ..(4.359,10.016)
+ ..controls(4.656,9.807)and(4.805,9.518)
+ ..(4.805,9.148)
+ ..controls(4.805,8.591)and(4.617,7.974)
+ ..(4.242,7.297)
+ ..controls(4.039,6.927)and(3.908,6.629)
+ ..(3.848,6.402)
+ ..controls(3.788,6.176)and(3.758,5.852)
+ ..(3.758,5.43)
+ ..controls(3.758,4.654)and(3.865,4.047)
+ ..(4.078,3.609)
+ ..controls(4.839,4.974)and(5.346,5.853)
+ ..(5.602,6.246)
+ ..controls(5.857,6.639)and(6.188,7.049)
+ ..(6.594,7.477)
+ ..controls(6.771,7.664)and(6.859,7.786)
+ ..(6.859,7.844)
+ ..controls(6.859,7.891)and(6.839,7.935)
+ ..(6.797,7.977)
+ ..controls(6.755,8.018)and(6.607,8.141)
+ ..(6.352,8.344)
+ ..controls(6.18,8.479)and(6.036,8.663)
+ ..(5.922,8.895)
+ ..controls(5.807,9.126)and(5.75,9.349)
+ ..(5.75,9.563)
+ ..controls(5.75,9.969)and(5.948,10.393)
+ ..(6.344,10.836)
+ ..controls(6.609,11.128)and(6.87,11.273)
+ ..(7.125,11.273)
+ ..controls(7.193,11.273)and(7.245,11.254)
+ ..(7.281,11.215)
+ ..controls(7.318,11.176)and(7.357,11.089)
+ ..(7.398,10.953)
+ ..controls(7.456,10.802)and(7.578,10.682)
+ ..(7.766,10.594)
+ ..controls(8.411,10.276)and(8.891,9.987)
+ ..(9.203,9.727)
+ ..controls(9.563,9.424)and(9.742,9.07)
+ ..(9.742,8.664)
+ ..controls(9.742,8.31)and(9.607,7.917)
+ ..(9.336,7.484)
+ ..controls(9.154,7.193)and(8.854,6.932)
+ ..(8.438,6.703)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((1.75u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(86, 9.82FX#,if true_size: 11.297FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((8.164,0)
+ --(0.211,0)
+ --(1.148,2.781)
+ --(6.133,2.781)
+ ..controls(6.44,2.781)and(6.63,2.792)
+ ..(6.703,2.813)
+ ..controls(6.875,2.87)and(6.961,2.966)
+ ..(6.961,3.102)
+ ..controls(6.961,3.227)and(6.833,3.371)
+ ..(6.578,3.535)
+ ..controls(6.323,3.699)and(5.901,3.911)
+ ..(5.313,4.172)
+ ..controls(4.469,4.536)and(3.969,4.755)
+ ..(3.813,4.828)
+ ..controls(3.656,4.901)and(3.526,4.982)
+ ..(3.422,5.07)
+ ..controls(3.151,5.294)and(3.016,5.615)
+ ..(3.016,6.031)
+ ..controls(3.016,6.182)and(3.023,6.388)
+ ..(3.039,6.648)
+ ..controls(3.049,6.794)and(3.055,6.927)
+ ..(3.055,7.047)
+ ..controls(3.055,7.266)and(3.016,7.466)
+ ..(2.938,7.648)
+ ..controls(2.906,7.716)and(2.828,7.776)
+ ..(2.703,7.828)
+ ..controls(2.578,7.88)and(2.448,7.906)
+ ..(2.313,7.906)
+ --(1.727,7.891)
+ ..controls(1.305,7.891)and(0.997,7.945)
+ ..(0.805,8.055)
+ ..controls(0.503,8.227)and(0.352,8.656)
+ ..(0.352,9.344)
+ ..controls(0.352,9.828)and(0.43,10.25)
+ ..(0.586,10.609)
+ ..controls(0.654,10.75)and(0.747,10.887)
+ ..(0.867,11.02)
+ ..controls(0.987,11.152)and(1.081,11.219)
+ ..(1.148,11.219)
+ ..controls(1.201,11.219)and(1.234,11.202)
+ ..(1.25,11.168)
+ ..controls(1.266,11.134)and(1.292,11.016)
+ ..(1.328,10.813)
+ ..controls(1.349,10.693)and(1.414,10.633)
+ ..(1.523,10.633)
+ ..controls(1.56,10.633)and(1.615,10.638)
+ ..(1.688,10.648)
+ ..controls(2.031,10.695)and(2.279,10.719)
+ ..(2.43,10.719)
+ ..controls(2.799,10.719)and(3.115,10.608)
+ ..(3.375,10.387)
+ ..controls(3.635,10.165)and(3.766,9.898)
+ ..(3.766,9.586)
+ --(3.758,9.195)
+ --(3.758,7.031)
+ ..controls(3.758,6.755)and(3.893,6.513)
+ ..(4.164,6.305)
+ ..controls(4.435,6.096)and(4.919,5.867)
+ ..(5.617,5.617)
+ ..controls(5.81,6.232)and(5.953,6.643)
+ ..(6.047,6.852)
+ ..controls(6.318,7.482)and(6.479,7.859)
+ ..(6.531,7.984)
+ --(5.938,8.328)
+ ..controls(5.568,8.547)and(5.383,8.875)
+ ..(5.383,9.313)
+ ..controls(5.383,10)and(5.677,10.661)
+ ..(6.266,11.297)
+ ..controls(6.557,10.938)and(7.013,10.685)
+ ..(7.633,10.539)
+ ..controls(7.945,10.471)and(8.155,10.415)
+ ..(8.262,10.371)
+ ..controls(8.368,10.327)and(8.477,10.255)
+ ..(8.586,10.156)
+ ..controls(8.857,9.896)and(8.992,9.518)
+ ..(8.992,9.023)
+ ..controls(8.992,8.654)and(8.917,8.286)
+ ..(8.766,7.922)
+ ..controls(8.615,7.557)and(8.414,7.26)
+ ..(8.164,7.031)
+ ..controls(7.966,7.224)and(7.807,7.361)
+ ..(7.688,7.441)
+ ..controls(7.568,7.522)and(7.372,7.628)
+ ..(7.102,7.758)
+ ..controls(6.773,7.148)and(6.477,6.357)
+ ..(6.211,5.383)
+ ..controls(6.784,5.18)and(7.326,4.935)
+ ..(7.836,4.648)
+ ..controls(8.289,4.393)and(8.608,4.146)
+ ..(8.793,3.906)
+ ..controls(8.978,3.667)and(9.07,3.38)
+ ..(9.07,3.047)
+ ..controls(9.07,2.844)and(9.029,2.559)
+ ..(8.945,2.191)
+ ..controls(8.862,1.824)and(8.766,1.505)
+ ..(8.656,1.234)
+ ..controls(8.385,0.578)and(8.221,0.167)
+ ..(8.164,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((1.75u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(87, 10.133FX#,if true_size: 11.18FY#, 3.977FY#
+ else: cap_height#,desc_depth# fi);
+ "Hebrew letter" & tmp_string;
+ fill((2.672,10.563)
+ --(6.625,10.563)
+ ..controls(6.979,10.563)and(7.232,10.548)
+ ..(7.383,10.52)
+ ..controls(7.534,10.491)and(7.698,10.43)
+ ..(7.875,10.336)
+ ..controls(8.536,9.971)and(8.964,9.242)
+ ..(9.156,8.148)
+ ..controls(9.292,7.404)and(9.359,6.633)
+ ..(9.359,5.836)
+ ..controls(9.359,4.549)and(9.042,3.565)
+ ..(8.406,2.883)
+ ..controls(8,2.44)and(7.357,2.083)
+ ..(6.477,1.813)
+ ..controls(5.831,1.615)and(5.365,1.456)
+ ..(5.078,1.336)
+ ..controls(4.792,1.216)and(4.549,1.081)
+ ..(4.352,0.93)
+ ..controls(4.081,0.716)and(3.896,0.523)
+ ..(3.797,0.352)
+ ..controls(3.672,0.148)and(3.586,0.023)
+ ..(3.539,-0.023)
+ ..controls(3.492,-0.07)and(3.43,-0.094)
+ ..(3.352,-0.094)
+ ..controls(3.242,-0.094)and(3.155,-0.042)
+ ..(3.09,0.063)
+ ..controls(3.025,0.167)and(2.992,0.302)
+ ..(2.992,0.469)
+ ..controls(2.992,1.042)and(3.25,1.578)
+ ..(3.766,2.078)
+ ..controls(4.188,2.484)and(4.924,2.852)
+ ..(5.977,3.18)
+ ..controls(6.669,3.398)and(7.189,3.596)
+ ..(7.535,3.773)
+ ..controls(7.882,3.951)and(8.143,4.154)
+ ..(8.32,4.383)
+ ..controls(8.617,4.773)and(8.766,5.307)
+ ..(8.766,5.984)
+ ..controls(8.766,6.745)and(8.583,7.279)
+ ..(8.219,7.586)
+ ..controls(7.99,7.773)and(7.609,7.867)
+ ..(7.078,7.867)
+ --(2.5,7.867)
+ ..controls(2.224,7.867)and(2.027,7.88)
+ ..(1.91,7.906)
+ ..controls(1.793,7.932)and(1.669,7.987)
+ ..(1.539,8.07)
+ ..controls(1.159,8.32)and(0.969,8.776)
+ ..(0.969,9.438)
+ ..controls(0.969,9.99)and(1.107,10.43)
+ ..(1.383,10.758)
+ ..controls(1.617,11.039)and(1.799,11.18)
+ ..(1.93,11.18)
+ ..controls(1.982,11.18)and(2.017,11.165)
+ ..(2.035,11.137)
+ ..controls(2.053,11.108)and(2.081,11.021)
+ ..(2.117,10.875)
+ ..controls(2.169,10.667)and(2.354,10.563)
+ ..(2.672,10.563)
+ --cycle) xscaled FX yscaled FY;
+ fill((2.352,6.258)
+ ..controls(2.513,6.237)and(2.594,6.151)
+ ..(2.594,6)
+ ..controls(2.594,5.922)and(2.579,5.863)
+ ..(2.551,5.824)
+ ..controls(2.522,5.785)and(2.43,5.703)
+ ..(2.273,5.578)
+ ..controls(1.966,5.323)and(1.813,4.87)
+ ..(1.813,4.219)
+ ..controls(1.813,3.854)and(1.932,2.815)
+ ..(2.172,1.102)
+ ..controls(2.302,0.216)and(2.378,-0.327)
+ ..(2.398,-0.527)
+ ..controls(2.419,-0.728)and(2.43,-0.99)
+ ..(2.43,-1.313)
+ ..controls(2.43,-2.135)and(2.281,-2.828)
+ ..(1.984,-3.391)
+ ..controls(1.781,-3.781)and(1.56,-3.977)
+ ..(1.32,-3.977)
+ ..controls(1.107,-3.977)and(1,-3.82)
+ ..(1,-3.508)
+ ..controls(1,-3.393)and(1.013,-3.143)
+ ..(1.039,-2.758)
+ ..controls(1.076,-2.216)and(1.094,-1.557)
+ ..(1.094,-0.781)
+ ..controls(1.094,-0.422)and(1.063,0.393)
+ ..(1,1.664)
+ ..controls(0.974,2.237)and(0.961,2.747)
+ ..(0.961,3.195)
+ ..controls(0.961,4.055)and(1.065,4.732)
+ ..(1.273,5.227)
+ ..controls(1.409,5.539)and(1.607,5.813)
+ ..(1.867,6.047)
+ ..controls(2.044,6.203)and(2.206,6.273)
+ ..(2.352,6.258)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5.8u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(88, 9.461FX#,if true_size: 11.125FY#, 0.016FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((1.484,10.523)
+ --(5.734,10.523)
+ ..controls(6.38,10.529)and(6.872,10.419)
+ ..(7.211,10.195)
+ ..controls(7.685,9.867)and(7.956,9.299)
+ ..(8.023,8.492)
+ ..controls(8.044,8.128)and(8.089,6.862)
+ ..(8.156,4.695)
+ --(8.18,3.742)
+ ..controls(8.19,3.404)and(8.203,3.042)
+ ..(8.219,2.656)
+ ..controls(8.234,2.349)and(8.242,2.125)
+ ..(8.242,1.984)
+ ..controls(8.242,1.417)and(8.147,0.941)
+ ..(7.957,0.559)
+ ..controls(7.767,0.176)and(7.531,-0.016)
+ ..(7.25,-0.016)
+ ..controls(7.151,-0.016)and(7.085,0.008)
+ ..(7.051,0.055)
+ ..controls(7.017,0.102)and(7.003,0.19)
+ ..(7.008,0.32)
+ --(7.016,0.523)
+ --(7.445,5.438)
+ ..controls(7.492,5.969)and(7.516,6.38)
+ ..(7.516,6.672)
+ ..controls(7.516,7.125)and(7.365,7.44)
+ ..(7.063,7.617)
+ ..controls(6.917,7.706)and(6.635,7.75)
+ ..(6.219,7.75)
+ --(1.859,7.75)
+ ..controls(1.344,7.75)and(0.964,7.818)
+ ..(0.719,7.953)
+ ..controls(0.24,8.224)and(0,8.768)
+ ..(0,9.586)
+ ..controls(0,10.065)and(0.094,10.44)
+ ..(0.281,10.711)
+ ..controls(0.349,10.81)and(0.436,10.904)
+ ..(0.543,10.992)
+ ..controls(0.65,11.081)and(0.729,11.125)
+ ..(0.781,11.125)
+ ..controls(0.87,11.125)and(0.94,11.016)
+ ..(0.992,10.797)
+ ..controls(1.018,10.693)and(1.066,10.621)
+ ..(1.137,10.582)
+ ..controls(1.207,10.543)and(1.323,10.523)
+ ..(1.484,10.523)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((5u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(89, 10.594FX#,if true_size: 11.086FY#, 0FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((7.586,0)
+ --(1.695,0)
+ ..controls(1.612,0.396)and(1.51,0.971)
+ ..(1.391,1.727)
+ ..controls(1.318,2.237)and(1.255,2.633)
+ ..(1.203,2.914)
+ ..controls(1.057,3.727)and(0.984,4.339)
+ ..(0.984,4.75)
+ ..controls(0.984,5.271)and(1.073,5.839)
+ ..(1.25,6.453)
+ ..controls(1.396,6.948)and(1.503,7.258)
+ ..(1.57,7.383)
+ ..controls(1.602,7.44)and(1.617,7.484)
+ ..(1.617,7.516)
+ ..controls(1.617,7.557)and(1.477,7.706)
+ ..(1.195,7.961)
+ ..controls(0.966,8.174)and(0.852,8.534)
+ ..(0.852,9.039)
+ ..controls(0.852,9.68)and(0.958,10.214)
+ ..(1.172,10.641)
+ ..controls(1.318,10.938)and(1.495,11.086)
+ ..(1.703,11.086)
+ ..controls(1.771,11.086)and(1.82,11.042)
+ ..(1.852,10.953)
+ ..controls(1.909,10.755)and(2.128,10.586)
+ ..(2.508,10.445)
+ ..controls(2.852,10.331)and(3.094,10.208)
+ ..(3.234,10.078)
+ ..controls(3.521,9.823)and(3.664,9.479)
+ ..(3.664,9.047)
+ ..controls(3.664,8.589)and(3.536,8.076)
+ ..(3.281,7.508)
+ ..controls(3.182,7.294)and(3.099,7.188)
+ ..(3.031,7.188)
+ ..controls(2.979,7.188)and(2.878,7.227)
+ ..(2.727,7.305)
+ ..controls(2.633,7.352)and(2.536,7.375)
+ ..(2.438,7.375)
+ ..controls(2.292,7.375)and(2.182,7.305)
+ ..(2.109,7.164)
+ ..controls(1.979,6.935)and(1.868,6.633)
+ ..(1.777,6.258)
+ ..controls(1.686,5.883)and(1.641,5.547)
+ ..(1.641,5.25)
+ ..controls(1.641,4.99)and(1.66,4.777)
+ ..(1.699,4.613)
+ ..controls(1.738,4.449)and(1.859,4.068)
+ ..(2.063,3.469)
+ ..controls(2.224,2.995)and(2.346,2.758)
+ ..(2.43,2.758)
+ ..controls(2.466,2.758)and(2.604,2.868)
+ ..(2.844,3.09)
+ ..controls(3.083,3.311)and(3.268,3.497)
+ ..(3.398,3.648)
+ ..controls(3.664,3.961)and(3.93,4.4)
+ ..(4.195,4.965)
+ ..controls(4.461,5.53)and(4.656,6.073)
+ ..(4.781,6.594)
+ ..controls(4.891,7.047)and(4.948,7.286)
+ ..(4.953,7.313)
+ ..controls(4.974,7.375)and(4.984,7.422)
+ ..(4.984,7.453)
+ ..controls(4.984,7.516)and(4.964,7.57)
+ ..(4.922,7.617)
+ ..controls(4.88,7.664)and(4.734,7.797)
+ ..(4.484,8.016)
+ ..controls(4.266,8.208)and(4.156,8.513)
+ ..(4.156,8.93)
+ ..controls(4.156,9.534)and(4.273,10.052)
+ ..(4.508,10.484)
+ ..controls(4.576,10.615)and(4.686,10.746)
+ ..(4.84,10.879)
+ ..controls(4.993,11.012)and(5.109,11.078)
+ ..(5.188,11.078)
+ ..controls(5.271,11.078)and(5.352,10.951)
+ ..(5.43,10.695)
+ ..controls(5.477,10.534)and(5.667,10.417)
+ ..(6,10.344)
+ ..controls(6.651,10.219)and(6.977,9.724)
+ ..(6.977,8.859)
+ ..controls(6.977,8.536)and(6.893,8.18)
+ ..(6.727,7.789)
+ ..controls(6.56,7.393)and(6.417,7.195)
+ ..(6.297,7.195)
+ ..controls(6.271,7.195)and(6.19,7.229)
+ ..(6.055,7.297)
+ ..controls(5.898,7.375)and(5.792,7.414)
+ ..(5.734,7.414)
+ ..controls(5.625,7.414)and(5.542,7.31)
+ ..(5.484,7.102)
+ ..controls(5.234,6.138)and(4.956,5.355)
+ ..(4.648,4.754)
+ ..controls(4.341,4.152)and(3.88,3.487)
+ ..(3.266,2.758)
+ --(6.992,2.758)
+ ..controls(7.169,3.253)and(7.44,3.837)
+ ..(7.805,4.512)
+ ..controls(8.169,5.186)and(8.529,5.768)
+ ..(8.883,6.258)
+ ..controls(9.102,6.555)and(9.211,6.781)
+ ..(9.211,6.938)
+ ..controls(9.211,7.078)and(9.146,7.193)
+ ..(9.016,7.281)
+ ..controls(8.974,7.307)and(8.781,7.375)
+ ..(8.438,7.484)
+ ..controls(8.125,7.583)and(7.887,7.76)
+ ..(7.723,8.016)
+ ..controls(7.559,8.271)and(7.477,8.589)
+ ..(7.477,8.969)
+ ..controls(7.477,9.609)and(7.633,10.154)
+ ..(7.945,10.602)
+ ..controls(8.029,10.716)and(8.141,10.823)
+ ..(8.281,10.922)
+ ..controls(8.422,11.021)and(8.534,11.07)
+ ..(8.617,11.07)
+ ..controls(8.695,11.07)and(8.734,11.042)
+ ..(8.734,10.984)
+ --(8.734,10.797)
+ ..controls(8.734,10.667)and(8.862,10.552)
+ ..(9.117,10.453)
+ ..controls(9.419,10.339)and(9.611,10.258)
+ ..(9.691,10.211)
+ ..controls(9.772,10.164)and(9.859,10.089)
+ ..(9.953,9.984)
+ ..controls(10.167,9.734)and(10.273,9.393)
+ ..(10.273,8.961)
+ ..controls(10.273,8.581)and(10.211,8.194)
+ ..(10.086,7.801)
+ ..controls(9.961,7.408)and(9.62,6.508)
+ ..(9.063,5.102)
+ ..controls(8.833,4.529)and(8.6,3.835)
+ ..(8.363,3.02)
+ ..controls(8.126,2.204)and(7.867,1.198)
+ ..(7.586,0)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((7.45u,0.5h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+beginchar(90, 11.047FX#,if true_size: 11.078FY#, 0.141FY#
+ else: cap_height#,0 fi);
+ "Hebrew letter" & tmp_string;
+ fill((2.18,7.758)
+ ..controls(1.841,7.904)and(1.615,8.068)
+ ..(1.5,8.25)
+ ..controls(1.302,8.563)and(1.203,8.958)
+ ..(1.203,9.438)
+ ..controls(1.203,9.875)and(1.31,10.271)
+ ..(1.523,10.625)
+ ..controls(1.596,10.75)and(1.689,10.857)
+ ..(1.801,10.945)
+ ..controls(1.913,11.034)and(2.01,11.078)
+ ..(2.094,11.078)
+ ..controls(2.167,11.078)and(2.216,11.061)
+ ..(2.242,11.027)
+ ..controls(2.268,10.993)and(2.294,10.914)
+ ..(2.32,10.789)
+ ..controls(2.367,10.617)and(2.51,10.534)
+ ..(2.75,10.539)
+ --(7.203,10.539)
+ ..controls(7.646,10.539)and(8.003,10.487)
+ ..(8.273,10.383)
+ ..controls(8.544,10.279)and(8.784,10.102)
+ ..(8.992,9.852)
+ ..controls(9.164,9.648)and(9.285,9.439)
+ ..(9.355,9.223)
+ ..controls(9.426,9.007)and(9.471,8.721)
+ ..(9.492,8.367)
+ --(9.82,1.531)
+ ..controls(9.82,1.49)and(9.82,1.427)
+ ..(9.82,1.344)
+ ..controls(9.82,0.896)and(9.721,0.549)
+ ..(9.523,0.305)
+ ..controls(9.32,0.055)and(9.115,-0.07)
+ ..(8.906,-0.07)
+ ..controls(8.813,-0.07)and(8.751,-0.046)
+ ..(8.723,0.004)
+ ..controls(8.694,0.053)and(8.68,0.164)
+ ..(8.68,0.336)
+ --(8.852,6.555)
+ ..controls(8.857,6.654)and(8.859,6.737)
+ ..(8.859,6.805)
+ ..controls(8.859,7.143)and(8.785,7.387)
+ ..(8.637,7.535)
+ ..controls(8.488,7.684)and(8.247,7.758)
+ ..(7.914,7.758)
+ --(3.477,7.758)
+ ..controls(3.174,7.758)and(2.992,7.75)
+ ..(2.93,7.734)
+ ..controls(2.867,7.719)and(2.802,7.669)
+ ..(2.734,7.586)
+ ..controls(2.625,7.461)and(2.522,7.25)
+ ..(2.426,6.953)
+ ..controls(2.329,6.656)and(2.281,6.406)
+ ..(2.281,6.203)
+ ..controls(2.281,5.786)and(2.521,4.992)
+ ..(3,3.82)
+ ..controls(3.365,2.924)and(3.583,2.359)
+ ..(3.656,2.125)
+ ..controls(3.729,1.891)and(3.766,1.641)
+ ..(3.766,1.375)
+ ..controls(3.766,0.932)and(3.599,0.56)
+ ..(3.266,0.258)
+ ..controls(2.974,-0.008)and(2.534,-0.141)
+ ..(1.945,-0.141)
+ ..controls(1.482,-0.141)and(1.07,-0.094)
+ ..(0.711,0)
+ ..controls(0.643,0.438)and(0.609,0.747)
+ ..(0.609,0.93)
+ ..controls(0.609,1.419)and(0.682,1.818)
+ ..(0.828,2.125)
+ ..controls(0.901,2.292)and(0.977,2.411)
+ ..(1.055,2.484)
+ ..controls(1.133,2.557)and(1.263,2.633)
+ ..(1.445,2.711)
+ ..controls(1.586,2.773)and(1.656,2.859)
+ ..(1.656,2.969)
+ ..controls(1.656,3.01)and(1.648,3.065)
+ ..(1.633,3.133)
+ ..controls(1.565,3.388)and(1.499,3.754)
+ ..(1.434,4.23)
+ ..controls(1.368,4.707)and(1.336,5.063)
+ ..(1.336,5.297)
+ ..controls(1.336,6.052)and(1.617,6.872)
+ ..(2.18,7.758)
+ --cycle) xscaled FX yscaled FY;
+ if dagesh: adjust_dot0((6.5u,0.475h),dtsz,false,false);
+ dot(0,0'); fi
+endchar;
+
+extra_endchar:=extra_endchar_save;
+turningcheck:=t;
+
+endinput.
+
+% font_slant := 0;
+% font_normal_space := 4.369 * FX#;
+% font_normal_stretch := 2.185 * FX#;
+% font_normal_shrink := 1.456 * FX#;
+% font_quad := 13.107 * FX#;
+% font_x_height := 6.711 * FX#;
+% designsize := FontSize;
+
+% end.
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf
new file mode 100644
index 00000000000..0bd25d606ca
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf
@@ -0,0 +1,416 @@
+% mathematical symbols by Anthony Phan.
+% file: mathineq.mf (inequalities)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+% Inequality signs and related things (relations).
+% Some pictures overlap the bottom. It is necessary
+% for correct centering of the whole box.
+% Spreads for cross bars have been checked.
+% Curly slants are strange: it is half way to two
+% extreme solutions...
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+use_rule1;
+make_sim_picture;
+
+if (main_name_string="less") or (main_name_string="greater"):
+
+ beginpicture(first,
+ 12u#+2appr#,v_center(spread4#+rth#));
+ pickup tiny.nib;
+ y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4;
+ rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r;
+ adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1);
+ adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1);
+ z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b];
+ z1r-z1=z1-z1l; z3r-z3=z3-z3l;
+ z2l-z1l=whatever*(z2r-z1r);
+ z2l-z3l=whatever*(z2r-z3r);
+ filldraw stroke z3e--z2e--z1e;
+ a:=2vround 0.5(spread1/abs cosd angle(z2r-z3r));
+ endpicture;
+
+ beginpicture(second,
+ 12u#+2appr#,v_center(spread4#+rth#));
+ pickup tiny.nib;
+ y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4;
+ lft x1=Appr; rt x2r=w-Appr; x1=x1r=x3=x3r;
+ adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),1);
+ adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),-1);
+ z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b];
+ z1r-z1=z1-z1l; z3r-z3=z3-z3l;
+ z2l-z1l=whatever*(z2r-z1r);
+ z2l-z3l=whatever*(z2r-z3r);
+ filldraw stroke z3e--z2e--z1e;
+ endpicture;
+
+else:
+
+ beginpicture(first,
+ 12u#+2appr#,v_center(spread4#+rth#));
+ pickup tiny.nib; pos2(rth,90); pos4(rth,90);
+ lft x2=Appr; rt x1r=rt x3l=w-Appr; x4=0.50[x2,x1r];
+ y2=y4=math_axis; y3l-y2r=y2l-y1r=0.5spread4; y1r=y1l; y3r=y3l;
+ x1r-x1l=diag_width(rth-tiny,z4r-z1r);
+ x3l-x3r=diag_width(rth-tiny,z4l-z3l);
+ filldraw stroke z2e{right}...z1e{z1r-z4r};
+ filldraw stroke z2e{right}...z3e{z3l-z4l};
+ a:=spread1;
+ endpicture;
+
+ beginpicture(second,
+ 12u#+2appr#,v_center(spread4#+rth#));
+ pickup tiny.nib; pos2(rth,-90); pos4(rth,-90);
+ rt x2=w-Appr; lft x1l=lft x3r=Appr; x4=0.50[x2,x1l];
+ y2=y4=math_axis; y3r-y2l=y2r-y1l=0.5spread4; y1r=y1l; y3r=y3l;
+ x1l-x1r=-diag_width(rth-tiny,z4l-z1l);
+ x3r-x3l=-diag_width(rth-tiny,z4r-z3r);
+ filldraw stroke z2e{left}...z1e{z1l-z4l};
+ filldraw stroke z2e{left}...z3e{z3r-z4r};
+ endpicture;
+fi
+
+if (main_name_string="greater") or (main_name_string="successor"):
+ tmp_picture:=first_picture; first_picture:=second_picture;
+ second_picture:=tmp_picture;
+fi
+
+%
+% Let's go
+%
+
+beginchar(main_name_with(),
+ 12u#+2appr#,v_center(spread4#+rth#));
+ main_name_string&" sign";
+ currentpicture:=first_picture;
+endchar;
+
+beginchar(main_name_with(_not),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not " & main_name_string&" sign";
+ currentpicture:=first_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_slant),
+ 12u#+2appr#,v_center(spread4#+spread1#+rth#));
+ main_name_string&"-slant sign";
+ currentpicture:=first_picture shifted(0,0.5a);
+ save b;
+ pickup tiny.nib;
+ if (main_name_string="less") or (main_name_string="greater"):
+ y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr;
+ b=(rth-tiny)/cosd angle(x2-x1,0.5spread4);
+ penpos1(b,90); penpos2(b,90);
+ if (main_name_string="less"): y1=y0-0.5a; y1-y2=0.5spread4;
+ else: y2=y0-0.5a; y1-y2=-0.5spread4; fi
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ elseif main_name_string="predecessor":
+ pos2(rth,-90); pos3(rth,-90);
+ lft x2=Appr; y2=y3=math_axis-0.5spread1;
+ rt x1l=rt x1=w-Appr; y1=y2r-0.5spread4;
+ x3=0.50[x2,x1l];
+ y1l=y1r=y2r-vround(0.5spread4
+ *(0.5[1,1/abs cosd angle(z3l-z1)]));
+ x1l-x1r=diag_width(rth-tiny,z3l-z1l);
+ filldraw stroke z1e{z3l-z1l}...z2e{left};
+ penlabels(1,2,3);
+ else:
+ pos2(rth,-90); pos3(rth,-90);
+ rt x2=w-Appr; y2=y3=math_axis-0.5spread1;
+ lft x1l=lft x1=Appr; y1=y2r-0.5spread4;
+ x3=0.50[x2,x1l];
+ y1l=y1r=y2r-vround(0.5spread4
+ *(0.5[1,1/abs cosd angle(z3l-z1)]));
+ x1l-x1r=-diag_width(rth-tiny,z3l-z1l);
+ filldraw stroke z1e{z3l-z1l}...z2e{right};
+ penlabels(1,2,3);
+ fi
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_slant),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&"-slant sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eq),
+ 12u#+2appr#,v_center(spread4#+spread0#+rth#));
+ main_name_string&"-bar sign";
+ currentpicture:=first_picture shifted(0,0.5spread0);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); rt x2=w-Appr; lft x1=Appr;
+ y1=y2=math_axis-0.5(spread4+spread0);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_eq),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&"-bar sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eq_not),
+ 12u#+2appr#,v_center(spread4#+spread0#+rth#));
+ main_name_string&"-not bar sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,1.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 3.5u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eq_varnot),
+ 12u#+2appr#,v_center(spread4#+spread0#+rth#));
+ main_name_string&"-varnot bar sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1l,2l,y0,1.5spread1-0.5rth);
+ pos1(rth,0); pos2(rth,0);
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eqq),
+ 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#));
+ main_name_string&" equal sign";
+ currentpicture:=first_picture shifted(0,0.5(spread1+spread0));
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ rt x2=rt x4=w-Appr; lft x1=lft x3=Appr;
+ y1=y2=math_axis-0.5(spread4-spread1+spread0);
+ y3=y4=y1-spread1;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_eqq),
+ 12u#+2appr#,v_center(max(asc_height#+asc_depth#,
+ spread4#+spread1#+spread0#+rth#)));
+ "not "&main_name_string&" equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eqq_not),
+ 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#));
+ main_name_string&" but not equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,2.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.75u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eqq_varnot),
+ 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#));
+ "variant "&main_name_string&" but not equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1l,2l,y0,2.5spread1-0.5rth);
+ pos1(rth,0); pos2(rth,0);
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_upperslant),
+ 12u#+2appr#,v_center(spread4#+spread1#+rth#));
+ main_name_string &"with upper slant sign";
+ currentpicture:=first_picture shifted(0,-0.5a);
+ save b;
+ pickup tiny.nib;
+ if (main_name_string="less") or (main_name_string="greater"):
+ y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr;
+ b=(rth-tiny)/cosd angle(x2-x1,0.5spread4);
+ penpos1(b,90); penpos2(b,90);
+ if (main_name_string="less"): y1=y0+0.5a; y1-y2=-0.5spread4;
+ else: y2=y0+0.5a; y1-y2=0.5spread4; fi
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ elseif main_name_string="predecessor":
+ pos2(rth,90); pos3(rth,90);
+ lft x2=Appr; y2=y3=math_axis+0.5spread1;
+ rt x1l=rt x1=w-Appr; y1=y2r+0.5spread4;
+ x3=0.50[x2,x1l];
+ y1l=y1r=y2r+vround(0.5spread4
+ *(0.5[1,1/abs cosd angle(z3l-z1)]));
+ x1l-x1r=diag_width(rth-tiny,z3l-z1l);
+ filldraw stroke z1e{z3l-z1l}...z2e{left};
+ penlabels(1,2,3);
+ else:
+ pos2(rth,90); pos3(rth,90);
+ rt x2=w-Appr; y2=y3=math_axis+0.5spread1;
+ lft x1l=lft x1=Appr; y1=y2r+0.5spread4;
+ x3=0.50[x2,x1l];
+ y1l=y1r=y2r+vround(0.5spread4
+ *(0.5[1,1/abs cosd angle(z3l-z1)]));
+ x1l-x1r=-diag_width(rth-tiny,z3l-z1l);
+ filldraw stroke z1e{z3l-z1l}...z2e{right};
+ penlabels(1,2,3);
+ fi
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_upperslant),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not " & main_name_string&" upper slant sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_opposite),
+ 12u#+2appr#,v_center(1.5spread4#+spread1#+rth#));
+ main_name_string&" and opposite sign";
+ currentpicture:=(first_picture
+ shifted(0,vround(0.5a+0.25spread4)))
+ +(second_picture
+ shifted(0,-vround(0.5a+0.25spread4)));
+endchar;
+
+beginchar(main_name_with(_eq_opposite),12u#+2appr#,
+ v_center(2spread4#+2spread0#+rth#));
+ main_name_string&" bar opposite sign";
+ currentpicture:=(first_picture
+ shifted(0,vround(spread0+0.5spread4)))
+ +(second_picture
+ shifted(0,-vround(spread0+0.5spread4)));
+ pickup tiny.nib; pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eqq_opposite),12u#+2appr#,
+ v_center(2spread4#+2spread0#+spread1#+rth#));
+ main_name_string&" equal opposite sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1-y3=y2-y4=spread1; 0.5[y1,y3]=0.5[y2,y4]=math_axis;
+ currentpicture:=(first_picture
+ shifted(0,vround(spread0+0.5spread1+0.5spread4)))
+ +(second_picture
+ shifted(0,-vround(spread0+0.5spread1+0.5spread4)));
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(main_name_with(_sim),12u#+2appr#,
+ v_center(spread4#+spread1#+spread0#+rth#));
+ main_name_string&" similarity sign";
+ numeric b,c; b=vround(0.5spread1+0.5spread0);
+ c=b-vround(0.5(spread4+spread1)+spread0);
+ currentpicture:=(first_picture shifted(0,b))
+ +(sim_picture shifted(0,c));
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_sim),
+ 12u#+2appr#,v_center(max(asc_height#+asc_depth#,
+ spread4#+spread1#+spread0#+rth#)));
+ "not "&main_name_string&" similarity sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_sim_not),
+ 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#));
+ main_name_string&" but not similarity sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,2spread1);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.75u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_approx),
+ 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#));
+ main_name_string&" approximative sign";
+ numeric b,c; b=vround(spread1+0.5spread0+0.5rth);
+ c=b-vround(0.5(spread4+spread1)+spread0);
+ currentpicture:=(first_picture shifted(0,b))
+ +(sim_picture shifted(0,c))
+ +(sim_picture shifted(0,c-spread1-rth));
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_approx),
+ 12u#+2appr#,v_center(max(asc_height#+asc_depth#,
+ spread4#+2spread1#+spread0#+2rth#)));
+ main_name_string&" but not approximative sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+3spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_approx_not),
+ 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#));
+ main_name_string&" but not approximative sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread4+spread0);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,3spread1);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.5u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_dot),
+ 12u#+2appr#,v_center(spread4#+rth#));
+ main_name_string&" with dot sign";
+ currentpicture:=first_picture; pickup tiny.nib;
+ adjust_dot1((
+ if (main_name_string="less") or (main_name_string="predecessor"):
+ w-Appr-u-0.5dtsz else: Appr+u+0.5dtsz fi,
+ good.y math_axis),dtsz,false,true);
+ dot(1,1');
+endchar;
+
+
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf
new file mode 100644
index 00000000000..eba7feea358
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf
@@ -0,0 +1,673 @@
+% mathematical symbols by Anthony Phan.
+% file: mathltlk.mf (mathematical letter-like symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+use_rule1;
+
+%turningcheck:=0;
+
+%
+% A
+%
+
+beginchar(for_all,8.2u#+2appr#,cap_height#,0);
+ "Universal quantifier";
+ pickup tiny.nib;
+ lft x1l=w-rt x3r=appr-hround 0.5u; x2=x4=0.5[x1l,x3r];
+ top y1l=top y3r=h; bot y2=bot y4=-o;
+ adjust_slanted_bar(1l,2,1,2l)(0.5(rth-tiny),1);
+ adjust_slanted_bar(3r,4,3,4r)(0.5(rth-tiny),-1);
+ forsuffixes $=1,2,3,4: z$r-z$=z$-z$l; endfor
+ z5=whatever[z1r,z2r]; z5=whatever[z3l,z4l];
+ top y6r-bot y6l=top y7r-bot y7l=rth;
+ top y6r=top y7r=vround(x_height+0.5rth);
+ forsuffixes $=r,l: z6$=whatever[z1,z2]; z7$=whatever[z3,z4]; endfor
+ filldraw z1l--z2l--z4r--z3r--z3l--z5--z1r--cycle;
+ filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7);
+endchar;
+
+%
+% C
+%
+
+beginchar(complement,5.5u#+2appr#,cap_height#,0);
+ "Complement";
+ autorounded; pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ pos7(rth,0); pos8(rth,0);
+ h-bot y1=top y8+d=vround 0.25(h+d);
+ y3+0.5rth=h+o; y6-0.5rth=-d-o;
+ rt x1r=w-appr; x1=x2=x7=x8;
+ x4=x5=appr+0.5rth; x3=x6=0.5[x1,x4];
+ y2=y4=max(y3-x1+x3,1/6[y1,y3]);
+ y5=y7=min(y6+x1-x3,1/6[y8,y6]);
+ filldraw stroke z1e..z2e; filldraw stroke z7e..z8e;
+ pickup rule.nib;
+ draw z2 up_to_left z3 left_to_down
+ z4..z5 down_to_right z6 right_to_up z7;
+ penlabels(1,2,7,8); labels(3,4,5,6);
+endchar;
+
+%
+% E
+%
+
+beginchar(there_exists,6.5u#+appr#+Appr#,cap_height#,0);
+ "Existential quantifier";
+ pickup tiny.nib;
+ pos1(rth,90); pos4(rth,-90); pos5(rth,90); pos6(rth,90);
+ y2l=y1l; y2r=y1r; y3l=y4l; y3r=y4r; top y1r=h; bot y4r=0;
+ top y5r=top y6r=vround 0.5(h+rth);
+ x2r-x2l=x3r-x3l=rth-tiny;
+ lft x1=lft x4=lft x5-hround 0.15u=appr;
+ rt x2r=rt x3r=w-Appr; x6=0.5[x2l,x2r]; filldraw stroke z5e..z6e;
+ filldraw stroke z1e--z2e--z3e--z4e; penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(there_not_exists,6.5u#+appr#+Appr#,
+ min(body_height#,cap_height#+asc_depth#),asc_depth#);
+ "Not existential quantifier";
+ pickup tiny.nib;
+ pos1(rth,90); pos4(rth,-90); pos5(rth,90); pos6(rth,90);
+ y2l=y1l; y2r=y1r; y3l=y4l; y3r=y4r; top y1r=cap_height; bot y4r=0;
+ top y5r=top y6r=vround 0.5(cap_height+rth);
+ x2r-x2l=x3r-x3l=rth-tiny;
+ lft x1=lft x4=lft x5-hround 0.15u=appr;
+ rt x2r=rt x3r=w-Appr; x6=0.5[x2l,x2r]; filldraw stroke z5e..z6e;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ lft x8l-appr=w-Appr-rt x7r=hround u;
+ bot y8l=-d-eps; y7r-y1r=y4r-y8l;
+ adjust_slanted_bar(8l,7r,8r,7l)(rth-tiny,-1);
+ filldraw stroke z7e..z8e; penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+%
+% F
+%
+
+beginchar(F_inverse,6.5u#+appr#+Appr#,cap_height#,0);
+ "F inverse";
+ pickup tiny.nib;
+ pos1(rth,0); pos3(rth,-90); pos4(rth,90); pos5(rth,90);
+ y2l=y3l; y2r=y3r; top y1=h; bot y3r=0;
+ top y4r=top y5r=vround 0.5(h+rth);
+ lft x3=lft x4-hround 0.15u=appr; rt x1r=w-Appr;
+ x1r=x2r; x1l=x2l; x5=x1; filldraw stroke z4e..z5e;
+ filldraw stroke z1e--z2e--z3e; penlabels(1,2,3,4,5);
+endchar;
+
+%
+% G
+%
+
+beginchar(G_inverse,11.2u#+2appr#,cap_height#,0);
+ "G inverse (game)";
+ pickup tiny.nib;
+ top y2r=h+o; bot y4r=-o; y3=y0=0.5[y2r,y4r];
+ top y7r=vround y3;
+ rt x3r=w-appr; rt x3r-lft x0r=hround 13u;
+ x2=x4=0.5[x0r,x3r]; lft x6r=appr; x6l-x6r=rth-tiny;
+ pos0(rth,180); pos2(rth,90); pos3(rth,0); pos4(rth,-90);
+ pos7(rth,90); rt x7=hround x2;
+ path tmp_path.r,tmp_path.l; numeric t[].r,t[].l;
+ forsuffixes $=r,l: y6$=y7$;
+ tmp_path.$=z0$ up_to_right z2$ right_to_down z3$
+ down_to_left z4$ left_to_up z0$;
+ t2$=xpart(tmp_path.$ intersectiontimes (z6$..(x6$,y4$)));
+ z5$=point t2$ of tmp_path.$;
+ endfor
+ t1r=xpart(tmp_path.r intersectiontimes (z6r..(x6r,y2r)));
+ z1r=point t1r of tmp_path.r; y1=y3;
+ z1-z1r=whatever*(direction t1r of tmp_path.r rotated -90);
+ t1l=xpart(tmp_path.l intersectiontimes (z1r..z1));
+ z1l=point t1l of tmp_path.l;
+ filldraw stroke subpath (t1e,t2e) of tmp_path.e--z6e--z7e;
+ penlabels(0,1,2,3,4,5,6,7);
+endchar;
+
+%
+% O
+%
+
+beginchar(empty_set,min(15.2u#,asc_height#+asc_depth#)+2appr#,
+ asc_height#,asc_depth#);
+ "The empty set";
+ pickup rule.nib;
+ a:=w-2appr;
+ lft x3=w-rt x1=appr+hround(a/16.5)-eps;
+ lft x5=appr; rt x6=w-appr;
+ y2=good.y(math_axis+x1-0.5w)+eps;
+ y6=good.y(math_axis+x6-0.5w);
+ 0.5[y2,y4]=0.5[y5,y6]=math_axis;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ draw superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw z5..z6; labels(1,2,3,4,5,6);
+endchar;
+
+beginchar(diameter_sign,12u#+2appr#,fig_height#,0);
+ "Diameter sign";
+ pickup rule.nib;
+ top y2=top y6-o=h; bot y4=bot y5+o=-d;
+ lft x3=appr; rt x1=w-appr;
+ lft x5=appr+hround u; rt x6=w-appr-hround u;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ draw superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw z5..z6; labels(1,2,3,4,5,6);
+endchar;
+
+%
+% T
+%
+
+beginchar(top_sign,11.2u#+2appr#,cap_height#,0);
+ "Top sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ top y1=top y3r=top y4r=cap_height; bot y2=-o;
+ lft x1l=hround 0.5(w-rth);
+ x2=x1; lft x3=appr; x1-x3=x4-x1;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(not_top_sign,11.2u#+2appr#,cap_height#,0);
+ "Not top sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ top y1=top y3r=top y4r=cap_height; bot y2=-o;
+ lft x1l=hround 0.5(w-rth);
+ x2=x1; lft x3=appr; x1-x3=x4-x1;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ lft x5r=lft x5l=appr; rt x6r=rt x6l=w-appr;
+ h-top y6r=bot y5l+d=hround 0.15(h+d)-eps;
+ numeric a,b; a=rth-tiny; b=abs(z6r-z5l);
+ y5r-y5l=y6r-y6l=a/(((x6r-x5l)/b)*((b+-+a)/b)+((y6r-y5l)/b)*(a/b));
+ filldraw stroke z5e..z6e;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(bot_sign,11.2u#+2appr#,cap_height#,0);
+ "Bot sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ bot y2=bot y3l=bot y4l=0; top y1=cap_height+o;
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=appr; x1-x3=x4-x1;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(not_bot_sign,11.2u#+2appr#,cap_height#,0);
+ "Not bot sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ bot y2=bot y3l=bot y4l=0; top y1=cap_height+o;
+ lft x1l=hround 0.5(w-rth); x2=x1;
+ lft x3=appr; x1-x3=x4-x1;
+ filldraw stroke z1e..z2e; % stem
+ filldraw stroke z3e..z4e; % crossbar
+ lft x5r=lft x5l=appr; rt x6r=rt x6l=w-appr;
+ h-top y6r=bot y5l+d=hround 0.15(h+d)-eps;
+ numeric a,b; a=rth-tiny; b=abs(z6r-z5l);
+ y5r-y5l=y6r-y6l=a/(((x6r-x5l)/b)*((b+-+a)/b)+((y6r-y5l)/b)*(a/b));
+ filldraw stroke z5e..z6e;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+%
+% EPSILONS
+%
+
+% use_rule2;
+
+rth:=ceiling((1/3[rth1#,rth2#])*hppp);
+pickup pencircle scaled rth;
+math_axis:=good.x(math_axis#*hppp);
+
+beginchar(belong_to,7.5u#+2appr#,v_center(spread3#));
+ "Belong to";
+ pickup tiny.nib;
+ pos2(rth,90); pos6(rth,90); pos3(rth,90); pos4(rth,270);
+ y3=y6=math_axis;
+ y2-y3=y3-y4=vround(0.5spread3-0.5rth+0.5[oo,o])+eps;
+ top y1r=vround(y3+0.5spread3); y1r-y3=y3-y5r;
+ rt x1r=rt x5r+hround 0.6u=w-appr; x3=appr-ho+0.5rth;
+ x2r=0.5[x1r,x3]; x4=0.5[x5r,x3];
+ z1'-z1r=(z2r-z1r) xscaled 0.35; z5'-z5r=(z4r-z5r) xscaled 0.325;
+ pos1(rth,angle(z1'-z1r)-90); pos5(rth,angle(z5r-z5')-90);
+ x6=good.x x1l;
+ filldraw stroke z2e{right}...z1e{z1r-z1'};
+ filldraw stroke z5e{z5'-z5r}...z4e{left};
+ filldraw stroke z3e..z6e;
+ pickup pencircle scaled rth;
+ draw z2..controls 0.625[z2,(x3,y2)] and 0.65[z3,(x3,y2)]..
+ z3..controls 0.65[z3,(x3,y4)] and 0.625[z4,(x3,y4)]..z4;
+ penlabels(1,2,3,4,5,6,7,1',5');
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(not_belong_to,7.5u#+2appr#,asc_height#,asc_depth#);
+ "Not belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround u;
+ top y1r=h+eps; 0.5[y1r,y2l]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(var_not_belong_to,7.5u#+2appr#,asc_height#,asc_depth#);
+ "Variant not belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ top y1l=h+eps; 0.5[y1l,y2l]=math_axis;
+ lft x1l=lft x2l=vround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(belong_to_bar,7.5u#+2appr#,
+ math_axis#+0.5spread3#+spread1#+0.5rth#,
+ 0.5spread3#-math_axis#);
+ "Variant not reverse belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); top y1r=top y2r=h;
+ lft x1l=appr; rt x2=w-appr;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(rev_belong_to,7.5u#+2appr#,v_center(spread3#));
+ "Reverse belong to";
+ pickup tiny.nib;
+ pos2(rth,-90); pos6(rth,90); pos3(rth,90); pos4(rth,90);
+ y3=y6=math_axis;
+ y3-y2=y4-y3=vround(0.5spread3-0.5rth+0.5[oo,o])+eps;
+ top y5r=vround(y3+0.5spread3); y1r-y3=y3-y5r;
+ lft x1r=lft x5r-hround 0.6u=appr; x3=w-appr+ho-0.5rth;
+ x2r=0.5[x1r,x3]; x4=0.5[x5r,x3];
+ z1'-z1r=(z2r-z1r) xscaled 0.35; z5'-z5r=(z4r-z5r) xscaled 0.325;
+ pos1(rth,angle(z1'-z1r)-90); pos5(rth,angle(z5r-z5')-90);
+ x6=good.x x1l;
+ filldraw stroke z2e{left}...z1e{z1r-z1'};
+ filldraw stroke z5e{z5'-z5r}...z4e{right};
+ filldraw stroke z6e..z3e;
+ pickup pencircle scaled rth;
+ draw z2..controls 0.625[z2,(x3,y2)] and 0.65[z3,(x3,y2)]..
+ z3..controls 0.65[z3,(x3,y4)] and 0.625[z4,(x3,y4)]..z4;
+ penlabels(1,2,3,4,5,6,7,1',5');
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(not_rev_belong_to,7.5u#+2appr#,asc_height#,asc_depth#);
+ "Not reverse belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround u;
+ top y1r=h+eps; 0.5[y1r,y2l]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(var_not_rev_belong_to,7.5u#+2appr#,asc_height#,asc_depth#);
+ "Variant not reverse belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ top y1l=h; 0.5[y1l,y2l]=math_axis;
+ lft x1l=lft x2l=vround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(rev_belong_to_bar,7.5u#+2appr#,math_axis#+0.5spread3#,
+ 0.5spread3#+spread1#+0.5rth#-math_axis#);
+ "Variant not reverse belong sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); bot y1l=bot y2l=-d;
+ lft x1l=appr; rt x2=w-appr;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+%
+% U
+%
+
+use_rule1;
+
+beginchar(cap_sign,12u#+2appr#,x_height#,0);
+ "Small cap sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0);
+ y3+0.5rth=h+o; bot y1r=bot y5r=-d; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=0.5[x2,x4];
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ pickup rule.nib; autorounded;
+ draw z2 down_to_right z3 right_to_up z4;
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(cup_sign,12u#+2appr#,x_height#,0);
+ "Small cup sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0);
+ y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=0.5[x2,x4];
+ filldraw stroke z5e..z4e; filldraw stroke z2e..z1e;
+ pickup rule.nib; autorounded;
+ draw z2 down_to_right z3 right_to_up z4;
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(cup_plus,12u#+2appr#,x_height#,0);
+ "Small cup-plus sign";
+ ensure_centering_of(rth);
+ %
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180); pos3(rth,-90);
+ pos4(rth,0); pos5(rth,0);
+ y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=0.5[x2,x4];
+ filldraw stroke z5e..z4e; filldraw stroke z2e..z1e;
+ %
+ pos6(rth,0); pos7(rth,0); pos8(rth,90); pos9(rth,90);
+ top y6=h; x6=x7=0.5w;
+ numeric a;
+ a=0.5(min(lft x5r-rt x1r-1.2u,h-rth-0.6u)-rth);
+ y6-y8r=y8l-y7=vround a; x6l-x8=x9-x6r=hround a; y8=y9;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ pickup rule.nib; autorounded;
+ draw z2 down_to_right z3 right_to_up z4;
+ penlabels(1,2,3,4,5,6,7,8,9);
+endchar;
+
+beginchar(sqcap_sign,12u#+2appr#,x_height#,0);
+ "Small square cap sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos4(rth,0);
+ top y2r=top y3r=h; bot y1=bot y4=-d;
+ top y2r-bot y2l=top y3r-bot y3l=rth;
+ lft x1r=w-rt x4r=appr+hround 0.95u;
+ x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(sqcup_sign,12u#+2appr#,x_height#,0);
+ "Small square cup sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos4(rth,0);
+ bot y2r=bot y3r=-d; top y1=top y4=h;
+ top y2l-bot y2r=top y3l-bot y3r=rth;
+ lft x1r=w-rt x4r=appr+hround 0.95u;
+ x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l;
+ filldraw stroke z4e--z3e--z2e--z1e;
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(sqcup_plus,12u#+2appr#,x_height#,0);
+ "Small square cup-plus sign";
+ pickup tiny.nib;
+ ensure_centering_of(rth);
+ pos1(rth,180); pos4(rth,0);
+ bot y2r=bot y3r=-d; top y1=top y4=h;
+ top y2l-bot y2r=top y3l-bot y3r=rth;
+ lft x1r=w-rt x4r=appr+hround 0.95u;
+ x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l;
+ filldraw stroke z4e--z3e--z2e--z1e;
+ %
+ pos6(rth,0); pos7(rth,0); pos8(rth,90); pos9(rth,90);
+ top y6=h; x6=x7=0.5w;
+ numeric a;
+ a=0.5(min(lft x4l-rt x1l-1.2u,h-rth-0.6u)-rth);
+ y6-y8r=y8l-y7=vround a; x6l-x8=x9-x6r=hround a; y8=y9;
+ filldraw stroke z6e..z7e; filldraw stroke z8e..z9e;
+ penlabels(1,2,3,4,6,7,8,9);
+endchar;
+
+def tmp_program(expr stem,orientation,$)=
+ autorounded; pickup tiny.nib;
+ pos1(stem,0); pos2(stem,0);
+ pos4(stem,180); pos5(stem,180);
+ lft x1l=w-rt x5l=appr+hround $;
+ x1l=x2l; x4l=x5l; x3=0.5[x1,x5];
+ if orientation=up: pos3(stem,90);
+ top y1=top y5=h; bot y3l=-d-o;
+ y2=y4=min(0.25[y1,y3r],y3+0.5(x5-x1));
+ else: pos3(stem,-90);
+ bot y1=bot y5=-d; top y3l=h+o;
+ y2=y4=max(0.25[y1,y3r],y3-0.5(x5-x1));
+ fi
+ filldraw stroke z1e..z2e..controls (x2e,y3e) and (flatness[x3e,x2e],y3e)
+ ..z3e..controls (flatness[x3e,x4e],y3e) and (x4e,y3e)..z4e..z5e;
+ penlabels(1,2,3,4,5);
+enddef;
+
+beginchar(bold_cap,12u#+2appr#,x_height#,0);
+ "Bold cap";
+ tmp_program(stem,down,0.8u);
+endchar;
+
+beginchar(bold_cup,12u#+2appr#,x_height#,0);
+ "Bold cup";
+ tmp_program(stem,up,0.8u);
+endchar;
+
+%
+% V
+%
+
+beginchar(wedge_sign,12u#+2appr#,x_height#,0);
+ "Wedge sign";
+ pickup tiny.nib;
+ top y2r=x_height+o; bot y1r=0; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=hround((y2r-y1r)/sqrt3);
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ filldraw stroke z1e--z2e--z3e; penlabels(1,2,3);
+endchar;
+
+beginchar(vee_sign,12u#+2appr#,x_height#,0);
+ "Vee sign";
+ pickup tiny.nib;
+ bot y2r=-o; top y1r=x_height; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=-hround((y2r-y1r)/sqrt3);
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ filldraw stroke z3e--z2e--z1e; penlabels(1,2,3);
+endchar;
+
+beginchar(wedge_eq,12u#+2appr#,x_height#,0);
+ "Wedge-bar sign";
+ pickup tiny.nib;
+ top y2r=x_height; bot y1r=0; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=hround((y2r-y1r+o)/sqrt3);% see wedge sign (+o)
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ pos4(rth,90); pos5(rth,90); y4r=y5r=y2r;
+ lft x4=min(Appr,lft x1r); x5-x3r=x1r-x4;
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z4e..z5e;
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(vee_eq,12u#+2appr#,x_height#,0);
+ "Vee-bar sign";
+ pickup tiny.nib;
+ bot y2r=0; top y1r=x_height; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=-hround((y2r-y1r-o)/sqrt3);% see vee sign (-o)
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ pos4(rth,-90); pos5(rth,-90); y4r=y5r=y2r;
+ rt x4=max(w-Appr,rt x1r); x5-x3r=x1r-x4;
+ filldraw stroke z3e--z2e--z1e; filldraw stroke z4e..z5e;
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(wedge_eqq,12u#+2appr#,asc_height#,0);% strange choice
+ "Wedge-equal sign";
+ pickup tiny.nib;
+ top y2r=x_height; bot y1r=0; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=hround((y2r-y1r+o)/sqrt3);% see wedge sign (+o)
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ pos4(rth,90); pos5(rth,90); pos6(rth,90); pos7(rth,90);
+ y4r=y5r=y2r; y6=y7=y4+spread1;
+ lft x4=min(Appr,lft x1r); x5-x3r=x1r-x4; x4=x6; x5=x7;
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z4e..z5e;
+ filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7);
+endchar;
+
+beginchar(vee_eqq,12u#+2appr#,asc_height#,0);% strange choice
+ "Vee-equal sign";
+ pickup tiny.nib;
+ bot y2r=0+spread1; top y1r=x_height+spread1; y1r=y1l=y3r=y3l;
+ x2r=good.x 0.5w;
+ x3r-x2r=x2r-x1r=-hround((y2r-y1r-o)/sqrt3);% see vee sign (-o)
+ x1l-x1r=diag_width(rth-tiny,z2r-z1r);
+ x3r-x3l=diag_width(rth-tiny,z2r-z3r);
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ pos4(rth,-90); pos5(rth,-90); pos6(rth,-90); pos7(rth,-90);
+ y4r=y5r=y2r; y6=y7=y4-spread1;
+ rt x4=max(w-Appr,rt x1r); x5-x3r=x1r-x4; x4=x6; x5=x7;
+ filldraw stroke z3e--z2e--z1e; filldraw stroke z4e..z5e;
+ filldraw stroke z6e..z7e; penlabels(1,2,3,4,5,6,7);
+endchar;
+
+beginchar(wedge_curly,12u#+2appr#,x_height#,0);
+ "Curly wedge sign";
+ pickup tiny.nib;
+ x2=hround 0.5(w-rth)+0.5rth;
+ top y2=h+o; pos2(rth,0); bot y1r=bot y3l=0;
+ lft x1r=hround min(appr+1.0u,lft x2l-((y2r-y1r)/sqrt3));
+ x3l-x2r=x2l-x1r; x1l=x1r; x3l=x3r;
+ x4=x2; pos4(rth,0); y4=0.625[y2,y1r];
+ y1l-y1r=y3r-y3l=(rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{down}...z1e{z1r-z4r};
+ filldraw stroke z2e{down}...z3e{z3l-z4l};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(vee_curly,12u#+2appr#,x_height#,0);
+ "Curly vee sign";
+ pickup tiny.nib;
+ x2=hround 0.5(w-rth)+0.5rth;
+ bot y2=-o; pos2(rth,0); top y1r=top y3l=h;
+ lft x1r=hround min(appr+1.0u,lft x2l+((y2r-y1r)/sqrt3));
+ x1l=x1r; x3l=x3r; x3l-x2r=x2l-x1r;
+ x4=x2; pos4(rth,0); y4=0.625[y2,y1r];
+ y1r-y1l=y3l-y3r=(rth-tiny)/cosd angle(z4r-z1r);
+ filldraw stroke z2e{up}...z1e{z1r-z4r};
+ filldraw stroke z2e{up}...z3e{z3l-z4l};
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(double_cap_sign,
+ 12u#+2appr#,cap_height#,0);% maybe too high
+ "Double cap sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0);
+ pos6(rth,180); pos7(rth,180);
+ pos9(rth,0); pos10(rth,0);
+ rt x1l=w-appr; lft x5l=appr;
+ numeric a; a=min(spread1,0.25(x1-x5));
+ x1=x2; x4=x5; x6=x7; x9=x10; x3=x8=0.5[x1,x5];
+ x1-x6=x10-x5=hround a;
+ bot y1=bot y5=-d-o; bot y6=bot y10=-d;
+ y3+0.5rth=h+o; y8-y3=-vround a;
+ y2=y4=y7=y9=1/3[y8,y6];
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ filldraw stroke z6e..z7e; filldraw stroke z9e..z10e;
+ pickup rule.nib; autorounded;
+ draw z2 up_to_right z3 right_to_down z4;
+ draw z7 up_to_right z8 right_to_down z9;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+beginchar(double_cup_sign,
+ 12u#+2appr#,cap_height#,0);% maybe too high
+ "Double cup sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ pos4(rth,180); pos5(rth,180);
+ pos6(rth,0); pos7(rth,0);
+ pos9(rth,180); pos10(rth,180);
+ rt x1r=w-appr; lft x5r=appr;
+ numeric a; a=min(spread1,0.25(x1-x5));
+ x1=x2; x4=x5; x6=x7; x9=x10; x3=x8=0.5[x1,x5];
+ x1-x6=x10-x5=hround a;
+ top y1=top y5=h+o; top y6=top y10=h;
+ y3-0.5rth=-d-o; y8-y3=vround a;
+ y2=y4=y7=y9=1/3[y8,y6];
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ filldraw stroke z6e..z7e; filldraw stroke z9e..z10e;
+ pickup rule.nib; autorounded;
+ draw z2 down_to_right z3 right_to_up z4;
+ draw z7 down_to_right z8 right_to_up z9;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+beginchar(double_sqcap_sign,
+ 12u#+2appr#,cap_height#,0);% maybe too high
+ "Double square cap sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos3(rth,90); pos5(rth,0);
+ pos6(rth,180); pos8(rth,90); pos10(rth,0);
+ lft x1r=appr; rt x5r=w-appr;
+ numeric a; a=min(spread1,0.25(x5-x1));
+ x6-x1=x5-x10=hround a; x3=x8=0.5[x1,x5];
+ bot y1=bot y5=-d-o; bot y6=bot y10=-d;
+ top y3r=h; y8-y3=-vround a;
+ forsuffixes $=,r,l:
+ x1$=x2$; x4$=x5$; x6$=x7$; x9$=x10$;
+ y2$=y3$=y4$; y7$=y8$=y9$; endfor
+ filldraw stroke z1e--z2e--z4e--z5e;
+ filldraw stroke z6e--z7e--z9e--z10e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+beginchar(double_sqcup_sign,
+ 12u#+2appr#,cap_height#,0);% maybe too high
+ "Double square cup sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos3(rth,90); pos5(rth,180);
+ pos6(rth,0); pos8(rth,90); pos10(rth,180);
+ lft x1l=appr; rt x5l=w-appr;
+ numeric a; a=min(spread1,0.25(x5-x1));
+ x6-x1=x5-x10=hround a; x3=x8=0.5[x1,x5];
+ top y1=top y5=h+o; top y6=top y10=h;
+ bot y3l=0; y8-y3=vround a;
+ forsuffixes $=,r,l:
+ x1$=x2$; x4$=x5$; x6$=x7$; x9$=x10$;
+ y2$=y3$=y4$; y7$=y8$=y9$; endfor
+ filldraw stroke z1e--z2e--z4e--z5e;
+ filldraw stroke z6e--z7e--z9e--z10e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf
new file mode 100644
index 00000000000..f08a8eba68e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf
@@ -0,0 +1,498 @@
+% mathematical symbols by Anthony Phan.
+% file: mathmbcb.mf (symbols medium or big in circles or boxes)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=
+ 0.5[-d,h]-math_axis,0.5[-d,h]-math_axis+x_height,
+ 0.25[-d,h],0.5[-d,h],0.75[-d,h] enddef;
+
+extra_beginchar_save:=extra_beginchar;
+numeric display_over_text;
+
+% Beware: one can not execute conditionnal commands
+% thru the following construction. For instance,
+% on_size(use_rule1,use_rule2,use_rule3) would
+% lead to the use of rule3.
+
+def on_size(expr $,$$,$$$)=
+ if substring (0,1) of main_name_string="m": $
+ elseif substring (0,1) of main_name_string="b": $$
+ else: $$$ fi% "B" case or else
+enddef;
+
+if substring (0,1) of main_name_string="m":
+ let tmp_bounds=arithmetic_bounds;
+ def tmp_radius=6.75u enddef;
+ use_rule1;
+elseif substring (0,1) of main_name_string="b":
+ def tmp_bounds=10/6dh#+2appr#,0,10/6dh# enddef;
+ % def tmp_bounds=18u#+2appr#,0,10/6dh# enddef;
+ def tmp_radius=0.5(h+d) enddef;
+ use_rule2;
+else:% "B" case or else
+ def tmp_bounds= 1.20*10/6dh#+2appr#,
+ 0,1.20*10/6dh# enddef;
+ % def tmp_bounds= 25.2u#+2appr#,0,14/6dh# enddef;
+ def tmp_radius=0.5(h+d) enddef;
+ use_rule3;
+fi
+
+numeric tmp_dtsz;
+a:=on_size(max(0.82u,1.25u-rth1),1.33u,1.20*1.33u);
+tmp_dtsz=on_size(dtsz,1.2dtsz,1.20*1.2dtsz);
+tmp_string:=on_size("Medium ","Textstyle ","Displaystyle ")
+& substring (1,infinity) of main_name_string;
+extra_beginchar:=extra_beginchar & on_size("","","padded bigop_padding#;");
+
+% I know what anyone will think while reading this file:
+% ``this guy had totally messed up with boundaries''.
+% Believe me, I had not.
+
+% The next programs put a circle or a box exactly around the point
+% z0. So that z0 must be adjusted with respect to the pen
+% with which the circle will be drawn.
+
+if substring (1,infinity) of main_name_string="circle":
+ vardef tmp_program=
+ autorounded; pickup rule.nib;
+ x0=good.x 0.5w; y0=good.y 0.5[-d,h];
+ for i=1 upto 8:
+ z[i]=z0+round(tmp_radius-0.5rth)*right rotated(45*(i-1));
+ endfor; labels(0,1,2,3,4,5,6,7,8);
+ tmp_path:=z1{up}...z2{z3-z1}
+ ...z3{left}...z4{z5-z3}...z5{down}...z6{z7-z5}
+ ...z7{right}...z8{z1-z7}...cycle; draw tmp_path;
+ enddef;
+ def dot_spread=4*tmp_radius/(3*3.14159) enddef;
+ % average point of some half disc
+ def prepare_triangle(expr orientation)=
+ save b,c; pickup tiny.nib;
+ b=min(on_size(7u,12u,1.20*12u),
+ 2*sqrt(3)*(tmp_radius-rth-a));
+ c=on_size(rth0,rth1,rth2);
+ tmp_boolean:=true
+ enddef;
+else:
+ vardef tmp_program=
+ pickup rule.nib;
+ x0=good.x 0.5w; y0=good.y 0.5[-d,h];
+ pickup tiny.nib;
+ for i=1 step 2 until 7:
+ z[i]=z0+round(tmp_radius-0.5rth)*right rotated(45*(i-1));
+ endfor;
+ pos1(rth,0); pos5(rth,180);
+ pos3(rth,90); pos7(rth,-90);
+ forsuffixes $=,r,l:
+ x1$=x2$=x8$; x5$=x4$=x6$;
+ y2$=y3$=y4$; y6$=y7$=y8$;
+ endfor
+ penlabels(0,1,2,3,4,5,6,7,8);
+ filldraw stroke z8e--z6e--z4e--z2e--z8e;
+ tmp_path:=z1--z2--z3--z4--z5--z6--z7--z8--cycle;
+ pickup rule.nib;
+ enddef;
+ def dot_spread=0.5(y3-y0) enddef;
+ def prepare_triangle(expr orientation)=
+ save b,c; pickup tiny.nib;
+ b=min(on_size(7u,12u,1.20*12u),
+ 2*sqrt(3)*(tmp_radius-rth-a));
+ c=on_size(rth0,rth1,rth2);
+ tmp_boolean:=false;
+ save triangle_foot;
+ triangle_foot=
+ if (orientation=up)or(orientation=down): y0 else: x0 fi
+ if (orientation=up)or(orientation=right): - else: + fi
+ 0.5[1/3,1/2]*0.5b*sqrt 3
+ enddef;
+fi
+
+%
+% Let's go
+%
+
+beginchar(main_name_with(_plus),tmp_bounds);
+ tmp_string & " plus";
+ tmp_program;
+ pickup tiny.nib;
+ top y9=vround(y3-0.5rth-a); y3-y9=y10-y7; y11=y12=y0;
+ rt x12=hround(x1-0.5rth-a); x1-x12=x11-x5; x9=x10=x0;
+ pos9(rth,0); pos10(rth,0); pos11(rth,90); pos12(rth,90);
+ filldraw stroke z9e..z10e; filldraw stroke z11e..z12e;
+ penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_minus),tmp_bounds);
+ tmp_string & " minus";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a);
+ x10-x5=x1-x9; y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_times),tmp_bounds);
+ tmp_string & " times";
+ tmp_program;
+ pickup tiny.nib;
+ rt x0'=hround(x1-0.5rth-a); y0=y0';
+ z9-z0=z0-z10=(z0'-z0) rotated 45; z11-z0=z0-z12=(z0'-z0) rotated -45;
+ pos9(rth+2eps,-45); pos10(rth+2eps,-45);
+ pos11(rth+2eps,45); pos12(rth+2eps,45);
+ filldraw stroke z9e..z10e; filldraw stroke z12e..z11e;
+ penlabels(9,10,11,12);
+endchar;
+
+beginchar(main_name_with(_division),tmp_bounds);
+ tmp_string & " division";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0+dot_spread),tmp_dtsz,true,false); dot(11,11');
+ adjust_dot12((x0,y0-dot_spread),tmp_dtsz,true,false); dot(12,12');
+endchar;
+
+beginchar(main_name_with(_dot),tmp_bounds);
+ tmp_string & " dot";
+ tmp_program;
+ pickup null.nib;
+ adjust_dot9(z0,1.3tmp_dtsz,true,true); dot(9,9');
+endchar;
+
+beginchar(main_name_with(_circle),tmp_bounds);
+ tmp_string & " circle";
+ tmp_program;
+ numeric b;
+ b=min(max(on_size(7u,7u,1.20*7u),tmp_dtsz),tmp_radius-rth-a);
+ pickup rule.nib0; adjust_dot9((x0,y0),b,true,true);
+ full_dot:=false; dot(9,9');
+endchar;
+
+% the asterisk is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_asterisk),tmp_bounds);
+ tmp_string & " asterisk";
+ tmp_program;
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_stem,dag_curve;
+ dag_curve=on_size(ast_curve,round 1.1cap_curve,round 1.1cap_curve);
+ dag_stem=on_size(ast_stem,hair,hair);
+ b=on_size(1.8ast_stem,2.6hair,2.6hair);
+ c=on_size(1.4dag_stem,0.625b,0.625b);
+ spread:=min(on_size(ast_size,12u,12u),2(tmp_radius-rth-a));
+ for $=9 upto 14: z[$]=b*dir(($-9)*60+30)+z0;
+ z[$]'=c*dir(($-9)*60+60)+z0; endfor
+ filldraw for $=9 upto 14: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir(($-9)*60+30))...z[$]'...endfor cycle;
+endchar;
+
+% the asterisk is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_co_asterisk),tmp_bounds);
+ tmp_string & " co-asterisk";
+ tmp_program;
+ autorounded;
+ interim stress:=0.5;
+ pickup null.nib;
+ numeric b,c,dag_stem,dag_curve;
+ dag_curve=on_size(ast_curve,round 1.1cap_curve,round 1.1cap_curve);
+ dag_stem=on_size(ast_stem,hair,hair);
+ b=1.8dag_stem; c=1.4dag_stem;
+ spread:=min(on_size(ast_size,12u,12u),2(tmp_radius-rth-a));
+ for $=9 upto 14: z[$]=b*dir(($-9)*60)+z0;
+ z[$]'=c*dir(($-9)*60+30)+z0; endfor
+ filldraw for $=9 upto 14: dagger_stroke[$](round(0.5spread-b)+eps,
+ dag_curve,dag_stem,dir(($-9)*60))...z[$]'...endfor cycle;
+endchar;
+
+beginchar(main_name_with(_left),tmp_bounds);
+ tmp_string & " left";
+ tmp_program;
+ draw z3..z7; draw z0..z5;
+endchar;
+
+beginchar(main_name_with(_right),tmp_bounds);
+ tmp_string & " right";
+ tmp_program;
+ draw z3..z7; draw z0..z1;
+endchar;
+
+beginchar(main_name_with(_top),tmp_bounds);
+ tmp_string & " top";
+ tmp_program;
+ draw z1..z5; draw z0..z7;
+endchar;
+
+beginchar(main_name_with(_bot),tmp_bounds);
+ tmp_string & " bot";
+ tmp_program;
+ draw z1..z5; draw z0..z3;
+endchar;
+
+beginchar(main_name_with(_slash),tmp_bounds);
+ tmp_string & " slash";
+ tmp_program;
+ draw z2..z6;
+endchar;
+
+beginchar(main_name_with(_backslash),tmp_bounds);
+ tmp_string & " backslash";
+ tmp_program;
+ draw z4..z8;
+endchar;
+
+beginchar(main_name_with(_sign),tmp_bounds);
+ tmp_string & " sign";
+ tmp_program;
+endchar;
+
+beginchar(main_name_with(_triangle_up),tmp_bounds);
+ tmp_string & " triangle up";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(up);
+ set_triangle'(up,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+% UNSUPPORTED
+
+beginchar(main_name_with(_truc),tmp_bounds);
+ tmp_string & " truc";
+ tmp_program;
+ x9=x0; y9=good.y
+ if substring (1,infinity) of main_name_string="circle":
+ 0.632466 else: 2/3 fi [top y7,bot y3];
+ z10=tmp_path intersectionpoint (z9..(x5,y9));
+ z11=tmp_path intersectionpoint (z9..(x1,y9));
+ draw z7..z9; draw z10..z11; labels(9,10,11);
+endchar;
+
+% numerics are such that all the three parts
+% have almost the same area. (look at the circle's case)
+
+beginchar(main_name_with(_curt),tmp_bounds);
+ tmp_string & " curt";
+ tmp_program;
+ x9=x0; y9=good.y
+ if substring (1,infinity) of main_name_string="circle":
+ 0.632466 else: 2/3 fi [bot y3,top y7];
+ z10=tmp_path intersectionpoint (z9..(x5,y9));
+ z11=tmp_path intersectionpoint (z9..(x1,y9));
+ draw z3..z9; draw z10..z11; labels(9,10,11);
+endchar;
+
+% hummm, too big
+beginchar(main_name_with(_full_circle),tmp_bounds);
+ tmp_string & " full circle";
+ tmp_program;
+ numeric b;
+ b=min(max(on_size(7u-rth0,7u-rth0,1.20*7u-rth0),
+ tmp_dtsz),tmp_radius-rth-a);
+ pickup rule.nib0; adjust_dot9((x0,y0),b,true,true);
+ dot(9,9');
+endchar;
+
+% the star is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_five_star),tmp_bounds);
+ tmp_string & " five star";
+ tmp_program;
+ pickup tiny.nib;
+ save b,tense;
+ b=on_size(3.5u+o,6u+o,6u+o);
+ tense=on_size(0.2,0.1,0.1);
+ draw_star.a(z0,5,b,tense,90,false);
+ labels(a);
+endchar;
+
+% the star is the same in textstyle and displaystyle
+
+beginchar(main_name_with(_six_star),tmp_bounds);
+ tmp_string & " six star";
+ tmp_program;
+ pickup tiny.nib;
+ save b,tense;
+ b=on_size(3.5u,6u+o,6u+o);
+ tense=on_size(0.4,0.3,0.3);
+ draw_star.a(z0,6,b,tense,90,false);
+ labels(a);
+endchar;
+
+beginchar(main_name_with(_triangle_down),tmp_bounds);
+ tmp_string & " triangle down";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(down);
+ set_triangle'(down,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_triangle_left),tmp_bounds);
+ tmp_string & " triangle left";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(left);
+ set_triangle'(left,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_triangle_right),tmp_bounds);
+ tmp_string & " triangle right";
+ tmp_program;
+ begingroup save math_axis; math_axis=y0;
+ prepare_triangle(right);
+ set_triangle'(right,b,c,tmp_boolean,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+ endgroup;
+endchar;
+
+beginchar(main_name_with(_top_dot_minus),tmp_bounds);
+ tmp_string & " top dot minus";
+ tmp_program; pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0+dot_spread),tmp_dtsz,true,false); dot(11,11');
+endchar;
+
+beginchar(main_name_with(_bot_dot_minus),tmp_bounds);
+ tmp_string & " bot dot minus";
+ tmp_program;
+ pickup tiny.nib;
+ rt x9=hround(x1-0.5rth-a); x10-x5=x1-x9;
+ y9=y10=y0; pos9(rth,90); pos10(rth,90);
+ filldraw stroke z10e..z9e; penlabels(9,10);
+ pickup null.nib;
+ adjust_dot11((x0,y0-dot_spread),tmp_dtsz,true,false); dot(11,11');
+endchar;
+
+beginchar(main_name_with(_horiz),tmp_bounds);
+ tmp_string & " horizontal";
+ tmp_program;
+ draw z1..z5;
+endchar;
+
+beginchar(main_name_with(_vert),tmp_bounds);
+ tmp_string & " vertical";
+ tmp_program;
+ draw z3..z7;
+endchar;
+
+beginchar(main_name_with(_cross),tmp_bounds);
+ tmp_string & " cross";
+ tmp_program;
+ draw z1..z5; draw z3..z7;
+endchar;
+
+beginchar(main_name_with(_across),tmp_bounds);
+ tmp_string & " across";
+ tmp_program;
+ draw z2..z6; draw z4..z8;
+endchar;
+
+beginchar(main_name_with(_wedge),tmp_bounds);
+ tmp_string & " wedge";
+ tmp_program;
+ draw z8--z3--z6;
+endchar;
+
+beginchar(main_name_with(_vee),tmp_bounds);
+ tmp_string & " vee";
+ tmp_program;
+ draw z2--z7--z4;
+endchar;
+
+beginchar(main_name_with(_black_left),tmp_bounds);
+ tmp_string & " black left";
+ tmp_program;
+ fill subpath (2,6) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_right),tmp_bounds);
+ tmp_string & " black right";
+ tmp_program;
+ fill subpath (6,8) of tmp_path
+ & subpath (0,2) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_top),tmp_bounds);
+ tmp_string & " black top";
+ tmp_program;
+ fill subpath (0,4) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_bot),tmp_bounds);
+ tmp_string & " black bot";
+ tmp_program;
+ fill subpath (4,8) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_northwest),tmp_bounds);
+ tmp_string & " black north-west";
+ tmp_program;
+ fill subpath (1,5) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_northeast),tmp_bounds);
+ tmp_string & " black north-east";
+ tmp_program;
+ fill subpath (7,8) of tmp_path
+ --subpath (0,3) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_southwest),tmp_bounds);
+ tmp_string & " black south-west";
+ tmp_program;
+ fill subpath (3,7) of tmp_path--cycle;
+endchar;
+
+beginchar(main_name_with(_black_southeast),tmp_bounds);
+ tmp_string & " black south-east";
+ tmp_program;
+ fill subpath (5,8) of tmp_path
+ --subpath (0,1) of tmp_path--cycle;
+endchar;
+
+% There is no normalization for the next symbol as it seems...
+
+beginchar(main_name_with(_ying_yang),tmp_bounds);
+ tmp_string & " Ying-Yang";
+ tmp_program;
+ autorounded;
+ y9=bot y3; y10=0.5[y9,y0]; y11=0.5[y0,y12]; y12=top y7;
+ x0=x9=x12; x10=ceiling(x0+y0-y11); x10-x0=x0-x11;
+ pickup null.nib;
+ fill subpath (6,8) of tmp_path
+ -- subpath (0,2) of tmp_path
+ --z9 right_to_down z10 down_to_left
+ z0 left_to_down z11 down_to_right z12
+ --cycle;
+ adjust_dot13((x0,y10),tmp_dtsz,true,true);
+ adjust_dot14((x0,y11),tmp_dtsz,true,true);
+ dot(13,13'); unfill dot_path(14,14');
+ labels(9,10,11,12,14,14');
+endchar;
+
+beginchar(main_name_with(_peace_and_love),tmp_bounds);
+ tmp_string & " peace and love";
+ tmp_program;
+ z9=tmp_path intersectionpoint (z0..(z0+2(tmp_radius)*dir 210));
+ z10=tmp_path intersectionpoint (z0..(z0+2(tmp_radius)*dir 330));
+ draw z3..z7; draw z0..z9; draw z0..z10;
+ labels(9,10);
+endchar;
+
+% numerics are such that all the three parts
+% have almost the same area. (look at the circle's case)
+
+extra_beginchar:=extra_beginchar_save;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf
new file mode 100644
index 00000000000..11f6d0929de
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf
@@ -0,0 +1,168 @@
+% Mathematical symbols by Anthony Phan.
+% file: matha10.mf (parameters' file for 10 points fonts)
+% last modification: May 16, 2005.
+
+% Look at rth.frac for fractions and such rule_thickness.
+
+if unknown mathbase: input mathbase fi
+
+numeric gen_; gen_=0;
+for $=12pt#,10pt#,9pt#,8pt#,7pt#,6pt#,5pt#:
+ if designsize<$: gen_:=gen_+1; fi
+endfor;
+
+vardef gen(expr unit)(text t)=
+ save a,b; a=0; for $=t:
+ if gen_>=a: b:=$; fi
+ a:=a+1; endfor; b*unit
+enddef;
+
+superness :=1/sqrt2;
+flatness :=0.0625;
+slant :=0.25;
+beak_darkness :=11/30;
+dh# :=0.6designsize;
+bigop_padding#:=1/12dh#;
+astro :=0;% 0 for san-serif, 1 for cm-like, in between...
+math_spread :=gen(1)(0,0.2,0.4,0.6,0.8,1);
+
+u# :=gen(1/36pt#)( 23.5, 20, 18.5, 17, 15.5, 14, 12.5);
+letter_fit# :=gen(1/36pt#)( 0, 0, 0, 0, 2, 3, 5);
+
+body_height# :=gen(1/36pt#)( 324, 270, 243, 216, 189, 162, 135);
+asc_height# :=gen(1/36pt#)( 300, 250, 225, 200, 175, 150, 125);
+cap_height# :=gen(1/36pt#)( 295.2, 246, 221.4, 196.8, 172.2, 147.6, 123);
+fig_height# :=gen(1/36pt#)( 278.4, 232, 208.8, 185.6, 162.4, 139.2, 116);
+x_height# :=gen(1/36pt#)( 186, 155, 139.5, 124, 108.5, 93, 77.5);
+math_axis# :=gen(1/36pt#)( 108, 90, 81, 72, 63, 54, 45);
+desc_depth# :=gen(1/36pt#)( 84, 70, 63, 56, 49, 42, 35);
+dtsz# :=gen(1/36pt#)( 42, 38, 35, 32, 29, 26, 22);
+ast_size# :=gen(1/36pt#)( 140, 140, 140, 140, 140, 140, 140);
+ast_curve# :=gen(1/36pt#)( 28, 28, 28, 28, 28, 28, 28);
+ast_stem# :=gen(1/36pt#)( 8, 8, 8, 8, 8, 8, 8);
+
+% Next parameters may affect daggers, asterisks, infinity,
+% integrals, sums, similarity relations.
+
+curve# :=gen(1/36pt#)( 33, 30, 28, 25.5, 23, 20.5, 18);
+stem# :=gen(1/36pt#)( 28, 25, 24, 22, 20, 18, 16);
+hair# :=gen(1/36pt#)( 9.5, 9, 9, 9, 8.5, 8, 7.5);
+vair# :=gen(1/36pt#)( 8.5, 8, 8, 8, 7, 7, 6);
+cap_curve# :=gen(1/36pt#)( 40, 37, 33, 30, 27, 24, 21);
+cap_stem# :=gen(1/36pt#)( 35, 32, 29, 26.5, 24, 21.5, 19);
+cap_hair# :=gen(1/36pt#)( 11.5, 11, 10, 9.5, 9, 8.5, 8);
+slab# :=gen(1/36pt#)( 12.5, 11, 10, 9.5, 9, 8.5, 8);
+stem_corr# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7);
+vair_corr# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7);
+o# :=gen(1/36pt#)( 9, 8, 7, 6, 5, 4.5, 4);
+ho# :=gen(1/36pt#)( 9, 8, 7, 6, 5, 4.5, 4);
+dish# :=gen(1/36pt#)( 1, 1, 1, 1, 0.9, 0.8, 0.7);
+
+% RULE THICKNESSES
+
+rth1# :=gen(1pt#)(0.44,0.4,0.38,0.36,0.34,0.31,0.28);
+rth0# := 3/4 rth1#;
+rth2# := 4.5/4 rth1#;
+rth3# := 5/4 rth1#;
+rth4# := 5.5/4 rth1#;
+
+rth.frac#:=0.3pt#;
+
+crisp# :=gen(1/36pt#)( 0, 0, 0, 0, 0, 0, 0);
+tiny# :=gen(1/36pt#)( 8, 8, 8, 8, 7, 6.5, 6);
+fine# :=gen(1/36pt#)( 7, 7, 7, 7, 6, 6, 5);
+
+% VARIOUS SPREADS
+
+% thin space between > and _
+spread0#:=math_spread[.21x_height#,.255x_height#];
+
+% equal sign
+spread1#:=math_spread[.35x_height#,.425x_height#];
+
+% subset like symbols
+spread2#:=math_spread[.87x_height#,1.01x_height#];
+
+% infinity, asterisk, belong_to...
+spread3#:=math_spread[x_height#,1.2x_height#];
+
+% greater etc.
+spread4#:=math_spread[17/16x_height#,9/8x_height#];
+
+%
+% FONT METRICS
+%
+% They are supposed to be the same as Computer Modern's ones.
+% Please check carefully if it's true.
+
+if font_identifier_="mathx":
+
+% CMEX's like
+
+ fontdimen8:
+ rth0#, % default_rule_thickness
+ gen(40/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing1
+ gen(60/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing2
+ gen(72/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing3
+ gen(216/36pt#)(1.2,1,.9,.8,.7,.6,.5), % big_op_spacing4
+ gen(1/36pt#)(36,36,36,36,36,36,36); % big_op_spacing5
+
+else:
+
+% CMSY's like
+
+ subs:=gen(1)(8/12,7/10,6/9,6/8,5/7,5/6,5/5);
+
+ fontdimen8:
+
+% \fontdimen8 (num1)
+ math_axis#+3.51rth.frac#+gen(1/36pt#)(54,54,36,36,36,36,36)
+ +subs*desc_depth#,
+
+% \fontdimen9 (num2)
+ math_axis#+1.51rth.frac#+gen(1/36pt#)(30,30,30,24,12,9,3),
+
+% \fontdimen10 (num3)
+ math_axis#+1.51rth.frac#+gen(1/36pt#)(48,48,43,38,34,29,24),
+
+% \fontdimen11 (denom1)
+ -(math_axis#-3.51rth.frac#-subs*fig_height#
+ -gen(1/36pt#)(124,124,111,98,86,74,63)),
+
+% \fontdimen12 (denom2)
+ -(math_axis#-1.51rth.frac#-subs*fig_height#
+ -gen(1/36pt#)(30,30,30,24,12,9,3)),
+
+% \fontdimen13 (sup1)
+ gen(1pt#)(8.99,8.99,8.49,7.49,6.99,6.49,5.99)-subs*asc_height#,
+
+% \fontdimen14 (sup2)
+ gen(1pt#)(8.49,8.49,7.99,7.99,6.49,5.99,5.49)-subs*asc_height#,
+
+% \fontdimen15 (sup3)
+ gen(1/36pt#)(104,104,93,82,72,62,53),
+
+% \fontdimen16 (sub1)
+ gen(1/36pt#)(54,54,36,36,36,36,36),
+
+% \fontdimen17 (sub2)
+ if gen_<2: -(8.49pt#-2subs*asc_height#-3.1rth.frac#)
+ elseif gen_=2: -(7.99pt#-2subs*asc_height#-3.1rth.frac#)
+ else: gen(1/36pt#)(72,72,72,72,72,72,72) fi,
+
+% \fontdimen18 (sup_drop)
+ subs*asc_height#-36/36pt#,
+
+% \fontdimen19 (sub_drop)
+ 18/36pt#,
+
+% \fontdimen20 (delim1)
+ gen(1pt#)( 23.9, 23.9, 23.9, 11.9, 11.9, 11.9, 9.9),
+
+% \fontdimen21 (delim2)
+ gen(1pt#)( 10.1, 10.1, 9.1, 9.1, 8.1, 8.1, 7.1),
+
+% \fontdimen22 (axis)
+ math_axis#;
+
+fi
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf
new file mode 100644
index 00000000000..fbf04c4acc3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf
@@ -0,0 +1,237 @@
+% mathematical symbols by Anthony Phan.
+% file: mathsmsy.mf (various small mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height,
+ 0.5[-d,h],math_axis
+enddef;
+
+% SMALL TRIANGLES
+
+beginchar(triangle_small_left,
+ 7u#+2appr#,v_center(7u#));
+ "Small triangle left";
+ pickup tiny.nib;
+ a:=7u;
+ set_triangle(left,a,rth0,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_small_right,
+ 7u#+2appr#,v_center(7u#));
+ "Small triangle right";
+ pickup tiny.nib;
+ a:=7u;
+ set_triangle(right,a,rth0,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_small_up,
+ 7u#+2appr#,v_center(7u#));
+ "Small triangle up";
+ pickup tiny.nib;
+ a:=7u;
+ set_triangle(up,a,rth0,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_small_down,
+ 7u#+2appr#,v_center(7u#));
+ "Small triangle down";
+ pickup tiny.nib;
+ a:=7u;
+ set_triangle(down,a,rth0,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+% FULL SMALL TRIANGLES
+
+beginchar(triangle_small_full_left,
+ 7u#+2appr#,v_center(7u#));
+ "Small full triangle left";
+ pickup tiny.nib;
+ a:=7u-0.5rth0;
+ set_triangle(left,a,rth0,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_small_full_right,
+ 7u#+2appr#,v_center(7u#));
+ "Small full triangle right";
+ pickup tiny.nib;
+ a:=7u-0.5rth0;
+ set_triangle(right,a,rth0,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_small_full_up,
+ 7u#+2appr#,v_center(7u#));
+ "Small full triangle up";
+ pickup tiny.nib;
+ a:=7u-0.5rth0;
+ set_triangle(up,a,rth0,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_small_full_down,
+ 7u#+2appr#,v_center(7u#));
+ "Small full triangle down";
+ pickup tiny.nib;
+ a:=7u-0.5rth0;
+ set_triangle(down,a,rth0,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+% MEDIUM TRIANGLES
+
+beginchar(triangle_med_left,
+ 12u#+2appr#,x_height#,0);
+ "Medium triangle left";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(left,a,rth1,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_med_right,
+ 12u#+2appr#,x_height#,0);
+ "Medium triangle right";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(right,a,rth1,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_med_up,
+ 12u#+2appr#,x_height#,0);
+ "Medium triangle up";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=0;
+ set_triangle(up,a,rth1,false,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_med_down,
+ 12u#+2appr#,x_height#,0);
+ "Medium triangle down";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=h;
+ set_triangle(down,a,rth1,false,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+% MEDIUM FULL TRIANGLES
+
+beginchar(triangle_med_full_left,
+ 12u#+2appr#,x_height#,0);
+ "Medium full triangle left";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(left,a,rth1,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_med_full_right,
+ 12u#+2appr#,x_height#,0);
+ "Medium full triangle right";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(right,a,rth1,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_med_full_up,
+ 12u#+2appr#,x_height#,0);
+ "Medium full triangle up";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=0;
+ set_triangle(up,a,rth1,false,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_med_full_down,
+ 12u#+2appr#,x_height#,0);
+ "Medium full triangle down";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=h;
+ set_triangle(down,a,rth1,false,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+% BIG TRIANGLES
+
+beginchar(triangle_big_left,
+ 13u#+2appr#,cap_height#,0);
+ "Big triangle left";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(left,a,rth1,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_big_right,
+ 13u#+2appr#,cap_height#,0);
+ "Big triangle right";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(right,a,rth1,true,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_big_up,
+ 13u#+2appr#,cap_height#,0);
+ "Big triangle up";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=0;
+ set_triangle(up,a,rth1,false,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+beginchar(triangle_big_down,
+ 13u#+2appr#,cap_height#,0);
+ "Big triangle down";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=h;
+ set_triangle(down,a,rth1,false,false);
+ filldraw stroke z1e--z2e--z3e--z1e;
+endchar;
+
+% BIG FULL TRIANGLES
+
+beginchar(triangle_big_full_left,
+ 13u#+2appr#,cap_height#,0);
+ "Big full triangle left";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(left,a,rth1,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_big_full_right,
+ 13u#+2appr#,cap_height#,0);
+ "Big full triangle right";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3;
+ set_triangle(right,a,rth1,true,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_big_full_up,
+ 13u#+2appr#,cap_height#,0);
+ "Big full triangle up";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=0;
+ set_triangle(up,a,rth1,false,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar;
+
+beginchar(triangle_big_full_down,
+ 13u#+2appr#,cap_height#,0);
+ "Big full triangle down";
+ pickup tiny.nib;
+ a:=2(h+o)/sqrt 3; triangle_foot:=h;
+ set_triangle(down,a,rth1,false,false);
+ filldraw z1r--z2r--z3r--cycle;
+endchar; \ No newline at end of file
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf
new file mode 100644
index 00000000000..8d87cd7d380
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf
@@ -0,0 +1,257 @@
+% mathematical symbols by Anthony Phan.
+% file: mathsubs.mf (subset symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+% Inclusion signs and related things (relations).
+% Some pictures overlap the bottom. It is necessary
+% for correct centering of the whole box.
+% Spreads for cross bars have been checked.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+%turningcheck:=0;
+
+use_rule1;
+
+beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#));
+pickup tiny.nib;
+if main_name_string="subset":
+ pos1(rth,90); pos2(rth,90);
+ pos4(rth,270); pos5(rth,270);
+ y1-y5=spread2; 0.5[y1,y5]=y3=math_axis; y2=y1; y4=y5;
+ rt x1=rt x5=w-Appr; x3-0.5rth=appr; x2=x4=1/3[x3,x1];
+ filldraw stroke z5e..z4e; filldraw stroke z2e..z1e;
+ pickup rule.nib; autorounded;
+ draw z2 left_to_down z3 down_to_right z4;
+elseif main_name_string="supset":
+ pos1(rth,90); pos2(rth,90);
+ pos3(rth,0); pos4(rth,-90); pos 5(rth,-90);
+ y1-y5=spread2; 0.5[y1,y5]=y3=math_axis; y2=y1; y4=y5;
+ lft x1=lft x5=Appr; x3+0.5rth=w-appr; x2=x4=1/3[x3,x1];
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ pickup rule.nib; autorounded;
+ draw z2 right_to_down z3 down_to_left z4;
+elseif main_name_string="sqsubset":
+ pos1(rth,90); pos4(rth,-90);
+ x2l-x2r=x3l-x3r=rth-tiny;
+ y1-y4=spread2; 0.5[y1,y4]=math_axis;
+ rt x1=rt x4=w-Appr; lft x2r=lft x3r=Appr;
+ forsuffixes $=r,l: y1$=y2$; y3$=y4$; endfor
+ filldraw stroke z4e--z3e--z2e--z1e;
+else:
+ pos1(rth,90); pos4(rth,-90);
+ x2r-x2l=x3r-x3l=rth-tiny;
+ y1-y4=spread2; 0.5[y1,y4]=math_axis;
+ lft x1=lft x4=Appr; rt x2r=rt x3r=w-Appr;
+ forsuffixes $=r,l: y1$=y2$; y3$=y4$; endfor
+ filldraw stroke z1e--z2e--z3e--z4e;
+fi
+endpicture;
+
+beginchar(main_name_with(),
+ 12u#+2appr#,v_center(spread2#+rth#));
+ main_name_string&" sign";
+ currentpicture:=tmp_picture;
+endchar;
+
+beginchar(main_name_with(_not),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&" sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread2+spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eq),
+ 12u#+2appr#,v_center(spread2#+rth#+spread1#));
+ main_name_string&" or equal sign";
+ currentpicture:=tmp_picture
+ shifted(0,0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ y1=y2=math_axis-0.5(spread2+spread1);
+ lft x1=Appr; rt x2=w-Appr;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_eq),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&" nor equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread2+2spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eq_not),
+ 12u#+2appr#,v_center(spread2#+rth#+spread1#));
+ main_name_string&" but not equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread2+spread1);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,1.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 3.5u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eq_varnot),
+ 12u#+2appr#,v_center(spread2#+rth#+spread1#));
+ "variant "&main_name_string&" but not equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5spread2; x0=0.5w;
+ v_adjust(1r,2l,y0,2.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.75u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eqq),
+ 12u#+2appr#,v_center(spread2#+rth#+2spread1#));
+ main_name_string&" or equal-equal sign";
+ currentpicture:=tmp_picture shifted(0,0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ y1=y2=math_axis+spread1-0.5spread2-2spread1;
+ lft x1=Appr; rt x2=w-Appr;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_not_eqq),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&" nor equal-equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,spread2+3spread1));
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_eqq_not),
+ 12u#+2appr#,v_center(spread2#+rth#+2spread1#));
+ main_name_string&" but not equal-equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread2+spread1);
+ x0=0.5w;
+ v_adjust(1r,2l,y0,2.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.75u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_eqq_varnot),
+ 12u#+2appr#,v_center(spread2#+rth#+2spread1#));
+ "variant "&main_name_string&" but not equal-equal sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ y0=math_axis-0.5(spread2); x0=0.5w;
+ v_adjust(1r,2l,y0,3.5spread1-0.5rth);
+ lft x2l-Appr=w-Appr-rt x1r=hround 2.25u;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(0,1,2);
+endchar;
+
+beginchar(main_name_with(_double),
+ arithmetic_bounds);
+ main_name_string&" double sign";
+ pickup tiny.nib;
+ numeric a; a=0.5min(spread2,0.5(h+d-rth));
+ if main_name_string="subset":
+ rt x1=rt x5=w-appr; rt x6=rt x10=w-Appr;
+ y1-y5=4vround a; y6-y10=2vround a;
+ y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis;
+ y2=y1; y4=y5; y7=y6; y9=y10;
+ pos1(rth,90); pos2(rth,90);
+ pos3(rth,180); pos4(rth,270); pos5(rth,270);
+ pos6(rth,90); pos7(rth,90);
+ pos8(rth,180); pos9(rth,270); pos10(rth,270);
+ lft x3r=appr; x8-x3=hround a;
+ x2=x4=x7=x9=1/3[x8,x6];
+ filldraw stroke z5e..z4e left_to_up
+ z3e up_to_right z2e..z1e;
+ filldraw stroke z10e..z9e left_to_up
+ z8e up_to_right z7e..z6e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+ elseif main_name_string="supset":
+ lft x1=lft x5=appr; lft x6=lft x10=Appr;
+ y1-y5=4vround a; y6-y10=2vround a;
+ y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis;
+ y2=y1; y4=y5; y7=y6; y9=y10;
+ pos1(rth,90); pos2(rth,90);
+ pos3(rth,0); pos4(rth,270); pos5(rth,270);
+ pos6(rth,90); pos7(rth,90);
+ pos8(rth,0); pos9(rth,270); pos10(rth,270);
+ rt x3r=w-appr; x8-x3=-hround a;
+ x2=x4=x7=x9=1/3[x8,x6];
+ filldraw stroke z1e..z2e right_to_down
+ z3e down_to_left z4e..z5e;
+ filldraw stroke z6e..z7e right_to_down
+ z8e down_to_left z9e..z10e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+ elseif main_name_string="sqsubset":
+ rt x1=rt x5=w-appr; rt x6=rt x10=w-Appr;
+ y1-y5=4vround a; y6-y10=2vround a;
+ y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis;
+ lft x3r=Appr; x8-x3=hround a;
+ pos1(rth,90); pos3(rth,180); pos5(rth,270);
+ pos6(rth,90); pos8(rth,180); pos10(rth,270);
+ forsuffixes $=,r,l: x2$=x3$=x4$; y1$=y2$; y4$=y5$;
+ x7$=x8$=x9$; y6$=y7$; y9$=y10$; endfor
+ filldraw stroke z5e--z4e--z2e--z1e;
+ filldraw stroke z10e--z9e--z7e--z6e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+ else:
+ lft x1=lft x5=appr; lft x6=lft x10=Appr;
+ y1-y5=4vround a; y6-y10=2vround a;
+ y3=y8=0.5[y1,y5]=0.5[y6,y10]=math_axis;
+ rt x3r=w-Appr; x8-x3=-hround a;
+ pos1(rth,90); pos3(rth,0); pos5(rth,270);
+ pos6(rth,90); pos8(rth,0); pos10(rth,270);
+ forsuffixes $=,r,l: x2$=x3$=x4$; y1$=y2$; y4$=y5$;
+ x7$=x8$=x9$; y6$=y7$; y9$=y10$; endfor
+ filldraw stroke z1e--z2e--z4e--z5e;
+ filldraw stroke z6e--z7e--z9e--z10e;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+ fi
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(main_name_with(_double_not),
+ 12u#+2appr#,asc_height#,asc_depth#);
+ "not "&main_name_string&" double sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ numeric a; a=
+ if (main_name_string="subset")
+ or (main_name_string="sqsubset"): - fi
+ 0.5min(spread2,0.5(h+d-rth));
+ pos1(rth,0); pos2(rth,0);
+ v_adjust(1l,2l,math_axis,max(h+d,12u+spread1));
+ lft x1l=lft x2l=hround 0.5(w-0.5rth-0.5a);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(main_name_with(_dot),
+ 12u#+2appr#,v_center(spread2#+rth#));
+ main_name_string&" with dot sign";
+ currentpicture:=tmp_picture;
+ adjust_dot1((math_axis,
+ if (main_name_string="subset")
+ or (main_name_string="sqsubset"): w-appr-0.5dtsz
+ else: appr+0.5dtsz fi),dtsz,true,false);
+ dot(1,1');
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf
new file mode 100644
index 00000000000..d5f5ad770ae
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf
@@ -0,0 +1,1001 @@
+% mathematical symbols by Anthony Phan.
+% file: mathsymb.mf (various mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+%%% !!! marked signs are to be revised
+
+use_rule1;
+
+%
+% Usual binary relations.
+%
+
+beginchar(negation_sign,12u#+2appr#,v_center(spread1#+rth#));
+ "Negation sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos3(rth,0);
+ y2r=y1r; y2l=y1l; x2l=x3l; x2r=x3r;
+ y1=math_axis+0.5spread1; y1l-y3=spread1;
+ lft x1=Appr; rt x3r=w-Appr;
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(not_sign,12u#+2appr#,asc_height#,asc_depth#);
+ "Not sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ top y1=h+eps; 0.5[bot y2,top y1]=math_axis;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ charwd:=0; w:=0;
+endchar;
+
+beginchar(varnot_sign,12u#+2appr#,asc_height#,asc_depth#);
+ "Variant not sign";
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ charwd:=0; w:=0;
+endchar;
+
+%
+% equality signs and related things (relations).
+%
+
+beginchar(colon_sign,3u#+2appr#,x_height#,0);
+ "Colon";
+ pickup null.nib;
+ adjust_dot1((0.5w,h-0.5dtsz),dtsz,false,false);
+ adjust_dot2((0.5w,0.5dtsz),dtsz,false,false);
+ dot(1,1'); dot(2,2');
+endchar;
+
+beginchar(colon_equal_sign,15u#+2appr#,v_center(spread1#+rth#));
+ "Colon-equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr+hround 3u; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((appr+1.5u,math_axis
+ +0.5max(0.5[x_height-dtsz,spread1],spread1)),
+ dtsz,false,false); dot(5,5');
+ adjust_dot6((appr+1.5u,math_axis
+ -0.5max(0.5[x_height-dtsz,spread1],spread1)),
+ dtsz,false,false); dot(6,6');
+endchar;
+
+beginchar(equal_colon_sign,15u#+2appr#,v_center(spread1#+rth#));
+ "Equal-colon sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr-hround 3u;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((w-appr-1.5u,math_axis
+ +0.5max(0.5[x_height-dtsz,spread1],spread1)),
+ dtsz,false,false);
+ adjust_dot6((w-appr-1.5u,math_axis
+ -0.5max(0.5[x_height-dtsz,spread1],spread1)),
+ dtsz,false,false);
+ dot(5,5'); dot(6,6');
+ penlabels(1,2,3,4);
+endchar;
+
+beginchar(top_dot_equal_sign,arithmetic_bounds);
+ "Top dot equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((0.5[x1,x2],
+ min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)),
+ dtsz,true,false); dot(5,5');
+endchar;
+
+beginchar(bot_dot_equal_sign,arithmetic_bounds);
+ "Bot dot equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((0.5[x1,x2],
+ max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)),
+ dtsz,true,false); dot(5,5');
+endchar;
+
+beginchar(top_bot_dot_equal_sign,arithmetic_bounds);
+ "Top bot dot equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((0.5[x1,x2],
+ min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)),
+ dtsz,true,false); dot(5,5');
+ adjust_dot6((0.5[x1,x2],
+ max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)),
+ dtsz,true,false); dot(6,6');
+endchar;
+
+beginchar(rising_dots_equal_sign,arithmetic_bounds);
+ "Rising dots equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((w-appr-0.5dtsz,
+ min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)),
+ dtsz,false,false); dot(5,5');
+ adjust_dot6((appr+0.5dtsz,
+ max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)),
+ dtsz,false,false); dot(6,6');
+endchar;
+
+beginchar(falling_dots_equal_sign,arithmetic_bounds);
+ "Falling dots equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); pickup null.nib;
+ adjust_dot5((appr+0.5dtsz,
+ min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)),
+ dtsz,false,false); dot(5,5');
+ adjust_dot6((w-appr-0.5dtsz,
+ max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)),
+ dtsz,false,false); dot(6,6');
+endchar;
+
+beginchar(bump_equal,12u#+2appr#,v_center(spread1#+rth#));
+ "bumped equal sign";
+ numeric t[];
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ pos5(rth,180); pos6(rth,90); pos7(rth,0);
+ lft x1=lft x3=appr; rt x2=rt x4=w-appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ rt x5l=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l;
+ y5=y7=y1l; x6=0.5[x5,x7]; y6l-y1l=vround 0.5(x7l-x5l);
+ tmp_path:=z7r up_to_left z6r left_to_down z5r;
+ t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r]));
+ t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r]));
+ filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l--
+ z2r--subpath(t1,t2) of tmp_path--z1r--cycle;
+ filldraw stroke z3e..z4e; penlabels(1,2,3,4,5,6,7);
+endchar;
+
+beginchar(pump_equal,12u#+2appr#,v_center(spread1#+rth#));
+ "pumped equal sign";
+ numeric t[];
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ pos8(rth,0); pos9(rth,90); pos10(rth,180);
+ lft x1=lft x3=appr; rt x2=rt x4=w-appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ rt x8r=hround 1/3[lft x1,rt x2]; x8r-x3=x4-x10r;
+ y8=y10=y3r; x9=0.5[x8,x10]; y3r-y9r=vround 0.5(x10r-x8r);
+ tmp_path:=z8l down_to_right z9l right_to_up z10l;
+ t1=xpart(tmp_path intersectiontimes (z3l..0.5[z3l,z4l]));
+ t2=xpart(tmp_path intersectiontimes (z4l..0.5[z3l,z4l]));
+ filldraw z3l--subpath(t1,t2) of tmp_path--z4l
+ --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle;
+ filldraw stroke z1e..z2e; penlabels(1,2,3,4,8,9,10);
+endchar;
+
+beginchar(Bump_equal,12u#+2appr#,v_center(spread1#+rth#));
+ "Bumped equal";
+ numeric t[];
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ pos5(rth,180); pos6(rth,90); pos7(rth,0); pos8(rth,0);
+ pos9(rth,90); pos10(rth,180);
+ lft x1=lft x3=appr; rt x2=rt x4=w-appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ rt x5l=rt x8r=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l; x10r=x7l;
+ y5=y7=y1l; y8=y10=y3r; x6=x9=0.5[x5,x7];
+ y6l-y1l=y3r-y9r=vround 0.5(x7l-x5l);
+ tmp_path:=z7r up_to_left z6r left_to_down z5r;
+ tmpp_path:=z8l down_to_right z9l right_to_up z10l;
+ t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r]));
+ t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r]));
+ t3=xpart(tmpp_path intersectiontimes (z3l..0.5[z3l,z4l]));
+ t4=xpart(tmpp_path intersectiontimes (z4l..0.5[z3l,z4l]));
+ filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l--
+ z2r--subpath(t1,t2) of tmp_path--z1r--cycle;
+ filldraw z3l--subpath(t3,t4) of tmpp_path--z4l
+ --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle;
+ penlabels(1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+%%% !!!
+beginchar(circ_equal_sign,arithmetic_bounds);
+ "Circle-equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ pickup rule.nib0;
+ a:=min(max(7u,dtsz+rth0),spread1+rth);
+ adjust_dot5((0.5[x1,x2],max(vround(1/6[top y1,h])+0.5a,h-0.5a)+o),
+ a,true,false);
+ full_dot:=false; dot(5,5');
+ penlabels(1,2);
+endchar;
+
+beginchar(equal_circ_sign,12u#+2appr#,v_center(spread1#+rth#));
+ "Equal-circle sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ pickup rule.nib0;
+ a:=min(max(7u,dtsz+rth0),spread1+rth);
+ adjust_dot5(0.5[z3,z2],a,true,false);
+ full_dot:=false; dot(5,5');
+ penlabels(1,2);
+endchar;
+
+%%% !!!
+beginchar(triangle_equal_sign,arithmetic_bounds);
+ "Triangle-equal sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+ triangle_foot:=vround 1/6[top y1r,h];
+ a:=min(2max(h+o-triangle_foot,spread1+rth+o)/sqrt 3,7u);
+ set_triangle'(up,a,rth0,false,false);
+ filldraw stroke z1'e--z2'e--z3'e--z1'e;
+endchar;
+
+%%% !!!
+beginchar(correspondance_sign,arithmetic_bounds);
+ "Correspondance sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ filldraw stroke z1e..z2e; % upper bar
+ filldraw stroke z3e..z4e; % lower bar
+%
+ top y6r=h+o; bot y5r=vround(1/6[top y1r,h]);
+ y5r=y5l=y7r=y7l;
+ x6r=0.5[x1,x2]; x5r-x1=x2-x7r=hround 0.5u;
+ x5l-x5r=diag_width(rth-tiny,z6r-z5r);
+ x7r-x7l=diag_width(rth-tiny,z6r-z7r);
+ z6l-z5l=whatever*(z6r-z5r); z6l-z7l=whatever*(z6r-z7r);
+ filldraw stroke z5e--z6e--z7e;
+ penlabels(1,2,3,4,5,6,7);
+endchar;
+
+beginchar(hash_sign,arithmetic_bounds);
+ "Hash sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ pos5(rth,0); pos6(rth,0); pos7(rth,0); pos8(rth,0);
+ lft x1=lft x3=Appr;
+ lft x5l=lft x6l=hround 0.5(w+Appr-Appr-spread1-rth);
+ x7-x5=x8-x6=spread1; x2-x7r=x4-x7r=x5l-x1;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ top y5=top y7=h; y5-y1=y3-y6; y8=y6;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar(var_hash_sign,arithmetic_bounds);
+ "Variant hash sign";
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90);
+ lft x1=lft x3=Appr; rt x2=rt x4=w-Appr;
+ y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis;
+ bot y6l=-d; top y7r=h; lft x6l=w-rt x7r=Appr+hround 1.25u;
+ adjust_slanted_bar(6l,7r,8r,5l)(spread1+rth-tiny,-1);
+ numeric a; a=(rth-tiny)/sind angle(z5l-z6l);
+ penpos5(a,0); penpos6(a,0); penpos7(a,0); penpos8(a,0);
+% I'm not sure that it's a good idea, but wel, that's
+% school works.
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke diag_stroke.e(5,6,r,y1r,y1l,y3r,y3l);
+ filldraw stroke diag_stroke.e(7,8,r,y1r,y1l,y3r,y3l);
+% filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar(vdash_sign,12u#+2appr#,v_center(12u#));
+ "vdash sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ lft x1l=lft x2l=Appr; rt x4=w-Appr; x3=x1;
+ top y1=h; 0.5[y1,y2]=math_axis=y3=y4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(vdash_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not vdash sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(dashv_sign,12u#+2appr#,v_center(12u#));
+ "dashv sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ rt x1r=rt x2r=w-Appr; lft x3=Appr; x4=x1;
+ top y1=h; 0.5[y1,y2]=math_axis=y3=y4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ penlabels(1,2,3,4); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(dashv_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not dashv sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(vDash_sign,12u#+2appr#,v_center(12u#));
+ "vDash sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ pos5(rth,90); pos6(rth,90);
+ lft x1l=lft x2l=Appr; rt x4=rt x6=w-Appr; x3=x5=x1;
+ top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5];
+ y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(vDash_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not vDash sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(Dashv_sign,12u#+2appr#,v_center(12u#));
+ "Dashv sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90);
+ pos5(rth,90); pos6(rth,90);
+ rt x1r=rt x2r=w-Appr; lft x3=lft x5=Appr; x4=x6=x1;
+ top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5];
+ y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(Dashv_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not Dashv sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(Vdash_sign,12u#+2appr#,v_center(12u#));
+ "Vdash sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,90); pos6(rth,90);
+ lft x1l=lft x2l=Appr; x3=x4=x1+spread1;
+ rt x6=w-appr; x5=x3;
+ top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(Vdash_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not Vdash sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(dashV_sign,12u#+2appr#,v_center(12u#));
+ "dashV sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,90); pos6(rth,90);
+ rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1;
+ lft x5=appr; x6=x3;
+ top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(dashV_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not dashV sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(VDash_sign,12u#+2appr#,v_center(12u#));
+ "VDash sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90);
+ lft x1l=lft x2l=Appr; x3=x4=x1+spread1;
+ rt x6=rt x8=w-appr; x5=x7=x3;
+ top y1=h; y5-y7=spread1;
+ 0.5[y1,y2]=0.5[y5,y7]=math_axis;
+ y1=y3; y2=y4; y5=y6; y7=y8;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(VDash_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not Vdash sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(DashV_sign,12u#+2appr#,v_center(12u#));
+ "DashV sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90);
+ rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1;
+ lft x5=lft x7=appr; x6=x8=x3;
+ top y1=h; y5-y7=spread1;
+ 0.5[y1,y2]=0.5[y5,y7]=math_axis;
+ y1=y3; y2=y4; y5=y6; y7=y8;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(DashV_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not DashV sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(Vvdash_sign,12u#+2appr#,v_center(12u#));
+ "Vvdash sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90);
+ lft x1l=lft x2l=Appr; x3=x4=x1+spread1; x5=x6=x3+spread1;
+ rt x8=w-appr; x7=x5;
+ top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(Vvdash_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not Vvdash sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(dashVv_sign,12u#+2appr#,v_center(12u#));
+ "dashVv sign";
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0);
+ pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90);
+ rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; x5=x6=x3-spread1;
+ lft x7=appr; x8=x5;
+ top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6;
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture;
+endchar;
+
+beginchar(dashVv_not,12u#+2appr#,asc_height#,asc_depth#);
+ "Not dashVv sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l=w-rt x1r=appr+hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(therefore_sign,arithmetic_bounds);
+ "Therefore sign";
+ pickup null.nib;
+ a:=(12u-dtsz)/sqrt 12;
+ x0=0.5w; y0=math_axis;
+ adjust_dot1((x0,y0+2a),dtsz,false,false);
+ adjust_dot2((appr+0.5dtsz,y0-a),dtsz,false,false);
+ adjust_dot3((w-appr-0.5dtsz,y0-a),dtsz,false,false);
+ dot(1,1'); dot(2,2'); dot(3,3');
+endchar;
+
+beginchar(because_sign,arithmetic_bounds);
+ "Because sign";
+ pickup null.nib;
+ a:=(12u-dtsz)/sqrt 12;
+ x0=0.5w; y0=math_axis;
+ adjust_dot1((x0,y0-2a),dtsz,false,false);
+ adjust_dot2((appr+0.5dtsz,y0+a),dtsz,false,false);
+ adjust_dot3((w-appr-0.5dtsz,y0+a),dtsz,false,false);
+ dot(1,1'); dot(2,2'); dot(3,3');
+endchar;
+
+beginchar(bowtie_sign,arithmetic_bounds);
+ "Bowtie sign";
+ pickup tiny.nib;
+ a:=(11u+rth-tiny)/sqrt 2;% see times_sign
+ y1r=y3l=good.y(math_axis+0.5a); y2l=y4r=y1r-vround a;
+ lft x1r=lft x4r=Appr; rt x2l=rt x3l=w-Appr;
+ adjust_slanted_bar(1r,2l,1,2)(rth-tiny,-1);
+ adjust_slanted_bar(4r,3l,4,3)(rth-tiny,1);
+ rth-tiny=x1l-x1r=x2l-x2r=x3l-x3r=x4l-x4r;
+ z1l=whatever[z1,z2l]; z2r=whatever[z2,z1r];
+ z3r=whatever[z3,z4r]; z4l=whatever[z4,z3l];
+ filldraw stroke z1e--z2e--z3e--z4e--z1e;
+ penlabels(1,2,3,4);
+endchar;
+
+%
+% domination signs and related things (relations).
+%
+
+beginchar(dominated,12u#+2appr#,v_center(spread4#+rth#));
+ "dominated by sign";
+ pickup tiny.nib;
+ top y1r=top y4r=h; y2l=y5l=good.y math_axis;
+ y1r-y2l=y2l-y3r; y6r=y3r;
+ lft x2l=Appr; rt x4r=w-Appr;
+ x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=hround(6.5u-tiny);
+ adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,-1);
+ adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,1);
+ z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b];
+ z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l;
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e;
+ penlabels(1,2,3,4,5,6); labels(2a,2b);
+endchar;
+
+beginchar(dominating,12u#+2appr#,v_center(spread4#+rth#));
+ "dominating sign";
+ pickup tiny.nib;
+ top y1r=top y4r=h; y2l=y5l=good.y math_axis;
+ y1r-y2l=y2l-y3r; y6r=y3r;
+ lft x4r=Appr; rt x2l=w-Appr;
+ x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=-hround(6.5u-tiny);
+ adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,1);
+ adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,-1);
+ z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b];
+ z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l;
+ filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e;
+ penlabels(1,2,3,4,5,6); labels(2a,2b);
+endchar;
+
+beginchar(Dominated,12u#+2appr#,v_center(spread4#+spread1#+rth#));
+ "Dominated by sign";
+ pickup tiny.nib;
+ y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis;
+ y1-y3=2(y4-y6)=spread1+spread4;
+ rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r=x4=x6;
+ adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1);
+ adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1);
+ z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b];
+ z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l;
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r);
+ z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r);
+ filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e;
+ penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b);
+endchar;
+
+beginchar(Dominating,12u#+2appr#,v_center(spread4#+spread1#+rth#));
+ "Dominated by sign";
+ pickup tiny.nib;
+ y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis;
+ y1-y3=2(y4-y6)=spread1+spread4;
+ lft x1=Appr; rt x2r=w-Appr; x1=x1r=x3=x3r=x4=x6;
+ adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),1);
+ adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),-1);
+ z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b];
+ z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l;
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r);
+ z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r);
+ filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e;
+ penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b);
+endchar;
+
+%
+% TO BE REVISED
+%
+
+beginchar(Dominated_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#));
+ "Curly dominated by sign";
+ pickup tiny.nib;
+ pos2(rth,-90); pos4(rth,-90);
+ top y1r=top y5r=h; y2=math_axis=0.5[y1r,y3l]=0.5[y5r,y8r];
+ lft x2=appr; rt x5r=rt x8r=w-appr; x5r-x1r=x8r-x3l=hround 2.5u;
+ x4r=2/3[x2r,x1r]; y4r=y2r; a:=diag_width(rth,z1r-z4r);
+ pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0);
+ filldraw stroke z1e{z4r-z1r}...z2e{left};
+ filldraw stroke z3e{z4l-z3l}...z2e{left};
+%
+ rt x6l=rt x7l=hround(0.5w+0.5u); y6l=y7l=good.y math_axis;
+ tmp_path:=z5l{z4r-z1r}...z6l;
+ z0=direction 1 of tmp_path; a:=angle z0;
+ pos6(rth,a+90); pos7(rth,-90-a);
+ tmp_path:=z8r{z4l-z3l}...z7r{z0 yscaled -1};
+ t:=xpart(tmp_path intersectiontimes (z6l..(x5r,y6l)));
+ filldraw z5l{z4r-z1r}...z6l& z7l...z8l{z3l-z4l}
+ --subpath (0,t-eps) of tmp_path
+ --reverse subpath (0,t-eps) of (z5r{z4r-z1r}...z6r{z0})--cycle;
+ penlabels(0,1,2,3,4,5,6,7,8);
+endchar;
+
+beginchar(Dominating_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#));
+ "Curly dominating sign";
+ pickup tiny.nib;
+ pos2(rth,90); pos4(rth,90);
+ top y1l=top y5l=h; y2=math_axis=0.5[y1l,y3r]=0.5[y5l,y8l];
+ rt x2=w-appr; lft x5l=lft x8l=appr; x5l-x1l=x8l-x3r=-hround 2.5u;
+ x4l=2/3[x2l,x1l]; y4l=y2l; a:=diag_width(rth,z1l-z4l);
+ pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0);
+ filldraw stroke z1e{z4l-z1l}...z2e{right};
+ filldraw stroke z3e{z4r-z3r}...z2e{right};
+%
+ lft x6r=lft x7r=hround(0.5w-0.5u); y6r=y7r=good.y math_axis;
+ tmp_path:=z5r{z4l-z1l}...z6r;
+ z0=direction 1 of tmp_path; a:=angle z0;
+ pos6(rth,a+90); pos7(rth,-90-a);
+ tmp_path:=z8l{z4r-z3r}...z7l{z0 yscaled -1};
+ t:=xpart(tmp_path intersectiontimes (z6r..(x5l,y6r)));
+ filldraw z5r{z4l-z1l}...z6r& z7r...z8r{z3r-z4r}
+ --subpath (0,t-eps) of tmp_path
+ --reverse subpath (0,t-eps) of (z5l{z4l-z1l}...z6l{z0})--cycle;
+ penlabels(0,1,2,3,4,5,6,7,8);
+endchar;
+
+beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#));
+pickup tiny.nib;
+rt x1=rt x1r=rt x3=rt x3r=w-Appr; lft x2r=appr-hround u;
+x1r-x1l=x3r-x3l=rth-tiny;
+y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth);
+adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),-1);
+adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),1);
+z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r];
+z1l-2z1+z1r=whatever*(z2a-z1);
+z3l-2z3+z3r=whatever*(z2b-z3);
+z2l-z1l=whatever*(z2b-z1);
+z2l-z3l=whatever*(z2b-z3);
+filldraw stroke z1e--z3e--z2e--z1e;
+% penlabels(1,2,3); labels(1a,2a,2b,3b);
+numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_;
+endpicture;
+
+beginchar(triangle_left,12u#+2appr#,
+ v_center(spread2#+rth#));
+ "Triangle left";
+ currentpicture:=tmp_picture;
+endchar;
+
+beginchar(not_triangle_left,12u#+2appr#,asc_height#,asc_depth#);
+ "Not triangle left";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z2e..z1e; penlabels(1,2);
+endchar;
+
+beginchar(triangle_left_eq,12u#+2appr#,
+ v_center(if true_size: spread2#+rth#+a*spread1#
+ else: spread2#+rth#+spread1#
+ fi));
+ "Triangle left equal";
+ currentpicture:=tmp_picture
+ shifted(0,vround(a*0.5spread1));
+ pickup tiny.nib;
+ penpos1((rth-tiny)*a,90);
+ penpos2((rth-tiny)*a,90);
+ rt x2=w-Appr; lft x1=appr-hround u; y2=-d+0.5rth; z1-z2=whatever*u_;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(not_triangle_left_eq,12u#+2appr#,asc_height#,asc_depth#);
+ "Not triangle left equal";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z2e..z1e; penlabels(1,2);
+endchar;
+
+beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#));
+pickup tiny.nib;
+lft x1=lft x1r=lft x3=lft x3r=Appr; rt x2r=w-appr+hround u;
+x1l-x1r=x3l-x3r=rth-tiny;
+y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth);
+adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),1);
+adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),-1);
+z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r];
+z1l-2z1+z1r=whatever*(z2a-z1);
+z3l-2z3+z3r=whatever*(z2b-z3);
+z2l-z1l=whatever*(z2b-z1);
+z2l-z3l=whatever*(z2b-z3);
+filldraw stroke z1e--z2e--z3e--z1e;
+% penlabels(1,2,3); labels(1a,2a,2b,3b);
+numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_;
+endpicture;
+
+beginchar(triangle_right,12u#+2appr#,v_center(spread2#+rth#));
+ "Triangle right";
+ currentpicture:=tmp_picture;
+endchar;
+
+beginchar(not_triangle_right,12u#+2appr#,asc_height#,asc_depth#);
+ "Not triangle right";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0);
+ top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z2e..z1e; penlabels(1,2);
+endchar;
+
+beginchar(triangle_right_eq,12u#+2appr#,
+ v_center(if true_size:
+ spread2#+rth#+a*spread1#
+ else: spread2#+rth#+spread1#
+ fi));
+ "Triangle right equal";
+ currentpicture:=tmp_picture
+ shifted(0,vround(a*0.5spread1));
+ pickup tiny.nib;
+ penpos1((rth-tiny)*a,90);
+ penpos2((rth-tiny)*a,90);
+ lft x2=Appr; rt x1=w-appr+hround u; y2=-d+0.5rth; z1-z2=whatever*u_;
+ filldraw stroke z2e..z1e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(not_triangle_right_eq,12u#+2appr#,asc_height#,asc_depth#);
+ "Not triangle right equal";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h;
+ lft x1l=lft x2l=hround 0.5(w-rth);
+ filldraw stroke z2e..z1e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+vardef d_problem(expr origin,top_lim,side_lim,breadth)=
+ save a,b,c;
+ a=abs((side_lim-xpart origin)/(top_lim-ypart origin));
+ b=abs(breadth/(top_lim-ypart origin));
+ begingroup
+ vardef f(expr c)=
+ (1+a**2-2a*b*c+(b*c)**2)*(c**2)<1
+ enddef;
+ c=solve f(0,breadth);
+ endgroup;
+ breadth*(c,1+-+c)
+enddef;
+
+%%% !!!
+beginchar(angle_sign,12u#+2appr#,asc_height#,0);
+ "Angle sign";
+ pickup tiny.nib;
+ rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u;
+ bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90);
+ (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny);
+ y2r=y1r; z2r-z3r=whatever*(z2l-z3l);
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+%%% !!!
+beginchar(measured_angle,12u#+2appr#,asc_height#,asc_depth#);
+ "Measured angle sign";
+ pickup tiny.nib;
+ rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u;
+ bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90);
+ (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny);
+ y2r=y1r; z2r-z3r=whatever*(z2l-z3l);
+ filldraw stroke z1e--z2e--z3e;
+ %
+ numeric a;
+ y2l=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2l+0.5(h+d))+eps;
+ pos5(rth,0);
+ a=x5r-x2l; 0.5 y4=-d+eps; 0.5(x4-x2l)=a+-+min((0.5(y4-y2l)),a);
+ 0.5(z6-z2l)=a*dir min((angle(z3l-z2l)-angle(z4-z2l)),90);
+ numeric t[];
+ tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r;
+ tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r);
+ t1=xpart(tmp_path intersectiontimes (z2l..z4));
+ t2=xpart(tmp_path intersectiontimes (z2l..z6));
+ z4r=point t1 of tmp_path; z6r=point t2 of tmp_path;
+ t3=xpart(tmpp_path intersectiontimes (z2l..z6));
+ t4=xpart(tmpp_path intersectiontimes (z2l..z4));
+ z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path;
+ filldraw subpath (t1,t2) of tmp_path
+ --subpath (t3,t4) of tmpp_path--cycle;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+%%% !!!
+beginchar(spherical_angle,arithmetic_bounds);
+ "Spherical angle sign";
+ pickup tiny.nib;
+ % < part
+ y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4;
+ rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r;
+ adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1);
+ adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1);
+ z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b];
+ z1r-z1=z1-z1l; z3r-z3=z3-z3l;
+ z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r);
+ filldraw stroke z3e--z2e--z1e;
+ % ) part
+ y2r=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2r+0.5(h+d))+eps;
+ top y6=h+eps; y6-y2r=y2r-y4; pos5(rth,0);
+ numeric t[];
+ tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r;
+ tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r);
+ t1=xpart(tmp_path intersectiontimes ((0,y4)..(w,y4)));
+ t2=xpart(tmp_path intersectiontimes ((0,y6)..(w,y6)));
+ z4r=point t1 of tmp_path; z6r=point t2 of tmp_path;
+ t3=xpart(tmpp_path intersectiontimes (z2r..z6r));
+ t4=xpart(tmpp_path intersectiontimes (z2r..z4r));
+ z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path;
+ filldraw subpath (t1,t2) of tmp_path
+ --subpath (t3,t4) of tmpp_path--cycle;
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(between_sign,7u#+2appr#,body_height#,paren_depth#);
+ "Between sign";
+ pickup tiny.nib;
+ pos2(hround 0.75[hair,stem],0); pos5(hround 0.75[hair,stem],0);
+ top y1l=top y4r=h+eps; bot y3l=bot y6r=-d-eps;
+ y0r=y0l=y2=y5=math_axis;
+ rt x1r=rt x3r=rt x5r+hround 0.75u=w-appr;
+ lft x4l=lft x6l=lft x2l-hround 0.75u=appr;
+ x2l-x0l=x0r-x5r=x5r-x2l;
+ (x1r-x1l,y1l-y1r)=(x3r-x3l,y3r-y3l)
+ =(x4r-x4l,y4r-y4l)=(x6r-x6l,y6l-y6r)
+ =d_problem(z0l,y1l,x1r,max(0,vair-tiny));
+ filldraw stroke z1e{z0l-z1l}..z2e..z3e{z3l-z0l};
+ filldraw stroke z4e{z0r-z4r}..z5e..z6e{z6r-z0r};
+ penlabels(1,2,3,4,5,6);
+endchar;
+
+%%% !!!
+beginchar(times_left_three,arithmetic_bounds);
+ "Left three times sign";
+ pickup tiny.nib;
+ top y1l=top y3r=h; bot y2r=bot y4l=-d;
+ lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr;
+ adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1);
+ adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1);
+ z1=0.5[z1l,z1r]; z2=0.5[z2l,z2r];
+ forsuffixes $=r,l: z5$=whatever[z1,z2];
+ z5$=whatever[z3$,z4$]; endfor;
+ filldraw stroke z1e..z2e; filldraw stroke z5e..z4e;
+ penlabels(1,2,3,4,5);
+endchar;
+
+%%% !!!
+beginchar(times_right_three,arithmetic_bounds);
+ "Right three times sign";
+ pickup tiny.nib;
+ top y1l=top y3r=h; bot y2r=bot y4l=-d;
+ lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr;
+ adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1);
+ adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1);
+ z3=0.5[z3l,z3r]; z4=0.5[z4l,z4r];
+ forsuffixes $=r,l: z5$=whatever[z3,z4];
+ z5$=whatever[z1$,z2$]; endfor;
+ filldraw stroke z3e..z4e; filldraw stroke z5e..z2e;
+ penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(pitchfork_sign,12u#+2appr#,asc_height#,0);
+ "Small cap sign";
+ ensure_centering_of(rth);
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0); pos6(rth,0); pos7(rth,0);
+ y3+0.5rth=x_height+o; bot y1r=bot y5r=bot y7+o=-d;
+ top y6=h; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=x6=x7=0.5w;
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ filldraw stroke z6e..z7e;
+ pickup rule.nib; autorounded;
+ draw z2 up_to_right z3 right_to_down z4;
+ penlabels(1,2,3,4,5,6,7);
+endchar;
+
+beginchar(smile_sign,16u#+2appr#,v_center(0.5x_height#));
+ "Smile sign";
+ pickup tiny.nib;
+ a:=vround 0.5[vair,stem]; pos2(a,90);
+ y2-0.5a=vround(-d-0.5a); y1l=y3l=good.y h;
+ lft x1l=appr; rt x3l=w-appr; x2=0.5[x1l,x3l];
+ z1'-z1l=(z2l-z1l) xscaled 1/3;
+ z3'-z3l=(z2l-z3l) xscaled 1/3;
+ pos1(hair,angle(z1'-z1l)+90);
+ pos3(hair,angle(z3'-z3l)-90);
+ filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'};
+ penlabels(1,2,3); labels(1',3');
+endchar;
+
+beginchar(frown_sign,16u#+2appr#,v_center(0.5x_height#));
+ "Frown sign";
+ pickup tiny.nib;
+ a:=vround 0.5[vair,stem]; pos2(a,90);
+ y2+0.5a=vround(h+0.5a); y1r=y3r=good.y -d;
+ lft x1r=appr; rt x3r=w-appr; x2=0.5[x1r,x3r];
+ z1'-z1r=(z2r-z1r) xscaled 1/3;
+ z3'-z3r=(z2r-z3r) xscaled 1/3;
+ pos1(hair,angle(z1'-z1r)+90);
+ pos3(hair,angle(z3'-z3r)-90);
+ filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'};
+ penlabels(1,2,3); labels(1',3');
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf
new file mode 100644
index 00000000000..e671d499182
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathu10.mf (math serie U at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathu"; font_size 10pt#;
+font_coding_scheme "mathu";
+
+input mathprmt;
+input mathudrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf
new file mode 100644
index 00000000000..5915f015ed4
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf
@@ -0,0 +1,189 @@
+% mathematical symbols by Anthony Phan.
+% file: mathadrv.mf (driver file for matha serie,
+% U stands for Unsupported)
+% last modification: May 16, 2005.
+
+mode_setup;
+
+math_setup;
+
+% Activate to allow characters with undefined code.
+% (for proof mode compilation)
+% let iff=always_iff;
+% turningcheck:=0;
+% true_size:=true;
+
+% BINARY OPERATORS
+
+% mathsymb.mf
+
+% mathsmsy
+
+triangle_med_up:=hex"80";
+triangle_med_down:=hex"81";
+triangle_med_left:=hex"82";
+triangle_med_right:=hex"83";
+triangle_med_full_up:=hex"84";
+triangle_med_full_down:=hex"85";
+triangle_med_full_left:=hex"86";
+triangle_med_full_right:=hex"87";
+
+triangle_big_up:=hex"88";
+triangle_big_down:=hex"89";
+triangle_big_left:=hex"8A";
+triangle_big_right:=hex"8B";
+triangle_big_full_up:=hex"8C";
+triangle_big_full_down:=hex"8D";
+triangle_big_full_left:=hex"8E";
+triangle_big_full_right:=hex"8F";
+
+% RELATIONS
+
+% mathsymb.mf
+
+% mathsimi.mf
+
+% mathfine.mf
+
+% upper_asterisk:=hex"3A"; lower_asterisk:=hex"3B";
+% triple_asterisk:=hex"3C";
+
+% hex"30"...hex"35", numerals...
+
+% mathltlk.mf
+
+% LETTER LIKE SYMBOLS
+
+% mathltlk.mf
+
+Q_northwest:=hex"BC";
+Q_northeast:=hex"BD";
+Q_southwest:=hex"BE";
+Q_southeast:=hex"BF";
+
+backprime_sign :=hex"90";
+smile_small :=hex"91";
+frown_small :=hex"92";
+sim_sim_bar :=hex"93";
+sim_sim_not_bar :=hex"94";
+bar_sim :=hex"95";
+bar_sim_not :=hex"96"; sim_vert :=hex"97";
+sim_reverse :=hex"98";
+sim_reverse_bar :=hex"99";
+nuclear_sign :=hex"9A";
+Bourbaki_Z :=hex"9B";
+reverse_negation_sign:=hex"9C";
+greek_motive:=hex"9D";
+ghanean_motive:=hex"9E";
+smash_product_sign:=hex"9F";
+
+cap_dot :=hex"A0";
+cup_dot :=hex"A1";
+sqcap_dot :=hex"A2";
+sqcup_dot :=hex"A3";
+
+% DELIMITERS
+
+% parenthesis
+
+% TRIANGLES AS RELATIONS
+
+% ARROWS
+
+% let the show begin :
+
+input mathusym;
+%input mathgrey;
+input mathfine;
+input mathsmsy;
+
+main_name_string:="mcircle";% ``m'' stands for medium.
+t:=hex"C0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+main_name_string:="mbox";% ``m'' stands for medium.
+t:=hex"E0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+font_normal_stretch=3u#;
+font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+font_extra_space=2u#;
+font_normal_space=6u#+2letter_fit#;
+
+end.
+
+main_name_string:="bcircle";% ``m'' stands for medium.
+t:=hex"80";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+%input mathmbcb;
+
+main_name_string:="Bcircle";% ``m'' stands for medium.
+t:=hex"C0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+%input mathmbcb;
+
+
+main_name_string:="bbox";% ``m'' stands for medium.
+t:=hex"A0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+%input mathmbcb;
+
+main_name_string:="Bbox";% ``m'' stands for medium.
+t:=hex"E0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+%input mathmbcb;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf
new file mode 100644
index 00000000000..5e6047c99d6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf
@@ -0,0 +1,516 @@
+% mathematical symbols by Anthony Phan.
+% file: mathusym.mf (various unsupported mathematical symbols)
+% last modification: May 16, 2005.
+% Only known charcodes will be generated.
+
+def horizontal_rules_list=math_axis,
+ -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
+enddef;
+
+vardef draw_polygon@#(expr center,n_edges,angle_init,sqrt_area)=
+ save a,b;
+ x@#=good.x xpart center; y@#=good.y ypart center;
+ a=sqrt_area/sqrt((n_edges*cosd(180/n_edges)*sind(180/n_edges)))
+ -0.5currentbreadth;
+ b=(rth-currentbreadth)/cosd(180/n_edges);
+ for $=1 upto n_edges:
+ z@#[$]r=z@#+round(a*dir(($-1)*360/n_edges+angle_init));
+ z@#[$]r-z@#[$]l=b*dir(($-1)*360/n_edges+angle_init);
+ penlabels(@#[$]);
+ endfor
+ filldraw stroke for $=1 upto n_edges: z@#[$]e--endfor z@#[1]e;
+enddef;
+
+use_rule1;
+
+% The square root of the total area has been calculated
+% so that circle would fit the bounding box.
+
+beginchar(hex"B0",arithmetic_bounds);
+ "Square a";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),4,45,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B1",arithmetic_bounds);
+ "Pentagon a";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),5,90,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B2",arithmetic_bounds);
+ "Hexagon a";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),6,90,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B3",arithmetic_bounds);
+ "Octogon a";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),8,22.5,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B4",arithmetic_bounds);
+ "Square b";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),4,0,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B5",arithmetic_bounds);
+ "Pentagon b";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),5,-90,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B6",arithmetic_bounds);
+ "Hexagon b";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),6,0,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+beginchar(hex"B7",arithmetic_bounds);
+ "Octogon b";
+ pickup tiny.nib;
+ draw_polygon.a((0.5w,math_axis),8,0,6u*sqrt 3.14159);
+ labels(a);
+endchar;
+
+use_rule0;
+
+beginchar(hex"B8",arithmetic_bounds);
+ "5-bright-star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),5,6u,0.05,90,true);
+ labels(a);
+endchar;
+
+beginchar(hex"B9",arithmetic_bounds);
+ "5-black-star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),5,6u,0.1,90,false);
+ labels(a);
+endchar;
+
+beginchar(hex"BA",arithmetic_bounds);
+ "6-bright-star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),6,6u,0.05,90,true);
+ labels(a);
+endchar;
+
+beginchar(hex"BB",arithmetic_bounds);
+ "6-black-star";
+ pickup tiny.nib;
+ draw_star.a((0.5w,math_axis),6,6u,0.2,90,false);
+ labels(a);
+endchar;
+
+use_rule1;
+
+% mathltlk.mf
+
+%
+% Q
+%
+
+beginchar(Q_northwest,13u#+2appr#,cap_height#,0);
+ "Q northwest";
+ autorounded; pickup rule.nib;
+ top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw tmp_path; pickup tiny.nib; top y5=h; lft x5=appr;
+ z5'=tmp_path intersectionpoint ((x2,y1)..z5);
+ (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a);
+ filldraw stroke z5e..z6e;
+ labels(1,2,3,4); penlabels(5,6);
+endchar;
+
+beginchar(Q_northeast,13u#+2appr#,cap_height#,0);
+ "Q northeast";
+ autorounded; pickup rule.nib;
+ top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw tmp_path; pickup tiny.nib; top y5=h; rt x5=w-appr;
+ z5'=tmp_path intersectionpoint ((x2,y1)..z5);
+ (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a);
+ filldraw stroke z5e..z6e;
+ labels(1,2,3,4); penlabels(5,6);
+endchar;
+
+beginchar(Q_southwest,13u#+2appr#,cap_height#,0);
+ "Q southwest";
+ autorounded; pickup rule.nib;
+ top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw tmp_path; pickup tiny.nib; bot y5=-d; lft x5=appr;
+ z5'=tmp_path intersectionpoint ((x2,y1)..z5);
+ (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a);
+ filldraw stroke z5e..z6e;
+ labels(1,2,3,4); penlabels(5,6);
+endchar;
+
+beginchar(Q_southeast,13u#+2appr#,cap_height#,0);
+ "Q southeast";
+ autorounded; pickup rule.nib;
+ top y2=h+o; bot y4=-d-o; lft x3=appr; rt x1=w-appr;
+ x2=x4=0.5[x1,x3]; y1=y3=0.5[y2,y4];
+ tmp_path:=superellipse(z1,z2,z3,z4,1/sqrt 2);
+ draw tmp_path; pickup tiny.nib; bot y5=-d; rt x5=w-appr;
+ z5'=tmp_path intersectionpoint ((x2,y1)..z5);
+ (sqrt 2)*(z5-z5')=z5'-z6; a:=angle(z5-z6)-90; pos5(rth,a); pos6(rth,a);
+ filldraw stroke z5e..z6e;
+ labels(1,2,3,4); penlabels(5,6);
+endchar;
+
+%
+% Z
+%
+
+vardef tmp_program(expr stem,radius,
+ up_adjustment,bot_adjustment)=
+ pickup tiny.nib; save R,a,c,s;
+ pos1(stem,90); pos2(stem,90); pos3(stem,0);
+ pos6(stem,0); pos7(stem,90); pos8(stem,90);
+ bot y1l=bot y2l=y0-radius=y3-radius=-d;
+ top y7r=top y8r=y0'+radius=y6+radius=h;
+ rt x1+hround bot_adjustment=rt x6r=w-appr;
+ x0'=x7=w-appr-radius;
+ lft x3l=lft x8-hround up_adjustment=appr;
+ x0=x2=appr+radius;
+ a=0.5length(z0'-z0); R=radius-0.5stem;
+ c=0.5((R/a)*(abs(x0'-x0)/a)-(abs(y0'-y0)/a)*((a+-+R)/a));
+ s=1+-+c; z5-z0'=-R*(c,s); z4-z0=R*(c,s);
+ pos4(stem,angle(-c,-s)); pos5(stem,angle(-c,-s));
+ filldraw stroke z1e..z2e left_to_up z3e...z4e
+ ---z5e...z6e up_to_left z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8); labels(0,0');
+enddef;
+
+beginchar(Bourbaki_Z,12u#+2appr#,cap_height#,0);
+ "Bourbaki's Z";
+ tmp_program(cap_stem,1.6cap_stem,1.2*0.6u,1.2*0.3u);
+endchar;
+
+beginchar(bBourbaki_Z,16u#+2appr#,0,10/6dh#);
+ "Bourbaki's Z";
+ tmp_program(round 1.2cap_curve,1.6*1.2cap_curve,1.6*0.6u,1.6*0.3u);
+endchar;
+
+beginchar(BBourbaki_Z,22u#+2appr#,0,14/6dh#);
+ "Bourbaki's Z";
+ tmp_program(round 1.4cap_curve,1.6*1.4cap_curve,2.2*0.6u,2.2*0.3u);
+endchar;
+
+% mathsymb.mf
+
+beginchar(nuclear_sign,arithmetic_bounds);
+ "Nuclear sign";
+ a:=0.13; t:=1.6;
+ autorounded;
+ pickup null.nib;
+ adjust_dot1((0.5w,0.5[-d,h]),dtsz,true,true);
+ dot(1,1');
+ pickup rule.nib0;
+ top y7=top y4=h; bot y2=bot y9=-d;
+ lft x5=lft x8=appr; rt x6=rt x3=w-appr;
+ y5=y6=a[y2,y4]; y3=y8=a[y4,y2];
+ x2=x7=a[x5,x6]; x4=x9=a[x6,x5];
+ draw z2{right}..tension atleast t..z3{up}...z4{left}
+ ..tension atleast t..z5{down}...cycle;
+ draw z6{up}..tension atleast t..z7{left}...z8{down}
+ ..tension atleast t..z9{right}...cycle;
+ labels(2,3,4,5,4,5,6,7,8,9);
+endchar;
+
+% SMILES AND FROWNS
+
+use_rule1;
+
+beginchar(smile_small,12u#+2appr#,v_center(spread1#+rth#));
+ "Small smile sign";
+ pickup tiny.nib;
+ pos2(rth,90);
+ y2=math_axis-0.5spread1; y1l=y3l=y2l+spread1;
+ lft x1l=appr; rt x3l=w-appr; x2=0.5[x1l,x3l];
+ z1'-z1l=(z2l-z1l) xscaled 1/3;
+ z3'-z3l=(z2l-z3l) xscaled 1/3;
+ pos1(rth,angle(z1'-z1l)+90);
+ pos3(rth,angle(z3'-z3l)-90);
+ filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'};
+ penlabels(1,2,3); labels(1',3');
+endchar;
+
+beginchar(frown_small,12u#+2appr#,v_center(spread1#+rth#));
+ "Small frown sign";
+ pickup tiny.nib;
+ pos2(rth,90);
+ y2=math_axis+0.5spread1; y1r=y3r=y2r-spread1;
+ lft x1r=appr; rt x3r=w-appr; x2=0.5[x1r,x3r];
+ z1'-z1r=(z2r-z1r) xscaled 1/3;
+ z3'-z3r=(z2r-z3r) xscaled 1/3;
+ pos1(rth,angle(z1'-z1r)+90);
+ pos3(rth,angle(z3'-z3r)-90);
+ filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'};
+ penlabels(1,2,3); labels(1',3');
+endchar;
+
+make_sim_picture;
+
+beginchar(sim_sim_bar,12u#+2appr#,v_center(3spread1#+2rth#));
+ "Similarity-similarity-bar sign";
+ currentpicture:=(sim_picture shifted(0,spread1+rth))+
+ sim_picture;% shifted(0,-0.5(spread1+rth));
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-1.5spread1;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(sim_sim_not_bar,12u#+2appr#,asc_height#,asc_depth#);
+ "Not similarity-similarity_bar sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l-appr=w-appr-rt x1r=hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z2e..z1e; penlabels(1,2);
+endchar;
+
+beginchar(bar_sim,12u#+2appr#,v_center(2spread1#+rth#));
+ "Bar-similarity sign";
+ currentpicture:=sim_picture shifted(0,-vround 0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis+spread1;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+ tmp_picture:=currentpicture;
+endchar;
+
+beginchar(bar_sim_not,arithmetic_bounds);
+ "Not bar-similarity sign";
+ currentpicture:=tmp_picture;
+ pickup tiny.nib;
+ lft x2l-Appr=w-Appr-rt x1r=hround 1.75u;
+ top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis;
+ adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1);
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(sim_vert,arithmetic_bounds);
+ "Sim-vert sign";
+ currentpicture:=sim_picture rotatedaround((0.5w,math_axis),90);
+endchar;
+
+beginchar(sim_reverse,12u#+2appr#,v_center(spread1#+rth#));
+ "Sim-reverse sign";
+ currentpicture:=sim_picture reflectedabout((0.5w,0),(0.5w,h));
+endchar;
+
+beginchar(sim_reverse_bar,12u#+2appr#,v_center(2spread1#+rth#));
+ "Sim-reverse-bar sign";
+ currentpicture:=sim_picture reflectedabout((0.5w,0),(0.5w,h))
+ shifted(0,vround 0.5spread1);
+ pickup tiny.nib;
+ pos1(rth,90); pos2(rth,90);
+ lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis-spread1;
+ filldraw stroke z1e..z2e; penlabels(1,2);
+endchar;
+
+beginchar(reverse_negation_sign,12u#+2appr#,v_center(spread1#+rth#));
+ "Reverse negation sign";
+ pickup tiny.nib;
+ pos1(rth,-90); pos3(rth,0);
+ y2r=y1r; y2l=y1l; x2l=x3l; x2r=x3r;
+ y1=math_axis+0.5spread1; y1r-y3=spread1;
+ rt x1=w-Appr; lft x3l=Appr;
+ filldraw stroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+beginchar(smash_product_sign,arithmetic_bounds);
+ "Smash product sign";
+ pickup tiny.nib;
+ top y1r=top y5l=h+eps; bot y4l=bot y8r=-d-eps;
+ lft x3l=lft x6l=appr-eps; rt x2r=rt x7r=w-appr+eps;
+ y1r-y3l=y5r-y7l=y6l-y8r=y2r-y4l=vround((spread1+rth-tiny)/sqrt 2);
+ x1r-x3l=x7r-x5l=x8r-x6l=x2r-x4l=hround((spread1+rth-tiny)/sqrt 2);
+ pos1(rth,45); pos2(rth,45); pos3(rth,45); pos4(rth,45);
+ pos5(rth,-45); pos6(rth,-45); pos7(rth,-45); pos8(rth,-45);
+ filldraw stroke z1e..z2e; filldraw stroke z3e..z4e;
+ filldraw stroke z5e..z6e; filldraw stroke z7e..z8e;
+ penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+% The next design is taken from my favorite pen:
+% a Omas' Paragon.
+
+beginchar(greek_motive,24u#,body_height#,0);
+ "Decorative greek motive";
+ numeric a,b; a=2max(hround 0.5rth1,1);
+ b=a*(1++slant);
+ pickup pencircle scaled a;
+ if 0.5w<>good.x 0.5w: change_width; fi
+ x21=x22=good.x 0.5w;
+ x1=x3=x5l=x6l=-1; x2=x4=x20l=x19l=w+1;
+ x7=x8=good.x 0.75[x1,x21]; x17=x18=x21+(x21-x7);
+ x9=x10=good.x 0.5[x1,x21]; x15=x16=x21+(x21-x9);
+ x11=x12=good.x 0.25[x1,x21]; x13=x14=x21+(x21-x11);
+ y1r=y2r=h; y3l=y4l=-d; penpos1(a,90);
+ penpos2(a,90); penpos3(a,90); penpos4(a,90);
+ penpos5(0.5b+1,0); penpos20(0.5b+1,180);
+ penpos21(b,0); penpos22(b,0);
+ y6=y7=y18=y19=good.y 0.2[y3,y1]; y22=bot y6;
+ y12=y21=y13=good.y 0.8[y3,y1]; y5=y20=top y12;
+ y10=y11=y14=y15=good.y 0.3[y6,y12];
+ y8=y9=y16=y17=good.y 0.7[y6,y12];
+ forsuffixes $=6,7,12,13,18,19:
+ y$r-y$l=a; z$=0.5[z$r,z$l]; endfor
+ forsuffixes $=8,9,10,11,14,15,16,17:
+ y$l-y$r=a; z$=0.5[z$r,z$l]; endfor
+ forsuffixes $=9,10,13,14,17,18:
+ x$r-x$l=b; endfor
+ x6r-x6l=x19l-x19r=0.5b+1;
+ forsuffixes $=7,8,11,12,15,16:
+ x$l-x$r=b; endfor
+ penstroke z1e..z2e; penstroke z3e..z4e; penstroke z21e..z22e;
+ penstroke z5e--z6e--z7e--z8e--z9e--z10e--z11e--
+ z12e--z13e--z14e--z15e--z16e--z17e--z18e--z19e--z20e;
+ penlabels(range 1 thru 22);
+endchar;
+
+% The next motive appears in ITC's Kokoa font.
+% The designer (Jochen Schuss) has been inspired by
+% a trip in Ghana. It is therefore possible that
+% this design is not copyright since it may be
+% a traditionnal one.
+
+beginchar(ghanean_motive,14u#,body_height#,body_depth#);
+ "Decorative ghanean motive";
+ numeric a; a=2max(hround 0.5rth1,1);
+ pickup pencircle scaled a;
+ if 0.5w<>good.x 0.5w: change_width; fi
+ numeric b; b=vround((h+d)/7);
+ x2=x3=x8l=x15l=x21l=0.5w;
+ x1r=x5r=x12r=x19l=x20l=0;
+ x4r=x11r=x18r=x23l=x22l=w;
+ y1r=y4r=h;
+ y1r-y5r=y5r-y12r=y12r-y19l=b;
+ y4r-y11r=y11r-y18r=y18r-y23l=b;
+ y3-y8l=y8l-y15l=y15l-y21l=b;
+ y1r-y2=y2-y3=y19l-y20l=y23l-y22l=2b;
+ x6=x7=good.x 2/3[x1r,x2]; x9=x10=x2+(x2-x6);
+ x13=x14=good.x 1/3[x1r,x2]; x16=x17=x2+(x2-x13);
+ forsuffixes $=2,3,6,7,13,14:
+ x$r-x$l=a; x$=0.5[x$r,x$l];
+ endfor
+ forsuffixes $=10,9,17,16:
+ x$r-x$l=-a; x$=0.5[x$r,x$l];
+ endfor
+ numeric b,c;
+ b=a/abs cosd angle(z2-z1r);
+ c=a/abs cosd angle(z2-z4r);
+ penpos1(b,90); penpos5(b,90); penpos12(b,90);
+ penpos4(c,90); penpos11(c,90); penpos18(c,90);
+ x19r-x19l=x20r-x20l=x23l-x23r=x22l-x22r=0.5a;
+%
+ z21r-(z21l+z1r-z1l)=whatever*(z2-z1r);
+ z21r-(z21l+z4r-z4l)=whatever*(z2-z4r);
+ z8r-z8l=z15r-z15l=z21r-z21l;
+%
+ z2l-z1l=whatever*(z2-z1r); z3-z3l=whatever*(z2-z1r);
+ z6r-z5r=whatever*(z2-z1r); z6l-z5l=whatever*(z2-z1r);
+ z8r-z7r=whatever*(z2-z1r); z8l-z7l=whatever*(z2-z1r);
+ z13r-z12r=whatever*(z2-z1r); z13l-z12l=whatever*(z2-z1r);
+ z15r-z14r=whatever*(z2-z1r); z15l-z14l=whatever*(z2-z1r);
+ z19r-z19l=whatever*(z2-z1r);
+ z21r-z20r=whatever*(z2-z1r);% z21l-z20l=whatever*(z2-z1r);
+%
+ z2r-z4l=whatever*(z2-z4r); z3-z3r=whatever*(z2-z4r);
+ z10r-z11r=whatever*(z2-z4r); z10l-z11l=whatever*(z2-z4r);
+ z8r-z9r=whatever*(z2-z4r); z8l-z9l=whatever*(z2-z4r);
+ z17r-z18r=whatever*(z2-z4r); z17l-z18l=whatever*(z2-z4r);
+ z15r-z16r=whatever*(z2-z4r); z15l-z16l=whatever*(z2-z4r);
+ z23r-z23l=whatever*(z2-z4r);
+ z21r-z22r=whatever*(z2-z4r);% z21l-z22l=whatever*(z2-z4r);
+%
+ fill z1r--z2--z4r--z4l--z2r--z3r--z3--z3l--z2l--z1l--cycle;
+ penstroke z5e--z6e--z7e--z8e--z9e--z10e--z11e;
+ penstroke z12e--z13e--z14e--z15e--z16e--z17e--z18e;
+ penstroke z19e--z20e--z21e--z22e--z23e;
+ penlabels(range 1 thru 23);
+endchar;
+
+%
+% doted symbols
+%
+
+beginchar(cap_dot,12u#+2appr#,x_height#,0);
+ "Small cap with dot sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0);
+ y3+0.5rth=h+o; bot y1r=bot y5r=-d; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=0.5[x2,x4];
+ filldraw stroke z1e..z2e; filldraw stroke z4e..z5e;
+ pickup rule.nib; autorounded;
+ draw z2 up_to_right z3 right_to_down z4;
+ penlabels(1,2,3,4,5);
+ adjust_dot6((0.5w,h-math_axis),dtsz,false,true);
+ dot(6,6');
+endchar;
+
+beginchar(cup_dot,12u#+2appr#,x_height#,0);
+ "Small cup with dot sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos2(rth,180);
+ pos4(rth,0); pos5(rth,0);
+ y3-0.5rth=-d-o; top y1r=top y5r=h; y2=y4=2/3[y3,y1r];
+ lft x1r=w-rt x5r=appr+hround 0.8u;
+ x1=x2; x4=x5; x3=0.5[x2,x4];
+ filldraw stroke z5e..z4e; filldraw stroke z2e..z1e;
+ pickup rule.nib; autorounded;
+ draw z2 down_to_right z3 right_to_up z4;
+ penlabels(1,2,3,4,5);
+ adjust_dot6((0.5w,math_axis),dtsz,false,true);
+ dot(6,6');
+endchar;
+
+beginchar(sqcap_dot,12u#+2appr#,x_height#,0);
+ "Small square cap with dot sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos4(rth,0);
+ top y2r=top y3r=h; bot y1=bot y4=-d;
+ top y2r-bot y2l=top y3r-bot y3l=rth;
+ lft x1r=w-rt x4r=appr+hround 0.95u;
+ x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l;
+ filldraw stroke z1e--z2e--z3e--z4e;
+ penlabels(1,2,3,4);
+ adjust_dot5((0.5w,h-math_axis),dtsz,false,true);
+ dot(5,5');
+endchar;
+
+beginchar(sqcup_dot,12u#+2appr#,x_height#,0);
+ "Small square cup with dot sign";
+ pickup tiny.nib;
+ pos1(rth,180); pos4(rth,0);
+ bot y2r=bot y3r=-d; top y1=top y4=h;
+ top y2l-bot y2r=top y3l-bot y3r=rth;
+ lft x1r=w-rt x4r=appr+hround 0.95u;
+ x2r=x1r; x3r=x4r; x2l=x1l; x3l=x4l;
+ filldraw stroke z4e--z3e--z2e--z1e;
+ penlabels(1,2,3,4);
+ adjust_dot5((0.5w,math_axis),dtsz,false,true);
+ dot(5,5');
+endchar;
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf
new file mode 100644
index 00000000000..1fd122aa54f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathux10.mf (unsupported math serie X at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathux"; font_size 10pt#;
+font_coding_scheme "mathux";
+
+input mathprmt;
+input mathuxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf
new file mode 100644
index 00000000000..824e167885e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf
@@ -0,0 +1,435 @@
+% mathematical symbols by Anthony Phan.
+% file: mathuxdrv.mf (unsupported eXtensible symbols driver file)
+% last modification: May 16, 2005.
+
+mode_setup;
+
+math_setup;
+
+% PARENTHESIS
+
+%%paren_left_big:=hex"00"; paren_left_Big:=hex"01";
+%%paren_left_bigg:=hex"02"; paren_left_Bigg:=hex"03";
+%%paren_left_top:=hex"04"; paren_left_bot:=hex"05";
+%%paren_left_mid:=hex"06";
+%%
+%%paren_right_big:=hex"08"; paren_right_Big:=hex"09";
+%%paren_right_bigg:=hex"0A"; paren_right_Bigg:=hex"0B";
+%%paren_right_top:=hex"0C"; paren_right_bot:=hex"0D";
+%%paren_right_mid:=hex"0E";
+%%
+%%charlist paren_left_big: paren_left_Big:
+%%paren_left_bigg: paren_left_Bigg: paren_left_top;
+%%extensible paren_left_top:
+%%paren_left_top,0,paren_left_bot,paren_left_mid;
+%%
+%%charlist paren_right_big: paren_right_Big:
+%%paren_right_bigg: paren_right_Bigg: paren_right_top;
+%%extensible paren_right_top:
+%%paren_right_top,0,paren_right_bot,paren_right_mid;
+%%
+%%% BRACKETS
+%%
+%%bracket_left_big:=hex"10"; bracket_left_Big:=hex"11";
+%%bracket_left_bigg:=hex"12"; bracket_left_Bigg:=hex"13";
+%%bracket_left_top:=hex"14"; bracket_left_bot:=hex"15";
+%%bracket_left_mid:=hex"16";
+%%
+%%bracket_right_big:=hex"18"; bracket_right_Big:=hex"19";
+%%bracket_right_bigg:=hex"1A"; bracket_right_Bigg:=hex"1B";
+%%bracket_right_top:=hex"1C"; bracket_right_bot:=hex"1D";
+%%bracket_right_mid:=hex"1E";
+%%
+%%charlist bracket_left_big: bracket_left_Big:
+%%bracket_left_bigg: bracket_left_Bigg: bracket_left_top;
+%%extensible bracket_left_top:
+%%bracket_left_top,0,bracket_left_bot,bracket_left_mid;
+%%
+%%charlist bracket_right_big: bracket_right_Big:
+%%bracket_right_bigg: bracket_right_Bigg: bracket_right_top;
+%%extensible bracket_right_top:
+%%bracket_right_top,0,bracket_right_bot,bracket_right_mid;
+%%
+%%% BRACES
+%%
+%%brace_left_big:=hex"20"; brace_left_Big:=hex"21";
+%%brace_left_bigg:=hex"22"; brace_left_Bigg:=hex"23";
+%%brace_left_top:=hex"24"; brace_left_bot:=hex"25";
+%%brace_left_mid:=hex"26"; brace_left_mod:=hex"27";
+%%
+%%brace_right_big:=hex"28"; brace_right_Big:=hex"29";
+%%brace_right_bigg:=hex"2A"; brace_right_Bigg:=hex"2B";
+%%brace_right_top:=hex"2C"; brace_right_bot:=hex"2D";
+%%brace_right_mid:=hex"2E"; brace_right_mod:=hex"2F";
+%%
+%%charlist brace_left_big: brace_left_Big:
+%%brace_left_bigg: brace_left_Bigg: brace_left_top;
+%%extensible brace_left_top:
+%%brace_left_top,brace_left_mid,brace_left_bot,brace_left_mod;
+%%
+%%charlist brace_right_big: brace_right_Big:
+%%brace_right_bigg: brace_right_Bigg: brace_right_top;
+%%extensible brace_right_top:
+%%brace_right_top,brace_right_mid,brace_right_bot,brace_right_mod;
+%%
+%%% BBBRACKETS
+%%
+%%bbbracket_left_big:=hex"30"; bbbracket_left_Big:=hex"31";
+%%bbbracket_left_bigg:=hex"32"; bbbracket_left_Bigg:=hex"33";
+%%bbbracket_left_top:=hex"34"; bbbracket_left_bot:=hex"35";
+%%bbbracket_left_mid:=hex"36";
+%%
+%%bbbracket_right_big:=hex"38"; bbbracket_right_Big:=hex"39";
+%%bbbracket_right_bigg:=hex"3A"; bbbracket_right_Bigg:=hex"3B";
+%%bbbracket_right_top:=hex"3C"; bbbracket_right_bot:=hex"3D";
+%%bbbracket_right_mid:=hex"3E";
+%%
+%%charlist bbbracket_left_big: bbbracket_left_Big:
+%%bbbracket_left_bigg: bbbracket_left_Bigg: bbbracket_left_top;
+%%extensible bbbracket_left_top:
+%%bbbracket_left_top,0,bbbracket_left_bot,bbbracket_left_mid;
+%%
+%%charlist bbbracket_right_big: bbbracket_right_Big:
+%%bbbracket_right_bigg: bbbracket_right_Bigg: bbbracket_right_top;
+%%extensible bbbracket_right_top:
+%%bbbracket_right_top,0,bbbracket_right_bot,bbbracket_right_mid;
+%%
+%%% ANGLES
+%%
+%%angle_left_big:=hex"40"; angle_left_Big:=hex"41";
+%%angle_left_bigg:=hex"42"; angle_left_Bigg:=hex"43";
+%%angle_right_big:=hex"44"; angle_right_Big:=hex"45";
+%%angle_right_bigg:=hex"46"; angle_right_Bigg:=hex"47";
+%%
+%%charlist angle_left_big: angle_left_Big:
+%%angle_left_bigg: angle_left_Bigg;
+%%charlist angle_right_big: angle_right_Big:
+%%angle_right_bigg: angle_right_Bigg;
+%%
+%%% SLASHES
+%%
+%%backslash_big:=hex"48"; backslash_Big:=hex"49";
+%%backslash_bigg:=hex"4A"; backslash_Bigg:=hex"4B";
+%%slash_big:=hex"4C"; slash_Big:=hex"4D";
+%%slash_bigg:=hex"4E"; slash_Bigg:=hex"4F";
+%%
+%%charlist backslash_big: backslash_Big:
+%%backslash_bigg: backslash_Bigg;
+%%charlist slash_big: slash_Big:
+%%slash_bigg: slash_Bigg;
+%%
+%%% CEILINGS AND FLOORS
+%%
+%%ceiling_left_big:=hex"50"; ceiling_left_Big:=hex"51";
+%%ceiling_left_bigg:=hex"52"; ceiling_left_Bigg:=hex"53";
+%%ceiling_left_top:=bracket_left_top;
+%%ceiling_left_mid:=bracket_left_mid;
+%%
+%%ceiling_right_big:=hex"54"; ceiling_right_Big:=hex"55";
+%%ceiling_right_bigg:=hex"56"; ceiling_right_Bigg:=hex"57";
+%%ceiling_right_top:=bracket_right_top;
+%%ceiling_right_mid:=bracket_right_mid;
+%%
+%%charlist ceiling_left_big: ceiling_left_Big:
+%%ceiling_left_bigg: ceiling_left_Bigg: ceiling_left_mid;
+%%extensible ceiling_left_mid:
+%%ceiling_left_top,0,0,ceiling_left_mid;
+%%
+%%charlist ceiling_right_big: ceiling_right_Big:
+%%ceiling_right_bigg: ceiling_right_Bigg: ceiling_right_mid;
+%%extensible ceiling_right_mid:
+%%ceiling_right_top,0,0,ceiling_right_mid;
+%%
+%%floor_left_big:=hex"58"; floor_left_Big:=hex"59";
+%%floor_left_bigg:=hex"5A"; floor_left_Bigg:=hex"5B";
+%%floor_left_bot:=bracket_left_bot;
+%%floor_left_mid:=bracket_left_mid;
+%%
+%%floor_right_big:=hex"5C"; floor_right_Big:=hex"5D";
+%%floor_right_bigg:=hex"5E"; floor_right_Bigg:=hex"5F";
+%%floor_right_bot:=bracket_right_bot;
+%%floor_right_mid:=bracket_right_mid;
+%%
+%%charlist floor_left_big: floor_left_Big:
+%%floor_left_bigg: floor_left_Bigg: floor_left_bot;
+%%extensible floor_left_bot:
+%%0,0,floor_left_bot,floor_left_mid;
+%%
+%%charlist floor_right_big: floor_right_Big:
+%%floor_right_bigg: floor_right_Bigg: floor_right_bot;
+%%extensible floor_right_bot:
+%%0,0,floor_right_bot,floor_right_mid;
+%%
+%%radical_sign:=hex"60"; radical_big :=hex"61";
+%%radical_Big :=hex"62"; radical_bigg:=hex"63";
+%%radical_Bigg:=hex"64"; radical_bot :=hex"65";
+%%radical_mod :=hex"66"; radical_top :=hex"67";
+%%
+%%charlist radical_big: radical_Big:
+%%radical_bigg: radical_Bigg: radical_top;
+%%extensible radical_top:
+%%radical_top,0,radical_bot,radical_mod;
+%%
+%%overbrace_left :=hex"68";
+%%overbrace_mid :=hex"69";
+%%overbrace_right :=hex"6A";
+%%overbrace_mod :=hex"6B";
+%%underbrace_left :=hex"6C";
+%%underbrace_mid :=hex"6D";
+%%underbrace_right:=hex"6E";
+%%underbrace_mod :=hex"6F";
+%%
+%%vert_mod:=hex"07"; vvert_mod:=hex"0F"; vvvert_mod:=hex"17";
+%%vert_thick_mod:=hex"1F"; left_filet:=hex"37"; right_filet:=hex"3F";
+%%
+%%extensible vert_mod: 0,0,0,vert_mod;
+%%extensible vvert_mod: 0,0,0,vvert_mod;
+%%extensible vvvert_mod: 0,0,0,vvvert_mod;
+%%extensible vert_thick_mod: 0,0,0,vert_thick_mod;
+%%extensible left_filet: left_filet,
+%%left_filet,0,left_filet;
+%%extensible right_filet: right_filet,
+%%right_filet,0,right_filet;
+%%
+%%% BONUS
+%%
+%%group_left_big:=hex"76";
+%%group_right_big:=hex"77";
+%%
+%%% lgroup
+%%charlist group_left_big: brace_left_bot;
+%%extensible brace_left_bot:
+%%brace_left_top,0,brace_left_bot,brace_left_mod;
+%%% rgroup
+%%charlist group_right_big: brace_right_bot;
+%%extensible brace_right_bot:
+%%brace_right_top,0,brace_right_bot,brace_right_mod;
+%%
+%%% lmoustache, hope it works
+%%extensible paren_left_bot:
+%%brace_left_top,0,brace_right_bot,brace_left_mod;
+%%% rmoustache, hope it works
+%%extensible paren_right_bot:
+%%brace_right_top,0,brace_left_bot,brace_right_mod;
+%%
+%%input mathbdel;
+%%
+%input mathacnt;
+%%
+%%bplus_sign :=hex"90"; Bplus_sign :=hex"A0";
+%%btimes_sign :=hex"91"; Btimes_sign :=hex"A1";
+%%bcomplement :=hex"92"; Bcomplement :=hex"A2";
+%bcap_sign :=hex"93"; Bcap_sign :=hex"A3";
+%%bcup_sign :=hex"94"; Bcup_sign :=hex"A4";
+%%bcup_plus :=hex"95"; Bcup_plus :=hex"A5";
+%%bsqcap_sign :=hex"96"; Bsqcap_sign :=hex"A6";
+%%bsqcup_sign :=hex"97"; Bsqcup_sign :=hex"A7";
+%%bsqcup_plus :=hex"98"; Bsqcup_plus :=hex"A8";
+%%bwedge_sign :=hex"99"; Bwedge_sign :=hex"A9";
+%%bvee_sign :=hex"9A"; Bvee_sign :=hex"AA";
+%%bwedge_curly:=hex"9B"; Bwedge_curly:=hex"AB";
+%%bvee_curly :=hex"9C"; Bvee_curly :=hex"AC";
+%%
+%%charlist bplus_sign: Bplus_sign;
+%%charlist btimes_sign: Btimes_sign;
+%%charlist bcomplement: Bcomplement;
+%%charlist bcap_sign: Bcap_sign;
+%%charlist bcup_sign: Bcup_sign;
+%%charlist bcup_plus: Bcup_plus;
+%%charlist bsqcap_sign: Bsqcap_sign;
+%%charlist bsqcup_sign: Bsqcup_sign;
+%%charlist bsqcup_plus: Bsqcup_plus;
+%%charlist bwedge_sign: Bwedge_sign;
+%%charlist bvee_sign: Bvee_sign;
+%%charlist bwedge_curly: Bwedge_curly;
+%%charlist bvee_curly: Bvee_curly;
+%%
+%%summation_sign :=hex"B0"; Summation_sign :=hex"B8";
+%%product_sign :=hex"B1"; Product_sign :=hex"B9";
+%%coproduct_sign :=hex"B2"; Coproduct_sign :=hex"BA";
+%%bintegral_sign :=hex"B3"; Bintegral_sign :=hex"BB";
+%%bintegral_double :=hex"B4"; Bintegral_double :=hex"BC";
+%%bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD";
+%%bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE";
+%%bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF";
+%%
+%%charlist summation_sign: Summation_sign;
+%%charlist product_sign: Product_sign;
+%%charlist coproduct_sign: Coproduct_sign;
+%%charlist bintegral_sign: Bintegral_sign;
+%%charlist bintegral_double: Bintegral_double;
+%%charlist bintegral_triple: Bintegral_triple;
+%%charlist bintegral_contour: Bintegral_contour;
+%%charlist bintegral_dblcont: Bintegral_dblcont;
+
+complement:=hex"43";
+bold_complement:=hex"44";
+bold_cup:=hex"45";
+bold_cap:=hex"46";
+Bourbaki_Z:=hex"47";
+btriangle_up:=hex"48";
+btriangle_down:=hex"49";
+bBourbaki_Z:=hex"4A"; BBourbaki_Z:=hex"4B";
+charlist bBourbaki_Z:BBourbaki_Z;
+btruc_sign :=hex"4C"; Btruc_sign :=hex"4D";
+bcurt_sign :=hex"4E"; Bcurt_sign :=hex"4F";
+charlist btruc_sign: Btruc_sign;
+charlist bcurt_sign: Bcurt_sign;
+
+bintegral_sign := hex"50";
+bintegral_contour_pos :=hex"51";
+bintegral_contour_neg :=hex"52";
+bintegral_square :=hex"53";
+bintegral_square_pos :=hex"54";
+bintegral_square_neg :=hex"55";
+% Bintegral_sign :=hex"BB";
+%%bintegral_double :=hex"B4"; Bintegral_double :=hex"BC";
+%%bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD";
+%%bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE";
+%%bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF";
+
+input mathbigs;
+input mathltlk;
+
+%%main_name_string:="bcircle";% ``b'' stands for big.
+%%t:=hex"C0";
+%%forsuffixes $=_plus,_minus,_times,_division,
+%% _dot,_circle,_asterisk,_co_asterisk,
+%% _left,_right,_top,_bot,
+%% _sign,_slash,_backslash,_triangle_up:
+%% main_name_with($):=t; t:=t+1; endfor;
+%%
+%%input mathmbcb;
+%%
+%%main_name_string:="bbox";% ``b'' stands for big.
+%%t:=hex"D0";
+%%forsuffixes $=_plus,_minus,_times,_division,
+%% _dot,_circle,_asterisk,_co_asterisk,
+%% _left,_right,_top,_bot,
+%% _sign,_slash,_backslash,_triangle_up:
+%% main_name_with($):=t; t:=t+1; endfor;
+%%
+%%input mathmbcb;
+%%
+%%main_name_string:="Bcircle";% ``B'' stands for Big.
+%%t:=hex"E0";
+%%forsuffixes $=_plus,_minus,_times,_division,
+%% _dot,_circle,_asterisk,_co_asterisk,
+%% _left,_right,_top,_bot,
+%% _sign,_slash,_backslash,_triangle_up:
+%% main_name_with($):=t; t:=t+1; endfor;
+%%
+%%input mathmbcb;
+%%
+%%main_name_string:="Bbox";% ``B'' stands for Big.
+%%t:=hex"F0";
+%%forsuffixes $=_plus,_minus,_times,_division,
+%% _dot,_circle,_asterisk,_co_asterisk,
+%% _left,_right,_top,_bot,
+%% _sign,_slash,_backslash,_triangle_up:
+%% main_name_with($):=t; t:=t+1; endfor;
+%%
+%%input mathmbcb;
+%%
+%%forsuffixes $=_plus,_minus,_times,_division,
+%% _dot,_circle,_asterisk,_co_asterisk,
+%% _left,_right,_top,_bot,
+%% _sign,_slash,_backslash,_triangle_up:
+%% charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$);
+%% charlist scantokens("bbox" & str$):scantokens("Bbox" & str$);
+%%endfor;
+%%
+% see also:
+
+main_name_string:="bcircle";
+t:=hex"80";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+main_name_string:="bbox";
+t:=hex"A0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+main_name_string:="Bcircle";
+t:=hex"C0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+main_name_string:="Bbox";
+t:=hex"E0";
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ main_name_with($):=t; t:=t+1; endfor;
+input mathmbcb;
+
+forsuffixes $=
+ _truc,_curt,_full_circle,_five_star,_six_star,
+ _triangle_down,_triangle_left,_triangle_right,
+ _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+ _wedge,_vee,
+ _black_left,_black_right,_black_top,_black_bot,
+ _black_northwest,_black_northeast,_black_southwest,_black_southeast,
+ _ying_yang,_peace_and_love:
+ charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$);
+ charlist scantokens("bbox" & str$):scantokens("Bbox" & str$);
+endfor;
+
+%%arrow_top:=hex"9D"; arrow_bot:=hex"9E"; arrow_mod:=hex"9F";
+%%extensible arrow_top: arrow_top,0,0,arrow_mod;
+%%extensible arrow_bot: 0,0,arrow_bot,arrow_mod;
+%%extensible arrow_mod: arrow_top,0,arrow_bot,arrow_mod;
+%%
+%%double_arrow_top:=hex"AD"; double_arrow_bot:=hex"AE";
+%%double_arrow_mod:=hex"AF";
+%%extensible double_arrow_top: double_arrow_top,0,0,double_arrow_mod;
+%%extensible double_arrow_bot: 0,0,double_arrow_bot,double_arrow_mod;
+%%extensible double_arrow_mod: double_arrow_top,0,double_arrow_bot,
+%%double_arrow_mod;
+%%
+%%input matharrw;
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+%font_normal_stretch=3u#;
+%font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+%font_extra_space=2u#;
+%font_normal_space=6u#+2letter_fit#;
+
+end.
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf
new file mode 100644
index 00000000000..0e13922bbee
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx10.mf (math serie X at 10 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 10pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf
new file mode 100644
index 00000000000..c547b8a9110
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx12.mf (math serie X at 12 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 12pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf
new file mode 100644
index 00000000000..1e16fd19d40
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx5.mf (math serie X at 5 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 5pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf
new file mode 100644
index 00000000000..0125608b9e6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx6.mf (math serie X at 6 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 6pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf
new file mode 100644
index 00000000000..25745ac3f2f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx7.mf (math serie X at 7 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 7pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf
new file mode 100644
index 00000000000..69cc300240b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx8.mf (math serie X at 8 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 8pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf
new file mode 100644
index 00000000000..224749075d3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf
@@ -0,0 +1,10 @@
+% mathematical symbols by Anthony Phan.
+% file: mathx9.mf (math serie X at 9 points)
+% last modification: May 16, 2005.
+
+font_identifier:="mathx"; font_size 9pt#;
+font_coding_scheme "mathx";
+
+input mathprmt;
+input mathxdrv;
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf
new file mode 100644
index 00000000000..184e7cbd8d6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf
@@ -0,0 +1,371 @@
+% mathematical symbols by Anthony Phan.
+% file: mathxdrv.mf (eXtensible symbols driver file)
+% last modification: May 16, 2005.
+
+mode_setup;
+
+math_setup;
+
+% PARENTHESIS
+
+paren_left_big:=hex"00"; paren_left_Big:=hex"01";
+paren_left_bigg:=hex"02"; paren_left_Bigg:=hex"03";
+paren_left_top:=hex"04"; paren_left_bot:=hex"05";
+paren_left_mid:=hex"06";
+
+paren_right_big:=hex"08"; paren_right_Big:=hex"09";
+paren_right_bigg:=hex"0A"; paren_right_Bigg:=hex"0B";
+paren_right_top:=hex"0C"; paren_right_bot:=hex"0D";
+paren_right_mid:=hex"0E";
+
+charlist paren_left_big: paren_left_Big:
+paren_left_bigg: paren_left_Bigg: paren_left_top;
+extensible paren_left_top:
+paren_left_top,0,paren_left_bot,paren_left_mid;
+
+charlist paren_right_big: paren_right_Big:
+paren_right_bigg: paren_right_Bigg: paren_right_top;
+extensible paren_right_top:
+paren_right_top,0,paren_right_bot,paren_right_mid;
+
+% BRACKETS
+
+bracket_left_big:=hex"10"; bracket_left_Big:=hex"11";
+bracket_left_bigg:=hex"12"; bracket_left_Bigg:=hex"13";
+bracket_left_top:=hex"14"; bracket_left_bot:=hex"15";
+bracket_left_mid:=hex"16";
+
+bracket_right_big:=hex"18"; bracket_right_Big:=hex"19";
+bracket_right_bigg:=hex"1A"; bracket_right_Bigg:=hex"1B";
+bracket_right_top:=hex"1C"; bracket_right_bot:=hex"1D";
+bracket_right_mid:=hex"1E";
+
+charlist bracket_left_big: bracket_left_Big:
+bracket_left_bigg: bracket_left_Bigg: bracket_left_top;
+extensible bracket_left_top:
+bracket_left_top,0,bracket_left_bot,bracket_left_mid;
+
+charlist bracket_right_big: bracket_right_Big:
+bracket_right_bigg: bracket_right_Bigg: bracket_right_top;
+extensible bracket_right_top:
+bracket_right_top,0,bracket_right_bot,bracket_right_mid;
+
+% BRACES
+
+brace_left_big:=hex"20"; brace_left_Big:=hex"21";
+brace_left_bigg:=hex"22"; brace_left_Bigg:=hex"23";
+brace_left_top:=hex"24"; brace_left_bot:=hex"25";
+brace_left_mid:=hex"26"; brace_left_mod:=hex"27";
+
+brace_right_big:=hex"28"; brace_right_Big:=hex"29";
+brace_right_bigg:=hex"2A"; brace_right_Bigg:=hex"2B";
+brace_right_top:=hex"2C"; brace_right_bot:=hex"2D";
+brace_right_mid:=hex"2E"; brace_right_mod:=hex"2F";
+
+charlist brace_left_big: brace_left_Big:
+brace_left_bigg: brace_left_Bigg: brace_left_top;
+extensible brace_left_top:
+brace_left_top,brace_left_mid,brace_left_bot,brace_left_mod;
+
+charlist brace_right_big: brace_right_Big:
+brace_right_bigg: brace_right_Bigg: brace_right_top;
+extensible brace_right_top:
+brace_right_top,brace_right_mid,brace_right_bot,brace_right_mod;
+
+% BBBRACKETS
+
+bbbracket_left_big:=hex"30"; bbbracket_left_Big:=hex"31";
+bbbracket_left_bigg:=hex"32"; bbbracket_left_Bigg:=hex"33";
+bbbracket_left_top:=hex"34"; bbbracket_left_bot:=hex"35";
+bbbracket_left_mid:=hex"36";
+
+bbbracket_right_big:=hex"38"; bbbracket_right_Big:=hex"39";
+bbbracket_right_bigg:=hex"3A"; bbbracket_right_Bigg:=hex"3B";
+bbbracket_right_top:=hex"3C"; bbbracket_right_bot:=hex"3D";
+bbbracket_right_mid:=hex"3E";
+
+charlist bbbracket_left_big: bbbracket_left_Big:
+bbbracket_left_bigg: bbbracket_left_Bigg: bbbracket_left_top;
+extensible bbbracket_left_top:
+bbbracket_left_top,0,bbbracket_left_bot,bbbracket_left_mid;
+
+charlist bbbracket_right_big: bbbracket_right_Big:
+bbbracket_right_bigg: bbbracket_right_Bigg: bbbracket_right_top;
+extensible bbbracket_right_top:
+bbbracket_right_top,0,bbbracket_right_bot,bbbracket_right_mid;
+
+% ANGLES
+
+angle_left_big:=hex"40"; angle_left_Big:=hex"41";
+angle_left_bigg:=hex"42"; angle_left_Bigg:=hex"43";
+angle_right_big:=hex"44"; angle_right_Big:=hex"45";
+angle_right_bigg:=hex"46"; angle_right_Bigg:=hex"47";
+
+charlist angle_left_big: angle_left_Big:
+angle_left_bigg: angle_left_Bigg;
+charlist angle_right_big: angle_right_Big:
+angle_right_bigg: angle_right_Bigg;
+
+% SLASHES
+
+backslash_big:=hex"48"; backslash_Big:=hex"49";
+backslash_bigg:=hex"4A"; backslash_Bigg:=hex"4B";
+slash_big:=hex"4C"; slash_Big:=hex"4D";
+slash_bigg:=hex"4E"; slash_Bigg:=hex"4F";
+
+charlist backslash_big: backslash_Big:
+backslash_bigg: backslash_Bigg;
+charlist slash_big: slash_Big:
+slash_bigg: slash_Bigg;
+
+% CEILINGS AND FLOORS
+
+ceiling_left_big:=hex"50"; ceiling_left_Big:=hex"51";
+ceiling_left_bigg:=hex"52"; ceiling_left_Bigg:=hex"53";
+ceiling_left_top:=bracket_left_top;
+ceiling_left_mid:=bracket_left_mid;
+
+ceiling_right_big:=hex"54"; ceiling_right_Big:=hex"55";
+ceiling_right_bigg:=hex"56"; ceiling_right_Bigg:=hex"57";
+ceiling_right_top:=bracket_right_top;
+ceiling_right_mid:=bracket_right_mid;
+
+charlist ceiling_left_big: ceiling_left_Big:
+ceiling_left_bigg: ceiling_left_Bigg: ceiling_left_mid;
+extensible ceiling_left_mid:
+ceiling_left_top,0,0,ceiling_left_mid;
+
+charlist ceiling_right_big: ceiling_right_Big:
+ceiling_right_bigg: ceiling_right_Bigg: ceiling_right_mid;
+extensible ceiling_right_mid:
+ceiling_right_top,0,0,ceiling_right_mid;
+
+floor_left_big:=hex"58"; floor_left_Big:=hex"59";
+floor_left_bigg:=hex"5A"; floor_left_Bigg:=hex"5B";
+floor_left_bot:=bracket_left_bot;
+floor_left_mid:=bracket_left_mid;
+
+floor_right_big:=hex"5C"; floor_right_Big:=hex"5D";
+floor_right_bigg:=hex"5E"; floor_right_Bigg:=hex"5F";
+floor_right_bot:=bracket_right_bot;
+floor_right_mid:=bracket_right_mid;
+
+charlist floor_left_big: floor_left_Big:
+floor_left_bigg: floor_left_Bigg: floor_left_bot;
+extensible floor_left_bot:
+0,0,floor_left_bot,floor_left_mid;
+
+charlist floor_right_big: floor_right_Big:
+floor_right_bigg: floor_right_Bigg: floor_right_bot;
+extensible floor_right_bot:
+0,0,floor_right_bot,floor_right_mid;
+
+radical_sign:=hex"60"; radical_big :=hex"61";
+radical_Big :=hex"62"; radical_bigg:=hex"63";
+radical_Bigg:=hex"64"; radical_bot :=hex"65";
+radical_mod :=hex"66"; radical_top :=hex"67";
+
+charlist radical_big: radical_Big:
+radical_bigg: radical_Bigg: radical_top;
+extensible radical_top:
+radical_top,0,radical_bot,radical_mod;
+
+overbrace_left :=hex"68";
+overbrace_mid :=hex"69";
+overbrace_right :=hex"6A";
+overbrace_mod :=hex"6B";
+underbrace_left :=hex"6C";
+underbrace_mid :=hex"6D";
+underbrace_right:=hex"6E";
+underbrace_mod :=hex"6F";
+
+vert_mod:=hex"07"; vvert_mod:=hex"0F"; vvvert_mod:=hex"17";
+vert_thick_mod:=hex"1F"; left_filet:=hex"37"; right_filet:=hex"3F";
+
+extensible vert_mod: 0,0,0,vert_mod;
+extensible vvert_mod: 0,0,0,vvert_mod;
+extensible vvvert_mod: 0,0,0,vvvert_mod;
+extensible vert_thick_mod: 0,0,0,vert_thick_mod;
+extensible left_filet: left_filet,
+left_filet,0,left_filet;
+extensible right_filet: right_filet,
+right_filet,0,right_filet;
+
+% BONUS
+
+group_left_big:=hex"76";
+group_right_big:=hex"77";
+
+% lgroup
+charlist group_left_big: brace_left_bot;
+extensible brace_left_bot:
+brace_left_top,0,brace_left_bot,brace_left_mod;
+% rgroup
+charlist group_right_big: brace_right_bot;
+extensible brace_right_bot:
+brace_right_top,0,brace_right_bot,brace_right_mod;
+
+% lmoustache, hope it works
+extensible paren_left_bot:
+brace_left_top,0,brace_right_bot,brace_left_mod;
+% rmoustache, hope it works
+extensible paren_right_bot:
+brace_right_top,0,brace_left_bot,brace_right_mod;
+
+input mathbdel;
+
+input mathacnt;
+
+bplus_sign :=hex"90"; Bplus_sign :=hex"A0";
+btimes_sign :=hex"91"; Btimes_sign :=hex"A1";
+bcomplement :=hex"92"; Bcomplement :=hex"A2";
+%btruc_sign :=hex"93"; Btruc_sign :=hex"A3";
+%bcurt_sign :=hex"94"; Bcurt_sign :=hex"A4";
+bcap_sign :=hex"93"; Bcap_sign :=hex"A3";
+bcup_sign :=hex"94"; Bcup_sign :=hex"A4";
+bcup_plus :=hex"95"; Bcup_plus :=hex"A5";
+bsqcap_sign :=hex"96"; Bsqcap_sign :=hex"A6";
+bsqcup_sign :=hex"97"; Bsqcup_sign :=hex"A7";
+bsqcup_plus :=hex"98"; Bsqcup_plus :=hex"A8";
+bwedge_sign :=hex"99"; Bwedge_sign :=hex"A9";
+bvee_sign :=hex"9A"; Bvee_sign :=hex"AA";
+bwedge_curly:=hex"9B"; Bwedge_curly:=hex"AB";
+bvee_curly :=hex"9C"; Bvee_curly :=hex"AC";
+
+charlist bplus_sign: Bplus_sign;
+charlist btimes_sign: Btimes_sign;
+charlist bcomplement: Bcomplement;
+%charlist btruc_sign: Btruc_sign;
+%charlist bcurt_sign: Bcurt_sign;
+charlist bcap_sign: Bcap_sign;
+charlist bcup_sign: Bcup_sign;
+charlist bcup_plus: Bcup_plus;
+charlist bsqcap_sign: Bsqcap_sign;
+charlist bsqcup_sign: Bsqcup_sign;
+charlist bsqcup_plus: Bsqcup_plus;
+charlist bwedge_sign: Bwedge_sign;
+charlist bvee_sign: Bvee_sign;
+charlist bwedge_curly: Bwedge_curly;
+charlist bvee_curly: Bvee_curly;
+
+summation_sign :=hex"B0"; Summation_sign :=hex"B8";
+product_sign :=hex"B1"; Product_sign :=hex"B9";
+coproduct_sign :=hex"B2"; Coproduct_sign :=hex"BA";
+bintegral_sign :=hex"B3"; Bintegral_sign :=hex"BB";
+bintegral_double :=hex"B4"; Bintegral_double :=hex"BC";
+bintegral_triple :=hex"B5"; Bintegral_triple :=hex"BD";
+bintegral_contour:=hex"B6"; Bintegral_contour:=hex"BE";
+bintegral_dblcont:=hex"B7"; Bintegral_dblcont:=hex"BF";
+
+charlist summation_sign: Summation_sign;
+charlist product_sign: Product_sign;
+charlist coproduct_sign: Coproduct_sign;
+charlist bintegral_sign: Bintegral_sign;
+charlist bintegral_double: Bintegral_double;
+charlist bintegral_triple: Bintegral_triple;
+charlist bintegral_contour: Bintegral_contour;
+charlist bintegral_dblcont: Bintegral_dblcont;
+
+%small_summation_sign:=hex"40";
+%small_product_sign:=hex"41";
+%small_coproduct_sign:=hex"42";
+%complement:=hex"43";
+%bold_complement:=hex"44";
+%bold_cup:=hex"45";
+%bold_cap:=hex"46";
+%Bourbaki_Z:=hex"47";
+%btriangle_up:=hex"48";
+%btriangle_down:=hex"49";
+%bBourbaki_Z:=hex"4A";
+%BBourbaki_Z:=hex"4B";
+%charlist bBourbaki_Z:BBourbaki_Z;
+
+input mathbigs;
+input mathltlk;
+
+main_name_string:="bcircle";% ``b'' stands for big.
+t:=hex"C0";
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ main_name_with($):=t; t:=t+1; endfor;
+
+input mathmbcb;
+
+main_name_string:="bbox";% ``b'' stands for big.
+t:=hex"D0";
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ main_name_with($):=t; t:=t+1; endfor;
+
+input mathmbcb;
+
+main_name_string:="Bcircle";% ``B'' stands for Big.
+t:=hex"E0";
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ main_name_with($):=t; t:=t+1; endfor;
+
+input mathmbcb;
+
+main_name_string:="Bbox";% ``B'' stands for Big.
+t:=hex"F0";
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ main_name_with($):=t; t:=t+1; endfor;
+
+input mathmbcb;
+
+forsuffixes $=_plus,_minus,_times,_division,
+ _dot,_circle,_asterisk,_co_asterisk,
+ _left,_right,_top,_bot,
+ _sign,_slash,_backslash,_triangle_up:
+ charlist scantokens("bcircle" & str$):scantokens("Bcircle" & str$);
+ charlist scantokens("bbox" & str$):scantokens("Bbox" & str$);
+endfor;
+
+% see also:
+% _peace_and_love,_ying_yang,
+% _truc,_curt,_full_circle,_five_star,_six_star,
+% _triangle_down,_triangle_left,_triangle_right,
+% _top_dot_minus,_bot_dot_minus,_horiz,_vert,_cross,_across,
+% _wedge,_vee,
+% _black_left,_black_right,_black_top,_black_bot,
+% _black_northwest,_black_northeast,_black_southwest,_black_southeast:
+
+
+arrow_top:=hex"9D"; arrow_bot:=hex"9E"; arrow_mod:=hex"9F";
+extensible arrow_top: arrow_top,0,0,arrow_mod;
+extensible arrow_bot: 0,0,arrow_bot,arrow_mod;
+extensible arrow_mod: arrow_top,0,arrow_bot,arrow_mod;
+
+double_arrow_top:=hex"AD"; double_arrow_bot:=hex"AE";
+double_arrow_mod:=hex"AF";
+extensible double_arrow_top: double_arrow_top,0,0,double_arrow_mod;
+extensible double_arrow_bot: 0,0,double_arrow_bot,double_arrow_mod;
+extensible double_arrow_mod: double_arrow_top,0,double_arrow_bot,
+double_arrow_mod;
+
+input matharrw;
+
+% parameters for TFM files.
+
+font_slant=0;
+font_x_height=x_height#;
+%font_normal_stretch=3u#;
+%font_normal_shrink=2u#;
+font_quad=18u#+4letter_fit#;
+%font_extra_space=2u#;
+%font_normal_space=6u#+2letter_fit#;
+
+end.
+
+
+
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf b/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf
new file mode 100644
index 00000000000..e39b0e44d6b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf
@@ -0,0 +1,107 @@
+% blackboard typefaces by Anthony Phan.
+% file: maydigit.mf (Maya digits)
+% last modification: May 16, 2005.
+
+numeric fig_width#;
+fig_width#=max(dtsz#,stem#*(1++slant));
+
+use_rule1;
+
+beginchar("0",20u#+2appr#,fig_height#,0);
+ "Maya numeral 0";
+% italcorr fig_height#*slant-0.5u#;
+ numeric a; a=vround 0.2(h+d);
+ pickup rule.nib; x2r=x4r=good.x 0.5w;
+ pickup fine.nib; y1r=y3r=good.y 0.5[-d,h];
+ top y2r=h+o; y2r-y1r=y1r-y4r; y1'=y2r; y3'=y4r;
+ lft x1r=appr; x3r-x2r=x2r-x1r;
+ x1'=1/3[x1r,x2r]; x3'=1/3[x3r,x4r];
+ pos2(rth,90); pos4(rth,-90);
+ penpos1(diag_width(rth-fine,z1'-z1r),180);
+ penpos3(diag_width(rth-fine,z3'-z3r),0);
+ path tmp_path[],tmp_path[]r,tmp_path[]l;
+ numeric t[],t[]r,t[]l;
+ forsuffixes $=,r,l:
+ z[5]$=z[1]$ shifted(0,a); z[7]$=z[4]$ shifted(0,a);
+ z[9]$=z[3]$ shifted(0,a);
+ tmp_path[1]$=z[1]${z1'-z1r}...z[2]${right}
+ ...z[3]${(z3'-z3r) xscaled -1};
+ tmp_path[2]$=z[9]${z3'-z3r}...z[7]${left}
+ ...z[5]${(z1r-z1') yscaled -1};
+ t[1]$=xpart(tmp_path[2]$
+ intersectiontimes subpath (1,2) of tmp_path[1]);
+ t[2]$=xpart(tmp_path[2]$
+ intersectiontimes subpath (0,1) of tmp_path[1]);
+ tmp_path[3]$=subpath (t[1]$,t[2]$) of tmp_path[2]$;
+ z[6]$=point t[1]$ of tmp_path[2]$;
+ z[8]$=point t[2]$ of tmp_path[2]$;
+ endfor
+ pickup rule.nib; x12=good.x 1/3[x2,x6];
+ x14=x2; x18-x16=x16-x14=x14-x12=x12-x10;
+ pickup fine.nib;
+ for i=10 step 2 until 18:
+ rt x[i]r-lft x[i]l=rth; 0.5[x[i]r,x[i]l]=x[i];
+ forsuffixes $=,r,l:
+ z[i]$=tmp_path[1] intersectionpoint ((x[i]$,y2r)..(x[i]$,y7r));
+ z[i+1]$=tmp_path[3] intersectionpoint ((x[i]$,y2r)..(x[i]$,y7r));
+ endfor
+ filldraw stroke z[i]e..z[i+1]e;
+ endfor
+ filldraw stroke tmp_path[1]e; filldraw stroke tmp_path[3]e;
+ filldraw stroke z3e{z3'-z3r}...z4e{left}...z1e{(z1r-z1') yscaled -1};
+ penlabels(range 1 thru 19); labels(1',3');
+endchar;
+
+beginchar("1",fig_width#+2appr#,fig_height#,0);
+ "Maya numeral 1 (hun)";
+% italcorr fig_height#*slant-0.5u#;
+ pickup fine.nib;
+ adjust_dot1((0.5w,0.5h),dtsz,false,false);
+ dot(1,1');
+endchar;
+
+beginchar("2",fig_width#+2appr#,fig_height#,0);
+ "Maya numeral 2 (ca)";
+% italcorr fig_height#*slant-0.5u#;
+ pickup fine.nib;
+ adjust_dot1((0.5w,0.25h),dtsz,false,false);
+ dot(1,1');
+ adjust_dot2((0.5w,0.75h),dtsz,false,false);
+ dot(2,2');
+endchar;
+
+beginchar("3",fig_width#+2appr#,fig_height#,0);
+ "Maya numeral 3 (ox)";
+% italcorr fig_height#*slant-0.5u#;
+ pickup fine.nib;
+ adjust_dot1((0.5w,h/6),dtsz,false,false);
+ dot(1,1');
+ adjust_dot2((0.5w,0.5h),dtsz,false,false);
+ dot(2,2');
+ x3=x1; x3'=x1'; y2-y1=y3-y2; y2'-y1'=y3'-y2'; dot(3,3');
+endchar;
+
+beginchar("4",fig_width#+2appr#,fig_height#,0);
+ "Maya numeral 4 (can)";
+% italcorr fig_height#*slant-0.5u#;
+ pickup fine.nib;
+ adjust_dot1((0.5w,0.5dtsz),dtsz,false,false);
+ dot(1,1');
+ adjust_dot2((0.5w,1/3(h-dtsz)+0.5dtsz),dtsz,false,false);
+ dot(2,2');
+ x3=x1; x3'=x1'; y2-y1=y3-y2; y2'-y1'=y3'-y2'; dot(3,3');
+ x4=x1; x4'=x1'; y2-y1=y4-y3; y2'-y1'=y4'-y3'; dot(4,4');
+endchar;
+
+beginchar("5",fig_width#+2appr#,fig_height#,0);
+ "Maya numeral 5 (ho)";
+% italcorr fig_height#*slant-0.5u#;
+ pickup fine.nib; top y1=h; bot y2=0;
+ lft x1l=lft x2l=hround(0.5w-0.5stem);
+ pos1(stem,0); pos2(stem,0); filldraw stroke z1e..z2e;
+ penlabels(1,2);
+endchar;
+
+% 6=uac, 7=uc, 8=vaxac, 9=bolon, 10=lahun
+% 11=hun lahun, 12=ca lahun, 13=ox lahun.
+
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfm
new file mode 100644
index 00000000000..76f94e650e3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfm
new file mode 100644
index 00000000000..84b0b87725d
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfm
new file mode 100644
index 00000000000..fb5c2df7823
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfm
new file mode 100644
index 00000000000..a1b0504219f
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfm
new file mode 100644
index 00000000000..3fec51af8a1
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfm
new file mode 100644
index 00000000000..e48960d3a2a
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfm
new file mode 100644
index 00000000000..a3397c12ad7
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfm
new file mode 100644
index 00000000000..84c03c86e95
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfm
new file mode 100644
index 00000000000..30646b4bf03
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfm
new file mode 100644
index 00000000000..30646b4bf03
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm
new file mode 100644
index 00000000000..a1432cf39e9
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm
new file mode 100644
index 00000000000..f4b9e2b6138
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm
new file mode 100644
index 00000000000..7d3c99723f2
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm
new file mode 100644
index 00000000000..4693f6372c3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm
new file mode 100644
index 00000000000..6ccd97f6000
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfm
new file mode 100644
index 00000000000..7989dbd6e73
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfm
new file mode 100644
index 00000000000..17b9bb04b9f
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfm
new file mode 100644
index 00000000000..9a075793795
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfm
new file mode 100644
index 00000000000..d7cceafdb25
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfm
new file mode 100644
index 00000000000..65043b6b39c
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm
new file mode 100644
index 00000000000..a557e4f6b41
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm
new file mode 100644
index 00000000000..1a5fe975a15
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm
new file mode 100644
index 00000000000..901a05116af
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm
new file mode 100644
index 00000000000..ed2b773245e
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm
new file mode 100644
index 00000000000..6e7f09bcb96
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm
Binary files differ
diff --git a/Master/texmf-dist/tex/generic/mathabx/mathabx.dcl b/Master/texmf-dist/tex/generic/mathabx/mathabx.dcl
new file mode 100644
index 00000000000..42d074c6cfc
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/mathabx/mathabx.dcl
@@ -0,0 +1,1127 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mathabx.dcl. Version: May 18, 2005.
+% Author: Anthony PHAN.
+% matches the ``mathabx'' family.
+% names almost fit newmath.sty (Matthias Clasen, Ulrik Vieth)
+% not necessarily designs...
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\@=11
+%\mathabx@undefine{\models} ????
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% to be defined
+%\DeclareMathSymbol{\bigtriangleup}{2}{matha}{"}
+%\DeclareMathSymbol{\bigtriangledown}{2}{matha}{"}
+%\DeclareMathSymbol{\square}{0}{matha}{"}
+%
+\symbol@message{Specials (matha/mathb)}
+%
+\mathabx@matha
+\DeclareMathSymbol{\notsign} {3}{matha}{"7F}
+\end@mathabx
+\mathabx@mathb
+\DeclareMathSymbol{\varnotsign} {3}{mathb}{"7F}
+\end@mathabx
+\mathabx@matha
+\DeclareMathSymbol{\cdotp} {6}{matha}{"04}% oddity
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Usual binary operators (matha)}
+%
+\DeclareMathSymbol{+} {2}{matha}{"00}
+\DeclareMathSymbol{-} {2}{matha}{"01}
+\DeclareMathSymbol{\times} {2}{matha}{"02}
+\DeclareMathSymbol{\div} {2}{matha}{"03}
+\DeclareMathSymbol{\cdot} {2}{matha}{"04}
+\DeclareMathSymbol{\circ} {2}{matha}{"05}
+\DeclareMathSymbol{*} {2}{matha}{"06}
+\DeclareMathSymbol{\ast} {2}{matha}{"06}
+\DeclareMathSymbol{\asterisk} {0}{matha}{"06}
+\DeclareMathSymbol{\coasterisk} {2}{matha}{"07}
+\DeclareMathSymbol{\pm} {2}{matha}{"08}
+\DeclareMathSymbol{\mp} {2}{matha}{"09}
+\DeclareMathSymbol{\ltimes} {2}{matha}{"0A}
+\DeclareMathSymbol{\rtimes} {2}{matha}{"0B}
+\DeclareMathSymbol{\diamond} {2}{matha}{"0C}
+\DeclareMathSymbol{\bullet} {2}{matha}{"0D}
+\DeclareMathSymbol{\star} {2}{matha}{"0E}
+\DeclareMathSymbol{\varstar} {2}{matha}{"0F}
+\DeclareMathSymbol{\ssum} {2}{matha}{"3C}
+\DeclareMathSymbol{\sprod} {2}{matha}{"3D}
+\DeclareMathSymbol{\amalg} {2}{matha}{"3E}
+\mathabx@aliases\amalg\scoprod
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Unusual binary operators (mathb)}
+%
+\DeclareMathSymbol{\dotplus} {2}{mathb}{"00}% name to be checked
+\DeclareMathSymbol{\dotdiv} {2}{mathb}{"01}% name to be checked
+\DeclareMathSymbol{\dottimes} {2}{mathb}{"02}% name to be checked
+\DeclareMathSymbol{\divdot} {2}{mathb}{"03}% name to be checked
+\DeclareMathSymbol{\udot} {2}{mathb}{"04}% name to be checked
+\DeclareMathSymbol{\square} {2}{mathb}{"05}% name to be checked
+\DeclareMathSymbol{\Asterisk} {2}{mathb}{"06}
+\DeclareMathSymbol{\bigast} {1}{mathb}{"06}
+\DeclareMathSymbol{\coAsterisk} {2}{mathb}{"07}
+\DeclareMathSymbol{\bigcoast} {1}{mathb}{"07}
+\DeclareMathSymbol{\circplus} {2}{mathb}{"08}% name to be checked
+\DeclareMathSymbol{\pluscirc} {2}{mathb}{"09}% name to be checked
+\DeclareMathSymbol{\convolution} {2}{mathb}{"0A}% name to be checked
+\DeclareMathSymbol{\divideontimes} {2}{mathb}{"0B}% name to be checked
+\DeclareMathSymbol{\blackdiamond} {2}{mathb}{"0C}% name to be checked
+\DeclareMathSymbol{\sqbullet} {2}{mathb}{"0D}% name to be checked
+ \mathabx@aliases\sqbullet\centerdot
+\DeclareMathSymbol{\bigstar} {2}{mathb}{"0E}
+\DeclareMathSymbol{\bigvarstar} {2}{mathb}{"0F}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Usual relations (matha)}
+%
+\DeclareMathSymbol{=} {3}{matha}{"10}
+\DeclareMathSymbol{\equiv} {3}{matha}{"11}
+\DeclareMathSymbol{\sim} {3}{matha}{"12}
+\DeclareMathSymbol{\approx} {3}{matha}{"13}
+\DeclareMathSymbol{\simeq} {3}{matha}{"14}
+\mathabx@undefine{\cong}
+\DeclareMathSymbol{\cong} {3}{matha}{"15}
+\DeclareMathSymbol{\asymp} {3}{matha}{"16}
+\DeclareMathSymbol{\divides} {3}{matha}{"17}
+%
+\mathabx@undefine{\neq}
+\DeclareMathSymbol{\neq} {3}{matha}{"18}
+ \mathabx@aliases\neq\ne
+\DeclareMathSymbol{\notequiv} {3}{matha}{"19}
+ \mathabx@aliases\notequiv\nequiv
+\DeclareMathSymbol{\nsim} {3}{matha}{"1A}
+\DeclareMathSymbol{\napprox} {3}{matha}{"1B}
+\DeclareMathSymbol{\nsimeq} {3}{matha}{"1C}
+\DeclareMathSymbol{\ncong} {3}{matha}{"1D}
+\DeclareMathSymbol{\notasymp} {3}{matha}{"1E}
+\DeclareMathSymbol{\notdivides} {3}{matha}{"1F}
+ \mathabx@aliases\notdivides\ndivides
+%
+%\DeclareMathSymbol{\approxeq} {3}{matha}{"1C}% name to be checked
+%\DeclareMathSymbol{\eqsim} {3}{matha}{"1E}% name to be checked
+%\DeclareMathSymbol{\napproxeq} {3}{matha}{"1D}
+%\DeclareMathSymbol{\neqsim} {3}{matha}{"1F}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Unusual relations (mathb)}
+%
+\DeclareMathSymbol{\topdoteq} {3}{mathb}{"10}% name to be checked
+\DeclareMathSymbol{\botdoteq} {3}{mathb}{"11}% name to be checked
+\DeclareMathSymbol{\dotseq} {3}{mathb}{"12}% name to be checked
+ \mathabx@aliases\dotseq{\doteqdot\Doteq}%
+\DeclareMathSymbol{\risingdotseq} {3}{mathb}{"13}% name to be checked
+\DeclareMathSymbol{\fallingdotseq} {3}{mathb}{"14}% name to be checked
+\DeclareMathSymbol{\coloneq} {3}{mathb}{"15}% name to be checked
+\DeclareMathSymbol{\eqcolon} {3}{mathb}{"16}% name to be checked
+\DeclareMathSymbol{\bumpedeq} {3}{mathb}{"17}% name to be checked
+\DeclareMathSymbol{\eqbumped} {3}{mathb}{"18}% name to be checked
+\DeclareMathSymbol{\Bumpedeq} {3}{mathb}{"19}% name to be checked
+\DeclareMathSymbol{\circeq} {3}{mathb}{"1A}% name to be checked
+\DeclareMathSymbol{\eqcirc} {3}{mathb}{"1B}% name to be checked
+\DeclareMathSymbol{\triangleq} {3}{mathb}{"1C}% name to be checked
+\DeclareMathSymbol{\corresponds} {3}{mathb}{"1D}% name to be checked
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Miscellaneous (matha)}
+%
+\DeclareMathSymbol{\neg} {0}{matha}{"20}
+ \mathabx@aliases\neg\lnot
+\DeclareMathSymbol{\ll} {3}{matha}{"21}
+\DeclareMathSymbol{\gg} {3}{matha}{"22}
+\DeclareMathSymbol{\hash} {0}{matha}{"23}
+\DeclareMathSymbol{\vdash} {3}{matha}{"24}
+\DeclareMathSymbol{\dashv} {3}{matha}{"25}
+\DeclareMathSymbol{\nvdash} {3}{matha}{"26}
+\DeclareMathSymbol{\ndashv} {3}{matha}{"27}
+\DeclareMathSymbol{\vDash} {3}{matha}{"28}
+\DeclareMathSymbol{\Dashv} {3}{matha}{"29}
+\DeclareMathSymbol{\nvDash} {3}{matha}{"2A}
+\DeclareMathSymbol{\nDashv} {3}{matha}{"2B}
+\DeclareMathSymbol{\Vdash} {3}{matha}{"2C}
+\DeclareMathSymbol{\dashV} {3}{matha}{"2D}
+\DeclareMathSymbol{\nVdash} {3}{matha}{"2E}
+\DeclareMathSymbol{\ndashV} {3}{matha}{"2F}
+%
+\DeclareMathSymbol{\degree} {0}{matha}{"30}
+\mathabx@undefine{\prime}
+\DeclareMathSymbol{\prime} {0}{matha}{"31}
+\DeclareMathSymbol{\second} {0}{matha}{"32}
+\DeclareMathSymbol{\third} {0}{matha}{"33}
+\DeclareMathSymbol{\fourth} {0}{matha}{"34}
+\DeclareMathSymbol{\flat} {0}{matha}{"35}
+\DeclareMathSymbol{\natural} {0}{matha}{"36}
+\DeclareMathSymbol{\sharp} {0}{matha}{"37}
+\DeclareMathSymbol{\infty} {0}{matha}{"38}
+\DeclareMathSymbol{\propto} {0}{matha}{"39}
+\DeclareMathSymbol{\dagger} {0}{matha}{"3A}
+\DeclareMathSymbol{\ddagger} {0}{matha}{"3B}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Miscellaneous (mathb)}
+%
+\DeclareMathSymbol{\between} {3}{mathb}{"20}
+\DeclareMathSymbol{\smile} {3}{mathb}{"21}
+\DeclareMathSymbol{\frown} {3}{mathb}{"22}
+\DeclareMathSymbol{\varhash} {0}{mathb}{"23}
+\DeclareMathSymbol{\leftthreetimes} {0}{mathb}{"24}
+\DeclareMathSymbol{\rightthreetimes}{0}{mathb}{"25}
+\DeclareMathSymbol{\pitchfork} {0}{mathb}{"26}
+\mathabx@undefine{\bowtie}
+\DeclareMathSymbol{\bowtie} {3}{mathb}{"27}
+ \mathabx@aliases\bowtie\Join
+\DeclareMathSymbol{\VDash} {3}{mathb}{"28}
+\DeclareMathSymbol{\DashV} {3}{mathb}{"29}
+\DeclareMathSymbol{\nVDash} {3}{mathb}{"2A}
+\DeclareMathSymbol{\nDashV} {3}{mathb}{"2B}
+\DeclareMathSymbol{\Vvdash} {3}{mathb}{"2C}
+\DeclareMathSymbol{\dashVv} {3}{mathb}{"2D}
+\DeclareMathSymbol{\nVvash} {3}{mathb}{"2E}
+\DeclareMathSymbol{\ndashVv} {3}{mathb}{"2F}
+%
+\DeclareMathSymbol{\therefore} {3}{mathb}{"36}
+\DeclareMathSymbol{\because} {3}{mathb}{"37}
+\DeclareMathAccent{\ring} {0}{mathb}{"38}
+\mathabx@undefine{\dot}
+\DeclareMathAccent{\dot} {0}{mathb}{"39}
+\mathabx@undefine{\ddot}
+\DeclareMathAccent{\ddot} {0}{mathb}{"3A}
+\mathabx@undefine{\dddot}
+\DeclareMathAccent{\dddot} {0}{mathb}{"3B}
+\mathabx@undefine{\ddddot}
+\DeclareMathAccent{\ddddot} {0}{mathb}{"3C}
+\mathabx@undefine{\angle}
+\DeclareMathSymbol{\angle} {0}{mathb}{"3D}
+\DeclareMathSymbol{\measuredangle} {0}{mathb}{"3E}
+\DeclareMathSymbol{\sphericalangle}{0}{mathb}{"3F}
+\DeclareMathSymbol{\rip} {0}{mathb}{"4F}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Delimiters as symbols (matha)}
+%
+\DeclareMathSymbol{(} {4}{matha}{"70}
+\DeclareMathSymbol{)} {5}{matha}{"71}
+\DeclareMathSymbol{[} {4}{matha}{"72}
+\DeclareMathSymbol{]} {5}{matha}{"73}
+%\DeclareMathSymbol{\lbrace} {4}{matha}{"74}% extens. delimiter
+%\DeclareMathSymbol{\rbrace} {5}{matha}{"75}% extens. delimiter
+% \mathabx@undefine{\backslash}
+% \DeclareMathSymbol{\backslash} {0}{matha}{"7A}% extens. delimiter
+\DeclareMathSymbol{\setminus} {0}{matha}{"7A}
+\DeclareMathSymbol{/} {0}{matha}{"7B}
+\mathabx@undefine{\|}
+\DeclareMathSymbol{|} {0}{matha}{"7C}
+\DeclareMathSymbol{\mid} {3}{matha}{"7C}
+% \DeclareMathSymbol{\|} {0}{matha}{"7D}% extens. delimiter
+% \DeclareMathSymbol{\vvvert} {0}{matha}{"7E}% extens. delimiter
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Delimiters as symbols (mathb)}
+%
+\DeclareMathSymbol{\lcorners} {4}{mathb}{"76}% name to be checked
+\DeclareMathSymbol{\rcorners} {5}{mathb}{"77}% name to be checked
+\mathabx@undefine{\ulcorner}
+\DeclareMathSymbol{\ulcorner} {4}{mathb}{"78}% name to be checked
+\mathabx@undefine{\urcorner}
+\DeclareMathSymbol{\urcorner} {5}{mathb}{"79}% name to be checked
+\mathabx@undefine{\llcorner}
+\DeclareMathSymbol{\llcorner} {4}{mathb}{"7A}% name to be checked
+\mathabx@undefine{\lrcorner}
+\DeclareMathSymbol{\lrcorner} {5}{mathb}{"7B}% name to be checked
+%
+\symbol@message{Astronomical symbols (mathb)}
+%
+\DeclareMathSymbol{\Sun} {0}{mathb}{"40}
+\DeclareMathSymbol{\Mercury} {0}{mathb}{"41}
+\DeclareMathSymbol{\Venus} {0}{mathb}{"42}
+ \mathabx@aliases\Venus\girl
+\DeclareMathSymbol{\Earth} {0}{mathb}{"43}
+\DeclareMathSymbol{\Mars} {0}{mathb}{"44}
+ \mathabx@aliases\Mars\boy
+\DeclareMathSymbol{\Jupiter} {0}{mathb}{"45}
+\DeclareMathSymbol{\Saturn} {0}{mathb}{"46}
+\DeclareMathSymbol{\Uranus} {0}{mathb}{"47}
+\DeclareMathSymbol{\Neptune} {0}{mathb}{"48}
+\DeclareMathSymbol{\Pluto} {0}{mathb}{"49}
+\DeclareMathSymbol{\varEarth} {0}{mathb}{"4A}
+\DeclareMathSymbol{\leftmoon} {0}{mathb}{"4B}
+ \mathabx@aliases\leftmoon\Moon
+\DeclareMathSymbol{\rightmoon} {0}{mathb}{"4C}
+\DeclareMathSymbol{\fullmoon} {0}{mathb}{"4D}
+\DeclareMathSymbol{\newmoon} {0}{mathb}{"4E}
+%
+\DeclareMathSymbol{\Aries} {0}{mathb}{"50}
+\DeclareMathSymbol{\Taurus} {0}{mathb}{"51}
+\DeclareMathSymbol{\Gemini} {0}{mathb}{"52}
+%\DeclareMathSymbol{\Cancer} {0}{mathb}{"53}
+\DeclareMathSymbol{\Leo} {0}{mathb}{"54}
+%\DeclareMathSymbol{\Virgo} {0}{mathb}{"55}
+\DeclareMathSymbol{\Libra} {0}{mathb}{"56}
+\DeclareMathSymbol{\Scorpio} {0}{mathb}{"57}
+%\DeclareMathSymbol{\Sagittarius} {0}{mathb}{"58}
+%\DeclareMathSymbol{\Capricornus} {0}{mathb}{"59}
+%\DeclareMathSymbol{\Aquarius} {0}{mathb}{"59}
+%\DeclareMathSymbol{\Pisces} {0}{mathb}{"59}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Letter like symbols (matha)}
+%
+\DeclareMathSymbol{\forall} {0}{matha}{"40}
+\DeclareMathSymbol{\complement} {0}{matha}{"41}
+\DeclareMathSymbol{\partial} {0}{matha}{"42}
+% \mathabx@aliases\partial\partialit
+\DeclareMathSymbol{\partialslash} {0}{matha}{"43}
+\DeclareMathSymbol{\exists} {0}{matha}{"44}
+\DeclareMathSymbol{\nexists} {0}{matha}{"45}
+\DeclareMathSymbol{\Finv} {0}{matha}{"46}
+\DeclareMathSymbol{\Game} {0}{matha}{"47}
+\DeclareMathSymbol{\emptyset} {0}{matha}{"48}
+\DeclareMathSymbol{\diameter} {0}{matha}{"49}
+\DeclareMathSymbol{\top} {0}{matha}{"4A}
+\DeclareMathSymbol{\bot} {0}{matha}{"4B}
+\DeclareMathSymbol{\perp} {3}{matha}{"4B}
+\DeclareMathSymbol{\nottop} {0}{matha}{"4C}
+\DeclareMathSymbol{\notbot} {0}{matha}{"4D}
+\DeclareMathSymbol{\notperp} {3}{matha}{"4D}
+\DeclareMathSymbol{\curlywedge} {2}{matha}{"4E}
+\DeclareMathSymbol{\curlyvee} {2}{matha}{"4F}
+%
+\DeclareMathSymbol{\in} {3}{matha}{"50}
+\DeclareMathSymbol{\owns} {3}{matha}{"51}
+ \mathabx@aliases\owns\ni
+\mathabx@undefine{\notin}
+\DeclareMathSymbol{\notin} {3}{matha}{"52}
+\DeclareMathSymbol{\notowner} {3}{matha}{"53}
+ \mathabx@aliases\notowner{\notni\notowns}%
+\DeclareMathSymbol{\varnotin} {3}{matha}{"54}
+\DeclareMathSymbol{\varnotowner} {3}{matha}{"55}
+\DeclareMathSymbol{\barin} {3}{matha}{"56}% name to be checked
+\DeclareMathSymbol{\ownsbar} {3}{matha}{"57}% name to be checked
+ \mathabx@aliases\ownsbar\nibar% Arghl
+%
+\DeclareMathSymbol{\cap} {2}{matha}{"58}
+\DeclareMathSymbol{\cup} {2}{matha}{"59}
+\DeclareMathSymbol{\uplus} {2}{matha}{"5A}
+\DeclareMathSymbol{\sqcap} {2}{matha}{"5B}
+\DeclareMathSymbol{\sqcup} {2}{matha}{"5C}
+\DeclareMathSymbol{\squplus} {2}{matha}{"5D}
+\DeclareMathSymbol{\wedge} {2}{matha}{"5E}
+ \mathabx@aliases\wedge\land
+\DeclareMathSymbol{\vee} {2}{matha}{"5F}
+ \mathabx@aliases\vee\lor
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Letter like symbols (mathb)}
+%
+\DeclareMathSymbol{\barwedge} {2}{mathb}{"58}
+\DeclareMathSymbol{\veebar} {2}{mathb}{"59}
+\DeclareMathSymbol{\doublebarwedge}{2}{mathb}{"5A}
+\DeclareMathSymbol{\veedoublebar} {2}{mathb}{"5B}
+\DeclareMathSymbol{\doublecap} {2}{mathb}{"5C}
+ \mathabx@aliases\doublecap\Cap
+\DeclareMathSymbol{\doublecup} {2}{mathb}{"5D}
+ \mathabx@aliases\doublecup\Cup
+\DeclareMathSymbol{\sqdoublecap} {2}{mathb}{"5E}
+ \mathabx@aliases\sqdoublecap\sqCap
+\DeclareMathSymbol{\sqdoublecup} {2}{mathb}{"5F}
+ \mathabx@aliases\sqdoublecup\sqCup
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Subset's and superset's signs (matha)}
+%
+\DeclareMathSymbol{\subset} {3}{matha}{"80}
+\DeclareMathSymbol{\supset} {3}{matha}{"81}
+\DeclareMathSymbol{\nsubset} {3}{matha}{"82}
+\DeclareMathSymbol{\nsupset} {3}{matha}{"83}
+\DeclareMathSymbol{\subseteq} {3}{matha}{"84}
+\DeclareMathSymbol{\supseteq} {3}{matha}{"85}
+\DeclareMathSymbol{\nsubseteq} {3}{matha}{"86}
+\DeclareMathSymbol{\nsupseteq} {3}{matha}{"87}
+\DeclareMathSymbol{\subsetneq} {3}{matha}{"88}
+\DeclareMathSymbol{\supsetneq} {3}{matha}{"89}
+\DeclareMathSymbol{\varsubsetneq} {3}{matha}{"8A}
+\DeclareMathSymbol{\varsupsetneq} {3}{matha}{"8B}
+%
+\DeclareMathSymbol{\subseteqq} {3}{matha}{"8C}
+\DeclareMathSymbol{\supseteqq} {3}{matha}{"8D}
+\DeclareMathSymbol{\nsubseteqq} {3}{matha}{"8E}
+\DeclareMathSymbol{\nsupseteqq} {3}{matha}{"8F}
+\DeclareMathSymbol{\subsetneqq} {3}{matha}{"90}
+\DeclareMathSymbol{\supsetneqq} {3}{matha}{"91}
+\DeclareMathSymbol{\varsubsetneqq} {3}{matha}{"92}
+\DeclareMathSymbol{\varsupsetneqq} {3}{matha}{"93}
+%
+\DeclareMathSymbol{\Subset} {3}{matha}{"94}
+\DeclareMathSymbol{\Supset} {3}{matha}{"95}
+\DeclareMathSymbol{\nSubset} {3}{matha}{"96}
+\DeclareMathSymbol{\nSupset} {3}{matha}{"97}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Square subset's and superset's signs (mathb)}
+\mathabx@undefine{\sqsubset}
+\DeclareMathSymbol{\sqsubset} {3}{mathb}{"80}
+\mathabx@undefine{\sqsupset}
+\DeclareMathSymbol{\sqsupset} {3}{mathb}{"81}
+\DeclareMathSymbol{\nsqsubset} {3}{mathb}{"82}
+\DeclareMathSymbol{\nsqsupset} {3}{mathb}{"83}
+\DeclareMathSymbol{\sqsubseteq} {3}{mathb}{"84}
+\DeclareMathSymbol{\sqsupseteq} {3}{mathb}{"85}
+\DeclareMathSymbol{\nsqsubseteq} {3}{mathb}{"86}
+\DeclareMathSymbol{\nsqsupseteq} {3}{mathb}{"87}
+\DeclareMathSymbol{\sqsubsetneq} {3}{mathb}{"88}
+\DeclareMathSymbol{\sqsupsetneq} {3}{mathb}{"89}
+\DeclareMathSymbol{\varsqsubsetneq} {3}{mathb}{"8A}
+\DeclareMathSymbol{\varsqsupsetneq} {3}{mathb}{"8B}
+%
+\DeclareMathSymbol{\sqsubseteqq} {3}{mathb}{"8C}
+\DeclareMathSymbol{\sqsupseteqq} {3}{mathb}{"8D}
+\DeclareMathSymbol{\nsqsubseteqq} {3}{mathb}{"8E}
+\DeclareMathSymbol{\nsqsupseteqq} {3}{mathb}{"8F}
+\DeclareMathSymbol{\sqsubsetneqq} {3}{mathb}{"90}
+\DeclareMathSymbol{\sqsupsetneqq} {3}{mathb}{"91}
+\DeclareMathSymbol{\varsqsubsetneqq}{3}{mathb}{"92}
+\DeclareMathSymbol{\varsqsupsetneqq}{3}{mathb}{"93}
+%
+\DeclareMathSymbol{\sqSubset} {3}{mathb}{"94}
+\DeclareMathSymbol{\sqSupset} {3}{mathb}{"95}
+\DeclareMathSymbol{\nsqSubset} {3}{mathb}{"96}
+\DeclareMathSymbol{\nsqSupset} {3}{mathb}{"97}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Triangles as relations (matha)}
+%
+\DeclareMathSymbol{\triangleleft} {2}{matha}{"98}
+\DeclareMathSymbol{\vartriangleleft} {3}{matha}{"98}
+\DeclareMathSymbol{\triangleright} {2}{matha}{"99}
+\DeclareMathSymbol{\vartriangleright}{3}{matha}{"99}
+\DeclareMathSymbol{\ntriangleleft} {3}{matha}{"9A}
+\DeclareMathSymbol{\ntriangleright} {3}{matha}{"9B}
+\DeclareMathSymbol{\trianglelefteq} {3}{matha}{"9C}
+\DeclareMathSymbol{\trianglerighteq} {3}{matha}{"9D}
+\DeclareMathSymbol{\ntrianglelefteq} {3}{matha}{"9E}
+\DeclareMathSymbol{\ntrianglerighteq}{3}{matha}{"9F}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Triangles as binary operators (mathb)}
+%
+\DeclareMathSymbol{\smalltriangleup} {2}{mathb}{"98}% name to be checked
+\DeclareMathSymbol{\smalltriangledown} {2}{mathb}{"99}% name to be checked
+\DeclareMathSymbol{\smalltriangleleft} {2}{mathb}{"9A}% name to be checked
+\DeclareMathSymbol{\smalltriangleright}{2}{mathb}{"9B}% name to be checked
+\DeclareMathSymbol{\blacktriangleup} {2}{mathb}{"9C}% name to be checked
+\DeclareMathSymbol{\blacktriangledown} {2}{mathb}{"9D}% name to be checked
+\DeclareMathSymbol{\blacktriangleleft} {2}{mathb}{"9E}% name to be checked
+\DeclareMathSymbol{\blacktriangleright}{2}{mathb}{"9F}% name to be checked
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Inequalities (matha)}
+%
+\DeclareMathSymbol{<} {3}{matha}{"A0}
+\DeclareMathSymbol{>} {3}{matha}{"A1}
+\DeclareMathSymbol{\nless} {3}{matha}{"A2}
+\DeclareMathSymbol{\ngtr} {3}{matha}{"A3}
+\DeclareMathSymbol{\leq} {3}{matha}{"A4}
+ \mathabx@aliases\leq{\le\leqslant}%
+\DeclareMathSymbol{\geq} {3}{matha}{"A5}
+ \mathabx@aliases\geq{\ge\geqslant}%
+\DeclareMathSymbol{\nleq} {3}{matha}{"A6}
+ \mathabx@aliases\nleq\nleqslant
+\DeclareMathSymbol{\ngeq} {3}{matha}{"A7}
+ \mathabx@aliases\ngeq\ngeqslant
+\DeclareMathSymbol{\varleq} {3}{matha}{"A8}
+\DeclareMathSymbol{\vargeq} {3}{matha}{"A9}
+\DeclareMathSymbol{\nvarleq} {3}{matha}{"AA}
+\DeclareMathSymbol{\nvargeq} {3}{matha}{"AB}
+\DeclareMathSymbol{\lneq} {3}{matha}{"AC}
+\DeclareMathSymbol{\gneq} {3}{matha}{"AD}
+\DeclareMathSymbol{\leqq} {3}{matha}{"AE}
+\DeclareMathSymbol{\geqq} {3}{matha}{"AF}
+\DeclareMathSymbol{\nleqq} {3}{matha}{"B0}
+\DeclareMathSymbol{\ngeqq} {3}{matha}{"B1}
+\DeclareMathSymbol{\lneqq} {3}{matha}{"B2}
+\DeclareMathSymbol{\gneqq} {3}{matha}{"B3}
+\DeclareMathSymbol{\lvertneqq} {3}{matha}{"B4}
+\DeclareMathSymbol{\gvertneqq} {3}{matha}{"B5}
+\DeclareMathSymbol{\eqslantless} {3}{matha}{"B6}
+\DeclareMathSymbol{\eqslantgtr} {3}{matha}{"B7}
+\DeclareMathSymbol{\neqslantless}{3}{matha}{"B8}
+\DeclareMathSymbol{\neqslantgtr} {3}{matha}{"B9}
+\DeclareMathSymbol{\lessgtr} {3}{matha}{"BA}
+\DeclareMathSymbol{\gtrless} {3}{matha}{"BB}
+\DeclareMathSymbol{\lesseqgtr} {3}{matha}{"BC}
+\DeclareMathSymbol{\gtreqless} {3}{matha}{"BD}
+\DeclareMathSymbol{\lesseqqgtr} {3}{matha}{"BE}
+\DeclareMathSymbol{\gtreqqless} {3}{matha}{"BF}
+%
+\DeclareMathSymbol{\lesssim} {3}{matha}{"C0}
+\DeclareMathSymbol{\gtrsim} {3}{matha}{"C1}
+\DeclareMathSymbol{\nlesssim} {3}{matha}{"C2}
+\DeclareMathSymbol{\ngtrsim} {3}{matha}{"C3}
+\DeclareMathSymbol{\lnsim} {3}{matha}{"C4}
+\DeclareMathSymbol{\gnsim} {3}{matha}{"C5}
+\DeclareMathSymbol{\lessapprox} {3}{matha}{"C6}
+\DeclareMathSymbol{\gtrapprox} {3}{matha}{"C7}
+\DeclareMathSymbol{\nlessapprox} {3}{matha}{"C8}
+\DeclareMathSymbol{\ngtrapprox} {3}{matha}{"C9}
+\DeclareMathSymbol{\lnapprox} {3}{matha}{"CA}
+\DeclareMathSymbol{\gnapprox} {3}{matha}{"CB}
+%
+\DeclareMathSymbol{\lessdot} {3}{matha}{"CC}
+\DeclareMathSymbol{\gtrdot} {3}{matha}{"CD}
+%
+\DeclareMathSymbol{\lll} {3}{matha}{"CE}
+\DeclareMathSymbol{\ggg} {3}{matha}{"CF}
+%
+\DeclareMathSymbol{\precdot} {3}{matha}{"CC}
+\DeclareMathSymbol{\succdot} {3}{matha}{"CD}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Inequalities (mathb)}
+%
+\DeclareMathSymbol{\prec} {3}{mathb}{"A0}
+\DeclareMathSymbol{\succ} {3}{mathb}{"A1}
+\DeclareMathSymbol{\nprec} {3}{mathb}{"A2}
+\DeclareMathSymbol{\nsucc} {3}{mathb}{"A3}
+\DeclareMathSymbol{\preccurlyeq} {3}{mathb}{"A4}
+\DeclareMathSymbol{\succcurlyeq} {3}{mathb}{"A5}
+\DeclareMathSymbol{\npreccurlyeq}{3}{mathb}{"A6}
+\DeclareMathSymbol{\nsucccurlyeq}{3}{mathb}{"A7}
+\DeclareMathSymbol{\preceq} {3}{mathb}{"A8}
+\DeclareMathSymbol{\succeq} {3}{mathb}{"A9}
+\DeclareMathSymbol{\npreceq} {3}{mathb}{"AA}
+\DeclareMathSymbol{\nsucceq} {3}{mathb}{"AB}
+\DeclareMathSymbol{\precneq} {3}{mathb}{"AC}
+\DeclareMathSymbol{\succneq} {3}{mathb}{"AD}
+\DeclareMathSymbol{\curlyeqprec} {3}{mathb}{"B6}
+\DeclareMathSymbol{\curlyeqsucc} {3}{mathb}{"B7}
+\DeclareMathSymbol{\ncurlyeqprec}{3}{mathb}{"B8}
+\DeclareMathSymbol{\ncurlyeqsucc}{3}{mathb}{"B9}
+%
+\DeclareMathSymbol{\precsim} {3}{mathb}{"C0}
+\DeclareMathSymbol{\succsim} {3}{mathb}{"C1}
+\DeclareMathSymbol{\nprecsim} {3}{mathb}{"C2}
+\DeclareMathSymbol{\nsuccsim} {3}{mathb}{"C3}
+\DeclareMathSymbol{\precnsim} {3}{mathb}{"C4}
+\DeclareMathSymbol{\succnsim} {3}{mathb}{"C5}
+\DeclareMathSymbol{\precapprox} {3}{mathb}{"C6}
+\DeclareMathSymbol{\succapprox} {3}{mathb}{"C7}
+\DeclareMathSymbol{\nprecapprox} {3}{mathb}{"C8}
+\DeclareMathSymbol{\nsuccapprox} {3}{mathb}{"C9}
+\DeclareMathSymbol{\precnapprox} {3}{mathb}{"CA}
+\DeclareMathSymbol{\succnapprox} {3}{mathb}{"CB}
+%
+\DeclareMathSymbol{\llcurly} {3}{mathb}{"CE}
+\DeclareMathSymbol{\ggcurly} {3}{mathb}{"CF}
+%
+% \DeclareMathSymbol{\leftthreetimes} {3}{mathb}{"56}
+% \DeclareMathSymbol{\rightthreetimes}{3}{mathb}{"57}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Arrows and harppons (matha)}
+%
+\DeclareMathSymbol{\leftarrow} {3}{matha}{"D0}
+ \mathabx@aliases\leftarrow\gets
+\DeclareMathSymbol{\rightarrow} {3}{matha}{"D1}
+ \mathabx@aliases\rightarrow\to
+% \DeclareMathSymbol{\uparrow} {3}{matha}{"D2}
+% \DeclareMathSymbol{\downarrow} {3}{matha}{"D3}
+\DeclareMathSymbol{\nwarrow} {3}{matha}{"D4}
+\DeclareMathSymbol{\nearrow} {3}{matha}{"D5}
+\DeclareMathSymbol{\swarrow} {3}{matha}{"D6}
+\DeclareMathSymbol{\searrow} {3}{matha}{"D7}
+\DeclareMathSymbol{\leftrightarrow} {3}{matha}{"D8}
+% \DeclareMathSymbol{\updownarrow} {3}{matha}{"D9}
+\DeclareMathSymbol{\nleftarrow} {3}{matha}{"DA}
+\DeclareMathSymbol{\nrightarrow} {3}{matha}{"DB}
+\DeclareMathSymbol{\nleftrightarrow} {3}{matha}{"DC}
+\mathabx@undefine{\relbar}
+\DeclareMathSymbol{\relbar} {3}{matha}{"DD}
+\DeclareMathSymbol{\mapstochar} {3}{matha}{"DE}
+\DeclareMathSymbol{\mapsfromchar} {3}{matha}{"DF}
+%
+\DeclareMathSymbol{\leftharpoonup} {3}{matha}{"E0}
+\DeclareMathSymbol{\rightharpoonup} {3}{matha}{"E1}
+\DeclareMathSymbol{\leftharpoondown} {3}{matha}{"E2}
+\DeclareMathSymbol{\rightharpoondown} {3}{matha}{"E3}
+\DeclareMathSymbol{\upharpoonleft} {3}{matha}{"E4}
+\DeclareMathSymbol{\downharpoonleft} {3}{matha}{"E5}
+\DeclareMathSymbol{\upharpoonright} {3}{matha}{"E6}
+\DeclareMathSymbol{\restriction} {0}{matha}{"E6}
+\DeclareMathSymbol{\downharpoonright} {3}{matha}{"E7}
+\DeclareMathSymbol{\leftrightharpoons} {3}{matha}{"E8}
+\mathabx@undefine{\rightleftharpoons}
+\DeclareMathSymbol{\rightleftharpoons} {3}{matha}{"E9}
+\DeclareMathSymbol{\updownharpoons} {3}{matha}{"EA}
+\DeclareMathSymbol{\downupharpoons} {3}{matha}{"EB}
+%
+\DeclareMathSymbol{\Leftarrow} {3}{matha}{"F0}
+\DeclareMathSymbol{\Rightarrow} {3}{matha}{"F1}
+% \DeclareMathSymbol{\Uparrow} {3}{matha}{"F2}
+% \DeclareMathSymbol{\Downarrow} {3}{matha}{"F3}
+\DeclareMathSymbol{\Leftrightarrow} {3}{matha}{"F4}
+% \DeclareMathSymbol{\Updownarrow} {3}{matha}{"F5}
+\DeclareMathSymbol{\nLeftarrow} {3}{matha}{"F6}
+\DeclareMathSymbol{\nRightarrow} {3}{matha}{"F7}
+\DeclareMathSymbol{\nLeftrightarrow} {3}{matha}{"F8}
+\mathabx@undefine{\Relbar}
+\DeclareMathSymbol{\Relbar} {3}{matha}{"F9}
+\DeclareMathSymbol{\Mapstochar} {3}{matha}{"FA}
+\DeclareMathSymbol{\Mapsfromchar} {3}{matha}{"FB}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Arrows and harpoons (mathb)}
+%
+\DeclareMathSymbol{\leftleftarrows} {3}{mathb}{"D0}
+\DeclareMathSymbol{\rightrightarrows} {3}{mathb}{"D1}
+\DeclareMathSymbol{\upuparrows} {3}{mathb}{"D2}
+\DeclareMathSymbol{\downdownarrows} {3}{mathb}{"D3}
+\DeclareMathSymbol{\leftrightarrows} {3}{mathb}{"D4}
+\DeclareMathSymbol{\rightleftarrows} {3}{mathb}{"D5}
+\DeclareMathSymbol{\updownarrows} {3}{mathb}{"D6}
+\DeclareMathSymbol{\downuparrows} {3}{mathb}{"D7}
+\DeclareMathSymbol{\leftleftharpoons} {3}{mathb}{"D8}
+\DeclareMathSymbol{\rightrightharpoons} {3}{mathb}{"D9}
+\DeclareMathSymbol{\upupharpoons} {3}{mathb}{"DA}
+\DeclareMathSymbol{\downdownharpoons} {3}{mathb}{"DB}
+\DeclareMathSymbol{\leftbarharpoon} {3}{mathb}{"DC}
+\DeclareMathSymbol{\rightbarharpoon} {3}{mathb}{"DD}
+\DeclareMathSymbol{\barleftharpoon} {3}{mathb}{"DE}
+\DeclareMathSymbol{\barrightharpoon} {3}{mathb}{"DF}
+\DeclareMathSymbol{\leftrightharpoon} {3}{mathb}{"E0}
+\DeclareMathSymbol{\rightleftharpoon} {3}{mathb}{"E1}
+%
+\DeclareMathSymbol{\rhook} {3}{mathb}{"E2}
+\DeclareMathSymbol{\lhook} {3}{mathb}{"E3}
+\DeclareMathSymbol{\diagup} {3}{mathb}{"E4}
+\DeclareMathSymbol{\diagdown} {3}{mathb}{"E5}
+%
+\DeclareMathSymbol{\Lsh} {3}{mathb}{"E8}
+ \mathabx@aliases\Lsh\ulsh
+\DeclareMathSymbol{\Rsh} {3}{mathb}{"E9}
+ \mathabx@aliases\Rsh\ursh
+\DeclareMathSymbol{\dlsh} {3}{mathb}{"EA}
+\DeclareMathSymbol{\drsh} {3}{mathb}{"EB}
+%
+\DeclareMathSymbol{\looparrowleft} {3}{mathb}{"EC}
+ \mathabx@aliases\looparrowleft\looparrowupleft
+\DeclareMathSymbol{\looparrowright} {3}{mathb}{"ED}
+ \mathabx@aliases\looparrowright\looparrowupright
+\DeclareMathSymbol{\looparrowdownleft} {3}{mathb}{"EE}
+\DeclareMathSymbol{\looparrowdownright} {3}{mathb}{"EF}
+%
+\DeclareMathSymbol{\curvearrowleft} {3}{mathb}{"F0}
+ \mathabx@aliases\curvearrowleft\curvearrowtopleft
+\DeclareMathSymbol{\curvearrowright} {3}{mathb}{"F1}
+ \mathabx@aliases\curvearrowright\curvearrowtopright
+\DeclareMathSymbol{\curvearrowleftright} {3}{mathb}{"F2}
+ \mathabx@aliases\curvearrowleftright\curvearrowtopleftright
+\DeclareMathSymbol{\curvearrowbotleft} {3}{mathb}{"F3}
+\DeclareMathSymbol{\curvearrowbotright} {3}{mathb}{"F4}
+\DeclareMathSymbol{\curvearrowbotleftright}{3}{mathb}{"F5}
+%
+\DeclareMathSymbol{\circlearrowleft} {3}{mathb}{"F6}
+\DeclareMathSymbol{\circlearrowright} {3}{mathb}{"F7}
+%
+\DeclareMathSymbol{\leftsquigarrow} {3}{mathb}{"F8}
+\DeclareMathSymbol{\rightsquigarrow} {3}{mathb}{"F9}
+\DeclareMathSymbol{\leftrightsquigarrow} {3}{mathb}{"FA}
+%\DeclareMathSymbol{????????} {3}{mathb}{"FB}
+%
+\DeclareMathSymbol{\lefttorightarrow} {3}{mathb}{"FC}
+\DeclareMathSymbol{\righttoleftarrow} {3}{mathb}{"FD}
+\DeclareMathSymbol{\uptodownarrow} {3}{mathb}{"FE}
+\DeclareMathSymbol{\downtouparrow} {3}{mathb}{"FF}
+\end@mathabx
+%
+\mathabx@matha
+\symbol@message{Circles (matha)}
+%
+\DeclareMathSymbol{\oplus} {2}{matha}{"60}
+\DeclareMathSymbol{\ominus} {2}{matha}{"61}
+ \mathabx@aliases\ominus\circleddash
+\DeclareMathSymbol{\otimes} {2}{matha}{"62}
+\DeclareMathSymbol{\odiv} {2}{matha}{"63}
+\DeclareMathSymbol{\odot} {2}{matha}{"64}
+\DeclareMathSymbol{\ocirc} {2}{matha}{"65}
+ \mathabx@aliases\ocirc\circledcirc
+\DeclareMathSymbol{\oasterisk} {2}{matha}{"66}
+ \mathabx@aliases\oasterisk\circledast
+\DeclareMathSymbol{\ocoasterisk} {2}{matha}{"67}
+\DeclareMathSymbol{\oleft} {2}{matha}{"68}
+\DeclareMathSymbol{\oright} {2}{matha}{"69}
+\DeclareMathSymbol{\otop} {2}{matha}{"6A}
+\DeclareMathSymbol{\obot} {2}{matha}{"6B}
+ \mathabx@aliases\obot\operp
+\DeclareMathSymbol{\ovoid} {2}{matha}{"6C}
+\DeclareMathSymbol{\oslash} {2}{matha}{"6D}
+\DeclareMathSymbol{\obackslash} {2}{matha}{"6E}
+\DeclareMathSymbol{\otriangleup} {2}{matha}{"6F}
+\end@mathabx
+%
+\mathabx@mathb
+\symbol@message{Boxes (mathb)}
+%
+\DeclareMathSymbol{\boxplus} {2}{mathb}{"60}
+\DeclareMathSymbol{\boxminus} {2}{mathb}{"61}
+ \mathabx@aliases\boxminus\boxeddash
+\DeclareMathSymbol{\boxtimes} {2}{mathb}{"62}
+\DeclareMathSymbol{\boxdiv} {2}{mathb}{"63}
+\DeclareMathSymbol{\boxdot} {2}{mathb}{"64}
+\DeclareMathSymbol{\boxcirc} {2}{mathb}{"65}
+ \mathabx@aliases\boxcirc\boxedcirc
+\DeclareMathSymbol{\boxasterisk} {2}{mathb}{"66}
+ \mathabx@aliases\boxasterisk\boxedast
+\DeclareMathSymbol{\boxcoasterisk}{2}{mathb}{"67}
+\DeclareMathSymbol{\boxleft} {2}{mathb}{"68}
+\DeclareMathSymbol{\boxright} {2}{mathb}{"69}
+\DeclareMathSymbol{\boxtop} {2}{mathb}{"6A}
+\DeclareMathSymbol{\boxbot} {2}{mathb}{"6B}
+ \mathabx@aliases\boxbot\boxperp
+\DeclareMathSymbol{\boxvoid} {2}{mathb}{"6C}
+\mathabx@undefine{\Box}
+\DeclareMathSymbol{\Box} {0}{mathb}{"6C}
+\DeclareMathSymbol{\boxslash} {2}{mathb}{"6D}
+\DeclareMathSymbol{\boxbackslash} {2}{mathb}{"6E}
+\DeclareMathSymbol{\boxtriangleup}{2}{mathb}{"6F}
+%
+\symbol@message{Mayan numerals $\mathbfont 0\ 1\ 2\ 3\ 4\ 5$.}%
+%
+\newcount\mayacnter%
+\newcount\mayacnta%
+\newcount\mayacntb%
+\newcount\mayacntc%
+\newdimen\mayawidth%
+%
+\def\mayaexpansion{%
+ \mayacntc=\mayacnta\mathbfont
+ \ifnum\mayacntc=0 0\else
+ \loop\ifnum\mayacntc>5\advance\mayacntc by -5\repeat
+ \the\mayacntc\mayacntc=\mayacnta
+ \loop\ifnum\mayacntc>5\advance\mayacntc by -5 5\repeat
+ \fi}%
+\def\mayarecurse{{%
+ \mayacnta=\mayacnter \divide\mayacnter by 20
+ \ifnum\mayacnter>0\mayarecurse\fi
+ \mayacntb=\mayacnter
+ \multiply\mayacntb by-20
+ \advance\mayacnta by\mayacntb
+ \hbox to\mayawidth{\hss\mayaexpansion\hss}}}%
+%
+\def\maya#1{%
+ \mayacnter=#1
+ \setbox0\hbox{\mathbfont 0}%
+ \mayawidth=\wd0
+ \left\mayaleftdelimiter
+ \vcenter{\mayarecurse}
+ \right\mayarightdelimiter}%
+\def\mayadigit#1{%
+ \mayacnta=#1\hbox{\mathbfont\mayaexpansion}}%
+\def\mayadelimiters(#1,#2){%
+ \let\mayaleftdelimiter=#1
+ \let\mayarightdelimiter=#2}%
+\mayadelimiters(|,|)%
+\end@mathabx%
+%
+\mathabx@mathx%
+\symbol@message{Large operators (mathx)}
+%
+\mathabx@undefine{\sum}
+\DeclareMathSymbol{\sum} {1}{mathx}{"B0}
+\mathabx@undefine{\prod}
+\DeclareMathSymbol{\prod} {1}{mathx}{"B1}
+\mathabx@undefine{\coprod}
+\DeclareMathSymbol{\coprod} {1}{mathx}{"B2}
+\DeclareMathSymbol{\intop} {1}{mathx}{"B3}
+\DeclareMathSymbol{\iintop} {1}{mathx}{"B4}
+%\def\iintop{\intop\mkern-6mu\intop}
+ \mathabx@aliases\iintop\iint
+\DeclareMathSymbol{\iiintop}{1}{mathx}{"B5}
+%\def\iiintop{\intop\mkern-6mu\intop\mkern-6mu\intop}
+ \mathabx@aliases\iiintop\iiint
+\DeclareMathSymbol{\ointop} {1}{mathx}{"B6}
+ \mathabx@aliases\ointop\oint
+\DeclareMathSymbol{\oiintop}{1}{mathx}{"B7}
+ \mathabx@aliases\oiintop\oiint
+\def\int{\intop\nolimits}%
+% look yourself for \nolimits...
+\DeclareMathSymbol{\bigplus} {1}{mathx}{"90}
+\DeclareMathSymbol{\bigtimes} {1}{mathx}{"91}
+\DeclareMathSymbol{\bigcomplementop}{1}{mathx}{"92}%
+\def\bigcomplement{\bigcomplementop\nolimits}%
+%\DeclareMathSymbol{\bigtruc} {1}{mathx}{"93}
+%\DeclareMathSymbol{\bigcurt} {1}{mathx}{"94}
+\mathabx@undefine{\bigcap}%
+\DeclareMathSymbol{\bigcap} {1}{mathx}{"93}
+\mathabx@undefine{\bigcup}
+\DeclareMathSymbol{\bigcup} {1}{mathx}{"94}
+\mathabx@undefine{\biguplus}
+\DeclareMathSymbol{\biguplus} {1}{mathx}{"95}
+\mathabx@undefine{\bigsqcap}
+\DeclareMathSymbol{\bigsqcap} {1}{mathx}{"96}
+\mathabx@undefine{\bigsqcup}
+\DeclareMathSymbol{\bigsqcup} {1}{mathx}{"97}
+\DeclareMathSymbol{\bigsquplus} {1}{mathx}{"98}
+\mathabx@undefine{\bigwedge}
+\DeclareMathSymbol{\bigwedge} {1}{mathx}{"99}
+\mathabx@undefine{\bigvee}
+\DeclareMathSymbol{\bigvee} {1}{mathx}{"9A}
+\DeclareMathSymbol{\bigcurlywedge} {1}{mathx}{"9B}
+\DeclareMathSymbol{\bigcurlyvee} {1}{mathx}{"9C}
+%
+\symbol@message{Big circles (mathx)}
+%
+\mathabx@undefine{\bigoplus}
+\DeclareMathSymbol{\bigoplus} {1}{mathx}{"C0}
+\DeclareMathSymbol{\bigominus} {1}{mathx}{"C1}
+\mathabx@undefine{\bigotimes}
+\DeclareMathSymbol{\bigotimes} {1}{mathx}{"C2}
+\DeclareMathSymbol{\bigodiv} {1}{mathx}{"C3}
+\mathabx@undefine{\bigodot}
+\DeclareMathSymbol{\bigodot} {1}{mathx}{"C4}
+\DeclareMathSymbol{\bigocirc} {1}{mathx}{"C5}
+\DeclareMathSymbol{\bigoasterisk} {1}{mathx}{"C6}
+\DeclareMathSymbol{\bigocoasterisk}{1}{mathx}{"C7}
+\DeclareMathSymbol{\bigoleft} {1}{mathx}{"C8}
+\DeclareMathSymbol{\bigoright} {1}{mathx}{"C9}
+\DeclareMathSymbol{\bigotop} {1}{mathx}{"CA}
+\DeclareMathSymbol{\bigobot} {1}{mathx}{"CB}
+ \mathabx@aliases\bigotop\bigoperp
+\DeclareMathSymbol{\bigovoid} {1}{mathx}{"CC}
+\DeclareMathSymbol{\bigoslash} {1}{mathx}{"CD}
+\DeclareMathSymbol{\bigobackslash} {1}{mathx}{"CE}
+\DeclareMathSymbol{\bigotriangleup}{1}{mathx}{"CF}
+%
+\symbol@message{Big boxes (mathx)}
+%
+\DeclareMathSymbol{\bigboxplus} {1}{mathx}{"D0}
+\DeclareMathSymbol{\bigboxminus} {1}{mathx}{"D1}
+\DeclareMathSymbol{\bigboxtimes} {1}{mathx}{"D2}
+\DeclareMathSymbol{\bigboxdiv} {1}{mathx}{"D3}
+\DeclareMathSymbol{\bigboxdot} {1}{mathx}{"D4}
+\DeclareMathSymbol{\bigboxcirc} {1}{mathx}{"D5}
+\DeclareMathSymbol{\bigboxasterisk} {1}{mathx}{"D6}
+\DeclareMathSymbol{\bigboxcoasterisk}{1}{mathx}{"D7}
+\DeclareMathSymbol{\bigboxleft} {1}{mathx}{"D8}
+\DeclareMathSymbol{\bigboxright} {1}{mathx}{"D9}
+\DeclareMathSymbol{\bigboxtop} {1}{mathx}{"DA}
+\DeclareMathSymbol{\bigboxbot} {1}{mathx}{"DB}
+ \mathabx@aliases\bigboxbot\bigboxperp
+\DeclareMathSymbol{\bigboxvoid} {1}{mathx}{"DC}
+\DeclareMathSymbol{\bigboxslash} {1}{mathx}{"DD}
+\DeclareMathSymbol{\bigboxbackslash} {1}{mathx}{"DE}
+\DeclareMathSymbol{\bigboxtriangleup}{1}{mathx}{"DF}
+\end@mathabx
+%
+\mathabx@matha
+\mathabx@mathx
+\symbol@message{Delimiters (matha/mathx)}
+%
+\DeclareMathDelimiter{(} {matha}{"70}{mathx}{"00}
+\DeclareMathDelimiter{)} {matha}{"71}{mathx}{"08}
+\DeclareMathDelimiter{[} {matha}{"72}{mathx}{"10}
+\DeclareMathDelimiter{]} {matha}{"73}{mathx}{"18}
+\DeclareMathDelimiter{\lbrace} {4}{matha}{"74}{mathx}{"20}
+\ifx\@latexbug\undefined
+ \mathabx@aliases\lbrace\{
+\else% suggested by Patrick Cousot
+ \DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
+\fi
+\DeclareMathDelimiter{\rbrace} {5}{matha}{"75}{mathx}{"28}
+\ifx\@latexbug\undefined
+ \mathabx@aliases\rbrace\}
+\else
+ \DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
+\fi
+\DeclareMathDelimiter{\ldbrack} {4}{matha}{"76}{mathx}{"30}
+ \mathabx@aliases\ldbrack\lsemantic
+\DeclareMathDelimiter{\rdbrack} {5}{matha}{"77}{mathx}{"38}
+ \mathabx@aliases\rdbrack\rsemantic
+\DeclareMathDelimiter{\langle} {4}{matha}{"78}{mathx}{"40}
+\DeclareMathDelimiter{\rangle} {5}{matha}{"79}{mathx}{"44}
+\mathabx@undefine{\backslash}
+\DeclareMathDelimiter{\backslash} {0}{matha}{"7A}{mathx}{"48}
+\DeclareMathDelimiter{/} {matha}{"7B}{mathx}{"4C}
+\DeclareMathDelimiter{\vert} {0}{matha}{"7C}{mathx}{"07}
+\DeclareMathDelimiter{|} {matha}{"7C}{mathx}{"07}
+\DeclareMathDelimiter{\Vert} {0}{matha}{"7D}{mathx}{"0F}
+\DeclareMathDelimiter{\vvvert} {0}{matha}{"7E}{mathx}{"17}
+ \mathabx@aliases\Vert\|
+\DeclareMathDelimiter{\uparrow} {3}{matha}{"D2}{mathx}{"9D}
+\DeclareMathDelimiter{\downarrow} {3}{matha}{"D3}{mathx}{"9E}
+\DeclareMathDelimiter{\updownarrow}{3}{matha}{"D9}{mathx}{"9F}
+\DeclareMathDelimiter{\Uparrow} {3}{matha}{"F2}{mathx}{"AD}
+\DeclareMathDelimiter{\Downarrow} {3}{matha}{"F3}{mathx}{"AE}
+\DeclareMathDelimiter{\Updownarrow}{3}{matha}{"F5}{mathx}{"AF}
+\end@mathabx
+\end@mathabx
+\mathabx@mathb
+\mathabx@mathx
+\symbol@message{Delimiters (mathb/mathx)}
+%
+\DeclareMathDelimiter{\lgroup} {4}{mathb}{"70}{mathx}{"76}% fully supp.
+\DeclareMathDelimiter{\rgroup} {5}{mathb}{"71}{mathx}{"77}% fully supp.
+\DeclareMathDelimiter{\lceil} {4}{mathb}{"72}{mathx}{"50}
+\DeclareMathDelimiter{\rceil} {5}{mathb}{"73}{mathx}{"54}
+\DeclareMathDelimiter{\lfloor} {4}{mathb}{"74}{mathx}{"58}
+\DeclareMathDelimiter{\rfloor} {5}{mathb}{"75}{mathx}{"5C}
+\DeclareMathDelimiter{\thickvert} {0}{mathb}{"7E}{mathx}{"1F}
+\end@mathabx
+\end@mathabx
+%
+\mathabx@mathx
+\symbol@message{Delimiters (mathx/mathx)}
+%
+\DeclareMathDelimiter{\lfilet} {4}{mathx}{"37}{mathx}{"37}
+\DeclareMathDelimiter{\rfilet} {5}{mathx}{"3F}{mathx}{"3F}
+%
+%\DeclareMathDelimiter{\lmoustache}{4}{mathx}{"05}{mathx}{"05}% not supp.
+%\DeclareMathDelimiter{\rmoustache}{5}{mathx}{"0D}{mathx}{"0D}% not supp.
+\end@mathabx
+%
+\mathabx@mathx
+\symbol@message{Pieces for over-under-braces and such (mathx)}
+%
+\DeclareMathSymbol{\braceld} {0}{mathx}{"68}
+\DeclareMathSymbol{\bracemd} {0}{mathx}{"69}
+\DeclareMathSymbol{\bracerd} {0}{mathx}{"6A}
+\DeclareMathSymbol{\bracexd} {0}{mathx}{"6B}
+\DeclareMathSymbol{\bracelu} {0}{mathx}{"6C}
+\DeclareMathSymbol{\bracemu} {0}{mathx}{"6D}
+\DeclareMathSymbol{\braceru} {0}{mathx}{"6E}
+\DeclareMathSymbol{\bracexu} {0}{mathx}{"6F}
+%
+% Borrowed from "newmath" by Matthias Clasen and Ulrik Vieth.
+%
+\def\braceexwd{2mu}%
+\def\bracevkern{0pt}%
+%
+% Remark: it seems that new horizontal braces may take
+% into account vertical skip in their native design.
+% We've followed this idea and not Knuth's construction.
+% But we can add or sustract \bracevkern.
+%
+\def\bracefill#1#2#3#4{$\m@th
+ #1#4\mkern-\braceexwd \cleaders\hbox{$#4$}\hfill
+ \mkern-\braceexwd#4#2#4\mkern-\braceexwd
+ \cleaders\hbox{$#4$}\hfill \mkern-\braceexwd#4#3$}%
+%
+\def\overbrace@#1#2{\mathop{\vbox{\m@th\ialign{##\crcr
+ \noalign{\kern\bracevkern}
+ #1\crcr\noalign{\kern\bracevkern\nointerlineskip}%
+ $\hfil\displaystyle{#2}\hfil$\crcr}}}\limits}%
+%
+\def\underbrace@#1#2{\mathop{\vtop{\m@th\ialign{##\crcr
+ $\hfil\displaystyle{#2}\hfil$\crcr
+ \noalign{\kern\bracevkern\nointerlineskip}
+ #1\crcr\noalign{\kern\bracevkern}}}}\limits}%
+% user-level macros
+\def\overbrace{\overbrace@{\bracefill\braceld\bracemd\bracerd\bracexd}}
+\def\underbrace{\underbrace@{\bracefill\bracelu\bracemu\braceru\bracexu}}
+\def\overgroup{\overbrace@{\bracefill\braceld{}\bracerd\bracexd}}
+\def\undergroup{\underbrace@{\bracefill\bracelu{}\braceru\bracexu}}
+%
+\symbol@message{Extensible accents (mathx)}
+%
+\DeclareMathAccent{\widehat} {0}{mathx}{"70}
+\DeclareMathAccent{\widecheck} {0}{mathx}{"71}
+\DeclareMathAccent{\widetilde} {0}{mathx}{"72}
+\DeclareMathAccent{\widebar} {0}{mathx}{"73}
+\DeclareMathAccent{\widearrow} {0}{mathx}{"74}
+\DeclareMathAccent{\wideparen} {0}{mathx}{"75}
+ \def\widering#1{\ring{\wideparen{#1}}}%
+ \def\widedot#1{\dot{\wideparen{#1}}}%
+ \def\wideddot#1{\ddot{\wideparen{#1}}}%
+ \def\widedddot#1{\dddot{\wideparen{#1}}}%
+ \def\wideddddot#1{\ddddot{\wideparen{#1}}}%
+\edef\surd{{\noexpand\mathchar"1\expandafter\hexnumber@
+ \ifx\@latexbug\undefined\mathxfam\else\symmathx\fi60}}%
+\ifx\@latexbug\undefined
+ \ifx\mathabx@matha\relax
+ \DeclareMathRadical{\sqrt}{matha}{"3F}{mathx}{"61}
+ \else
+ \DeclareMathRadical{\sqrt}{mathx}{"60}{mathx}{"61}
+ \fi
+\else% suggested by Kohsaku Hotta
+ \mathabx@undefine{\sqrtsign}
+ \ifx\mathabx@matha\relax
+ \DeclareMathRadical{\sqrtsign}{matha}{"3F}{mathx}{"61}
+ \else
+ \DeclareMathRadical{\sqrtsign}{mathx}{"60}{mathx}{"61}
+ \fi
+\fi
+\end@mathabx
+%
+%
+% the \not construction
+%
+\long\def\@gobble#1{}
+%
+\def\not#1{%
+\let\@@not=\not \let\@@n=\n \let\not=\relax \let\n=\relax
+\expandafter\ifx\csname not\expandafter\@gobble\string#1\endcsname\relax%
+\expandafter\ifx\csname n\expandafter\@gobble\string#1\endcsname\relax%
+\notsign#1%
+\else\csname n\expandafter\@gobble\string#1\endcsname\fi
+\else\csname not\expandafter\@gobble\string#1\endcsname\fi
+\let\not=\@@not \let\n=\@@n}
+%
+\ifx\mathabx@mathb\mathabx@skip
+ \let\varnot=\not
+ \let\changenotsign=\relax
+\else
+ \def\varnot#1{%
+ \let\@@not=\varnot\let\varnot=\relax
+ \expandafter
+ \ifx
+ \csname varnot\expandafter\@gobble\string#1\endcsname
+ \relax%
+ \varnotsign#1%
+ \else
+ \csname varnot\expandafter\@gobble\string#1\endcsname
+ \fi
+ \let\varnot=\@@not}
+ \def\changenotsign{%
+ \let\@@not=\notsign
+ \let\notsign=\varnotsign
+ \let\varnotsign=\@@not}
+\fi
+
+\def\mathabx@anyfill#1#2#3{$\m@th
+ \ifx#1\relax\relax\smash#2\mkern-7mu\else\mathord#1\mkern-7mu\fi
+ \cleaders\hbox{$\mkern-2mu\smash#2\mkern-2mu$}\hfill
+ \ifx#3\relax\relax\mkern-7mu\smash#2\else\mkern-7mu\mathord#3\fi$}
+
+\def\mathabx@overfill#1#2#3#4#5{\vbox{\m@th\ialign{##\crcr
+ \mathabx@anyfill{#2}{#3}{#4}\crcr
+ \noalign{\kern#1\nointerlineskip}%
+ $\hfil\displaystyle{#5}\hfil$\crcr}}}%
+\def\mathabx@underfill#1#2#3#4#5{\vtop{\m@th\ialign{##\crcr
+ $\hfil\displaystyle{#5}\hfil$\crcr
+ \noalign{\kern#1\nointerlineskip}%
+ \mathabx@anyfill{#2}{#3}{#4}\crcr}}}%
+
+\def\overrightarrow{\mathabx@overfill{-\p@}{}\relbar\rightarrow}%
+\def\overleftarrow{\mathabx@overfill{-\p@}\leftarrow\relbar{}}%
+\def\overleftrightarrow{\mathabx@overfill{-\p@}\leftarrow\relbar\rightarrow}%
+\def\underrightarrow{\mathabx@underfill{\p@}{}\relbar\rightarrow}%
+\def\underleftarrow{\mathabx@underfill{\p@}\leftarrow\relbar{}}%
+\def\underleftrightarrow{\mathabx@underfill{\p@}\leftarrow\relbar\rightarrow}%
+\def\overRightarrow{\mathabx@overfill{-.5\p@}{}\Relbar\Rightarrow}%
+\def\overLeftarrow{\mathabx@overfill{-.5\p@}\Leftarrow\Relbar{}}%
+\def\overLeftRightarrow{\mathabx@overfill{-.5\p@}\Leftarrow\Relbar\Rightarrow}%
+\def\underRightarrow{\mathabx@underfill{\p@}{}\Relbar\Rightarrow}%
+\def\underLeftarrow{\mathabx@underfill{\p@}\Leftarrow\Relbar{}}%
+\def\underLeftRightarrow{\mathabx@underfill{\p@}\Leftarrow\Relbar\Rightarrow}%
+%
+%\symbol@message{\centerline{---~Leaving mathabx.tex~---}}
+%
+\catcode`@=12
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% UNAVAILABLE
+%
+%\symbol@message{Small things ???}
+%
+\DeclareMathSymbol{\smallsum}{0}{mathx}{"40}
+\DeclareMathSymbol{\smallprod}{0}{mathx}{"41}
+\DeclareMathSymbol{\smallcoprod}{0}{mathx}{"42}
+\DeclareMathSymbol{\complement}{0}{mathx}{"43}
+\DeclareMathSymbol{\boldcomplement}{0}{mathx}{"44}
+\DeclareMathSymbol{\boldcup}{2}{mathx}{"45}
+\DeclareMathSymbol{\boldcap}{2}{mathx}{"46}
+\DeclareMathSymbol{\boldZ}{0}{mathx}{"47}
+\DeclareMathSymbol{\bigboldZ}{1}{mathx}{"4A}
+%
+%\symbol@message{Inequalities (mathbb) unsupported}
+%
+%\DeclareMathSymbol{\preceqq}{3}{mathb}{"AE}
+%\DeclareMathSymbol{\succeqq}{3}{mathb}{"AF}
+%\DeclareMathSymbol{\notpreceqq}{3}{mathb}{"B0}
+% \let\@notpreceqq=!
+% \let\npreceqq=\notpreceqq
+%\DeclareMathSymbol{\notsucceqq}{3}{mathb}{"B1}
+% \let\@notqeqq=!
+% \let\nsucceqq=\notsucceqq
+%\DeclareMathSymbol{\precneqq}{3}{mathb}{"B2}
+%\DeclareMathSymbol{\succneqq}{3}{mathb}{"B3}
+%\DeclareMathSymbol{\precvertneqq}{3}{mathb}{"B4}
+%\DeclareMathSymbol{\succvertneqq}{3}{mathb}{"B5}
+%\DeclareMathSymbol{\precsucc}{3}{mathb}{"B2}
+%\DeclareMathSymbol{\succprec}{3}{mathb}{"B3}
+%\DeclareMathSymbol{\preceqsucc}{3}{mathb}{"B4}
+%\DeclareMathSymbol{\succeqprec}{3}{mathb}{"B5}
+%\DeclareMathSymbol{\preceqqsucc}{3}{mathb}{"B6}
+%\DeclareMathSymbol{\succeqqprec}{3}{mathb}{"B7}
+
+%\DeclareMathSymbol{\upasterisk}{0}{matha}{}
+%\DeclareMathSymbol{\lowasterisk}{0}{matha}{}
+%\DeclareMathSymbol{\triasterisk}{0}{matha}{}
+%
+\symbol@message{Hebrew (matha/mathb)}
+%
+\DeclareMathSymbol{\aleph}{7}{matha}{"40}
+\DeclareMathSymbol{\beth}{7}{matha}{"41}
+\DeclareMathSymbol{\gimmel}{7}{matha}{"42}
+\DeclareMathSymbol{\dalet}{7}{matha}{"43}
+\DeclareMathSymbol{\he}{7}{matha}{"44}
+\DeclareMathSymbol{\vav}{7}{matha}{"45}
+\DeclareMathSymbol{\zayin}{7}{matha}{"46}
+\DeclareMathSymbol{\het}{7}{matha}{"47}
+\DeclareMathSymbol{\tet}{7}{matha}{"48}
+\DeclareMathSymbol{\yod}{7}{matha}{"49}
+\DeclareMathSymbol{\finalkaf}{7}{matha}{"4A}
+\DeclareMathSymbol{\kaf}{7}{matha}{"4B}
+\DeclareMathSymbol{\lamed}{7}{matha}{"4C}
+\DeclareMathSymbol{\finalmem}{7}{matha}{"4D}
+\DeclareMathSymbol{\mem}{7}{matha}{"4E}
+\DeclareMathSymbol{\finalnun}{7}{matha}{"4F}
+\DeclareMathSymbol{\nun}{7}{matha}{"50}
+\DeclareMathSymbol{\samekh}{7}{matha}{"51}
+\DeclareMathSymbol{\ayin}{7}{matha}{"52}
+\DeclareMathSymbol{\finalpe}{7}{matha}{"53}
+\DeclareMathSymbol{\pe}{7}{matha}{"54}
+\DeclareMathSymbol{\finaltzadik}{7}{matha}{"55}
+\DeclareMathSymbol{\tzadik}{7}{matha}{"56}
+\DeclareMathSymbol{\qof}{7}{matha}{"57}
+\DeclareMathSymbol{\resh}{7}{matha}{"58}
+\DeclareMathSymbol{\shin}{7}{matha}{"59}
+\DeclareMathSymbol{\tav}{7}{matha}{"5A}
+%
+% \DeclareMathSymbol{\Qinv} {0}{matha}{"4A}
+% \DeclareMathSymbol{\BourbarkiZ} {0}{matha}{"4F}
+%%%{\catcode`\°=\active \gdef°{^\degree}}
+%%%\mathcode`\°="8000
+%%% pas bon du tout, il faudrait pouvoir
+%%% le melanger avec les '''
+%
+%
+%\DeclareMathSymbol{\dottruc} {2}{mathb}{"06}% name to be checked
+%\DeclareMathSymbol{\dotcurt} {2}{mathb}{"07}% name to be checked
+\DeclareMathSymbol{\truc} {2}{matha}{"06}
+\DeclareMathSymbol{\curt} {2}{matha}{"07}
diff --git a/Master/texmf-dist/tex/generic/mathabx/mathabx.sty b/Master/texmf-dist/tex/generic/mathabx/mathabx.sty
new file mode 100644
index 00000000000..90bce2020c5
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/mathabx/mathabx.sty
@@ -0,0 +1,80 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mathabx.sty. Version: May 18, 2005.
+% Author: Anthony PHAN.
+% matches the ``mathabx'' family.
+% LaTeX input/style file
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mathabx}
+ [2003/07/29 v0.0 Non-standard LaTeX package mathabx]
+%
+% Options
+%
+\long\def\mathabx@skip#1\end@mathabx{}%
+\let\end@mathabx=\relax
+\let\mathabx@matha=\mathabx@skip
+\let\mathabx@mathb=\mathabx@skip
+\let\mathabx@mathx=\mathabx@skip
+\def\mathabx@undefine#1{\let#1=\undefined}%
+\def\mathabx@aliases#1#2{\@mathabx@aliases#1#2?\@end}
+\def\@mathabx@aliases#1#2#3\@end{\ifx#2?\else
+ \let#2=#1\@mathabx@aliases#1#3\@end\fi}%
+%
+\DeclareOption{matha}{\let\mathabx@matha=\relax}
+\DeclareOption{mathb}{\let\mathabx@mathb=\relax}
+\DeclareOption{mathx}{\let\mathabx@mathx=\relax}
+%
+\ProcessOptions
+%
+\ifx\mathabx@matha\mathabx@skip
+ \ifx\mathabx@mathb\mathabx@skip
+ \ifx\mathabx@mathx\mathabx@skip
+ \let\mathabx@matha=\relax
+ \let\mathabx@mathb=\relax
+ \let\mathabx@mathx=\relax
+ \fi
+ \fi
+\fi
+%
+% mathabx's font declarations
+%
+\mathabx@matha
+\DeclareFontFamily{U}{matha}{\hyphenchar\font45}
+\DeclareFontShape{U}{matha}{m}{n}{
+ <5> <6> <7> <8> <9> <10> gen * matha
+ <10.95> matha10 <12> <14.4> <17.28> <20.74> <24.88> matha12
+ }{}
+\DeclareSymbolFont{matha}{U}{matha}{m}{n}
+\DeclareFontSubstitution{U}{matha}{m}{n}
+\end@mathabx
+\mathabx@mathb
+\DeclareFontFamily{U}{mathb}{\hyphenchar\font45}
+\DeclareFontShape{U}{mathb}{m}{n}{
+ <5> <6> <7> <8> <9> <10> gen * mathb
+ <10.95> mathb10 <12> <14.4> <17.28> <20.74> <24.88> mathb12
+ }{}
+\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
+\DeclareFontSubstitution{U}{mathb}{m}{n}
+\end@mathabx
+\mathabx@mathx
+\DeclareFontFamily{U}{mathx}{\hyphenchar\font45}
+\DeclareFontShape{U}{mathx}{m}{n}{
+ <5> <6> <7> <8> <9> <10>
+ <10.95> <12> <14.4> <17.28> <20.74> <24.88>
+ mathx10
+ }{}
+\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
+\DeclareFontSubstitution{U}{mathx}{m}{n}
+\end@mathabx
+%
+% no proofmode
+%
+\def\symbol@message#1{\relax}
+\input mathabx.dcl
+%
+% end of file.
+%
+\endinput
+
+
diff --git a/Master/texmf-dist/tex/generic/mathabx/mathabx.tex b/Master/texmf-dist/tex/generic/mathabx/mathabx.tex
new file mode 100644
index 00000000000..6ad0c8abb75
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/mathabx/mathabx.tex
@@ -0,0 +1,145 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mathabx.tex. Version: May 18, 2005.
+% Author: Anthony PHAN.
+% matches the ``mathabx'' family.
+% plain-TeX input file
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\ifx\mathabxversion\undefined\else\endinput\fi
+\def\mathabxversion{January 28, 2004}%
+%
+\catcode`@=11
+%
+% proofing?
+%
+
+\ifx\proofmode\undefined
+ \def\symbol@message#1{\relax}%
+ \def\symbol@mark#1#2{\relax}%
+ \def\check@definition#1{\relax}%
+ \def\mathabx@undefine#1{\let#1=\undefined}%
+ \def\mathabx@aliases#1#2{\@mathabx@aliases#1#2?\@end}
+ \def\@mathabx@aliases#1#2#3\@end{\ifx#2?\else
+ \let#2=#1\@mathabx@aliases#1#3\@end\fi}%
+\else
+ \def\symbol@message#1{\vskip\z@ plus\baselineskip
+ \penalty-250\vskip\z@ plus-\baselineskip
+ \medbreak{\noindent\bf #1}%
+ \nobreak\smallskip\noindent\ignorespaces}%
+ \def\symbolsp@cing#1{\ifcase\number#1 ord\or op%
+ \or bin\or rel\or open\or close\or punct%
+ \or var\else other\fi}%
+ \def\symbol@mark#1#2{\allowbreak
+ \hbox to 0.05\hsize{$#1$\hss}%
+ \hbox to 0.05\hsize{\unhbox0\hss}%
+ \hbox to 0.4001\hsize{{\tt\string#1}%
+ $^{\rm\symbolsp@cing{#2}}$\hfil}%
+ \ignorespaces}%
+ \def\check@definition#1{\ifx#1\undefined
+ \setbox0\hbox{}%
+ \else\setbox0=\hbox{$#1\relax$}\fi}%
+ \def\mathabx@undefine#1{}%
+ \def\mathabx@aliases#1#2{\setbox0=\lastbox
+ \@mathabx@aliases#1#2?\@end
+ \ifdim\wd0>0.4\hsize\hbox to 0.9001\hsize{\unhbox0\hfill}%
+ \else\hbox to 0.4001\hsize{\unhbox0\hfill}\fi}%
+ \def\@mathabx@aliases#1#2#3\@end{\ifx#2?\else
+ \let#2=#1%
+ \setbox0=\hbox{\unhbox0, \tt\string#2}%
+ \@mathabx@aliases#1#3\@end\fi}%
+\fi
+%
+% Symbols declarations: \LaTeX-like commands
+%
+\def\hexnumber@#1{\ifcase\number#1 0\or 1\or 2\or 3\or 4%
+ \or 5\or 6\or 7\or 8\or 9\or A\or B\or C\or D\or E\else F\fi}%
+\def\hexnumber@@#1{{\count0=#1
+ \count1=#1
+ \divide\count0 by 16
+ \hexnumber@\count0
+ \multiply\count0 by 16
+ \advance\count1 by -\count0
+ \hexnumber@\count1}}%
+%
+\def\DeclareMathSymbol#1#2#3#4{\check@definition{#1}%
+ \count255=#2\multiply\count255 by 16
+ \advance\count255 by \csname#3fam\endcsname
+ \multiply\count255 by 256\advance\count255 by #4
+ \ifcat\noexpand#1\relax\mathchardef#1=\count255%
+ \else\expandafter
+ \mathcode\expandafter`\csname#1\endcsname=\count255%
+ \fi\symbol@mark{#1}{#2}}%
+%
+\def\gobble@quotes#1{\ifx#1"\else#1\fi}%
+%
+\def\@DeclareMathDelimiter#1#2#3#4#5#6{%
+ \edef#1{\noexpand\delimiter\noexpand"\gobble@quotes#2%
+ \expandafter\hexnumber@\csname#3fam\endcsname\gobble@quotes#4%
+ \expandafter\hexnumber@\csname#5fam\endcsname\gobble@quotes#6 }%
+ \symbol@mark{#1}{#2}}%
+%
+\def\@xDeclareMathDelimiter#1#2#3#4#5{%
+ \count255=\csname#2fam\endcsname
+ \multiply\count255 by 256\advance\count255 by #3
+ \multiply\count255 by 16
+ \advance\count255 by \csname#4fam\endcsname
+ \multiply\count255 by 256\advance\count255 by #5
+ \expandafter\delcode\expandafter`\csname#1\endcsname=\count255
+ \symbol@mark{#1}{8}}%
+%
+\def\DeclareMathDelimiter#1{\check@definition{#1}%
+ \ifcat\noexpand#1\relax
+ \def\Large@stuff{\noexpand\delimiter}%
+ \expandafter\@DeclareMathDelimiter
+ \else\expandafter\@xDeclareMathDelimiter\fi#1}%
+%
+\def\DeclareMathRadical#1#2#3#4#5{%\check@definition{#1}%
+ \edef#1{\noexpand\radical\noexpand"%
+ \expandafter\hexnumber@\csname#2fam\endcsname\gobble@quotes#3%
+ \expandafter\hexnumber@\csname#4fam\endcsname\gobble@quotes#5 }%
+ \symbol@mark{#1{}}{8}}%
+%
+\def\DeclareMathAccent#1#2#3#4{%\check@definition{#1}%
+ \edef#1{\noexpand\mathaccent\noexpand"%
+ \expandafter\hexnumber@\csname#3fam\endcsname\gobble@quotes#4 }%
+ \symbol@mark{#1{}}{8}}%
+%
+% loading math fonts
+%
+\font\twelvematha=matha10 at 12pt
+\font\tenmatha=matha10 \font\ninematha=matha9
+\font\eightmatha=matha8 \font\sevenmatha=matha7
+\font\sixmatha=matha6 \font\fivematha=matha5
+\newfam\mathafam
+\font\twelvemathb=mathb10 at 12pt
+\font\tenmathb=mathb10 \font\ninemathb=mathb9
+\font\eightmathb=mathb8 \font\sevenmathb=mathb7
+\font\sixmathb=mathb6 \font\fivemathb=mathb5
+\newfam\mathbfam
+\font\tenmathx=mathx10
+\newfam\mathxfam
+%\chardef\mathxfam=4
+%\let\tenex=\tenmathx
+%
+% Initialization
+% (make changes in your own file if you want different sizes)
+%
+\textfont\mathafam=\tenmatha \scriptfont\mathafam=\sevenmatha
+\scriptscriptfont\mathafam=\fivematha
+\textfont\mathbfam=\tenmathb \scriptfont\mathbfam=\sevenmathb
+\scriptscriptfont\mathbfam=\fivemathb
+\textfont\mathxfam=\tenmathx \scriptfont\mathxfam=\tenmathx
+\scriptscriptfont\mathxfam=\tenmathx
+%\def\dagesh#1{{\fam\mathbfam#1}}%
+\def\mathafont{\fam\mathafam\tenmatha}%
+\def\mathbfont{\fam\mathbfam\tenmathb}%
+\let\mathabx@matha=\relax
+\let\mathabx@mathb=\relax
+\let\mathabx@mathx=\relax
+\let\end@mathabx=\relax
+\input mathabx.dcl
+\catcode`@=12
+\let\proofmode=\undefined
+\endinput
+
+
diff --git a/Master/tlpkg/bin/ctan2tds b/Master/tlpkg/bin/ctan2tds
index db24e840edf..3137cab7190 100755
--- a/Master/tlpkg/bin/ctan2tds
+++ b/Master/tlpkg/bin/ctan2tds
@@ -255,6 +255,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
'makor', "&MAKEbase",
'manjutex', "die 'skipping, obsolete on CTAN'", #"&MAKEflatten",
'manpage', "die 'skipping, nonfree license'",
+ 'mathabx', "&MAKEflatten",
'marvosym', "&MAKEnosymlinks",
'mathdesign', "&MAKEmathdesign",
'mathexam', "&MAKEflatten",
@@ -658,6 +659,7 @@ $standardsourcefmt='latex';
'ibygrk', 'generic',
'ifxetex', 'generic',
'jadetex', 'jadetex',
+ 'mathabx', 'generic',
'mathdots', 'generic',
'metatex', 'plain',
'mfpic', 'generic',
@@ -765,6 +767,7 @@ $standardfmt='latex';
'lnotes', 'chinese',
'lshort-portuguese', 'portuguese',
'lshort-spanish', 'spanish',
+ 'mathabx', 'fonts',
'mathdots', 'generic',
'metatex', 'plain',
'metauml', 'metapost',
@@ -930,6 +933,7 @@ $standardtex='\.cfg|\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$|\.cmap|\.4ht$';
'mff', '\.sty|mf[^f].*\.tex',
'mfpic', 'mfpic.tex|mfpic.sty|mfppatch.tex',
'midnight', '\.tex',
+ 'mathabx', 'mathabx\.(dcl|tex)|' . $standardtex,
'mathdots', '\.mld|' . $standardtex,
'misc', '\.sty|\.ltx|\.cls',
'mkpattern', 'mkpatter.tex',
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 89927e0904c..7932b2028b3 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -136,7 +136,7 @@ my @WorkingTLP = qw(
lshort-vietnamese ltablex ltabptch ltxindex ltxmisc lxfonts
mafr magyar mailing
makebarcode makebox makecell makecirc makecmds makeglos
- makeplot maple marginnote marvosym mathdots mathexam
+ makeplot maple marginnote marvosym mathabx mathdots mathexam
mathmode mathspec maybemath
mcaption mceinleger mciteplus mdwtools memexsupp
memoir MemoirChapStyles mentis
diff --git a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
index 22525e6a116..c714ea61e7b 100644
--- a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
@@ -102,6 +102,7 @@ depend logic
depend lxfonts
depend ly1
depend marigold
+depend mathabx
depend mathdesign
depend mnsymbol
depend nkarta
diff --git a/Master/tlpkg/tlpsrc/mathabx.tlpsrc b/Master/tlpkg/tlpsrc/mathabx.tlpsrc
new file mode 100644
index 00000000000..89eab8fccb5
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/mathabx.tlpsrc
@@ -0,0 +1,2 @@
+name mathabx
+category Package