emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src xterm.c


From: Kenichi Handa
Subject: [Emacs-diffs] emacs/src xterm.c
Date: Thu, 11 Jun 2009 01:24:21 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kenichi Handa <handa>   09/06/11 01:24:20

Modified files:
        src            : xterm.c 

Log message:
        (x_compute_glyph_string_overhangs): Handle the automatic
        composition case.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xterm.c?cvsroot=emacs&r1=1.1026&r2=1.1027

Patches:
Index: xterm.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xterm.c,v
retrieving revision 1.1026
retrieving revision 1.1027
diff -u -b -r1.1026 -r1.1027
--- xterm.c     19 May 2009 00:26:46 -0000      1.1026
+++ xterm.c     11 Jun 2009 01:24:20 -0000      1.1027
@@ -1194,16 +1194,27 @@
      struct glyph_string *s;
 {
   if (s->cmp == NULL
-      && s->first_glyph->type == CHAR_GLYPH)
+      && (s->first_glyph->type == CHAR_GLYPH
+         || s->first_glyph->type == COMPOSITE_GLYPH))
+    {
+      struct font_metrics metrics;
+
+      if (s->first_glyph->type == CHAR_GLYPH)
     {
       unsigned *code = alloca (sizeof (unsigned) * s->nchars);
       struct font *font = s->font;
-      struct font_metrics metrics;
       int i;
 
       for (i = 0; i < s->nchars; i++)
        code[i] = (s->char2b[i].byte1 << 8) | s->char2b[i].byte2;
       font->driver->text_extents (font, code, s->nchars, &metrics);
+       }
+      else
+       {
+         Lisp_Object gstring = composition_gstring_from_id (s->cmp_id);
+
+         composition_gstring_width (gstring, s->cmp_from, s->cmp_to, &metrics);
+       }
       s->right_overhang = (metrics.rbearing > metrics.width
                           ? metrics.rbearing - metrics.width : 0);
       s->left_overhang = metrics.lbearing < 0 ? - metrics.lbearing : 0;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]