summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/fonts/concmath-otf/README.md52
-rw-r--r--Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.ltx469
-rw-r--r--Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.pdfbin0 -> 123630 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.ltx520
-rw-r--r--Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.pdfbin0 -> 1779246 bytes
-rw-r--r--Master/texmf-dist/fonts/opentype/public/concmath-otf/Concrete-Math.otfbin0 -> 216764 bytes
-rw-r--r--Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty179
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/concmath-otf.tlpsrc0
10 files changed, 1222 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/fonts/concmath-otf/README.md b/Master/texmf-dist/doc/fonts/concmath-otf/README.md
new file mode 100644
index 00000000000..e425fcf8421
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/concmath-otf/README.md
@@ -0,0 +1,52 @@
+Concmath-otf package
+====================
+
+## Description
+
+`Concrete-Math.otf’ is an Opentype version of the Concrete Math font
+created by Ulrik Vieth in MetaFont. `concmath-otf.sty’ is a replacement
+for the original `concmath.sty’ package.
+
+## Contents
+
+* Concrete-Math.otf OpenType Math font
+* concmath-otf.sty LaTeX style file: replaces concmath.sty for LuaTeX/XeTeX
+* concmath-otf.pdf Documentation in PDF format
+* concmath-otf.ltx LaTeX source of concmath-otf.pdf
+* unimath-concrete.pdf Modified version of unimath-symbols.pdf
+ showing available Concrete-Math symbols compared to
+ LatinModern, STIXTwo, TeXGyrePagella and DejaVu.
+* unimath-concmath.ltx LaTeX source of unimath-concrete.pdf
+* README.md (this file)
+
+## Installation
+
+This package is meant to be installed automatically by TeXLive, MikTeX, etc.
+Otherwise, the package can be installed under TEXMFHOME or TEXMFLOCAL, f.i.
+Concrete-Math.otf in directory texmf-local/fonts/opentype/public/concmath-otf/
+and concmath-otf.sty in directory texmf-local/tex/latex/concmath-otf/.
+Documentation files and their sources can go to directory
+texmf-local/doc/fonts/public/concmath-otf/
+
+Don't forget to rebuild the file database (mktexlsr or so) if you install
+under TEXMFLOCAL.
+
+Finally, make the system font database aware of the Concrete-Math font
+(fontconfig under Linux).
+
+## License
+
+* The font `Concrete-Math.otf’ is licensed under the SIL Open Font License,
+Version 1.1. This license is available with a FAQ at:
+http://scripts.sil.org/OFL
+* The other files are distributed under the terms of the LaTeX Project
+Public License from CTAN archives in directory macros/latex/base/lppl.txt.
+Either version 1.3 or, at your option, any later version.
+
+## Changes
+
+* First public version: 0.20
+
+---
+Copyright 2022- Daniel Flipo
+E-mail: daniel (dot) flipo (at) free (dot) fr
diff --git a/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.ltx b/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.ltx
new file mode 100644
index 00000000000..607749b91fd
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.ltx
@@ -0,0 +1,469 @@
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{pdfstandard=A-2b, lang=en-GB}
+\documentclass[a4paper,12pt]{scrartcl}
+
+\usepackage{amsmath, array, varioref}
+\usepackage[british]{babel}
+\usepackage{concmath-otf}
+\usepackage{subfig}
+\captionsetup[subtable]{position=top}
+\usepackage{realscripts}
+\usepackage{microtype}
+\usepackage{hyperref}
+\hypersetup{pdftitle={Concrete-Math Opentype User’s Guide},
+ pdfauthor={Daniel FLIPO},
+ bookmarksopen,
+ colorlinks
+ }
+\newcommand*{\hlabel}[1]{\phantomsection\label{#1}}
+
+\newcommand*{\CCM}{\pkg{concmath-otf}}
+\newcommand*{\pkg}[1]{\texttt{#1}}
+\newcommand*{\file}[1]{\texttt{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}}
+\newcommand*{\cmd}[1]{\texttt{\textbackslash #1}}\newcommand*{\showtchar}[1]{\cmd{#1}~\csname #1\endcsname}
+\newcommand*{\showmchar}[1]{\cmd{#1}~$(\csname #1\endcsname)$}
+\newcommand*{\showmchardollar}[1]{\texttt{\$\cmd{#1}\$}~$(\csname #1\endcsname)$}
+
+\title{Concrete Math font, OTF version}
+\author{Daniel Flipo \\ \texttt{daniel.flipo@free.fr}}
+
+\newcommand*{\version}{0.20}
+
+\begin{document}
+\maketitle
+
+\section{What is \CCM{}?}
+
+The \CCM{} package offers an Opentype version of the Concrete Math font
+created by Ulrik Vieth in MetaFont. \file{concmath-otf.sty} is a replacement
+for the original \file{concmath.sty} package.
+
+It requires LuaTeX or XeTeX as engine and the \pkg{unicode-math} package%
+\footnote{Please read the documentation \file{unicode-math.pdf}.}.
+
+Please note that the current version (\version) is \emph{experimental,
+do expect metrics and glyphs to change} until version 1.0 is reached.
+Comments, suggestions and bug reports are welcome!
+
+\section{Usage}
+
+\subsection{Calling \cmd{setmathfont}}
+
+A basic call for \CCM{} would be:
+\begin{verbatim}
+\usepackage{unicode-math}
+\setmathfont{Concrete-Math.otf} % Call by file name or
+\setmathfont{Concrete Math} % Call by font name
+\end{verbatim}
+this loads \CCM{} as math font with the default options, see
+subsections~\vref{ssection-um}, \vref{ssection-cv} and~\vref{ssection-ss}
+for customisation.
+
+\enlargethispage*{\baselineskip}
+Please note that the three sets of text fonts have to be chosen separately,
+f.i. if you want the Concrete text fonts%
+\footnote{They are part of the \pkg{cm-unicode} package.}
+as Roman font:\\[.25\baselineskip]
+\verb+\setmainfont{cmunorm.otf} +\\
+\verb+ [BoldFont = cmunobx.otf ,+\\
+\verb+ ItalicFont = cmunoti.otf ,+\\
+\verb+ BoldItalicFont = cmunobi.otf ]+\\[.25\baselineskip]
+otherwise you would get Latin Modern for text fonts (rm, sf and tt).
+
+\subsection{Calling \pkg{concmat-otf.sty}}
+
+A (recommended) alternative is:\\[.5\baselineskip]
+\verb+\usepackage[ +\textit{options}
+\footnote{Possible \textit{options} are \opt{loose}, \opt{no-text}, \opt{Scale=}
+ or any of the options described in sections \ref{ssection-um},
+ \ref{ssection-cv} and \ref{ssection-ss}.}%
+\verb+ ]{concmath-otf}+\\[.5\baselineskip]
+it loads \pkg{unicode-math} with the default options, sets Concrete-Math
+as Math font and Concrete Text fonts as Roman fonts
+(families \textit{sf} and \textit{tt} left unchanged) but does a bit more:
+\begin{enumerate}
+\item it checks at \verb+\begin{document}+ if packages \pkg{amssymb} or
+ \pkg{latexsym} are loaded and issues warnings in case they are;
+\item it provides aliases for glyphs named differently in Unicode, so that
+ \pkg{latexsym} or AMS names are also available;
+\item it reduces spacing in math mode: \cmd{thinmuskip}, \cmd{medmuskip}
+ and \cmd{thickmuskip} are reduced as in \file{fourier.sty}.
+% \verb+\thinmuskip=2mu+,\\
+% \verb+\medmuskip=2.5mu plus 1mu minus 2.5mu+,\\
+% \verb+\thickmuskip=3.5mu plus 2.5mu+.\\
+ The option \opt{loose} disables these settings.
+\end{enumerate}
+
+Apart from the \opt{loose} option mentionned above, \pkg{concmath-otf.sty}
+provides an option \opt{no-text} to be used for loading the \CCM{} font
+together with roman text fonts other than Concrete.
+
+\section{What is provided?}
+
+\CCM{} provides all glyphs available in the \pkg{concmath}, \pkg{amssymb} and
+\pkg{latexsym} packages and more.
+Therefore, these two packages \emph{should not} be loaded as they might
+override \CCM{} glyphs.
+
+Sans-serif, typewriter glyphs are not supplied.
+A full list of available glyphs is shown in file \file{unimath-concrete.pdf}.
+
+See in section~\vref{ssec-math-alphabets} how to choose
+from other Math fonts for these styles.
+
+\subsection{Upright or slanted?}
+\label{ssection-um}
+
+Package \pkg{unicode-math} follows \TeX{} conventions for Latin and Greek
+letters: in math mode, the default option (\opt{math-style=TeX}) prints
+Latin letters $a$…$z$ $A$…$Z$ and lowercase greek letters $\alpha$…$\omega$
+slanted (italic) while uppercase greek letters $\Alpha \Beta \Gamma$…$\Omega$
+are printed upright.
+This can be changed by option \opt{math-style} as shown in
+table~\vref{math-style}.
+
+\begin{table}[ht]
+ \centering
+ \caption{Effects of the \opt{math-style} package option.}
+ \hlabel{math-style}
+ \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+ \hline
+ \rmfamily Package option & Latin & Greek \\
+ \hline
+ math-style=ISO & $(a,z,B,X)$ & $\symit{(\alpha,\beta,\Gamma,\Xi)}$ \\
+ math-style=TeX & $(a,z,B,X)$ & $(\symit\alpha,\symit\beta,\symup\Gamma,\symup\Xi)$ \\
+ math-style=french & $(a,z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
+ math-style=upright & $(\symup a,\symup z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
+ \hline
+ \end{tabular}
+\end{table}
+
+Bold letters are printed upright except lowercase Greek letters
+which are slanted (the default option is \opt{bold-style=TeX}). This can be
+changed by option \opt{bold-style} as shown in table~\vref{bold-style}.
+
+\begin{table}[ht]
+ \centering
+ \caption{Effects of the \opt{bold-style} package option.}
+ \hlabel{bold-style}
+ \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+ \hline
+ \rmfamily Package option & Latin & Greek \\
+ \hline
+ bold-style=ISO & $(\symbfit a, \symbfit z, \symbfit B, \symbfit X)$ & $(\symbfit\alpha, \symbfit\beta, \symbfit\Gamma, \symbfit\Xi)$ \\
+ bold-style=TeX & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfit\alpha, \symbfit\beta,\symbfup \Gamma,\symbfup \Xi)$ \\
+ bold-style=upright & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfup \alpha,\symbfup \beta,\symbfup \Gamma,\symbfup \Xi)$ \\
+ \hline
+ \end{tabular}
+\end{table}
+
+Other possible customisation: $\nabla$ is printed upright and $\partial$ is
+printed slanted by default, but \opt{nabla=italic} and
+\opt{partial=upright} can change this.
+
+All these options are offered by the \pkg{unicode-math} package but they can
+be added to the \cmd{setmathfont} call%
+\footnote{IMHO it is easier to add \emph{all options} to the \cmd{setmathfont}
+ command.}, for example:
+
+\verb+\setmathfont{Concrete-Math.otf}[math-style=french,partial=upright]+\\
+will print for the code
+\begin{verbatim}
+\[ \frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma
+ + \symbf{\beta}\symbf{M} \]
+\end{verbatim}
+\setmathfont{Concrete-Math.otf}[math-style=french,partial=upright]
+\[\frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma +
+ \symbf{\beta}\symbf{M} \]
+while the default settings would print
+\setmathfont{Concrete-Math.otf}[math-style=TeX,partial=italic]
+\[\frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma +
+ \symbf{\beta}\symbf{M} \]
+
+Both shapes remain available anytime: \verb+$\uppi,\itpi$+
+prints $\uppi, \itpi$.
+
+If your text editor is able to handle greek letters or math symbols, they can
+be entered in the code instead control sequences (i.e.
+$\symup{α}$, $\symup{β}$, $\symup{Γ}$,… for \cmd{alpha}, \cmd{beta},
+\cmd{Gamma},…).
+
+\subsection{Character variants}
+\label{ssection-cv}
+
+\CCM{} provides ten ``Character Variants’’ options, listed on
+table~\vref{cv}, to choose between different glyphs for Greek characters
+and some others.
+
+\begin{table}[ht]
+ \centering
+ \caption{Character variants.}
+ \hlabel{cv}
+ \begin{tabular}{@{}>{\ttfamily}lccl@{}}
+ \hline
+ & Default & Variant & Name\\
+ \hline
+ cv01 & $\hslash$ & $\mithbar$ & \cmd{hslash} \\
+ cv02 & $\emptyset$ & $\varemptyset$ & \cmd{emptyset} \\
+ cv03 & $\epsilon$ & $\varepsilon$ & \cmd{epsilon} \\
+ cv04 & $\kappa$ & $\varkappa$ & \cmd{kappa} \\
+ cv05 & $\pi$ & $\varpi$ & \cmd{pi} \\
+ cv06 & $\phi$ & $\varphi$ & \cmd{phi} \\
+ cv07 & $\rho$ & $\varrho$ & \cmd{rho} \\
+ cv08 & $\sigma$ & $\varsigma$ & \cmd{sigma} \\
+ cv09 & $\theta$ & $\vartheta$ & \cmd{theta} \\
+ cv10 & $\Theta$ & $\varTheta$ & \cmd{Theta}\\
+ \hline
+ \end{tabular}
+\end{table}
+
+For instance, to get \cmd{epsilon} and \cmd{phi} typeset as $\varepsilon$
+and $\varphi$ instead of $\epsilon$ and $\phi$, you can add option
+\verb+CharacterVariant={3,6}+ to the \cmd{setmathfont} call:
+\begin{verbatim}
+\setmathfont{Concrete-Math.otf}[CharacterVariant={3,6}]
+\end{verbatim}
+
+This works for all shapes and weights of these characters: f.i.\ %
+\verb+$\symbf{\epsilon}$+, \verb+$\symbf{\phi}$+ are output as
+\setmathfont{Concrete-Math.otf}[CharacterVariant={3,6}]$\symbf{\epsilon}$,
+$\symbf{\phi}$ instead of
+\setmathfont{Concrete-Math.otf}$\symbf{\epsilon}$, $\symbf{\phi}$.
+
+Similarly with \opt{math-style=french}, \verb+\epsilon+ and \verb+\phi+
+are output as $\symup{\varepsilon}$ and $\symup{\varphi}$ (upright).
+
+Please note that curly braces are mandatory whenever more than one
+``Character Variant’’ is selected.
+
+Note: \pkg{unicode-math} defines \cmd{hbar} as
+\cmd{hslash} (U+210F) while \pkg{amsmath} provides two different glyphs
+(italic h with horizontal or diagonal stroke).\\
+\pkg{concmath-otf} follows \pkg{unicode-math}; the italic h with horizontal
+stroke can be printed using \cmd{hslash} or \cmd{hbar} together with character
+variant \texttt{cv01} or with \cmd{mithbar} (replacement for AMS’ command
+\cmd{hbar}).
+
+
+\subsection{Stylistic sets}
+\label{ssection-ss}
+
+\CCM{} provides four ``Stylistic Sets’’ options to choose between different
+glyphs for families of mathematical symbols.
+
+\verb+StylisticSet=4+, alias%
+\footnote{These \texttt{Style} aliases are provided by \file{concmath-otf.sty}.}
+\verb+Style=leqslant+, converts (large) inequalites into their slanted
+variants as shown by table~\vref{ss04}.
+
+\verb+StylisticSet=5+, alias \verb+Style=smaller+, converts some symbols into
+their smaller variants as shown by table~\vref{ss05}.
+\begin{table}[ht]
+ \centering
+ \caption{Stylistic Sets 4 and 5}
+ \subfloat[\texttt{Style=leqslant\quad (+ss04)}]{\hlabel{ss04}%
+ \begin{tabular}[t]{@{}lcc@{}}
+ \hline
+ Command & Default & Variant \\
+ \hline
+ \cmd{leq} & $\leq$ & $\leqslant$ \\
+ \cmd{geq} & $\geq$ & $\geqslant$ \\
+ \cmd{nleq} & $\nleq$ & $\nleqslant$ \\
+ \cmd{ngeq} & $\ngeq$ & $\ngeqslant$ \\
+ \cmd{eqless} & $\eqless$ & $\eqslantless$ \\
+ \cmd{eqgtr} & $\eqgtr$ & $\eqslantgtr$ \\
+ \cmd{lesseqgtr} & $\lesseqgtr$ & $\lesseqslantgtr$ \\
+ \cmd{gtreqless} & $\gtreqless$ & $\gtreqslantless$ \\
+ \cmd{lesseqqgtr} & $\lesseqqgtr$ & $\lesseqqslantgtr$ \\
+ \cmd{gtreqqless} & $\gtreqqless$ & $\gtreqqslantless$ \\
+ \hline
+ \end{tabular}
+ }\hspace{10mm} % eof subfloat
+ \subfloat[\texttt{Style=smaller\quad (+ss05)}]{\hlabel{ss05}%
+ \begin{tabular}[t]{@{}lcc@{}}
+ \hline
+ Command & Default & Variant \\
+ \hline
+ \cmd{mid} & $\mid$ & $\shortmid$ \\
+ \cmd{nmid} & $\nmid$ & $\nshortmid$ \\
+ \cmd{parallel} & $\parallel$ & $\shortparallel$ \\
+ \cmd{nparallel} & $\nparallel$ & $\nshortparallel$ \\
+ \hline
+ \end{tabular}
+ }% eof subfloat
+\end{table}
+
+\verb+StylisticSet=6+, alias \verb+Style=subsetneq+, converts some inclusion
+symbols as shown by table~\vref{ss06}.
+\begin{table}[ht]
+ \centering
+ \caption{Stylistic Sets 6}\hlabel{ss06}
+ \begin{tabular}[t]{@{}lcc@{}}
+ \hline
+ Command & Default & Variant \\
+ \hline
+ \cmd{subsetneq} & $\subsetneq$ & $\varsubsetneq$ \\
+ \cmd{supsetneq} & $\supsetneq$ & $\varsupsetneq$ \\
+ \cmd{subsetneqq} & $\subsetneqq$ & $\varsubsetneqq$ \\
+ \cmd{supsetneqq} & $\supsetneqq$ & $\varsupsetneqq$ \\
+ \hline
+ \end{tabular}
+\end{table}
+
+To enable Stylistic Sets 4 and 6 for \CCM{}, you should enter
+\begin{verbatim}
+\setmathfont{Concrete-Math.otf}[StylisticSet={4,6}] or
+\usepackage[Style={leqslant,subsetneq}]{concmath-otf}
+\end{verbatim}
+then, \verb+\[x\leq y \quad A \subsetneq B\]+
+will print as\\
+\setmathfont{Concrete-Math.otf}[StylisticSet={4,6}]
+$x\leq y \quad A \subsetneq B$\qquad
+instead of\qquad
+\setmathfont{Concrete-Math.otf}%
+$x\leq y \quad A \subsetneq B$
+
+\subsection{Standard \LaTeX{} math commands}
+\label{ssec-math-commands}
+
+All standard \LaTeX{} math commands, all \pkg{amssymb} commands and all
+\pkg{latexsym} commands are supported by \CCM{}, for some of them loading
+\pkg{concmath-otf.sty} is required.
+
+Various wide acccents are also supported:
+\begin{itemize}
+\item \cmd{widehat} and \cmd{widetilde}
+\[\widehat{x}\; \widehat{xx} \;\widehat{xxx} \;\widehat{xxxx}\;
+ \widehat{xxxxx} \;\widehat{xxxxxx} \;\widetilde{x}\; \widetilde{xx}\;
+ \widetilde{xxx} \;\widetilde{xxxx} \;\widetilde{xxxxx}\;
+ \widetilde{xxxxxx}\]
+
+\item \cmd{overline} and \cmd{underline}
+ \[\overline{x}\quad \overline{xy}\quad \overline{xyz}\quad
+ \overline{A\cup B}\quad \overline{A\cup (B\cap C)\cup D}\quad
+ \underline{m+n+p}\]
+
+\item \cmd{wideoverbar}:\quad
+ $\wideoverbar{x}\quad \wideoverbar{xy}\quad \wideoverbar{xyz}$
+
+\item \cmd{overparen} and \cmd{underparen}
+ \[\overparen{x}\quad \overparen{xy}\quad \overparen{xyz}\quad
+ \mathring{\overparen{A\cup B}}\quad
+ \overparen{A\cup (B\cap C)\cup D}^{\smwhtcircle}\quad
+ \overparen{x+y}^{2}\quad \overparen{a+b+...+z}^{26}\]
+
+\[\underparen{x}\quad \underparen{xz} \quad \underparen{xyz}
+ \quad \underparen{x+z}_{2}\quad \underparen{a+b+...+z}_{26}\]
+
+\item \cmd{overbrace} and \cmd{underbrace}
+ \[\overbrace{a}\quad \overbrace{ab}\quad \overbrace{abc}\quad
+ \overbrace{abcd}\quad \overbrace{abcde}\quad
+ \overbrace{a+b+c}^{3}\quad \overbrace{ a+b+. . . +z }^{26}\]
+
+\[\underbrace{a}\quad\underbrace{ab}\quad\underbrace{abc}\quad
+ \underbrace{abcd}\quad \underbrace{abcde}\quad
+ \underbrace{a+b+c}_{3} \quad \underbrace{ a+b+...+z }_{26}\]
+
+\item \cmd{overrightarrow} and \cmd{overleftarrow}
+ \[\overrightarrow{v}\quad \overrightarrow{M}\quad \overrightarrow{vv}
+ \quad \overrightarrow{AB}\quad \overrightarrow{ABC}
+ \quad \overrightarrow{ABCD} \quad \overrightarrow{ABCDEFGH}.
+\]
+
+\[\overleftarrow{v}\quad \overleftarrow{M}\quad \overleftarrow{vv}
+ \quad \overleftarrow{AB}\quad \overleftarrow{ABC}
+ \quad \overleftarrow{ABCD} \quad \overleftarrow{ABCDEFGH}\]
+
+\item Finally \cmd{widearc} and \cmd{overrightarc} (loading
+ \pkg{concmath-otf.sty} is required)
+\[\widearc{AMB}\quad \overrightarc{AMB}\]
+\end{itemize}
+
+\subsection{Mathematical alphabets}
+\label{ssec-math-alphabets}
+
+\begin{itemize}
+\item All Latin and Greek characters are available in italic, upright, bold
+ and bold italic via the \verb+\symit{}+, \verb+\symup{}+, \verb+\symbf{}+
+ and \verb+\symbfit{}+ commands.
+
+\item Calligraphic alphabet (\cmd{symscr} or \cmd{symcal} or
+ \cmd{mathcal} command), uppercase:
+
+ $\symscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
+
+\item Blackboard-bold alphabet (\cmd{symbb} or \cmd{mathbb} command),
+ uppercase only except lowercase \verb+\Bbbk+ (AMS)
+
+ $\symbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\quad \Bbbk$
+
+\item Fraktur alphabet, borrowed from Latin Modern
+
+ $\symfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$
+
+ but this can overwritten, i.e.
+\begin{verbatim}
+\setmathfont{Asana-Math.otf}[range=frak,Scale=MatchUppercase]
+$\symfrak{ABCDEFGHIJKL...XYZ abcdefghijkl...xyz}$
+\end{verbatim}
+\setmathfont{Asana-Math.otf}[range=frak,Scale=MatchUppercase]
+$\symfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$
+
+\item Sans serif and Typewriter alphabets have to be imported, i.e.
+\begin{verbatim}
+\setmathfont{STIXTwoMath-Regular.otf}[range={sfup,sfit},
+ Scale=MatchUppercase]
+$\symsfup{ABCD...klm}\quad\symsfit{NOPQ...xyz}$
+\end{verbatim}
+\setmathfont{STIXTwoMath-Regular.otf}[range={sfup,sfit},Scale=MatchUppercase]
+$\symsfup{ABCDEFGHIJKLM abcdefghijklm}\quad
+ \symsfit{NOPQRSTUVWXYZ nopqrstuvwxyz}$
+
+\begin{verbatim}
+\setmathfont{STIXTwoMath-Regular.otf}[range=tt,Scale=MatchUppercase]
+$\symtt{ABCDE...XYZ abcde...xyz}$
+\end{verbatim}
+\setmathfont{STIXTwoMath-Regular.otf}[range=tt,Scale=MatchUppercase]
+$\symtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$
+\end{itemize}
+
+\subsection{Missing symbols}
+
+\CCM{} does not aim at being as complete as \file{STIXTwoMath-Regular} or
+\file{Cambria}, the current glyph coverage compares with TeXGyre Math fonts.
+In case some symbols do not show up in the output file, you will see warnings
+in the \file{.log} file, for instance:
+
+\setmathfont{STIXTwoMath-Regular.otf}[range={"2964}]
+\texttt{Missing character: There is no }$⥤$%
+\texttt{ (U+2964) in font ErewhonMath}
+
+Borrowing them from a more complete font, say \file{Asana-Math},
+is a possible workaround:
+\verb+\setmathfont{Asana-Math.otf}[range={"2964},Scale=1.02]+\\
+scaling is possible, multiple character ranges are separated with commas:\\
+\verb+\setmathfont{Asana-Math.otf}[range={"294A-"2951,"2964,"2ABB-"2ABE}]+
+
+Let’s mention \pkg{albatross}, a useful tool to find out the list of fonts
+providing a given glyph: f.i. type in a terminal ``\texttt{albatross U+2964}’’,
+see the manpage or \file{albatross-manual.pdf}.
+
+\section{Acknowledgements}
+
+The original Metafont glyphs have been converted first to Type\,1 (pfa) using
+\pkg{mftrace} and \pkg{fontforge}. The \pkg{cm-unicode} package has also
+helped a lot while cleaning the glyphs.
+
+I am grateful to George Williams and his co-workers for providing and
+maintaining FontForge and to Ulrik Vieth for his illuminating paper published
+in TUGboat~2009 Volume~30 about Open Type Math.
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-engine: luatex
+%%% TeX-master: t
+%%% coding: utf-8
+%%% End:
diff --git a/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.pdf b/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.pdf
new file mode 100644
index 00000000000..b3dc858a5f7
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/concmath-otf/concmath-otf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.ltx b/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.ltx
new file mode 100644
index 00000000000..3ff439be4ad
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.ltx
@@ -0,0 +1,520 @@
+%%^^A%% unimath-symbols.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
+%%^^A%% Listing of Unicode mathematics symbols using a variety of fonts.
+
+% !TEX TS-program = LuaLaTeX
+
+%% Changes (df): XITS replaced by Erewhon, Fira replaced by Libertinus,
+%% Garamond added.
+%% Changes by David Carlisle: https://github.com/wspr/unicode-math/issues/570
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% SYMBOLS DEFINED BY UNICODE-MATH
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[final]{article}
+\makeatletter
+
+\usepackage{ragged2e,setspace,booktabs,catchfile,shortvrb,geometry,metalogo,textcomp,longtable,array,hyperref}
+
+\usepackage{ninecolors}
+\NineColors{saturation=high}
+
+\geometry{margin=24mm}
+\hypersetup{colorlinks,linkcolor=black}
+
+\def\cmd#1{\texttt{\textbackslash\expandafter\@gobble\string#1}}
+
+\usepackage{fontspec}
+\setmainfont{texgyrepagella}%
+ [
+ Extension = .otf ,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Ligatures=TeX,
+ Numbers={Lowercase,Monospaced},
+ ]
+\usepackage[math-style=literal,bold-style=literal]{unicode-math}
+
+\ExplSyntaxOn
+\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {c}
+
+\def\FINISH{}
+\newcount\Nfonts
+\def\defmathfont#1#2#3#4{
+ \Nfonts=\numexpr\Nfonts+1\relax
+ \tl_set:cn {L#1} {#4}
+ \newcounter{#1}
+ \setcounter{#1}{-1}
+ \setmathfont[version=#1,SizeFeatures={
+ {Size=-10, Colour=999999},
+ {Size=10-, Colour=#3}}]{#2}
+ \fontspec_set_fontface:cNnn {#1} \x {ItalicFont={},BoldFont={}} {#2}
+ \tl_gput_right:Nn \FINISH {
+ \refstepcounter{#1}\label{count:#1}
+ }
+}
+\ExplSyntaxOff
+
+\defmathfont{lm}{latinmodern-math.otf}{red5}{M}
+\defmathfont{stix}{STIXTwoMath-Regular.otf}{green5}{S}
+\defmathfont{concrete}{Concrete-Math.otf}{brown5}{C}
+\defmathfont{pagella}{texgyrepagella-math.otf}{cyan5}{P}
+\defmathfont{dejavu}{texgyredejavu-math.otf}{violet5}{D}
+\defmathfont{libertinus}{LibertinusMath-Regular.otf}{yellow5}{L}
+\defmathfont{garamond}{Garamond-Math.otf}{magenta5}{G}
+
+\def\INPUT{\input{unicode-math-table.tex}}
+\def\TABLE{%
+\par\noindent
+\setlength\tabcolsep{5pt}%
+\begin{longtable}[l]{@{}l *{\Nfonts}{c} lp{100pt}@{}}
+ \toprule
+ \textsc{usv} & \Llm & \Lstix & \Lconcrete & \Lpagella & \Ldejavu & \Llibertinus
+ & \Lgaramond & Macro & Description \\
+ \midrule \endhead
+ \INPUT\\
+ \bottomrule
+\end{longtable}
+}
+\makeatletter
+\def\USV#1{\footnotesize\scshape\MakeLowercase{u+\@gobble#1}}
+\makeatother
+\def\CMD#1{\footnotesize\cmd#1}
+\def\DESC#1{\vspace{-6pt}%
+ \begin{spacing}{0.5}
+ \RaggedRight\scriptsize #1%
+ \end{spacing}
+}
+
+\newcommand\SHOW[1]{%
+ \def\UnicodeMathSymbol##1##2##3##4{%
+ \def\1{#1}\def\2{##3}%
+ \ifx\1\2\PRINTLINE{##1}{##2}{##4}\fi
+ }%
+ \TABLE
+}
+\ExplSyntaxOn
+\def\PRINTLINE#1#2#3{
+ \def\tempa{
+ \USV{#1} &
+ \SYMB{#2}{lm}{#1} &
+% \SYMB{#2}{xits}{#1} &
+ \SYMB{#2}{stix}{#1} &
+ \SYMB{#2}{concrete}{#1} &
+ \SYMB{#2}{pagella}{#1} &
+ \SYMB{#2}{dejavu}{#1} &
+ \SYMB{#2}{libertinus}{#1} &
+ \SYMB{#2}{garamond}{#1} &
+ \CMD{#2}
+ \tl_if_in:NnT \PLAIN {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (p)} }
+ }
+ \tl_if_in:NnT \LTXSYM {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (l)} }
+ }
+ \tl_if_in:NnT \AMSSYMB {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (a)} }
+ }
+ &
+ \DESC{#3} \\
+ }%
+ \expandafter\tempa
+}
+\ExplSyntaxOff
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1$%
+ \fi
+}
+
+\def\PLAIN{\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega\varepsilon\vartheta\varpi\varrho\varsigma\varphi\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega
+%
+\aleph\hbar\imath\jmath\ell\wp\Re\Im\partial\infty\prime\emptyset\nabla\surd\top\bot\angle\triangle\forall\exists\neg\flat\natural\sharp\clubsuit\diamondsuit\heartsuit\spadesuit
+%
+\coprod\bigvee\bigwedge\biguplus\bigcap\bigcup\int\prod\sum\bigotimes\bigoplus\bigodot\oint\bigsqcup\smallint
+%
+\triangleleft\triangleright\bigtriangleup\bigtriangledown\wedge\land\vee\lor\cap\cup\ddagger\dagger\sqcap\sqcup\uplus\amalg\diamond\bullet\wr\div\odot\oslash\otimes\ominus\oplus\mp\pm\circ\bigcirc\setminus\cdot\ast\times\star\propto\sqsubseteq\sqsupseteq\parallel\mid\dashv\vdash\nearrow\searrow\nwarrow\swarrow\Leftrightarrow\Leftarrow\Rightarrow\neq\ne\lnot\leq\le\geq\ge\succ\prec\approx\succeq\preceq\supset\subset\supseteq\subseteq\in\ni\owns\gg\ll\not\leftrightarrow\leftarrow\gets\rightarrow\to\mapstochar\mapsto\sim\simeq\perp\equiv\asymp\smile\frown\leftharpoonup\leftharpoondown\rightharpoonup\rightharpoondown
+%
+\joinrel\relbar\Relbar\lhook\hookrightarrow\rhook\hookleftarrow\bowtie\models\Longrightarrow\longrightarrow\longleftarrow\Longleftarrow\longmapsto\longleftrightarrow\Longleftrightarrow\iff
+%
+\ldotp\cdotp\colon\ldots\cdots\vdots\ddots
+%
+\acute\grave\ddot\tilde\bar\breve\check\hat\vec\dot\widetilde\widehat
+%
+\overrightarrow\overleftarrow\overbrace\underbrace\lmoustache\rmoustache\lgroup\rgroup\arrowvert\Arrowvert\bracevert\Vert\vert\uparrow\downarrow\updownarrow\Uparrow\Downarrow\Updownarrow\backslash\rangle\langle\rbrace\lbrace\rceil\lceil\rfloor\lfloor\sqrt}
+
+
+\def\LTXSYM{
+\cong
+\notin
+\rightleftharpoons
+\doteq
+\mathring
+}
+
+\def\AMSSYMB{\boxdot\boxplus\boxtimes\square\blacksquare\centerdot\lozenge\blacklozenge\circlearrowright\circlearrowleft\leftrightharpoons\boxminus\Vdash\Vvdash\vDash\twoheadrightarrow\twoheadleftarrow\leftleftarrows\rightrightarrows\upuparrows\downdownarrows\upharpoonright\restriction\downharpoonright\upharpoonleft\downharpoonleft\rightarrowtail\leftarrowtail\leftrightarrows\rightleftarrows\Lsh\Rsh\rightsquigarrow\leftrightsquigarrow\looparrowleft\looparrowright\circeq\succsim\gtrsim\gtrapprox\multimap\therefore\because\doteqdot\Doteq\triangleq\precsim\lesssim\lessapprox\eqslantless\eqslantgtr\curlyeqprec\curlyeqsucc\preccurlyeq\leqq\leqslant\lessgtr\backprime\risingdotseq\fallingdotseq\succcurlyeq\geqq\geqslant\gtrless\vartriangleright\vartriangleleft\trianglerighteq\trianglelefteq\bigstar\between\blacktriangledown\blacktriangleright\blacktriangleleft\vartriangle\blacktriangle\triangledown\eqcirc\lesseqgtr\gtreqless\lesseqqgtr\gtreqqless\Rrightarrow\Lleftarrow\veebar\barwedge\doublebarwedge\measuredangle\sphericalangle\varpropto\smallsmile\smallfrown\Subset\Supset\Cup\doublecup\Cap\doublecap\curlywedge\curlyvee\leftthreetimes\rightthreetimes\subseteqq\supseteqq\bumpeq\Bumpeq\lll\llless\ggg\gggtr\circledS\pitchfork\dotplus\backsim\backsimeq\complement\intercal\circledcirc\circledast\circleddash\lvertneqq\gvertneqq\nleq\ngeq\nless\ngtr\nprec\nsucc\lneqq\gneqq\nleqslant\ngeqslant\lneq\gneq\npreceq\nsucceq\precnsim\succnsim\lnsim\gnsim\nleqq\ngeqq\precneqq\succneqq\precnapprox\succnapprox\lnapprox\gnapprox\nsim\ncong\diagup\diagdown\varsubsetneq\varsupsetneq\nsubseteqq\nsupseteqq\subsetneqq\supsetneqq\varsubsetneqq\varsupsetneqq\subsetneq\supsetneq\nsubseteq\nsupseteq\nparallel\nmid\nshortmid\nshortparallel\nvdash\nVdash\nvDash\nVDash\ntrianglerighteq\ntrianglelefteq\ntriangleleft\ntriangleright\nleftarrow\nrightarrow\nLeftarrow\nRightarrow\nLeftrightarrow\nleftrightarrow\divideontimes\varnothing\nexists\Finv\Game\eth\eqsim\beth\gimel\daleth\lessdot\gtrdot\ltimes\rtimes\shortmid\shortparallel\smallsetminus\thicksim\thickapprox\approxeq\succapprox\precapprox\curvearrowleft\curvearrowright\digamma\varkappa\Bbbk\hslash\backepsilon}
+
+\input{unicode-math.dtx}
+
+\begin{document}
+\MakeShortVerb\|
+\title{Symbols defined by \textsf{unicode-math}}
+\author{Will Robertson}
+\date{Modified (df) to show Concrete Math symbols}
+\maketitle
+
+This document uses the file \texttt{unicode-math-table.tex}
+to print every symbol defined by the \textsf{unicode-math}
+package.
+Use this document to find the command name or the Unicode glyph slot for
+a symbol that you wish to use.
+The following fonts are shown: (with approximate symbol counts)%
+\footnote{Be aware that 48 lowercase latin letters are missing in
+ \textit{Script} and \textit{BoldScript} shapes for both Latin Modern Math
+ and Concrete Math, compared to the other four fonts.}
+\begin{itemize}
+\item[\Llm] \mathversion{lm} $\mathup{Latin\ Modern\ Math}$ (\ref{count:lm})
+%\item[\Lxits] \mathversion{xits} $\mathup{XITS\ Math}$ (\ref{count:xits})
+\item[\Lstix] \mathversion{stix} $\mathup{STIX\ Two\ Math}$ (\ref{count:stix})
+\item[\Lconcrete] \mathversion{concrete} $\mathup{Concrete\ Math}$ (\ref{count:concrete})
+\item[\Lpagella] \mathversion{pagella} $\mathup{TeX\ Gyre\ Pagella\ Math}$ (\ref{count:pagella})
+\item[\Ldejavu] \mathversion{dejavu} $\mathup{DejaVu\ Math\ TeX\ Gyre}$ (\ref{count:dejavu})
+\item[\Llibertinus] \mathversion{libertinus} $\mathup{Libertinus\ Math}$ (\ref{count:libertinus})
+\item[\Lgaramond] \mathversion{garamond} $\mathup{Garamond\ Math}$ (\ref{count:garamond})
+\end{itemize}
+Symbols defined in Plain \TeX\ are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (p)}} after their macro name.
+\LaTeX\ follows Plain \TeX, but defines a handful more, indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (l)}}.
+Symbols defined in \textsf{amssymb} are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (a)}}.
+
+Note that this list of fonts is not intended to be exhaustive but I am happy to add new fonts by request if they are distributed in \TeX\ Live.\footnote{Only a single \TeX\ Gyre Math font is shown here by design as they all largely have the same symbol coverage.}
+
+\tableofcontents
+
+\clearpage
+\section{Opening symbols, \cmd\mathopen}
+\begingroup
+\def\sqrt{\sqrtsign{}}
+\def\cuberoot{\cuberootsign{}}
+\def\fourthroot{\fourthrootsign{}}
+\def\longdivision{\longdivisionsign{}}
+\SHOW\mathopen
+\endgroup
+
+\clearpage
+\section{Closing symbols, \cmd\mathclose}
+\SHOW\mathclose
+
+\section{Fence symbols, \cmd\mathfence}
+\SHOW\mathfence
+
+\clearpage
+\section{Punctuation symbols, \cmd\mathpunct}
+\SHOW\mathpunct
+
+\section{`Over' symbols, \cmd\mathover}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle #1{\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathover
+\endgroup
+
+\section{`Under' symbols, \cmd\mathunder}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle #1{\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathunder
+\endgroup
+
+\clearpage
+\section{Accents, \cmd\mathaccent}
+
+Note that accents will only be properly placed if used with an OpenType font with the necessary information.
+
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 \mitx$%
+ \fi
+}
+\SHOW\mathaccent
+\endgroup
+
+% Added (df)
+\section{Accents wide, \cmd\mathaccentwide}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 {\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathaccentwide
+\endgroup
+
+\section{Bottom accents, \cmd\mathbotaccent}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 \mitx$%
+ \fi
+}
+\SHOW\mathbotaccent
+\endgroup
+
+% Added (df)
+\section{Bottom accents wide, \cmd\mathbotaccentwide}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 {\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathbotaccentwide
+\endgroup
+
+\clearpage
+\section{Big operators, \cmd\mathop}
+
+Of the operators shown below, a subset need to be flagged by \textsf{unicode-math} for \cmd\nolimits\ adjustments.
+The limits behaviour as specified by \textsf{unicode-math} are shown with grey subscripts and superscripts.
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \stepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1_0^1$%
+ \fi
+}
+\SHOW\mathop
+\endgroup
+
+%\clearpage
+\section{Binary relations, \cmd\mathbin}
+\SHOW\mathbin
+
+\clearpage
+\section{Ordinary symbols, \cmd\mathord}
+\SHOW\mathord
+
+\clearpage
+\section{Relation symbols, \cmd\mathrel}
+\SHOW\mathrel
+
+\clearpage
+\section{Alphabetical symbols, \cmd\mathalpha}
+
+% first read in all \mathalpha symbols into a variable:
+\ExplSyntaxOn
+\cs_set:Npn \UnicodeMathSymbol #1#2#3#4 {
+ \str_if_eq:nnT {\mathalpha} {#3} {
+ \exp_not:n { \UnicodeMathSymbol {#1}{#2}{#3}{#4} }
+ }
+}
+\CatchFileEdef
+ \ALPHA{unicode-math-table.tex}
+ {\char_set_catcode_space:N \ }
+
+% now each time we print an alphabet we remove the slot;
+% this ensures we won't miss anything
+
+\def\INPUT{\ALPHA}
+\cs_new:Npn \SLOTS #1#2 {
+ \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
+ \bool_lazy_and:nnT
+ { \int_compare_p:n {##1 >= #1} }
+ { \int_compare_p:n {##1 <= #2} }
+ {
+ \PRINTLINE{##1}{##2}{##4}
+ }
+ }
+ \TABLE
+ \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
+ \bool_lazy_or:nnT
+ { \int_compare_p:n {##1 > #2} }
+ { \int_compare_p:n {##1 < #1} }
+ {
+ \exp_not:n { \UnicodeMathSymbol {##1}{##2}{##3}{##4} }
+ }
+ }
+ \edef\ALPHA{\ALPHA}
+}
+
+\ExplSyntaxOff
+
+\subsection{Normal weight}
+
+\subsubsection{Upright Greek, uppercase}
+\SLOTS{"00391}{"003A9}
+
+\subsubsection{Upright Greek, lowercase}
+\SLOTS{"003B1}{"003F5}
+
+\subsubsection{Italic, Latin, uppercase}
+\SLOTS{"1D434}{"1D44D}
+
+\subsubsection{Italic, Latin, lowercase}
+\SLOTS{"1D44E}{"1D467}
+
+\subsubsection{Italic Greek, uppercase}
+\SLOTS{"1D6E2}{"1D6FA}
+
+\subsubsection{Italic Greek, lowercase}
+\SLOTS{"1D6FC}{"1D71B}
+
+\subsubsection{Script, Latin, uppercase}
+\SLOTS{"1D49C}{"1D4B5}
+
+\subsubsection{Script, Latin, lowercase}
+\SLOTS{"1D4B6}{"1D4CF}
+
+\subsubsection{Fraktur, Latin, uppercase}
+\SLOTS{"1D504}{"1D51C}
+
+\subsubsection{Fraktur, Latin, lowercase}
+\SLOTS{"1D51E}{"1D537}
+
+\subsubsection{Blackboard, Latin, uppercase}
+\SLOTS{"1D538}{"1D550}
+
+\subsubsection{Blackboard, Latin, lowercase}
+\SLOTS{"1D552}{"1D56B}
+
+\subsubsection{Sans serif, Latin, uppercase}
+\SLOTS{"1D5A0}{"1D5B9}
+
+\subsubsection{Sans serif, Latin, lowercase}
+\SLOTS{"1D5BA}{"1D5D3}
+
+\subsubsection{Italic sans serif, Latin, uppercase}
+\SLOTS{"1D608}{"1D621}
+
+\subsubsection{Italic sans serif, Latin, lowercase}
+\SLOTS{"1D622}{"1D63B}
+
+\subsubsection{Typewriter, Latin, uppercase}
+\SLOTS{"1D670}{"1D689}
+
+\subsubsection{Typewriter, Latin, lowercase}
+\SLOTS{"1D68A}{"1D6A3}
+
+\subsection{Bold}
+
+\subsubsection{Bold, Latin, uppercase}
+\SLOTS{"1D400}{"1D419}
+
+\subsubsection{Bold, Latin, lowercase}
+\SLOTS{"1D41A}{"1D433}
+
+\subsubsection{Bold Greek, uppercase}
+\SLOTS{"1D6A8}{"1D6C0}
+
+\subsubsection{Bold Greek, lowercase}
+\SLOTS{"1D6C2}{"1D6E1}
+
+\subsubsection{Bold italic, Latin, uppercase}
+\SLOTS{"1D468}{"1D481}
+
+\subsubsection{Bold italic, Latin, lowercase}
+\SLOTS{"1D482}{"1D49B}
+
+\subsubsection{Bold italic Greek, uppercase}
+\SLOTS{"1D71C}{"1D734}
+
+\subsubsection{Bold italic Greek, lowercase}
+\SLOTS{"1D736}{"1D755}
+
+\subsubsection{Bold script, Latin, uppercase}
+\SLOTS{"1D4D0}{"1D4E9}
+
+\subsubsection{Bold script, Latin, lowercase}
+\SLOTS{"1D4EA}{"1D503}
+
+\subsubsection{Bold fraktur, Latin, uppercase}
+\SLOTS{"1D56C}{"1D585}
+
+\subsubsection{Bold fraktur, Latin, lowercase}
+\SLOTS{"1D586}{"1D59F}
+
+\subsubsection{Bold sans serif, Latin, uppercase}
+\SLOTS{"1D5D4}{"1D5ED}
+
+\subsubsection{Bold sans serif, Latin, lowercase}
+\SLOTS{"1D5EE}{"1D607}
+
+\subsubsection{Bold italic sans serif, Latin, uppercase}
+\SLOTS{"1D63C}{"1D655}
+
+\subsubsection{Bold italic sans serif, Latin, lowercase}
+\SLOTS{"1D656}{"1D66F}
+
+\subsubsection{Bold sans serif Greek, uppercase}
+\SLOTS{"1D756}{"1D76E}
+
+\subsubsection{Bold sans serif Greek, lowercase}
+\SLOTS{"1D770}{"1D78F}
+
+\subsubsection{Bold italic sans serif Greek, uppercase}
+\SLOTS{"1D790}{"1D7A8}
+
+\subsubsection{Bold italic sans serif Greek, lowercase}
+\SLOTS{"1D7AA}{"1D7C9}
+
+\subsection{Miscellaneous}
+\def\UnicodeMathSymbol#1#2#3#4{\PRINTLINE{#1}{#2}{#4}}
+\TABLE
+
+\FINISH
+\mbox{}
+\end{document}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2019 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-engine: luatex
+%%% End:
diff --git a/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.pdf b/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.pdf
new file mode 100644
index 00000000000..eb0e26a59ab
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/concmath-otf/unimath-concrete.pdf
Binary files differ
diff --git a/Master/texmf-dist/fonts/opentype/public/concmath-otf/Concrete-Math.otf b/Master/texmf-dist/fonts/opentype/public/concmath-otf/Concrete-Math.otf
new file mode 100644
index 00000000000..3d834bba674
--- /dev/null
+++ b/Master/texmf-dist/fonts/opentype/public/concmath-otf/Concrete-Math.otf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty b/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty
new file mode 100644
index 00000000000..b17cd5148d7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty
@@ -0,0 +1,179 @@
+\NeedsTeXFormat{LaTeX2e}[2018/01/01]
+\def\fileversion{0.20}
+\def\filedate{2022-01-13}
+\ProvidesPackage{concmath-otf}[\filedate\space\fileversion]
+
+% Ensure luatex or xetex engine
+\RequirePackage{iftex}[2019/10/24]
+\RequireTUTeX
+\RequirePackage{unicode-math}
+
+\newopentypefeature{Style}{leqslant}{ss04}
+\newopentypefeature{Style}{smaller}{ss05}
+\newopentypefeature{Style}{subsetneq}{ss06}
+
+% Options: forward them to \setmathfont except "tight", "loose" and "no-text".
+\RequirePackage{xkeyval}
+\newtoks\CCMtoks
+\newcommand*{\Store@KV@Option}[2]{%
+ \CCMtoks=\expandafter{\the\CCMtoks #1={#2},}}
+
+\newif\ifCCM@tight
+\newif\ifCCM@notext
+
+\DeclareOptionX{no-text}{\CCM@notexttrue}
+\DeclareOptionX{tight}{\CCM@tighttrue}
+\DeclareOptionX{loose}{\CCM@tightfalse}
+\DeclareOptionX{math-style}{\Store@KV@Option{math-style}{#1}}
+\DeclareOptionX{bold-style}{\Store@KV@Option{bold-style}{#1}}
+\DeclareOptionX{nabla}{\Store@KV@Option{nabla}{#1}}
+\DeclareOptionX{partial}{\Store@KV@Option{partial}{#1}}
+\DeclareOptionX{CharacterVariant}{\Store@KV@Option{CharacterVariant}{#1}}
+\DeclareOptionX{StylisticSet}{\Store@KV@Option{StylisticSet}{#1}}
+\DeclareOptionX{Style}{\Store@KV@Option{Style}{#1}}
+\ExecuteOptionsX{tight}
+\ProcessOptionsX
+%
+%\ifCMM@tight
+ \thinmuskip=2mu
+ \medmuskip=2.5mu plus 1mu minus 2.5mu
+ \thickmuskip=3.5mu plus 2.5mu
+%\fi
+
+% Text Serif fonts:
+\ifCCM@notext
+\else
+ \setmainfont{cmunorm.otf}
+ [BoldFont = cmunobx.otf ,
+ ItalicFont = cmunoti.otf ,
+ BoldItalicFont = cmunobi.otf
+ ]
+\fi
+
+%Math fonts:
+% Following Joseph Wright in https://tex.stackexchange.com/questions/451
+\begingroup
+ \edef\temp{%
+ \endgroup
+ \noexpand\setmathfont{Concrete-Math.otf}%
+ [\unexpanded\expandafter{\the\CCMtoks}]%
+ }
+ \temp
+
+% Text Sans Serif fonts: default (lmss unless specified)
+% Text Typewriter fonts: default (lmtt unless specified)
+
+\AtBeginDocument{%
+ % Fourier specific math
+ \Umathchardef\Bbbbackslash = 0 0 "E020 \relax
+ \Umathchardef\varemptyset = 0 0 "E021 \relax
+ \Umathchardef\mupvarzero = 0 0 "E022 \relax
+ \Umathchardef\mbfvarzero = 0 0 "E023 \relax
+ \Umathchardef\mupvarvarpi = 0 0 "E032 \relax
+ \Umathchardef\mbfvarpartial = 0 0 "E040 \relax
+ \Umathchardef\mbfvarvarrho = 0 0 "E041 \relax
+ \Umathchardef\mbfvarvarpi = 0 0 "E042 \relax
+ \Umathchardef\mbfvec = 0 0 "E044 \relax
+ \Umathchardef\mbfwp = 0 0 "E045 \relax
+ \Umathchardef\mbfdotlessi = 0 0 "E046 \relax
+ \Umathchardef\mbfdotlessj = 0 0 "E047 \relax
+ \Umathchardef\mbfhbar = 0 0 "E048 \relax
+ \Umathchardef\mbfell = 0 0 "E049 \relax
+ \Umathchardef\mbftriangleleft = 0 0 "E04E \relax
+ \Umathchardef\mbftriangleright = 0 0 "E04F \relax
+ \Umathchardef\mbfitvarpartial = 0 0 "E060 \relax
+ \Umathchardef\mbfitvarvarrho = 0 0 "E061 \relax
+ \Umathchardef\mbfitvarvarpi = 0 0 "E062 \relax
+ \Umathchardef\mbfitwp = 0 0 "E065 \relax
+ \Umathchardef\mbfimath = 0 0 "E066 \relax
+ \Umathchardef\mbfjmath = 0 0 "E067 \relax
+ \Umathchardef\mbfithbar = 0 0 "E068 \relax
+ \Umathchardef\mbfitell = 0 0 "E069 \relax
+ \Umathchardef\mitvarpartial = 0 0 "E070 \relax
+ \Umathchardef\mitvarvarrho = 0 0 "E071 \relax
+ \Umathchardef\mitvarvarpi = 0 0 "E072 \relax
+ \Umathchardef\mithbar = 0 0 "E078 \relax
+ \Umathchardef\parallelslant = 3 0 "E090 \relax
+ \Umathchardef\nparallelslant = 3 0 "E091 \relax
+ \Umathchardef\shortparallelslant = 3 0 "E092 \relax
+ \Umathchardef\nshortparallelslant = 3 0 "E093 \relax
+ \Umathchardef\lesseqslantgtr = 3 0 "E094 \relax
+ \Umathchardef\gtreqslantless = 3 0 "E095 \relax
+ \Umathchardef\lesseqqslantgtr = 3 0 "E096 \relax
+ \Umathchardef\gtreqqslantless = 3 0 "E097 \relax
+ \Umathchardef\nsubseteqq = 3 0 "E0AE \relax
+ \Umathchardef\nsupseteqq = 3 0 "E0AF \relax
+ % \widearc and\overrightarc
+ \newcommand*{\widearc}{\Umathaccent 0 0 "E540 }%
+ \newcommand*{\overrightarc}{\Umathaccent 0 0 "20D5 }%
+ % amssymb
+ \@ifpackageloaded{amssymb}%
+ {\PackageWarning{concmath-otf}{%
+ Concmath-otf provides all AMS symbols.\MessageBreak
+ Loading amssymb.sty is not advisable.\MessageBreak
+ Reported}%
+ }%
+ {% AMS Symbols not referenced in unicode-math-table.tex
+ % \Umathchardef\<cmd> = <math type> <family> <slot>
+ % <math type> : \mathord=0 \mathrel=3 ; <family>=0
+ \Umathchardef\circledR = 0 0 "24C7 \relax
+ \Umathchardef\circledS = 0 0 "24C8 \relax
+ \Umathchardef\diagup = 0 0 "E0A0 \relax
+ \Umathchardef\diagdown = 0 0 "E0A1 \relax
+ \Umathchardef\shortmid = 3 0 "E0A2 \relax
+ \Umathchardef\shortparallel = 3 0 "E0A3 \relax
+ \Umathchardef\nshortmid = 3 0 "E0A4 \relax
+ \Umathchardef\nshortparallel = 3 0 "E0A5 \relax
+ \Umathchardef\lvertneqq = 3 0 "E0A6 \relax
+ \Umathchardef\gvertneqq = 3 0 "E0A7 \relax
+ \Umathchardef\varsubsetneq = 3 0 "E0AC \relax
+ \Umathchardef\varsupsetneq = 3 0 "E0AD \relax
+ \Umathchardef\varsubsetneqq = 3 0 "E09C \relax
+ \Umathchardef\varsupsetneqq = 3 0 "E09D \relax
+ \Umathchardef\nleqslant = 3 0 "E0A8 \relax
+ \Umathchardef\ngeqslant = 3 0 "E0A9 \relax
+ \Umathchardef\nleqq = 3 0 "E0AA \relax
+ \Umathchardef\ngeqq = 3 0 "E0AB \relax
+ \Umathchardef\npreceq = 3 0 "E098 \relax
+ \Umathchardef\nsucceq = 3 0 "E099 \relax
+ \let\centerdot\cdotp
+ \let\restriction\upharpoonright
+ \let\doteqdot\Doteq
+ \let\doublecup\Cup
+ \let\doublecap\Cap
+ \let\llless\lll
+ \let\gggtr\ggg
+ \let\circlearrowleft\acwopencirclearrow
+ \let\circlearrowright\cwopencirclearrow
+ \let\lozenge\mdlgwhtlozenge
+ \let\blacklozenge\mdlgblklozenge
+ \let\square\mdlgwhtsquare
+ \let\blacksquare\mdlgblksquare
+ \let\dashleftarrow\leftdasharrow
+ \let\dashrightarrow\rightdasharrow
+ \let\ntriangleleft\nvartriangleleft
+ \let\ntriangleright\nvartriangleright
+ \let\varpropto\propto
+ \let\thicksim\sim
+ \let\thickapprox\approx
+ \let\smallsmile\smile
+ \let\smallfrown\frown
+ }%
+ % latexsym
+ \@ifpackageloaded{latexsym}%
+ {\PackageWarning{concmath-otf}{%
+ Concmath-otf provides all LaTeX symbols.\MessageBreak
+ Loading latexsym.sty is not advisable.\MessageBreak
+ Reported}%
+ }%
+ {\let\lhd\vartriangleleft
+ \let\rhd\vartriangleright
+ \let\unlhd\trianglelefteq
+ \let\unrhd\trianglerighteq
+ \let\leadsto\rightcurvedarrow
+ \let\Box\lgwhtsquare
+ \let\Diamond\mdlgwhtdiamond
+ }%
+}
+
+\endinput
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 86272946a88..f0381a23d56 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -196,7 +196,7 @@ my @TLP_working = qw(
comma commado commath commedit comment commutative-diagrams
compactbib compare competences
complexity components-of-TeX comprehensive computational-complexity
- concepts concmath concmath-fonts concprog concrete
+ concepts concmath concmath-fonts concmath-otf concprog concrete
conditext confproc constants conteq
context-account context-algorithmic context-animation context-annotation
context-bnf context-chromato context-cmscbf context-cmttbf
diff --git a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
index 5746530f63a..3da08ce6cc6 100644
--- a/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-fontsextra.tlpsrc
@@ -88,6 +88,7 @@ depend coelacanth
depend comfortaa
depend comicneue
depend concmath-fonts
+depend concmath-otf
depend cookingsymbols
depend cormorantgaramond
depend countriesofeurope
diff --git a/Master/tlpkg/tlpsrc/concmath-otf.tlpsrc b/Master/tlpkg/tlpsrc/concmath-otf.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/concmath-otf.tlpsrc