From d0c1973e2a0b6ecebd5b4571c959ef8b32fd6ca8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 15 Sep 2008 00:34:37 +0000 Subject: new (mf) font package mathabx git-svn-id: svn://tug.org/texlive/trunk@10599 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/fonts/mathabx/README | 67 + Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf | Bin 0 -> 732301 bytes Master/texmf-dist/doc/fonts/mathabx/mathtest.tex | 993 +++++++++ Master/texmf-dist/doc/fonts/mathabx/testmac.tex | 521 +++++ .../fonts/source/public/mathabx/matha10.mf | 10 + .../fonts/source/public/mathabx/matha12.mf | 10 + .../fonts/source/public/mathabx/matha5.mf | 10 + .../fonts/source/public/mathabx/matha6.mf | 10 + .../fonts/source/public/mathabx/matha7.mf | 10 + .../fonts/source/public/mathabx/matha8.mf | 10 + .../fonts/source/public/mathabx/matha9.mf | 10 + .../fonts/source/public/mathabx/mathacnt.mf | 367 ++++ .../fonts/source/public/mathabx/mathadrv.mf | 280 +++ .../fonts/source/public/mathabx/matharrw.mf | 1367 ++++++++++++ .../fonts/source/public/mathabx/mathastr.mf | 946 +++++++++ .../fonts/source/public/mathabx/mathastrotest10.mf | 10 + .../source/public/mathabx/mathastrotestdrv.mf | 67 + .../fonts/source/public/mathabx/mathasym.mf | 421 ++++ .../fonts/source/public/mathabx/mathb10.mf | 10 + .../fonts/source/public/mathabx/mathb12.mf | 10 + .../fonts/source/public/mathabx/mathb5.mf | 10 + .../fonts/source/public/mathabx/mathb6.mf | 10 + .../fonts/source/public/mathabx/mathb7.mf | 10 + .../fonts/source/public/mathabx/mathb8.mf | 10 + .../fonts/source/public/mathabx/mathb9.mf | 10 + .../fonts/source/public/mathabx/mathbase.mf | 664 ++++++ .../fonts/source/public/mathabx/mathbdel.mf | 1456 +++++++++++++ .../fonts/source/public/mathabx/mathbdrv.mf | 298 +++ .../fonts/source/public/mathabx/mathbigs.mf | 846 ++++++++ .../fonts/source/public/mathabx/mathbsym.mf | 264 +++ .../fonts/source/public/mathabx/mathc10.mf | 10 + .../fonts/source/public/mathabx/mathcall.mf | 1464 +++++++++++++ .../fonts/source/public/mathabx/mathcallgreek.mf | 1105 ++++++++++ .../fonts/source/public/mathabx/mathcdrv.mf | 229 ++ .../fonts/source/public/mathabx/mathfine.mf | 375 ++++ .../fonts/source/public/mathabx/mathgrey.mf | 97 + .../fonts/source/public/mathabx/mathhbrw.mf | 2220 ++++++++++++++++++++ .../fonts/source/public/mathabx/mathineq.mf | 416 ++++ .../fonts/source/public/mathabx/mathltlk.mf | 673 ++++++ .../fonts/source/public/mathabx/mathmbcb.mf | 498 +++++ .../fonts/source/public/mathabx/mathprmt.mf | 168 ++ .../fonts/source/public/mathabx/mathsmsy.mf | 237 +++ .../fonts/source/public/mathabx/mathsubs.mf | 257 +++ .../fonts/source/public/mathabx/mathsymb.mf | 1001 +++++++++ .../fonts/source/public/mathabx/mathu10.mf | 10 + .../fonts/source/public/mathabx/mathudrv.mf | 189 ++ .../fonts/source/public/mathabx/mathusym.mf | 516 +++++ .../fonts/source/public/mathabx/mathux10.mf | 10 + .../fonts/source/public/mathabx/mathuxdrv.mf | 435 ++++ .../fonts/source/public/mathabx/mathx10.mf | 10 + .../fonts/source/public/mathabx/mathx12.mf | 10 + .../fonts/source/public/mathabx/mathx5.mf | 10 + .../fonts/source/public/mathabx/mathx6.mf | 10 + .../fonts/source/public/mathabx/mathx7.mf | 10 + .../fonts/source/public/mathabx/mathx8.mf | 10 + .../fonts/source/public/mathabx/mathx9.mf | 10 + .../fonts/source/public/mathabx/mathxdrv.mf | 371 ++++ .../fonts/source/public/mathabx/maydigit.mf | 107 + .../fonts/tfm/public/mathabx/matha10.tfm | Bin 0 -> 1372 bytes .../fonts/tfm/public/mathabx/matha12.tfm | Bin 0 -> 1380 bytes .../texmf-dist/fonts/tfm/public/mathabx/matha5.tfm | Bin 0 -> 1376 bytes .../texmf-dist/fonts/tfm/public/mathabx/matha6.tfm | Bin 0 -> 1380 bytes .../texmf-dist/fonts/tfm/public/mathabx/matha7.tfm | Bin 0 -> 1380 bytes .../texmf-dist/fonts/tfm/public/mathabx/matha8.tfm | Bin 0 -> 1380 bytes .../texmf-dist/fonts/tfm/public/mathabx/matha9.tfm | Bin 0 -> 1380 bytes .../fonts/tfm/public/mathabx/mathastrotest10.tfm | Bin 0 -> 1196 bytes .../fonts/tfm/public/mathabx/mathb10.tfm | Bin 0 -> 1384 bytes .../fonts/tfm/public/mathabx/mathb12.tfm | Bin 0 -> 1384 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm | Bin 0 -> 1384 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm | Bin 0 -> 1384 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm | Bin 0 -> 1384 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm | Bin 0 -> 1384 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm | Bin 0 -> 1384 bytes .../fonts/tfm/public/mathabx/mathc10.tfm | Bin 0 -> 1992 bytes .../fonts/tfm/public/mathabx/mathu10.tfm | Bin 0 -> 700 bytes .../fonts/tfm/public/mathabx/mathux10.tfm | Bin 0 -> 928 bytes .../fonts/tfm/public/mathabx/mathx10.tfm | Bin 0 -> 1520 bytes .../fonts/tfm/public/mathabx/mathx12.tfm | Bin 0 -> 1532 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm | Bin 0 -> 1540 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm | Bin 0 -> 1528 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm | Bin 0 -> 1540 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm | Bin 0 -> 1524 bytes .../texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm | Bin 0 -> 1532 bytes Master/texmf-dist/tex/generic/mathabx/mathabx.dcl | 1127 ++++++++++ Master/texmf-dist/tex/generic/mathabx/mathabx.sty | 80 + Master/texmf-dist/tex/generic/mathabx/mathabx.tex | 145 ++ 86 files changed, 20517 insertions(+) create mode 100644 Master/texmf-dist/doc/fonts/mathabx/README create mode 100644 Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf create mode 100644 Master/texmf-dist/doc/fonts/mathabx/mathtest.tex create mode 100644 Master/texmf-dist/doc/fonts/mathabx/testmac.tex create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha12.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha5.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha6.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha7.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha8.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matha9.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathacnt.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathadrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/matharrw.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathastr.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathastrotest10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathastrotestdrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathasym.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb12.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb5.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb6.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb7.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb8.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathb9.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathbase.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathbdel.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathbdrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathbigs.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathbsym.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathc10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathcall.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathcallgreek.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathcdrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathfine.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathgrey.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathhbrw.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathineq.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathltlk.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathmbcb.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathprmt.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathsmsy.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathsubs.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathu10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathudrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathusym.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathux10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathuxdrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx10.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx12.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx5.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx6.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx7.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx8.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathx9.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/mathxdrv.mf create mode 100644 Master/texmf-dist/fonts/source/public/mathabx/maydigit.mf create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm create mode 100644 Master/texmf-dist/tex/generic/mathabx/mathabx.dcl create mode 100644 Master/texmf-dist/tex/generic/mathabx/mathabx.sty create mode 100644 Master/texmf-dist/tex/generic/mathabx/mathabx.tex (limited to 'Master/texmf-dist') 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 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/mathabx/mathtest.pdf 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 {} {} {}. 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$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)) 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 $$=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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha12.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha5.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha6.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha7.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha8.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/matha9.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathastrotest10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb12.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb5.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb6.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb7.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb8.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathb9.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathc10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathu10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathux10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx10.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx12.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx5.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx6.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx7.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx8.tfm 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 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/mathabx/mathx9.tfm 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 + + -- cgit v1.2.3