diff options
author | Owen Taylor <otaylor@redhat.com> | 2004-07-30 18:28:09 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2004-07-30 18:28:09 +0000 |
commit | c97ace5813a9c60b80a54f133b7b23fefccba97d (patch) | |
tree | d5649452af8fd53aac40bf8904c7cbfe9eb0b20e | |
parent | 20b8ffb95be718683c1c608c7f2fea1ece7ffc81 (diff) | |
download | pango-c97ace5813a9c60b80a54f133b7b23fefccba97d.tar.gz |
Improve handling of decomposed two-part vowels (#121882, Jungshik Shin)
Fri Jul 30 14:05:25 2004 Owen Taylor <otaylor@redhat.com>
Improve handling of decomposed two-part vowels
(#121882, Jungshik Shin)
* modules/indic/indic-ot-class-tables.c (stateTable):
allow a dependent vowel to be followed by another
dependent vowel.
* modules/indic/indic-ot.c (indic_ot_reorder): Handle
multiple vowel matras.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 12 | ||||
-rw-r--r-- | modules/indic/indic-ot-class-tables.c | 2 | ||||
-rw-r--r-- | modules/indic/indic-ot.c | 19 |
6 files changed, 63 insertions, 6 deletions
@@ -1,3 +1,15 @@ +Fri Jul 30 14:05:25 2004 Owen Taylor <otaylor@redhat.com> + + Improve handling of decomposed two-part vowels + (#121882, Jungshik Shin) + + * modules/indic/indic-ot-class-tables.c (stateTable): + allow a dependent vowel to be followed by another + dependent vowel. + + * modules/indic/indic-ot.c (indic_ot_reorder): Handle + multiple vowel matras. + Fri Jul 30 13:33:49 2004 Owen Taylor <otaylor@redhat.com> * modules/indic/indic-ot.c (indic_ot_reorder): Suppress diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index a24351a9..0a646c46 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,15 @@ +Fri Jul 30 14:05:25 2004 Owen Taylor <otaylor@redhat.com> + + Improve handling of decomposed two-part vowels + (#121882, Jungshik Shin) + + * modules/indic/indic-ot-class-tables.c (stateTable): + allow a dependent vowel to be followed by another + dependent vowel. + + * modules/indic/indic-ot.c (indic_ot_reorder): Handle + multiple vowel matras. + Fri Jul 30 13:33:49 2004 Owen Taylor <otaylor@redhat.com> * modules/indic/indic-ot.c (indic_ot_reorder): Suppress diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index a24351a9..0a646c46 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,15 @@ +Fri Jul 30 14:05:25 2004 Owen Taylor <otaylor@redhat.com> + + Improve handling of decomposed two-part vowels + (#121882, Jungshik Shin) + + * modules/indic/indic-ot-class-tables.c (stateTable): + allow a dependent vowel to be followed by another + dependent vowel. + + * modules/indic/indic-ot.c (indic_ot_reorder): Handle + multiple vowel matras. + Fri Jul 30 13:33:49 2004 Owen Taylor <otaylor@redhat.com> * modules/indic/indic-ot.c (indic_ot_reorder): Suppress diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index a24351a9..0a646c46 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,15 @@ +Fri Jul 30 14:05:25 2004 Owen Taylor <otaylor@redhat.com> + + Improve handling of decomposed two-part vowels + (#121882, Jungshik Shin) + + * modules/indic/indic-ot-class-tables.c (stateTable): + allow a dependent vowel to be followed by another + dependent vowel. + + * modules/indic/indic-ot.c (indic_ot_reorder): Handle + multiple vowel matras. + Fri Jul 30 13:33:49 2004 Owen Taylor <otaylor@redhat.com> * modules/indic/indic-ot.c (indic_ot_reorder): Suppress diff --git a/modules/indic/indic-ot-class-tables.c b/modules/indic/indic-ot-class-tables.c index f0eff95c..7d75d429 100644 --- a/modules/indic/indic-ot-class-tables.c +++ b/modules/indic/indic-ot-class-tables.c @@ -399,7 +399,7 @@ static const gint8 stateTable[][CC_COUNT] = {-1, 6, 1, -1, -1, -1, -1, 5, 4, -1}, {-1, 6, 1, -1, -1, -1, 2, 5, 4, -1}, {-1, -1, -1, -1, 3, 2, -1, -1, -1, 8}, - {-1, 6, 1, -1, -1, -1, -1, -1, -1, -1}, + {-1, 6, 1, -1, -1, -1, -1, 5, -1, -1}, {-1, 7, 1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, 1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 3, 2, -1, -1, -1, -1} diff --git a/modules/indic/indic-ot.c b/modules/indic/indic-ot.c index 95a8bf01..6670ae4a 100644 --- a/modules/indic/indic-ot.c +++ b/modules/indic/indic-ot.c @@ -71,14 +71,17 @@ static void saveMatra(Output *output, gunichar matra, IndicOTCharClass matraClas } } -static void noteMatra(Output *output, const IndicOTClassTable *classTable, gunichar matra, guint32 matraIndex, gulong matraTags) +static void initMatra(Output *output, guint32 matraIndex, gulong matraTags) { - IndicOTCharClass matraClass = indic_ot_get_char_class(classTable, matra); - output->fMpre = output->fMbelow = output->fMabove = output->fMpost = output->fLengthMark = 0; output->fMPreOutIndex = -1; output->fMatraIndex = matraIndex; output->fMatraTags = matraTags; +} + +static gboolean noteMatra(Output *output, const IndicOTClassTable *classTable, gunichar matra) +{ + IndicOTCharClass matraClass = indic_ot_get_char_class(classTable, matra); if (IS_MATRA(matraClass)) { if (IS_SPLIT_MATRA(matraClass)) { @@ -94,7 +97,10 @@ static void noteMatra(Output *output, const IndicOTClassTable *classTable, gunic } else { saveMatra(output, matra, matraClass); } - } + + return TRUE; + } else + return FALSE; } static void noteBaseConsonant(Output *output) @@ -184,7 +190,10 @@ glong indic_ot_reorder(const gunichar *chars, const glong *utf8_offsets, glong c } matra = vmabove - 1; - noteMatra(&output, class_table, chars[matra], /*matra*/ prev, blwf_p); + initMatra(&output, prev, blwf_p); + while (noteMatra(&output, class_table, chars[matra]) && + matra != prev) + matra--; switch (indic_ot_get_char_class(class_table, chars[prev]) & CF_CLASS_MASK) { case CC_RESERVED: |