\fontspec 或 \setmainfont 不从当前目录加载字体

\fontspec 或 \setmainfont 不从当前目录加载字体

我正在尝试在我的 latex 文档中使用 GARA.TFF (Garamond)。当我尝试从当前目录加载字体时,\setmainfont 找不到该字体。以下是文档:

\documentclass{article}
\usepackage{fontspec}
\begin{document}
    \setmainfont{GARA.TTF}
    Testfont
\end{document}

目录内容:

drwxr-xr-x 2 reuter ids_s   4096 2011-06-09 16:39 .
drwxr-xr-x 4 reuter ids_s   4096 2011-06-09 16:38 ..
-rw-r--r-- 1 reuter ids_s 198072 2004-04-02 21:06 GARA.TTF
-rw-r--r-- 1 reuter ids_s    115 2011-06-09 16:39 test.tex

输出xelatex test.tex

[...]
fontspec.cfg loaded.
(/usr/share/texmf-texlive/tex/xelatex/fontspec/fontspec.cfg))
No file test.aux.

kpathsea: Running mktextfm GARA
/usr/share/texmf/web2c/mktexnam: Could not map source abbreviation G for GARA.
/usr/share/texmf/web2c/mktexnam: Need to update /usr/share/texmf-texlive/fonts/map/fontname/special.map?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GARA
This is METAFONT, Version 2.718281 (TeX Live 2009/Debian)


kpathsea: Running mktexmf GARA
! I can't find file `GARA'.
<*> \mode:=ljfour; mag:=1; nonstopmode; input GARA

Please type another input file name
! Emergency stop.
<*> \mode:=ljfour; mag:=1; nonstopmode; input GARA

Transcript written on mfput.log.
grep: GARA.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GARA' failed to make GARA.tfm.
kpathsea: Appending font creation commands to missfont.log.
! Font \zf@basefont=GARA.TTF at 10.0pt not loadable: Metric (TFM) file or insta
lled font not found.
\zf@fontspec ...ntname \zf@suffix " at \f@size pt 
                                                  \unless \ifzf@icu \zf@set@...
l.7 \setmainfont{GARA.TTF}

? 

我不知所措。它应该删除扩展吗?我可以成功加载已安装的字体。\setmainfont{Arial}效果很好。

顺便说一下,这是在 Kubuntu 上。

答案1

看来您使用的版本有点旧fontspec。然后尝试

\setmainfont{"[GARA.TTF]"} % with brackets, with or without quotes

括号表示“使用字体文件名”。这应该可以工作,就像 XeTeX 原语一样

\font\1="[GARA.TTF]" \1

在旧版本中fontspec,必须使用ExternalLocation选项来指定带有文件名的字体:

\setmainfont[ExternalLocation]{GARA.TTF}
% or something like \setmainfont[ExternalLocation=/usr/share/fonts/]{GARA.TTF}

该选项在较新版本中也可以使用Path,如果没有指定路径则不需要。

答案2

您必须在系统中安装字体:

$ sudo mkdir -p /usr/local/share/fonts # Create directory if it doesn't exist
$ sudo cp GARA.TTF /usr/local/share/fonts/ # Copy the font there
$ sudo fc-cache /usr/local/share/fonts/ # Update font cache
$ fc-list | grep -i garamond # Check it's there

并且它应该可以工作,使用 中给出的字体名称fc-list。例如,如果fc-list说:

$ fc-list | grep -i garamond
Garamond LT:style=Italic
Garamond LT:style=Regular

然后使用:

\setmainfont{Garamond LT}

答案3

对于每个 Overleaf 用户来说 - 如果你有一个本地字体目录,可以这样做:

\setmainfont[Path=fonts/]{myfont.ttf}

因为我花了太多时间才发现这个问题:请注意/路径末尾是必要的(但不是开头)!

相关内容