插入不常见的数学 Unicode 符号(通常通过 font-lock-add-keywords)时,我遇到这个问题:当我的默认字体没有特定字符时,会使用包含该字符的另一种字体。
不知何故,第二种字体中的符号高度有时与第一种字体中所有常规字符的高度不同,可能相差一个像素。这会改变当前行的高度,并且当我输入符号时,会将大量屏幕文本“向上/向下移动”一个像素,这非常令人恼火。(导致此问题的默认替代字体是 Arial。)
当“Source Code Pro”是默认字体时,我目前通过使用类似这样的方法解决这个问题:
(set-default-fontset "fontset-default" '(#x???? . #x????) "DejaVu Serif")
范围类似于 2100..23ff、27c0..27ff、2900..2bff。有时,当我发现 DejaVu Serif 也没有该字符时,这种方法就行不通了,我需要找到另一种高度相同的字体。这是在 OS X 10.9.3 上的 emacs 24.3 中。
一个相关的问题是,对于某些字符,根据字符是否在选定区域内突出显示,会使用不同的字体(不同的高度)。
为什么会发生这种情况?我该怎么办?我并不特别在意使用哪种字体,只要行高不跳跃即可。有什么建议吗?有什么方法可以调整第二种替代字体的高度使其完全相同吗?