如何在 fontspec 中定义与 BoldFont 不同的字体?

如何在 fontspec 中定义与 BoldFont 不同的字体?

更新:我正在努力寻找解决方案。这有效:

\setmainfont{EBGaramond}[
  UprightFont = /Users/moacir/Library/Fonts/EBGaramond ,
  % Pick a system font that is also .otf:
  BoldFont = /System/Library/Fonts/SFNSDisplayCondensed-Thin ,
  Extension = .otf
]

因此,不使用Pathfontspec 中的选项是解决此问题的一种方法。

但如果我删除Extension,就像这样:

\setmainfont{EBGaramond}[
  UprightFont = /Users/moacir/Library/Fonts/EBGaramond.otf ,
  BoldFont = /System/Library/Fonts/SFNSDisplayCondensed-Thin.otf
]

有时候是这样的:

/usr/local/texlive/2017/texmf-dist/web2c/mktexnam: Could not map source abbreviation E for EBGaramond.

换句话说,除非Extension定义,否则无法找到 EBGaramond。但如果我定义它,那么我就无法使用 Helvetica Bold。它不是.otf,而是隐藏在 里面/System/Library/Fonts/Helvetica.dfont

最后,如果我将 EB Garamond 换成 Humboldt Fraktur ( /Users/moacir/Library/Fonts/HumboldtFraktur-Regular.ttf),也会得到类似的错误,这意味着 EB Garamond 是不是负责任的:

/usr/local/texlive/2017/texmf-dist/web2c/mktexnam: Could not map source abbreviation H for HumboldtFraktur-Regular

因为 EB Garamond 没有与之关联的粗体,所以在极少数情况下我需要粗体字体时,我会改用 Helvetica Bold。我以前这样做:

\setmainfont[BoldFont={Helvetica Bold}]{EB Garamond}

这很有效只要计算机可以找到 EB Garamond。当它找不到时,这似乎是越来越频繁,那我就没那么幸运了。但如果我尝试:

\setmainfont{EBGaramond}[
  Path = /Users/moacir/Library/Fonts/,
  BoldFont = {Helvetica Bold} ,
  Extension = .otf
  ]

它在我定义的路径中寻找 Helvetica:

kpathsea:make_tex: Invalid fontname `[/Users/moacir/Library/Fonts/Helvetica Bold.otf]/OT', contains '['

它不在那里;它是系统加载的字体。我怎样才能让它找到 Helvetica?

相关内容