TeX Live 2015 中的 texlive-fontconfig.conf

TeX Live 2015 中的 texlive-fontconfig.conf

我在 OS X 10.8.4 上使用最新版本的 MacTeX 2013。我的所有 TeX Live 软件包都是最新的。TeX Live 还将软件包列为已fontawesome安装。

我尝试将 FontAwesome 字体与XeLaTeX或一起使用LuaLaTeX,但收到字体未找到错误。确切的消息是:

kpathsea: Running mktexmf FontAwesome
! I can't find file `FontAwesome'.

有一个较长的回溯,为简洁起见,我省略了。如果需要解决此问题,请告诉我。

我已经尝试运行以下命令,但无济于事:

sudo -H mktexlsr
sudo -H updmap-sys

除了以上两个命令之外,这是一个 100% 全新的开箱即用安装,没有任何修改。

这是一个最小的错误示例:

\documentclass{article}
\usepackage{fontawesome}

\begin{document}
\faTwitter
\end{document}

我该如何添加这种缺失的字体?

编辑(2021 年第一季度):请参阅 Justin Curry 关于将软件包名称从 更新为 的fontawesome回答fontawesome5

答案1

在我的 MacBook(在 MacOSX 10.7.5 下运行 MacTeX 2013)上,LuaLaTeX如果我添加指令,您的示例可以正确编译\usepackage{fontspec}

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass[border=2pt]{standalone}
\usepackage{fontspec}
\usepackage{fontawesome}
\begin{document}
\faTwitter
\end{document}

附录:在我下载了此字体的 OpenType 版本后——顺便说一下,https://fontawesome.com/docs似乎比 CTAN 上的版本略新——通过在FontBook应用程序中打开它并单击“安装”按钮来“激活”它,上面的 MWE 也可以在 XeLaTeX 下正确编译。我想这并不奇怪,因为Xe(La)TeX加载字体等活动在很大程度上取决于底层操作系统。


附录,2020 年 2 月中旬:在 TeXLive2019 或 MacTeX2019 下运行时,上面显示的演示文档在 LuaLaTeX 下继续正常工作。要让它在 XeLaTeX 下编译,您可能需要插入指令

\defaultfontfeatures{Path = /usr/local/texlive/2019/texmf-dist/fonts/opentype/public/fontawesome/}

指令\usepackage{fontspec}和之间\usepackage{fontawesome}

与 MacTeX2019 一起分发的文件的FontAwesome.otf版本号为 4.6.3。OpenType 字体文件有一个稍新一些的版本——准确地说是 4.7.0 版——github。4.6.3 和 4.7.0 都可追溯到 2016 年。一个小警告:我实际上还没有测试过稍新一点的版本。但是,我相信它应该与该软件包FontAwesome.otf兼容。fontawesome

答案2

在 Ubuntu 上,你可以安装字体真棒使用以下命令:

sudo apt-get install texlive-fonts-extra 

答案3

如果有人想使用xelatex不安装字体的情况下使用此功能,请参阅部分4.2 按文件名字体规格.pdf手动的:

在 XeTeX 中,当加载 TEX 发行版中存在的 OpenType 字体(例如)时,[通过文件名加载字体] 也是必需的/usr/local/texlive/2013/texmf-dist/fonts/opentype/public。这些位置的字体对 XeTeX 可见,但不能通过字体名称加载,只能通过文件名加载;LuaTEX 没有此限制。

由于fontawesome.sty只是通过名称引用字体:

% definition of \FA as a shortcut to load the Font Awesome font
\newfontfamily{\FA}{FontAwesome}

在加载之前,我们必须设置默认Path定位字体fontawesome

\documentclass{article}
\usepackage{fontspec}

\defaultfontfeatures{
    Path = /usr/local/texlive/2013/texmf-dist/fonts/opentype/public/fontawesome/ }
\usepackage{fontawesome}

\begin{document}
\faTwitter
\end{document}

您可能需要Path根据fontawesome安装位置进行更改。假设您使用的是 TeX Live,您可以通过运行以下命令找到字体文件的相对路径:

tlmgr info --list fontawesome

