\documentclass[10pt,a4paper]{article}
\usepackage[width=210mm, height=297mm, left=15mm, right=15mm, top=15mm, bottom=15mm]{geometry}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{babel}
\usepackage{array,booktabs}
\usepackage{listings,xcolor}

\usepackage{xstix2}
\setsansfont{Lato}[Scale=MatchLowercase]
\setmonofont{Anonymous Pro}
\newfontfamily\STIX{STIX2}

\usepackage{hyperref}

\def\cmd#1{{\tt\textbackslash#1}}
\def\Hfil{\mbox{}\hfil\mbox{}}
\DeclareRobustCommand\XeTeX{\reflectbox{X}\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.135em{\protect\TeX}}
\makeatletter
\DeclareRobustCommand\LuaTeX{L\kern-.20em\lower.5ex%
\hbox{\check@mathfonts\fontsize\sf@size\z@
\math@fontsfalse\selectfont U}\kern-.4em\lower.275ex\hbox{\sbox\z@ A\vbox to\ht\z@{\hbox{\check@mathfonts\fontsize\sf@size\z@
\math@fontsfalse\selectfont A}\vss}}\kern-.175em\TeX}
\makeatother

\def\MathSample{$x={\displaystyle∫_0^u\sqrt{\frac{a^2+x^2}{b^2-x^2}}\,dx = E(𝛿,r)}\quad[b>u⩾0],\quad 𝛿=\arccos\tfrac{u}{b},\quad r=\tfrac{b}{\sqrt{a^2+b^2}}.$}
\def\SampleMath{$x={\displaystyle∫_0^u\sqrt{\frac{a^2+x^2}{b^2-x^2}}\,dx = E(𝛿,r)}\dots$}


\begin{document}

\title{\sf The xstix2 package}
\author{Alexey Kuznetsov}
\date{version 2026/03/01}
\maketitle
\begin{abstract}
   Using resources of the \textsf{fontspec} package, the \textsf{xstix2} package adjusts letter widths of the STIXTwo fonts and makes all the fonts in this collection available.
\end{abstract}


The STIXTwo collection contains following OpenTyype fonts:\\[1ex]
\Hfil\begin{tabular}{l >\itshape l}
   \multicolumn{2}{c}{STIXTwoMath-Regular,}\\
               STIXTwoText-Regular,  &             STIXTwoText-Italic,\\
   \STIXMedium STIXTwoText-Medium,   & \STIXMedium STIXTwoText-MediumItalic,\\
   \bfseries   STIXTwoText-SemiBold, & \bfseries   STIXTwoText-SemiBoldItalic,\\
   \STIXBold   STIXTwoText-Bold,     & \STIXBold   STIXTwoText-BoldItalic.\\
\end{tabular}\\[1ex]
Like most other TrueType and OpenType fonts, all fonts of the collection are designed only at 10pt, at the same time, font sizes vary in \LaTeX\ documents from 5pt (\cmd{tiny}) to 24.88pt (\cmd{Huge}). 
\TeX\ generates missing fonts using proportional scaling, making small text difficult to read, while large text appears clunky because fonts with different optical sizes require larger letters to be narrower. 
Through the \textsf{FakeStretch} feature, the \textsf{fontspec} package enables \LuaTeX\ and \XeTeX\ to perform non-proportional scaling.\footnote{%
\textsf{Fontspec's} author Will Robertson warns: ``Please don’t overuse these (Fake) features; they are \textit{not} a good alternative to having the real shapes.'' 
But STIX Two fonts were released five years ago and their development has ceased. In this case, I think, `\textit{not} a good alternative` is better than nothing.} 
The \textsf{xstix2} package implements this feature for the STIXTwo collection and provides access to all it's fonts. 
To do that, it loads the \textsf{fontspec} and \textsf{unicode-math} packages and uses the fonts from the \textsf{stix2-otf} and \textsf{xits} packages. 
The latter contains a bold mathematical font, missing from the STIXTwo collection.
When loading, \textsf{xstix2} checks the compiler, and if Pdf\LaTeX{} is used, it does nothing.

For basic use, no package options are required:\\[.5ex]
\mbox{}\hfil\verb+\usepackage{xstix2}+\\[.5ex]
In this case, Regular/\textit{Italic}/\textbf{SemiBold}/\textbf{\textit{SemiBoldItalic}} fonts are used as the main.
For rest of fonts two declarations are defined: \cmd{STIXMedium} {\STIXMedium activates fonts of medium weight, as in this example,} \cmd{STIXBold} {\STIXBold activates bold fonts of the collection.}
STIXTwoMath-Regular and XITSMath-Bold are used as math fonts of normal and bold versions.

\medskip
There are two options for \cmd{usepackage[\dots]\{xstix2\}}:
\hspace*{1em}
\begin{tabular}{ll}
[bold]     & use bold fonts;\\{}%
[original] & use proportionally scaled fonts.
\end{tabular}

\medskip
\noindent The table below illustrates them. It's last column contains names of files with \textsf{fontspec's} descriptions of the main fonts.

