【问题标题】:Unicode combined stroke character ends up on the wrong height?Unicode 组合笔画字符的高度错误?
【发布时间】:2023-03-14 17:02:01
【问题描述】:

我有一个像“€1,49”这样的字符串,我想用 unicode 删除它。我知道U+0336 应该可以做到这一点,我将其应用于我的字符串(在 Python 中),如下所示:

'\u0336'.join('€1,49') + '\u0336'

问题在于,这最终导致逗号与字符串其余部分的高度不同,从而消除了干净删除线的错觉(参见屏幕截图)。

谁能告诉我我在这里做错了什么?

【问题讨论】:

    标签: unicode encoding character-encoding python-unicode


    【解决方案1】:

    我认为你做不到。

    您正在寻找超出 unicode 范围的格式。您应该使用控制字符(如果您的终端支持它)、html 或其他方式。

    您正在使用一个主要用于修改现有字符(和相同类型)的函数。

    注意:Unicode 也没有定义输出,所以上面的输出依赖于字体,可能在很多不同的环境下都不起作用。

    通过将逗号替换为逗号和一些组合字符(类似空格),您可能会获得更好的结果,这样字体就会将组合视为更高的字符,从而使敲击更加对齐。但正如我所写,它并不是真正可移植的,它取决于你的字体,所以我无法测试并给你一个好的解决方案。 [而且正如我之前所说,将 U+0336 用于此类格式化范围很糟糕]

    【讨论】:

    • BTW 在我的终端上,我将线居中,但不同字母之间只是不连续。但是大多数字体将其显示为一条连续的线。 OTOH 我没有找到符合你行为的字体。
    • 谢谢,看来这确实高度依赖于平台和/或字体。我以为我可以将它用于没有其他格式化文本方式的系统,但我想这不会很好。
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2016-11-05
    相关资源
    最近更新 更多