Org mode 中英混排对齐的问题

看到你的截图中汉字是斜体的,请问怎么做到的?谢谢

注释的 Face 定义成了斜体

感觉还是完全看英文字体

我用 PragmataPro 的话对齐就完全没问题,因为它的英文字母窄,同样大小的中文字正好是两个英文字母的宽度。

效果不错,只是好像中文的字体比英文的要高一些

1 个赞

按照codefalling的方法,试了下Inconsolata 字体也能达到对齐的目的,缩放也不影响对齐问题. 个人感觉比Ubuntu 的字体好看。更清楚些

下载地址:Google font-Inconsolata

3 个赞
;; https://github.com/jixiuf/vmacs/blob/master/conf/custom-file.el
;; 如果配置好了, 下面20个汉字与40个英文字母应该等长
;; here are 20 hanzi and 40 english chars, see if they are the same width
;;
;; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
;; 你你你你你你你你你你你你你你你你你你你你|
;; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|
;; 。。。。。。。。。。。。。。。。。。。。|
;; 1111111111111111111111111111111111111111|
;; 東東東東東東東東東東東東東東東東東東東東|
;; ここここここここここここここここここここ|
;; ココココココココココココココココココココココココココココココココココココココココ|
;; 까까까까까까까까까까까까까까까까까까까까|

(defun create-frame-font-mac()          ;emacs 若直接启动 启动时调用此函数似乎无效
  (set-face-attribute
   'default nil :font "Menlo 12")
  ;; Chinese Font
  (dolist (charset '( han symbol cjk-misc bopomofo)) ;script 可以通过C-uC-x=查看当前光标下的字的信息
    (set-fontset-font (frame-parameter nil 'font)
                      charset
                      (font-spec :family "PingFang SC" :size 14)))

  (set-fontset-font (frame-parameter nil 'font)
                    'kana                 ;script ココココココココココココココココココココココココココココココココココココココココ
                    (font-spec :family "Hiragino Sans" :size 14))
  (set-fontset-font (frame-parameter nil 'font)
                    'hangul               ;script 까까까까까까까까까까까까까까까까까까까까
                    (font-spec :family "Apple SD Gothic Neo" :size 16))

  )
(when (and (equal system-type 'darwin) (window-system))
  (add-hook 'after-init-hook 'create-frame-font-mac))

(defun create-frame-font-w32()          ;emacs 若直接启动 启动时调用此函数似乎无效
  (set-face-attribute
   'default nil :font "Courier New 10")
  ;; Chinese Font
  (dolist (charset '( han symbol cjk-misc bopomofo)) ;script 可以通过C-uC-x=查看当前光标下的字的信息
    (set-fontset-font (frame-parameter nil 'font)
                      charset
                      (font-spec :family "新宋体" :size 16)))

  (set-fontset-font (frame-parameter nil 'font)
                    'kana                 ;script ココココココココココココココココココココココココココココココココココココココココ
                    (font-spec :family "MS Mincho" :size 16))
  (set-fontset-font (frame-parameter nil 'font)
                    'hangul               ;script 까까까까까까까까까까까까까까까까까까까까
                    (font-spec :family "GulimChe" :size 16)))

(when (and (equal system-type 'windows-nt) (window-system))
  (add-hook 'after-init-hook 'create-frame-font-w32))

(defun  emacs-daemon-after-make-frame-hook(&optional f) ;emacsclient 打开的窗口相关的设置
  ;; (when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
  ;; (when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
  ;; (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
  (with-selected-frame f
    (when (window-system)
      (when (equal system-type 'darwin) (create-frame-font-mac))
      (when (equal system-type 'windows-nt) (create-frame-font-w32))
      ;; (set-frame-position f 160 80)
      ;; (set-frame-size f 140 50)
      ;; (set-frame-parameter f 'alpha 85)
      ;; (raise-frame)
      )))

(add-hook 'after-make-frame-functions 'emacs-daemon-after-make-frame-hook)

4 个赞

这是正确使用 cfs 的一种姿势,也符合我设计这个 template 命令的初衷,教程写的很好,赞

等宽和等高往往是不能兼顾的, 如果字体选择合适,等宽和登高确实可以同时实现。

这个效果确实好! 不过我的是Source Code Pro 14+ STFangsong 16 :+1:

;;WIn7下使用Emacs-25会遇到卡顿,解决方法为使用 Microsoft YaHei Mono 字体。
(custom-set-faces
'(default ((t (:family "Microsoft YaHei Mono" :foundry "outline" :slant normal :weight normal :height 98 :width normal)))))
;;如使用Microsoft YaHei Mono,则可使用如下设置
;; Chinese Font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font) charset (font-spec :family "Microsoft YaHei" :size 14)))

Microsoft YaHei Mono 字体网上挺多地方可能下到,但还是建议保存一下,编程和非编程都很适合。 http://www.sdbeta.com/xiazai/2016/0805/99188.html

好像随便设置一个中文字体就可以解决卡顿问题

已经使用 这个字体看起来非常舒服 谢谢

这个设置只有在字体固定大小时有效,一放大或缩小,又对不齐了。

这也是我维护 chinese-fonts-setup 的原因, cfs 可以将常用的所有字号都实现对齐, 放大缩小字体也不影响对齐效果

1 个赞

等等,似乎没必要设置全局字体,可以只设置 org-table 字体。

这样字体强迫症有福了。

1 个赞

终端模拟器结合emacs virtual modifier可以解决按键问题

安利一个知乎believe制作的 中英文都等宽的字体

https://be5invis.github.io/Iosevka/

觉得细可以用bold

好像有其他问题,中文是对齐了,但是这个。。。

代码在ubuntu 17.10 运行emacs时,中文字体不能正常加载,需要如下修改:

(setq fonts
  (cond ((eq system-type 'darwin)     '("Monaco"    "STHeiti"))
        ((eq system-type 'gnu/linux)  '("DejaVu Sans Mono"     "WenQuanYi Zen Hei"))
        ((eq system-type 'windows-nt) '("Consolas"  "Microsoft Yahei"))))

(set-face-attribute 'default nil :font
		    (format "%s:pixelsize=%d" (car fonts) 14))

(when (display-graphic-p)
  (dolist (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font)
		      charset
		      (font-spec :family (car (cdr fonts))))))
2 个赞

这是我的 emacs 相关配置(GNU/Debian)

(defun self-font()
  (interactive)
  (set-frame-font (format "%s:pixelsize=%d" "Monaco" 13) t)
  (dolist (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font) charset
                      (font-spec :family "Hiragino Sans GB W3" :size 16))))

(if window-system (self-font))

总的思路就是「中文字体 用 冬青黑体-16」, 「英文用 Monaco-13」
想要查询光标位置的字体可以用 C-u C-x =

效果如下
image

3 个赞