marwari dda ligatures

This commit is contained in:
minjaesong
2022-01-25 12:01:14 +09:00
parent 1e0a820817
commit 1e66cfec51
5 changed files with 20 additions and 6 deletions

Binary file not shown.

View File

@@ -1224,7 +1224,6 @@ class TerrarumSansBitmap(
seq.add(c) seq.add(c)
resetRaStatus() resetRaStatus()
} }
// WIP
// END of devanagari string replacer // END of devanagari string replacer
// rearrange {letter, before-and-after diacritics} as {before-diacritics, letter, after-diacritics} // rearrange {letter, before-and-after diacritics} as {before-diacritics, letter, after-diacritics}
else if (glyphProps[c]?.stackWhere == GlyphProps.STACK_BEFORE_N_AFTER) { else if (glyphProps[c]?.stackWhere == GlyphProps.STACK_BEFORE_N_AFTER) {
@@ -1253,6 +1252,7 @@ class TerrarumSansBitmap(
i = 1 i = 1
while (i <= seq.lastIndex) { while (i <= seq.lastIndex) {
// reposition [cluster, align-before, align-after] into [align-before, cluster, align-after]
if ((glyphProps[seq[i]] ?: nullProp).alignWhere == GlyphProps.ALIGN_BEFORE) { if ((glyphProps[seq[i]] ?: nullProp).alignWhere == GlyphProps.ALIGN_BEFORE) {
val t = seq[i - 1] val t = seq[i - 1]
seq[i - 1] = seq[i] seq[i - 1] = seq[i]
@@ -1777,9 +1777,13 @@ class TerrarumSansBitmap(
private val DEVANAGARI_LIG_K_SS = 0xF0181 private val DEVANAGARI_LIG_K_SS = 0xF0181
private val DEVANAGARI_LIG_J_NY = 0xF0184 private val DEVANAGARI_LIG_J_NY = 0xF0184
private val DEVANAGARI_LIG_T_T = 0xF018B private val DEVANAGARI_LIG_T_T = 0xF018B
private val MARWARI_LIG_DD_DD = 0xF01AB
private val MARWARI_LIG_DD_DDH = 0xF01AC
private val MARWARI_LIG_DD_Y = 0xF01AD
private val DEVANAGARI_LIG_T_R = 0xF0154 private val DEVANAGARI_LIG_T_R = 0xF0154
private val DEVANAGARI_LIG_SH_R = 0xF0166 private val DEVANAGARI_LIG_SH_R = 0xF0166
private val MARWARI_LIG_DD_R = 0xF016A
private val DEVANAGARI_LIG_K_SS_R = 0xF016B private val DEVANAGARI_LIG_K_SS_R = 0xF016B
private val DEVANAGARI_LIG_J_NY_R = 0xF016C private val DEVANAGARI_LIG_J_NY_R = 0xF016C
@@ -1788,6 +1792,7 @@ class TerrarumSansBitmap(
private val DEVANAGARI_HALFLIG_K_SS = 0xF012B private val DEVANAGARI_HALFLIG_K_SS = 0xF012B
private val DEVANAGARI_HALFLIG_J_NY = 0xF012C private val DEVANAGARI_HALFLIG_J_NY = 0xF012C
private val DEVANAGARI_HALFLIG_T_T = 0xF012D private val DEVANAGARI_HALFLIG_T_T = 0xF012D
private val MARWARI_HALFLIG_DD_Y = 0xF01AE
// private val DEVANAGARI_HALFLIG_T_R = 0xF012E // private val DEVANAGARI_HALFLIG_T_R = 0xF012E
// private val DEVANAGARI_HALFLIG_SH_R = 0xF012F // private val DEVANAGARI_HALFLIG_SH_R = 0xF012F
@@ -1800,6 +1805,7 @@ class TerrarumSansBitmap(
if (this == DEVANAGARI_LIG_J_NY) return DEVANAGARI_HALFLIG_J_NY 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_T_T) return DEVANAGARI_HALFLIG_T_T
if (this == DEVANAGARI_OPEN_YA) return DEVANAGARI_OPEN_HALF_YA 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 devanagariBaseConsonants) return (this - 0x0910 + DEVANAGARI_HALF_FORMS)
if (this in devanagariBaseConsonantsWithNukta) return (this - 0x0920 + DEVANAGARI_HALF_FORMS) if (this in devanagariBaseConsonantsWithNukta) return (this - 0x0920 + DEVANAGARI_HALF_FORMS)
if (this in devanagariPresentationConsonantsWithRa) return this + 0x80 if (this in devanagariPresentationConsonantsWithRa) return this + 0x80
@@ -1818,6 +1824,7 @@ class TerrarumSansBitmap(
else if (c == DEVANAGARI_LIG_K_SS) return listOf(DEVANAGARI_LIG_K_SS_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_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 == 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) else return listOf(c, DEVANAGARI_VIRAMA, DEVANAGARI_RA)
} }
@@ -1933,6 +1940,12 @@ class TerrarumSansBitmap(
0x0935 -> return listOf(0xF0199) // H.V 0x0935 -> return listOf(0xF0199) // H.V
else -> return c1.toHalfFormOrVirama() + c2 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
}
else -> return c1.toHalfFormOrVirama() + c2 // TODO use proper version of Virama for respective scripts else -> return c1.toHalfFormOrVirama() + c2 // TODO use proper version of Virama for respective scripts
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -9,5 +9,6 @@
अंग्रेजी अंग्रेजी
ख्य ख्य
மோநௌ « check the sanity of glyph reordering மோநௌ « check the sanity of glyph reordering
भ्रष्ट ष्ट्रॉष्ठ्रॊष्ढ्रो प्ट्रॉप्ठ्रॊप्ढ्रो घ्ट्रॉघ्ठ्रॊघ्ढ्रो ष्ट्र्गौ ष्ठ्दॊ ष्ट्कष्ठ्कष्ढ्क भ्रष्ट ष्ट्रॉष्ठ्रॊष्ढ्रो प्ट्रॉप्ठ्रॊप्ढ्रो घ्ट्रॉघ्ठ्रॊघ्ढ्रो ष्ट्र्गौ ष्ठ्दॊ ष्ट्कष्ठ्कष्ढ्क म्ह न्ह
ष्ट्र्कष्ठ्र्कष्ढ्र्क प्ट्र्खप्ठ्र्खप्ढ्र्ख घ्ट्र्गघ्ठ्र्गघ्ढ्र्ग व्ख ब्ख व्ब व्य व्स व्ख ब्ख व्ब व्य व्स ष्ट्र्कष्ठ्र्कष्ढ्र्क प्ट्र्खप्ठ्र्खप्ढ्र्ख घ्ट्र्गघ्ठ्र्गघ्ढ्र्ग
ऱ्हस्व र्ष्टॊष्ट्रर्ष्ट ॸ्ॸ ॸ्ढ ॸ्य ॸ्य्ख ॸ्र

Binary file not shown.