Well, the text-stuff is as expected quite hard.
The old implementation is quite interesting:
Because Java does its own glyph-rasterization I was not able to use XCore-Fonts back then, therefor it creates a Bitmap (a 1-bit alpha mask) when text is dran, uploads it to the server in a pixmap and uses this pixmap as a 1-bit mask for an area which is filled with the foreground-color.
I guess this is an area where Java2D performance will benefit a lot when using XRender, maybe much enough that it would justify a backport of the text-only stuff to the X11-only pipeline.
Even better XRender supports antialiased and subpixel antialiased (however, for now I don't know howto deal with that) text, which caused expensive readbacks till now.