This weekend, I checked in one of the remaining pieces of work required before the Arabic support in PuTTY is considered releasable. Specifically:
- the cursor position is now mapped through the bidi transformation - highlighting of selections is mapped through the bidi transformation - mouse clicks are mapped (backwards) through the bidi transformation before being processed. This means that when the cursor looks as if it's on a particular letter, it really is on that letter; and you can select pieces of right-to-left text by clicking on where the words look as if they are. As far as I'm concerned, the Arabic support in PuTTY is now ready in feature terms to be included in trunk releases. (I've put out two branch-based releases without it since checking it in, because I didn't think it was stable enough yet.) I don't know whether it yet does everything an Arabic speaker would require, but it at least isn't being _gratuitously_ confusing to non-Arabic-speakers, so it shouldn't need to be left out of the next release. There is still stability work to do. In particular, somebody needs to go through minibidi.c and review the array bounds checking, because it currently isn't very good. For example, around line 205 of the current code, in do_shape(), line[i+1].wc and line[i-1].wc are both referenced without stopping to check whether i is at the beginning or end of the array. I could go through and fix these myself, but it would help if somebody who actually understood bidi and shaping did it, because they'd know what was _supposed_ to happen in those cases! Also, I should let you know that PuTTY now supports combining characters, which was on the list as being important for Arabic support. Next on the list is support for ligatures. As I understand it, the current plan is to support them by using the new combining character support to squash the lam and alif characters into the same character cell, so that selecting and copying just that character cell gets you both characters. Is that correct? I think I can now see how to do this reasonably easily, but I wanted to check with you before going ahead. So what I'd like from you, if possible, would be: - Check the new bidi functionality (PuTTY development snapshot code) and verify that the cursor position and selection do what you expect. - Check the new combining character support (also in the snapshots) and let me know if there's any problem with that. - Consider doing a robustness review of minibidi.c. Alternatively, I could go through it and point out the potential problems and then you could suggest what solutions were appropriate. - Let me know whether the plan for ligatures is correct, so I can go ahead with it. Cheers, Simon -- Simon Tatham "Happiness is having a large, warm, loving, <[EMAIL PROTECTED]> caring, close-knit family in another city." _______________________________________________ Developer mailing list [EMAIL PROTECTED] http://lists.arabeyes.org/mailman/listinfo/developer

