wkhtmltopdf 在哪里寻找 Debian 上的字体?

Where does wkhtmltopdf look for fonts on Debian?

这与(并且源于相同的问题)密切相关

但我认为这本身就是一个有效的问题。如 link 中所述,我正在尝试使用 wkhtmltopdf(通过 Debian 中的命令行)将多语言 utf-8 html 文档转换为 pdf。一些语言没有正确呈现并显示为白色或黑色矩形,大概是因为 wkhtmltopdf 无法找到或访问必要的字体。

问题:wkhtmltopdf 在系统 (Debian) 的哪个位置查找字体,以及如何检查它正在查找的字体 (如果可能的话)给定一个特定的命令?

字体在/usr/share/fonts/.

此命令显示命令 foo 访问的字体。

strace -e open -o >(sed -n '/^open("\/usr\/share\/fonts\//p') foo

strace 显示系统调用。 -e open 表示只显示打开文件的系统调用。 -o >(sed -n '/^open("\/usr\/share\/fonts\//p') 表示将输出输出到 sed,它仅打印出系统调用以打开 /usr/share/fonts/.

中的文件

对于某些程序,打开详细输出并检查其 stderr 是否说明使用的字体是很有用的。

对于您的具体问题,还要检查是否正确指定了 HTML 文件的编码。

以strace

的输出为例
open("/usr/share/fonts/X11/Type1/n019004l.pfb", O_RDONLY) = 8

它的格式与您在 c 程序中使用 open 的格式相同。 /usr/share/fonts/X11/Type1/n019004l.pfb 是文件的路径。 O_RDONLY表示以只读方式打开。 8表示操作成功,得到的文件描述符为8。参考open man page。