关于 telega package 头像裂开三个解决方案

背景

在 emacs telegram group 厮混日久,在使用 telega package 的时候绕不开的一个问题是如何解决 telega 头像开裂问题,故而将解决方案整理在这里做一个备份,防止重复讨论。

这个问题 telega 社区有相关讨论,见 reference 。

推荐 : 我和很多 telegram 群友选择了 方案 2 更纱字体。

有三种方案

  1. 缩小头像图案大小

    (setf (alist-get 2 telega-avatar-factors-alist ) '(0.5 . 0.1))
    
  2. 使用更纱字体

    (defun telega-buffer-face-mode-variable ()
      (interactive)
      (make-face 'my-telega-face)
      ;; (set-face-attribute 'my-telega-face nil :font "M+ 1m")
      (set-face-attribute 'my-telega-face nil :font "Sarasa Mono SC Nerd 13")
    
      (setq buffer-face-mode-face 'my-telega-face)
      (buffer-face-mode))
    
    (add-hook 'telega-root-mode-hook 'telega-buffer-face-mode-variable)
    (add-hook 'telega-webpage-mode-hook 'telega-buffer-face-mode-variable)
    (add-hook 'telega-chat-mode-hook 'telega-buffer-face-mode-variable)
    
  3. 设置中英文不同的字体字号大小

    (set-frame-font "Fira Code-12" nil t)
    (set-fontset-font t 'han      (font-spec :family "WenQuanYi Micro Hei" :size 18))
    (set-fontset-font t 'cjk-misc (font-spec :family "WenQuanYi Micro Hei" :size 18))
    

reference

3 个赞

更傻字体没办法覆盖所有情况,有些昵称非常复杂,比如有些圣书体,泰文,这个时候需要配合方法 3 缩小这些特殊字符的比例。

1 个赞

我这里缩小头像要设置到 0.4 才行 (setf (alist-get 2 telega-avatar-factors-alist ) '(0.4 . 0.1))

而且这么设置会导致单独发送的 emoji 裂开 image

LXGW WenKai Mono 配合 Iosevka 按照 1:1 缩放,偶数字号就可以做到等高等宽。同时设置 (add-to-list 'face-font-rescale-alist '("Apple Color Emoji" . 0.8)) 就可以做到即使有 emoji 也可以头像不开裂。

我和 telega.el 开发者讨论且测试过,方案二会搞坏 telega 的换行判断,导致光标乱跳

喜大普奔,telega 最新版本提供了选项,开启后头像再也不会裂开了。

(setq telega-avatar-workaround-gaps-for '(return t))
3 个赞

发现随着 telega 的不断更新,我很多原先要做的配置都可以删掉了,今天清掉一堆配置代码