【问题标题】:Tools to extract glyph data from bitmap font image从位图字体图像中提取字形数据的工具
【发布时间】:2011-06-26 00:15:43
【问题描述】:

我拥有以 PNG 格式呈现的字体的所有字符。我想在 OpenGL 中使用 PNG 进行纹理映射字体渲染,但我需要提取字形信息 - 字符位置和大小等。

是否有任何工具可以帮助完成该过程?我看到的大多数工具都会同时生成图像文件和字形数据。我没有找到任何可以帮助我从现有图像中提取的内容。

我使用 gimp 作为我的主要图像编辑器,并且我考虑编写一个插件来帮助我识别每个字符的边界框。我知道 python,但之前没有做过任何 gimp 插件,所以那将是一件苦差事。我希望有些东西已经存在...

【问题讨论】:

  • 您必须手动生成它。例如,在每个字母周围加上边框(alpha 值?)。
  • 我希望在某种程度上必须手动执行此操作,但正确的工具会使其更容易。我在想一些有助于标记每个字母的边界框的东西,然后会吐出边界信息(x、y、宽度、高度)的文本转储。然后我可以将其转换为其他格式以获得最终字形信息。
  • 字符是否由至少一行/列的“白色”像素分隔?

标签: python opengl fonts bitmap gimp


【解决方案1】:

一般来说,这种工作方式是您使用工具来生成字形图像。该工具还将为这些字形生成度量信息(它们有多大等)。您不应该分析图像来查找字形;你应该在你的字形旁边有额外的信息,告诉他们在哪里,他们应该有多大,等等。

考虑字母“i”。根据字体的不同,它的左右两侧会有一些空间。即使您有一个可以识别字形“i”的工具,您也需要知道字体在字形的左侧和右侧放置了多少像素的空间。对于所有字母来说,这几乎是不可能准确地做到的。并非没有一些非常先进的计算机视觉算法。而且由于生成这些字形的工具已经知道它们应该获得多少间距,所以最好还是更改工具以写入字形信息。

【讨论】:

  • 我没有很好地解释这个问题...用字形信息重新生成图像不是一个选项 - 我只有图像。提取字形的全自动解决方案会很不错,但这超出了我的预期。
  • @Jeremy Slade:您确实意识到您可以编辑您的问题,对吧?所以如果你解释得不够清楚,那就再试一次。
【解决方案2】:

您可以使用PIL 来帮助您自动化流程。

假设至少有一行/列的 background 颜色分隔线/字符,您可以使用Image.crop 方法检查每一行(然后是该行的每一列),如果它仅包含 background 颜色;这样你就得到了每个字符的边框。

如果您需要进一步的帮助,请 Ping。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2013-12-15
    • 2011-01-01
    • 2012-10-10
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多