为什么打印的unicode字符会改变?
Why do the printed unicode characters change?
unicode符号的显示方式取决于我在它之前是否使用了White Heavy Check Mark或Negative Squared Cross Mark。如果我这样做,警告标志就会变色。如果我在符号之间放置一个 space,我会得到类似单色文本的版本。
为什么会存在这种行为,我能否以某种方式强制使用彩色符号?
我尝试了几个不同的 REPL,行为是一样的。
; No colour
(str (char 0x274e) " " (char 0x26A0))
; Coloured
(str (char 0x274e) "" (char 0x26A0))
我希望符号以相同的方式显示,无论它前面是哪个符号。
Why does this behaviour exist
供应商认为用彩色呈现表情符号 glyhp 是个好主意。这个想法流行起来。
https://en.wikipedia.org/wiki/Emoji#Emoji_versus_text_presentation
can I force the coloured symbol somehow
U+FE0E VARIATION SELECTOR-15 和 U+FE0F VARIATION SELECTOR-16
Unicode 是关于字符(代码点)的,而不是字形(将其视为字符的 "image")。
字体可以(并且应该)将附近的字符合并为一个字形。在印刷的拉丁文脚本中,这不是很常见(但我们可以使用它,例如 ff、fi、ffi),而不考虑 组合代码点 ,根据定义,它应该与其他字符组合,以只得到一个字形,
许多其他脚本需要它。开始使用草书拉丁文字,但大多数草书都需要更改。例如。阿拉伯语有不同的初始、最终、中间或分隔字符的字形(+特殊组合,草书常见)。印度文字具有类似的行为。
所以 Unicode 的基础已经有了这个行为,现代的好字体应该能够做到。
emojii 使用这样的功能还不算太晚,例如国家 letters/flags 到其他常见案例。
通常 Unicode 文档会告诉您这种可能性,以及可能会改变行为的特殊代码点,但是字体的任务就是实现预期的行为(并找到好的字形)。
因此:字符(作为 unicode 代码点)与设计(字形)不是一对一的。
unicode符号的显示方式取决于我在它之前是否使用了White Heavy Check Mark或Negative Squared Cross Mark。如果我这样做,警告标志就会变色。如果我在符号之间放置一个 space,我会得到类似单色文本的版本。
为什么会存在这种行为,我能否以某种方式强制使用彩色符号?
我尝试了几个不同的 REPL,行为是一样的。
; No colour
(str (char 0x274e) " " (char 0x26A0))
; Coloured
(str (char 0x274e) "" (char 0x26A0))
我希望符号以相同的方式显示,无论它前面是哪个符号。
Why does this behaviour exist
供应商认为用彩色呈现表情符号 glyhp 是个好主意。这个想法流行起来。
https://en.wikipedia.org/wiki/Emoji#Emoji_versus_text_presentation
can I force the coloured symbol somehow
U+FE0E VARIATION SELECTOR-15 和 U+FE0F VARIATION SELECTOR-16
Unicode 是关于字符(代码点)的,而不是字形(将其视为字符的 "image")。
字体可以(并且应该)将附近的字符合并为一个字形。在印刷的拉丁文脚本中,这不是很常见(但我们可以使用它,例如 ff、fi、ffi),而不考虑 组合代码点 ,根据定义,它应该与其他字符组合,以只得到一个字形,
许多其他脚本需要它。开始使用草书拉丁文字,但大多数草书都需要更改。例如。阿拉伯语有不同的初始、最终、中间或分隔字符的字形(+特殊组合,草书常见)。印度文字具有类似的行为。
所以 Unicode 的基础已经有了这个行为,现代的好字体应该能够做到。
emojii 使用这样的功能还不算太晚,例如国家 letters/flags 到其他常见案例。
通常 Unicode 文档会告诉您这种可能性,以及可能会改变行为的特殊代码点,但是字体的任务就是实现预期的行为(并找到好的字形)。
因此:字符(作为 unicode 代码点)与设计(字形)不是一对一的。