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?

0

1 Answer 1

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

2
  • 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, 2015 at 13:42
  • 1
    Fonts set with \newfontface ignore \addfontfeature settings. Oct 14, 2015 at 13:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .