\NeedsTeXFormat{LaTeX2e}[2022/06/01] \def\fileversion{0.75} \def\filedate{2026-08-27} \ProvidesPackage{fourier-otf}[\filedate\space\fileversion] % Ensure luatex or xetex engine \RequirePackage{iftex}[2019/10/24] \RequireTUTeX \newtoks\FOTtoksT \newtoks\FOTtoksM \newcommand*{\Store@KV@Option}[2]{% \FOTtoksM=\expandafter{\the\FOTtoksM #1={#2},} \def\FOT@opt{#1}% \def\FOT@fullos{Numbers}% \def\FOT@scale{Scale}% \ifx\FOT@opt\FOT@fullos \FOTtoksT=\expandafter{\the\FOTtoksT Numbers=OldStyle,}% \fi \ifx\FOT@opt\FOT@scale \FOTtoksT=\expandafter{\the\FOTtoksT Scale={#2},}% \fi } % \RequirePackage{fourier-orns} % checks \Store@KV@Option availability. % % Package options \DeclareKeys { lum.if = FOT@lum , no-text.if = FOT@notext , no-logos.if = FOT@nologos , fakedscripts.if = FOT@fakedscripts , tight.if = FOT@tight , loose.code = \FOT@tightfalse , fulloldstyle.code = \Store@KV@Option{Numbers}{OldStyle} , math-style.code = \Store@KV@Option{math-style}{#1} , bold-style.code = \Store@KV@Option{bold-style}{#1} , nabla.code = \Store@KV@Option{nabla}{#1} , partial.code = \Store@KV@Option{partial}{#1} , CharacterVariant.code = \Store@KV@Option{CharacterVariant}{#1} , StylisticSet.code = \Store@KV@Option{StylisticSet}{#1} , Style.code = \Store@KV@Option{Style}{#1} , Scale.code = \Store@KV@Option{Scale}{#1} } % \FOT@tighttrue \ProcessKeyOptions % \ifxetex \RequirePackage{unicode-math} \FOT@lumfalse\fi \ifluatex \ifFOT@lum \RequirePackage{fontspec, lua-unicode-math} \else \RequirePackage{unicode-math} \fi \fi % \newopentypefeature{Style}{mathcal}{+ss01} \newopentypefeature{Style}{upint}{+ss03} \newopentypefeature{Style}{leqslant}{+ss04} \newopentypefeature{Style}{smaller}{+ss05} \newopentypefeature{Style}{subsetneq}{+ss06} \newopentypefeature{Style}{parallelslant}{+ss07} \newopentypefeature{Style}{smalldelim}{+ss09} % % Math fonts: Erewhon-Math.otf. No Family name for XeLaTEX! % Following Joseph Wright in https://tex.stackexchange.com/questions/451 \Store@KV@Option{BoldFont}{Erewhon-Math-Bold.otf} \begingroup \edef\temp{% \endgroup \noexpand\setmathfont{Erewhon-Math.otf}% [\unexpanded\expandafter{\the\FOTtoksM}]% } \temp % \ifFOT@tight \thinmuskip=2mu \medmuskip=2.5mu plus 1mu minus 2.5mu \thickmuskip=3.5mu plus 2.5mu \fi % % Text Serif fonts: erewhon with possible scaling and true superscripts. \ifFOT@notext % For Maths operators (use Erewhon text fonts). \begingroup \edef\temp{% \endgroup \noexpand\setmathrm{Erewhon-Regular.otf}% [\unexpanded\expandafter{\the\FOTScale}]% } \temp \else \ifFOT@fakedscripts\else \RequirePackage{realscripts}\fi \setmainfont{erewhon}[\unexpanded\expandafter{\the\FOTtoksT}] % Fine tune TeX logos for the Erewhon fonts \ifFOT@nologos \else \DeclareRobustCommand{\TeX}{T\kern -.15em\lower .4ex \hbox{E}\kern -.05emX\@} \DeclareRobustCommand{\LaTeX}{L\kern -.25em \raisebox{.38ex}{\textsc{a}}\kern -.1em\TeX} \DeclareRobustCommand{\LaTeXe}{\LaTeX \kern .05em2\raisebox{-.35ex}{\char"03B5}} \fi \fi % Enable FourierOrns font with possible scaling. \providecommand{\FourierOrns}{\relax} % compatibility with fourier-orns v2.2 \renewfontfamily\FourierOrns{FourierOrns-Regular.otf}[ BoldFont = FourierOrns-Regular.otf , ItalicFont = FourierOrns-Regular.otf , BoldItalicFont = FourierOrns-Regular.otf ] % Text Sans Serif fonts: default (lmss unless specified) % Text Typewriter fonts: default (lmtt unless specified) % % For AMS symbols with lua-unicode-math. \ifFOT@lum \RequirePackage{amssymb} \fi % Missing Math symbols definitions \newcount\FOT@fam \AtBeginDocument{% \ifluatex \FOT@fam=\Umathcharfam"30 \fi % For both unicode-math and lua-unicode-math: % Avoid (way too thin) AMS symbols for the next seven chars. \protected\def\thicksim{\sim}% \protected\def\thickapprox{\approx}% \protected\def\smallfrown{\frown}% \protected\def\smallsmile{\smile}% % \Umathchardef\ = % : \mathord=0 \mathbin=2 \mathrel=3 ; \Umathchardef\setminus = 3 \the\FOT@fam "2216 \relax \Umathchardef\circledR = 0 \the\FOT@fam "24C7 \relax \Umathchardef\circledS = 0 \the\FOT@fam "24C8 \relax % Fourier specific math \Umathchardef\mupvarzero = 0 \the\FOT@fam "E000 \relax \Umathchardef\varemptyset = 0 \the\FOT@fam "E001 \relax \Umathchardef\simlessslant = 3 \the\FOT@fam "E009 \relax \Umathchardef\simgtrslant = 3 \the\FOT@fam "E00A \relax \Umathchardef\smteslant = 3 \the\FOT@fam "E00B \relax \Umathchardef\lateslant = 3 \the\FOT@fam "E00C \relax \Umathchardef\varsubsetneq = 3 \the\FOT@fam "E010 \relax \Umathchardef\varsupsetneq = 3 \the\FOT@fam "E011 \relax \Umathchardef\varsubsetneqq = 3 \the\FOT@fam "E012 \relax \Umathchardef\varsupsetneqq = 3 \the\FOT@fam "E013 \relax \Umathchardef\lesseqslantgtr = 3 \the\FOT@fam "E014 \relax \Umathchardef\gtreqslantless = 3 \the\FOT@fam "E015 \relax \Umathchardef\lesseqqslantgtr = 3 \the\FOT@fam "E016 \relax \Umathchardef\gtreqqslantless = 3 \the\FOT@fam "E017 \relax \Umathchardef\lesssimslant = 3 \the\FOT@fam "E019 \relax \Umathchardef\gtrsimslant = 3 \the\FOT@fam "E01A \relax \Umathchardef\lvertneqq = 3 \the\FOT@fam "E01B \relax \Umathchardef\gvertneqq = 3 \the\FOT@fam "E01C \relax \Umathchardef\Bbbbackslash = 0 \the\FOT@fam "E020 \relax \Umathchardef\mbfvarzero = 0 \the\FOT@fam "E023 \relax \Umathchardef\varpropto = 3 \the\FOT@fam "E028 \relax \Umathchardef\mupvarpartial = 0 \the\FOT@fam "E030 \relax \Umathchardef\mupvarvarpi = 0 \the\FOT@fam "E032 \relax \Umathchardef\mbfvarpartial = 0 \the\FOT@fam "E040 \relax \Umathchardef\mbfvarvarrho = 0 \the\FOT@fam "E041 \relax \Umathchardef\mbfvarvarpi = 0 \the\FOT@fam "E042 \relax \Umathchardef\mbfvec = 0 \the\FOT@fam "E044 \relax \Umathchardef\mbfwp = 0 \the\FOT@fam "E045 \relax \Umathchardef\mbfdotlessi = 0 \the\FOT@fam "E046 \relax \Umathchardef\mbfdotlessj = 0 \the\FOT@fam "E047 \relax \Umathchardef\mbfhbar = 0 \the\FOT@fam "E048 \relax \Umathchardef\mbfell = 0 \the\FOT@fam "E049 \relax \Umathchardef\mbftriangleleft = 0 \the\FOT@fam "E04E \relax \Umathchardef\mbftriangleright = 0 \the\FOT@fam "E04F \relax \Umathchardef\mbfitvarpartial = 0 \the\FOT@fam "E060 \relax \Umathchardef\mbfitvarvarrho = 0 \the\FOT@fam "E061 \relax \Umathchardef\mbfitvarvarpi = 0 \the\FOT@fam "E062 \relax \Umathchardef\mbfitwp = 0 \the\FOT@fam "E065 \relax \Umathchardef\mbfimath = 0 \the\FOT@fam "E066 \relax \Umathchardef\mbfjmath = 0 \the\FOT@fam "E067 \relax \Umathchardef\mbfithbar = 0 \the\FOT@fam "E068 \relax \Umathchardef\mitvarpartial = 0 \the\FOT@fam "E070 \relax \Umathchardef\mitvarvarrho = 0 \the\FOT@fam "E071 \relax \Umathchardef\mitvarvarpi = 0 \the\FOT@fam "E072 \relax \Umathchardef\mithbar = 0 \the\FOT@fam "E078 \relax \Umathchardef\varsymscrE = 0 \the\FOT@fam "E07D \relax \Umathchardef\varsymscrQ = 0 \the\FOT@fam "E07E \relax \Umathchardef\varsymscrT = 0 \the\FOT@fam "E07F \relax \Umathchardef\varsymbfscrE = 0 \the\FOT@fam "E06D \relax \Umathchardef\varsymbfscrQ = 0 \the\FOT@fam "E06E \relax \Umathchardef\varsymbfscrT = 0 \the\FOT@fam "E06F \relax \Umathchardef\mapstochar = 3 \the\FOT@fam "E08D \relax \Umathchardef\lhook = 3 \the\FOT@fam "E08E \relax \Umathchardef\rhook = 3 \the\FOT@fam "E08F \relax \Umathchardef\parallelslant = 3 \the\FOT@fam "E090 \relax \Umathchardef\nparallelslant = 3 \the\FOT@fam "E091 \relax \Umathchardef\shortparallelslant = 3 \the\FOT@fam "E092 \relax \Umathchardef\nshortparallelslant = 3 \the\FOT@fam "E093 \relax \Umathchardef\nleqqslant = 3 \the\FOT@fam "E098 \relax \Umathchardef\ngeqqslant = 3 \the\FOT@fam "E099 \relax \Umathchardef\npreceq = 3 \the\FOT@fam "E09E \relax \Umathchardef\nsucceq = 3 \the\FOT@fam "E09F \relax \Umathchardef\smallsetminus = 2 \the\FOT@fam "E0A0 \relax \Umathchardef\shortmid = 3 \the\FOT@fam "E0A2 \relax \Umathchardef\shortparallel = 3 \the\FOT@fam "E0A3 \relax \Umathchardef\nshortmid = 3 \the\FOT@fam "E0A4 \relax \Umathchardef\nshortparallel = 3 \the\FOT@fam "E0A5\relax \Umathchardef\nleqslant = 3 \the\FOT@fam "E0A8 \relax \Umathchardef\ngeqslant = 3 \the\FOT@fam "E0A9 \relax \Umathchardef\nleqq = 3 \the\FOT@fam "E0AA \relax \Umathchardef\ngeqq = 3 \the\FOT@fam "E0AB \relax \Umathchardef\nsubseteqq = 3 \the\FOT@fam "E0AE \relax \Umathchardef\nsupseteqq = 3 \the\FOT@fam "E0AF \relax % \widearc and\overrightarc \providecommand*{\widearc}{\Umathaccent 0 \the\FOT@fam "E540 }% \providecommand*{\overrightarc}{\Umathaccent 0 0 "20D5 }% % From FourierOrns \Umathchardef\forbidden = 0 \the\FOT@fam "E0B0 \relax \Umathchardef\beware = 0 \the\FOT@fam "E0B1 \relax \Umathchardef\boom = 0 \the\FOT@fam "E0B2 \relax \Umathchardef\thething = 0 \the\FOT@fam "E0B4 \relax \Umathchardef\xswordsup = 0 \the\FOT@fam "E0B5 \relax \Umathchardef\xswordsdown = 0 \the\FOT@fam "E0B6 \relax % Greek sans-serif glyphs in Private Area (temporary fix) \Umathchardef\msansAlpha = 0 \the\FOT@fam "E741 \relax \Umathchardef\msansBeta = 0 \the\FOT@fam "E742 \relax \Umathchardef\msansGamma = 0 \the\FOT@fam "E743 \relax \Umathchardef\msansDelta = 0 \the\FOT@fam "E744 \relax \Umathchardef\msansEpsilon = 0 \the\FOT@fam "E745 \relax \Umathchardef\msansZeta = 0 \the\FOT@fam "E746 \relax \Umathchardef\msansEta = 0 \the\FOT@fam "E747 \relax \Umathchardef\msansTheta = 0 \the\FOT@fam "E748 \relax \Umathchardef\msansIota = 0 \the\FOT@fam "E749 \relax \Umathchardef\msansKappa = 0 \the\FOT@fam "E74A \relax \Umathchardef\msansLambda = 0 \the\FOT@fam "E74B \relax \Umathchardef\msansMu = 0 \the\FOT@fam "E74C \relax \Umathchardef\msansNu = 0 \the\FOT@fam "E74D \relax \Umathchardef\msansXi = 0 \the\FOT@fam "E74E \relax \Umathchardef\msansOmicron = 0 \the\FOT@fam "E74F \relax \Umathchardef\msansPi = 0 \the\FOT@fam "E750 \relax \Umathchardef\msansRho = 0 \the\FOT@fam "E751 \relax \Umathchardef\msansvarTheta = 0 \the\FOT@fam "E752 \relax \Umathchardef\msansSigma = 0 \the\FOT@fam "E753 \relax \Umathchardef\msansTau = 0 \the\FOT@fam "E754 \relax \Umathchardef\msansUpsilon = 0 \the\FOT@fam "E755 \relax \Umathchardef\msansPhi = 0 \the\FOT@fam "E756 \relax \Umathchardef\msansChi = 0 \the\FOT@fam "E757 \relax \Umathchardef\msansPsi = 0 \the\FOT@fam "E758 \relax \Umathchardef\msansOmega = 0 \the\FOT@fam "E759 \relax \Umathchardef\msansnabla = 0 \the\FOT@fam "E75A \relax \Umathchardef\msansalpha = 0 \the\FOT@fam "E761 \relax \Umathchardef\msansbeta = 0 \the\FOT@fam "E762 \relax \Umathchardef\msansgamma = 0 \the\FOT@fam "E763 \relax \Umathchardef\msansdelta = 0 \the\FOT@fam "E764 \relax \Umathchardef\msansvarepsilon = 0 \the\FOT@fam "E765 \relax \Umathchardef\msanszeta = 0 \the\FOT@fam "E766 \relax \Umathchardef\msanseta = 0 \the\FOT@fam "E767 \relax \Umathchardef\msanstheta = 0 \the\FOT@fam "E768 \relax \Umathchardef\msansiota = 0 \the\FOT@fam "E769 \relax \Umathchardef\msanskappa = 0 \the\FOT@fam "E76A \relax \Umathchardef\msanslambda = 0 \the\FOT@fam "E76B \relax \Umathchardef\msansmu = 0 \the\FOT@fam "E76C \relax \Umathchardef\msansnu = 0 \the\FOT@fam "E76D \relax \Umathchardef\msansxi = 0 \the\FOT@fam "E76E \relax \Umathchardef\msansomicron = 0 \the\FOT@fam "E76F \relax \Umathchardef\msanspi = 0 \the\FOT@fam "E770 \relax \Umathchardef\msansrho = 0 \the\FOT@fam "E771 \relax \Umathchardef\msansvarsigma = 0 \the\FOT@fam "E772 \relax \Umathchardef\msanssigma = 0 \the\FOT@fam "E773 \relax \Umathchardef\msanstau = 0 \the\FOT@fam "E774 \relax \Umathchardef\msansupsilon = 0 \the\FOT@fam "E775 \relax \Umathchardef\msansphi = 0 \the\FOT@fam "E776 \relax \Umathchardef\msanschi = 0 \the\FOT@fam "E777 \relax \Umathchardef\msanspsi = 0 \the\FOT@fam "E778 \relax \Umathchardef\msansomega = 0 \the\FOT@fam "E779 \relax \Umathchardef\msanspartial = 0 \the\FOT@fam "E77A \relax \Umathchardef\msansepsilon = 0 \the\FOT@fam "E77B \relax \Umathchardef\msansvartheta = 0 \the\FOT@fam "E77C \relax \Umathchardef\msansvarkappa = 0 \the\FOT@fam "E77D \relax \Umathchardef\msansvarphi = 0 \the\FOT@fam "E77E \relax \Umathchardef\msansvarrho = 0 \the\FOT@fam "E77F \relax \Umathchardef\msansvarpi = 0 \the\FOT@fam "E780 \relax \Umathchardef\mitsansAlpha = 0 \the\FOT@fam "E791 \relax \Umathchardef\mitsansBeta = 0 \the\FOT@fam "E792 \relax \Umathchardef\mitsansGamma = 0 \the\FOT@fam "E793 \relax \Umathchardef\mitsansDelta = 0 \the\FOT@fam "E794 \relax \Umathchardef\mitsansEpsilon = 0 \the\FOT@fam "E795 \relax \Umathchardef\mitsansZeta = 0 \the\FOT@fam "E796 \relax \Umathchardef\mitsansEta = 0 \the\FOT@fam "E797 \relax \Umathchardef\mitsansTheta = 0 \the\FOT@fam "E798 \relax \Umathchardef\mitsansIota = 0 \the\FOT@fam "E799 \relax \Umathchardef\mitsansKappa = 0 \the\FOT@fam "E79A \relax \Umathchardef\mitsansLambda = 0 \the\FOT@fam "E79B \relax \Umathchardef\mitsansMu = 0 \the\FOT@fam "E79C \relax \Umathchardef\mitsansNu = 0 \the\FOT@fam "E79D \relax \Umathchardef\mitsansXi = 0 \the\FOT@fam "E79E \relax \Umathchardef\mitsansOmicron = 0 \the\FOT@fam "E79F \relax \Umathchardef\mitsansPi = 0 \the\FOT@fam "E7A0 \relax \Umathchardef\mitsansRho = 0 \the\FOT@fam "E7A1 \relax \Umathchardef\mitsansvarTheta = 0 \the\FOT@fam "E7A2 \relax \Umathchardef\mitsansSigma = 0 \the\FOT@fam "E7A3 \relax \Umathchardef\mitsansTau = 0 \the\FOT@fam "E7A4 \relax \Umathchardef\mitsansUpsilon = 0 \the\FOT@fam "E7A5 \relax \Umathchardef\mitsansPhi = 0 \the\FOT@fam "E7A6 \relax \Umathchardef\mitsansChi = 0 \the\FOT@fam "E7A7 \relax \Umathchardef\mitsansPsi = 0 \the\FOT@fam "E7A8 \relax \Umathchardef\mitsansOmega = 0 \the\FOT@fam "E7A9 \relax \Umathchardef\mitsansnabla = 0 \the\FOT@fam "E7AA \relax \Umathchardef\mitsansalpha = 0 \the\FOT@fam "E7B1 \relax \Umathchardef\mitsansbeta = 0 \the\FOT@fam "E7B2 \relax \Umathchardef\mitsansgamma = 0 \the\FOT@fam "E7B3 \relax \Umathchardef\mitsansdelta = 0 \the\FOT@fam "E7B4 \relax \Umathchardef\mitsansvarepsilon = 0 \the\FOT@fam "E7B5 \relax \Umathchardef\mitsanszeta = 0 \the\FOT@fam "E7B6 \relax \Umathchardef\mitsanseta = 0 \the\FOT@fam "E7B7 \relax \Umathchardef\mitsanstheta = 0 \the\FOT@fam "E7B8 \relax \Umathchardef\mitsansiota = 0 \the\FOT@fam "E7B9 \relax \Umathchardef\mitsanskappa = 0 \the\FOT@fam "E7BA \relax \Umathchardef\mitsanslambda = 0 \the\FOT@fam "E7BB \relax \Umathchardef\mitsansmu = 0 \the\FOT@fam "E7BC \relax \Umathchardef\mitsansnu = 0 \the\FOT@fam "E7BD \relax \Umathchardef\mitsansxi = 0 \the\FOT@fam "E7BE \relax \Umathchardef\mitsansomicron = 0 \the\FOT@fam "E7BF \relax \Umathchardef\mitsanspi = 0 \the\FOT@fam "E7C0 \relax \Umathchardef\mitsansrho = 0 \the\FOT@fam "E7C1 \relax \Umathchardef\mitsansvarsigma = 0 \the\FOT@fam "E7C2 \relax \Umathchardef\mitsanssigma = 0 \the\FOT@fam "E7C3 \relax \Umathchardef\mitsanstau = 0 \the\FOT@fam "E7C4 \relax \Umathchardef\mitsansupsilon = 0 \the\FOT@fam "E7C5 \relax \Umathchardef\mitsansphi = 0 \the\FOT@fam "E7C6 \relax \Umathchardef\mitsanschi = 0 \the\FOT@fam "E7C7 \relax \Umathchardef\mitsanspsi = 0 \the\FOT@fam "E7C8 \relax \Umathchardef\mitsansomega = 0 \the\FOT@fam "E7C9 \relax \Umathchardef\mitsanspartial = 0 \the\FOT@fam "E7CA \relax \Umathchardef\mitsansepsilon = 0 \the\FOT@fam "E7CB \relax \Umathchardef\mitsansvartheta = 0 \the\FOT@fam "E7CC \relax \Umathchardef\mitsansvarkappa = 0 \the\FOT@fam "E7CD \relax \Umathchardef\mitsansvarphi = 0 \the\FOT@fam "E7CE \relax \Umathchardef\mitsansvarrho = 0 \the\FOT@fam "E7CF \relax \Umathchardef\mitsansvarpi = 0 \the\FOT@fam "E7D0 \relax % For unicode-math only: \ifFOT@lum \else % amssymb \@ifpackageloaded{amssymb}% {\PackageWarning{fourier-otf}{% Fourier-otf provides all AMS symbols.\MessageBreak Loading amssymb.sty is not advisable.\MessageBreak Reported}% }% {% AMS Symbols not referenced in unicode-math-table.tex \protected\def\centerdot{\vysmblksquare}% \protected\def\restriction{\upharpoonright}% \protected\def\doteqdot{\Doteq}% \protected\def\doublecup{\Cup}% \protected\def\doublecap{\Cap}% \protected\def\llless{\lll}% \protected\def\gggtr{\ggg}% \protected\def\circlearrowleft{\acwopencirclearrow}% \protected\def\circlearrowright{\cwopencirclearrow}% \protected\def\lozenge{\mdlgwhtlozenge}% \protected\def\blacklozenge{\mdlgblklozenge}% \protected\def\square{\mdlgwhtsquare}% \protected\def\blacksquare{\mdlgblksquare}% \protected\def\dashleftarrow{\leftdasharrow}% \protected\def\dashrightarrow{\rightdasharrow}% \protected\def\ntriangleleft{\nvartriangleleft}% \protected\def\ntriangleright{\nvartriangleright}% }% % latexsym \@ifpackageloaded{latexsym}% {\PackageWarning{fourier-otf}{% Fourier-otf provides all LaTeX symbols.\MessageBreak Loading latexsym.sty is not advisable.\MessageBreak Reported}% }% {\protected\def\lhd{\vartriangleleft}% \protected\def\rhd{\vartriangleright}% \protected\def\unlhd{\trianglelefteq}% \protected\def\unrhd{\trianglerighteq}% \protected\def\leadsto{\rightcurvedarrow}% \protected\def\Box{\lgwhtsquare}% \protected\def\Diamond{\mdlgwhtdiamond}% }% \fi } \endinput