diff --git a/app/src/main/assets/privacyPolicy.md b/app/src/main/assets/privacyPolicy.md index 055cadb60..abf1cddb7 100644 --- a/app/src/main/assets/privacyPolicy.md +++ b/app/src/main/assets/privacyPolicy.md @@ -2,4 +2,4 @@ * 本应用网络同步和备份采用webDav协议,由用户自己提供同步服务. * 存储权限用来打开本地文件和本地备份恢复. * 其它一些权限是Google Firebase需要. -* 本应用为开源软件,使用中发生任何问题由用户自己承担. \ No newline at end of file +* 本应用为开源软件,内置js引擎,因书源调用js发生的任何问题由用户自行承担. \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt index cc83b95e9..3b01bec76 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt +++ b/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, diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt index 8f679a4b8..e96cfaea1 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt +++ b/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, diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt index 468b19aec..e7b73e55a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt +++ b/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? ) { 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, textPaint: TextPaint, startX: Float, + hasIndent: Boolean, srcList: LinkedList? ) { + 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) }