我发现在macosx终端中,一些Unicode字符占用了不止一个字符空间。例如27FC(从条向右长箭头)。它打印两个字符宽,但第二个字符打印在下一个字符的顶部,因此您必须执行⟼<space>
操作才能正确打印。例如,⟼a
打印如下。
(我把字号调大以便你能看到,但它对所有字号都适用)。
顺便说一下,这是macosx10.6终端应用程序中的Menlo字体。
23B3(SUMMATION TOP)实际上打印为两个字符宽和高(至少在Safari中,它在浏览器中也是这样做的,注意它是如何与上面的行重叠的)⎲
然而,在Ubuntu的终端中,这些字符打印的宽度或高度都不超过一个字符。
有没有一种方法可以通过编程来判断一个字符是否占用多个空格?
我使用的是Python,因此最好使用纯Python或POSIX(即,我可以使用os
模块调用bash命令)。
另外,我应该注意,如果我把终端字体设置中的“字符间距”设置增加到1.5(从默认的1.0),那么它看起来像 ^{img2}。
另外,如果有一个答案能让我们对这一切有一些了解,那就太好了(比如,为什么会这样呢?)
虽然它与您给出的特定示例无关(在Ubuntu上,所有这些字符都以单个字符的大小显示),但CJK字符有一个unicode属性,表示它们比普通字符宽,并且在某些终端中以双倍宽度显示。在
例如,在python中:
除此之外,我认为除了你使用的任何字体的字形大小(你的终端可能因为Ignacio给出的原因而忽略了)之外,对于某些字符应该占用多少空间没有一个规范。在
有关“东亚宽度”属性的详细信息,请参见http://www.unicode.org/reports/tr11/
这是OSX终端中的一个错误。在
我不建议尝试解决它,因为它会在其他系统(如Linux)上崩溃,最终可能会在Mac上修复。它也会混淆任何人粘贴到另一个应用程序。在
不,因为没有办法知道终端使用的是什么字体。永远使用等宽字体,吸取教训。在
这是因为终端使用的是“单元格”字体布局引擎(即字符打印在特定的X和Y坐标上,而不管其实际大小),而浏览器使用的是“flow”字体布局引擎(后续字符在前一个字符结束处打印)。在
相关问题 更多 >
编程相关推荐