使用 fontspec 指定各种比例的各种字体

使用 fontspec 指定各种比例的各种字体

fontspec包允许我们定义类似以下内容的内容:

\setmainfont{texgyrepagella-regular.otf}[
    BoldFont = texgyrepagella-bold.otf ,
    ItalicFont = texgyrepagella-italic.otf ,
    BoldItalicFont = texgyrepagella-bolditalic.otf ]

它还有一个scale选项。

我想将两者结合起来,然后这样说:主字体的X.otf比例为 1,如果主字体为粗体,则使用Y.otf比例为 0.8 的字体:

\documentclass{article}
\usepackage{fontspec}
% Font definition goes here...

\begin{document}
This is a simple text. It must be typeset with `X.otf`.
\textbf{This is a bold text. It must be typeset with `Y.otf`.}
\end{document}

我怎样才能实现这个目标?

请注意,此缩放仅适用于主字体为粗体时,而不适用于文本中的所有粗体字体。

答案1

假设两种字体“X”和“Y”分别为TeX Gyre PagellaTeX Gyre Heros(分别是 Palatino 和 Helvetica 的克隆)。两种字体都具有正常、粗体、斜体和粗斜体形状/粗细。要将选项限制Scale=0.8为仅粗体粗细TeX Gyre Heros,您可以发出命令

\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}  %% font "X" 
\setsansfont[BoldFeatures={Scale=0.8}]{TeX Gyre Heros}  % font "Y"

这样,正常粗细、斜体和粗斜体形状TeX Gyre Heros不是缩放。您加载的任何其他字体系列的粗体字体也不会被缩放。


附录,由 OP 的后续评论提示:要使用一种字体,比如说“Pagella”作为主要(即,正常重量和正常形状)字体,并且说“Heros”是在和中使用的字体\textbf{...}{\bfseries ...}并且要将粗体 Heros 缩放 0.8 倍,您应该在序言中输入以下说明:

\usepackage{fontspec}
\setmainfont[BoldFeatures={Scale=0.8}, 
             BoldFont = {TeX Gyre Heros Bold}]
            {TeX Gyre Pagella}

相关内容