[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MiniBidi Makeover!
- To: Development Discussions <developer at arabeyes dot org>
- Subject: MiniBidi Makeover!
- From: Ahmad Khalifa <ahmad at khalifa dot ws>
- Date: Fri, 11 Jun 2004 22:20:20 +0300
- User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
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.