]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/character.c (char_width): Support glyphs with faces. (Bug#32276)
authorEli Zaretskii <eliz@gnu.org>
Fri, 27 Jul 2018 09:33:29 +0000 (12:33 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 27 Jul 2018 09:33:29 +0000 (12:33 +0300)
src/character.c

index deac1fa22ec5c6c34c95e096b5eef29cab8fdaa7..48268e049477aaa32dc3ba678468fa153310eddf 100644 (file)
@@ -34,6 +34,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "lisp.h"
 #include "character.h"
 #include "buffer.h"
+#include "dispextern.h"
 #include "composite.h"
 #include "disptab.h"
 
@@ -288,13 +289,15 @@ char_width (int c, struct Lisp_Char_Table *dp)
       if (VECTORP (disp))
        for (i = 0, width = 0; i < ASIZE (disp); i++)
          {
+           int c;
            ch = AREF (disp, i);
-           if (CHARACTERP (ch))
-             {
-               int w = CHARACTER_WIDTH (XFASTINT (ch));
-               if (INT_ADD_WRAPV (width, w, &width))
-                 string_overflow ();
-             }
+           if (GLYPH_CODE_P (ch))
+             c = GLYPH_CODE_CHAR (ch);
+           else if (CHARACTERP (ch))
+             c = XFASTINT (ch);
+           int w = CHARACTER_WIDTH (c);
+           if (INT_ADD_WRAPV (width, w, &width))
+             string_overflow ();
          }
     }
   return width;