我的文档中的斜体变得不正常了:发生了什么?

我的文档中的斜体变得不正常了:发生了什么?

我定期维护一个长文档(通过‘维持’我的意思是:添加新部分,删除一些旧内容等,而无需彻底改变整个内容)。我正在使用XeLaTeX由标准 MacTex 安装提供的。该文档使用TimesmacOS 上提供的标准字体。这种字体已经使用多年,没有问题。

昨天我醒来发现我的文档中的斜体字似乎毫无缘由地被破坏了。所有斜体部分现在排版为加粗斜体。经过调查,我发现这个问题并不只存在于这个文件。例如,我可以用这个小例子重现这个问题。

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Times}

\begin{document}

Normal is OK.

\textbf{Bold is OK.}

\textbf{\textit{Bold Italic is OK.}}

\textit{Italic is broken :-(}

\end{document}

这就是我得到的!

以下是我所知道的内容:

  • 这是最近出现的问题。我 100% 确定 Italic 以前没问题。我很挑剔,能立即注意到这些问题。

  • 这可能是字体特有的。Helvetica例如,如果我改用,则不会发生此问题。

  • 这并非特定于命令textit。导致斜体文本的任何其他命令/标题/事件也将被破坏。

  • 字体文件没有丢失或损坏。这是我检查的第一件事。所有样式都很好,包括斜体。我可以Times在任何应用程序中照常使用,没有问题。

  • 我最近没有添加任何 TeX 包,也没有以任何方式修改系统字体,至少没有手动修改过。我没有动过我的 TeX 安装。

  • 我最近更新到了 High Sierra,这是一个小更新,据我所知,它并不影响我的 TeX 安装。

  • 这个奇怪的错误让我震惊不已,我正在寻求建议!

答案1

随着 MacOSX 10.13“High Sierra”的最新推出,许多字体系列的“家族成员”过去作为单独的字体文件分发,现在则被分组到一起保存在.ttc文件中。

对于受此更改影响的部分(但肯定不是全部)字体系列,该luaotfload实用程序(由 LuaLaTeX 调用fontspec)似乎需要一些明确的帮助来确定从给定字体系列中选择哪些“系列成员”。 其中一个系列是Times [Roman],其系列成员包括TimesTimes BoldTimes ItalicTimes Bold Italic

附言:我快速粗略地检查了哪些 .ttc 字体位于此问题中/Libruary/Fonts/System/Library/Fonts受其影响。(请参阅下面的代码以了解如何运行此检查。)受影响的字体包括 Avenir、Futura、Gill Sans、Helvetica、Helvetica Neue、Hoefler Text、Optima 和 Times。一些不受影响的字体包括 Avenir Next、Baskerville、Charter、Didot、Menlo、Palatino、PT Sans 和 PT Serif。显然,这个列表远未完成。我目前还无法判断 ttc 文件内部发生了什么,导致luaotfload在某些情况下成功,而在其他情况下失败。

当这种情况发生时,有必要改变

\setmainfont{Times}

\setmainfont{Times}[ItalicFont    ={* Italic},
                    BoldFont      ={* Bold},
                    BoldItalicFont={* Bold Italic}]

在这种情况下Hoefler Text,有必要改变

\setmainfont{Hoefler Text}

\setmainfont{Hoefler Text}[ItalicFont    = {* Italic},
                           BoldFont      = {* Black}, 
                           BoldItalicFont= {* Black Italic}]

这是因为使用 Hoefler Text,大胆的家族成员被命名为“Black”和“Black Italic”,而不是“Bold”和“Bold Italic”。


完整的 MWE:

\documentclass{article}
\usepackage{fontspec}
\newcommand{\test}[1]{\setmainfont{#1}#1\par
  Normal \textbf{Bold} \textit{Italic} \textbf{\textit{Bold Italic}}%
  \par\smallskip}
\begin{document}

\begin{document}

\verb+fonts in /System/Library/Fonts+

\smallskip
\test{Avenir}
\test{Avenir Next}
\test{Helvetica}
\test{Helvetica Neue}
\test{Menlo}
\test{Optima}
\test{Palatino}
\test{Times}

\medskip
\verb+fonts in /Library/Fonts+

\smallskip
\test{Baskerville}
\test{Bodoni 72}
\test{Charter}
\test{Didot}
\test{Futura}
\test{Gill Sans}
\test{Hoefler Text}
\test{PT Sans}
\test{PT Serif}

\end{document}

\end{document}

相关内容