Outputting unicode characters in windows terminal

£可爱£侵袭症+ 提交于 2019-11-29 10:49:46

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

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.

You need to set the code page properly. There's a pretty good article about that here: link

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!