Merge remote-tracking branch 'origin/master'

pull/898/head
gedoor 4 years ago
commit bd25b785ae
  1. 60
      .github/scripts/lzy.sh
  2. 99
      .github/scripts/lzy_web.py
  3. 26
      .github/workflows/legado.yml
  4. 2
      app/src/main/assets/web/new/css/detail.79c91c30.css
  5. 4
      app/src/main/assets/web/new/index.html
  6. 0
      app/src/main/assets/web/new/js/about.32f651f9.js
  7. 2
      app/src/main/assets/web/new/js/app.3f3311a5.js
  8. 4
      app/src/main/assets/web/new/js/chunk-vendors.305d5536.js
  9. 1
      app/src/main/assets/web/new/js/detail.0cc184f2.js
  10. 1
      app/src/main/assets/web/new/js/detail.4d0609e7.js
  11. 28
      app/src/main/assets/web/new/precache-manifest.63ef7cbb041538ea344680ff651c5232.js
  12. 2
      app/src/main/assets/web/new/service-worker.js
  13. 2
      app/src/main/java/io/legado/app/help/ContentProcessor.kt
  14. 4
      app/src/main/java/io/legado/app/model/localBook/EPUBFile.kt
  15. 5
      app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
  16. 3
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt
  17. 21
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ZhLayout.kt

@ -1,60 +0,0 @@
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# --------------------------------------------------------------
# 系统: ALL
# 项目: 蓝奏云上传文件
# 版本: 1.0.3
# 作者: XIU2
# 官网: https://shell.xiu2.xyz
# 项目: https://github.com/XIU2/Shell
# --------------------------------------------------------------
USERNAME="admin" # 蓝奏云用户名
COOKIE_PHPDISK_INFO="$LANZOU_PSD" # Cookie 中 phpdisk_info 的值
COOKIE_YLOGIN="$LANZOU_ID" # Cookie 中 ylogin 的值
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.7.3670.199 Safari/537.36"
HEADER_CHECK_LOGIN="User-Agent: ${UA}
Referer: https://up.woozooo.com/mydisk.php?item=files&action=index&u=${USERNAME}
Accept-Language: zh-CN,zh;q=0.9"
URL_ACCOUNT="https://pc.woozooo.com/account.php"
URL_UPLOAD="https://up.woozooo.com/fileup.php"
INFO="[信息]" && ERROR="[错误]" && TIP="[注意]"
# 检查是否已登录
_CHECK_LOGIN() {
if [[ "${COOKIE_PHPDISK_INFO}" = "" || "${COOKIE_PHPDISK_INFO}" = "XXX" ]]; then
_NOTICE "ERROR" "请指定 Cookie 中 phpdisk_info 的值!"
fi
if [[ "${COOKIE_YLOGIN}" = "" || "${COOKIE_YLOGIN}" = "XXX" ]]; then
_NOTICE "ERROR" "请指定 Cookie 中 ylogin 的值!"
fi
HTML_CHECK_LOGIN=$(curl -s --http1.1 -b "ylogin=${COOKIE_YLOGIN};phpdisk_info=${COOKIE_PHPDISK_INFO}" -H "${HEADER_CHECK_LOGIN}" "${URL_ACCOUNT}"|grep "登录")
[[ ! -z "${HTML_CHECK_LOGIN}" ]] && _NOTICE "ERROR" "Cookie 已失效,请更新!"
}
# 上传文件
_UPLOAD() {
[[ $(du "${NAME_FILE}"|awk '{print $1}') -gt 100000000 ]] && _NOTICE "ERROR" "${NAME}文件大于 100MB!"
HTML_UPLOAD=$(curl --connect-timeout 120 -m 5000 --retry 2 -s -b "ylogin=${COOKIE_YLOGIN};phpdisk_info=${COOKIE_PHPDISK_INFO}" -H "${URL_UPLOAD}" -F "task=1" -F "id=WU_FILE_0" -F "folder_id=${FOLDER_ID}" -F "name=${NAME}" -F "upload_file=@${NAME_FILE}" "${URL_UPLOAD}"|grep '\\u4e0a\\u4f20\\u6210\\u529f')
[[ -z "${HTML_UPLOAD}" ]] && _NOTICE "ERROR" "${NAME}文件上传失败!"
echo -e "${INFO} 文件上传成功![$(date -u -d '+8 hour' '+%Y-%m-%d %H:%M:%S')]"
}
NAME="$1" # 文件名
NAME_FILE="$2" # 文件路径
FOLDER_ID="$3" # 上传文件夹ID
if [[ -z "${NAME}" ]]; then
echo -e "${ERROR} 未指定文件名!" && exit 1
elif [[ -z "${NAME_FILE}" ]]; then
echo -e "${ERROR} 未指定文件路径!" && exit 1
elif [[ -z "${FOLDER_ID}" ]]; then
echo -e "${ERROR} 未指定上传文件夹ID!" && exit 1
fi
_CHECK_LOGIN
_UPLOAD

