16

I am trying to use GARA.TFF (Garamond) in my latex document. \setmainfont can not find the font when I try to load it from the current directory. Here is the document:

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

Directory contents:

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

Output of 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}

? 

I am at a loss. Is it supposed to strip the extension? I can succesfully load fonts that are installed. \setmainfont{Arial} works like a charm.

This is on Kubuntu, by the way.

3
  • And welcome to TeX.SE!
    – raphink
    Jun 9, 2011 at 14:52
  • It works fine for me (windows, miktex 2.9). \setmainfont{Artbrush.ttf} includes Artbrush.ttf from the current folder (it doesn't work if I use the font name instead of the file name). But it is possible that it doesn't work in TeXLive. On the other side your TeXLive is quite old and so probably also your fontspec. Perhaps you need the ExternalLocation option or something like this. Jun 9, 2011 at 15:11
  • See also this question: Load fonts that are in a ./fonts directory
    – Alan Munn
    Jun 9, 2011 at 16:34

3 Answers 3

15

It seems that you use a little old version of fontspec. Then try

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

The brackets means “use font file name.” This should work, like XeTeX primitive

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

In old versions of fontspec, one must use ExternalLocation option to specify a font with it's file name:

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

This option can also used as Path in newer versions, and it is not necessary if no path is specified.

5
  • Is the manual wrong then?
    – raphink
    Jun 9, 2011 at 15:14
  • @Raphink: No. The document on CTAN is quite new, but the package in your computer may be old. You can look at the manual in your own computer to see how fontspec works in that version. (At /usr/share/texmf-texlive/doc/..., I'm not sure.) BTW, the use of brackets is low-level XeTeX syntax.
    – Leo Liu
    Jun 9, 2011 at 15:21
  • Although the brackets did not work, your comment pointed me in the right direction. The correct syntax on my system is \setmainfont[ExternalLocation]{GARA.TTF}. If you add the hint with the documentation to your answer, I'll accept it.
    – TheFogger
    Jun 9, 2011 at 15:52
  • 1
    @TheFogger ebian and Ubuntu still contain TeX Live 2009. fontspec has been significantly improved since then. If you want updated packages, I would recommend to install TeX Live directly from TUG instead of using the Debian packages. That way you can always get current package versions by running sudo tlmgr update --all.
    – Caramdir
    Jun 9, 2011 at 15:58
  • @TheFogger: We use brackets for this purpose in ctex package since May 2009 (TeX Live 2008) until now. I've just tested fontspec v1.18 in TUG's TeX Live 2009 on an Ubuntu vitual machine, and this syntax still works on my computer. I guess there're still some questions, but I can't point out where it is.
    – Leo Liu
    Jun 9, 2011 at 16:32
2

You have to install the font in your system:

$ 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

and it should work, using the font name as given in fc-list. For example, if fc-list says:

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

Then use:

\setmainfont{Garamond LT}
2
  • Having to install the font would be unfortunate. I do not want to install the fonts, because I may have to compile the document on different systems. The fontspec documentation [mirror.ctan.org/macros/latex/contrib/fontspec/fontspec.pdf] states on page 6 that you can also load the fonts from the current directory, or any directory in fact.
    – TheFogger
    Jun 9, 2011 at 15:03
  • Ah, I hadn't read that part of the manual :-) That said, I get the same error as you with a TTF.
    – raphink
    Jun 9, 2011 at 15:12
0

For every user of Overleaf - this is the way to go if you have a local fonts directory:

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

Since it took me way to much time to find this issue: Be aware that the / at the end of the path is necessary (but not at the beginning)!

2
  • 1
    ExternalLocation should not be used anymore, please use Path instead. Dec 24, 2022 at 9:55
  • I thought I'd have already tried this but you are right! Path works and should be used - thank you Dec 25, 2022 at 11:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .