|
||||||||||||||||||
Add Forum to Favorites | Send Topic To a Friend | View Forum FAQ | Track this topic |
Last Thread Next Thread ![]() |
| about SFML1.5 - Chinese language support |
|
![]() qxtianlong Member since: 12/3/2005 From: shijiazhuang, China |
||||
|
|
||||
How does this engine support Chinese?#include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #pragma comment(lib,"sfml-main-d.lib") #pragma comment(lib,"sfml-system-d.lib") #pragma comment(lib,"sfml-window-d.lib") #pragma comment(lib,"sfml-graphics-d.lib") #pragma comment(lib,"sfml-audio-d.lib") int main() { // Create the main window sf::RenderWindow App(sf::VideoMode(800, 600,32), "SFML 你好"); // Load a sprite to display sf::Image Image; if (!Image.LoadFromFile("data/gfx/intro.jpg")) return EXIT_FAILURE; sf::Sprite Sprite(Image); // Create a graphical string to display sf::Font Arial; if (!Arial.LoadFromFile("data/fonts/simsun.ttc")) return EXIT_FAILURE; sf::String Text("Hello 什么东西", Arial, 50); // Load a music to play sf::Music Music; if (!Music.OpenFromFile("data/sfx/main.ogg")) return EXIT_FAILURE; // Play the music Music.Play(); // Start the game loop while (App.IsOpened()) { // Process events sf::Event Event; while (App.GetEvent(Event)) { // Close window : exit if (Event.Type == sf::Event::Closed) App.Close(); } // Clear screen App.Clear(); // Draw the sprite App.Draw(Sprite); // Draw the string App.Draw(Text); // Update the window App.Display(); } return EXIT_SUCCESS; } EDIT: Changed topic title to be more descriptive. - jba. [Edited by - jbadams on November 4, 2009 1:42:44 AM] |
||||
|
||||
![]() _fastcall Member since: 2/4/2008 From: Salt Lake City, UT, United States |
||||
|
|
||||
SFML is Unicode compliant. sf::Font will open a font file and render a few glyphs to a texture. The problem is that there are more than a million glyphs that can be rendered and can be impossible to store on video memory. The SFML documentation for sf::Font specifies that you can select what glyphs you'll use in a font (by default, it'll use the ISO-8859-1 printable characters):
// Create a graphical string to display
// bool sf::Font::LoadFromFile( const std::string& Filename, unsigned charSize = 30, const Unicode::Text& Charset = ourDefaultCharset )
sf::Font Arial;
if (!Arial.LoadFromFile("data/fonts/simsun.ttc", 30, L"Helo\x4E48\x4EC0\x4E1C\x897F" ) )
return EXIT_FAILURE;
sf::String Text( L"Hello \x4EC0\x4E48\x4E1C\x897F", Arial, 50);
|
||||
|
||||
![]() Codeka Member since: 10/19/2008 From: Sydney, Australia |
||||
|
|
||||
Quote:What do you mean "how"? It looks like it's using HTML entity reference to include Unicode characters in the ASCII strings. 你 looks like a HTML entity reference, and since 20320 decimal is 4F60 in hexadecimal, it corresponds to Unicode characters U+4F60, which is 你. my blog |
||||
|
||||
![]() qxtianlong Member since: 12/3/2005 From: shijiazhuang, China |
||||
|
|
||||
Quote: thanks all |
||||
|
||||
All times are ET (US)![]() |
Last Thread Next Thread ![]() |
|