%  \iffalse
%
%  Copyright (C) 2024, 2025 by Ch. L. Spiel
%
%  This work may be distributed and/or modified under the conditions
%  of the LaTeX Project Public License, either version 1.3c of this
%  license or (at your option) any later version.  The latest version
%  of this license is in
%      httpc://www.latex-project.org/lppl.txt
%  and version 1.3c or later is part of all distributions of LaTeX
%  version 2003/12/01 or later.
%
%  \fi
%
%  \iffalse
%<*driver>
\documentclass{ltxdoc}

\tracingonline=0

\EnableCrossrefs
\CodelineIndex
\RecordChanges


\PassOptionsToClass{a4paper}{article}
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
\PassOptionsToPackage{dvipsnames}{xcolor}

\usepackage{amsmath}
\usepackage{array}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{dtk-logos}
\usepackage{enumitem}
\usepackage{etoolbox}%--\tracingpatches
\usepackage{fancyhdr}
\usepackage[T1]{fontenc}
\usepackage{hypdoc}
\usepackage{hyphenat}
\usepackage{mathtools}
\iftrue
  \usepackage[letterspace=0, shrink=10, stretch=10, tracking=true]{microtype}
  \DeclareMicrotypeSet[tracking]{italic}
                      {encoding=*, font={SourceSerifPro-LF/m/it/*}}
  \UseMicrotypeSet[tracking]{italic}
  \SetTracking[context=synthnegslant, no ligatures={f}, spacing={10*,,}]
              {encoding=*, shape=it}{10}
\else
  \newcommand*{\textls}[2][]{#2}
\fi
\usepackage{needspace}
\usepackage[section]{placeins}
\usepackage{ragged2e}
\usepackage{setspace}
\usepackage[slant=.18, negslant=-.16]{synthslant}
\usepackage{titlesec}
\usepackage[most]{tcolorbox}
\usepackage{titlesec}
\usepackage{xcolor}


\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, regular, semibold]{sourcesanspro}
\usepackage[lining, regular]{sourcecodepro}
\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath}
\setstretch{1.04166}% \baselineskip: 12.5pt


\makeatletter
\def\@get@fontclan#1-#2\@nil{#1}
\newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\@nil}
\makeatother

\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}

\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}

\newcommand*{\nativetextfraction}[2]
            {\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}}

\makeatletter
\renewcommand*{\@makefnmark}{\hbox{\sf\textsuperior{\@thefnmark}}}
\newenvironment*{tabfigures}
                {\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces}
                {\ignorespacesafterend}
\makeatother

\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont}
\DeclareTextFontCommand{\textel}{\elseries}
\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont}
\DeclareTextFontCommand{\textl}{\lseries}
%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont}
%%--\DeclareTextFontCommand{\textmd}{\mdseries}
\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont}
\DeclareTextFontCommand{\textb}{\bseries}
\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
\DeclareTextFontCommand{\texteb}{\ebseries}
\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont}
\DeclareTextFontCommand{\textub}{\ubseries}


\usepackage{cleveref}


\expandafter\GetFileInfo\expandafter{\jobname.sty}
\def\aspdfdate#1/#2/#3\relax{D:#1#2#3}
\edef\pdffiledate{\expandafter\aspdfdate\filedate\relax}

\hypersetup{
  citecolor = blue,
  colorlinks = true,
  linkcolor = blue,
  linktocpage = true,
  pdfauthor={Dr. Christoph L. Spiel},
  pdfcreationdate={\pdffiledate},
  pdfkeywords={LaTeX, font, italic, oblique, slant, upright},
  pdflang=en-US,
  pdfsubject={Synthetic generation of slanted glyphs in LaTeX},
  pdftitle={Package synthslant \fileversion},
  raiselinks = false,
  urlcolor = [rgb]{0, 0, .5}% = navy
}

\newlength{\sectiontocindent}
\newlength{\sectionnumberwidth}
\newlength{\subsectiontocindent}
\newlength{\subsectionnumberwidth}
\newlength{\subsubsectiontocindent}
\newlength{\subsubsectionnumberwidth}

\setlength{\sectiontocindent}{0pt}
\setlength{\sectionnumberwidth}{40pt}
\setlength{\subsectiontocindent}{40pt}
\setlength{\subsectionnumberwidth}{25pt}
\setlength{\subsubsectiontocindent}{65pt}
\setlength{\subsubsectionnumberwidth}{30pt}

\makeatletter
\renewcommand*{\l@section}[2]
              {\ifnum \c@tocdepth >\z@
                 \addpenalty\@secpenalty
                 \addvspace{1.0em \@plus\p@}%
                 \setlength{\@tempdima}{\sectionnumberwidth}%
                 \begingroup
                   \def\numberline##1{\hb@xt@\@tempdima{%
                       \tt\lseries
                       \fontsize{44}{0}\selectfont
                       \microtypecontext{kerning=drop-left-sidebearing}%
                       \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi
                       \textcolor{customred3}{##1}%
                       \hfil}}%
                   \parindent \z@
                   \rightskip \@pnumwidth
                   \parfillskip -\@pnumwidth
                   \leavevmode
                   \advance\leftskip\@tempdima
                   \hskip -\leftskip
                   \bfseries
                   \iffalse
                     \nobreak\hfil
                     \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}%
                   \else
                     {\sffamily\large #1}\quad
                     {#2}\hfil\hbox{}
                   \fi
                   \par
                 \endgroup
               \fi}

\renewcommand*{\@dottedtocline}[5]
              {\ifnum #1>\c@tocdepth
               \else
                 \vskip \z@ \@plus.2\p@
                 \begingroup
                 \leftskip #2\relax
                 \rightskip \@tocrmarg
                 \parfillskip -\rightskip
                 \parindent #2\relax\@afterindenttrue
                 \interlinepenalty\@M
                 \leavevmode
                 \@tempdima #3\relax
                 \advance\leftskip \@tempdima
                 \null\nobreak
                 \hskip -\leftskip
                 {#4}\nobreak
                 \iffalse
                   \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
                   \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}%
                 \else
                   \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}%
                 \fi
                 \par
                 \endgroup
               \fi}

\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}}
\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}}
\newrobustcmd*{\tocsquashedsubsections}
              {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsubsectionnumberwidth}}%
               \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}}
\makeatother


\Crefname{equation}{Equation}{Equations}
\crefname{equation}{Equ.}{Equs.}
\creflabelformat{equation}{#2#1#3}

\Crefname{figure}{Figure}{Figures}
\crefname{figure}{Fig.}{Figs.}

\Crefname{page}{Page}{Pages}
\crefname{page}{p.}{p.}

\Crefname{section}{Section}{Sections}
\crefname{section}{Sec.}{Secs.}

\Crefname{table}{Table}{Tables}
\crefname{table}{Tab.}{Tabs.}


\newcommand*{\floatcaptionwidth}{.79\textwidth}

\captionsetup[figure]{font=small, justification=centerlast,
                      labelfont=sc, width=\floatcaptionwidth}
\captionsetup[table]{font=small, justification=centerlast,
                     labelfont=sc, width=\floatcaptionwidth}


\newsavebox{\listlabelbox}

\sbox{\listlabelbox}{---}
\SetEnumitemKey{noindent}{
  label={---},
  labelwidth=\wd\listlabelbox,
  leftmargin=!
}

\SetEnumitemKey{nestedinspecialsection}{
  leftmargin=10pt
}

\SetEnumitemKey{notopsep}{
  after=\vskip.8em plus .2em minus .4em,
  partopsep=0pt,
  topsep=0pt
}


\newlength{\marginindicatorsep}
\setlength{\marginindicatorsep}{10pt}

\newcommand*{\marginalizesectionnumber}[1]
            {\makebox[0pt][r]{#1\hspace{\marginindicatorsep}}}


\fancypagestyle{pagenumberonly}{
  \fancyhf{}
  \fancyhead[L]{}
  \fancyhead[R]{\thepage}
}
\fancypagestyle{fancy}{
  \fancyhf{}
  \fancyhead[L]{\rightmark}
  \fancyhead[R]{\thepage}
}

\newcommand*{\letterspacedsmallcaps}[1]{\textsc{\textls[20]{#1}}}
\newcommand*{\resetfancyhead}
            {\fancyhead[L]{\textsf{\letterspacedsmallcaps{\nouppercase\rightmark}}}}

\renewcommand*{\headrulewidth}{0pt}
\renewcommand*{\sectionmark}[1]
              {\def\truesectionname{#1}%
               \markright{\textsf{\marginalizesectionnumber{\thesection}%
                                  \letterspacedsmallcaps{#1}}}}
\renewcommand*{\subsectionmark}[1]
              {\markright{\textsf{\marginalizesectionnumber{\thesubsection}%
                                  \letterspacedsmallcaps{\truesectionname:\enspace}#1}}}


\titleformat{\section}[hang]
            {\sffamily\Large\bfseries}{\marginalizesectionnumber{\thesection}}{0pt}{}
\titleformat{\subsection}[hang]
            {\sffamily\large\bfseries}{\marginalizesectionnumber{\thesubsection}}{0pt}{}
\titleformat{\subsubsection}[hang]
            {\sffamily\normalsize\bfseries}{\marginalizesectionnumber{\thesubsubsection}}{0pt}{}
\titleformat{\paragraph}[runin]
            {\sffamily\normalsize\bfseries}{\theparagraph}{1em}{}


\let\footnoterule=\relax% suppress footnote rule
\interfootnotelinepenalty=10000

\makeatletter
\renewcommand*{\@makefntext}[1]
              {\noindent
               \llap{\let\@textsuperscript=\relax% use "normal" figures for the footnote numbers
                     \let\textsuperior=\relax
                     \@makefnmark
                     \hspace{\marginindicatorsep}}% separate the footnote number and the body
               #1}
\makeatother


\pretocmd{\DescribeEnv}{\needspace{25pt}}{\relax}{\PrependingFailed}
\pretocmd{\DescribeMacro}{\needspace{25pt}}{\relax}{\PrependingFailed}


\setlength{\columnsep}{20pt}
\setlength{\skip\footins}{25pt}
\setlength{\overfullrule}{0pt}



\renewcommand*{\abstractname}{{\sffamily Abstract}}

\newrobustcmd*{\acronym}[1]{\mbox{\scshape\MakeLowercase{#1}}}

\newcommand*{\application}[1]{\mbox{\sffamily #1}}

\renewcommand*{\arraystretch}{1.12}

\newcommand*{\bibauthor}[1]{\mbox{\textsc{#1}}}
\newcommand*{\bibtitle}[1]{\textit{#1}}
\newcommand*{\biburl}[1]{\url{#1}}

\newcommand*{\bottomstrut}{\rule[-.5em]{0pt}{0pt}}

\newenvironment*{codeexample*}
                {\vspace{.5\smallskipamount}
                 \par
                 \ttfamily
                 \begin{tabbing}}
                {\end{tabbing}
                 \par
                 \vspace{.5\smallskipamount}}
\newenvironment*{codeexample}
                {\vspace{.5\smallskipamount}
                 \par
                 \centering
                 \begin{minipage}{\linewidth}
                 \ttfamily
                 \begin{tabbing}}
                {\end{tabbing}
                 \end{minipage}
                 \par
                 \vspace{.5\smallskipamount}}

\makeatletter
\newcommand*{\citenum}[1]{\@nameuse{b@#1}}
\makeatother

\renewcommand*{\code}[1]{\texttt{#1}}

\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}}

\newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}}

\newcommand*{\degree}{{}^\circ}

\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}}

\newcommand*{\doublequotes}[1]{``#1''}

\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}}

\newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}}

\newcommand*{\filledrectangle}[2]{\rule{#1}{#2}}
\newcommand*{\filledsquare}[1]{\filledrectangle{#1}{#1}}

\newcommand*{\foreignphrase}[1]{\textsl{#1}}

\makeatletter
\renewcommand*{\fps@figure}{htbp}
\renewcommand*{\fps@table}{htbp}
\makeatother

\apptocmd{\GlossaryParms}
         {\RaggedRight\normalsize}
         {\relax}
         {\AppendingFailed}

\let\oldhdclindex=\hdclindex
\renewcommand*{\hdclindex}[2]
              {\ifstrequal{#2}{code}
                          {\oldhdclindex{#1}{codeidx}}
                          {\oldhdclindex{#1}{#2}}}

\let\oldhdpindex=\hdpindex
\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}}

\newcommand*{\hollowrectangle}[2]
            {\setlength{\fboxrule}{.5pt}%
             \setlength{\fboxsep}{0pt}%
             \framebox{\rule{#1}{0pt}\rule{0pt}{#2}}}
\newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}}

\NewMarkClass{IndexGroup}
\newcommand*{\indexgroup}[1]{\InsertMark{IndexGroup}{#1}#1}

\apptocmd{\IndexParms}
         {\RaggedRight\small}
         {\relax}
         {\AppendingFailed}

\makeatletter
\IndexPrologue{\section*{Index}%
               \markboth{\sf\letterspacedsmallcaps{Index}}{\sf\letterspacedsmallcaps{Index}}%
               Numbers written in italic style refer to definitions;
               numbers in regular style refer to pages where an entry is used.
               \ifx\special@index\HD@codeline@wrindex
                 References to code lines are prefixed with~\singlequotes{\codelineindicator}.
                 Again, italic style refers to definitions and regular style to lines where the code is used.
               \fi}

\newcommand*{\linenumberdecoration}
            {\ifx\special@index\HD@codeline@wrindex
               \codelineindicator
             \fi}
\makeatother

\newcommand*{\logmacro}[1]
            {\ifdef{#1}
                   {\message{^^JDump of macro \string#1 follows.^^J}
                    \message{\detokenize\expandafter{#1}}
                    \message{^^JEnd macro dump.^^J}}
                   {\message{^^JMacro \string#1 is not defined.^^J}}}

\addtolength{\marginparpush}{3pt}
\addtolength{\marginparsep}{25pt}
\addtolength{\marginparwidth}{-25pt}

\newenvironment*{widebody}
                {\begin{list}{}{\leftmargin=-\marginparwidth
                                \listparindent=\parindent
                                \parsep=\parskip
                                \rightmargin=0pt
                                \topsep=0pt}
                 \item\relax}
                {\end{list}}


\let\originalmulticols=\multicols
\let\endoriginalmulticols=\endmulticols
\RenewDocumentEnvironment{multicols}{m o o}
                         {\ifnum #1=1
                            \IfNoValueTF{#2}{\relax}{#2}%
                          \else
                            \IfNoValueTF{#2}
                                        {\originalmulticols{#1}}
                                        {\originalmulticols{#1}[#2]}%
                          \fi}
                         {\ifnum #1=1
                            \relax
                          \else
                            \endoriginalmulticols
                          \fi}


\newenvironment*{multilinecodeexample}
                {\begin{quote}\tt
                 \def\indent{\mbox{}\hspace{25pt}}%
                 \def\pushright{\mbox{}\hfill}%
                 \ignorespaces}
                {\end{quote}}

\newcommand*{\needtocspace}[1][3]
            {\addtocontents{toc}{\protect\needspace{#1\baselineskip}}}

\newcommand*{\numberset}[1]{\mathbb{#1}}

\let\newpagetofixtoc=\newpage

\newcommand*{\packagename}[1]{\mbox{\textsf{#1}}}
\newcommand*{\programname}[1]{\mbox{\textbf{#1}}}
\newcommand*{\propername}[1]{\mbox{\textsc{#1}}}

\newcommand*{\pstrickslogo}{\mbox{PSTricks}}

\newcommand*{\quarterspace}{\hspace{.25em}}

\newcommand*{\sample}[1]
            {\setbox0=\hbox{#1}% H: 6.19849pt, /: 7.49817
             \mbox{\raisebox{\dimexpr -.15em - \dp0}{\tiny$\llcorner$}%
                   \kern-.15em\copy0\kern-.15em
                   \raisebox{\ifdim\ht0>.7em\dimexpr\ht0 - .1em\else .45em\fi}{\tiny$\urcorner$}}}

\newcommand*{\sinceversion}[1]{% modeled after \NewIn of "doc.dtx"
  \leavevmode
  \marginpar{\RaggedLeft\textcolor{\markercolor}{\sf\proportionaloldstylefigures\scshape #1}}%
  \ignorespaces
}

\newcommand*{\singlequotes}[1]{\mbox{`#1'}}

\newcommand*{\spacedemdash}{---}% anticipate the use of "typog.sty"

\definecolor{customred1}{rgb}{.890, .282, .282}%-- https://paletton.com/
\definecolor{customred2}{rgb}{.831, .110, .110}
\definecolor{customred3}{rgb}{.686, .043, .043}
\definecolor{customred4}{rgb}{.569, .000, .000}
\definecolor{customred5}{rgb}{.420, .000, .000}
\newcommand*{\specialsectionheading}[1]{\textcolor{\markercolor}{\textit{\textbf{#1}}}}
\newcommand*{\markercolor}{customred4}
\newcommand*{\specialsectionmarker}{\color{\markercolor}\filledsquare{5pt}}
\newcommand*{\specialsectionbegin}
            {\llap{\raisebox{1pt}{\specialsectionmarker}%
             \hspace{\marginindicatorsep}}}
\newcommand*{\specialsectionend}
            {\ifmmode
               \specialsectionmarker
             \else
               \leavevmode
               \unskip
               \penalty9999\mbox{}\nobreak
               \hfill
               \quad
               \mbox{\specialsectionmarker}%
             \fi}
\newtoggle{printspecialsectionmarker}
\NewDocumentEnvironment{specialsection}{m m}
                       {\Needspace{4\baselineskip}%
                        \toggletrue{printspecialsectionmarker}%
                        \begin{list}
                              {\specialsectionheading{#1\ifblank{#2}{}{\textup{\space---\space#2}}}}
                              {\itemindent=0pt
                               \labelwidth=10pt
                               \leftmargin=15pt
                               \listparindent=15pt
                               \parsep=0pt
                               \topsep=\medskipamount}
                        \newcommand*{\specialsectionendhere}
                                    {\specialsectionend
                                     \global\togglefalse{printspecialsectionmarker}}
                        \item
                        \nointerlineskip
                        \leavevmode\par
                        \noindent}
                       {\iftoggle{printspecialsectionmarker}{\specialsectionend}{\relax}%
                        \end{list}}

    \newenvironment*{caution}[1][]{\begin{specialsection}{Caution}{#1}}{\end{specialsection}}
    \newenvironment*{example}[1][]{\begin{specialsection}{Example}{#1}}{\end{specialsection}}
    \newenvironment*{futuredirection}[1][]
                    {\begin{specialsection}{Anticipated Changes \textit{\&} Possible Extensions}{#1}\small}
                    {\end{specialsection}}
    \newenvironment*{important}[1][]{\begin{specialsection}{Important}{#1}}{\end{specialsection}}
    \newenvironment*{note}[1][]{\begin{specialsection}{Note}{#1}}{\end{specialsection}}
    \newenvironment*{notes}[1][]{\begin{specialsection}{Notes}{#1}}{\end{specialsection}}
    \newenvironment*{tip}[1][]{\begin{specialsection}{Tip}{#1}}{\end{specialsection}}
    \newenvironment*{tips}[1][]{\begin{specialsection}{Tips}{#1}}{\end{specialsection}}
    \newenvironment*{usecase}[1][]{\begin{specialsection}{Use Case}{#1}\small}{\end{specialsection}}
    \newenvironment*{usecases}[1][]{\begin{specialsection}{Use Cases}{#1}\small}{\end{specialsection}}

\newcommand*{\specialcodesectionheading}[1]{\textcolor{\markercolor}{\textbf{\textit{#1}}}}
\newenvironment*{specialcodesection}[1]
                {\Needspace{4\baselineskip}%
                 \begin{tcolorbox}[blanker,
                                   borderline west={3pt}{0pt}{\markercolor},
                                   breakable,
                                   left=15pt]
                 \sffamily
                 \begin{list}
                       {\specialcodesectionheading{#1}}
                       {\itemindent=0pt
                        \labelwidth=20pt
                        \leftmargin=25pt
                        \listparindent=15pt
                        \parsep=0pt
                        \topsep=\medskipamount}
                 \item
                 \nointerlineskip
                 \leavevmode\par
                 \fussy
                 \noindent}
                {\end{list}
                 \end{tcolorbox}}
    \newenvironment*{anticipatedchange}
                    {\begin{specialcodesection}{Anticipated Change}}
                    {\end{specialcodesection}}
    \newenvironment*{implementationnote}
                    {\begin{specialcodesection}{Implementation Note}}
                    {\end{specialcodesection}}
    \newenvironment*{knownbug}
                    {\begin{specialcodesection}{Known Bug}}
                    {\end{specialcodesection}}

\newenvironment*{suspendshortverb}
                {\DeleteShortVerb{\|}}
                {\MakeShortVerb{\|}}

\definecolor{cold-silver}{cmyk}{.08, 0, 0, .18}
\newenvironment*{synopsis}
                {\begin{tcolorbox}[boxrule=.25pt, colback=cold-silver]%
                 \phantomsection}
                {\end{tcolorbox}}

\newcommand*{\synthslantlogo}
            {{\sffamily
              S\hspace{-.05em}\synthslantbox{.15}{y}\hspace{.07em}nth%
              \hspace{-.02em}%
              Slant}}

\newenvironment*{tablenotes}
                {\medskip
                 \centering
                 \begin{minipage}{\floatcaptionwidth}}
                {\end{minipage}}
\newcommand*{\tablenotemark}[1]{\smash{\textsuperscript{#1}}}

\newcommand*{\termparbox}[1]{\parbox[t]{\linewidth}{#1\bottomstrut}}

\newcommand*{\thousandsseparator}{\mbox{,}}

\newcommand*{\tikzlogo}{\textrm{Ti\textit{k\/}Z}}

\newcommand*{\toccontinuesonnextpage}
            {\addtocontents{toc}{\par
                                 \bigskip
                                 \hfill\textit{Table of Contents continued on next page.}\par
                                 \clearpage}}

\newcommand*{\topstrut}{\rule{0pt}{1.3em}}

\newcommand*{\transpose}[1]{{#1}^{\text{T}}}

\newlength{\ttellipsisgap}
\setlength{\ttellipsisgap}{.4em}
\newcommand*{\ttdots}
            {\setbox0=\hbox{.}%
             \wd0=0pt%
             \copy0\kern\ttellipsisgap
             \copy0\kern\ttellipsisgap
             \box0\kern\ttellipsisgap}

\newcommand*{\unmarkedfntext}[1]
            {{\def\thefootnote{}\footnote{#1}%
              \addtocounter{footnote}{-1}}}

\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}}

\newcommand*{\visualpar}{~\textcolor{\markercolor}{\P}\linebreak[1]\enspace}

\newenvironment*{widecodeexample}
                {\begin{widebody}
                 \flushright
                 \begin{minipage}{\textwidth}
                 \ttfamily
                 \begin{tabbing}}
                {\end{tabbing}
                 \end{minipage}
                 \end{widebody}}


\hyphenation{% https://hyphenateit.com/en-us
  neg-slant-context
  neg-slant-environment
  slant-context
  slant-environment
  synth-neg-slant
  synth-slant
  synth-slant-box
  text-synth-slant
  text-synth-upright-italic
}


\newcommand*{\librecaslonmapline}
            {LibreCsln-Italic-osf-t1--base LibreCsln-Italic
                " -0.12 SlantFont AutoEnc_etzx2kxblronahmbt4swbkr7jb ReEncodeFont "
                <[lcsln_etzx2k.enc <LibreCsln-Italic.pfb}
\ifdefined\pdfoutput
  \ifnum\pdfoutput>0
    \pdfmapline{=\librecaslonmapline}
  \else
    \special{pdf:mapline \librecaslonmapline}
  \fi
\else
  \special{pdf:mapline \librecaslonmapline}
\fi


\DeclareMathOperator*{\slantedsum}{\synthslantbox{.15}{$\displaystyle\sum$}}
\DeclareMathOperator*{\uprightint}{\synthslantbox{-.15}{$\displaystyle\int\negthickspace$}}

\newenvironment{mybibliography}
               {\begin{RaggedRight}%
                \def\MakeUppercase##1{\sf\letterspacedsmallcaps{##1}}%
                \begin{thebibliography}{88}}
               {\end{thebibliography}%
                \end{RaggedRight}}


\iffalse
  %%  Linearize document and make it more palpable for pdftotext(1).
  \OnlyDescription

  \let\oldcode=\code
  \renewcommand*{\code}[1]{\mbox{\oldcode{#1}}}
  \let\oldcs=\cs
  \renewcommand*{\cs}[1]{\mbox{\oldcs{#1}}}
  \renewcommand*{\footnote}[2][]{\space({#2})\space}
  \renewcommand*{\footnotetext}[2][]{\space({#2})\space}
  \renewcommand*{\LaTeXe}{LaTeX~2~epsilon}
  \renewcommand*{\LaTeXIII}{LaTeX~3}
  \renewcommand*{\LaTeX}{LaTeX}
  \renewcommand*{\LuaLaTeX}{LUA~LaTeX}
  \renewcommand*{\LuaTeX}{LUA~TeX}
  \renewcommand*{\MP}{Meta~Post}
  \renewcommand*{\marginpar}[1]{\space({#1})\space}
  \renewcommand*{\moveleft}[2]{#2}
  \let\oldpagestyle=\pagestyle
  \renewcommand*{\pagestyle}[1]{\oldpagestyle{plain}}
  \renewcommand*{\pdfLaTeX}{PDF~LaTeX}
  \renewcommand*{\pdfTeX}{PDF~TeX}
  \renewcommand*{\sample}[1]{\mbox{`#1'}}
  \let\scshape=\relax
  \let\sf=\relax
  \let\sffamily=\relax
  \renewcommand*{\TeX}{TeX}
  \renewcommand*{\textsc}[1]{#1}

  \RenewDocumentEnvironment{multicols}{m o o}{}{}

  \lefthyphenmin=62
  \righthyphenmin=62

  \overfullrule=0pt
\fi


\begin{document}
  \DocInput{synthslant.dtx}
\end{document}
%</driver>
%<*index-style>
actual            '='
delim_0           "\\nobreak\\enspace"
delim_1           "\\nobreak\\enspace"
delim_2           "\\nobreak\\enspace"
heading_prefix    "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large\\indexgroup "
heading_suffix    "}\\nopagebreak\n"
headings_flag     1
level             '>'
line_max          65536
quote             '!'
%</index-style>
%<*changes-style>
actual            '='
delim_0           "\\nobreak\\enspace"
delim_1           "\\nobreak\\enspace"
delim_2           "\\nobreak\\enspace"
heading_prefix    "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
heading_suffix    "}\\nopagebreak\n"
headings_flag     0
item_x1           "\\efill\n\\subitem "
item_x2           "\\ "
keyword           "\\glossaryentry"
level             '>'
line_max          65536
postamble         "\n\\end{theglossary}\n"
preamble          "\\begin{theglossary}\n  \\makeatletter\\scan@allowedfalse"
quote             '!'
%</changes-style>
%  \fi
%
%
%  \DoNotIndex{\-}
%  \DoNotIndex{\begingroup,\bool,\box}
%  \DoNotIndex{\DeclareOptionX,\def,\dim,\dimen,\discretionary,\draw}
%  \DoNotIndex{\edef,\else}
%  \DoNotIndex{\endgroup,\endmicrotypecontext,\endnegslantenvironment,\endslantenvironment}
%  \DoNotIndex{\expandafter,\ExplSyntaxOff,\ExplSyntaxOn}
%  \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp,\fpeval}
%  \DoNotIndex{\hbox,\hskip}
%  \DoNotIndex{\ifcase,\ifcsdef,\ifdefined,\ifluatex,\ifmmode,\ifnum,\ifpdftex,\ifx,\itshape}
%  \DoNotIndex{\kern}
%  \DoNotIndex{\l,\let,\llap}
%  \DoNotIndex{\mbox,\microtypecontext}
%  \DoNotIndex{\NeedsTeXFormat}
%  \DoNotIndex{\newbox,\newcommand,\NewDocumentCommand,\NewDocumentEnvironment,\newenvironment,\newrobustcmd}
%  \DoNotIndex{\node,\nolinebreak}
%  \DoNotIndex{\or}
%  \DoNotIndex{\PackageError,\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage}
%  \DoNotIndex{\pdfoutput,\pdfrestore,\pdfsave,\pdfsetmatrix,\pstilt}
%  \DoNotIndex{\relax,\RequirePackage}
%  \DoNotIndex{\sbox,\setbox,\skip,\space,\string}
%  \DoNotIndex{\tikz}
%  \DoNotIndex{\upshape,\usebox}
%  \DoNotIndex{\wd}
%  \DoNotIndex{\xdef}
%
%
%  \changes{v0.1}{2024-2-12}{Initial version.}
%
%
%  \pagenumbering{roman}
%
%  \title{\vspace{-30pt}%
%         {\sffamily\elseries\fontsize{84}{0}\selectfont
%          \textls[-30]{\synthslantlogo}}  \\[30pt]
%         \large A \LaTeX{} Package for Artificial Text Slanting}
%  \author{Ch.~L.~Spiel\footnote{\quarterspace\texttt{cspiel@users.sourceforge.org}}}
%  \date{\fileversion\qquad \filedate}
%  \maketitle
%  \thispagestyle{empty}
%
%
%  \begin{abstract}
%    \noindent
%    The \packagename{synthslant} package allows for the artificial slanting of text.  It is
%    designed to simulate slanted fonts for \textsynthslant{short} text segments and create
%    effects such as upright italic.  It includes macros and environments to control the
%    slanting process, enabling both forward and backward slanting of glyphs.
%
%    The manual also discusses how to determine and match the slant of italic fonts,
%    facilitating integration with existing document typography.
%  \end{abstract}
%
%
%  \iffalse
%<*title>
prologues := 3;

string roman_font;
roman_font := "pplr8r";         % URW Palladio L - Roman

string italic_font;
italic_font := "pplri8r";      % URW Palladio L - Italic

string sample_text;
sample_text := "fga";

u := 70;

font_scale := 7;

color light_gray;
light_gray := .8 white;

color original_color, slanted_color;
original_color := light_gray;
slanted_color := black;

pair loc[];
loc[1] := (0, 0);               % roman
loc[2] := (1.9u, 0);            % italic
loc[3] := (2.03u, 1.1u);        % slanted roman
loc[4] := (-.1u, -1.1u);        % upright italic

picture roman;
roman := thelabel.rt(sample_text infont roman_font scaled font_scale, loc[1]);

picture italic;
italic := thelabel.rt(sample_text infont italic_font scaled font_scale, loc[2]);

picture slanted_roman;
slanted_roman := thelabel.rt(sample_text infont roman_font scaled font_scale slanted .2, loc[3]);

picture upright_italic;
upright_italic := thelabel.rt(sample_text infont italic_font scaled font_scale slanted -.2, loc[4]);


beginfig(1);
  draw roman withcolor original_color;
  draw italic withcolor original_color;
  draw slanted_roman withcolor slanted_color;
  draw upright_italic withcolor slanted_color;
endfig;
end
%</title>
%  \fi
%
%  \vfill
%
%  \begin{center}
%    \includegraphics{title.mps}
%  \end{center}
%
%  \vfill
%
%  \begingroup
%    \footnotesize
%    \noindent
%    This package is copyright \textcopyright~2024, 2025 Ch.~L.~Spiel.  It may be distributed
%    and/or modified under the conditions of the
%    \href{https://www.latex-project.org/lppl.txt}{\LaTeX{} Project Public License}
%    \acronym{(LPPL)}, either version~1.3c of this license or\spacedemdash at your
%    option\spacedemdash any later version.  This work has the \acronym{LPPL} maintenance status
%    \doublequotes{author-maintained}.\par
%  \endgroup
%
%
%  \clearpage
%  \pagestyle{pagenumberonly}
%
%  \unmarkedfntext{The font samples~\singlequotes{fga} on the title page were generated with the
%    help of \MP{} using \doublequotes{\acronym{URW} Palladio} in styles~\singlequotes{roman}
%    and~\singlequotes{italic}.  The affine transformations were\enspace \code{slanted
%    .2}\enspace for the slanted roman and\enspace \code{slanted -.2}\enspace for the upright
%    italic.}
%  \setcounter{tocdepth}{2}
%  \tableofcontents
%
%  \vspace{\fill}
%
%  \listoftables
%  \bigskip
%  \listoffigures
%
%  \vspace{\fill}
%
%
%  \clearpage
%  \pagestyle{fancy}
%  \phantomsection
%  \addcontentsline{toc}{section}{\numberline{}Quick Reference}
%  \addtocontents{toc}{\medskip}
%  \section*{Quick Reference}
%  \markboth{\sf\letterspacedsmallcaps{Quick Reference}}{\sf\letterspacedsmallcaps{Quick Reference}}
%  \index{quick>reference|userman}
%
%  This is an alphabetically sorted list of all user macros and environments defined by
%  package~\packagename{synthslant} along with the page numbers of their descriptions.  The list
%  of all \hyperref[sec:package-options]{package options} can be found on
%  pages~\pageref{sec:package-options} and \pageref{secend:package-options}.  The
%  \hyperref[sec:index]{Index} on pages~\pageref{sec:index} to~\pageref{secend:index} may
%  provide some more detailed insights.
%
%  \begin{list}{}{\itemindent=-\leftmargin
%                 \itemsep=5pt plus 2pt minus 1pt}
%    \NewDocumentCommand{\qritem}{m m O{}}
%                {\item
%                 \hyperref[#1]{#2}#3\relax
%                 \def\qrref{\quad\textbf{\pageref{#1}}}%
%                 \leavevmode
%                 \linebreak
%                 \ignorespaces}
%  \qritem{syn:negslantcontext}{\cs{negslantcontext}}
%    Name of the \packagename{microtype} context used when typesetting backward slanted
%    text.\qrref
%
%  \qritem{syn:negslantenvironment}{\code{negslantenvironment}}
%    Wrapper around \cs{synthslantbox} when slanting backward with
%    \cs{textsynthuprightitalic}.\qrref
%
%  \qritem{syn:slantcontext}{\cs{slantcontext}}
%    Name of the \packagename{microtype} context used when typesetting forward slanted
%    text.\qrref
%
%  \qritem{syn:slantenvironment}{\code{slantenvironment}}
%    Wrapper around \cs{synthslantbox} when slanting forward with
%    \cs{textsynthslant}.\qrref
%
%  \qritem{syn:synthnegslant}{\cs{synthnegslant}}
%    Slant value used by \cs{textsynthuprightitalic}.\qrref
%
%  \qritem{syn:synthslantbox}{\cs{synthslantbox}}[\marg{slant}\marg{text}]
%    Slant \meta{text} (forward or backward) by \meta{slant}.\qrref
%
%  \qritem{syn:synthslant}{\cs{synthslant}}
%    Slant value used by \cs{textsynthslant}.\qrref
%
%  \qritem{syn:textsynthslant}{\cs{textsynthslant}}[\marg{text}]
%    Forward slant roman, i.\,e., upright \meta{text}.\qrref
%
%  \qritem{syn:textsynthuprightitalic}{\cs{textsynthuprightitalic}}[\marg{text}]
%    Backward slant italic \meta{text}.\qrref
%  \end{list}
%
%
%  \clearpage
%  \phantomsection
%  \addcontentsline{toc}{section}{\numberline{}Quick Start}
%  \addtocontents{toc}{\medskip}
%  \section*{Quick Start}
%  \markboth{\sf\letterspacedsmallcaps{Quick Start}}{\sf\letterspacedsmallcaps{Quick Start}}
%  \index{quick>start|userman}
%
%  For all users who want just the functionality, not the explanations, here is an example that
%  shows how to use the most important macros.
%
%  \medskip
%
%  \begingroup
%    \small
%    \begin{codeexample}
%      \cs{documentclass}\{article\}  \\
%      \\
%      \cs{usepackage}\{mlmodern\}\% \textit{load an example font}  \\
%      \\
%      \% \textit{\hyperref[sec:package-options]{Package Options}, \cpageref{sec:package-options}}  \\
%      \index{font>typeface>ML Modern=\acronym{ML} Modern|userman}\relax
%      \% \textit{Slant values are suitable for \href{https://tug.org/FontCatalogue/mlmodern/}{ML Modern}.}  \\
%      \detoxindex{package option>posslant=\code{posslant}|userman}\relax
%      \detoxindex{posslant=\code{posslant}~(option)|userman}\relax
%      \detoxindex{package option>negslant=\code{negslant}|userman}\relax
%      \detoxindex{negslant=\code{negslant}~(option)|userman}\relax
%      \cs{usepackage}[posslant=.23, negslant=-.21]\{synthslant\}  \\
%      \\
%      \cs{begin}\{document\}  \\
%      \% \textit{\hyperref[sec:variables]{Variable-Like Macros}, \cpageref{sec:variables}}  \\
%      \% \textit{The redefinitions are unnecessary since \code{posslant} and}  \\
%      \% \textit{\code{negslant} have already been specified as package options,}  \\
%      \% \textit{but they can be used anywhere in the document.}  \\
%      \cs{renewcommand*}\{\cs{synthslant}\}\{.23\}\index{synthslant=\verb!*+\synthslant+|userman}  \\
%      \cs{renewcommand*}\{\cs{synthnegslant}\}\{-.21\}\index{synthnegslant=\verb!*+\synthnegslant+|userman}  \\
%      \\
%      \% \textit{\hyperref[sec:basic-interface]{Basic Interface}, \cpageref{sec:basic-interface}}  \\
%      \% \textit{Slant upright shape to the right by \cs{synthslant}.}  \\
%      \index{textsynthslant=\verb!*+\textsynthslant+|userman}\relax
%      \cs{textsynthslant}\{Generierter schräger Schriftschnitt,\}\%\quad\=\textit{(1)}  \\
%      \cs{textsynthslant}\{Antiqua-Schrift,\}\%\>\textit{(2)}  \\
%      \cs{textsynthslant}\{Sauer\cs{-}stoff\cs{-}fla\cs{-}sche,\}\%\>\textit{(3)}  \\
%      \cs{textsynthslant}\{Be\cs{discretionary}\{tt-\}\{t\}\{tt\}uch.\}\%\>\textit{(4)}  \\
%      \\
%      \% \textit{Slant italic shape to the left by \textminus\cs{synthnegslant}.}  \\
%      \index{textsynthuprightitalic=\verb!*+\textsynthuprightitalic+|userman}\relax
%      \cs{textsynthuprightitalic}\{Aufrechte kursive Schriftlage.\}  \\
%      \\
%      \% \textit{\hyperref[sec:advanced-interface]{Advanced Interface}, \cpageref{sec:advanced-interface}}  \\
%      \% \textit{Use separate slants for each box.}  \\
%      \index{synthslantbox=\verb!*+\synthslantbox+|userman}\relax
%      \cs{synthslantbox}\{-.25\}\{H\}\index{synthslantbox=\verb!*+\synthslantbox+|userman}  \\
%      \cs{synthslantbox}\{0\}\{H\}  \\
%      \cs{synthslantbox}\{.25\}\{H\}  \\
%      \cs{end}\{document\}
%    \end{codeexample}
%  \endgroup
%
%  \medskip
%
%  \noindent
%  The macros \hyperref[syn:textsynthslant]{\cs{textsynthslant}},
%  \hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}, and
%  \hyperref[syn:synthslantbox]{\cs{synthslantbox}} basically typeset their arguments in
%  \acronym{LR}~mode, i.\,e., as if wrapped in an \cs{mbox}.  \packagename{Synthslant}
%  reintroduces line breakability at spaces, hyphens, discretionary hyphens, and
%  \cs{discretionary} primitives.  The tagged lines in the above example thus present the
%  following line breaking opportunities:
%
%  \begin{enumerate}[label*=(\tabularliningfigures\arabic*), nosep]
%  \item Two breakpoints at the spaces.
%  \item One breakpoint after the hyphen.
%  \item Three breakpoints at the discretionary hyphens.
%  \item One breakpoint at the \cs{discretionary}.
%  \end{enumerate}
%
%  \smallskip
%
%  For an example in math mode see the \hyperref[tip:display-style-math-operators]{tip} on
%  \Cpageref{tip:display-style-math-operators}.
%
%
%  \clearpage
%  \pagenumbering{arabic}
%  \section{Introduction}\label{sec:introduction}
%
%  The \packagename{synthslant} package provides a translator-independent way to shear glyphs.
%  This means it works with \LaTeX, \pdfLaTeX, and \LuaLaTeX.  It implements a generic operation
%  where a short piece of text gets slanted forward or backward.  Moreover, specialized macros
%  for the two most important use cases are provided, namely slanting an upright font forward
%  and making an italic font upright.  Unbeknownst to some users, \pdfTeX{} performs a similar
%  operation under the hood: of the 40\thousandsseparator210~map lines in our
%  \filesystem{pdftex.map}, currently 1\thousandsseparator236 instruct \pdfTeX{} to artificially
%  slant a font.  This means approximately three percent of the shapes are generated this way.
%
%  Similar transformations can be achieved by other means; we elaborate on some of the
%  alternatives in \cref{sec:alternative} on
%  pages~\pageref{sec:alternative}--\pageref{secend:alternative}.
%  Package~\packagename{synthslant} however focuses on ease of use and strict locality of the
%  glyph manipulation.
%
%
%  \subsection{Technical Terms: Italic -- Oblique -- Slanted}\label{sec:italic-slanted}
%
%  We shall use several technical terms that describe the type or shape of a font.  To avoid any
%  confusion we define them right here.
%
%  \begin{description}
%  \item[Italic:]\index{italic|userman} An italic font is a complement to a given
%  serif\footnote{Called \singlequotes{roman} in \TeX's technical terms.} font.  It is drawn by
%  a human font designer, who interprets the original serif font in a fundamentally artistic
%  way.
%
%  The title page already shows an example:
%  \acronym{URW}~Palladio\index{font>typeface>URW Palladio=\acronym{URW} Palladio|userman}
%  upright and italic in light gray, artificially slanted in black.
%
%  \item[Oblique:]\index{oblique|userman} An oblique font is a complement to a given sans-serif
%  font.  Some oblique fonts are designed in a tradition similar to that of italic fonts.  These
%  may feature for example single-story~\singlequotes{a}s, whereas the original sans-serif fonts
%  have double-story~\singlequotes{a}s.\!\footnote{An oblique font's characteristics even may
%  vary for different releases, e.\,g., for Frutiger Italic\detoxindex{font>typeface>Frutiger
%  Italic|userman} (1976) compared to Frutiger Next Italic\detoxindex{font>typeface>Frutiger
%  Next Italic|userman} (2000) or Neue Frutiger Italic\detoxindex{font>typeface>Neue Frutiger
%  Italic|userman} (2009)~\cite[p.~69]{middendorp:2014}.}  Oblique fonts that are artificially
%  slanted versions of upright fonts also exist.
%
%  \item[Slanted:]\index{slanted|userman} A slanted\footnote{\propername{Bringhurst} uses the
%  term \singlequotes{sloped}~\cite[p.~49]{bringhurst:2004}.} font is always created
%  mechanically by applying a shear-transform (explained in \cref{sec:shear-transformation} on
%  \cpageref{sec:shear-transformation}) to the glyphs of a given font.  The original font can be
%  serif, sans serif, upright, italic, oblique, or mathematical.
%
%  To be clear, we sometimes add the adverbs \singlequotes{artificially} or
%  \singlequotes{synthetically} to the term \singlequotes{slanted}.
%  \end{description}
%
%  In practice, these terms are used imprecisely; for example, an oblique sans-serif font may be
%  called \singlequotes{italic}, or the notions of \singlequotes{oblique} and
%  \singlequotes{slanted} may be conflated.  We strive to be precise in this document, though.
%
%
%  \newpagetofixtoc
%  \subsection{Appeal for Slanted Type}\label{sec:appleal-for-slanted}
%
%  Artificially slanted typefaces have a poor reputation, much like artificial
%  bold\footnote{Package~\packagename{amsbsy} defines a \doublequotes{Poor Man's Bold}
%  macro~\cs{pmb} that works by \singlequotes{overprinting}.  The authors of
%  \packagename{amsbsy} recommend to prefer package~\packagename{bm} for bold mathematical
%  symbols, though.} or condensed ones.\!\footnote{See for example reference~\citenum{strizver:2014},
%  p.~97, but compare with p.~142 and also reference~\citenum{middendorp:2014}, p.~68n, for a more
%  nuanced assessment.}  This criticism can be traced for synthetic bold and condensed variants.
%  They spoil the glyphs' outlines because they do not (and cannot) conserve the necessary
%  proportions.  For small caps the problems are somewhat minor; it is worth testing how far one
%  can go using an \propername{OpenType}\detoxindex{OpenType=\propername{OpenType}|userman}~font
%  that supports a \code{size}~axis\index{font>axis>size=\code{size}|userman} as well as an
%  \code{opsz}~axis\index{font>axis>opsz=\code{opsz}|userman} in the necessary ranges to
%  construct convincing small caps out of the multiple~master
%  font.\!\footnote{\detoxindex{FontForge=\application{FontForge}|userman}\relax
%  \application{FontForge}~\cite{fontforge} provides a means to generate small caps of any given
%  glyphs, which allows to control the \(x\)-scale and \(y\)-scale factors and the widths of the
%  stems.  \acronym{GUI}~sequence: Element~> Style~> Add Small Capitals, script function:
%  \code{SmallCaps}, and Python method: \code{addSmallCaps}.}
%
%  A common criticism of synthetically slanted type is that it lacks the contrast of true
%  italic~\cite[p.~141]{strizver:2014}.  However, in many settings, this reduced contrast is
%  sufficient.  Furthermore, a slight contrast with the main typeface is of secondary concern;
%  it does not devalue the shape \foreignphrase{per se} as is the case for artificial bold and
%  condensed fonts.
%
%  What seems to have been lost in the discussion is the fact that true italic, designed
%  alongside roman type, exhibit markedly different shapes.  If we have an unbiased look at
%  it\spacedemdash for example at the title~page of this manual\spacedemdash the italic versions
%  of the upright characters are so markedly different that it is worth asking whether they
%  truly match the upright forms.  For the double-storey~\sample{a} becomes single storey, the
%  start of the loop of~\sample{g} moves from the far left to the middle.  Besides, the aspect
%  ratio of both counters change.  These differences challenge the common
%  guidelines~\cite[Ch.~6]{stamm:2020} for font pairing.  The apparent contradiction makes sense
%  when we recognize that italic are not just slanted versions of roman letters.  They introduce
%  tension through several additional design features.  A famous quote of \propername{Zuzana
%  Li\v{c}ko} applies once again:
%
%  \begin{quote}\small\samepage
%    The most popular typefaces are the easiest to read; their popularity has made them
%    disappear from conscious cognition.  It becomes impossible to tell if they are easy to read
%    because they are commonly used, or if they are commonly used because they are easy to read.
%  \end{quote}
%
%
%  \subsection{Some History}\label{sec:history}
%
%  Italics\index{italic|userman} accompanying a roman font date back to one of the earliest
%  print shops, namely that of
%  \href{https://it.wikipedia.org/wiki/Aldo_Manuzio}{\propername{Aldo Manuzio}}\relax
%  \index{Manuzio=\propername{Manuzio, Aldo}|userman} (lat.~\propername{Aldus Manutius}) around
%  1500.  Probably the first sans-serif font with an oblique version was
%  Venus\index{font>typeface>Venus}, released as an upright family of fonts in 1907 and
%  accompanied by italic (ger.~\foreignphrase{kursiv}) since
%  1910~\cite{klingspor-museum-venus}.  Artificially slanted versions of upright fonts, also
%  known as \singlequotes{oblique},\index{oblique|userman} appear in the twentieth century, when
%  type designers and foundries start to save time and money by automatically constructing
%  slanted versions of roman type~\cite[p.~68n]{middendorp:2014}.  \packagename{Synthslant}
%  follows in their footsteps, offering similar functionality.
%
%  Some fonts in current \LaTeX{} distributions offer slanted series out of the box.  In
%  particular, the oldest (and once upon a time the only) font family shipping with \TeX,
%  \href{https://tug.org/FontCatalogue/cmrfonts.html}{\acronym{CM} Roman}\index{font>typeface>CM
%  Roman=\acronym{CM} Roman|userman}\spacedemdash nowadays member of the \acronym{CM}-Super
%  family\spacedemdash is available in a variety of almost thirty shapes, which is quite
%  remarkable.  It covers not just slanted roman or slanted small caps, but also slanted
%  typewriter and, somewhat surprisingly, upright italic.  Only a few font families come with
%  upright italic; see \Cref{tab:upright-italic}.  Furthermore, the \LaTeXe{} font selection
%  scheme provides \singlequotes{\code{sl}} for slanted shapes and \singlequotes{\code{ui}} for
%  upright italic~\cite{fntguide}.  The former is associated with the macros~\cs{slshape}
%  and~\cs{textsl}.
%
%  \begingroup
%    \captionsetup[table]{width=.4\textwidth}
%    \begin{table}\hfill
%      \begin{minipage}{.4\textwidth}
%        \centering
%        \caption[Fonts with upright italic]
%                {Some font families with upright italic.}
%        \label{tab:upright-italic}
%
%        \begin{tabular}{@{}l@{}}
%          \toprule
%          Font  \\
%          \midrule
%          Anona\index{font>typeface>Anona|userman}  \\
%          Auto~3\index{font>typeface>Auto 3|userman}  \\
%          Coline Extrême\index{font>typeface>Coline Extrême|userman}  \\
%          FF Seria\index{font>typeface>FF Seria=\acronym{FF}~Seria|userman}  \\
%          Goudy Old Style\index{font>typeface>Goudy Old Style|userman}  \\
%          Joanna\index{font>typeface>Joanna|userman}  \\
%          Literata\index{font>typeface>Literata|userman}  \\
%          Odile\index{font>typeface>Odile|userman}  \\
%          Romanée\index{font>typeface>Romanée|userman}  \\
%          Seria\index{font>typeface>Seria|userman}  \\
%          \bottomrule
%        \end{tabular}
%      \end{minipage}\hfill
%      \begin{minipage}{.4\textwidth}
%        \centering
%        \caption[Variable fonts with slant axis]
%                {A short list of some variable fonts with a slant axis (\code{slnt}).}
%        \label{tab:open-type-slant-feature}
%
%        \begin{tabular}{@{}l@{}}
%          \toprule
%          Font  \\
%          \midrule
%          Adapter\index{font>typeface>Adapter|userman}  \\
%          Armoire\index{font>typeface>Armoire|userman}  \\
%          Cairo\index{font>typeface>Cairo|userman}  \\
%          Commissioner\index{font>typeface>Commissioner|userman}  \\
%          Geologica\index{font>typeface>Geologica|userman}  \\
%          Gluten\index{font>typeface>Gluten|userman}  \\
%          Inter\index{font>typeface>Inter|userman}  \\
%          Recursive\index{font>typeface>Recursive|userman}   \\
%          Ritualist\index{font>typeface>Ritualist|userman}  \\
%          Roboto Flex\index{font>typeface>Roboto Flex|userman}  \\
%          \bottomrule
%        \end{tabular}
%      \end{minipage}\hfill\mbox{}
%    \end{table}
%  \endgroup
%
%  Refer to \cref{tab:open-type-slant-feature} for a brief list of variable fonts\footnote{See
%  also the \LaTeX~Font Catalogue for
%  \href{https://tug.org/FontCatalogue/opentypefonts.html}%
%       {Fonts with \propername{OpenType}\detoxindex{OpenType=\propername{OpenType}|userman} or
%        \propername{TrueType}~Support}
%  and search \href{https://fonts.google.com/}{Google Fonts} for families of
%  \href{https://fonts.google.com/variablefonts?vfaxis=slnt}{variable fonts with a
%  \code{slnt}~axis} or fonts with an \href{https://v-fonts.com/tags/C5}{unusual variation} at
%  \href{https://v-fonts.com/}{Variable Fonts}.}  that offer a slant-axis\footnote{The
%  registered axis is called \code{slnt} and it is not to be confused with the
%  \code{ital}~axis.}\index{font>axis>slnt=\code{slnt}|userman}\index{font>axis>ital=\code{ital}|userman}
%  that can be controlled with
%  \packagename{fontspec}'s\index{package>fontspec=\packagename{fontspec}|userman}
%  \code{Slant}\footnote{Since \packagename{fontspec} version~2.9a as of 2024/2/13.}~key and
%  \cref{tab:slanted-series-fonts} for a rather incomplete list of fonts that are shipped with
%  slanted shapes.  For these fonts \packagename{synthslant} is largely superfluous unless
%  e.\,g.~they also come with an italic shape that is to be typeset upright.
%
%  \begin{table}
%    \centering
%    \caption[Font families with slanted series]
%            {Selected font families that come with their own slanted series.}
%    \label{tab:slanted-series-fonts}
%
%    \newcommand*{\itshapemark}{\tablenotemark{\dag}}\relax
%
%    \begin{tabular}[t]{@{}p{12em}@{}}
%      \toprule
%      Serif Font  \\
%      \midrule
%      Arvo\index{font>typeface>Arvo|userman}  \\
%      \acronym{CM} Roman\index{font>typeface>CM Roman=\acronym{CM} Roman|userman}  \\
%      Domitian\index{font>typeface>Domitian|userman}  \\
%      Droid Serif\index{font>typeface>Droid Serif|userman}  \\
%      Erewhon\index{font>typeface>Erewhon|userman}  \\
%      Extended Charter\index{font>typeface>Extended Charter|userman}  \\
%      \acronym{GFS} Artemisia\index{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman}  \\
%      \acronym{GFS} Bodoni\index{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} \\
%      \acronym{GFS} Didot\index{font>typeface>GFS Didot=\acronym{GFS} Didot|userman}  \\
%      \\
%      \bottomrule
%    \end{tabular}
%    \qquad
%    \begin{tabular}[t]{@{}p{12em}@{}}
%      \toprule
%      Sans-Serif Font  \\
%      \midrule
%      Cabin\index{font>typeface>Cabin|userman}  \\
%      Clear Sans\index{font>typeface>Clear Sans|userman}  \\
%      Cuprum\index{font>typeface>Cuprum|userman}  \\
%      Fira Sans\index{font>typeface>Fira Sans|userman}  \\
%      Gandhi Sans\index{font>typeface>Gandhi Sans|userman}  \\
%      \acronym{Inria} Sans\index{font>typeface>Inria Sans=\acronym{Inria} Sans|userman}  \\
%      Lato\itshapemark\index{font>typeface>Lato|userman}  \\
%      Montserrat\index{font>typeface>Montserrat|userman}  \\
%      \acronym{PT} Sans\index{font>typeface>PT Sans=\acronym{PT} Sans|userman}  \\
%      Source Sans Pro\index{font>typeface>Source Sans Pro|userman}  \\
%      \bottomrule
%    \end{tabular}
%
%    \begin{tablenotes}
%      \itshapemark\enspace The shape is activated with \cs{itshape}.
%    \end{tablenotes}
%  \end{table}
%
%  It seems that the original idea of automatically shearing text in \LaTeX{} to simulate a
%  slanted shape goes back to
%  \propername{David Carlisle}\index{Carlisle=\propername{Carlisle, David}|userman}
%  who suggested to use the \pdfTeX~primitive \cs{pdfliteral} for
%  shearing~\cite{tex-stackexchange-2013-12-7}.  Shortly thereafter
%  \propername{Bruno} \propername{Le Floch}\index{Floch=\propername{Le Floch, Bruno}|userman}
%  pointed to another \pdfTeX~primitive, namely \cs{pdfsetmatrix}, available with (in 2013) more
%  recent \pdfTeX~versions~\cite{pdftex}.\!\footnote{The user-level manipulation of the
%  transformation matrix has been part of the \acronym{PDF}~standard since its initial
%  publication in 1993~\cite[Secs.~3.8 and~3.9]{adobe-pdf-1.0} in the form of operator~\code{cm}
%  (\singlequotes{concat}\spacedemdash concatenate matrix to current transformation
%  matrix).\visualpar The primitive~\cs{pdfliteral} was implemented already in the first
%  release of \pdfTeX{} in~1998~\cite{baskerville-pdftex-8-1:1998} and the
%  primitive~\cs{pdfsetmatrix} joined 2007 in \pdfTeX~version~1.40.0~\cite{schroeder:2007}.}
%  With the help of the latter affine transformations of arbitrary content can be coded directly
%  by setting the transformation matrix.  A slight variant of his code is used in this package
%  for the \acronym{PDF} and
%  \packagename{l3draw}\index{package>l3draw=\packagename{l3draw}|userman} slant engines.  The
%  implementations for \pstrickslogo\index{package>pstricks=\packagename{pstricks}|userman},
%  \tikzlogo\index{package>tikz=\packagename{tikz}|userman}, and
%  \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}userman} are trivial as
%  they build upon shear~functions supplied by the packages.
%
%
%  \subsection{Shear Transformation, Slant, and Angle}\label{sec:shear-transformation}
%
%  \index{slant>operation|userman}
%  \index{shear>transformation|userman}
%  Mathematically, the slant operation is a shear transformation, which can be expressed with the
%  equation
%  \begin{equation}\label{equ:shear-transformation}
%    \begin{pmatrix}
%      x'  \\
%      y'
%    \end{pmatrix}
%    =
%    \begin{pmatrix}
%      1  &  \sin\alpha  \\
%      0  &  1
%    \end{pmatrix}
%    \mathbin{}
%    \begin{pmatrix}
%      x  \\
%      y
%    \end{pmatrix},
%  \end{equation}
%
%  \noindent
%  where the vector~\(\transpose{(x, y)}\) is mapped to \(\transpose{(x'\!, y')}\) and both are
%  elements of the two-dimensional drawing plane~\(\numberset{E}^2\)\!.  Compare with
%  \Cref{fig:shear-transform}.
%
%
%  \iffalse
%<*shear-transform>
verbatimtex
%&latex
\documentclass{amsart}
\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, semibold]{sourcesanspro}
\usepackage[semibold]{sourcecodepro}
\usepackage[xcharter]{newtxmath}
\newcommand*{\numberset}[1]{\mathbb{#1}}
\newcommand*{\transpose}[1]{{#1}^{\text{T}}}
\begin{document}
etex


prologues := 3;


phi := .618;

u := 80;


numeric line_thickness[];
line_thickness[1] := .25 * 72/25.4;
line_thickness[2] := .35 * 72/25.4;
line_thickness[3] := .5  * 72/25.4;
line_thickness[4] := .7  * 72/25.4;

narrow_width := line_thickness[1];
medium_width := line_thickness[2];
wide_width := line_thickness[3];


%%  / x' \     / 1   slant \  / x \
%%  |    |  =  |           |  |   |
%%  \ y' /     \ 0     1   /  \ y /
def slant_point(expr a_point, a_slant) =
  (xpart a_point + ypart a_point * a_slant, ypart a_point)
enddef;


pair original_rectangle[];
original_rectangle[1] := (0, 0);
original_rectangle[2] := (u, 0);
original_rectangle[3] := (u, phi * u);
original_rectangle[4] := (0, phi * u);

slant := .2;

pair slanted_rectangle[];
slanted_rectangle[1] := slant_point(original_rectangle[1], slant);
slanted_rectangle[2] := slant_point(original_rectangle[2], slant);
slanted_rectangle[3] := slant_point(original_rectangle[3], slant);
slanted_rectangle[4] := slant_point(original_rectangle[4], slant);

pair offset[];
offset[0] := (0, 0);
offset[1] := (1.75u, 0);


beginfig(1);
  drawarrow (-.2u, 0) + offset[0] -- (1.25u, 0) + offset[0]
       withpen pencircle scaled narrow_width;
  drawarrow (0, -.2u) + offset[0] -- (0, u) + offset[0]
       withpen pencircle scaled narrow_width;

  label.llft(btex \(\numberset{E}^2\) etex, offset[0]);
  label.llft(btex \(x\) etex, (1.25u, 0) + offset[0] + (0, -2));
  label.lft(btex \(y\) etex, (0, u) + offset[0]);

  draw original_rectangle[1] + offset[0] --
       original_rectangle[2] + offset[0] --
       original_rectangle[3] + offset[0] --
       original_rectangle[4] + offset[0] --
       cycle
       withpen pencircle scaled wide_width;
  drawdot original_rectangle[4] + offset[0] withpen pencircle scaled 4pt;
  label.urt(btex \(\transpose{(x, y)}\) etex, original_rectangle[4] + offset[0] + (1, 1));


  drawarrow (-.2u, 0) + offset[1] -- (1.25u, 0) + offset[1]
       withpen pencircle scaled narrow_width;
  drawarrow (0, -.2u) + offset[1] -- (0, u) + offset[1]
       withpen pencircle scaled narrow_width;

  label.llft(btex \(\numberset{E}^2\) etex, offset[1]);
  label.llft(btex \(x\) etex, (1.25u, 0) + offset[1] + (0, -2));
  label.lft(btex \(y\) etex, (0, u) + offset[1]);

  draw slanted_rectangle[1] + offset[1] --
       slanted_rectangle[2] + offset[1] --
       slanted_rectangle[3] + offset[1] --
       slanted_rectangle[4] + offset[1] --
       cycle
       withpen pencircle scaled wide_width;
  drawdot slanted_rectangle[4] + offset[1] withpen pencircle scaled 4pt;
  label.urt(btex \(\transpose{(x'\!, y')}\) etex, slanted_rectangle[4] + offset[1] + (3, 1));


  pair p;
  p := slanted_rectangle[1] + offset[1];
  draw p -- (1.5slanted_rectangle[4] + offset[1])
       withpen pencircle scaled narrow_width;

  path angle_indicator;
  angle_indicator := fullcircle scaled 1.6u shifted offset[1];
  draw angle_indicator
       cutbefore (p -- (1.5slanted_rectangle[4] + offset[1]))
       cutafter (offset[1] -- (0, u) + offset[1]);
  label.rt(btex \(\alpha\) etex, 1.4original_rectangle[4] + offset[1] + (1, 0));
endfig;
end
%</shear-transform>
%  \fi
%
%
%  \begin{figure}
%    \centering
%    \includegraphics{shear-transform.mps}
%
%    \caption[Shear transform]
%            {Shear transform of a rectangle by the angle~\(\alpha\).  The left-hand side shows
%             the original figure the right-hand side the one sheared by~\(\alpha\).  The
%             \(x\)-axis can be identified with the baseline of the
%             text.}\label{fig:shear-transform}
%  \end{figure}
%
%
%  For \(\alpha = 0\) the shear matrix becomes the identity matrix.  Throughout
%  \packagename{synthslant}, we use the \meta{slant}, which is \(\sin \alpha\) in
%  \Cref{equ:shear-transformation}, avoiding the need to convert back and forth to the
%  \index{shear>angle|userman}shear angle~\(\alpha\).\!\footnote{At least one slant engine
%  currently requires such a conversion, namely~\pstrickslogo.  The math is hidden from the
%  user, though.}  Some values for orientation: \mbox{\(\sin 5.74\degree \approx .1\)},
%  \mbox{\(\sin 11.5\degree \approx .2\)}, and \mbox{\(\sin 17.5\degree \approx
%  .3\)}.\!\footnote{For small angles~\(\lvert\alpha\rvert\) measured in radians the sine is
%  approximately linear: \(\sin \alpha \approx \alpha\).}  For real-life serif fonts
%  \meta{slant} is in the range of~\(.1\) to~\(.45\) and a value of~\(.2\) seems to be quite
%  common.  Our \filesystem{pdftex.map} lists negative \meta{slant} values in the range~\(-.4\)
%  to~\(-.05\) and positive \meta{slant} values in the range~\(.14\) up to~\(.45\).  See
%  \Cref{tab:slant-values} on \cpageref{tab:slant-values} for some actual values of serif fonts
%  in \LaTeX.
%
%
%  \subsection{Usage Ideas}\label{sec:usage-ideas}
%
%  Automatic slanting, both forward and reverse, can be applied in a variety of typographic
%  situations.  Here are some usage ideas.
%
%  \begin{enumerate}
%  \item[\refstepcounter{enumi}\number\value{enumi}a.]\label{it:no-italic}
%    Generate a slanted serif font when a serif font lacks italics\index{italic|userman}, such
%    as \doublequotes{\acronym{URW} Antiqua}\index{font>typeface>URW Antiqua=\acronym{URW}
%    Antiqua|userman}.
%
%    Here, the user is relatively free to choose a \meta{slant} value, as there are no italic whose
%    angle must be matched.  \packagename{Synthslant}'s default of~0.2 should be a good starting
%    point.
%
%  \item[\number\value{enumi}b.\refstepcounter{enumi}]\label{it:paired-with-no-italic}
%    If a secondary serif font\spacedemdash again assumed to have no italics or
%    obliques\spacedemdash is paired with a primary serif font which has italics, the slant
%    angle of the former can be matched to that of the primary font.  An example of such a
%    constellation is \doublequotes{Gentium}\index{font>typeface>Gentium|userman} paired with
%    \doublequotes{Eczar}\index{font>typeface>Eczar|userman}.
%
%  \item\label{it:upright-italic}
%    Augment a serif font that features an italic shape with upright italics.
%
%    In nearly all cases, it is desirable to retain a slight forward slant of 1\textdegree{}
%    to~2\textdegree\!.
%
%  \item\label{it:correct-italic-angle}
%    An italic shape that has an excessive slant angle, such as
%    \doublequotes{Libre Caslon}\index{font>typeface>Libre Caslon|userman}, may be corrected\spacedemdash
%    i.\,e., partially unslanted.
%
%    Here, and generally if the entire font needs correction, alternative approaches such as
%    those discussed in \cref{sec:alternative}
%    (\pageref{sec:alternative}--\pageref{secend:alternative}) may be warranted.
%
%  \item\label{it:generate-sole-obliques}
%    Generate an oblique sans serif if a sans-serif font comes without an
%    oblique\index{oblique|userman} shape as, e.\,g.,
%    \doublequotes{\acronym{URW}~Grotesk}.\index{font>typeface>URW Grotesk=\acronym{URW}
%    Grotesk|userman}
%
%  \item\label{it:generate-extra-obliques}
%    Supply a slanted sans-serif shape for sans-serif fonts with designed, with \emph{true}
%    obliques such as e.\,g.~\doublequotes{Open Sans}.\index{font>typeface>Open Sans|userman}
%
%  \item\label{it:slant-typewriter}
%    Fixed width\spacedemdash also called \singlequotes{typewriter} or
%    \singlequotes{teletype}\spacedemdash fonts without obliques (Yes, I am looking at you,
%    Inconsolata!)\index{font>typeface>Inconsolata|userman} finally get an oblique shape.
%
%  \item\label{it:slant-selected-glyphs}
%    Some italic fonts only provide upright versions for selected glyphs, e.\,g.~the square
%    brackets.  With \packagename{synthslant} these renegade characters can be slanted to match
%    the italic font's natural angle.
%
%  \item\label{it:slanted-small-caps}
%    Small caps without accompanying italic can be slanted, too.
%
%  \item\label{it:slant-in-math-mode}
%    As \packagename{synthslant} also works in \TeX's math-mode, it is possible to give
%    math-italic even more of a heeling.
%
%  \item\label{it:correct-math-script}
%    If the slant of the math script font is at odds with the slant of the usual math~italic,
%    it may be possible to apply \packagename{synthslant} on the script symbols for matching
%    angles.
%
%  \item\label{it:slant-big-math-operators}
%    Big mathematical operators like the sigma can be slanted and others, like the integral
%    sign, can have their inclination adjusted.
%  \end{enumerate}
%
%  It is possible to obtain slants that run against the reading direction, so called
%  \singlequotes{backslanted} glyphs, but we have rarely seen an
%  \href{https://fontsinuse.com/tags/2044/left-leaning-italic-backslanted}{example} where the
%  typography of a document could benefit from that.
%
%
%  \clearpage
%  \section{Package Options}\label{sec:package-options}
%
%  \begin{synopsis}
%    |\usepackage[|\meta{option}\dots|]{synthslant}|
%  \end{synopsis}
%
%  This section lists the \meta{option}s that the \packagename{SynthSlant} package understands.
%  The package options allow to predefine the forward and backward slant angles as well as the
%  selection of a particular slanting engine.
%
%  If no \meta{option}s are specified, \packagename{synthslant} defaults to \code{auto} with a
%  slant value of~\code{slant=.2}.
%
%  \begingroup
%  \newcommand*{\indexpackageoption}[1]
%              {\detoxindex{package option>#1=\code{#1}|userman}%
%               \detoxindex{#1=\code{#1}~(option)|userman}%
%               \ignorespaces}
%  \begin{description}
%        [before={\let\oldmakelabel=\makelabel
%                 \renewcommand{\makelabel}[1]
%                              {\oldmakelabel{\termparbox{##1}}\phantomsection}},
%         font=\normalfont,
%         style=nextline]
%  \item[|auto|]\label{item:auto}
%    \indexpackageoption{auto}
%    Let the package choose a slant engine.  This is the default.
%
%    For \pdfLaTeX\index{pdflatex=\pdfLaTeX|userman} package \packagename{synthslant} selects
%    the \acronym{PDF}~engine, for \LuaLaTeX\index{lualatex=\LuaLaTeX|userman} the
%    \packagename{fontspec}~engine, and in all other cases the \packagename{l3draw}~layer
%    handles the shear transformation.
%
%  \item[|disable|]\label{item:disable}
%    \indexpackageoption{disable}
%    Disable slanting completely.
%
%  \item[|fontspec|]\label{item:fontspec}
%    \indexpackageoption{fontspec}
%    Use \packagename{fontspec}~\cite{package:fontspec}\relax
%    \index{package>fontspec=\packagename{fontspec}|userman} as
%    slanting back end.\!\footnote{Requires \LuaTeX{} and \filesystem{fontspec.sty.}}
%
%  \item[|l3draw|]\label{item:l3draw}
%    \indexpackageoption{l3draw}
%    Select the \singlequotes{draw} layer\index{package>l3draw=\packagename{l3draw}|userman} of
%    \LaTeXIII\index{latex3=\LaTeXIII|userman} as base for the slanting engine.\!\footnote{This
%    option requires \filesystem{l3draw.sty.}}
%
%    \begin{caution}
%      This engine is experimental and the \singlequotes{draw} layer of \LaTeXIII{} itself is
%      still experimental, too.  See \cref{sec:limitations} on \cpageref{sec:limitations} for
%      details.
%    \end{caution}
%
%  \item[|negslant=|\meta{slant-expr}]\label{item:negslant}
%    \indexpackageoption{negslant}
%    Set the default value for \hyperref[syn:synthnegslant]{\cs{synthnegslant}} \emph{only.}
%    The argument \meta{slant-expr} is a floating-point expression.  Note that for this option
%    \meta{slant-expr} must evaluate to a nonpositive value.
%
%  \item[|PDF|, |pdf|]\label{item:pdf}
%    \indexpackageoption{pdf}
%    Select the \acronym{PDF}-slant engine.  This option requires that the document is
%    translated with \pdfLaTeX\index{pdflatex=\pdfLaTeX|userman} or a compatible program.
%
%  \item[|posslant=|\meta{slant-expr}]\label{item:posslant}
%    \indexpackageoption{posslant}
%    Set the default value for \hyperref[syn:synthslant]{\cs{synthslant}} \emph{only.}  The
%    argument \meta{slant-expr} is a floating-point expression.  Note that for this option
%    \meta{slant-expr} must evaluate to a nonnegative value.
%
%  \item[|PS|, |ps|]\label{item:postscript}
%    \indexpackageoption{ps}
%    Use \pstrickslogo\index{package>pstricks=\packagename{pstricks}|userman} to delegate
%    slanting to the PostScript\index{PostScript|userman} interpreter.  Obviously requires
%    \pstrickslogo\footnote{The package actually required is \filesystem{pst-3d.sty.}} and
%    \acronym{DVI}-to-PostScript translation.
%
%    \begin{caution}
%      This engine is still experimental and produces low-quality output!  See
%      \cref{sec:limitations} on \cpageref{sec:limitations} for details.
%    \end{caution}
%
%  \item[|slant=|\meta{slant-expr}]\label{item:slant}
%    \indexpackageoption{slant}
%    Set the default values for both \hyperref[syn:synthslant]{\cs{synthslant}} and
%    \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, act as if the two package
%    options \(\code{posslant} = \meta{slant-expr}\) and \(\code{negslant} =
%    -(\meta{slant-expr})\) have been given.  The argument \meta{slant-expr} is a floating-point
%    expression.
%
%  \item[|TikZ|, |tikz|]\label{item:tikz}
%    \indexpackageoption{tikz}
%    Use \packagename{TikZ}\index{package>tikz=\packagename{tikz}|userman} for
%    slanting.\!\footnote{Requires \filesystem{tikz.sty.}}
%
%    \begin{caution}
%      This engine is still experimental and produces low-quality output!  See
%      \cref{sec:limitations} on \cpageref{sec:limitations} for details.
%    \end{caution}
%  \end{description}
%  \endgroup
%
%  The package options \code{slant}, \code{posslant}, and \code{negslant} all accept
%  floating-point \emph{expressions} as their arguments not just plain floating-point literals.
%  See reference~\citenum{latex3-interfaces}, Ch.~29, \doublequotes{The \textsf{l3fp}~module~--
%  Floating points} for a description of the floating-point expression syntax and the available
%  functions.\label{secend:package-options}
%
%
%  \clearpage
%  \section{Macros and Environments}\label{sec:macros-and-environments}
%
%  This section describes how to actually apply the functionality of \packagename{synthslant} to
%  some text.  If the \meta{slant}~value matching a given font is known this is about it.  To
%  figure out an unknown \meta{slant}~value check out \cref{sec:determine-slant}.
%
%
%  \subsection{Variable-Like Macros}\label{sec:variables}
%
%  The amount of slanting forward (positive slant angles) and backward (negative slant angles)
%  is controlled by two macros.  They are set during package initialization.  However, they can
%  be changed at any time to accommodate for different fonts or special needs.
%
%  \DescribeMacro{\synthslant}
%  Control the slant applied by \hyperref[syn:textsynthslant]{\cs{textsynthslant}}.
%  This value is nonnegative.
%
%  \begin{synopsis}\label{syn:synthslant}
%    \cs{synthslant}
%  \end{synopsis}
%
%  To change the slant value to \(.24\) say
%
%  \begin{codeexample}
%    \cs{renewcommand}*\{\cs{synthslant}\}\{.24\}
%  \end{codeexample}
%
%  \Cref{tab:slant-values} summarizes some suggested slant values for selected fonts.
%
%  \begin{table}
%    \centering
%    \caption[Suggested slant values]
%            {Suggested slant values for selected \emph{serif} fonts.  The \meta{slant} shown in
%             the tables is not necessarily the one closest to the font's italic.  Also compare
%             with the left-hand table of \cref{tab:slanted-series-fonts}.}
%    \label{tab:slant-values}
%
%    \begin{widebody}
%      \begin{minipage}{\linewidth}
%        \flushright
%        \begin{tabfigures}
%          \begin{tabular}[t]{@{}p{9.5em}l@{}}
%            \toprule
%            Font  &  Slant  \\
%            \midrule
%            \acronym{ADF} Accanthis\index{font>typeface>ADF Accanthis=\acronym{ADF} Accanthis|userman}  &  .26  \\
%            \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman}  &  .32  \\
%            \acronym{ADF} Berenis\index{font>typeface>ADF Berenis=\acronym{ADF} Berenis|userman}  &  .2  \\
%            \acronym{ADF} Venturis\index{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman}  &  .2  \\
%            Alegreya\index{font>typeface>Alegreya|userman}                                      &  .2  \\
%            Aleo\index{font>typeface>Aleo|userman}                                              &  .13  \\
%            Arvo\index{font>typeface>Arvo|userman}                                              &  .2  \\
%            BaskervilleF\index{font>typeface>BaskervilleF|userman}                              &  .2  \\
%            Bera Serif\index{font>typeface>Bera Serif|userman}                                  &  .2  \\
%            Bitter\index{font>typeface>Bitter|userman}                                          &  .16  \\
%            Brill\index{font>typeface>Brill|userman}                                            &  .22  \\
%            Caladea\index{font>typeface>Caladea|userman}                                        &  .14  \\
%            Castoro\index{font>typeface>Castoro|userman}                                        &  .18  \\
%            Charis \acronym{SIL}\index{font>typeface>Charis SIL=Charis \acronym{SIL}|userman}   &  .17  \\
%            Clara\index{font>typeface>Clara|userman}                                            &  .24  \\
%            Cochineal\index{font>typeface>Cochineal|userman}                                    &  .2  \\
%            Coelacanth\index{font>typeface>Coelacanth|userman}                                  &  .2  \\
%            \bottomrule
%          \end{tabular}%
%          \qquad
%          \begin{tabular}[t]{@{}p{9.5em}l@{}}
%            \toprule
%            Font  &  Slant  \\
%            \midrule
%            Crimson Pro\index{font>typeface>Crimson Pro|userman}                                &  .2  \\
%            Crimson Text\index{font>typeface>Crimson Text|userman}                              &  .2  \\
%            Day Roman\index{font>typeface>Day Roman|userman}                                    &  .2  \\
%            \acronym{EB} Garamond\index{font>typeface>EB Garamond=\acronym{EB} Garamond|userman}  &  .3  \\
%            etbb\index{font>typeface>etbb|userman}                                              &  .2  \\
%            Faustina\index{font>typeface>Faustina|userman}                                      &  .15  \\
%            fbb\index{font>typeface>fbb|userman}                                                &  .2  \\
%            Fraunces9pt\index{font>typeface>Fraunces9pt|userman}                                &  .27  \\
%            Garamond Expert\index{font>typeface>Garamond Expert|userman}                        &  .2  \\
%            Gandhi Serif\index{font>typeface>Gandhi Serif|userman}                              &  .2  \\
%            Gentium\index{font>typeface>Gentium|userman}                                        &  .2  \\
%            Ibarra Real Nova\index{font>typeface>Ibarra Real Nova|userman}                      &  .2  \\
%            \acronym{IBM} Plex Serif\index{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman}  &  .24  \\
%            \acronym{Inria} Serif\index{font>typeface>Inria Serif=\acronym{Inria} Serif|userman}  &  .2  \\
%            Libertinus Serif\index{font>typeface>Libertinus Serif|userman}                      &  .2  \\
%            Libre Baskerville\index{font>typeface>Libre Baskerville|userman}                    &  .3  \\
%            Libre Caslon\index{font>typeface>Libre Caslon|userman}                              &  .38  \\
%            \bottomrule
%          \end{tabular}%
%          \qquad
%          \begin{tabular}[t]{@{}p{9.5em}l@{}}
%            \toprule
%            Font  &  Slant  \\
%            \midrule
%            Lora\index{font>typeface>Lora|userman}                                              &  .07  \\
%            Merriweather\index{font>typeface>Merriweather|userman}                              &  .14  \\
%            \acronym{ML} Modern\index{font>typeface>ML Modern=\acronym{ML} Modern|userman}      &  .23  \\
%            Neuton\index{font>typeface>Neuton|userman}                                          &  .16  \\
%            Noto Serif\index{font>typeface>Noto Serif|userman}                                  &  .22  \\
%            \acronym{PT} Serif\index{font>typeface>PT Serif=\acronym{PT} Serif|userman}         &  .2  \\
%            Roboto Slab\index{font>typeface>Roboto Slab|userman}                                &  .2  \\
%            Quattrocento\index{font>typeface>Quattrocento|userman}                              &  .2  \\
%            Source Serif Pro\index{font>typeface>Source Serif Pro|userman}                      &  .18  \\
%            Spectral\index{font>typeface>Spectral|userman}                                      &  .18  \\
%            \acronym{STIX}\index{font>typeface>STIX=\acronym{STIX}|userman}                     &  .2  \\
%            \TeX{} Gyre Pagella\index{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman}  &  .16  \\
%            \acronym{TX} Fonts Serif\index{font>typeface>TX Fonts Serif=\acronym{TX} Fonts Serif|userman}  &  .2  \\
%            \acronym{URW} Antiqua\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman}  &  .2  \\
%            \acronym{URW} Nimbus Roman\index{font>typeface>URW Nimbus Roman=\acronym{URW} Nimbus Roman|userman}  &  .2  \\
%            Utopia\index{font>typeface>Utopia|userman}                                          &  .2  \\
%            Vollkorn\index{font>typeface>Vollkorn|userman}                                      &  .17  \\
%            \bottomrule
%          \end{tabular}
%        \end{tabfigures}
%      \end{minipage}
%    \end{widebody}
%  \end{table}
%
%  \DescribeMacro{\synthnegslant}
%  Control the slant applied by
%  \hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}.  This value is
%  nonpositive.
%
%  \begin{synopsis}\label{syn:synthnegslant}
%    \cs{synthnegslant}
%  \end{synopsis}
%
%
%  \subsection{Basic Interface}\label{sec:basic-interface}
%
%  The \packagename{synthslant} package provides two easy-to-use macros for slanting glyphs.
%  For a more flexible and powerful interface, see~\cref{sec:advanced-interface}.
%
%  \begin{note}
%    The following restrictions and workarounds to get line breaking and \TeX's automatic
%    hyphenation working again do \emph{not} apply to the
%    \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} back end.
%  \end{note}
%
%  \noindent
%  Both macros, \cs{textsynthslant} and \cs{textsynthuprightitalic} offer basic support for
%  slanting explicitly hyphenatable words and space-separated phrases within a given
%  \meta{text}.  The fundamental shear transformation produces a single unbreakable horizontal
%  box.  We have added some provisions to re-enable at least some breakability.
%
%  \begin{enumerate}
%  \item
%    \sinceversion{Support for \cs{space} since v0.2}
%    Spaces (literal \singlequotes{\textvisiblespace} or \cs{space}) introduce
%    breakpoints,\index{breakpoint at space|userman} e.\,g.
%    \begin{codeexample}
%      \cs{textsynthslant}\{topological dual space\}
%    \end{codeexample}
%    slants the first word (producing a horizontal box) inserts a space and then slants the
%    second word (producing another horizontal box) and so on.  \TeX{} sees three (unbreakable)
%    boxes and a discardable space when it comes to linebreaking.
%
%  \item
%    Discretionary hyphens\index{discretionary hyphen (\cs{-})|userman} in the form of
%    \singlequotes{\cs{-}} get propagated.  So, we could improve on our above example by saying
%    \begin{codeexample}
%      \cs{textsynthslant}\{topo\cs{-}log\cs{-}i\cs{-}cal dual space\}
%    \end{codeexample}
%    to \singlequotes{recover} hyphenation of the first word.
%
%  \item
%    \sinceversion{Support for \cs{discretionary} since v0.2}
%    Explicit \cs{discretionary} primitives\index{discretionary=\cs{discretionary}|userman}
%    are honored.  The full glory of \cs{discretionary} is required for example to typeset the
%    German compound nouns \singlequotes{Balle\discretionary{tt-}{t}{tt}änzer},
%    \singlequotes{Be\discretionary{tt-}{t}{tt}uch},
%    \singlequotes{Bre\discretionary{nn-}{n}{nn}essel}, and
%    \singlequotes{Schi\discretionary{ff-}{f}{f\kern.0333pt f}ahrt} while sticking to the
%    \doublequotes{old orthography}.  Also see the example below.
%  \end{enumerate}
%
%  \noindent
%  This is neither a complete nor an elegant solution but it will take us quite far.
%
%  \medskip
%
%  \begin{note}
%    \packagename{Synthslant} splits \meta{text} at spaces.  This leads to some inconvenient
%    interactions with \TeX{} or \LaTeX~constructions that themselves need white space as
%    terminators, e.\,g.~\cs{kern} or \cs{skip} or starred macros that normally consume white
%    space on their right-hand sides with the help of \cs{ignorespaces}.
%
%    A workaround in these cases is to terminate the constructions with \cs{relax} as white
%    space after \cs{relax} is handled the usual way.  Also see the following example.
%  \end{note}
%
%  \begin{example}[Manually breaking ligatures]
%    If a ligature is broken inside of \cs{textsynthslant} with an explicit kern, the \cs{kern}
%    must immediately be followed with a \cs{relax} otherwise the space that normally is used as
%    macro-argument terminator gets picked up by the gearing inside of \cs{textsynthslant}.
%
%    \begin{codeexample}
%      1234\=\kill
%      \cs{textsynthslant}\{\%  \\
%             \>Schi\cs{discretionary}\=\{ff-\}\textit{\% ligature ok here}  \\
%             \>                      \>\{f\}  \\
%             \>                      \>\{f\cs{kern}.0333pt\cs{relax} f\}ahrt\%  \\
%      \}
%    \end{codeexample}
%
%    This problem can be circumnavigated by wrapping the \cs{kern} in a parameterless macro; a
%    simpler way would be using macro~\cs{nolig} of
%    package~\packagename{typog}~\cite{spiel:2024} right from the beginning.
%  \end{example}
%
%  \DescribeMacro{\textsynthslant}
%  Forward slant some upright glyphs.
%
%  \begin{synopsis}\label{syn:textsynthslant}
%    \cs{textsynthslant}\marg{text}
%  \end{synopsis}
%
%  In horizontal mode switch to an upright shape, slant \meta{text} with the slant value stored
%  in \hyperref[syn:synthslant]{\cs{synthslant}} and apply \doublequotes{slant
%  correction}\index{slant>correction|userman}\spacedemdash the equivalent of italic
%  correction\spacedemdash at the right-hand side of~\meta{text}.
%
%  In math mode, just slant \meta{text} with the slant value stored in
%  \hyperref[syn:synthslant]{\cs{synthslant}}.
%
%  \begin{tip}
%    Discriminating typesetters will want to include trailing punctuation in \meta{text}.
%    Compare for example:
%
%    \begin{center}
%      \begin{tabular}{@{}>{\ttfamily}l@{\hspace{4em}}l@{}}
%        \cs{textsynthslant}\{FONT\},  &  \\
%        \cs{textsynthslant}\{bar\},  &
%        \textsynthslant{FONT}, \textsynthslant{bar}, \textsynthslant{bay}.  \\
%        \cs{textsynthslant}\{bay\}.  &
%      \end{tabular}
%    \end{center}
%
%    \noindent
%    with
%
%    \begin{center}
%      \begin{tabular}{@{}>{\ttfamily}l@{\hspace{4em}}l@{}}
%        \cs{textsynthslant}\{FONT,\}  &  \\
%        \cs{textsynthslant}\{bar,\}  &
%        \textsynthslant{FONT,} \textsynthslant{bar,} \textsynthslant{bay.}  \\
%        \cs{textsynthslant}\{bay.\}  &
%      \end{tabular}
%    \end{center}
%
%    \noindent
%    This is similar advice as for italic and also holds for \cs{textsynthuprightitalic} as
%    well as any other slanting macro.
%  \end{tip}
%
%  \begin{usecases}
%    If italics seem to be too intrusive in the body, we can substitute slanted text, for
%    example, for foreign phrases like \singlequotes{et\,al.} and \singlequotes{etc.}:
%
%    \begin{codeexample}
%      \cs{newcommand*}\=\{\cs{foreignphrase}\}[2][USenglish]  \\
%                      \>\{\cs{foreignlanguage}\{\#1\}\{\cs{textsynthslant}\{\#2\}\}\}
%    \end{codeexample}
%
%    \noindent
%    where we show the font modification in conjunction with the
%    \packagename{babel}~macro\index{package>babel=\packagename{babel}|userman}
%    \cs{foreignlanguage}~\cite{package:babel}.\visualpar
%
%    In math mode, you cannot have enough fonts, symbols, and most of the gizmos over there!  We
%    like to mark up automorphism groups associated with a given group with a slanted roman
%    typeface, though our macro has a more general name.
%
%    \begin{codeexample}
%      \cs{newcommand*}\=\{\cs{functionspace}\}[1]  \\
%                      \>\{\cs{mbox}\{\cs{textsynthslant}\{\#1\}\}\}\specialsectionendhere
%    \end{codeexample}
%  \end{usecases}
%
%  \DescribeMacro{\textsynthuprightitalic}
%  Backward slant some italic\index{italic|userman} or oblique\index{oblique|userman} glyphs.
%
%  \begin{synopsis}\label{syn:textsynthuprightitalic}
%    \cs{textsynthuprightitalic}\marg{text}
%  \end{synopsis}
%
%  In horizontal mode switch to an italic shape,
%  slant \meta{text} with the slant value stored in \cs{synthnegslant}.
%
%  In math mode, just unslant \meta{text} with the slant value stored in \cs{synthnegslant}.
%
%  \begin{example}
%    To set apart operators in an algebra, like, e.\,g., the radical, we could use upright
%    italic
%
%    \begin{codeexample}
%      \cs{newcommand*}\=\{\cs{algebraoperator}\}[1]  \\
%                      \>\{\cs{mbox}\{\cs{textsynthuprightitalic}\{\#1\}\}\}
%    \end{codeexample}
%
%    \noindent
%    and follow up with
%
%    \begin{codeexample}
%      \cs{DeclareMathOperator}\{\cs{rad}\}\{\cs{algebraoperator}\{rad\}\}
%    \end{codeexample}
%
%    \noindent
%    where we have assumed that \packagename{amsmath}~\cite{package:amsmath} has been loaded to
%    bring \cs{DeclareMathOperator} into scope.
%  \end{example}
%
%  \begin{tip}[Display Style Math Operators]\label{tip:display-style-math-operators}
%    Slanted or unslanted display style mathematical operators are best pre-defined with
%    \cs{DeclareMathOperator}~\cite{package:amsmath}.
%
%    \begin{codeexample}
%      12\=34\=\kill
%      \cs{DeclareMathOperator*}\{\cs{slantedsum}\}  \\
%        \>\{\cs{synthslantbox}\=\{.15\}\{\$\cs{displaystyle}\cs{sum}\$\}\}  \\
%      \cs{DeclareMathOperator*}\{\cs{uprightint}\}  \\
%        \>\{\cs{synthslantbox}\{-.15\}  \\
%        \>                    \>\{\$\cs{displaystyle}\cs{int}\cs{negthickspace}\$\}\}
%    \end{codeexample}
%
%    \noindent
%    Now compare the pairs \cs{sum} \cs{slantedsum} and \cs{int} \cs{uprightint}:
%    \begin{equation}
%      \sum \quad \slantedsum
%      \qquad \text{and} \qquad
%      \int \quad \uprightint
%    \end{equation}
%
%    In the following equation, we used \cs{uprightint} and \cs{slantedsum} like
%
%    \begin{codeexample}
%      |\uprightint_{\negthickspace 0}^{\;\;1}|
%    \end{codeexample}
%
%    \noindent
%    for the integral,
%
%    \begin{codeexample}
%      |\slantedsum_{j=0}^{\;\;m}|
%    \end{codeexample}
%
%    \noindent
%    for the first summation sign, and
%
%    \begin{codeexample}
%      |\slantedsum_{s=1}^{\;\;l}{\vphantom{\slantedsum}}''|
%    \end{codeexample}
%
%    \noindent
%    for the second summation sign:
%    \begin{equation*}
%      \uprightint_{\negthickspace 0}^{\;\;1} f(x) \, dx =
%      \frac{1}{m} \, \slantedsum_{j=0}^{\;\;m} f(j/m) -
%      \slantedsum_{s=1}^{\;\;l}{\vphantom{\slantedsum}}''
%      \frac{B_{2s}}{2s!} \frac{f^{(2s - 1)}(1) - f^{(2s - 1)}(0)}{m^{2s}} +
%      O\bigl(m^{-2l-2}\bigr).
%    \end{equation*}
%
%    The aesthetic appeal of this solution is doubtful; however, it demonstrates the
%    capabilities of \packagename{synthslant} in math mode.
%  \end{tip}
%
%
%  \newpagetofixtoc
%  \subsection{Advanced Interface}\label{sec:advanced-interface}
%
%  \DescribeMacro{\synthslantbox}
%  Slant \meta{text} with an amount of \meta{slant} that can be positive, negative, or zero.
%
%  \begin{synopsis}\label{syn:synthslantbox}
%    \cs{synthslantbox}\marg{slant}\marg{text}
%  \end{synopsis}
%
%  This is the unadorned call to the chosen slanting engine.  In particular, neither the values
%  of \hyperref[syn:synthslant]{\cs{synthslant}} nor of
%  \hyperref[syn:synthnegslant]{\cs{synthnegslant}} enter its expansion!  No corrections or
%  \TeX-mode adjustments are made.
%
%  \begin{example}
%    Generate a substitute for a missing solidus character:
%
%    \begin{codeexample}
%      12\=\kill
%      \cs{renewcommand*}\{\cs{textfractionsolidus}\}[1]  \\
%          \>\{\=\cs{kern}-.125em  \\
%          \>  \>\cs{raisebox}\=\{.125em\}  \\
%          \>  \>             \>\{\=\cs{smaller}  \\
%          \>  \>             \>  \>\cs{synthslantbox}\{.3\}\{\cs{char}`/\}\}\%  \\
%          \>  \>\cs{kern.1em}\}
%    \end{codeexample}
%
%    \noindent
%    where the \cs{smaller} macro is from the
%    \packagename{relsize}~package~\cite{package:relsize}.
%  \end{example}
%
%  The following two environments are responsible for setting up everything before the actual
%  slant or unslant code runs and what happens after the slant engine finishes.  They can be
%  redefined or patched to meet different needs.
%
%  \DescribeEnv{slantenvironment}
%  This environment is a wrapper around \hyperref[syn:synthslantbox]{\cs{synthslantbox}} that is
%  called for every forward slanting operation
%  with~\hyperref[syn:textsynthslant]{\cs{textsynthslant}}.
%
%  \begin{synopsis}\label{syn:slantenvironment}
%    \cs{begin}|{slantenvironment}|  \\
%    \hspace*{1em}\dots  \\
%    \cs{end}|{slantenvironment}|
%  \end{synopsis}
%
%  Switch to an upright font shape and\spacedemdash if
%  package~\packagename{microtype}~\cite{package:microtype}\relax
%  \index{package>microtype=\packagename{microtype}|userman}
%  has been loaded\spacedemdash enter the Microtype context defined by
%  macro~\hyperref[syn:slantcontext]{\cs{slantcontext}}.  At the end, add some slant correction,
%  which is the equivalent of italic correction.
%
%  \begin{usecases}[\doublequotes{Patch Cases}]
%    Left-italic correction.\visualpar
%    Simultaneous left-italic and right-italic correction for a shift-left effect.
%  \end{usecases}
%
%  \DescribeEnv{negslantenvironment}
%  This environment is a wrapper around \hyperref[syn:synthslantbox]{\cs{synthslantbox}} that is
%  called for every backward slanting operation
%  with~\hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}.
%
%  \begin{synopsis}\label{syn:negslantenvironment}
%    \cs{begin}|{negslantenvironment}|  \\
%    \hspace*{1em}\dots  \\
%    \cs{end}|{negslantenvironment}|
%  \end{synopsis}
%
%  Switch to an italic font shape and\spacedemdash if
%  package~\packagename{microtype}~\cite{package:microtype} has been loaded\spacedemdash enter
%  the Microtype context defined by macro~\hyperref[syn:negslantcontext]{\cs{negslantcontext}}.
%
%  \DescribeMacro{\slantcontext}
%  Name of the \packagename{microtype} context used when typesetting slanted text.
%
%  \begin{synopsis}\label{syn:slantcontext}
%    \cs{slantcontext}
%  \end{synopsis}
%
%  The expansion of this macro may be empty.
%  The package's default is
%
%  \begin{codeexample}
%    tracking = synthslant
%  \end{codeexample}
%
%  \begin{note}
%    The tracking context~\code{synthslant} is \emph{not} defined by \packagename{synthslant}
%    itself.  And Microtype ignores undefined contexts.
%  \end{note}
%
%  \DescribeMacro{\negslantcontext}
%  Name of the \packagename{microtype} context used when typesetting backward slanted text.
%
%  \begin{synopsis}\label{syn:negslantcontext}
%    \cs{negslantcontext}
%  \end{synopsis}
%
%  The expansion of this macro may be empty.
%  The package's default is
%
%  \begin{codeexample}
%    tracking = synthnegslant
%  \end{codeexample}
%
%  \begin{note}
%    The tracking context~\code{synthnegslant} is \emph{not} defined by \packagename{synthslant}
%    itself.  And Microtype ignores undefined contexts.
%  \end{note}
%
%  \begin{example}
%    Upright italic often looks somewhat tight.  We like to add some extra tracking to them.
%    So, we define a \packagename{microtype}~context named \code{synthnegslant}:
%
%    \begin{codeexample}
%      \cs{SetTracking}\=[context = synthnegslant]  \\
%                      \>\{encoding = *, shape = it\}  \\
%                      \>\{10\}\specialsectionendhere
%    \end{codeexample}
%  \end{example}
%
%  \begin{tip}
%    When the tracking of upright italic is changed, it may be advisable
%
%    \begin{itemize}
%    \item to break ligatures, e.\,g., \code{no ligatures = \{f\}},
%    \item to adjust the outer kerning, e.\,g., \code{outer~kerning = \{0, 0\}}, and
%    \item to adapt the inter-word spacing, e.\,g., \code{spacing = \{100,,\}}.
%    \end{itemize}
%
%    The document \filesystem{synthslant-gauge.tex}, which comes with
%    package~\packagename{synthslant}, has sample texts and tracking variations already set up
%    for experimentation.
%  \end{tip}
%
%
%  \clearpage
%  \section{How to Determine and Match Slant}\label{sec:determine-slant}
%
%  When matching a synthetically slanted piece of text to an existing
%  italic\index{italic|userman} or oblique\index{oblique|userman} font, it is important to
%  determine the slant angle~\(\alpha\) or~\meta{slant}.
%
%  \begin{note}
%    The slant angles of different italic or oblique glyphs in the same font may slightly
%    differ from each other.  Usually, longer shapes have less slant than shorter shapes.
%
%    Seek a representative slant value, an average that achieves a visual match with the italics
%    or obliques.
%  \end{note}
%
%  In the following, we suggest three techniques to determine or match the slant of a glyph with
%  sufficient accuracy.  Direct measurements of the slant angle (\cref{sec:direct-measurement})
%  claim to be the most precise.  However, as the previous Note indicated, its accuracy is
%  limited by the differing slant angles of the letterforms.  The visual comparison of shapes
%  (\cref{sec:shape-comparison}) appeals to the user's judgment of matching angles for several
%  letters, thus inherently incorporating some kind of averaging.  Two variants of this method
%  are conceivable.  One is to overlay italic letters with appropriately slanted versions of the
%  regular font's letters in a graphics program
%  (\cref{sec:slanted-upright-plus-graphics-program}); another is to find upright italic
%  (\cref{sec:upright-italic-plus-document-viewer}) and, in that way, determine the negative
%  slant value, which is equally useful.  All \meta{slant} values of \Cref{tab:slant-values} on
%  \cpageref{tab:slant-values} were determined with the former method.  The latter method is
%  faster, does not require an extra application\spacedemdash just a previewer\spacedemdash and
%  it yields surprisingly accurate results.
%
%
%  \subsection{Direct Measurement}\label{sec:direct-measurement}
%
%  Measure the angle of some reference glyphs with a graphics program.
%
%  \begin{enumerate}[itemsep=.5\itemsep, parsep=.5\parsep]
%  \item Prepare a page with some sample glyphs of the font shape to be matched.
%
%  \item Render it as PostScript or in~\acronym{PDF}.
%
%  \item Load the file at a resolution of 1200\,dpi or higher into your favorite graphics editor
%    that supports measuring angles.
%
%  \item In the graphics editor, center the interesting letters and set the zoom to 100~percent
%  or more.
%
%  \item Measure some letters and write down the angles.
%
%  \item Convert the angle~\(\alpha\) to a \meta{slant} by calculating \(\sin \alpha\).
%
%    If no computer is available, the following approximation might help:
%    \begin{equation*}
%        \meta{slant} = \sin \alpha \approx \frac{11}{630\degree} \: \alpha,
%    \end{equation*}
%
%    where \(\alpha\) is given in degrees.
%  \end{enumerate}
%
%
%  \subsection{Comparison of Shapes}\label{sec:shape-comparison}
%
%  Compare some reference glyphs with a differently slanted or unslanted versions.
%
%
%  \subsubsection{Slanted Upright \textit{\&} Graphics Program}\label{sec:slanted-upright-plus-graphics-program}
%
%  Compare the italic\index{italic|userman} or oblique\index{oblique|userman} shapes of a font
%  with the synthetically slanted upright shapes in a graphics program.
%
%  \begin{enumerate}[itemsep=.5\itemsep, parsep=.5\parsep]
%  \item In file~\filesystem{synthslant-gauge.tex}\spacedemdash which comes with the
%    \packagename{synthslant}~package\spacedemdash insert the code to load your font of
%    interest.
%
%  \item Render the document as PostScript or as~\acronym{PDF}.
%
%  \item Load the first page (\doublequotes{Slanted Samples}) at a resolution of 600\,dpi
%    to~900\,dpi into your favourite graphics editor.
%
%  \item Cut the italic sample at the top allowing for generous white~space around it as a
%    rectangle
%
%  \item Paste the rectangle in a new layer called e.\,g.~\singlequotes{sample}.
%
%  \item On layer \singlequotes{sample} move the rectangle down the list of different slant
%    values until it match best.
%
%  \item Switch the layer mode of \singlequotes{sample} to \singlequotes{difference} and
%    fine~position the rectangle over the slanted sample.  Compare different letters in that
%    way.  Change line until the best match is found.
%
%  \item Read the slant value at the left-hand side of the line.  See
%    \cref{fig:compare-with-the-gimp} on \cpageref{fig:compare-with-the-gimp}.
%  \end{enumerate}
%
%  \begin{figure}
%    \centering
%    \includegraphics[keepaspectratio=true, width=\linewidth]
%                    {compare-with-the-gimp}
%
%    \caption[Compare slant angles]
%            {Compare italic and slanted samples with \application{The Gimp}.\visualpar For
%             this screenshot we loaded the samples on the first page of
%             \filesystem{synthslant-gauge.pdf} at a resolution of~600\,dpi into
%             \application{The Gimp}.  The \singlequotes{sample}~layer is aligned to the
%             letter~\singlequotes{t} in the word~\singlequotes{White}.  Note that accidentally
%             the letter~\singlequotes{H} of the next word~\singlequotes{Handgloves} confirms
%             the good match.}\label{fig:compare-with-the-gimp}
%  \end{figure}
%
%
%  \subsubsection{Upright Italic \textit{\&} Document Viewer}\label{sec:upright-italic-plus-document-viewer}
%
%  Assess synthetically upright italic with any document viewer.
%
%  \begin{enumerate}[itemsep=.5\itemsep, parsep=.5\parsep]
%  \item In file~\filesystem{synthslant-gauge.tex}\spacedemdash which comes with the
%    \packagename{synthslant}~package\spacedemdash insert the code to load your
%    font of interest.
%
%  \item Render the document as PostScript or as~\acronym{PDF}.
%
%  \item Go to the second page (\doublequotes{Upright Italic Samples}).
%
%  \item Magnify the page as necessary and look for a line where the italic look upright or
%  leaning to the right ever so slightly.
%
%  \item Read the slant value at the left-hand side of the line.  The sought after \meta{slant}
%  is the negative of this value.
%  \end{enumerate}
%
%
%  \subsection{Exploring Further}\label{sec:exploring-further}
%
%  Once a usable slant value has been found, it can be fed into
%  \filesystem{synthslant-gauge.tex} and\spacedemdash after recompiling with the appropriate
%  \LaTeX~engine\spacedemdash be used to examine the details of the slant operations.
%
%  Page~3, Sec.~2.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native and
%  synthesized ones.  Here, the slanted glyphs as well as the upright italic should blend well
%  with the native italic/obliques and with the normal font.
%
%  Page~4, Sec.~2.2 and following subsections, examine the coupling of \packagename{synthslant}
%  with the \TeX~system and some of its extensions.  If a slant engine malfunctions, it will
%  become evident on this page.
%
%
%  \clearpage
%  \section{Limitations and Known Problems}\label{sec:limitations}
%
%  \index{limitations|userman}
%  \index{known problems|userman}
%  This section lists some known limitations and issues with \packagename{synthslant}.  There
%  may be additional issues not listed here.
%
%  \begin{description}
%  \item[All except \packagename{fontspec}:]
%    \packagename{Synthslant}~manipulations may not survive preprocessing by
%    \MP.\index{MetaPost=\MP|userman}
%
%  \item[\packagename{l3draw} engine:]\index{package>l3draw=\packagename{l3draw}|userman}\mbox{}
%    \begin{itemize}
%    \item Depending of the shear, direction the \packagename{l3draw} engine may generate some
%      extra positive or negative space at the ends of the text.
%
%    \item Any box sheared loses its depth; technically, \cs{dp} becomes~0pt.
%
%    \item Markedly slower than the \acronym{PDF} implementation!
%    \end{itemize}
%
%  \item[\pstrickslogo{} engine:]\index{package>pstricks=\packagename{pstricks}|userman}
%    The \pstrickslogo{} engine produces some extra space at the ends of the text.
%
%  \item[\tikzlogo{} engine:]\index{package>tikz=\packagename{tikz}|userman}
%    The \tikzlogo{} engine produces some extra space at the ends of the text.
%  \end{description}
%
%
%  \clearpage
%  \toccontinuesonnextpage
%  \section{Alternative Solutions}\label{sec:alternative}
%
%  Here are some alternative solutions to \packagename{synthslant} that we are aware of.  All of
%  them change the slant of a font as a whole.
%
%
%  \subsection{Use \pdfTeX}\label{sec:alternative-pdftex}
%
%  In \pdfTeX, fonts can be remapped in the document preamble with the
%  primitive~\cs{pdfmapline}; see the \pdfTeX{} Reference Manual~\cite[Sec.~6.1]{pdftex} for a
%  description of the syntax.  This possibility makes it possible to splice in a slanting
%  operation on the fly.
%
%  Here is a simplified syntax of a font map line, which does not indicate any of the optional
%  parts for better readability:
%
%  \begin{multilinecodeexample}
%    \meta{tfm-name} \meta{ps-name} \meta{font-flags}  \\
%    \pushright "\meta{special}" <\meta{encoding-file} <\meta{font-file}
%  \end{multilinecodeexample}
%
%  \noindent where
%
%  \begin{itemize}[notopsep]
%  \item \meta{tfm-name} is the basename of the \TeX{} font-metric file~(\filesystem{*.tfm}),
%
%  \item \meta{ps-name} is the name the font will acquire inside of \TeX,
%
%  \item \meta{font-flags} optionally specify some characteristics of the font,
%
%  \item \meta{special} prescribes font manipulations in the same way as
%    \command{dvips}~\cite[Sec.~6.3]{dvips} does,
%
%  \item \meta{encoding-file} is the filename~(\filesystem{*.enc}) where the encoding to be used
%    with \meta{font-file} is stored, and
%
%  \item \meta{font-file} sets the filename of the font's definition.  It is given without path
%    but includes an extension, which typically is \filesystem{otf,} \filesystem{pfb,}
%    or~\filesystem{ttf.}
%  \end{itemize}
%
%  \noindent
%  We are particularly interested in the \meta{special}~part that allows us to slant the whole
%  font with a single instruction.
%
%  Let us to elaborate the example given in \cref{sec:usage-ideas},
%  \cref{it:correct-italic-angle} and generate a less-angled italic for
%  Libre~Caslon.\index{font>typeface>Libre Caslon|userman} Here is a suitable map line taken
%  from \filesystem{pdftex.map} on our system:
%
%  \begin{multilinecodeexample}
%    LibreCsln-Italic-osf-t1--base LibreCsln-Italic  \\
%    \indent "\textvisiblespace AutoEnc\ttdots\textvisiblespace ReEncodeFont\textvisiblespace"  \\
%    \pushright <[lcsln\ttdots.enc <LibreCsln-Italic.pfb
%  \end{multilinecodeexample}
%
%  \smallskip
%
%  \noindent
%  which we had to break into three lines to make it fit this page.  The
%  \singlequotes{{\ttfamily\ttdots\,}} indicate parts of the identifiers that we left out beyond
%  that.  There are in fact four map lines for \code{T1}-encoded Libre~Caslon italic: those for
%  lining figures~\singlequotes{\code{lf}}, oldstyle figures~\singlequotes{\code{osf}}, tabular
%  lining figures~\singlequotes{\code{tlf}}, and tabular oldstyle
%  figures~\singlequotes{\code{tosf}}.
%
%  The slant operation we want to add to the \meta{special}~part has the format:
%
%  \begin{codeexample}
%    \meta{slant}~SlantFont
%  \end{codeexample}
%
%  \noindent
%  so, for a shear to the left, for example, \(\meta{slant} = -.12\), which means the font gets
%  slanted by~\(-8\degree\) the \meta{special}~part becomes
%
%  \begin{codeexample}
%    "\textvisiblespace -0.12\textvisiblespace SlantFont\textvisiblespace
%    AutoEnc\ttdots\textvisiblespace ReEncodeFont\textvisiblespace"
%  \end{codeexample}
%
%  \noindent
%  Finally, we select the modified font, e.\,g., with macro
%
%  \begin{codeexample}
%    \cs{usefont}\{\meta{encoding}\}\{\meta{family}\}\{\meta{series}\}\{\meta{shape}\}
%  \end{codeexample}
%
%  \noindent
%  See reference~\citenum{latex-unofficial-refman} for details.  In our case, the call to
%  \cs{usefont} is
%
%  \begin{codeexample}
%    \char`\\usefont\{T1\}\{LibreCsln-OsF\}\{regular\}\{it\}
%  \end{codeexample}
%
%  \begin{example}
%    Here is all the talk of above put into action as this very document contains exactly the
%    \cs{pdfmapline} just described.
%
%    \begin{center}
%      \def\sample{White Handgloves}
%      \begin{tabular}{@{}ll@{}}
%        Uncorrected, original italic  &  {\usefont{T1}{LibreCsln-LF}{regular}{it}\sample}  \\
%        Less angled version  &  {\usefont{T1}{LibreCsln-OsF}{regular}{it}\sample}
%      \end{tabular}
%    \end{center}
%
%    \noindent
%    The only trick we have to reveal is that for the \doublequotes{original italic} we used
%    the lining figures~\singlequotes{\code{lf}} version of the font, whereas the
%    \doublequotes{less angled} version shows the oldstyle figures~\singlequotes{\code{osf}}
%    version.
%
%    The \TeX{} Font Metrics file (\acronym{TFM}) for this particular variant of Libre~Caslon
%    was not touched.
%  \end{example}
%
%
%  \subsection{Combine \LaTeX{} and
%              \texorpdfstring{\command{dvipdfmx}}{dvipdfmx}}\label{sec:alternative-latex}
%
%  The alternative when using \LaTeX{} is similar the one elaborated in the previous section.
%  The font mapline gets modified by \cs{special} primitive
%
%  \begin{codeexample}
%    \cs{special}\{pdf:mapline \meta{font-mapline}\}
%  \end{codeexample}
%
%  \noindent
%  that forwards the task of remapping the font, e.\,g.~to \command{dvipdfmx}.  Our running
%  example becomes
%
%  \begin{multilinecodeexample}
%    \cs{special}\{pdf:mapline  \\
%    \indent LibreCsln-Italic-osf-t1--base LibreCsln-Italic  \\
%    \indent "\textvisiblespace -0.12\textvisiblespace SlantFont\textvisiblespace
%    AutoEnc\ttdots\textvisiblespace
%    ReEncodeFont\textvisiblespace"  \\
%    \pushright <[lcsln\ttdots.enc <LibreCsln-Italic.pfb\}
%  \end{multilinecodeexample}
%
%  \noindent
%  The mapline contains \command{dvips}~options for special font effects; see
%  reference~\citenum{dvips}, Sec.~6.3.  Note that there is no \singlequotes{\code{=}}-sign at the
%  beginning of the \code{pdf:mapline} in contrast to \cs{pdfmapline}.
%
%  The font is activated in the same way as in the \acronym{PDF}~path
%  (\cref{sec:alternative-pdftex}).  The further translation of the resulting \acronym{DVI}~file
%  \emph{must} be performed with an application that is aware of the \cs{special}~primitive as
%  for example~\command{dvipdfmx}~\cite{dvipdfmx} is.
%
%  \begin{note}
%    Despite the option syntax originates with \command{dvips} it is not able to interpret any
%    \code{\cs{special}\{pdf:mapline \ttdots\}}.
%  \end{note}
%
%
%  \clearpage
%  \subsection{Directly Use \LuaLaTeX{} and Package
%              \packagename{fontspec}\label{sec:alternative-lualatex}}\index{lualatex=\LuaLaTeX|userman}
%
%  The \LuaTeX{} engine can be coaxed to transform glyphs similar to \pdfTeX.  With the support
%  of package~\packagename{fontspec}~\cite{package:fontspec}\relax
%  \index{package>fontspec=\packagename{fontspec}|userman} slanting is available via the
%  \cs{fontspec}-macro:
%
%  \begin{codeexample}
%    \cs{fontspec}\{\meta{FONT-FILENAME}\}[FakeSlant=\meta{slant}]
%  \end{codeexample}
%
%  Actually, package~\packagename{synthslant} uses a similar call to implement its own slanting
%  macros if the package is loaded with option~\hyperref[item:fontspec]{\code{fontspec}}.
%
%
%  \subsection{Harness a Font Editor\label{sec:font-editor}}
%
%  An alternative outside of the typical \LaTeX{}~toolchain is to harness a font editor, as, for
%  example, \application{FontForge}~\cite{fontforge}, to create a slanted version of an upright
%  font or upright italic.  Here, the first step is to check the font's license to see whether
%  the generation of a variant is permitted and what restrictions apply to its use.
%
%  \detoxindex{FontForge=\application{FontForge}|userman}\application{FontForge} can generate
%  slanted versions of a given set of glyphs with the \acronym{GUI}~sequence: Element~> Style~>
%  Oblique and the desired slant angle in degrees (though with the opposite sign that
%  \packagename{synthslant} uses).  In \application{FontForge}'s own extension language, the
%  corresponding function is called~\code{Skew}; in the Python extension, use module
%  function~\code{psMat.skew} to generate the transformation matrix and apply
%  method~\code{transform} to a glyph with this matrix as the method's argument.
%
%  Note that some of the glyphs' attributes as, e.\,g., tracking, kerning, or hints, may be gone
%  or wrong for the slanted versions of the selected glyphs.
%
%  When exporting the changed font from a font editor, users of \pdfTeX{} and \LuaTeX{} may
%  choose different formats\spacedemdash for example, \acronym{PFB} \foreignphrase{versus}
%  \acronym{TTF}.  If you plan to use the new font with \MP,\index{MetaPost=\MP|userman} you
%  must export it in \acronym{PFB}~format.
%
%  Finally, install the font, e.\,g., with \application{autoinst} which is part of
%  fonttools~\cite{fonttools}, or using package~\packagename{fontinst}~\cite{package:fontinst}.
%  If the slanted font is to integrate seamlessly with the existing fonts, usually some of the
%  relevant font description files (\filesystem{.fd}) have to be
%  modified.\label{secend:alternative}
%
%
%  \clearpage
%  \appendix
%
%
%
%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
%  \newcommand*{\codeidx}[1]{\linenumberdecoration\textbf{#1}}
%  \renewcommand*{\main}[1]{\linenumberdecoration\textit{\textbf{#1}}}
%  \renewcommand*{\usage}[1]{\textit{\textbf{#1}}}
%
%  \MaybeStop{
%    \clearpage
%    \begingroup
%      \setcounter{GlossaryColumns}{1}
%      \phantomsection
%      \label{sec:changes}
%      \resetfancyhead
%      \addtocontents{toc}{\bigskip}
%      \addcontentsline{toc}{section}{\numberline{}Change History}
%      \GlossaryPrologue{\section*{Change History}
%                        \markboth{\sf\letterspacedsmallcaps{Change History}}{\sf\letterspacedsmallcaps{Change History}}}
%      \PrintChanges
%    \endgroup
%
%
%    \clearpage
%    \phantomsection
%    \addtocontents{toc}{\medskip}
%    \addcontentsline{toc}{section}{\protect\numberline{}References}
%    \begin{mybibliography}
%      \bibitem{package:amsmath}
%              \bibauthor{American Mathematical Society} and the
%              \bibauthor{\LaTeXIII\ Project Team}.
%              \bibtitle{Package~\packagename{amsmath}}.
%              2020,
%              \biburl{https://ctan.org/pkg/amsmath}.
%
%      \bibitem{package:relsize}
%          \bibauthor{Arseneau, Donald}.
%          \bibtitle{The \textsf{relsize} package}.
%          2013,
%          \biburl{https://ctan.org/pkg/relsize}.
%
%      \bibitem{adobe-pdf-1.0}
%             \bibauthor{Bienz, Tim} and \bibauthor{Richard Cohn}.
%             \bibtitle{Portable Document Format Reference Manual}.
%             Addison-Wesley Publishing Company, Reading/MA,
%             1993,
%             \biburl{https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/pdfreference1.0.pdf}.
%
%      \bibitem{package:babel}
%              \bibauthor{Bezos, Javier}.
%              \bibtitle{Package~\packagename{babel}}.
%              2021,
%              \biburl{https://ctan.org/pkg/babel}.
%              The original author of \packagename{babel} was \bibauthor{J. L. Braams}.
%
%      \bibitem{bringhurst:2004}
%              \bibauthor{Bringhurst, Robert}.
%              \bibtitle{The Elements of Typographic Style}.
%              3\textsuperior{rd}~ed.
%              Hartley~\textit{\&} Marks, Vancouver/BC, Canada,
%              2004.
%
%      \bibitem{burke:1998}
%              \bibauthor{Burke, Christopher}.
%              \bibtitle{Paul Renner: The Art of Typography}.
%              Princeton Architectural Press,
%              1998.
%
%      \bibitem{tex-stackexchange-2013-12-7}
%              \bibauthor{Carlisle, David}.
%              \bibtitle{Shear Transform a Box}.
%              2013-12-7,
%              \biburl{https://tex.stackexchange.com/questions/63179/shear-transform-a-box/63188}.
%
%      \bibitem{dvipdfmx}
%              \bibauthor{Dvipdfmx Project Team,} ed.
%              \bibtitle{\command{dvipdfmx}}.
%              2020,
%              \biburl{https://ctan.org/pkg/dvipdfmx}.
%
%      \bibitem{package:fontinst}
%              \bibauthor{Jeffrey, Alan,} \bibauthor{Rowland McDonnell,} and \bibauthor{Lars Hellström}.
%              \bibtitle{Package~\packagename{fontinst}}.
%              2009,
%              \biburl{https://ctan.org/pkg/fontinst}.
%
%      \bibitem{klingspor-museum-venus}
%              \bibauthor{Klingspor Museum}.
%              \bibtitle{Venus}.
%              2022,
%              \biburl{https://www.klingspor-museum.de/KlingsporKuenstler/Schriftfamilien/Venus.pdf}.
%
%      \bibitem{fntguide}
%              \bibauthor{\LaTeXIII{} Project Team,} ed.
%              \bibtitle{\LaTeXe{} font selection}.
%              2023,
%              \biburl{https://www.latex-project.org/help/documentation/fntguide.pdf}.
%
%      \bibitem{latex3-interfaces}
%              \bibauthor{\LaTeXIII{} Project,}
%              \bibtitle{The \LaTeXIII{} Interfaces}.
%              2024,
%              \biburl{https://texdoc.org/serve/interface3/0}.
%
%      \bibitem{latex-unofficial-refman}
%              \bibauthor{latexref.xyz}.
%              \bibtitle{\LaTeXe: An unofficial reference manual}.
%              2023,
%              \biburl{https://latexref.xyz/dev/latex2e.pdf}.
%
%      \bibitem{middendorp:2014}
%              \bibauthor{Middendorp, Jan}.
%              \bibtitle{Shaping Text}.
%              \acronym{BIS}~publishers, Amsterdam,
%              2014.
%
%      \bibitem{fonttools}
%              \bibauthor{Penninga, Marc}.
%              \bibtitle{fonttools}.
%              2025,
%              \biburl{https://ctan.org/tex-archive/fonts/utilities/fontools}.
%
%      \bibitem{package:fontspec}
%              \bibauthor{Robertson, Will}
%              \bibtitle{Package~\packagename{fontspec}}.
%              2024,
%              \biburl{https://ctan.org/tex-archive/macros/unicodetex/latex/fontspec}.
%
%      \bibitem{dvips}
%              \bibauthor{Rokicki, Tomas}.
%              \bibtitle{\command{dvips}}.
%              2022,
%              \biburl{https://tug.org/texlive/Contents/live/texmf-dist/doc/dvips/dvips.pdf}.
%
%      \bibitem{package:microtype}
%              \bibauthor{Schlicht, Robert}.
%              \bibtitle{Package~\packagename{microtype}}.
%              2020,
%              \biburl{https://ctan.org/pkg/microtype}.
%
%      \bibitem{schroeder:2007}
%              \bibauthor{Schr\"oder, Martin}.
%              \bibtitle{pdftex 1.40}.
%              2007,
%              \biburl{https://tug.org/mail-archives/pdftex/2007-January/006910.html}.
%
%      \bibitem{spiel:2024}
%              \bibauthor{Spiel, Chris}.
%              \bibtitle{Package~\packagename{typog}}.
%              2024,
%              \biburl{https://ctan.org/pkg/typog}.
%
%      \bibitem{stamm:2020}
%              \bibauthor{Stamm, Philipp}.
%              \bibtitle{Schrifttypen -- Verstehen Kombinieren:
%                        Schriftmischung als Reiz in der Typografie}.
%              Birkhäuser, Basel,
%              2020.
%
%      \bibitem{strizver:2014}
%              \bibauthor{Strizver, Ilene}.
%              \bibtitle{Type rules!: the designer's guide to professional typography},
%              4\textsuperior{th}~ed.
%              John Wiley~\textit{\&} Sons, Hoboken/NJ,
%              2014.
%
%      \bibitem{baskerville-pdftex-8-1:1998}
%              \bibauthor{Th\`anh, Han The}.
%              \bibtitle{The \pdfTeX{} user manual}.
%              Baskerville, 8(1), 9--14 (1998),
%              \biburl{http://uk-tug-archive.tug.org/wp-installed-content/uploads/2008/12/81.pdf}.
%
%      \bibitem{pdftex}
%              \bibauthor{Th\`anh, Han The} et al.
%              \bibtitle{\pdfTeX}.
%              2023,
%              \biburl{http://mirrors.ctan.org/systems/doc/pdftex/manual/pdftex-a.pdf}.
%
%      \bibitem{fontforge}
%              \bibauthor{Williams, George} et al.
%              \bibtitle{FontForge}.
%              \biburl{https://fontforge.org/en-US/}.
%    \end{mybibliography}
%
%
%    \clearpage
%    \begingroup
%      \setcounter{IndexColumns}{2}
%      \setlength{\columnsep}{30pt}
%      \phantomsection
%      \label{sec:index}
%      \addtocontents{toc}{\medskip}
%      \addcontentsline{toc}{section}{\numberline{}Index}
%      \raggedcolumns
%      \PrintIndex
%      \label{secend:index}
%    \endgroup
%  }
%
%
%  \clearpage
%  \section{Package Code}\label{sec:package-code}
%  \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}}
%  \addtocontents{toc}{\protect\item}
%  \addtocontents{toc}{\RaggedRight}
%  \addtocontents{toc}{\small}
%  \addtocontents{toc}{\tocsquashedsubsections}
%  \addtocontents{toc}{\protect\begin{multicols}{2}}
%  \addtocontents{toc}{\protect\raggedcolumns}
%  \index{package code|(userman}
%  \index{code reference|(userman}
%
%  This is the \doublequotes{Reference Manual} section of the documentation
%  where we describe the package's code
%  and explain its implementation details.
%
%
%  \changes{v0.1a}{2024-6-2}{Add missing dependency on \packagename{etoolbox}.
%                            Fix suggested by \code{mbertucci47}.}
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{synthslant}
                [2025/10/27  v0.2  Synthetically Slant glyphs]

\RequirePackage{etoolbox}
\RequirePackage{iftex}
\RequirePackage{xkeyval}

%    \end{macrocode}
%
%
%  \subsection{Declaration of Default Slants}
%
%  \begin{macro}{\synthslant}
%    Introduce a reasonable default for the slant.  Let the users override it if they know
%    better.
%
%    Remember that the slant is not an angle (with respect to the \(y\)-axis), but the sine of
%    it.  The value~\(.2\) approximately corresponds to a slant angle of 12\textdegree\!.
%
%    \begin{macrocode}
\providecommand*{\synthslant}{.2}
%    \end{macrocode}
%  \end{macro}
%
%
%  \begin{macro}{\synthnegslant}
%    Also introduce a reasonable default for the negative slant, which is used for upright
%    italic.
%
%    \begin{macrocode}
\providecommand*{\synthnegslant}{-.2}

%    \end{macrocode}
%  \end{macro}
%
%
%  \subsection{Selection of Slant Engine}
%
%  We provide several methods to slant glyphs.  The actual slanting is delegated to a
%  \singlequotes{slant engine} which shears the glyphs.
%
%  \begin{macro}{\synthslant@engine}
%    Default to automatic selection of the slant engine.
%
%    \begin{macrocode}
\def\synthslant@engine{-1}

%    \end{macrocode}
%  \end{macro}
%
%  Expose default forward and backward slant values as package options.
%
%    \begin{macrocode}
\DeclareOptionX{slant}{%
  \xdef\synthslant{\fpeval{#1}}%
  \xdef\synthnegslant{\fpeval{-(#1)}}}
\DeclareOptionX{negslant}{\xdef\synthnegslant{\fpeval{#1}}}
\DeclareOptionX{posslant}{\xdef\synthslant{\fpeval{#1}}}

%    \end{macrocode}
%
%  Make slant-engine selection configurable.
%
%    \begin{macrocode}
\DeclareOptionX{auto}{\def\synthslant@engine{-1}}
\DeclareOptionX{PDF}{\def\synthslant@engine{0}}
\DeclareOptionX{pdf}{\def\synthslant@engine{0}}
\DeclareOptionX{l3draw}{\def\synthslant@engine{1}}
\DeclareOptionX{ps}{\def\synthslant@engine{2}}
\DeclareOptionX{PS}{\def\synthslant@engine{2}}
\DeclareOptionX{tikz}{\def\synthslant@engine{3}}
\DeclareOptionX{TikZ}{\def\synthslant@engine{3}}
\DeclareOptionX{fontspec}{\def\synthslant@engine{4}}
\DeclareOptionX{disable}{\def\synthslant@engine{10000}}

\ProcessOptionsX\relax

%    \end{macrocode}
%
%  Require sane parameter values.
%
%    \begin{macrocode}
\ExplSyntaxOn
\fp_compare:nNnTF {\synthslant} < {.0}
  {\PackageError{synthslant}
                {\string\synthslant\space <\space 0}
                {Pass\space a\space value\space that\space
                 is\space nonnegative.}}
  {}
\fp_compare:nNnTF {\synthnegslant} > {.0}
  {\PackageError{synthslant}
                {\string\synthnegslant\space >\space 0}
                {Pass\space a\space value\space that\space
                 is\space nonpositive.}}
  {}
\ExplSyntaxOff

%    \end{macrocode}
%
%  Announce the positive and negative slant values now that we are sure they are ok.  This may
%  be useful information if the user passed a (complicated) floating-point expression and wants
%  to know how \LaTeX{} did evaluate it.
%
%    \begin{macrocode}
\PackageInfo{synthslant}{\string\synthslant=\synthslant}
\PackageInfo{synthslant}{\string\synthnegslant=\synthnegslant}


%    \end{macrocode}
%
%
%  \subsection{Slant Engines}
%
%  The auto selection code is pretty trivial.  If we identify \pdfTeX{} running we select the
%  \acronym{PDF}~engine, for \LuaLaTeX{} we select the \packagename{fontspec}~engine, and in all
%  other cases we let the \packagename{l3draw}~layer handle the shearing.
%
%    \begin{macrocode}
\ifnum\synthslant@engine<0
  \PackageInfo{synthslant}{auto-selecting slant engine}

  \ifpdftex
    \ifnum\pdfoutput>0
      \def\synthslant@engine{0}
    \else
      \def\synthslant@engine{1}
    \fi
  \else
    \ifluatex
      \def\synthslant@engine{4}
    \else
      \def\synthslant@engine{1}
    \fi
  \fi
\fi


%    \end{macrocode}
%
%
%  \begin{macro}{\synthslant@shear@box}
%    The various slant engine macros are all subsumed under \cs{synthslant@\-shear@\-box}.  So,
%    the higher-level code becomes (almost) engine independent.
%  \end{macro}
%
%
%  \begin{macro}{\synthslant@engine@name}
%    Sometimes we would like to recover the (printable) name of the selected slant engine.
%
%    \begin{macrocode}
\newcommand*{\synthslant@engine@name}{%
  \ifcase\synthslant@engine
    PDF%
  \or% 1
    l3draw%
  \or% 2
    PSTricks%
  \or% 3
    TikZ%
  \or% 4
    fontspec%
  \else
    null-implementation%
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%
%  \subsubsection{\texorpdfstring{\acronym{PDF}}{PDF} Slant Engine}
%
%  The \acronym{PDF} engine works well and it is the best tested alternative.
%
%    \begin{macrocode}
\ifcase\synthslant@engine%  0: PDF
  \PackageInfo{synthslant}{shearing done by PDF}

  \newbox{\synthslant@box}

%    \end{macrocode}
%  \begin{macro}{\synthslant@pdf@shear@box}
%    \begin{macrocode}
  \newcommand*{\synthslant@pdf@shear@box}[2]{%
    \mbox{\sbox{\synthslant@box}{#2}%
          \hskip\wd\synthslant@box
          \pdfsave
          \pdfsetmatrix{1 0 #1 1}%
          \llap{\usebox{\synthslant@box}}%
          \pdfrestore}%
  }

%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \let\synthslant@shear@box=\synthslant@pdf@shear@box
%    \end{macrocode}
%
%
%  \subsubsection{\packagename{l3draw} Slant Engine}
%
%  Using \LaTeXIII{} may be like cheating on a very high level as the draw subsystem may
%  delegate to the \acronym{PDF}~engine itself.  \acronym{LOL!}
%
%    \begin{macrocode}
\or%  1: LaTeX3 draw subsystem
  \PackageInfo{synthslant}{shearing delegated to l3draw}

  \RequirePackage{l3draw}

  \ExplSyntaxOn
%    \end{macrocode}
% \begin{macro}{\synthslant@latex@shear@box}
%   Slanting implemented with the experimental l3draw subsystem.
%
%   \begin{anticipatedchange}
%     As soon as the l3kernel offers an x-shear operation (\cs{box\_xshear:Nn}?) we shall ditch
%     this implementation and switch to the one that is tailored to \emph{text} instead of the
%     current one for graphics.
%   \end{anticipatedchange}
%
%    \begin{macrocode}
  \NewDocumentCommand{\synthslant@latex@shear@box}{mm}{
    \hbox_set:Nn \l_tmpa_box {#2}
    \dim_set:Nn \l_tmpa_dim {\box_wd:N \l_tmpa_box}
    \dim_set:Nn \l_tmpb_dim {\box_ht:N \l_tmpa_box}
    \draw_begin:
      \draw_transform_xslant:n {#1}
%    \end{macrocode}
%
%   Force the baseline of the payload (\#2) to coincide with the baseline of the surrounding
%   text.  This\spacedemdash of course\spacedemdash screws up our bounding box at least
%   vertically.
%
%    \begin{macrocode}
      \box_set_dp:Nn \l_tmpa_box {\z@}
%    \end{macrocode}
%
%   Here comes a fudge because the l3draw bounding boxes are way too lose.  For positive slants:
%   shrink the box~width by the box~height times~\meta{slant}.  For negative slants: shrink the
%   box~width as for positive slants and in addition shift the payload to the left by the
%   box~height times~\meta{slant}.
%
%    \begin{macrocode}
      \fp_compare:nNnTF {#1} >= {.0}
        {
          \box_set_wd:Nn \l_tmpa_box
              {\l_tmpa_dim - #1\l_tmpb_dim}
        }
        {
          \draw_suspend_begin:
            \kern#1\l_tmpb_dim
          \draw_suspend_end:
          \box_set_wd:Nn \l_tmpa_box
              {\l_tmpa_dim + #1\l_tmpb_dim}
        }
%    \end{macrocode}
%
%   Now typeset the box.
%
%    \begin{macrocode}
      \draw_box_use:N \l_tmpa_box
    \draw_end:
  }
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \ExplSyntaxOff

  \let\synthslant@shear@box=\synthslant@latex@shear@box
%    \end{macrocode}
%
%
%  \subsubsection{\pstrickslogo{} Slant Engine}
%
%  Shearing via \pstrickslogo{} works, but exhibits a weird interface.
%
%    \begin{macrocode}
\or%  2: PSTricks
  \PackageInfo{synthslant}
              {shearing deferred to PostScript via PSTricks}

  \RequirePackage{pst-3d}% \pstilt

%    \end{macrocode}
%
%  Package~\packagename{pstricks} offers \cs{pstilt} and \cs{psTilt} both with typographically
%  sub-optimal outcomes.
%
%  \begin{macro}{\synthslant@pstricks@shear@box}
%    \begin{macrocode}
  \newcommand*{\synthslant@pstricks@shear@box}[2]{%
    \pstilt{\fpeval{57.2958 * acos(#1)}}{#2}%
  }

%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \let\synthslant@shear@box=\synthslant@pstricks@shear@box
%    \end{macrocode}
%
%
%  \subsubsection{\tikzlogo{} Slant Engine}
%
%  The \tikzlogo{} code has not been tested thoroughly yet, but it looks like it could work
%  after some tweaking.
%
%    \begin{macrocode}
\or%  3: TikZ
  \PackageInfo{synthslant}{shearing by TikZ}

  \RequirePackage{tikz}

%    \end{macrocode}
%  \begin{macro}{\synthslant@tikz@shear@box}
%    \begin{macrocode}
  \newcommand*{\synthslant@tikz@shear@box}[2]{%
    \tikz[baseline = (ANCHOR.base), xslant = #1]
    \node[inner sep = 0pt, xslant = #1] (ANCHOR) {#2};
  }

%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \let\synthslant@shear@box=\synthslant@tikz@shear@box
%    \end{macrocode}
%
%
%  \subsubsection{\packagename{fontspec}}
%
%  The \packagename{fontspec} works particularly well, but it does not jibe with \pdfTeX.
%
%    \begin{macrocode}
\or%  4: fontspec
  \PackageInfo{synthslant}
              {use fontspec's artificial font transformations}

  \RequirePackage{fontspec}

  \ExplSyntaxOn
%    \end{macrocode}
%  \begin{macro}{\synthslantbox@fontspect@shear@box}
%    \begin{macrocode}
  \newcommand*{\synthslantbox@fontspect@shear@box}[2]{
    \begingroup
    \expandafter
    \fontspec[FakeSlant=#1]{\l_fontspec_family_tl}
    #2
    \endgroup
  }
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \ExplSyntaxOff

  \let\synthslant@shear@box=\synthslantbox@fontspect@shear@box
%    \end{macrocode}
%
%
%  \subsubsection{Null Implementation}
%
%  The null implementation\spacedemdash which does exactly what its name implies\spacedemdash
%  can be useful for debugging or to get rid of the effect temporarily.
%
%    \begin{macrocode}
\else%  >=5: Null implementation
  \PackageWarning{synthslant}{shearing disabled}

%    \end{macrocode}
%  \begin{macro}{\synthslant@identity@shear@box}
%    \begin{macrocode}
  \newcommand*{\synthslant@identity@shear@box}[2]{#2}

%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
  \let\synthslant@shear@box=\synthslant@identity@shear@box
\fi


%    \end{macrocode}
%
%
%  \subsection{Generic Slant Code}
%
%  Here comes the engine-independent code.
%
%  \begin{macro}{\synthslant@nolinebreak}
%    The \LaTeXIII{} and \tikzlogo{} engines break lines at \singlequotes{unexpected} points.
%    Here is a duct-tape solution for them that concretes together the adajacent parts.
%
%    \begin{macrocode}
\def\synthslant@nolinebreak{%
  \ifnum\synthslant@engine=1% l3draw
    \nolinebreak
  \else
    \ifnum\synthslant@engine=3% TikZ
      \nolinebreak
    \fi
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%
%  \begin{macro}{\synthslantbox@discretionary}
%    Honor explicit \cs{discretionary} primitives.
%
%    \changes{v0.2}{2025-6-5}{New macro that allows parsing \cs{discretionary} primitives.}
%    \begin{macrocode}
\def\synthslantbox@discretionary#1\discretionary#2#3#4#5\@nil{%
  \synthslant@shear@box{\synthslant@slant@value}{#1}%
  \ifx\relax#5%
    \relax
  \else
    \synthslant@nolinebreak
    \setbox0=\hbox{\synthslant@shear@box{\synthslant@slant@value}{#2}}%
    \setbox1=\hbox{\synthslant@shear@box{\synthslant@slant@value}{#3}}%
    \setbox2=\hbox{\synthslant@shear@box{\synthslant@slant@value}{#4}}%
    \discretionary{\box0}{\box1}{\box2}%
    \synthslantbox@discretionary#5\@nil
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@soft@hyphen}
%    Allow for line breaks at hyphenation opportunities~(\singlequotes{\cs{-}}).
%
%    \changes{v0.1b}{2025-5-16}{Replace \cs{relax} with \cs{@nil} as end marker.}
%    \changes{v0.2}{2025-5-22}{Also slant discretionary hyphens at the end of a line.}
%    \begin{macrocode}
\def\synthslantbox@soft@hyphen#1\-#2\@nil{%
  \synthslantbox@discretionary#1\discretionary{}{}{}\@nil
  \ifx\relax#2%
    \relax
  \else
    \synthslant@nolinebreak
    \setbox0=\hbox{\synthslant@shear@box{\synthslant@slant@value}{-}}%
    \discretionary{\box0}{}{}%
    \synthslantbox@soft@hyphen#2\@nil
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@hard@hyphen}
%    Allow for line breaks at embedded, explicit hyphens~(\singlequotes{-}).
%
%    \changes{v0.1b}{2025-5-16}{Replace \cs{relax} with \cs{@nil} as end marker.}
%    \begin{macrocode}
\def\synthslantbox@hard@hyphen#1-#2\@nil{%
  \synthslantbox@soft@hyphen#1\-\@nil
  \ifx\relax#2%
    \relax
  \else
    \synthslant@nolinebreak
    \synthslant@shear@box{\synthslant@slant@value}{-}%
    \synthslant@nolinebreak
    \discretionary{}{}{}%
    \synthslantbox@hard@hyphen#2\@nil
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@space@codesequence}
%    This stage lets us cope with the macro~\cs{space} in contrast to
%    \cs{synthslantbox@literalspace}, which handles literal
%    spaces~\singlequotes{\textvisiblespace}.
%
%    \changes{v0.2}{2025-6-6}{New macro to handle explicit \cs{space}\spacedemdash in addition
%    to literal spaces\spacedemdash in \meta{text}.}
%    \begin{macrocode}
\def\synthslantbox@space@codesequence#1\space#2\@nil{%
  \synthslantbox@hard@hyphen#1-\@nil
  \ifx\relax#2%
    \relax
  \else
    \space
    \synthslantbox@space@codesequence#2\@nil
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@literal@space}
%    Allow for line breaks at embedded spaces~(\singlequotes{\textvisiblespace}).
%
%    \changes{v0.1b}{2025-5-16}{Replace \cs{relax} with \cs{@nil} as end marker.}
%    \changes{v0.2}{2025-6-6}{Rename from \cs{synthslantbox@\-space} to distinguish from new
%    macro~\cs{synthslantbox@\-space@\-codesequence}.}
%    \begin{macrocode}
\def\synthslantbox@literal@space#1 #2\@nil{%
  \synthslantbox@space@codesequence#1\space\@nil
  \ifx\relax#2%
    \relax
  \else
    \space
    \synthslantbox@literal@space#2\@nil
  \fi
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox}
%    We define two completely different implementations depending on the request for
%    \packagename{fontspec} doing the slanting or any other package.
%
%    Macro~1: Immediately call the \packagename{fontspec}-specific macro.  Bypass the hierarchy
%    needed for the other slant engines.
%
%    \begin{macrocode}
\ifnum\synthslant@engine=4% fontspec
  \newrobustcmd*{\synthslantbox}[2]{%
%    \end{macrocode}
%    The following (expanding) definition is only here for the compatibility of both branches.
%    \begin{macrocode}
    \edef\synthslant@slant@value{#1}
    \synthslantbox@fontspect@shear@box{\synthslant@slant@value}
                                      {#2}%
  }
%    \end{macrocode}
%
%    Macro~2: This is the firestarter for the processing of all different kinds breakpoints
%    until we reach unbreakable chunks to be passed on to the selected slant engine.
%
%    Normally, a user wants to call \cs{text\-synth\-slant} or
%    \cs{text\-synth\-up\-right\-italic}, however \LaTeX~wizards may have other ideas.
%
%    \changes{v0.1b}{2025-5-16}{Replace \cs{relax} with \cs{@nil} as end marker.}
%    \begin{macrocode}
\else
  \newrobustcmd*{\synthslantbox}[2]{%
    \edef\synthslant@slant@value{#1}%
%    \end{macrocode}
%    The literal space in front of \cs{@nil} is crucial to initiate the chain of macro calls.
%    \begin{macrocode}
    \expandafter\synthslantbox@literal@space#2 \@nil
  }
\fi

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@right@slant@correction}
%    This is a simple yet surprisingly effective heuristic for slant correction on the
%    right-hand side of the slanted text.  The value~\cs{synthslant} is \(\sin \alpha\), where
%    \(\alpha\) is the slant angle; see \cref{equ:shear-transformation} on
%    \cpageref{equ:shear-transformation}.  Multiplied with the ex~height of the current font,
%    \cs{fontdimen5}, this is a good approximation of the necessary slant correction.
%
%    \begin{macrocode}
\newcommand*{\synthslantbox@right@slant@correction}{%
  \dimen0=\fontdimen5\font
  \kern\synthslant\dimen0\relax
}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\slantcontext}
%    If we have \packagename{microtype} support we enter the context defined by this macro in
%    |slantenvironment|.
%
%    \begin{macrocode}
\newcommand*{\slantcontext}{tracking=synthslant}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{environment}{slantenvironment}
%    We use this environment as a pair of hooks that are called right before and right after the
%    actual slanting code runs.  The default sets up an upright type shape before and adds some
%    italic correction after slanting.
%
%    \begin{macrocode}
\NewDocumentEnvironment{slantenvironment}{}
  {\upshape
   \ifcsdef{microtypecontext}
           {\expandafter\microtypecontext
            \expandafter{\slantcontext}}
           {}}
  {\ifcsdef{endmicrotypecontext}
           {\endmicrotypecontext}
           {}%
   \synthslantbox@right@slant@correction}

%    \end{macrocode}
%  \end{environment}
%
%  \begin{macro}{\textsynthslant}
%    User-level macro to slant some text.
%
%    \begin{macrocode}
\NewDocumentCommand{\textsynthslant}{m}
  {\ifmmode
     \synthslantbox{\synthslant}{#1}%
   \else
     {\slantenvironment
      \synthslantbox{\synthslant}{#1}%
      \endslantenvironment}%
   \fi}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\synthslantbox@right@negslant@correction}
%    We could play the same trick here as in \cs{synthslantbox@\-right@\-slant@\-correction} and
%    use \cs{synthnegslant} instead of \cs{synthslant}.  But our experiments show no need for a
%    correction.  Anyhow, this macro may be convenient to override someday.
%
%    \begin{macrocode}
\newcommand*{\synthslantbox@right@negslant@correction}{}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\negslantcontext}
%    If we have \packagename{microtype} support we enter the context defined by this macro in
%    |negslantenvironment|.
%
%    \begin{macrocode}
\newcommand*{\negslantcontext}{tracking=synthnegslant}

%    \end{macrocode}
%  \end{macro}
%
%  \begin{environment}{negslantenvironment}
%    We use this environment as a pair of hooks that are called right before and right after the
%    actual unslanting code runs.
%
%    The default sets up an italic shape before unslanting and adds some negative italic
%    correction after unslanting.
%
%    \begin{macrocode}
\NewDocumentEnvironment{negslantenvironment}{}
  {\itshape
   \ifcsdef{microtypecontext}
           {\expandafter\microtypecontext
            \expandafter{\negslantcontext}}
           {}}
  {\ifcsdef{endmicrotypecontext}
           {\endmicrotypecontext}
           {}%
   \synthslantbox@right@negslant@correction}

%    \end{macrocode}
%  \end{environment}
%
%  \begin{macro}{\textsynthuprightitalic}
%    User-level macro to unslant some italic or oblique text.
%
%    \begin{macrocode}
\NewDocumentCommand{\textsynthuprightitalic}{m}
  {\ifmmode
     \synthslantbox{\synthnegslant}{#1}%
   \else
     {\negslantenvironment
      \synthslantbox{\synthnegslant}{#1}%
      \endnegslantenvironment}%
   \fi}

%    \end{macrocode}
%  \end{macro}
%  \index{package code|)userman}
%  \index{code reference|)(userman}
%
%
%
%  \iffalse
%</package>
%  \fi
%
%
%  \addtocontents{toc}{\protect\end{multicols}}
%  \addtocontents{toc}{\protect\end{list}}
%
%
%  \Finale
%
%
%
%
%  \iffalse
%  <DISABLE-SPELL-CHECK>
%<*compare-with-the-gimp>

KJ8AAAAASUVORK5CYII=
%</compare-with-the-gimp>
%  </DISABLE-SPELL-CHECK>
%  \fi
%
%
%  \iffalse
%<*gauge>
\documentclass[a4paper]{article}

\usepackage{booktabs}
\usepackage[tracking=alltext, letterspace=0, verbose]{microtype}
\usepackage{multicol}
\usepackage{parskip}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  Setup SynthSlant and Load Font
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[]{synthslant}% auto/disable; fontspec/l3draw/pdf/ps/tikz
%--\usepackage[fontspec, posslant = .16, negslant = -.14]{synthslant}

%%
%%  All LaTeX Variants
%%
\usepackage[T1]{fontenc}
%%--\usepackage{ebgaramond}\def\synthslant{.3}\def\synthnegslant{-.27}
%%--\usepackage{librecaslon}\def\synthslant{.38}\def\synthnegslant{-.33}
%%--\usepackage{merriweather}\def\synthslant{.14}\def\synthnegslant{-.12}
\usepackage{mlmodern}\def\synthslant{.23}\def\synthnegslant{-.21}
%%--\usepackage{spectral}\def\synthslant{.18}\def\synthnegslant{-.15}

%%
%%  Requires e.g. LuaLaTeX
%%
%%--\usepackage{CharisSIL}% say: `make LATEX=lualatex gauge'

%%
%%  Preload a reasonable font (triple?) if we work with fontspec
%%  and have not already done so, e.g., by saying `\usepackage{...}'.
%%
\ExplSyntaxOn
\sys_if_engine_luatex:T
  {
    \cs_if_exist:NTF \l_fontspec_font
      {}
      {
        \setmainfont{TeX Gyre Pagella}
        \def\synthslant{.16}
        \def\synthnegslant{-.14}
      }
  }
\ExplSyntaxOff


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%  End Setup/Load Font
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\renewcommand*{\arraystretch}{1.12}

\newcommand*{\code}[1]{\texttt{#1}}

\newcommand*{\cs}[1]{\texttt{\char`\\#1}}

\newcommand*{\doublealphabet}
            {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789}
\newcommand*{\doublealphabethyp}
            {A\-B\-C\-D\-E\-F\-G\-H\-I\-J\-K\-L\-M\-N\-O\-P\-Q\-R\-S\-T\-U\-V\-W\-X\-Y\-Z\-%
              a\-b\-c\-d\-e\-f\-g\-h\-i\-j\-k\-l\-m\-n\-o\-p\-q\-r\-s\-t\-u\-v\-w\-x\-y\-z\-%
              0\-1\-2\-3\-4\-5\-6\-7\-8\-9}

\newcommand*{\fontsample}{aefgiv}
\newcommand*{\FontSample}{White Handgloves}
\newcommand*{\FONTSAMPLE}{H\AA{}MB\"URG\'EF\O{}\~N\v{S}}

\newcommand*{\generictextfraction}[2]
            {\mbox{\raisebox{.4em}[0pt]{\scriptsize #1}%
                   \hspace*{-.1em}\textfractionsolidus\hspace*{-.1em}%
                   \raisebox{-.1em}[0pt][0pt]{\scriptsize #2}}}


\makeatletter
\newcommand*{\getpackagefullinfo}[1]{\csname ver@#1.sty\endcsname}

\def\@synthslant@getpackagedate#1/#2/#3 v#4\@nil{#1/#2/#3}
\newcommand*{\getpackagedate}[1]
            {\edef\@tempa{\getpackagefullinfo{#1}}%
             \expandafter\@synthslant@getpackagedate\@tempa\@nil}

\def\@synthslant@getpackageversion#1/#2/#3 v#4 #5\@nil{#4}
\newcommand*{\getpackageversion}[1]
            {\edef\@tempa{\getpackagefullinfo{#1}}%
             \expandafter\@synthslant@getpackageversion\@tempa\@nil}

\def\@synthslant@getpackageinfo#1/#2/#3 v#4 #5\@nil{#5}
\newcommand*{\getpackageinfo}[1]
            {\edef\@tempa{\getpackagefullinfo{#1}}%
             \expandafter\@synthslant@getpackageinfo\@tempa\@nil}
\makeatother


\newcommand*{\longfontsample}{The quick brown fox jumps over the lazy dog.}

\newcommand*{\measurewidth}[1]{\setbox0=\hbox{#1}\the\wd0\space}

\newcommand*{\packagename}[1]{\mbox{\textsf{#1}}}

\newcommand*{\showbaseline}{\space\rule{.5em}{.4pt}\space}

\newcommand*{\showboundingbox}[1]{
  {\setlength{\fboxsep}{0pt}
   \setlength{\fboxrule}{.4pt}
   \framebox{#1}}
}

\let\slbox=\synthslantbox

\makeatletter
\newcommand*{\thewidthdiffof}[2]
            {\setbox0=\hbox{#2}
             \dimen0=\dimexpr\wd0 - #1\relax
             \strip@pt\dimen0}
\newcommand*{\thewidthof}[1]
            {\setbox0=\hbox{#1}
             \dimen0=\dimexpr\numexpr\dimexpr\wd0 * 10\relax/65536\relax pt / 10\relax
             \strip@pt\dimen0}
\makeatother


\addtolength{\textheight}{\headheight}
\addtolength{\textheight}{\headsep}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}

\setlength{\overfullrule}{0pt}


\pagestyle{plain}


\begin{document}
\begin{center}
  \sf
  {\huge\bfseries SynthSlant Calibration Sheet}

  for \packagename{synthslant} version~\getpackageversion{synthslant} as of
  \getpackagedate{synthslant}
\end{center}

Selected slant engine: {\tt\makeatletter\synthslant@engine@name\makeatother}.
Font name: {\makeatletter\edef\@tempa{\fontname\font}\tt\@tempa\makeatother}.


\begin{center}
  \begin{tabular}{@{}lllll@{}}
    \toprule
    Shape  &  Code Seq.  &  L.case  &  Mixed Case   &  Uppercase  \\
    \midrule
    Normal  &
    \cs{normalfont}  &  {\normalfont\fontsample}  &  {\normalfont\FontSample}  &  {\normalfont\FONTSAMPLE}  \\
    Italic  &
    \cs{itshape}  &  {\itshape\fontsample}  &  {\itshape\FontSample}  &  {\itshape\FONTSAMPLE}  \\
    \bottomrule
  \end{tabular}
\end{center}


\section{Slanted Samples}

\begin{center}
  \renewcommand*{\arraystretch}{.85}
  \begin{tabular}{@{}llll@{}}
    \toprule
    Slant  &  L.case  &  Mixed Case  &  Uppercase  \\
    \midrule
    .05  &  \slbox{.05}{\fontsample}  &  \slbox{.05}{\FontSample}  &  \slbox{.05}{\FONTSAMPLE}  \\
    .06  &  \slbox{.06}{\fontsample}  &  \slbox{.06}{\FontSample}  &  \slbox{.06}{\FONTSAMPLE}  \\
    .07  &  \slbox{.07}{\fontsample}  &  \slbox{.07}{\FontSample}  &  \slbox{.07}{\FONTSAMPLE}  \\
    .08  &  \slbox{.08}{\fontsample}  &  \slbox{.08}{\FontSample}  &  \slbox{.08}{\FONTSAMPLE}  \\
    .09  &  \slbox{.09}{\fontsample}  &  \slbox{.09}{\FontSample}  &  \slbox{.09}{\FONTSAMPLE}  \\[.2em]
    .10  &  \slbox{.10}{\fontsample}  &  \slbox{.10}{\FontSample}  &  \slbox{.10}{\FONTSAMPLE}  \\
    .11  &  \slbox{.11}{\fontsample}  &  \slbox{.11}{\FontSample}  &  \slbox{.11}{\FONTSAMPLE}  \\
    .12  &  \slbox{.12}{\fontsample}  &  \slbox{.12}{\FontSample}  &  \slbox{.12}{\FONTSAMPLE}  \\
    .13  &  \slbox{.13}{\fontsample}  &  \slbox{.13}{\FontSample}  &  \slbox{.13}{\FONTSAMPLE}  \\
    .14  &  \slbox{.14}{\fontsample}  &  \slbox{.14}{\FontSample}  &  \slbox{.14}{\FONTSAMPLE}  \\
    .15  &  \slbox{.15}{\fontsample}  &  \slbox{.15}{\FontSample}  &  \slbox{.15}{\FONTSAMPLE}  \\
    .16  &  \slbox{.16}{\fontsample}  &  \slbox{.16}{\FontSample}  &  \slbox{.16}{\FONTSAMPLE}  \\
    .17  &  \slbox{.17}{\fontsample}  &  \slbox{.17}{\FontSample}  &  \slbox{.17}{\FONTSAMPLE}  \\
    .18  &  \slbox{.18}{\fontsample}  &  \slbox{.18}{\FontSample}  &  \slbox{.18}{\FONTSAMPLE}  \\
    .19  &  \slbox{.19}{\fontsample}  &  \slbox{.19}{\FontSample}  &  \slbox{.19}{\FONTSAMPLE}  \\[.2em]
    .20  &  \slbox{.20}{\fontsample}  &  \slbox{.20}{\FontSample}  &  \slbox{.20}{\FONTSAMPLE}  \\
    .21  &  \slbox{.21}{\fontsample}  &  \slbox{.21}{\FontSample}  &  \slbox{.21}{\FONTSAMPLE}  \\
    .22  &  \slbox{.22}{\fontsample}  &  \slbox{.22}{\FontSample}  &  \slbox{.22}{\FONTSAMPLE}  \\
    .23  &  \slbox{.23}{\fontsample}  &  \slbox{.23}{\FontSample}  &  \slbox{.23}{\FONTSAMPLE}  \\
    .24  &  \slbox{.24}{\fontsample}  &  \slbox{.24}{\FontSample}  &  \slbox{.24}{\FONTSAMPLE}  \\
    .25  &  \slbox{.25}{\fontsample}  &  \slbox{.25}{\FontSample}  &  \slbox{.25}{\FONTSAMPLE}  \\
    .26  &  \slbox{.26}{\fontsample}  &  \slbox{.26}{\FontSample}  &  \slbox{.26}{\FONTSAMPLE}  \\
    .27  &  \slbox{.27}{\fontsample}  &  \slbox{.27}{\FontSample}  &  \slbox{.27}{\FONTSAMPLE}  \\
    .28  &  \slbox{.28}{\fontsample}  &  \slbox{.28}{\FontSample}  &  \slbox{.28}{\FONTSAMPLE}  \\
    .29  &  \slbox{.29}{\fontsample}  &  \slbox{.29}{\FontSample}  &  \slbox{.29}{\FONTSAMPLE}  \\[.2em]
    .30  &  \slbox{.30}{\fontsample}  &  \slbox{.30}{\FontSample}  &  \slbox{.30}{\FONTSAMPLE}  \\
    .31  &  \slbox{.31}{\fontsample}  &  \slbox{.31}{\FontSample}  &  \slbox{.31}{\FONTSAMPLE}  \\
    .32  &  \slbox{.32}{\fontsample}  &  \slbox{.32}{\FontSample}  &  \slbox{.32}{\FONTSAMPLE}  \\
    .33  &  \slbox{.33}{\fontsample}  &  \slbox{.33}{\FontSample}  &  \slbox{.33}{\FONTSAMPLE}  \\
    .34  &  \slbox{.34}{\fontsample}  &  \slbox{.34}{\FontSample}  &  \slbox{.34}{\FONTSAMPLE}  \\
    .35  &  \slbox{.35}{\fontsample}  &  \slbox{.35}{\FontSample}  &  \slbox{.35}{\FONTSAMPLE}  \\
    .36  &  \slbox{.36}{\fontsample}  &  \slbox{.36}{\FontSample}  &  \slbox{.36}{\FONTSAMPLE}  \\
    .37  &  \slbox{.37}{\fontsample}  &  \slbox{.37}{\FontSample}  &  \slbox{.37}{\FONTSAMPLE}  \\
    .38  &  \slbox{.38}{\fontsample}  &  \slbox{.38}{\FontSample}  &  \slbox{.38}{\FONTSAMPLE}  \\
    .39  &  \slbox{.39}{\fontsample}  &  \slbox{.39}{\FontSample}  &  \slbox{.39}{\FONTSAMPLE}  \\
    \bottomrule
  \end{tabular}
\end{center}


\clearpage
\section{Upright Italic Samples}

\begin{center}
  \renewcommand*{\arraystretch}{.85}
  \begin{tabular}{@{}llll@{}}
    \toprule
    Slant  &  L.case  &  Mixed Case  &  Uppercase  \\
    \midrule
    \textminus.05  &  \slbox{-.05}{\itshape\fontsample}  &  \slbox{-.05}{\itshape\FontSample}  &  \slbox{-.05}{\itshape\FONTSAMPLE}  \\
    \textminus.06  &  \slbox{-.06}{\itshape\fontsample}  &  \slbox{-.06}{\itshape\FontSample}  &  \slbox{-.06}{\itshape\FONTSAMPLE}  \\
    \textminus.07  &  \slbox{-.07}{\itshape\fontsample}  &  \slbox{-.07}{\itshape\FontSample}  &  \slbox{-.07}{\itshape\FONTSAMPLE}  \\
    \textminus.08  &  \slbox{-.08}{\itshape\fontsample}  &  \slbox{-.08}{\itshape\FontSample}  &  \slbox{-.08}{\itshape\FONTSAMPLE}  \\
    \textminus.09  &  \slbox{-.09}{\itshape\fontsample}  &  \slbox{-.09}{\itshape\FontSample}  &  \slbox{-.09}{\itshape\FONTSAMPLE}  \\[.2em]
    \textminus.10  &  \slbox{-.10}{\itshape\fontsample}  &  \slbox{-.10}{\itshape\FontSample}  &  \slbox{-.10}{\itshape\FONTSAMPLE}  \\
    \textminus.11  &  \slbox{-.11}{\itshape\fontsample}  &  \slbox{-.11}{\itshape\FontSample}  &  \slbox{-.11}{\itshape\FONTSAMPLE}  \\
    \textminus.12  &  \slbox{-.12}{\itshape\fontsample}  &  \slbox{-.12}{\itshape\FontSample}  &  \slbox{-.12}{\itshape\FONTSAMPLE}  \\
    \textminus.13  &  \slbox{-.13}{\itshape\fontsample}  &  \slbox{-.13}{\itshape\FontSample}  &  \slbox{-.13}{\itshape\FONTSAMPLE}  \\
    \textminus.14  &  \slbox{-.14}{\itshape\fontsample}  &  \slbox{-.14}{\itshape\FontSample}  &  \slbox{-.14}{\itshape\FONTSAMPLE}  \\
    \textminus.15  &  \slbox{-.15}{\itshape\fontsample}  &  \slbox{-.15}{\itshape\FontSample}  &  \slbox{-.15}{\itshape\FONTSAMPLE}  \\
    \textminus.16  &  \slbox{-.16}{\itshape\fontsample}  &  \slbox{-.16}{\itshape\FontSample}  &  \slbox{-.16}{\itshape\FONTSAMPLE}  \\
    \textminus.17  &  \slbox{-.17}{\itshape\fontsample}  &  \slbox{-.17}{\itshape\FontSample}  &  \slbox{-.17}{\itshape\FONTSAMPLE}  \\
    \textminus.18  &  \slbox{-.18}{\itshape\fontsample}  &  \slbox{-.18}{\itshape\FontSample}  &  \slbox{-.18}{\itshape\FONTSAMPLE}  \\
    \textminus.19  &  \slbox{-.19}{\itshape\fontsample}  &  \slbox{-.19}{\itshape\FontSample}  &  \slbox{-.19}{\itshape\FONTSAMPLE}  \\[.2em]
    \textminus.20  &  \slbox{-.20}{\itshape\fontsample}  &  \slbox{-.20}{\itshape\FontSample}  &  \slbox{-.20}{\itshape\FONTSAMPLE}  \\
    \textminus.21  &  \slbox{-.21}{\itshape\fontsample}  &  \slbox{-.21}{\itshape\FontSample}  &  \slbox{-.21}{\itshape\FONTSAMPLE}  \\
    \textminus.22  &  \slbox{-.22}{\itshape\fontsample}  &  \slbox{-.22}{\itshape\FontSample}  &  \slbox{-.22}{\itshape\FONTSAMPLE}  \\
    \textminus.23  &  \slbox{-.23}{\itshape\fontsample}  &  \slbox{-.23}{\itshape\FontSample}  &  \slbox{-.23}{\itshape\FONTSAMPLE}  \\
    \textminus.24  &  \slbox{-.24}{\itshape\fontsample}  &  \slbox{-.24}{\itshape\FontSample}  &  \slbox{-.24}{\itshape\FONTSAMPLE}  \\
    \textminus.25  &  \slbox{-.25}{\itshape\fontsample}  &  \slbox{-.25}{\itshape\FontSample}  &  \slbox{-.25}{\itshape\FONTSAMPLE}  \\
    \textminus.26  &  \slbox{-.26}{\itshape\fontsample}  &  \slbox{-.26}{\itshape\FontSample}  &  \slbox{-.26}{\itshape\FONTSAMPLE}  \\
    \textminus.27  &  \slbox{-.27}{\itshape\fontsample}  &  \slbox{-.27}{\itshape\FontSample}  &  \slbox{-.27}{\itshape\FONTSAMPLE}  \\
    \textminus.28  &  \slbox{-.28}{\itshape\fontsample}  &  \slbox{-.28}{\itshape\FontSample}  &  \slbox{-.28}{\itshape\FONTSAMPLE}  \\
    \textminus.29  &  \slbox{-.29}{\itshape\fontsample}  &  \slbox{-.29}{\itshape\FontSample}  &  \slbox{-.29}{\itshape\FONTSAMPLE}  \\[.2em]
    \textminus.30  &  \slbox{-.30}{\itshape\fontsample}  &  \slbox{-.30}{\itshape\FontSample}  &  \slbox{-.30}{\itshape\FONTSAMPLE}  \\
    \textminus.31  &  \slbox{-.31}{\itshape\fontsample}  &  \slbox{-.31}{\itshape\FontSample}  &  \slbox{-.31}{\itshape\FONTSAMPLE}  \\
    \textminus.32  &  \slbox{-.32}{\itshape\fontsample}  &  \slbox{-.32}{\itshape\FontSample}  &  \slbox{-.32}{\itshape\FONTSAMPLE}  \\
    \textminus.33  &  \slbox{-.33}{\itshape\fontsample}  &  \slbox{-.33}{\itshape\FontSample}  &  \slbox{-.33}{\itshape\FONTSAMPLE}  \\
    \textminus.34  &  \slbox{-.34}{\itshape\fontsample}  &  \slbox{-.34}{\itshape\FontSample}  &  \slbox{-.34}{\itshape\FONTSAMPLE}  \\
    \textminus.35  &  \slbox{-.35}{\itshape\fontsample}  &  \slbox{-.35}{\itshape\FontSample}  &  \slbox{-.35}{\itshape\FONTSAMPLE}  \\
    \textminus.36  &  \slbox{-.36}{\itshape\fontsample}  &  \slbox{-.36}{\itshape\FontSample}  &  \slbox{-.36}{\itshape\FONTSAMPLE}  \\
    \textminus.37  &  \slbox{-.37}{\itshape\fontsample}  &  \slbox{-.37}{\itshape\FontSample}  &  \slbox{-.37}{\itshape\FONTSAMPLE}  \\
    \textminus.38  &  \slbox{-.38}{\itshape\fontsample}  &  \slbox{-.38}{\itshape\FontSample}  &  \slbox{-.38}{\itshape\FONTSAMPLE}  \\
    \textminus.39  &  \slbox{-.39}{\itshape\fontsample}  &  \slbox{-.39}{\itshape\FontSample}  &  \slbox{-.39}{\itshape\FONTSAMPLE}  \\
    \bottomrule
  \end{tabular}
\end{center}


\clearpage
\section{Examples}

\let\r=\textrm
\let\i=\textit
\let\u=\textsynthuprightitalic
\let\y=\textsynthslant

The current slant values are
\mbox{\cs{synthslant}\:=\:\synthslant} and
\mbox{\cs{synthnegslant}\:=\:\synthnegslant}.


\subsection{Copy}

We mix different shapes to gauge the homogeneity of slant angles and
overall gray values.  Some overfull horizontal boxes are possible even with
package~\packagename{microtype} being active.

\setlength{\columnsep}{20pt}
\begin{multicols}{2}\fussy
  \setlength{\overfullrule}{0pt}
  \paragraph{Roman/Italic.}\leavevmode

  \r{Grumpy} \i{wizards} \r{make} \i{toxic} \r{brew} \i{for} \r{the} \i{evil} \r{Queen} \i{and} \r{Jack.}
  \r{One} \i{morning,} \r{when} \i{Gregor} \r{Samsa} \i{woke} \r{from} \i{troubled} \r{dreams,}
  \r{he} \i{found} \r{himself} \i{transformed} \r{in} \i{his} \r{bed} \i{into} \r{a} \i{horrible} \r{vermin.}
  \r{He} \i{lay} \r{on} \i{his} \r{armour-like} \i{back,}
  \r{and} \i{if} \r{he} \i{lifted} \i{his} \r{head}
  \r{a} \i{little} \r{he} \i{could} \r{see} \i{his} \r{brown} \i{belly,}
  \r{slightly} \i{domed} \r{and} \i{divided} \r{by} \i{arches} \r{into} \i{stiff} \r{sections.}
  \r{The} \i{bedding} \r{was} \i{hardly} \r{able} \i{to}
  \r{cover} \i{it} \r{and} \i{seemed} \r{ready} \i{to} \r{slide} \i{off} \r{any} \i{moment.}
  \r{His} \i{many} \r{legs,}
  \r{pitifully} \i{thin} \r{compared} \i{with} \r{the} \i{size} \r{of} \i{the} \r{rest} \i{of} \r{him,}
  \r{waved} \i{about} \r{helplessly} \i{as} \r{he} \i{looked.}


  \paragraph{Roman/Slanted Roman.}\leavevmode

  \r{Grumpy} \y{wizards} \r{make} \y{toxic} \r{brew} \y{for} \r{the} \y{evil} \r{Queen} \y{and} \r{Jack.}
  \r{One} \y{morn\-ing,} \r{when} \y{Gregor} \r{Samsa} \y{woke} \r{from} \y{trou\-bled} \r{dreams,}
  \r{he} \y{found} \r{himself} \y{trans\-formed} \r{in} \y{his} \r{bed} \y{into} \r{a} \y{hor\-ri\-ble} \r{vermin.}
  \r{He} \y{lay} \r{on} \y{his} \r{armour-like} \y{back,}
  \r{and} \y{if} \r{he} \y{lifted} \y{his} \r{head}
  \r{a} \y{little} \r{he} \y{could} \r{see} \y{his} \r{brown} \y{belly,}
  \r{slightly} \y{domed} \r{and} \y{divided} \r{by} \y{arches} \r{into} \y{stiff} \r{sections.}
  \r{The} \y{bedding} \r{was} \y{hardly} \r{able} \y{to}
  \r{cover} \y{it} \r{and} \y{seemed} \r{ready} \y{to} \r{slide} \y{off} \r{any} \y{mo\-ment.}
  \r{His} \y{many} \r{legs,}
  \r{pitifully} \y{thin} \r{compared} \y{with} \r{the} \y{size} \r{of} \y{the} \r{rest} \y{of} \r{him,}
  \r{waved} \y{about} \r{helplessly} \y{as} \r{he} \y{looked.}


  \paragraph{Italic/Slanted Roman.}\leavevmode

  \i{Grumpy} \y{wizards} \i{make} \y{toxic} \i{brew} \y{for} \i{the} \y{evil} \i{Queen} \y{and} \i{Jack.}
  \i{One} \y{morn\-ing,} \i{when} \y{Gregor} \i{Samsa} \y{woke} \i{from} \y{trou\-bled} \i{dreams,}
  \i{he} \y{found} \i{himself} \y{trans\-formed} \i{in} \y{his} \i{bed} \y{into} \i{a} \y{hor\-ri\-ble} \i{vermin.}
  \i{He} \y{lay} \i{on} \y{his} \i{armour-like} \y{back,}
  \i{and} \y{if} \i{he} \y{lifted} \y{his} \i{head}
  \i{a} \y{little} \i{he} \y{could} \i{see} \y{his} \i{brown} \y{belly,}
  \i{slightly} \y{domed} \i{and} \y{divided} \i{by} \y{arches} \i{into} \y{stiff} \i{sections.}
  \i{The} \y{bedding} \i{was} \y{hardly} \i{able} \y{to}
  \i{cover} \y{it} \i{and} \y{seemed} \i{ready} \y{to} \i{slide} \y{off} \i{any} \y{mo\-ment.}
  \i{His} \y{many} \i{legs,}
  \i{pitifully} \y{thin} \i{compared} \y{with} \i{the} \y{size} \i{of} \y{the} \i{rest} \y{of} \i{him,}
  \i{waved} \y{about} \i{helplessly} \y{as} \i{he} \y{looked.}


  \paragraph{Roman/Italic/Slanted Roman.}\leavevmode

  \r{Grumpy} \i{wizards} \y{make} \r{toxic} \i{brew} \y{for} \r{the} \i{evil} \y{Queen} \r{and} \i{Jack.}
  \r{One} \i{morning,} \y{when} \r{Gregor} \i{Samsa} \y{woke} \r{from} \i{troubled} \y{dreams,}
  \r{he} \i{found} \y{him\-self} \r{transformed} \i{in} \y{his} \r{bed} \i{into} \r{a} \i{horrible} \y{ver\-min.}
  \r{He} \i{lay} \y{on} \r{his} \i{armour-like} \y{back,}
  \r{and} \i{if} \y{he} \r{lifted} \i{his} \y{head}
  \r{a} \i{little} \y{he} \r{could} \i{see} \y{his} \r{brown} \i{belly,}
  \r{slightly} \i{domed} \y{and} \r{divided} \i{by} \y{arches} \r{into} \i{stiff} \y{sec\-tions.}
  \r{The} \i{bedding} \y{was} \r{hardly} \i{able} \y{to}
  \r{cover} \i{it} \y{and} \r{seemed} \i{ready} \y{to} \r{slide} \i{off} \y{any} \r{moment.}
  \r{His} \i{many} \y{legs,}
  \r{pitifully} \i{thin} \y{compared} \r{with} \i{the} \y{size} \r{of} \i{the} \y{rest} \r{of} \i{him,}
  \r{waved} \i{about} \y{helplessly} \r{as} \r{he} \y{looked.}


  \paragraph{Roman/Upright Italic.}\leavevmode

  \r{Grumpy} \u{wizards} \r{make} \u{toxic} \r{brew} \u{for} \r{the} \u{evil} \r{Queen} \u{and} \r{Jack.}
  \r{One} \u{morn\-ing,} \r{when} \u{Gregor} \r{Samsa} \u{woke} \r{from} \u{trou\-bled} \r{dreams,}
  \r{he} \u{found} \r{himself} \u{trans\-formed} \r{in} \u{his} \r{bed} \u{into} \r{a} \u{hor\-ri\-ble} \r{vermin.}
  \r{He} \u{lay} \r{on} \u{his} \r{armour-like} \u{back,}
  \r{and} \u{if} \r{he} \u{lifted} \u{his} \r{head}
  \r{a} \u{little} \r{he} \u{could} \r{see} \u{his} \r{brown} \u{belly,}
  \r{slightly} \u{domed} \r{and} \u{divided} \r{by} \u{arches} \r{into} \u{stiff} \r{sections.}
  \r{The} \u{bedding} \r{was} \u{hardly} \r{able} \u{to}
  \r{cover} \u{it} \r{and} \u{seemed} \r{ready} \u{to} \r{slide} \u{off} \r{any} \u{mo\-ment.}
  \r{His} \u{many} \r{legs,}
  \r{pitifully} \u{thin} \r{compared} \u{with} \r{the} \u{size} \r{of} \u{the} \r{rest} \u{of} \r{him,}
  \r{waved} \u{about} \r{helplessly} \u{as} \r{he} \u{looked.}
\end{multicols}


\clearpage
\subsection{Bounding Box}

Thin lines indicate the baseline.  All bounding boxes should be very tight.  A little piercing
into the box in the direction of the slant operation is acceptable.

\begin{center}
  \begin{tabular}{@{}l@{\showbaseline}l@{\showbaseline}l@{\showbaseline}}
    \cs{textrm}  &
    \showboundingbox{\textrm{\fontsample}}  &
    \showboundingbox{\textrm{\FONTSAMPLE}}  \\
    \cs{textit}  &
    \showboundingbox{\textit{\fontsample}}  &
    \showboundingbox{\textit{\FONTSAMPLE}}  \\
    \cs{synthslantbox}\code{\{\synthslant\}}  &
    \showboundingbox{\synthslantbox{\synthslant}{\fontsample}}  &
    \showboundingbox{\synthslantbox{\synthslant}{\FONTSAMPLE}}  \\
    \cs{synthslantbox}\code{\{\synthnegslant\}}  &
    \showboundingbox{\synthslantbox{\synthnegslant}{\itshape\fontsample}}  &
    \showboundingbox{\synthslantbox{\synthnegslant}{\itshape\FONTSAMPLE}}  \\
    \cs{textsynthslant}  &
    \showboundingbox{\textsynthslant{\fontsample}}  &
    \showboundingbox{\textsynthslant{\FONTSAMPLE}}  \\
    \cs{textsynthuprightitalic}  &
    \showboundingbox{\textsynthuprightitalic{\fontsample}}  &
    \showboundingbox{\textsynthuprightitalic{\FONTSAMPLE}}
  \end{tabular}
\end{center}


\subsection{Width Change with \cs{synthslantbox}?}

Widths of the alphabet in uppercase and lowercase letter plus the digits.  The ``hyp''~version
contains discretionary hyphens (\cs{-}) between each of the letters or digits.  The absolute
value of all deltas should be much less than 3pt.

\begin{center}
  \newlength{\abcplain}\settowidth{\abcplain}{\doublealphabet}
  \newlength{\abchyp}\settowidth{\abchyp}{\doublealphabethyp}
  \begin{tabular}[t]{@{}lrll@{}}
    \toprule
    \cs{upshape}  &  Slant  &  Width  &  Delta  \\
    {}  &  &  pt  &  pt  \\
    \midrule
    ABC  &  ---  &  \thewidthof{\doublealphabet}  &  ---  \\
    ABC hyp  &  ---  &  \thewidthof{\doublealphabethyp}  &  ---  \\
    %
    ABC  &  0  &
    \thewidthof{\synthslantbox{0}{\doublealphabet}}  &
    \thewidthdiffof{\abcplain}{\synthslantbox{0}{\doublealphabet}}  \\
    ABC hyp  &  0
    &  \thewidthof{\synthslantbox{0}{\doublealphabethyp}}  &
    \thewidthdiffof{\abchyp}{\synthslantbox{0}{\doublealphabethyp}}  \\
    %
    ABC  &  .1  &
    \thewidthof{\synthslantbox{.1}{\doublealphabet}}  &
    \thewidthdiffof{\abcplain}{\synthslantbox{.1}{\doublealphabet}}  \\
    ABC hyp  &  .1  &
    \thewidthof{\synthslantbox{.1}{\doublealphabethyp}}  &
    \thewidthdiffof{\abchyp}{\synthslantbox{.1}{\doublealphabethyp}}  \\
    %
    ABC  &  .2  &
    \thewidthof{\synthslantbox{.2}{\doublealphabet}}  &
    \thewidthdiffof{\abcplain}{\synthslantbox{.2}{\doublealphabet}}  \\
    ABC hyp  &  .2  &
    \thewidthof{\synthslantbox{.2}{\doublealphabethyp}}  &
    \thewidthdiffof{\abchyp}{\synthslantbox{.2}{\doublealphabethyp}}  \\
    %
    ABC  &  .3  &
    \thewidthof{\synthslantbox{.3}{\doublealphabet}}  &
    \thewidthdiffof{\abcplain}{\synthslantbox{.3}{\doublealphabet}}  \\
    ABC hyp  &  .3  &
    \thewidthof{\synthslantbox{.3}{\doublealphabethyp}}  &
    \thewidthdiffof{\abchyp}{\synthslantbox{.3}{\doublealphabethyp}}  \\
    \bottomrule
  \end{tabular}
  \qquad
  \newlength{\abcplainitalic}\settowidth{\abcplainitalic}{\itshape\doublealphabet}
  \newlength{\abchypitalic}\settowidth{\abchypitalic}{\itshape\doublealphabethyp}
  \begin{tabular}[t]{@{}lrll@{}}
    \toprule
    \cs{itshape}  &  Slant  &  Width  &  Delta  \\
    {}  &  &  pt  &  pt  \\
    \midrule
    ABC  &  ---  &  \thewidthof{\itshape\doublealphabet}  &  ---  \\
    ABC hyp  &  ---  &  \thewidthof{\itshape\doublealphabethyp}  &  ---  \\
    %
    ABC  &  0  &
    \thewidthof{\synthslantbox{0}{\itshape\doublealphabet}}  &
    \thewidthdiffof{\abcplainitalic}{\synthslantbox{0}{\itshape\doublealphabet}}  \\
    ABC hyp  &  0  &
    \thewidthof{\synthslantbox{0}{\itshape\doublealphabethyp}}  &
    \thewidthdiffof{\abchypitalic}{\synthslantbox{0}{\itshape\doublealphabethyp}}  \\
    %
    ABC  &  -.1  &
    \thewidthof{\synthslantbox{-.1}{\itshape\doublealphabet}}  &
    \thewidthdiffof{\abcplainitalic}{\synthslantbox{-.1}{\itshape\doublealphabet}}  \\
    ABC hyp  &  -.1  &
    \thewidthof{\synthslantbox{-.1}{\itshape\doublealphabethyp}}  &
    \thewidthdiffof{\abchypitalic}{\synthslantbox{-.1}{\itshape\doublealphabethyp}}  \\
    %
    ABC  &  -.2  &
    \thewidthof{\synthslantbox{-.2}{\itshape\doublealphabet}}  &
    \thewidthdiffof{\abcplainitalic}{\synthslantbox{-.2}{\itshape\doublealphabet}}  \\
    ABC hyp  &  -.2  &
    \thewidthof{\synthslantbox{-.2}{\itshape\doublealphabethyp}}  &
    \thewidthdiffof{\abchypitalic}{\synthslantbox{-.2}{\itshape\doublealphabethyp}}  \\
    %
    ABC  &  -.3  &
    \thewidthof{\synthslantbox{-.3}{\itshape\doublealphabet}}  &
    \thewidthdiffof{\abcplainitalic}{\synthslantbox{-.3}{\itshape\doublealphabet}}  \\
    ABC hyp  &  -.3  &
    \thewidthof{\synthslantbox{-.3}{\itshape\doublealphabethyp}}  &
    \thewidthdiffof{\abchypitalic}{\synthslantbox{-.3}{\itshape\doublealphabethyp}}  \\
    \bottomrule
  \end{tabular}
\end{center}


\subsection{Line Breaking}

Left: plain text,  \\
right: \code{\cs{textsynthslant}\{Show line break\cs{-}ing with a sen\cs{-}tence.\}}

\begin{center}
  \setlength{\overfullrule}{0pt}
  \begin{minipage}[t]{0pt}Show line breaking with a sentence.\end{minipage}%
  \hspace*{100pt}%
  \begin{minipage}[t]{0pt}\textsynthslant{Show line break\-ing with a sen\-tence.}\end{minipage}
\end{center}

\noindent
Left: \code{Schi\cs{discretionary}\{ff-\}\{f\}\{ff\}ahrt},  \\
right: \code{\cs{textsynthslant}\{Schi\cs{discretionary}\{ff-\}\{f\}\{ff\}ahrt\}}

\begin{center}
  \setlength{\overfullrule}{0pt}
  \begin{minipage}[t]{0pt}Schi\discretionary{ff-}{f}{ff}ahrt\end{minipage}%
  \hspace*{100pt}%
  \begin{minipage}[t]{0pt}\textsynthslant{Schi\discretionary{ff-}{f}{ff}ahrt}\end{minipage}
\end{center}


\subsection{Microtype Enhancements}

\ifdefined\SetTracking
  Package \packagename{microtype} loaded.

  Test different trackings in the \code{synthnegslant}~context.

  \begin{center}
    \setlength{\overfullrule}{0pt}
    \newcommand*{\thinvrule}{\rule{.4pt}{.7em}}
    \newcommand{\settracking}[2]
               {\SetTracking[context=synthnegslant,
                             no ligatures={f},
                             outer kerning={0,0},
                             spacing={#2*,,}]
                            {encoding=*, shape=it}
                            {#1}}
    \newcommand*{\smallextratracking}{20}
    \newcommand*{\smallextraspacing}{150}
    \newcommand*{\bigextratracking}{250}
    \newcommand*{\bigextraspacing}{300}
    \begin{tabular}{@{}rrll@{}}
      \toprule
      Tracking  &
      Spacing  &
      \raisebox{-.5\normalbaselineskip}[0pt][0pt]{Sample}  &
      \raisebox{-.5\normalbaselineskip}[0pt][0pt]{Example sentence}  \\
      {\small\generictextfraction{1}{1000}}\:em  &  {\small\generictextfraction{dim}{1000}}  &  &  \\
      \midrule
      0  &  0  &
      \settracking{0}{0}\thinvrule\textsynthuprightitalic{\fontsample}\thinvrule  &
      \settracking{0}{0}\thinvrule\textsynthuprightitalic{\longfontsample}\thinvrule  \\
      \smallextratracking  &  \smallextraspacing  &
      \settracking{\smallextratracking}{\smallextraspacing}%
      \thinvrule\textsynthuprightitalic{\fontsample}\thinvrule  &
      \settracking{\smallextratracking}{\smallextraspacing}%
      \thinvrule\textsynthuprightitalic{\longfontsample}\thinvrule  \\
      \bigextratracking  &  \bigextraspacing  &
      \settracking{\bigextratracking}{\bigextraspacing}%
      \thinvrule\textsynthuprightitalic{\fontsample}\thinvrule  &
      \settracking{\bigextratracking}{\bigextraspacing}%
      \thinvrule\textsynthuprightitalic{\longfontsample}\thinvrule  \\
      \bottomrule
    \end{tabular}
    \settracking{0}{0}% reset extra tracking
  \end{center}

  \noindent All samples are tightly bracketed by thin horizontal rules
  to reveal possible outer spacing problems.
\else
  Package \packagename{microtype} not loaded.
  No Microtype effects to show.
\fi
\end{document}
%</gauge>
%  \fi
%
%
%
%  \iffalse
%<*minimal-test>
\documentclass{minimal}

\usepackage{synthslant}

\begin{document}
\textsynthslant{abc}
\end{document}
%</minimal-test>
%  \fi
%
%
%
\endinput
%
%
%
%%%  Local Variables:
%%%  compile-command: "latex synthslant.dtx"
%%%  fill-column: 96
%%%  End:
