It should be easy to do if you copy the code of sf::Text and change some things(just add a method that takes index and color and colors the vertices of the quad at that index, but keep in mind underline is a quad too and it'd not last untill next time quads are recreated so you'd have to do it last:. set font, size, style, text and then set colors), but not with sf::Text , I don't think. And well, the simplest approach is few instances of sf::Text but if you wanted something like 20 letters, that do not change, each in different color, then you should really roll own class up.