\begin{center}
\begin{tabular}{ lll >\tt >\small l @{\ } >\small l  >\sf l} \toprule
   \sf Options      &\sf Features & \sf Main font weights   & 
      \multicolumn{2}{c}{\sf Additional font weights}       & fontspec \\ \midrule
                    & stretched   & Regular, \bf SemiBold   & \cmd{STIXBold}, & \cmd{STIXMedium}
                                                            & XSTIX2  \\{}%
   [bold]           & stretched   & Regular, \STIXBold Bold & \cmd{STIXBold}, & \cmd{STIXMedium}
                                                            & XSTIX2B \\{}%
   [original]       &             & Regular, \bf SemiBold   & \cmd{STIXBold}, & \cmd{STIXMedium}
                                                            & STIX2   \\{}%
   [original, bold] &             & Regular, \STIXBold Bold & \cmd{STIXBold}, & \cmd{STIXMedium}
                                                            & STIX2B \\
  \bottomrule
\end{tabular}
\end{center}

When \textsf{xstix2} is loaded with the [bold] option, {\STIXBold Bold fonts are used as the main} (\cmd{bf}, \cmd{bfseries}) and the declaration \cmd{STIXBold} {\bf activates SemiBold fonts.}
The option [original] cancels non-proportional scaling of fonts.

Examples of text typed with fonts having different sizes and weights are presented below.

Happy \TeX ing!

\newpage
\centerline{\Large\bf Font samples}

%-------------------------------------------------------------------------------------------
\vspace{\baselineskip}\centerline{Regular fonts (\cmd{normalfont})}
\noindent Test string to compare Latin letters in different fonts.\hfill \cmd{rm}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent{\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{sc}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}

\medskip\noindent{\itshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{it}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{it}\cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}\\

%-------------------------------------------------------------------------------------------
\STIXMedium\centerline{Medium fonts (\cmd{STIXMedium})}
\noindent Test string to compare Latin letters in different fonts.\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent{\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}

\medskip\noindent{\itshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{itshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{itshape}\cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}\\

%-------------------------------------------------------------------------------------------
\bf\centerline{SemiBold fonts (\cmd{bf})}
\noindent Test string to compare Latin letters in different fonts.\hfill \cmd{bf}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent{\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{bf}\cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}

\medskip\noindent{\itshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{bf}\cmd{itshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{bf}\cmd{itshape}\cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}

%-------------------------------------------------------------------------------------------
\bigskip\STIXBold\centerline{Bold fonts (\cmd{STIXBold})}
\noindent Test string to compare Latin letters in different fonts.\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent{\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}

\medskip\noindent{\itshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{itshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.

\medskip\noindent\scshape%
Test string to compare Latin letters in different fonts.\hfill \cmd{itshape}\cmd{scshape}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
Тестовая строка для сравнения букв кириллицы в различных шрифтах.}\\

%-------------------------------------------------------------------------------------------
\newpage
\normalfont\centerline{\large Regular fonts}

\vspace{2\baselineskip}
\noindent\tiny 5pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{original}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\hfill\textsc{original}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\hfill\textsc{original}}\\
Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\\
\MathSample

\vfill\noindent\normalsize 10pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{orig.}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\hfill\textsc{orig.}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\hfill\textsc{orig.}}\\
Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\\
\MathSample

\vfill\noindent\Large 14.4pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{orig.}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών\dots\hfill\textsc{orig.}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών\dots\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы в различных\dots\hfill\textsc{orig.}}\\
Тестовая строка для сравнения ширины букв кириллицы в различных\dots\\
\MathSample

