【问题标题】:Weasyprint font issue leads to all characters being replaced by boxesWeasyprint 字体问题导致所有字符被框替换
【发布时间】:2018-08-23 10:39:54
【问题描述】:

我使用pip install weasyprint 安装了 weasyprint,据我了解,它应该安装必要的依赖项。

不知何故,由 weasyprint 生成的 PDF 输出不包含任何字体,所有字符都被框替换。

打开文档时,我可以看到没有嵌入任何字体。我还可以通过在终端中输入python -m weasyprint.navigator 并访问示例站点之一来重现该问题。下面是我安装的 weasyprint 渲染的维基百科主页。

什么可能导致此问题,我该如何解决?

【问题讨论】:

标签: html pdf weasyprint


【解决方案1】:

我遇到了完全相同的问题,谷歌将我带到了这个话题。我想确认问题出在我的 Linux Docker 映像中缺少字体。

将缺少的字体安装到您的系统中。在我的操作系统上没有安装任何字体。

【讨论】:

  • 问题也是我该如何解决它?。您能提供解决问题的方法吗?
  • 它特定于您使用的操作系统。将缺少的字体添加到您的系统。就我而言,我使用apk --update add fontconfig ttf-dejavu 完成了此操作,但我不确定它是否对本主题的作者有所帮助。 @colidyre
  • 但你确实帮助了我。还使用 docker 并错过了我的图像构建时根本没有字体的事实。非常感谢!
【解决方案2】:

我也遇到过同样的问题,我认为是缺少字体导致了这个问题,最后我在/usr/share/fonts/文件夹中添加了一个字体解决了这个问题。

【讨论】:

    【解决方案3】:

    我在 MacOS 上使用fc-* 命令行工具修复了这个问题。您可以使用brew install fontconfig 安装它们。

    1. 运行fc-list 列出系统上安装的字体
    2. 运行 fc-cache -v 以查看 fontconfig 在系统中查找字体的位置
    3. 选择这些位置之一(如果它不存在,则创建它)并将字体复制到那里。
    # note: change `alex` to your user name
    sudo mkdir /Users/alex/.fonts
    sudo cp /Library/Fonts/Microsoft\ Sans\ Serif.ttf /Users/alex/.fonts
    
    1. fc-cache -vf重新生成缓存
    2. 通过运行fc-list 检查字体是否已安装
    3. PDF 现在应该可以正确生成了

    【讨论】:

      【解决方案4】:

      看来问题出在字体上。可能,您没有在服务器中安装正确的字体。在 linux (ubuntu) 中,您可以运行此命令以使用此命令安装推荐的字体。

      sudo apt-get install texlive-fonts-recommended
      

      要管理字体,请使用:

      sudo apt-get install fontconfig
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        相关资源
        最近更新 更多