在 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/scm/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 Termesxelatex,如何在和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}

相关内容