So... After re-reading this whole thread again, I still can't see why nobody considered just making sf::Text (yet another) friend of sf::Texture so that it can check m_cacheId itself. Any time font texture data is updated, the sf::Text would check the cache ID and make sure that the geometry is also updated. Yes... it is a bit more conservative (i.e. might update more) than what FRex has proposed, but it is much simpler if you ask me, and more importantly, it doesn't require changes to the public API.