我在 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>