代码之家  ›  专栏  ›  技术社区  ›  Blender

QWebView不呈现字体

  •  4
  • Blender  · 技术社区  · 12 年前

    我正在编写一个应用程序,用于显示文件夹中的静态HTML文件。出于某种原因,PyQt4的 QWebView 类不允许呈现任何字体,即使对于远程网站也是如此:

    QWeb视图 以下为:

    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 回复  |  直到 12 年前
        1
  •  7
  •   Blender    12 年前

    折磨之后 QWebView 一个小时又一个小时,我终于注意到 Font Squirrel 令人惊奇地呈现了一个外部字体。我多次强调这些字母,并敬畏地坐在那里,面带微笑。

    无论如何,这似乎是为了让这项工作 QWeb视图 以下为:

    @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');
    }
    

    请注意 QWeb视图 不喜欢WOFF字体。我不得不通过将我的转换为TrueType 字体松鼠

    简而言之:

    • 请确保您的字体是TrueType字体。
    • local() 东西
    • 看起来 font-style font-weight 被忽略。你必须为每种字体的每种样式制作不同的字体族( Terminal Dosis Bold 例如)。
        2
  •  0
  •   ekhumoro    12 年前

    这个 stylesheet 例如url使用css @font-face 指定联机字体的规则。

    不幸的是,QWebKit中的这一点目前似乎已被破坏: Bug 36351

        3
  •  0
  •   Luke    12 年前