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”语法,我不熟悉这种语法。