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