我正在为字体选择而苦恼。我似乎无法理解这一点。
我正在开发一个使用 Latin Modern Roman、Trajan Pro 和 Trajan Pro Bold 的文档类。我的需求是将 Trajan 字体定义为小写字母和粗体小写字母,而将 LRM 用于其他所有内容。
我无法弄清楚为什么以下[options]
会导致错误,或者如何解决它。
\documentclass[11pt]{article}
\usepackage{geometry} %for page layout
\geometry{hmargin={1in,1in},vmargin={0.75in,0.75in},marginparwidth={0.8in},marginparsep={0in}}
\usepackage{fontspec} %for xelatex unicode
\setmainfont{Latin Modern Roman}[
UprightFeatures = {SmallCapsFont=TrajanPro-Regular.otf},
BoldFeatures = {SmallCapsFont=TrajanPro-Bold.otf},
]
\begin{document}
Here is some {\bfseries\scshape Boldface SmallCaps} text
Here is some {\bfseries\uppercase{Boldface Uppercase}} text
Here is some {\bfseries Boldface} text
Here is some {\scshape SmallCaps} text
Here is some \uppercase{Uppercase} text
Here is some {Regular} text
\end{document}
作为编辑,我添加了以下代码,这些代码是我使用了近 5 年的代码。这很好用。无论我想输入什么,\scshape
我都只是输入了\sffamily
。我知道这样做是错误的,但在 5 年多的时间里,我一直在尝试找出更好的方法,但从来没有成功过。
\RequirePackage{fontspec} %for xelatex unicode
\setmainfont{Latin Modern Roman}
% BoldFont = ⟨font name⟩
% ItalicFont = ⟨font name⟩
% BoldItalicFont = ⟨font name⟩
% SlantedFont = ⟨font name⟩
% BoldSlantedFont = ⟨font name⟩
% SmallCapsFont = ⟨font name⟩
\setsansfont{TrajanPro-Regular.otf}[
BoldFont=TrajanPro-Bold.otf
% ItalicFont = ⟨font name⟩
% BoldItalicFont = ⟨font name⟩
% SlantedFont = ⟨font name⟩
% BoldSlantedFont = ⟨font name⟩
% SmallCapsFont = ⟨font name⟩
]
再编辑一下,LRM 是系统安装的字体,Trajan 字体是我在根目录中与项目一起保存的两个文件。我希望能够将它们放入根目录中的字体文件夹中,但一次只能放一步。
答案1
我没有 Trajan-Pro,所以我用其他明显不同于 LMR(TexGyreHeros)的东西代替了。
\documentclass[11pt]{article}
\usepackage{geometry} %for page layout
\geometry{hmargin={1in,1in},vmargin={0.75in,0.75in},marginparwidth={0.8in},marginparsep={0in}}
\usepackage{fontspec} %% running under LuaLaTeX
\setmainfont{Latin Modern Roman}[
SmallCapsFeatures={Letters=SmallCaps}, % <=== See Section 4.1 of Fontspec documentation.
UprightFeatures = {SmallCapsFont=texgyreheros-regular.otf},
BoldFeatures = {SmallCapsFont=texgyreheros-bold.otf},
]
\begin{document}
Here is some {\bfseries\scshape Boldface SmallCaps} text
Here is some {\bfseries\uppercase{Boldface Uppercase}} text
Here is some {\bfseries Boldface} text
Here is some {\scshape SmallCaps} text
Here is some \uppercase{Uppercase} text
Here is some {Regular} text
\end{document}
所做的一项更改是添加该行,SmallCapsFeatures={Letters=SmallCaps},
原因请参阅第 4.1 节中的 Fontspec 文档。
此代码在我的系统上使用 LuaLaTeX 时有效,但在使用 XeLaTeX 时无效——可能是因为我没有安装 LMR 作为系统字体;对于 LuaLaTeX,LMR 是默认字体。为了测试这个想法,以下代码将我的系统字体之一替换为 LMR(TeX Gyre Termes):
%% using the free Tex Gyre fonts, which I have installed as system fonts
\setmainfont{TeXGyreTermesX}[
SmallCapsFeatures={Letters=SmallCaps}, % <=== See Section 4.1 of Fontspec documentation.
UprightFeatures = {SmallCapsFont=texgyreheros-regular.otf},
BoldFeatures = {SmallCapsFont=texgyreheros-bold.otf},
]
经过这一改变,无论是 LuaLaTeX 还是 XeLaTeX,我都能得到相同的结果:
另外两个注释可能有用。首先,Will Robertson 最近建议使用显式文件名,而不是“人类可读的”系统名称拖船三十九(2018 年)。其次,SmallCapsFeatures
可以嵌入到其他功能中,以便您可以对直立或粗体进行额外的控制:
\setmainfont{texgyretermes}[
Extension = {.otf},
UprightFont = {*-regular},
ItalicFont = {*-italic},
BoldFont = {*-bold},
BoldItalicFont = {*-bolditalic},
UprightFeatures = {SmallCapsFont=texgyreheros-regular.otf, SmallCapsFeatures={Letters=SmallCaps, Color=992211}},
BoldFeatures = {SmallCapsFont=/Users/John/Library/Fonts/FiraGO-Heavy.otf, SmallCapsFeatures={Letters=SmallCaps, Color=112299}, Color = FF4422},
]