尝试解决ChapterProvider报错

pull/1155/head
gedoor 3 years ago
parent 55efc2e67a
commit 7ede071d5c
  1. 8
      app/src/main/java/io/legado/app/help/ContentHelp.kt
  2. 12
      app/src/main/java/io/legado/app/help/ContentProcessor.kt
  3. 49
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt

@ -36,7 +36,7 @@ object ContentHelp {
//如果原文存在分段错误,需要把段落重新黏合
for (i in 1 until p.size) {
if (match(MARK_SENTENCES_END, buffer[buffer.length - 1])) buffer.append("\n")
// 段落开头以外的地方不应该有空格
// 段落开头以外的地方不应该有空格
// 去除段落内空格。unicode 3000 象形字间隔(中日韩符号和标点),不包含在\s内
buffer.append(p[i].replace("[\u3000\\s]".toRegex(), ""))
}
@ -51,7 +51,7 @@ object ContentHelp {
.replace(
"([问说喊唱叫骂道着答])[\\.。]".toRegex(),
"$1。\n"
) // .replaceAll("([\\.。\\!!??])([^\"”“]+)[::][\"”“]", "$1\n$2:“")
)
.split("\n".toRegex()).toTypedArray()
buffer = StringBuffer((content1.length * 1.15).toInt())
for (s in p) {
@ -101,9 +101,9 @@ object ContentHelp {
for (i in 0 until l) {
string.append('\n')
string.append(p[i])
// System.out.print(" "+b[i]);
//System.out.print(" "+b[i]);
}
// System.out.println(" " + str);
//System.out.println(" " + str);
return string
}

@ -84,15 +84,15 @@ class ContentProcessor private constructor(
}
}
val contents = arrayListOf<String>()
content1.split("\n").forEach {
val str = it.replace("^[\\n\\r]+".toRegex(), "").trim()
content1.split("\n").forEach { str ->
val paragraph = str.replace("^[\\n\\r]+".toRegex(), "").trim()
if (contents.isEmpty()) {
contents.add(title)
if (str != title && str.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$str")
if (paragraph != title && paragraph.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$paragraph")
}
} else if (str.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$str")
} else if (paragraph.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$paragraph")
}
}
return contents

@ -111,26 +111,39 @@ object ChapterProvider {
)
}
} else if (book.getImageStyle() != Book.imgStyleText) {
content.replace(AppPattern.imgPattern.toRegex(), "\n\$0\n").split("\n")
.forEach { text ->
if (text.isNotBlank()) {
if (!text.startsWith("<img src=\"")) { //非图片
val isTitle = index == 0
val textPaint = if (isTitle) titlePaint else contentPaint
if (!(isTitle && ReadBookConfig.titleMode == 2)) {
durY = setTypeText(
text, durY, textPages,
stringBuilder, isTitle, textPaint
)
}
} else { //图片
durY = setTypeImage(
book, bookChapter, text.substring(10, text.length - 2),
durY, textPages, book.getImageStyle()
)
}
val matcher = AppPattern.imgPattern.matcher(content)
var start = 0
while (matcher.find()) {
val text = content.substring(start, matcher.start())
if (text.isNotBlank()) {
val isTitle = index == 0
val textPaint = if (isTitle) titlePaint else contentPaint
if (!(isTitle && ReadBookConfig.titleMode == 2)) {
durY = setTypeText(
text, durY, textPages,
stringBuilder, isTitle, textPaint
)
}
}
durY = setTypeImage(
book, bookChapter, matcher.group(1)!!,
durY, textPages, book.getImageStyle()
)
start = matcher.end()
}
if (start < content.length) {
val text = content.substring(start, content.length)
if (text.isNotBlank()) {
val isTitle = index == 0
val textPaint = if (isTitle) titlePaint else contentPaint
if (!(isTitle && ReadBookConfig.titleMode == 2)) {
durY = setTypeText(
text, durY, textPages,
stringBuilder, isTitle, textPaint
)
}
}
}
}
}
textPages.last().height = durY + 20.dp

Loading…
Cancel
Save