cnfonts 是一个 Emacs 中英文字体配置工具。可以比较方便地实 现中文字体和英文字体等宽(也就是大家常说的中英文对齐)
如果觉得太重 可以设置好后 单独拿出配置
实测发行版也可用
cnfonts 是一个 Emacs 中英文字体配置工具。可以比较方便地实 现中文字体和英文字体等宽(也就是大家常说的中英文对齐)
如果觉得太重 可以设置好后 单独拿出配置
实测发行版也可用
论坛卧虎藏龙 各种大佬 活捉一个
emacs 中文用户圈很小的,许多大牛都在这个论坛里面晃荡。。。。
据说跟神器 valign 冲突,反正有了 valign 表格对齐不是问题,其它场合不太需要中文字符宽度两倍于西文字符。
有既等宽也等高的字体吗?
有,sarasa gothic,里面的 sarasa slab sc 就是等高与等宽的。
不过用 sarasa 用久了可能有点审美疲劳,我现在都是使用非等高等宽字体了,我只要求等高,用rescale来达到等高的效果。而在org-mode里面还是需要用到等高等宽的字体的。所以我的配置如下:
(use-package faces
:custom-face
(variable-pitch
((t (:font ,(font-xlfd-name (font-spec :family "Iosevka"
:foundry "Outline"
;; If we do not specify this, Emacs
;; selects ascii and we miss accents
:registry "iso10646-1"))
:slant normal :weight normal
:height 138 :width normal))))
(default
((t (:font ,(font-xlfd-name (font-spec :family "Comic Mono"
:foundry "Outline"
;; If we do not specify this, Emacs
;; selects ascii and we miss accents
:registry "iso10646-1"))
:slant normal :weight normal
:height 140 :width normal))))
(fixed-pitch
((t (:inherit default))))
:config
(defun colawithsauce/set-unicode-fonts (&optional frame)
"Setting unicode-char fonts for emacs."
;; Use Noto for everything to get consistent view
;; Chinese, simplified
(set-fontset-font t 'unicode (font-spec :family "Sarasa Mono Slab SC" :weight 'normal) frame)
;; Symbols, including b/w emoji
(set-fontset-font t 'symbol "Apple Color Emoji" frame 'prepend))
;; For initial frame
(add-hook 'after-init-hook #'colawithsauce/set-unicode-fonts)
(add-hook 'after-make-frame-functions #'colawithsauce/set-unicode-fonts)
;; Rescale to restrict font into same height.
(add-to-list 'face-font-rescale-alist '("Apple Color Emoji" . 0.9))
(add-to-list 'face-font-rescale-alist '("Sarasa Mono Slab SC" . 0.88))
;; Disable font rescale in variable-pitch mode
(defun colawithsauce/disable-rescale-maybe ()
"remove stuffs in `face-font-scale-alist' when in buffer-face-mode."
(if buffer-face-mode
(setq-local face-font-rescale-alist nil)
(setq-local face-font-rescale-alist '(("Sarasa Mono Slab SC" . 0.88) ("Apple Color Emoji" . 0.9) ("-cdac$" . 1.3)))))
(add-hook
'buffer-face-mode-hook #'colawithsauce/disable-rescale-maybe)
)
不过现在还有一些问题
company-posframe
会使用 Noto CJK
字体,怎么调也调不好,很神秘。meow-cheatsheet
的时候,有的字体是 comic mono,而另外的字体就使用的是 Noto CJK,明明在同一个终端里面,而且comic mono也有这个字符的字体,不知道为啥非要使用其它的字体来显示这个字符。我知道这些问题都是因为我没有仔细了解 emacs 的字体机制而乱配置导致的,但是因为感觉也不影响使用,就一直没有去研究了。
我是用网上以前分别为不同字符集设置字体的配置:
(set-face-attribute 'default nil :font "Lucida Console 16")
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset (font-spec :family "等线"
:size 32)))
这段代码好像很老了,只能做到等宽。
因为我发现设置 variable-pitch 对单独设置了中文字体的配置不管用,于是我就自己写了一个函数整了下。
在进入 variable-pitch-mode 的时候将字符恢复 scale 以实现等宽,而在其它的时候中文字体就缩小一点以实现等高。
就是我贴的代码的最后一个 defun
你那个faces包是哪里来的?我看了一下melpa好像没有这个。
;;; faces.el --- Lisp faces -*- lexical-binding: t -*-
;; Copyright (C) 1992-1996, 1998-2020 Free Software Foundation, Inc.
;; Maintainer: [email protected]
;; Keywords: internal
;; Package: emacs
;; This file is part of GNU Emacs.
这里没看到org的相关配置,请问是怎样只在org里使用等宽等高?