Problem with small caps in XeLaTeX

For Charis SIL, try using Renderer=ICU. From this mailing list post

Charis SIL is a hybrid OpenType/Graphite font, in 0.9998 OpenType was chosen but in 0.9999 Graphite is chosen instead (a side effect of using HarfBuzz for both OpenType and Graphite) I’m not yet decided whether to consider this a bug or a feature.

Either way, with such hybrid fonts it is always better to be explicit about what font technology to use, adding a “Renderer=ICU” will force OpenType layout (should be renamed “Renderer=OT” now, but it still works nevertheless).

The version of Times New Roman included with Windows XP does not have any small caps, the version in included with Windows 8.1, though, do have small caps and works just fine with XeTeX (no idea about other versions of the font).

No idea about Garuda, though.


I don't know about Garuda, but surely Charis SIL doesn't have small caps. With Times New Roman it depends on the actual font installed on your system, but the one provided by Mac OS X has no small caps font either. Indeed, I get the messages

LaTeX Font Warning: Font shape `EU1/CharisSIL(0)/m/sc' undefined
(Font)              using `EU1/CharisSIL(0)/m/n' instead on input line 9.

LaTeX Font Warning: Font shape `EU1/TimesNewRoman(0)/m/sc' undefined
(Font)              using `EU1/TimesNewRoman(0)/m/n' instead on input line 23.

which mean precisely that.

In some cases you can find a substitute, for instance TeX Gyre Termes has small caps:

\documentclass{article}
\usepackage{fontspec}
\newcommand\sample{The quick brown fox jumped.}

\begin{document}
\fontspec[
 SmallCapsFont=TeX Gyre Termes,
 SmallCapsFeatures={Letters=SmallCaps},
]{Times New Roman}

\begin{tabular}{ll}
Normal              &\sample\\
\textsc{Small Caps} &\textsc{\sample}\\
\textbf{Boldface}   &\textbf{\sample}\\
\textit{Italics}    &\textit{\sample}
\end{tabular}

\end{document}

enter image description here

For Charis Sil I don't think you can get around the lack of a small caps variant.