%%
%% This is file `fontaxes.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% fontaxes.dtx  (with options: `package')
%% 
%% Copyright (c) 2007 by Andreas Buehmann
%% Copyright (c) 2020 by Michael Ummels <michael.ummels@rwth-aachen.de>
%% 
%% 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
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is Michael Ummels.
%% 
%% This work consists of the files fontaxes.dtx, fontaxes.ins and
%% the derived files fontaxes.sty, test-fontaxes.tex and fontaxes.pdf.
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fontaxes}[2020/07/21 v1.0e Font selection axes]
\DeclareRobustCommand\upshape{\not@math@alphabet\upshape\relax
  \fontprimaryshape\updefault\selectfont}
\DeclareRobustCommand\itshape{\not@math@alphabet\itshape\mathit
  \fontprimaryshape\itdefault\selectfont}
\DeclareRobustCommand\slshape{\not@math@alphabet\slshape\relax
  \fontprimaryshape\sldefault\selectfont}
\DeclareRobustCommand\swshape{\not@math@alphabet\swshape\relax
  \fontprimaryshape\swdefault\selectfont}
\DeclareRobustCommand\scshape{\not@math@alphabet\scshape\relax
  \fontsecondaryshape\scdefault\selectfont}
\DeclareRobustCommand\sscshape{\not@math@alphabet\sscshape\relax
  \fontsecondaryshape\sscdefault\selectfont}
\DeclareRobustCommand\ulcshape{\not@math@alphabet\ulcshape\relax
  \fontsecondaryshape\ulcdefault\selectfont}
\let\noscshape\ulcshape
\providecommand\swdefault{sw}
\providecommand\ulcdefault{ulc}
\providecommand\sscdefault{ssc}
\DeclareTextFontCommand{\textsw}{\swshape}
\DeclareTextFontCommand{\textssc}{\sscshape}
\DeclareTextFontCommand{\textulc}{\ulcshape}
\def\txfigures{\@nomath\txfigures
  \fontfigurestyle{text}\selectfont}
\def\lnfigures{\@nomath\lnfigures
  \fontfigurestyle{lining}\selectfont}
\def\tbfigures{\@nomath\tbfigures
  \fontfigurealignment{tabular}\selectfont}
\def\prfigures{\@nomath\prfigures
   \fontfigurealignment{proportional}\selectfont}
