diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 20e7ed7ab..bc141a9f5 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -610,12 +610,41 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array, unsigned int new_reph_pos; enum reph_position_t { - REPH_AFTER_MAIN, /* Malayalam, Oriya */ - REPH_BEFORE_SUBSCRIPT, /* Gurmukhi */ - REPH_AFTER_SUBSCRIPT, /* Bengali */ - REPH_BEFORE_POSTSCRIPT, /* Devanagari, Gujarati */ - REPH_AFTER_POSTSCRIPT, /* Kannada, Tamil, Telugu */ - } reph_pos = REPH_BEFORE_POSTSCRIPT; /* XXX */ /* XXX Figure out old behavior too */ + REPH_AFTER_MAIN, + REPH_BEFORE_SUBSCRIPT, + REPH_AFTER_SUBSCRIPT, + REPH_BEFORE_POSTSCRIPT, + REPH_AFTER_POSTSCRIPT, + } reph_pos; + + /* XXX Figure out old behavior too */ + switch (buffer->props.script) + { + case HB_SCRIPT_MALAYALAM: + case HB_SCRIPT_ORIYA: + reph_pos = REPH_AFTER_MAIN; + break; + + case HB_SCRIPT_GURMUKHI: + reph_pos = REPH_BEFORE_SUBSCRIPT; + break; + + case HB_SCRIPT_BENGALI: + reph_pos = REPH_AFTER_SUBSCRIPT; + break; + + default: + case HB_SCRIPT_DEVANAGARI: + case HB_SCRIPT_GUJARATI: + reph_pos = REPH_BEFORE_POSTSCRIPT; + break; + + case HB_SCRIPT_KANNADA: + case HB_SCRIPT_TAMIL: + case HB_SCRIPT_TELUGU: + reph_pos = REPH_AFTER_POSTSCRIPT; + break; + } /* 1. If reph should be positioned after post-base consonant forms, * proceed to step 5.