diff --git a/assets/devanagari_alt_encoding_variable.tga b/assets/devanagari_alt_encoding_variable.tga deleted file mode 100644 index fe31ee2..0000000 --- a/assets/devanagari_alt_encoding_variable.tga +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e479b6d6969b23c0b79ee6b555e6e1d06bbfa1dcbef8a7ff40caf279f50c2153 -size 1474578 diff --git a/assets/devanagari_variable.tga b/assets/devanagari_variable.tga index 0cb2624..1aa982c 100644 --- a/assets/devanagari_variable.tga +++ b/assets/devanagari_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00e3f32185cbc90691d8f4c78d6fd5215dd7e8b47412ba56a7e98cdf0be97680 -size 491538 +oid sha256:1bd3d2a78cead096c09ea95e309e25aad61005ae1df8ceceba69e9f8acf93618 +size 1474578 diff --git a/demo.PNG b/demo.PNG index adbde5f..a5f3da4 100644 Binary files a/demo.PNG and b/demo.PNG differ diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index 9e37453..47236e0 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -1011,11 +1011,14 @@ class TerrarumSansBitmap( val seq2 = CodepointSequence() val seq3 = CodepointSequence() val seq4 = CodepointSequence() + val dis = this.utf16to32() var i = 0 +// dbgprn("Charsequence: ${dis.map { "${it.toChar()}${ZWNJ.toChar()}" }.joinToString(" ")}") + seq0.add(0) - this.utf16to32().forEach { c -> + dis.forEach { c -> // turn Unicode Devanagari consonants into the internal one if (c in 0x0915..0x0939 || c in 0x0958..0x095F) seq0.add(c.toDevaInternal()) @@ -1025,7 +1028,6 @@ class TerrarumSansBitmap( seq0.add(0) - dbgprn("Charsequence: ${seq0.map { "${it.toChar()}${ZWNJ.toChar()}" }.joinToString(" ")}") i = 0 while (i < seq0.lastIndex) { @@ -1333,23 +1335,23 @@ class TerrarumSansBitmap( } } while (i < seq3.size) { -// val cPrev2 = seq3.getOrElse(i-2) { -1 } -// val cPrev = seq3.getOrElse(i-1) { -1 } + val cPrev2 = seq3.getOrElse(i-2) { -1 } + val cPrev = seq3.getOrElse(i-1) { -1 } val c = seq3[i] val cNext = seq3.getOrElse(i+1) { -1 } -// val cNext2 = seq3.getOrElse(i+2) { -1 } + val cNext2 = seq3.getOrElse(i+2) { -1 } // val cNext3 = seq3.getOrElse(i+3) { -1 } // dbgprn(" र${yankedDevanagariRaStatus[1]} Chars: ${cPrev2.toCh()}${ZWNJ.toChar()} ${cPrev.toCh()}${ZWNJ.toChar()} [ ${c.toCh()}${ZWNJ.toChar()} ] ${cNext.toCh()}${ZWNJ.toChar()} ${cNext2.toCh()}${ZWNJ.toChar()}") - // in Regex: RA (vir C)+ V* ᴿ [not V && not vir] + // in Regex: RA vir VL* (C vir C (vir C)*)? VR* ᴿ [not V && not vir] if (yankedDevanagariRaStatus[1] == 0 && c == DEVANAGARI_RA && cNext == DEVANAGARI_VIRAMA) { // dbgprn(" Yanking RA (0 -> 1)") yankedCharacters.push(i to c) changeRaStatus(1) } - else if (yankedDevanagariRaStatus[0] == 0 && yankedDevanagariRaStatus[1] == 1 && c == DEVANAGARI_VIRAMA) { + else if (yankedDevanagariRaStatus[1] == 1 && yankedDevanagariRaStatus[0] == 0 && c == DEVANAGARI_VIRAMA) { // dbgprn(" First Virama (1 -> 2)") changeRaStatus(2) } @@ -1358,8 +1360,18 @@ class TerrarumSansBitmap( seq4.add(c) changeRaStatus(1) } - else if ((yankedDevanagariRaStatus[1] == 1 || yankedDevanagariRaStatus[1] == 3) && devanagariRightVowels.contains(c)) { -// dbgprn(" Vowels (${yankedDevanagariRaStatus[1]} -> 3)") + else if (yankedDevanagariRaStatus[1] == 3 && devanagariConsonants.contains(c)) { +// dbgprn(" Consonants after Left Vowel (3 -> 1)") + seq4.add(c) + changeRaStatus(1) + } + else if ((yankedDevanagariRaStatus[1] > 0) && devanagariRightVowels.contains(c)) { +// dbgprn(" Right Vowels (${yankedDevanagariRaStatus[1]} -> 4)") + seq4.add(c) + changeRaStatus(4) + } + else if ((yankedDevanagariRaStatus[1] in 1..3) && devanagariVowels.contains(c)) { +// dbgprn(" Left Vowels (${yankedDevanagariRaStatus[1]} -> 3)") seq4.add(c) changeRaStatus(3) } @@ -1395,20 +1407,10 @@ class TerrarumSansBitmap( 0xF0101 -> "रू" 0xF0102 -> "ऱु" 0xF0103 -> "ऱू" - 0xF0104 -> "˓" - in 0xF0105..0xF0129 -> "${(this - 0xF0100 + 0x910).toChar()}${DEVANAGARI_VIRAMA.toChar()}${ZWJ.toChar()}" - 0xF012A -> "ऱ्\u200D" - 0xF012B -> "क्ष्\u200D" - 0xF012C -> "ज्ञ्\u200D" - 0xF012D -> "त्त्\u200D" - 0xF0130 -> "हु" - 0xF0131 -> "हू" - 0xF0136 -> "\u200Dय" - 0xF0137 -> "\u200Dय\u200D" - in 0xF0138..0xF013F -> "${(this - 0xF0130 + 0x970).toChar()}${DEVANAGARI_VIRAMA.toChar()}${ZWJ.toChar()}" - 0xF0140 -> "र\u200D्य" - 0xF0141 -> "र\u200D्य\u200D" - in 0xF0145..0xF0169 -> "${(this - 0xF0140 + 0x910).toChar()}${DEVANAGARI_VIRAMA.toChar()}${DEVANAGARI_RA.toChar()}" + 0xF0104 -> "हु" + 0xF0105 -> "हू" + 0xF010B -> "˓" + in 0xF0140..0xF0164 -> "${(this - 0xf0140 + 0x915).toChar()}" else -> this.toHex() } @@ -1817,6 +1819,11 @@ class TerrarumSansBitmap( 0xF032D -> return listOf(0xF0375) // SS.DDHR else -> return c1.toHalfFormOrVirama() + c2 } + 0x0938.toDevaInternal() -> /* Devanagari SA */ when (c2) { + 0x0935.toDevaInternal() -> return listOf(DEVANAGARI_LIG_S_V) // S.V + 0xF0340 -> return listOf(0xF0356) // S.V.R + else -> return c1.toHalfFormOrVirama() + c2 + } 0x0939.toDevaInternal() -> /* Devanagari HA */ when (c2) { 0x0923.toDevaInternal() -> return listOf(0xF0196) // H.NN 0x0928.toDevaInternal() -> return listOf(0xF0197) // H.N @@ -1965,7 +1972,7 @@ class TerrarumSansBitmap( "cyrilic_serbian_variable.tga", "tsalagi_variable.tga", "phonetic_extensions_variable.tga", - "devanagari_alt_encoding_variable.tga", + "devanagari_variable.tga", "kartuli_allcaps_variable.tga", "diacritical_marks_variable.tga", "greek_polytonic_xyswap_variable.tga", @@ -2083,6 +2090,7 @@ class TerrarumSansBitmap( private val DEVANAGARI_LIG_T_T = 0xF0173 private val DEVANAGARI_LIG_N_T = 0xF0174 private val DEVANAGARI_LIG_N_N = 0xF0175 + private val DEVANAGARI_LIG_S_V = 0xF0176 private val MARWARI_LIG_DD_DD = 0xF018A private val MARWARI_LIG_DD_DDH = 0xF018B diff --git a/testing.PNG b/testing.PNG index 2b79291..1a47b3f 100755 Binary files a/testing.PNG and b/testing.PNG differ diff --git a/testtext.txt b/testtext.txt index c39f79b..b2b3b68 100755 --- a/testtext.txt +++ b/testtext.txt @@ -8,4 +8,6 @@ किसी लेख को कैसे परिवर्तित कर सकते हैं। पुनर्वितरण < RAsup on व -परिवर्तित < RAsup on त \ No newline at end of file +परिवर्तित < RAsup on त +क्या‽ र्के र्कॆ र्कै +स्वतन्त्र स्व्र \ No newline at end of file diff --git a/work_files/devanagari_alt_encoding.psd b/work_files/devanagari_alt_encoding.psd deleted file mode 100644 index 63c7272..0000000 --- a/work_files/devanagari_alt_encoding.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6262efdfc27783b98740805ba78edee6ba402432f1adf62b805190318698cc89 -size 1418759 diff --git a/work_files/devanagari_variable.psd b/work_files/devanagari_variable.psd index c2d279a..b9e9148 100644 --- a/work_files/devanagari_variable.psd +++ b/work_files/devanagari_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6298824a487228a3aeb10e4f44308b9d7cf637edea194a3de4034e86956a6e55 -size 554855 +oid sha256:f90104136e4955b6813dc4d8f5d09c196464c6e7ae2a45f8b6a2b18eefb01674 +size 1420615