org-mode 如何设置字体

现在遇到一个问题,使用spacemacs中默认配置,orgmode的中文字体变成了繁体行楷字体。内容本身是简体的。 Linux环境下是正常的,有问题的环境是mac的环境。 image

1 个赞

首先,内容本身并不和任何字体有关,内容是文字编码,emacs只是decoding它。

具体的Emacs编码设置是这样的:

  1. 可以通过菜单栏的字体设置选项来设置

    弊端: 在windows下这种设置很尴尬因此我推荐第二种

  2. 代码如下:

  (set-face-attribute 'default nil :font "DejaVu Sans Mono 11")
  ;; Setting Chinese Font
  (dolist (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font)
  		      charset
  		      (font-spec :family "Microsoft Yahei" :size 16))))

声明: 这一段代码是我从网上找的,当中的字体我换成了自己的。至今在win10上完美支持。

第一行的 face-attribute 在我这里的结果上设置的是英文字体 我是用的是 Dejavu 的英文字体,但是我看不懂这个函数的具体返回是什么,所以我说是结果上,如果有大佬愿意回答这个问题,我请吃饭 :slight_smile:

下面的结果是设置的cjk编码,函数我还是看不懂,还请大佬们帮忙。 我使用的是google的开源字体。

你可以尝试一下。

3 个赞

返回值?正确设置没有返回(返回 nil):

(set-face-attribute 'default nil :font "DejaVu Sans Mono 11")
;; => nil

错误设置的时候才会有返回(报错):

(set-face-attribute 'default nil :font "DejaVu Sans M0n0 11")
;; => et-face-attribute: Font not available: #<font-spec nil nil DejaVu\ Sans\ M0n0 nil nil nil nil nil 11.0 nil nil nil ((:name . "DejaVu Sans M0n0 11") (:user-spec . "DejaVu Sans M0n0 11"))>

我一直以为需要设置org相关的face,并且设置完了也没有作用。 理解方向错了。

两种方法确实都有效果,谢谢了~

(dolist (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font)
		      charset (font-spec :family "Noto Sans Mono CJK SC"))
    (setq face-font-rescale-alist '(("Noto Sans Mono CJK SC" . 1.2))))
  )

设置了 :size 大小好像会有字体放缩问题,用 face-font-rescale-alist 完美。 https://baohaojun.github.io/blog/2012/12/19/perfect-emacs-chinese-font.html

2 个赞

虽然有广告的嫌疑,不过我还是想说: 你们可以试试 cnfonts, 看着你们折腾字体,我就觉得肝疼。。。。

1 个赞

早就用上了,就是放大字体的时候只有英文放大,大佬 :rofl:

还有只有启动初始化配置cnfont才能启动,临时开启没效果

cnfonts 有专门的放大缩小字体的命令

ok 我研究一下 谢啦

果然 感谢 你的帮助 :star_struck:

直接输入M-x cnfonts-edit-profile后设置中英文字体立即就能生效了。

完美。之前一直不知道face-font-rescale-alist怎么用才好。不过,这个比例该怎么调?1.2的话,org-mode表格中的中英文无法对齐啊。

我现在单独给 org-table 设一个等宽字体,其它的就不管了,反正我喜欢的中英文字体永远对不齐 :joy:

;; Org table font
(custom-set-faces
 '(org-table ((t (:family "Ubuntu Mono derivative Powerline")))))
1 个赞

我试了一下,比例调为1.22或1.23可以让表格近似对齐,在放大的情况会有些明显。可以算作比较近似解决方案。

参考这个方式修改了配置,确实可以。

我想在table里分别设置跟其他位置不同的中英文等宽字体,可以给个参考吗? 谢谢!

按照zsxh的方法自己实现不了,总是有一处出问题……

这个应该还漏了 |-----+-----+----|