changeset 101963:8de12e689594

(fill_gstring_glyph_string): Adjusted for the change of <struct glyph>.u.cmp.to. Check if the glyph belongs to the same composition. (append_composite_glyph): Adjusted for the change of <strcut glyph>.u.cmp.to.
author Kenichi Handa <handa@m17n.org>
date Thu, 12 Feb 2009 05:54:20 +0000
parents cf97dc31be17
children 05ec76bd8aa4
files src/xdisp.c
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Thu Feb 12 05:48:41 2009 +0000
+++ b/src/xdisp.c	Thu Feb 12 05:54:20 2009 +0000
@@ -19688,15 +19688,16 @@
   last = s->row->glyphs[s->area] + end;
   s->cmp_id = glyph->u.cmp.id;
   s->cmp_from = glyph->u.cmp.from;
-  s->cmp_to = glyph->u.cmp.to;
+  s->cmp_to = glyph->u.cmp.to + 1;
   s->face = FACE_FROM_ID (s->f, face_id);
   lgstring = composition_gstring_from_id (s->cmp_id);
   s->font = XFONT_OBJECT (LGSTRING_FONT (lgstring));
   glyph++;
   while (glyph < last
 	 && glyph->u.cmp.automatic
-	 && glyph->u.cmp.id == s->cmp_id)
-    s->cmp_to = (glyph++)->u.cmp.to;
+	 && glyph->u.cmp.id == s->cmp_id
+	 && s->cmp_to == glyph->u.cmp.from)
+    s->cmp_to = (glyph++)->u.cmp.to + 1;
 
   for (i = s->cmp_from; i < s->cmp_to; i++)
     {
@@ -19905,7 +19906,7 @@
 	  struct font_metrics metrics;
 
 	  composition_gstring_width (gstring, glyph->u.cmp.from,
-				     glyph->u.cmp.to, &metrics);
+				     glyph->u.cmp.to + 1, &metrics);
 	  if (metrics.rbearing > metrics.width)
 	    *right = metrics.rbearing;
 	  if (metrics.lbearing < 0)
@@ -20653,7 +20654,7 @@
 	  glyph->u.cmp.automatic = 1;
 	  glyph->u.cmp.id = it->cmp_it.id;
 	  glyph->u.cmp.from = it->cmp_it.from;
-	  glyph->u.cmp.to = it->cmp_it.to;
+	  glyph->u.cmp.to = it->cmp_it.to - 1;
 	}
       glyph->avoid_cursor_p = it->avoid_cursor_p;
       glyph->multibyte_p = it->multibyte_p;