diff -rup qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
--- qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp	2010-06-02 07:33:13.000000000 +0530
+++ qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp	2010-09-04 13:27:33.000000000 +0530
@@ -1741,6 +1741,11 @@ static int indic_nextSyllableBoundary(HB
  	    if (state == Halant && uc[pos] == 0x200d /* ZWJ */)
   		break;
             // the control character should be the last char in the item
+ 	    if (state == Consonant && script == HB_Script_Bengali && uc[pos-1] == 0x09B0 && uc[pos] == 0x200d /* ZWJ */)
+  		break;
+ 	    if (state == Consonant && script == HB_Script_Kannada && uc[pos-1] == 0x0CB0 && uc[pos] == 0x200d /* ZWJ */)
+  		break;
+            // Bengali and Kannada has a special exception for rendering yaphala with ra (to avoid reph) see http://www.unicode.org/faq/indic.html#15
             ++pos;
             goto finish;
         case Consonant:
