GNU bug report logs - #8703
truncated unicode glyphs in X11

Previous Next

Package: emacs;

Reported by: Bertram Felgenhauer <bertram.felgenhauer <at> googlemail.com>

Date: Thu, 19 May 2011 20:23:02 UTC

Severity: normal

Fixed in version 23.4

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #17 received at 8703 <at> debbugs.gnu.org (full text, mbox):

From: Kenichi Handa <handa <at> m17n.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bertram.felgenhauer <at> googlemail.com, 8703 <at> debbugs.gnu.org
Subject: Re: bug#8703: truncated unicode glyphs in X11
Date: Wed, 25 May 2011 12:57:16 +0900
In article <83tycpfz78.fsf <at> gnu.org>, Eli Zaretskii <eliz <at> gnu.org> writes:

> > Date: Thu, 19 May 2011 22:17:02 +0200
> > From: Bertram Felgenhauer <bertram.felgenhauer <at> googlemail.com>
> > 
> > I have tracked down the regression using git-bisect, and found it
> > was introduced by
> > 
> > http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=5d747e944fd5a15bb36f865efc214024803c5fcf

> For those using bzr, this is revision 100011 on the emacs-23 branch or
> revision 99634.13.1 on the trunk.  Perhaps Handa-san could take a look
> at this, as he made that change.

Thank you for the report.  I've just installed a fix
(attached) to emacs-23 branch.  Could you please try it?

---
Kenichi Handa
handa <at> m17n.org

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2011-05-09 09:59:23 +0000
+++ src/xdisp.c	2011-05-25 01:18:58 +0000
@@ -5922,9 +5922,21 @@
 	  int pos = (it->s ? -1
 		     : STRINGP (it->string) ? IT_STRING_CHARPOS (*it)
 		     : IT_CHARPOS (*it));
+	  int c;
+
+	  if (it->what == IT_CHARACTER)
+	    c = it->char_to_display;
+	  else
+	    {
+	      struct composition *cmp = composition_table[it->cmp_it.id];
+	      int i;
 
-	  it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display, pos,
-				       it->string);
+	      c = ' ';
+	      for (i = 0; i < cmp->glyph_len; i++)
+		if ((c = COMPOSITION_GLYPH (cmp, i)) != '\t')
+		  break;
+	    }
+	  it->face_id = FACE_FOR_CHAR (it->f, face, c, pos, it->string);
 	}
     }
 #endif





This bug report was last modified 14 years and 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.