emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compositions and bidi display (was: bug#5977: 24.0.50; Lao HELLO is


From: Kenichi Handa
Subject: Re: Compositions and bidi display (was: bug#5977: 24.0.50; Lao HELLO is incorrectly displayed)
Date: Mon, 26 Apr 2010 11:09:30 +0900

In article <address@hidden>, Eli Zaretskii <address@hidden> writes:

> > I've just build the trunk code on GNU/Linus, and found that all
> > characters displayed by composition are incorrect.

> Only when bidi-display-reordering is turned on (etc/HELLO does that
> automatically).

> > Here's a brief explanation about control flow.

> Thanks, that part was quite clear from the code.  I now fixed display
> of composed characters from L2R scripts when bidi-display-reordering
> is set to non-nil.

I've just 


> Where I really need help is in getting compositions to work when text
> is reordered.  Is it true that composition_reseat_it and its
> subroutines need to see the to-be-composed characters in strict
> logical order, i.e. left to right?  Or can they also work if they see
> the characters to be composed in the reverse order?

> Also, what does this condition (in next_element_from_composition)
> check?

>       if (it->c < 0)
>       {
>         IT_CHARPOS (*it) += it->cmp_it.nchars;
>         IT_BYTEPOS (*it) += it->cmp_it.nbytes;

> If the meaning of the test is that there's no composition at the
> iterator's position, then why do we skip some of the buffer text under
> this condition?

I vaguely remember that this is to avoid crash by a bug of a
composition function.

A composition function is written in Lisp and can be tested
interactively without restarting Emacs each time.  If it has
a bug while testing, it may produce no glyphs for a chunk of
text.  In such a case, composition_update_it returns -1 and
it->c is set to that return value.

---
Kenichi Handa
address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]