sf::Font contains a texture. sf::Glyph contains a texture rect which corresponds to the glyph's position in that texture once rendered. The logic in sf::Text that you're essentially duplicating is all about computing a position (though obviously it uses kerning and line spacing and glyph advance and all that stuff).
An sf::Sprite is (very literally) nothing but four vertices, a texture, and a texture rect.
By the way, you can always look at the source code for sf::Text, since you're basically trying to reimplement it.