在 QWebView 中,我使用 QWebView.setHtml() 动态创建和加载 HTML。在传递给此方法的 HTML 字符串中,我有一个<style>
部分用于从外部文件中注入 CSS 字符串。除了字体系列外,CSS 运行良好。字体总是回退到 QWebView 默认的无衬线字体。我可以使用 更改该默认字体QWebView.settings().setFontFamily(QtWebKit.QWebSettings.StandardFont, "serif")
,但这只会使页面上的所有内容成为衬线字体,而不是尊重 CSS 字体系列值。
我的 CSS 文件中的相关部分:
.page-title {
color:#BBBBBB;
font-family:"Times New Roman",Garamond,serif;
}
这不会像预期的那样以衬线字体呈现,而是以通用的无衬线字体呈现。但是,颜色显示没有问题。
有一次,为了调试,我在调用 QWebView.setHtml() 之前打印了完整的 HTML 字符串,并将输出重定向到一个文件。当我在 Chromium 中打开该文件时,它按预期呈现,让我相信问题不是HTML/CSS 问题。如果您有兴趣,这是该输出。
编辑:由于我在这里设置赏金,这里有一个快速的 tl;dr 应该总结所有重要的事情:
使用 PySide,如何在通过 QWebView.setHtml() 加载的 HTML 页面中使 QWebView 尊重 CSS 字体系列设置?具体来说,是否有一些秘密的隐藏设置可以打开和关闭这种行为?还是我应该将此报告为框架中的错误?
如果你想自己测试一下,这里是我正在处理的项目的 GitHub 存储库的链接。README 中列出了依赖项。