[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Display of undisplayable characters: \U01F3A8 instead of diamond
From: |
Eli Zaretskii |
Subject: |
Re: Display of undisplayable characters: \U01F3A8 instead of diamond |
Date: |
Sun, 28 Aug 2022 13:29:13 +0300 |
> Date: Sun, 28 Aug 2022 10:07:00 +0000
> Cc: rms@gnu.org, emacs-devel@gnu.org
> From: Alan Mackenzie <acm@muc.de>
>
> > > Can we modify info.el so as to display those characters
> > > as the curresponding ASCII punctuation characters?
>
> > It already does, where an ASCII equivalent exists. See
> > info-symbols-and-replacements. Alan didn't report any details, so I
> > don't have any idea why it doesn't work for him (if indeed it doesn't).
>
> I didn't actually know about that feature, which you added in October
> 2019 (commit 8dd18bbb6f3c09a4988cf2e06378aa24b098fb85). It fails on my
> Linux console because of a guarding clause in the `unless' which
> surrounds the initialisation of buffer-display-table:
>
> (unless (or (display-multi-font-p)
> (coding-system-equal <====================
> (coding-system-base (terminal-coding-system)) <==========
> 'utf-8)) <====================
> (dolist (elt info-symbols-and-replacements)
> (let ((ch (car elt))
> (repl (cdr elt)))
> (or (char-displayable-p ch)
> (aset (or buffer-display-table
> (setq buffer-display-table (make-display-table)))
> ch (vconcat (mapcar (lambda (c)
> (make-glyph-code c 'homoglyph))
> repl)))))))
>
> On my setup that (coding-system-equal .... 'utf-8) returns t, so
> buffer-display-table never gets initialised.
>
> Why is that coding-system-equal form there?
It was written based on the assumption that a terminal that supports
the UTF-8 encoding can also display the original characters reasonably
enough. Are you saying that the Linux console lies about that, and
those characters are displayed as hex codes? If so, please try the
patch below.
diff --git a/lisp/info.el b/lisp/info.el
index 739116c..5655e3f 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -4446,9 +4446,12 @@ Info-mode
(setq buffer-read-only t)
(setq Info-tag-table-marker (make-marker))
(unless (or (display-multi-font-p)
- (coding-system-equal
- (coding-system-base (terminal-coding-system))
- 'utf-8))
+ (and (coding-system-equal
+ (coding-system-base (terminal-coding-system))
+ 'utf-8)
+ ;; The Linux console has limited character
+ ;; repertoire even when its encoding is UTF-8.
+ (not (equal (tty-type) "linux"))))
(dolist (elt info-symbols-and-replacements)
(let ((ch (car elt))
(repl (cdr elt)))
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, (continued)
Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Richard Stallman, 2022/08/28
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Eli Zaretskii, 2022/08/28
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Alan Mackenzie, 2022/08/28
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond,
Eli Zaretskii <=
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Alan Mackenzie, 2022/08/28
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Eli Zaretskii, 2022/08/28
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Alan Mackenzie, 2022/08/28
Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Akib Azmain Turja, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Andreas Schwab, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Eli Zaretskii, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Emanuel Berg, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Eli Zaretskii, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Emanuel Berg, 2022/08/27
- Re: Display of undisplayable characters: \U01F3A8 instead of diamond, Emanuel Berg, 2022/08/27