Home » Community » Forums » Game Programming » about SFML1.5 - Chinese language support
  Intel sponsors gamedev.net search:   
[Control Panel] [Register] [Bookmarks] [Who's Online] [Active Topics] [Stats] [FAQ] [Search]

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
Post New Topic  Post Reply 
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 &#20320;&#22909;");

     // 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 &#20160;&#20040;&#19996;&#35199;", 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]

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

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);



 User Rating: 1290   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Quote:
Original post by qxtianlong
How does this engine support Chinese?
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

 User Rating: 1645   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Quote:
Original post by Codeka
Quote:
Original post by qxtianlong
How does this engine support Chinese?
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 你.


thanks all


 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

All times are ET (US)

Post Reply
 Last Thread Next Thread 
Forum Rules:
You may not post new threads
You may post replies
You may not edit your posts
You may not use HTML in your posts
Jump To:
Administrative Options: