Subject: Re: bug#13691: 24.3.50; Problem with glyphs in unibyte buffers

From: Stefan Kangas <[email-masked]>
Date: Mon, 31 Aug 2020 02:32:32 +0000

Hi Eduardo,

You sent the below description to the Emacs bug list 7 years ago.

The email you sent is quite long, and I'm not sure what exactly the
issue is, or how to try to reproduce it.

Can you reproduce the issue on a recent version of Emacs, such as the
recently released version 27.1?

If yes, could you please provide a minimal step-by-step recipe for
reproducing it, starting from "emacs -Q"?

If I don't hear back from you within a couple of weeks, I'll just
close this bug as unreproducible.

Thanks in advance.

Best regards,
Stefan Kangas

Eduardo Ochs <[email-masked]> writes:

> Hi Andreas,
>
> On Tue, Feb 12, 2013 at 7:02 AM, Andreas Schwab <[email-masked]> wrote:
>>
>> Unibyte characters are in the eight-bit charset, so you need to set the
>> display of the corresponding character in that charset, eg. (make-char
>> 'eight-bit 171).
>
> Thanks, that worked!
>
> Now for something slightly trickier... =|
>
> Let's start by using several simple, low-level functions, one for
> each range... a smarter function with `cond's can be left for
> later. The code below makes the green guillemets work both in
> unibyte and multibyte buffers,
>
>   (defun eepitch-set-glyph (pos &optional char face)
>     (aset standard-display-table pos
> 	  (if char (vector (make-glyph-code char face)))))
>
>   (defun eepitch-set-glyph-8bit (pos &optional char face)
>     (aset standard-display-table (make-char 'eight-bit pos)
> 	  (if char (vector (make-glyph-code char face)))))
>
>   (if (not standard-display-table)
>       (setq standard-display-table (make-display-table))
>     )
>
>   (defface eev-glyph-face-green '((t :foreground "green")) "")
>   (eepitch-set-glyph      171 171 'eev-glyph-face-green)
>   (eepitch-set-glyph-8bit 171 171 'eev-glyph-face-green)
>   (eepitch-set-glyph      187 187 'eev-glyph-face-green)
>   (eepitch-set-glyph-8bit 187 187 'eev-glyph-face-green)
>
> but now suppose that we want the char 191 to be displayed as a
> blue nabla (unicode: 8711). Running
>
>   (defface eev-glyph-face-math  '((t :foreground "RoyalBlue2"
> 				     :background "gray20")) "")
>   (eepitch-set-glyph      191 8711 'eev-glyph-face-math)
>   (eepitch-set-glyph-8bit 191 8711 'eev-glyph-face-math)
>
> _almost_ does the job, but look at the new screenshot - it seems
> that the `char' argument in `eepitch-set-glyph-8bit' needs some
> translation too... is that right? Which translation?
>
>   Cheers, and thanks in advance again...
>     Eduardo Ochs
>     [email-masked]
>     http://angg.twu.net/#eev