I went back to see what changes I made to my local checkout. It seems I never made as far as to implementing subpixel rendering. I think I experimented with subpixel stuff on some other medium (maybe used GIMP to do the shifting manually, I forgot). So there may still be some hope.
On the other hand, regarding the kerning problem, there's not much you can do with the current one bitmap per glyph approach. One idea is to create multiple subpixel offset versions of the glyph. It'll cost more memory though. And the offset version of the bitmap may need to have its leftmost or rightmost column overlap the neighbouring glyph, and I'm not sure if the renderer supports gray level addition or if it would just overwrite the existing column from the previous neighbour.
As for Freetype supported fonts, there is an API for enabling subpixel rendering which you can call right before rendering the glyph. I've never experimented with it.
I've looked a bit around and in particular in the poppler library code to see how it works, they use QRawFont in the Qt backend to exploit subpixel antialiasing and native font technologies for each platform. We could do the same, essentially replace our glyph rendering code with something similar to their code. In this way we will make TeXmacs rendering similar to that of Okular, for example.
There is another far lest costly thing that we can (should) do and that was long on my wish list (less and less high with the higher resolution screens :)
The idea would be to see words that are "broken" into characters and use a global hyphenation algorithm for optimizing the "breaking".
On the other hand, regarding the kerning problem, there's not much you can do with the current one bitmap per glyph approach. One idea is to create multiple subpixel offset versions of the glyph. It'll cost more memory though. And the offset version of the bitmap may need to have its leftmost or rightmost column overlap the neighbouring glyph, and I'm not sure if the renderer supports gray level addition or if it would just overwrite the existing column from the previous neighbour.
As for Freetype supported fonts, there is an API for enabling subpixel rendering which you can call right before rendering the glyph. I've never experimented with it.
By the way, there is already a bug report created for this: https://savannah.gnu.org/bugs/?45629