我们使用PhantomJS从网页创建屏幕截图。此页面显示可以使用任何语言的文本:拉丁语,俄语,中文,阿拉伯语等。在我的本地Ubuntu桌面上,这一切都有效,在生产服务器上显示中文字符块。服务器是AWS Linux,类似于Centos。
使用的字体是Dejavu Sans:
* { font-family: "DejaVu Sans"; }
DejaVu安装在服务器上:
ls -1 /usr/share/fonts/dejavu/
DejaVuSans-BoldOblique.ttf
DejaVuSans-Bold.ttf
DejaVuSansCondensed-BoldOblique.ttf
DejaVuSansCondensed-Bold.ttf
DejaVuSansCondensed-Oblique.ttf
DejaVuSansCondensed.ttf
DejaVuSans-ExtraLight.ttf
DejaVuSans-Oblique.ttf
DejaVuSans.ttf
DejaVuSerif-BoldItalic.ttf
DejaVuSerif-Bold.ttf
DejaVuSerifCondensed-BoldItalic.ttf
DejaVuSerifCondensed-Bold.ttf
DejaVuSerifCondensed-Italic.ttf
DejaVuSerifCondensed.ttf
DejaVuSerif-Italic.ttf
DejaVuSerif.ttf
这是字体问题吗?
如何让PhantomJS显示所有字符?
答案 0 :(得分:0)
当请求的字体有覆盖漏洞时,Linux文本堆栈非常智能,可以替换其他字体,但这取决于所安装的字体。您的桌面安装了一个完整的i18n字体集(面向GUI),您的服务器是一个最小的设置(无头向导)。要实现您想要的功能,您需要在服务器上安装更多字体。
你不能复制你的桌面字体选择,像Ubuntu这样的Debian衍生品中的字体可用性和像AWS这样的Fedora衍生品会略有不同。
要检查Fedora衍生产品上特定区域设置的覆盖范围可用的字体包,您可以键入use
sudo dnf install 'font(:lang=zu)' (zulu coverage)
或类似的东西(如果您的系统较旧,则用yum替换dnf)。如果你想超越sudo dnf install' * - fonts'。如果你想了解什么字体被替换以及何时阅读fontconfig文档(man fc-list& friends)