\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{atkinson}
    [2022/09/14 (Bob Tennent)  Supports Atkinson Hyperlegible fonts for all LaTeX engines.]

\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}

\newif\ifatkinson@otf 
\ifxetex
  \atkinson@otftrue
\else\ifluatex
  \atkinson@otftrue
\else  % [pdf]LaTeX
  \atkinson@otffalse
\fi\fi

\newif\ifatkinson@tabular \atkinson@tabularfalse
\newif\ifatkinson@default \atkinson@defaultfalse

\newcommand*{\atkinsn@scale}{1}
\DeclareOptionX{scaled}{\renewcommand*{\atkinsn@scale}{#1}}
\DeclareOptionX{scale}{\renewcommand*{\atkinsn@scale}{#1}}

\DeclareOptionX{default}{\atkinson@defaulttrue}
\DeclareOptionX{sfdefault}{\atkinson@defaulttrue}
\DeclareOptionX{type1}{\atkinson@otffalse}
\DeclareOptionX{t}{\atkinson@tabulartrue}
\DeclareOptionX{proportional}{\atkinson@tabularfalse}
\DeclareOptionX{p}{\atkinson@tabularfalse}


\ExecuteOptionsX{proportional}
\ProcessOptionsX\relax

\ifatkinson@otf
  \def\atkinson@boldstyle{Bold}
  \def\atkinson@regstyle{Regular}

\else % type1

  \def\mdseries@sf{m}
  \def\bfseries@sf{b}

\fi

\ifatkinson@otf
  \ifatkinson@tabular
    \def\atkinson@figurealign{Monospaced} 
  \else
    \def\atkinson@figurealign{Proportional} 
  \fi
\else % type1
  \ifatkinson@tabular
    \def\atkinson@figurealign{T}
  \else
    \def\atkinson@figurealign{}
  \fi


\fi


\ifatkinson@otf
  \RequirePackage{fontspec}
\else
  \RequirePackage{fontenc,fontaxes,mweights}
\fi

\ifatkinson@otf
  \def\atkinson@regular{Regular}
  \defaultfontfeatures{
        Ligatures = TeX ,
        Scale     = \atkinsn@scale ,
        Extension = .otf }
    \setsansfont
        [ Numbers = {\atkinson@figurealign},
          UprightFont    = *-\atkinson@regstyle-102 ,
          ItalicFont     = *-\ifx\atkinson@regstyle\atkinson@regular Italic\else\atkinson@regstyle Italic\fi-102,
          BoldFont       = *-\atkinson@boldstyle-102 ,
          BoldItalicFont = *-\atkinson@boldstyle Italic-102 ,
        ]
        {Atkinson-Hyperlegible}
  % grab current family in case of subsequent change:
  \let\atkinsonfamily\sfdefault  
  \ifatkinson@default\renewcommand*\familydefault{\atkinsonfamily}\fi
  \newfontfamily\atkinson
        [ Numbers = {\atkinson@figurealign},
          UprightFont    = *-\atkinson@regstyle-102 ,
          ItalicFont     = *-\ifx\atkinson@regstyle\atkinson@regular Italic\else\atkinson@regstyle Italic\fi-102,
          BoldFont       = *-\atkinson@boldstyle-102 ,
          BoldItalicFont = *-\atkinson@boldstyle Italic-102 ,
        ]
        {Atkinson-Hyperlegible}
    \newfontfamily\atkinsonlf
        [ Numbers = {Proportional},
          UprightFont    = *-\atkinson@regstyle-102 ,
          ItalicFont     = *-\ifx\atkinson@regstyle\atkinson@regular Italic\else\atkinson@regstyle Italic\fi-102,
          BoldFont       = *-\atkinson@boldstyle-102 ,
          BoldItalicFont = *-\atkinson@boldstyle Italic-102 ,
        ]
        {Atkinson-Hyperlegible}
    \newfontfamily\atkinsontlf
        [ Numbers = {Monospaced},
          UprightFont    = *-\atkinson@regstyle-102 ,
          ItalicFont     = *-\ifx\atkinson@regstyle\atkinson@regular Italic\else\atkinson@regstyle Italic\fi-102,
          BoldFont       = *-\atkinson@boldstyle-102 ,
          BoldItalicFont = *-\atkinson@boldstyle Italic-102 ,
        ]
        {Atkinson-Hyperlegible}

\else % type1
  \def\atkinsonfamily{atkinsn-\atkinson@figurealign LF}
  \newcommand*\atkinson{\fontfamily{\atkinsonfamily}\selectfont}
  \def\sfdefault{\atkinsonfamily}
  \ifatkinson@default\edef\familydefault{\sfdefault}\edef\seriesdefault{\mdseries@sf}\fi
  \def\atkinsontlf{\fontfamily{atkinsn-TLF}\selectfont}
  \def\atkinsonlf{\fontfamily{atkinsn-LF}\selectfont}

\fi

\DeclareTextFontCommand{\atkinsonTLF}{\atkinsontlf}
\DeclareTextFontCommand{\atkinsonLF}{\atkinsonlf}

\ifatkinson@otf
  % turn off defaults in case other fonts are selected:
  \defaultfontfeatures{}
\fi

\endinput
