编程语言
首页 > 编程语言> > 根据字符宽度将字符串分成多行(python)

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

作者:互联网

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

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

我什么意思

想象一下,我正在使用大小为14的DejaVuSans.ttf.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,word-wrap,python-textprocessing
来源: https://codeday.me/bug/20191014/1912564.html