Summer of code and bidi

Maarten Lankhorst m.b.lankhorst at
Wed Mar 19 16:31:21 CDT 2008


2008/3/19, Shachar Shemesh <shachar at>:
> Maarten Lankhorst wrote:
>  > Hi Shachar,
>  >
>  > I've removed the bi-directional entry from summer of code. I don't
>  > think it is a good project because it involves a lot of changes in
>  > pretty much all wine user controls.
> Actually, I don't think any touching of the actual user controls is
>  involved at all. I think the first bullet (which can be all we want for
>  this year) only really involves the ExtTextOut function, as well as the
>  Uniscribe functions. No user controls are touched at all.
I already did this work, exttextout relies on the reference bidi
implementation now. Took about 3 days to adapt the reference
implementation to wine. (dlls/gdi32/bidi.c)

> >  The only way to do this would be
>  > by using the pango library to do the laying out of text,
> I was about to say that the code is practically already there, but I
>  really think you should know that, being how it was you who put it there
>  :-). I really think that if we came this far, we had better split the
>  Unicode algorithm into the components it requires and put it into
>  Uniscribe. I don't think we need any reliance on external libraries
>  (pango, fribidi, or any other) for that.
There are all kinds of rules that tell how it work, a real rendering
engine is complicated to write, and since there are already a few
working, tried and tested engines out there we don't want to write our

> >  but I'm not
>  > even sure whether that is a good summer of code idea, since it would
>  > need someone already very experienced with the plumbing of wine.
>  >
> It would require someone to learn the BiDi algorithm and the Uniscribe
>  interface, but the reason I offered to mentor it was precisely so that
>  the student not have to follow the entire Wine structure. I really don't
>  believe this task is heavier than some of the Direct3D stuff on that page.
As I said, bidi is already implemented. A real uniscribe algorythm is
something we want to depend on as external library, because a proper
engine would be huge and impossible to maintain/debug.


More information about the wine-devel mailing list