I think isn't a font problem, look this images, one is gtk2 and other is qt5(with fail).
Well, what I can see is that while you chosen the same font (font of the same name) under gtk2 and qt, the font that is used is different.
Look at line 16 of the preview, the lowercase "i" in "inc" is very different.
What I can also see is that on QT the "n" in the same "inc" is partly below the "X" in the line above. But that "X" should line up with the "i".
So it is not a monospaced font.
But SynEdit should have noted that using GetTextExtentPoint. And then using LCLIntf.ExtUTF8Out to specify the draw-width of each char.
So I can think of several scenarios.
Either GetTextExtentPoint or LCLIntf.ExtUTF8Out do not work.
Or the code gets a different font for measuring than it gets for actual drawing.
LCLIntf.ExtUTF8Out can be tested by setting "Extra char spacing" to 1 (or any value other than 0)