\newcommand\fontaxes@fv@prefix{fontaxes@fv@switch@}
\newcommand*\fontaxes@fv@newoption[1]%
  {\expandafter\newcommand\csname\fontaxes@fv@prefix #1\endcsname}
\fontaxes@fv@newoption{text}{\txfigures}
\fontaxes@fv@newoption{osf}{\txfigures}
\fontaxes@fv@newoption{lining}{\lnfigures}
\fontaxes@fv@newoption{lf}{\lnfigures}
\fontaxes@fv@newoption{tabular}{\tbfigures\tabularmath}
\fontaxes@fv@newoption{tab}{\tbfigures\tabularmath}
\fontaxes@fv@newoption{proportional}{\prfigures\proportionalmath}
\fontaxes@fv@newoption{prop}{\prfigures\proportionalmath}
\newcommand\fontaxes@fv@list{}
\newcommand\fontaxes@fv{}
\DeclareRobustCommand*\figureversion[1]{%
  \edef\fontaxes@fv@list{\zap@space#1 \@empty}%
  \@for\fontaxes@fv:=\fontaxes@fv@list\do{%
    \@ifundefined{\fontaxes@fv@prefix\fontaxes@fv}{%
      \PackageWarning{fontaxes}%
      {Unknown figure style `\fontaxes@fv'\MessageBreak
       specified as the argument to \string\figureversion.\MessageBreak
       Figure style not changed}%
    }{%
      \@nameuse{\fontaxes@fv@prefix\fontaxes@fv}%
    }%
  }%
}
\DeclareTextFontCommand{\textfigures}{\txfigures}
\DeclareTextFontCommand{\liningfigures}{\lnfigures}
\DeclareTextFontCommand{\tabularfigures}{\tbfigures\tabularmath}
\DeclareTextFontCommand{\proportionalfigures}
  {\prfigures\proportionalmath}
\def\boldmath{\@nomath\boldmath
  \mathweight{bold}}
\def\unboldmath{\@nomath\unboldmath
  \mathweight{normal}}
\def\tabularmath{\@nomath\tabularmath
  \mathfigurealignment{tabular}}
\def\proportionalmath{\@nomath\proportionalmath
  \mathfigurealignment{proportional}}
\DeclareRobustCommand\mathweight[1]{%
  \fontaxes@get@math\edef\fontaxes@math@weight{#1}\fontaxes@set@math}
\DeclareRobustCommand\mathfigurealignment[1]{%
  \fontaxes@get@math\edef\fontaxes@math@align{#1}\fontaxes@set@math}
\DeclareRobustCommand\fontfigurestyle[1]{%
  \fontaxes@get@family\edef\fontaxes@figure@style{#1}\fontaxes@set@family}
\DeclareRobustCommand\fontfigurealignment[1]{%
  \fontaxes@get@family\edef\fontaxes@figure@align{#1}\fontaxes@set@family}
\DeclareRobustCommand\fontbasefamily[1]{%
  \fontaxes@get@family\edef\fontaxes@family@base{#1}\fontaxes@set@family}
\DeclareRobustCommand\fontprimaryshape[1]{%
  \fontaxes@get@shape\edef\fontaxes@shape@one{#1}\fontaxes@set@shape}
\DeclareRobustCommand\fontsecondaryshape[1]{%
  \fontaxes@get@shape\edef\fontaxes@shape@two{#1}\fontaxes@set@shape}
\AtBeginDocument{
  \@ifpackageloaded{hyperref}{%
    \pdfstringdefDisableCommands{%
      \let\fontprimaryshape\@gobble
      \let\fontsecondaryshape\@gobble
      \let\fontfigurestyle\@gobble
      \let\fontfigurealignment\@gobble
      \let\fontbasefamily\@gobble
      \let\textfigures\@firstofone
      \let\liningfigures\@firstofone
      \let\tabularfigures\@firstofone
      \let\proportionalfigures\@firstofone
      \let\textsw\@firstofone
      \let\textssc\@firstofone
      \let\textulc\@firstofone
    }%
  }{}%
}
\newcommand*\fontaxes@math@weight{normal}
\newcommand*\fontaxes@math@align{proportional}
\newcommand*\fontaxes@family@base{cmr}
\newcommand*\fontaxes@figure@style{lining}
\newcommand*\fontaxes@figure@align{proportional}
\newcommand*\fontaxes@shape@one{n}
\newcommand*\fontaxes@shape@two{ulc}
\newcommand*\fontaxes@set@math{%
  \fontaxes@encode@math
  \mathversion{\fontaxes@code}%
  \fontaxes@save\math@version}
\newcommand*\fontaxes@set@family{%
  \fontaxes@encode@family
  \fontfamily{\fontaxes@code}%
  \fontaxes@save\f@family}
\newcommand*\fontaxes@set@shape{%
  \fontaxes@encode@shape
  \fontshape{\fontaxes@code}%
  \fontaxes@save\f@shape}
\newcommand*\fontaxes@get@math{%
  \iffontaxes@changed\math@version{%
    \fontaxes@decode@{math}{\math@version}%
    \ifx\fontaxes@edoc\relax\else
      \edef\fontaxes@math@weight{\expandafter\@firstoftwo\fontaxes@edoc}%
      \edef\fontaxes@math@align{\expandafter\@secondoftwo\fontaxes@edoc}%
    \fi
    \fontaxes@save\math@version
  }{}%
}
\newcommand*\fontaxes@get@family{%
  \iffontaxes@changed\f@family{%
    \let\fontaxes@edoc\relax
    \expandafter\fontaxes@split@family\f@family--\@nnil
    \ifx\fontaxes@split@suffix\relax\else
      \fontaxes@decode@{figures}{\fontaxes@split@suffix}%
    \fi
    \ifx\fontaxes@edoc\relax
      \expandafter\fontaxes@split@familyalt\f@family
        \@empty\@empty\@empty\@empty\@nnil
      \ifx\fontaxes@split@suffix\relax\else
        \fontaxes@decode@{figuresalt}{\fontaxes@split@suffix}%
      \fi
      \ifx\fontaxes@edoc\relax
        \fontaxes@warn@undecodable{family `\f@family'}%
        \edef\fontaxes@family@base{\f@family}%
      \else
        \edef\fontaxes@family@base{\fontaxes@split@prefix}%
        \edef\fontaxes@figure@style{\expandafter\@firstoftwo\fontaxes@edoc}%
      \fi
    \else
      \edef\fontaxes@family@base{\fontaxes@split@prefix}%
      \edef\fontaxes@figure@style{\expandafter\@firstoftwo\fontaxes@edoc}%
      \edef\fontaxes@figure@align{\expandafter\@secondoftwo\fontaxes@edoc}%
    \fi
  }{}%
}
\newcommand*\fontaxes@get@shape{%
  \iffontaxes@changed\f@shape{%
    \fontaxes@decode@{shape}{\f@shape}%
    \ifx\fontaxes@edoc\relax\else
      \edef\fontaxes@shape@one{\expandafter\@firstoftwo\fontaxes@edoc}%
      \edef\fontaxes@shape@two{\expandafter\@secondoftwo\fontaxes@edoc}%
    \fi
    \fontaxes@save\f@shape
  }{}%
}
\newcommand*\fontaxes@encode@math{%
  \fontaxes@encode@{math}{{\fontaxes@math@weight}{\fontaxes@math@align}}%
}
\newcommand*\fontaxes@encode@math@default{%
  \edef\fontaxes@code{\fontaxes@math@weight\fontaxes@math@align}}
\newcommand*\fontaxes@encode@family{%
  \fontaxes@encode@{family}
    {{\fontaxes@family@base}{\fontaxes@figure@style}{\fontaxes@figure@align}}%
}
\newcommand*\fontaxes@encode@family@default{%
  \fontaxes@encode@figures
  \edef\fontaxes@code{\fontaxes@family@base-\fontaxes@code}%
  \fontaxes@check@family\fontaxes@code
  \iffontaxes@exists\else
    \edef\fontaxes@code{\fontaxes@family@base-LF}%
    \fontaxes@check@family\fontaxes@code
    \iffontaxes@exists\else
      \fontaxes@encode@figuresalt
      \edef\fontaxes@code{\fontaxes@family@base\fontaxes@code}%
      \fontaxes@check@family\fontaxes@code
      \iffontaxes@exists\else
        \edef\fontaxes@code{\fontaxes@family@base}%
      \fi
    \fi
  \fi
}
\newcommand*\fontaxes@encode@figures{%
  \fontaxes@encode@{figures}{{\fontaxes@figure@style}{\fontaxes@figure@align}}%
}
\newcommand*\fontaxes@encode@figures@default{%
  \edef\fontaxes@code{OsF}%
  \PackageWarning{fontaxes}{Unknown figure version
    `\fontaxes@figure@style\space + \fontaxes@figure@align'\MessageBreak
    Encoding to `\fontaxes@code'}%
}
\newcommand*\fontaxes@encode@figuresalt{%
  \fontaxes@encode@{figuresalt}{{\fontaxes@figure@style}{\fontaxes@figure@align}}%
}
\newcommand*\fontaxes@encode@figuresalt@default{%
  \PackageWarning{fontaxes}{Unknown figure version
    `\fontaxes@figure@style\space + \fontaxes@figure@align'\MessageBreak
    Encoding to `\fontaxes@code'}%
  \edef\fontaxes@code{j}%
}
\newcommand*\fontaxes@encode@shape{%
  \fontaxes@encode@{shape}{{\fontaxes@shape@one}{\fontaxes@shape@two}}%
}
\newcommand*\fontaxes@encode@shape@default{%
  \edef\fontaxes@code{\fontaxes@shape@two\fontaxes@shape@one}%
}
\newcommand*\fontaxes@encode@[2]{%
  \@ifundefined{fontaxes@encode@#1#2}
    {\@nameuse{fontaxes@encode@#1@default}}
    {\edef\fontaxes@code{\@nameuse{fontaxes@encode@#1#2}}}%
}
\newcommand*\fontaxes@naming@exception[3]{%
  \expandafter\edef\csname fontaxes@encode@#1#2\endcsname{#3}%
}
\let\fa@naming@exception\fontaxes@naming@exception
\fontaxes@naming@exception{shape}{{n}{ulc}}{n}
\fontaxes@naming@exception{shape}{{n}{sc}}{sc}
\fontaxes@naming@exception{shape}{{n}{ssc}}{ssc}
\fontaxes@naming@exception{shape}{{it}{ulc}}{it}
\fontaxes@naming@exception{shape}{{sl}{ulc}}{sl}
\fontaxes@naming@exception{shape}{{sw}{ulc}}{sw}
\fontaxes@naming@exception{math}{{normal}{proportional}}{normal}
\fontaxes@naming@exception{math}{{normal}{tabular}}{tabular}
\fontaxes@naming@exception{math}{{bold}{proportional}}{bold}
\fontaxes@naming@exception{figures}{{text}{proportional}}{OsF}
\fontaxes@naming@exception{figures}{{text}{tabular}}{TOsF}
\fontaxes@naming@exception{figures}{{lining}{proportional}}{LF}
\fontaxes@naming@exception{figures}{{lining}{tabular}}{TLF}
\fontaxes@naming@exception{figuresalt}{{text}{proportional}}{j}
\fontaxes@naming@exception{figuresalt}{{text}{tabular}}{j}
\fontaxes@naming@exception{figuresalt}{{lining}{proportional}}{x}
\fontaxes@naming@exception{figuresalt}{{lining}{tabular}}{x}
\newcommand*\fontaxes@figure@style@domain{text,lining}
\newcommand*\fontaxes@figure@align@domain{proportional,tabular}
\newcommand*\fontaxes@shape@one@domain{n,it,sl,sw}
\newcommand*\fontaxes@shape@two@domain{ulc,sc,ssc}
\newcommand*\fontaxes@math@weight@domain{normal,bold}
\newcommand*\fontaxes@math@align@domain{proportional,tabular}
\newcommand*\fontaxes@create@decode@table[2]{%
  \begingroup
  \fontaxes@foreach{#2}{%
    \@nameuse{fontaxes@encode@#1}%
    \global\expandafter
    \edef\csname fontaxes@decode@#1{\fontaxes@code}\endcsname{#2}%
  }%
  \endgroup
}
\AtEndOfPackage{
  \fontaxes@create@decode@table{figures}
    {{\fontaxes@figure@style}{\fontaxes@figure@align}}
  \fontaxes@create@decode@table{figuresalt}
    {{\fontaxes@figure@style}{\fontaxes@figure@align}}
  \fontaxes@create@decode@table{shape}
    {{\fontaxes@shape@one}{\fontaxes@shape@two}}
  \fontaxes@create@decode@table{math}
    {{\fontaxes@math@weight}{\fontaxes@math@align}}
}
\newcommand*\fontaxes@warn@undecodable[1]{%
  \PackageWarning{fontaxes}{I don't know how to decode\MessageBreak #1}}
\newcommand*\fontaxes@decode@[2]{%
  \@ifundefined{fontaxes@decode@#1{#2}}{%
    \let\fontaxes@edoc\relax
    \fontaxes@warn@undecodable{#1 `#2'}%
  }{\edef\fontaxes@edoc{\@nameuse{fontaxes@decode@#1{#2}}}}%
}
\newcommand*\iffontaxes@changed[1]{%
  \expandafter\ifx\csname fontaxes@last@\string#1\endcsname#1%
    \expandafter\@secondoftwo
  \else
    \expandafter\@firstoftwo
  \fi
}
\newcommand*\fontaxes@save[1]{%
  \expandafter\let\csname fontaxes@last@\string#1\endcsname#1%
}
\newcommand*\fontaxes@provide@mv@copy[2]{%
  \@ifundefined{mv@#1}{%
    \DeclareMathVersion{#1}%
    \expandafter\let\csname mv@#1\expandafter\endcsname
      \csname mv@#2\endcsname
  }{}%
}
\AtBeginDocument{%
  \fontaxes@provide@mv@copy{tabular}{normal}%
  \fontaxes@provide@mv@copy{boldtabular}{bold}%
}
\newif\iffontaxes@exists
\newcommand*\fontaxes@check@family[1]{%
  \begingroup
  \fontfamily{#1}\try@load@fontshape
  \expandafter
  \ifx\csname\curr@fontshape\endcsname\relax
    \aftergroup\fontaxes@existsfalse
  \else
    \aftergroup\fontaxes@existstrue
  \fi
  \endgroup
}
\newcommand*\fontaxes@split@prefix{}
\newcommand*\fontaxes@split@suffix{}
\newcommand*\fontaxes@split@family{}
\def\fontaxes@split@family#1-#2-#3\@nnil{%
  \let\fontaxes@split@prefix\relax
  \let\fontaxes@split@suffix\relax
  \def\@tempa{#3}%
  \ifx\@tempa\@empty\else
    \def\fontaxes@split@suffix{#2}%
    \ifx\fontaxes@split@suffix\@empty
      \let\fontaxes@split@suffix\relax
    \else
      \def\fontaxes@split@prefix{#1}%
    \fi
  \fi
}
\newcommand*\fontaxes@split@familyalt{}
\def\fontaxes@split@familyalt#1#2#3#4#5\@nnil{%
  \let\fontaxes@split@prefix\relax
  \let\fontaxes@split@suffix\relax
  \edef\@tempa{#5}%
  \ifx\@tempa\@empty
    \ifx\@empty#4%
      \def\fontaxes@split@prefix{#1#2#3}%
      \def\fontaxes@split@suffix{x}%
    \else
      \def\fontaxes@split@prefix{#1#2#3}%
      \def\fontaxes@split@suffix{#4}%
    \fi
  \fi
}
\newcommand\fontaxes@foreach[2]{%
  \begingroup
  \def\fontaxes@foreach@{#2}%
  \@tfor\@tempa:=#1\do{%
    \@temptokena\expandafter{\fontaxes@foreach@}%
    \edef\fontaxes@foreach@{%
      \noexpand\@for
      \expandafter\noexpand\@tempa:=%
      \expandafter\noexpand\csname
        \expandafter\expandafter
        \expandafter\@gobble
        \expandafter\string\@tempa
        @domain%
      \endcsname
      \noexpand\do{\the\@temptokena}%
    }%
  }%
  \expandafter\endgroup\fontaxes@foreach@
}
%% 
%%
%% End of file `fontaxes.sty'.