我正在编写一个C#程序,使用等宽字体来显示所有内容。在这种字体下,每个Unicode字符都会占据1个字符宽度或者2个字符宽度。在程序中,有一个需要确定特定字符占据1个字符宽度还是2个字符宽度的功能。起初我使用正则表达式
[^\x00-\xFF]
来解决问题。如果一个字符匹配了它,那么它就占据1个字符宽度,否则就是2个字符宽度。但后来我发现这不正确。例如,这些字符┌─┬┐│├┼┤┴┘
不属于[^\x00-\xFF]
范围,但它们都只占用1个字符宽度。我想知道在使用等宽字体时如何在C#中确定特定字符的占用宽度是1个字符还是2个字符?
Regex
不支持Unicode的非BMP部分。 - xanatosGraphics.MeasureString
或者TextRenderer.MeasureText
来渲染字符并测量结果? - timur