fontspec – sans-serif 作为主要字体?

fontspec – sans-serif 作为主要字体?

fontspec定义命令

\setmainfont{font name}[font features]
\setsansfont{font name}[font features]
\setmonofont{font name}[font features]

设置文档的默认字体。但是,如果我使用无衬线字体作为主字体,例如\setmainfont{Latin Modern Sans}\rmfamily被重新定义为 Latin Modern Sans,那么我就无法指定单独的衬线字体。当然,我可以使用设置衬线字体\setsansfont,但这样字体就全部倒置了。

难道不应该有一个命令吗\setseriffont?我不认为“主”字体必须始终是衬线字体。如果这是有意为之,那么将无衬线字体作为默认字体的最佳方法是什么,但仍然将衬线字体定义为\rmfamily

(这与“用无衬线字体排版整个文档的最简单方法是什么?”。我已经解释过,我可以使用 来排版文档为无衬线字体\setmainfont。这个问题是关于命令 的语义,与相比,\setmainfont它似乎并没有从其名称中暗示任何特定的字体特征——另请参阅\setsansfont\rmfamily\sffamilyWill Robertson 的评论

答案1

\renewcommand{\familydefault}{\sfdefault}

那是:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\renewcommand{\familydefault}{\sfdefault}

\begin{document}
  abc
  \textrm{abc}
  \textsf{abc}
\end{document}

无衬线字体

答案2

如果有助于保持一切清晰,您可以使用命令\setromanfont代替\setmainfont,尽管 fontspec 手册没有提到它:

\documentclass{article}
\usepackage{fontspec}
\setromanfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\renewcommand{\familydefault}{\sfdefault}

\begin{document}
  abc
  \textrm{abc}
  \textsf{abc}
\end{document}

相关内容