@ -0,0 +1,99 @@
import requests, os, datetime, sys
# Cookie 中 phpdisk_info 的值
cookie_phpdisk_info = os.environ.get('phpdisk_info')
# Cookie 中 ylogin 的值
cookie_ylogin = os.environ.get('ylogin')
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Referer': 'https://pc.woozooo.com/account.php?action=login'
}
# 小饼干
cookie = {
'ylogin': cookie_ylogin,
'phpdisk_info': cookie_phpdisk_info
}
# 日志打印
def log(msg):
utc_time = datetime.datetime.utcnow()
china_time = utc_time + datetime.timedelta(hours=8)
print(f"[{china_time.strftime('%Y.%m.%d %H:%M:%S')}] {msg}")
# 检查是否已登录
def login_by_cookie():
url_account = "https://pc.woozooo.com/account.php"
if cookie['phpdisk_info'] is None:
log('ERROR: 请指定 Cookie 中 phpdisk_info 的值!')
return False
if cookie['ylogin'] is None:
log('ERROR: 请指定 Cookie 中 ylogin 的值!')
return False
res = requests.get(url_account, headers=headers, cookies=cookie, verify=True)
if '网盘用户登录' in res.text:
log('ERROR: 登录失败,请更新Cookie')
return False
else:
log('登录成功')
return True
# 上传文件
def upload_file(file_dir, folder_id):
file_name = os.path.basename(file_dir)
url_upload = "https://up.woozooo.com/fileup.php"
headers['Referer'] = f'https://up.woozooo.com/mydisk.php?item=files&action=index&u={cookie_ylogin}'
post_data = {
"task": "1",
"folder_id": folder_id,
"id": "WU_FILE_0",
"name": file_name,
}
files = {'upload_file': (file_name, open(file_dir, "rb"), 'application/octet-stream')}
res = requests.post(url_upload, data=post_data, files=files, headers=headers, cookies=cookie, timeout=120,
verify=True).json()
log(f"{file_dir} -> {res['info']}")
return res['zt'] == 1
# 上传文件夹内的文件
def upload_folder(folder_dir, folder_id):
file_list = os.listdir(folder_dir)
for file in file_list:
path = os.path.join(folder_dir, file)
if os.path.isfile(path):
upload_file(path, folder_id)
else:
upload_folder(path, folder_id)
# 上传
def upload(dir, folder_id):
if dir is None:
log('ERROR: 请指定上传的文件路径')
return
if folder_id is None:
log('ERROR: 请指定蓝奏云的文件夹id')
return
if os.path.isfile(dir):
upload_file(dir, str(folder_id))
else:
upload_folder(dir, str(folder_id))
if __name__ == '__main__':
argv = sys.argv[1:]
if len(argv) != 2:
log('ERROR: 参数错误,请以这种格式重新尝试\npython lzy_web.py 需上传的路径 蓝奏云文件夹id')
# 需上传的路径
upload_path = argv[0]
# 蓝奏云文件夹id
lzy_folder_id = argv[1]
if login_by_cookie():
upload(upload_path, lzy_folder_id)

