【问题标题】:Try to extract font with Python or ImageMagick尝试使用 Python 或 ImageMagick 提取字体
【发布时间】:2012-04-27 11:44:28
【问题描述】:

我有一个项目,它将中文文本转换为位图,用于远程 LCD 显示。因为它在服务器中运行,所以首选命令行工具。

我正在尝试使用 Python/PIL 和 ImageMagick 来实现这样的系统。 ImageMagick 用于在 Python/PIL 将文本转换为用于远程显示的特殊数据包格式之前从文本生成位图。

从 IM 网站阅读 IM6 示例后:

我发现抗锯齿在这个过程中会造成麻烦。例如,它适用于以下命令:

C:\ImageMagick-6.6.6-6\convert -background lightblue -fill blue -pointsize 48 -font "SimSun-&-NSimSun" label:@chinese_words.utf8 label_utf8_simsun.gif

Generated image新手不允许发图。

它看起来很棒,因为它具有高分辨率的抗锯齿功能。 LCD 只有黑白,没有消除锯齿,而且必须是低分辨率,例如 12x12 像素。我尝试了以下脚本。

C:\ImageMagick-6.5.6-Q16\convert -pointsize 16 -font "SimSun-&-NSimSun" +antialias -strokewidth 0.4 -threshold 50%% label:@chinese_words.utf8 label_utf8_simsun_16_bw_strokewid1.gif

结果看起来很糟糕,并且缺少位图像素。

Generate Image新手不允许发图。

有谁知道如何使用适用于 LCD 的 Python/ImageMagick 提取 truetype 字体(无抗锯齿、双色、小尺寸/低分辨率)?

提前感谢您的帮助!

【问题讨论】:

    标签: python fonts imagemagick cjk rasterizing


    【解决方案1】:

    SimSun 似乎是well hinted,因此它在小像素尺寸下清晰易读。下面的屏幕截图是从一个字符放大的(我不知道它是什么,所以如果它是……粗鲁,那不是我的意图:))我在 Windows 7 中以 10 pt 字体大小粘贴到写字板中。

    所以:您可能想研究使用正确支持字体提示的库来呈现字形的替代方案。 FreeType 会这样做(当编译为具有提示支持时——如果我没记错的话,该算法仍受专利保护),如果您的服务器平台也是 Windows,那么编写 C#/GDIPlus 应用程序将相当容易为您呈现文本。

    编辑:出于好奇和无聊,我实际上实现了与 Freetype2 的廉价 Python ctypes 绑定,并在 Freetype2 教程之后添加了同样廉价的渲染代码。即使在小尺寸下似乎也做得不错——并且提示等是可调整的,我只是在我的代码中使用默认值。

    代码可在https://bitbucket.org/akx/python-minift/src 获得——我不保证它会正常工作,但它是一个不错的起点。

    【讨论】:

    • 谢谢。字体提示解释了很多。我不确定生产服务器的操作系统,因此首选便携式解决方案。例如,Python/PHP/GCC 或类似的。顺便说一句,我不擅长 Windows 编程。作为另一种方式,我在 DOS 中找到了原生中文位图字体。在 Windows/Linux 下使用 Python/C 很容易处理。但是,unicode 应该是首选,因为我的项目是独立于语言的,应该支持其他语言,包括 PanEuro/Korean/Japanese/Arabic/Farsi 等。我会继续搜索它。
    • @KaiLiu——看我修改后的答案! :)
    • 酷。非常感谢,它可能是一个很好的代码库。让我试一试。
    • 您的 URL 被拒绝访问。也许我没有这个来源的特权。
    • @KaiLiu - 对不起,我已将存储库设置为私有。现已公开!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多