TeX 默认已知字体路径段

TeX 默认已知字体路径段

一段时间以来,我一直在 Sharelatex 中处理一个大型文档,但一直收到字体规范错误,提示无法找到字体文件。然而,尽管出现此错误消息,但文档仍能正常编译,直到我将字体切换为 Garamond。现在,文档将仅编译文档的无衬线部分。

下面是没有无衬线部分的 MWE。

\documentclass[12pt]{scrbook}
\usepackage[paperwidth=7.5in, paperheight=9.25in, top=1in,   bottom=1.375in, left=1in, right=1in]{geometry}
\setlength{\parindent}{2em}

%Fonts
\usepackage{fontspec}
 %This is ShareLaTeX Specific (or if the fonts are not installed in your system)
%-----------------------------------------------------------------------
% Garamond
\setmainfont[BoldFont=GARABD.otf,ItalicFont=GARAIT.otf]{GARAMOND.otf}

\begin{document}
Something is wrong! I am momentarily blinded and confused by moving, overlapping, translucent images that overwhelm my vision of the book I am reading. The room I sit in is visually a frenetic whirling mess. Abject fear grips me, first at the base of my spine, then it rips up my spine to my cortex and beyond. \par

\end{document}

有什么办法可以解决这个问题吗?我尝试过更改文件名,但是没有效果。

答案1

setmainfont您一起建设区分大小写字体路径。

  • Path=字体的工作目录
  • BoldFont=文件名路径段
  • ItalicFont=文件名路径段
  • 扩展名=路径的文件扩展名

你的代码不起作用,因为你告诉 fontspec 在所有路径中查找这样的(示例显示粗体字体的路径)

/usr/local/texlive/2016/texmf-dist/fonts/opentype/GARABD.otf/GARAMOND.otf
/usr/local/texlive/2016/texmf-dist/fonts/truetype/GARABD.otf/GARAMOND.otf
/usr/local/texlive/2016/texmf-dist/fonts/type1/GARABD.otf/GARAMOND.otf
... any other font directory in your environment/GARABD.otf/GARAMOND.otf

TeX 默认已知字体路径段

在基于 Unix 的计算机上,你可以使用以下命令找出 TeX 字体文件夹:

cat $(kpsewhich -var-value TEXMFSYSVAR)/fonts/conf/texlive-fontconfig.conf

其计算结果/home/texlive/2016/texmf-var/fonts/conf为 2016 年,或您所安装版本的相应年份。

否则,fontspec确实有一个针对系统字体的自动路径查找机制,您只需执行即可\setmainfont{Arial},但这并不明确,因此根据我的经验,会导致跨平台或跨计算机兼容性问题。

如何使用 fontspec 加载 texlive 字体?

让您自己动手

找到文件所在的文件夹(不知道你的操作系统,我只能编造一些东西)

给定的字体位于同一文件夹中,其名称如下:

/Library/Fonts/GARABD.otf
/Library/Fonts/GARAIT.otf
/Library/Fonts/GARAMOND.otf

我该如何fontspec为此做准备?

\usepackage{fontspec}
\setmainfont[%
  Path = /Library/Fonts/ ,
  UprightFont = MOND ,
  BoldFont = BD ,
  ItalicFont = IT ,
  Extension = .otf
]{GARA} % {contains only what is common among all file names (usually basename of font family)} 

笔记

许多专业字体在其文件名中使用破折号来分隔变体,因此您经常会看到以下内容:

/Library/Fonts/DejaVuSansCondensed.ttf
/Library/Fonts/DejaVuSans.ttf
/Library/Fonts/DejaVuSans-ExtraLight.ttf
/Library/Fonts/DejaVuSansCondensed-Bold.ttf
/Library/Fonts/DejaVuSans-BoldOblique.ttf
/Library/Fonts/DejaVuSansCondensed-Oblique.ttf
/Library/Fonts/DejaVuSansCondensed-BoldOblique.ttf
/Library/Fonts/DejaVuSans-Oblique.ttf
/Library/Fonts/DejaVuSans-Bold.ttf

我该如何设置?嗯,不幸的是,fontspec它不能同时支持所有这些字体,所以我要么选择较少的字体,\setmainfont要么将它们分成系列来加载它们,例如\newfontfamily\dejavucondensed \newfontfamily\dejavu \newfontfamily\dejavulight

\usepackage{fontspec}
\newfontfamily\dejavu[%
  Path = /Library/Fonts/ ,
  UprightFont = ,
  BoldFont = -Bold ,
  ItalicFont = -Oblique ,
  Extension = .ttf
]{DejaVuSans} % {contains only what is common among all file names (usually basename of font family)} 

答案2

命令\set*font应接受指向包含文件的目录的参数Path=[Path]。这仅在使用系统未知的字体时才有意义。否则,您应该提供字体系列的名称,如 bernard 所述(第一条评论)。

相关内容