From 8b526a01c0b3fa36518e324bcfb1afd1c3adf3a9 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:49:40 +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 --- .../java/io/legado/app/model/ReadManga.kt | 20 ++++++++++--------- .../app/ui/book/manga/ReadMangaActivity.kt | 15 +++++++------- .../ui/book/manga/entities/MangaChapter.kt | 2 +- .../ui/book/manga/entities/MangaContent.kt | 2 +- .../read/page/provider/TextChapterLayout.kt | 8 ++++++-- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/ReadManga.kt b/app/src/main/java/io/legado/app/model/ReadManga.kt index a76905014..0f0539cea 100644 --- a/app/src/main/java/io/legado/app/model/ReadManga.kt +++ b/app/src/main/java/io/legado/app/model/ReadManga.kt @@ -20,6 +20,7 @@ import io.legado.app.help.config.AppConfig import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.globalExecutor import io.legado.app.model.webBook.WebBook +import io.legado.app.ui.book.manga.entities.BaseMangaPage import io.legado.app.ui.book.manga.entities.MangaChapter import io.legado.app.ui.book.manga.entities.MangaContent import io.legado.app.ui.book.manga.entities.MangaPage @@ -239,24 +240,25 @@ object ReadManga : CoroutineScope by MainScope() { } private fun buildMangaContent(): MangaContent { - val list = arrayListOf() - var pos = durChapterPos + 1 + val items = arrayListOf() + var pos = 0 var curFinish = false var nextFinish = false prevMangaChapter?.let { - pos += it.contents.size - list.addAll(it.contents) + pos += it.pages.size + items.addAll(it.pages) } curMangaChapter?.let { curFinish = true - list.addAll(it.contents) + items.addAll(it.pages) + durChapterPos = durChapterPos.coerceIn(0, it.imageCount - 1) + pos += durChapterPos + 1 } nextMangaChapter?.let { nextFinish = true - list.addAll(it.contents) + items.addAll(it.pages) } - pos = pos.coerceIn(0, list.lastIndex) - return MangaContent(pos, list, curFinish, nextFinish) + return MangaContent(pos, items, curFinish, nextFinish) } /** @@ -586,7 +588,7 @@ object ReadManga : CoroutineScope by MainScope() { it.imageCount = imageCount } - val contentList = mutableListOf() + val contentList = mutableListOf() contentList.add(ReaderLoading(chapter.index, -1, "阅读 ${chapter.title}")) contentList.addAll(list) contentList.add(ReaderLoading(chapter.index, imageCount, "已读完 ${chapter.title}")) diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt index e3150760c..6c79169df 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt @@ -261,7 +261,7 @@ class ReadMangaActivity : VMBaseActivity -1) { - mLayoutManager.scrollToPositionWithOffset(pos, 0) - upInfoBar(mAdapter.getItem(pos)) + if (itemPos > -1) { + mLayoutManager.scrollToPositionWithOffset(itemPos, 0) + upInfoBar(mAdapter.getItem(itemPos)) + ReadManga.durChapterPos = index } } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaChapter.kt b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaChapter.kt index 7a2a84330..93b2acdd0 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaChapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaChapter.kt @@ -4,6 +4,6 @@ import io.legado.app.data.entities.BookChapter data class MangaChapter( val chapter: BookChapter, - val contents: List, + val pages: List, val imageCount: Int ) diff --git a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt index 9558274d1..904297882 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/entities/MangaContent.kt @@ -2,7 +2,7 @@ package io.legado.app.ui.book.manga.entities data class MangaContent( val pos: Int, - val contents: List, + val items: List, val curFinish: Boolean, val nextFinish: Boolean ) 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 05075210a..dfeff126b 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 @@ -804,7 +804,11 @@ class TextChapterLayout( while (i < length) { val clusterBaseIndex = i++ widths.add(widthsArray[start + clusterBaseIndex]) - while (i < length && widthsArray[start + i] == 0f && !isZeroWidthChar(text[i])) { + while (i < length) { + val c = text[i] + if ((widthsArray[start + i] > 0 && !c.isLowSurrogate()) || isZeroWidthChar(c)) { + break + } i++ } stringList.add(text.substring(clusterBaseIndex, i)) @@ -814,7 +818,7 @@ class TextChapterLayout( private fun isZeroWidthChar(char: Char): Boolean { val code = char.code - return code == 8203 || code == 8204 || code == 8288 + return code == 8203 || code == 8204 || code == 8205 || code == 8288 } }