正如这个问题的标题所暗示的。
\setmainfont{font name}
和
\newfontfamily\familyname{font name}
\def\rmfamily{\familyname}
我查看了字体规范的源代码。我认为上述两个实际上是相同的。但是,我仍然不太熟悉 latex3 语法,所以我可能会错过一些东西。
答案1
通常\rmdefault
应扩展为表示字体名称的字符串;按照您的定义,它会扩展为\familyname
,其扩展为不是字符串:例如,使用\newfontfamily\familyname{Hoefler Text}
,扩展\familyname
is \protect\familyname
(末尾有一个空格,与“健壮”命令一样)。扩展\familyname
is
\fontencoding {EU1}\fontfamily {HoeflerText(0)}\selectfont
\rmdefault
之后的展开\setmainfont{Hoefler Text}
是
HoeflerText(0)
所以它们是完全不同的。
此外,使用\rmfamily
而\rmdefault
不是 不会产生等效结果:首先,\rmfamily
应该是一个强大的命令;它的扩展导致
\protect\rmfamily
然后在
\not@math@alphabet\rmfamily\mathrm\fontfamily\rmdefault\selectfont
因此,再次,也\DeclareRobustCommand{\rmfamily}{\familyname}
不会起到同样的作用。