在以下 MCE 中,默认字体是无衬线字体,就像默认情况下类的情况一样beamer
。“主”字体(由 声明\setmainfont
)与“默认”(“正常”)字体不同,而是“罗马”字体。
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\setmainfont{Punk Nova}[Color=red]
\setsansfont{QTAgateType}
\setmonofont{QTArabian}[Color=blue]
\renewcommand*\familydefault{\sfdefault}
\begin{document}
\begin{description}
\item[Default:] Test
\item[Roman:] \textrm{Test}
\item[Sans serif:] \textsf{Test}
\item[Monospace:] \texttt{Test}
\end{description}
\end{document}
所以:
- 中“main”的用途是什么
\setmainfont
? - 的目的不是
\setmainfont
声明罗马字体吗?如果是这样,为什么不叫这个命令呢\setromanfont
?
答案1
它设置默认字体(但仅限于你重置它之前)
如果你修改你的例子
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\normalfont \showthe\font
\setmainfont{Punk Nova}[Color=red]
\normalfont \showthe\font
\setsansfont{QTAgateType}
\setmonofont{QTArabian}[Color=blue]
\renewcommand*\familydefault{\sfdefault}
\begin{document}
\begin{description}
\item[Default:] Test
\item[Roman:] \textrm{Test}
\item[Sans serif:] \textsf{Test}
\item[Monospace:] \texttt{Test}
\end{description}
\end{document}
你得到
> \TU/lmr/m/n/10 .
<recently read> \font
l.5 \normalfont \showthe\font
此时默认字体仍为拉丁现代罗马字体
然后你得到
> \TU/PunkNova(0)/m/n/10 .
<recently read> \font
l.7 \normalfont \showthe\font
显示效果\setmainfont
然后你
\renewcommand*\familydefault{\sfdefault}
这将使默认字体选择您为 Sans serif 指定的任何字体。(beamer 在开始文档时也做了类似的事情)