加载后设置字体系列默认值

加载后设置字体系列默认值

fontspec提供命令\setmainfont\setsansfont\setmonofont加载字体分别将其设置为默认的罗马字体、无衬线字体或等宽字体。它还提供命令\newfontfamily,该命令加载字体并定义激活该字体的命令:

% loads the font family 'Latin Modern Roman' and defines the command `\latinmodernroman`,
% which activates it
\newfontfamily\latinmodernroman{Latin Modern Roman}
\latinmodernroman% activates the Latin Modern Roman font family

% loads the font family 'Latin Modern Roman' and *also* sets it as the roman family default
\setmainfont{Latin Modern Roman}

如何将加载和设置分离,即首先使用\newfontfamily和加载字体然后将其设置为家庭默认?

\newfontfamily\latinmodernroman{Latin Modern Roman}

\def\rmdefault{  what?  }
% My understanding is that it's 'lmr' for 'Latin Modern Roman'
% But how about arbitrary fonts? How to know their "LaTeX identifiers" when using fontspec?

我一直试图理解字体规格.dtx,但我不熟悉“expl”语法。

答案1

您正在寻找的是“NFSS 家族名称”(其中“NFSS 代表新的字体选择方案)。

第 5.2 条fontspec手动的:

在 fontspec 中,字体系列名称是根据字体的字体名称自动生成的;例如,第一次写入 \fontspec{Times New Roman} 将生成内部字体系列名称“TimesNewRoman(1)”。

解决方案在同一节中提供:NFSSFamily加载字体时使用该功能:

\newfontfamily\verbatimfont[NFSSFamily=myverbatimfont]{Inconsolata}

% Now, you can do:
\def\rmdefault{myverbatimfont}
\fontfamily{myverbatimfont}\selectfont

但请注意:

仅在必要时使用此功能;在所有其他情况下,建议使用 fontspec 生成的内置字体切换命令(例如上例中的 \verbatimfont)。

fontspec手册(同样,在同一节中)提到了作为包编程接口一部分的机制,该机制允许知道自动生成的 NFSS 系列名称。但是,它使用了“expl”语法,我不熟悉这种语法。

相关内容