Summer of code and bidi
m.b.lankhorst at gmail.com
Wed Mar 19 16:31:21 CDT 2008
2008/3/19, Shachar Shemesh <shachar at shemesh.biz>:
> 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