Over the past week I\'ve been working on a roguelike game in C++ along with a friend. Mostly too learn the language.
I\'m using:
The problem is that I need to force the terminal to switch to a more unicode-rich font face. Is there a cross-platform way to do this? is there even a windows specific way to do this?
I had a look for this, but couldn't find a Windows API call to do it (which may just mean I didn't find it, of course). I would not expect to find a cross-platform way to do it.
The best solution I can think of is to launch the console using a specially constructed Shell Link (.LNK) file. If you read the file format documentation, you'll see that it allows you to specify a font.
But your problems don't end there. A Western locale install of Windows provides Lucida Console, but that font only provides a limited subset of graphemes. I assume that you can output/input Japanese text in the console on a Japanese Windows PC. You'd need to check what is available on a Japanese Windows if you wanted to be sure it would work there.
Linux (Ubuntu, at least) seems to have much better support here, using UTF-8 and providing a font with broad grapheme support. I haven't checked other distros to see what the story is there, nor have I checked how fonts are resolved in the terminal (whether it's an X thing, a Gnome thing or whatever).
Although it's a pretty big switch, you might try using an alternative console, especially if you are doing a roguelike. libtcod is a moderately popular library, written in C with C++ bindings, that provides a full color console which you can set up your own fonts and glyphs in. That should give you a lot more flexibility than being stuck with what the Windows console gives you.
You need to set the code page properly. There's a pretty good article about that here: link
In principle, all unicode characters are supported on the console. The fact that you're seeing question marks probably has to do with font support for those characters. Try switching the console font to something with very good unicode support.