fontspec FakeBold 影响图形中的文本

fontspec FakeBold 影响图形中的文本

在下面的最小示例中(使用 MacTex 中的 XeLaTeX 编译),FakeBold包中的选项fontspec按预期用于正文,使用 Times 来表示我在实际文档中使用的非默认字体。但是,FakeBold还会加粗所含图形中使用的 Helvetica 字体plot.pdf(可从这里) 尽管 Helvetica 字体未嵌入该 PDF 中。

此外,无论设置如何,Helvetica 字体都会被加粗到相同的程度,FakeBoldFakeBold=0.5,,都会在 Helvetica 字体中产生相同的加粗量。但是,如果我将 Helvetica 嵌入到中,则在图形中可以很好地工作。FakeBold=1FakeBold=3plot.pdfFakeBold

这里有两个问题:

  1. FakeBold仅适用于《时代》杂志,但它影响了图形中的 Helvetica。

  2. 在图形中没有嵌入 Helvetica 的情况下,显然检测到图形中存在某种文本,并应用了对主文本fontspec设置不敏感的加粗。FakeBold

我尝试FakeBold通过在图形之前设置来防止图形中的文本变粗,FakeBold=0但没有效果。我也试过了\setsansfont[FakeBold=0]{Helvetica},但这当然没有效果,因为图形中的文本没有被识别为 Helvetica。我尝试了其他字体作为正文和图形中的字体,但出现了同样的情况。文档中似乎没有提到这一点fontspec,我无法进入其源代码来寻找原因。

如果有人能提示我如何克服这个问题,我将不胜感激。如果这个问题太明显,我深表歉意。

\documentclass{minimal}

\usepackage{graphicx}

\usepackage{fontspec}
\setmainfont[FakeBold=1]{Times}

\begin{document}

Test test test

\includegraphics{plot.pdf}

\end{document}

答案1

我不太确定,但第二段的最后一句话听起来好像如果将字体嵌入到 plot.pdf 中,问题就会消失。那么在我看来,这是解决问题的正确方法。应该始终将所有字体嵌入 pdf 中,而不是依赖系统上的外部字体。

但如果出于某种原因您无法嵌入字体。您也可以通过选择并使用图形前没有 FakeBold 的字体。一个简单的点就足够了:

\documentclass{minimal}

\usepackage{graphicx}

\usepackage{fontspec}
\setmainfont[FakeBold=1]{Times New Roman}



\begin{document}

Test test test

\begingroup
\fontspec{Times New Roman}{\color{white}.}
\includegraphics{plot.pdf}
\endgroup

\end{document}

相关内容