我正在尝试使用PIL预先计算给定文本行在给定字体和大小下的尺寸。 PIL或多或少是唯一可行的解决方案。
我试图通过将font.getsize()
的结果与Adobe Illustrator中键入的文本大小进行比较来检查结果。他们似乎很少匹配。
我在Adobe Illustrator中为文本选择了以下设置:
pt
0
auto
9
在python REPL中,我使用ImageFont.truetype('...', 9)
指令创建了字体,然后将其命名为font.getsize('...')
,其文本与Adobe Illustrator中的文本相同
我测试过的所有字体的数字都不同,除了Arial:
| Font | Width in Illustrator | Result with Pillow |
|---------------------|----------------------|--------------------|
| Arial | 49.987 | 50 |
| AppleGothic | 35.774 | 26 |
| Times New Roman | 62.513 | 75 |
| Museo Sans 700 | 60.074 | 50 |
| StixIntegralsD Bold | 60.074 | 50 |
以下是我使用的相关软件的版本:
答案 0 :(得分:0)
我设法理解并发现了如何获得理想的效果。
感谢Mark Setchell在this other post方面为我提供了帮助。
我要了解的是,枕头只关心像素,而不关心分辨率。因此,我需要将给出的字体大小乘以要打印的分辨率,然后将结果除以该分辨率,最后从pts转换为毫米。
最终公式为getfont('...', resolution * font_size).getsize('...')[0] / resolution * 0.352778