From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Display of undisplayable characters: \U01F3A8 instead of diamond Date: Sun, 28 Aug 2022 13:29:13 +0300 Message-ID: <83v8qcy83q.fsf@gnu.org> References: <834jxxymbp.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5788"; mail-complaints-to="usenet@ciao.gmane.io" Cc: rms@gnu.org, emacs-devel@gnu.org To: Alan Mackenzie Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Aug 28 12:30:09 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oSFYO-0001Id-8F for ged-emacs-devel@m.gmane-mx.org; Sun, 28 Aug 2022 12:30:08 +0200 Original-Received: from localhost ([::1]:44700 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oSFYN-0001So-8A for ged-emacs-devel@m.gmane-mx.org; Sun, 28 Aug 2022 06:30:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oSFXF-0000JH-Nd for emacs-devel@gnu.org; Sun, 28 Aug 2022 06:28:57 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:32842) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oSFXE-0000t3-Uo; Sun, 28 Aug 2022 06:28:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WBfyFQXuQVPMzb9KNRmK8CD3LpLhAEWEYW0UkMZkROU=; b=hDU9qrr3/r4k ++ta03QrRQrlDKqM5oQ88aK/4T9sP3iKSZiuTYH4WeZsUYe0MY7S5TUoEEgQw0WeNhxiSZ6bfUFYC lSbw+ngVNZkWIFWdTqBIEmvFsgx3+9z9UWmzAVuQNsb1DcLOtMs6yWWD92dIQcG3VQo82B/TlvrWx RX6eded/4llxB1kXPGXHgkngikxhbs/I6f8B4UuaHH9Mgnv0DeIdtKXwsMGkg45L5tdt/NvE1pfwK 7C1gbdGZVJfk0r5dGuyJVsrKb1yj9K89DC0fC4bB80E6zMxOYyzMB+MCZm/IPkA0GwsIKoMzbMtEd EJf8DOR4e+OU7MPUck5GVQ==; Original-Received: from [87.69.77.57] (port=1424 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oSFXE-0004J2-0Q; Sun, 28 Aug 2022 06:28:56 -0400 In-Reply-To: (message from Alan Mackenzie on Sun, 28 Aug 2022 10:07:00 +0000) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:294230 Archived-At: > Date: Sun, 28 Aug 2022 10:07:00 +0000 > Cc: rms@gnu.org, emacs-devel@gnu.org > From: Alan Mackenzie > > > > 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)))