如果你用 Doom Emacs 的话,使用下面的代码可以解决中英文等宽问题,使用的字体是 Sarasa Mono。其他配置也可以参考改一改。
来源:emacs配置_xhcoding的博客-CSDN博客
(setq doom-font
(font-spec :family "Sarasa Mono SC" :size 18 :weight 'normal))
(after! doom-big-font-mode
(setq doom-font
(font-spec :family "Sarasa Mono SC")))
;; https://blog.csdn.net/xh_acmagic/article/details/78939246
(defun +my/better-font()
(interactive)
;; english font
(if (display-graphic-p)
(progn
(set-face-attribute 'default nil :font (format "%s:pixelsize=%d" "Sarasa Mono SC" 18)) ;; 11 13 17 19 23
;; chinese font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset
(font-spec :family "Sarasa Mono SC")))) ;; 14 16 20 22 28
))
(defun +my|init-font(frame)
(with-selected-frame frame
(if (display-graphic-p)
(+my/better-font))))
(if (and (fboundp 'daemonp) (daemonp))
(add-hook 'after-make-frame-functions #'+my|init-font)
(+my/better-font))
yanzt
82
Ubuntu 16.04, emacs 25解决此问题
安装 Noto Sans Mono字体,设置
(set-face-attribute
'default nil
:font (font-spec :name “Ubuntu Mono”
:weight 'normal
:slant 'normal
:size 14.0))
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font
(frame-parameter nil 'font)
charset
(font-spec :name “Noto Sans Mono”
:weight 'normal
:slant 'normal
:size 15.0)))
或者都使用 Noto Sans Mono字体
(set-face-attribute
'default nil
:font (font-spec :name “Noto Sans Mono”
:weight 'normal
:slant 'normal
:size 13.0))
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font
(frame-parameter nil 'font)
charset
(font-spec :name “Noto Sans Mono”
:weight 'normal
:slant 'normal
:size 15.0)))
(if (eq system-type 'windows-nt)
(progn
;; Setting English Font
(set-face-attribute 'default nil :font "Ubuntu Mono 11")
;; (set-face-attribute 'default nil :font "Inconsolata 11")
;; Chinese Font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset
(font-spec :family "Microsoft Yahei" :size 22)))))
试过不少英文等宽字体,ubuntu mono感觉最好。Ubuntu font
下面的组合是ok了。人肉对齐。
“Ubuntu Mono 10 + Microsoft Yahei 20” org mode table是可以对齐的
“Ubuntu Mono 12 + Microsoft Yahei 24” org mode table是可以对齐的
“Ubuntu Mono 11 + Microsoft Yahei 22” org mode table是可以对齐的
Ubuntu Mono 11 + Microsoft Yahei 22。在13寸的1920x1080分辨率的笔记本上。
为什么我单独对org-table字体进行设置,会报错说“Invalid face” org-table.
org version: 9.3.
你这个报错,跟我是一样的。实际我用了cnfonts这个包也很好,不过现在我用等距更纱系列字体可以做到宽高都对齐。
发现使用Inconsalata字体+华文楷体的效果比较好,不用缩放,就可以解决对齐问题,
同时获得很多的视觉效果。
用雅黑,黑体,Noto Sans SC 等字体都会显得中文特别高大。
这里采用了@recardo的方案,在Linux ,Window,Mac 上都是一样效果。
(when (eq system-type 'darwin)
(setq fonts '("Monaco" "STKaiti"))
(set-face-attribute 'default nil :font
(format "%s:pixelsize=%d" (car fonts) 15))
(setq face-font-rescale-alist '(("STKaiti". 1.2))))
(when (eq system-type 'windows-nt)
(setq fonts '("Inconsolata" "华文楷体"))
(set-face-attribute 'default nil :font
(format "%s:pixelsize=%d" (car fonts) 20))
(setq face-font-rescale-alist '(("华文楷体". 1.0))))
(when (eq system-type 'gnu/linux)
(setq fonts '("Inconsolata" "STKaiti"))
(set-face-attribute 'default nil :font
(format "%s:pixelsize=%d" (car fonts) 18))
(setq face-font-rescale-alist '(("STKaiti". 1.0))))
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font) charset
(font-spec :family (car (cdr fonts)))))
更新:针对三大系统进行设置,更加方便不同系统使用不同字体和不同的缩放比例。
Inconslata 中文缩放1.0;Monaco,中文缩放1.2。
3 个赞
这个两个字体我是在Majaro Linux测试过没问题的。 你可以试试别的字体,原理上任何字体都可以,只是要微调缩放的比例。不同字号比例不一样。
goumao
95
等距更纱黑体(简体中文)+ Nerd Fonts图标库,中英文宽度完美2:1,Powerline/Powerlevel10k的好搭档。
mushou
96
为什么这个字体在我这里不是中英文1:2呢?
arch linux系统,kde桌面环境,不想用cnfonts那些工具,视觉体验感觉不好
goumao
99
你自己看下汉字和英文的font size,应该是你的emacs自己有配置。
你也可以去终端下跑emacs,把终端的字体设置成这个,然后看看是不是对齐
goumao
100
看你的主题,像doom-one
你把光标置于汉字/英文里,然后M-x 执行 describe-font
里,
就能看到相应的字体配置了