我可以使用 PIL 获取两个字符的字距调整值吗?

发布于 2024-08-18 15:53:26 字数 34 浏览 6 评论 0原文

是否可以使用 PIL 获取字体中两个字符的字距调整值?

Is it possible to get the kerning value of two characters in a font using PIL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鲜血染红嫁衣 2024-08-25 15:53:26

正如伊格纳西奥所说,答案是否定的。

这是这个答案的严肃部分。现在,对于完全不同的东西:

您可以近似 a (不是 the,因为您无法单独使用 PIL 知道字体的设计 em 大小是多少)使用以下方法调整字距值:

import ImageFont
SAMPLE_SIZE= 128 # should provide sufficient resolution for kerning values

def get_a_kerning_value(font_descriptor, char1, char2):
    """See if there is some kerning value defined for a pair of characters
    Return the kerning value as an approximated percentage of the row height."""

    imagefont= ImageFont.truetype(font_descriptor, SAMPLE_SIZE)

    width1= imagefont.getsize(char1)[0]
    width2= imagefont.getsize(char2)[0]
    widths, height= imagefont.getsize(char1 + char2)

    return (widths - (width1 + width2))/float(height)

The answer is, as Ignacio said, no.

That was the serious part of this answer. And now, for something completely different:

you can approximate a (not the, since you can't know by using PIL alone what is the design em size of the font) kerning value using something like:

import ImageFont
SAMPLE_SIZE= 128 # should provide sufficient resolution for kerning values

def get_a_kerning_value(font_descriptor, char1, char2):
    """See if there is some kerning value defined for a pair of characters
    Return the kerning value as an approximated percentage of the row height."""

    imagefont= ImageFont.truetype(font_descriptor, SAMPLE_SIZE)

    width1= imagefont.getsize(char1)[0]
    width2= imagefont.getsize(char2)[0]
    widths, height= imagefont.getsize(char1 + char2)

    return (widths - (width1 + width2))/float(height)
递刀给你 2024-08-25 15:53:26

不可以,PIL 只能用于渲染文本,而不能获取其指标。您需要使用适当的 Windows API 函数,或 FreeType 库(没有稳定的 Python绑定存在)以获得字距调整信息。

No, PIL can only be used to render text, not get its metrics. You'll need to use either the appropriate Windows API functions, or the FreeType library (for which no stable Python bindings exist) in order to get kerning info.

情话已封尘 2024-08-25 15:53:26

有 kern-dump 它将转储字体文件中所有字形对的 kern 值:

https ://github.com/adobe-type-tools/kern-dump

There is kern-dump which will dump kern values for all glyph pairs in a font file:

https://github.com/adobe-type-tools/kern-dump

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文