doom 带的 emoji module 用的图片版 emojione,看起来不太美,而且 emacs-plus 显示 emoji 有错乱,于是换用了 emacs-mac,在普通文本窗口以及eshell里显示完美,但是 vterm 里显示:family:这样的会分成三个字符,
和:swimming_man:字符后面会多一个性别图标。
如果用emojione,那么vterm是正常的,所以感觉是emacs-mac对vterm窗口有啥特殊设置,导致没有渲染对组合颜文字。
图片最下面是 vterm。
1 个赞
我之前看过 emacs-mac 表情渲染实现,其实处理的也不全,不过应该是说 vterm 不支持连字还是啥(我不知道叫啥)所以导致没有组合的没有拼起来
emacs 里可以这样输入那个 family,是三个 emoji 字符用 ZWJ 组合起来的:
C-x 8 RET woman
C-x 8 RET zero width joiner
C-x 8 RET woman
C-x 8 RET zero width joiner
C-x 8 RET girl
在 eshell,shell, term,ansi-term,scratch 里都是正常的,也就是说 emacs-mac 是正确处理了这种组合颜文字。
M-x trace-function 看了下 vterm–write-input,其 input 参数是正常的,并没有丢失 ZWJ,但是不知道在哪个环节在渲染时丢了 ZWJ,渲染成了三个独立的颜文字。
2 个赞
btw, interesting, why do the family emoji equal “two women and one girl”?

1 个赞