summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2011-07-31 15:57:00 -0400
committerBehdad Esfahbod <behdad@behdad.org>2011-07-31 15:57:00 -0400
commit6b37bc80843e38ca7b62500f95fd70c08af68d62 (patch)
tree1baab826177707fb5289efb474dfb0d53ca083c8
parente7be05702447ae270d797398132c1930cd3a9b86 (diff)
downloadvideo-player-6b37bc80843e38ca7b62500f95fd70c08af68d62.tar.gz
video-player-6b37bc80843e38ca7b62500f95fd70c08af68d62.tar.bz2
video-player-6b37bc80843e38ca7b62500f95fd70c08af68d62.zip
[Indic] Fix ZWJ/ZWNJ application
Not quite working just yet. False alarm re 10 failures. It was crashing. Ouch! Back to 48 failures.
-rw-r--r--src/hb-ot-shape-complex-indic.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 4500ef7..0888cba 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -578,13 +578,15 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t
for (i = start + 1; i < end; i++)
if (is_joiner (info[i])) {
bool non_joiner = info[i].indic_category() == OT_ZWNJ;
- unsigned int j = i - 1;
+ unsigned int j = i;
do {
- info[j].mask &= !mask_array[HALF];
- if (non_joiner)
- info[j].mask &= !mask_array[CJCT];
j--;
+
+ info[j].mask &= !mask_array[CJCT];
+ if (non_joiner)
+ info[j].mask &= !mask_array[HALF];
+
} while (j > start && !is_consonant (info[j]));
}
}