在自包含树中概述字体安装

在自包含树中概述字体安装

我想实现以下目标:用户应该能够获取给定目录的副本,将其放在主目录的任何位置,然后运行make以在该树中构建 LaTeX 文档无需修改自己的配置。该树中的文档依赖于自定义 TrueType 字体,这些字体的提供商建议使用updmap-sys来安装这些字体。但要求用户在系统范围内安装这些字体是不可接受的,甚至应避免在本地安装它们。

到目前为止我能找到的最好的规则是添加到我的以下规则Makefile

export TEXMFHOME=$(CURDIR)/texmf
export TEXINPUTS=$(CURDIR)/styles:$(CURDIR)/texmf:

texmf/web2c/updmap.cnf: texmf/fonts/map/dvips/tumhelv/tumhelv.map
    @mkdir -p $(@D)
    @echo -n "" > $@
    updmap --cnffile $(TEXMFHOME)/web2c/updmap.cnf \
        --dvipdfmxoutputdir $(TEXMFHOME)/fonts/map/dvipdfmx/updmap \
        --dvipsoutputdir $(TEXMFHOME)/fonts/map/dvips/updmap \
        --pdftexoutputdir $(TEXMFHOME)/fonts/map/pdftex/updmap \
        --pxdvioutputdir $(TEXMFHOME)/fonts/map/pxdvi/updmap \
        --setoption dvipsPreferOutline=true \
        --setoption pdftexDownloadBase14=true \
        --enable Map=customFont.map

这显然确实将字体安装在了texmf我所在目录的子树中Makefile。我甚至还没有开始检查字体是否真的可用,因为我的突然pdflatex开始使用位图字体而不是轮廓字体。我添加了上面的两行,从我的主要 TeXlive树--setoption复制而来,但它们没有任何变化。updmap.cnftexmf

我还注意到updmap将创建一个文件~/Library/texlive/2012/texmf-var/web2c/updmap.log(在 OS X 上),但我猜一个额外的环境变量应该可以解决这个问题。

如何使用环境变量来安装字体而不修改用户的配置,并且仍然在我的 PDF 文件中使用轮廓字体?

答案1

我相信我找到了这个问题的答案。对此最有用的资源是字体安装浅显易懂作者 Siep Kroonenberg(也可作为TUGboat 文章)。

该文章介绍了如何简单地将字体相关文件放入当前目录,然后使用\pdfmapfile{=myFont.map}使用添加单个地图文件添加到 使用的地图文件列表中pdflatex。无需updmap调用 。本文还详细介绍了如何获取度量文件 ( *.tfm) 和地图文件,但由于我的情况提供了这两个文件,因此这\pdfmapfile是最有用的提示。

现在就我而言,我希望文件位于单独的texmf树中,而不是当前目录中。最后,我不得不覆盖五个不同的环境变量来实现这个目标:

export TEXINPUTS=$(CURDIR)/styles:$(CURDIR)/texmf//:
export TFMFONTS=$(CURDIR)/texmf/fonts/tfm//:
export TEXFONTMAPS=$(CURDIR)/texmf/fonts/map//:
export TTFONTS=$(CURDIR)/texmf/fonts/truetype//:
export ENCFONTS=$(CURDIR)/texmf/fonts/enc//:

查看texmf/web2c/texmf.cnf我的 TeXlive 发行版的文件(请参阅kpsewhich --all texmf.cnf查找你的文件),以及pdflatex -kpathsea-debug=-1(另请参阅Kpathsea 调试),对于确定要覆盖哪些设置非常有帮助。请注意冒号在每个变量的末尾,这意味着将声明的值添加到默认值之前。还要注意双斜线,这意味着递归搜索整个树。到目前为止,这texmf棵树足够小,我不需要为它维护数据库。如果我这样做,我可能还ls-R必须导出。TEXMFDBS

相关内容