From 0ed31ae56c403f406a5c70fd8149b57878e9192b Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Tue, 27 Feb 2024 19:18:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/webBook/BookContent.kt | 3 +-- .../app/ui/book/read/page/provider/ChapterProvider.kt | 7 ++----- .../app/ui/book/read/page/provider/TextChapterLayout.kt | 8 +++++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt index 38a491d53..9d775d388 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt @@ -132,8 +132,7 @@ object BookContent { //全文替换 val replaceRegex = contentRule.replaceRegex if (!replaceRegex.isNullOrEmpty()) { - contentStr = contentStr.split(AppPattern.LFRegex) - .joinToString("\n") { it.trim { c -> c <= ' ' || c == ' ' } } + contentStr = contentStr.split(AppPattern.LFRegex).joinToString("\n") { it.trim() } contentStr = analyzeRule.getString(replaceRegex, contentStr) contentStr = contentStr.split(AppPattern.LFRegex).joinToString("\n") { "  $it" } } 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 bd36adc73..ced5adc3d 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 @@ -809,11 +809,8 @@ object ChapterProvider { paragraphSpacing = ReadBookConfig.paragraphSpacing titleTopSpacing = ReadBookConfig.titleTopSpacing.dpToPx() titleBottomSpacing = ReadBookConfig.titleBottomSpacing.dpToPx() - var bodyIndent = ReadBookConfig.paragraphIndent - val indentLength = bodyIndent.length - // 有些字体的中文空格宽度不对 - bodyIndent = "一".repeat(indentLength) - indentCharWidth = StaticLayout.getDesiredWidth(bodyIndent, contentPaint) / indentLength + val bodyIndent = ReadBookConfig.paragraphIndent + indentCharWidth = StaticLayout.getDesiredWidth(bodyIndent, contentPaint) / bodyIndent.length titlePaintTextHeight = titlePaint.textHeight contentPaintTextHeight = contentPaint.textHeight titlePaintFontMetrics = titlePaint.fontMetrics diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt index d1e4dc5a3..23ea83de3 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt @@ -431,6 +431,7 @@ class TextChapterLayout( else -> y } + val (strList, widthList) = measureTextSplit(text, textPaint) for (lineIndex in 0 until layout.lineCount) { val textLine = TextLine(isTitle = isTitle) if (durY + textHeight > visibleHeight) { @@ -461,12 +462,13 @@ class TextChapterLayout( val lineStart = layout.getLineStart(lineIndex) val lineEnd = layout.getLineEnd(lineIndex) val lineText = text.substring(lineStart, lineEnd) - val (words, widths) = measureTextSplit(lineText, textPaint) + val words = strList.subList(lineStart, lineEnd) + val widths = widthList.subList(lineStart, lineEnd) val desiredWidth = widths.fastSum() textLine.text = lineText when { lineIndex == 0 && layout.lineCount > 1 && !isTitle -> { - //第一行 非标题 + //多行的第一行 非标题 addCharsToLineFirst( book, absStartX, textLine, words, textPaint, desiredWidth, widths, srcList @@ -474,7 +476,7 @@ class TextChapterLayout( } lineIndex == layout.lineCount - 1 -> { - //最后一行 + //最后一行、单行 //标题x轴居中 val startX = if ( isTitle &&