Ich versuche, mein Dokument mit Times mit XeLaTeX zu setzen. Da Times keine Kapitälchen enthält, möchte ich TeX Gyre Termes nur für Kapitälchen verwenden. Ich habe versuchtdiese Methode, aber es hat nicht funktioniert. Es wird eine Warnung ausgegeben und die Ausgabe besteht nicht aus Kapitälchen.
Die Frage:
- Was ist falsch?
- Wie kann ich das machen?
Hier ist ein MWE:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[
SmallCapsFont={TeX Gyre Termes},
SmallCapsFeatures={Letters=SmallCaps},
]{Times}
\begin{document}
Hello!
\textsc{Hello!}
\end{document}
und die Warnung:
*************************************************
* fontspec warning: "aat-feature-not-exist-in-font"
*
* AAT feature 'Letters=SmallCaps' (3,3) not available in font 'TeX Gyre
* Termes'.
*************************************************
Was ich versucht habe:
- Ich habe versucht, den Schriftsatz mit LuaLaTeX zu verwenden und das Ergebnis war in Ordnung, es gab keine Warnungen.
- Ich habe es
Times
durch ersetztTimes New Roman
und es gab kein Problem. - Ich habe es hinzugefügt
Renderer=ICU
und die Warnung wurde geändert inicu-feature-not-exist-in-font
. Es scheint, dass Fontspec.dfont
mit ICU verwendet werden kann? - Ich habe es
Times
durch eine andere.dfont
Schriftart ersetztHelvetica Neue
und das Problem ist verschwunden..dfont
Das Problem wird also nicht durch alle Schriftarten verursacht...
Ich verwende MacTeX 2013 auf OS X Mountain Lion.
Aktualisieren
Auf Vorschlag von @KhaledHosny habe ich versucht, \the\XeTeXfonttype\font
vor und nach , hinzuzufügen \textsc{
, und beide haben 1
(AAT-Schriftart) zurückgegeben. Mit Render=ICU
haben sie 2
(OpenType-Schriftart) zurückgegeben, aber ich habe keine Kapitälchen erhalten. Es scheint, dass XeTeX Times als OpenType behandeln kann, aber selbst dann SmallCapsFeatures
funktioniert es nicht.
Antwort1
Ich habe festgestellt, dass dies mit NFSS erreicht werden kann.
Zunächst werden Times und TeX Gyre Termes separat geladen. Anschließend wird die Definition der Kapitälchen von Times in NFSS überschrieben, sodass eine Weiterleitung zu den Kapitälchen von TeX Gyre Termes erfolgt.
\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}
Antwort2
Der vielleicht einfachste Weg ist folgender:
Im BeispielPurpurner Texthat keine Smallcaps, aberPurpurtut. (Der hier verwendete Maßstab dient in diesem Fall nur der besseren Darstellung der Ausgabe.)
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Crimson Text}
\newfontinstance\scshape[Letters=SmallCaps,Scale=1.15]{Crimson}
\begin{document}
Text \textsc{Text}
\end{document}
UPDATE wie angegebenHier, \newfontinstance
funktioniert nicht mehr, ersetzt durch \newfontfamily
.