[Fribidi-discuss] Re: BiDi WINE status and fribidi
Behdad Esfahbod
behdad at bamdad.org
Fri Aug 23 17:18:12 EST 2002
On Fri, 23 Aug 2002, Dov Grobgeld wrote:
> On Fri, Aug 23, 2002 at 07:40:43AM +0300, Shachar Shemesh wrote:
> > Omer Zak wrote:
> > [stuff deleted]
> >
> > Quoting your relevant web page:
> >
> >
> > Is this a fork?
> >
> > Unfortunately, yes - for the time being. It is my hope that Dov Grobgeld
> > will incorporate the changes made in this version into the next
> > mainstream version of his FriBidi package.
>
> This quote is really old, before FriBidi was put on SourceForge where
> it is now mainly developed by Behdad. I understand that Behdad accepted
> Omer's changes to his full satisfaction. (Which is more that I did at
> the time... 8-/)
I have worked with Omer Zak and Tomas Frydrych, and have
included/implemented all their needs. I hope I do with Shachar
too.
> > >There are some Unicode code points, which cannot be represented in 16
> > >bits, but I believe that WINE can live without supporting those code
> > >points (which would otherwise require surrogates in UTF-16).
> > >
> > That, I'm afraid, is where you are wrong. These codepages are crucial
> > for far east support, and Wine in general cannot live without them. What
> > I am willing to do is add surrogate support to fribidi, however. This
> > shouldn't pose TOO much of a problem, but it means #ifdefs in the code.
>
> Do you mean UTF-16 or UCS2? Internally FriBidi uses UCS4. In
> order to use any other charset you have to convert it before you pass
> it to fribidi. So I don't really understand the problem.
Windows API, ans so WINE's uses UTF-16. And WINE people reject
to use a 32bit bidi library and convert back and forth all the
time, so they need UTF-16 support internally.
> > It requires an override. The way Windows do it is:
> > A. Badly. I couldn't get it to work at all at first, and then work in a
> > most bizar way.
> > B. Providing an array the size of the string specifying overrides (i.e.
> > - the third character is a Hebrew character, no matter what the Unicode
> > tables say). As you need such an array anyways, and as even the Windows
> > function fills this array in after reordering with the missing data, you
> > can use the user supplied array for your own processing. It is this
> > requirement that should be relatively easy to support (but will require
> > interface changes)-:
>
> The first thing that is done by fribidi when passed a string is to
> lookup the character classification. This information is then stored
> in a run length encoded list. It would be quite simple to split out
> this calculation into a separate function. It would then be possible
> to provide an additional function that receives an array of override
> classifications.
This is one the solutions to the problem. I described the other
in a previous mail.
> Feel free to try to do it myself, as the time that I
> can spend on it is close to zero. But perhaps Behdad has some spare
> time. ;-)
Unfortunately this is wrong this time :(. My fribidi TODO list
has grown too much, I should spent a week or two implementing
some of them. Perhaps when I'm back from India. Lets have a
look at it:
Do some profiling and test coverage.
Implement a hash to override mirroring and character types.
Used derived Unicode data if available.
Implement UTF-16 support (handle surrogates) to create
libfribidi16.
Use a cycling iconv implementaion in library if --enable-iconv.
Remove wcwidth stuff if --disable-wcwidth
An --enable-compact option as a shortcut, to get just bidi
engine, and
also 16 bit string indexes.
Arabic Joining support.
Desing new interface (version 3).
Check for defined fribidi types, to be able to override them in
fribdi_config.h
Add swig support (Perl, Python, and TCL frontends).
Write PHP frontend.
Add c2man support, to finally create a man page.
And Yes, I will implement all of these before 2003 :D.
> Regards,
> Dov
PS. to some IGLUers, I just unsubscribed from linux-il, to
lighten my mailbox load, I will be back again.
--
Behdad Esfahbod 2 Shahrivar 1381, 2002 Aug 24
http://behdad.org/ [Finger for Geek Code]
#define is_persian_leap(y) ((((y)-474)%2820+2820)%2820*31%128<31)
More information about the FriBidi
mailing list