输出:

package:     fontawesome
category:    Package
shortdesc:   Font containing web-related icons.
longdesc:    The package offers access to the large number of web-related icons provided by the included font. The package requires the package, fontspec, running under XeTeX or LuaTeX.
installed:   Yes
revision:    31020
sizes:       doc: 173k, run: 101k
relocatable: Yes
cat-version: 3.1.1
cat-date:    2014-04-26 20:05:48 +0200
cat-license: other-free
collection:  collection-fontsextra
Included files, by type:
run files:
  texmf-dist/fonts/opentype/public/fontawesome/FontAwesome.otf
  texmf-dist/tex/latex/fontawesome/fontawesome.sty
doc files:
  texmf-dist/doc/latex/fontawesome/README details="Readme"
  texmf-dist/doc/latex/fontawesome/fontawesome.pdf
  texmf-dist/doc/latex/fontawesome/fontawesome.tex

答案4

最终,您需要/path/to/FontAwesome.otf由 来生产\newfontfamily\FA[Path=/path/to/,Extension=.otf]{FontAwesome}

请注意,此答案假定您没有将 TeX Live 字体添加到系统环境变量中,以便在 fontspec 搜索系统字体时找到它们。(要么是因为您不知道如何操作,要么是因为它不切实际,例如多客户端版本控制系统的情况,您无法保证每个客户端都有相同的系统环境变量)。

假设您正在使用 XeLaTeX:为了最大限度地减少每个连续的 TeX Live 版本(2015、2016 等)的维护,我选择添加\defaultfontfeatures{Extension = .otf}而不是提供明确的路径。

这是因为 XeLaTeX 会自动加载$(kpsewhich -var-value TEXMFSYSVAR)/fonts/conf/texlive-fontconfig.conf到其路径中。

TeX Live 2015 中的 texlive-fontconfig.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/local/texlive/2015/texmf-dist/fonts/opentype</dir>
  <dir>/usr/local/texlive/2015/texmf-dist/fonts/truetype</dir>
  <dir>/usr/local/texlive/2015/texmf-dist/fonts/type1</dir>
</fontconfig>

随着每次发布,它都会更新,因此您无需任何维护成本;)

所以你只需要通过这种方式间接添加扩展参数即可\newfontfamily{\FA}{FontAwesome}。当然前提是你使用的字体是 OTF。

\documentclass{article}
\usepackage{fontspec}

\defaultfontfeatures{Extension = .otf}% adds .otf to end of path when font loaded without ext parameter e.g. \newfontfamily{\FA}{FontAwesome} > \newfontfamily{\FA}{FontAwesome.otf}
\usepackage{fontawesome} % Relevant path loaded (TeX Live 2015 expansion): /usr/local/texlive/2015/texmf-dist/fonts/opentype/FontAwesome causing missing font

\begin{document}
\faTwitter This is a test.
\end{document}

为了证明你的理解,你可以创建一个这样的文档,作为一个有趣的练习:

\listfiles
\documentclass{article}
\usepackage{fontspec}

%\defaultfontfeatures{
%  Extension = .otf
%}
%\usepackage{fontawesome}
\newfontfamily\fatest{FontAwesome.otf} % Explicitly provide .otf
%or
%\newfontfamily\fatest[Extension=.otf]{FontAwesome}


\begin{document}
%\faTwitter This is a test
{\fatest\char"F099} This is a test
\end{document}

这是有效的,因为以下内容是等效的:

  • \newfontfamily\fatest{FontAwesome.otf}
  • \newfontfamily\fatest[Extension=.otf]{FontAwesome}
  • \defaultfontfeatures{Extension = .otf}\newfontfamily{\fatest}{FontAwesome}

因为它们都产生了与平台无关的路径。

例如基于Unix的:

/usr/local/texlive/2015/texmf-dist/fonts/opentype/FontAwesome.otf

并将fontspec尝试通过添加此 xml 文件中列出的每个前缀来加载字体:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
ANYTHING IN HERE GETS PREFIXED to the font file
</fontconfig>

tex.stackexchange.com/a/313886/13552

相关内容