What fontspec
provides is syntax for enabling OpenType features. What you need is the ability to switch fonts every time numerals are displayed.
XeTeX has the XeTeXinterchartoks
functionality to enable this; LuaTeX does not (at least not directly; see below).
For example, try this code:
% !TeX program = xelatex
\documentclass{article}
\XeTeXinterchartokenstate = 1
\newXeTeXintercharclass \numeralsclass
\newXeTeXintercharclass \numeralsclass
\count255=`\0
\loop\ifnum\count255<`\9
\XeTeXcharclass \count255 \numeralsclass
\advance\count255 by 1
\repeat
\XeTeXinterchartoks 0 \numeralsclass = {\bgroup\itshape}
\XeTeXinterchartoks 255 \numeralsclass = {\bgroup\itshape}
\XeTeXinterchartoks \numeralsclass 0 = {\egroup}
\XeTeXinterchartoks \numeralsclass 255 = {\egroup}
\begin{document}
abc 123 def456jkl789
32
`33'--44
\end{document}
This code allocates a character class for numerals, then assigns it to 0–9.
Between character class 0 (letters) or 255 (non-characters: glue, kern, math, box, etc.) and the newly-defined character class for numerals, we insert a font change (\itshape
for visibility); between numerals and class 0/255 we insert \egroup
to undo that font change.
You should be able to apply this to your case something like this:
\setmainfont[ Numbers={Proportional}, SmallCapsFont={PalmerCapsOld} ]{Palmer}
…
\XeTeXinterchartoks 0 \numeralsclass = {\bgroup\scshape}
\XeTeXinterchartoks \numeralsclass 0 = {\egroup}
\XeTeXinterchartoks 255 \numeralsclass = {\bgroup\scshape}
\XeTeXinterchartoks \numeralsclass 255 = {\egroup}
But… you wanted a LuaLaTeX solution.
See In LuaTex is it possible to change font/language according to the script/glyphs used? for LuaTeX code that mimics XeTeXinterchartoks
. The trouble is a difference in when the code executes; if I’ve understood Manuel Pégourié-Gonnard’s comment correctly, even code like \count255
might break.
You might be better off running a regexp search on your document, to surround each run of numerals with \textsc{
•}
.
You need to declare the default font features before setting the font with \setmainfont
.
Also make sure you didn't somehow end up with the TrueType version of the font.
Furthermore, it might be worthwhile to specify the files in more detail:
\setmainfont
[ Path = /path/to/fonts/ ,
Extension = .otf,
UprightFont = *12-Regular ,
ItalicFont = *12-Italic ,
BoldFont = *08-Regular ]
{EBGaramond}
Best Answer
Neo Euler is upright by design and currently math italic slots are empty (now I think this was a bad decision, but no time to fix it now), so
[math-style=ISO, bold-style=ISO]
does not make much sense here and what you are seeing is the default Computer Modern math font, instead you should use[math-style=upright]
.