如何在Python Pillow中设置字体的字距调整?

mor*_*air 3 python python-imaging-library

对于 Pillow 类ImageDraw(https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html#PIL.ImageDraw.PIL.ImageDraw.ImageDraw.text)我找到了 param features。它可以调整此字体参数:https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist

如何设置字距调整(kern)参数?我不知道语法。

这不是工作:

draw.text((61, 386), text, (0, 0, 0), font=font, features={"kern": 1.0})
Run Code Online (Sandbox Code Playgroud)

小智 5

我最近遇到了同样的问题。我认为最好的方法是单独绘制每个字母并计算使其均匀所需的间距。这是我让它工作的代码。

text = "Sample Text"
total_text_width, total_text_height = draw.textsize(text, font=font)
width_difference = desired_width_of_text - total_text_width
gap_width = int(width_difference / (len(text) - 1))
xpos = left_side_padding
for letter in text:
    draw.text((xpos,0),letter, (0,0,0), font=font)
    letter_width, letter_height = draw.textsize(letter, font=font)
    xpos += letter_width + gap_width
Run Code Online (Sandbox Code Playgroud)
  • desired_width_of_text需要设置并指定所需的文本宽度
  • left_side_padding应该是0或指定左侧的任何填充
  • font需要指定合适大小的字体

默认间距与绘制每个字母并计算间距