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

Re: MiniBidi Makeover!

--- Ahmad Khalifa <ahmad at khalifa dot ws> wrote:
> As you all know MiniBidi is scheduled for an upgrade which should
> probably start in 2 days. So if any of you has any suggestions or ideas
> concerning MiniBidi, now is the time to say them.

This would be more Behdad's arena as he is an expert in this field and
I'm sure his 5-10 minutes would go a long way.

> I already have a list of issues that i need the general consensus on, so
> please vote or give you opinion on them. everybody please participate.
> 1- Should MiniBidi handle chars beyond 0xFFFF ?
>     Putty and CUPS and a lot of programs only handle 2 byte characters,
>     so this useless there. This is probably faster using a 2byte datatype
>     in MiniBidi, and less memory consumption.
> 2- Should MiniBidi become a Library ?
>     i.e built as external libraries

Both, a lib and something that is embedded-able.

> 3- Should Shaping be done in a separate file ?
>     to make it easier for developers in need of only shaping code to
>     just grab 1 file. this probably wont be needed after FriBidi gets
>     shaping done.

It would be nice to have clean/clear delineation in case someone wants
to study the matter.
> 4- Mirroring.
>     How to store the mirrored chars and apply mirroring. for an example
>     see the function doMirror() in minibidi.c

Again as a study issue - sure why not (ifdef it out if need be).
> 5- Any suggestions about Optimizations ?
>     Anything to make it run faster or in less RAM.
> Other than that here is what I already have planned besides total
> compliance.
> - Implement rule L3.
> - Improve Explicit Marks handling.
> - Ask nadim or others for scripts to generate compressed type table and
>    mirroring function.

Fire away privately I guess - I doubt anyone wants to hear your script
requirements as they (all scripts) tend to be mundane.

> - Make an external table of conversions from 0x06XX to presentation
>    forms, and store it with source.
> - Make a Benchmark application to test and compare random strings.
> - Make GetParagraphLevel() utility function.
> - Make GetType() utility function.
> - Use unsigned short as the data type.
> - Change interface from doBidi() and doShape() to GetVisualOrder() with
>    a flag to indicate wether to shape.
> - Add and use extension datatypes. to allow MiniBidi to work on any
>    defined datatype by just changing the declaration. (very usefull in
>    CUPS and other apps with their own complex datatype)
> - Optimize speed.

Make sure the code is well-written and well-documented.  As noted it would
be ideal to have this be a simplistic study case for those just learning.


 - Nadim

Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.