Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

You may have noticed that, as of now,* letterspacing small capitals is not as easy as it was in pdfTeX, where we could simply combine \textsc with microtype's \textls. Consider this example, which should give you non-letterspaced small caps; letterspaced u&lc; and letterspaced u&lc again:

(ex. 1)

\documentclass{article}
\usepackage{fontspec,microtype}

\listfiles
\setmainfont[
%Renderer=Basic
]{Minion Pro}

\begin{document}
\textsc{Lorem Ipsum}\par
\textls{Lorem Ipsum}\par
\textls{\textsc{Lorem Ipsum}}\par
\end{document}

The workaround (!) for this problem is to set Renderer=Basic.** If you uncomment the respective line in my example, you'll find the small caps properly letterspaced. However, globally putting the Renderer to Basic mode may cause problems in other places, as it seems to disable some OpenType features (the whole Renderer thing doesn't seem to be documented that well in the fontspec doc, but I can elaborate on that if you're interested). In earlier versions of fontspec, what I did was this:

(ex. 2)

\documentclass{article}
\usepackage{fontspec,microtype}
\setmainfont[SmallCapsFeatures={Renderer=Basic}]{Minion Pro}
\begin{document}
\textsc{Lorem Ipsum}\par
\textls{Lorem Ipsum}\par
\textls{\textsc{Lorem Ipsum}}\par
\end{document}

...which would put the Renderer to Basic mode for small capitals only, leaving it on Full everywhere else -- a workaround I was pretty happy with. Unfortunately, this became impossible in more recent versions of fontspec. We can still use the Renderer key (as in example 1), but not as an option for a specific font style:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! LaTeX error: "keys/key-unknown"
! The key 'fontspec/Renderer' is unknown and is being ignored.
! See the LaTeX3 documentation for further information.
! For immediate help type H <return>.
!...............................................

What I'd like to know, basically, is if there's an alternative way of selecting Basic mode for small caps only, or what other ways you guys would suggest to make small caps and microtype's letterspacing work together again -- other than redefining the small caps commands to include Renderer=Basic, which doesn't seem all-too elegant to me:

\textls{\textsc{\addfontfeatures{Renderer=Basic}Lorem Ipsum}}

* This is LuaTeX, Version beta-0.70.1-2011082320 (rev 4277)
fontspec.sty 2011/09/13 v2.2 Advanced font selection for XeLaTeX/LuaLaTeX
luaotfload.sty 2011/04/21 v1.25 OpenType layout system
microtype.sty 2011/08/18 v2.5 Micro-typographical refinements (RS)
** thanks to Hans and Ulrike for mentioning it, http://archive.contextgarden.net/message/20110615.105120.bf868745.en.html

share|improve this question
9  
I would simply write the author of fontspec and ask if this change is intended. The announcement text of the new version said explicitly "This is a relatively large update for fontspec featuring quite a number of internal changes -- please report any troubles you find and I'll address them as swiftly as I can.` –  Ulrike Fischer Sep 21 '11 at 8:56
3  
Looking through the code, this problem will be related to a change in how keys are processed by fontspec. As @UlrikeFischer says, that is a bug in fontspec, so the best approach is to let Will Robertson know. –  Joseph Wright Sep 21 '11 at 9:13
    
thanks for the comments! I contacted Will about this issue... –  Nils L Sep 22 '11 at 12:51
    
@NilsL: Any progress? –  Martin Schröder Dec 19 '11 at 22:45
    
\textls{\textsc{\addfontfeatures{Renderer=Basic}Lorem Ipsum}} essentially works, but only when it stands alone in a paragraph. E.g. I tried that solution letterspace the first few words at the beginning of a chapter, but obviously they are followed by "normal" text and then letterspacing is broken. Does anyone knows a solution for that? –  Jörg Mar 29 '12 at 13:44

2 Answers 2

up vote 11 down vote accepted

I really have to apologise for the long delay on this answer. As you discovered this was an unintentional change made while a lot of the package was being re-implemented.

I've spent some time today looking into how this could be resolved; I'm not really sure what the best option is, so I've reverted the package to the old behaviour (not the old code, though note). I express doubts on this in that I'm not sure it's wise to select faces within a family that use different renderers, but it probably can't hurt in this case.

This will be fixed in v2.3 of fontspec.

share|improve this answer
    
this is just to confirm that ex. 2 has resumed working, as of yesterday's v2.3 -- thanks for fixing it! –  Nils L Feb 26 '13 at 14:41
    
Very sorry for the delay in the update :( –  Will Robertson Feb 27 '13 at 10:41

Rnderer=Basic can be limited in its influence to the specific place where you want to use \textls --a title, for instance-- by inserting the rendering with \addfontfeatures and adding grouping brackets around the those two commands and the target text.

share|improve this answer
    
see last code example in my Q. –  Nils L Nov 3 '13 at 16:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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