这是我的 MWE 及其输出(XeLaTeX,TeXLive 2012 最新版本,Windows 7):
\documentclass{article}
\usepackage{fontspec}
\usepackage{ebgaramond} %%% <== This one
\setsansfont[%
]{ITC Franklin Gothic Std Book}
\newfontfamily\xffamily[%
BoldFont=*,
]{ITC Franklin Gothic Std Book}
\usepackage{lipsum}
\begin{document}
\sffamily
\lipsum[39]
\xffamily
\lipsum[39]
\end{document}
第一段意外地以粗体显示。(从 PDF 来看,它实际上是 Franklin Gothic Std Demi)。如果我删除对 的调用ebgaramond
,所有内容都会以正常类型显示。
虽然我知道如何消除这种情况(参见 的定义\xffamily
),但我真的很想知道发生了什么,因为我真的觉得我没有必要。
有人能告诉我发生了什么事吗?
更新 1
ebgaramond.sty
包含以下行:
\renewcommand{\bfdefault}{m}
如果删除此行,我的问题就解决了。但是,我仍然想了解这里发生了什么,尤其是因为我认为我没有调用任何粗体内容。
更新 2
我与 的维护者 Bob Tennent 取得了联系ebgaramond.sty
,他正在审查此案......
答案1
由于我没有 ITC Franklin Gothic,所以我尝试使用 Gill Sans,但结果是一样的。以下是我在日志文件中得到的结果:
.................................................
. fontspec info: "defining-font"
.
. Font family 'GillSans(0)' created for font 'Gill Sans' with options [,].
.
. This font family consists of the following shapes:
.
. * 'normal' with NFSS spec.:
. <->"Gill Sans/AAT:"
.
. * 'normal' with NFSS spec.:
. <->"Gill Sans/B/AAT:"
.
. * 'italic' with NFSS spec.:
. <->"Gill Sans/I/AAT:"
.
. * 'italic' with NFSS spec.:
. <->"Gill Sans/BI/AAT:"
.................................................
这指的是“sans”系列。您知道哪里出了问题吗?赋予含义m
会\bfdefault
导致fontspec
将粗体字体分配给中等粗细后它分配了中等粗细的字体。
\xffamily
相反,对于我得到的定义
.................................................
. fontspec info: "defining-font"
.
. Font family 'GillSans(1)' created for font 'Gill Sans' with options
. [,BoldFont=*, ].
.
. This font family consists of the following shapes:
.
. * 'normal' with NFSS spec.:
. <->"Gill Sans/AAT:"
.
. * 'normal' with NFSS spec.:
. <->"Gill Sans/AAT:"
.
. * 'italic' with NFSS spec.:
. <->"Gill Sans/I/AAT:"
.
. * 'italic' with NFSS spec.:
. <->"Gill Sans/I/AAT:"
.................................................
这同样也是错误的。
我的结论是,依赖于等fontspec
的含义来将字体分配给系列以及所做的设置(以避免出现不存在的粗体字体的消息)是完全错误的。\mddefault
\bfdefault
ebgaramond.sty
“解决方案”
\let\origbfdefault\bfdefault
\usepackage{ebgaramond}
\let\bfdefault\origbfdefault