GNU bug report logs -
#3452
23.0.94; display
Previous Next
Reported by: rms <at> gnu.org
Date: Wed, 3 Jun 2009 03:00:03 UTC
Severity: serious
Done: Chong Yidong <cyd <at> stupidchicken.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
In article <E1MDaTK-0001yD-LX <at> fencepost.gnu.org>, Eli Zaretskii <eliz <at> gnu.org> writes:
> > From: Kenichi Handa <handa <at> m17n.org>
> > CC: 3452 <at> emacsbugs.donarmstrong.com, cyd <at> stupidchicken.com
> > Date: Mon, 08 Jun 2009 17:10:27 +0900
> >
> > Not for U+202D, but such combining characters as U+0300 are
> > treated correctly by xterm (not by gnome-terminal).
> >
> > > > To conclude, I think there's not that much we can do for
> > > > this situation. I think the current behaviour of
> > > > gnome-terminal (displaying standalone U+202D as a space of
> > > > width 1) is a bug.
> >
> > > If other terminals behave correctly, I would agree. But if not,
> > > perhaps we need to work around this, if possible. For example, we
> > > could have an entry in display tables for these characters.
> >
> > It seems xterm, gnome-terminal, GNU/Linux console, and
> > mlterm treat U+202D as spacing character, but, Konsole
> > (KDE's terminal) and kterm treats it as non-spacing
> > character.
> Wasn't gnome-terminal the one that started this bug report?
I don't know exactly. RMS's bug report just says "a 37-line
Linux terminal".
> And you even tell above that gnome-terminal does NOT treat
> U+202D correctly. So which terminals do?
> If xterm, the Linux console and mlterm do work, then maybe your
> suggestion to do nothing is good enough.
??? I wrote "Konsole and kterm" treats U+202D as non-spacing
character. I think that is the correct way, and the others
(gnome-terminal, xterm, and Linux console) are wrong.
> Btw, what do you think about my idea to add a display table entry for
> these characters?
A display table is used both for terminal and window system,
but, on a window system, some font may have special glyphs
for those characters. If we setup a display table for
U+202D, Emacs can't display U+202D by such a glyph on window
system.
So, if we implement some work-around for such terminal as
gnome-terminal, I think it is better to modify
compose-gstring-for-terminal so that it replaces U+202D
(actually all zero-width characters of Unicode category Cf)
with a single SPACE instead of prepending a SPACE. Please
try the attached patch.
---
Kenichi Handa
handa <at> m17n.org
--- composite.el.~1.46.~ 2009-04-20 10:11:33.000000000 +0900
+++ composite.el 2009-06-08 20:45:50.000000000 +0900
@@ -681,7 +681,14 @@
(lglyph-set-from-to glyph i i)
(setq i (1+ i))))
(if (= (lglyph-width glyph) 0)
- (progn
+ (if (eq (get-char-code-property (lglyph-char glyph)
+ 'general-category)
+ 'Cf)
+ (progn
+ ;; Compose by replacing with a space.
+ (lglyph-set-char glyph 32)
+ (lglyph-set-width glyph 1)
+ (setq i (1+ i)))
;; Compose by prepending a space.
(setq gstring (lgstring-insert-glyph gstring i
(lglyph-copy glyph))
This bug report was last modified 15 years and 153 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.