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 4285b4a2e..1d6966435 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 @@ -10,8 +10,10 @@ import io.legado.app.help.BookHelp import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeRule import io.legado.app.model.analyzeRule.AnalyzeUrl +import io.legado.app.model.analyzeRule.QueryTTF import io.legado.app.utils.NetworkUtils import io.legado.app.utils.htmlFormat +import io.legado.app.utils.toStringArray import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.withContext @@ -34,13 +36,21 @@ object BookContent { val content = StringBuilder() val nextUrlList = arrayListOf(baseUrl) val contentRule = bookSource.getContentRule() - contentRule.font?.let { - //todo 获取字体 - val analyzeRule = AnalyzeRule(book) - analyzeRule.setContent(body).setBaseUrl(baseUrl) - analyzeRule.getByteArray(it)?.let { font -> - BookHelp.saveFont(book, bookChapter, font) - } + val analyzeRule = AnalyzeRule(book).setContent(body, baseUrl) + val fontRule = contentRule.font + val correctFontRule = contentRule.correctFont + var font: ByteArray? = null + var correctFont: ByteArray? = null + fontRule?.let { + //todo 获取网页嵌入字体 + font = analyzeRule.getByteArray(it) + } + correctFontRule?.let { + //todo 获取正确字体 + correctFont = analyzeRule.getByteArray(it) + } + if (correctFont == null && font != null) { + BookHelp.saveFont(book, bookChapter, font!!) } var contentData = analyzeContent( book, baseUrl, body, contentRule, bookChapter, bookSource @@ -101,11 +111,20 @@ object BookContent { var contentStr = content.toString().htmlFormat() val replaceRegex = bookSource.ruleContent?.replaceRegex if (!replaceRegex.isNullOrEmpty()) { - val analyzeRule = AnalyzeRule(book) analyzeRule.setContent(contentStr).setBaseUrl(baseUrl) analyzeRule.chapter = bookChapter contentStr = analyzeRule.getString(replaceRegex) } + if (correctFont != null && font != null) { + val queryTTF = QueryTTF(font!!) + val cQueryTTF = QueryTTF(correctFont!!) + val contentArray = contentStr.toStringArray() + contentArray.forEachIndexed { index, s -> + val code = cQueryTTF.getCodeByGlyf(queryTTF.getGlyfByCode(s.toInt())) + contentArray[index] = code.toString() + } + contentStr = contentArray.joinToString("") + } Debug.log(bookSource.bookSourceUrl, "┌获取章节名称") Debug.log(bookSource.bookSourceUrl, "└${bookChapter.title}") Debug.log(bookSource.bookSourceUrl, "┌获取正文内容")