unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Kenichi Handa <handa@m17n.org>
To: David Kastrup <dak@gnu.org>
Cc: lekktu@gmail.com, rms@gnu.org, emacs-devel@gnu.org
Subject: Re: Error during redisplay
Date: Wed, 27 Feb 2008 17:04:14 +0900	[thread overview]
Message-ID: <E1JUHGw-0004e8-ME@etlken.m17n.org> (raw)
In-Reply-To: <85ir0aubo1.fsf@lola.goethe.zz> (message from David Kastrup on Wed, 27 Feb 2008 07:59:58 +0100)

In article <85ir0aubo1.fsf@lola.goethe.zz>, David Kastrup <dak@gnu.org> writes:

> Kenichi Handa <handa@m17n.org> writes:
> > The current design requires to add `composition' property to a string
> > to properly display the string if it contains, for instance, some of
> > Indic characters, and to add `auto-composed' property to avoid the
> > repeated generation of `composition' property.
> >
>>> If they SHOULD have these properties, probably we should make sure they have
>>> these properties from the start, or from an early point in building Emacs.
> >
> > That's impossible.  How to compose them depends on which
> > font to use.

> Since the same string can be displayed with different fonts
> simultaneously, this would look like a fault in the design.  The
> composition property/whatever apparently needs to be associated with the
> actual display, not just the string.

In such a case, the composition property is generated each
time.  The same situation happens when you display the same
portion of a buffer in two frames with different fonts.

It may result in a little bit slower redisplay.  If such a
situation happens often and the slowness is so painful,
perhaps the composition property must be an alist of fonts
vs the current value.  It's not that difficult to implement.

By the way, I think the slowness is mainly because the
property generation is done by Lisp code through the
function in composition-function-table and that involves
generating many Lisp objects.  With unicode merge, the
underling actual task of deciding glyphs and positions is
mainly done by C functions of font-backends, and that should
not be that slow.

So, another way is to re-design the current redisplay engine
to generate a composition glyph every time just by calling C
functions.  I think it's an interesting experiment.

---
Kenichi Handa
handa@ni.aist.go.jp




  reply	other threads:[~2008-02-27  8:04 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-24  2:56 Error during redisplay Juanma Barranquero
2008-02-26  1:48 ` Juanma Barranquero
2008-02-26  4:18   ` Kenichi Handa
2008-02-26  4:55     ` Stefan Monnier
2008-02-26 23:46     ` Richard Stallman
2008-02-27  1:28       ` Kenichi Handa
2008-02-27  6:59         ` David Kastrup
2008-02-27  8:04           ` Kenichi Handa [this message]
2008-02-27  8:34             ` David Kastrup
2008-02-27 16:08               ` Richard Stallman
2008-02-27 16:06             ` Stefan Monnier
2008-02-28  6:36               ` Kenichi Handa
2008-02-28 16:44                 ` Stefan Monnier
2008-02-27 16:07         ` Richard Stallman
2008-02-27  3:15 ` Bob Rogers

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=E1JUHGw-0004e8-ME@etlken.m17n.org \
    --to=handa@m17n.org \
    --cc=dak@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=lekktu@gmail.com \
    --cc=rms@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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).