all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Kenichi Handa <handa@m17n.org>
To: Kenichi Handa <handa@m17n.org>
Cc: emacs-bidi@gnu.org, emacs-devel@gnu.org
Subject: Re: Treatment of LRE,RLE,LRO,RLO,PDF,LRM,RLM
Date: Mon, 01 Nov 2010 17:15:13 +0900	[thread overview]
Message-ID: <tl7vd4hv4ry.fsf@m17n.org> (raw)
In-Reply-To: <tl7vd77z591.fsf@m17n.org> (message from Kenichi Handa on Thu, 19 Aug 2010 11:49:14 +0900)

In article <tl7vd77z591.fsf@m17n.org>, Kenichi Handa <handa@m17n.org> writes:

> I'd like to extend the elements of a display table.
> Currently only a glyph vector or nil is allowed.  It seems
> good to extend it so that it can completely control the
> displaying of a character (like by face and display text
> properties).

> At least, for (2), I want to specify a space width (relative
> or absolute), and for (4) I want to specify a special form
> (list?) containing a mnemonic label.

I've just committed a basic infrastructure for displaying
non-graphic and no-font characters.  For that, instead of
extending the current display table, I implemented a new
char table glyphless-char-display.

------------------------------------------------------------
Char-table to control displaying of glyphless characters.
Each element, if non-nil, is an ASCII acronym string (displayed in a box)
or one of these symbols:
  hexa-code: display with hexadecimal character code in a box
  empty-box: display with an empty box
  thin-space: display with 1-pixel width space
  zero-width: don't display

It has one extra slot to control the display of a character for which
no font is found.  The value of the slot is `hexa-code' or `empty-box'.
The default is `empty-box'.
------------------------------------------------------------

It is easy to merge such functionality to a display table
later if we decide to do so.

But, there left these works.

(1) As it is not convenient for a user to specify each
    element of glyphless-char-display, I made variables
    char-acronym-table and glyphless-char-control.  The
    former is a simple char-table that contains acronym
    strings.  The latter is as this:

------------------------------------------------------------
glyphless-char-control is a variable defined in `characters.el'.
Its value is 
((format-control . thin-space)
 (no-font . hexa-code))

Documentation:
List of directives to control displaying of glyphless characters.

Each element has the form (TARGET . METHOD), where TARGET is a
symbol specifying the target character group to control, and
METHOD is a symbol specifying the method of displaying them.

TARGET must be one of these symbols:
  `c0-control': U+0000..U+001F.
  `c1-control': U+0080..U+009F.
  `format-control': Characters of Unicode General Category `Cf'.
     Ex: U+200C (ZWNJ), U+200E (LRM)), but don't include characters
     that have graphic image such as U+00AD (SHY).
  `no-font': characters for which no suitable font is found.

METHOD must be one of these symbols:
  `zero-width': don't display.
  `thin-space': display a thin space (1-pixel width).
  `empty-box': display an empty box.
  `acronym': display an acronum string in a box.
  `hexa-code': display a hexadecimal character code in a box.

Just setting this variable does not take effect.  Call the
function `update-glyphless-char-display' (which see) after
setting this variable.
------------------------------------------------------------

When acronum is specified, the function
update-glyphless-char-display sets elements in
glyphless-char-display to acronyms stored in
char-acronym-table.

Actually, glyphless-char-control should be a customizable
variable with proper set: function.  But, I don't know how
to write the correct 'defcustom' form.  Could someone DTRT?

(2) For Windows port:

I wrote x_draw_glyphless_glyph_string_foreground (in
w32term.c) by referring to x_draw_glyph_string_foreground in
the same file.  But, it doesn't draw acronym nor hexa-code.
I couldn't figure out what is wrong.  Please someone who
knows Windows code fix it.

(3) For mac port:

As I have no idea how to write a code for mac, the 'case
GLYPHLESS_GLYPH:' part in ns_draw_glyph_string (in nsterm.m)
is not finished.  Please fill in the correct code by
referring to x_draw_glyph_string_foreground in xterm.c.

---
Kenichi Handa
handa@m17n.org

  reply	other threads:[~2010-11-01  8:15 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <tl7hbis1xop.fsf@m17n.org>
     [not found] ` <AANLkTinrGPzGquxPmfigvZLzGbids39yU942sfwKGMYk@mail.gmail.com>
2010-08-19  2:49   ` [emacs-bidi] Treatment of LRE,RLE,LRO,RLO,PDF,LRM,RLM Kenichi Handa
2010-11-01  8:15     ` Kenichi Handa [this message]
2010-11-01  9:57       ` Eli Zaretskii
2010-11-01 11:16         ` Kenichi Handa
2010-11-13 13:51           ` [emacs-bidi] " Eli Zaretskii
2010-11-17  5:58             ` Kenichi Handa
2010-11-17  7:14               ` Kenichi Handa
2010-11-17 12:21               ` Eli Zaretskii
2010-11-17 19:20                 ` Eli Zaretskii
2010-11-13 13:44       ` Eli Zaretskii
2010-11-13 14:07         ` Eli Zaretskii
2010-11-17  3:57         ` Kenichi Handa
2010-11-17 12:26           ` Eli Zaretskii
2010-11-17 12:55             ` Andreas Schwab
2010-11-17 13:24               ` Stefan Monnier
2010-11-18 20:07                 ` Eli Zaretskii
2010-11-17 17:54               ` Eli Zaretskii
2010-11-17 23:59                 ` Stefan Monnier
2010-11-18 20:04                   ` Eli Zaretskii
2010-11-18 22:15                     ` Stefan Monnier
2010-11-19 11:31                       ` Eli Zaretskii
2010-11-20 15:06                       ` Eli Zaretskii
2010-11-19  9:53                     ` Andreas Schwab
2010-11-19 11:31                       ` Eli Zaretskii
2010-11-19 11:47                         ` Andreas Schwab
2010-11-17 19:39             ` Eli Zaretskii
2010-11-26 12:20               ` Eli Zaretskii
2010-11-26 12:29               ` Kenichi Handa
2010-11-27  8:42                 ` Eli Zaretskii
2010-11-29  6:35                   ` Kenichi Handa
2010-11-29 18:06                     ` Stefan Monnier
2010-11-20 14:38           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tl7vd4hv4ry.fsf@m17n.org \
    --to=handa@m17n.org \
    --cc=emacs-bidi@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.