优化
This commit is contained in:
@@ -803,19 +803,10 @@ class TextChapterLayout(
|
|||||||
var i = 0
|
var i = 0
|
||||||
while (i < length) {
|
while (i < length) {
|
||||||
val clusterBaseIndex = i++
|
val clusterBaseIndex = i++
|
||||||
var extra = 0f
|
widths.add(widthsArray[start + clusterBaseIndex])
|
||||||
while (i < length) {
|
while (i < length && widthsArray[start + i] == 0f && !isZeroWidthChar(text[i])) {
|
||||||
val c = text[i]
|
|
||||||
val w = widthsArray[start + i]
|
|
||||||
if (w > 0 || isZeroWidthChar(c)) {
|
|
||||||
if (!c.isLowSurrogate()) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
extra = w
|
|
||||||
}
|
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
widths.add(widthsArray[start + clusterBaseIndex] + extra)
|
|
||||||
stringList.add(text.substring(clusterBaseIndex, i))
|
stringList.add(text.substring(clusterBaseIndex, i))
|
||||||
}
|
}
|
||||||
return stringList to widths
|
return stringList to widths
|
||||||
|
|||||||
@@ -11,7 +11,17 @@ fun TextPaint.getTextWidthsCompat(text: String, widths: FloatArray) {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
|
||||||
val letterSpacing = letterSpacing * textSize
|
val letterSpacing = letterSpacing * textSize
|
||||||
val letterSpacingHalf = letterSpacing * 0.5f
|
val letterSpacingHalf = letterSpacing * 0.5f
|
||||||
widths[0] += letterSpacingHalf
|
for (i in widths.indices) {
|
||||||
widths[text.lastIndex] += letterSpacingHalf
|
if (widths[i] > 0) {
|
||||||
|
widths[i] += letterSpacingHalf
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i in text.lastIndex downTo 0) {
|
||||||
|
if (widths[i] > 0) {
|
||||||
|
widths[i] += letterSpacingHalf
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user