@ -15,11 +15,9 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
# 登录蓝奏云后查看cookie # 登录蓝奏云后在控制台运行document.cookie
# LANZOU_ID : woozooo.com -> Cookie -> ylogin ylogin: ${{ secrets.LANZOU_ID }}
# LANZOU_PSD : pc.woozooo.com -> Cookie -> phpdisk_info phpdisk_info: ${{ secrets.LANZOU_PSD }}
LANZOU_ID: ${{ secrets.LANZOU_ID }}
LANZOU_PSD: ${{ secrets.LANZOU_PSD }}
# 蓝奏云里的文件夹ID(阅读3测试版:2670621) # 蓝奏云里的文件夹ID(阅读3测试版:2670621)
LANZOU_FOLDER_ID: '2670621' LANZOU_FOLDER_ID: '2670621'
# 是否上传到artifact # 是否上传到artifact
@ -34,7 +32,7 @@ jobs:
key: ${{ runner.os }}-legado-${{ hashFiles('**/updateLog.md') }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} key: ${{ runner.os }}-legado-${{ hashFiles('**/updateLog.md') }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: | restore-keys: |
${{ runner.os }}-legado-${{ hashFiles('**/updateLog.md') }}- ${{ runner.os }}-legado-${{ hashFiles('**/updateLog.md') }}-
- name: Clear 18PlusList.txt - name: Clear 18PlusList.txt
run: | run: |
echo "清空18PlusList.txt" echo "清空18PlusList.txt"
@ -64,23 +62,19 @@ jobs:
name: legado apk name: legado apk
path: ${{ github.workspace }}/app/build/outputs/apk/app/release/*.apk path: ${{ github.workspace }}/app/build/outputs/apk/app/release/*.apk
- name: Upload App To Lanzou - name: Upload App To Lanzou
if: ${{ env.LANZOU_PSD }} if: ${{ env.ylogin }}
run: | run: |
path="$GITHUB_WORKSPACE/app/build/outputs/apk/app/release/" path="$GITHUB_WORKSPACE/app/build/outputs/apk/app/release"
files=$(ls $path) files=$(ls $path)
for f in $files for f in $files
do do
if [[ $f == *"apk" ]]; then if [[ $f == *"apk" ]]; then
file=$f file=$f
echo "文件:$file" echo "[$(date -u -d '+8 hour' '+%Y.%m.%d %H:%M:%S')] 文件:$file"
break break
fi fi
done done
bash $GITHUB_WORKSPACE/.github/scripts/lzy.sh "$file" \ python3 $GITHUB_WORKSPACE/.github/scripts/lzy_web.py "$path/$file" "$LANZOU_FOLDER_ID"
"$GITHUB_WORKSPACE/app/build/outputs/apk/app/release/$file" "${{ env.LANZOU_FOLDER_ID }}" echo "[$(date -u -d '+8 hour' '+%Y.%m.%d %H:%M:%S')] 分享链接: https://kunfei.lanzous.com/b0f810h4b"
echo "分享链接: https://kunfei.lanzous.com/b0f810h4b"
env:
LANZOU_ID: ${{ env.LANZOU_ID }}
LANZOU_PSD: ${{ env.LANZOU_PSD }}

@ -1,3 +1,3 @@
<!DOCTYPE html><html lang="en" style="padding: 0;height:100%"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="favicon.ico" /><![endif]--><title>Legado Bookshelf</title><link href="css/about.dbe575e1.css" rel="prefetch"><link href="css/detail.b4324411.css" rel="prefetch"><link href="js/about.4300b5ad.js" rel="prefetch"><link href="js/about~detail.c1b29cbc.js" rel="prefetch"><link href="js/detail.4d0609e7.js" rel="prefetch"><link href="css/app.e4c919b7.css" rel="preload" as="style"><link href="css/chunk-vendors.ad4ff18f.css" rel="preload" as="style"><link href="js/app.acf50eba.js" rel="preload" as="script"><link href="js/chunk-vendors.1042cf7f.js" rel="preload" as="script"><link href="css/chunk-vendors.ad4ff18f.css" rel="stylesheet"><link href="css/app.e4c919b7.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="yd-web-tool"><link rel="apple-touch-icon" href="img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><style>body::-webkit-scrollbar { <!DOCTYPE html><html lang="en" style="padding: 0;height:100%"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="favicon.ico" /><![endif]--><title>Legado Bookshelf</title><link href="css/about.dbe575e1.css" rel="prefetch"><link href="css/detail.79c91c30.css" rel="prefetch"><link href="js/about.32f651f9.js" rel="prefetch"><link href="js/about~detail.c1b29cbc.js" rel="prefetch"><link href="js/detail.0cc184f2.js" rel="prefetch"><link href="css/app.e4c919b7.css" rel="preload" as="style"><link href="css/chunk-vendors.ad4ff18f.css" rel="preload" as="style"><link href="js/app.3f3311a5.js" rel="preload" as="script"><link href="js/chunk-vendors.305d5536.js" rel="preload" as="script"><link href="css/chunk-vendors.ad4ff18f.css" rel="stylesheet"><link href="css/app.e4c919b7.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="yd-web-tool"><link rel="apple-touch-icon" href="img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><style>body::-webkit-scrollbar {
display: none; display: none;
}</style><body style="margin: 0;height:100%"><noscript><strong>We're sorry but yd-web-tool doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.1042cf7f.js"></script><script src="js/app.acf50eba.js"></script></body></html> }</style><body style="margin: 0;height:100%"><noscript><strong>We're sorry but yd-web-tool doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.305d5536.js"></script><script src="js/app.3f3311a5.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,19 +1,19 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([ self.__precacheManifest = (self.__precacheManifest || []).concat([
{ {
"revision": "12386c7dce7d463af4ed", "revision": "a4809f9e102ca093c5e0",
"url": "css/about.dbe575e1.css" "url": "css/about.dbe575e1.css"
}, },
{ {
"revision": "d761b0dee902b1105e91", "revision": "92b120ee6d7003919840",
"url": "css/app.e4c919b7.css" "url": "css/app.e4c919b7.css"
}, },
{ {
"revision": "16ab934214be8df372e3", "revision": "d14a57da901d79a81631",
"url": "css/chunk-vendors.ad4ff18f.css" "url": "css/chunk-vendors.ad4ff18f.css"
}, },
{ {
"revision": "4083fbb292940cf804ca", "revision": "329d93821b9c998393c1",
"url": "css/detail.b4324411.css" "url": "css/detail.79c91c30.css"
}, },
{ {
"revision": "535877f50039c0cb49a6196a5b7517cd", "revision": "535877f50039c0cb49a6196a5b7517cd",
@ -40,28 +40,28 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "img/noCover.b5c48bc1.jpeg" "url": "img/noCover.b5c48bc1.jpeg"
}, },
{ {
"revision": "bc7efb33b2dbae4d4578e3657e73de4b", "revision": "6b1059341e07bf6fefd98e31613ba6da",
"url": "index.html" "url": "index.html"
}, },
{ {
"revision": "12386c7dce7d463af4ed", "revision": "a4809f9e102ca093c5e0",
"url": "js/about.4300b5ad.js" "url": "js/about.32f651f9.js"
}, },
{ {
"revision": "2828d7869f38c2483b33", "revision": "2828d7869f38c2483b33",
"url": "js/about~detail.c1b29cbc.js" "url": "js/about~detail.c1b29cbc.js"
}, },
{ {
"revision": "d761b0dee902b1105e91", "revision": "92b120ee6d7003919840",
"url": "js/app.acf50eba.js" "url": "js/app.3f3311a5.js"
}, },
{ {
"revision": "16ab934214be8df372e3", "revision": "d14a57da901d79a81631",
"url": "js/chunk-vendors.1042cf7f.js" "url": "js/chunk-vendors.305d5536.js"
}, },
{ {
"revision": "4083fbb292940cf804ca", "revision": "329d93821b9c998393c1",
"url": "js/detail.4d0609e7.js" "url": "js/detail.0cc184f2.js"
}, },
{ {
"revision": "b46d04eb43bc31ca0f9f95121646440d", "revision": "b46d04eb43bc31ca0f9f95121646440d",

@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts( importScripts(
"precache-manifest.591d552208e3dedf905ccfa69870ce16.js" "precache-manifest.63ef7cbb041538ea344680ff651c5232.js"
); );
workbox.core.setCacheNameDetails({prefix: "yd-web-tool"}); workbox.core.setCacheNameDetails({prefix: "yd-web-tool"});

@ -65,7 +65,7 @@ class ContentProcessor(private val bookName: String, private val bookOrigin: Str
} }
val contents = arrayListOf<String>() val contents = arrayListOf<String>()
content1.split("\n").forEach { content1.split("\n").forEach {
val str = it.replace("^[\\n\\s\\r]+".toRegex(), "") val str = it.replace("^[\\n\\r]+".toRegex(), "").trim()
if (contents.isEmpty()) { if (contents.isEmpty()) {
contents.add(title) contents.add(title)
if (str != title && str.isNotEmpty()) { if (str != title && str.isNotEmpty()) {

@ -317,7 +317,9 @@ class EPUBFile(var book: io.legado.app.data.entities.Book) {
) )
).getElementsByTag("title") ).getElementsByTag("title")
title = title =
if (elements != null && elements.size > 0) elements[0].text() else "--卷首--" if (elements != null && elements.size > 0 && elements[0].text()
.isNotBlank()
) elements[0].text() else "--卷首--"
} }
chapter.bookUrl = book.bookUrl chapter.bookUrl = book.bookUrl
chapter.title = title chapter.title = title

@ -165,9 +165,12 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
lineBottom: Float, lineBottom: Float,
) { ) {
ReadBook.book?.let { book -> ReadBook.book?.let { book ->
val rectF = RectF(textChar.start, lineTop, textChar.end, lineBottom)
ImageProvider.getImage(book, textPage.chapterIndex, textChar.charData, true) ImageProvider.getImage(book, textPage.chapterIndex, textChar.charData, true)
?.let { ?.let {
/*以宽度为基准保持图片的原始比例叠加,当div为负数时,允许高度比字符更高*/
val h = (textChar.end - textChar.start) / it.width * it.height
val div = (lineBottom - lineTop - h) / 2
val rectF = RectF(textChar.start, lineTop + div, textChar.end, lineBottom - div)
canvas.drawBitmap(it, null, rectF, null) canvas.drawBitmap(it, null, rectF, null)
} }
} }

