devanagari narrower vowels

This commit is contained in:
minjaesong
2022-01-26 10:09:02 +09:00
parent 702f1b2e2f
commit a58ad756ff
6 changed files with 14 additions and 13 deletions

Binary file not shown.

View File

@@ -116,7 +116,7 @@ data class GlyphProps(
if (stackWhere == STACK_BEFORE_N_AFTER) if (stackWhere == STACK_BEFORE_N_AFTER)
2 2
else if (directiveOpcode in 0b10000_000..0b10000_111) else if (directiveOpcode in 0b10000_000..0b10000_111)
directiveOpcode and 7 7
else 0 else 0
fun isPragma(pragma: String) = when (pragma) { fun isPragma(pragma: String) = when (pragma) {

View File

@@ -1213,11 +1213,11 @@ class TerrarumSansBitmap(
seq.add(c) seq.add(c)
changeRaStatus(1) changeRaStatus(1)
} }
else if ((yankedDevanagariRaStatus[1] == 1 || yankedDevanagariRaStatus[1] == 3) && devanagariVerbs.contains(c)) { else if ((yankedDevanagariRaStatus[1] == 1 || yankedDevanagariRaStatus[1] == 3) && devanagariVowels.contains(c)) {
seq.add(c) seq.add(c)
changeRaStatus(3) changeRaStatus(3)
} }
// else if (yankedDevanagariRaStatus == 3 && !devanagariVerbs.contains(c)) { // else if (yankedDevanagariRaStatus == 3 && !devanagariVowels.contains(c)) {
else if (yankedDevanagariRaStatus[1] > 0 && yankedCharacters.peek().second == DEVANAGARI_RA) { // termination or illegal state for Devanagari RA else if (yankedDevanagariRaStatus[1] > 0 && yankedCharacters.peek().second == DEVANAGARI_RA) { // termination or illegal state for Devanagari RA
yankedCharacters.pop() yankedCharacters.pop()
seq.add(DEVANAGARI_RA_SUPER) seq.add(DEVANAGARI_RA_SUPER)
@@ -1289,9 +1289,9 @@ class TerrarumSansBitmap(
i = 0 i = 0
while (i <= seq.lastIndex) { while (i <= seq.lastIndex) {
if (i > 0 && (glyphProps[seq[i]] ?: nullProp).alignWhere == GlyphProps.ALIGN_BEFORE) { if (i > 0 && (glyphProps[seq[i]] ?: nullProp).alignWhere == GlyphProps.ALIGN_BEFORE) {
val verb = seq[i] val vowel = seq[i]
// dbgprn("Verb realign: index $i, ${verb.charInfo()}") // dbgprn("Vowel realign: index $i, ${vowel.charInfo()}")
if (isDevanagari(verb)) { if (isDevanagari(vowel)) {
// scan for the consonant cluster backwards // scan for the consonant cluster backwards
// [not ligature glyphs] h h h h h c l r // [not ligature glyphs] h h h h h c l r
var scanCounter = 1 var scanCounter = 1
@@ -1303,10 +1303,10 @@ class TerrarumSansBitmap(
scanCounter += 1 scanCounter += 1
else else
break break
} // scanCounter points at the terminator. the left-verb must be placed at (i - scanCounter + 1) } // scanCounter points at the terminator. the left-vowel must be placed at (i - scanCounter + 1)
seq.removeAt(i) seq.removeAt(i)
seq.add(i - scanCounter + 1, verb) seq.add(i - scanCounter + 1, vowel)
} }
else { else {
val t = seq[i - 1] val t = seq[i - 1]
@@ -1781,7 +1781,7 @@ class TerrarumSansBitmap(
private val TAMIL_SHRII = 0xF00EE private val TAMIL_SHRII = 0xF00EE
private val devanagariConsonants = ((0x0915..0x0939) + (0x0958..0x095F) + (0x0978..0x097F) + (0xF0105..0xF01FF)).toHashSet() private val devanagariConsonants = ((0x0915..0x0939) + (0x0958..0x095F) + (0x0978..0x097F) + (0xF0105..0xF01FF)).toHashSet()
private val devanagariVerbs = ((0x093A..0x093C) + (0x093E..0x094C) + (0x094E..0x094F)).toHashSet() private val devanagariVowels = ((0x093A..0x093C) + (0x093E..0x094C) + (0x094E..0x094F)).toHashSet()
private val devanagariBaseConsonants = 0x0915..0x0939 private val devanagariBaseConsonants = 0x0915..0x0939
private val devanagariBaseConsonantsWithNukta = 0x0958..0x095F private val devanagariBaseConsonantsWithNukta = 0x0958..0x095F

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -14,4 +14,5 @@
स्वतन्त्र << N.T.RA ligature स्वतन्त्र << N.T.RA ligature
सर्वप्रथम << RAsup must be above VA, not P.RA सर्वप्रथम << RAsup must be above VA, not P.RA
भारतीय अक्षर जटिल हैं क्ष्फ क्षफ भारतीय अक्षर जटिल हैं क्ष्फ क्षफ अऺ
ऄअआऑऒओऔ ॲॳॴॵॶॷ

Binary file not shown.