Unicode is slightly intimidating, but I think I’ve found the most useful way to tackle it in my game.
GNU Unifont is a GPL-licensed bitmapped font that I can work with. It is fixed height (16 pixels tall) and fixed width (8 or 16 pixels wide) so coding for the font should be easy. In C++ I could use double-width chars (wchar_t) and I should be able to find matching string functions.
Working with OpenGameArt means I’m working with artists from all over the world, and plain ASCII won’t cut it for most of the people who already have direct interest in the game. If I support Unicode, at least someone could modify all my game data files to make a native translation.
Of course, just supporting a Unicode font isn’t enough. I need to add RTL text support and possibly modify some menus for those languages. I need to macro lines like “Increases accuracy by 5” so the sentence can be reworked and rearranged for the target language. I need to isolate the displayed text as much as possible so that translators don’t have to hunt for changes. Finally, ideally, I need to support choosing language at runtime or at least in a config file.
Language translations isn’t the exciting part of making a game. My development model for OSARE has been to make the fun parts first, then make it work properly/flexibly later. Unicode/translation support might actually come once I have most everything else in place… perhaps around that phase where most of OSARE’s features are complete and I need to start generating tons of game assets (more monsters/tilesets).
If I use the GNU Unifont format directly, I might not even need a bitmap version of the font. I could write out the pixels just as described in the text format. Don’t know what kind of performance concerns that would create with SDL.