1

I'm having difficulty getting small-caps to render properly in my (XeLaTeX compiled) document. I want to render a certain level of heading with a different font th at the default document font and in small-caps. The tricky part for my scenario is that I'm working with Turkish and it needs to correctly case i→İ and ı→I even for small-caps.

Here's what works:

  1. Set document language
  2. Set main document font to the font that properly supports small-caps.
  3. Use \scshape to switch to small caps

Here's what doesn't work:

  1. Set document language
  2. Set main document font to the font I actually want to use
  3. Add another font face
  4. Switch to that font for any instances that are going to be small-caps

Here is an MWE that illustrates the problem:

\documentclass[20pt]{scrartcl}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\setmainfont{Libertine Serif}
\newfontface\reffont{Libertine Serif}[Letters=SmallCaps]
\begin{document}
Elçilerin İşleri

{\scshape Elçilerin İşleri}

{\reffont Elçilerin İşleri}
\end{document}

This produces something like this:

1 good, 2 good, 3 not so much

My issue is I actually need something like the second format to work because I want to set my body font to Crimson.

\setmainfont{Crimson}

When I do that, the example above comes out like this:

er hem, not so much

Of course the second instance is not expected to work because that font doesn't have good small-caps glyphs. But the second example needs to work.

I've tried a number of combinations including using \scshape instead of the open-type font feature, setting the font inline instead of setting up the face ahead of time, etc. In no permutation was I able to get the main font to be Crimson and still set some headings using Libertine Serif with Turkish small-caps. What am I missing?

4

I'm not quite sure that I understood your problem. But imho you are simply missing the language setting in your \reffont:

\documentclass[20pt]{scrartcl}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\setmainfont{Linux Libertine O}
\newfontface\reffont{Linux Libertine O}[Language=Turkish,Letters=SmallCaps]
\begin{document}
Elçilerin İşleri

{\scshape Elçilerin İşleri}

{\reffont Elçilerin İşleri}
\end{document}

enter image description here

  • It fas a language setting!? «hiss, splutter, mumble» Well I'll be jiggered, you know how much time I spent fiddling with this? Why does it go with the document language when you set in the first time but not inherit that for subsequent fonts? – Caleb Oct 14 '15 at 13:42
  • 1
    Fonts set with \newfontface ignore \addfontfeature settings. – Ulrike Fischer Oct 14 '15 at 13:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.