2014-02-26 454 views
3

使用最新版本的phantomjs v1.9.7,在生產服務器上渲染一些字符時出現問題。在開發服務器上沒有問題。phantomjs字體渲染問題

在渲染phantomjs.org主頁時,帶有「strong」標籤或某種粗體字體(如「700em」)的字體可以正確渲染,但是正常的字體權重不會。

我還沒有注意到任何其他網址的這個問題。

同樣,所有來自任何網址(我已經檢查過)的所有中文字符都使用生產服務器上的框渲染,但在開發服務器上正確顯示。

我不知道是什麼問題。

下面是每個服務器的http://phantomjs.org部分的截圖:

生產服務器 - Debian的7穩定 phantomjs.com - production server - debian 7 stable

開發服務器 - Debian的8測試 phantomjs.com - dev server - debian 8 testing


這裏的截圖http://taoboa.com

生產 - Debian的7穩定

taobao.com - production server -debian 7 stable

開發服務器 - Debian的8測試

taobao.com - dev server - debian 8 testing

有什麼想法?謝謝您的幫助。

回答

2

我最終什麼事做的是更新我的服務器從Debian的7到Ubuntu 13.10,並解決了這個問題。我真的不知道是什麼包導致了這個問題 - 可能是fontconfig或libfreetype6 ...我不知道。

0

我發現了一些關於它的線程:

an answare/solution herehere

+0

感謝您的回覆。在發佈之前,我已經閱讀並嘗試過,但是我確實解決了這個問題(下文)。 –

0

關於日本,中國,印地文等文字,我是有phantomjs和這樣的特殊字符的字體渲染一個問題,那就是我解決了這個問題:

  1. 下載相應.ttfUnicode fonts文件。網上有幾個免費的網站,但是你有幾個Unicode字體免費文件幾個不同的字符映射here

  2. .ttf文件保存在您的服務器/機器的目錄/etc/fonts或目錄~/.fonts中。後者也是一個unix目錄,如果它不存在,創建它,並且如果您沒有root權限(例如共享服務器),則需要它。

  3. 相應地運行fc-cache -fv /etc/fontsfc-cache -fv ~/.fonts/。這fc-cache命令掃描系統的字體目錄,並建立字體信息緩存文件

在phantomjs代碼

然後,使用總是utf-8無論是文件系統

var HTMLfile = fs.open(path + file_name, { 
    mode: 'r', //read 
    charset: 'utf-8' 
}); 
var content = HTMLfile.read(); 
HTMLfile.close(); 

網頁

var webPage = require('webpage'); 
var page = webPage.create(); 
var settings = { 
    operation: "POST", 
    encoding: "utf8", 
    headers: { 
    "Content-Type": "application/json" 
    }, 
    data: JSON.stringify({ 
    some: "data", 
    another: ["custom", "data"] 
    }) 
}; 

經過長時間的搜索,它爲我工作。