我有一个简短的 tex 文件,需要用 xetex 进行编译(最终我会添加 IPA,但由于以下内容不起作用,因此我省略了该操作):
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage[variant=ancient]{greek}
\setmainfont{Libertinus Serif}
\begin{document}
The Greek word \textgreek{βάραθρον} means `gulf', `pit' or `cleft'.
\end{document}
结果:
kpathsea:make_tex: Invalid filename `Libertinus Serif', contains ' '
! Package fontspec Error: The font "Libertinus Serif" cannot be found.
这非常奇怪,因为我刚刚安装了 texlive (2020)。不是整个软件包,但肯定是基本软件包和附加软件包、字体和希腊语语言包。
我已经用‘truss’(Solaris)跟踪了执行情况,但恐怕我无法从中判断出哪里出了问题。
查找 /opt/texlive -name '自由人' 给我 83 个文件名,这样我就很确定字体已安装。
我将非常感激对此提供的帮助。
诺埃尔·亨特
后记:我确实尝试了 \usepackage{libertinus} 选项,但没有成功,但运行 luaotfload-tool 命令时,提示我未找到字体名称数据库,但已创建该数据库(kpsewhich LibertinusSerif-Regular.otf 显示文件位于正确位置)。运行 luaotfload-tool 后,xetex 运行正常。因此,似乎是 otf 字体数据库不存在。不过,这很奇怪,因为正如我最初所说,这是全新安装的 texlive。非常感谢那些回答我的问题的人。
答案1
如果您的安装配置正确,则需要安装 Libertinus 字体。它们位于 MikTeX 或 TeX Live 包中libertinus-fonts
,也可能位于操作系统的包管理器中。
您也可以从存储库,但这样你就不会收到自动更新。
您可以使用命令 测试字体是否已安装kpsewhich LibertinusSerif-Regular.otf
。您还可以使用 检查它是否位于系统目录中luaotfload-tool --find "Libertinus Serif"
。根据您的操作系统,fc-match "Libertinus Serif"
也可能有效。
如果字体存在但未找到,您可能需要确保您的 TeX 目录中正在搜索字体,然后重建字体缓存。对于 LuaTeX,命令是luaotfload-tool --update --force --prefer-texmf -v
。
如果字体已安装,但 XeTeX 找不到它们,您可以尝试加载\usepackage{libertinus}
,或尝试以推荐的方式加载:
\setmainfont{LibertinusSerif}[
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
Extension = .otf]
这将按文件名进行搜索,即使查找姓氏不起作用,也可能仍然有效。