【问题标题】:Is there a way to fallback for missing glyphs with PIL?有没有办法回退使用 PIL 丢失字形?
【发布时间】:2016-05-27 23:46:01
【问题描述】:

使用 PIL(ImageFont、ImageDraw 等)渲染文本时,如果字体缺少特定字符的字形,它只会跳过该字符。我在文档中没有看到任何指定后备字体的机制。是否有一个行之有效的方法来使用后备字体来解决 PIL 中丢失的字形?

【问题讨论】:

  • 更糟的是,它给我画了一个豆腐字! =(

标签: python fonts python-imaging-library pillow


【解决方案1】:

我不知道如何做到这一点,但我确实找到了解决方法。我使用 FontForge 填充主字体中缺少的字形,并使用另一种字体的备用字形。如本答案所述:https://superuser.com/questions/490922/merging-two-font-into-one

唯一的问题是我运行的是 OS X 10.11.3,而当前的 FontForge 稳定版本在该操作系统上死掉了。所以我不得不从源代码构建 FontForge。我按照此页面上的“自制”说明进行了操作: https://github.com/fontforge/fontforge/blob/master/INSTALL-git.md

【讨论】:

  • 显然,如果有人能告诉我一种无需编辑字体就能做到这一点的方法,我会取消我的支票并给你!
  • 查看the source,我看到ImageFontImageDraw——您的示例函数——似乎都使用bitmap 字体,而不是“真正的”轮廓字体(OpenType 或 TTF)。这是一个有意识的决定吗? (提示您使用 FontForge 调整字体 - 您确实创建了新的 bitmap 字体吗?)
  • 不,我使用 FontForge 创建了一个新的 TTF 字体。整个应用程序仅使用 TTF 字体,所以我猜您对源代码的阅读不完整。
  • .. 或者我可能正在寻找错误的东西。对不起,我再检查一下。 (我的想法是,在代码中的某处可能会明确检查是否缺少字形。如果我能找到它,应该也可以让它通过替代候选字体列表。)
  • PIL 有没有办法返回某个特定字符未正确解码,因此在生成的图像中插入了豆腐?
猜你喜欢
  • 2020-05-27
  • 1970-01-01
  • 2011-09-21
  • 2021-10-02
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多