[Tex/LaTex] Fontspec: Palatino with small caps and old-style figures

fontspecmathpazooldstylenumssmall-capsxetex

For various reasons, I’m using the fontspec package.

However, I’d also like to use Palatino as the document’s main font, and I want to use it with small caps and old-style figures.

So I’ve got four requirements:

  1. fontspec,
  2. Palatino,
  3. Small caps,
  4. Old-style figures (everywhere, not only selected via \oldstylenums).

Any three out of these four features work fine together. But I can’t get all four working in the same document.

In fact, using \usepackage[osf]{mathpazo}, I get nice small caps and lowercase figures. But as soon as I \usepackage{fontspec}, old-style figures no longer work, even if I don’t select a font.

Now, I could be tempted to say \usemainfont[Numbers=OldStyle]{Palatino}, but this doesn’t work: figures remain as they are. Furthermore, small caps now cease to work (presumably because I don’t have the expensive, shiny version of Palatino that includes old-style figure glyphs – with mathpazo this only works because the package “cheats” and selects the typeface family pplj instead).

How can I get this to work? Is there a way to explicitly select pplj for the main text (\rmfamily) even when using fontspec for other fonts?

MWE:

\documentclass{article}

\usepackage[osf]{mathpazo}
\usepackage{fontspec}

%\setmainfont[Numbers=OldStyle]{Palatino}

\begin{document}
\textsc{This is a test} 0123
\end{document}

Best Answer

You need a Palatino with proper OpenType support, alternatively you can use TeX Gyre Pagella (which is true Palatino by Zapf, and further opentypified by GUST) which is included in TeXlive.

\documentclass{article}
\usepackage{fontspec}

\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}

\begin{document}
Text 12345.
\end{document}