为什么打印的unicode字符会发生变化?

为什么打印的unicode字符会发生变化?,unicode,clojure,read-eval-print-loop,Unicode,Clojure,Read Eval Print Loop,unicode符号的显示方式取决于我是否在其前面使用白色重复选标记或负方十字标记。如果我这样做,警告标志是彩色的。如果我在符号之间加一个空格,我会得到单色文本的版本 为什么会存在这种行为?我可以以某种方式强制使用彩色符号吗 我试了两个不同的回复,行为都是一样的 ; No colour (str (char 0x274e) " " (char 0x26A0)) ; Coloured (str (char 0x274e) "" (char 0x26A0)) 我希望无论前面是哪个符号,符号都以相同

unicode符号的显示方式取决于我是否在其前面使用白色重复选标记或负方十字标记。如果我这样做,警告标志是彩色的。如果我在符号之间加一个空格,我会得到单色文本的版本

为什么会存在这种行为?我可以以某种方式强制使用彩色符号吗

我试了两个不同的回复,行为都是一样的

; No colour
(str (char 0x274e) " " (char 0x26A0))
; Coloured
(str (char 0x274e) "" (char 0x26A0))

我希望无论前面是哪个符号,符号都以相同的方式显示

为什么会有这种行为

一位供应商认为将表情符号涂成彩色是个好主意。这个想法很流行

我可以强制使用彩色符号吗

U+FE0E变体选择器-15和U+FE0F变体选择器-16


Unicode是关于字符(代码点),而不是字形(将其视为字符的“图像”)

字体可以自由(并且应该)将附近的字符合并成单个字形。在打印的拉丁语脚本中,这并不常见(但我们可以使用它,例如ff、fi、ffi),而不考虑组合码点,根据定义,组合码点应与其他字符组合,以仅获得一个字形

许多其他脚本都需要它。开始使用拉丁草书,但大多数草书都需要更改。例如,阿拉伯语有不同的首字母、末字母、中间或分隔字符的字形(+特殊组合,草书常见)。印度文字也有类似的行为

因此,Unicode的基础已经具备了这种特性,现代优秀的字体应该能够做到这一点

emojii使用这些功能(例如,将国家字母/国旗用于其他常见情况)还不算太晚

通常,Unicode文档会告诉您这些可能性,以及可能改变行为的特殊代码点,但字体的任务是完成预期行为(并找到好的标志符号)

所以:字符(作为unicode代码点)不是设计的一对一(glyphs)。

(str(char 0x26A0)(char 0xfe0f))
正是我想要的,谢谢!