<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 10/10/2013 10:50, FreeMan wrote:<br>
</div>
<blockquote cite="mid:5256786C.30002@delphiturkiye.com" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
Maybe this two screenshot give more info, copy and paste from
clipbord. same selected text. blackbackgroud in lazarus IDE, other
one in "Kate" text editor. 'İ' is okey on kate just font proble
and dot is small. <br>
Just look carefully to this string part " ....', PChar...."
before comma space is different. My idea is unicode function
problem in synedit, or string ansisting problem<br>
</blockquote>
I already can tell what is happening.<br>
Compare the width of the upper "i" with the width of the "2" below.
It is not the same.<br>
<br>
SynEdit is a monospace ONLY editor. It only works with monospaced
fonts. (Some exceptions, see below)<br>
<br>
SynEdit assumes that the "I" has the same width as every other char.
So it assumes that the "S" behind the "I" is exactly above the ")"
below.<br>
You will note that the caret moves into the middle of the "S"<br>
<br>
SynEdit makes one call to the OS TextOut function for all chars with
the same color. And if the OS does not paint the chars at the pos
that a strictly monospaced font would dictate, then SynEdit does not
know. But SynEdit will behave as if the OS did.<br>
<br>
The "," has a diff color. SynEdit makes a new TextOut call to the
x-pos where it should be. That is why there is a gap.<br>
Text selection changes color, so the gap starts moving around.<br>
<br>
If you can not change the font, you can set "Extra Char Spacing" in
the editor options to 1 or -1 (or any none zero value). Then SynEdit
will paint each char on its own (for internal reasons that does mess
up script languages like Arab, except on windows)<br>
<br>
SynEdit detects none monospaced fonts if Latin letters (i,w,m,@) do
not have the same width.<br>
It only test Latin letters as they are present in most fonts.<br>
<br>
If SynEdit would include upper dotted i in that test, it would fix
your problem. But it would have side effects for people who use such
a font, but only use English alphabet. (In which case the font is
ok).<br>
<br>
Same for testing any other none English char. There would always be
side effects between different languages (Arab to affect Chinese, or
Turkish or English or vice versa...)<br>
<br>
<br>
You can edit "TextDrawer" in SynEdit<br>
<br>
line 735<br>
<br>
<blockquote type="cite"><br>
//if OverHang >0 then debugln(['SynTextDrawer: Overhang=',
OverHang]);;<br>
FontData^.CharAdv := Width;<br>
FontData^.CharHeight := Height;<br>
FontData^.NeedETO := ETO;<br>
end;<br>
</blockquote>
<br>
change<br>
FontData^.NeedETO := ETO;<br>
to<br>
FontData^.NeedETO := True;<br>
<br>
It will use more CPU / be slower. It will mess up Arab (except on
Win)<br>
<br>
In the end: Your font is not monospaced. SynEdit only works with
monospaced fonts<br>
<br>
<br>
<blockquote cite="mid:5256786C.30002@delphiturkiye.com" type="cite">
<br>
<img src="cid:part1.04060409.09010108@mfriebe.de" alt="">
<div class="moz-cite-prefix"><img
src="cid:part2.07030801.06030205@mfriebe.de" alt=""><br>
<br>
<br>
</div>
</blockquote>
<br>
</body>
</html>