diff -r -u pango-1.14.8.orig/modules/indic/indic-ot.c pango-1.14.8/modules/indic/indic-ot.c
--- pango-1.14.8.orig/modules/indic/indic-ot.c	2006-10-16 19:18:28.000000000 +0530
+++ pango-1.14.8/modules/indic/indic-ot.c	2006-12-26 20:49:15.000000000 +0530
@@ -381,7 +381,7 @@
 		    postBaseLimit -= 1;
 		}
 
-		baseConsonant -= 1;
+		baseConsonant -= 1; 
 	    }
 
 	    /* Write Mpre */
@@ -442,24 +442,6 @@
 		writeChar(&output, chars[i], /*i*/ prev, nukt_p);
 	    }
 
-            /* for the special conjuction of Cons+0x0d4d+0x0d31 of Malayalam */
-	    if ((baseConsonant - 2 >= 0) &&
-		(chars[baseConsonant - 1] == 0x0d4d) &&
-		(chars[baseConsonant] == 0x0d31) &&
-		((chars[baseConsonant - 2] >= 0x0d15) && 
-		 (chars[baseConsonant - 2] <= 0x0d39)))  {
-      		swapChars (&output, -1, -3);
-	    }
-
-            /* for the special conjuction of Cons+0x0d4d+0x0d30 of Malayalam */
-	    if ((baseConsonant - 2 >= 0) &&
-		(chars[baseConsonant - 1] == 0x0d4d) &&
-		(chars[baseConsonant] == 0x0d30) &&
-		((chars[baseConsonant - 2] >= 0x0d15) && 
-		 (chars[baseConsonant - 2] <= 0x0d39)))  {
-      		swapChars (&output, -1, -3);
-	    }
-
 	    if ((class_table->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
 		writeMbelow(&output);
 		writeMabove(&output);
diff -r -u pango-1.14.8.orig/modules/indic/indic-ot-class-tables.c pango-1.14.8/modules/indic/indic-ot-class-tables.c
--- pango-1.14.8.orig/modules/indic/indic-ot-class-tables.c	2006-10-16 19:18:40.000000000 +0530
+++ pango-1.14.8/modules/indic/indic-ot-class-tables.c	2006-12-26 20:49:15.000000000 +0530
@@ -214,8 +214,8 @@
 {
     _xx, _xx, _mp, _mp, _xx, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _iv, _xx, _iv, _iv, /* 0D00 - 0D0F */
     _iv, _xx, _iv, _iv, _iv, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, /* 0D10 - 0D1F */
-    _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _xx, _ct, _ct, _ct, _ct, _ct, _pb, /* 0D20 - 0D2F */
-    _cn, _cn, _ct, _ct, _ct, _pb, _ct, _ct, _ct, _ct, _xx, _xx, _xx, _xx, _dr, _dr, /* 0D30 - 0D3F */
+    _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _ct, _xx, _ct, _ct, _ct, _ct, _ct, _bb, /* 0D20 - 0D2F */
+    _pb, _cn, _bb, _ct, _ct, _pb, _ct, _ct, _ct, _ct, _xx, _xx, _xx, _xx, _dr, _dr, /* 0D30 - 0D3F */
     _dr, _dr, _dr, _dr, _xx, _xx, _dl, _dl, _dl, _xx, _s1, _s2, _s3, _vr, _xx, _xx, /* 0D40 - 0D4F */
     _xx, _xx, _xx, _xx, _xx, _xx, _xx, _dr, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, /* 0D50 - 0D5F */
     _iv, _iv, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx, _xx  /* 0D60 - 0D6F */
@@ -271,7 +271,7 @@
 #define TAML_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT)
 #define TELU_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
 #define KNDA_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3)
-#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT | SF_PROCESS_ZWJ)
+#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT )
 #define SINH_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT | SF_PROCESS_ZWJ)
 
 /*
