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

MiniBidi Makeover!





Salam,

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.

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

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.

4- Mirroring.
   How to store the mirrored chars and apply mirroring. for an example
   see the function doMirror() in minibidi.c

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.
- 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.


ak.