Org mode 中英混排对齐的问题

Ubuntu Mono 11 + Microsoft Yahei 22。在13寸的1920x1080分辨率的笔记本上。

为什么我单独对org-table字体进行设置,会报错说“Invalid face” org-table. org version: 9.3.

你这个报错,跟我是一样的。实际我用了cnfonts这个包也很好,不过现在我用等距更纱系列字体可以做到宽高都对齐。

windows下出现乱码

发现使用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。

2 个赞

非常漂亮,很好。

用了你的配置后字体间距变得超级稀:

中文字体正常,英文字体变稀

你用的是什么字体啊?这个问题我好像之前也遇到过。

Inconsolate,下载地址: https://github.com/googlefonts/Inconsolata

用的是 ttf

华文楷体, 下载地址:https://www.jb51.net/fonts/131728.html

linux系统。

这个两个字体我是在Majaro Linux测试过没问题的。 你可以试试别的字体,原理上任何字体都可以,只是要微调缩放的比例。不同字号比例不一样。

等距更纱黑体(简体中文)+ Nerd Fonts图标库,中英文宽度完美2:1,Powerline/Powerlevel10k的好搭档。

为什么这个字体在我这里不是中英文1:2呢? arch linux系统,kde桌面环境,不想用cnfonts那些工具,视觉体验感觉不好 :shushing_face:

应该是字体没用上吧~~~

你看下中英文是不是和我给出的截屏中的字体一样

image 字体应该是用上了,但是没有2:1

Snipaste_2020-12-06_21-53-33

你自己看下汉字和英文的font size,应该是你的emacs自己有配置。

你也可以去终端下跑emacs,把终端的字体设置成这个,然后看看是不是对齐

看你的主题,像doom-one

你把光标置于汉字/英文里,然后M-x 执行 describe-font里, 就能看到相应的字体配置了

调了一下字体大小,现在对齐正常了,多谢了 :blush: image

最新的黑科技是 valign 这个包,连字体都不需要设置就可以自动对齐了。

1 个赞

理论上来讲,任何字体大小都应该对齐的。
下图是我把字体大小降低一半的效果
(现在为8,前面的截屏是16)

Snipaste_2020-12-07_08-06-02

所以,应该不是字体文件本身的原因
而是你的emacs之前在某处已经对中文和英文设置了不同的字体大小。
(可以用我前面的帖子提到的方法进行确认)
然后你这里用重新设置了font-size,中英文的大小统一了。