5afbcc3
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak	2006-10-13 13:21:37.000000000 +0800
5afbcc3
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp	2006-10-13 13:57:36.000000000 +0800
5afbcc3
@@ -868,7 +868,7 @@
5afbcc3
     None, None, None, None,
5afbcc3
     None, None, None, Post,
5afbcc3
 
5afbcc3
-    Post, None, Below, None,
5afbcc3
+    None, None, None, None,
5afbcc3
     None, Post, None, None,
5afbcc3
     None, None, None, None,
5afbcc3
     None, None, Post, Post,
5afbcc3
@@ -1271,6 +1271,16 @@
5afbcc3
     int base = 0;
5afbcc3
     int reph = -1;
5afbcc3
 
5afbcc3
+    //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
5afbcc3
+    bool is_special_conjuction_malayalam = false;
5afbcc3
+	
5afbcc3
+    if ((len == 3) && 
5afbcc3
+	((reordered[2] == 0x0d30) || (reordered[2] == 0x0d31)) && 
5afbcc3
+	(reordered[1] == 0x0d4d) && 
5afbcc3
+	((reordered[0] >= 0x0d15) && (reordered[0] <= 0x0d39))) {
5afbcc3
+        is_special_conjuction_malayalam = true;
5afbcc3
+    }
5afbcc3
+
5afbcc3
 #ifdef INDIC_DEBUG
5afbcc3
     IDEBUG("original:");
5afbcc3
     for (i = 0; i < len; i++) {
5afbcc3
@@ -1547,6 +1557,15 @@
5afbcc3
                 reph = i;
5afbcc3
     }
5afbcc3
 
5afbcc3
+    //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
5afbcc3
+    if (is_special_conjuction_malayalam) {
5afbcc3
+        unsigned short temp;
5afbcc3
+		
5afbcc3
+	temp = reordered[0];		
5afbcc3
+	reordered[0] = reordered[2];		
5afbcc3
+	reordered[2] = temp;	
5afbcc3
+    }
5afbcc3
+
5afbcc3
     if (item->font->stringToCMap((const QChar *)reordered.data(), len, item->glyphs, item->advances,
5afbcc3
                                  &item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError)
5afbcc3
         return FALSE;
5afbcc3
@@ -1658,6 +1677,15 @@
5afbcc3
 
5afbcc3
         // halant always applies
5afbcc3
 
5afbcc3
+        //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
5afbcc3
+        if (is_special_conjuction_malayalam) {
5afbcc3
+	    unsigned int temp;
5afbcc3
+			
5afbcc3
+	    temp = properties[0];
5afbcc3
+	    properties[0] = ~PreSubstProperty;			
5afbcc3
+	    properties[2] = temp; 
5afbcc3
+	}
5afbcc3
+
5afbcc3
 #ifdef INDIC_DEBUG
5afbcc3
         {
5afbcc3
             IDEBUG("OT properties:");