summaryrefslogtreecommitdiff
path: root/src/arabic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arabic.c')
-rw-r--r--src/arabic.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/arabic.c b/src/arabic.c
index d323abf64..efc6aa66d 100644
--- a/src/arabic.c
+++ b/src/arabic.c
@@ -363,18 +363,23 @@ arabic_shape(
int backward_combine = !prev_laa && can_join(prev_c, c);
int forward_combine = can_join(c, next_c);
- if (backward_combine && forward_combine)
- curr_c = curr_a->medial;
- if (backward_combine && !forward_combine)
- curr_c = curr_a->final;
- if (!backward_combine && forward_combine)
- curr_c = curr_a->initial;
- if (!backward_combine && !forward_combine)
- curr_c = curr_a->isolated;
+ if (backward_combine)
+ {
+ if (forward_combine)
+ curr_c = curr_a->medial;
+ else
+ curr_c = curr_a->final;
+ }
+ else
+ {
+ if (forward_combine)
+ curr_c = curr_a->initial;
+ else
+ curr_c = curr_a->isolated;
+ }
}
- // Sanity check -- curr_c should, in the future, never be 0.
- // We should, in the future, insert a fatal error here.
+ // Character missing from the table means using original character.
if (curr_c == NUL)
curr_c = c;