[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#3452: 23.0.94; display
From: |
Kenichi Handa |
Subject: |
bug#3452: 23.0.94; display |
Date: |
Mon, 08 Jun 2009 20:57:06 +0900 |
In article <E1MDaTK-0001yD-LX@fencepost.gnu.org>, Eli Zaretskii <eliz@gnu.org>
writes:
> > From: Kenichi Handa <handa@m17n.org>
> > CC: 3452@emacsbugs.donarmstrong.com, cyd@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@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))
- bug#3452: 23.0.94; display, (continued)
- bug#3452: 23.0.94; display, Kenichi Handa, 2009/06/07
- bug#3452: 23.0.94; display, Eli Zaretskii, 2009/06/08
- bug#3452: 23.0.94; display, Kenichi Handa, 2009/06/08
- bug#3452: 23.0.94; display, Eli Zaretskii, 2009/06/08
- bug#3452: 23.0.94; display,
Kenichi Handa <=
- bug#3452: 23.0.94; display, Chong Yidong, 2009/06/08
- bug#3452: 23.0.94; display, Chong Yidong, 2009/06/09
- bug#3452: 23.0.94; display, Kenichi Handa, 2009/06/09