Я борюсь с выбором шрифта. Я просто не могу в этом разобраться.
У меня есть класс документа, который я разрабатываю, который использует 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},
по причинам, обсуждаемым в документации Fontspec в разделе 4.1.
Этот код работает в моей системе под 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:
Два дополнительных замечания могут быть полезны. Во-первых, Уилл Робертсон недавно рекомендовал использовать явные имена файлов, а не «человечески понятные» системные именаБуксирБоот39(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},
]
Вы можете указать полный путь к файлам шрифтов Trajan-Pro, например, как я сделал здесь для FiraGO-Heavy.