%\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fontsetup}[Easy font setup by Antonis Tsolomitis]
\typeout{fontsetup: Easy font setup by Antonis Tsolomitis}

\RequirePackage{fontspec}

\@ifpackageloaded{xgreek}{%
\newcommand\leftgrquotes{\char"201C}%
\newcommand\rightgrquotes{\char"201E}%
\defaultfontfeatures+{CharacterVariant=4}%
}{}


\chardef\fontsetupdefault=0 %
\chardef\fontsetupgfsartemisia=1
\chardef\fontsetupgfsdidot=2
\chardef\fontsetupgfsdidotclassic=3
\chardef\fontsetupgfsneohellenic=4
\chardef\fontsetupcambria=5 %install cambria as a system font. cambria.ttc, cambriai.ttf, cambriab.ttf, cambriaz.ttf
\chardef\fontsetuplucida=6 %install in TeX tree
\chardef\fontsetupkerkis=7
\chardef\fontsetupfira=8 
\chardef\fontsetuptimes=9
\chardef\fontsetuppalatino=10 %install Linotype Palatino as a System font. Files pala.ttf palai, palab, palabi. Install fspPalatinoGreekSmallCaps as a System font.
\chardef\fontsetupstixtwo=11
\chardef\fontsetupneokadmus=12
\chardef\fontsetupmsgaramond=13 %install Microsoft Garamond as a System font. Gara.TTF, Garai, Garabd
\chardef\fontsetupebgaramond=14
\chardef\fontsetupminion=15 % Install MinionPro and provided fspMinionGreekSmallCaps as a system font.
\chardef\fontsetupeuler=16
\chardef\fontsetuplibertinus=17
\chardef\fontsetupolddefault=18 % old (thin) CMR
\chardef\fontsetupconcrete=19
\chardef\fontsetuptalos=20
\chardef\fontsetupoldstandard=21
\chardef\fontsetupxcharter=22
\chardef\fontsetuperewhon=23

\chardef\fontsetupfont\fontsetupdefault
\DeclareOption{default}{\chardef\fontsetupfont\fontsetupdefault}
\DeclareOption{gfsartemisia}{\chardef\fontsetupfont\fontsetupgfsartemisia}
\DeclareOption{gfsdidot}{\chardef\fontsetupfont\fontsetupgfsdidot}
\DeclareOption{gfsdidotclassic}{\chardef\fontsetupfont\fontsetupgfsdidotclassic}
\DeclareOption{gfsneohellenic}{\chardef\fontsetupfont\fontsetupgfsneohellenic}
\DeclareOption{cambria}{\chardef\fontsetupfont\fontsetupcambria}
\DeclareOption{lucida}{\chardef\fontsetupfont\fontsetuplucida}
\DeclareOption{kerkis}{\chardef\fontsetupfont\fontsetupkerkis}
\DeclareOption{fira}{\chardef\fontsetupfont\fontsetupfira}
\DeclareOption{times}{\chardef\fontsetupfont\fontsetuptimes}
\DeclareOption{palatino}{\chardef\fontsetupfont\fontsetuppalatino}
\DeclareOption{stixtwo}{\chardef\fontsetupfont\fontsetupstixtwo}
\DeclareOption{neokadmus}{\chardef\fontsetupfont\fontsetupneokadmus}
\DeclareOption{msgaramond}{\chardef\fontsetupfont\fontsetupmsgaramond}
\DeclareOption{ebgaramond}{\chardef\fontsetupfont\fontsetupebgaramond}
\DeclareOption{minion}{\chardef\fontsetupfont\fontsetupminion}
\DeclareOption{euler}{\chardef\fontsetupfont\fontsetupeuler}
\DeclareOption{neoeuler}{\chardef\fontsetupfont\fontsetupeuler} %compatibility
\DeclareOption{libertinus}{\chardef\fontsetupfont\fontsetuplibertinus}
\DeclareOption{olddefault}{\chardef\fontsetupfont\fontsetupolddefault}
\DeclareOption{concrete}{\chardef\fontsetupfont\fontsetupconcrete}
\DeclareOption{talos}{\chardef\fontsetupfont\fontsetuptalos}
\DeclareOption{oldstandard}{\chardef\fontsetupfont\fontsetupoldstandard}
\DeclareOption{xcharter}{\chardef\fontsetupfont\fontsetupxcharter}
\DeclareOption{erewhon}{\chardef\fontsetupfont\fontsetuperewhon}
\DeclareOption*{\PackageWarning{fontsetup}{Unknown ‘\CurrentOption’}}
%
\newif\if@upint
\DeclareOption{upint}{\@upinttrue}
%
\newif\if@varnothing
\DeclareOption{varnothing}{\@varnothingtrue}
%
\ProcessOptions

%provide a test to know if a 16bits TeX is used.
\RequirePackage{ifthen}
\RequirePackage{iftex}
\newboolean{TeXUnicode}
\ifXeTeX
   \setboolean{TeXUnicode}{true}
\fi
\ifLuaTeX  
   \setboolean{TeXUnicode}{true}
\fi



\ifthenelse{\boolean{TeXUnicode}}{%
  %The user runs unicode engine
  \ifcase\fontsetupfont
  \RequirePackage{fspdefault}
%
\if@upint
   \if@varnothing
   \setmathfont[StylisticSet=2,CharacterVariant=1]{NewCMMath-Book.otf}
   \else
   \setmathfont[StylisticSet=2]{NewCMMath-Book.otf}
   \fi
\else
   \if@varnothing
   \setmathfont[CharacterVariant=1]{NewCMMath-Book.otf}
   \else
   \setmathfont{NewCMMath-Book.otf}
   \fi
\fi
%
  \or
  \RequirePackage{fspgfsartemisiaot}
\or
  \RequirePackage{fspgfsdidotot}
\or
  \RequirePackage{fspgfsdidotclassicot}
\or
  \RequirePackage{fspgfsneohellenicot}
\or
  \RequirePackage{fspcambria}
\or
   \RequirePackage{fsplucidaot}
%   \RequirePackage[usefilenames]{lucida-otf} %for some reason it fails
\or
  \RequirePackage{fspkerkisot}
\or
  \RequirePackage{fspfiraot}
\or
  \RequirePackage{fsptimesot}
\or
  \RequirePackage{fsppalatinoot}
\or
  \RequirePackage{fspstixtwoot}
\or
  \RequirePackage{neokadmus}
\or
  \RequirePackage{fspmsgaramondot}
\or
  \RequirePackage{fspebgaramondot}
\or
  \RequirePackage{fspminion}
\or
  \RequirePackage{fspeulerot}
\or
  \RequirePackage{libertinus-otf}
\or
  \RequirePackage{fspolddefault}
\if@upint
   \if@varnothing
   \setmathfont[StylisticSet=2,CharacterVariant=1]{NewCMMath-Book.otf}
   \else
   \setmathfont[StylisticSet=2]{NewCMMath-Regular.otf}
   \fi
\else
   \if@varnothing
   \setmathfont[CharacterVariant=1]{NewCMMath-Book.otf}
   \else
   \setmathfont{NewCMMath-Regular.otf}
   \fi
\fi
\or
  \RequirePackage{fspconcrete}
\or
  \RequirePackage{fsptalos}
\or
\RequirePackage{fspoldstandard}
\or
\RequirePackage{fspxcharter}
\if@upint
    \setmathfont[StylisticSet=3]{XCharter-Math.otf}
\else
    \relax
\fi
\or
\RequirePackage{fsperewhon}
%%%
%
%%%
  \fi
}{%the user runs 8bit engine
\relax}



\endinput

