luaotfload 的文档指出,在 Linux 上,fontconfig 用于查找字体位置。但是我安装的所有字体 编辑:(/usr/share/local/fonts
/usr/local/share/fonts
因为我不想弄乱我的包管理)对 luaotfload 不可见,但对系统中也使用 fontconfig 的所有其他应用程序可见。我如何告诉 luaotfload 在哪里寻找字体?
我正在使用 Ubuntu 中包含的 TeXLive 2012。
答案1
这需要一点调试... 你有/etc/fonts/fonts.conf
引用这些字体的文件吗?这可能非常重要,因为 luaotfload 的代码依赖于此文件。如果它在你的系统上不起作用,可能是因为 fontconfig 文件中的更新导致 luaotfload 代码需要更新... 如果你愿意,只要你给我一个 teamviewer 或 ssh 访问权限,我就可以调试它...
编辑:这确实与 debian 错误有关。实际上,这更像是 luaotfload 中的错误,而不是 debian 或 texlive 中的错误。我将在下一个版本中修复它,今天或明天在 CTAN 上。
答案2
环境变量 OSFONTDIR 将覆盖字体配置信息。使用双斜杠指定目录表示“请递归到子目录中”。例如:
OSFONTDIR=${HOME}/.fonts:/usr/share/fonts//:/usr/share/texmf/fonts//
编辑:Debian(以及 Ubuntu)texlive 打包似乎存在问题,它为 OSFONTDIR 提供了 /usr/share/font 的默认值,这意味着从未调用 fontconfig 支持。
答案3
将其放入/usr/local/share/fonts/
或者 放入你的主目录中.fonts/
。
跑去mkluatexfontdb -v | grep "local/share"
看看发生了什么事。
答案4
问题似乎是,fontconfig 似乎会自动查找,/usr/local/share/fonts
而无需在配置中明确指定。但是 luaotfload 不使用 fontconfig,而是直接加载配置。因此,它不会查找这个隐式位置。