我的 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}
如日誌所示,字體 shape 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 Termes 安裝到系統中,如何在macOS 使用者xelatex
和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}