Horis пре 2 година
родитељ
комит
10299a6254

+ 17 - 5
app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt

@@ -780,16 +780,28 @@ class TextChapterLayout(
         }
         val widths = ArrayList<Float>(clusterCount)
         val stringList = ArrayList<String>(clusterCount)
-        var i = start
-        while (i < start + length) {
+        var i = 0
+        while (i < length) {
             val clusterBaseIndex = i++
-            widths.add(widthsArray[clusterBaseIndex])
-            while (i < length && widthsArray[i] == 0f) {
+            widths.add(widthsArray[start + clusterBaseIndex])
+            while (i < length && widthsArray[start + i] == 0f && !isZeroWidthChar(text[i])) {
                 i++
             }
-            stringList.add(text.substring(clusterBaseIndex - start, i - start))
+            stringList.add(text.substring(clusterBaseIndex, i))
         }
         return stringList to widths
     }
 
+    private fun isZeroWidthChar(char: Char): Boolean {
+        return zeroWidthCodePoints.binarySearch(char.code) >= 0
+    }
+
+    companion object {
+        val zeroWidthCodePoints = intArrayOf(
+            173, 1564, 1807, 6158, 8203, 8204, 8205, 8206, 8207, 8234,
+            8235, 8236, 8237, 8238, 8288, 8289, 8290, 8291, 8292, 8294,
+            8295, 8296, 8297, 8299, 8300, 8301, 8302, 8303, 65279, 65529
+        )
+    }
+
 }