summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-01-22 00:47:52 +0000
committerKarl Berry <karl@freefriends.org>2008-01-22 00:47:52 +0000
commita69af871d6ae9cb51cb7f1b25e2ac690da926ed7 (patch)
treefb5a3f4a3ecc6f97f7656e7d9e9b5941c87ff741
parent17337a1ac66e89310e57ca7eaff87370d2172703 (diff)
new font package lxfonts (20jan08)
git-svn-id: svn://tug.org/texlive/trunk@6363 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.pdfbin0 -> 302061 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.tex267
-rw-r--r--Master/texmf-dist/doc/fonts/lxfonts/LXfonts.readme81
-rw-r--r--Master/texmf-dist/doc/fonts/lxfonts/manifest26
-rw-r--r--Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map21
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf34
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf22
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf1933
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf35
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf700
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf392
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf1622
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf98
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf92
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf78
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf76
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf103
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf90
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf91
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf90
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf91
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf83
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf203
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf375
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf9
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf315
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf66
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf47
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf138
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf105
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf247
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf94
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf204
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf162
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf805
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfmbin0 -> 1120 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfmbin0 -> 1004 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfmbin0 -> 1508 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfmbin0 -> 1496 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfmbin0 -> 1116 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfmbin0 -> 3172 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfmbin0 -> 3360 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfmbin0 -> 3380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfmbin0 -> 3144 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfmbin0 -> 520 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfmbin0 -> 520 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfmbin0 -> 1320 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfmbin0 -> 1336 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfmbin0 -> 1512 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfmbin0 -> 1532 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfmbin0 -> 912 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfmbin0 -> 940 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfmbin0 -> 1460 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfmbin0 -> 1588 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfmbin0 -> 1576 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfmbin0 -> 1452 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfbbin0 -> 45003 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfbbin0 -> 27265 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfbbin0 -> 45087 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfbbin0 -> 46069 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfbbin0 -> 44798 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfbbin0 -> 80734 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfbbin0 -> 78558 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfbbin0 -> 82205 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfbbin0 -> 75530 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfbbin0 -> 16212 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfbbin0 -> 16290 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfbbin0 -> 42513 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfbbin0 -> 44502 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfbbin0 -> 43959 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfbbin0 -> 45761 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfbbin0 -> 38933 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfbbin0 -> 49746 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfbbin0 -> 37952 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfbbin0 -> 39317 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfbbin0 -> 38913 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfbbin0 -> 38242 bytes
-rw-r--r--Master/texmf-dist/tex/latex/lxfonts/lxfonts.sty174
-rwxr-xr-xMaster/tlpkg/bin/ctan2tds3
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/lxfonts.tlpsrc3
91 files changed, 9650 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.pdf b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.pdf
new file mode 100644
index 00000000000..6d74d0d7dad
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.tex b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.tex
new file mode 100644
index 00000000000..f0191124cd1
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts-demo.tex
@@ -0,0 +1,267 @@
+%Slidefont-demo.tex
+\documentclass{beamer}
+\usetheme{AnnArbor}
+\usefonttheme{professionalfonts}
+\useoutertheme[right]{sidebar}
+\setbeamercolor{alerted text}{fg=red!90!black}
+\beamertemplatetransparentcovereddynamic
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{textcomp}
+\usepackage{mflogo}
+\usepackage{lxfonts}
+
+\newfont{\cit}{cmssqi8 scaled 1200}
+\newfont{\lit}{lcmssi8 scaled 1200}
+\newfont{\cir}{cmssq8 scaled 1200}
+\newfont{\lir}{lcmss8 scaled 1200}
+\DeclareFixedFont{\cmsyx}{OMS}{cmsy}{m}{n}{12}
+\DeclareFixedFont{\cmssx}{OT1}{cmss}{m}{n}{12}
+
+
+
+
+
+\newcommand\SliTeX{Sli\kern-.05em\TeX}
+\newcommand\AMS{\ensuremath{\mathcal{A\!_{\textstyle M}\mkern-2mu S}}}
+\DeclareMathOperator{\diff}{\mathop{}\mathrm{d}\!}
+\newcommand*\cs[1]{\texttt{\char92#1}}
+
+\def\TRON{\tracingcommands=2\tracingmacros=2\relax}
+\def\TROF{\tracingcommands=0\tracingmacros=0\relax}
+
+
+\title{Revived slide fonts for \LaTeX}
+\subtitle{Demo\qquad Version 0.4}
+\author{Claudio Beccari}
+\institute{PdT}
+\date{Turin, 2008-01-20}
+
+\begin{document}
+
+
+\begin{frame}
+\titlepage
+\end{frame}
+
+%\begin{frame}\frametitle{Table of contents}
+%\tableofcontents
+%\end{frame}
+
+\section{Introduction}
+
+\begin{frame}\frametitle{The original \LaTeX\ slides}
+When \LaTeX\ was created, Leslie Lamport made an accompanying program named \SliTeX. At that time PCs had very little memory and format files could not handle more than one language at a time.
+
+\medskip
+
+{\centering\alert{It was A.D.\ 1984!}\par}
+
+\medskip
+
+\SliTeX\ was used for creating that time's presentations. Its main value, besides creating presentations to be printed on transparencies (beamers did not exist at that time\dots), was to use fonts whose legibility was excellent.
+\end{frame}
+
+\begin{frame}\frametitle{The old slides font}
+The old slides fonts derived from the ones D.E.\ Knuth designed for his witty citations at the end of each \TeX\-book chapter, for example:
+\begin{quote}\raggedleft{\cit
+If you can't solve a problem,\\
+you can always look up the answer.\\
+But please, Try first to solve it by yourself;\\
+then you'll learn more and you'll learn faster.\par}
+\makebox[\linewidth][r]{\cir --- DONALD E.\ KNUTH. {\cit The \TeX\-book} (1983)}
+\end{quote}
+\end{frame}
+
+\begin{frame}\frametitle{The old slides font}
+You may notice that the upper case `i' and the lower case `l' are undistinguishable, and, even worse, they get confused with the math symbol $|$.
+
+\medskip
+
+Lamport himself made from the knuthian one a variant with a serifed capital `i':
+\begin{quote}\raggedleft{\lit
+If you can't solve a problem,\\
+you can always look up the answer.\\
+But please, Try first to solve it by yourself;\\
+then you'll learn more and you'll learn faster.\par}
+\makebox[\linewidth][r]{\lir --- DONALD E.\ KNUTH. {\lit The \TeX\-book} (1983)}
+\end{quote}
+\end{frame}
+
+\begin{frame}\frametitle{The new slides font}
+In order to use this slides font also in mathematics I realized this new font (used throughout this presentation) so that Knuth's citation becomes:
+\begin{quote}\raggedleft\small\linespread{1.2}{\itshape
+If you can't solve a problem,\\
+you can always look up the answer.\\
+But please, Try first to solve it by yourself;\\
+then you'll learn more and you'll learn faster.\par}
+\makebox[\linewidth][r]{\upshape --- DONALD E.\ KNUTH. {\itshape The \TeX\-book} (1983)}
+\end{quote}
+\end{frame}
+
+\begin{frame}\frametitle{Comparison between the sanserif fonts}
+If you compare at the same font size this new font with the ordinary sanserif font of the CM/EC collections (the fonts that are used by default, for example, by \textsl{beamer}) you notice a remarkable difference in legibility and this explains the initial choice made by Lamport.
+\begin{center}
+\def\S{\rule{0pt}{2.2ex}}\def\D{\rule[-1ex]{0pt}{0pt}}
+\begin{tabular*}{\linewidth}{r@{\extracolsep{\fill}}l}\hline
+\footnotesize\texttt{OT1/cmss}\S & \cmssx abcdefghijklmnopqrstuvwxyz\\
+\footnotesize\texttt{OT1/llcmss}\D&abcdefghijklmnopqrstuvwxyz\\\hline
+\end{tabular*}
+\end{center}
+\end{frame}
+
+\begin{frame}\frametitle{The old slides font and mathematics}
+Math with \SliTeX\ used to be typeset with the ordinary math fonts used with \LaTeX; the only exception was that the `operators' font was substituted with the upright slides font.
+
+The result was poor; not only everybody could notice the difference between the stroke weight of the CM math fonts compared to the slides font, but the various signs obtained by composition of different glyphs, such as, for example, \(\textfont2\cmsyx \Longrightarrow\) instead of \(\Longrightarrow\), were composed with an `equals' sign taken from the slides fonts, and an arrow tip taken from the CM math symbols fonts.
+\end{frame}
+
+
+\section{The new slides fonts}
+
+\begin{frame}\frametitle{The new slides fonts and mathematics}\small
+Therefore, in order to use the new slides font in mathematics it was necessary to restyle the three math fonts, specifically:
+\begin{itemize}
+\item the `letters' font that contains the math italics alphabet, the upper and lower case slanted Greek alphabet, and many other symbols;
+\item the `symbols' font that included also the upper case calligraphic alphabet;
+\item the `delimiters' font that contains the extensible glyphs for the large delimiters and operators.
+\end{itemize}
+
+To this end the three above mentioned fonts have been rebuilt with the stylistic parameters of the new fonts, both in medium and bold face weights.
+\end{frame}
+
+\begin{frame}\frametitle{First math example}
+The second degree real coefficient equation
+\begin{equation}
+ax^2 + bx + c = 0
+\end{equation}
+has solutions
+\begin{equation}
+x_{1,2} = \frac{-b \pm\sqrt{b^2-4ac}}{2a}
+\end{equation}
+\end{frame}
+
+
+\begin{frame}\frametitle{First math example}
+\noindent with
+\begin{equation}
+\begin{cases}
+x_{1,2} \in \mathbb{R} &\text{if } b^2-4ac>0\\
+x_1=x_2 \in \mathbb{R} &\text{if } b^2-4ac=0\\
+x_{1,2} \in \mathbb{C} &\text{if } b^2-4ac<0
+\end{cases}
+\end{equation}
+\end{frame}
+
+\begin{frame}\frametitle{Comments to the first example}
+The example displays the usual algebraic structures with exponents, subscripts, fractions and square roots.
+
+It displays also an extensible operator and characters of the series \alert{black board bold} that belong to the further symbol collection of the \texttt{amssymb} package, that were also restyled with the stylistic parameters of the lxfonts.
+
+\end{frame}
+
+\begin{frame}\frametitle{The \AMS\ fonts}
+With the same stylistic parameters the \AMS\ fonts of the \texttt{msam} and \texttt{msbm} collections were rebuilt, so that all packages of the \textsl{amsmath} bundle can be used in a way that all symbols and commands share the same stylistic features.
+
+You can type for example:
+\begin{equation}
+\nexists F(\boldsymbol{P}) : \iiint_V f(\boldsymbol{P}) \diff x \diff y \diff z
+\end{equation}
+\begin{equation}
+\begin{pmatrix}
+a_{1,1} & a_{1,2} & a_{1,3}\\
+a_{2,1} & a_{2,2} & a_{2,3}\\
+a_{3,1} & a_{3,2} & a_{3,3}
+\end{pmatrix}
+\begin{pmatrix}
+x_1 \\ x_2 \\ x_3
+\end{pmatrix}
+=
+\begin{pmatrix}
+y_1 \\ y_2 \\ y_3
+\end{pmatrix}
+\end{equation}
+\end{frame}
+
+\begin{frame}\frametitle{Second math example}
+The residue theorem states that if $f(s) : z,\,f\in \mathbb{C}$ is analytic in domanin $\mathbb{D}$ except in a finite number of singular points, then
+\begin{equation}
+\circlearrowleft\mkern-20.5mu\int_\gamma f(z)\diff z = 2\pi \mathrm{j}\sum_{k=1}^{N_{\mathrm{sing}}} R_k
+\end{equation}
+holds true; $\gamma\in\mathbb{D}$ is a simply connected closed line and $N_{\mathrm{sing}}$ is the number of singularities contained within $\gamma$.
+\end{frame}
+
+\begin{frame}\frametitle{The Text Companion font}
+Of course the restyling has been done also on the TS encoded Text Companion font, the one you call for when you input the package:
+\begin{flushleft}\ttfamily
+\cs{usepackage}\{textcomp\}
+\end{flushleft}
+
+Here is a small sample:
+\begin{center}\begin{tabular}{*7c}
+\pounds& \textmu& \textohm& \textyen& \textdollar& \texteuro& \textcelsius\\
+\textlbrackdbl&\textborn&\textdivorced&\textmarried&\textleaf&\textmusicalnote&\textrbrackdbl\\
+\textperthousand&\textcentoldstyle&\textwon&\textnaira&\textguarani&\textpilcrow&\textpertenthousand
+\end{tabular}
+\end{center}
+\end{frame}
+
+\begin{frame}\frametitle{Typewriter fonts for presentations}
+Since presentations (like this one) may involve computer programming or computer science topics, the lxfonts style file contains also the typewriter type fonts taken from the CM/EC fonts but magnified a little bit so as to have the same x-height as the other text fonts. With these fonts you can type programming code such as:
+\begin{flushleft}\ttfamily
+\cs{documentclass}\{beamer\}\\
+...\\
+\cs{usepackage}[T1]\{fontenc\}\\
+\cs{usepackage}[latin1]\{inputenc\}\\
+...\\
+\cs{usepackage}\{lxfonts\}\\
+\cs{begin}\{document\}
+\end{flushleft}
+\end{frame}
+
+
+
+\begin{frame}\frametitle{How to use the lxfonts}
+As it was shown in the previous slide the new fonts may be used by simply calling the \texttt{lxfonts} package.
+
+\alert{Just one warning}: call the \texttt{lxfonts} package after you have loaded all the other font related packages; \texttt{lxfonts} will take care of invoking the correct font description files with the proper encodings; according to the packages loaded, it provides to some definitions that are necessary for mutual compatibility.
+
+\alert{Another warning}: If you are using \textsl{beamer} and math italics does not come out correctly, specify:
+\begin{flushleft}\ttfamily
+\cs{usefonttheme}\{professionalfonts\}
+\end{flushleft}
+\end{frame}
+
+
+\begin{frame}\frametitle{Type\,1 lxfonts}
+The package contains all the type\,1 versions of the new fonts; after you have added their map file to the system (or personal) files by carefully following the instructions given in the \structure{LXfonts.readme} file, you can run the \alert{pdflatex}, or the \alert{latex+dvips+ps2pdf}, or the \alert{latex+dvipdfm} programs, and they will use the \alert{type\,1} fonts instead of the \MF\ bitmapped ones.
+\end{frame}
+
+
+
+
+
+
+\section{Conclusion}
+
+\begin{frame}\frametitle{Experiment!}
+It's evident that a new collection of fonts requires extensive experimentation, so as to spot all the glitches they and the associated files contain.
+
+\medskip
+
+The actual distribution may be defined as an $\alpha$-version, but the sooner feedback arrives, the sooner the fonts bundle is corrected and becomes stable.
+
+\medskip
+
+Therefore\dots
+\end{frame}
+
+\begin{frame}\frametitle{The end}
+\begin{center}
+\fontsize{37}{35}\selectfont Happy TeXing\\ \makebox[\linewidth]{with the \alert{lxfonts}!}
+
+\end{center}
+\end{frame}
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/fonts/lxfonts/LXfonts.readme b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts.readme
new file mode 100644
index 00000000000..8cc9bb1c6cc
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/lxfonts/LXfonts.readme
@@ -0,0 +1,81 @@
+This file documents the installation of the LX fonts, version 0.4, extracted
+from file lxfonts-tds.zip. Of course you don't have to install anything if your
+TeX system already contains these LX fonts. Verify by searching the file
+lxfonts.sty in the texmf-dist rooted tree of your distribution; if it exists,
+you probably can skip reading the rest of this file.
+
+This archive contains three main directories
+
+tex/ fonts/ and doc/
+
+each containing a TDS compliant folder or directory structure; TDS stands
+for: "TeX Directory Structure".
+
+Upon opening the compressed file extract or drag the contents of each main
+directory to the homonymous folder in you personal/local texmf tree, that,
+of course, should already be TDS compliant; if your operating system is not
+so smart to add the new files to existing TDS branches of the local or system
+wide TDS tree, just copy or drag only the end twigs of these distributed branches.
+
+The use of a personal tree is suggested in order to avoid the need of
+reloading everything every time you upgrade your TeX system; in any case,
+should any upgrade already contain the LX fonts, check if the upgrade
+contains a more recent version of these fonts and related software; should
+it be the case, delete your personal installation and use the distributed one.
+
+Refresh the filename databse; this operation depends from the particular
+distribution of the TeX system; on a Mac OS X, where the root of your
+personal texmf is ~/Library/texmf, the filename database does not need
+an explcit refresh.
+
+On other UNIX systems, where teTeX or TeXlive are the TeX system
+distributions, you need to refresh the file name database by running texhash.
+
+On win32 platforms, if you use the MiKTeX distribution, open the MiKTeX
+Options from the Start dialog box and click the Refresh button.
+
+Similar operations must be performed with other TeX distributions.
+
+At this point you should add the line
+
+Map lxfonts.map
+
+or, at your choice,
+
+Mixedmap lxfonts.map
+
+to updmap.cfg, and then run the system program updmap (possibly as root,
+or administrator). Notice that this operation is substantially
+the same with every distribution and every operating system, but the
+details vary from platform to platform; therefore read the documentation
+of your TeX system so as to proceed as required for your particular distribution.
+
+WORTH NOTING: Once the system wide or local maps files contain the names of the
+various LX type 1 fonts, it is irrelevant if you had specified Map or MixedMap,
+because the type 1 ones will be always preferred to the METAFONT bitmapped fonts.
+But since this distribution contains also the METAFONT sources, it does not hurt
+to specify MixedMap. Actually the METAFONT sources are available in case you
+spotted some errors and you wanted to try your chance to correct them; when you've
+got the good corrections, please, don't forget to notify me!
+
+
+If you did everything correctly, your TeX system is now capable of using the
+LX fonts with LaTeX and with pdflatex, and dvips and dvipdfm can perform
+their specific transformations by using the PostScript forms of these LX fonts.
+
+Warning: load the lxfonts.sty file in your document preamble *after* any
+other call to font related packages simply with
+
+\usepackage{lxfonts}
+
+Read the demo pdf file to see how to use these fonts. Of course the
+slides production software may be any class or package that produces slides;
+it not necessary to use the same package used in the example.
+
+All you need for using these fonts is already contained in the lxfonts.sty
+file.
+
+
+Claudio Beccari Torino 2008-01-20
+
+
diff --git a/Master/texmf-dist/doc/fonts/lxfonts/manifest b/Master/texmf-dist/doc/fonts/lxfonts/manifest
new file mode 100644
index 00000000000..c228b5a11ce
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/lxfonts/manifest
@@ -0,0 +1,26 @@
+This is the manifest file for the package lxfonts, version 0.4 (alpha version)
+
+(c) Claudio Beccari 2007-2008
+
+This work is subject to the LaTeX Project Public Licence (LPPL), version 1.3
+or any other successive version as you like; the LPPL licence is downloadable
+from any CTAN archive.
+
+The package lxfonts.sty contains the folders
+
+doc fonts tex
+
+whose branches contain a TDS compliant structure of folders to be directly used
+for loading the fonts into any computer.
+
+Read the LXfonts.readme (text) file for detailed installation instructions.
+
+
+This work has the status of author maintaned; for suggestions, bugs, and the like, write to
+
+claudio dot beccari at alice dot it
+
+Claudio Beccari Torino 2008/01/20
+
+
+
diff --git a/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map b/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map
new file mode 100644
index 00000000000..a797ef03481
--- /dev/null
+++ b/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map
@@ -0,0 +1,21 @@
+lcmbsy8 <lcmbsy8.pfb
+lcmex8 <lcmex8.pfb
+lcmmi8 <lcmmi8.pfb
+lcmmib8 <lcmmib8.pfb
+lcmsy8 <lcmsy8.pfb
+leclb8 <leclb8.pfb
+lecli8 <lecli8.pfb
+leclo8 <leclo8.pfb
+leclq8 <leclq8.pfb
+llasy8 <llasy8.pfb
+llasyb8 <llasyb8.pfb
+llcmss8 <llcmss8.pfb
+llcmssb8 <llcmssb8.pfb
+llcmssi8 <llcmssi8.pfb
+llcmsso8 <llcmsso8.pfb
+lmsam8 <lmsam8.pfb
+lmsbm8 <lmsbm8.pfb
+ltclb8 <ltclb8.pfb
+ltcli8 <ltcli8.pfb
+ltclo8 <ltclo8.pfb
+ltclq8 <ltclq8.pfb
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf
new file mode 100644
index 00000000000..88e85674ae6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf
@@ -0,0 +1,34 @@
+%% Copied and modified from AMSYA by American Mathematical Society
+%% in order to apply the necessary modification so as to generate the
+%% MSAM symbol fonts that cope with the slides fonts.
+%%
+%% Claudio Beccari 2007
+%% }
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input lasymbols; % the symbols
+
+%if not monospace:
+% skewchar=oct"060"; skew#=.5u#;
+% ligtable "I": "T": "V": skewchar kern skew#;
+% ligtable "K": skewchar kern 2skew#;
+% ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#;
+% ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#;
+% ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#;
+% ligtable "J": skewchar kern 6skew#;
+% ligtable "A": skewchar kern 7skew#;
+%fi;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf
new file mode 100644
index 00000000000..07afec89f77
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf
@@ -0,0 +1,22 @@
+%% File LAMSYB copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input lbsymbols; % the symbols
+input lxbbold; % Neenie's blackboard bold
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf
new file mode 100644
index 00000000000..5dc60c0622a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf
@@ -0,0 +1,1933 @@
+%% Copied and modified from ASYMBOLS by American Mathematical Society
+%% in order to app;y the necessary modifictions so as to produce the MSAM
+%% symbols that cope with the slides fonts
+%%
+%% Claudio Beccari 2007
+%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Italic corrections have not been computed for most of these characters,
+% since they are generally not slanted.
+
+% Changed some assignments for
+%
+% cmchar "Circle-R brand"
+% cmchar "Circle-S brand"
+%
+% to avoid rounding problems and the differences in TFM files for
+% different magnifications
+%
+% Changed by Stefan Lindner 15.03.1991
+%
+% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp;
+% changed: radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+def makesquare (suffix i,j,k,l) =
+%% z.j, z.k are the lower left and right corners
+%% assumed on baseline; ie, y.k=y.j=0
+%% z.i, z.l are upper left and right corners
+%% that is, start labeling with upper left corner, and
+%% proceed to the successive corners counter-clockwise.
+y.i-y.j=x.k-x.j; y.i:=good.y y.i+o; y.l=y.i
+%% user must draw the square him/herself.
+enddef;
+
+
+cmchar "Square with dot";
+beginchar(oct"000",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2;
+makesquare (1,2,4,5);
+y3=good.y .5[y1,y2]; x3=good.x .5[x1,x5];
+draw z1---z2---z4---z5---cycle; % square
+fill fullcircle scaled dot_size shifted z3; % dot
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Square plus";
+beginchar(oct"001",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut
+y8=y1; y9=y2; x8=.5[x1, x5]; x9=x8; % vertical strut
+draw z6---z7; draw z8---z9; % plus
+penlabels(1,2,4,5,6,7,8,9); endchar;
+
+cmchar "Square times";
+beginchar(oct"002",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+draw z1---z4; draw z2---z5; % diagonals
+penlabels(1,2,4,5); endchar;
+
+cmchar "Square";
+beginchar(oct"003",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1;
+x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+penlabels(1,2,4,5); endchar;
+
+cmchar "Filled square";
+beginchar(oct"004",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+filldraw z1---z2---z4---z5---cycle; % square
+penlabels(1,2,4,5); endchar;
+
+cmchar "Small filled square";
+beginchar(oct"005",5u#,.8asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x3=x4=w-x1;
+bot y2=0; y3=y2; makesquare(1,2,3,4);
+filldraw z1---z2---z3---z4---cycle; % draw and fill square
+penlabels(1,2,3,4); endchar;
+
+
+cmchar "Diamond";
+beginchar(oct"006",12u#,asc_height#,2u#);
+adjust_fit(0,0); pickup rule.nib;
+%% z1, z2 are left & right vertices
+%% z3, z4 are top and bottom points
+lft x1=hround u; x2=w-x1; y1=y2;
+x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o;
+y1=.5[y4,y3];
+draw z1---z3---z2---z4---cycle; % draw diamond
+penlabels(1,2,3,4); endchar;
+
+cmchar "Filled Diamond";
+beginchar(oct"007",12u#,asc_height#,2u#);
+adjust_fit(0,0); pickup rule.nib;
+%% z1, z2 are left & right vertices
+%% z3, z4 are top and bottom points
+lft x1=hround u; x2=w-x1; y1=y2;
+x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o;
+y1=.5[y4,y3];
+filldraw z1---z3---z2---z4---cycle; % draw diamond
+penlabels(1,2,3,4); endchar;
+
+% do char "011 before char "010.
+cmchar "Counter-clockwise-circle indicator";
+beginarithchar(oct"011"); pickup light_rule.nib;
+autorounded; lft x6=hround u; x2=w-x6;
+y2=math_axis; top y8=h;
+circle_points; % define points on circumference
+%% see page 487 of vol E
+path p; numeric t;
+p=z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
+ ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;
+t=xpart(p intersectiontimes ((4.5u,0)--(4.5u,y8)));
+draw subpath (0,t) of p; % circle with gap
+z0=.5[z5,z1]; % the origin of the circle
+%% Now prepare for left arrowhead--see pg E465
+pickup crisp.nib;
+pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0);
+y10=y12=y8; lft x10=hround x8;
+y13-y10=y10-y14=.19asc_height+eps; x13=x14=x10+3u+eps;
+pos15(bar,angle(z14-z10)); z15l=z10;
+pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.38[.5[z13,z14],z10];
+numeric t; path p; % re-use t, p
+p=z14r{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y12l)--(w,y12l)));
+x12=xpart point t of p;
+path p;
+p=z10..{z14-z19}z14l--subpath(0,t) of
+(z14r{z19-z14}..z16r)--z12l--z12r
+--subpath(t,0) of (z13r{z19-z13}..z15r)
+--z13l{z19-z13}..z10&cycle; % arrowhead
+p:=p shifted -z8; % move back to origin
+p:=p rotated -16; % rotate down a bit
+p:=p shifted z8; % move back to tip of circle
+filldraw p;
+penlabels(0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,19);
+picture v; v:=currentpicture; endchar;
+
+cmchar "Clockwise-circle indicator";
+beginarithchar(oct"010");
+currentpicture:=v reflectedabout ((w/2,0),(w/2,h));
+penlabels(0,1,2,3,5,6,7,8,9,10); endchar;
+
+cmchar "Left-Right Harpoons";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"013",18u#,v_center(spread#+.48asc_height#));
+path topleft; % for top left half arrow (harpoon)
+adjust_fit(0,0);
+pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+topleft=z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r)
+ --z3l..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
+topleft:=
+topleft shifted (0,.5spread); % shift above math_axis
+path botright; % for bottom right half arrow
+botright:=topleft reflectedabout ((w/2,0),(w/2,h));
+botright:=botright reflectedabout
+((0,math_axis+eps),(w,math_axis+eps));
+filldraw topleft; filldraw botright;
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Right-Left Harpoons";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"012",18u#,v_center(spread#+.48asc_height#));
+path topright, botleft;
+adjust_fit(0,0);
+pickup crisp.nib;
+topright:=topleft reflectedabout((w/2,0),(w/2,h));
+botleft:=botright reflectedabout((w/2,0),(w/2,h));
+filldraw topright; filldraw botleft; endchar;
+
+cmchar "Square minus";
+beginchar(oct"014",14u#,12u#,0); adjust_fit(0,0);
+pickup rule.nib; lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; bot
+y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut
+draw z6---z7; % minus
+penlabels(1,2,4,5,6,7); endchar;
+
+cmchar "Forces";
+beginchar(oct"015",13u#,asc_height#,0);
+adjust_fit(0,0);; pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+draw z6--z5; draw z2--z1; draw z3--z4;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Forces with extra bar";
+beginchar(oct"016",16u#, asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.42x_height#,.52x_height#);
+top y1=h; bot y2=0; y3=y4=good.y .5h;
+y5=y7=y1; y6=y8=y2; lft x7=hround u; x4=w-x7;
+x5=good.x x7+spread; x1=good.x x5+spread;
+x1=x2=x3; x6=x5; x7=x8;
+draw z7--z8; draw z5--z6; draw z1--z2; % verticals
+draw z3--z4; % horizontal piece
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Satisfies";
+beginchar(oct"017",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+top y1=h; bot y2=0; y0=good.y .5[y1,y2];
+y3=vround y0+.5spread;
+y5=vround y0- .5spread; y4=y3; y6=y5;
+lft x1=hround u; x4=w-x1;
+x1=x2=x3=x5; x4=x6; x0=x1;
+draw z1--z2; % vertical line
+draw z3--z4; % draw top horizontal piece
+draw z5--z6; % draw bottom horizontal piece
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Rightward double arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"020",18u#,v_center(spread#+.48asc_height#)); adjust_fit(0,0);
+pickup crisp.nib; pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; x1-.5rule_thickness=hround u;
+rt x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0]; numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l--z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p shifted (x3l-x0,0);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward double arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"021",18u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l--z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % second arrowhead
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p shifted (x3r-x0,0);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward double arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"022",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; % re-use p
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,y2-y4+eps); filldraw p; % top arrow
+p:= p shifted (0,y4-y3-eps); filldraw p; % bottom arrow
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Rightward double arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"023",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt
+x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4r--subpath (0,t)
+of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,y2-y4+eps); filldraw p; % top
+p:=p shifted (0,y4-y3-eps); filldraw p; %bottom
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Double upward arrow";
+beginchar(oct"024",15u#,asc_height#,asc_depth#); italcorr
+.76asc_height#*slant+.5crisp#-u#; adjust_fit(0,0); pickup
+crisp.nib; pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90); lft
+x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of
+p;
+path p; p=z0..{z4-z9}z4r--subpath (0,t)
+of\\(z4l{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow
+p:=p shifted (x4-x3+eps,0); filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Double downward arrow";
+beginchar(oct"025",15u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,0);
+pos2(rule_thickness,0); pos3(bar,90); pos4(bar,90); lft
+x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of
+p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow
+p:=p shifted (x4-x3+eps,0); filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+%%
+cmchar "Upward rightward harpoon";
+beginchar(oct"026",7.5u#,asc_height#, asc_depth#);
+%% see page E431
+adjust_fit(0,0); pickup crisp.nib;
+x0=x1=x2; lft x1l=hround(.5w-.5rule_thickness);
+y1-.5rule_thickness=-d; pos1(rule_thickness,0);
+pos2(rule_thickness,0); pos3(bar,-90); pos4(bar,-90);
+top y0=vround h;
+x3-x0=x0-x4=.24asc_height+eps; y3=y4=y0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4r..{y0-y4,2(x0-x4)}z6r;
+t=xpart (p intersectiontimes ((x2l,0)--(x2l,h)));
+y2=ypart point t of p;
+filldraw z0--(x2l,y0)---z1l..z1r---z2r
+ ..subpath(t,0) of (z3r..{x0-x3,2(y0-y3)}z5r)
+ --z3l..{x0-x3,2(y0-y3)}cycle;
+picture v; v:=currentpicture;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Downward rightward harpoon";
+beginchar(oct"027",7.5u#,asc_height#,asc_depth#);
+adjust_fit(0,0);
+currentpicture:=v
+reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps));
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Upward leftward harpoon";
+beginchar(oct"030",7.5u#,asc_height#, asc_depth#);
+adjust_fit(0,0);
+currentpicture:=
+v reflectedabout((w/2+eps,-d),(w/2+eps,h));
+picture v; v:=currentpicture;
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Downward leftward harpoon";
+beginchar(oct"031",7.5u#,asc_height#,asc_depth#);
+adjust_fit(0,0);
+currentpicture:=v
+reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps));
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Rightward arrow with tail";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"032",20u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround 1.5u; rt
+x0=hround(w-3u); y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+path arrow;
+arrow=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;
+p:=p shifted (2u,0); filldraw p;
+arrow:=arrow shifted (-13u+bar,0); filldraw arrow;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward arrow with tail";
+beginchar(oct"033",20u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+p:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+arrow:= arrow reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; filldraw arrow;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward-rightward parallel arrows";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"034",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p, q; % re-use p
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,.5[y3,y4]+eps); filldraw p; % top arrow
+p:= p shifted (0,y4-y3);
+q:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+p:=p shifted (0,y3-y4+eps); % restore p's position
+filldraw q; % bottom arrow
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Rightward-leftward parallel arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"035",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; filldraw q;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward shift";
+beginchar(oct"036",9u#,asc_height#, 0);
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=.8h; x1+.5rule_thickness=hround(w-u); lft x0=hround
+u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+z10=z1; x11=x10; y11-.5rule_thickness =vround -d;
+pos10(rule_thickness,0); pos11(rule_thickness,0);
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+--z2l---(x10l,y1l)--z11l..z11r---{up}z10r..{left}z1r---z2r--subpath
+(t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and bent stem
+filldraw p;
+penlabels(0,1,2,3,4,5,6,9,10); endchar;
+
+cmchar "Rightward shift";
+beginchar(oct"037",9u#,asc_height#, 0);
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout((w/2+eps,-d),(w/2+eps,h));
+filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+compute_spread(.45x_height#,.55x_height#);
+cmchar "Rightward squiggly arrow";
+beginchar(oct"040",18u#,v_center(spread# +
+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1-.5rule_thickness=hround 11u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p;
+%% now for squiggle
+x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x1-x16;
+x1-x11=hround (w-2u-x0+x1-.5rule_thickness);
+y11=y13=y15=y0; y12=y16=.5[y0,y3];
+y14=.5[y4,y0];
+pickup pencircle scaled rule_thickness;
+draw z11---z12---z14---z16---z1;
+penlabels(0,1,2,3,4,5,6,9,11,12,13,14,15,16); endchar;
+
+compute_spread(.45x_height#,.55x_height#);
+cmchar "Leftward rightward squiggly arrow";
+beginchar(oct"041",25u#,v_center(spread# +
+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+arrow_length=4.5u+eps;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(u+arrow_length);
+lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p; % left arrow
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; % right arrow
+z10=z1 reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+y11=y15=y19=.5[y0,y3]; y13=y17=.5[y4,y0];
+y12=y14=y16=y18=y10;
+x11-x1=x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x17-x16=x18-x17=
+x19-x18=x10-x19;
+pickup pencircle scaled rule_thickness;
+draw z1---z11---z13---z15---z17---z19---z10;
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19);
+endchar;
+
+cmchar "Leftward curly arrow";
+beginchar(oct"042",18u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric arrow_length; arrow_length=.66*(w-2u+eps);
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(u+arrow_length);
+lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p; % left arrow
+z10=z1; x13=x14=hround(u+arrow_length+eps); y13=y1; y14=-o;
+x12=.5[x11,x13]; y12=h; rt x11=hround(w-u); y11=.5[y10,y12];
+pickup pencircle scaled rule_thickness;
+path q;
+q=z10{right}..tension0.8..{up}z11..tension0.8..{left}z12
+..tension0.8..{down}z13--z14;
+draw q;
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14); endchar;
+
+cmchar "Rightward curly arrow";
+beginchar(oct"043",18u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p;
+pickup pencircle scaled rule_thickness;
+q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+draw q; endchar;
+
+numeric circ_diam; % diameter of little circle
+circ_diam=2.5u;
+cmchar "Equals circle sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"044",14u#,v_center(4spread#+rule_thickness#+2.5u#));
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.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 %
+penpos11(rule_thickness,90); penpos13(rule_thickness,-90);
+penpos12(rule_thickness,180); penpos14(rule_thickness,0);
+x12r=hround(.5w-.5circ_diam-rule_thickness); %
+x14r=w-x12r; x11=x13=.5w; y11l=y13l+circ_diam;
+y12=y14=.5[y11,y13]; y13r=vround(y1+.8spread); %
+penstroke pulled_arc.e(11,12) & pulled_arc.e(12,13)
+ & pulled_arc.e(13,14) & pulled_arc.e(14,11) & cycle; %
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+
+cmchar "Follows or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % spread of similarity sign
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % spread between symbols
+compute_spread(5/4 x_height#,3/2 x_height#); % spread of follows sign
+beginchar(oct"045",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{u,-spread}...{right}z2; %upper `diagonal'
+draw z3{u,spread}...{right}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Greater than or similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"046",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Greater than or approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % spread between similarities
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"047",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- top y13 = spread'';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Multimap symbol";
+beginchar(oct"050",20u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+numeric circ_diam; circ_diam=5u;
+y2=math_axis; y8=y2+.5circ_diam; rt x2=w-u;
+x6=x2-circ_diam;
+circle_points; draw_circle;
+x9=u+.5rule_thickness; y9=y10=y2; x10=x6-.5rule_thickness;
+draw z9---z10;
+penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+cmchar "Therefore";
+beginchar(oct"051",12u#,asc_height#,0);
+adjust_fit(0,0);
+lft x1=hround 1.5u; x2=w-x1; bot y1=-o; y2=y1;
+z3-z1=(z2-z1)rotated60;
+fill fullcircle scaled dot_size shifted z1;
+% left bottom dot
+fill fullcircle scaled dot_size shifted z2;
+% rigth bottom
+fill fullcircle scaled dot_size shifted z3; % top dot
+penlabels(1,2,3); endchar;
+
+
+cmchar "Because";
+beginchar(oct"052",12u#,asc_height#,0);
+adjust_fit(0,0);
+lft x1=hround 1.5u; x2=w-x1; y2=y1;
+x3=w/2; y3=-o;
+z3-z1=(z2-z1)rotated-60;
+fill fullcircle scaled dot_size shifted z1; % top left dot
+fill fullcircle scaled dot_size shifted z2;
+% top right dot
+fill fullcircle scaled dot_size shifted z3; % bottom dot
+penlabels(1,2,3); endchar;
+
+cmchar "Equals-and-dots sign";
+beginarithchar(oct"053");
+compute_spread(.45x_height#,.55x_height#);
+pickup rule.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; draw z3--z4; % draw bars
+pickup light_rule.nib;
+x5=x6=x7=x8=hround w/2+eps; z5=z6; z7=z8;
+penpos5(.8dot_size,0); penpos6(.8dot_size,90);
+penpos7(.8dot_size,0); penpos8(.8dot_size,90);
+y5-y1=y3-y7=spread;
+dot(5,6); dot(7,8); % draw dots
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Equals sign with triangle";
+beginchar(oct"054", 14u#,12u#+math_axis# ,6u#-math_axis#);
+compute_spread(.45x_height#,.55x_height#);
+pickup rule.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; draw z3--z4; % draw bars
+numeric tri_side; % length of equilateral triangle
+tri_side=7u;
+x6-x5=tri_side; .5[x5,x6]=w/2; y5=y6; y5-y1=.8spread;
+%top y7=body_height;x7=w/2;
+z7-z5=(z6-z5) rotated 60;
+draw z5--z6--z7--cycle;
+penlabels(1,2,3,4,5,6,7); endchar;
+
+
+cmchar "Precedes or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"055",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{-u,-spread}...{left}z2; %upper `diagonal'
+draw z3{-u,spread}...{left}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Less than or similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"056",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Less than or approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % spread between similarities
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"057",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- top y13 = spread'';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Equal or less than sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"060",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Equal or greater than sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"061",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"066",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"076",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+penlabels(1,2,3,8,9); endchar;
+cmchar "Less than or greater than sign";
+compute_spread(.4x_height#,.5x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"067",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround w-1.5u+eps; x1=x3=x5; x2=x4=x6=w-x1;
+y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread;
+y2=.5[y1,y3]; y5=.5[y4,y6];
+draw z1--z2--z3; draw z4--z5--z6;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Greater than or less than sign";
+compute_spread(.4x_height#,.5x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(1.111 x_height#,1.333x_height#);
+beginchar(oct"077",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3=x5; x2=x4=x6=w-x1;
+y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread;
+y2=.5[y1,y3]; y5=.5[y4,y6];
+draw z1--z2--z3; draw z4--z5--z6;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Equals or precedes sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"062",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0;
+x2=x9;x8=x1-2u;
+draw z1{-u,-spread}...{left}z2;
+draw z3{-u, spread}...{left}z2;
+draw z8{-u,-spread}...{left}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Equals or follows sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"063",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0;% top y8=h;
+x2=x9;x8=x1+2u;
+draw z1{u,-spread}...{right}z2;
+draw z3{u, spread}...{right}z2;
+draw z8{u,-spread}...{right}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Precedes or curvy equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"064",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0;
+x2=x9;x8=x1-2u;
+%for i=1 upto 3: %lower entire character
+%y[i]:=y[i]-spread'; endfor
+%for i=8 upto 9:
+%y[i]:=y[i]-spread'; endfor
+draw z1{-u,-spread}...{left}z2;
+draw z3{-u, spread}...{left}z2;
+draw z8{-u, spread}...{left}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Follows or curvy equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"074",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0;
+x2=x9;x8=x1+2u;
+%for i=1 upto 3: %lower entire character
+%y[i]:=y[i]-spread'; endfor
+%for i=8 upto 9:
+%y[i]:=y[i]-spread'; endfor
+draw z1{u,-spread}...{right}z2;
+draw z3{u, spread}...{right}z2;
+draw z8{u, spread}...{right}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"065",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"075",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Reverse prime symbol (superscript only)";
+beginchar(oct"070",3u#+max(1.75u#,curve#+2(curve#-stem#)),
+ .8asc_height#,0); adjust_fit(0,0); pickup fine.nib; numeric
+light_stem,heavy_stem; light_stem=hround .5[vair,stem];
+heavy_stem=hround(bold+2dw); x1-.5heavy_stem=hround(.25u);
+y1+.5heavy_stem=h; x2+.5light_stem=hround (w-.5u);
+y2=1/12asc_height;
+numeric theta; theta=angle(z1-z2)-90;
+pos1(heavy_stem,theta); pos2(light_stem,theta);
+filldraw circ_stroke z1e--z2e; % diagonal
+penlabels(1,2); endchar;
+
+cmchar "short axis line";
+beginchar(oct"071",9u#,27/7u#+math_axis#,27/7u#-math_axis#); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; y1=y2=math_axis;
+draw z1--z2;
+labels(1,2); endchar;
+
+cmchar "Dotted (right-left) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",14u#,v_center(3spread#+2rule_thickness#));
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.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
+pickup tiny.nib;
+x6=x5=x2; y6=y5=y1+spread;
+pos5(dot_size,0); pos6(dot_size,90);
+x7=x8=x3; y7=y8=y4-spread;
+pos7(dot_size,0); pos8(dot_size,90);
+dot(5,6); dot(7,8);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Dotted (left-right) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",14u#,v_center(3spread#+2rule_thickness#));
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.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
+pickup tiny.nib;
+x6=x5=x1; y6=y5=y1+spread;
+pos5(dot_size,0); pos6(dot_size,90);
+x7=x8=x4; y7=y8=y4-spread;
+pos7(dot_size,0); pos8(dot_size,90);
+dot(5,6); dot(7,8);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Square subset sign"; % taken from vol E, p533
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"100",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x1=x4=hround(w-x2)+eps; x3=x2; y1-y4=spread; y2=y1; y3=y4;
+top y1=h; draw z1--z2--z3--z4; % bars and stem x8=x1;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Square superset sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"101",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x2=hround(w-1.5u); x1=x4=hround w-x2-eps; x3=x2;
+y1-y4=spread; y2=y1; y3=y4; top y1=h; draw z1--z2--z3--z4;
+% bars and stem
+penlabels(1,2,3,4); endchar;
+
+cmchar "Rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"102",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"103",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Rightward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"104",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Leftward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"105",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Large, filled, 5-pointed star";
+beginchar(oct"106",asc_height#+desc_depth#,asc_height#,desc_depth#);
+adjust_fit(.5u#, .5u#); pickup tiny.nib;
+numeric theta; theta=360/5;
+x0=good.x .5w; y0=good.y .5[h, -d]; x1=x0; top y1=h;
+for n=2 upto 5: z[n]=z0+(z1-z0) rotated((n-1)*theta); endfor
+% z0 is the `origin'
+% z1 thru z5 are the points; z1 at the top going
+% counterclockwise
+z6=(z1--z3)intersectionpoint(z2--z5);
+for n=7 upto10: z[n]=z0+(z6-z0)rotated((n-1)*theta); endfor
+filldraw z1--z6--z2--z7--z3--z8--z4--z9--z5--z10--cycle;
+penlabels(0,1,2,3,4,5); endchar;
+
+cmchar "Vertical overlapping slurs";
+beginchar(oct"107",9u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup fine.nib;
+numeric light_stem; light_stem=Vround .5[vair,stem];
+y2=.5[h,-d]; x2r=hround w-1.5u; pos2(light_stem,0);
+x1-.5hair=hround w-x2; x3=x1; y1+.5hair=h; y3-.5hair=-d;
+numeric theta; theta= angle((z2-z1)xscaled3);
+numeric theta'; theta'=angle((z3-z2)xscaled3);
+pos1(hair, theta+90); pos3(hair, theta'+90);
+path p;
+p=z1l{dir theta}...z2l...{dir theta'}z3l
+ ..z3r{-dir theta'}...z2r...{-dir theta}z1r..cycle;
+filldraw p;
+p:=p reflectedabout((.5w,-d),(.5w,h)); filldraw p;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"111",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"112",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+ cmchar "short axis right arrow";
+beginchar(oct"113",9u#,27/7u#+math_axis#,27/7u#-math_axis#);
+pickup rule.nib;
+penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0);
+penpos4(bar,0);
+y0=y1=y2=math_axis;
+x1=hround 1.5u-eps;
+rt x0=w-x1;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "short axis left arrow";
+beginchar(oct"114",9u#,27/7u#+math_axis#,27/7u#-math_axis#);
+pickup rule.nib;
+penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0);
+penpos4(bar,0);
+y0=y1=y2=math_axis; x0=hround 1.5u-eps;
+rt x1=w-x0;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+
+cmchar "Filled downward triangle";
+beginchar(oct"110",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=0; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Downward triangle";
+beginchar(oct"117",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=0; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Upward triangle";
+beginchar(oct"115",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=h; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled upward triangle";
+beginchar(oct"116",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=h; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Egg sandwich";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"120",14u#,asc_height#,0);
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.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
+pickup tiny.nib;
+x5=x6=hround w/2; bot y5=bot y1; top y6=top y3;
+y7=y8=math_axis;x8-x7=y5-y6;
+x6=.5[x7,x8];
+draw z5{right}..z8..z6{left}..z7..cycle;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbols: <, bar, >";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"121",14u#,v_center(2spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+y1=y2; lft x1=hround 1.5u-eps; rt x2=w-x1;
+x4=x6=x8=x1; x3=x5=x7=x2;
+y5-y1=y1-y6=spread';top y3=h; y3-y5=spread;
+y6-y8=spread;
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8; draw z1--z2;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbls: greater than, bar, less than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"122",14u#,v_center(2spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+y1=y2; lft x2=hround 1.5u-eps; rt x1=w-x2;
+x4=x6=x8=x1; x3=x5=x7=x2;
+y5-y1=y1-y6=spread';top y3=h; y3-y5=spread;
+y6-y8=spread;
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8; draw z1--z2;
+numeric bar_ht; bar_ht=y1; %save height of bar
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbls: less than, =, greater than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"123",14u#,v_center(3spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1;
+x1'=x1; x2=x2'; x4=x6=x8=x1;
+x3=x5=x7=x2;
+y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread';
+draw z1--z2; draw z1'--z2';
+y3-y5=y6-y8=spread;
+y5-y2=y2'-y6=spread';
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8;
+penlabels(1,1',2,2',3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbols: greater than, =, less than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"124",14u#,v_center(3spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=w-x2;
+x1'=x1; x2=x2'; x4=x6=x8=x1;
+x3=x5=x7=x2;
+y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread';
+draw z1--z2; draw z1'--z2';
+y3-y5=y6-y8=spread;
+y5-y2=y2'-y6=spread';
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8;
+penlabels(1,1',2,2',3,4,5,6,7,8); endchar;
+
+cmchar "Yen symbol";
+compute_spread(.45x_height#, .55x_height#);
+beginchar(oct"125",13u#,1.35cap_height#,0); %% adapted from "Y"
+italcorr cap_height#*slant+.45u#;
+adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric
+left_stem,right_stem,outer_jut,dy,alpha;
+left_stem=cap_stem-stem_corr; right_stem=min(cap_hair if
+hefty:-2stem_corr fi,left_stem); outer_jut=.75cap_jut;
+x1l=w-x4r=l+letter_fit+outer_jut+.05u;
+x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h;
+y2=y3=y5=.4h; dy=y1-y2; alpha=((x2l-x1l)++dy)/dy;
+penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
+penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
+penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=0;
+z0=whatever[z1r,z2r]=whatever[z3l,z4l]; if
+y0>y2+cap_notch_cut: y0:=y2+cap_notch_cut;
+ fill
+z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r
+--diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1}
+ ...{down}z0+.5left--cycle; % diagonals and stem
+else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r
+ --diag_end(5r,6r,1,1,6l,5l)--z5l
+ --diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals & stem
+if serifs: numeric inner_jut; pickup tiny.nib;
+ prime_points_inside(1,2); prime_points_inside(4,3);
+prime_points_inside(6,5);
+ if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut:
+inner_jut=cap_jut;
+ else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
+ dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut);
+%upper lft serif
+ dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark);
+% upper right serif
+ dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi
+% lower serif
+pickup pencircle scaled .5[fine, rule_thickness];
+x7=x9=x1l; x8=x10=x4r;
+y9=y10;
+top y7=bar_height; y7=y8; draw z7--z8;
+y9-y7=spread;
+draw z9--z10;
+penlabels(0,1,2,3,4,5,6,1',2',3',4',5',6',7,8,9,10); endchar;
+
+cmchar "Triple rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"126",18u#,v_center(2spread#+.5asc_height#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90);
+penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=u;
+rt x0=hround (w-u); x0'=x0''=x0; x1'=x1''=x1;
+y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1'';
+draw z0'--z1'; draw z0''--z1''; % draw bars
+pickup crisp.nib;
+y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+penpos5(bar,angle(z0-z4)); z5r=z0; penpos6(bar,angle(z0-z3));
+z6r=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw
+z0..{z3-z9}z3--(w,y3)--(w,y4)--z4{z9-z4}..z0& cycle;
+numeric t; path p;
+p=z4l{z9-z4}..z6l; t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6l)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5l)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar;
+
+
+cmchar "Triple leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"127",18u#,v_center(2spread#+.5asc_height#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90);
+penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; x0'=x0''=x0; x1'=x1''=x1;
+y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1''; draw
+z0'--z1'; draw z0''--z1''; % draw bars
+pickup crisp.nib;
+y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw
+z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0& cycle; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar;
+
+cmchar "Check mark"; beginchar(oct"130",15u#,asc_height#,
+0); adjust_fit(0,0); pickup cal.nib;
+lft x1=hround(1.5u);y1=math_axis; y2=0; x2=hround(w/3);
+x3=w-x1; y3=asc_height-o;
+x4=w-1.5x2; y4=asc_height;
+draw z1--z2{z4-z2}..z3;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar "Vee on bar";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"131",11u#,asc_height#, desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2);
+bot y4=bot y5=0; y2=y4+spread; top y1=top y3=h+o;
+draw z1--z2--z3; draw z4--z5;
+penlabels(1,2,3,4,5);
+endchar;
+
+cmchar "Bar on mountain";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"132",11u#,asc_height#, desc_depth#); adjust_fit(0,0);
+pickup rule.nib;
+lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2);
+top y4=top y5=h+o; y2=y4-spread; bot y1=bot y3=0;
+draw z1--z2--z3; draw z4--z5;
+numeric t; % t is used in char"133, = on mountain
+t=y2-y3;
+penlabels(1,2,3,4,5);
+endchar;
+
+cmchar "Equal sign on mountain";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"133",11u#,body_height#, desc_depth#); adjust_fit(0,0);
+pickup rule.nib;
+lft x1=lft x4=lft x6=hround u; x3=x5=x7=w-x1; x2=hround(w/2);
+y4=y5; y6=y7; y6-y4=y4-y2=spread; top y4=asc_height+o-.5spread;
+y2-y1=t; % t is defined in char "132
+y1=y3;
+draw z1--z2--z3; draw z4--z5; draw z6--z7;
+penlabels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Angle sign (simple)";
+beginchar(oct"134",13u#,asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+bot y2=bot y3=0; top y1=h;
+draw z1--z2--z3;
+penlabels(1,2,3);
+endchar;
+
+cmchar "Angle sign (with small arc)";
+beginchar(oct"135",13u#,asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+bot y2=bot y3=0; y1=h;
+draw z1--z2--z3;
+path p; p=quartercircle scaled 15u;
+numeric t; t= xpart(p intersectiontimes (z1--z2));
+draw subpath (0,t) of p;
+penlabels(1,2,3);
+endchar;
+
+cmchar "Eye-like angle sign (with small arc)";
+beginchar(oct"136",13u#,v_center(.75body_height#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+y2=math_axis; y2=.5[y1,y3]; y1-y3=.75body_height;
+draw z1--z2--z3;
+path p; p=quartercircle scaled 17u;
+numeric t; t= xpart(p intersectiontimes ((z1--z2)shifted
+-z2));
+draw subpath (0,t) of p shifted z2;
+draw subpath (0,t) of p shifted z2
+reflectedabout(z2,(w,y2));
+penlabels(1,2,3);
+endchar;
+
+cmchar "Proportional sign made of circles";
+beginchar(oct"137",14u#,asc_height#,0);
+adjust_fit(0,0); pickup pencircle scaled rule_thickness;
+numeric radius; radius:=w-2u; radius:=radius/3;
+radius:=radius-.5rule_thickness;
+x2=hround w-u; x1=w-x2+radius;
+y1=y2=math_axis;
+pair m; m=(rule_thickness,0);
+draw fullcircle scaled 2radius shifted (z1+.5m);
+draw (halfcircle scaled 2radius rotated 90) shifted
+(z2-.5m);
+penlabels(1,2);
+endchar;
+
+cmchar "Simple slur below (smile)";
+beginchar(oct"140",14u#,asc_height#,desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; y1=vround(math_axis+.25x_height);
+x3=w-x1; y3=y1; penpos2(rule_thickness,90); x2=.5w;
+y2l=good.y -(.25x_height-math_axis);
+numeric theta; theta=angle((z2-z1)yscaled 3);
+penpos1(rule_thickness,90+theta);
+penpos3(rule_thickness,90-theta);
+draw z1{dir theta}...z2...{dir-theta}z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Simple slur above (frown)";
+beginchar(oct"141",14u#,asc_height#,desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; y1=vround(math_axis-.25x_height);
+x3=w-x1; y3=y1;
+penpos2(rule_thickness,90); x2=.5w; y2=good.y(.25x_height+math_axis);
+numeric theta; theta=angle((z2-z1)yscaled 3);
+penpos1(rule_thickness,90+theta);
+penpos3(rule_thickness,90-theta);
+draw z1{dir theta}...z2...{dir-theta}z3; penlabels(1,2,3);
+endchar;
+
+cmchar "Very proper subset sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"142",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded; lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1;
+y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars
+x1'=x3'=x1; y1-y1'=y3'-y3=spread';
+x4'=x5'=x4; y4-y4'=y5'-y5=spread';
+y2'=y2; x2'-x2=spread';
+draw z1'--z4'..z2'{down}..z5'--z3';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Very proper superset sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"143",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded; lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1;
+y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars
+x1'=x3'=x1; y1-y1'=y3'-y3=spread';
+x4'=x5'=x4; y4-y4'=y5'-y5=spread';
+y2'=y2; x2-x2'=spread';
+draw z1'--z4'..z2'..z5'--z3';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Parallel set union sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+beginchar(oct"144",12u#,.8asc_height#,0);
+italcorr .8asc_height#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y1=good.y h+o; bot y3=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y1'=y5'=y1; x1'-x1=x5-x5'=spread';
+y2'=y4'=y2+u; x2'-x2=x4-x4'=spread';
+x3'=x3; y3'-y3=spread';
+draw z1'..{down}z2'..z3'{right}..z4'{up}..z5';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Parallel set intersection sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+beginchar(oct"145",12u#,.8asc_height#,0);
+italcorr .8asc_height#*slant-.5u#; adjust_fit(0,0);
+pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y3=good.y h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+y1'=y5'=y1; x1'-x1=x5-x5'=spread';
+y2'=y4'=y2-u; x2'-x2=x4-x4'=spread';
+x3'=x3; y3-y3'=spread';
+draw z1'..{up}z2'..z3'{right}..z4'{down}..z5';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"152",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"153",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Christmas tree symbol";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"146",spread#+4u#,.8asc_height#,0);
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded;
+lft x1=1.5u; x3=w-x1; x2=.5[x1,x3];
+bot y1=-d-o; y3=y1; top y2=h+o;
+draw z1{spread,u}...{up}z2;
+draw z3{-spread,u}...{up}z2;
+penlabels(1,2,3); endchar;
+
+cmchar "Inverted Christmas tree symbol";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"147",spread#+4u#,.8asc_height#,0);
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded;
+lft x1=1.5u; x3=w-x1; x2=.5[x1,x3];
+top y1=h+o; y3=y1; bot y2=-d-o;
+draw z1{spread,-u}...{down}z2;
+draw z3{-spread,-u}...{down}z2;
+penlabels(1,2,3); endchar;
+
+cmchar "Stylized lambda symbol";
+beginchar(oct"150",14u#,1.35asc_height#,0);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=u; top y1=h;
+rt x2=w-u; bot y2=-o;
+draw z1--z2;
+z3=.5[z1,z2];
+x4=x1; y4=y2; draw z3--z4;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Reflected stylized lambda symbol";
+beginchar(oct"151",14u#,1.35asc_height#,0);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=u; bot y1=-o;
+rt x2=w-u; top y2=h;
+draw z1--z2;
+z3=.5[z1,z2];
+x4=x2; y4=y1; draw z3--z4;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Sunrise symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct "154",14u#,v_center(3spread#+rule_thickness#));
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4;
+y1-y3=spread; .5[y1,y3]=math_axis;
+y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2];
+x2-x6=x5-x1;
+y7-y1=.5(x6-x5);
+draw z1--z5{up}...z7...{down}z6--z2; % upper bar
+draw z3--z4; % lower bar
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Sunrise-over-water symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct "155",14u#,v_center(3spread#+rule_thickness#));
+italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4;
+y1-y3=spread; .5[y1,y3]=math_axis;
+y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2];
+x2-x6=x5-x1;
+y7-y1=.5(x6-x5);
+x5'=x5; x7'=x7; x6'=x6; y5'=y6'=y3; y3-y7'=y7-y1;
+draw z1--z5{up}...z7...{down}z6--z2; % upper bar
+draw z3--z5'{down}...z7'...{up}z6'--z4; % lower bar
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Much, much less sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"156",24u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup
+rule.nib; lft x2=hround u-epsilon; x1=x3=hround 12.5u-x2;
+y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % left diagonals
+z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6;
+x7=w-x2; y4=y1;
+draw z4--z5--z6; % middle diagonals
+draw z7--z8--z9; % right diagonals
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Much, much greater sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"157",24u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup
+rule.nib;
+lft x1=hround u-epsilon; x2=hround 12.5u-u; x1=x3;
+y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % left diagonals
+z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6;
+x8=w-x1; y4=y1;
+draw z4--z5--z6; % middle diagonals
+draw z7--z8--z9; % right diagonals
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Northwest right angle symbol";
+beginchar(oct"160",9u#, asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2; lft x1=u; x3=w-x1; y2=y3; top y2=h;
+y2-y1=x3-x2;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Northeast right angle symbol";
+beginchar(oct"161",9u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x3=u; x2=w-x3; top y3=h; y3=y2; x1=x2; x2-x3=y2-y1;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Southwest right angle symbol";
+beginchar(oct"170", 9u#, 7u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=u; x3=w-x2; x1=x2; bot y2=-o; y3=y2;
+y1-y2=x3-x2;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Southeast right angle symbol";
+beginchar(oct"171", 9u#, 7u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x3=u; x2=w-x3; x1=x2; bot y2=-o; y3=y2;
+y1-y2=x2-x3;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+%% include these parameters to `shrink R and S so they
+%% fit inside a circle
+%
+begingroup
+save u, width_adj, cap_serif_fit, letter_fit,
+ body_height, cap_height, x_height, bar_height, comma_depth,
+ flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
+ cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
+ o, apex_o;
+numeric radius;
+old.u:=u; old.cap_curve:=cap_curve; old.cap_height:=cap_height;
+old.u#:=u#; old.cap_curve#:=cap_curve#; old.cap_height#:=cap_height#;
+forsuffixes $=u, width_adj, cap_serif_fit, letter_fit,
+ body_height, cap_height, x_height, bar_height,
+comma_depth, flare, cap_hair,
+stem, cap_stem, cap_curve, cap_ess,
+ cap_jut, beak_jut, beak,
+slab, cap_bar,
+cap_band, cap_notch_cut,
+ o, apex_o: $.#:=lower.$.#; endfor
+fudge:=lower.fudge;
+font_setup;
+% Changed by Stefan Lindner 15.03.1991 -sl
+% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp;
+radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp;
+% end of change
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+cmchar "Circle-R brand";
+beginchar(oct"162",13u#, .52cap_height#+radius#,radius#-.52cap_height#);
+adjust_fit(4u#,4u#);
+pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem');
+top y1=cap_height; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+penpos3(cap_band,90); penpos4(cap_band,90);
+penpos5(cap_curve,0);
+penpos6(vair,-90); penpos7(vair,-90);
+z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7;
+x7=x2; y7l=vround(.5cap_height+.5vair); x4=x6;
+x4=.5w-.5u; x5r=hround(w-2.25u);
+x4l:=x6l:=x4-.125cap_curve;
+fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe
+pos6'(vair,-90); pos0(cap_stem,180);
+ pos8(cap_curve,180); pos9(vair,-90); pos10(hair,0);
+ z6'=z6; lft x0r=lft x8r=hround(x5-2/3u-.5cap_curve);
+ y8=1/3[y2,y7]; y0=3/5[y2,y7]; x9=.5[x8l,x10r];
+ bot y9r=-o; rt x10r=hround(w-.05u); y10=1/4[y2,y7];
+ filldraw stroke z6'e{right}..z0e---z8e....z9e{right}..z10e{up}; % tail
+ nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower serif
+ % tail
+math_fit(0,.75ic#);
+pickup rule.nib;
+z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius);
+z102=z100+(radius,0); z104=z100-(radius,0);
+draw z101...z102...z103...z104...cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9,10,100,101,102,103,104);
+endchar;
+
+cmchar "Circle-S brand";
+beginchar(oct"163",10u#,radius#+.52cap_height#,radius#-.52cap_height#);
+adjust_fit(5u#,5u#);
+numeric theta; theta=90-angle(50u,cap_height); slope:=-cap_height/50u; % angle at middle
+numeric s_slab; s_slab=slab;
+numeric ess'; ess'=max(fine.breadth,cap_ess);
+pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
+pos0(ess',theta); pos7(s_slab,-90);
+x2+x7=2x0=w; x7-x2=u; top y2l=cap_height+o; bot y7r=-o;
+y0=.52cap_height; lft x3l=hround u; rt x6r=hround(w-u);
+x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
+ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+pos1(hair,180); pos8(hair,180);
+ rt x1l=hround(w-1.5u); lft x8r=hround u;
+ bot y1=vround 2/3cap_height+1; top y8=vround 1/3cap_height-1;
+ filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc
+ filldraw stroke z7e{left}....{up}z8e; % lower arc
+ path upper_arc, lower_arc;
+ upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2;
+ lower_arc=z7{left}....{up}z8;
+ pos10(.3[fine.breadth,cap_hair],0);
+ pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+% lower arc and terminal
+math_fit(0,.5ic#);
+pickup rule.nib;
+z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius);
+z102=z100+(radius,0); z104=z100-(radius,0);
+draw z101...z102...z103...z104...cycle;
+penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10,100,101,102,103,104);
+endchar;
+endgroup;
+
+
+cmchar "Pitchfork symbol";
+beginchar(oct"164",12u#,asc_height#,0);
+italcorr .8asc_height#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y3=good.y .7h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+x6=x7=good.x w/2; y6=y1; y7=h+o;
+draw z6--z7; % stem
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Dotted plus sign";
+beginchar(oct"165",14u#,8u#+math_axis#,6u#-math_axis#);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=good.x .5w; top y1=h-2.5rule_thickness+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
+x5=x1; y5=h+o;
+pickup pencircle scaled 2.5rule_thickness; drawdot z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Inverted similarity sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"166",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1;
+bot y2=bot y4=-d; top y1=top y3=h;
+draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke
+labels(1,2,3,4); endchar;
+
+cmchar "Inverted similar or equal sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"167",14u#,v_center(2spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1;
+bot y2=bot y4=floor math_axis; top y1=top y3=h;
+draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke
+pickup rule.nib; lft x5=hround u-eps; x6=w-x5; y5=y6=math_axis-spread;
+draw z5--z6; % bar
+labels(1,2,3,4,5,6); endchar;
+
+cmchar "Iron cross";
+beginchar(oct"172",15u#,asc_height#,0); adjust_fit(0,0);
+pickup pencircle scaled .5rule_thickness;
+numeric cross_tension; cross_tension=.9;
+numeric cross_foot; cross_foot=4u;
+y0=.5[y1,y2]; x0=hround w/2;
+x1=x2=x0; bot y1=-o; lft x1l=3.5u; x1r=w-x1l; y1l=y1r=y1;
+top y2=h+o; x2r=x1l; x2l=x1r; y2l=y2r=y2;
+y3=y4=y0; x3=x0+eps; x4+x3=2x0;
+path p; p=z1l--z1r..tension cross_tension..z3..tension cross_tension
+ ..z2l--z2r..tension cross_tension..z4..tension cross_tension..
+ z1l..cycle;
+filldraw p;
+p:=p shifted -z0; p:=p rotated 90; p:=p shifted z0;
+filldraw p;
+penlabels(0,1,2,3,4); endchar;
+
+cmchar "Bourbaki C symbol";
+beginchar(oct"173",9u#, 1.1body_height#, 0);
+adjust_fit(0,0); pickup pencircle scaled 2rule_thickness;
+lft x4=lft x5=u; x1=x2=x8=x7=w-x4; x3=x6=hround
+w/2;
+bot y6=-o; top y3=h+o; y2=y4=y3-1.5u; y5=y7=y6+1.5u;
+y1=y2-1.5u; y8=y7+1.5u;
+draw z1--z2{up}..{left}z3..{down}z4--z5{down}..z6{right}..{up}z7--z8;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Bourbaki T symbol";
+beginchar(oct "174", 10u#, x_height#, desc_depth#);
+adjust_fit(0,0); pickup pencircle scaled 2rule_thickness;
+lft x1=u; x2=w-x1; top y1=top y2=h; x3=x4=hround w/2; y3=y1;
+bot y4=-1.1d;
+draw z1--z2; draw z3--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Circle-in-a-circle operator";
+beginarithchar(oct"175"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+pickup rule.nib;
+numeric x[],y[];
+lft x6=hround 4.5u; x2=w-x6; y2=math_axis;
+top y8=y2+.5(rt x2-lft x6); circle_points; draw_circle;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Asterisk-in-a-circle";
+beginarithchar(oct"176");
+pickup light_rule.nib; autorounded;
+y2=math_axis; top y8=6u+math_axis;
+lft x6=hround w/2 - 6u; x2=w-x6;
+circle_points; draw_circle; % circle
+numeric x[], y[];
+numeric ast_flare; ast_flare=hround .7[thin_join,stem];
+x0=.5w; y0=math_axis; for d=-150 step 60 until 150:
+z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
+ numeric theta; theta=angle(z[d]-z0);
+ fill z0+.5(0,-thin_join)rotated theta
+ ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
+ ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
+ ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d|
+labels(0,[-150],[-90],[-30],30,90,150); endchar;
+
+cmchar "Bar-in-a-circle operator";
+beginarithchar(oct"177"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+y9=y10=y2; x9=x6+3u; x10=w-x9;
+draw z9--z10;
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf
new file mode 100644
index 00000000000..987e70f42f2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf
@@ -0,0 +1,35 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigacc.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+
+% This file contains series of large accents for math extension fonts.
+
+% The sizes are `wide' (|10u#|), `wider' (|18u#|), and `widest' (|26u#|).
+
+% Character codes \0142--\0147 are generated.
+
+charlist oct"142": oct"143": oct"144"; % circumflexes
+charlist oct"145": oct"146": oct"147"; % tildes
+
+cmchar "Wide circumflex (hat) accent";
+beginchar(oct"142",10u#,.5[asc_height#,body_height#],0);
+big_hat; endchar;
+
+cmchar "Wider circumflex (hat) accent";
+beginchar(oct"143",18u#,body_height#,0);
+big_hat; endchar;
+
+cmchar "Widest circumflex (hat) accent";
+beginchar(oct"144",26u#,body_height#,0);
+big_hat; endchar;
+
+cmchar "Wide tilde (squiggle) accent";
+beginchar(oct"145",10u#,.5[asc_height#,body_height#],0);
+big_tilde; endchar;
+
+cmchar "Wider tilde (squiggle) accent";
+beginchar(oct"146",18u#,body_height#,0);
+big_tilde; endchar;
+
+cmchar "Widest tilde (squiggle) accent";
+beginchar(oct"147",26u#,body_height#,0);
+big_tilde; endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf
new file mode 100644
index 00000000000..0e7ab76423d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf
@@ -0,0 +1,700 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigdel.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+
+% This file contains series of large delimiters for math extension fonts.
+
+% The sizes are `{\tt\char`\\big}' (|2dh#|), `{\tt\char`\\Big}' (|3dh#|),
+% `{\tt\char`\\bigg}' (|4dh#|), and `{\tt\char`\\Bigg}' (|5dh#|),
+% followed in most cases by an extensible character that can grow
+% arbitrarily large in |dh#| steps,
+% where |dh#| is 60\% of the font design size.
+% (For example, a 10-point font will have large delimiters in sizes
+% 12$\,$pt, 18$\,$pt, 24$\,$pt, 30$\,$pt, 36$\,$pt, 42$\,$pt, etc.)
+
+% Character codes \0000--\0105 and \0150--\0177 are generated.
+
+charlist oct"000": oct"020": oct"022": oct"040": oct"060"; % left parentheses
+charlist oct"001": oct"021": oct"023": oct"041": oct"061"; % right parentheses
+charlist oct"002": oct"150": oct"024": oct"042": oct"062"; % left brackets
+charlist oct"003": oct"151": oct"025": oct"043": oct"063"; % right brackets
+charlist oct"004": oct"152": oct"026": oct"044": oct"064"; % left floors
+charlist oct"005": oct"153": oct"027": oct"045": oct"065"; % right floors
+charlist oct"006": oct"154": oct"030": oct"046": oct"066"; % left ceilings
+charlist oct"007": oct"155": oct"031": oct"047": oct"067"; % right ceilings
+charlist oct"010": oct"156": oct"032": oct"050": oct"070"; % left braces
+charlist oct"011": oct"157": oct"033": oct"051": oct"071"; % right braces
+charlist oct"012": oct"104": oct"034": oct"052"; % left angle brackets
+charlist oct"013": oct"105": oct"035": oct"053"; % right angle brackets
+charlist oct"016": oct"056": oct"036": oct"054"; % slashes
+charlist oct"017": oct"057": oct"037": oct"055"; % backslashes
+charlist oct"160": oct"161": oct"162": oct"163": oct"164"; % radical signs
+
+extensible oct"014": 0,0,0,oct"014"; % vertical line
+extensible oct"015": 0,0,0,oct"015"; % double vertical line
+extensible oct"060": oct"060",0,oct"100",oct"102"; % left parenthesis
+extensible oct"061": oct"061",0,oct"101",oct"103"; % right parenthesis
+extensible oct"062": oct"062",0,oct"064",oct"066"; % left bracket
+extensible oct"063": oct"063",0,oct"065",oct"067"; % right bracket
+extensible oct"064": 0,0,oct"064",oct"066"; % left floor bracket
+extensible oct"065": 0,0,oct"065",oct"067"; % right floor bracket
+extensible oct"066": oct"062",0,0,oct"066"; % left ceiling bracket
+extensible oct"067": oct"063",0,0,oct"067"; % right ceiling bracket
+extensible oct"070": oct"070",oct"074",oct"072",oct"076"; % left brace
+extensible oct"071": oct"071",oct"075",oct"073",oct"076"; % right brace
+extensible oct"072": oct"070",0,oct"072",oct"076"; % sharp left parenthesis
+extensible oct"073": oct"071",0,oct"073",oct"076"; % sharp right parenthesis
+extensible oct"074": 0,0,0,oct"077"; % arrow extension modules only
+extensible oct"075": 0,0,0,oct"167"; % double arrow extension modules only
+extensible oct"076": 0,0,0,oct"076"; % brace extension modules only
+extensible oct"077": oct"170",0,oct"171",oct"077"; % updownarrow
+extensible oct"100": oct"070",0,oct"073",oct"076"; % left moustache
+extensible oct"101": oct"071",0,oct"072",oct"076"; % right moustache
+extensible oct"102": 0,0,0,oct"102"; % left parenthesis extension modules only
+extensible oct"103": 0,0,0,oct"103"; % right parenthesis extension modules only
+extensible oct"164": oct"166",0,oct"164",oct"165"; % radical sign
+extensible oct"167": oct"176",0,oct"177",oct"167"; % double updownarrow
+extensible oct"170": oct"170",0,0,oct"077"; % uparrow
+extensible oct"171": 0,0,oct"171",oct"077"; % downarrow
+extensible oct"176": oct"176",0,0,oct"167"; % double uparrow
+extensible oct"177": 0,0,oct"177",oct"167"; % double downarrow
+
+cmchar "\big left parenthesis";
+beginchar(oct"000",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,-.25u#); left_paren(hair,stem); endchar;
+
+cmchar "\Big left parenthesis";
+beginchar(oct"020",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,-.25u#); left_paren(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg left parenthesis";
+beginchar(oct"022",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,-.25u#); left_paren(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg left parenthesis";
+beginchar(oct"040",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,-.25u#); left_paren(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible left parenthesis---top";
+beginchar(oct"060",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos1(hround min_breadth,0); pos2(hround max_breadth,0);
+rt x1r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
+top y1=h-1; y2=-d-eps;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc
+penlabels(1,2); endchar;
+
+cmchar "Extensible left parenthesis---bottom";
+beginchar(oct"100",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos3(hround min_breadth,0); pos2(hround max_breadth,0);
+rt x3r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
+bot y3=1-d; y2=h+eps;
+filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc
+penlabels(2,3); endchar;
+
+cmchar "Extensible left parenthesis---extension module";
+beginchar(oct"102",12u#,0,dh#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric max_breadth; max_breadth=bold+2dw;
+pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
+lft x2l=lft x2'l=hround 1.25u; y2=h+eps; y2'=-d-eps;
+filldraw stroke z2e--z2'e; % link
+penlabels(2,2'); endchar;
+
+cmchar "\big right parenthesis";
+beginchar(oct"001",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(-.25u#,1.5u#); right_paren(hair,stem); endchar;
+
+cmchar "\Big right parenthesis";
+beginchar(oct"021",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,2u#); right_paren(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg right parenthesis";
+beginchar(oct"023",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(-.25u#,2.5u#); right_paren(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg right parenthesis";
+beginchar(oct"041",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(-.25u#,3u#); right_paren(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible right parenthesis---top";
+beginchar(oct"061",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos1(hround min_breadth,0); pos2(hround max_breadth,0);
+lft x1l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
+top y1=h-1; y2=-d-eps;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc
+penlabels(1,2); endchar;
+
+cmchar "Extensible right parenthesis---bottom";
+beginchar(oct"101",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos3(hround min_breadth,0); pos2(hround max_breadth,0);
+lft x3l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
+bot y3=1-d; y2=h+eps;
+filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc
+penlabels(2,3); endchar;
+
+cmchar "Extensible right parenthesis---extension module";
+beginchar(oct"103",12u#,0,dh#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric max_breadth; max_breadth=bold+2dw;
+pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
+rt x2r=rt x2'r=hround(w-1.25u); y2=h+eps; y2'=-d-eps;
+filldraw stroke z2e--z2'e; % link
+penlabels(2,2'); endchar;
+
+cmchar "\big left bracket";
+beginchar(oct"002",6u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,true); endchar;
+
+cmchar "\Big left bracket";
+beginchar(oct"150",6.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+cmchar "\bigg left bracket";
+beginchar(oct"024",7u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+cmchar "\Bigg left bracket";
+beginchar(oct"042",7.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+cmchar "Extensible left bracket---top";
+beginchar(oct"062",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+pos3(stem,90); pos4(stem,90);
+x3=x1l; rt x4=hround(w-.75u+.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+penlabels(1,2,3,4); endchar;
+
+cmchar "Extensible left bracket---bottom";
+beginchar(oct"064",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+pos5(stem,90); pos6(stem,90);
+x5=x1l; rt x6=hround(w-.75u+.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,5,6); endchar;
+
+cmchar "Extensible left bracket---extension module";
+beginchar(oct"066",8u#,0,dh#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "\big right bracket";
+beginchar(oct"003",6u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,true); endchar;
+
+cmchar "\Big right bracket";
+beginchar(oct"151",6.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+cmchar "\bigg right bracket";
+beginchar(oct"025",7u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+cmchar "\Bigg right bracket";
+beginchar(oct"043",7.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+cmchar "Extensible right bracket---top";
+beginchar(oct"063",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+pos3(stem,90); pos4(stem,90);
+x3=x1r; lft x4=hround(.75u-.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+penlabels(1,2,3,4); endchar;
+
+cmchar "Extensible right bracket---bottom";
+beginchar(oct"065",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+pos5(stem,90); pos6(stem,90);
+x5=x1r; lft x6=hround(.75u-.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,5,6); endchar;
+
+cmchar "Extensible right bracket---extension module";
+beginchar(oct"067",8u#,0,dh#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "\big left floor bracket";
+beginchar(oct"004",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,false,true); endchar;
+
+cmchar "\Big left floor bracket";
+beginchar(oct"152",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],false,true); endchar;
+
+cmchar "\bigg left floor bracket";
+beginchar(oct"026",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],false,true); endchar;
+
+cmchar "\Bigg left floor bracket";
+beginchar(oct"044",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],false,true); endchar;
+
+cmchar "\big right floor bracket";
+beginchar(oct"005",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,false,true); endchar;
+
+cmchar "\Big right floor bracket";
+beginchar(oct"153",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],false,true); endchar;
+
+cmchar "\bigg right floor bracket";
+beginchar(oct"027",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],false,true); endchar;
+
+cmchar "\Bigg right floor bracket";
+beginchar(oct"045",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],false,true); endchar;
+
+cmchar "\big left ceiling bracket";
+beginchar(oct"006",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,false); endchar;
+
+cmchar "\Big left ceiling bracket";
+beginchar(oct"154",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,false); endchar;
+
+cmchar "\bigg left ceiling bracket";
+beginchar(oct"030",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,false); endchar;
+
+cmchar "\Bigg left ceiling bracket";
+beginchar(oct"046",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,false); endchar;
+
+cmchar "\big right ceiling bracket";
+beginchar(oct"007",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,false); endchar;
+
+cmchar "\Big right ceiling bracket";
+beginchar(oct"155",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,false); endchar;
+
+cmchar "\bigg right ceiling bracket";
+beginchar(oct"031",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,false); endchar;
+
+cmchar "\Bigg right ceiling bracket";
+beginchar(oct"047",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,false); endchar;
+
+cmchar "\big left curly brace";
+beginchar(oct"010",9u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); left_curly(hair,stem); endchar;
+
+cmchar "\Big left curly brace";
+beginchar(oct"156",10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); left_curly(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg left curly brace";
+beginchar(oct"032",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); left_curly(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg left curly brace";
+beginchar(oct"050",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); left_curly(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible left curly brace---top";
+beginchar(oct"070",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos1(min_breadth,0); pos1'(min_breadth,0);
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+rt x1r=rt x1'r=hround(w-1.5u+.5min_breadth);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
+top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
+filldraw z1l{3(x2l-x1l),y2-y1}...z2l---z3l
+ --z3r---z2r...{3(x1r-x2r),y1'-y2}z1'r--z1r--cycle; % stroke
+penlabels(1,2,3); endchar;
+
+cmchar "Extensible left curly brace---bottom";
+beginchar(oct"072",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos7(min_breadth,0); pos7'(min_breadth,0);
+pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
+rt x7r=rt x7'r=hround(w-1.5u+.5min_breadth);
+lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
+y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
+filldraw z5l---z6l...{3(x7l-x6l),y7-y6}z7l
+ --z7r--z7'r{3(x6r-x7r),y6-y7'}...z6r---z5r--cycle; % stroke
+penlabels(5,6,7); endchar;
+
+cmchar "Extensible left curly brace---middle";
+beginchar(oct"074",12u#,0,3dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos4(min_breadth,0); pos4'(min_breadth,0);
+forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
+lft x4l=lft x4'l=hround(1.5u-.5min_breadth);
+x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
+y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
+y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
+filldraw z2l---z3l...{3(x4l-x3l),y4-y3}z4l
+ --z4'l{3(x5l-x4l),y5-y4'}...z5l---z6l--z6r---z5r
+ ...{3(x4r-x5r),.5[y4,y4']-y5}.5[z4r,z4'r]{3(x3r-x4r),y3-.5[y4,y4']}
+ ...z3r---z2r--cycle; % stroke
+penlabels(2,3,4,5,6); endchar;
+
+cmchar "Extensible curly brace---extension module";
+beginchar(oct"076",12u#,0,.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y3=-d-eps;
+filldraw stroke z2e--z3e; % stem
+penlabels(2,3); endchar;
+
+cmchar "\big right curly brace";
+beginchar(oct"011",9u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); right_curly(hair,stem); endchar;
+
+cmchar "\Big right curly brace";
+beginchar(oct"157",10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); right_curly(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg right curly brace";
+beginchar(oct"033",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); right_curly(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg right curly brace";
+beginchar(oct"051",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); right_curly(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible right curly brace---top";
+beginchar(oct"071",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos1(min_breadth,0); pos1'(min_breadth,0);
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+lft x1l=lft x1'l=hround(1.5u-.5min_breadth);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
+top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
+filldraw z1r{3(x2r-x1r),y2-y1}...z2r---z3r
+ --z3l---z2l...{3(x1l-x2l),y1'-y2}z1'l--z1l--cycle; % stroke
+penlabels(1,2,3); endchar;
+
+cmchar "Extensible right curly brace---bottom";
+beginchar(oct"073",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos7(min_breadth,0); pos7'(min_breadth,0);
+pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
+lft x7l=lft x7'l=hround(1.5u-.5min_breadth);
+lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
+y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
+filldraw z5r---z6r...{3(x7r-x6r),y7-y6}z7r
+ --z7l--z7'l{3(x6l-x7l),y6-y7'}...z6l---z5l--cycle; % stroke
+penlabels(5,6,7); endchar;
+
+cmchar "Extensible right curly brace---middle";
+beginchar(oct"075",12u#,0,3dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos4(min_breadth,0); pos4'(min_breadth,0);
+forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
+rt x4r=rt x4'r=hround(w-1.5u+.5min_breadth);
+x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
+y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
+y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
+filldraw z2r---z3r...{3(x4r-x3r),y4-y3}z4r
+ --z4'r{3(x5r-x4r),y5-y4'}...z5r---z6r--z6l---z5l
+ ...{3(x4l-x5l),.5[y4,y4']-y5}.5[z4l,z4'l]{3(x3l-x4l),y3-.5[y4,y4']}
+ ...z3l---z2l--cycle; % stroke
+penlabels(2,3,4,5,6); endchar;
+
+cmchar "Horizontal curly brace tip---down and left";
+beginchar(oct"172",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r
+ --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---down and right";
+beginchar(oct"173",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r
+ --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and left";
+beginchar(oct"174",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l
+ --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and right";
+beginchar(oct"175",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l
+ --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "\big left angle bracket";
+beginchar(oct"012",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); left_angle(rule_thickness); endchar;
+
+cmchar "\Big left angle bracket";
+beginchar(oct"104",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); left_angle(.25[rule_thickness,stem]); endchar;
+
+cmchar "\bigg left angle bracket";
+beginchar(oct"034",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); left_angle(.5[rule_thickness,stem]); endchar;
+
+cmchar "\Bigg left angle bracket";
+beginchar(oct"052",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); left_angle(.75[rule_thickness,stem]); endchar;
+
+cmchar "\big right angle bracket";
+beginchar(oct"013",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); right_angle(rule_thickness); endchar;
+
+cmchar "\Big right angle bracket";
+beginchar(oct"105",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); right_angle(.25[rule_thickness,stem]); endchar;
+
+cmchar "\bigg right angle bracket";
+beginchar(oct"035",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); right_angle(.5[rule_thickness,stem]); endchar;
+
+cmchar "\Bigg right angle bracket";
+beginchar(oct"053",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); right_angle(.75[rule_thickness,stem]); endchar;
+
+cmchar "\big slash";
+beginchar(oct"016",10.4u#,rule_thickness#,2dh#-rule_thickness#);
+big_slash(rule_thickness+.2dw); endchar;
+
+cmchar "\Big slash";
+beginchar(oct"056",14.6u#,rule_thickness#,3dh#-rule_thickness#);
+big_slash(rule_thickness+.6dw); endchar;
+
+cmchar "\bigg slash";
+beginchar(oct"036",18.8u#,rule_thickness#,4dh#-rule_thickness#);
+big_slash(rule_thickness+dw); endchar;
+
+cmchar "\Bigg slash";
+beginchar(oct"054",23u#,rule_thickness#,5dh#-rule_thickness#);
+big_slash(rule_thickness+1.5dw); endchar;
+
+cmchar "\big backslash";
+beginchar(oct"017",10.4u#,rule_thickness#,2dh#-rule_thickness#);
+big_blash(rule_thickness+.2dw); endchar;
+
+cmchar "\Big backslash";
+beginchar(oct"057",14.6u#,rule_thickness#,3dh#-rule_thickness#);
+big_blash(rule_thickness+.6dw); endchar;
+
+cmchar "\bigg backslash";
+beginchar(oct"037",18.8u#,rule_thickness#,4dh#-rule_thickness#);
+big_blash(rule_thickness+dw); endchar;
+
+cmchar "\Bigg backslash";
+beginchar(oct"055",23u#,rule_thickness#,5dh#-rule_thickness#);
+big_blash(rule_thickness+1.5dw); endchar;
+
+cmchar "Extensible vertical line---extension module";
+beginchar(oct"014",6u#,0,dh#);
+adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
+x1=x2=good.x .5w; y1=eps; y2=-d-eps;
+draw z1--z2; % stem
+labels(1,2); endchar;
+
+cmchar "Extensible double vertical line---extension module";
+beginchar(oct"015",10u#,0,dh#);
+adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
+x1=x2=good.x .3w; x3=x4=w-x1; y1=y3=eps; y2=y4=-d-eps;
+draw z1--z2; draw z3--z4; % stems
+labels(1,2,3,4); endchar;
+
+cmchar "Extensible vertical arrow--top";
+beginchar(oct"170",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness,barr;
+thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
+pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
+lft x1l=hround(.5w-.5thickness); y1=-d-eps;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=4u+eps;
+y3=y4=y0-.29asc_height-eps;
+pos5(barr,angle(z4-z0)); z5l=z0;
+pos6(barr,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z1r--z1l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Extensible vertical arrow--bottom";
+beginchar(oct"171",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness,barr;
+thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
+pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
+lft x1l=hround(.5w-.5thickness); y1=h+eps;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=4u+eps;
+y3=y4=y0+.29asc_height+eps;
+pos5(barr,angle(z4-z0)); z5l=z0;
+pos6(barr,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z1r--z1l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Extensible vertical arrow--extension module";
+beginchar(oct"077",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=hround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0);
+lft x1l=hround(.5w-.5thickness); x2=x1; y1=h+1+eps; y2=-d-1-eps;
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "Extensible double vertical arrow--top";
+beginchar(oct"176",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=-d-eps; y7=y8=h; top y0=h+eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+pos3(thickness,90); pos4(thickness,90);
+x2-x3=x4-x1=4u+eps; y3=y4=y0-.48asc_height-eps;
+pos5(thickness,angle(z4-z0)); z5l=z0;
+pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(x3,h)
+ --(x4,h)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; % arrowhead
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Extensible double vertical arrow--bottom";
+beginchar(oct"177",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=h+eps; y7=y8=-d; bot y0=-d-eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+pos3(thickness,90); pos4(thickness,90);
+x2-x3=x4-x1=4u+eps; y3=y4=y0+.48asc_height-eps;
+pos5(thickness,angle(z4-z0)); z5l=z0;
+pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(x3,-d)
+ --(x4,-d)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; % arrowhead
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Extensible double vertical arrow--extension module";
+beginchar(oct"167",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=h+1+eps; y7=y8=-d-1-eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+penlabels(1,2,7,8); endchar;
+
+cmchar "\big radical sign";
+beginchar(oct"160",18u#,rule_thickness#,2dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\Big radical sign";
+beginchar(oct"161",18u#,rule_thickness#,3dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\bigg radical sign";
+beginchar(oct"162",18u#,rule_thickness#,4dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\Bigg radical sign";
+beginchar(oct"163",18u#,rule_thickness#,5dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "Extensible radical sign---bottom";
+beginchar(oct"164",19u#,0,3dh#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); bot y1=1-d; y2=h+eps;
+draw z1--z2; % diagonal
+pickup crisp.nib; pos3(max(curve,rule_thickness),0);
+x3l=good.x 3u; y3=.9[y1,y2];
+pos4(rule_thickness,0); x4=x1; bot y4=-d;
+pos5(vair,-45); x5l=good.x(x3l-u); z5l=whatever[z3r,(x2,body_height)];
+z6=z5r+whatever*((x2,body_height)-z3r)=whatever[z3l,z4l];
+z7=whatever[z1,z2]=z3r+whatever*(z4l-z3l);
+filldraw z5r--z6--z4l--z4--z7--z3r--z5l--cycle; % left diagonal and serif
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Extensible radical sign---extension module";
+beginchar(oct"165",19u#,0,dh#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); y1=-d-eps; y2=h+eps;
+draw z1--z2; % stem
+labels(1,2); endchar;
+
+cmchar "Extensible radical sign---top";
+beginchar(oct"166",19u#,rule_thickness#,dh#-rule_thickness#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); x3=good.x(w+.5); y1=-d-eps; bot y2=bot y3=0;
+draw z1--z2--z3; % stem and link
+labels(1,2,3); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf
new file mode 100644
index 00000000000..e9289d68834
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf
@@ -0,0 +1,392 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigop.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+% Changed to lbigop.mf and modified by Claudio Beccari C 2007
+
+% This file contains pairs of large operators for math extension fonts.
+
+% Each operator has a `{\tt\char`\\textstyle}' form, for math in text,
+% and a `{\tt\char`\\displaystyle}' form, for displayed formulas.
+
+% Character codes \0106--\0141 are generated.
+
+charlist oct"106": oct"107"; % square union signs
+charlist oct"110": oct"111"; % contour integral signs
+charlist oct"112": oct"113"; % circle-dot operators
+charlist oct"114": oct"115"; % circle-plus operators
+charlist oct"116": oct"117"; % circle-times operators
+charlist oct"120": oct"130"; % summation signs
+charlist oct"121": oct"131"; % product signs
+charlist oct"122": oct"132"; % integral signs
+charlist oct"123": oct"133"; % union signs
+charlist oct"124": oct"134"; % intersection signs
+charlist oct"125": oct"135"; % multiset union signs
+charlist oct"126": oct"136"; % lattice infimum signs
+charlist oct"127": oct"137"; % lattice supremum signs
+charlist oct"140": oct"141"; % coproduct signs
+
+cmchar "\textstyle square set union sign";
+beginchar(oct"106",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5; % stems and bar
+labels(1,2,4,5); endchar;
+
+cmchar "\displaystyle square set union sign";
+beginchar(oct"107",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5; % stems and bar
+labels(1,2,4,5); endchar;
+
+% These nex chars are commented out because they get redefined in lmathex.mf
+
+%cmchar "\textstyle circle-dot operator";
+%beginchar(oct"112",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+4dw+eps) shifted(.5[z4,z8]); % dot
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-dot operator";
+%beginchar(oct"113",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+6dw+eps) shifted(.5[z4,z8]); % dot
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle circle-plus operator";
+%beginchar(oct"114",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z2--z6; draw z4--z8; % plus
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-plus operator";
+%beginchar(oct"115",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z2--z6; draw z4--z8; % plus
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle circle-times operator";
+%beginchar(oct"116",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z1--z5; draw z3--z7; % times
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-times operator";
+%beginchar(oct"117",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z1--z5; draw z3--z7; % times
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle summation sign";
+%beginchar(oct"120",19u#,0,10/6dh#);
+%adjust_fit(0,0); pickup tiny.nib;
+%numeric top_arm_thickness, bot_arm_thickness;
+%top_arm_thickness=Vround rule_thickness;
+%bot_arm_thickness=Vround .9(.5[rule_thickness,curve]);
+%lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+%top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+%numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+%penpos1(alpha1*(curve-tiny),0); penpos2(alpha1*(curve-tiny),0);
+%penpos3(alpha1*(curve-tiny),0);
+%alpha2=diag_ratio(1,rule_thickness-tiny,y3-y4,x3r-x4l);
+%penpos4(alpha2*(rule_thickness-tiny),0);
+%z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+%filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+%pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+%top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-beak)-eps;
+%arm(5,6,a,.45,17/11u); % upper arm and beak
+%pos7(bot_arm_thickness,-90); pos8(hair,0);
+%bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak)+eps;
+%arm(7,8,b,.45,17/11u); % lower arm and beak
+%penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle summation sign";
+%beginchar(oct"130",26u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup tiny.nib;
+%numeric top_arm_thickness, bot_arm_thickness, thick_stem, thin_stem;
+%thick_stem=bold+4dw; thin_stem=rule_thickness+dw;
+%top_arm_thickness=Vround .9thin_stem;
+%bot_arm_thickness=Vround .9(.5[thin_stem,thick_stem]);
+%lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+%top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+%numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+%penpos1(alpha1*(thick_stem-tiny),0); penpos2(alpha1*(thick_stem-tiny),0);
+%penpos3(alpha1*(thick_stem-tiny),0);
+%alpha2=diag_ratio(1,thin_stem-tiny,y3-y4,x3r-x4l);
+%penpos4(alpha2*(thin_stem-tiny),0);
+%z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+%filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+%pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+%top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-1.2beak)-eps;
+%arm(5,6,a,.45,24/11u); % upper arm and beak
+%pos7(bot_arm_thickness,-90); pos8(hair,0);
+%bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+1.2beak)+eps;
+%arm(7,8,b,.45,24/11u); % lower arm and beak
+%penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle product sign";
+%beginchar(oct"121",17u#,0,10/6dh#);
+%adjust_fit(0,0); pickup crisp.nib;
+%numeric heavy_stem,light_stem;
+%heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+%pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+%pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+%lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
+%x1=x1'=x2=x2';
+%top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+%y11l-y1'=y2'-y12r=1.2bracket;
+%filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+% --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+%pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+%pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+%x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+%y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+%filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+% --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+%filldraw stroke z11e--z13e; % bar
+%penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+%cmchar "\displaystyle product sign";
+%beginchar(oct"131",23u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup crisp.nib;
+%numeric heavy_stem,light_stem;
+%heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+%pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+%pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+%lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
+%x1=x1'=x2=x2';
+%top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+%y11l-y1'=y2'-y12r=1.8bracket;
+%filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+% --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+%pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+%pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+%x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+%y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+%filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+% --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+%filldraw stroke z11e--z13e; % bar
+%penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\textstyle coproduct sign";
+beginchar(oct"140",16u#,0,10/6dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,-90); pos12(light_stem,-90); pos22(light_stem,-90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
+x1=x1'=x2=x2';
+bot y1=-d; top y2=0; y11r=y1; y12l=y22l=y2;
+y1'-y11l=y12r-y2'=1.2bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,-90); pos14(light_stem,-90); pos24(light_stem,-90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\displaystyle coproduct sign";
+beginchar(oct"141",21u#,0,16/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,-90); pos12(light_stem,-90); pos22(light_stem,-90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
+x1=x1'=x2=x2';
+bot y1=-d; top y2=0; y11r=y1; y12l=y22l=y2;
+y1'-y11l=y12r-y2'=1.8bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,-90); pos14(light_stem,-90); pos24(light_stem,-90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+%cmchar "\textstyle integral sign";
+%beginchar(oct"122",12u#,0,100/52dh#);
+%italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+%pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+%top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+%y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\displaystyle integral sign";
+%beginchar(oct"132",18u#,0,200/48dh#);
+%italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%numeric bulb_size, max_size;
+%bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+%pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+%pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+%top y3r=0; bot y7r=-d;
+%y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+%y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\textstyle contour integral sign";
+%beginchar(oct"110",12u#,0,100/52dh#);
+%italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+%pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+%top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+%y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%pickup rule.nib; autorounded;
+%draw fullcircle scaled .5w shifted z5; % contour
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\displaystyle contour integral sign";
+%beginchar(oct"111",18u#,0,200/48dh#);
+%italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%numeric bulb_size, max_size;
+%bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+%pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+%pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+%top y3r=0; bot y7r=-d;
+%y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+%y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%pickup rule.nib; autorounded;
+%draw fullcircle scaled .5w shifted z5; % contour
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle set union sign";
+beginchar(oct"123",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+labels(1,2,3,4,5); endchar;
+
+cmchar "\displaystyle set union sign";
+beginchar(oct"133",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+labels(1,2,3,4,5); endchar;
+
+cmchar "\textstyle set intersection sign";
+beginchar(oct"124",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+labels(1,2,3,4,5); endchar;
+
+cmchar "\displaystyle set intersection sign";
+beginchar(oct"134",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+labels(1,2,3,4,5); endchar;
+
+cmchar "\textstyle multiset union sign";
+beginchar(oct"125",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2stem+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle multiset union sign";
+beginchar(oct"135",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2curve+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle lattice infimum sign";
+beginchar(oct"126",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\displaystyle lattice infimum sign";
+beginchar(oct"136",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\textstyle lattice supremum sign";
+beginchar(oct"127",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\displaystyle lattice supremum sign";
+beginchar(oct"137",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf
new file mode 100644
index 00000000000..cc6a3f5bf90
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf
@@ -0,0 +1,1622 @@
+%% File LBSYMBOLS copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This file defines the symbols of AMS special MSB font.
+
+def char_negate(suffix c,t,b) = %c is center point; t is top point; b is bottom
+pickup rule.nib;
+w-x.t=x.b; y.t-y.c=y.c-y.b; draw z.t--z.b;
+penlabels(t,c,b); enddef;
+def char_center(suffix c) = % find center of type character
+x.c=w/2; y.c=.5[-d,h]; enddef;
+
+cmchar "Less than or not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"000",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=x.c; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"001",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=x.c; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Not less than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"002",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not greater than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"003",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not less than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"004",14u#,v_center(spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3); endchar;
+
+cmchar "Not greater than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"005",14u#,v_center(spread#+rule_thickness#+6u#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Not precedes sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"006",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-epsilon; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{-u,-spread}...{left}z2; % upper diagonal
+draw z3{-u,spread}...{left}z2; % lower diagonal
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Not follows sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"007",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-epsilon; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{u,-spread}...{right}z2; % upper diagonal
+draw z3{u,spread}...{right}z2; % lower diagonal
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Less than or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"010",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=2/3[x.c, x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"011",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=2/3[x.c, w-x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Not less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"012",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Not greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"13",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"014",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; lft
+x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3];
+top y1=h; draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9;
+y3-y9=spread'; draw z8--z9; % bar
+x100=w/2; y100=y8; % center point
+y101=.5[y8,y3]; x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,8,9); endchar;
+
+cmchar "Greater than or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"015",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; lft
+x1=hround 1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h; draw z1--z2--z3; % diagonals
+x8=x1;
+x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+x100=w/2; y100=y8; % center point
+y101=.5[y8,y3]; x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,8,9); endchar;
+
+cmchar "Not precedes or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"016",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{-u,-spread}...{left}z2; % upper diagonal
+draw z3{-u,spread}...{left}z2; % lower diagonal
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not follows or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"017",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h-3u; draw z1{u,-spread}...{right}z2; % upper diagonal
+draw z3{u,spread}...{right}z2; % lower diagonal
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Precedes or not approximately equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"020",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{-u,-spread}...{left}z2; %upper `diagonal'
+draw z3{-u,spread}...{left}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Follows or not equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % spread of similarity sign
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % spread between symbols
+compute_spread(5/4 x_height#,3/2 x_height#); % spread of follows sign
+beginchar(oct"021",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{u,-spread}...{right}z2; %upper `diagonal'
+draw z3{u,spread}...{right}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,11,12,13,14); endchar;
+
+
+
+cmchar "Less than or not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"022",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+
+cmchar "Greater than or not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"023",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+z.c=.5[z12,z13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+cmchar "Negated less than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"024",14u#,v_center(2spread#'+spread#+2rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h-3u;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Negated greater than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"025",14u#,v_center(2spread#'+spread#+2rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h-3u;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Precedes or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"026",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1{-u,-spread}..{left}z2; % diagonals
+draw z3{-u, spread}..{left}z2;
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=2/3[x.c, x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Follows or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"027",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1{u,-spread}..{right}z2; % diagonals
+draw z3{u,spread}..{right}z2;
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=2/3[x.c, w-x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Precedes with not approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"030",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for precedes sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x10= hround 1.5u-eps; x9=x11=w-x10;
+y9-y11=spread; y10=.5[y9,y11]; top y9=h;
+draw z9{-u,-spread}...{left}z10;
+draw z11{-u,spread}...{left}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+z.c=.5[z2,z7]; x.t=3/8[x.c,x4]; y.t=1/3[y2,y11];
+char_negate(c,t,b);
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+
+cmchar "Follows with not approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"031",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for follow sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x9 = hround 1.5u-eps; x10=w-x9; x11=x9;
+y9-y11=spread; y10=.5[y9,y11]; top y9=h;
+draw z9{u,-spread}...{right}z10;
+draw z11{u,spread}...{right}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+z.c=.5[z2,z7]; x.t=3/8[x.c,x4]; y.t=1/3[y2,y11];
+char_negate(c,t,b);
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+
+cmchar "Less than or not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"032",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+top y13=top y11=bot y3-spread''; top y12=top y14=bot y11+spread';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+x.c=w/2; y.c=.5[y12, y13-spread'']; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Greater than or not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"033",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- spread''=top y11;
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+x.c=w/2; y.c=.5[y12,y13-spread'']; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Thick not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"034",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup pencircle xscaled .8rule_thickness
+yscaled 1.87rule_thickness; if vair#>.8curve#: pickup
+rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=h;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+char_center(100); x101=w-4u; y101=y1+5u;
+char_negate(100,101,102);
+labels(1,2,3,4,99,100); endchar;
+
+
+cmchar "Not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"035",14u#,v_center(3spread#+2rule_thickness#+8u#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi %
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h-4u; top y2-bot y1=spread;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+pickup rule.nib;
+lft x5=lft x7=hround u-eps; x6=x8=w-x5;
+y5=y6=y1-spread; y7=y8=y5-spread;
+draw z5--z6; draw z7--z8; % double equal sign
+char_center(100); x101=w-3u; y101=y1+4u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,6,7,8,99,100); endchar;
+
+cmchar "45 degree angle line";
+beginchar(oct"036",16u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x1 = 0+eps =x0; % rt x2=;
+z0-z1=(z2-z1) rotated 45;
+draw z1--z2;
+labels(0,1,2); endchar;
+
+cmchar "135 degree angle line";
+beginchar(oct"037",16u#,body_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x2 = 0+eps= x0; % rt x2=;
+z0-z2=(z1-z2) rotated -45;
+draw z1--z2;
+labels(0,1,2); endchar;
+
+cmchar "Negated subset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"040",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x100=w/2; y100=.5[y3,y8]; x101=x3-2u; y101=y3+2u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated superset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"041",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x100=x3+2.5u; y100=.5[y8,y3]; x101=x100+2.5u; y101=y3+2u;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"042",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+char_center(c); x.t=w-2.5u; y.t=h+u; char_negate(c,t,b);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Negated superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"043",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+char_center(c); x.t=w-2.5u; y.t=h+u; char_negate(c,t,b);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Subset or not (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"044",14u#,v_center(2.33spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=1.33spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.c=w/2; y.c=.5[y9,y9']; x.t=1/2[x.c,w]; y.t=.5[y8,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Superset or not (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"045",14u#,v_center(2.33spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=1.33spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.c=w/2; y.c=.5[y9,y9']; x.t=1/2[x.c,w]; y.t=.5[y8,y3];
+char_negate(c,t,b);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Another not subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"046",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.t=w-2.5u; y.t=y3+2u; x.b=.5[x2,x5]; y.b=y9'-2u; z.c=.5[z.b,z.t];
+draw z.b--z.t; labels(c,b,t);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Another superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"047",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.t=x5; y.t=y3+2u; x.b=2.5u; y.b=y9'-2u; z.c=.5[z.b,z.t];
+draw z.b--z.t; labels(c,b,t);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Subset or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"050",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+z100=.5[z8,z9]; y101=.5[y8,y3];x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Superset or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"051",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+z100=.5[z8,z9]; y101=.5[y8,y3];x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Not subset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"052",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+char_center(100); y101=y1+3u; x101=w-3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Not superset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"053",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+char_center(100); y101=y1+3u; x101=w-3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated double vertical line (norm or cardinality)";
+beginchar(oct"054",9u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2; top y1=h; .5[y1,y2]=math_axis;
+x3=x4=w-x1; y3=y1; y4=y2;
+compute_spread(.45x_height#,.55x_height#); x3-x1=spread;
+draw z1--z2; draw z3--z4; % stems
+char_center(c); x.t=w; y.t=2/3h;
+char_negate(c,t,b);
+labels(1,2,3,4); endchar;
+
+cmchar "Negated vertical line";
+beginchar(oct"055",5u#,body_height#,paren_depth#);
+italcorr body_height#*slant+.5rule_thickness#-2u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=good.x .5w; top y1=h+eps; bot y2=-d-eps;
+draw z1--z2; % stem
+x.t=w; x.b=w-x.t; y.t=2/3h; y.b=1/3h;
+draw z.b--z.t;
+labels(1,2,b,t); endchar;
+
+cmchar "Negated cute vertical bar";
+beginchar(oct"056",4u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=hround(w/2); top y1=x_height; bot y2=-o;
+draw z1--z2;
+char_center(c); x.t=w; y.t=5/8h;
+char_negate(c,t,b);
+labels(1,2); endchar;
+
+cmchar "Negated pair of cute vertical bars";
+beginchar(oct"057",7u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=u; x2=x1; top y1=x_height; bot y2=-o;
+x3=w-x1; x4=x3; y3=y1; y4=y2;
+draw z1--z2; draw z3--z4;
+char_center(c); x.t=w; y.t=5/8h;
+char_negate(c,t,b);
+labels(1,2,3,4); endchar;
+
+cmchar "Negated left turnstile";
+beginchar(oct"060",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+.5[y1,y2]=y3=y4; x1=x2=x3;
+lft x3=hround u; x4=w-x3; top y1=h; bot y2=0;
+draw z1--z2; % stem
+draw z3--z4; % bar
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+labels(1,2,3,4,b,t); endchar;
+
+cmchar "Negated forces symbol";
+beginchar(oct"061",13u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+draw z6--z5; draw z2--z1; draw z3--z4;
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(1,2,3,4,5,6,b,t); endchar;
+
+cmchar "Negated satisfies symbol";
+beginchar(oct"062",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+top y1=h; bot y2=0; y0=good.y .5[y1,y2];
+y3=vround y0+.5spread;
+y5=vround y0- .5spread; y4=y3; y6=y5;
+lft x1=hround u; x4=w-x1;
+x1=x2=x3=x5; x4=x6; x0=x1;
+draw z1--z2; % vertical line
+draw z3--z4; % draw top horizontal piece
+draw z5--z6; % draw bottom horizontal piece
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(0,1,2,3,4,5,6,b,t); endchar;
+
+cmchar "Negated forces symbol with extra bar";
+beginchar(oct"063",13u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+x3'=x3; x4'=x4; y3:=y3+.5spread; y4:=y3;
+y3'=y4'=y3-spread;
+draw z6--z5; draw z2--z1; draw z3--z4;
+draw z3'--z4'; % extra bar
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(1,2,3,4,5,6,b,t); endchar;
+
+
+cmchar "Negated rightward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"064",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Negated leftward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"065",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Negated leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"066",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3); endchar;
+
+cmchar "Negated rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"067",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3); endchar;
+
+cmchar "Negated leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"070",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Negated rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"071",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Negated left-and-right arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"075",18u#,
+ v_center(if monospace:.6asc_height#+fi spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis if monospace:+vround.3asc_height fi; lft x0=hround u;
+if monospace: x1+.5rule_thickness=hround(w-u) else: x1=.5w fi;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % left arrowhead and stem
+pos11(rule_thickness,90); pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0);
+y10=y11=y12=math_axis if monospace:-vround.3asc_height fi;
+rt x10=hround(w-u);
+if monospace: x11-.5rule_thickness=hround u else: x11=.5w fi;
+y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10-3u-eps;
+pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y12l)--(w,y12l))); x12=xpart point t of p;
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12l---z11l..z11r---z12r--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % right arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,19); endchar;
+
+cmchar "Negated double leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x7=hround u-eps; x8=x7; x1=x2=w-x7;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; lft x0=hround u-eps; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; % arrowhead
+pickup rule.nib; x100=.5[x9,x1]; y100=y9; x101=x100+2u; top y101=top y3;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Negated double rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x2=x1; x7=x8=w-x1;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; rt x0=hround(w-u)+eps; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(w,y3)
+ --(w,y4)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; % arrowhead
+pickup rule.nib; x100=.5[x9,x1]; y100=y9; x101=x100+2u; top y101=top y3;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Negated double left-and-right arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"074",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace: -u#,-u# else: 0,0 fi); pickup rule.nib;
+lft x7=hround u-eps; x8=x7; x1=x2=w-x7;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; lft x0=hround u-o; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+5u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0 & cycle; % erase excess at left
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % left arrowhead
+rt x10=hround(w-u)+o; y10=good.y math_axis;
+pos13(rule_thickness,0); pos14(rule_thickness,0);
+y13=y3; y14=y4; x13=x14=x10-5u-eps;
+pos15(rule_thickness,angle(z14-z10)); z15l=z10;
+pos16(rule_thickness,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+erase filldraw z10..{z13-z19}z13--(w,y13)
+ --(w,y14)--z14{z19-z14}..z10 & cycle; % erase excess at right
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y10)--(w,y10)));
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % right arrowhead
+char_center(100); top y101=top y13; x101=x100+1.5u; char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,7,8,9,10,13,14,15,16,19); endchar;
+
+cmchar "Times-division symbol";
+beginarithchar(oct"076");
+pickup rule.nib;
+x11=good.x(1/sqrt2)[.5w,rt u]; y11=good.y(1/sqrt2)[math_axis,bot h];
+x12=x13=w-x11; x14=x11; .5[y11,y12]=.5[y13,y14]=math_axis; y12=y14;
+draw z11--z12; draw z13--z14; % diagonals
+x3-.5dot_size=hround(.5w-.5dot_size); %center_on(x3);
+y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
+lft x1=hround u-eps; x2=w-x1; y1=y2=math_axis;
+draw z1--z2; % bar
+pos3(dot_size,0); pos4(dot_size,90); z3=z4;
+pos5(dot_size,0); pos6(dot_size,90); z5=z6; x5=x3; .5[y3,y5]=math_axis;
+dot(3,4); dot(5,6); % dots
+penlabels(1,2,3,4,5,6,11,12,13,14); endchar;
+
+cmchar "Null set symbol";
+beginarithchar(oct"077");
+pickup rule.nib;
+z0=(w/2,h/2); % center of circle
+rt x1-lft x0=hround(h/2 + o); y1=y0;
+numeric theta; theta=45;
+for i=2 upto 8: z[i]-z0=(z1-z0) rotated ((i-1)*theta); endfor
+draw z8...z1 for i=2 upto 8: ...z[i] endfor;
+lft x9=u; x10=w-x9; bot y9=bot y7; top y10=top y3; draw z9--z10;
+labels(range 0 thru 10); endchar;
+
+cmchar "Negated existential quantifier";
+beginchar(oct"100",10u#,asc_height#,0);
+italcorr asc_height#*slant;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x2=x3=x5=w-x1; x4=x6-.25u=x1;
+top y1=h; bot y4=0; y2=y1; y5=y6=.5[y1,y3]; y3=y4;
+draw z1--z2--z3--z4; % upper bar, stem, lower bar
+draw z5--z6; % middle bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,6); endchar;
+
+charlist oct"133": oct"134";
+charlist oct"135": oct"136";
+
+cmchar"Wider than widest circumflex (hat) accent";
+beginchar(oct"133",34u#,1.1body_height#,0);
+adjust_fit(0,0);
+pickup crisp.nib;
+pos2(.7[vair,curve],90); top y2r=h+o; x2=.5w;
+x1=w-x3=good.x-eps; y1=y3=.45[x_height,y2];
+pos1(1.2hair,angle(z2-z1)+90); pos3(1.2hair,angle(z3-z2)+90);
+filldraw stroke z1e--z2e--z3e;
+penlabels(1,2,3);
+%big_hat;
+endchar;
+
+cmchar"Very Widest circumflex (hat) accent";
+beginchar(oct"134",42u#,1.1body_height#,0);
+adjust_fit(0,0);
+pickup crisp.nib;
+pos2(.7[vair,curve],90); top y2r=h+o; x2=.5w;
+x1=w-x3=good.x-eps; y1=y3=.45[x_height,y2];
+pos1(1.2hair,angle(z2-z1)+90); pos3(1.2hair,angle(z3-z2)+90);
+filldraw stroke z1e--z2e--z3e;
+penlabels(1,2,3);
+%big_hat;
+endchar;
+
+cmchar"Even wider tilde (squiggle) accent";
+beginchar(oct"135",34u#,1.1body_height#,0);
+%big_tilde;
+adjust_fit(0,0); pickup crisp.nib;
+numeric theta; theta=angle(1/6(w-vair),1/4(h-x_height));
+numeric mid_width; mid_width=.4[vair,stem];
+pos1(1.5vair,theta+80); pos2(2vair,theta+80);
+pos3(2vair,theta+80); pos4(1.5vair,theta+80);
+z2-z1=z4-z3 = (mid_width-crisp)*dir theta;
+lft x1r=w-rt x4l=0; top y4r=h;
+bot y1l=vround(bot y1l+min(.6[x_height,h],y3l-.25vair)-top y1r);
+pair delta; ypart delta=3(y3l-y1l); delta=whatever*dir theta;
+filldraw z1l..controls(z1l+delta)and(z3l-delta)..z3l..z4l
+--z4r..controls(z4r-delta)and(z2r+delta)..z2r..z1r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar"Very widest tilde (squiggle) accent";
+beginchar(oct"136",42u#,1.2body_height#,0);
+%big_tilde;
+adjust_fit(0,0); pickup crisp.nib;
+numeric theta; theta=angle(1/6(w-vair),1/4(h-x_height));
+numeric mid_width; mid_width=.4[vair,stem];
+pos1(1.5vair,theta+80); pos2(2vair,theta+80);
+pos3(2vair,theta+80); pos4(1.5vair,theta+80);
+z2-z1=z4-z3 = (mid_width-crisp)*dir theta;
+lft x1r=w-rt x4l=0; top y4r=h;
+bot y1l=vround(bot y1l+min(.6[x_height,h],y3l-.25vair)-top y1r);
+pair delta; ypart delta=3(y3l-y1l); delta=whatever*dir theta;
+filldraw z1l..controls(z1l+delta)and(z3l-delta)..z3l..z4l
+--z4r..controls(z4r-delta)and(z2r+delta)..z2r..z1r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar "Reversed turned F";
+beginchar(oct"140",10u#,asc_height#,0);
+italcorr asc_height#*slant;
+adjust_fit(0,0); pickup rule.nib;
+lft x4=hround u-eps; x2=x3=x5=w-x4; x6=x4+.27w;
+top y2=h; bot y4=0; y5=y6=.5[y2,y3]; y3=y4;
+draw z2--z3--z4; % upper bar, stem, lower bar
+draw z5--z6; % middle bar
+labels(2,3,4,5,6); endchar;
+
+cmchar "The Reversed inverted letter G";
+beginchar(oct"141",12u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#; adjust_fit(0,0);
+ pickup rule.nib;
+ rt x1=hround(w-1.35u); x2=x4=.5w+u;
+ lft x3=hround max(u,2u-.5cap_curve); rt x5=hround(w-1.2u);
+ top y1=vround .93h+o; top y2=h+o; y3=.5h;
+ bot y4=-o; bot y5=vround .07h-o;
+ draw z1...{left}z2...{down}z3{down}...{right}z4...{up}z5;
+ z7=z5; x0=x7; top y0=1+vround .35[bar_height,x_height];
+ draw z0--z7; % stem
+ z0=z9; y8=y9; lft x8=hround x4;
+ draw z8--z9; % bar
+ math_fit(-.3cap_height#*slant-.5u#,.5ic#);
+picture rvchar;
+ rvchar=currentpicture reflectedabout((.5w,0),(.5w,h));
+currentpicture:= rvchar;
+penlabels(0,1,1',2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Upsidedown, uppercase Greek Omega";
+beginchar(oct"146",13u#,cap_height#,0);
+italcorr .75cap_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup rule.nib; pos1(vair,90); pos2(vair,180);
+pos3(vair,180); pos4(vair,0); pos5(vair,0);
+x1=.5w; top y1r=h+o; lft x2r=hround u; y2=y4=2/3h; x4=w-x2;
+rt x3l=hround(1/3(w+.5u)+.5hair); bot y3=bot y5=0; x5=w-x3;
+filldraw stroke z3e{up}...{up}z2e
+ & pulled_super_arc.e(2,1)(.5superpull)
+ & pulled_super_arc.e(1,4)(.5superpull)
+ & z4e{down}...{down}z5e; % bowl
+numeric arm_thickness; path p; p=z3{up}...{up}z2;
+arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi);
+pickup crisp.nib;
+pos6(arm_thickness,-90);
+pos7(arm_thickness,-180);
+bot y6r=0; x6=x3; lft x7r=hround .8u; y7=good.y(y6l+.5beak)+eps;
+(x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x;
+arm(6,7,a,.5beak_darkness,-1.2beak_jut); % left arm and beak
+pos8(arm_thickness,-90); pos9(fudged.hair,0);
+y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
+arm(8,9,b,.5beak_darkness,1.2beak_jut); % right arm and beak
+%math_fit(0,.5ic#);
+picture v; v:=currentpicture;
+numeric t; t=h-d;
+v:=v reflectedabout((0,0),(w,0));
+currentpicture:=v shifted(0,aspect_ratio*cap_height);
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "The letter Edh (Old English rune, like thorn)";
+% adapted from cm partial differential sign, vol E, p 233.
+beginchar(oct"147",10u#,1.2asc_height#,0);
+italcorr .7asc_height#*slant+.5curve#-1.5u#;
+adjust_fit(0,0);
+numeric top_thickness,bot_thickness,side_thickness,pull;
+top_thickness=max(tiny.breadth,vround(slab-2vair_corr));
+bot_thickness=max(tiny.breadth,vround(slab-vair_corr));
+side_thickness=max(tiny.breadth,hround (slab-vair_corr));
+pull=min(.25,1.5superpull);
+pickup fine.nib; pos2(top_thickness,90);
+pos3(side_thickness,0); pos4(bot_thickness,-90);
+pos5(side_thickness,-180); pos6(vair,-270);
+lft x5r=w-rt x3r=hround max(.75u,1.5u-.5side_thickness);
+x4=x6+.1u=x2+u=.5w;
+top y2r=h+o; y3=.5[y2,y4]; bot y4r=-o;
+y5=.5[y4,y6]; top y6=vround 5/8h+o;
+path p; p=pulled_super_arc.l(3,4)(pull);
+numeric t; t=xpart(p intersectiontimes((x3r,y5)--(x4,y5)));
+pos7(thin_join,0); z7l=point t of p;
+(x,y6r)=whatever[z7l,z6l]; x6r:=max(x,.5[x5r,x6]);
+x2:=x5; x2l:=x2r:=x2;
+filldraw stroke pulled_super_arc.e(2,3)(pull)
+ & {{interim superness:=more_super; pulled_super_arc.e(3,4)(pull)}}
+ & {{less_tense; pulled_super_arc.e(4,5)(pull) & pulled_super_arc.e(5,6)(pull)}}
+ & z6e{right}...{direction t of p}z7e; % arc and bowl
+%pos1(hair,180); pos0(flare,180); % commenting out the arc and bulb
+%lft x0r=min(lft x2-eps,hround 1.2u);
+%y0=vround min(.85h-.5flare,.8h+.5flare)+o;
+%{{less_tense; bulb(2,1,0)}}; % arc and bulb
+%math_fit(-.3x_height#*slant+.5curve#-u#,ic#-u#);
+pickup pencircle xscaled 1.4rule_thickness yscaled .5rule_thickness;
+x10=x11=x5; x12=x13=w-x10; y10=y13;
+y10-y11=y12-y13=cap_stem; .5[y11,y10]=.5[y6,y2];
+%draw z10--z11--z12--z13; % cross piece
+draw z11--z12; % linear cross piece
+penlabels(2,3,4,5,6,7,10,11,12,,13); endchar;
+
+cmchar "Equal or similar symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"150",14u#,v_center(2spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=y1+spread;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+pickup rule.nib;
+lft x5=hround u-eps; x6=w-x5; top y5=top y6=h;
+draw z5--z6;
+labels(1,2,3,4,5,6); endchar;
+
+
+%% parameters for Hebrew letters Beth, Gimel, Dalet
+numeric theta; theta=45;
+cmchar "Hebrew letter Beth";
+beginchar(oct"151", 12u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1; y2r=y1r;
+rt x3=w-u; y2l-y3=y0-y1r;
+x4=x3;
+% now for the base.
+pos12(cap_curve/cosd theta, theta); pos11(cap_curve/cosd theta, theta);
+y11r=y12r=y4; y11l=0;
+x12=u; x11=w-x12;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..{down}z3&
+z3{up}..tension.8..z2r{left}..{left}z1r..z0..cycle; % top
+pickup rule.nib; draw z3..z4; % down stroke at right of letter
+filldraw stroke z11e{left}..{left}z12e;
+penlabels(0,1,2,3,4,11,12);
+endchar;
+
+cmchar "Hebrew letter Gimel";
+beginchar(oct"152", 8u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1+.5u; y2r=y1r;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..tension.8..{left}z2r
+ ..{left}z1r..z0..cycle; % top slab
+z3=z2l;x4=x3+.2stem; y4=-o; x5=x4+.3stem; y5=y3c;
+x3a=x3b=x3c=x3; y3a=.8h; y3b=.5h; y3c=cap_curve;
+y5:=.5y5; % reset y5
+path p, q; p=(z3---z3c..z4); q=(z4{1,1}..z5..{-.005,1}z3); % vertical
+filldraw p&q&cycle;
+% now for the base.
+pos12(cap_curve/cosd theta, theta); pos11(cap_curve/cosd theta, theta);
+pos13(cap_curve/cosd theta, theta); y13=y12; x13=w;
+ % z13 is a dummy point for getting intersection
+y11r=y12r; y11l=0;
+x12=u;
+z10=p intersectionpoint (z12r--z13r); z11r=z10;
+filldraw stroke z11e{left}..{left}z12e;
+penlabels(0,1,2,3,3c,4,5,11,12);
+endchar;
+
+cmchar "Hebrew letter Daleth";
+beginchar(oct"153", 12u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1+.5u; y2r=y1r;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..tension.8..{left}z2r
+ ..{left}z1r..z0..cycle; % top slab
+z3=z2l;x4=x3+.2stem; y4=-o; x5=x4+.3stem; y5=y3c;
+x3a=x3b=x3c=x3; y3a=.8h; y3b=.5h; y3c=cap_curve;
+y5:=.5y5; % reset y5
+path p, q; p=(z3---z3c..z4); q=(z4{1,1}..z5..{-.005,1}z3); % vertical
+filldraw p&q&cycle;
+penlabels(0,1,2,3,3c,4,5);
+endchar;
+
+cmchar "Dotted less than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"154",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+y4=y2; x4=.75[x2, x1]; z5=z4;
+pos4(dot_size,0); pos5(dot_size,90); dot(4,5);
+labels(1,2,3,4,5); endchar;
+
+cmchar "Dotted greater than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"155",14u#,v_center(spread#+rule_thickness#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+y4=y2; x4=.75[x2, x1]; z5=z4;
+pos4(dot_size,0); pos5(dot_size,90); dot(4,5);
+labels(1,2,3,4,5); endchar;
+
+cmchar "Times operator with left vertical";
+beginarithchar(oct"156"); pickup rule.nib;
+x1=good.x(1/sqrt2)[.5w,rt u]; y1=good.y(1/sqrt2)[math_axis,bot h];
+x2=x3=w-x1; x4=x1; .5[y1,y2]=.5[y3,y4]=math_axis; y2=y4;
+draw z1--z2; draw z3--z4; % diagonals
+draw z1--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Times operator with right vertical";
+beginarithchar(oct"157"); pickup rule.nib;
+x1=good.x(1/sqrt2)[.5w,rt u]; y1=good.y(1/sqrt2)[math_axis,bot h];
+x2=x3=w-x1; x4=x1; .5[y1,y2]=.5[y3,y4]=math_axis; y2=y4;
+draw z1--z2; draw z3--z4; % diagonals
+draw z2--z3;
+labels(1,2,3,4); endchar;
+
+cmchar "Cute vertical bar";
+beginchar(oct"160",4u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=hround(w/2); top y1=x_height; bot y2=-o;
+draw z1--z2;
+labels(1,2); endchar;
+
+cmchar "Two cute vertical bars";
+beginchar(oct"161",7u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=u; x2=x1; top y1=x_height; bot y2=-o;
+x3=w-x1; x4=x3; y3=y1; y4=y2;
+draw z1--z2; draw z3--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Integer division (reverse quotient) symbol";
+beginarithchar(oct"162");
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x2 = 0+eps= x0; % rt x2=;
+z0-z2=(z1-z2) rotated -45;
+draw z1--z2;
+labels(1,2,3,4); endchar;
+
+
+cmchar "Thick similarity sign";% taken from symbol.mf
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"163",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .8rule_thickness yscaled 1.87rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=h;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+labels(1,2,3,4); endchar;
+
+
+cmchar "Approximate equality sign"; % taken fron symbol.mf
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+beginchar(oct"164",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .8rule_thickness yscaled 1.87rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h; top y2-bot y1=spread';
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread);
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Approximate equality plus lower bar sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+beginchar(oct"165",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h; top y2-bot y1=spread';
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread);
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+y9=y10; x9=x1; x10=x8; y5-y9=spread';
+pickup rule.nib; draw z9--z10;
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+
+cmchar "Follows with approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"166",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for follow sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x9 = hround 1.5u-eps; x10=w-x9; x11=x9;
+y9-y11=spread; top y9=h; y10=.5[y11, y9];
+draw z9{u,-spread}...{right}z10;
+draw z11{u,spread}...{right}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y1=top y3=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+cmchar "Precedes with approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"167",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0);
+% now for precedes sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+x9=x11=w-x10; lft x10=hround 1.5u-eps;
+y9-y11=spread; top y9=h; y10=.5[y11, y9];
+draw z9{-u,-spread}...{left}z10;
+draw z11{-u,spread}...{left}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+cmchar "Arch with left downward arrowhead";
+beginchar(oct"170",18u#,x_height#,0);
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+for i=0 upto 6: x[i]:=x[i]-5.5u; x[i]l:=x[i]l-5.5u; x[i]r:=x[i]r-5.5u; endfor
+x9:=x9-5.5u;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2r---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead
+% arch represented by z2, z11 (top) z12
+rt x12=w-1u; bot y12=y0; top y11=h+o; x11=.5[x2, x12];
+pickup rule.nib; draw z2{up}...{right}z11...{down}z12;
+penlabels(0,1,2,3,4,5,6,9,11,12); endchar;
+
+cmchar "Arch with right downward arrowhead";
+beginchar(oct"171",18u#,x_height#,0);
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+for i=0 upto 6: x[i]:=x[i]+5.5u; x[i]l:=x[i]l+5.5u; x[i]r:=x[i]r+5.5u; endfor
+x9:=x9+5.5u;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2r---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead
+% arch represented by z2, z11 (top) z12 (right)
+lft x12=u; bot y12=y0; top y11=h+o; x11=.5[x2, x12];
+pickup rule.nib; draw z2{up}...{left}z11...{down}z12;
+penlabels(0,1,2,3,4,5,6,9,11,12); endchar;
+
+cmchar "Stylized F";
+beginarithchar(oct"172");
+pickup pencircle xscaled 2.5rule_thickness yscaled .5rule_thickness;
+bot y1=-d; top y2=top y3=h+o; y4=y5=.5[y1, y2]; lft x1=u; x3=w-x1;
+numeric t; t=4; % t=slope of thck stem
+y2-y1=t*(x2-x1);
+z4=whatever[z1, z2]; x5-x4=.6(x3-x2);
+draw z1--z2--z3; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+transform tt; tt:=currenttransform;
+currenttransform:=tt slanted 1/4;
+cmchar "Lowercase variation of Greek kappa";
+% will use same dimensions as standard Greek lowercase kappa
+% see vol E, p 155.
+beginchar(oct"173", 12u#, x_height#, 0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup rule.nib;
+pos1(stem,0); pos2(stem,0);x1l=hround(2u-.5stem); x2r=w-x1l;
+top y2+.3stem=h+oo; bot y1-.3stem=-oo;
+filldraw z1l---z2l...z2r---z1r...cycle;
+pickup crisp.nib;
+pos3(hair,180); x3=lft x1l; y3=3/4h; pos4(stem,90);
+top y4r+.15stem=h+oo; x4-x3=.05[x1,x2];
+pos4'(hair,0); y4'=y3; x4'=1/4[x1,x2];
+pos5(hair,90); z5=z1;
+filldraw super_arc.r(3,4)&super_arc.r(4,4')...{z1-z2}z5&z5{z2-z1}
+...super_arc.l(4',4)&super_arc.l(4,3)---cycle; % left arm
+pos8(hair,-90); pos6(hair,0);
+z8=z2; pos7(stem, -90); bot y7r-.15stem=-oo; x6-x7=x4-x3;
+x6=w-x3;
+pos7'(hair,180); y7'=y6; x7'=w-x4';
+y6=h-y3;
+filldraw super_arc.r(6,7)&super_arc.r(7,7')...{z2-z1}z8&z8{z1-z2}
+...super_arc.l(7',7)&super_arc.l(7,6)---cycle; % right arm
+%filldraw z8{z1-z2}..z7l...{up}z6r---z6l{-u,-2u}...z7r..{z2-z1}z8---cycle; %right arm
+penlabels(range 1 thru 8,4'); endchar;
+
+cmchar "H-bar symbol, slanted bar";
+beginchar(oct"175",9u#,1.25asc_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup tiny.nib;
+pos1(stem,0); pos2(stem,0); x1=x2;
+lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
+filldraw circ_stroke z2e--z1e; % left stem
+sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
+pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem);
+x5=x4-.25u; ital_arch(2,3,4); % arch
+x7=w; hook_out(5,6,7)(skewed); % closing hook
+filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
+pickup light_rule.nib;
+x8=x.a2; y8=.7h; x9=x4l; y9=7/8h;
+draw z8--z9;
+math_fit(0,ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "H-bar symbol, vertical bar";
+beginchar(oct"176",9u#,1.20asc_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup tiny.nib;
+pos1(stem,0); pos2(stem,0); x1=x2;
+lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
+filldraw circ_stroke z2e--z1e; % left stem
+sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
+pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem);
+x5=x4-.25u; ital_arch(2,3,4); % arch
+x7=w; hook_out(5,6,7)(skewed); % closing hook
+filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
+pickup light_rule.nib;
+x8=x.a2; y8=y9=.81h; rt x9=x4l; draw z8--z9;
+math_fit(0,ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Reversed, reflected, lowercase Greek epsilon";
+beginchar(oct"177",8u#,x_height#,0);
+italcorr x_height#*slant+.5hair#-2u#;
+adjust_fit(0,0); pickup fine.nib;
+pos0(bar,90); pos1(bar,90); pos2(curve,180);
+pos3(vair,270); pos4(hair,300); pos6(bar,90); pos7(bar,90);
+x1=.5w+.5u; x0=x1+u; lft x2r=hround(1.5u-.5curve); x3=.5[x0,x1];
+x4r=good.x(w-u); x5=w+.5u; x6=x0; z7=z2l;
+top y0r=top y1r=h; y2=y5=y6=bar_height; bot y3r=-oo;
+path p; p=z3r{right}...{up}z5;
+numeric t; t=ypart(((x4r,y3r)--(x4r,y5))intersectiontimes p);
+y4r=ypart point t of p;
+filldraw circ_stroke z0e..pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ ...z4e{direction t of p}; % arc
+filldraw circ_stroke z6e--z7e; % bar
+math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
+picture v;
+v:=currentpicture;
+v:=v reflectedabout((0,h*aspect_ratio/2),(w,h*aspect_ratio/2));
+v:=v reflectedabout((w/2,-d),(w/2,h));
+currentpicture:=v shifted (2u,0);
+penlabels(0,1,2,3,4,5,6,7); endchar;
+
+currenttransform:=tt; %restore currenttrnasform
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf
new file mode 100644
index 00000000000..8dbf935fb1b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf
@@ -0,0 +1,98 @@
+% Computer Modern Bold Math Symbols 8 point for slides
+% derived from the original by Knuth by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMBSY"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rule_thickness#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rule_thickness#+24/36pt#, % num2
+ math_axis#+1.51rule_thickness#+38/36pt#, % num3
+ -(math_axis#-3.51rule_thickness#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rule_thickness#-subs*fig_height#-24/36pt#), % denom2
+ 7.49pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+boolean boldlsymbol; %In order to adjust math_spread when bold
+
+generate lmathsy % switch to the driver file
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf
new file mode 100644
index 00000000000..0abf052518a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf
@@ -0,0 +1,92 @@
+
+% Computer Modern Math Extension for slides fonts at 8 point
+% Modification of original cmex9.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMEX"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=true; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+fontdimen 8: % parameters $\xi_8$ through $\xi_{13}$ will now be listed
+ rule_thickness#, % default\_rule\_thickness
+ 36/36pt#, % big\_op\_spacing1
+ 54/36pt#, % big\_op\_spacing2
+ 64.8/36pt#, % big\_op\_spacing3
+ 196/36pt#, % big\_op\_spacing4
+ 36/36pt#; % big\_op\_spacing5
+
+generate lmathex; % switch to the driver file
+
+endinput;
+
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf
new file mode 100644
index 00000000000..7808f7b4c1c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf
@@ -0,0 +1,78 @@
+% Computer Modern Math Italic slides font at 8 point
+% Modification of original cmmi8.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMMI"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+generate lmathit % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf
new file mode 100644
index 00000000000..4db5273c180
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf
@@ -0,0 +1,76 @@
+% Computer Modern Math Italic Bold 8 pt for slides
+% derived from the original by Knuth by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMMIB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=0/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+generate lmathit % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf
new file mode 100644
index 00000000000..9033e5e904d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf
@@ -0,0 +1,103 @@
+
+% Computer Modern Math Symbols slide font at 8 pt
+% Modification of original cmsy8.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMSY";
+font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 8pt will normally be in 6pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.49pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate lmathsy; % switch to the driver file
+
+endinput;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf
new file mode 100644
index 00000000000..5d5f8d5b349
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf
@@ -0,0 +1,90 @@
+% leclb8.mf
+%
+% The original file eclb8.mf is
+% (c) Copyright 1996, 1997 J"org Knappen
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LECSSQB";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf
new file mode 100644
index 00000000000..20db266f8de
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf
@@ -0,0 +1,91 @@
+% lecli8.mf
+%
+% The original file ecli8.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Inclined
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQI";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf
new file mode 100644
index 00000000000..af645acd26e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf
@@ -0,0 +1,90 @@
+% leclo8.mf
+%
+% The original file eclo8.mf is
+% (c) Copyright 1996, 1997 J"org Knappen
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold Oblique
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQBO";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf
new file mode 100644
index 00000000000..dc6616ec58d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf
@@ -0,0 +1,91 @@
+% leclq8.mf
+%
+% The original file eclq8.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Contents:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQ";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf
new file mode 100644
index 00000000000..b26244399d5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf
@@ -0,0 +1,83 @@
+% lexroman.mf
+%
+% The original file exroman.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% driver file, called by parameter files with lslides style fonts
+% Lslides fonts contain a modified version of gluph l; all glyphs
+% containig l (l, fl, ffl, polish l, etc.) are redefined here and
+% overright the origninal glyphs.
+%
+% dx r l west
+% i u east
+% : : :
+% : : west '3xx / east '2xx
+% : uppercase/lowercase
+% roman / italic
+
+version_check(1,0); % |version_check| was introduced in dc1.3
+
+input exaccess; % accessories for polish special letters
+input expseudo; % pseudoparameters
+
+mode_setup; font_setup; pseudo_setup;
+
+input exruwest;
+input exrlwest;
+input exrueast;
+input exrleast;
+%
+input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+%
+input exaccent; %
+input exsign; % zero for mille, " # $ % @ pound sign
+%
+input exrlig; % dotless i,j; letter ligatures ff fi fl ffi ffl
+%
+input exromp; % (roman punctuation) & ? (spanish ?)
+%
+input exrulett; % upper case (majuscules)
+input exrllett; % lower case (minuscules)
+input exrdigit; % roman digits
+%
+input lexslides; % lslides modifications
+%
+% Fontparameter
+%
+font_coding_scheme:="Extended TeX Font Encoding - Latin";
+boundarychar:=oct"027";
+font_slant slant;
+font_x_height x_height#;
+font_cap_height cap_height#;
+font_asc_height asc_height#;
+font_acc_cap_height (cap_height#+acc_height#);
+font_desc_depth desc_depth#;
+font_max_height (max(asc_height#,body_height#,
+ cap_height#+acc_height#));
+font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
+% font_digit_width % set inside the digits file
+% font_cap_stem % set after the programme of the capital I
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
+
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ input exmligtb; % do the ligature programs for monospaced fonts
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ input exrligtb; % do the ligature programs, not for monospaced fonts
+fi
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf
new file mode 100644
index 00000000000..62e3fbedfcb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf
@@ -0,0 +1,203 @@
+% lexslides
+%
+% (c) Copyright 2002/07/13 Claudio Beccari
+%
+% Contains the redefinition of all slides glyphs containing l
+% so as to modify it with a hook.
+% The overall definitions are copied and modified from several
+% ex* Metafont files with the ec fonts, copyright by Schwarz and Knappen
+% in compliance with their copyright notice.
+% This file is being invoked by lexroman.mf, a modied version of
+% Schwarz and Knappen exroman.mf, wich in turn is being called by the
+% driver files of the various modified slides fonts.
+%
+
+
+
+ecchar "The letter l with hook for slides";% jk,cb
+beginchar("l",5u#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,5); endchar;
+
+
+ecchar "The letter l with hook for slides with acute"; % jk,cb
+beginchar_twice(oct"250",5u#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+put_accent;
+repeat_once;
+penlabels(1,2,3,4,5); endchar;
+
+ecchar "The letter l with hook for slides with hachek"; % from csotherl.mf (csfonts),cb
+beginchar(oct"251",5u#,lc_acute_height#,0); l_width#:=5u#+2serif_fit#;
+italcorr lc_acute_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,5);
+dtl_hachek(x1r+u+.5pdot_diam)(y1);
+endchar;
+
+ecchar "The letter crossed l with hook for slides"; % from pl_ml (plfonts),cb
+beginchar_twice(oct"252",5u#,asc_height#,0);
+ italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+ charwd_:=charwd;
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+ penlabels(1,2,3,4,5);
+ numeric unbalance;
+ unbalance=1.1;
+ numeric cross_fit#;
+ cross_fit#=serif_fit#+if is_bold: 1.5 else: 1.25 fi\\ u#;
+ charwd:=charwd_;
+ adjust_fit(cross_fit#,u#);
+ numeric l_jut;
+l_jut=.5stem+ 1.7u;
+put_cross(l_jut,unbalance*l_jut);
+repeat_once;
+endchar;
+
+
+ecchar "The ligature fl";
+beginchar(oct"035",10u#+2letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+% This is the "f"
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+ pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4= hround 5.3u;
+pickup crisp.nib; filldraw stroke z3e--z4e; % bar
+% This is the "l" drawn to the right of the "f"
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos12(shaved_stem,180);pos13(shaved_stem,180);
+lft x12r=lft x13r=hround(rt x4 + if is_bold: .5shaved_stem else: 1.3u fi);
+y13=max(.5bar_height,2vair);
+ pickup tiny.nib; pos11(hround(shaved_stem-stem_corr),0);
+ rt x11r=fine.rt x12l; top y11=h;
+ penpos12'(x11r-x11l,0); x12'=x11; y12'=y12=x_height;
+ filldraw stroke z11e--z12'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos14(vair',-90); bot y14r=-oo; rt x15r=hround(w-u)+1.6u;
+ pos15(vair,-75); top y15l=vround .2[top y14l,bar_height];
+ x15l:=good.x x15l; x14l=1/3[x13l,x15l]; x14r:=1/3[x13r,x15r]; y13l:=y13l+.2vair;
+ filldraw stroke z12e..super_arc.e(13,14); % stem and hook
+ path p; p=stroke z14e{right}..tension .9 and atleast 1..z15e; % terminal
+ if (xpart(z15l-precontrol 1 of p)<0) or (xpart(z15r-postcontrol 2 of p)<0):
+ filldraw stroke z14e{right}...{up}z15e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,11,12,13,14,15); endchar;
+
+ecchar "The ligature ffl";
+beginchar(oct"037",15u#+4letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+% These are the two "f"
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
+pos11(stem',0); lft x11l=hround(.5w-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+if serifs: bulb_diam=hround .8[stem,flare];
+ pos2(bulb_diam,0); x2r=x11r-stem_corr;
+ pos12(bulb_diam,0); x12r=x21r-stem_corr;
+ y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
+ sloped_serif.l(21,22,g,1/3,eps,max(serif_drop,oo)); % erase excess at top
+ if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
+ else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
+else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
+ pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); fi
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
+f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4=hround(.5w+2.8u);
+if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
+ pos4'(bar,90); x4'=x11; y4'=y4;
+ filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars
+else: filldraw stroke z3e--z4e; fi % bar
+% This is the "l" drawn to the right of the second "f"
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos22(shaved_stem,180);pos23(shaved_stem,180);
+lft x22r=lft x23r=hround(rt x4 + if is_bold: .5shaved_stem else: 1.3u fi);
+y23=max(.5bar_height,2vair);
+ pickup tiny.nib; pos21(hround(shaved_stem-stem_corr),0);
+ rt x21r=fine.rt x22l; top y21=h;
+ penpos22'(x21r-x21l,0); x22'=x21; y22'=y22=x_height;
+ filldraw stroke z21e--z22'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos24(vair',-90); bot y24r=-oo; rt x25r=hround(w-u)+1.6u;
+ pos25(vair,-75); top y25l=vround .2[top y24l,bar_height];
+ x25l:=good.x x25l; x24l=1/3[x23l,x25l]; x24r:=1/3[x23r,x25r]; y23l:=y23l+.2vair;
+ filldraw stroke z22e..super_arc.e(23,24); % stem and hook
+ path p; p=stroke z24e{right}..tension .9 and atleast 1..z25e; % terminal
+ if (xpart(z25l-precontrol 1 of p)<0) or (xpart(z25r-postcontrol 2 of p)<0):
+ filldraw stroke z24e{right}...{up}z25e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,11,12,21,22,23,24,25); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf
new file mode 100644
index 00000000000..a5a90dd0524
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf
@@ -0,0 +1,375 @@
+font_identifier:="LASY";
+font_coding_scheme:="LaTeX symbols";
+
+% Here we steal a bit from mathsy
+
+mode_setup; font_setup;
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+
+cmchar "Leftward arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"050",6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r);
+z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the leftward arrow
+% The tip of the arrowhead rests one unit from left edge, same as left arrow
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) new intersectinpoint z10 is introduced and path slightly altered
+% 3) name, code number and width changed, otherwise essentially the same
+
+
+
+cmchar "Rightward arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"051",6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the rightward arrow
+% The tip of the arrowhead rests one unit from right edge, same as right arrow
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) new intersectinpoint z10 is introduced and path slightly altered
+% 3) name, code number and width changed, otherwise essentially the same
+
+
+
+cmchar "Upward arrowhead";
+beginchar(oct"052",9u#,asc_height#,asc_depth#);
+italcorr .76asc_height#*slant+.5crisp#-u#;
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,90); pos4(bar,90);
+top z0=(.5w,0); x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the upward arrow
+% The tip of the arrowhead rests on the baseline for reference
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) point z0 is moved down from the ascender line; the tip touches
+% the baseline
+% 3) new intersectinpoint z10 is introduced and path slightly altered
+% 4) name and code number changed, otherwise essentially the same
+
+
+
+cmchar "Downward arrowhead";
+beginchar(oct"053",9u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,90); pos4(bar,90);
+bot z0=(.5w,0); x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0]; % z9 iintroduces curve to arrowhead
+numeric t[]; path p[]; % rather direction{z9-z4} does this
+(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r);
+z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the downward arrow
+% The tip of the arrowhead rests on the baseline for reference
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) point z0 is moved up from the descender line to rest on the baseline
+% 3) new intersectinpoint z10 is introduced and path slightly altered
+% 4) name and code number changed, otherwise essentially the same
+
+
+
+cmchar "Square subset sign";
+compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
+beginchar(oct"074",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u+oo); x1=x4=hround(w-1.5u)+eps; x3=x2;
+y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
+draw z1--z2--z3--z4; % bars and stem
+labels(1,2,3,4); endchar;
+
+% This character is an alteration of the square subset or equal to sign
+% Changes:
+% 1) changed position of y1 to be .5 of the spread above the math_axis
+% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
+% which was used in calculations for the lower bar
+% 3) name and code number and height changed, otherwise essentially the same
+
+
+
+cmchar "Square superset sign";
+compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
+beginchar(oct"075",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=x4=hround 1.5u-eps; rt x2=hround(w-1.5u-oo); x3=x2;
+y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
+draw z1--z2--z3--z4; % bars and stem
+labels(1,2,3,4); endchar;
+
+% This character is an alteration of the square superset or equal to sign
+% Changes:
+% 1) changed position of y1 to be .5 of the spread above the math_axis
+% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
+% which was used in calculations for the lower bar
+% 3) name and code number and height changed, otherwise essentially the same
+
+
+
+cmchar "Diamond";
+beginchar(oct"063",2(.85asc_height#-math_axis#)+2u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=.85asc_height-math_axis;
+x4=x8=good.x .5w; w:=r:=2x4; rt x2=w-lft x6=good.x(x4+a);
+y2=y6=.5[y4,y8]=.5cap_height; top y8=good.y(y2+a);
+draw z2--z4--z6--z8--cycle;
+labels(2,4,6,8); endchar;
+
+% This character is an alteration of the diamond operator
+% The four tips are equidistant from the center point (.5w,math_axis),
+% this distance being half of the cap height
+% and related to that in the square character
+% slightly less though, since it looks too big if the actually have same
+% length
+% Changes:
+% 1) To the amount a, which gives the distance of the tips from the center
+% 2) The width is related to the asc_height, so it changes with it
+% 3) name and code number and width changed, otherwise essentially the same
+% The numbers stay the same, for any referencing
+
+
+
+cmchar "Square";
+beginchar(oct"062",2.1math_axis#+4u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(2.1math_axis);
+x1=x4=good.x 2u; x2=x3=x1+a;
+y3=y4=.5(cap_height-a); y1=y2=y3+a;
+draw z1--z2--z3--z4--cycle;
+labels(1,2,3,4); endchar;
+
+% The size of this character is related to the diamond character, it's
+% sightly larger.
+% It is NOT the diamond character which has been rotated
+% Vertical alignment raised to .5 cap height from math-axis height
+% 2 units of sidebearing space on each side, since vertical lines usually
+% need a little more space, actually it's 2 units-.5rule.nib
+
+
+
+cmchar "Bowtie operator";
+beginchar(oct"061",13u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(1.1*math_axis);
+x1=x4=good.x 1.5u; x2=x3=w-x1;
+y1=y2=good.y(.5(cap_height-2a)); y3=y4=y1+2a;
+draw z1--z3--z2--z4--cycle;
+labels(1,2,3,4); endchar;
+
+% Arbitrary width given
+% Length of the bars at the edges are 2.2*math_axis length
+% and it's vertically aligned on the high, i.e., .5 cap height as opposed
+% to being aligned on the math axis
+
+
+
+cmchar "Upside-down Uppercase Greek Omega";
+beginchar(oct"060",13u#,cap_height#,0);
+italcorr cap_height#*slant-.35u#; %italcorr .75cap_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(vair,-90); pos2(cap_curve,0);
+pos3(vair,0); pos4(cap_curve,180); pos5(vair,180);
+x1=.5w; bot y1r=0-o; lft x4r=hround u; y2=y4=1/3h; x2=w-x4;
+rt x5l=hround(1/3(w+.5u)+.5hair); top y3=top y5=h; x3=w-x5;
+filldraw stroke z3e{down}...{down}z2e
+ & pulled_super_arc.e(2,1)(.5superpull)
+ & pulled_super_arc.e(1,4)(.5superpull)
+ & z4e{up}...{up}z5e; % bowl
+numeric arm_thickness; path p; p=z3{down}...{down}z2;
+arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi);
+pickup crisp.nib; pos6(arm_thickness,90); pos7(fudged.hair,0);
+top y6r=h; x6=x3; rt x7r=hround (w-.8u); y7=good.y(y6l-.5beak)+eps;
+%(x,y)=p intersectionpoint((0,y6l)--(w+h,y6l)); x6l:=x;
+arm(6,7,a,0,.5u); % right arm and beak
+pos8(arm_thickness,90); pos9(fudged.hair,180);
+y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
+arm(8,9,b,0,-.5u); % left arm and beak
+math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+% This character is taken from the Upper Case Omega of cmr
+% Directions and reference points are reversed and flipped
+% pos angles are flipped by 180 degrees
+% vertical values are reversed, up/down directions in the
+% filldraw stroke are reversed
+% left strokes same, but changes reference points
+% italic correction based on furthest pont of character , so made it
+% full cap_height minus amount for the beak, taken from the cap XI
+% I suppose a transformation of paths would have worked also, but this
+% way, limits are maintained better, i think
+% w+h instead of just w in intersection to make sure paths do intersect
+
+
+
+cmchar "Leads to character extension";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",12u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(.45math_axis);
+y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis;
+x11=0; x15=w; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15];
+path p; p=z12{right}...z13...z14{right};
+draw z11{dir(-angle direction 1 of p)}...z12{right}...z13...
+ z14{right}...z15{dir(-angle direction 1 of p)};
+penlabels(11,12,13,14,15); endchar;
+
+% This character is an extension to fit with the Leads to character with
+% arrowhead
+% This character goes from edge to edge and a series of these can be linked
+% as desired.
+% It has 2/3 the width of that character, and if this relation is kept, the
+% the curves should all match
+
+
+
+cmchar "Leads to character with arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+pickup rule.nib;
+numeric a; a=round(.45math_axis);
+y11=y13=y15=y16=y0; y12-a=y14+a=good.y math_axis;
+x11=0; x15=2/3w; z17=lft z10;
+x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.3[x15,x0];
+path p; p=z12{right}...z13...z14{right};
+draw z11{dir(-angle direction 1 of p)}...
+ z12{right}...z13...z14{right}...z16{right}...z17;
+penlabels(0,3,4,5,6,9,10,11,12,13,14,15,16); endchar;
+
+% This character uses the rightward arrow arrowhead
+% The width is the same as that of the regular arrow
+% An extension character can be added for longer squiggles
+
+
+cmchar "LASY \lhd triangle";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"001",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3--cycle; % triangle
+labels(1,2,3); endchar;
+
+% taken directly from CMR "less than" character
+% the path was closed to make a triangle
+
+
+
+cmchar "LASY \unlhd triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"002",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3--cycle; % triangle
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+labels(1,2,3,8,9); endchar;
+
+% taken directly from CMR "less than or equal to sign"
+% the "less than" path was closed to make a triangle
+
+
+
+cmchar "LASY \rhd triangle";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"003",14u#,v_center(spread#+rule_thickness#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3--cycle; % triangle
+labels(1,2,3); endchar;
+
+% taken directly from CMR "greater than" character
+% the path was closed to make a triangle
+
+
+
+cmchar "LASY \unrhd triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"004",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3--cycle; % triangle
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+labels(1,2,3,8,9); endchar;
+
+% taken directly from CMR "greater than or equal to sign"
+% the "greater than" path was closed to make a triangle
+
+
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf
new file mode 100644
index 00000000000..23f91e918f1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf
@@ -0,0 +1,9 @@
+% Use parameter settings from lcmsy8
+% Modification of original lasy8.mf by Lamport (?)
+% Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+def generate suffix t= enddef;
+input lcmsy8;
+let _bye=bye;
+def bye = font_identifier:="LLASY"; _bye enddef;
+input llasy;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf
new file mode 100644
index 00000000000..9aa45946bf6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf
@@ -0,0 +1,10 @@
+% Use parameter settings from lcmbsy8
+% Imitation of original lasy8.mf by Lamport (?)
+% Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+def generate suffix t= enddef;
+input lcmbsy8;
+let _bye=bye;
+def bye = font_identifier:="LLASBY"; _bye enddef;
+input llasy;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf
new file mode 100644
index 00000000000..3e2c238b48c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf
@@ -0,0 +1,79 @@
+% Slides Sans Serif 8 pt font, derived from the one that
+% Pierre A. MacKay, (19 August, 1986) derived from
+% Computer Modern Sans Serif Quotation Style
+%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSS"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+generate lroman % switch to the driver file for slides
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf
new file mode 100644
index 00000000000..fa1c4122571
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif bold 8 pt font, derived from the one
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=0.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+generate lroman % switch to the driver file for SliTeX
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf
new file mode 100644
index 00000000000..a14cf5ec291
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif Slanted 8 pt, derived from the one that
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style Slanted
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSI"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=sind 12/cosd 12; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+generate lroman % switch to the SliTeX driver file.
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf
new file mode 100644
index 00000000000..6c2f0afdfef
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif bold 8 pt font, derived from the one
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=sind 12/cosd 12; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=0.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+generate lroman % switch to the driver file for SliTeX
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf
new file mode 100644
index 00000000000..a3641feac45
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf
@@ -0,0 +1,315 @@
+
+% The Computer Modern Math-Extension family (by D. E. Knuth, 1979--1985)
+% Modification of original mathex.mf
+% by Claudio Beccari (1999)
+
+font_coding_scheme:="TeX math extension";
+mode_setup; font_setup;
+
+%correction to heavy_rule_thickness, otherwise the curly braces turn out too thick
+%heavy_rule_thickness:=ceiling(3rule_thickness#*hppp); %cmbase definition
+heavy_rule_thickness:=rule_thickness+dw;
+heavy_rule_thickness#:=heavy_rule_thickness/hppp;
+
+
+% Input modified files for large delimiters, operators and accents
+
+input lbigdel; % large delimiters
+input lbigop; % large operators
+input lbigacc; % large accents
+
+
+% Corrections for characters 74 to 79 that otherwise would turn out oval
+
+cmchar "\textstyle circle-dot operator";
+beginchar(oct"112",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+4dw+eps) shifted(.5[z4,z8]); % dot
+fill fullcircle scaled(2stem) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-dot operator";
+beginchar(oct"113",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+6dw+eps) shifted(.5[z4,z8]); % dot
+fill fullcircle scaled(2curve) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\textstyle circle-plus operator";
+beginchar(oct"114",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z2--z6; draw z4--z8; % plus
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-plus operator";
+beginchar(oct"115",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z2--z6; draw z4--z8; % plus
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\textstyle circle-times operator";
+beginchar(oct"116",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z1--z5; draw z3--z7; % times
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-times operator";
+beginchar(oct"117",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z1--z5; draw z3--z7; % times
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% Corrections for \prod sign that without serifs turned out
+% as an inverted open box
+
+cmchar "\textstyle product sign";
+beginchar(oct"121",17u#,0,10/6dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 2u;
+x1=x1'=x2=x2';
+top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+y11l-y1'=y2'-y12r=1.2bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\displaystyle product sign";
+beginchar(oct"131",23u#,0,16/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 2.5u;
+x1=x1'=x2=x2';
+top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+y11l-y1'=y2'-y12r=1.8bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+% About the same correction for the summation signs
+
+cmchar "\textstyle summation sign";
+beginchar(oct"120",17u#,0,10/6dh#);
+adjust_fit(0,0); pickup tiny.nib;
+numeric top_arm_thickness, bot_arm_thickness;
+top_arm_thickness=Vround rule_thickness;
+bot_arm_thickness=Vround .9(.5[rule_thickness,curve]);
+lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+penpos1(alpha1*(curve-tiny),0); penpos2(alpha1*(curve-tiny),0);
+penpos3(alpha1*(curve-tiny),0);
+alpha2=diag_ratio(1,rule_thickness-tiny,y3-y4,x3r-x4l);
+penpos4(alpha2*(rule_thickness-tiny),0);
+z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-2.5u)-eps;
+arm(5,6,a,.45,17/11u); % upper arm and beak
+pos7(bot_arm_thickness,-90); pos8(hair,0);
+bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+2.5u)+eps;
+arm(7,8,b,.45,17/11u); % lower arm and beak
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle summation sign";
+beginchar(oct"130",21u#,0,18/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup tiny.nib;
+numeric top_arm_thickness, bot_arm_thickness, thick_stem, thin_stem;
+thick_stem=bold+4dw; thin_stem=rule_thickness+dw;
+top_arm_thickness=Vround .9thin_stem;
+bot_arm_thickness=Vround .9(.5[thin_stem,thick_stem]);
+lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+penpos1(alpha1*(thick_stem-tiny),0); penpos2(alpha1*(thick_stem-tiny),0);
+penpos3(alpha1*(thick_stem-tiny),0);
+alpha2=diag_ratio(1,thin_stem-tiny,y3-y4,x3r-x4l);
+penpos4(alpha2*(thin_stem-tiny),0);
+z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-3u)-eps;
+arm(5,6,a,.45,24/11u); % upper arm and beak
+pos7(bot_arm_thickness,-90); pos8(hair,0);
+bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+3u)+eps;
+arm(7,8,b,.45,24/11u); % lower arm and beak
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+
+cmchar "\textstyle integral sign";
+beginchar(oct"122",12u#,0,100/52dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle integral sign";
+beginchar(oct"132",18u#,0,220/48dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle contour integral sign";
+beginchar(oct"110",12u#,0,100/52dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .5w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle contour integral sign";
+beginchar(oct"111",18u#,0,220/48dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .5w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+
+
+
+
+% Changed height of folllowing chars so as to be coherent with the rest
+
+
+
+cmchar "Horizontal curly brace tip---down and left";
+beginchar(oct"172",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r
+ --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---down and right";
+beginchar(oct"173",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r
+ --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and left";
+beginchar(oct"174",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l
+ --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and right";
+beginchar(oct"175",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l
+ --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+
+
+font_x_height x_height#;
+font_quad 18u#+4letter_fit#;
+% (The calling file should give the other math extension font parameters.)
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf
new file mode 100644
index 00000000000..111cd786151
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf
@@ -0,0 +1,66 @@
+
+
+% The Computer Modern Math Italic slides family
+% Modification of original by D. E. Knuth (1979--1985) for taking care
+% of special form of I in slides fonts (Claudio Beccari 1999)
+
+font_coding_scheme:="TeX math italic";
+mode_setup; font_setup;
+
+input sromanu; % upper case (slides majuscules)
+input itall; % lower case (minuscules)
+input greeku; % upper case greek letters
+input greekl; % lower case Greek letters
+input italms; % special symbols for math italic
+font_slant slant; font_x_height x_height#;
+font_quad 18u#+4letter_fit#;
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input olddig; % oldstyle numerals
+input romms; % roman math specials
+
+skewchar=oct"177"; skew#=.5u#;
+save comma;
+period=oct"72"; comma=oct"73"; slash=oct"75"; % non-ASCII positions
+ligtable "h": skewchar kern -skew#;
+ligtable oct"027":oct"034": comma kern -u#, period kern -u#, % $\nu:\tau:$
+ "L":"g":"u":"v":"x": oct"013": oct"026": % $L:g:u:v:x:\alpha:\mu:$
+ oct"035":oct"173": skewchar kern skew#; % $\upsilon:\imath:$
+ligtable "U": comma kern-2u#, period kern-2u#, % $U:$
+ slash kern-u#, skewchar kern skew#;
+ligtable "K":oct"011": slash kern-u#, % $K:\it\Psi:$
+ oct"016":"r": comma kern-u#, period kern-u#, % $\delta:r:$
+ "D":"c":"e":"o":"s":"y":"z":oct"017": % $D:c:e:o:s:y:z:\epsilon:$
+ oct"021":oct"023":oct"037": skewchar kern 2skew#; % $\eta:\iota:\chi:$
+ligtable oct"007": slash kern-u#, % $\it\Upsilon:$
+ comma kern-2u#, period kern-2u#, skewchar kern 2skew#;
+ligtable oct"005":"H": slash kern-u#, % $\it\Pi:H:$
+ comma kern-u#, period kern-u#, skewchar kern 2skew#;
+ligtable "N":"X": slash kern -1.5u#, % $N:X:$
+ "C":"T": slash kern -.5u#, comma kern -u#, period kern -u#, % $C:T:$
+ "B":"E":"G":"O":"Q":"R":oct"174": % $B:E:G:O:Q:R:\jmath:$
+ "l":"p":"q":"t":"w":oct"002":oct"004": % $l:p:q:t:w:\it\Theta:\Xi:$
+ oct"006":oct"010":oct"012":oct"014": % $\it\Sigma:\Phi:\Omega:\beta:$
+ oct"020":oct"022":oct"032":oct"036": % $\zeta:\theta:\rho:\phi:$
+ oct"042":oct"043":oct"045": % $\varepsilon:\vartheta:\varrho:$
+ oct"046":oct"047":oct"100": % $\varsigma:\varphi:\partial:$
+ skewchar kern 3skew#;
+ligtable "M":"S":"Z": slash kern-u#, % $M:S:Z:$
+ comma kern-u#, period kern-u#, skewchar kern 3skew#;
+ligtable oct"000":"F":"P": slash kern -u#, % $\it\Gamma:F:P:$
+ comma kern-2u#, period kern-2u#, skewchar kern 3skew#;
+ligtable "I":oct"030":oct"040":oct"140":oct"175": % $I:\xi:\psi:\ell:\wp:$
+ skewchar kern 4skew#;
+ligtable "A": skewchar kern 5skew#; % $A:$
+ligtable "d": "Y" kern u#, "Z" kern-u#, "j" kern-2u#, "f" kern-3u#, % $d:$
+ oct"001":oct"003": skewchar kern 6skew#; % $\it\Delta:\Lambda:$
+ligtable "f": comma kern-u#, period kern-u#, skewchar kern 6skew#; % $f:$
+ligtable "J": slash kern-u#, % $J:$
+ comma kern-2u#, period kern-2u#, skewchar kern 6skew#;
+ligtable "j":oct"033": comma kern -u#, period kern -u#; % $j:\sigma:$
+ligtable "V":"W":"Y":comma kern-3u#, period kern-3u#, % $V:W:Y:$
+ slash kern-2u#;
+ligtable slash: oct"001" kern -u#, "A" kern -u#, "M" kern -u#, % $/:$
+ "N" kern -u#, "Y" kern +u#, "Z" kern -u#;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf
new file mode 100644
index 00000000000..6486b76ba76
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf
@@ -0,0 +1,47 @@
+
+% The Computer Modern Symbols family (by D. E. Knuth, 1979--1985)
+% Modification of original mathsy.mf by Knuth
+% Claudio Beccari (1999)
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+if not (boolean boldlsymbol): math_spread:=0; fi
+autorounding:=hair;
+input calu; % upper case calligraphic alphabet
+autorounding:=0;
+
+
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input symbol; % the symbols
+
+% Correction for the empty big circle that otherwise turns out oval
+
+cmchar "Circle for copyright, etc.";
+beginchar(oct"015",18u#,math_axis#+8u#,8u#-math_axis#); autorounded;
+adjust_fit(0,0); pickup rule.nib;
+lft x6=hround u; x2=w-x6;
+top y8 - bot y4 = rt x2 - lft x6; y2=math_axis;
+circle_points; draw_circle; % circle
+labels(1,2,3,4,5,6,7,8); endchar;
+
+
+
+if not monospace:
+ skewchar=oct"060"; skew#=.5u#;
+ ligtable "I": "T": "V": skewchar kern skew#;
+ ligtable "K": skewchar kern 2skew#;
+ ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#;
+ ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#;
+ ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#;
+ ligtable "J": skewchar kern 6skew#;
+ ligtable "A": skewchar kern 7skew#;
+fi;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf
new file mode 100644
index 00000000000..72665f0cf77
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf
@@ -0,0 +1,138 @@
+%% This is file LMSMA8 copied and modified from MSAM10 by American Mathematical
+%% Society, so as to change all the parameters and see what happens with the slides-font
+%% parameters; hopefully a new font is obtained that better matches the slides fonts
+% with their characteristic large x-height and small ascender height; with math symbols
+% this should not be so important, but ...
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LMSAM"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=00/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.99pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+%% include these parameters to shrink R and S so they
+%% fit inside a circle
+%
+lower.u#:=22/36pt#; % unit width
+lower.width_adj#:=3/36pt#; % width adjustment for certain characters
+lower.cap_serif_fit#:=-12/36pt#; % extra sidebar near uppercase serifs
+lower.letter_fit#:=0pt#; % extra space added to all sidebars
+
+lower.body_height#:=180/36pt#; % height of tallest characters
+lower.cap_height#:=160/36pt#; % height of caps
+lower.x_height#:=120/36pt#; % height of lowercase without ascenders
+lower.bar_height#:=72/36pt#; % height of crossbar in lowercase e
+lower.comma_depth#:=35/36pt#; % depth of comma below baseline
+
+lower.flare#:=15/36pt#; % diameter of bulbs or breadth of terminals
+lower.cap_hair#:=21/36pt#; % uppercase hairline breadth
+lower.stem#:=21/36pt#; % lowercase stem breadth
+lower.cap_stem#:=23/36pt#; % uppercase stem breadth
+lower.cap_curve#:=23/36pt#; % uppercase curve breadth
+lower.cap_ess#:=23/36pt#; % breadth in middle of uppercase s
+
+lower.cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+lower.beak_jut#:=7/36pt#; % horizontal protrusion of beak serifs
+lower.beak#:=0/36pt#; % vertical protrusion of beak serifs
+lower.slab#:=12/36pt#; % serif and arm thickness
+lower.cap_bar#:=12/36pt#; % uppercase bar thickness
+lower.cap_band#:=15/36pt#; % uppercase thickness above/below lobes
+lower.cap_notch_cut#:=21/36pt#; % max breadth above/below uppercase notches
+
+lower.o#:=6/36pt#; % amount of overshoot for curves
+lower.apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+lower.fudge:=.85; % factor applied to weights of heavy characters
+
+
+generate lamsya % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf
new file mode 100644
index 00000000000..fd56dc71550
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf
@@ -0,0 +1,105 @@
+%% This is file LMSMB8 copied and modified from MSAM10 by American Mathematical
+%% Society, so as to change all the parameters and see what happens with the slides-font
+%% parameters; hopefully a new font is obtained that better matches the slides fonts
+% with their characteristic large x-height and small ascender height; with math symbols
+% this should not be so important, but ...
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LMSBM"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=00/36pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.99pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+def diagonal (suffix ne, sw)= draw z.ne--z.sw enddef;
+
+generate lamsyb % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf
new file mode 100644
index 00000000000..e45809ba84d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf
@@ -0,0 +1,247 @@
+% This is the driver file lroman.mf based on roman.mf in the
+% Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985)
+% It differs from roman.mf only in that it has been
+% adjusted to change capital I with a special uppercase I
+% for the Slides fonts: llcmss8, llcmssb8, llcmssi8 and llcmsso8.
+% Also the lower case l has been modified in order to avoid confusions
+% with other glyphs.
+% Written by Pierre A. MacKay, 16 Sept. 1986
+% and modified by Claudio Beccari, 1999
+
+if ligs>1: font_coding_scheme:="TeX text";
+ spanish_shriek=oct"074"; spanish_query=oct"076";
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures" fi;
+ spanish_shriek=oct"016"; spanish_query=oct"017"; fi
+
+mode_setup; font_setup;
+
+ input romanu; % upper case (majuscules)
+ input romanl; % lower case (minuscules)
+ input greeku; % upper case Greek letters
+ input romand; % numerals
+ input romanp; % ampersand, question marks, currency sign
+ input romspl; % lowercase specials (dotless \i, ligature \ae, etc.)
+ input romspu; % uppercase specials (\AE, \OE, \O)
+ input punct; % punctuation symbols common to roman and italic text
+ input accent; % accents common to roman and italic text
+
+
+
+if ligs>1: input romlig; fi % letter ligatures
+if ligs>0: input comlig; fi % ligatures common with italic text
+if ligs<=1: input romsub; fi % substitutes for ligatures
+
+% Redrawing capital I
+
+cmchar "The modified letter I";
+beginchar("I",max(6u#,4u#+cap_stem#),cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+adjust_fit(cap_serif_fit#,cap_serif_fit#);
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; % arms
+pos5(hair,90); pos6(hair,90); % top arm
+lft x5= hround(u);rt x6=hround(w-u); top y5r=top y6r= top y1;
+filldraw stroke z5e--z6e;
+pos7(hair,-90); pos8(hair,-90); % bottom arm
+x7=x5; x6=x8;
+bot y7r= bot y8r= bot y2;
+filldraw stroke z7e--z8e;
+math_fit(0,.5ic#); penlabels(1,2,5,6,7,8); endchar;
+
+% Redrawing lower case l
+
+cmchar "The modified letter l";
+beginchar("l",6u#+max(u#,.5stem#),
+ min(asc_height#,if hefty:9/7 else:10/7 fi\\ x_height#),0);
+italcorr x_height#*slant -.4u#;
+adjust_fit(-(u#-stem#/5.5), -.5u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib;
+pos1(shaved_stem,180);
+pos2(shaved_stem,180);
+pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2.5u-.5shaved_stem);
+y2=x_height;
+y3=max(.5bar_height,2vair);
+top y1=h; x1=x2;
+interim superness:=more_super;
+pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u);
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z1e--z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+% Redrawing ligature fl
+
+cmchar "The modified ligature fl";
+beginchar(oct"015",12u#+2letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,serif_fit#);
+pickup tiny.nib;
+pos1(stem',0);
+lft x1l=hround(2.5u-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut; % letter f
+pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4= hround 5.3u;
+pickup crisp.nib; filldraw stroke z3e--z4e; % bar
+%
+pos11(stem',180);pos12(stem',180);pos13(stem',180); %letter l
+lft x12r=lft x13r=hround(x2+1.5u);y12=x_height;
+y13=max(.5bar_height,2vair);top y11=h; x11=x12;
+interim superness:=more_super;
+pos14(vair',-90); bot y14r=-oo; rt x15r=hround(w-u);
+ pos15(vair,-75); top y15l=vround .2[top y14l,bar_height];
+ x15l:=good.x x15l; x14l=1/3[x13l,x15l]; x14r:=1/3[x13r,x15r]; y13l:=y13l+.2vair;
+ filldraw stroke z11e--z12e..super_arc.e(13,14); % stem and hook
+ path p; p=stroke z14e{right}..tension .9 and atleast 1..z15e; % terminal
+ if (xpart(z15l-precontrol 1 of p)<0) or (xpart(z15r-postcontrol 2 of p)<0):
+ filldraw stroke z14e{right}...{up}z15e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,11,12,13,14,15); endchar;
+
+% Redrawing ligature ffl
+
+cmchar "The modified ligature ffl";
+beginchar(oct"017",15u#+4letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,2u#+serif_fit#);
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); % the double f
+pos11(stem',0); lft x11l=hround(.5w-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+ pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
+ pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u);
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal
+f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4=hround(.5w+2.8u);
+pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
+ pos4'(bar,90); x4'=x11; y4'=y4;
+ filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars
+%
+pos21(stem',180);pos22(stem',180);pos23(stem',180); %letter l
+lft x22r=lft x23r=hround(x12+1.5u);y22=x_height;
+y23=max(.5bar_height,2vair);top y21=h; x21=x22;
+interim superness:=more_super;
+pos24(vair',-90); bot y24r=-oo; rt x25r=hround(x23r+4u);
+ pos25(vair,-75); top y25l=vround .2[top y24l,bar_height];
+ x25l:=good.x x25l; x24l=1/3[x23l,x25l]; x24r:=1/3[x23r,x25r]; y23l:=y23l+.2vair;
+ filldraw stroke z21e--z22e..super_arc.e(23,24); % stem and hook
+ path p; p=stroke z24e{right}..tension .9 and atleast 1..z25e; % terminal
+ if (xpart(z25l-precontrol 1 of p)<0) or (xpart(z25r-postcontrol 2 of p)<0):
+ filldraw stroke z24e{right}...{up}z25e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,11,12,21,22,23,24,25); endchar;
+
+%% Modified accents
+
+cmchar "Breve accent";
+beginchar(oct"025",9u#,min(asc_height#,2x_height#),0);
+italcorr h#*slant+.5vair#-1.5u#;
+adjust_fit(0,0);
+pickup crisp.nib; pos1(vair,-180); pos3(vair,0);
+numeric mid_thickness; mid_thickness=vround 1/3[vair,stem];
+pos2(mid_thickness,-90); x2=.5w;
+bot y2r=vround max(x_height+o+tiny,1/3[x_height,h]+o-.5mid_thickness);
+top y1=top y3=max(h,top y2l+.8vair); lft x1r=w-rt x3r=hround(2u-.5vair);
+filldraw stroke z1e{down}...z2e{right}...{up}z3e; % stroke
+penlabels(1,2,3); endchar;
+
+
+cmchar "Scandinavian circle accent";
+beginchar(oct"027",13u#+4/3(asc_height#-x_height#)*slant,asc_height#,0);
+adjust_fit(cap_serif_fit#,cap_serif_fit#);
+numeric circ_hair,circ_vair;
+circ_hair=hround min(hair,u+.5); %circ_vair=vround min(vair,(h-x_height)/6+.5);
+circ_vair=circ_hair;
+penpos1(circ_vair,90); penpos3(circ_vair,-90);
+penpos2(circ_hair,180); penpos4(circ_hair,0);
+x2r=hround(.5w-u-.5circ_hair);
+x4r=w-x2r; x1=x3=.5w;
+y2=y4=.5[y1,y3];
+y3r=vround(1/3[x_height,h]+apex_o); y1r-y3r=x4r-x2r;
+penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
+penlabels(1,2,3,4); endchar;
+
+iff ligs>0: cmchar "Dot accent";
+numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#);
+beginchar(oct"137",5u#,min(asc_height#,10/7x_height#+.5dot_diam#),0);
+define_whole_blacker_pixels(dot_diam);
+italcorr h#*slant+.5dot_diam#-2u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90);
+x1=x2=.5w; z1=z2;
+y2l= vround(.5[x_height,h]+apex_o);
+dot(1,2); % dot
+penlabels(1,2); endchar;
+
+cmchar "Umlaut (double dot) accent";
+numeric dot_diam#,dot_diam;
+dot_diam#=max(dot_size#,cap_curve#);
+beginchar(oct"177",9u#,min(asc_height#,10/7x_height#+.5dot_diam#),0);
+dot_diam=max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr));
+italcorr h#*slant+.5dot_diam#-2.25u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90);
+x1=x2=2.75u; z1=z2;
+y2l= vround(.5[x_height,h]+apex_o);
+dot(1,2); % left dot
+pos3(dot_diam,0); penpos4(y2r-y2l,90); y3=y4=y1; x3=x4=w-x1;
+dot(3,4); % right dot
+penlabels(1,2,3,4); endchar;
+
+
+ligtable "!": "`" =: spanish_shriek;
+ligtable "?": "`" =: spanish_query;
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+ ligtable "k": if serifs: "v": "a" kern -u#, fi\\"w": "e" kern k#,
+ "a" kern k#, "o" kern k#, "c" kern k#;
+ ligtable "P": "A" kern kk#,
+ "y": "o" kern k#, "e" kern k#, "a" kern k#, "." kern kk#, "," kern kk#;
+ ligtable "F": "V": "W": if serifs: "o" kern kk#, "e" kern kk#, "u" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kkk#,
+ else: "o" kern k#, "e" kern k#, "u" kern k#,
+ "r" kern k#, "a" kern k#, "A" kern kk#, fi
+ "K": "X": "O" kern k#, "C" kern k#, "G" kern k#, "Q" kern k#;
+ ligtable "T": "y" kern if serifs: k# else: kk# fi,
+ "Y": "e" kern kk#, "o" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kk#, "u" kern kk#;
+ ligtable "O": "D": "X" kern k#, "W" kern k#, "A" kern k#,
+ "V" kern k#, "Y" kern k#;
+ if serifs: ligtable "h": "m": "n":
+ "t" kern k#, "u" kern k#, "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#;
+ ligtable "c": "h" kern k#, "k" kern k#; fi
+ ligtable "o": "b": "p": "e" kern -k#, "o" kern -k#, "x" kern k#,
+ "d" kern -k#, "c" kern -k#, "q" kern -k#,
+ "a": if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
+ "t": "y" kern k#,
+ "u": "w" kern k#;
+ ligtable "A": if serifs: "R": fi\\ "t" kern k#,
+ "C" kern k#, "O" kern k#, "G" kern k#, "U" kern k#, "Q" kern k#,
+ "L": "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#;
+ ligtable "g": "j" kern -k#; % logjam
+ ligtable "I": "I" kern -k#; fi % Richard III
+ ligtable "l": "e" kern k#, "o" kern k#;
+ % there are ligature/kern programs for |"f"| in the {\tt romlig} file
+ % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file
+bye.
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf
new file mode 100644
index 00000000000..942e85c5beb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf
@@ -0,0 +1,87 @@
+% ltclb8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold
+% text companion font for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LTCSSQB";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf
new file mode 100644
index 00000000000..ab8e6e53eec
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf
@@ -0,0 +1,87 @@
+% ltcli8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Inclined
+% text companion font for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQI";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf
new file mode 100644
index 00000000000..29e26853dd1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf
@@ -0,0 +1,87 @@
+% ltclo8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold Oblique
+% text companion fonts for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQBO";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf
new file mode 100644
index 00000000000..4e072f0e625
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf
@@ -0,0 +1,87 @@
+% ltclq8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Contents:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation
+% text companion fonts for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQ";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf
new file mode 100644
index 00000000000..e9b48e358fc
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf
@@ -0,0 +1,94 @@
+% txsymb.mf
+%
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+%
+% This file is part of ecfonts version 1.0
+%
+% Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
+% copyrite.txt for further information
+%
+% You find some documentation in ecdoc.tex (needs LaTeX2e)
+%
+% EC Version 1.0
+% 19-JAN-1997
+%
+% Driver file for the tc fonts
+% Modified and name changed to ltxsymb.mf by Claudio Beccari 2007
+
+version_check(1,0); % |version_check| was introduced in dc1.3
+
+input exaccess; % accent accessories
+input txpseudo; % pseudoparameters
+
+mode_setup; font_setup; pseudo_setup;
+
+input txaccent; % flat accents for capital letters
+input txgen; % genealogical symbols (by DEK)
+input txsymbol; % misc. symbols
+if variant_g: % italics?
+ input txitlod; % old style digits (by GJL)
+ input txisuper; % superscript 1,2,3
+ input txifract; % fractions 1/4, 1/2, 3/4
+else: % roman
+ input txromod; % old style digits (by DEK)
+ input txrsuper; % superscript 1,2,3
+ input txrfract; % fractions 1/4, 1/2, 3/4
+fi;
+
+
+
+ecchar "Euro currency sign"; % jk
+beginchar(oct"277",14u#,1.1cap_height#,0);% cap_height= 197/36pt#
+italcorr cap_height#*slant-beak_jut#-.5u#;
+adjust_fit(0,0);
+pickup fine.nib;% fine=8/36pt#
+numeric larg; larg:=slab;% slab=19/36pt# --> larg= 19/36pt#
+pos2(larg,90); pos1(larg,0);
+top y2r=h; x2=hround 8.5u; rt x1r=hround(w-u); y1=good.y(y2l-1.5u)-eps;
+pos3(larg,180); pos4(larg,270); pos5(larg,0);
+bot y4r=0; x4=x2; rt x5r=hround(w-u); y5=good.y(y4l+1.6u)+eps;
+lft x3r =hround 2.5u; y3=.52h;
+filldraw stroke z1e..z2e{left}..z3e{down}..z4e{right}..z5e;% arc
+pos6(larg,-90); pos7(larg,-90); pos8(larg,90); pos9(larg,90);
+bot y6r=top y8r+if hefty: 1.333 else: 2 fi vair
+ =vround(y3+if hefty: .667 fi vair+eps);
+y7l=good.y(y6l)+eps; y9l=good.y(y8l)-eps;
+x6=x8=hround u; x7=x9=hround 10u;
+filldraw stroke z6e--z7e; filldraw stroke z8e--z9e; % strokes
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+
+% Ligtable
+
+if not monospace:
+ ligtable "-": oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+fi
+
+% Fontparameter
+%
+font_coding_scheme:="TeX text companion symbols 1---TS1";
+boundarychar:=oct"027";
+font_slant slant;
+font_x_height x_height#;
+font_cap_height cap_height#;
+font_asc_height asc_height#;
+font_acc_cap_height (cap_height#+acc_height#);
+font_desc_depth desc_depth#;
+font_max_height(max(asc_height#,body_height#,
+ cap_height#+acc_height#));
+font_max_depth(max(desc_depth#,paren_depth#,the_ogonek_depth#));
+% font_digit_width % set inside the digits file
+font_cap_stem cap_stem#; % No letter capital I in the symbols
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
+
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+fi
+
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf
new file mode 100644
index 00000000000..afbef3ab663
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf
@@ -0,0 +1,204 @@
+%% File LXBBASE copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Changes made for version 2.1:
+% Fixed Problems with smode in draw_outlines and showpoints
+% Stefan Lindner, 21-March-1991
+% Fixed Problems with serifs at small point sizes
+% Stefan Lindner and Lutz Birkhahn, 14-April-91
+
+vardef curve@#(expr a,one,b,two)=
+ save x,y;
+ z0=if(str@#="br")or(str@#="tl"):(xpart b,ypart a)
+ else:(xpart a,ypart b) fi;
+ z1=one[a,z0]; z2=two[b,z0];
+ a ..controls z1 and z2.. b
+ enddef;
+
+vardef reversecurve@#(expr a,one,b,two)=reverse curve@#(a,one,b,two) enddef;
+
+
+vardef beak(expr injoin,intip,outtip,indent,outjoin,tense)=
+ save x,y,t,toward,onright,ref; pair toward; boolean onright; path ref;
+ onright=(xpart intip>xpart injoin);
+ toward=if onright: right else: left fi;
+ z1=intip if onright:-else:+ fi (inbeak,0);
+ z2=outtip if onright:-else:+ fi (outbeak,0);
+ ref=outjoin{toward}...(z1 if onright:+else:- fi (2*abs(outjoin-injoin),0));
+ y4=.5[ypart outjoin,ypart indent];
+ z3=ref intersectionpoint ((0,y4)--(w,y4));
+ (t3,t4)=ref intersectiontimes ((0,y4)--(w,y4));
+
+ injoin{toward}..tension tense..z1--intip--outtip--z2...indent{-toward}...
+ {-(direction t3 of ref)}z3--subpath(t3,0) of ref
+ enddef;
+
+
+
+
+boolean its_a_leftserif;
+
+vardef full_serif_points@#
+(expr A,B,Bl,Br,leftlength,rightlength,midbracket_pull)=
+%%%% min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ (z1-B)=whatever*(A@#-B@#);
+ (z1l-Bl)=whatever*(A@#-B@#);
+ (z1r-Br)=whatever*(A@#-B@#);
+
+ y2=y2l=y2r=ypart A;
+ y1=y1l=y1r=y3=y4=ypart A if ypart A>ypart B:-else:+fi serif_thickness;
+
+ x5=x2=.5[x1l,x1r];
+ y5=entasis[y2l,y1l];
+
+ if its_a_leftserif:x3=x2l=x1l-round(leftlength+serif_constant_amt);
+ else:x4=x2r=x1r+round(rightlength+serif_constant_amt); fi
+enddef;
+
+vardef leftserif@#(expr A,B,Bl,Br,alength,midbracket_pull)=
+ its_a_leftserif:=true;
+ save x,y,p; path p[];
+ min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ full_serif_points@#(A,B,Bl,Br,alength,0,midbracket_pull);
+ p0:=Bl{z1l-Bl}...{z3-z1l}z3;
+ if midbracket_pull<>0:
+ z3'l=z1l; pos3'(alength+5pt,.5[angle(B-A),if ypart A>ypart B:-fi 180]);
+ z8'=p0 intersectionpoint (z3'l--z3'r);
+ z8=(midbracket_pull-eps)[z8',z1l];fi
+ if ypart A>ypart B:reverse fi
+ ((if midbracket_pull=0:p0 else:Bl{z1l-Bl}...z8...{z3-z1l}z3 fi
+ if softpath:)softjoin(z3--z2l)softjoin(else:--fi z2l..z5{right}))
+enddef;
+
+vardef rightserif@#(expr A,B,Bl,Br,alength,midbracket_pull)=
+ its_a_leftserif:=false;
+ save x,y,p; path p[];
+ min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ full_serif_points@#(A,B,Bl,Br,0,alength,midbracket_pull);
+ p4:=z4{z1r-z4}...{Br-z1r}Br;
+ if midbracket_pull<>0:
+ z4'l=z1r; pos4'(alength+5pt,.5[angle(B-A),0]);
+ z9'=p4 intersectionpoint (z4'l--z4'r);
+ z9=(midbracket_pull-eps)[z9',z1r];fi
+ if ypart A>ypart B:reverse fi
+ ((z5{right}..z2r if softpath:)softjoin(z2r--z4)softjoin(else:--fi
+ if midbracket_pull=0:p4 else:z4{z1r-z4}...z9...{Br-z1r}Br fi))
+enddef;
+
+vardef fullserif@#(expr A,B,Bl,Br,leftlength,rightlength,midbracket_pull)=
+ save x,y,p; path p[];
+ p1=rightserif(A,B,Bl,Br,rightlength,midbracket_pull);
+ p2=leftserif(A,B,Bl,Br,leftlength,midbracket_pull);
+ if ypart A>ypart B:(p1--p2)else:(p2--p1)fi
+enddef;
+
+
+vardef straightarm@#(expr join,tip,heel,thickness,pull)=
+ save x,y,toward,p; pair toward; path p;
+ toward=if (str@#="br")or(str@#="tr"):right else:left fi;
+ z1=tip if (str@#="br")or(str@#="tr"):- else:+ fi (thickness,0);
+ z2=point .5 of (join{toward}...{tip-heel}z1);
+ z1-z3=whatever*(tip-heel); y3=ypart join;
+ p=z1{z3-z1}...{join-z3}join;
+ z4=pull[z3,point .5 of p];
+ if (str@#="br")or(str@#="tl"):reverse fi
+ (join{toward}...z4...{tip-heel}z1--tip--heel)
+ enddef;
+
+
+vardef constant_angle(expr top_pt,bot_pt,stem)suffix $=
+ save theta;
+ theta=if str$="lr":-else:+fi (angle(length(top_pt-bot_pt) +-+ stem,stem));
+ angle(top_pt-bot_pt)+theta-90
+enddef;
+
+
+vardef pos@#(expr b,d) =
+ (x@#r-x@#l,y@#r-y@#l)=(b,0)rotated d;x@#=.5(x@#l+x@#r);y@#=.5(y@#l+y@#r)enddef;
+
+vardef mpos(text t)(expr b,d)=forsuffixes $=t:pos$(b,d); endfor enddef;
+
+
+def draw_outlines= pickup pencircle scaled 1.5linethickness;
+ for n=1 upto 3:if known p[n]:draw p[n];fi
+ if known p[n]':draw p[n]';fi
+ if known p[n]'':draw p[n]'';fi endfor
+ if numeric mode: % -sl 21.03.1991
+ if mode=proof: drawgrid; fi
+ fi % -sl 21.03.1991
+ enddef;
+
+def drawgrid=
+ pickup pencircle scaled 1;
+ for y:=h,xheight,0,-descender: draw (0,y)--(w,y); endfor
+ for y:=unit step unit until (cap+.5unit): draw (0,y)--(w,y); endfor
+ for y:=unit step -unit until (-d-.5unit): draw (0,y)--(w,y); endfor
+ for x:=0 step unit until (w+.5unit): draw (x,-d)--(x,h); endfor
+enddef;
+
+
+vardef onaline(suffix a,b)(text t)=forsuffixes $=t:z$=whatever[z.a,z.b]; endfor
+ enddef;
+
+
+def showpoints(text t)=
+ if numeric mode: % -sl 21.03.1991
+ if mode=proof:pickup pencircle scaled 3;
+ forsuffixes $:=t:forsuffixes s:=l,,r:if known z$.s:draw z$s;fi endfor endfor
+ pickup pencircle scaled 1; penlabels(t); fi
+ fi % -sl 21.03.1991
+enddef;
+
+
+vardef inlimit(text amt)(expr lowerlimit,upperlimit)=save this;
+ this:=max(amt,lowerlimit); this:=min(this,upperlimit);this
+enddef;
+
+
+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 ;=restore_endchar semi_ if false enddef;
+def restore_endchar=let ;=semi_; let endchar=endchar_; enddef;
+def always_iff expr b = use_it enddef;
+boolean wanted[];
+
+ % for x:="I":
+ % wanted[byte x]:=true; endfor
+ % this allows specifying only those characters which are to be shown
+ % the chars can be specified inside of quotes("c") or as a number(23)
+def OK expr x=known wanted[byte x] enddef;
+ % let iff=always_iff; % allows testing of all chars in the file
+
+
+def min_limit(text this)(expr limit)=if this>limit:save this;this=limit;fi
+enddef;
+
+
+% def define_adj_whole_pixels(text t)=
+% forsuffixes $:=t: $:=hround(max(eps,$.#-linethickness#)*hppp); endfor enddef;
+
+def define_min_adj_whole_pixels(text t)=
+ forsuffixes $:=t: $:=max(lowres_min,hround(max(eps,$.#-linethickness#)*hppp));
+ endfor enddef;
+
+def bool(text t)=boolean t; t enddef;
+
+def vpix(text t)(text tt)= t:=tt; t:=vround(tt.#*hppp); enddef; % whole v pix
+def wpix(text tt)(text t)=
+ forsuffixes $:=t: $:=hround(tt.#*hppp); endfor enddef; % whole pixels
+def adjpix(text tt)(text t)= % adjusted pixels
+ forsuffixes $:=t: $:=hround(max(eps,tt.#*hppp-linethickness)); endfor enddef;
+
+def minadjpix(text ttt)(text tt)(text t)= % adjusted pixels with a minimum
+ forsuffixes $:=t: $:=max(ttt,hround(tt.#*hppp-linethickness));
+ endfor enddef;
+
+
+def highres_lowres(text t)(expr a,b)=t:=if lowres:b else:a fi enddef;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf
new file mode 100644
index 00000000000..8f9b6ab8aa2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf
@@ -0,0 +1,162 @@
+%% File LXBBOLD copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Changes of minimal parameters in outlined characters for version 2.1
+% done by Stefan Lindner, 18-April-1991
+
+input lxbbase;
+%%mode_setup; %called by amsyb.mf; two calls confuse Metafont. NGB 15-OCT-1991
+
+width#:= designsize; % was 8pt#;
+unit#:= width#/18;
+u#:= width#/54;
+smallu#:= width#/162;
+ascender#:= 37/3*unit#;
+cap#:= 37/3*unit#;
+number#:= 36/3*unit#;
+xheight#:= 25/3*unit#;
+descender#:= 12/4*unit#;
+define_whole_vertical_pixels
+ (width,unit,u,smallu,ascender,cap,number,xheight,descender);
+wpix(1.90u) (linethickness);
+wpix(0.65u) (Sover_bot);
+wpix(1.00u) (Aapex,Napex,Vapex,Wapex,Cover,Gover,Oover,Sover_top,Uover);
+wpix(9.00u) (Uthin_bracket);
+wpix(8.00u) (Kthin_diag_bracket,Xthin_diag_bracket,Ythin_diag_bracket);
+wpix(7.00u) (k_thin_diag);
+wpix(6.00u) (c_thin_stem_bracket);
+wpix(5.00u) (c_thick_stem_bracket,c_inner_bracket,lc_thick_stem_bracket);
+wpix(4.00u) (c_round_bracket);
+adjpix(1.35u) (serif_thickness);
+adjpix(1.30u) (Emid_tip,inbeak);
+adjpix(1.50u) (Atip,Btopthin,Bmidthin,Ebot_tip,Ltip,Mapex,
+ Ntip,Ttip,Vtip,Wtip,Ztip,outbeak);
+adjpix(1.65u) (Bbotthin,Gbotthin,Stopthin);
+adjpix(1.75u) (Dtopthin,Ebotarm,Lthin,Tthin);
+adjpix(1.80u) (Abar,Ctopthin,Dbotthin,Gtopthin,Jbotthin,Pmidarm,Sbotthin);
+adjpix(1.90u) (Emidarm,Etoparm,Othin,Pthin,Rthin,Ydiag,Zthin);
+adjpix(2.00u) (kthin,Mthin_diag,Wleftthin);
+adjpix(2.10u) (Ctip);
+adjpix(2.25u) (Athin,Kthin,Mthin_vert,Nthin,Uthin,Vthin,Wrightthin,Xthin);
+adjpix(2.50u) (Hbar);
+adjpix(2.60u) (Cbotthin);
+
+
+%%%% Begin of changes for version 2.1
+if pixels_per_inch < 1500/designsize:
+ if pixels_per_inch < 1000/designsize:
+ if pixels_per_inch < 800/designsize:
+ if pixels_per_inch < 700/designsize:
+ minadjpix(0)(8.80u) (stem);
+ minadjpix(0)(6.80u) (kdiag);
+ minadjpix(0)(7.40u) (kstem);
+ minadjpix(0)(7.80u) (Jbulb,Mdiag);
+ minadjpix(0)(8.20u) (Kdiag);
+ minadjpix(0)(8.30u) (Gstem,Mstem);
+ minadjpix(0)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(0)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(0)(8.90u) (Btopcurve);
+ minadjpix(1)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(1)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ else:
+ minadjpix(1)(8.80u) (stem);
+ minadjpix(1)(6.80u) (kdiag);
+ minadjpix(1)(7.40u) (kstem);
+ minadjpix(1)(7.80u) (Jbulb,Mdiag);
+ minadjpix(1)(8.20u) (Kdiag);
+ minadjpix(1)(8.30u) (Gstem,Mstem);
+ minadjpix(1)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(1)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(1)(8.90u) (Btopcurve);
+ minadjpix(2)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(2)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ fi
+ else:
+ adjpix(3.0u) (Mapex);
+ minadjpix(1)(8.80u) (stem);
+ minadjpix(2)(6.80u) (kdiag);
+ minadjpix(2)(7.40u) (kstem);
+ minadjpix(2)(7.80u) (Jbulb);
+ minadjpix(1)(6.00u) (Mdiag);
+ minadjpix(2)(8.20u) (Kdiag);
+ minadjpix(2)(8.30u) (Gstem)
+ minadjpix(2)(8.30u) (Mstem);
+ minadjpix(2)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(2)(8.50u) (Bstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(1)(8.50u) (Estem, Fstem);
+ minadjpix(2)(8.90u) (Btopcurve);
+ minadjpix(3)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(3)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ fi
+ else:
+ adjpix(3.0u) (Mapex);
+ minadjpix(2)(8.80u) (stem);
+ minadjpix(3)(6.80u) (kdiag);
+ minadjpix(3)(7.40u) (kstem);
+ minadjpix(3)(7.80u) (Jbulb);
+ minadjpix(1)(5.00u) (Mdiag);
+ minadjpix(3)(8.20u) (Kdiag);
+ minadjpix(3)(8.30u) (Gstem);
+ minadjpix(2)(8.30u) (Mstem);
+ minadjpix(3)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(3)(8.50u) (Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(2)(8.50u) (Bstem);
+ minadjpix(3)(8.90u) (Btopcurve);
+ minadjpix(3)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(3)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve)
+ fi
+else:
+ minadjpix(4)(8.80u) (stem);
+ minadjpix(4)(6.80u) (kdiag);
+ minadjpix(4)(7.40u) (kstem);
+ minadjpix(4)(7.80u) (Jbulb,Mdiag);
+ minadjpix(4)(8.20u) (Kdiag);
+ minadjpix(4)(8.30u) (Gstem,Mstem);
+ minadjpix(4)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(4)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(4)(8.90u) (Btopcurve);
+ minadjpix(5)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(5)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve)
+fi;
+%%%% end of changes for version 2.1
+
+boolean lowres; lowres:=width<50;
+highres_lowres(pullin) (.85)(1); % Emidarm
+highres_lowres(pulleven) (1)(1.3); % Etoparm,Tarms,Zarms
+highres_lowres(pullout) (1.1)(1); % Ebotarm,Lbotarm
+highres_lowres(bracket0) (.0)(0); % Ntopleft
+highres_lowres(bracket3) (.3)(0); % Nthinstems
+highres_lowres(bracket01) (.0)(.1); % Uthin
+highres_lowres(bracket32) (.3)(.2); % Vstems
+highres_lowres(bracket4) (.4)(0); % P-all,R-all,I-all,F-all
+highres_lowres(bracket42) (.4)(.2); % Xdiag
+
+bool(ctrls):=false;
+entasis:=inlimit(0)(0,1);
+serif_constant_amt:=0pt;
+join_radius:=1;
+bool(softpath):=true;
+
+c_thick_stem_bracket:=min(.5cap-eps,c_thick_stem_bracket);
+rulepen:=pensquare scaled 1;
+extra_beginchar:=extra_beginchar&"save t,p,ref; path p[],p[]',p[]'',ref[];";
+extra_beginchar:=extra_beginchar&"pickup pencircle scaled linethickness;";
+
+for x:="R":
+ wanted[byte x]:=true; endfor % test these characters
+ let iff=always_iff; % tests all chars in the file
+
+font_normal_space .3width#; % TeX fontdimen 2 normal word space
+font_normal_stretch .15width#; % TeX fontdimen 3 interword stretch
+font_normal_shrink .1width#; % TeX fontdimen 4 interword shrink
+font_x_height xheight#; % Tex fontdinem 5 for accents
+font_quad width#; % TeX fontdimen 6 quad width
+font_extra_space .1width#; % TeX fontdimen 7 extra space(period)
+
+
+input lxbcaps
+bye % changed from "end" 26 Aug 93; bnb
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf
new file mode 100644
index 00000000000..ebe2cbb6025
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf
@@ -0,0 +1,805 @@
+%% File LXBCAPS copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% Changes made by Stefan Lindner for version 2.1 to fix some
+% rounding problems at low resolutions 03-Mar-1991
+% ru defined and substituted for u in drawings of characters.
+
+def ru(expr A)=
+ begingroup
+ save rounded_u; rounded_u#:=A*u#;
+ define_whole_vertical_pixels(rounded_u);
+ rounded_u
+ endgroup
+enddef;
+
+iff OK "A": "The letter A"; beginchar("A",13unit#,cap#,0);
+
+ top z20=(.48w,h+Aapex); pos20(Atip,0);
+ bot y3=0; z3l=whatever[z20l,(1.5unit,0)];
+ bot y6=0; z6r=whatever[z20r,(w-round(unit+u),0)];
+ z20l=z1l; z20r=z4r;
+ mpos(1,3)(Athin,constant_angle(z20l,(1.5unit,0),0));
+ mpos(4,6)(stem,constant_angle(z20r,(w-round(unit+u),0),0));
+ onaline(1l,3l)(2l); y2l=c_round_bracket;
+ onaline(1r,3r)(2r); y2r=c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=c_thick_stem_bracket;
+ z40=whatever[.8[z1l,z1r],z2r]; z40=whatever[.8[z4r,z4l],z5l];
+ y41=round(.4[serif_thickness,y40]-Abar); % bar bottom
+ y42=y41+Abar;
+ ref1=rightserif(z3,z1,z2l,z40,ru(7),bracket0)--z40;
+ ref2=z40--leftserif(z6,z4,z40,z5r,ru(7),bracket32);
+ ref3=(0,y41)--(w,y41);
+ ref4=(0,y42)--(w,y42);
+ x11=xpart (ref1 intersectionpoint ref3);
+ x12=xpart (ref2 intersectionpoint ref3);
+ x13=xpart (ref2 intersectionpoint ref4);
+ x14=xpart (ref1 intersectionpoint ref4);
+ y11=y12=y41; y13=y14=y42;
+
+ p1=z20l--leftserif(z3,z1,z2l,z1r,ru(3),bracket0)--ref1--ref2--
+ rightserif(z6,z4,z5l,z5r,ru(2.5),bracket0)--z20r--cycle;
+ p2=z11--z12--z13--z14--cycle;
+
+ showpoints(1,2,3,4,5,6,11,12,13,14,20,40,41,42);
+ draw_outlines;
+ endchar;
+
+
+iff OK "B": "The letter B"; beginchar("B",12unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+2smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_round_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Bstem,0);
+ z5l=(rt x1r+ru(4),y1);
+ z5r=(rt x1r+ru(3),y1-Btopthin);
+ onaline(1r,4r)(8l);
+ bot y8l=.5h-smallu; pos8(Bmidthin,90);
+ rt z6l=(w-round(1.5unit),.5[y5l,y8l]); pos6(Btopcurve,180);
+ rt z9l=(w-round(ru(2.5)),.5[y10l,y8r]); pos9(Bbotcurve,180);
+ z10l=(rt x1r+ru(4),y4);
+ z10r=(rt x1r+ru(3),y4+Bbotthin);
+ z7l=(rt x1r+ru(3),y8l);
+ rt z7=(lft x9r-ru(3),.5[top y8l,y8r]);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(5.2),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(5.2),bracket4)--
+ curve.br(z10l,.5,z9l,.7)--curve.tr(z9l,.7,z7,.5)--
+ curve.br(z7,.5,z6l,.5)--curve.tr(z6l,.8,z5l,.6)--cycle;
+ p1'=z8l--z8r;
+ p1''=curve.br(z8r,.6,z6r,.85)--curve.tr(z6r,.7,z5r,.5)...
+ {left}z5r...{down}z2r--cycle;
+ p2''=z8l--z3r{down}...{right}z10r--
+ curve.br(z10r,.6,z9r,.7)--curve.tr(z9r,.8,z7l,.6)--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,10);
+ draw_outlines;
+ endchar;
+
+
+iff OK "C": "The letter C"; beginchar("C",(1+12)*unit#,cap#,0);
+
+ bot z2l=(max(7unit,.5w),-Cover);
+ y2r=y2l+Cbotthin;
+ x2r=x2l+(min(Cbotthin,abs(y2r-y2l)));
+ bot rt z1l=(w-ru(2),2unit);
+ ref1=z2l{right}...z1l;
+ pos1(Ctip,angle(z1l-precontrol 1 of ref1)+ 90);
+ lft z3l=(round ru(2),.5h); pos3(Ccurve,0);
+ top z4l=(x2l,h+Cover);
+ y4r=y4l-Ctopthin;
+ x4r=x4l+(min(ru(.5),abs(y4r-y4l)));
+ bot rt z5=(w-round(unit+ru(.5)),h-3unit-ru(2.5));
+ z6=(x5,y4l);
+ z7=z6-(ru(2.5),ru(2.5));
+ p1=curve.tl(z4l,.5,z3l,.7)--curve.bl(z3l,.7,z2l,.5)...z1l--
+ z1r...reversecurve.bl(z3r,.7,z2r,.6)--reversecurve.tl(z4r,.6,z3r,.6)--
+ beak(z4r,z5,z6,z7,z4l,1.2)--cycle;
+
+ showpoints(1,2,3,4,5,6,7);
+ draw_outlines;
+ endchar;
+
+
+iff OK "D": "The letter D"; beginchar("D",13unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_round_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(4),y4);
+ z5r=(rt x1r+ru(3),y5l+Dbotthin);
+ rt z6l=(w-u-2smallu,.52h); pos6(Dcurve,180);
+ z7l=(rt x1r+ru(4),y1);
+ z7r=(rt x1r+ru(3.5),y7l-Dtopthin);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.5),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(4.5),bracket4)--
+ curve.br(z5l,.5,z6l,.7)--curve.tr(z6l,.7,z7l,.5)--cycle;
+ p1''=curve.br(z5r,.5,z6r,.8)--curve.tr(z6r,.7,z7r,.5)...
+ {down}z2r...z3r{down}...{right}z5r--cycle;
+
+ showpoints(1,2,3,4,5,6,7);
+ draw_outlines;
+ endchar;
+
+
+iff OK "E": "The letter E"; beginchar("E",(1+11)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_inner_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Estem,0);
+ bot rt z11=(w-unit,0);
+ top rt z12=(w-.5unit,3unit+ru(2));
+ z13=(.5w+.5unit,y4+Ebotarm);
+ z14=(min(x13,rt x4r+.5unit),y13);
+ rt z21=(w-ru(4),y1);
+ bot z22=(x21,top y1-3.5unit);
+ z23=(ru(19),y1-Etoparm);
+ z24=(rt x1r+.5unit,y23);
+ onaline(1r,4r)(31,35);
+ bot y31=.5h-smallu;
+ y35=y31+Emidarm;
+ rt z33=(w-(3.8unit),.5[y31,y35]);
+ x32=x34=x33;
+ bot y32=bot y31-2.5unit;
+ top y34=bot y32+6unit;
+
+ p1=leftserif(z4,z1,z3l,z3r,ru(4.75),.4)--
+ straightarm.br(z13,z12,z11,Ebot_tip,pullout)--z14{left}...{up}z3r--
+ z2r{up}...{right}z24--straightarm.tr(z23,z22,z21,Emid_tip,pulleven)--
+ leftserif(z1,z4,z2l,z2r,ru(4.75),.4)--cycle;
+ p1'=straightarm.br(z31,z32,z33,Emid_tip,pullin)--
+ straightarm.tr(z35,z34,z33,Emid_tip,pullin);
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,35);
+ draw_outlines;
+ endchar;
+
+
+iff OK "F": "The letter F"; beginchar("F",(1+10)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_inner_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Fstem,0);
+ rt z21=(w-.5unit,y1);
+ bot z22=(x21,top y1-3.5unit);
+ z23=(ru(19),y1-Etoparm);
+ z24=(rt x1r+.5unit,y23);
+ onaline(1r,4r)(31,35);
+ bot y31=.5h-smallu;
+ y35=y31+Emidarm;
+ rt z33=(w-3unit,.5[y31,y35]);
+ x32=x34=x33;
+ bot y32=bot y31-2.5unit;
+ top y34=bot y32+6unit;
+
+ p1=fullserif(z4,z1,z3l,z3r,ru(4.75),ru(6),bracket4)--z2r{up}...{right}z24--
+ straightarm.tr(z23,z22,z21,Emid_tip,pulleven)--
+ leftserif(z1,z4,z2l,z2r,ru(4.75),bracket4)--cycle;
+ p1'=straightarm.br(z31,z32,z33,Emid_tip,pullin)--
+ straightarm.tr(z35,z34,z33,Emid_tip,pullin);
+
+ showpoints(1,2,3,4,21,22,23,24,31,32,33,34,35);
+ draw_outlines;
+ endchar;
+
+
+iff OK "G": "The letter G"; beginchar("G",(1+13)*unit#,cap#,0);
+
+ bot z2l=(max(7unit,.5w),-Gover);
+ y2r=y2l+Gbotthin;
+ x2r=x2l+(min(Gbotthin,abs(y2r-y2l)));
+ lft z3l=(round ru(2),.5h); pos3(Gcurve,0);
+ top z4l=(x2l,h+Gover);
+ y4r=y4l-Gtopthin;
+ x4r=x4l+(min(.5u,abs(y4r-y4l)));
+ bot rt z5=(w-round(2unit+.5u),h-3unit-ru(2.5));
+ z6=(x5,y4l);
+ z7=z6-(ru(2.5),ru(2.5));
+ top rt z11r=(rt x5+.5u,5unit+.5u);
+ bot z13r=(x11r,unit-2smallu);
+ mpos(11,13)(Gstem,0);
+ onaline(11r,13r)(12r); y12r=max(y11r-c_thick_stem_bracket,y13r);
+ onaline(11l,13l)(12l); y12l=max(y11l-c_thick_stem_bracket,y13r+unit);
+
+ p1=curve.tl(z4l,.5,z3l,.7)--curve.bl(z3l,.7,z2l,.5)--z2l{right}...z13r--
+ fullserif(z11,z13,z12l,z12r,ru(5.5),ru(4.5),bracket0)...{down}z13l...{left}z2r--
+ reversecurve.bl(z3r,.7,z2r,.6)--reversecurve.tl(z4r,.6,z3r,.6)--
+ beak(z4r,z5,z6,z7,z4l,1.2)--cycle;
+
+ showpoints(2,3,4,5,6,7,11,12,13);
+ draw_outlines;
+ endchar;
+
+
+iff OK "H": "The letter H"; beginchar("H",(1+13)*unit#,cap#,0);
+
+ numeric H_inner_serif_amt;
+ top lft z1l=(round(3.75unit/2),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ bot z4l=(x1l,0);
+ top rt z11r=(w-round(3.75unit/2),h);
+ z12r=(x11r,h-c_thick_stem_bracket);
+ z13r=(x11r,c_thick_stem_bracket);
+ bot z14r=(x11r,0);
+ mpos(1,2,3,4,11,12,13,14)(stem,0);
+ onaline(1r,4r)(5l,5r); bot y5l=bot y15l=.5cap-u;
+ onaline(11l,14l)(15l,15r); y5r=y15r=y5l+Hbar;
+ H_inner_serif_amt=ru(4.75);
+ if (x1r+H_inner_serif_amt+.5linethickness)>.5w: % keeps inner serifs
+ H_inner_serif_amt:=.5w-x1r-.5linethickness-1; % from merging
+ fi
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(4.75),H_inner_serif_amt,bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.75),H_inner_serif_amt,bracket4)--cycle;
+ p2=fullserif(z11,z14,z12l,z12r,H_inner_serif_amt,ru(4.75),bracket4)--
+ fullserif(z14,z11,z13l,z13r,H_inner_serif_amt,ru(4.75),bracket4)--cycle;
+ p1'=z5r--z15r--z15l--z5l;
+
+ showpoints(1,2,3,4,5,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "I": "The letter I"; beginchar("I",(1+6)*unit#,cap#,0);
+
+ top lft z1l=(round((w-stem-linethickness)/2),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,2,3,4)(stem,0);
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(5),ru(5),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(5),ru(5),bracket4)--cycle;
+
+ showpoints(1,2,3,4);
+ draw_outlines;
+ endchar;
+
+
+iff OK "J": "The letter J"; beginchar("J",(2+7)*unit#,cap#,descender#);
+
+ top rt z1r=(round(w-2unit),h);
+ z2r=(x1r,h-c_thick_stem_bracket);
+ z3r=(x1r,2unit);
+ z3l=(x1l,u);
+ mpos(1,2)(stem,0);
+ bot z10r=(w/3,-.45d);
+ z10l=z10r+(-smallu,Jbotthin);
+ lft z12l=(smallu,ru(2)); pos12(Jbulb,0);
+ top z13=(x12,2unit-smallu);
+ ref1=z12r...z12l...cycle;
+ z14= point 1.75 of ref1; z15=direction 1.75 of ref1;
+ z11=(x12r-.5unit,.5[y10l,y14]);
+
+ p1=fullserif(z1,z2,z2l,z2r,ru(5.5),ru(4.75),bracket4)--z3l{down}...z10l{left}...
+ z11{up}...z14{z15}...z12r{up}...z13{left}...z12l{down}... % bulb
+ curve.br(z10r,.65,z3r,.65)--cycle;
+
+ showpoints(1,2,3,10,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "K": "The letter K"; beginchar("K",(1+13)*unit#,cap#,0);
+
+ numeric K_inner_serif_amt;
+ top lft z11l=(2unit,h);
+ z12l=(x11l,h-c_thick_stem_bracket);
+ z13l=(x11l,c_thick_stem_bracket);
+ bot z14l=(x11l,0);
+ mpos(11,12,13,14)(stem,0);
+ onaline(11r,14r)(3r,4);
+ bot y3r=.4cap;
+ top rt z1r=(w-2unit,cap);
+ mpos(1,3)(Kthin,angle(z1r-z3r)-90);
+ y2l=y2r=cap-Kthin_diag_bracket;
+ onaline(1l,3l)(2l,4);
+ onaline(1r,3r)(2r,21l);
+ onaline(1,3)(0); top y0=cap;
+ bot y21l=y3r+.5unit;
+ bot rt z23r=(w-ru(2),0);
+ mpos(21,23)(Kdiag,angle(z1r-z3r));
+ y22l=y22r=c_thick_stem_bracket;
+ onaline(21l,23l)(22l);
+ onaline(21r,23r)(22r);
+ onaline(21,23)(20); bot y20=0;
+
+ K_inner_serif_amt=ru(4.75);
+ if (x11r+K_inner_serif_amt+.5linethickness)>.5w:
+ K_inner_serif_amt:=.5w-x11r-.5linethickness-1;
+ fi
+
+ p1=fullserif(z11,z14,z12l,z12r,ru(4.75),K_inner_serif_amt,bracket4)--
+ fullserif(z14,z11,z13l,z13r,ru(4.75),K_inner_serif_amt,bracket4)--cycle;
+ p2=z3r--fullserif(z0,z3,z2l,z2r,ru(9),ru(3.5),bracket01)--z4--cycle;
+ p3=z21l--fullserif(z20,z21,z22l,z22r,ru(4),.5unit,bracket32)--z21r--cycle;
+
+ showpoints(0,1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "L": "The letter L"; beginchar("L",(1+11)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,2,4)(Lstem,0);
+ bot rt z11=(w-unit,0);
+ top rt z12=(w-.5unit,4unit);
+ z13=(.5w+.5unit,y4+Lthin);
+ z14=(min(x13,rt x4r+.5unit),y13);
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(4.75),ru(4.5),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(4.75),bracket4)--
+ straightarm.br(z13,z12,z11,Ltip,pullout)--z14{left}...{up}z3r--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14);
+ draw_outlines;
+ endchar;
+
+
+iff OK "M": "The letter M"; beginchar("M",(1+16)*unit#,cap#,0);
+
+ lft x4l=ru(5.6); bot y4=0;
+ rt x14r=w-2unit; bot y14=0;
+ top z1l=(x4l,h);
+ top z11r=(x14r,h);
+ mpos(1,3,4)(Mthin_vert,0);
+ mpos(11,12,13,14)(Mstem,0);
+ onaline(1,4)(3); y12l=h-c_thick_stem_bracket;
+ onaline(11,14)(12,13); y3l=y13l=c_thick_stem_bracket;
+ bot z22=(x1r+.5(x11l-x1r-Mapex),0); pos22(Mapex,0);
+ top z24=(x11l-u,h);
+ top z26=(rt x1r+Mdiag,h);
+ top z25=(.5[x24,x26],3unit+ru(2)); pos25(u,0);
+ bot y23=h-ru(4);
+ (z23-z22r)=whatever*(z24-z25r);
+ bot y21=h-ru(5);
+ (z21-z22l)=whatever*(z26-z25l);
+ onaline(26,25l)(30r,31r); onaline(21,22l)(30l,31l);
+ y30=y30l=y30r=h-.5linethickness; x30=.5[x30l,x30r];
+ y31=y31l=y31r=0; x31=.5[x31l,x31r];
+ ref1=leftserif(z30,z31,z21,z25r,ru(5.5),bracket0)--z22l;
+ z2l=ref1 intersectionpoint ((x3l,0)--(x3l,h));
+ z2r=ref1 intersectionpoint ((x3r,0)--(x3r,h));
+
+ p1=fullserif(z4,z3,z3l,z3r,ru(4.7),ru(5),bracket0)--z2r--z2l--cycle;
+ p2=z22r--z23--(x11l,y24)--z24--z25r--z25l--z26--ref1--cycle;
+ p3=fullserif(z14,z13,z13l,z13r,ru(4.7),ru(5),bracket0)--
+ rightserif(z11,z12,z12l,z12r,ru(4.7),bracket0)--(x11l,y24)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23,24,25,26,30,31);
+ draw_outlines;
+ endchar;
+
+
+iff OK "N": "The letter N"; beginchar("N",13unit#,cap#,0);
+
+ bot lft z1l=(round 2unit,0); mpos(1,2,11,12)(Nthin,0);
+ z2=(x1,c_thin_stem_bracket);
+ z3=(x1l,h-ru(4));
+ top rt z11r=(round (w-ru(5.3)),h);
+ z12=(x11,h-c_thin_stem_bracket);
+ bot z22=(x11r,-Napex);
+ z23l=z22-(Ntip,0); mpos(4,23)(Ndiag,angle(z3-z23l)-90);
+% onaline(1r,2r)(4l); bot z4l=whatever[z3,z23l];
+ onaline(1r,2r)(4l); z4l=whatever[z3,z23l];
+ onaline(11l,12l)(14); onaline(4r,23r)(13,14);
+ top y21=h; z21=whatever[z14,1.05[z4l,z4r]];
+ onaline(4,23)(20); y20=y21;
+ onaline(11r,12r)(13);
+
+ p1=leftserif(z20,z4,z4l,z4r,ru(2.5),bracket0)--z23l--z22--z13--z21--cycle;
+ p1'=z3--fullserif(z1,z2,z2l,z2r,ru(4.7),ru(5),bracket3)--z4l;
+ p2'=z13--fullserif(z11,z12,z12l,z12r,ru(5),ru(4.2),bracket3)--z14;
+
+ showpoints(1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "O": "The letter O"; beginchar("O",(1+13)*unit#,cap#,descender#);
+
+ top z1l=(.5w,h+Oover); pos1(Othin,-90);
+ lft z2l=(round(ru(1.8)),.5h); pos2(Ocurve,0);
+ bot z3l=(.5w,-Oover); pos3(Othin,90);
+ rt z4l=(round(w-ru(1.8)),.5h); pos4(Ocurve,180);
+
+ p1=curve.tl(z1l,.5,z2l,.7)--curve.bl(z2l,.7,z3l,.5)--
+ curve.br(z3l,.5,z4l,.7)--curve.tr(z4l,.7,z1l,.5)--cycle;
+ p1''=curve.tl(z1r,.6,z2r,.7)--curve.bl(z2r,.7,z3r,.6)--
+ curve.br(z3r,.6,z4r,.7)--curve.tr(z4r,.7,z1r,.6)--cycle;
+
+ showpoints(1,2,3,4);
+ draw_outlines;
+ endchar;
+
+
+iff OK "P": "The letter P"; beginchar("P",(1+10)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(4),y1);
+ z5r=(rt x1r+ru(3),y1-Pthin);
+ rt z6l=(w-2smallu,.5[y5l,y7l]); pos6(Pcurve,180);
+ onaline(1r,4r)(8l,8r); bot y8l=5.5unit; y8r=y8l+Pmidarm;
+ z7l=(rt x1r+ru(4),y8l-round(.2smallu));
+ z7r=(rt x1r+ru(3),y8l+Pthin);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.5),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.5),ru(4.8),bracket4)--z8l{right}...
+ curve.br(z7l,.5,z6l,.7)--curve.tr(z6l,.7,z5l,.6)--cycle;
+ p1'=z8l--z8r;
+ p1''=z8r--curve.br(z7r,.6,z6r,.8)--curve.tr(z6r,.8,z5r,.7)...
+ {down}z2r--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Q": "The letter Q"; beginchar("Q",(1+13)*unit#,cap#,descender#);
+
+ top z1l=(.5w,h+Oover); pos1(Othin,-90);
+ lft z2l=(round(ru(1.8)),.5h); pos2(Ocurve,0);
+ bot z3l=(.5w,-Oover); pos3(Othin,90);
+ rt z4l=(round(w-ru(1.8)),.5h); pos4(Ocurve,180);
+ ref1=curve.bl(z2l,.7,z3l,.5)--curve.br(z3l,.5,z4l,.7);
+ ref2=(.35w,-d)--(.35w,h);
+ ref3=(.35w+stem+2linethickness,-d)--(.35w+stem+2linethickness,h);
+ lft z11=ref1 intersectionpoint ref2;
+ bot rt z13r=(round(w-ru(2.5)),-d+4smallu);
+ bot z12=(.6[x11,x13r],-d-round(2smallu));
+ ref4=z12{right}...z13r;
+ pos13(serif_thickness,angle(z13r-precontrol 1 of ref4)-90);
+ z14=z13l-(ru(3.5),.5u);
+ rt z15=ref1 intersectionpoint ref3;
+
+ p1=curve.tl(z1l,.5,z2l,.7)--ref1--curve.tr(z4l,.7,z1l,.5)--cycle;
+ p1'=z11...z12{right}...z13r--z13l...z14{left}...z15;
+ p1''=curve.tl(z1r,.6,z2r,.7)--curve.bl(z2r,.7,z3r,.6)--
+ curve.br(z3r,.6,z4r,.7)--curve.tr(z4r,.7,z1r,.6)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "R": "The letter R"; beginchar("R",(1+12)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+2smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(5),y1);
+ z5r=(rt x1r+ru(3),y1-Rthin);
+ rt z6r=(w-(ru(5.0)),.5[y5l,y8l]); pos6(Rcurve,0);
+ onaline(1r,4r)(8l,8r); bot y8l=5.6unit; y8r=y8l+Rthin;
+ ref1=curve.br(z8l,.5,z6r,.9);
+ ref2=(rt x4r+.5unit,0)--(rt x4r+.5unit,h);
+ ref3=(x4r+stem+2linethickness,0)--(x4r+stem+2linethickness,h);
+ lft z11l=ref1 intersectionpoint ref2;
+ rt z13l=(w-u,y4); pos13(serif_thickness,90);
+ lft z12l=(w-4unit,y13l);
+ z14=z13r-(ru(3),0);
+ top rt z15=ref1 intersectionpoint ref3;
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.8),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.8),ru(4.8),bracket4)--
+ curve.br(z8l,.6,z6r,.9)--curve.tr(z6r,.7,z5l,.5)--cycle;
+ p1'=z8l--z8r;
+ p2'=z11l--z12l--z13l--z13r{left}
+ if lowres:..tension 10.. else:... fi{z15-z14}z15;
+ p1''=z8r--curve.br(z8r,.8,z6l,.9)--curve.tr(z6l,.9,z5r,.5)...
+ {down}z2r--cycle;
+
+ showpoints(1,2,3,4,5,6,8,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "S": "The letter S"; beginchar("S",10unit#,cap#,0);
+
+ top z1r=(.5w-u,h+Sover_top); pos1(Stopthin,90);
+ rt z3=(w-ru(4),y1r);
+ x4=.3[x3,x1r]; y4=y3-ru(1.5);
+ bot z2=top z3-(0,4unit-smallu);
+ bot z11l=(.5w-u,-Sover_bot); pos11(Sbotthin,90);
+ lft z13=(ru(2),y11l);
+ x14=.3[x13,x11l]; y14=y13+ru(1.5);
+ top z12=bot z13+(0,4.5unit);
+ z21l=(ru(2.5),.73h);
+ y21r=.35[y21l,y1r]; rt x21r=.48[x21l,x1r];
+ z22=(.5w,.52h); pos22(stem,37);
+ z23r=(w-ru(2)-smallu,.28h);
+ y23l=.7[y11l,y23r]; lft x23l=.53[x11l,x23r];
+
+ p1=beak(z1l,z2,z3,z4,z1r,1.2)--curve.tl(z1r,.65,z21l,.65)...
+ z22l...
+ reversecurve.br(z11r,.7,z23l,.7)--
+ beak(z11r,z12,z13,z14,z11l,1.2)--
+ curve.br(z11l,.6,z23r,.6)...1.1[z22l,z22r]...
+ reversecurve.tl(z1l,.6,z21r,.6)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "T": "The letter T"; beginchar("T",(1+11)*unit#,cap#,0);
+
+ mpos(1,2,3)(stem,0);
+ bot lft z1l=(round((w-stem-linethickness)/2),0);
+ z2l=(x1l,c_thick_stem_bracket);
+ top z4=(x1,h);
+ bot y5l=top y4-(3unit+ru(2)); onaline(1,4)(5);
+ mpos(4,5)(round(w-ru(3.5)-linethickness),0);
+ z3l=(x1l,y4-Tthin);
+
+ p1=straightarm.br(z3r,z5r,z4r,Ttip,pulleven)--
+ straightarm.bl(z3l,z5l,z4l,Ttip,pulleven)--cycle;
+ p1'=z3l--fullserif(z1,z4,z2l,z2r,ru(5.25),ru(5.25),bracket4)--z3r;
+
+ showpoints(1,2,3,4,5);
+ draw_outlines;
+ endchar;
+
+
+iff OK "U": "The letter U"; beginchar("U",13unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,4unit);
+ top rt z11r=(w-round(ru(5.5)),h);
+ z12r=(x11r,h-Uthin_bracket);
+ z13r=(x11r,4.5unit);
+ mpos(1,2,3)(Ustem,0);
+ mpos(11,12,13)(Uthin,0);
+ bot z10r=(.5w,-Uover);
+ z10l=z10r+(.5unit,Uthin);
+
+ p1=fullserif(z1,z2,z2l,z2r,ru(4.5),ru(5),bracket4)--
+ curve.bl(z3l,.65,z10r,.65)--curve.br(z10r,.65,z13r,.65)--
+ fullserif(z11,z12,z12l,z12r,ru(4.75),ru(4.75),bracket01)--z13l{down}--
+ reversecurve.br(z10l,.65,z13l,.65)--
+ reversecurve.bl(z3r,.7,z10l,.7)--cycle;
+
+ showpoints(1,2,3,10,11,12,13);
+ draw_outlines;
+ endchar;
+
+
+iff OK "V": "The letter V"; beginchar("V",13unit#,cap#,0);
+
+ bot z20=(.51w,-Vapex); pos20(Vtip,0);
+ top y3=h; z3r=whatever[z20r,(w-round(unit+2smallu),h)];
+ top y6=h; z6l=whatever[z20l,(unit,h)];
+ z20r=z1r; z20l=z4l;
+ mpos(1,3)(Vthin,constant_angle((w-round(unit+2smallu),h),z20r,0));
+ mpos(4,6)(stem,constant_angle((unit,h),z20l,0));
+ onaline(1r,3r)(2r); y2r=h-c_round_bracket;
+ onaline(1l,3l)(2l); y2l=h-c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=h-c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=h-c_thick_stem_bracket;
+ z40=whatever[.8[z1r,z1l],z2l]; z40=whatever[.8[z4l,z4r],z5r];
+
+ p1=z20l--z20r--rightserif(z3,z1,z2l,z2r,ru(3),bracket0)--
+ leftserif(z3,z1,z40,z2r,ru(7),bracket0)--z40--
+ rightserif(z6,z4,z5l,z40,ru(7),bracket32)--
+ leftserif(z6,z4,z5l,z5r,ru(2.5),bracket0)--z20l--cycle;
+
+ showpoints(1,2,3,4,5,6,20,40);
+ draw_outlines;
+ endchar;
+
+
+iff OK "W": "The letter W"; beginchar("W",(1+17)*unit#,cap#,0);
+
+ bot z20=(.3w,-Wapex); pos20(Wtip,0);
+ top y3=h; z3r=whatever[z20r,(.6w,h)];
+ top y6=h; z6l=whatever[z20l,(unit,h)];
+ z20r=z1r; z20l=z4l;
+ mpos(1,3)(Wleftthin,constant_angle((.6w,h),z20r,0));
+ mpos(4,6)(stem,constant_angle((unit,h),z20l,0));
+ onaline(1r,3r)(2r); y2r=h-c_round_bracket;
+ onaline(1l,3l)(2l); y2l=h-c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=h-c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=h-c_thick_stem_bracket;
+ z40=whatever[.8[z1r,z1l],z2l]; z40=whatever[.8[z4l,z4r],z5r];
+
+ bot z21=(.7w,-Wapex); pos21(Wtip,0);
+ top y13=h; z13r=whatever[z21r,(w-unit,h)];
+ top y16=h; z16l=whatever[z21l,(.44w,h)];
+ z21r=z11r; z21l=z14l;
+ mpos(11,13)(Wrightthin,constant_angle((w-unit,h),z21r,0));
+ mpos(14,16)(stem,constant_angle((.44w,h),z21l,0));
+ onaline(11r,13r)(12r); y12r=h-c_round_bracket;
+ onaline(11l,13l)(12l); y12l=h-c_inner_bracket;
+ onaline(14r,16r)(15r); y15r=h-c_inner_bracket;
+ onaline(14l,16l)(15l); y15l=h-c_thick_stem_bracket;
+ z41=whatever[.8[z11r,z11l],z12l]; z41=whatever[.8[z14l,z14r],z15r];
+
+ ref1=leftserif(z16,z14,z15l,z15r,ru(2.5),bracket0)--z21l;
+ z30=ref1 intersectionpoint (z20r--z3r);
+ z31=ref1 intersectionpoint (z40--z3l);
+
+ p1=z21l--z21r--rightserif(z13,z11,z12l,z12r,ru(2),bracket0)--
+ leftserif(z13,z11,z41,z12r,ru(7),bracket0)--z41--
+ rightserif(z16,z14,z15l,z41,ru(6),bracket32)--
+ ref1--cycle;
+ p2=z20l--z20r--z30--z31--z40--
+ rightserif(z6,z4,z5l,z40,ru(5),bracket32)--
+ leftserif(z6,z4,z5l,z5r,ru(2),bracket0)--z20l--cycle;
+
+ showpoints(1,2,3,4,5,6,11,12,13,14,15,16,20,21,30,31,40,41);
+ draw_outlines;
+ endchar;
+
+
+iff OK "X": "The letter X"; beginchar("X",13unit#,cap#,0);
+
+ numeric botjoin,topjoin,joinwidths;
+ botjoin=.42h; topjoin=.62h;
+
+ top z1=(.2w,h);
+ bot z3=(.8w,0);
+ z2r=.5[z1r,z3r];
+ mpos(1,3)(Xdiag,constant_angle(z1,z3,0));
+ pos2(.9Xdiag,constant_angle(z1,z3,0));
+ ref1=leftserif(z1,z3,z2l,z2r,ru(2.5),bracket4)...
+ leftserif(z3,z1,z2l,z2r,ru(7),bracket42);
+ ref2=rightserif(z3,z1,z2l,z2r,ru(2),bracket42)--
+ rightserif(z1,z3,z2l,z2r,ru(6),bracket4);
+ bot z4=ref1 intersectionpoint ((0,botjoin)--(w,botjoin));
+ top z9=ref2 intersectionpoint ((0,topjoin)--(w,topjoin));
+ bot z6=(.12w,0); top z7=(.8w,h);
+ mpos(4,6)(Xthin,constant_angle(z4,z6,0));
+ mpos(7,9)(Xthin,constant_angle(z7,z9,0));
+ onaline(4l,6l)(5l); y5l=y5r=Xthin_diag_bracket;
+ onaline(4r,6r)(5r);
+ onaline(7r,9r)(8r); y8r=y8l=h-Xthin_diag_bracket;
+ onaline(7l,9l)(8l);
+ ref3=fullserif(z6,z4,z5l,z5r,ru(2.5),ru(8),bracket01);
+ ref4=z5l--2[z5l,z4l];
+ ref5=fullserif(z7,z9,z8l,z8r,ru(7),ru(5),bracket01);
+ ref6=z8r--2[z8r,z9r];
+ z21=ref1 intersectionpoint (ref3--z4r);
+ z22=ref1 intersectionpoint ref4;
+ z23=ref2 intersectionpoint (ref5--z9l);
+ z24=ref2 intersectionpoint ref6;
+
+ p1=ref1--ref2--cycle;
+ p2=z22--ref3--z21--cycle;
+ p3=z24--ref5--z23--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,21,22,23,24);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Y": "The letter Y"; beginchar("Y",13unit#,cap#,0);
+
+ bot lft z3l=(5unit,0);
+ z2l=z3l+(0,c_thick_stem_bracket);
+ mpos(2,3)(stem,0);
+ onaline(2l,3l)(1l); y1l=.39h;
+ onaline(2r,3r)(1r); y1r=.45h;
+ top lft z4l=(unit,h);
+ z6l=z1l;
+ mpos(4,6)(Ythick_diag, constant_angle(z4l,z6l,0));
+ onaline(4l,6l)(5l); y5l=y5r=h-c_thick_stem_bracket;
+ onaline(4r,6r)(5r);
+ onaline(4,6)(20); top y20=h;
+ top rt z7r=(w-unit,h);
+ z9r=z1r;
+
+ mpos(7,9)(Ydiag, constant_angle(z7r,z9r,0));
+ onaline(7l,9l)(8l); y8l=y8r=h-Ythin_diag_bracket;
+ onaline(7r,9r)(8r);
+ onaline(7,9)(21); top y21=h;
+
+ ref1=z5r--1.5[z5r,z6r];
+ ref2=z8l--1.5[z8l,z9l];
+ z22=ref1 intersectionpoint ref2;
+
+ p1=fullserif(z20,z6,z5l,z5r,ru(2),ru(4),bracket4)--z1l--
+ fullserif(z3,z2,z2l,z2r,ru(5),ru(5),bracket4)--z1r--
+ fullserif(z21,z9,z8l,z8r,ru(8),ru(2),bracket01)--z22--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,20,21,22);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Z": "The letter Z"; beginchar("Z",(1+11)*unit#,cap#,0);
+
+ top lft z1=(ru(4)+smallu,h);
+ bot lft z2=(ru(3)+smallu,top y1-3.5unit);
+ z3=(.5w,y1-Zthin);
+ bot lft z5l=(.5unit,0);
+ rt z15r=(w-ru(3)-smallu,y1);
+ mpos(5,15)(Zdiag,constant_angle(z15r,z5l,Zdiag));
+ rt z11=(w-ru(3.2),y5l);
+ top rt z12=(w-ru(1.7),4unit+u);
+ z13=(.55w,y11+Zthin);
+ onaline(5l,15l)(4); y4=y3;
+ onaline(5r,15r)(14); y14=y13;
+
+ p1=straightarm.tl(z3,z2,z1,Ztip,pulleven)--z4--z5l--
+ straightarm.br(z13,z12,z11,Ztip,pulleven)--z14--z15r--cycle;
+
+ showpoints(1,2,3,4,5,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+
+% ----- Phase 3 -----
+
+
+iff OK "k": "The letter k"; beginchar(oct"174",(1+9)*unit#,ascender#,0);
+
+ top lft z11l=(unit+.5u,h);
+ bot z14l=(x11l,0);
+ mpos(11,14)(kstem,0);
+ onaline(11r,14r)(3r,4,12r,13r);
+ bot y3r=.4xheight; y12l=h-lc_thick_stem_bracket; top y12r=h;
+ onaline(11l,14l)(12l,13l);
+ y13l=y13r=lc_thick_stem_bracket;
+ top rt z1r=(w-1.5unit,xheight);
+ mpos(1,3)(kthin,angle(z1r-z3r)-90);
+ y2l=y2r=xheight-k_thin_diag;
+ onaline(1l,3l)(2l,4);
+ onaline(1r,3r)(2r,21l);
+ onaline(1,3)(0); top y0=xheight;
+ y21l=y3r+.5unit;
+ bot rt z23r=(w-ru(2),0);
+ mpos(21,23)(kdiag,angle(z1r-z3r));
+ y22l=y22r=lc_thick_stem_bracket;
+ onaline(21l,23l)(22l);
+ onaline(21r,23r)(22r);
+ onaline(21,23)(20); bot y20=0;
+
+ p1=fullserif(z14,z11,z13l,z13r,ru(2.5),ru(2.5),bracket0)--z12r--
+ leftserif(z11,z14,z12l,z12r,ru(2.5),bracket0)--cycle;
+ p2=z3r--fullserif(z0,z3,z2l,z2r,ru(7),ru(2.5),bracket01)--z4--cycle;
+ p3=z21l--fullserif(z20,z21,z22l,z22r,ru(4),u,bracket32)--z21r--cycle;
+
+ showpoints(0,1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm
new file mode 100644
index 00000000000..429ec470a84
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm
new file mode 100644
index 00000000000..e0f4a1b3fa1
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm
new file mode 100644
index 00000000000..49a631427af
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm
new file mode 100644
index 00000000000..16ef08d3ebb
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm
new file mode 100644
index 00000000000..7b757f9acd3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm
new file mode 100644
index 00000000000..094e2c20ee4
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm
new file mode 100644
index 00000000000..9b1018e8c2e
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm
new file mode 100644
index 00000000000..417639023af
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm
new file mode 100644
index 00000000000..6d2c0e6c59a
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm
new file mode 100644
index 00000000000..2909acfd8ce
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm
new file mode 100644
index 00000000000..b32e24cb97a
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm
new file mode 100644
index 00000000000..3864e19e140
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm
new file mode 100644
index 00000000000..cfa103cab31
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm
new file mode 100644
index 00000000000..5d205d6d9da
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm
new file mode 100644
index 00000000000..02278efafda
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm
new file mode 100644
index 00000000000..3f889cb9fb7
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm
new file mode 100644
index 00000000000..4dc7f659719
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm
new file mode 100644
index 00000000000..70e1c6684cc
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm
new file mode 100644
index 00000000000..ba69d4f99f3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm
new file mode 100644
index 00000000000..0fe9a054fd3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm
new file mode 100644
index 00000000000..235b63dc52f
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb
new file mode 100644
index 00000000000..fd882f48e0a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb
new file mode 100644
index 00000000000..5b4dc79b7f7
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb
new file mode 100644
index 00000000000..c0be6dba52a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb
new file mode 100644
index 00000000000..07a22bc4a7f
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb
new file mode 100644
index 00000000000..b128c1006af
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb
new file mode 100644
index 00000000000..1ea3c55e827
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb
new file mode 100644
index 00000000000..110863fb72e
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb
new file mode 100644
index 00000000000..4e1ee2284da
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb
new file mode 100644
index 00000000000..1835ce694e1
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb
new file mode 100644
index 00000000000..84a597d06e6
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb
new file mode 100644
index 00000000000..39ba5c48249
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb
new file mode 100644
index 00000000000..1e2f108521a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb
new file mode 100644
index 00000000000..a9435c8f674
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb
new file mode 100644
index 00000000000..2cac232dd9c
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb
new file mode 100644
index 00000000000..10e4b8a6b9f
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb
new file mode 100644
index 00000000000..e31c56733f3
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb
new file mode 100644
index 00000000000..7d66c1fe49b
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb
new file mode 100644
index 00000000000..42ab3da19f5
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb
new file mode 100644
index 00000000000..14d0bcd31c3
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb
new file mode 100644
index 00000000000..1037076b70d
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb
new file mode 100644
index 00000000000..9bcc1a95178
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/lxfonts/lxfonts.sty b/Master/texmf-dist/tex/latex/lxfonts/lxfonts.sty
new file mode 100644
index 00000000000..f8eab5b699c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/lxfonts/lxfonts.sty
@@ -0,0 +1,174 @@
+% lxfonts.sty
+%
+\NeedsTeXFormat{LaTeX2e}[2001/06/01]
+\ProvidesPackage{lxfonts}[2008/01/20 v.0.4 For using modified LX fonts]
+\newif\if@lasy \@lasyfalse
+\newif\if@Tuno \@Tunofalse
+\newif\if@TSuno \@TSunofalse
+
+\@ifpackageloaded{lastexsym}{\@lasytrue}{}
+\@ifpackageloaded{textcomp}{\@TSunotrue}{}
+\def\Tun@enc{T1}
+\ifx\encodingdefault\Tun@enc\@Tunotrue\fi
+\let\Tun@enc\undefined
+
+% Encoding: OT1
+ \DeclareFontFamily{OT1}{llcmss}{\hyphenchar\font45}
+ \DeclareFontShape{OT1}{llcmss}{m}{n}{<-> llcmss8}{}
+ \DeclareFontShape{OT1}{llcmss}{m}{sl}{<-> llcmssi8}{}
+ \DeclareFontShape{OT1}{llcmss}{m}{it}{<->ssub* llcmss/m/sl}{}
+ \DeclareFontShape{OT1}{llcmss}{bx}{n}{<-> llcmssb8}{}
+ \DeclareFontShape{OT1}{llcmss}{bx}{sl}{<-> llcmsso8}{}
+ \DeclareFontShape{OT1}{llcmss}{bx}{it}{<->ssub* llcmss/bx/sl}{}
+%
+ \DeclareFontShape{OT1}{llcmss}{m}{ui}{<-> ssub* cmr/m/n}{}
+ \DeclareFontShape{OT1}{llcmss}{bx}{ui}{<->ssub* cmr/m/n}{}
+%
+ \DeclareFontFamily{OT1}{llcmtt}{\hyphenchar\font\m@ne}
+ \DeclareFontShape{OT1}{llcmtt}{m}{n}{<-> [1.25]cmtt8}{}
+ \DeclareFontShape{OT1}{llcmtt}{m}{it}{<-> [1.25]cmti8}{}
+ \DeclareFontShape{OT1}{llcmtt}{m}{sl}{<-> ssub* llcmtt/m/it}{}
+
+% Encoding: T1
+\if@Tuno
+ \DeclareFontFamily{T1}{llcmss}{\hyphenchar\font45}
+ \DeclareFontShape{T1}{llcmss}{m}{n}{<-> leclq8}{}
+ \DeclareFontShape{T1}{llcmss}{m}{sl}{<-> lecli8}{}
+ \DeclareFontShape{T1}{llcmss}{m}{it}{<->ssub* llcmss/m/sl}{}
+ \DeclareFontShape{T1}{llcmss}{bx}{n}{<-> leclb8}{}
+ \DeclareFontShape{T1}{llcmss}{bx}{sl}{<-> leclo8}{}
+ \DeclareFontShape{T1}{llcmss}{bx}{it}{<->ssub*llcmss/bx/sl}{}
+%
+\DeclareFontShape{T1}{llcmss}{m}{ui}{<->ssub*llcmss/m/n}{}
+\DeclareFontShape{T1}{llcmss}{bx}{ui}{<->ssub*llcmss/m/n}{}
+%
+ \DeclareFontFamily{T1}{llcmtt}{\hyphenchar\font\m@ne}
+ \DeclareFontShape{T1}{llcmtt}{m}{n}{<-> [1.25]ecltt8}{}
+ \DeclareFontShape{T1}{llcmtt}{m}{it}{<-> [1.25]ecit0800}{}
+ \DeclareFontShape{T1}{llcmtt}{m}{sl}{<-> ssub* llcmtt/m/it}{}
+\fi
+
+% Encoding: TS1
+\if@TSuno
+ \DeclareFontFamily{TS1}{llcmss}{\hyphenchar\font45}
+ \DeclareFontShape{TS1}{llcmss}{m}{n}{<-> ltclq8}{}
+ \DeclareFontShape{TS1}{llcmss}{m}{sl}{<-> ltcli8}{}
+ \DeclareFontShape{TS1}{llcmss}{m}{it}{<-> ssub*llcmss/m/sl}{}
+ \DeclareFontShape{TS1}{llcmss}{bx}{n}{<-> ltclb8}{}
+ \DeclareFontShape{TS1}{llcmss}{bx}{sl}{<-> ltclo8}{}
+ \DeclareFontShape{TS1}{llcmss}{bx}{it}{<-> ssub*llcmss/bx/sl}{}
+%
+\DeclareFontShape{TS1}{llcmss}{m}{ui}{<-> ssub*llcmss/m/n}{}
+\DeclareFontShape{TS1}{llcmss}{bx}{ui}{<-> ssub*llcmss/m/n}{}
+\fi
+
+% Defaults
+
+\def\rmdefault{llcmss} % no roman
+\def\sfdefault{llcmss}
+\def\ttdefault{llcmtt}
+\def\itdefault{sl}
+\def\sldefault{sl}
+\def\bfdefault{bx}
+
+
+% Math encodings
+
+% Encoding OML
+
+\DeclareFontFamily{OML}{llcmm}{\skewchar\font'177}
+\DeclareFontShape{OML}{llcmm}{m}{it}{<-> lcmmi8}{}
+\DeclareFontShape{OML}{llcmm}{bx}{it}{<-> lcmmib8}{}
+
+\DeclareFontFamily{OML}{llcmss}{}
+\DeclareFontShape{OML}{llcmss}{m}{n}{<-> ssub*llcmm/m/it}{}
+
+% Encoding: OMS
+
+\DeclareFontFamily{OMS}{llcmsy}{\skewchar\font'60}
+\DeclareFontShape{OMS}{llcmsy}{m}{n}{<-> lcmsy8}{}
+\DeclareFontShape{OMS}{llcmsy}{bx}{n}{<-> lcmbsy8}{}
+
+\DeclareFontFamily{OMS}{llcmss}{\skewchar\font'60}
+\DeclareFontShape{OMS}{llcmss}{m}{n}{<->ssub*llcmsy/m/n}{}
+
+% Encoding: OMX
+
+\DeclareFontFamily{OMX}{llcmex}{}
+\DeclareFontShape{OMX}{llcmex}{m}{n}{<-> lcmex8}{}
+
+
+% Encoding: U for AMS fonts
+
+% Both amsmath and amssymb load amsfonts; the latter may be loaded by itself.
+
+\@ifpackageloaded{amsfonts}{%
+\DeclareFontFamily{U}{msa}{}% already defined in amsfonts
+\DeclareFontShape{U}{msa}{m}{n}{<-> lmsam8}{}
+\DeclareFontShape{U}{msa}{bx}{n}{<-> ssub* msa/m/n}{}
+\DeclareFontFamily{U}{msb}{}% already defined in amsfonts
+\DeclareFontShape{U}{msb}{m}{n}{<-> lmsbm8}{}
+\DeclareFontShape{U}{msb}{bx}{n}{<-> ssub* msb/m/n}{}
+\begingroup\catcode`\"=12\relax
+\xdef\Join{\mathrel{\mathchar"0\hexnumber@\symAMSb 6F\mkern-15.6mu%
+ \mathchar"0\hexnumber@\symAMSb 6E}}
+\endgroup
+}
+
+
+% Optional LaTeX Symbols
+
+\if@lasy
+\DeclareFontFamily{U}{lllasy}{}
+\DeclareFontShape{U}{lllasy}{m}{n}{<-> llasy8}{}
+\DeclareFontShape{U}{lllasy}{b}{n}{<-> llasyb8}{}
+\fi
+
+
+% Math declarations
+
+\DeclareMathAlphabet{\mathbf}{OT1}{llcmss}{bx}{n}
+\DeclareMathAlphabet{\mathit}{OT1}{llcmss}{m}{sl}
+\DeclareMathAlphabet{\mathtt}{OT1}{llcmtt}{m}{n}
+
+\SetMathAlphabet\mathsf{bold}{OT1}{llcmss}{bx}{n}
+\SetMathAlphabet\mathit{bold}{OT1}{llcmss}{bx}{sl}
+
+\DeclareSymbolFont{operators}{OT1}{llcmss}{m}{n}
+\DeclareSymbolFont{letters}{OML}{llcmm}{m}{it}
+\DeclareSymbolFont{symbols}{OMS}{llcmsy}{m}{n}
+\DeclareSymbolFont{largesymbols}{OMX}{llcmex}{m}{n}
+
+\DeclareSymbolFontAlphabet{\mathrm} {operators}
+\DeclareSymbolFontAlphabet{\mathnormal}{letters}
+\DeclareSymbolFontAlphabet{\mathcal} {symbols}
+\DeclareSymbolFontAlphabet{\mathsf} {operators}
+
+\SetSymbolFont{operators}{normal}{OT1}{llcmss}{m}{n}
+\SetSymbolFont{letters}{normal}{OML}{llcmm}{m}{it}
+\SetSymbolFont{symbols}{normal}{OMS}{llcmsy}{m}{n}
+\SetSymbolFont{largesymbols}{normal}{OMX}{llcmex}{m}{n}
+
+\SetSymbolFont{operators}{bold}{OT1}{llcmss} {bx}{n}
+\SetSymbolFont{letters} {bold}{OML}{llcmm} {bx}{it}
+\SetSymbolFont{symbols} {bold}{OMS}{llcmsy}{bx}{n}
+\SetSymbolFont{largesymbols}{bold}{OMX}{llcmex}{m}{n} % no bold!
+
+
+
+
+
+\iffalse
+%%% Mah!
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+\fi
+
+\endinput \ No newline at end of file
diff --git a/Master/tlpkg/bin/ctan2tds b/Master/tlpkg/bin/ctan2tds
index 65ba6849981..93fdfdfa13e 100755
--- a/Master/tlpkg/bin/ctan2tds
+++ b/Master/tlpkg/bin/ctan2tds
@@ -193,6 +193,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
'kuvio', "die 'skipping, nonfree license'",
'latex', "&MAKEcopy", # we use latex-tds/base.zip
'latex-tds', "&MAKEcopy", # we use latex-tds/source.zip
+ 'latex-veryshortguide', "die 'skipping, nosell license'",
'latexmp', "&MAKEflatten",
'leawood', "&MAKEflatten",
'lettre', "&MAKEflatten",
@@ -217,7 +218,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
'ltt', "&MAKEltt",
'ltxbase', "&MAKEbase",
'ltxmisc', "die 'too complicated, sorry'",
- 'lxfonts', "die 'talking with claudio 18jan08'",
+ 'lxfonts', "&MAKEcopy",
'lucida', "&MAKElucida",
'makedtx', "&MAKEflatten",
'makor', "&MAKEbase",
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index f59ff84a468..02d751ee4d7 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -109,7 +109,7 @@ my @WorkingTLP = qw(
lshort-japanese lshort-korean lshort-mongolian
lshort-polish lshort-portuguese lshort-slovak
lshort-spanish lshort-thai lshort-turkish lshort-ukr
- lshort-vietnamese ltablex ltabptch ltxindex ltxmisc
+ lshort-vietnamese ltablex ltabptch ltxindex ltxmisc lxfonts
mafr magyar mailing makebox makecell makecirc makeglos
makeplot maple marginnote marvosym mathdots mathexam
mathmode maybemath
diff --git a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
index 70df2ac3a31..c32a97ac37a 100644
--- a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
@@ -99,6 +99,7 @@ depend lfb
depend libertine
depend linearA
depend logic
+depend lxfonts
depend ly1
depend marigold
depend mathdesign
diff --git a/Master/tlpkg/tlpsrc/lxfonts.tlpsrc b/Master/tlpkg/tlpsrc/lxfonts.tlpsrc
new file mode 100644
index 00000000000..fdbb0ca1baf
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/lxfonts.tlpsrc
@@ -0,0 +1,3 @@
+name lxfonts
+category Package
+execute addMixedMap lxfonts.map