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

From: Eduardo Ochs <[email-masked]>
Date: Tue, 12 Feb 2013 20:13:05 -0200

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