Помощь по Fontspec, объединение шрифтов

Помощь по Fontspec, объединение шрифтов

Я борюсь с выбором шрифта. Я просто не могу в этом разобраться.

У меня есть класс документа, который я разрабатываю, который использует 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. введите описание изображения здесь

Связанный контент