kunfei 3 лет назад
Родитель
Сommit
59b77a4d80

+ 1 - 1
app/src/main/assets/privacyPolicy.md

@@ -2,4 +2,4 @@
 * 本应用网络同步和备份采用webDav协议,由用户自己提供同步服务.
 * 存储权限用来打开本地文件和本地备份恢复.
 * 其它一些权限是Google Firebase需要.
-* 本应用为开源软件,使用中发生任何问题由用户自己承担.
+* 本应用为开源软件,内置js引擎,因书源调用js发生的任何问题由用户自行承担.

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt

@@ -156,7 +156,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
     private fun drawUnderline(canvas: Canvas, textLine: TextLine, relativeOffset: Float) {
         val lineY = relativeOffset + textLine.lineBottom - 1.dpToPx()
         canvas.drawLine(
-            textLine.lineStart,
+            textLine.lineStart + textLine.indentWidth,
             lineY,
             textLine.lineEnd,
             lineY,

+ 1 - 0
app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt

@@ -17,6 +17,7 @@ data class TextLine(
     var lineTop: Float = 0f,
     var lineBase: Float = 0f,
     var lineBottom: Float = 0f,
+    var indentWidth: Float = 0f,
     val isTitle: Boolean = false,
     var isParagraphEnd: Boolean = false,
     var isReadAloud: Boolean = false,

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

@@ -377,8 +377,8 @@ object ChapterProvider {
                         0f
                     }
                     addCharsToLineNatural(
-                        book, absStartX, textLine, words.toStringArray(),
-                        textPaint, startX, srcList
+                        book, absStartX, textLine, words.toStringArray(), textPaint,
+                        startX, !isTitle && lineIndex == 0, srcList
                     )
                 }
                 else -> {
@@ -390,7 +390,7 @@ object ChapterProvider {
                         val startX = (visibleWidth - layout.getLineWidth(lineIndex)) / 2
                         addCharsToLineNatural(
                             book, absStartX, textLine, words.toStringArray(),
-                            textPaint, startX, srcList
+                            textPaint, startX, false, srcList
                         )
                     } else {
                         //中间行
@@ -430,7 +430,10 @@ object ChapterProvider {
     ) {
         var x = 0f
         if (!ReadBookConfig.textFullJustify) {
-            addCharsToLineNatural(book, absStartX, textLine, words, textPaint, x, srcList)
+            addCharsToLineNatural(
+                book, absStartX, textLine, words, textPaint,
+                x, true, srcList
+            )
             return
         }
         val bodyIndent = ReadBookConfig.paragraphIndent
@@ -445,6 +448,7 @@ object ChapterProvider {
                 )
             )
             x = x1
+            textLine.indentWidth = x
         }
         if (words.size > bodyIndent.length) {
             val words1 = words.copyOfRange(bodyIndent.length, words.size)
@@ -471,7 +475,10 @@ object ChapterProvider {
         srcList: LinkedList<String>?
     ) {
         if (!ReadBookConfig.textFullJustify) {
-            addCharsToLineNatural(book, absStartX, textLine, words, textPaint, startX, srcList)
+            addCharsToLineNatural(
+                book, absStartX, textLine, words, textPaint,
+                startX, false, srcList
+            )
             return
         }
         val residualWidth = visibleWidth - desiredWidth
@@ -519,14 +526,19 @@ object ChapterProvider {
         words: Array<String>,
         textPaint: TextPaint,
         startX: Float,
+        hasIndent: Boolean,
         srcList: LinkedList<String>?
     ) {
+        val indentLength = ReadBookConfig.paragraphIndent.length
         var x = startX
         words.forEachIndexed { index, char ->
             val cw = StaticLayout.getDesiredWidth(char, textPaint)
             val x1 = x + cw
             addCharToLine(book, absStartX, textLine, char, x, x1, index + 1 == words.size, srcList)
             x = x1
+            if (hasIndent && index == indentLength - 1) {
+                textLine.indentWidth = x
+            }
         }
         exceed(absStartX, textLine, words)
     }