\vfill\noindent\mathversion{normal}\Huge 24.88pt\\
{\STIX Test string to compare width of Latin\dots\hfill\textsc{orig.}}\\
Test string to compare width of Latin\dots\\
{\STIX Δοκιμαστική συμβολοσειρά για τη\dots\hfill\textsc{orig.}}\\
Δοκιμαστική συμβολοσειρά για τη\dots\\
{\STIX Тестовая строка для сравнения\dots\hfill\textsc{orig.}}\\
Тестовая строка для сравнения\dots\\
\SampleMath

%-------------------------------------------------------------------------------------------
\newpage
\normalsize\bf\boldmath
\centerline{\large SemiBold text and Bold math}

\vspace{2\baselineskip}
\noindent\tiny 5pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{original}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\hfill\textsc{original}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές γραμματοσειρές.\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\hfill\textsc{original}}\\
Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\\
\MathSample

\vfill\noindent\normalsize 10pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{original}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές\dots\hfill\textsc{original}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών γραμμάτων σε διαφορετικές\dots\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\hfill\textsc{original}}\\
Тестовая строка для сравнения ширины букв кириллицы в различных шрифтах.\\
\MathSample

\vfill\noindent\Large 14.4pt\\
{\STIX Test string to compare width of Latin letters in different fonts.\hfill\textsc{orig.}}\\
Test string to compare width of Latin letters in different fonts.\\
{\STIX Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών\dots\hfill\textsc{orig.}}\\
Δοκιμαστική συμβολοσειρά για τη σύγκριση του πλάτους των ελληνικών\dots\\
{\STIX Тестовая строка для сравнения ширины букв кириллицы\dots\hfill\textsc{orig.}}\\
Тестовая строка для сравнения ширины букв кириллицы\dots\\
\MathSample

\vfill\noindent\Huge 24.88pt\\
{\STIX Test string to compare width of Latin\dots\hfill\textsc{orig.}}\\
Test string to compare width of Latin\dots\\
{\STIX Δοκιμαστική συμβολοσειρά για τη\dots\hfill\textsc{orig.}}\\
Δοκιμαστική συμβολοσειρά για τη\dots\\
{\STIX Тестовая строка для сравнения\dots\hfill\textsc{orig.}}\\
Тестовая строка для сравнения\dots\\
\SampleMath

\newpage\centerline{\Large\bf The code}
\normalfont\small\tt
\lstset{language=TeX, 
   morekeywords={IfFontExistsTF,iftutex},
   emph={PackageWarning}, emphstyle={\bfseries\color{purple}},
   emph={[2]DeclareOption,ProcessOptions},  emphstyle={[2]\bfseries\color{blue}},
   emph={[3]RequirePackage}, emphstyle={[3]\bfseries\color{violet}}}

\begin{lstlisting}
\ProvidesPackage{xstix2}[2026/02/28]
\PackageInfo{xstix2}{Extended support for STIXTwo fonts.} 

\def\@STIX@{XSTIX2}
\def\@STIX@Main{XSTIX2}
\def\@STIX@Bold{XSTIX2Bold}

\DeclareOption{original}{\def\@STIX@{STIX2}}
\DeclareOption{bold}{\def\@STIX@Bold{\@STIX@ SemiBold}\def\@STIX@Main{\@STIX@ B}}
\DeclareOption*{\PackageWarning{xstix2.sty}{Package options: original, bold.}}
\ProcessOptions

\RequirePackage{iftex}
\iftutex
   \RequirePackage[quiet]{fontspec}
   \RequirePackage{unicode-math}
   \IfFontExistsTF{STIXTwoText-Regular}{
      \setmainfont{\@STIX@Main}
      \newfontfamily\STIXBold{\@STIX@Bold}
      \newfontfamily\STIXMedium{\@STIX@ Medium}
      \IfFontExistsTF{STIXTwoMath-Regular}{
         \setmathfont{STIX Two Math}
         \IfFontExistsTF{XITSMath-Bold}
            { \setmathfont{XITSMath-Bold}[version=bold, Scale= MatchLowercase]
              \setoperatorfont\symup }
            { \PackageWarning{xstix2.sty}{Install `xits' package to add bold math font.} }
      }{ \PackageWarning{xstix2.sty}{Install `stix2-otf' package to use STIXTwo math font.} }
   }{ \PackageWarning{xstix2.sty}{Install `stix2-otf' package to use STIXTwo fonts.} }
\else
   \PackageWarning{xstix2.sty}{STIXTwo fonts must be used with `LuaLaTeX' or `XeLaTeX'.}
\fi
\end{lstlisting}

\end{document}
