XeLaTeX のフォント仕様における小文字大文字

XeLaTeX のフォント仕様における小文字大文字

私はTimesで文書をXeLaTeXでタイプセットしようとしています。Timesにはスモールキャップが含まれていないため、スモールキャップのみにTeX Gyre Termesを使用したいと思います。この方法ですが、うまくいきませんでした。警告が発せられ、出力は小文字ではありません。

質問:

  • なにが問題ですか?
  • これどうやってするの?

MWE は次のとおりです。

\documentclass{article}
\usepackage{fontspec}
\setmainfont[
  SmallCapsFont={TeX Gyre Termes},
  SmallCapsFeatures={Letters=SmallCaps},
]{Times}
\begin{document}
Hello!
\textsc{Hello!}
\end{document}

そして警告:

*************************************************
* fontspec warning: "aat-feature-not-exist-in-font"
* 
* AAT feature 'Letters=SmallCaps' (3,3) not available in font 'TeX Gyre
* Termes'.
*************************************************

私が試したこと:

  • LuaLaTeX でタイプセットを試みましたが、警告もなく結果は良好でした。
  • 交換しましたTimesTimes New Roman問題ありませんでした。
  • を追加しRenderer=ICUたら警告が に変わりましたicu-feature-not-exist-in-font。fontspec は.dfontICU で使えるようですね?
  • 別のフォントTimesに置き換えたら問題はなくなりました。したがって、すべてのフォントが問題の原因というわけではありません....dfontHelvetica Neue.dfont

OS X Mountain Lion で MacTeX 2013 を使用しています。

アップデート

@KhaledHosny の提案に従って、\the\XeTeXfonttype\fontbefore と afterを追加してみました\textsc{が、どちらも1(AAT フォント) が返されました。 では(OpenType フォント)Render=ICUが返されました2が、スモールキャップは取得されませんでした。XeTeX は Times を OpenType として処理できるようですが、それでもSmallCapsFeatures動作しません。

答え1

これは NFSS で実現できることがわかりました。

まず、Times と TeX Gyre Termes を別々にロードします。次に、NFSS の Times の小文字大文字の定義を上書きして、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}

答え2

おそらく最も簡単な方法は次のとおりです。

この例では、深紅のテキスト小文字はありませんが、真紅そうなります。(ここで使用されているスケールは、この場合、出力の見栄えを良くすることのみに関係します。)

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Crimson Text}

\newfontinstance\scshape[Letters=SmallCaps,Scale=1.15]{Crimson}

\begin{document}
Text \textsc{Text}
\end{document}

注記通り更新ここ\newfontinstance動作しなくなり、 に置き換えられました\newfontfamily

関連情報