\ProvidesPackage{gandhi}[%
   2022/10/01 (Bob Tennent)  Supports GandhiSerif and GandhiSans fonts for all LaTeX engines. ] 

\RequirePackage{ifxetex,ifluatex,textcomp}

\newif\ifgandhi@otf
\ifxetex
  \gandhi@otftrue
\else\ifluatex
  \gandhi@otftrue
\else  % [pdf]LaTeX
  \gandhi@otffalse
\fi\fi

\newcommand*{\GandhiSerif@scale}{1}  % not adjustable
\newcommand*{\GandhiSans@scale}{1}
\RequirePackage{xkeyval}
\DeclareOptionX{scaled}{\renewcommand*{\GandhiSans@scale}{#1}}
\DeclareOptionX{scale}{\renewcommand*{\GandhiSans@scale}{#1}}

\newif\ifgandhi@rm \gandhi@rmfalse
\newif\ifgandhi@sf \gandhi@sffalse
\newif\ifgandhi@sfdefault \gandhi@sfdefaultfalse
\newif\ifgandhi@lining \gandhi@liningfalse
\newif\ifgandhi@tabular \gandhi@tabularfalse

\DeclareOptionX{sf}{\gandhi@sftrue}
\DeclareOptionX{rm}{\gandhi@rmtrue}
\DeclareOptionX{sfdefault}{\gandhi@sftrue\gandhi@sfdefaulttrue}
\DeclareOptionX{type1}{\gandhi@otffalse}
\DeclareOptionX{osf}{\gandhi@liningfalse}
\DeclareOptionX{oldstyle}{\gandhi@liningfalse}
\DeclareOptionX{lf}{\gandhi@liningtrue}
\DeclareOptionX{lining}{\gandhi@liningtrue}
\DeclareOptionX{proportional}{\gandhi@tabularfalse}
\DeclareOptionX{p}{\gandhi@tabularfalse}
\DeclareOptionX{tabular}{\gandhi@tabulartrue}
\DeclareOptionX{t}{\gandhi@tabulartrue}


\ProcessOptionsX\relax

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

\ifgandhi@rm\else\ifgandhi@sf\else
  \gandhi@rmtrue\gandhi@sftrue  % both false -> both true
\fi\fi

\ifgandhi@otf
  \ifgandhi@lining
    \def\gandhi@figurestyle{Lining}
  \else
    \def\gandhi@figurestyle{OldStyle}
  \fi
  \ifgandhi@tabular
    \def\gandhi@figurealign{Monospaced} 
  \else
    \def\gandhi@figurealign{Proportional} 
  \fi

\else 

  \ifgandhi@lining
    \def\gandhi@figurestyle{LF} 
  \else
    \def\gandhi@figurestyle{OsF} 
  \fi
  \ifgandhi@tabular
    \def\gandhi@figurealign{T} 
  \else
    \def\gandhi@figurealign{} 
  \fi

\fi



% Set main and/or sans fonts:
\ifgandhi@otf
  \defaultfontfeatures{
     Ligatures = TeX ,
     Extension = .otf ,
  }
  \ifgandhi@rm
    \setmainfont
        [ Numbers   = {\gandhi@figurestyle,\gandhi@figurealign},
          UprightFont    = *-Regular ,
          ItalicFont     = *-Italic ,
          BoldFont       = *-Bold , 
          BoldItalicFont = *-BoldItalic ]
        {GandhiSerif}
  \fi
  \ifgandhi@sf
    \setsansfont
        [ Numbers   = {\gandhi@figurestyle,\gandhi@figurealign},
          Scale     = \GandhiSans@scale ,
          UprightFont    = *-Regular ,
          ItalicFont     = *-Italic ,
          BoldFont       = *-Bold , 
          BoldItalicFont = *-BoldItalic ]  
        {GandhiSans}
  \fi
  % grab the \sfdefault in case it changes subsequently:
  \let\gandhisffamily\sfdefault
  \ifgandhi@sfdefault
     \renewcommand*\familydefault{\gandhisffamily}
  \fi

  \newfontfamily\gandhi
      [ Numbers   = {\gandhi@figurestyle,\gandhi@figurealign},
        UprightFont    = *-Regular ,
        ItalicFont     = *-Italic ,
        BoldFont       = *-Bold , 
        BoldItalicFont = *-BoldItalic ]
      {GandhiSerif}
  \newfontfamily\gandhisans
        [ Numbers   = {\gandhi@figurestyle,\gandhi@figurealign},
          Scale     = \GandhiSans@scale ,
          UprightFont    = *-Regular ,
          ItalicFont     = *-Italic ,
          BoldFont       = *-Bold , 
          BoldItalicFont = *-BoldItalic ]  
        {GandhiSans}

\else % type1
  \def\gandhifamily{GandhiSerif-\gandhi@figurealign\gandhi@figurestyle}
  \def\gandhisffamily{GandhiSans-\gandhi@figurealign\gandhi@figurestyle}

  \ifgandhi@rm
    \renewcommand*\rmdefault{\gandhifamily}
  \fi

  \ifgandhi@sf
    \renewcommand*\sfdefault{\gandhisffamily}
  \fi

  \ifgandhi@sfdefault
    \renewcommand*\familydefault{\gandhisffamily}
  \fi
  
  \newcommand*\gandhi{\fontfamily{\gandhifamily}\selectfont}
  \newcommand*\gandhisans{\fontfamily{\gandhisffamily}\selectfont}

\fi

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

\endinput

