From 1705b2752eb002c15b5724a2fb1ab0b33a3545fb Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 13 Feb 2022 01:22:00 +0900 Subject: [PATCH] devanagari: using new internal mapping --- assets/devanagari_alt_encoding_variable.tga | 3 + assets/kana.tga | Bin 215084 -> 131 bytes .../torvald/terrarumsansbitmap/GlyphProps.kt | 3 + .../gdx/TerrarumSansBitmap.kt | 445 +++++++++--------- testing.PNG | Bin 31911 -> 26545 bytes testtext.txt | 27 +- work_files/devanagari_alt_encoding.psd | 4 +- work_files/kana.psd | Bin 235148 -> 131 bytes 8 files changed, 251 insertions(+), 231 deletions(-) create mode 100644 assets/devanagari_alt_encoding_variable.tga diff --git a/assets/devanagari_alt_encoding_variable.tga b/assets/devanagari_alt_encoding_variable.tga new file mode 100644 index 0000000..fe31ee2 --- /dev/null +++ b/assets/devanagari_alt_encoding_variable.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e479b6d6969b23c0b79ee6b555e6e1d06bbfa1dcbef8a7ff40caf279f50c2153 +size 1474578 diff --git a/assets/kana.tga b/assets/kana.tga index 422b026664254b58a405112127691bcacffa3991..62fd68b15c9351f96009190f29a89f43ef3335ff 100755 GIT binary patch literal 131 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 M Unit) = extInfo.slice(0 until requiredExtInfoCount()).forEach(action) fun forEachExtInfoIndexed(action: (Int, Int) -> Unit) = extInfo.slice(0 until requiredExtInfoCount()).forEachIndexed(action) + + val isIllegal: Boolean + get() = directiveOpcode == 255 } \ No newline at end of file diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index d53b81d..9e37453 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -1006,25 +1006,38 @@ class TerrarumSansBitmap( // basically an Unicode NFD with some additional flavours private fun CodepointSequence.normalise(): CodepointSequence { + val seq0 = CodepointSequence() val seq = CodepointSequence() val seq2 = CodepointSequence() val seq3 = CodepointSequence() val seq4 = CodepointSequence() var i = 0 - this.utf16to32().let { dis -> -// dbgprn("Charsequence: ${dis.map { "${it.toChar()}${ZWNJ.toChar()}" }.joinToString(" ")}") + seq0.add(0) + this.utf16to32().forEach { c -> + // turn Unicode Devanagari consonants into the internal one + if (c in 0x0915..0x0939 || c in 0x0958..0x095F) + seq0.add(c.toDevaInternal()) + else + seq0.add(c) + } + seq0.add(0) - while (i < dis.size) { - val cPrev2 = dis.getOrElse(i-2) { -1 } - val cPrev = dis.getOrElse(i-1) { -1 } - val c = dis[i] - val cNext = dis.getOrElse(i+1) { -1 } - val cNext2 = dis.getOrElse(i+2) { -1 } - val cNext3 = dis.getOrElse(i+3) { -1 } + + dbgprn("Charsequence: ${seq0.map { "${it.toChar()}${ZWNJ.toChar()}" }.joinToString(" ")}") + + i = 0 + while (i < seq0.lastIndex) { +// val cPrev2 = seq0.getOrElse(i-2) { -1 } + val cPrev = seq0.getOrElse(i-1) { -1 } + val c = seq0[i] + val cNext = seq0.getOrElse(i+1) { -1 } + val cNext2 = seq0.getOrElse(i+2) { -1 } + val cNext3 = seq0.getOrElse(i+3) { -1 } // can't use regular sliding window as the 'i' value is changed way too often + // LET THE NORMALISATION BEGIN // // disassemble Hangul Syllables into Initial-Peak-Final encoding @@ -1107,10 +1120,10 @@ class TerrarumSansBitmap( else if (c == 0xBB8 && cNext == TAMIL_I) { seq.add(0xF00F5); i++ } - else if (c == 0xB95 && cNext == 0xBCD && dis.getOrElse(i+2){-1} == 0xBB7) { + else if (c == 0xB95 && cNext == 0xBCD && cNext2 == 0xBB7) { seq.add(TAMIL_KSSA); i += 2 } - else if (c == 0xBB6 && cNext == 0xBCD && dis.getOrElse(i+2){-1} == 0xBB0 && dis.getOrElse(i+3){-1} == 0xBC0) { + else if (c == 0xBB6 && cNext == 0xBCD && cNext2 == 0xBB0 && cNext3 == 0xBC0) { seq.add(TAMIL_SHRII); i += 3 } else if (c == 0xB9F && cNext == 0xBBF) { @@ -1193,8 +1206,6 @@ class TerrarumSansBitmap( i++ } - } - // BEGIN of Devanagari String Replacer 2 (lookbehind type) i = 0 @@ -1659,6 +1670,177 @@ class TerrarumSansBitmap( else 0 } + + + + private fun CodePoint.toHalfFormOrNull(): CodePoint? { + if (this in devanagariBaseConsonantsExtended) return null + if (this < 0xF0000) throw IllegalArgumentException("Normalise consonants to internal encoding first!") + + if (this == DEVANAGARI_RYA) return DEVANAGARI_HALF_RYA + if (this == MARWARI_LIG_DD_Y) return MARWARI_HALFLIG_DD_Y + if (this == DEVANAGARI_OPEN_YA) return DEVANAGARI_OPEN_HALF_YA + + (this + 240).let { + if (glyphProps[it]?.isIllegal != false) + return null + else + return it + } + } + + + // TODO use proper version of Virama for respective scripts + private fun CodePoint.toHalfFormOrVirama(): List = this.toHalfFormOrNull().let { +// println("[TerrarumSansBitmap] toHalfForm ${this.charInfo()} = ${it?.charInfo()}") + if (it == null) listOf(this, DEVANAGARI_VIRAMA) else listOf(it) + } + + + // TODO use proper version of Virama for respective scripts + private fun toRaAppended(c: CodePoint): List { + if (c == MARWARI_DD) return listOf(MARWARI_LIG_DD_R) + + (c + 480).let { + if (glyphProps[it]?.isIllegal != false) + return listOf(c, DEVANAGARI_VIRAMA, DEVANAGARI_RA) + else + return listOf(it) + } + } + + + + private fun ligateIndicConsonants(c1: CodePoint, c2: CodePoint): List { +// println("[TerrarumSansBitmap] Indic ligation ${c1.charInfo()} - ${c2.charInfo()}") + if (c1 != DEVANAGARI_RA && c2 == DEVANAGARI_RA) return toRaAppended(c1) // Devanagari @.RA + when (c1) { + 0x0915.toDevaInternal() -> /* Devanagari KA */ when (c2) { + 0x0924.toDevaInternal() -> return listOf(DEVANAGARI_LIG_K_T) // K.T + 0x0937.toDevaInternal() -> return listOf(DEVANAGARI_LIG_K_SS) // K.SS + 0xF0337 -> return listOf(0xF0351) // K.SS.R + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // K.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0918.toDevaInternal() -> /* Devanagari GHA */ when (c2) { + 0x091F.toDevaInternal() -> return listOf(0xF018D) // GH.TT + 0x0920.toDevaInternal() -> return listOf(0xF018E) // GH.TTH + 0x0922.toDevaInternal() -> return listOf(0xF018F) // GH.DDH + 0xF032A -> return listOf(0xF036D) // GH.TTR + 0xF032B -> return listOf(0xF036E) // GH.TTHR + 0xF032D -> return listOf(0xF036F) // GH.DDHR + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0919.toDevaInternal() -> /* Devanagari NGA */ when (c2) { + 0x0917.toDevaInternal() -> return listOf(0xF01A2) // NG.G + DEVANAGARI_VA -> return listOf(0xF01A3) // NG.V + 0x092E.toDevaInternal() -> return listOf(0xF01A4) // NG.M + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // NG.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x091B.toDevaInternal() -> /* Devanagari CHA */ when (c2) { + DEVANAGARI_VA -> return listOf(0xF01A5) // CH.V + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // CH.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x091C.toDevaInternal() -> /* Devanagari JA */ when (c2) { + 0x091E.toDevaInternal() -> return listOf(DEVANAGARI_LIG_J_NY) // J.NY + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // J.Y + 0xF0329 -> return listOf(0xF0352) // J.NY.R + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x091F.toDevaInternal() -> /* Devanagari TTA */ when (c2) { + 0x091F.toDevaInternal() -> return listOf(0xF01A6) // TT.TT + 0x0920.toDevaInternal() -> return listOf(0xF01A7) // TT.TTH + DEVANAGARI_VA -> return listOf(0xF01A8) // TT.V + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // TT.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0920.toDevaInternal() -> /* Devanagari TTHA */ when (c2) { + 0x0920.toDevaInternal() -> return listOf(0xF01A9) // TTH.TTH + DEVANAGARI_VA -> return listOf(0xF01AA) // TTH.V + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // TTH.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0921.toDevaInternal() -> /* Devanagari DDA */ when (c2) { + 0x0921.toDevaInternal() -> return listOf(0xF01AB) // DD.DD + 0x0922.toDevaInternal() -> return listOf(0xF01AC) // DD.DDH + DEVANAGARI_VA -> return listOf(0xF01AD) // DD.V + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // DD.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0922.toDevaInternal() -> /* Devanagari DDHA */ when (c2) { + 0x0922.toDevaInternal() -> return listOf(0xF01AE) // DDH.DDH + DEVANAGARI_VA -> return listOf(0xF01AF) // DDH.V + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // DDH.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0924.toDevaInternal() -> /* Devanagari TA */ when (c2) { + 0x0924.toDevaInternal() -> return listOf(DEVANAGARI_LIG_T_T) // T.T + 0xF032F -> return listOf(0xF0353) // T.T.R + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0926.toDevaInternal() -> /* Devanagari DA */ when (c2) { + 0x0917.toDevaInternal() -> return listOf(0xF0180) // D.G + 0x0918.toDevaInternal() -> return listOf(0xF0181) // D.GH + 0x0926.toDevaInternal() -> return listOf(0xF0182) // D.D + 0x0927.toDevaInternal() -> return listOf(0xF0183) // D.DH + 0x0928.toDevaInternal() -> return listOf(0xF0184) // D.N + 0x092C.toDevaInternal() -> return listOf(0xF0185) // D.B + 0x092D.toDevaInternal() -> return listOf(0xF0186) // D.BH + 0x092E.toDevaInternal() -> return listOf(0xF0187) // D.M + 0x092F.toDevaInternal() -> return listOf(0xF0188) // D.Y + 0x0935.toDevaInternal() -> return listOf(0xF0189) // D.V + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0928.toDevaInternal() -> /* Devanagari NA */ when (c2) { + 0x0924.toDevaInternal() -> return listOf(DEVANAGARI_LIG_N_T) // N.T + 0x0928.toDevaInternal() -> return listOf(DEVANAGARI_LIG_N_N) // N.N + 0xF032F -> return listOf(0xF0354) // N.T.R + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x092A.toDevaInternal() -> /* Devanagari PA */ when (c2) { + 0x091F.toDevaInternal() -> return listOf(0xF0190) // P.TT + 0x0920.toDevaInternal() -> return listOf(0xF0191) // P.TTH + 0x0922.toDevaInternal() -> return listOf(0xF0192) // P.DDH + 0xF032A -> return listOf(0xF0370) // P.TTR + 0xF032B -> return listOf(0xF0371) // P.TTHR + 0xF032D -> return listOf(0xF0372) // P.DDHR + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0937.toDevaInternal() -> /* Devanagari SSA */ when (c2) { + 0x091F.toDevaInternal() -> return listOf(0xF0193) // SS.TT + 0x0920.toDevaInternal() -> return listOf(0xF0194) // SS.TTH + 0x0922.toDevaInternal() -> return listOf(0xF0195) // SS.DDH + 0xF032A -> return listOf(0xF0373) // SS.TTR + 0xF032B -> return listOf(0xF0374) // SS.TTHR + 0xF032D -> return listOf(0xF0375) // SS.DDHR + 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 + 0x092E.toDevaInternal() -> return listOf(0xF0198) // H.M + 0x092F.toDevaInternal() -> return listOf(0xF0199) // H.Y + 0x0932.toDevaInternal() -> return listOf(0xF019A) // H.L + 0x0935.toDevaInternal() -> return listOf(0xF019B) // H.V + else -> return c1.toHalfFormOrVirama() + c2 + } + 0x0978 -> /* Marwari DDA */ when (c2) { + 0x0978 -> return listOf(MARWARI_LIG_DD_DD) // DD.DD + 0x0922.toDevaInternal() -> return listOf(MARWARI_LIG_DD_DDH) // DD.DDH + DEVANAGARI_YA -> return listOf(MARWARI_LIG_DD_Y) // DD.Y + else -> return c1.toHalfFormOrVirama() + c2 + } + in 0xF0180..0xF0189 -> /* Devanagari D.@A */ when (c2) { + DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA + else -> return c1.toHalfFormOrVirama() + c2 + } + else -> return c1.toHalfFormOrVirama() + c2 // TODO use proper version of Virama for respective scripts + } + } + + companion object { private fun Boolean.toSign() = if (this) 1 else -1 @@ -1783,7 +1965,7 @@ class TerrarumSansBitmap( "cyrilic_serbian_variable.tga", "tsalagi_variable.tga", "phonetic_extensions_variable.tga", - "devanagari_variable.tga", + "devanagari_alt_encoding_variable.tga", "kartuli_allcaps_variable.tga", "diacritical_marks_variable.tga", "greek_polytonic_xyswap_variable.tga", @@ -1820,7 +2002,7 @@ class TerrarumSansBitmap( 0xF0060..0xF00BF, // SHEET_SERBIAN_VARW; assign them to PUA 0x13A0..0x13F5, // SHEET_TSALAGI_VARW 0x1D00..0x1DBF, // SHEET_PHONETIC_EXT_VARW - (0x900..0x97F) + (0xF0100..0xF01FF), // SHEET_DEVANAGARI_VARW + (0x900..0x97F) + (0xF0100..0xF04FF), // SHEET_DEVANAGARI_VARW 0x1C90..0x1CBF, // SHEET_KARTULI_CAPS_VARW 0x300..0x36F, // SHEET_DIACRITICAL_MARKS_VARW 0x1F00..0x1FFF, // SHEET_GREEK_POLY_VARW @@ -1851,231 +2033,74 @@ class TerrarumSansBitmap( private val TAMIL_SHRII = 0xF00EE private val TAMIL_I = 0xBBF - private val devanagariConsonants = ((0x0915..0x0939) + (0x0958..0x095F) + (0x0978..0x097F) + (0xF0105..0xF01FF)).toHashSet() + private val devanagariConsonants = ((0x0915..0x0939) + (0x0958..0x095F) + (0x0978..0x097F) + (0xF0140..0xF04FF)).toHashSet() private val devanagariVowels = ((0x093A..0x093C) + (0x093E..0x094C) + (0x094E..0x094F)).toHashSet() private val devanagariRightVowels = ((0x093A..0x093C) + (0x093E) + (0x0940..0x094C) + 0x094F).toHashSet() private val devanagariBaseConsonants = 0x0915..0x0939 private val devanagariBaseConsonantsWithNukta = 0x0958..0x095F private val devanagariBaseConsonantsExtended = 0x0978..0x097F - private val devanagariPresentationConsonants = 0xF0140..0xF01FF - private val devanagariPresentationConsonantsWithRa = 0xF0145..0xF017F - private val devanagariPresentationIrregularConsonants = 0xF0180..0xF01BF + private val devanagariPresentationConsonants = 0xF0140..0xF022F + private val devanagariPresentationConsonantsHalf = 0xF0230..0xF031F + private val devanagariPresentationConsonantsWithRa = 0xF0320..0xF040F + private val devanagariPresentationConsonantsWithRaHalf = 0xF0410..0xF04FF private val devanagariConsonantsNonLig = (devanagariBaseConsonants + devanagariBaseConsonantsWithNukta + devanagariBaseConsonantsExtended + - devanagariPresentationConsonantsWithRa + devanagariPresentationIrregularConsonants).toHashSet() + devanagariPresentationConsonants + devanagariPresentationConsonantsWithRa).toHashSet() private val devanariConsonantsHalfs = ((0xF0105..0xF012F) + (0xF0137..0xF013F) + (0xF01C0..0xF01FF)).toHashSet() private val DEVANAGARI_VIRAMA = 0x94D - private val DEVANAGARI_RA = 0x930 - private val DEVANAGARI_YA = 0x92F - private val DEVANAGARI_RRA = 0x931 - private val DEVANAGARI_VA = 0x0935 - private val DEVANAGARI_HA = 0x939 + private val DEVANAGARI_RA = 0x930.toDevaInternal() + private val DEVANAGARI_YA = 0x92F.toDevaInternal() + private val DEVANAGARI_RRA = 0x931.toDevaInternal() + private val DEVANAGARI_VA = 0x0935.toDevaInternal() + private val DEVANAGARI_HA = 0x939.toDevaInternal() private val DEVANAGARI_U = 0x941 private val DEVANAGARI_UU = 0x942 - private val DEVANAGARI_RYA = 0xF0140 - private val DEVANAGARI_HALF_RYA = 0xF0141 + private val DEVANAGARI_RYA = 0xF0106 + private val DEVANAGARI_HALF_RYA = 0xF0107 private val DEVANAGARI_SYLL_RU = 0xF0100 private val DEVANAGARI_SYLL_RUU = 0xF0101 private val DEVANAGARI_SYLL_RRU = 0xF0102 private val DEVANAGARI_SYLL_RRUU = 0xF0103 - private val DEVANAGARI_SYLL_HU = 0xF0130 - private val DEVANAGARI_SYLL_HUU = 0xF0131 + private val DEVANAGARI_SYLL_HU = 0xF0104 + private val DEVANAGARI_SYLL_HUU = 0xF0105 - private val DEVANAGARI_OPEN_YA = 0xF0136 - private val DEVANAGARI_OPEN_HALF_YA = 0xF0137 - private val DEVANAGARI_RA_SUPER = 0xF0104 - private val DEVANAGARI_EYELASH_RA = 0xF012A + private val DEVANAGARI_OPEN_YA = 0xF0108 + private val DEVANAGARI_OPEN_HALF_YA = 0xF0109 + private val DEVANAGARI_RA_SUPER = 0xF010B + private val DEVANAGARI_EYELASH_RA = 0xF010C - private val DEVANAGARI_LIG_K_SS = 0xF0181 - private val DEVANAGARI_LIG_J_NY = 0xF0184 - private val DEVANAGARI_LIG_T_T = 0xF018B - private val DEVANAGARI_LIG_N_T = 0xF01B0 - private val MARWARI_LIG_DD_DD = 0xF01AB - private val MARWARI_LIG_DD_DDH = 0xF01AC - private val MARWARI_LIG_DD_Y = 0xF01AD + private val MARWARI_DD = 0x978 - private val DEVANAGARI_LIG_T_R = 0xF0154 - private val MARWARI_LIG_DD_R = 0xF016A + private val DEVANAGARI_LIG_K_T = 0xF0170 + private val DEVANAGARI_LIG_K_SS = 0xF0171 + private val DEVANAGARI_LIG_J_NY = 0xF0172 + 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_K_SS_R = 0xF016B - private val DEVANAGARI_LIG_J_NY_R = 0xF016C - private val DEVANAGARI_LIG_T_T_R = 0xF016D - private val DEVANAGARI_LIG_N_T_R = 0xF016E - - private val DEVANAGARI_HALFLIG_K_SS = 0xF012B - private val DEVANAGARI_HALFLIG_J_NY = 0xF012C - private val DEVANAGARI_HALFLIG_T_T = 0xF012D - private val DEVANAGARI_HALFLIG_N_T = 0xF01C4 - private val MARWARI_HALFLIG_DD_Y = 0xF01AE + private val MARWARI_LIG_DD_DD = 0xF018A + private val MARWARI_LIG_DD_DDH = 0xF018B + private val MARWARI_LIG_DD_Y = 0xF016E + private val MARWARI_HALFLIG_DD_Y = 0xF016F + private val MARWARI_LIG_DD_R = 0xF0118 - private val DEVANAGARI_HALF_FORMS = 0xF0100 // starting point for Devanagari half forms - private val DEVANAGARI_LIG_X_R = 0xF0140 // starting point for Devanagari ligature CONSONANT+RA - private fun CodePoint.toHalfFormOrNull(): CodePoint? { - if (this == DEVANAGARI_RYA) return DEVANAGARI_HALF_RYA - if (this in 0xF018C..0xF018F) return this + 0x34 - if (this == DEVANAGARI_LIG_K_SS) return DEVANAGARI_HALFLIG_K_SS - if (this == DEVANAGARI_LIG_J_NY) return DEVANAGARI_HALFLIG_J_NY - if (this == DEVANAGARI_LIG_T_T) return DEVANAGARI_HALFLIG_T_T - if (this == DEVANAGARI_LIG_N_T) return DEVANAGARI_HALFLIG_N_T - if (this == DEVANAGARI_OPEN_YA) return DEVANAGARI_OPEN_HALF_YA - if (this == MARWARI_LIG_DD_Y) return MARWARI_HALFLIG_DD_Y - if (this in devanagariBaseConsonants) return (this - 0x0910 + DEVANAGARI_HALF_FORMS) - if (this in devanagariBaseConsonantsWithNukta) return (this - 0x0920 + DEVANAGARI_HALF_FORMS) - if (this in devanagariPresentationConsonantsWithRa) return this + 0x80 - return null + private val DEVANAGARI_HALF_FORMS = 0xF0230 // starting point for Devanagari half forms + private val DEVANAGARI_LIG_X_R = 0xF0410 // starting point for Devanagari ligature CONSONANT+RA + + private fun Int.toDevaInternal(): Int { + if (this in 0x0915..0x0939) return this - 0x0915 + 0xF0140 + else if (this in 0x0958..0x095F) return this - 0x0958 + 0xF0165 + else throw IllegalArgumentException("No Internal form exists for ${this.charInfo()}") } - // TODO use proper version of Virama for respective scripts - private fun CodePoint.toHalfFormOrVirama(): List = this.toHalfFormOrNull().let { -// println("[TerrarumSansBitmap] toHalfForm ${this.charInfo()} = ${it?.charInfo()}") - if (it == null) listOf(this, DEVANAGARI_VIRAMA) else listOf(it) - } - - // TODO use proper version of Virama for respective scripts - private fun toRaAppended(c: CodePoint): List { - if (c in devanagariBaseConsonants) return listOf(c - 0x0910 + DEVANAGARI_LIG_X_R) - else if (c == DEVANAGARI_LIG_K_SS) return listOf(DEVANAGARI_LIG_K_SS_R) - else if (c == DEVANAGARI_LIG_J_NY) return listOf(DEVANAGARI_LIG_J_NY_R) - else if (c == DEVANAGARI_LIG_T_T) return listOf(DEVANAGARI_LIG_T_T_R) - else if (c == 0x0978) return listOf(MARWARI_LIG_DD_R) - else return listOf(c, DEVANAGARI_VIRAMA, DEVANAGARI_RA) - } - - private fun ligateIndicConsonants(c1: CodePoint, c2: CodePoint): List { -// println("[TerrarumSansBitmap] Indic ligation ${c1.charInfo()} - ${c2.charInfo()}") - if (c1 != DEVANAGARI_RA && c2 == DEVANAGARI_RA) return toRaAppended(c1) // Devanagari @.RA - when (c1) { - 0x0915 -> /* Devanagari KA */ when (c2) { - 0x0924 -> return listOf(0xF0180) // K.T - 0x0937 -> return listOf(DEVANAGARI_LIG_K_SS) // K.SS - 0xF0167 -> return listOf(DEVANAGARI_LIG_K_SS_R) // K.SS.R - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // K.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0918 -> /* Devanagari GHA */ when (c2) { - 0x091F -> return listOf(0xF01A2) // GH.TT - 0x0920 -> return listOf(0xF01A3) // GH.TTH - 0x0922 -> return listOf(0xF01A4) // GH.DDH - 0xF014F -> return listOf(0xF0172) // GH.TTR - 0xF0150 -> return listOf(0xF0173) // GH.TTHR - 0xF0152 -> return listOf(0xF0174) // GH.DDHR - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0919 -> /* Devanagari NGA */ when (c2) { - 0x0917 -> return listOf(0xF0182) // NG.G - 0x092E -> return listOf(0xF0183) // NG.M - DEVANAGARI_VA -> return listOf(0xF019C) // NG.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // NG.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x091B -> /* Devanagari CHA */ when (c2) { - DEVANAGARI_VA -> return listOf(0xF019D) // CH.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // CH.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x091C -> /* Devanagari JA */ when (c2) { - 0x091E -> return listOf(DEVANAGARI_LIG_J_NY) // J.NY - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // J.Y - 0xF014E -> return listOf(DEVANAGARI_LIG_J_NY_R) // J.NY.R - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x091F -> /* Devanagari TTA */ when (c2) { - 0x091F -> return listOf(0xF0185) // TT.TT - 0x0920 -> return listOf(0xF0186) // TT.TTH - DEVANAGARI_VA -> return listOf(0xF019E) // TT.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // TT.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0920 -> /* Devanagari TTHA */ when (c2) { - 0x0920 -> return listOf(0xF0187) // TTH.TTH - DEVANAGARI_VA -> return listOf(0xF019F) // TTH.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // TTH.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0921 -> /* Devanagari DDA */ when (c2) { - 0x0921 -> return listOf(0xF0188) // DD.DD - 0x0922 -> return listOf(0xF0189) // DD.DDH - DEVANAGARI_VA -> return listOf(0xF01A0) // DD.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // DD.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0922 -> /* Devanagari DDHA */ when (c2) { - 0x0922 -> return listOf(0xF018A) // DDH.DDH - DEVANAGARI_VA -> return listOf(0xF01A1) // DDH.V - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA // DDH.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0924 -> /* Devanagari TA */ when (c2) { - 0x0924 -> return listOf(DEVANAGARI_LIG_T_T) // T.T - DEVANAGARI_LIG_T_R -> return listOf(DEVANAGARI_LIG_T_T_R) // T.T.R - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0926 -> /* Devanagari DA */ when (c2) { - 0x0917 -> return listOf(0xF019A) // D.G - 0x0918 -> return listOf(0xF019B) // D.GH - 0x0926 -> return listOf(0xF018C) // D.D - 0x0927 -> return listOf(0xF018D) // D.DH - 0x092C -> return listOf(0xF018E) // D.B - 0x092D -> return listOf(0xF018F) // D.BH - 0x092E -> return listOf(0xF0190) // D.M - 0x092F -> return listOf(0xF0191) // D.Y - 0x0935 -> return listOf(0xF0192) // D.V - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0928 -> /* Devanagari NA */ when (c2) { - 0x0924 -> return listOf(DEVANAGARI_LIG_N_T) // N.T - 0x0928 -> return listOf(0xF0193) // N.N - DEVANAGARI_LIG_T_R -> return listOf(DEVANAGARI_LIG_N_T_R) // N.T.R - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x092A -> /* Devanagari PA */ when (c2) { - 0x091F -> return listOf(0xF01A5) // P.TT - 0x0920 -> return listOf(0xF01A6) // P.TTH - 0x0922 -> return listOf(0xF01A7) // P.DDH - 0xF014F -> return listOf(0xF0175) // P.TTR - 0xF0150 -> return listOf(0xF0176) // P.TTHR - 0xF0152 -> return listOf(0xF0177) // P.DDHR - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0937 -> /* Devanagari SSA */ when (c2) { - 0x091F -> return listOf(0xF01A8) // SS.TT - 0x0920 -> return listOf(0xF01A9) // SS.TTH - 0x0922 -> return listOf(0xF01AA) // SS.DDH - 0xF014F -> return listOf(0xF0178) // SS.TTR - 0xF0150 -> return listOf(0xF0179) // SS.TTHR - 0xF0152 -> return listOf(0xF017A) // SS.DDHR - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0939 -> /* Devanagari HA */ when (c2) { - 0x0923 -> return listOf(0xF0194) // H.NN - 0x0928 -> return listOf(0xF0195) // H.N - 0x092E -> return listOf(0xF0196) // H.M - 0x092F -> return listOf(0xF0197) // H.Y - 0x0932 -> return listOf(0xF0198) // H.L - 0x0935 -> return listOf(0xF0199) // H.V - else -> return c1.toHalfFormOrVirama() + c2 - } - 0x0978 -> /* Marwari DDA */ when (c2) { - 0x0978 -> return listOf(MARWARI_LIG_DD_DD) // DD.DD - 0x0922 -> return listOf(MARWARI_LIG_DD_DDH) // DD.DDH - DEVANAGARI_YA -> return listOf(MARWARI_LIG_DD_Y) // DD.Y - else -> return c1.toHalfFormOrVirama() + c2 - } - in 0xF018C..0xF018F -> /* Devanagari D.@A */ when (c2) { - DEVANAGARI_YA -> return c1.toHalfFormOrVirama() + DEVANAGARI_OPEN_YA - else -> return c1.toHalfFormOrVirama() + c2 - } - else -> return c1.toHalfFormOrVirama() + c2 // TODO use proper version of Virama for respective scripts - } - } /** * @param tone1 0..4 where 0 is extra-high diff --git a/testing.PNG b/testing.PNG index 2db2b723f0d7bcf538c51b204cf2f3b33b028e68..2b79291d4e61bc7438201c0b2593f4b0402a0693 100755 GIT binary patch literal 26545 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 literal 31911 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 NGRtT`5(X4lSpFtqC{_Rf literal 235148 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