I like option 2. But then it becomes similar to providing the font file directly, the only difference is that with a header it is compiled directly into the final application. But then why not go further, and provide a generic system to embed any data into the application?
The difference is that you don't have a global sf::Font object. Nobody's against global data (just make sure to declare it static const, so it won't be included X times in the binary).
I would even go one more step further and say: Why not a generic loading chain with changeable adapters for choosing which backend we want? (filesystem, archives, binary data in executable, HTTP)
But that's definitely something for a later version, also the idea with generic embedded data.
However, having something like
font.load( sf::FileSystemAdapter( "foobar.ttf" ) );
font.load( sf::ZipAdapter( "foobar.ttf", "meow.zip" ) );
font.load( sf::HttpAdapter( "http://sfml-dev.org/resources/foobar.ttf" ) );
// Same for all the other load() functions, e.g. in sf::Image.
would be great and powerful. Maybe in SFML 4? ;-)
but as SFML has to remain compatible with pure C++03
Do you plan to drop that requirement for, let's say SFML 3?
Before was better.
...
-1 to this
-1337 for flaming.