fontspec で小文字大文字のフォールバックフォントを設定する

fontspec で小文字大文字のフォールバックフォントを設定する

私の Mac の Times New Roman フォントには、小文字大文字の形状がありません。そのため、小文字大文字のフォールバック フォントとして TeX Gyre Termes を設定したいと考えています。

TeX Gyre Termesをメインフォントとして使用する

\documentclass{article}
\usepackage{fontspec}
\setmainfont{texgyretermes}%
  [
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic
  ]
\begin{document}

hello
\textsc{hello}
\textbf{\textsc{hello}}
\textit{\textsc{hello}}

\end{document}

結果は以下のように満足のいくものでした。

ここに画像の説明を入力してください

メインフォントとしてTimes New Romanを使用する

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\begin{document}

hello
\textsc{hello}
\textbf{\textsc{hello}}
\textit{\textsc{hello}}

\end{document}

ログに示されているように、フォントシェイプm/scb/scおよびがm/scitすべて欠落しています。

ここに画像の説明を入力してください

TeX Gyre Termes をフォールバックとして使用する

fontspec マニュアルによると、小文字大文字のフォールバックは次のように設定できます。

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}%
  [
    SmallCapsFont     = TeX Gyre Termes,
    SmallCapsFeatures = {Letters=SmallCaps}
  ]
\begin{document}

hello
\textsc{hello}
\textbf{\textsc{hello}}
\textit{\textsc{hello}}

\end{document}

上記の例は、 でのみコンパイルできますlualatex(macOS ユーザーは を使用する場合、フォント名で texmf ツリー内のフォントを使用できないためxelatex)。ただし、lualatexどちらも満足のいく結果を与えることはできません。

ここに画像の説明を入力してください

TeX Gyre Termes フォントをシステムにインストールした後、xelatex使用することもできますが、結果は上記のスクリーンショットと同じです。

質問

TeX Gyre Termesをシステムにインストールしなくてもxelatex、とlualatexmacOS ユーザーの両方で小文字大文字のフォールバック フォントを正しく設定するにはどうすればよいですか?

答え1

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}%
  [
   BoldFeatures = 
     {SmallCapsFont={TeX Gyre Termes Bold},
      SmallCapsFeatures = {Letters=SmallCaps}} ,
   ItalicFeatures = 
    {SmallCapsFont={TeX Gyre Termes Italic},
     SmallCapsFeatures = {Letters=SmallCaps}} ,
  ]
\begin{document}

hello
\textsc{hello}
\textbf{\textsc{hello}}
\textit{\textsc{hello}}
\textbf{\textit{\textsc{hello}}}
\end{document}

ここに画像の説明を入力してください

texmf ツリー内のフォントがファイル名で見つからないシステムでは、これが機能する可能性があります (未テスト)

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}%
  [
   BoldFeatures = 
     {SmallCapsFont={texgyretermes-bold},
      SmallCapsFeatures = {Extension=.otf,Letters=SmallCaps}} ,
   ItalicFeatures = 
    {SmallCapsFont={texgyretermes-italic},
     SmallCapsFeatures = {Extension=.otf,Letters=SmallCaps}} ,
  ]
\begin{document}

hello
\textsc{hello}
\textbf{\textsc{hello}}
\textit{\textsc{hello}}
\textbf{\textit{\textsc{hello}}}
\end{document}

関連情報