gpt4 book ai didi

python - 根据字符宽度将字符串分成多行(python)

转载 作者:行者123 更新时间:2023-12-01 03:01:07 24 4
gpt4 key购买 nike

我正在通过 PIL 在基本图像上绘制文本。要求之一是如果所有字符的组合宽度超过基本图像的宽度,则它会溢出到下一行。

目前我正在使用 textwrap.wrap(text, width=16) 来完成此操作。这里width定义了一行中容纳的字符数。现在文本可以是任何内容,因为它是用户生成的。因此,问题在于硬编码 width 不会考虑由于字体类型、字体大小和字符选择而导致的 width 变化。

我的意思是什么?

想象一下我正在使用 DejaVuSans.ttf,大小为 14。W 的长度为 14,而“i”的长度为 4。对于宽度为 400,单行最多可容纳 100 个 i 个字符。但只有 29 个 W 字符。我需要制定一种更智能的换行方式,当字符宽度总和超过基本图像宽度时,字符串就会被破坏。

有人可以帮我制定这个吗?一个说明性的例子就太好了!

最佳答案

由于您知道每个字符的宽度,因此应该将其放入字典中,从中获取宽度以计算字符串宽度:

char_widths = {
'a': 9,
'b': 11,
'c': 13,
# ...and so on
}

从这里您可以查找每个字母并使用该总和来检查您的宽度:

current_width = sum([char_widths[letter] for letter in word])

关于python - 根据字符宽度将字符串分成多行(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com