Mostafa Vahedi wrote:
I know many may disagree with this suggestion but suggestion does not hurt.
1. Use the well-maintained library FriBiDi
(http://fribidi.freedesktop.org/wiki/) for our BiDi algorithm (in my opinion
Bidi.cpp has [somehow] reinvented FriBiDi library)
I think you're right about the fact that Bidi.cpp is a reimplementation
of the bidi algorithm --- it was probably written before FriBiDi
existed, or at least before it was widely accepted.
I'm open to this suggestion --- after 1.5.0 (or even after 1.5.1, once
everything else regarding Bidi is more or less stable). My main concern
is just not to break anything, and there is something to be said for "if
it's not broken, don't fix it". But I do see the sense in using a widely
accepted library.
2. For the problem of "PUNCTUATION + Mixed RTL & LTR", according to the
Unicode standard since we have the LANGUAGE meta data we can augment the TEXT with UNICODE
DIRECTIONAL characters.
Yes, if we do use the bidi algorithm, then we *must* also use it's
capabilities for override (I'm only very superficially familiar with the
algorithm, but I'm pretty sure it does provide an "override" mechanism
--- that's the UNICODE DIRECTIONAL characters you mentioned, right?).
And yes, since we do already have the language information, that should
determine where the override is used.
There's also the issue that I'm calling "GUI-backend Bidi mismatch",
(which is actually what Stefan asked about last night) which I'm not
sure how to deal with. It may only be the same issue as the overrides:
just a question of whether or not one should be allowed to override the
direction of whitespace or not...
Dov, what do you think?
So yes, I'm definitely open to this suggestion, but after things are
stable, and provided that I'll still be able to do the same things I can
do today.
Stefan is also correct --- I'm not really sure how much of a difference
this will make. The problems we have are not with the implementation of
the bidi algorithm itself, but with how the rest of the code interacts
with this. So using FriBiDi really won't help too much in this regard...
Mostafa