This commit is contained in:
kunfei
2023-04-03 11:25:36 +08:00
parent 195c5ed585
commit bd2581954a
4 changed files with 20 additions and 7 deletions

View File

@@ -2,4 +2,4 @@
* 本应用网络同步和备份采用webDav协议,由用户自己提供同步服务.
* 存储权限用来打开本地文件和本地备份恢复.
* 其它一些权限是Google Firebase需要.
* 本应用为开源软件,使用中发生任何问题由用户自承担.
* 本应用为开源软件,内置js引擎,因书源调用js发生任何问题由用户自承担.

View File

@@ -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,

View File

@@ -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,

View File

@@ -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<String>?
) {
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<String>,
textPaint: TextPaint,
startX: Float,
hasIndent: Boolean,
srcList: LinkedList<String>?
) {
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)
}