Just to make sure - I assume you're rendering text in lots (hundreds maybe?) of different colors, maybe cycling through them for effect? Because if you're only writing text in a few different colors, why not simply create a Map<Color, Font>, where each value is created as a copy of the original font image with the original color (e.g. white or black) changed to the new one, and lazily create entries per color?
Just wanted a system that was "smart enough" to do any color without having a version of it in memory. Considering we're just putting pixels on the screen, it should be doable via mathematical equation.