我感觉如果能够解决“等宽与等高”不可兼得的问题就可以了,比如引入个全局的 min-line-height
保证行高。
在保证行高相等的情况下,中文 emacs 社区似乎有好多种技巧可以实现等宽(虽然不一定很完美)。
如果“等高等宽”问题不能完美解决,至少做到对字体不过分挑剔就能接受?比如 最完美解决vscode中文等宽字体的方案 这里直接使用 Ubuntu Mono 就可以,但是在 emacs 里面还是会出问题。
我感觉如果能够解决“等宽与等高”不可兼得的问题就可以了,比如引入个全局的 min-line-height
保证行高。
在保证行高相等的情况下,中文 emacs 社区似乎有好多种技巧可以实现等宽(虽然不一定很完美)。
如果“等高等宽”问题不能完美解决,至少做到对字体不过分挑剔就能接受?比如 最完美解决vscode中文等宽字体的方案 这里直接使用 Ubuntu Mono 就可以,但是在 emacs 里面还是会出问题。
我也这么想的,我提交了一个 bug,希望添加一个类似 line-height 的变量,但后来和 emacs 维护者讨论的过程中,感觉希望越来越小了, 就好比一个人快要饿死了,要口吃得,但财主一直在考虑窝头不好消化,肥肉容易胆固醇,瘦肉吃多了致癌的事情。。。。
这个是指的要在emacs中从根本上所有核心mode中都解决这个问题吗?这个应该是没希望,但我觉得只要在org-mode中能解决就不错了,org-mode也是emacs中最需要这个的。
还是说我的理解又有问题,仅仅只是org-mode解决这个问题和emacs所有核心mode都解决这个问题难度是差不多的?
这个和 mode 关系应该不大,如果 org-mode 能完美解决,那么相同方法用在其他 mode 也可以。
并不是,org-mode的表格有明显的分界字符,所以org-mode的解决方法未必可以适用其他没有分界字符的情形。
你别说,这两天 emacs 大牛正在搞 min-width display 属性,我刚才试了试,也可以用来做中英文对齐,下面是测试代码,需要 emacs git
(defun eh-align-chinese ()
(interactive)
(dolist (window (window-list))
(save-window-excursion
(with-selected-window window
(let* ((inhibit-read-only t)
(buffer (window-buffer window))
(n1 (window-start window))
(n2 (window-end window))
(flag t))
(with-current-buffer buffer
(while flag
(let ((str (ignore-errors (buffer-substring n1 (+ n1 1)))))
(when (and str (stringp str) (string-match-p "\\cc" str))
(add-display-text-property n1 (+ n1 1) 'min-width (list 2.0))))
(setq n1 (+ n1 1))
(when (> n1 n2)
(setq flag nil)))))))))
(add-hook 'post-command-hook #'eh-align-chinese)
看起来有扔掉 sarasa 的可能?(好不容易才习惯了他这个瘦长的英文字体)
汉字两边加空白是相对最佳方案
现在主要问题不是行高吗?对齐的话,cn-fonts 已经满足一般需要了。
截图看起来不错? 。
我把这个代码放到 cnfonts 里面了,如果有人使用 emacs 29,就可以试试,使用 post-command-hook 来更新,感觉稍微有点影响性能,也可能是我的电脑太low
大佬,是不是很开心?
哈哈,确实有点,不过如何优化这个命令的性能,确实还需要考虑
哇,可以从sarasa解放了!