繁体   English   中英

控制台输出中的 C++ 字符间距,UTF-16 字符

[英]C++ char spacing in console output, UTF-16 characters

我正在使用 UTF-16 字符在 C++ 控制台中制作游戏以使其更有趣,但有些字符的大小与其他字符不同。 所以,当我打印关卡时,角色之后的东西比其他东西移动得更远。 有什么方法可以通过某些控制台功能在字符之间添加间距,我尝试用谷歌搜索一些有用的东西,但我什么也没找到。图像上描述的问题

我试图通过 CONSOLE_FONT_INFOEX 更改字体大小,但它没有任何改变,也许我以错误的方式实现它,或者它不适用于 UTF-16 字符。

// i tried this

CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof(cfi);
cfi.dwFontSize.X= 24;
cfi.dwFontSize.Y= 24;

不幸的是,我预计这将在很大程度上取决于您使用的特定控制台。 一些对 Unicode 不太友好的控制台会将所有字符视为相同大小(可能会切断较大字符的右半部分),而一些控制台会导致较大的字符将行的其余部分推到右边(这是我在链接的图像)。 我观察到的最合理的控制台有一组被认为是“双宽”的字符,并为这些字符保留两个等宽列而不是一个,所以该行的其余部分仍然适合网格。

也就是说,您可能想尝试不同的控制台程序。 我可以假设你在 Windows 上吗? 在这种情况下,您可能想尝试一下Windows Terminal 如果这不起作用,还有其他可用的控制台程序,例如 msys 的MinttyConEmu

因此,经过一番激烈的谷歌搜索后,我找到了解决方案。 解决办法是以毒攻毒。 Unicode 包括字符 Thin Space,即正常空间的 1/5,因此如果我在有问题的字符之后包括其中两个和一个正常空间,输出将按我想要的方式显示。 如果有人遇到类似的问题,unicode 有很多不同大小的空间。 我找到了显示所有这些及其属性的网站

固定输出图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM