QWebView无法渲染字体

时间:2012-08-05 00:31:44

标签: qt4 pyqt4 qwebview

我正在编写一个显示文件夹中静态HTML文件的应用程序。出于某种原因,PyQt4的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/'))

我是否还需要更改安全设置才能使其正常工作?

3 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:0)

示例网址的stylesheet使用css @font-face规则来指定在线字体。

不幸的是,它似乎在QWebKit中被打破:Bug 36351

答案 2 :(得分:0)