Algorithm to turn gray-scale text into legible binary black and white text
It is possible that the literature on image vectorization might be useful.  That basically tries to reconstruct the strokes that produced the image.  However, I think this is going to be challenging when the width of the strokes is narrower than two pixels or so, and it is possible that standard techniques might work poorly in that domain.  I would recommend that you try increasing the font size or the resolution, and then try standard methods.

For your example image, I get somewhat more reasonable results by using a better threshold (0.8), but I think you'll do a lot better if you can increase the resolution.

If you know in advance what font and font size will be used, it might be feasible to render each possible character and capture an image of the anti-aliased rendered result for each possible character, in a few random locations, and then use simple pattern matching.