在我的场景中,我使用自己的自定义字体。它是一种 OpenType 字体 - 也不是 tex 打包的字体,只是我在 FontCreator (Windows 7) 中制作的字体。现在,我想将此字体与 一起使用,因此我在此处
lualatex
放置了一个副本,然后它就会被选中。myfont.otf
C:\texlive\2013\texmf-dist\fonts\truetype\public
我的问题:如果我更新myfont.otf
并用新副本替换该文件夹中的副本,则它不会被使用,因为它lualatex
正在使用其缓存中的副本,如以下日志条目所反映的那样:
luaotfload | load: auto-selecting default features for script: dflt(load luc: C:/texlive/2013/texmf-var/luatex-cache/generic/fonts/otf/myfont.luc)
现在,到目前为止,我发现使用字体的唯一方法(替换后)是:
- 删除
lualatex
处的缓存目录C:\texlive\2013\texmf-var\luatex-cache\
,%USERPROFILE%\.texlive2013\texmf-var
然后C:\texlive\texmf-var\lualatex-cache
- 然后运行
texhash
- 然后运行
updmap
当我编译下一个 tex 文件时,它会使用新字体重建缓存:
luaotfload | resolve: font family='priory', subfamily='regular' found: c:/texliv
e/2013/texmf-dist/fonts/truetype/public/myfont.otf(save: C:/texlive/2013/texmf-v
ar/luatex-cache/generic/fonts/otf/myfont.lua)(save: C:/texlive/2013/texmf-var/lu
atex-cache/generic/fonts/otf/myfont.luc)
有没有更好的方法?我可以重建字体缓存而不必手动删除目录吗?
答案1
好吧,我手动删除了这个目录:C:\texlive\2013\texmf-var\luatex-cache\
相同的过程可以通过命令行完成(感谢 Ulrik):
luaotfload-tool --cache=erase
然后,如果您的字体名称不同(或者您添加了新的字体名称),您需要执行以下操作:
texhash
但是,我的问题的评论者是对的。最好不要使用 tex 系统文件夹。在 Windows 中,将其称为系统文件夹很有趣,因为它只对 tex 重要。但我将字体移到C:\texlive\texmf-local\fonts\truetype\public
并运行了这些命令,一切都正常。我可以从编译日志中看到字体已从新位置提取。
所以这个 tex 用户目录更好,但是命令是一样的:
luaotfload-tool --cache=erase
texhash