从列表中找到最长单词(逐像素)的程序或方法?

时间:2011-01-01 12:45:47

标签: fonts

我正在设计需要非常精确间距的东西,所以我需要为每列分配正确的空间。

我有一个巨大的名单,很长,我想计算最长名称占用多少空间。 'iiii'与'mmmm'不同,即使它们具有相同数量的字符,因此显然,根据使用的字体,应该考虑到它。

2 个答案:

答案 0 :(得分:0)

如果您使用的是win32,我认为GetTextExtent是您正在寻找的API调用。其他平台应该有类似的API。

答案 1 :(得分:0)

大多数平台(和/或字体处理库)提供了一种获取字体范围最大提前宽度的方法,如果绝对需要,可以使用它来分配列宽。这应该是一个非常便宜的操作,因为你只是查找一个值,然后乘以字符串中的字符数,而不是实际渲染字符串。

某些平台还提供字体宽度平均提前宽度值;如果你只是需要“非常接近”,你可能会设计一个考虑平均值的公式。

在Win32下,GetTextMetrics返回一个包含最大值和平均值的TEXTMETRIC结构。如上所述,其他平台应该有类似的API,但您必须自己解决,或编辑您的问题,以便我们为您提供帮助。