如何在python

时间:2015-09-13 22:07:51

标签: python string

this question类似,我不会问如何查找字符串中的字符数。我想确定一个字符串的可视长度,或者将它与另一个字符串进行比较。

例如,两者都是' iiii'和#WWWW'有四个字符。但是,' iiii'视觉上较短。我知道这是由字体决定的,而且我没有使用等宽字体。因此,出于这个问题的目的,我将使用Arial 10pt。

是否有任何内置模块可以提供给定字体的字符串的视觉尺寸?

1 个答案:

答案 0 :(得分:2)

您可以使用字体指标直接通过计算宽度,而不是渲染到图像缓冲区和计算像素。似乎没有使用核心python分布的字体API,但有各种包装中有大量第三方产品。这是pretty complete solution的Adobe字体指标,使用matplotlib

>>> from matplotlib import rcParams
>>> import os.path

>>> afm_filename = os.path.join(rcParams['datapath'], 'fonts', 'afm', 'ptmr8a.afm')
>>>
>>> from matplotlib.afm import AFM
>>> afm = AFM(open(afm_filename))
>>> afm.string_width_height('What the heck?')
(6220.0, 694)

另一种可能性是tkFont的{​​{1}}模块。 This page记录了函数tkinter,但似乎您需要一个Tk窗口才能使用它;所以我不知道它有多实用:

tkFont.Font.measure("some string")

注意:在python 2中(以及我在上面提到的page中),# Python 3 names -- see Note below import tkinter from tkinter import font as tkFont tkinter.Frame().destroy() # Enough to initialize resources arial36b = tkFont.Font(family='Arial', size=36, weight='bold') width = arial36b.measure("How wide is this?") print(width) # Prints: 404 称为tkinterTkinter是顶层模块,{ {1}}:

tkinter.font