Windows/Unix Xelatex 字体与 fontspec 和 ttf 字体半粗体粗细的使用

Windows/Unix Xelatex 字体与 fontspec 和 ttf 字体半粗体粗细的使用

我正在尝试编写一个可以在 Windows 和 Unix 上编译的文件(我正在使用 alpine-tinytex 图像,但答案应该可以在 *nix 上移植)。

我想使用InconsolataXeLaTeX 的 google-font 的半粗体字体。对于 Windows,我手动安装了它,在 Alpine 中,我使用了

apk add ttf-inconsolata

使用 \newfontfamily\codefont{Inconsolata}我可以在 Unix 中使用字体,甚至可以将粗细更改为标准变体(例如使用 粗体\textbf{}),但我无法使用半粗体。所有答案都启用非标准粗细(例如或者似乎依赖于加载不同的子字体。

我试过了

  1. \newfontfamily\codefont{Inconsolata Semi Bold}

在 Windows 上不起作用(未找到字体错误)。

  1. \newfontfamily\codefont{Inconsolata SemiBold}

在 Windows 上可以运行,但在 Linux 上失败

Package fontspec Error: The font "Inconsolata SemiBold" cannot be found.

  1. \newfontfamily\codefont{Inconsolata-SemiBold}(根据字体文档,这是 ttf 变体的名称)

它在 Windows 上运行良好,但在 Linux 上失败,并kpathsea显示:`

kpathsea: Running mktextfm Inconsolata-SemiBold
/home/appuser/.TinyTeX/texmf-dist/web2c/mktexnam: Could not map source abbreviation  for Inconsolata-SemiBold.
/home/appuser/.TinyTeX/texmf-dist/web2c/mktexnam: Need to update ?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; ; nonstopmode; input Inconsolata-SemiBold
This is METAFONT, Version 2.7182818 (TeX Live 2020) (preloaded base=mf)

kpathsea: Running mktexmf Inconsolata-SemiBold

! I can't find file `Inconsolata-SemiBold'.
<*> ...; ; nonstopmode; input Inconsolata-SemiBold

我认为这是最接近解决方案的,但我似乎仍然错过了一些东西。

编辑:

  1. \newfontfamily\codefont{Inconsolata-SemiBold.ttf}在 Windows 上可以工作但在 Unix 上失败:
kpathsea:make_tex: Invalid filename `[Inconsolata-SemiBold.ttf]/OT', contains '['
[...]
! Package fontspec Error: The font "Inconsolata-SemiBold" cannot be found.
[...]    
! Font TU/Inconsolata-SemiBold.ttf(0)/m/n/10.95=[Inconsolata-SemiBold.ttf]/OT a
t 10.95pt not loadable: Metric (TFM) file or installed font not found.
<to be read again>

答案1

我找到了一个适合我且可在 Windows 和 Unix 之间移植的解决方案。

我从软件包中安装了 Inconsolata 作为字体。在 ubuntu 中,apt-get install fonts-inconsolata安装.otf字体的版本 - 例如,在 alpine 中apk add ttf-inconsolata仅安装字体的常规和粗体粗细。这里有几个关于如何使用不同粗细字体的答案.otf,但它们似乎都与在 Windows 下编译的文件不兼容.tex

Inconsolata-SemiBold.ttf因此,我通过将两者都复制到/usr/share/fonts/TTF/Inconsolata-SemiBold.ttf以及来手动安装所需的字体变体(在我的情况下) /usr/share/fonts/truetype/inconsolata/Inconsolata-SemiBold.ttf。这样,我可以直接选择字体或自动将其用作 Inconsolata 的半粗体变体(例如在列表中)。

为了使其正常工作,字体必须具有正确的权限(chmod 644),并且字体缓存必须更新(例如/usr/bin/fc-cache -fv)。

在我的.tex文件中,两个版本

\newfontfamily\codefont{Inconsolata-SemiBold}
\newfontfamily\listingfont{Inconsolata}

lstlisting例如在 Windows 和 *nix 上使用半粗体即可。

相关内容