整合queryTTF支持base64

pull/500/head
Antecer 4 years ago
parent 3ec895671d
commit e4e0740bd3
  1. 17
      app/src/main/java/io/legado/app/help/JsExtensions.kt

@ -244,9 +244,7 @@ interface JsExtensions {
fun queryTTF(path: String): QueryTTF? {
val key = md5Encode16(path)
var qTTF = CacheManager.getQueryTTF(key)
if (qTTF != null) {
return qTTF
}
if (qTTF != null) return qTTF
val font: ByteArray? = when {
path.isAbsUrl() -> runBlocking {
var x = CacheManager.getByteArray(key)
@ -261,9 +259,12 @@ interface JsExtensions {
path.isContentScheme() -> {
Uri.parse(path).readBytes(App.INSTANCE)
}
else -> {
path.startsWith("/storage")->{
File(path).readBytes()
}
else -> {
base64DecodeToByteArray(path.removePrefix("base64,"))
}
}
font ?: return null
qTTF = QueryTTF(font)
@ -278,12 +279,12 @@ interface JsExtensions {
start: Int,
end: Int
): String {
if (font1 == null || font2 == null) {
return text
}
if (font1 == null || font2 == null) return text
val startChar = start.toChar()
val endChar = end.toChar()
val contentArray = text.toCharArray()
contentArray.forEachIndexed { index, s ->
if (s > start.toChar() && s < end.toChar()) {
if (s in startChar until endChar) {
val code = font2.GetCodeByGlyf(font1.GetGlyfByCode(s.toInt()))
contentArray[index] = code.toChar()
}

Loading…
Cancel
Save