Index: pango/pango-glyph.h
===================================================================
RCS file: /usr/local/cvsroot/pango/pango/pango-glyph.h,v
retrieving revision 1.1.1.1
diff -d -B -b -u -r1.1.1.1 pango-glyph.h
--- pango/pango-glyph.h	17 Dec 2003 10:53:15 -0000	1.1.1.1
+++ pango/pango-glyph.h	25 Jan 2004 09:31:41 -0000
@@ -58,6 +58,7 @@
   PangoGlyph    glyph;
   PangoGlyphGeometry geometry;
   PangoGlyphVisAttr  attr;
+  gushort	component;
 };
 
 /* A string of glyphs with positional information and visual attributes -
Index: pango/opentype/ftxgpos.c
===================================================================
RCS file: /usr/local/cvsroot/pango/pango/opentype/ftxgpos.c,v
retrieving revision 1.4
diff -d -B -b -u -r1.4 ftxgpos.c
Index: pango/opentype/ftxgsub.c
===================================================================
RCS file: /usr/local/cvsroot/pango/pango/opentype/ftxgsub.c,v
retrieving revision 1.4
diff -d -B -b -u -r1.4 ftxgsub.c
--- pango/opentype/ftxgsub.c	29 Dec 2003 14:32:09 -0000	1.4
+++ pango/opentype/ftxgsub.c	26 Jan 2004 13:30:20 -0000
@@ -1192,7 +1191,7 @@
   {
     FT_UShort      index, property;
     FT_Error       error;
-    FT_UShort      numlig, i, j, is_mark, first_is_mark = FALSE;
+    FT_UShort      numlig, i, j, is_mark, first_is_mark = FALSE, mark_index;
     FT_UShort*     s_in;
     FT_UShort*     c;
 
@@ -1307,6 +1302,11 @@
 
           (in->max_ligID)++;
         }
+        mark_index = in->pos;
+        while ( mark_index < in->length && 
+                CHECK_Property( gdef, in->string[mark_index],
+                                flags, &property ) )
+          in->components[mark_index++] = lig->ComponentCount - 1;
 
         return TT_Err_Ok;
       }
@@ -4547,7 +4547,6 @@
 	    retError = error;
 
           /* flipping `in' and `out', preparing the next loop */
-  
           ptmp1->pos       = in->pos;
           ptmp2->length    = ptmp2->pos;
           ptmp2->pos       = in->pos;
Index: pango/opentype/pango-ot-ruleset.c
===================================================================
RCS file: /usr/local/cvsroot/pango/pango/opentype/pango-ot-ruleset.c,v
retrieving revision 1.3
diff -d -B -b -u -r1.3 pango-ot-ruleset.c
--- pango/opentype/pango-ot-ruleset.c	28 Dec 2003 12:08:44 -0000	1.3
+++ pango/opentype/pango-ot-ruleset.c	26 Jan 2004 13:21:11 -0000
@@ -407,7 +407,7 @@
 	glyphs->glyphs[i].attr.is_cluster_start = 1;
       else
 	glyphs->glyphs[i].attr.is_cluster_start = 0;
-
+      glyphs->glyphs[i].component = out_string->components[i];
       last_cluster = glyphs->log_clusters[i];
     }
 
@@ -460,7 +460,6 @@
       
       for (j = back; j < i; j++)
 	glyphs->glyphs[i].geometry.x_offset -= glyphs->glyphs[j].geometry.width;
-      
       glyphs->glyphs[i].geometry.x_offset += PANGO_UNITS_26_6(x_pos);
       glyphs->glyphs[i].geometry.y_offset += PANGO_UNITS_26_6(y_pos);
       
@@ -567,6 +566,7 @@
 	  in_string->string[i] = glyphs->glyphs[i].glyph;
 	  in_string->properties[i] = properties[i];
 	  in_string->logClusters[i] = glyphs->log_clusters[i];
+          in_string->components[i] = glyphs->glyphs[i].component;
 	}
       in_string->max_ligID = i;
     }
@@ -614,6 +614,7 @@
 				FALSE /* enable device-dependant values */,
 				rtl) == FT_Err_Ok)
 	{
+ 
 	  if (rtl)
 	    apply_gpos_rtl (ruleset, glyphs, outgpos);
 	  else
