[Lazarus] Font ligatures support
Martin Frb
lazarus at mfriebe.de
Fri Oct 2 15:19:56 CEST 2020
On 02/10/2020 05:54, Mr Bee via lazarus wrote:
> Hi,
>
> It seems Lazarus’ source editor still doesn’t support font ligatures.
> I’d love to use them in Lazarus to increase the code readability as
> I’ve used them in many other code editors (using other languages too).
>
> Some popular fonts for that are Fira Code and JetBrains Mono. I’ve
> tried both of them with Lazarus editor but the ligatures don’t work.
>
> Is there any plan to support font ligatures in the near future? Or is
> there any special setting to enable it?
>
Are they strictly monospaced?
Are the chars IimXW and @ all the same width? (@ often is wider)
If any of those chars returns a different width, the SynEdit enforces
the width, by calling ExTextOut with an "ETO" array.
And that leads to each char painted on its own.
You can find the function "NeedETO" and set it to hardcoded False. That
will prevent the enforcements (except in right to left scripts).
But it will have side effects. SynEdit will place the caret, as if every
char was exactly n pixel wide.
And if text color changes, the text is continued according to the
calculated width. So if you select/deselect text, it will start moving a
few pixel.
To get all this really working, SynEdit would need to use an entirely
different Text API. It would need to know the width of each char, as it
is drawn in context. (That is measuring a char of its own is no help,
because the char may change width depending on the chars next to it.)
More information about the lazarus
mailing list