【问题标题】:How can I make QWebView/QWebPage default to serif font?如何使 QWebView/QWebPage 默认为衬线字体?
【发布时间】:2012-01-27 02:30:18
【问题描述】:

使用 PyQt4,我创建了一个 QWebView,然后使用它的 setHtml() 方法加载它。 HTML 在大多数方面都能正确显示,但始终使用默认的无衬线字体。

当外部浏览器加载相同的 HTML 纯文本时,例如Firefox,它以默认衬线字体显示。我希望 webview 也这样做。

我已阅读有关 QWebView、QWebPage 和 QWebSettings 的文档,但没有看到任何设置默认“标准”或“比例”字体的方法,可与浏览器的首选项设置相媲美。我查看了 QStyleSheets,但它们似乎不适用于 QWebView/WebPage。

【问题讨论】:

  • 出于好奇,为什么不在内容中设置一些CSS?像<style>body{font:serif}</style> 这样简单的东西应该可以解决问题...
  • 本应用编辑的HTML文档,有一个标准是不指定font或font-family,默认为比例字体。这样用户就可以始终通过浏览器首选项控制外观。我想不通的是,如何做一个与 QWebPage 等效的“浏览器首选项”。

标签: python fonts pyqt default qwebkit


【解决方案1】:

要为所有网页设置默认字体,请使用QWebSettings 更改StandardFont 的字体系列,并更改DefaultFontSize 的字体大小:

settings = QtWebKit.QWebSettings.globalSettings()
settings.setFontFamily(QtWebKit.QWebSettings.StandardFont, 'Times New Roman')
settings.setFontSize(QtWebKit.QWebSettings.DefaultFontSize, 12)

【讨论】:

  • 如果 html 包含未定义的字体系列,例如p{font-family:"xyz"}..在这种情况下网页没有使用默认字体,为什么?
  • @Ashish。抱歉——我不知道。其他人可能会这样做,所以你应该提出一个新问题。
【解决方案2】:

QWebSettings 似乎拥有您需要的一切:

enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont }
void setFontFamily ( FontFamily which, const QString & family )

我还没有测试过,但你缺少什么?您可能想查看基于 Qt Webkit 的 Arora 网络浏览器。

【讨论】:

  • 不。 setFontFamily 建立用于通用 FontFamily 的特定字体名称,例如当我打印查询 fontFamily(QWebSettings.SerifFont) 时,我得到“Times New Roman”。我可以调用 setFontFamily(QWebSettings.SerifFont,"Palatino") 和 viola,fontFamily 会回显“Palatino”。大呼——仍然使用默认的 SansSerifFont 显示网页。问题是,如何让 QWebPage 使用 SerifFont 而不是 SansSerifFont 进行渲染。
  • ...我应该说,我认为这就是问题所在,我可能是错的(我经常这样)
  • 我可能在这里遗漏了一些明显的东西,但你能不能也为 SansSerifFont 设置字体?
  • oooh -- 将 sansSerifFont 设置为 "Palatino" -- 我的上帝允许这样做吗?我的电脑可能会爆炸——等一下,我试试看……
  • 不。我做了 settings.setFontFamily(QWebSettings.SansSerifFont,QString("Palatino")) 并用 settings.fontFamily 读回它,它没有任何区别。我也做了 QWebSettings.globalSettings().setFontFamily(QWebSettings.SansSerifFont,QString("Palatino"))。显示的页面没有变化,仍然是无衬线字体。
猜你喜欢
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2020-01-22
  • 1970-01-01
  • 2015-01-24
  • 2012-07-06
相关资源
最近更新 更多