我的等宽方法,同样设置系数缩放,但不调整行距,而是通过修改行号字体预先渲染单行的高度,从而保证在中英混合字体时,不会因为先输入英文再输入中文而发生行高变化导致抖动
缺点:
1.如果中英字体选择的差距大,仍然会看上去不协调美观
优点:
1.调整行号更美观一些,而且不会导致由于调整行高行距导致的其他一系列问题,比如:在文档最后一行只输入英文,然后直接回车到下一行。如果是调整行距的方法则会发现行高发生变化。
2.可以较为自由的组合自己喜欢的中英字体和行号字体
想到了就糊了一个给大家参考,如果还有更好的,请一定也放出来让我学习一下
方法123是我已知的,方法4是我糊的,不需要调整行距,而是直接根据比例放大后的中英文字体中最高的字体高度,调整行号的每行高度到正文行高相同,在渲染行号时直接将行高撑到足够容纳中英文字体的最小高度,从而不通过调整行距仍能避免中英同行输入时产生的抖动
5 个赞
最好的办法是自己修改字体文件,比如加高英文字体的高度。比如 commitmono 这个字体是可以自定义高度的。
(set-font "Cascadia Code" "HarmonyOS Sans SC" 28 32)
(setq default-text-properties '(line-spacing 0.06 line-height 1.15))
;;通过设置行高属性的方式避免英文行输入中文后的行高抖动
感谢楼主,又学到了
1 个赞
主要是修改字体的方式可能不太适合我,所以糊了这个,因为我更喜欢可以自由选择字体。
我现在使用的是 cnfonts 。
下面是我的配置,非常简单方便就可以实现中英文的对齐。
(use-package cnfonts
:ensure t
:hook
(after-init . cnfonts-mode)
:config
(setq cnfonts-profiles
'("program" "org-mode" "read-book"))
(setq cnfonts-personal-fontnames
'(("CaskaydiaCove Nerd Font Mono")
("Sarasa Term SC Nerd")
()
("Segoe UI")
))
)
Nasy
6
不用rescale的话,怎么保证整体放大缩小时候依然等宽呢?
比如我日常用着12pt,当我做presentation的时候需要放大到24甚至32。
还是用rescale的,方法123只是常见方法,方法4才是新糊的,