(求助) face text properties 的 :box 属性如何支持只显示一个边?

默认只支持单独设置box水平或垂直方向的边框,我需要设置为只显示一个边的边框,比如下边框(不使用 :underline 属性的原因是,它是字体的下划线,和一行的下边框位置上还是有差异的)。

text-properties 的显示是底层机制决定的,我估计得修改C源码。不知道使用 emacs 动态模块能否解决这个问题,比如重写这部分的C代码或打补丁,而不需要重新编译,不知道是否有这方面经验的大佬可以指点一下。

还有另外一个方案来模拟下边框:使用下一行的 :overline face属性,这样也是可以的。但也只是模拟,在复杂的情况下,需要处理一些特殊的情况,不漂亮。如果能实现原始的一行的下边框就更好了。

下图是使用下一行的 :overline 实现的下边框,效果还不错。如果能有原生的实现就更好了。

大佬,你这个效果相当不错呀。

block-render 是怎么实现的?麻烦分享一下。

目前的实现还比较丑,中英文混排在一些像素宽度下会出现单词间宽度过大或过小的情况,我在用 knuth-plass 算法重写这个实现,等完美了再分享出来。

1 个赞