我使用以下两种方法来计算一个样本串的渲染宽度用于一组字体类型和大小:测量文本的宽度(Python的/ PIL)
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14)
sample = "Lorem ipsum dolor sit amet, partem periculis an duo, eum lorem paulo an, mazim feugiat lobortis sea ut. In est error eirmod vituperata, prima iudicabit rationibus mel et. Paulo accumsan ad sit, et modus assueverit eum. Quod homero adversarium vel ne, mel noster dolorum te, qui ea senserit argumentum complectitur. Duo at laudem explicari deterruisset, eu quo hinc mnesarchum. Vel autem insolens atomorum at, dolorum suavitate voluptatum duo ex."
#METHOD 1
draw_txt = ImageDraw.Draw(img)
width, height = draw_txt.textsize(sample, font=font)
print width
#METHOD 2
width = 0
for c in sample:
width += font.getsize(c)[0]
print width
METHOD 1
产生的宽度3236
,而METHOD 2
得到3270
。为何差异?此外,我还注意到样本文本越短,这两种方法之间的差异越小。
这是怎么回事?而且哪个宽度可以认为是true渲染句子的宽度?最后,我可以做两种方法报告大致相同的宽度吗?
注:示范文本是长