texlive[50032] Master/texmf-dist: unicode-math (15feb19)

commits+karl at tug.org commits+karl at tug.org
Fri Feb 15 23:23:05 CET 2019


Revision: 50032
          http://tug.org/svn/texlive?view=revision&revision=50032
Author:   karl
Date:     2019-02-15 23:23:04 +0100 (Fri, 15 Feb 2019)
Log Message:
-----------
unicode-math (15feb19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/unicode-math/README.md
    trunk/Master/texmf-dist/doc/latex/unicode-math/RELEASE_CHECKLIST.md
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-legacyfontdimen.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-main.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-mathfontdimen.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-nfsssummary.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-stixextract.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-style.tex
    trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.ltx
    trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
    trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.ltx
    trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
    trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
    trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
    trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx
    trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-amsmath.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sym-commands.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
    trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins
    trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty
    trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
    trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty
    trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md	2019-02-15 22:23:04 UTC (rev 50032)
@@ -1,6 +1,15 @@
 CHANGE HISTORY
 ==============
 
+## v0.8n (2019/02/15)
+
+  * Add note to readme that the `lm-math` package is required for minimal functionality.
+  * Spacing fixed for maths fonts loaded with the `Scale` fontspec feature (#287).
+  * Commands like `\crampedtextstyle` now longer lead to an infinite loop under XeTeX (#505).
+  * Improvements to the functionality of the test suite. (Although more tests would be nice.)
+  * Test suite is now (successfully) run with `expl3` debug mode enabled.
+
+
 ## v0.8m (2018/07/29)
 
   * Restore behaviour of legacy syntax `x_\mathrm{x}` (i.e., with no braces).

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/README.md	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/README.md	2019-02-15 22:23:04 UTC (rev 50032)
@@ -1,7 +1,7 @@
 The UNICODE-MATH package
 ========================
 
-This package will provide a complete implementation of unicode maths for
+This package provides an implementation of Unicode/OpenType mathematics for
 XeLaTeX and LuaLaTeX.
 
 While I am a little wary of encouraging people to use this package for
@@ -24,9 +24,9 @@
  - [DejaVu Math TeX Gyre][DEJA] (B. Jackowski, P. Strzelczyk and P. Pianowski)
  - [Asana Math][AM] (Apostolos Syropolous),
  - [STIX][STIX] (STIpub), and
- - [Neo Euler][NE] (Khaled Hosny),
  - [XITS Math][XM] (Khaled Hosny),
  - [Libertinus Math][LIB] (Philipp H. Poll and Khaled Hosny).
+ - [Fire Math][FIRA] (Xiangdong Zeng).
 
 These fonts are available under open source licences
 (the [GUST Font License][GFL] and [Open Font Licence][OFL]).
@@ -50,13 +50,14 @@
 [TM]: http://www.ctan.org/pkg/tex-gyre-math-termes
 [DEJA]: https://ctan.org/pkg/tex-gyre-math-dejavu
 [AM]: http://www.ctan.org/pkg/asana-math
-[NE]: http://github.com/khaledhosny/euler-otf
 [STIX]: http://www.stixfonts.org
 [XM]: http://github.com/khaledhosny/xits-math
 [LIB]: https://ctan.org/pkg/libertinus
 [GFL]: http://www.gust.org.pl/projects/projects/e-foundry/licenses/
 [OFL]: http://scripts.sil.org/OFL
+[FIRA]: https://github.com/firamath/firamath
 
+
 PACKAGE USAGE
 -------------
 
@@ -74,7 +75,8 @@
 REQUIREMENTS
 ------------
 
-As well as running XeTeX or LuaTeX, this package requires recent versions of the `fontspec`, `expl3`, `xpackages`, `filehook`, and `lualatex-math` packages.
+As well as running XeTeX or LuaTeX, this package requires recent versions of the
+`lm-math`, `fontspec`, `expl3`, `xpackages`, `filehook`, and `lualatex-math` packages.
 
 
 THANKS
@@ -111,4 +113,4 @@
 
 [LPPL]: http://www.latex-project.org/lppl/
 
-This work is author-maintained and consists of the files listed in `MANIFEST.md`.
+This work is maintained by Will Robertson and consists of the files listed in `MANIFEST.md`.

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/RELEASE_CHECKLIST.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/RELEASE_CHECKLIST.md	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/RELEASE_CHECKLIST.md	2019-02-15 22:23:04 UTC (rev 50032)
@@ -2,17 +2,10 @@
 
 - [ ] Finish final changes on `working` branch
 - [ ] Ensure `CHANGES.md` is up-to-date with a new version number
-- [ ] `build tag foo`
 - [ ] `git push`
-- [ ] Check Travis build status (hopefully is working that date)
+- [ ] Check Travis build status
 - [ ] Update local distro fully with tlmgr
 - [ ] Run `build check` locally
 - [ ] Install prerelease versions of `fontspec` and `latex3` and re-check
-- [ ] `git checkout master; git rebase working`
-- [ ] `build ctan`
-- [ ] Upload to CTAN
-- [ ] `texlua tagrelease.lua` to tag release with version number, annotated with changes
-- [ ] `git push` — assuming tags are pushed by default (might need a local gitconfig)
-- [ ] `git checkout working`
-- [ ] `build install`
+- [ ] `texlua autorelease.lua`
 - [ ] Check `latex3/contrib/testfiles/unicode-math001.lvt` and update if necessary

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-legacyfontdimen.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-legacyfontdimen.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-legacyfontdimen.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -67,7 +67,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-main.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-main.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -500,8 +500,8 @@
 for all characters, as seen in the Euler fonts.
 
 The \pkg{unicode-math} package accommodates these possibilities with the
-option \opt{math-style} that takes one of four (case sensitive) arguments:
-\opt{TeX}, \opt{ISO}, \opt{french}, or \opt{upright}.\footnote{Interface inspired by Walter Schmidt's \pkg{lucimatx} package.}
+option \opt{math-style} that takes one of five (case sensitive) arguments:
+\opt{TeX}, \opt{ISO}, \opt{french}, \opt{upright}, or \opt{literal}.\footnote{Interface inspired by Walter Schmidt's \pkg{lucimatx} package.}
 The \opt{math-style} options' effects are shown in brief in \tabref{math-style}.
 
 The philosophy behind the interface to the mathematical symbols
@@ -725,8 +725,8 @@
 script letters but with the first stylistic set feature (|ss01|) applied.
 An example is shown below.
 \begin{quote}
-\setmathfont{xits-math.otf}
-\setmathfont{xits-math.otf}[range=cal,StylisticSet=1]
+\setmathfont{XITSMath-Regular.otf}
+\setmathfont{XITSMath-Regular.otf}[range=cal,StylisticSet=1]
 The Script style (\cs{mathscr}) in XITS Math is: $\symscr{ABCXYZ}$\par
 The Caligraphic style (\cs{mathcal}) in XITS Math is: $\symcal{ABCXYZ}$
 \end{quote}
@@ -1225,7 +1225,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-mathfontdimen.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-mathfontdimen.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-mathfontdimen.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -142,7 +142,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-nfsssummary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-nfsssummary.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-nfsssummary.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -78,7 +78,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-stixextract.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-stixextract.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-stixextract.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -29,7 +29,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-style.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-style.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/um-doc-style.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -46,8 +46,8 @@
  ]
 
 \setmathfont{texgyrepagella-math.otf}
-\setmathfont[version=xits]{xits-math.otf}
-\newfontface\umfont{xits-math.otf}
+\setmathfont[version=xits]{XITSMath-Regular.otf}
+\newfontface\umfont{XITSMath-Regular.otf}
 
 \expandafter\def\csname ver at thumbpdf.sty\endcsname{}
 \usepackage{hypdoc}
@@ -122,7 +122,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.ltx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.ltx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -26,7 +26,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.ltx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.ltx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -29,7 +29,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -60,7 +60,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -33,7 +33,11 @@
 \ExplSyntaxOn
 \cs_generate_variant:Nn \fontspec_set_fontface:NNnn {c}
 
-\def\defmathfont#1#2#3{
+\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={
@@ -40,24 +44,25 @@
       {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}{CC6666}
-\defmathfont{xits}{xits-math.otf}{CCCC66}
-\defmathfont{stix}{STIXMath-Regular.otf}{AA66CC}
-\defmathfont{cambria}{CambriaMath.ttf}{66CCCC}
-\defmathfont{asana}{Asana-Math.otf}{6666CC}
-\defmathfont{pagella}{texgyrepagella-math.otf}{AA6666}
-\defmathfont{dejavu}{texgyredejavu-math.otf}{AACC66}
-\defmathfont{euler}{euler.otf}{CC66CC}
+\defmathfont{lm}{latinmodern-math.otf}{CC6666}{L}
+\defmathfont{xits}{XITSMath-Regular.otf}{6666CC}{X}
+\defmathfont{stix}{STIX2Math.otf}{66CC66}{S}
+\defmathfont{pagella}{texgyrepagella-math.otf}{AA6666}{P}
+\defmathfont{dejavu}{texgyredejavu-math.otf}{AACC66}{D}
+\defmathfont{fira}{FiraMath-Regular.otf}{AA66CC}{F}
 
 \def\INPUT{\input{unicode-math-table.tex}}
 \def\TABLE{%
 \par\noindent
-\begin{longtabu}[l]{@{}lcccccccclX[l]@{}}
+\begin{longtabu}[l]{@{}l *{\Nfonts}{c} lX[l]@{}}
   \toprule
-  \textsc{usv} & M & X & S & C & A & P & D & E & Macro & Description \\
+  \textsc{usv} & \Llm & \Lxits & \Lstix & \Lpagella & \Ldejavu & \Lfira & Macro & Description \\
   \midrule \endhead
   \INPUT\\
   \bottomrule
@@ -87,11 +92,9 @@
       \SYMB{#2}{lm}{#1} &
       \SYMB{#2}{xits}{#1} &
       \SYMB{#2}{stix}{#1} &
-      \SYMB{#2}{cambria}{#1} &
-      \SYMB{#2}{asana}{#1} &
       \SYMB{#2}{pagella}{#1} &
       \SYMB{#2}{dejavu}{#1} &
-      \SYMB{#2}{euler}{#1} &
+      \SYMB{#2}{fira}{#1} &
       \CMD{#2}
       \tl_if_in:NnT \PLAIN {#2}
         {
@@ -153,7 +156,7 @@
 
 \begin{document}
 \MakeShortVerb\|
-\title{Every symbol (most symbols) defined by \textsf{unicode-math}}
+\title{Symbols defined by \textsf{unicode-math}}
 \author{Will Robertson}
 \maketitle
 
@@ -163,21 +166,19 @@
 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)
 \begin{itemize}
-\item[M] \mathversion{lm} $\mathup{Latin\ Modern\ Math}$ (\ref{count:lm})
-\item[X] \mathversion{xits} $\mathup{XITS\ Math}$ (\ref{count:xits})
-\item[S] \mathversion{stix} $\mathup{STIX\ Math}$ (\ref{count:stix})
-\item[C] \mathversion{cambria} $\mathup{Cambria\ Math}$ (\ref{count:cambria})
-\item[A] \mathversion{asana} $\mathup{Asana\ Math}$ (\ref{count:asana})
-\item[P] \mathversion{pagella} $\mathup{TeX\ Gyre\ Pagella\ Math}$ (\ref{count:pagella})
-\item[D] \mathversion{dejavu} $\mathup{DejaVu\ Math\ TeX\ Gyre}$ (\ref{count:dejavu})
-\item[E] \mathversion{euler} $\mathup{Neo\ Euler}$ (\ref{count:euler})
+\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\ Math\ Two}$ (\ref{count:stix})
+\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[\Lfira] \mathversion{fira} $\mathup{Fira\ Math}$ (\ref{count:fira})
 \end{itemize}
-Note that there are addition maths fonts in the `\TeX\ Gyre' collection which aren't included here.
-
 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)}}
+\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
@@ -444,14 +445,7 @@
 \def\UnicodeMathSymbol#1#2#3#4{\PRINTLINE{#1}{#2}{#4}}
 \TABLE
 
-\refstepcounter{lm}\label{count:lm}
-\refstepcounter{xits}\label{count:xits}
-\refstepcounter{stix}\label{count:stix}
-\refstepcounter{cambria}\label{count:cambria}
-\refstepcounter{asana}\label{count:asana}
-\refstepcounter{pagella}\label{count:pagella}
-\refstepcounter{euler}\label{count:euler}
-\refstepcounter{dejavu}\label{count:dejavu}
+\FINISH
 
 \end{document}
 
@@ -466,7 +460,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -925,7 +925,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-amsmath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-amsmath.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-amsmath.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -107,8 +107,7 @@
     {
       \bool_if:nTF
         {
-          \int_compare_p:nNn { \uproot@ } = { \c_zero }
-          && \int_compare_p:nNn { \leftroot@ } = { \c_zero }
+          \@@_int_if_zero_p:n \uproot@ && \@@_int_if_zero_p:n \leftroot@
         }
         {
           \Uroot \c_@@_radical_sqrt_tl { #1 } { #2 }
@@ -216,7 +215,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -34,7 +34,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -52,21 +52,17 @@
 % \section{Patching/augmenting 3rd-party packages}
 %
 % \subsection{\pkg{url}}
-%
-% Simply need to get \pkg{url} in a state such that
+% Here we need to get \pkg{url} in a state such that
 % when it switches to math mode and enters \ascii\ characters, the maths
 % setup (i.e., \pkg{unicode-math}) doesn't remap the symbols into Plane 1.
-% Which is, of course, what \cs{mathup} is doing.
-%
-% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\@@_switchto_up:}|
-% but activates automatically so old documents that might change the \cs{url}
-% font still work correctly.
-%
-% TODO: check still needed now we have symup vs mathrm
+% Which is what \cs{symliteral} is intended to do.
+% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\@@_switch_to:n{literal}}|
+% but activates automatically so documents that might change the \cs{url}
+% font through the standard interface still work correctly.
 %    \begin{macrocode}
 \AtEndOfPackageFile * {url}
   {
-    \tl_put_left:Nn \Url at FormatString { \@@_switch_to:n {up} }
+    \tl_put_left:Nn \Url at FormatString { \@@_switch_to:n {literal} }
     \tl_put_right:Nn \UrlSpecials
       {
         \do \` { \mathchar`\` }
@@ -119,7 +115,7 @@
            \color at setgroup \c_math_toggle_token \m at th
              #1
              \dim_zero:N \nulldelimiterspace
-             \XeTeXradical \c_two_hundred_fifty_five \c_zero { #2 }
+             \XeTeXradical 255 ~ 0 ~ { #2 }
            \c_math_toggle_token \color at endgroup
          }
        \box_set_ht:Nn \l_tmpa_box
@@ -246,7 +242,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -383,7 +383,13 @@
 \@@_undeclare_symbol:N \bracevert
 %    \end{macrocode}
 %
+% \section{A secret hook}
+% This will be executed after most if not all of the standard unicode-math setup.
 %    \begin{macrocode}
+\AtBeginDocument{\g_@@_secret_hook_tl}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %</package>
 %    \end{macrocode}
 %
@@ -405,7 +411,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -41,7 +41,7 @@
     range .code:n =
       {
         \bool_if:NF \g_@@_main_font_defined_bool { \@@_error:n {no-main-font} }
-        \bool_set_false:N \l_@@_init_bool
+        \bool_gset_false:N \g_@@_init_bool
         \@@_range_init:
         \group_begin:
           \seq_map_inline:Nn \g_@@_mathclasses_seq
@@ -64,7 +64,7 @@
 % Math symbols are defined with \cmd\_@@_sym:nnn; see \secref{mathsymbol}
 % for the individual definitions
 %    \begin{macrocode}
-\cs_new:Nn \@@_range_init:
+\@@_cs_new:Nn \@@_range_init:
   {
     \int_gincr:N \g_@@_fam_int
     \tl_set:Nx \l_@@_symfont_label_tl {@@_fam\int_use:N\g_@@_fam_int}
@@ -111,7 +111,6 @@
 %    \begin{macrocode}
 \cs_new:Nn \@@_mathalph_decl:nF
   {
-
     \tl_set:Nn  \l_@@_tmpa_tl {#1}
     \tl_clear:N \l_@@_tmpb_tl
     \tl_clear:N \l_@@_tmpc_tl
@@ -318,7 +317,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -36,7 +36,7 @@
 % For \XeTeX, define \meta{command} as a new quark.
 %    \begin{macrocode}
 \cs_new_protected_nopar:Nn \@@_new_cramped_style:N
-%<XE>  { \quark_new:N #1 }
+%<XE>  { \tl_const:Nn #1 { \use_none:n #1 } }
 %<LU>  {
 %<LU>    \cs_if_exist:NF #1
 %<LU>      { \cs_new_eq:Nc #1 { luatex \cs_to_str:N #1 } }
@@ -114,7 +114,7 @@
 %    \end{macrocode}
 % Which family to use?
 %    \begin{macrocode}
-    \c_two
+    2~
   }
 %</XE>
 %    \end{macrocode}
@@ -289,11 +289,11 @@
 %    \begin{macrocode}
 \cs_new:Nn \@@_fontdimen_to_percent:nN
   {
-    \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 }
+    \fp_eval:n { \dim_to_decimal:n { 65536 \fontdimen #1 #2 } / 100 }
   }
 \cs_new:Nn \@@_fontdimen_to_scale:nN
   {
-    \fp_eval:n { \@@_fontdimen_to_percent:nN {#1} #2 * \f at size } pt
+    \fp_eval:n { \@@_fontdimen_to_percent:nN {#1} #2 * \f at size }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -336,7 +336,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -11,7 +11,7 @@
 % \darg{keyval options}
 % \darg{font name/file}
 %    \begin{macrocode}
-\cs_set:Nn \@@_setmathfont:nn
+\@@_cs_new:Nn \@@_setmathfont:nn
   {
 %    \end{macrocode}
 % \begin{itemize}
@@ -35,14 +35,12 @@
 
     \keys_set_known:nnN {unicode-math} {#1} \l_@@_unknown_keys_clist
 
-    \bool_if:NT \l_@@_init_bool
-      {
-        \@@_fontspec_trial_font:
-        \@@_declare_math_sizes:
-      }
+    \bool_if:NT \g_@@_init_bool \@@_fontspec_trial_font:
+    \bool_if:NT \g_@@_init_bool \@@_declare_math_sizes:
+
     \@@_fontspec_select_font:
     \@@_setup_math_fam:
-    \bool_if:NT \l_@@_init_bool
+    \bool_if:NT \g_@@_init_bool
       {
         \@@_setup_legacy_fam_two:
         \@@_setup_legacy_fam_three:
@@ -60,7 +58,7 @@
 %       this is an extensive part of the code; see Section~\ref{sec:mathmap};
 % \end{itemize}
 %    \begin{macrocode}
-    \bool_if:NT \l_@@_init_bool \@@_onceoff_setup:
+    \bool_if:NT \g_@@_init_bool \@@_onceoff_setup:
     \@@_remap_symbols:
     \@@_setup_mathactives:
     \@@_setup_delcodes:
@@ -68,7 +66,7 @@
 
     %% TODO: what of the above should only be run for the "default"/"main" font?
 
-    \bool_if:NTF \l_@@_init_bool
+    \bool_if:NTF \g_@@_init_bool
       {
         \bool_gset_true:N \g_@@_main_font_defined_bool
 %<LU>   \@@_mathparam_store:
@@ -87,16 +85,10 @@
 % This needs to happen early so that all of the font-loading machinery executes before
 % the other `AtBeginDocument' code.
 %    \begin{macrocode}
-\AtBeginDocument { \@@_load_lm_if_necessary: }
-\cs_new:Nn \@@_load_lm_if_necessary:
+\AtBeginDocument { \bool_if:NF \g_@@_main_font_defined_bool \@@_load_lm: }
+\@@_cs_new:Nn \@@_load_lm:
   {
-    \bool_if:NF \g_@@_main_font_defined_bool
-      {
-%<debug>\typeout{SETTING~ DEFAULT~ FONT~(latinmodern-math)}
-        \setmathfont{latinmodern-math.otf}
-          [BoldFont={latinmodern-math.otf}]
-%<debug>\typeout{END~ DEFAULT~ FONT)}
-      }
+    \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
   }
 %    \end{macrocode}
 %
@@ -104,7 +96,7 @@
 % Reset local variables.
 % Default to defining the font for every math symbol character.
 %    \begin{macrocode}
-\cs_new:Nn \@@_init:n
+\@@_cs_new:Nn \@@_init:n
   {
     \tl_set:Nn \l_@@_fontname_tl {#1}
     \bool_gset_true:N  \g_@@_ot_math_bool
@@ -116,7 +108,7 @@
     \tl_set_eq:NN \l_@@_script_font_tl      \l_@@_fontname_tl
     \tl_set_eq:NN \l_@@_sscript_font_tl     \l_@@_fontname_tl
 
-    \bool_set_true:N \l_@@_init_bool
+    \bool_gset_true:N \g_@@_init_bool
     \seq_gclear:N    \g_@@_char_range_seq
     \clist_clear:N   \l_@@_mathmap_charints_clist
     \seq_gclear:N    \g_@@_mathalph_seq
@@ -135,13 +127,13 @@
 % Set the math sizes according to the recommended font parameters.
 %    \begin{macrocode}
 \tl_new:N \g_@@_main_font_cmd_tl
-\cs_new:Nn \@@_declare_math_sizes:
+\cs_new:Nn \@@_sf_size:  { \@@_fontdimen_to_scale:nN {10} \g_@@_trial_font }
+\cs_new:Nn \@@_ssf_size: { \@@_fontdimen_to_scale:nN {11} \g_@@_trial_font }
+\@@_cs_new:Nn \@@_declare_math_sizes:
   {
     \dim_compare:nF { \fontdimen 10 \g_@@_trial_font == 0pt }
       {
-        \DeclareMathSizes { \f at size } { \f at size }
-          { \@@_fontdimen_to_scale:nN {10} \g_@@_trial_font }
-          { \@@_fontdimen_to_scale:nN {11} \g_@@_trial_font }
+        \DeclareMathSizes { \f at size } { \f at size } { \@@_sf_size: } { \@@_ssf_size: }
       }
   }
 %    \end{macrocode}
@@ -151,12 +143,12 @@
 %
 % \begin{macro}{\@@_fontspec_trial_font:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_fontspec_trial_font:
+\@@_cs_new:Nn \@@_fontspec_trial_font:
   {
     \tl_set:Nx \l_@@_font_keyval_tl
       {
 %<LU>   Renderer = Basic,
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
 %<LU>   FontAdjustment = { \@@_luatex_copy_fontdimens: },
         \l_@@_unknown_keys_clist
@@ -169,6 +161,7 @@
       \exp_last_unbraced:NNo \@@_fontface_gset_eq:NN \g_@@_trial_font \font at name
       \fontspec_if_script:nF {math}
         {
+          \@@_warning:n {not-ot-math}
           \bool_gset_false:N \g_@@_ot_math_bool
           \bool_gset_false:N \g_@@_init_bool
         }
@@ -180,15 +173,15 @@
 %
 % \begin{macro}{\@@_fontspec_select_font:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_fontspec_select_font:
+\@@_cs_new:Nn \@@_fontspec_select_font:
   {
-    \fp_gset:Nn \g_@@_size_tfsf_fp   { (\f at size +\sf at size )/2 }
-    \fp_gset:Nn \g_@@_size_sfssf_fp  { (\sf at size+\ssf at size)/2 }
+    \fp_gset:Nn \g_@@_size_tfsf_fp   { (\f at size + \@@_sf_size: )/2 }
+    \fp_gset:Nn \g_@@_size_sfssf_fp  { (\@@_sf_size: + \@@_ssf_size:)/2 }
 
     \tl_set:Nx \l_@@_font_keyval_tl
       {
 %<LU>   Renderer = Basic,
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
         SizeFeatures =
           {
@@ -217,15 +210,10 @@
       \fontfamily { \l_@@_family_tl } \selectfont
       \exp_last_unbraced:Nno \@@_fontface_gset_eq:cN {g_@@_mathfont_ \int_use:N \g_@@_fonts_used_int _font} \font at name
       \tl_gset:Nx \g_@@_curr_font_cmd_tl { \exp_not:c {g_@@_mathfont_ \int_use:N \g_@@_fonts_used_int _font} }
-      \bool_if:NT \l_@@_init_bool
+      \bool_if:NT \g_@@_init_bool
 				{
 					\exp_last_unbraced:NNo \@@_fontface_gset_eq:NN \l_@@_font \font at name
 				}
-      \fontspec_if_script:nF {math}
-        {
-          \bool_gset_false:N \g_@@_ot_math_bool
-          \bool_gset_false:N \g_@@_init_bool
-        }
     \group_end:
   }
 %    \end{macrocode}
@@ -244,7 +232,7 @@
 % might change the math params, which wouldn't be reflected in the fontdimens.
 %    \begin{macrocode}
 %<*LU>
-\cs_new_protected:Nn \@@_luatex_copy_fontdimens:
+\@@_cs_new:Nn \@@_luatex_copy_fontdimens:
   {
     \@@_fontdimen_from_param:nn {10} {ScriptPercentScaleDown}
     \@@_fontdimen_from_param:nn {11} {ScriptScriptPercentScaleDown}
@@ -271,7 +259,7 @@
 %
 % \begin{macro}{\@@_setup_math_fam:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_math_fam:
+\@@_cs_new:Nn \@@_setup_math_fam:
   {
     \cs_if_exist:cF { sym \l_@@_symfont_label_tl }
       {
@@ -283,7 +271,7 @@
 %    \end{macrocode}
 % Set the bold math version.
 %    \begin{macrocode}
-    \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+    \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
       {
         \SetSymbolFont{\l_@@_symfont_label_tl}{bold}
           {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
@@ -295,12 +283,12 @@
 % \begin{macro}{\@@_setup_legacy_fam_two:}
 % \TeX\ won't load the same font twice at the same scale, so we need to magnify this one by an imperceptable amount.
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_legacy_fam_two:
+\@@_cs_new:Nn \@@_setup_legacy_fam_two:
   {
     \fontspec_set_family:Nxn \l_@@_fam_two_tl
       {
         \l_@@_font_keyval_tl,
-        Scale=1.00001,
+        ScaleAgain = 1.00001,
         FontAdjustment =
           {
             \@@_copy_fontdimen:nnN { 8} {43} \g_@@_main_font_cmd_tl
@@ -324,7 +312,7 @@
     \SetSymbolFont{symbols}{\l_@@_mversion_tl}
       {\encodingdefault}{\l_@@_fam_two_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+    \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
       {
         \SetSymbolFont{symbols}{bold}
           {\encodingdefault}{\l_@@_fam_two_tl}{\bfdefault}{\updefault}
@@ -336,12 +324,12 @@
 % \begin{macro}{\@@_setup_legacy_fam_three:}
 % Similarly, this font is shrunk by an imperceptable amount for \TeX\ to load it again.
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_legacy_fam_three:
+\@@_cs_new:Nn \@@_setup_legacy_fam_three:
   {
     \fontspec_set_family:Nxn \l_@@_fam_three_tl
       {
         \l_@@_font_keyval_tl,
-        Scale=0.99999,
+        ScaleAgain = 0.99999,
         FontAdjustment = {
           \@@_copy_fontdimen:nnN { 8} {48} \g_@@_main_font_cmd_tl
           \@@_copy_fontdimen:nnN { 9} {28} \g_@@_main_font_cmd_tl
@@ -355,7 +343,7 @@
     \SetSymbolFont{largesymbols}{\l_@@_mversion_tl}
       {\encodingdefault}{\l_@@_fam_three_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+    \str_if_eq:eeT {\l_@@_mversion_tl} {normal}
       {
         \SetSymbolFont{largesymbols}{bold}
           {\encodingdefault}{\l_@@_fam_three_tl}{\bfdefault}{\updefault}
@@ -366,9 +354,9 @@
 %
 % \begin{macro}{\@@_onceoff_setup:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_onceoff_setup:
+\@@_cs_new:Nn \@@_onceoff_setup:
   {
-    \@@_set_delcode:nnn {operators} {`\.} {\c_zero}
+    \@@_set_delcode:nnn {operators} {`\.} {0}
   }
 %    \end{macrocode}
 % \end{macro}
@@ -403,7 +391,7 @@
 % This function is used to define the mathcodes for those chars which should
 % be mapped to a different glyph than themselves.
 %    \begin{macrocode}
-\cs_new:Nn \@@_remap_symbols:
+\@@_cs_new:Nn \@@_remap_symbols:
   {
     \@@_remap_symbol:nnn {`\-} {\mathbin} {"2212}
     \@@_remap_symbol:nnn {`\*} {\mathbin} {"02217}% text asterisk to "centred asterisk"
@@ -443,7 +431,7 @@
 % TODO: if not an OpenType math font, we should ignore doing anything with primes.
 % This needs a revamped `range` feature, I think.
 %    \begin{macrocode}
-\cs_new:Npn \@@_setup_mathactives:
+\@@_cs_new:Nn \@@_setup_mathactives:
   {
 		\@@_make_mathactive:nNN {"2032} \@@_prime_single_mchar \mathord
 		\@@_make_mathactive:nNN {"2033} \@@_prime_double_mchar \mathord
@@ -514,7 +502,7 @@
 % On the other hand, many fonts won't support them all being stretchy.
 % And some of them are probably not meant to stretch, either. But adding them here doesn't hurt.
 %    \begin{macrocode}
-\cs_new:Npn \@@_setup_delcodes:
+\@@_cs_new:Nn \@@_setup_delcodes:
   {
     \@@_assign_delcode:nn {`\/}   {\g_@@_slash_delimiter_usv}
     \@@_assign_delcode:nn {"2044} {\g_@@_slash_delimiter_usv} % fracslash
@@ -605,7 +593,7 @@
 % If the maths font were to be loaded later it would clobber our mathparam settings, so
 % this seems like a sensible move.
 %    \begin{macrocode}
-\cs_set:Nn \@@_mathparam_restore:
+\@@_cs_new:Nn \@@_mathparam_restore:
   {
     \glb at settings
     \tl_use:N \g_@@_mathparam_settings_tl
@@ -617,7 +605,7 @@
 % \cs{glb at settings} is called to force maths fonts loading \emph{now} so the mathparams
 % are up-to-date.
 %    \begin{macrocode}
-\cs_set:Nn \@@_mathparam_store:
+\@@_cs_new:Nn \@@_mathparam_store:
   {
     \glb at settings
     \tl_gset:Nx \g_@@_mathparam_settings_tl
@@ -701,7 +689,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -20,9 +20,9 @@
 % The INHERIT mode saves less time than I was hoping for but is still beneficial
 % in simple cases.
 %    \begin{macrocode}
-\cs_new:Npn \@@_setup_alphabets:
+\@@_cs_new:Nn \@@_setup_alphabets:
   {
-    \bool_if:NTF \l_@@_init_bool { \@@_setup_alphabets_implicit: }
+    \bool_if:NTF \g_@@_init_bool { \@@_setup_alphabets_implicit: }
       {
         \seq_if_empty:NF \g_@@_mathalph_seq { \@@_setup_alphabets_explicit: }
         \clist_if_empty:NF \l_@@_mathmap_charints_clist { \@@_setup_alphabets_inherit: }
@@ -33,7 +33,7 @@
 %
 % \begin{macro}{ \@@_setup_alphabets_implicit:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_alphabets_implicit:
+\@@_cs_new:Nn \@@_setup_alphabets_implicit:
   {
     \@@_log:n {setup-implicit}
     \seq_gset_eq:NN \g_@@_mathalph_seq \g_@@_default_mathalph_seq
@@ -51,7 +51,7 @@
 %
 % \begin{macro}{ \@@_setup_alphabets_explicit:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_alphabets_explicit:
+\@@_cs_new:Nn \@@_setup_alphabets_explicit:
   {
     \@@_log:n {setup-explicit}
     \bool_set_false:N \l_@@_implicit_alph_bool
@@ -65,7 +65,7 @@
 %
 % \begin{macro}{ \@@_setup_alphabets_inherit:}
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_alphabets_inherit:
+\@@_cs_new:Nn \@@_setup_alphabets_inherit:
   {
     \seq_gclear:N \g_@@_mathalph_seq
     \seq_map_inline:Nn \g_@@_default_mathalph_seq
@@ -135,7 +135,7 @@
         \tl_set:Nn \l_@@_alphabet_tl {##1}
         \@@_if_alphabet_exists:nnTF \l_@@_style_tl \l_@@_alphabet_tl
           {
-            \str_if_eq_x:nnTF {\l_@@_alphabet_tl} {misc}
+            \str_if_eq:eeTF {\l_@@_alphabet_tl} {misc}
               {
                 \@@_maybe_init_alphabet:n \l_@@_style_tl
                 \clist_map_break:
@@ -162,13 +162,13 @@
 % \dots and then loop through them defining the individual ranges:
 % (currently this process is slow)
 %    \begin{macrocode}
-\cs_new:Nn \@@_setup_math_alphabet:
+\@@_cs_new:Nn \@@_setup_math_alphabet:
   {
     \clist_map_inline:Nn \l_@@_alphabet_clist
       {
         \tl_set:Nx \l_@@_alphabet_tl { \tl_trim_spaces:n {##1} }
 
-%<debug>\typeout{_setup_math_alphabet:~\l_@@_style_tl/\l_@@_alphabet_tl}
+%<debug>\@@_debug:n {_setup_math_alphabet:~\l_@@_style_tl/\l_@@_alphabet_tl}
 
         \@@_if_alphabet_exists:nnT {\l_@@_style_tl} {\l_@@_alphabet_tl}
           {
@@ -586,7 +586,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -19,14 +19,15 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\cs_set:Nn \@@_setmathfontface:Nnn
+\@@_cs_new:Nn \@@_setmathfontface:Nnn
   {
     \tl_clear:N \l_@@_mversion_tl
 
     \keys_set_known:nnN {@@_mathface} {#2} \l_@@_keyval_clist
 
-    \exp_args:Nnx \fontspec_set_family:Nxn \l_@@_tmpa_tl
-      { ItalicFont={}, BoldFont={}, \exp_not:V \l_@@_keyval_clist } {#3}
+    \fontspec_set_family:Nxx \l_@@_tmpa_tl
+      { ItalicFont={}, BoldFont={}, SmallCapsFont={}, \exp_not:V \l_@@_keyval_clist }
+      { #3 }
 
     \tl_if_empty:NT \l_@@_mversion_tl
       {
@@ -113,8 +114,8 @@
       {
         \cs_set_eq:NN \@@_group_begin:  \@@_group_begin_frozen:
         \cs_set_eq:NN \@@_group_end:n   \@@_group_end_frozen:n
-        \cs_set_eq:NN \math at bgroup \@@math at bgroup
-        \cs_set_eq:NN \math at egroup \@@math at egroup
+        \cs_set_eq:NN \math at bgroup \@@@@math at bgroup
+        \cs_set_eq:NN \math at egroup \@@@@math at egroup
       }
     \cs_set_eq:NN \math at egroup \@@_group_end:n
     #1 \scan_stop:
@@ -133,34 +134,34 @@
 %
 %    \begin{macrocode}
 \cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
+\@@_cs_set:Nn \__fontspec_setmainfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
       {
-%<XE>   \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
-%<LU>   \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
+%<XE>   \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
+%<LU>   \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathrm_hook:nn {#1} {#2}
       }
   }
 %    \end{macrocode}
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
+\@@_cs_set:Nn \__fontspec_setsansfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
       {
-%<XE>   \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
-%<LU>   \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
+%<XE>   \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
+%<LU>   \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathsf_hook:nn {#1} {#2}
       }
   }
 %    \end{macrocode}
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
+\@@_cs_set:Nn \__fontspec_setmonofont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
       {
-%<XE>   \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
-%<LU>   \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
+%<XE>   \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
+%<LU>   \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathtt_hook:nn {#1} {#2}
       }
   }
@@ -170,7 +171,7 @@
 %
 % If the maths fonts are set explicitly, then the text commands above will not execute their branches to set the maths font alphabets.
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
+\@@_cs_set:Nn \__fontspec_setmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
@@ -178,7 +179,7 @@
   }
 %    \end{macrocode}
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
+\@@_cs_set:Nn \__fontspec_setboldmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
@@ -186,7 +187,7 @@
   }
 %    \end{macrocode}
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
+\@@_cs_set:Nn \__fontspec_setmathsf_hook:nn
   {
     \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
     \SetMathAlphabet\mathsf{bold}  \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
@@ -193,7 +194,7 @@
   }
 %    \end{macrocode}
 %    \begin{macrocode}
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
+\@@_cs_set:Nn \__fontspec_setmathtt_hook:nn
   {
     \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
     \SetMathAlphabet\mathtt{bold}  \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
@@ -236,7 +237,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -49,7 +49,7 @@
  }
 \@@_msg_new:nn {missing-alphabets}
  {
-  Missingmathalphabetsinfont "\fontname\g_@@_curr_font_cmd_tl" \\ \\
+  Missing math alphabets in font "\fontname\g_@@_curr_font_cmd_tl" \\ \\
   \seq_map_function:NN \l_@@_missing_alph_seq \@@_print_indent:n
  }
 \cs_new:Nn \@@_print_indent:n { \space\space\space\space #1 \\ }
@@ -119,6 +119,13 @@
     No main maths font has been set up yet.\\If you simply want ‘the default’, use: \\
     \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
   }
+\@@_msg_new:nn {not-ot-math}
+  {
+    The first font loaded by unicode-math must be an OpenType Math font (with script=math).
+    If you simply want ‘the default’ before loading supplementary fonts over the top for certain
+    ranges, use: \\
+    \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
+  }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -140,7 +147,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -20,7 +20,6 @@
 \RequirePackage{filehook}
 \RequirePackage{fix-cm}
 %<LU>\RequirePackage{lualatex-math}
-%<debug>\RequirePackage{l3benchmark}
 %    \end{macrocode}
 %
 % \subsection{\pkg{expl3} variants}
@@ -32,7 +31,7 @@
 %
 % For \pkg{fontspec}:
 %    \begin{macrocode}
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
+\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx,Nxx}
 \cs_generate_variant:Nn \prop_get:NnNTF {cx}
 \cs_generate_variant:Nn \tl_if_eq:nnF {o}
 %    \end{macrocode}
@@ -56,7 +55,7 @@
 %    \begin{macrocode}
 \prg_new_conditional:Nnn \@@_glyph_if_exist:Nn {p,TF,T,F}
   {
-    \etex_iffontchar:D #1 #2 \scan_stop:
+    \tex_iffontchar:D #1 #2 \scan_stop:
       \prg_return_true:
     \else:
       \prg_return_false:
@@ -231,7 +230,30 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%^^A \begin{function}[EXP, added = 2019-01-19]{\@@_int_if_zero_p:n, \@@_int_if_zero:nTF}
+%^^A   \begin{syntax}
+%^^A     \cs{int_if_zero_p:n} \Arg{intexpr}
+%^^A     \cs{int_if_zero:nTF} \Arg{intexpr} \Arg{true code} \Arg{false code}
+%^^A   \end{syntax}
+%^^A   A conditional for testing if the \meta{intexpr} evaluates to zero.
+%^^A   This is simply a shorthand for
+%^^A   \begin{verbatim}
+%^^A     \int_compare_p:nNn {intexpr} = {0}
+%^^A   \end{verbatim}
+%^^A \end{function}
 %
+% \begin{macro}{\@@_int_if_zero_p:n}
+% \begin{macro}{\@@_int_if_zero:nTF}
+%    \begin{macrocode}
+\prg_new_conditional:Nnn \@@_int_if_zero:n {p,TF,T,F}
+  {
+    \int_compare:nNnTF {#1} = 0 {\prg_return_true:} {\prg_return_false:}
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
 % \subsection{Alphabet Unicode positions (USVs)}
 %
 % Before we begin, let's define the positions of the various Unicode
@@ -284,7 +306,7 @@
 %    \end{macrocode}
 %
 %
-% \subsection{Wrappers for message functions}
+% \subsection{Wrappers for kernel commands}
 %
 % Messages themselves are defined in \secref{codemsg}.
 %
@@ -304,82 +326,57 @@
 %    \end{macrocode}
 %
 %
+% \begin{macro}{\@@_cs_new:Nn}
 %    \begin{macrocode}
-%</package>
-%    \end{macrocode}
-
-\endinput
-
-
-% \subsection{Sow/reap}
-%
-% This might make it into the kernel; not sure.
-% Not actually used yet in the package!
-%
-% \begin{macro}{\__@@_sow_item:Nn}
-% Helper variables for constructing \verb|c|-type arguments.
-%    \begin{macrocode}
-\cs_new:Nn \__@@_sow_item:Nn  { l___sow___ \token_to_str:N #1 ___ #2 ___tl }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\__@@_sow_int:N}
-% Helper variables for constructing \verb|c|-type arguments.
-%    \begin{macrocode}
-\cs_new:Nn \__@@_sow_int:N  { l___sow___ \token_to_str:N #1 ___int }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_sow_prepare:N}
-%    \begin{macrocode}
-\cs_new:Nn \@@_sow_prepare:N
+%<*debug>
+\int_new:N \g_@@_debug_nest_int
+\cs_new:Nn \@@_debug:n
   {
-    \tl_clear:N #1
-    \int_zero_new:c { \__@@_sow_int:N #1 }
+    \typeout{ <UM~DEBUG>~\prg_replicate:nn \g_@@_debug_nest_int {::}~ #1}
   }
+\cs_new:Nn \@@_debug_start:n
+  {
+    \int_gincr:N \g_@@_debug_nest_int
+    \@@_debug:n {#1}
+  }
+\cs_new:Nn \@@_debug_end:n
+  {
+    \int_gdecr:N \g_@@_debug_nest_int
+  }
+%</debug>
 %    \end{macrocode}
-% \end{macro}
 %
-% \begin{macro}{\@@_sow:Nn}
 %    \begin{macrocode}
-\cs_new:Nn \@@_sow:Nn
+\cs_new:Npn \@@_cs_set:Nn #1 #2
   {
-    \int_incr:c { \__@@_sow_int:N #1 }
-    \tl_clear_new:c
+    \cs_if_exist:NF #1 { \ERROR{CS~ DOES~ NOT~ EXIST,~ USE~ "NEW"} }
+    \cs_set_protected:Nn #1
       {
-        \__@@_sow_item:Nn #1
-          { \int_use:c { \__@@_sow_int:N #1 } }
+%<debug>\@@_debug_start:n { \cs_to_str:N #1 }
+        #2
+%<debug>\@@_debug_end:n   { \cs_to_str:N #1 }
       }
-    \tl_set:cn
+  }
+\cs_new:Npn \@@_cs_new:Nn #1 #2
+  {
+    \cs_new_protected:Nn #1
       {
-        \__@@_sow_item:Nn #1
-          { \int_use:c { \__@@_sow_int:N #1 } }
+%<debug>\@@_debug_start:n { \cs_to_str:N #1 }
+        #2
+%<debug>\@@_debug_end:n   { \cs_to_str:N #1 }
       }
-      { #2 }
   }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_sow_reap:N}
+%
 %    \begin{macrocode}
-\cs_new:Nn \@@_sow_reap:N
-  {
-    \cs_set:Npn \__@@_sow_tmp:n ##1
-      {
-        \exp_not:v { \__@@_sow_item:Nn #1 {##1} }
-      }
-    \tl_set:Nx #1
-      {
-        \int_step_function:nnnN {1} {1}
-          { \int_use:c { \__@@_sow_int:N #1 } }
-          \__@@_sow_tmp:n
-      }
-
-  }
+%</package>
 %    \end{macrocode}
-% \end{macro}
 
+\endinput
 
+
 % /©
 %
 % ------------------------------------------------
@@ -389,7 +386,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -321,7 +321,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -18,7 +18,7 @@
 % However, in a correctly behaving OpenType font,
 % we also see different behaviour after the \texttt{ssty} feature is applied:
 % \begin{quote}
-% \font\1="[xits-math.otf]:script=math,+ssty=0"\1
+% \font\1="[XITSMath-Regular.otf]:script=math,+ssty=0"\1
 % \char"1D465\char"2032\quad
 % \char"1D465\char"2033\quad
 % \char"1D465\char"2034\quad
@@ -376,7 +376,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -17,18 +17,16 @@
 %
 % In time, the case statement inside |set_mathsymbol| will be moved in here
 % to avoid re-running it every time.
-%    \begin{macrocode}
-\cs_new:Npn \@@_symbol_setup:
- {
-  \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
-   {
-    \exp_not:n { \_@@_sym:nnn {##1} {##2} {##3} }
-   }
- }
-%    \end{macrocode}
 %
 %    \begin{macrocode}
-\tl_gset_from_file_x:Nnn \g_@@_mathtable_tl {\@@_symbol_setup:} {unicode-math-table.tex}
+\group_begin:
+  \file_get:nnN {unicode-math-table.tex} {} \l_@@_mathtable_tl
+  \cs_set:Npn \UnicodeMathSymbol #1#2#3#4
+    {
+      \exp_not:n { \_@@_sym:nnn {#1} {#2} {#3} }
+    }
+  \tl_gset:Nx \g_@@_mathtable_tl {\l_@@_mathtable_tl}
+\group_end:
 %    \end{macrocode}
 %
 %
@@ -35,7 +33,7 @@
 % \begin{macro}{\@@_input_math_symbol_table:}
 % This function simply expands to the token list containing all the data.
 %    \begin{macrocode}
-\cs_new:Nn \@@_input_math_symbol_table: {\g_@@_mathtable_tl}
+\@@_cs_new:Nn \@@_input_math_symbol_table: {\g_@@_mathtable_tl}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -46,7 +44,7 @@
 % make sure |#| is an `other' so that we don't get confused with \cs{mathoctothorpe}.
 %    \begin{macrocode}
 \AtBeginDocument{\@@_define_math_chars:}
-\cs_new:Nn \@@_define_math_chars:
+\@@_cs_new:Nn \@@_define_math_chars:
  {
   \group_begin:
     \cs_set:Npn \_@@_sym:nnn ##1##2##3
@@ -291,7 +289,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -59,7 +59,7 @@
 % Collects a chain of subscripts or a chain
 % of superscripts and then typesets what it has collected.
 %    \begin{macrocode}
-\cs_new:Nn \@@_scan_sscript:
+\@@_cs_new:Nn \@@_scan_sscript:
   {
     \@@_scan_sscript:TF
       { \@@_scan_sscript: }
@@ -76,7 +76,7 @@
 % The \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} are
 % needed in case |#3| is |&|.
 %    \begin{macrocode}
-\cs_new:Nn \@@_scan_sscript:TF
+\@@_cs_new:Nn \@@_scan_sscript:TF
   {
     \peek_N_type:TF
       {
@@ -88,7 +88,7 @@
 %    \end{macrocode}
 % The look-ahead for the sscripts doesn't try to peek inside the lookahead.
 %    \begin{macrocode}
-\cs_new:Nn \@@_scan_sscript_aux:nnN
+\@@_cs_new:Nn \@@_scan_sscript_aux:nnN
   {
     \tl_set:Nx \l_@@_tmpa_key_tl { \tl_to_str:n {#3} }
     \prop_get:cxNTF {g_@@_\l_@@_tmpa_tl _prop}
@@ -229,7 +229,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sym-commands.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sym-commands.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sym-commands.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -53,7 +53,7 @@
 % The flag \cs{l_@@_mathstyle_tl} is for other applications to query the
 % current math style.
 %    \begin{macrocode}
-\cs_new:Nn \@@_prepare_mathstyle:n
+\@@_cs_new:Nn \@@_prepare_mathstyle:n
   {
     \seq_gput_right:Nn \g_@@_mathstyles_seq {#1}
     \@@_init_alphabet:n {#1}
@@ -80,7 +80,7 @@
 % First used when the math alphabet macro is first defined, but then used
 % later when redefining a particular maths alphabet.
 %    \begin{macrocode}
-\cs_set:Nn \@@_init_alphabet:n
+\@@_cs_new:Nn \@@_init_alphabet:n
   {
     \@@_log:nx {alph-initialise} {#1}
     \tl_gclear_new:c {g_@@_switchto_#1_tl}
@@ -100,7 +100,7 @@
 % It’s currently not using all of the machinery we’re in the process of setting up above.
 % Baby steps.
 %    \begin{macrocode}
-\cs_new:Nn \@@_default_mathalph:nnn
+\@@_cs_new:Nn \@@_default_mathalph:nnn
   {
     \prop_new:c {g_@@_named_range_#1_prop}
     \seq_gput_right:Nn \g_@@_default_mathalph_seq {{#1}{#2}{#3}}
@@ -169,16 +169,17 @@
 % \subsubsection{New commands for ambiguous alphabets}
 %
 %    \begin{macrocode}
-\AtBeginDocument
+\AtBeginDocument { \@@_setup_mathtext: }
+\@@_cs_new:Nn \@@_setup_mathtext:
   {
     \clist_map_inline:nn
       { rm, it, bf, sf, tt }
       {
-        \cs_set_protected:cpx { math #1 }
+        \cs_set_protected:cpx { math ##1 }
         {
-          \exp_not:n { \bool_if:NTF  } \exp_not:c { g_@@_ math #1 _text_bool}
-            { \exp_not:c { mathtext #1 } }
-            { \exp_not:c { sym #1 } }
+          \exp_not:n { \bool_if:NTF  } \exp_not:c { g_@@_ math ##1 _text_bool}
+            { \exp_not:c { mathtext ##1 } }
+            { \exp_not:c { sym ##1 } }
         }
       }
   }
@@ -206,7 +207,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -92,7 +92,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -583,7 +583,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -21,7 +21,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\bool_new:N \l_@@_init_bool
+\bool_new:N \g_@@_init_bool
 \bool_new:N \l_@@_implicit_alph_bool
 %    \end{macrocode}
 % For \opt{math-style}:
@@ -70,6 +70,10 @@
 %
 % \subsection{tl}
 %
+%    \begin{macrocode}
+\tl_if_exist:NF \g_@@_secret_hook_tl { \tl_new:N \g_@@_secret_hook_tl }
+%    \end{macrocode}
+%
 % For displaying in warning messages, etc.:
 %    \begin{macrocode}
 \tl_const:Nn \c_@@_math_alphabet_name_latin_tl {Latin,~lowercase}
@@ -94,10 +98,14 @@
 %
 %    \begin{macrocode}
 \tl_new:N \l_@@_tmpa_tl
+\tl_new:N \l_@@_tmpb_tl
+\tl_new:N \l_@@_tmpc_tl
 \tl_new:N \l_@@_mathstyle_tl
 \tl_new:N \l_@@_radicals_tl
 \tl_new:N \l_@@_nolimits_tl
 \tl_new:N \l_@@_trial_family_tl
+\tl_new:N \l_@@_ss_chain_tl
+\tl_new:N \l_@@_tmpa_key_tl
 %    \end{macrocode}
 %
 % Used to store the font switch for the \cs{operator at font}.
@@ -108,6 +116,7 @@
 %    \begin{macrocode}
 \tl_new:N \g_@@_slash_delimiter_usv
 \tl_new:N \g_@@_mathparam_settings_tl
+\tl_new:N \l_@@_mathtable_tl
 \tl_new:N \g_@@_mathtable_tl
 \tl_new:N \g_@@_fontname_tl
 \tl_new:N \g_@@_mversion_tl
@@ -141,7 +150,7 @@
 \clist_new:N \g_@@_alphabet_clist
 \clist_new:N \l_@@_mathmap_charints_clist
 \clist_new:N \l_@@_unknown_keys_clist
-\clist_new:N \l_@@_font_keyval_clist
+\clist_new:N \l_@@_keyval_clist
 \clist_new:N \l_@@_alphabet_clist
 %    \end{macrocode}
 %
@@ -239,7 +248,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx	2019-02-15 22:23:04 UTC (rev 50032)
@@ -60,7 +60,7 @@
 %<base>\ProvidesExplPackage{unicode-math}
 %<package&XE>\ProvidesExplPackage{unicode-math-xetex}
 %<package&LU>\ProvidesExplPackage{unicode-math-luatex}
-%<base|package>  {2018/07/29} {v0.8m} {Unicode maths in XeLaTeX and LuaLaTeX}
+%<base|package>  {2019/02/15} {0.8n} {Unicode maths in XeLaTeX and LuaLaTeX}
 %    \end{macrocode}
 %
 % Here the version and date are setup for typesetting the documentation.
@@ -67,8 +67,8 @@
 %    \begin{macrocode}
 %<*dtx>
 \date{
-  \def\filedate{2018/07/29}
-  \def\fileversion{v0.8m}
+  \def\filedate{2019/02/15}
+  \def\fileversion{0.8n}
   \filedate \qquad \fileversion
 }
 %</dtx>
@@ -102,7 +102,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins	2019-02-15 22:23:04 UTC (rev 50032)
@@ -55,7 +55,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty	2019-02-15 22:23:04 UTC (rev 50032)
@@ -43,7 +43,7 @@
 %%^^A%% Metadata for the package code, including files and versioning
 
 \ProvidesExplPackage{unicode-math-luatex}
-  {2018/07/29} {v0.8m} {Unicode maths in XeLaTeX and LuaLaTeX}
+  {2019/02/15} {0.8n} {Unicode maths in XeLaTeX and LuaLaTeX}
 
 %%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Assorted initialisation tasks, including some low-level function definitions.
@@ -54,7 +54,7 @@
 \RequirePackage{fix-cm}
 \RequirePackage{lualatex-math}
 \cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
+\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx,Nxx}
 \cs_generate_variant:Nn \prop_get:NnNTF {cx}
 \cs_generate_variant:Nn \tl_if_eq:nnF {o}
 \cs_set_eq:NN \__um_group_begin: \group_begin:
@@ -63,7 +63,7 @@
 \cs_set_eq:NN \__um_group_end_frozen:n  \__um_group_end:n
 \prg_new_conditional:Nnn \__um_glyph_if_exist:Nn {p,TF,T,F}
   {
-    \etex_iffontchar:D #1 #2 \scan_stop:
+    \tex_iffontchar:D #1 #2 \scan_stop:
       \prg_return_true:
     \else:
       \prg_return_false:
@@ -140,6 +140,10 @@
       \lua_now:n { fontspec.mathfontdimen(font.current(),"#2") }
     \scan_stop:
   }
+\prg_new_conditional:Nnn \__um_int_if_zero:n {p,TF,T,F}
+  {
+    \int_compare:nNnTF {#1} = 0 {\prg_return_true:} {\prg_return_false:}
+  }
 \cs_new:Nn \usv_set:nnn  { \tl_const:cn { c__um_#1_#2_usv } {#3} }
 \cs_new:Nn \__um_to_usv:nn {       \use:c { c__um_#1_#2_usv } }
 \prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
@@ -175,6 +179,21 @@
 \cs_generate_variant:Nn \msg_new:nnn  {nnx}
 \cs_generate_variant:Nn \msg_new:nnnn {nnxx}
 \cs_new:Nn \__um_msg_new:nn  { \msg_new:nnx  {unicode-math} {#1} { \tl_trim_spaces:n {#2} } }
+\cs_new:Npn \__um_cs_set:Nn #1 #2
+  {
+    \cs_if_exist:NF #1 { \ERROR{CS~ DOES~ NOT~ EXIST,~ USE~ "NEW"} }
+    \cs_set_protected:Nn #1
+      {
+        #2
+      }
+  }
+\cs_new:Npn \__um_cs_new:Nn #1 #2
+  {
+    \cs_new_protected:Nn #1
+      {
+        #2
+      }
+  }
 
 %%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Declaration of all code-level variables used in the package.
@@ -181,7 +200,7 @@
 
 \bool_new:N \g__um_ot_math_bool
 \bool_new:N \g__um_main_font_defined_bool
-\bool_new:N \l__um_init_bool
+\bool_new:N \g__um_init_bool
 \bool_new:N \l__um_implicit_alph_bool
 \bool_new:N \g__um_literal_bool
 \bool_new:N \g__um_upLatin_bool
@@ -209,6 +228,7 @@
 \int_new:N \g__um_fam_int
 \int_new:N \g__um_fonts_used_int
 \int_new:N \l__um_primecount_int
+\tl_if_exist:NF \g__um_secret_hook_tl { \tl_new:N \g__um_secret_hook_tl }
 \tl_const:Nn \c__um_math_alphabet_name_latin_tl {Latin,~lowercase}
 \tl_const:Nn \c__um_math_alphabet_name_Latin_tl {Latin,~uppercase}
 \tl_const:Nn \c__um_math_alphabet_name_greek_tl {Greek,~lowercase}
@@ -225,13 +245,18 @@
 \tl_new:N \l__um_fam_three_tl
 \tl_new:N \l__um_curr_named_slot
 \tl_new:N \l__um_tmpa_tl
+\tl_new:N \l__um_tmpb_tl
+\tl_new:N \l__um_tmpc_tl
 \tl_new:N \l__um_mathstyle_tl
 \tl_new:N \l__um_radicals_tl
 \tl_new:N \l__um_nolimits_tl
 \tl_new:N \l__um_trial_family_tl
+\tl_new:N \l__um_ss_chain_tl
+\tl_new:N \l__um_tmpa_key_tl
 \tl_new:N \g__um_operator_mathfont_tl
 \tl_new:N \g__um_slash_delimiter_usv
 \tl_new:N \g__um_mathparam_settings_tl
+\tl_new:N \l__um_mathtable_tl
 \tl_new:N \g__um_mathtable_tl
 \tl_new:N \g__um_fontname_tl
 \tl_new:N \g__um_mversion_tl
@@ -250,7 +275,7 @@
 \clist_new:N \g__um_alphabet_clist
 \clist_new:N \l__um_mathmap_charints_clist
 \clist_new:N \l__um_unknown_keys_clist
-\clist_new:N \l__um_font_keyval_clist
+\clist_new:N \l__um_keyval_clist
 \clist_new:N \l__um_alphabet_clist
 \clist_new:N \g__um_bad_alpha_clist
 \clist_gput_right:Nx \g__um_bad_alpha_clist { \tl_to_str:n {bf} }
@@ -580,7 +605,7 @@
  }
 \__um_msg_new:nn {missing-alphabets}
  {
-  Missingmathalphabetsinfont "\fontname\g__um_curr_font_cmd_tl" \\ \\
+  Missing math alphabets in font "\fontname\g__um_curr_font_cmd_tl" \\ \\
   \seq_map_function:NN \l__um_missing_alph_seq \__um_print_indent:n
  }
 \cs_new:Nn \__um_print_indent:n { \space\space\space\space #1 \\ }
@@ -650,6 +675,13 @@
     No main maths font has been set up yet.\\If you simply want ^^e2^^80^^98the default^^e2^^80^^99, use: \\
     \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
   }
+\__um_msg_new:nn {not-ot-math}
+  {
+    The first font loaded by unicode-math must be an OpenType Math font (with script=math).
+    If you simply want ^^e2^^80^^98the default^^e2^^80^^99 before loading supplementary fonts over the top for certain
+    ranges, use: \\
+    \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
+  }
 \char_set_catcode_ignore:n {32}
 
 %%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
@@ -903,17 +935,17 @@
 %%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% General assignment of maths symbols.
 
-\cs_new:Npn \__um_symbol_setup:
- {
-  \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
-   {
-    \exp_not:n { \__um_sym:nnn {##1} {##2} {##3} }
-   }
- }
-\tl_gset_from_file_x:Nnn \g__um_mathtable_tl {\__um_symbol_setup:} {unicode-math-table.tex}
-\cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl}
+\group_begin:
+  \file_get:nnN {unicode-math-table.tex} {} \l__um_mathtable_tl
+  \cs_set:Npn \UnicodeMathSymbol #1#2#3#4
+    {
+      \exp_not:n { \__um_sym:nnn {#1} {#2} {#3} }
+    }
+  \tl_gset:Nx \g__um_mathtable_tl {\l__um_mathtable_tl}
+\group_end:
+\__um_cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl}
 \AtBeginDocument{\__um_define_math_chars:}
-\cs_new:Nn \__um_define_math_chars:
+\__um_cs_new:Nn \__um_define_math_chars:
  {
   \group_begin:
     \cs_set:Npn \__um_sym:nnn ##1##2##3
@@ -1051,14 +1083,15 @@
   {
     version .tl_set:N = \l__um_mversion_tl
   }
-\cs_set:Nn \__um_setmathfontface:Nnn
+\__um_cs_new:Nn \__um_setmathfontface:Nnn
   {
     \tl_clear:N \l__um_mversion_tl
 
     \keys_set_known:nnN {__um_mathface} {#2} \l__um_keyval_clist
 
-    \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
-      { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
+    \fontspec_set_family:Nxx \l__um_tmpa_tl
+      { ItalicFont={}, BoldFont={}, SmallCapsFont={}, \exp_not:V \l__um_keyval_clist }
+      { #3 }
 
     \tl_if_empty:NT \l__um_mversion_tl
       {
@@ -1097,55 +1130,55 @@
       {
         \cs_set_eq:NN \__um_group_begin:  \__um_group_begin_frozen:
         \cs_set_eq:NN \__um_group_end:n   \__um_group_end_frozen:n
-        \cs_set_eq:NN \math at bgroup \__ummath at bgroup
-        \cs_set_eq:NN \math at egroup \__ummath at egroup
+        \cs_set_eq:NN \math at bgroup \@@math at bgroup
+        \cs_set_eq:NN \math at egroup \@@math at egroup
       }
     \cs_set_eq:NN \math at egroup \__um_group_end:n
     #1 \scan_stop:
   }
 \cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
+\__um_cs_set:Nn \__fontspec_setmainfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathrm_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
+\__um_cs_set:Nn \__fontspec_setsansfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathsf_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
+\__um_cs_set:Nn \__fontspec_setmonofont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
         \__fontspec_setmathtt_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
     \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
   }
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
+\__um_cs_set:Nn \__fontspec_setboldmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
   }
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathsf_hook:nn
   {
     \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
     \SetMathAlphabet\mathsf{bold}  \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
   }
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathtt_hook:nn
   {
     \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
     \SetMathAlphabet\mathtt{bold}  \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
@@ -1163,7 +1196,7 @@
 %%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Definition of `\setmainfont`.
 
-\cs_set:Nn \__um_setmathfont:nn
+\__um_cs_new:Nn \__um_setmathfont:nn
   {
 
     \__um_init:n {#2}
@@ -1173,14 +1206,12 @@
 
     \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
 
-    \bool_if:NT \l__um_init_bool
-      {
-        \__um_fontspec_trial_font:
-        \__um_declare_math_sizes:
-      }
+    \bool_if:NT \g__um_init_bool \__um_fontspec_trial_font:
+    \bool_if:NT \g__um_init_bool \__um_declare_math_sizes:
+
     \__um_fontspec_select_font:
     \__um_setup_math_fam:
-    \bool_if:NT \l__um_init_bool
+    \bool_if:NT \g__um_init_bool
       {
         \__um_setup_legacy_fam_two:
         \__um_setup_legacy_fam_three:
@@ -1188,7 +1219,7 @@
 
     \__um_input_math_symbol_table:
 
-    \bool_if:NT \l__um_init_bool \__um_onceoff_setup:
+    \bool_if:NT \g__um_init_bool \__um_onceoff_setup:
     \__um_remap_symbols:
     \__um_setup_mathactives:
     \__um_setup_delcodes:
@@ -1196,7 +1227,7 @@
 
     %% TODO: what of the above should only be run for the "default"/"main" font?
 
-    \bool_if:NTF \l__um_init_bool
+    \bool_if:NTF \g__um_init_bool
       {
         \bool_gset_true:N \g__um_main_font_defined_bool
    \__um_mathparam_store:
@@ -1206,16 +1237,12 @@
    \__um_mathparam_restore:
       }
   }
-\AtBeginDocument { \__um_load_lm_if_necessary: }
-\cs_new:Nn \__um_load_lm_if_necessary:
+\AtBeginDocument { \bool_if:NF \g__um_main_font_defined_bool \__um_load_lm: }
+\__um_cs_new:Nn \__um_load_lm:
   {
-    \bool_if:NF \g__um_main_font_defined_bool
-      {
-        \setmathfont{latinmodern-math.otf}
-          [BoldFont={latinmodern-math.otf}]
-      }
+    \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
   }
-\cs_new:Nn \__um_init:n
+\__um_cs_new:Nn \__um_init:n
   {
     \tl_set:Nn \l__um_fontname_tl {#1}
     \bool_gset_true:N  \g__um_ot_math_bool
@@ -1227,7 +1254,7 @@
     \tl_set_eq:NN \l__um_script_font_tl      \l__um_fontname_tl
     \tl_set_eq:NN \l__um_sscript_font_tl     \l__um_fontname_tl
 
-    \bool_set_true:N \l__um_init_bool
+    \bool_gset_true:N \g__um_init_bool
     \seq_gclear:N    \g__um_char_range_seq
     \clist_clear:N   \l__um_mathmap_charints_clist
     \seq_gclear:N    \g__um_mathalph_seq
@@ -1240,21 +1267,21 @@
     \cs_set_eq:NN \__um_make_mathactive:nNN       \__um_make_mathactive_noparse:nNN
   }
 \tl_new:N \g__um_main_font_cmd_tl
-\cs_new:Nn \__um_declare_math_sizes:
+\cs_new:Nn \__um_sf_size:  { \__um_fontdimen_to_scale:nN {10} \g__um_trial_font }
+\cs_new:Nn \__um_ssf_size: { \__um_fontdimen_to_scale:nN {11} \g__um_trial_font }
+\__um_cs_new:Nn \__um_declare_math_sizes:
   {
     \dim_compare:nF { \fontdimen 10 \g__um_trial_font == 0pt }
       {
-        \DeclareMathSizes { \f at size } { \f at size }
-          { \__um_fontdimen_to_scale:nN {10} \g__um_trial_font }
-          { \__um_fontdimen_to_scale:nN {11} \g__um_trial_font }
+        \DeclareMathSizes { \f at size } { \f at size } { \__um_sf_size: } { \__um_ssf_size: }
       }
   }
-\cs_new:Nn \__um_fontspec_trial_font:
+\__um_cs_new:Nn \__um_fontspec_trial_font:
   {
     \tl_set:Nx \l__um_font_keyval_tl
       {
    Renderer = Basic,
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
    FontAdjustment = { \__um_luatex_copy_fontdimens: },
         \l__um_unknown_keys_clist
@@ -1267,6 +1294,7 @@
       \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \g__um_trial_font \font at name
       \fontspec_if_script:nF {math}
         {
+          \__um_warning:n {not-ot-math}
           \bool_gset_false:N \g__um_ot_math_bool
           \bool_gset_false:N \g__um_init_bool
         }
@@ -1273,15 +1301,15 @@
     \group_end:
 
   }
-\cs_new:Nn \__um_fontspec_select_font:
+\__um_cs_new:Nn \__um_fontspec_select_font:
   {
-    \fp_gset:Nn \g__um_size_tfsf_fp   { (\f at size +\sf at size )/2 }
-    \fp_gset:Nn \g__um_size_sfssf_fp  { (\sf at size+\ssf at size)/2 }
+    \fp_gset:Nn \g__um_size_tfsf_fp   { (\f at size + \__um_sf_size: )/2 }
+    \fp_gset:Nn \g__um_size_sfssf_fp  { (\__um_sf_size: + \__um_ssf_size:)/2 }
 
     \tl_set:Nx \l__um_font_keyval_tl
       {
    Renderer = Basic,
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
         SizeFeatures =
           {
@@ -1310,21 +1338,16 @@
       \fontfamily { \l__um_family_tl } \selectfont
       \exp_last_unbraced:Nno \__um_fontface_gset_eq:cN {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} \font at name
       \tl_gset:Nx \g__um_curr_font_cmd_tl { \exp_not:c {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} }
-      \bool_if:NT \l__um_init_bool
+      \bool_if:NT \g__um_init_bool
 {
 \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \l__um_font \font at name
 }
-      \fontspec_if_script:nF {math}
-        {
-          \bool_gset_false:N \g__um_ot_math_bool
-          \bool_gset_false:N \g__um_init_bool
-        }
     \group_end:
   }
 \tl_gset:Nn \g__um_main_font_cmd_tl  { \l__um_font }
 \tl_gset:Nn \g__um_sqrt_font_cmd_tl  { \l__um_font }
 \tl_gset:Nn \g__um_prime_font_cmd_tl { \l__um_font }
-\cs_new_protected:Nn \__um_luatex_copy_fontdimens:
+\__um_cs_new:Nn \__um_luatex_copy_fontdimens:
   {
     \__um_fontdimen_from_param:nn {10} {ScriptPercentScaleDown}
     \__um_fontdimen_from_param:nn {11} {ScriptScriptPercentScaleDown}
@@ -1345,7 +1368,7 @@
     \__um_fontdimen_from_param:nn {45} {FractionDenominatorDisplayStyleShiftDown}
     \__um_fontdimen_from_param:nn {48} {FractionRuleThickness}
   }
-\cs_new:Nn \__um_setup_math_fam:
+\__um_cs_new:Nn \__um_setup_math_fam:
   {
     \cs_if_exist:cF { sym \l__um_symfont_label_tl }
       {
@@ -1354,18 +1377,18 @@
       }
     \SetSymbolFont{\l__um_symfont_label_tl}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{\l__um_symfont_label_tl}{bold}
           {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_setup_legacy_fam_two:
+\__um_cs_new:Nn \__um_setup_legacy_fam_two:
   {
     \fontspec_set_family:Nxn \l__um_fam_two_tl
       {
         \l__um_font_keyval_tl,
-        Scale=1.00001,
+        ScaleAgain = 1.00001,
         FontAdjustment =
           {
             \__um_copy_fontdimen:nnN { 8} {43} \g__um_main_font_cmd_tl
@@ -1389,18 +1412,18 @@
     \SetSymbolFont{symbols}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_fam_two_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{symbols}{bold}
           {\encodingdefault}{\l__um_fam_two_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_setup_legacy_fam_three:
+\__um_cs_new:Nn \__um_setup_legacy_fam_three:
   {
     \fontspec_set_family:Nxn \l__um_fam_three_tl
       {
         \l__um_font_keyval_tl,
-        Scale=0.99999,
+        ScaleAgain = 0.99999,
         FontAdjustment = {
           \__um_copy_fontdimen:nnN { 8} {48} \g__um_main_font_cmd_tl
           \__um_copy_fontdimen:nnN { 9} {28} \g__um_main_font_cmd_tl
@@ -1414,15 +1437,15 @@
     \SetSymbolFont{largesymbols}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_fam_three_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{largesymbols}{bold}
           {\encodingdefault}{\l__um_fam_three_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_onceoff_setup:
+\__um_cs_new:Nn \__um_onceoff_setup:
   {
-    \__um_set_delcode:nnn {operators} {`\.} {\c_zero}
+    \__um_set_delcode:nnn {operators} {`\.} {0}
   }
 \cs_set:Nn \__um_process_symbol_noparse:nnn
   {
@@ -1435,7 +1458,7 @@
         \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
       }
   }
-\cs_new:Nn \__um_remap_symbols:
+\__um_cs_new:Nn \__um_remap_symbols:
   {
     \__um_remap_symbol:nnn {`\-} {\mathbin} {"2212}
     \__um_remap_symbol:nnn {`\*} {\mathbin} {"02217}% text asterisk to "centred asterisk"
@@ -1454,7 +1477,7 @@
     \clist_map_inline:nn {#1}
       { \__um_set_mathcode:nnnn {##1} {#2} {\l__um_symfont_label_tl} {#3} }
   }
-\cs_new:Npn \__um_setup_mathactives:
+\__um_cs_new:Nn \__um_setup_mathactives:
   {
 \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
 \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
@@ -1488,7 +1511,7 @@
       }
   }
 \cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} }
-\cs_new:Npn \__um_setup_delcodes:
+\__um_cs_new:Nn \__um_setup_delcodes:
   {
     \__um_assign_delcode:nn {`\/}   {\g__um_slash_delimiter_usv}
     \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
@@ -1533,12 +1556,12 @@
     \intcap\intcup\upint\lowint
   }
 \tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision \cuberoot \fourthroot}
-\cs_set:Nn \__um_mathparam_restore:
+\__um_cs_new:Nn \__um_mathparam_restore:
   {
     \glb at settings
     \tl_use:N \g__um_mathparam_settings_tl
   }
-\cs_set:Nn \__um_mathparam_store:
+\__um_cs_new:Nn \__um_mathparam_store:
   {
     \glb at settings
     \tl_gset:Nx \g__um_mathparam_settings_tl
@@ -1621,7 +1644,7 @@
     range .code:n =
       {
         \bool_if:NF \g__um_main_font_defined_bool { \__um_error:n {no-main-font} }
-        \bool_set_false:N \l__um_init_bool
+        \bool_gset_false:N \g__um_init_bool
         \__um_range_init:
         \group_begin:
           \seq_map_inline:Nn \g__um_mathclasses_seq
@@ -1637,7 +1660,7 @@
         \group_end:
       }
   }
-\cs_new:Nn \__um_range_init:
+\__um_cs_new:Nn \__um_range_init:
   {
     \int_gincr:N \g__um_fam_int
     \tl_set:Nx \l__um_symfont_label_tl {__um_fam\int_use:N\g__um_fam_int}
@@ -1659,7 +1682,6 @@
 }
 \cs_new:Nn \__um_mathalph_decl:nF
   {
-
     \tl_set:Nn  \l__um_tmpa_tl {#1}
     \tl_clear:N \l__um_tmpb_tl
     \tl_clear:N \l__um_tmpc_tl
@@ -1864,11 +1886,11 @@
 \__um_font_param:n { connector_overlap_min }
 \cs_new:Nn \__um_fontdimen_to_percent:nN
   {
-    \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 }
+    \fp_eval:n { \dim_to_decimal:n { 65536 \fontdimen #1 #2 } / 100 }
   }
 \cs_new:Nn \__um_fontdimen_to_scale:nN
   {
-    \fp_eval:n { \__um_fontdimen_to_percent:nN {#1} #2 * \f at size } pt
+    \fp_eval:n { \__um_fontdimen_to_percent:nN {#1} #2 * \f at size }
   }
 \cs_new:Nn \__um_mathstyle_scale:NnnN
   {
@@ -1886,15 +1908,15 @@
 %%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Setup of symbol alphabets.
 
-\cs_new:Npn \__um_setup_alphabets:
+\__um_cs_new:Nn \__um_setup_alphabets:
   {
-    \bool_if:NTF \l__um_init_bool { \__um_setup_alphabets_implicit: }
+    \bool_if:NTF \g__um_init_bool { \__um_setup_alphabets_implicit: }
       {
         \seq_if_empty:NF \g__um_mathalph_seq { \__um_setup_alphabets_explicit: }
         \clist_if_empty:NF \l__um_mathmap_charints_clist { \__um_setup_alphabets_inherit: }
       }
   }
-\cs_new:Nn \__um_setup_alphabets_implicit:
+\__um_cs_new:Nn \__um_setup_alphabets_implicit:
   {
     \__um_log:n {setup-implicit}
     \seq_gset_eq:NN \g__um_mathalph_seq \g__um_default_mathalph_seq
@@ -1907,7 +1929,7 @@
     \__um_mathalph_map:
     \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } }
   }
-\cs_new:Nn \__um_setup_alphabets_explicit:
+\__um_cs_new:Nn \__um_setup_alphabets_explicit:
   {
     \__um_log:n {setup-explicit}
     \bool_set_false:N \l__um_implicit_alph_bool
@@ -1916,7 +1938,7 @@
     \__um_mathalph_map:
     \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } }
   }
-\cs_new:Nn \__um_setup_alphabets_inherit:
+\__um_cs_new:Nn \__um_setup_alphabets_inherit:
   {
     \seq_gclear:N \g__um_mathalph_seq
     \seq_map_inline:Nn \g__um_default_mathalph_seq
@@ -1974,7 +1996,7 @@
         \tl_set:Nn \l__um_alphabet_tl {##1}
         \__um_if_alphabet_exists:nnTF \l__um_style_tl \l__um_alphabet_tl
           {
-            \str_if_eq_x:nnTF {\l__um_alphabet_tl} {misc}
+            \str_if_eq:eeTF {\l__um_alphabet_tl} {misc}
               {
                 \__um_maybe_init_alphabet:n \l__um_style_tl
                 \clist_map_break:
@@ -1994,7 +2016,7 @@
           }
       }
   }
-\cs_new:Nn \__um_setup_math_alphabet:
+\__um_cs_new:Nn \__um_setup_math_alphabet:
   {
     \clist_map_inline:Nn \l__um_alphabet_clist
       {
@@ -2238,7 +2260,7 @@
 %%^^A%% um-code-sym-commands.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Definition of "math symbol alphabet" commands such as `\symbf` and co.
 
-\cs_new:Nn \__um_prepare_mathstyle:n
+\__um_cs_new:Nn \__um_prepare_mathstyle:n
   {
     \seq_gput_right:Nn \g__um_mathstyles_seq {#1}
     \__um_init_alphabet:n {#1}
@@ -2255,7 +2277,7 @@
         \__um_group_end:n
       }
   }
-\cs_set:Nn \__um_init_alphabet:n
+\__um_cs_new:Nn \__um_init_alphabet:n
   {
     \__um_log:nx {alph-initialise} {#1}
     \tl_gclear_new:c {g__um_switchto_#1_tl}
@@ -2265,7 +2287,7 @@
   {
     \tl_use:c {g__um_switchto_#1_tl}
   }
-\cs_new:Nn \__um_default_mathalph:nnn
+\__um_cs_new:Nn \__um_default_mathalph:nnn
   {
     \prop_new:c {g__um_named_range_#1_prop}
     \seq_gput_right:Nn \g__um_default_mathalph_seq {{#1}{#2}{#3}}
@@ -2308,16 +2330,17 @@
   {
     \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } }
   }
-\AtBeginDocument
+\AtBeginDocument { \__um_setup_mathtext: }
+\__um_cs_new:Nn \__um_setup_mathtext:
   {
     \clist_map_inline:nn
       { rm, it, bf, sf, tt }
       {
-        \cs_set_protected:cpx { math #1 }
+        \cs_set_protected:cpx { math ##1 }
         {
-          \exp_not:n { \bool_if:NTF  } \exp_not:c { g__um_ math #1 _text_bool}
-            { \exp_not:c { mathtext #1 } }
-            { \exp_not:c { sym #1 } }
+          \exp_not:n { \bool_if:NTF  } \exp_not:c { g__um_ math ##1 _text_bool}
+            { \exp_not:c { mathtext ##1 } }
+            { \exp_not:c { sym ##1 } }
         }
       }
   }
@@ -3469,13 +3492,13 @@
         \__um_scan_sscript:
       }
   }
-\cs_new:Nn \__um_scan_sscript:
+\__um_cs_new:Nn \__um_scan_sscript:
   {
     \__um_scan_sscript:TF
       { \__um_scan_sscript: }
       { \__um_sub_or_super:n {\l__um_ss_chain_tl} }
   }
-\cs_new:Nn \__um_scan_sscript:TF
+\__um_cs_new:Nn \__um_scan_sscript:TF
   {
     \peek_N_type:TF
       {
@@ -3484,7 +3507,7 @@
       }
       {#2}
   }
-\cs_new:Nn \__um_scan_sscript_aux:nnN
+\__um_cs_new:Nn \__um_scan_sscript_aux:nnN
   {
     \tl_set:Nx \l__um_tmpa_key_tl { \tl_to_str:n {#3} }
     \prop_get:cxNTF {g__um_\l__um_tmpa_tl _prop}
@@ -3632,7 +3655,7 @@
   }
 \AtEndOfPackageFile * {url}
   {
-    \tl_put_left:Nn \Url at FormatString { \__um_switch_to:n {up} }
+    \tl_put_left:Nn \Url at FormatString { \__um_switch_to:n {literal} }
     \tl_put_right:Nn \UrlSpecials
       {
         \do \` { \mathchar`\` }
@@ -3724,8 +3747,7 @@
     {
       \bool_if:nTF
         {
-          \int_compare_p:nNn { \uproot@ } = { \c_zero }
-          && \int_compare_p:nNn { \leftroot@ } = { \c_zero }
+          \__um_int_if_zero_p:n \uproot@ && \__um_int_if_zero_p:n \leftroot@
         }
         {
           \Uroot \c__um_radical_sqrt_tl { #1 } { #2 }
@@ -3956,5 +3978,6 @@
 \__um_undeclare_symbol:N \arrowvert
 \__um_undeclare_symbol:N \Arrowvert
 \__um_undeclare_symbol:N \bracevert
+\AtBeginDocument{\g__um_secret_hook_tl}
 \endinput
 

Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex	2019-02-15 22:23:04 UTC (rev 50032)
@@ -89,7 +89,7 @@
 \UnicodeMathSymbol{"003B2}{\mupbeta                  }{\mathalpha}{small beta, greek}%
 \UnicodeMathSymbol{"003B3}{\mupgamma                 }{\mathalpha}{small gamma, greek}%
 \UnicodeMathSymbol{"003B4}{\mupdelta                 }{\mathalpha}{small delta, greek}%
-\UnicodeMathSymbol{"003B5}{\mupvarepsilon            }{\mathalpha}{rounded small varepsilon    , greek}%
+\UnicodeMathSymbol{"003B5}{\mupvarepsilon            }{\mathalpha}{rounded small varepsilon, greek}%
 \UnicodeMathSymbol{"003B6}{\mupzeta                  }{\mathalpha}{small zeta, greek}%
 \UnicodeMathSymbol{"003B7}{\mupeta                   }{\mathalpha}{small eta, greek}%
 \UnicodeMathSymbol{"003B8}{\muptheta                 }{\mathalpha}{straight theta, small theta, greek}%
@@ -686,7 +686,7 @@
 \UnicodeMathSymbol{"025AF}{\vrectangle               }{\mathord}{rectangle, white (vertical)}%
 \UnicodeMathSymbol{"025B0}{\parallelogramblack       }{\mathord}{black parallelogram}%
 \UnicodeMathSymbol{"025B1}{\parallelogram            }{\mathord}{parallelogram, open}%
-\UnicodeMathSymbol{"025B2}{\bigblacktriangleup       }{\mathord}{   0x25b2 6 6d      black up-pointing triangle}%
+\UnicodeMathSymbol{"025B2}{\bigblacktriangleup       }{\mathord}{black up-pointing triangle}%
 \UnicodeMathSymbol{"025B3}{\bigtriangleup            }{\mathbin}{big up triangle, open}%
 \UnicodeMathSymbol{"025B4}{\blacktriangle            }{\mathord}{up triangle, filled}%
 \UnicodeMathSymbol{"025B5}{\vartriangle              }{\mathrel}{/triangle - up triangle, open}%
@@ -2133,7 +2133,7 @@
 \UnicodeMathSymbol{"1D6C3}{\mbfbeta                  }{\mathalpha}{mathematical bold small beta}%
 \UnicodeMathSymbol{"1D6C4}{\mbfgamma                 }{\mathalpha}{mathematical bold small gamma}%
 \UnicodeMathSymbol{"1D6C5}{\mbfdelta                 }{\mathalpha}{mathematical bold small delta}%
-\UnicodeMathSymbol{"1D6C6}{\mbfvarepsilon            }{\mathalpha}{mathematical bold small varepsilon    }%
+\UnicodeMathSymbol{"1D6C6}{\mbfvarepsilon            }{\mathalpha}{mathematical bold small varepsilon}%
 \UnicodeMathSymbol{"1D6C7}{\mbfzeta                  }{\mathalpha}{mathematical bold small zeta}%
 \UnicodeMathSymbol{"1D6C8}{\mbfeta                   }{\mathalpha}{mathematical bold small eta}%
 \UnicodeMathSymbol{"1D6C9}{\mbftheta                 }{\mathalpha}{mathematical bold small theta}%
@@ -2155,7 +2155,7 @@
 \UnicodeMathSymbol{"1D6D9}{\mbfpsi                   }{\mathalpha}{mathematical bold small psi}%
 \UnicodeMathSymbol{"1D6DA}{\mbfomega                 }{\mathalpha}{mathematical bold small omega}%
 \UnicodeMathSymbol{"1D6DB}{\mbfpartial               }{\mathalpha}{mathematical bold partial differential}%
-\UnicodeMathSymbol{"1D6DC}{\mbfepsilon               }{\mathalpha}{mathematical bold varepsilon     symbol}%
+\UnicodeMathSymbol{"1D6DC}{\mbfepsilon               }{\mathalpha}{mathematical bold varepsilon symbol}%
 \UnicodeMathSymbol{"1D6DD}{\mbfvartheta              }{\mathalpha}{mathematical bold theta symbol}%
 \UnicodeMathSymbol{"1D6DE}{\mbfvarkappa              }{\mathalpha}{mathematical bold kappa symbol}%
 \UnicodeMathSymbol{"1D6DF}{\mbfphi                   }{\mathalpha}{mathematical bold phi symbol}%
@@ -2191,7 +2191,7 @@
 \UnicodeMathSymbol{"1D6FD}{\mitbeta                  }{\mathalpha}{mathematical italic small beta}%
 \UnicodeMathSymbol{"1D6FE}{\mitgamma                 }{\mathalpha}{mathematical italic small gamma}%
 \UnicodeMathSymbol{"1D6FF}{\mitdelta                 }{\mathalpha}{mathematical italic small delta}%
-\UnicodeMathSymbol{"1D700}{\mitvarepsilon            }{\mathalpha}{mathematical italic small varepsilon    }%
+\UnicodeMathSymbol{"1D700}{\mitvarepsilon            }{\mathalpha}{mathematical italic small varepsilon}%
 \UnicodeMathSymbol{"1D701}{\mitzeta                  }{\mathalpha}{mathematical italic small zeta}%
 \UnicodeMathSymbol{"1D702}{\miteta                   }{\mathalpha}{mathematical italic small eta}%
 \UnicodeMathSymbol{"1D703}{\mittheta                 }{\mathalpha}{mathematical italic small theta}%
@@ -2213,7 +2213,7 @@
 \UnicodeMathSymbol{"1D713}{\mitpsi                   }{\mathalpha}{mathematical italic small psi}%
 \UnicodeMathSymbol{"1D714}{\mitomega                 }{\mathalpha}{mathematical italic small omega}%
 \UnicodeMathSymbol{"1D715}{\mitpartial               }{\mathalpha}{mathematical italic partial differential}%
-\UnicodeMathSymbol{"1D716}{\mitepsilon               }{\mathalpha}{mathematical italic varepsilon     symbol}%
+\UnicodeMathSymbol{"1D716}{\mitepsilon               }{\mathalpha}{mathematical italic varepsilon symbol}%
 \UnicodeMathSymbol{"1D717}{\mitvartheta              }{\mathalpha}{mathematical italic theta symbol}%
 \UnicodeMathSymbol{"1D718}{\mitvarkappa              }{\mathalpha}{mathematical italic kappa symbol}%
 \UnicodeMathSymbol{"1D719}{\mitphi                   }{\mathalpha}{mathematical italic phi symbol}%
@@ -2249,7 +2249,7 @@
 \UnicodeMathSymbol{"1D737}{\mbfitbeta                }{\mathalpha}{mathematical bold italic small beta}%
 \UnicodeMathSymbol{"1D738}{\mbfitgamma               }{\mathalpha}{mathematical bold italic small gamma}%
 \UnicodeMathSymbol{"1D739}{\mbfitdelta               }{\mathalpha}{mathematical bold italic small delta}%
-\UnicodeMathSymbol{"1D73A}{\mbfitvarepsilon          }{\mathalpha}{mathematical bold italic small varepsilon    }%
+\UnicodeMathSymbol{"1D73A}{\mbfitvarepsilon          }{\mathalpha}{mathematical bold italic small varepsilon}%
 \UnicodeMathSymbol{"1D73B}{\mbfitzeta                }{\mathalpha}{mathematical bold italic small zeta}%
 \UnicodeMathSymbol{"1D73C}{\mbfiteta                 }{\mathalpha}{mathematical bold italic small eta}%
 \UnicodeMathSymbol{"1D73D}{\mbfittheta               }{\mathalpha}{mathematical bold italic small theta}%
@@ -2271,7 +2271,7 @@
 \UnicodeMathSymbol{"1D74D}{\mbfitpsi                 }{\mathalpha}{mathematical bold italic small psi}%
 \UnicodeMathSymbol{"1D74E}{\mbfitomega               }{\mathalpha}{mathematical bold italic small omega}%
 \UnicodeMathSymbol{"1D74F}{\mbfitpartial             }{\mathalpha}{mathematical bold italic partial differential}%
-\UnicodeMathSymbol{"1D750}{\mbfitepsilon             }{\mathalpha}{mathematical bold italic varepsilon     symbol}%
+\UnicodeMathSymbol{"1D750}{\mbfitepsilon             }{\mathalpha}{mathematical bold italic varepsilon symbol}%
 \UnicodeMathSymbol{"1D751}{\mbfitvartheta            }{\mathalpha}{mathematical bold italic theta symbol}%
 \UnicodeMathSymbol{"1D752}{\mbfitvarkappa            }{\mathalpha}{mathematical bold italic kappa symbol}%
 \UnicodeMathSymbol{"1D753}{\mbfitphi                 }{\mathalpha}{mathematical bold italic phi symbol}%
@@ -2307,7 +2307,7 @@
 \UnicodeMathSymbol{"1D771}{\mbfsansbeta              }{\mathalpha}{mathematical sans-serif bold small beta}%
 \UnicodeMathSymbol{"1D772}{\mbfsansgamma             }{\mathalpha}{mathematical sans-serif bold small gamma}%
 \UnicodeMathSymbol{"1D773}{\mbfsansdelta             }{\mathalpha}{mathematical sans-serif bold small delta}%
-\UnicodeMathSymbol{"1D774}{\mbfsansvarepsilon        }{\mathalpha}{mathematical sans-serif bold small varepsilon    }%
+\UnicodeMathSymbol{"1D774}{\mbfsansvarepsilon        }{\mathalpha}{mathematical sans-serif bold small varepsilon}%
 \UnicodeMathSymbol{"1D775}{\mbfsanszeta              }{\mathalpha}{mathematical sans-serif bold small zeta}%
 \UnicodeMathSymbol{"1D776}{\mbfsanseta               }{\mathalpha}{mathematical sans-serif bold small eta}%
 \UnicodeMathSymbol{"1D777}{\mbfsanstheta             }{\mathalpha}{mathematical sans-serif bold small theta}%
@@ -2329,7 +2329,7 @@
 \UnicodeMathSymbol{"1D787}{\mbfsanspsi               }{\mathalpha}{mathematical sans-serif bold small psi}%
 \UnicodeMathSymbol{"1D788}{\mbfsansomega             }{\mathalpha}{mathematical sans-serif bold small omega}%
 \UnicodeMathSymbol{"1D789}{\mbfsanspartial           }{\mathalpha}{mathematical sans-serif bold partial differential}%
-\UnicodeMathSymbol{"1D78A}{\mbfsansepsilon           }{\mathalpha}{mathematical sans-serif bold varepsilon     symbol}%
+\UnicodeMathSymbol{"1D78A}{\mbfsansepsilon           }{\mathalpha}{mathematical sans-serif bold varepsilon symbol}%
 \UnicodeMathSymbol{"1D78B}{\mbfsansvartheta          }{\mathalpha}{mathematical sans-serif bold theta symbol}%
 \UnicodeMathSymbol{"1D78C}{\mbfsansvarkappa          }{\mathalpha}{mathematical sans-serif bold kappa symbol}%
 \UnicodeMathSymbol{"1D78D}{\mbfsansphi               }{\mathalpha}{mathematical sans-serif bold phi symbol}%
@@ -2365,7 +2365,7 @@
 \UnicodeMathSymbol{"1D7AB}{\mbfitsansbeta            }{\mathalpha}{mathematical sans-serif bold italic small beta}%
 \UnicodeMathSymbol{"1D7AC}{\mbfitsansgamma           }{\mathalpha}{mathematical sans-serif bold italic small gamma}%
 \UnicodeMathSymbol{"1D7AD}{\mbfitsansdelta           }{\mathalpha}{mathematical sans-serif bold italic small delta}%
-\UnicodeMathSymbol{"1D7AE}{\mbfitsansvarepsilon      }{\mathalpha}{mathematical sans-serif bold italic small varepsilon    }%
+\UnicodeMathSymbol{"1D7AE}{\mbfitsansvarepsilon      }{\mathalpha}{mathematical sans-serif bold italic small varepsilon}%
 \UnicodeMathSymbol{"1D7AF}{\mbfitsanszeta            }{\mathalpha}{mathematical sans-serif bold italic small zeta}%
 \UnicodeMathSymbol{"1D7B0}{\mbfitsanseta             }{\mathalpha}{mathematical sans-serif bold italic small eta}%
 \UnicodeMathSymbol{"1D7B1}{\mbfitsanstheta           }{\mathalpha}{mathematical sans-serif bold italic small theta}%
@@ -2387,7 +2387,7 @@
 \UnicodeMathSymbol{"1D7C1}{\mbfitsanspsi             }{\mathalpha}{mathematical sans-serif bold italic small psi}%
 \UnicodeMathSymbol{"1D7C2}{\mbfitsansomega           }{\mathalpha}{mathematical sans-serif bold italic small omega}%
 \UnicodeMathSymbol{"1D7C3}{\mbfitsanspartial         }{\mathalpha}{mathematical sans-serif bold italic partial differential}%
-\UnicodeMathSymbol{"1D7C4}{\mbfitsansepsilon         }{\mathalpha}{mathematical sans-serif bold italic varepsilon     symbol}%
+\UnicodeMathSymbol{"1D7C4}{\mbfitsansepsilon         }{\mathalpha}{mathematical sans-serif bold italic varepsilon symbol}%
 \UnicodeMathSymbol{"1D7C5}{\mbfitsansvartheta        }{\mathalpha}{mathematical sans-serif bold italic theta symbol}%
 \UnicodeMathSymbol{"1D7C6}{\mbfitsansvarkappa        }{\mathalpha}{mathematical sans-serif bold italic kappa symbol}%
 \UnicodeMathSymbol{"1D7C7}{\mbfitsansphi             }{\mathalpha}{mathematical sans-serif bold italic phi symbol}%
@@ -2457,7 +2457,7 @@
 % the conditions of the LaTeX Project Public License, version 1.3c or higher
 % (your choice): <http://www.latex-project.org/lppl/>.
 % ------------------------------------------------
-% Copyright 2006-2018  Will Robertson, LPPL "maintainer"
+% Copyright 2006-2019  Will Robertson, LPPL "maintainer"
 % Copyright 2010-2017  Philipp Stephani
 % Copyright 2011-2017  Joseph Wright
 % Copyright 2012-2015  Khaled Hosny

Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty	2019-02-15 22:23:04 UTC (rev 50032)
@@ -43,7 +43,7 @@
 %%^^A%% Metadata for the package code, including files and versioning
 
 \ProvidesExplPackage{unicode-math-xetex}
-  {2018/07/29} {v0.8m} {Unicode maths in XeLaTeX and LuaLaTeX}
+  {2019/02/15} {0.8n} {Unicode maths in XeLaTeX and LuaLaTeX}
 
 %%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Assorted initialisation tasks, including some low-level function definitions.
@@ -53,7 +53,7 @@
 \RequirePackage{filehook}
 \RequirePackage{fix-cm}
 \cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
+\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx,Nxx}
 \cs_generate_variant:Nn \prop_get:NnNTF {cx}
 \cs_generate_variant:Nn \tl_if_eq:nnF {o}
 \cs_set_eq:NN \__um_group_begin: \group_begin:
@@ -62,7 +62,7 @@
 \cs_set_eq:NN \__um_group_end_frozen:n  \__um_group_end:n
 \prg_new_conditional:Nnn \__um_glyph_if_exist:Nn {p,TF,T,F}
   {
-    \etex_iffontchar:D #1 #2 \scan_stop:
+    \tex_iffontchar:D #1 #2 \scan_stop:
       \prg_return_true:
     \else:
       \prg_return_false:
@@ -133,6 +133,10 @@
   {
     \fontdimen #1 \font = 0pt\relax
   }
+\prg_new_conditional:Nnn \__um_int_if_zero:n {p,TF,T,F}
+  {
+    \int_compare:nNnTF {#1} = 0 {\prg_return_true:} {\prg_return_false:}
+  }
 \cs_new:Nn \usv_set:nnn  { \tl_const:cn { c__um_#1_#2_usv } {#3} }
 \cs_new:Nn \__um_to_usv:nn {       \use:c { c__um_#1_#2_usv } }
 \prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
@@ -168,6 +172,21 @@
 \cs_generate_variant:Nn \msg_new:nnn  {nnx}
 \cs_generate_variant:Nn \msg_new:nnnn {nnxx}
 \cs_new:Nn \__um_msg_new:nn  { \msg_new:nnx  {unicode-math} {#1} { \tl_trim_spaces:n {#2} } }
+\cs_new:Npn \__um_cs_set:Nn #1 #2
+  {
+    \cs_if_exist:NF #1 { \ERROR{CS~ DOES~ NOT~ EXIST,~ USE~ "NEW"} }
+    \cs_set_protected:Nn #1
+      {
+        #2
+      }
+  }
+\cs_new:Npn \__um_cs_new:Nn #1 #2
+  {
+    \cs_new_protected:Nn #1
+      {
+        #2
+      }
+  }
 
 %%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Declaration of all code-level variables used in the package.
@@ -174,7 +193,7 @@
 
 \bool_new:N \g__um_ot_math_bool
 \bool_new:N \g__um_main_font_defined_bool
-\bool_new:N \l__um_init_bool
+\bool_new:N \g__um_init_bool
 \bool_new:N \l__um_implicit_alph_bool
 \bool_new:N \g__um_literal_bool
 \bool_new:N \g__um_upLatin_bool
@@ -202,6 +221,7 @@
 \int_new:N \g__um_fam_int
 \int_new:N \g__um_fonts_used_int
 \int_new:N \l__um_primecount_int
+\tl_if_exist:NF \g__um_secret_hook_tl { \tl_new:N \g__um_secret_hook_tl }
 \tl_const:Nn \c__um_math_alphabet_name_latin_tl {Latin,~lowercase}
 \tl_const:Nn \c__um_math_alphabet_name_Latin_tl {Latin,~uppercase}
 \tl_const:Nn \c__um_math_alphabet_name_greek_tl {Greek,~lowercase}
@@ -218,13 +238,18 @@
 \tl_new:N \l__um_fam_three_tl
 \tl_new:N \l__um_curr_named_slot
 \tl_new:N \l__um_tmpa_tl
+\tl_new:N \l__um_tmpb_tl
+\tl_new:N \l__um_tmpc_tl
 \tl_new:N \l__um_mathstyle_tl
 \tl_new:N \l__um_radicals_tl
 \tl_new:N \l__um_nolimits_tl
 \tl_new:N \l__um_trial_family_tl
+\tl_new:N \l__um_ss_chain_tl
+\tl_new:N \l__um_tmpa_key_tl
 \tl_new:N \g__um_operator_mathfont_tl
 \tl_new:N \g__um_slash_delimiter_usv
 \tl_new:N \g__um_mathparam_settings_tl
+\tl_new:N \l__um_mathtable_tl
 \tl_new:N \g__um_mathtable_tl
 \tl_new:N \g__um_fontname_tl
 \tl_new:N \g__um_mversion_tl
@@ -242,7 +267,7 @@
 \clist_new:N \g__um_alphabet_clist
 \clist_new:N \l__um_mathmap_charints_clist
 \clist_new:N \l__um_unknown_keys_clist
-\clist_new:N \l__um_font_keyval_clist
+\clist_new:N \l__um_keyval_clist
 \clist_new:N \l__um_alphabet_clist
 \clist_new:N \g__um_bad_alpha_clist
 \clist_gput_right:Nx \g__um_bad_alpha_clist { \tl_to_str:n {bf} }
@@ -572,7 +597,7 @@
  }
 \__um_msg_new:nn {missing-alphabets}
  {
-  Missingmathalphabetsinfont "\fontname\g__um_curr_font_cmd_tl" \\ \\
+  Missing math alphabets in font "\fontname\g__um_curr_font_cmd_tl" \\ \\
   \seq_map_function:NN \l__um_missing_alph_seq \__um_print_indent:n
  }
 \cs_new:Nn \__um_print_indent:n { \space\space\space\space #1 \\ }
@@ -642,6 +667,13 @@
     No main maths font has been set up yet.\\If you simply want ^^e2^^80^^98the default^^e2^^80^^99, use: \\
     \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
   }
+\__um_msg_new:nn {not-ot-math}
+  {
+    The first font loaded by unicode-math must be an OpenType Math font (with script=math).
+    If you simply want ^^e2^^80^^98the default^^e2^^80^^99 before loading supplementary fonts over the top for certain
+    ranges, use: \\
+    \iow_indent:n {\token_to_str:N\setmathfont{latinmodern-math.otf}}
+  }
 \char_set_catcode_ignore:n {32}
 
 %%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
@@ -895,17 +927,17 @@
 %%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% General assignment of maths symbols.
 
-\cs_new:Npn \__um_symbol_setup:
- {
-  \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
-   {
-    \exp_not:n { \__um_sym:nnn {##1} {##2} {##3} }
-   }
- }
-\tl_gset_from_file_x:Nnn \g__um_mathtable_tl {\__um_symbol_setup:} {unicode-math-table.tex}
-\cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl}
+\group_begin:
+  \file_get:nnN {unicode-math-table.tex} {} \l__um_mathtable_tl
+  \cs_set:Npn \UnicodeMathSymbol #1#2#3#4
+    {
+      \exp_not:n { \__um_sym:nnn {#1} {#2} {#3} }
+    }
+  \tl_gset:Nx \g__um_mathtable_tl {\l__um_mathtable_tl}
+\group_end:
+\__um_cs_new:Nn \__um_input_math_symbol_table: {\g__um_mathtable_tl}
 \AtBeginDocument{\__um_define_math_chars:}
-\cs_new:Nn \__um_define_math_chars:
+\__um_cs_new:Nn \__um_define_math_chars:
  {
   \group_begin:
     \cs_set:Npn \__um_sym:nnn ##1##2##3
@@ -1043,14 +1075,15 @@
   {
     version .tl_set:N = \l__um_mversion_tl
   }
-\cs_set:Nn \__um_setmathfontface:Nnn
+\__um_cs_new:Nn \__um_setmathfontface:Nnn
   {
     \tl_clear:N \l__um_mversion_tl
 
     \keys_set_known:nnN {__um_mathface} {#2} \l__um_keyval_clist
 
-    \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
-      { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
+    \fontspec_set_family:Nxx \l__um_tmpa_tl
+      { ItalicFont={}, BoldFont={}, SmallCapsFont={}, \exp_not:V \l__um_keyval_clist }
+      { #3 }
 
     \tl_if_empty:NT \l__um_mversion_tl
       {
@@ -1089,55 +1122,55 @@
       {
         \cs_set_eq:NN \__um_group_begin:  \__um_group_begin_frozen:
         \cs_set_eq:NN \__um_group_end:n   \__um_group_end_frozen:n
-        \cs_set_eq:NN \math at bgroup \__ummath at bgroup
-        \cs_set_eq:NN \math at egroup \__ummath at egroup
+        \cs_set_eq:NN \math at bgroup \@@math at bgroup
+        \cs_set_eq:NN \math at egroup \@@math at egroup
       }
     \cs_set_eq:NN \math at egroup \__um_group_end:n
     #1 \scan_stop:
   }
 \cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
+\__um_cs_set:Nn \__fontspec_setmainfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
         \__fontspec_setmathrm_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
+\__um_cs_set:Nn \__fontspec_setsansfont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
         \__fontspec_setmathsf_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
+\__um_cs_set:Nn \__fontspec_setmonofont_hook:nn
   {
     \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
       {
-   \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
+   \fontspec_gset_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
         \__fontspec_setmathtt_hook:nn {#1} {#2}
       }
   }
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
     \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
   }
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
+\__um_cs_set:Nn \__fontspec_setboldmathrm_hook:nn
   {
     \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
     \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
     \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
   }
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathsf_hook:nn
   {
     \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
     \SetMathAlphabet\mathsf{bold}  \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
   }
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
+\__um_cs_set:Nn \__fontspec_setmathtt_hook:nn
   {
     \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
     \SetMathAlphabet\mathtt{bold}  \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
@@ -1155,7 +1188,7 @@
 %%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Definition of `\setmainfont`.
 
-\cs_set:Nn \__um_setmathfont:nn
+\__um_cs_new:Nn \__um_setmathfont:nn
   {
 
     \__um_init:n {#2}
@@ -1165,14 +1198,12 @@
 
     \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
 
-    \bool_if:NT \l__um_init_bool
-      {
-        \__um_fontspec_trial_font:
-        \__um_declare_math_sizes:
-      }
+    \bool_if:NT \g__um_init_bool \__um_fontspec_trial_font:
+    \bool_if:NT \g__um_init_bool \__um_declare_math_sizes:
+
     \__um_fontspec_select_font:
     \__um_setup_math_fam:
-    \bool_if:NT \l__um_init_bool
+    \bool_if:NT \g__um_init_bool
       {
         \__um_setup_legacy_fam_two:
         \__um_setup_legacy_fam_three:
@@ -1180,7 +1211,7 @@
 
     \__um_input_math_symbol_table:
 
-    \bool_if:NT \l__um_init_bool \__um_onceoff_setup:
+    \bool_if:NT \g__um_init_bool \__um_onceoff_setup:
     \__um_remap_symbols:
     \__um_setup_mathactives:
     \__um_setup_delcodes:
@@ -1188,7 +1219,7 @@
 
     %% TODO: what of the above should only be run for the "default"/"main" font?
 
-    \bool_if:NTF \l__um_init_bool
+    \bool_if:NTF \g__um_init_bool
       {
         \bool_gset_true:N \g__um_main_font_defined_bool
         \__um_log:n {default-math-font}
@@ -1196,16 +1227,12 @@
       {
       }
   }
-\AtBeginDocument { \__um_load_lm_if_necessary: }
-\cs_new:Nn \__um_load_lm_if_necessary:
+\AtBeginDocument { \bool_if:NF \g__um_main_font_defined_bool \__um_load_lm: }
+\__um_cs_new:Nn \__um_load_lm:
   {
-    \bool_if:NF \g__um_main_font_defined_bool
-      {
-        \setmathfont{latinmodern-math.otf}
-          [BoldFont={latinmodern-math.otf}]
-      }
+    \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
   }
-\cs_new:Nn \__um_init:n
+\__um_cs_new:Nn \__um_init:n
   {
     \tl_set:Nn \l__um_fontname_tl {#1}
     \bool_gset_true:N  \g__um_ot_math_bool
@@ -1217,7 +1244,7 @@
     \tl_set_eq:NN \l__um_script_font_tl      \l__um_fontname_tl
     \tl_set_eq:NN \l__um_sscript_font_tl     \l__um_fontname_tl
 
-    \bool_set_true:N \l__um_init_bool
+    \bool_gset_true:N \g__um_init_bool
     \seq_gclear:N    \g__um_char_range_seq
     \clist_clear:N   \l__um_mathmap_charints_clist
     \seq_gclear:N    \g__um_mathalph_seq
@@ -1230,20 +1257,20 @@
     \cs_set_eq:NN \__um_make_mathactive:nNN       \__um_make_mathactive_noparse:nNN
   }
 \tl_new:N \g__um_main_font_cmd_tl
-\cs_new:Nn \__um_declare_math_sizes:
+\cs_new:Nn \__um_sf_size:  { \__um_fontdimen_to_scale:nN {10} \g__um_trial_font }
+\cs_new:Nn \__um_ssf_size: { \__um_fontdimen_to_scale:nN {11} \g__um_trial_font }
+\__um_cs_new:Nn \__um_declare_math_sizes:
   {
     \dim_compare:nF { \fontdimen 10 \g__um_trial_font == 0pt }
       {
-        \DeclareMathSizes { \f at size } { \f at size }
-          { \__um_fontdimen_to_scale:nN {10} \g__um_trial_font }
-          { \__um_fontdimen_to_scale:nN {11} \g__um_trial_font }
+        \DeclareMathSizes { \f at size } { \f at size } { \__um_sf_size: } { \__um_ssf_size: }
       }
   }
-\cs_new:Nn \__um_fontspec_trial_font:
+\__um_cs_new:Nn \__um_fontspec_trial_font:
   {
     \tl_set:Nx \l__um_font_keyval_tl
       {
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
         \l__um_unknown_keys_clist
       }
@@ -1255,6 +1282,7 @@
       \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \g__um_trial_font \font at name
       \fontspec_if_script:nF {math}
         {
+          \__um_warning:n {not-ot-math}
           \bool_gset_false:N \g__um_ot_math_bool
           \bool_gset_false:N \g__um_init_bool
         }
@@ -1261,14 +1289,14 @@
     \group_end:
 
   }
-\cs_new:Nn \__um_fontspec_select_font:
+\__um_cs_new:Nn \__um_fontspec_select_font:
   {
-    \fp_gset:Nn \g__um_size_tfsf_fp   { (\f at size +\sf at size )/2 }
-    \fp_gset:Nn \g__um_size_sfssf_fp  { (\sf at size+\ssf at size)/2 }
+    \fp_gset:Nn \g__um_size_tfsf_fp   { (\f at size + \__um_sf_size: )/2 }
+    \fp_gset:Nn \g__um_size_sfssf_fp  { (\__um_sf_size: + \__um_ssf_size:)/2 }
 
     \tl_set:Nx \l__um_font_keyval_tl
       {
-        BoldItalicFont = {}, ItalicFont = {},
+        BoldItalicFont = {}, ItalicFont = {}, SmallCapsFont = {},
         Script = Math,
         SizeFeatures =
           {
@@ -1296,21 +1324,16 @@
       \fontfamily { \l__um_family_tl } \selectfont
       \exp_last_unbraced:Nno \__um_fontface_gset_eq:cN {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} \font at name
       \tl_gset:Nx \g__um_curr_font_cmd_tl { \exp_not:c {g__um_mathfont_ \int_use:N \g__um_fonts_used_int _font} }
-      \bool_if:NT \l__um_init_bool
+      \bool_if:NT \g__um_init_bool
 {
 \exp_last_unbraced:NNo \__um_fontface_gset_eq:NN \l__um_font \font at name
 }
-      \fontspec_if_script:nF {math}
-        {
-          \bool_gset_false:N \g__um_ot_math_bool
-          \bool_gset_false:N \g__um_init_bool
-        }
     \group_end:
   }
 \tl_gset:Nn \g__um_main_font_cmd_tl  { \l__um_font }
 \tl_gset:Nn \g__um_sqrt_font_cmd_tl  { \l__um_font }
 \tl_gset:Nn \g__um_prime_font_cmd_tl { \l__um_font }
-\cs_new:Nn \__um_setup_math_fam:
+\__um_cs_new:Nn \__um_setup_math_fam:
   {
     \cs_if_exist:cF { sym \l__um_symfont_label_tl }
       {
@@ -1319,18 +1342,18 @@
       }
     \SetSymbolFont{\l__um_symfont_label_tl}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{\l__um_symfont_label_tl}{bold}
           {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_setup_legacy_fam_two:
+\__um_cs_new:Nn \__um_setup_legacy_fam_two:
   {
     \fontspec_set_family:Nxn \l__um_fam_two_tl
       {
         \l__um_font_keyval_tl,
-        Scale=1.00001,
+        ScaleAgain = 1.00001,
         FontAdjustment =
           {
             \__um_copy_fontdimen:nnN { 8} {43} \g__um_main_font_cmd_tl
@@ -1354,18 +1377,18 @@
     \SetSymbolFont{symbols}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_fam_two_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{symbols}{bold}
           {\encodingdefault}{\l__um_fam_two_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_setup_legacy_fam_three:
+\__um_cs_new:Nn \__um_setup_legacy_fam_three:
   {
     \fontspec_set_family:Nxn \l__um_fam_three_tl
       {
         \l__um_font_keyval_tl,
-        Scale=0.99999,
+        ScaleAgain = 0.99999,
         FontAdjustment = {
           \__um_copy_fontdimen:nnN { 8} {48} \g__um_main_font_cmd_tl
           \__um_copy_fontdimen:nnN { 9} {28} \g__um_main_font_cmd_tl
@@ -1379,15 +1402,15 @@
     \SetSymbolFont{largesymbols}{\l__um_mversion_tl}
       {\encodingdefault}{\l__um_fam_three_tl}{\mddefault}{\updefault}
 
-    \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+    \str_if_eq:eeT {\l__um_mversion_tl} {normal}
       {
         \SetSymbolFont{largesymbols}{bold}
           {\encodingdefault}{\l__um_fam_three_tl}{\bfdefault}{\updefault}
       }
   }
-\cs_new:Nn \__um_onceoff_setup:
+\__um_cs_new:Nn \__um_onceoff_setup:
   {
-    \__um_set_delcode:nnn {operators} {`\.} {\c_zero}
+    \__um_set_delcode:nnn {operators} {`\.} {0}
   }
 \cs_set:Nn \__um_process_symbol_noparse:nnn
   {
@@ -1400,7 +1423,7 @@
         \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
       }
   }
-\cs_new:Nn \__um_remap_symbols:
+\__um_cs_new:Nn \__um_remap_symbols:
   {
     \__um_remap_symbol:nnn {`\-} {\mathbin} {"2212}
     \__um_remap_symbol:nnn {`\*} {\mathbin} {"02217}% text asterisk to "centred asterisk"
@@ -1419,7 +1442,7 @@
     \clist_map_inline:nn {#1}
       { \__um_set_mathcode:nnnn {##1} {#2} {\l__um_symfont_label_tl} {#3} }
   }
-\cs_new:Npn \__um_setup_mathactives:
+\__um_cs_new:Nn \__um_setup_mathactives:
   {
 \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
 \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
@@ -1453,7 +1476,7 @@
       }
   }
 \cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} }
-\cs_new:Npn \__um_setup_delcodes:
+\__um_cs_new:Nn \__um_setup_delcodes:
   {
     \__um_assign_delcode:nn {`\/}   {\g__um_slash_delimiter_usv}
     \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
@@ -1522,7 +1545,7 @@
     range .code:n =
       {
         \bool_if:NF \g__um_main_font_defined_bool { \__um_error:n {no-main-font} }
-        \bool_set_false:N \l__um_init_bool
+        \bool_gset_false:N \g__um_init_bool
         \__um_range_init:
         \group_begin:
           \seq_map_inline:Nn \g__um_mathclasses_seq
@@ -1538,7 +1561,7 @@
         \group_end:
       }
   }
-\cs_new:Nn \__um_range_init:
+\__um_cs_new:Nn \__um_range_init:
   {
     \int_gincr:N \g__um_fam_int
     \tl_set:Nx \l__um_symfont_label_tl {__um_fam\int_use:N\g__um_fam_int}
@@ -1560,7 +1583,6 @@
 }
 \cs_new:Nn \__um_mathalph_decl:nF
   {
-
     \tl_set:Nn  \l__um_tmpa_tl {#1}
     \tl_clear:N \l__um_tmpb_tl
     \tl_clear:N \l__um_tmpc_tl
@@ -1681,7 +1703,7 @@
 %%^^A%% Cross-platform interface for font parameters
 
 \cs_new_protected_nopar:Nn \__um_new_cramped_style:N
-  { \quark_new:N #1 }
+  { \tl_const:Nn #1 { \use_none:n #1 } }
 \__um_new_cramped_style:N \crampeddisplaystyle
 \__um_new_cramped_style:N \crampedtextstyle
 \__um_new_cramped_style:N \crampedscriptstyle
@@ -1717,7 +1739,7 @@
         }
       }
     }
-    \c_two
+    2~
   }
 \cs_new_protected_nopar:Nn \__um_font_param:nnnnn
   {
@@ -1793,11 +1815,11 @@
 \__um_font_param:n { connector_overlap_min }
 \cs_new:Nn \__um_fontdimen_to_percent:nN
   {
-    \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 }
+    \fp_eval:n { \dim_to_decimal:n { 65536 \fontdimen #1 #2 } / 100 }
   }
 \cs_new:Nn \__um_fontdimen_to_scale:nN
   {
-    \fp_eval:n { \__um_fontdimen_to_percent:nN {#1} #2 * \f at size } pt
+    \fp_eval:n { \__um_fontdimen_to_percent:nN {#1} #2 * \f at size }
   }
 \cs_new:Nn \__um_mathstyle_scale:NnnN
   {
@@ -1815,15 +1837,15 @@
 %%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Setup of symbol alphabets.
 
-\cs_new:Npn \__um_setup_alphabets:
+\__um_cs_new:Nn \__um_setup_alphabets:
   {
-    \bool_if:NTF \l__um_init_bool { \__um_setup_alphabets_implicit: }
+    \bool_if:NTF \g__um_init_bool { \__um_setup_alphabets_implicit: }
       {
         \seq_if_empty:NF \g__um_mathalph_seq { \__um_setup_alphabets_explicit: }
         \clist_if_empty:NF \l__um_mathmap_charints_clist { \__um_setup_alphabets_inherit: }
       }
   }
-\cs_new:Nn \__um_setup_alphabets_implicit:
+\__um_cs_new:Nn \__um_setup_alphabets_implicit:
   {
     \__um_log:n {setup-implicit}
     \seq_gset_eq:NN \g__um_mathalph_seq \g__um_default_mathalph_seq
@@ -1836,7 +1858,7 @@
     \__um_mathalph_map:
     \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } }
   }
-\cs_new:Nn \__um_setup_alphabets_explicit:
+\__um_cs_new:Nn \__um_setup_alphabets_explicit:
   {
     \__um_log:n {setup-explicit}
     \bool_set_false:N \l__um_implicit_alph_bool
@@ -1845,7 +1867,7 @@
     \__um_mathalph_map:
     \seq_if_empty:NF \l__um_missing_alph_seq { \__um_log:n { missing-alphabets } }
   }
-\cs_new:Nn \__um_setup_alphabets_inherit:
+\__um_cs_new:Nn \__um_setup_alphabets_inherit:
   {
     \seq_gclear:N \g__um_mathalph_seq
     \seq_map_inline:Nn \g__um_default_mathalph_seq
@@ -1903,7 +1925,7 @@
         \tl_set:Nn \l__um_alphabet_tl {##1}
         \__um_if_alphabet_exists:nnTF \l__um_style_tl \l__um_alphabet_tl
           {
-            \str_if_eq_x:nnTF {\l__um_alphabet_tl} {misc}
+            \str_if_eq:eeTF {\l__um_alphabet_tl} {misc}
               {
                 \__um_maybe_init_alphabet:n \l__um_style_tl
                 \clist_map_break:
@@ -1923,7 +1945,7 @@
           }
       }
   }
-\cs_new:Nn \__um_setup_math_alphabet:
+\__um_cs_new:Nn \__um_setup_math_alphabet:
   {
     \clist_map_inline:Nn \l__um_alphabet_clist
       {
@@ -2167,7 +2189,7 @@
 %%^^A%% um-code-sym-commands.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
 %%^^A%% Definition of "math symbol alphabet" commands such as `\symbf` and co.
 
-\cs_new:Nn \__um_prepare_mathstyle:n
+\__um_cs_new:Nn \__um_prepare_mathstyle:n
   {
     \seq_gput_right:Nn \g__um_mathstyles_seq {#1}
     \__um_init_alphabet:n {#1}
@@ -2184,7 +2206,7 @@
         \__um_group_end:n
       }
   }
-\cs_set:Nn \__um_init_alphabet:n
+\__um_cs_new:Nn \__um_init_alphabet:n
   {
     \__um_log:nx {alph-initialise} {#1}
     \tl_gclear_new:c {g__um_switchto_#1_tl}
@@ -2194,7 +2216,7 @@
   {
     \tl_use:c {g__um_switchto_#1_tl}
   }
-\cs_new:Nn \__um_default_mathalph:nnn
+\__um_cs_new:Nn \__um_default_mathalph:nnn
   {
     \prop_new:c {g__um_named_range_#1_prop}
     \seq_gput_right:Nn \g__um_default_mathalph_seq {{#1}{#2}{#3}}
@@ -2237,16 +2259,17 @@
   {
     \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } }
   }
-\AtBeginDocument
+\AtBeginDocument { \__um_setup_mathtext: }
+\__um_cs_new:Nn \__um_setup_mathtext:
   {
     \clist_map_inline:nn
       { rm, it, bf, sf, tt }
       {
-        \cs_set_protected:cpx { math #1 }
+        \cs_set_protected:cpx { math ##1 }
         {
-          \exp_not:n { \bool_if:NTF  } \exp_not:c { g__um_ math #1 _text_bool}
-            { \exp_not:c { mathtext #1 } }
-            { \exp_not:c { sym #1 } }
+          \exp_not:n { \bool_if:NTF  } \exp_not:c { g__um_ math ##1 _text_bool}
+            { \exp_not:c { mathtext ##1 } }
+            { \exp_not:c { sym ##1 } }
         }
       }
   }
@@ -3398,13 +3421,13 @@
         \__um_scan_sscript:
       }
   }
-\cs_new:Nn \__um_scan_sscript:
+\__um_cs_new:Nn \__um_scan_sscript:
   {
     \__um_scan_sscript:TF
       { \__um_scan_sscript: }
       { \__um_sub_or_super:n {\l__um_ss_chain_tl} }
   }
-\cs_new:Nn \__um_scan_sscript:TF
+\__um_cs_new:Nn \__um_scan_sscript:TF
   {
     \peek_N_type:TF
       {
@@ -3413,7 +3436,7 @@
       }
       {#2}
   }
-\cs_new:Nn \__um_scan_sscript_aux:nnN
+\__um_cs_new:Nn \__um_scan_sscript_aux:nnN
   {
     \tl_set:Nx \l__um_tmpa_key_tl { \tl_to_str:n {#3} }
     \prop_get:cxNTF {g__um_\l__um_tmpa_tl _prop}
@@ -3561,7 +3584,7 @@
   }
 \AtEndOfPackageFile * {url}
   {
-    \tl_put_left:Nn \Url at FormatString { \__um_switch_to:n {up} }
+    \tl_put_left:Nn \Url at FormatString { \__um_switch_to:n {literal} }
     \tl_put_right:Nn \UrlSpecials
       {
         \do \` { \mathchar`\` }
@@ -3601,7 +3624,7 @@
            \color at setgroup \c_math_toggle_token \m at th
              #1
              \dim_zero:N \nulldelimiterspace
-             \XeTeXradical \c_two_hundred_fifty_five \c_zero { #2 }
+             \XeTeXradical 255 ~ 0 ~ { #2 }
            \c_math_toggle_token \color at endgroup
          }
        \box_set_ht:Nn \l_tmpa_box
@@ -3951,5 +3974,6 @@
 \__um_undeclare_symbol:N \arrowvert
 \__um_undeclare_symbol:N \Arrowvert
 \__um_undeclare_symbol:N \bracevert
+\AtBeginDocument{\g__um_secret_hook_tl}
 \endinput
 

Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty	2019-02-15 22:22:44 UTC (rev 50031)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty	2019-02-15 22:23:04 UTC (rev 50032)
@@ -24,7 +24,7 @@
 
 \RequirePackage{expl3}
 \ProvidesExplPackage{unicode-math}
-  {2018/07/29} {v0.8m} {Unicode maths in XeLaTeX and LuaLaTeX}
+  {2019/02/15} {0.8n} {Unicode maths in XeLaTeX and LuaLaTeX}
 \sys_if_engine_luatex:T { \RequirePackageWithOptions{unicode-math-luatex} }
 \sys_if_engine_xetex:T  { \RequirePackageWithOptions{unicode-math-xetex}  }
 \sys_if_engine_pdftex:T



More information about the tex-live-commits mailing list