diff -rup pango-1.26.0/modules/indic/indic-lang.c pango-1.26.0_mod/modules/indic/indic-lang.c
--- pango-1.26.0/modules/indic/indic-lang.c	2009-02-07 05:19:34.000000000 +0530
+++ pango-1.26.0_mod/modules/indic/indic-lang.c	2009-10-23 16:15:35.322072355 +0530
@@ -35,6 +35,21 @@ typedef PangoEngineLangClass	IndicEngine
   {#script ENGINE_SUFFIX, PANGO_ENGINE_TYPE_LANG, RENDER_TYPE, script##_scripts, G_N_ELEMENTS(script##_scripts)}
 
 
+#define DEV_RRA 0x0931 //0930 + 093c
+#define DEV_QA 0x0958 //0915 + 093c
+#define DEV_YA 0x095F //092f + 003c
+#define BENGALI_RRA 0x09DC 
+#define BENGALI_RHA 0x09DD
+#define BENGALI_YYA 0x09DF
+
+//for split matras in all brahmi based script
+#define BENGALI_SIGN_O 0x09CB  //09c7 + 09be
+#define BENGALI_SIGN_AU 0x09CC //09c7 + 09d7
+ 
+#define IS_COMPOSITE_WITH_BRAHMI_NUKTA(c) ((c >= BENGALI_RRA  && c <= BENGALI_YYA)||(c >= DEV_QA  && c <= DEV_YA) || (c == DEV_RRA))
+#define IS_SPLIT_MATRA_BRAHMI(c) ((c == BENGALI_SIGN_O) || (c == BENGALI_SIGN_AU))
+
+
 static PangoEngineScriptInfo deva_scripts[] = {
   { PANGO_SCRIPT_DEVANAGARI, "*" }
 };
@@ -110,6 +125,13 @@ indic_engine_break (PangoEngineLang *eng
     {
       this_wc = g_utf8_get_char (p);
       next = g_utf8_next_char (p);
+
+    if (G_UNLIKELY (
+		IS_COMPOSITE_WITH_BRAHMI_NUKTA(this_wc) || IS_SPLIT_MATRA_BRAHMI(this_wc))) {
+        attrs[i+1].backspace_deletes_character = FALSE;
+     }
+
+
       if (next != NULL && next < (text + length))
 	{
 	  next_wc = g_utf8_get_char (next);
