Estou tentando compor meu documento com Times com XeLaTeX. Como o Times não inclui versaletes, quero usar o TeX Gyre Termes apenas para versaletes. tenteieste método, mas não funcionou. Um aviso é emitido e a saída não é minúscula.
A questão:
- O que está errado?
- Como posso fazer isso?
Aqui está um MWE:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[
SmallCapsFont={TeX Gyre Termes},
SmallCapsFeatures={Letters=SmallCaps},
]{Times}
\begin{document}
Hello!
\textsc{Hello!}
\end{document}
e o aviso:
*************************************************
* fontspec warning: "aat-feature-not-exist-in-font"
*
* AAT feature 'Letters=SmallCaps' (3,3) not available in font 'TeX Gyre
* Termes'.
*************************************************
O que eu tentei:
- Tentei compor com LuaLaTeX e o resultado foi bom, sem avisos.
- Troquei
Times
porTimes New Roman
e não houve problema. - Eu adicionei
Renderer=ICU
e o aviso mudou paraicu-feature-not-exist-in-font
. Parece que o fontspec pode ser usado.dfont
com ICU? - Troquei
Times
por outra.dfont
fonteHelvetica Neue
e o problema desapareceu. Portanto, nem todas.dfont
as fontes causam o problema....
Estou usando o MacTeX 2013 no OS X Mountain Lion.
Atualizar
Seguindo uma sugestão de @KhaledHosny, tentei adicionar \the\XeTeXfonttype\font
before e after \textsc{
e ambos retornaram 1
(fonte AAT). Com Render=ICU
eles retornaram 2
(fonte OpenType), mas não recebi versalete. Parece que o XeTeX pode tratar o Times como OpenType, mas mesmo assim SmallCapsFeatures
não funciona.
Responder1
Descobri que isso pode ser alcançado com NFSS.
Primeiro, Times e TeX Gyre Termes são carregados separadamente. Em seguida, a definição de versalete de Times no NFSS é sobrescrita para que redirecione para versalete de TeX Gyre Termes.
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times}
\newfontfamily\tgtermes{TeX Gyre Termes}
\makeatletter
\begingroup
\tgtermes
\DeclareFontShape{\f@encoding}{\rmdefault}{m}{sc}{%
<-> ssub * \f@family/m/sc}{}
\DeclareFontShape{\f@encoding}{\rmdefault}{bx}{sc}{%
<-> ssub * \f@family/bx/sc}{}
\endgroup
\makeatother
\begin{document}
Hello!
\textsc{Hello!}
\end{document}
Responder2
Talvez a maneira mais fácil seja a seguinte:
No exemplo,Texto Carmesimnão tem smallcaps, masCarmesimfaz. (A escala usada aqui tem apenas a ver com resultados mais bonitos neste caso.)
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Crimson Text}
\newfontinstance\scshape[Letters=SmallCaps,Scale=1.15]{Crimson}
\begin{document}
Text \textsc{Text}
\end{document}
ATUALIZAR conforme observadoaqui, \newfontinstance
não funciona mais, substituído por \newfontfamily
.