@ -69,7 +69,8 @@ object ChapterProvider {
@JvmStatic @JvmStatic
lateinit var contentPaint: TextPaint lateinit var contentPaint: TextPaint
private const val srcReplaceChar = "🖼" /*🖼比汉字宽,跟字一起效果的效果不是很好,用卍取代*/
private const val srcReplaceChar = ""
init { init {
upStyle() upStyle()

@ -40,7 +40,7 @@ class ZhLayout(
val words = text.toStringArray() val words = text.toStringArray()
var lineW = 0f var lineW = 0f
var cwPre = 0f var cwPre = 0f
var length = 0
words.forEachIndexed { index, s -> words.forEachIndexed { index, s ->
val cw = getDesiredWidth(s, curPaint) val cw = getDesiredWidth(s, curPaint)
var breakMod: BreakMod var breakMod: BreakMod
@ -81,6 +81,7 @@ class ZhLayout(
) reCheck = true ) reCheck = true
/*特殊标点使用难保证显示效果,所以不考虑间隔,直接查找到能满足条件的分割字*/ /*特殊标点使用难保证显示效果,所以不考虑间隔,直接查找到能满足条件的分割字*/
var breakLength = 0
if (reCheck && index > 2) { if (reCheck && index > 2) {
breakMod = BreakMod.NORMAL breakMod = BreakMod.NORMAL
for (i in (index) downTo 1) { for (i in (index) downTo 1) {
@ -89,7 +90,8 @@ class ZhLayout(
cwPre = 0f cwPre = 0f
} else { } else {
breakIndex++ breakIndex++
cwPre += StaticLayout.getDesiredWidth(words[i], textPaint) breakLength += words[i].length
cwPre += getDesiredWidth(words[i], textPaint)
} }
if (!isPostPanc(words[i]) && !isPrePanc(words[i - 1])) { if (!isPostPanc(words[i]) && !isPrePanc(words[i - 1])) {
breakMod = BreakMod.BREAK_MORE_CHAR breakMod = BreakMod.BREAK_MORE_CHAR
@ -101,32 +103,32 @@ class ZhLayout(
when (breakMod) { when (breakMod) {
BreakMod.NORMAL -> {//模式0 正常断行 BreakMod.NORMAL -> {//模式0 正常断行
offset = cw offset = cw
lineStart[line + 1] = index lineStart[line + 1] = length
breakCharCnt = 1 breakCharCnt = 1
} }
BreakMod.BREAK_ONE_CHAR -> {//模式1 当前行下移一个字 BreakMod.BREAK_ONE_CHAR -> {//模式1 当前行下移一个字
offset = cw + cwPre offset = cw + cwPre
lineStart[line + 1] = index - 1 lineStart[line + 1] = length - words[index - 1].length
breakCharCnt = 2 breakCharCnt = 2
} }
BreakMod.BREAK_MORE_CHAR -> {//模式2 当前行下移多个字 BreakMod.BREAK_MORE_CHAR -> {//模式2 当前行下移多个字
offset = cw + cwPre offset = cw + cwPre
lineStart[line + 1] = index - breakIndex lineStart[line + 1] = length - breakLength
breakCharCnt = breakIndex + 1 breakCharCnt = breakIndex + 1
} }
BreakMod.CPS_1 -> {//模式3 两个后置标点压缩 BreakMod.CPS_1 -> {//模式3 两个后置标点压缩
offset = 0f offset = 0f
lineStart[line + 1] = index + 1 lineStart[line + 1] = length + s.length
breakCharCnt = 0 breakCharCnt = 0
} }
BreakMod.CPS_2 -> { //模式4 前置标点压缩+前置标点压缩+字 BreakMod.CPS_2 -> { //模式4 前置标点压缩+前置标点压缩+字
offset = 0f offset = 0f
lineStart[line + 1] = index + 1 lineStart[line + 1] = length + s.length
breakCharCnt = 0 breakCharCnt = 0
} }
BreakMod.CPS_3 -> {//模式5 前置标点压缩+字+后置标点压缩 BreakMod.CPS_3 -> {//模式5 前置标点压缩+字+后置标点压缩
offset = 0f offset = 0f
lineStart[line + 1] = index + 1 lineStart[line + 1] = length + s.length
breakCharCnt = 0 breakCharCnt = 0
} }
} }
@ -143,7 +145,7 @@ class ZhLayout(
if ((words.lastIndex) == index) { if ((words.lastIndex) == index) {
if (!breakLine) { if (!breakLine) {
offset = 0f offset = 0f
lineStart[line + 1] = index + 1 lineStart[line + 1] = length + s.length
lineWidth[line] = lineW - offset lineWidth[line] = lineW - offset
lineW = offset lineW = offset
addLineArray(++line) addLineArray(++line)
@ -155,6 +157,7 @@ class ZhLayout(
addLineArray(++line) addLineArray(++line)
} }
} }
length += s.length
cwPre = cw cwPre = cw
} }

Loading…
Cancel
Save