我可以获得控制台unicode字符屏幕宽度以及它们是否可以重叠?

问题描述 投票:0回答:1

我已经深入研究了 char 的属性,但没有找到查看它的方法。 在表单中,我可以根据类型和大小来测量字体,但显然我无法使用控制台来做到这一点。 我发现我需要在一些 Unicode 字符后面添加一个空格,因为如果我不这样做,下面的文本将会与它重叠。 一些 Unicode 字符的宽度是其他字符的两倍。

示例: Showing different sizes on screen

目前,我必须仔细观察并创建一个地图来说明此信息,但希望使其更加通用。

发现了这个,但这更多的是为了填充所有字符串,我正在构建一个库来生成颜色、符号和格式并返回完整的字符串供用户使用 Console.WriteLine(fullLineText);

我发现了变体选择器,但前提是我已经知道哪个需要它们。 视觉上没有太大不同,只是增加了空间,就像我以前一样。 示例:

Console.OutputEncoding = Encoding.Unicode;
//Has '\ufe0f' (Color) Variation Selector
//The '\ude0e' (Monochrome) Variation Selector
Console.WriteLine("v1: [\u2620]\n" +
                  "v2: [\u2620\ufe0f]\n" +
                  "v3: [\u2620 ]");

enter image description here

是否可以通过编程来计算出来?

c# console-application
1个回答
0
投票

据我所知,除了为所有内容创建地图之外,没有其他真正的方法。 对于 Rune,我发现大多数 1/2 字节外观的字符的 Plane 设置为 0,BMP 设置为 True,但并非在所有情况下都是如此。

您会注意到 \u23f0 有一个额外的空格,而 \ud83c\udd8f 缺少空格。 我想我只会列出我将支持的内容,然后让用户在需要时添加一个空格。

我使用的示例,其中指出 Plated: True,意味着我添加了 \ufe0f: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.