Kapitälchen in der Fontspec auf XeLaTeX

Kapitälchen in der Fontspec auf XeLaTeX

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 Timesdurch ersetzt Times New Romanund es gab kein Problem.
  • Ich habe es hinzugefügt Renderer=ICUund die Warnung wurde geändert in icu-feature-not-exist-in-font. Es scheint, dass Fontspec .dfontmit ICU verwendet werden kann?
  • Ich habe es Timesdurch eine andere .dfontSchriftart ersetzt Helvetica Neueund das Problem ist verschwunden. .dfontDas 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\fontvor und nach , hinzuzufügen \textsc{, und beide haben 1(AAT-Schriftart) zurückgegeben. Mit Render=ICUhaben 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 SmallCapsFeaturesfunktioniert 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, \newfontinstancefunktioniert nicht mehr, ersetzt durch \newfontfamily.

verwandte Informationen