2012-08-05 107 views
4

我正在編寫一個應用程序,顯示來自文件夾的靜態HTML文件。出於某種原因,PyQt4中的QWebView類是不允許任何字體渲染,甚至遠程網站:QWebView不呈現字體

QWebView

Bad fonts, bad

Good fonts

我正在加載文件,如下所示:

self.web_view = QWebView() 
self.settings = self.web_view.settings() 
self.settings.setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True) 

self.web_view.load(QUrl('http://blender3d.github.com/Bevel/demo/')) 

是否還有更多的安全設置需要更改才能使其工作?

+0

我看到字體與工件呈現..你是什麼意思的「不允許任何字體呈現」? – Luke 2012-08-07 23:37:27

+0

只有一種字體,它是唯一呈現的字體(例如,查看[Google Web Fonts](http://i.imgur.com/XISOW.png))。我試圖將字體轉換爲不同的格式(TTF,WOFF,OTF等),但QWebView忽略它們。我用PyGTK重寫了我的腳本,字體呈現就像Chrome一樣,但Qt允許更大的Python/JavaScript交互。 – Blender 2012-08-08 00:03:33

回答

6

折磨QWebView幾個小時後,我終於發現,令人驚訝的Font Squirrel呈現的外部字體。我多次突出顯示這些字母,微笑地坐在那裏敬畏。

不管怎麼說,這似乎是爲了使與QWebView這項工作:

@font-face { 
    font-family: 'Terminal Dosis'; 
    font-style: normal; 
    font-weight: 400; 
    src: local('Dosis Regular'), local('Dosis-Regular'), url('../fonts/terminal-dosis-regular.woff') format('woff'); 
} 

我不得不使它看起來像這樣:

@font-face { 
    font-family: 'Terminal Dosis Regular'; 
    src: url('../fonts/terminal-dosis-regular.ttf') format('truetype'); 
} 

注意QWebView不喜歡WOFF字體。我必須通過Font Squirrel將我的轉換爲TrueType。

簡而言之:

  • 確保您的字體是TrueType字體。
  • local()東西。
  • 看起來好像font-stylefont-weight被忽略。您必須爲每種字體的每種樣式製作不同的字體系列(例如,Terminal Dosis Bold)。
+0

解決此問題的另一個解決方法:將font-family安裝到系統中(將其打包到程序安裝中)。或者用'qtwebkit'' 5.1'或更高版本(它似乎支持'.woff'字體)獲取最新的'QWebView'。 – 2015-02-28 00:42:50

0

示例url的stylesheet利用css @font-face規則來指定聯機字體。

不幸的是,它看起來像是目前在QWebKit中打破:Bug 36351