I have a document which I render with pdflatex that uses some various "weird" (i.e., not generally included in a standard TeX distribution) fonts. It would be convenient for me to be able to bundle these fonts with the document, so it could be easily rendered on other machines, without installing these extra packages. Say my directory structure looks like this:
mydocument.tex
texmf/
doc/
enc/
map/
opentype/
tex/
tfm/
type1/
vf/
Is there perhaps a command I can add to my document's header which instructs pdflatex to search inside the texmf
directory next to the document for fonts? This would be much more convenient than having to copy the contents of that directory into ~/texmf
or /usr/share/texmf
or wherever on each machine I'd like to render my document on.
Edit:
As a test, I'm trying to load the font Gillius
. For what it's worth, here's my TeX code which is instructing my document to use this font:
\renewcommand*\familydefault{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[default]{gillius}
I have tried running pdflatex
with the command: TEXMFHOME=./texmf pdflatex invoice.tex
, which seems to mostly work – at the very least, the gillius.sty
file is properly located for the font. However, it seems unable to locate the font's files in texmf/tfm/
– namely, this is the error I get:
$ TEXMFHOME=./texmf pdflatex invoice.tex
[... omitted for brevity ...]
(./texmf/tex/T1GilliusADF-LF.fd)
kpathsea: Running mktextfm GilliusADF-Regular-lf-t1
/usr/share/texmf/web2c/mktexnam: Could not map source abbreviation G for GilliusADF-Regular-lf-t1.
/usr/share/texmf/web2c/mktexnam: Need to update /usr/share/texmf-dist/fonts/map/fontname/special.map?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GilliusADF-Regular-lf-t1
This is METAFONT, Version 2.718281 (TeX Live 2012)
kpathsea: Running mktexmf GilliusADF-Regular-lf-t1
! I can't find file `GilliusADF-Regular-lf-t1'.
<*> ...nonstopmode; input GilliusADF-Regular-lf-t1
Please type another input file name
! Emergency stop.
<*> ...nonstopmode; input GilliusADF-Regular-lf-t1
Transcript written on mfput.log.
grep: GilliusADF-Regular-lf-t1.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GilliusADF-Regular-lf-t1' failed to make GilliusADF-Regular-lf-t1.tfm.
kpathsea: Appending font creation commands to missfont.log.
! Font T1/GilliusADF-LF/m/n/10=GilliusADF-Regular-lf-t1 at 10.0pt not loadable:
Metric (TFM) file not found.
<to be read again>
relax
l.91 \begin{document}
?
I have verified that the file pdflatex
mentions does indeed exist, at ./texmf/tfm/GilliusADF-Regular-lf-t1.tfm
. Is there perhaps some other environment variable that controls where pdflatex
searches for *.tfm
files?
Best Answer
Generally,
TEXMFHOME
is expected to follow the TDS (Texmf Directory Standard). If you put the various font directories (enc
,map
,opentype
,tfm
,type1
, andvf
) undertexmf/fonts/
, then what you did should work.You might be able to modify the standard variables
TFMFONTS
,T1FONTS
,OPENTYPEFONTS
, etc., so as to leave your directory structure as it is. But it is not so obvious what they should be set to (you want to keep the usual directories still accessible). And it would be a pain to change them all. There is one for each type of font file (searchtexmf.cnf
for all the possibilities) and the name is not always obvious (TEXFONTMAPS
for the map files,ENCFONTS
for encoding files).