%\DocumentMetadata{pdfstandard={A-4F,UA-2}, tagging=off, lang=en-GB}
\documentclass[a4paper,12pt]{scrartcl}
\def\extrasenglish{}  % temporary fix for varioref bug
\usepackage{mathtools, array, varioref}
\usepackage[british]{babel}
\usepackage{xcharter-otf}
\usepackage{fourier-orns}
\setsansfont{Cabin}[Scale=MatchLowercase]
\setmonofont{Inconsolatazi4}[Scale=MatchLowercase,
                             HyphenChar=None,StylisticSet={2,3}]
\usepackage{subfig}
\captionsetup[subtable]{position=top}
\usepackage{realscripts}
\usepackage{microtype}
\usepackage{hyperref}
\hypersetup{pdftitle={XCharter-Math User’s Guide},
            pdfauthor={Daniel FLIPO},
            bookmarksopen,
            colorlinks
            }
\newcommand*{\hlabel}[1]{\phantomsection\label{#1}}

\newcommand*{\FGUT}{Fourier-GUT\textit{enberg}}
\newcommand*{\XCotf}{XCharter-Math}
\newcommand*{\pkg}[1]{\texttt{#1}}
\newcommand*{\file}[1]{\texttt{#1}}
\newcommand*{\ttbold}[1]{\texttt{\textbf{#1}}}
\newcommand*{\opt}[1]{\texttt{#1}}
\newcommand*{\cmd}[1]{\texttt{\textbackslash #1}}
\newcommand*{\showtchar}[1]{\cmd{#1}~\csname #1\endcsname}
\newcommand*{\showmchar}[1]{\cmd{#1}~$(\csname #1\endcsname)$}
\newcommand*{\showmchardollar}[1]{\texttt{\$\cmd{#1}\$}~$(\csname #1\endcsname)$}

\renewcommand{\labelitemi}{\lefthand}

\title{\decofourleft\,\XCotf\,\decofourright}
\author{Daniel Flipo \\ \texttt{daniel.flipo@free.fr}}

\newcommand*{\version}{0.75}

\begin{document}
\maketitle

\section{What is \XCotf{}?}

\XCotf{} is an OpenType maths font based on Bitstream Charter
meant to be used with XCharter text fonts.

Latin and Greek letters and many maths symbols are borrowed or
derived from Michael Sharpe’s XCharter fonts. Other sources for maths glyphs
were found in MathDesign (by Paul Pichaureau)  and \FGUT{} (by Michel Bovani).

The following documentation is meant for LuaLaTeX or XeLaTeX together with
the \pkg{unicode-math} package%
\footnote{Please read the documentation \file{unicode-math.pdf}.},
but informations about valid CharacterVariants, StylisticSets, etc. may
be of interest for users of other Unicode formats (ConTeXt, Typst).

Please note that the current version (\version) is \emph{experimental,
do expect metrics and glyphs to change} until version 1.0 is reached.
Comments, suggestions and bug reports are welcome!

\section{Usage}

\subsection{Calling \cmd{setmathfont}}

A basic call for \XCotf{} would be:
\begin{verbatim}
\usepackage{unicode-math}
\setmathfont{XCharter-Math.otf} % Call by file name or
\setmathfont{XCharter Math}     % Call by font name
\end{verbatim}
this loads \XCotf{} as maths font%
\footnote{Both calls work equally well with LuaTeX; with XeTeX a call by font
  name will fail unless the font is declared as a \emph{system font}.}
with the default options, see subsections~\vref{ssection-um},
\vref{ssection-cv} and~\vref{ssection-ss} for customisation.

Please note that the three sets of text fonts have to be chosen separately,
f.i.:%\\[.25\baselineskip]

\pagebreak[4]
\noindent
\verb+\setmainfont{XCharter}                             % rm+\\
\verb+\setsansfont{Cabin}[Scale=MatchLowercase]          % sf+\\
\verb+\setmonofont{Inconsolatazi4}[Scale=MatchLowercase] % tt+\\[.25\baselineskip]
otherwise you would get Latin Modern for text fonts.

\subsection{Calling \pkg{xcharter-otf.sty} (recommended)}

As an alternative to load \XCotf{} you can type:\\[.5\baselineskip]
\verb+\usepackage[ +\textit{options}
\footnote{Possible \textit{options} are \opt{loose}, \opt{no-text},
  \opt{fakedscripts},\opt{Scale=} or any of the options described in
  sections~\ref{ssection-um}, \ref{ssection-cv} and \ref{ssection-ss}.}%
\verb+ ]{xcharter-otf}+\\[.5\baselineskip]
it loads \pkg{unicode-math} with the default options, sets \XCotf{}
as maths font and XCharter Text fonts as Roman fonts
(families \textit{sf} and \textit{tt} left unchanged) and does a bit more:
\begin{enumerate}
\item it loads \pkg{realscripts} for better looking superscripts and footnote
  calls unless option \opt{fakedscripts} has been activated;
\item it redefines the \cmd{TeX}, \cmd{LaTeX} and \cmd{LaTeXe} logos to fit
  the XCharter fonts unless option \opt{no-logos} has been activated;
\item it checks at \verb+\begin{document}+ if packages \pkg{amssymb} or
  \pkg{latexsym} are loaded and issues warnings in case they are;
\item it provides aliases for glyphs named differently in Unicode, so that
  \pkg{latexsym} or AMS names are also available;
\item it defines specific maths characters like \showmchar{smallsetminus},
  \showmchar{varemptyset}, \showmchar{parallelslant},
  \showmchar{shortparallelslant}, etc.;
\item it reduces spacing in maths mode: \cmd{thinmuskip}, \cmd{medmuskip}
  and \cmd{thickmuskip} unless the \opt{loose} option is activated.
\end{enumerate}

Apart from the \opt{loose} option mentioned above, \pkg{xcharter-otf.sty}
provides two options \opt{no-text} and \opt{Scale=}\textsl{<decimal>} meant to
be used to load the \XCotf{} font together with roman text fonts other than
XCharter, while keeping the advantages 1. to~5. pointed in the preceding list,
f.i.\\ \verb+\usepackage[no-text,Scale=0.98]{xcharter-otf}+

Option \opt{no-text} can also be useful if XCharter is to be loaded with
specific options, f.i. \\
\verb+\usepackage[no-text]{xcharter-otf}+\\
\verb|\setmainfont{XCharter}[RawFeature=+onum;+ss01]|

\section{What is provided?}

\XCotf{} provides the most common \pkg{unicode-math} glyphs and all glyphs
available in the \pkg{amssymb} and \pkg{latexsym} packages.
Therefore, the latter two packages \emph{should not} be loaded as they might
override \XCotf{} glyphs.

Sans-serif, typewriter and fraktur alphabets are borrowed from Latin Modern
fonts.  See in section~\vref{ssec-math-alphabets} how to choose from other
maths fonts for these styles.

A full list of available glyphs is shown in file \file{unimath-xcharter.pdf}.

\subsection{Upright or slanted?}
\label{ssection-um}

Package \pkg{unicode-math} follows \TeX{} conventions for Latin and Greek
letters: in maths mode, the default option (\opt{math-style=TeX}) prints
Latin letters $a$…$z$ $A$…$Z$ and lowercase Greek letters $\alpha$…$\omega$
slanted (italic) while uppercase Greek letters $\Alpha \Beta \Gamma$…$\Omega$
are printed upright.
This can be changed by option \opt{math-style} as shown in
table~\vref{math-style}.

\begin{table}[ht]
  \centering
  \caption{Effects of the \opt{math-style} package option.}
  \hlabel{math-style}
  \begin{tabular}{@{}>{\ttfamily}lcc@{}}
    \hline
      \rmfamily Package option & Latin & Greek \\
    \hline
      math-style=ISO & $(a,z,B,X)$ & $\symit{(\alpha,\beta,\Gamma,\Xi)}$ \\
      math-style=TeX & $(a,z,B,X)$ & $(\symit\alpha,\symit\beta,\symup\Gamma,\symup\Xi)$ \\
      math-style=french & $(a,z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
      math-style=upright & $(\symup a,\symup z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
    \hline
  \end{tabular}
\end{table}

Bold letters are printed upright except lowercase Greek letters
which are slanted (the default option is \opt{bold-style=TeX}). This can be
changed by option \opt{bold-style} as shown in table~\vref{bold-style}.

\begin{table}[ht]
  \centering
  \caption{Effects of the \opt{bold-style} package option.}
  \hlabel{bold-style}
  \begin{tabular}{@{}>{\ttfamily}lcc@{}}
    \hline
      \rmfamily Package option & Latin & Greek \\
    \hline
      bold-style=ISO & $(\symbfit a, \symbfit z, \symbfit B, \symbfit X)$ & $(\symbfit\alpha, \symbfit\beta, \symbfit\Gamma, \symbfit\Xi)$ \\
      bold-style=TeX & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfit\alpha, \symbfit\beta,\symbfup \Gamma,\symbfup \Xi)$ \\
      bold-style=upright & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfup \alpha,\symbfup \beta,\symbfup \Gamma,\symbfup \Xi)$ \\
    \hline
  \end{tabular}
\end{table}

Other possible customisation: $\nabla$ is printed upright and $\partial$ is
printed slanted by default, but \opt{nabla=italic} and
\opt{partial=upright} can change this.

All these options are offered by the \pkg{unicode-math} package, they can
be added to the \cmd{setmathfont} call as well%
\footnote{IMHO it is easier to add \emph{all options} to the \cmd{setmathfont}
  command.}, for example:

\verb+\setmathfont{XCharter-Math.otf}[math-style=french,partial=upright]+\\
will print for the code
\begin{verbatim}
\[ \frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma
                                 + \symbf{\beta}\symbf{M} \]
\end{verbatim}
\setmathfont{XCharter-Math.otf}[math-style=french,partial=upright]
\[\frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma +
              \symbf{\beta}\symbf{M} \]
while the default settings would print
\setmathfont{XCharter-Math.otf}[math-style=TeX,partial=italic]
\[\frac{\partial f}{\partial x} = \alpha \symbf{V} + a\nabla\Gamma +
              \symbf{\beta}\symbf{M} \]

Both shapes remain available anytime: \verb+$\uppi,\itpi$+
prints $\uppi, \itpi$.

If your text editor is able to handle Greek letters or maths symbols, they can
be entered in the code instead control sequences (i.e.
$\symup{α}$, $\symup{β}$, $\symup{Γ}$,… for \cmd{alpha}, \cmd{beta},
\cmd{Gamma},…).

\subsection{Character variants}
\label{ssection-cv}

\XCotf{} provides fourteen ``Character Variants'' options, listed on
table~\vref{cv}, to choose between different glyphs for Greek characters
and some others. Alternative calligraphic capitals for E, Q and T,
italic l, italic v (easier to distinguish from $\nu$) and a matching
italic w have been added.

\begin{table}[ht]
  \centering  \caption{Character variants.}
  \hlabel{cv}
  \begin{tabular}{@{}>{\ttfamily}lccl@{}}
    \hline
           & Default       & Variant          & Name\\
    \hline
      cv00 & $0$           & $\mupvarzero$    & \texttt{0} \\
      cv01 & $\hslash$     & $\mithbar$       & \cmd{hslash} \\
      cv02 & $\emptyset$   & $\varemptyset$   & \cmd{emptyset} \\
      cv03 & $\epsilon$    & $\varepsilon$    & \cmd{epsilon} \\
      cv04 & $\kappa$      & $\varkappa$      & \cmd{kappa} \\
      cv05 & $\pi$         & $\varpi$         & \cmd{pi} \\
      cv06 & $\phi$        & $\varphi$        & \cmd{phi} \\
      cv07 & $\rho$        & $\varrho$        & \cmd{rho} \\
      cv08 & $\sigma$      & $\varsigma$      & \cmd{sigma} \\
      cv09 & $\theta$      & $\vartheta$      & \cmd{theta} \\
      cv10 & $\Theta$      & $\varTheta$      & \cmd{Theta}\\
      cv11 & $\symit{v}$   & $\mitvarv$       & \texttt{v}\\
      cv12 & $\symit{w}$   & $\mitvarw$       & \texttt{w}\\
      cv13 & $l$           & $\mscrl$         & \texttt{l}\\
      cv20 & $\symscr{E}$  & $\varsymscrE$    & \cmd{symcal\{E\}}\\
      cv21 & $\symscr{Q}$  & $\varsymscrQ$    & \cmd{symcal\{Q\}}\\
      cv22 & $\symscr{T}$  & $\varsymscrT$    & \cmd{symcal\{T\}}\\
    \hline
  \end{tabular}
\end{table}

For instance, to get \cmd{epsilon} and \cmd{phi} typeset as $\varepsilon$
and $\varphi$ instead of $\epsilon$ and $\phi$, you can add option
\verb+CharacterVariant={3,6}+ to the \cmd{setmathfont} call:
\begin{verbatim}
\setmathfont{XCharter-Math.otf}[CharacterVariant={3,6}]
\end{verbatim}

This  works for all shapes and weights of these characters: f.i.\ %
\verb+$\symbf{\epsilon}$+, \verb+$\symbf{\phi}$+ are output as
\setmathfont{XCharter-Math.otf}[CharacterVariant={3,6}]$\symbf{\epsilon}$,
$\symbf{\phi}$ instead of
\setmathfont{XCharter-Math.otf}$\symbf{\epsilon}$, $\symbf{\phi}$.

Similarly with \opt{math-style=french}, \verb+\epsilon+ and \verb+\phi+
are output as $\symup{\varepsilon}$ and $\symup{\varphi}$ (upright).

Please note that curly braces are mandatory whenever more than one
``Character Variant'' is selected.

Note about \cmd{hbar} (v\,0.43): \pkg{unicode-math} defines \cmd{hbar} as
\cmd{hslash} (U+210F) while \pkg{amsmath} provides two different glyphs
(italic $h$ with horizontal or diagonal stroke).\\
\pkg{xcharter math} now follows \pkg{unicode-math}; the italic $h$ with
horizontal stroke can be printed using \cmd{hslash} or \cmd{hbar} together
with character variant \texttt{cv01} or with \cmd{mithbar} (replacement
for AMS’ command \cmd{hbar}).


%\enlargethispage*{2.5\baselineskip}
\subsection{Stylistic sets}
\label{ssection-ss}

\XCotf{} provides six ``Stylistic Sets'' options to choose between different
glyphs for families of maths symbols.

\ttbold{StylisticSet=3}, alias%
\footnote{These \texttt{Style} aliases are provided by \file{xcharter-otf.sty}.}
\ttbold{Style=upint}, converts integrals signs into their upright
variants, see table~\vref{ss03}.

\vspace{-\baselineskip}
\begin{table}[ht]
  \let\DS\displaystyle
  \centering
  \caption{Style=upint\quad  (+ss03)}\hlabel{ss03}
  \begin{tabular}[t]{@{}l*{8}c@{}}
    \hline
    Command   &\cmd{int}   &\cmd{iint}  &\cmd{iiint} &\cmd{iiiint}
                   &\cmd{oint}  &\cmd{oiint} &\cmd{oiiint} \\
    \hline
    Default\rule[-15pt]{0pt}{35pt}   &$\DS\int$ &$\DS\iint$ &$\DS\iiint$
           &$\DS\iiiint$ &$\DS\oint$ &$\DS\oiint$ &$\DS\oiiint$
    \\[.5\baselineskip]
    \setmathfont{XCharter-Math.otf}[Style=upint]
    Upright\rule[-15pt]{0pt}{30pt}   &$\DS\int$ &$\DS\iint$  &$\DS\iiint$
           &$\DS\iiiint$ &$\DS\oint$ &$\DS\oiint$  &$\DS\oiiint$ \\
    \hline
  \end{tabular}\\[.5\baselineskip]
  \setmathfont{XCharter-Math.otf}
  \begin{tabular}[t]{@{}l*{4}c@{}}
    \hline
    Command  &\cmd{intclockwise}  &\cmd{awint}
                   &\cmd{varointclockwise}  &\cmd{ointctrclockwise} \\
    \hline
    Default\rule[-15pt]{0pt}{35pt} &$\DS\intclockwise$ &$\DS\awint$
                   &$\DS\varointclockwise$ &$\DS\ointctrclockwise$ \\
    \setmathfont{XCharter-Math.otf}[Style=upint]
    Upright\rule[-15pt]{0pt}{30pt}  &$\DS\intclockwise$ &$\DS\awint$
                   &$\DS\varointclockwise$  &$\DS\ointctrclockwise$ \\
    \hline
  \end{tabular}
\end{table}
%\clearpage

\addtocounter{footnote}{-1}
\ttbold{StylisticSet=1}, alias\footnotemark{}
\setmathfont{XCharter-Math}[range={cal,bfcal},StylisticSet=1]
\ttbold{Style=mathcal}, forces both commands \verb|\mathcal{}| and
\verb|\mathscr{}| to print $\mathcal{ABC}$
instead of $\mathscr{ABC}$  (the default).
Please note that \pkg{unicode-math} recommends to use \cmd{symcal} and
\cmd{symscr} instead of \cmd{mathcal} and \cmd{mathscr}.

If you want to use both commands \verb|$\mathcal{ABC}$| and
\verb|$\mathscr{ABC}$| to print $\mathcal{ABC}$ and $\mathscr{ABC}$
respectively, you can use \pkg{unicode-math}’s option \verb|range| this way%
\footnote{The \pkg{unicode-math} package is not yet able to make use of Unicode
Variation Selectors U+FE00 and U+FE01 to switch between `cal’ and `scr’
variants but these selectors are already implemented in \XCotf.}%
:\\
\verb|\setmathfont{XCharter-Math}[|\textit{your options}\verb|]|\\
\verb|\setmathfont{XCharter-Math}[range={cal,bfcal},StylisticSet=1]|\\
Both lines are mandatory: the first one loads {\XCotf}
while the second one modifies \verb|\mathcal{}| command’s output.
\setmathfont{XCharter-Math}

\setmathfont{XCharter-Math.otf}
\ttbold{StylisticSet=4}, alias%
\footnote{These \texttt{Style} aliases are provided by \file{xcharter-otf.sty}.}
\ttbold{Style=leqslant}, converts large
inequalities into their slanted  variants, see table~\vref{ss04}.

\addtocounter{footnote}{-1}
\ttbold{StylisticSet=5}, alias\footnotemark{}
\ttbold{Style=smaller}, converts some symbols into
their smaller variants, see table~\vref{ss05}.
\begin{table}[ht]
  \centering
  \caption{Stylistic Sets 4 and 5}
  \addtocounter{table}{-1}% \subfloat steps counter table?
  \subfloat[\texttt{Style=leqslant\quad (+ss04)}]{\hlabel{ss04}%
  \begin{tabular}[t]{@{}lcc@{}}
    \hline
      Command           & Default         & Variant \\
    \hline
      \cmd{leq}         & $\leq$         & $\leqslant$ \\
      \cmd{geq}         & $\geq$         & $\geqslant$ \\
      \cmd{nleq}        & $\nleq$        & $\nleqslant$ \\
      \cmd{ngeq}        & $\ngeq$        & $\ngeqslant$ \\
      \cmd{leqq}        & $\leqq$        & $\leqqslant$ \\
      \cmd{geqq}        & $\geqq$        & $\geqqslant$ \\
      \cmd{nleqq}       & $\nleqq$       & $\nleqqslant$ \\
      \cmd{ngeqq}       & $\ngeqq$       & $\ngeqqslant$ \\
      \cmd{eqless}      & $\eqless$      & $\eqslantless$ \\
      \cmd{eqgtr}       & $\eqgtr$       & $\eqslantgtr$ \\
      \cmd{lesseqgtr}   & $\lesseqgtr$   & $\lesseqslantgtr$ \\
      \cmd{gtreqless}   & $\gtreqless$   & $\gtreqslantless$ \\
      \cmd{lesseqqgtr}  & $\lesseqqgtr$  & $\lesseqqslantgtr$ \\
      \cmd{gtreqqless}  & $\gtreqqless$  & $\gtreqqslantless$ \\
      \cmd{lesssim}     & $\lesssim$     & $\lesssimslant$ \\
      \cmd{gtrsim}      & $\gtrsim$      & $\gtrsimslant$ \\
      \cmd{simless}     & $\simless$     & $\simlessslant$ \\
      \cmd{simgtr}      & $\simgtr$      & $\simgtrslant$ \\
      \cmd{smte}        & $\smte$        & $\smteslant$ \\
      \cmd{late}        & $\late$        & $\lateslant$ \\
  \hline
  \end{tabular}
  }\hspace{10mm} % eof subfloat
  \subfloat[\texttt{Style=smaller\quad (+ss05)}]{\hlabel{ss05}%
  \begin{tabular}[t]{@{}lcc@{}}
    \hline
      Command                & Default             & Variant \\
    \hline
      \cmd{in}               & $\in$               & $\smallin$ \\
      \cmd{ni}               & $\ni$               & $\smallni$ \\
      \cmd{setminus}         & $\setminus$         & $\smallsetminus$ \\
      \cmd{mid}              & $\mid$              & $\shortmid$ \\
      \cmd{nmid}             & $\nmid$             & $\nshortmid$ \\
      \cmd{parallel}         & $\parallel$         & $\shortparallel$ \\
      \cmd{nparallel}        & $\nparallel$        & $\nshortparallel$ \\
      \cmd{parallelslant}    & $\parallelslant$    & $\shortparallelslant$ \\
      \cmd{nparallelslant}   & $\nparallelslant$   & $\nshortparallelslant$ \\
   \hline
  \end{tabular}
  }% eof subfloat
\end{table}
\stepcounter{table}% \subfloat steps counter table?

\addtocounter{footnote}{-1}
\ttbold{StylisticSet=6}, alias\footnotemark{}
\ttbold{Style=subsetneq}, converts some inclusion
symbols, as shown in table~\vref{ss06}.

\addtocounter{footnote}{-1}
\ttbold{StylisticSet=7}, alias\footnotemark{}
\ttbold{Style=parallelslant}, converts ``parallel'' symbols into their
slanted variants, see table~\vref{ss07}.

\begin{table}[ht]
  \centering
  \caption{Stylistic Sets 6 and 7}
  \addtocounter{table}{-1}% \subfloat steps counter table?
  \subfloat[\texttt{Style=subsetneq\quad (+ss06)}]{\hlabel{ss06}%
  \begin{tabular}[t]{@{}lcc@{}}
    \hline
      Command           & Default         & Variant \\
    \hline
      \cmd{subsetneq}   & $\subsetneq$    & $\varsubsetneq$ \\
      \cmd{supsetneq}   & $\supsetneq$    & $\varsupsetneq$ \\
      \cmd{subsetneqq}  & $\subsetneqq$   & $\varsubsetneqq$ \\
      \cmd{supsetneqq}  & $\supsetneqq$   & $\varsupsetneqq$ \\
   \hline
  \end{tabular}
  }\hspace{10mm} % eof subfloat
  \subfloat[\texttt{Style=parallelslant\quad (+ss07)}]{\hlabel{ss07}%
  \begin{tabular}[t]{@{}lcc@{}}
    \hline
      Command               & Default            & Variant \\
    \hline
      \cmd{parallel}        & $\parallel$        & $\parallelslant$ \\
      \cmd{nparallel}       & $\nparallel$       & $\nparallelslant$ \\
      \cmd{shortparallel}   & $\shortparallel$   & $\shortparallelslant$ \\
      \cmd{nshortparallel}  & $\nshortparallel$  & $\nshortparallelslant$ \\
   \hline
  \end{tabular}
  } % eof subfloat
\end{table}
\stepcounter{table}% \subfloat steps counter table?

To enable Stylistic Sets  4, 6 and 7 for \XCotf{}, you should enter
\begin{verbatim}
\setmathfont{XCharter-Math.otf}[StylisticSet={4,6,7}]  or
\usepackage[Style={leqslant,subsetneq,parallelslant}]{xcharter-otf}
\end{verbatim}
then, \verb+\[x\leq y \quad A \subsetneq B \quad D \parallel D'\]+
will print as
\setmathfont{XCharter-Math.otf}[StylisticSet={4,6,7}]
\[x\leq y \quad A \subsetneq B \quad D \parallel D'\]
instead of
\setmathfont{XCharter-Math.otf}
\[x\leq y \quad A \subsetneq B \quad D \parallel D'\]

%\clearpage
\subsection{Other font features}
\label{ssec-other-features}

To get oldstyle numbers in maths, the feature \texttt{+onum} is available:
\begin{verbatim}
\setmathfont{XCharter-Math.otf}[Numbers=OldStyle]  or
\usepackage[Style=fulloldstyle]{xcharter-otf}
\end{verbatim}

\setmathfont{XCharter-Math.otf}[Numbers=OldStyle]
$0123456789, \symbf{0123456789}$
\setmathfont{XCharter-Math.otf}

\subsection{Standard LaTeX math commands}
\label{ssec-math-commands}

All standard LaTeX maths commands, all \pkg{amssymb} commands and all
\pkg{latexsym} commands are supported by \XCotf{}, for some of them loading
\pkg{xcharter-otf.sty} is required.

Various wide accents are also supported:
\begin{itemize}
\item \cmd{wideoverbar} and \cmd{mathunderbar}%
  \footnote{\cmd{overline} and \cmd{underline} are not font related,
     they are based on \cmd{rule}.}
  \[\wideoverbar{x}\quad \wideoverbar{xy}\quad \wideoverbar{xyz}\quad
    \wideoverbar{A\cup B}\quad \wideoverbar{A\cup (B\cap C)\cup D}\quad
    \mathunderbar{m+n+p}\]

\item \cmd{widehat} and \cmd{widetilde}
\[\widehat{x}\; \widehat{xx} \;\widehat{xxx} \;\widehat{xxxx}\;
  \widehat{xxxxx} \;\widehat{xxxxxx} \;\widetilde{x}\; \widetilde{xx}\;
  \widetilde{xxx} \;\widetilde{xxxx} \;\widetilde{xxxxx}\;
  \widetilde{xxxxxx}\]

\item \cmd{widecheck}  and \cmd{widebreve}
  \[\widecheck{x}\quad \widecheck{xxxx}\quad \widecheck{xxxxxx}\quad
    \widebreve{x}\quad \widebreve{xxxx}\quad \widebreve{xxxxxx}\]

\item \cmd{overparen} and \cmd{underparen}
  \[\overparen{x}\quad \overparen{xy}\quad \overparen{xyz}\quad
    \mathring{\overparen{A\cup B}}\quad
    \overparen{A\cup (B\cap C)\cup D}^{\smwhtcircle}\quad
    \overparen{x+y}^{2}\quad \overparen{a+b+...+z}^{26}\]
\[\underparen{x}\quad \underparen{xz} \quad \underparen{xyz}
  \quad \underparen{x+z}_{2}\quad \underparen{a+b+...+z}_{26}\]

\item \cmd{overbrace} and \cmd{underbrace}
  \[\overbrace{a}\quad \overbrace{ab}\quad \overbrace{abc}\quad
  \overbrace{abcd}\quad \overbrace{abcde}\quad
  \overbrace{a+b+c}^{3}\quad \overbrace{ a+b+. . . +z }^{26}\]
\[\underbrace{a}\quad\underbrace{ab}\quad\underbrace{abc}\quad
  \underbrace{abcd}\quad \underbrace{abcde}\quad
  \underbrace{a+b+c}_{3}  \quad \underbrace{ a+b+...+z }_{26}\]

\item \cmd{overbracket} and \cmd{underbracket}
  \[\overbracket{a}\quad \overbracket{ab}\quad \overbracket{abc}\quad
  \overbracket{abcd}\quad \overbracket{abcde}\quad
  \overbracket{a+b+c}^{3}\quad \overbracket{ a+b+. . . +z }^{26}\]
\[\underbracket{a}\quad\underbracket{ab}\quad\underbracket{abc}\quad
  \underbracket{abcd}\quad \underbracket{abcde}\quad
  \underbracket{a+b+c}_{3}  \quad \underbracket{ a+b+...+z }_{26}\]

\item \cmd{overrightarrow} and \cmd{overleftarrow}
  \[\overrightarrow{v}\quad \overrightarrow{M}\quad \overrightarrow{vv}
  \quad \overrightarrow{AB}\quad \overrightarrow{ABC}
  \quad \overrightarrow{ABCD} \quad \overrightarrow{ABCDEFGH}.
\]
\[\overleftarrow{v}\quad \overleftarrow{M}\quad \overleftarrow{vv}
  \quad \overleftarrow{AB}\quad \overleftarrow{ABC}
  \quad \overleftarrow{ABCD} \quad \overleftarrow{ABCDEFGH}\]

\item \cmd{overrightharpoon} and \cmd{overleftharpoon}
  \[\overrightharpoon{v}\quad \overrightharpoon{M}\quad \overrightharpoon{vv}
  \quad \overrightharpoon{AB}\quad \overrightharpoon{ABC}
  \quad \overrightharpoon{ABCD} \quad \overrightharpoon{ABCDEFGH}.
  \]
  \[\overleftharpoon{v}\quad \overleftharpoon{M}\quad \overleftharpoon{vv}
  \quad \overleftharpoon{AB}\quad \overleftharpoon{ABC}
  \quad \overleftharpoon{ABCD} \quad \overleftharpoon{ABCDEFGH}\]

\item \cmd{underrightarrow} and \cmd{underleftarrow}
  \[\underrightarrow{v}\quad \underrightarrow{M}\quad \underrightarrow{vv}
  \quad \underrightarrow{AB}\quad \underrightarrow{ABC}
  \quad \underrightarrow{ABCD} \quad \underrightarrow{ABCDEFGH}.
  \]
  \[\underleftarrow{v}\quad \underleftarrow{M}\quad \underleftarrow{vv}
  \quad \underleftarrow{AB}\quad \underleftarrow{ABC}
  \quad \underleftarrow{ABCD} \quad \underleftarrow{ABCDEFGH}\]

\item \cmd{underrightharpoon} and \cmd{underleftharpoondown}
  \[\underrightharpoondown{v}\quad \underrightharpoondown{M}\quad
    \underrightharpoondown{vv}\quad \underrightharpoondown{AB}\quad
    \underrightharpoondown{ABC}\quad \underrightharpoondown{ABCD}\quad
    \underrightharpoondown{ABCDEFGH}.
  \]
  \[\underleftharpoondown{v}\quad \underleftharpoondown{M}\quad
    \underleftharpoondown{vv}\quad \underleftharpoondown{AB}\quad
    \underleftharpoondown{ABC}\quad \underleftharpoondown{ABCD}
    \quad \underleftharpoondown{ABCDEFGH}.
  \]

\item Finally \cmd{widearc} and \cmd{overrightarc} (loading
  \pkg{xcharter-otf.sty} is required)
\[\widearc{AMB}\quad \overrightarc{AMB}\]
\end{itemize}

All extensible arrows provided by the \pkg{mathtools} package are
available in the \XCotf{} font (loading \pkg{xcharter-otf.sty} is required),
f.i.:
\[X \xLeftrightarrow{\text{above}} Y \xhookrightarrow[\text{under}]{}
  Z\xmapsto{\text{above}} W\]

A wide range of extensible vertical delimiters is provided:
\[ \left/
  \begin{pmatrix}  a_{1} \\ a_{2} \\  a_{3}  \end{pmatrix}
  \begin{bmatrix}  a_{1} \\ a_{2} \\  a_{3}  \end{bmatrix}
  \begin{Bmatrix}  a_{1} \\ a_{2} \\  a_{3}  \end{Bmatrix}
  \begin{vmatrix}  a_{1} \\ a_{2} \\  a_{3}  \end{vmatrix}
  \begin{Vmatrix}  a_{1} \\ a_{2} \\  a_{3}  \end{Vmatrix}
  \left\lVvert\begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\Vvert
  \left\lceil \begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\rceil
  \left\lfloor\begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\rfloor
  \left\lBrack\begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\rBrack
  \left\langle\begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\rangle
  \left\lAngle\begin{array}{c} a_{1} \\ a_{2} \\  a_{3} \end{array}\right\rAngle
  \right\backslash \]


\subsection{Mathematical alphabets}
\label{ssec-math-alphabets}

\begin{itemize}
\item  All Latin and Greek characters are available in italic, upright, bold
  and bold italic via the \verb+\symit{}+, \verb+\symup{}+, \verb+\symbf{}+
  and \verb+\symbfit{}+ commands.

\setmathfont{XCharter-Math}[range={cal,bfcal},StylisticSet=1]
\item Calligraphic alphabet (\cmd{symscr} or \cmd{symcal} command)%
  \footnote{See section~\ref{ssection-ss} if you need both shapes.},
  uppercase only%
  \footnote{Lowercase letters $\symscr{eglo}, \symscr{r}, \symbfscr{lr}$
    (Griffith’s curly r, regular and bold) are also provided.}:\\
  $\symscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}, \symscr{eglor}$\\
  $\symcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
  also in boldface (\cmd{symbfscr}, \cmd{symbfcal} command):\\
  $\symbfscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}, \symbfscr{lr}$\\
  $\symbfcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
  \setmathfont{XCharter-Math}

\item Blackboard-bold alphabet (\cmd{symbb} command):\\
  $\symbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
  $\symbb{abcdefghijklmnopqrstuvwxyz\quad 0123456789}$

\item Fraktur alphabet is borrowed from Latin Modern, medium and bold
  (\cmd{symfrak}, or \cmd{symbffrak} commands):\\
  $\symfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ\quad abcdefghijklmnopqrstuvwxyz}$\\
  $\symbffrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
  \hphantom{$\symfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ\quad}$}%
    $\symbffrak{abcdefghijklmnopqrstuvwxyz}$\\
  but this can be overwritten, i.e.\\
\verb+\setmathfont{Asana-Math.otf}[range=frak,Scale=MatchUppercase]+\\
\verb+$\symfrak{ABCDEFGHIJKL...XYZ abcdefghijkl...xyz}$+\\
\setmathfont{Asana-Math.otf}[range=frak,Scale=MatchUppercase]
$\symfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$

\item Sans serif alphabet is borrowed from Latin Modern, (\cmd{symsfup} and
  \cmd{symsfit} commands):\\
  $\symsfup{ABCDEFGHIJKLM abcdefghijk}\quad\symsfit{NOPQRSTUVWXYZ
    mnopqrstuvwxyz}$\\
  but it can be borrowed from another maths font, i.e.\\
\verb+\setmathfont{STIXTwoMath-Regular.otf}[range={sfup,sfit},+\\
\verb+                                      Scale=MatchUppercase]+\\
\verb+$\symsfup{ABCD...klm}\quad\symsfit{NOPQ...xyz}$+\\
\setmathfont{STIXTwoMath-Regular.otf}[range={sfup,sfit},Scale=MatchUppercase]
$\symsfup{ABCDEFGHIJKLM abcdefghijklm}\quad
    \symsfit{NOPQRSTUVWXYZ nopqrstuvwxyz}$

\item Typewriter alphabet is borrowed from Latin Modern,
    (\cmd{symtt} command):\\
  $\symtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$\\
  but it can be borrowed from  another maths font, i.e.\\
\verb+\setmathfont{STIXTwoMath-Regular.otf}[range=tt,+\\
\verb+                                      Scale=MatchUppercase]+\\
\verb+$\symtt{ABCDE...XYZ abcde...xyz}$+\\
\setmathfont{STIXTwoMath-Regular.otf}[range=tt,Scale=MatchUppercase]
$\symtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz}$
\end{itemize}

All others have to be borrowed from another maths font if needed, i.e.\\
\verb+\setmathfont{Garamond-Math.otf}[range=\symscr/latin,+%
\footnote{\texttt{/latin}: lowercase latin only;
  \texttt{/Latin}: uppercase latin only.}\\
\verb+                                Scale=MatchLowercase]+\\
\verb+$\symscr{a}\symscr{b}\symscr{c} ... \symscr{z}$+\\
\setmathfont{XCharter-Math.otf}
\setmathfont{Garamond-Math.otf}[range=\symscr/latin, Scale=MatchLowercase]
$\symscr{a}\symscr{b}\symscr{c}\symscr{d}\symscr{e}\symscr{f}\symscr{g}
  \symscr{h}\symscr{i}\symscr{j}\symscr{k}\symscr{l}\symscr{m}\symscr{n}
  \symscr{o}\symscr{p}\symscr{q}\symscr{r}\symscr{s}\symscr{t}\symscr{u}
  \symscr{v}\symscr{w}\symscr{x}\symscr{y}\symscr{z}$

\subsection{Bold variant}

\setmathfont{XCharter-Math.otf}[BoldFont=XCharter-Math-Bold.otf]
In case short maths formulas have to be printed in section titles,
a \emph{limited} bold variant has been added.
Example of usage: \textbf{\boldmath Einstein’s equation $E=mc^2$}\\
\verb+\setmathfont{XCharter-Math-Bold.otf}[version=bold, +\textit{options}\verb+]+\\
\verb+\section{\mathversion{bold}Einstein’s equation $E=mc^2$}+

It is also possible to use the \verb+\boldmath+ command:\\
\verb+\setmathfont{XCharter-Math.otf}[BoldFont=XCharter-Math-Bold.otf]+\\
\verb+\section{\boldmath Einstein’s equation $E=mc^2$}+

\subsection{Missing symbols}

\XCotf{} does not aim at being as complete as \file{STIXTwoMath-Regular} or
\file{Cambria}, the current glyph coverage compares with TeXGyre maths fonts.
In case some symbols do not show up in the output file, you will see warnings
in the \file{.log} file, for instance:

\setmathfont{STIXTwoMath-Regular.otf}[range={"2964}]
\texttt{Missing character: There is no }$⥤$%
\texttt{ (U+2964) in font XCharterMath}

Borrowing them from a more complete font, say \file{Asana-Math},
is a possible workaround:
\verb+\setmathfont{Asana-Math.otf}[range={"2964},Scale=1.02]+\\
scaling is possible, multiple character ranges are separated with commas:\\
\verb+\setmathfont{Asana-Math.otf}[range={"294A-"2951,"2964,"2ABB-"2ABE}]+

Let’s mention \pkg{albatross}, a useful tool to find out the list of fonts
providing a given glyph: f.i. type in a terminal
``\texttt{albatross -t U+2964}'',
see the manpage or \file{albatross-manual.pdf}.

\section{Acknowledgements}

Many thanks to Michael Sharpe for providing the XCharter text fonts in
OpenType format.

I am grateful to George Williams and his co-workers for providing and
maintaining FontForge and to Ulrik Vieth for his illuminating paper published
in TUGboat~2009 Volume~30 about OpenType Math.


\bigskip
\begin{center}\Huge
\decotwo
\end{center}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-engine: luatex
%%% TeX-master: t
%%% coding: utf-8
%%% End:
