我目前正在编写一个在OpenGL中使用语法高亮显示的文本块,并使用换行符正确布局我的行我使用AWT LineBreakMeasurer
。视觉效果非常完美,性能还可以,但是我想知道是否有可能让它更快一些。目前,一行文本的布局平均需要2-3毫秒。
所以这是当前用于进行布局的代码
private fun calculateLineLayout(line: AttributedString, graphics: Graphics2D, width: Int, layouts: ArrayList<TextLayout>): Float {
val iterator = line.iterator
if(iterator.beginIndex >= iterator.endIndex) {
return 0.0f
}
val end = iterator.endIndex
val measurer = LineBreakMeasurer(iterator, graphics.fontRenderContext)
measurer.position = iterator.beginIndex
var sizeY = 0.0f
while(measurer.position < end) {
val layout = measurer.nextLayout(width.toFloat())
layouts.add(layout)
sizeY += layout.ascent + layout.descent + layout.leading
}
return sizeY
}
我的问题是
LineBreakMeasurer
是否有更高效的替代方案?