我的 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/sc
、b/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 Termesxelatex
,如何在和lualatex
macOS 用户下正确设置小型大写后备字体?
答案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}