高性能的方法来计算固定宽度div中Unicode文本的高度

时间:2011-12-27 10:12:59

标签: javascript html unicode word-wrap

我正在寻找一种高性能的方法来计算包含Unicode文本的固定宽度div的高度(内部没有HTML标签,只有文本!)。

我们尝试使用复制的CSS样式将文本复制到隐藏的绝对定位的div元素中并从中获取clientHeight,但此解决方案的性能无法满足我们的需求。 Ext.util.TextMetrics实施了同样的方法。对于使用此方法的5000多个div元素需要大约11-12秒,这是很多。

注意对于我们的任务,我们需要为每个div执行此操作,但即使不是所有这些都将最初显示。那是因为我们需要预先知道这些5000多个元素中每个人div的高度。

我们尝试创建简单的自动换行算法并通过确定行数来计算div的高度,然后将其乘以行高,并且在性能方面效果非常好。对于相同软件/硬件配置中相同数量的div元素,它需要45毫秒(超过200倍) - 使用上述慢速方法预先预先计算字符宽度。在这一点上,我们没有考虑所有自动换行的细节以及我们有Unicode文本的事实。我们正在考虑使这种算法跨浏览器并考虑这些细节。我们并不是100%确定它是以跨浏览器方式实现的。

所以,有两个问题:

  • 还有另一种在浏览器中快速计算文字高度的方法吗?
  • 否则,我们可以使用什么算法进行跨浏览器自动换行(假设我们需要支持最新的Chrome,Safari,Firefox和IE 9+)?那么Unicode Word Wrapping算法http://unicode.org/reports/tr14/

0 个答案:

没有答案