2015-10-08 24 views
0

我們使用PhantomJS從網頁創建屏幕截圖。此頁面顯示可以使用任何語言的文本:拉丁文,俄文,中文,阿拉伯文等。在我的本地Ubuntu桌面上,這一切都可以正常工作,在生產服務器上顯示中文字符塊。服務器是AWS Linux,類似於Centos。PhantomJS:漢字顯示爲生產服務器上的塊

使用的字體是幻覺記憶三世:

* { font-family: "DejaVu Sans"; } 

幻覺記憶被安裝在服務器上:

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

DejaVu沒有中文支持。事實上,市場上幾乎沒有支持統一代碼的字體,而那些獲得全面支持Unicode的支持優於質量(即它們看起來不好)的少數字體。

當請求的字體有覆蓋漏洞時,Linux文本堆棧足夠智能以替代其他字體,但取決於正在安裝的字體。您的桌面安裝了完整的i18n字體集(面向GUI),您的服務器爲最小集(無頭文件)。要實現你想要做的事情,你需要在你的服務器上安裝更多的字體。

而且你不能複製你的桌面字體選擇,像Ubuntu這樣的Debian衍生產品和像AWS這樣的Fedora衍生產品的字體可用性會略有不同。

要檢查什麼字體包可與覆蓋在Fedora的衍生物的特定區域,那麼你可以使用類型

sudo dnf install 'font(:lang=zu)' (zulu coverage) 

或同級(更換使用yum如果你的系統是較舊的DNF)的東西。如果你想要過度使用sudo dnf install'* -fonts'。如果你想了解什麼字體被替換,以及何時讀取fontconfig文檔(man fc-list &朋友)