首页 > 解决方案 > 如何可靠地确定 C# 中字符的宽度?

问题描述

我正在编写一个 C# 程序,并使用固定宽度的字体来显示所有内容。在这种字体下,每个 Unicode 字符要么占据 1 个字符宽度,要么占据 2 个字符宽度。在程序中,有一个特性需要判断一个特定的字符占据1个字符宽度还是2个字符宽度。起初我使用正则表达式[^\x00-\xFF]来解决问题。如果一个字符匹配它,它占用 1 个字符宽度,否则它是 2 个字符宽度。但后来我发现这是不对的。例如,这些字符┌─┬┐│├┼┤┴┘不在范围内,[^\x00-\xFF]但它们都只占用 1 个字符宽度。我想知道在C#中使用固定宽度字体时如何确定特定字符占用1个字符宽度或2个字符宽度?

标签: c#unicodefontswidthfixed-width

解决方案


我也在寻找相同问题的答案……但我还没有找到。顺便说一句,我终于写了一个库来获取字符长度(使用Console.Write()和Console.CursorLeft生成显示字符长度的范围信息,然后转换为C#代码,当获取字符长度时,使用二进制搜索更高的速度)

nuget:NullLib.ConsoleEx 项目:https ://github.com/SlimeNull/NullLib.ConsoleEx


推荐阅读