On 08/12/2012 18:02, Martin wrote:
On 08/12/2012 16:27, patspiper wrote:
On 07/12/12 16:58, Martin wrote:
Ok, but can you test them on windows, with "Extra Char Spacing" = 1
I use Ubuntu, and tested only monospaced fonts (source editor). I understand extra char spacing is for Windows only.
On GTK, it will break either way.

The whole think can currently only be tested on windows.

Ok, bad news, I did some more testing myself, and it turns out, that WIndows allocates the extra space (song connection line) just anywhere in the word, or at the end of it, but not always where the ligation is.



The problem is synEdit expects the chars (3+1 ligate = 8 chars) *evenly* distributed (every n pixel). So if the caret is placed at the begin of the line , SynEdit expects a char there, and then n pixel further the next...
If you edit (insert, delete) at those points SynEdit will act as if the char it expected had been there. And that in (a far as I can see) not really useable.

Anyway on windows this is now the current behaviour. (*NO* "Extra char spacing" needed any more). 
(Note: instead of the long line, you may get empty spaces, at word borders (including letter to digit changes))

On GTK, QT, and carbon, the widgetset drawing support does not deal with that, so results are even worse.
If windows had worked better, the plan was to try and fix them (Though I am not sure about doing QT or carbon myself). Now I am not sure, how much sense this makes...

As for other RTL behaviour (none drawing related):
- I fixed backspace for combining
- If you find an combining chars that do not work, maybe they got missed (SynEdit has it's own list). Let me know, I will check, and add them, (adding is easy, finding takes the time).
  This is Arabic ONLY, other combining have not yet added (planned, no need to report, I do know already)
- As for the treatment of weak chars (e.g. digits being part of the RTL or LTR run. This is still beta. It has flaws, I know, no need to report.
- tabs in RTL, are probably not handled very smart. If you know a good algorithm... However, this will be very low prior.
- Column mode selection, is *not* implemented at all (normal selection will work)
- Caret, if between a RTL and LTR run, is always placed next to the LTR char. I know there a many smarter ways to do this, but low prior.
- Anything else, that needs improvement or fixing: let me know.


So what's next.
The only way to support this, is to make SynEdit aware of the ligatures. And that is a lot of work, so it will take more time. And I don't yet know when I will schedule it....


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to