From: Behdad Esfahbod Date: Tue, 7 Dec 2010 21:20:42 +0000 (-0500) Subject: Fix arabic shaping of LTR text X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee8aaf976a6eb42be49b63b4c51c7a0a338e0298;p=platform%2Fupstream%2FlibHarfBuzzSharp.git Fix arabic shaping of LTR text We should ensure-direction before doing any complex work. The only exception is mirroring that needs to see the original / final direction, not the native. Handle that. --- diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index 346cb37..f1ca7c2 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -193,7 +193,7 @@ hb_mirror_chars (hb_ot_shape_context_t *c) { hb_unicode_get_mirroring_func_t get_mirroring = c->buffer->unicode->v.get_mirroring; - if (HB_DIRECTION_IS_FORWARD (c->buffer->props.direction)) + if (HB_DIRECTION_IS_FORWARD (c->original_direction)) return; hb_mask_t rtlm_mask = c->plan->map.get_1_mask (HB_TAG ('r','t','l','m')); @@ -300,6 +300,8 @@ hb_ot_shape_execute_internal (hb_ot_shape_context_t *c) hb_set_unicode_props (c); /* BUFFER: Set general_category and combining_class in var1 */ + hb_ensure_native_direction (c); + hb_form_clusters (c); hb_ot_shape_setup_masks (c); /* BUFFER: Clobbers var2 */ @@ -309,8 +311,6 @@ hb_ot_shape_execute_internal (hb_ot_shape_context_t *c) /* Mirroring needs to see the original direction */ hb_mirror_chars (c); - hb_ensure_native_direction (c); - hb_substitute_default (c); hb_ot_substitute_complex (c);