Sfoglia il codice sorgente

优化英文两端对齐

kunfei 3 anni fa
parent
commit
cad5dbf9ec

+ 24 - 8
app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt

@@ -458,14 +458,30 @@ object ChapterProvider {
             addCharsToLineNatural(book, absStartX, textLine, words, textPaint, startX, srcList)
             return
         }
-        val gapCount: Int = words.lastIndex
-        val d = (visibleWidth - desiredWidth) / gapCount
-        var x = startX
-        words.forEachIndexed { index, char ->
-            val cw = StaticLayout.getDesiredWidth(char, textPaint)
-            val x1 = if (index != words.lastIndex) (x + cw + d) else (x + cw)
-            addCharToLine(book, absStartX, textLine, char, x, x1, index + 1 == words.size, srcList)
-            x = x1
+        val spaceSize = words.filter { it == " " }.size
+        if (spaceSize > 0) {
+            val d = (visibleWidth - desiredWidth) / spaceSize
+            var x = startX
+            words.forEachIndexed { index, char ->
+                val cw = StaticLayout.getDesiredWidth(char, textPaint)
+                val x1 = if (char == " ") {
+                    if (index != words.lastIndex) (x + cw + d) else (x + cw)
+                } else {
+                    (x + cw)
+                }
+                addCharToLine(book, absStartX, textLine, char, x, x1, index + 1 == words.size, srcList)
+                x = x1
+            }
+        } else {
+            val gapCount: Int = words.lastIndex
+            val d = (visibleWidth - desiredWidth) / gapCount
+            var x = startX
+            words.forEachIndexed { index, char ->
+                val cw = StaticLayout.getDesiredWidth(char, textPaint)
+                val x1 = if (index != words.lastIndex) (x + cw + d) else (x + cw)
+                addCharToLine(book, absStartX, textLine, char, x, x1, index + 1 == words.size, srcList)
+                x = x1
+            }
         }
         exceed(absStartX, textLine, words)
     }