字体高度在DejaVu中在该点大小处会发生变化,因为两个普通字体和粗体字体之间的字体高度信息在应该相同时会有所不同。
我使用的DejaVu Sans Mono 10字体不会在普通和粗体之间更改字体高度。我在.emacs中将其设置为(set-frame-font "DejaVu Sans Mono-10")
因此,您可以通过(Emacs 25上的font-info)来比较“ DejaVu Sans 10”字体的信息:
(font-info "DejaVu Sans Mono-10")
["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1"
"DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:
width=normal:spacing=100:scalable=true" 13 17 0 0 0 8 13 4 8 8
"/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf" (opentype ((DFLT ...) )))]
根据后续信息进行编辑:
在上面的字体信息中,我显示的字体高度为17,而您报告的高度为15(正常)或16(粗体)。在emacs 25中,在这3个0之后有其他字体信息,特别是字体下降为4。
尽管我在Emacs 24或25上使用DejaVu Sans Mono和Bold变体没有问题,但最简单的方法是使用不会改变普通和粗体之间的宽度(如font-info所示)的字体和大小或DejaVu以外的其他内容。
至于是什么原因造成的,它可能是您的一个库(我的gtk是libgtk-x11-2.0.so.0),但是我怀疑这将是这个特定的库。还怀疑它是ttf文件或软件包。Freetype渲染更有可能(我有libfreetype.so.6)。由于DejaVu的缩放比例与其他对您有用的字体的缩放比例一样,DejaVu编写方式所产生的计算错误会解释为什么这些字体在某些尺寸下会起作用,而在其他尺寸下无法起作用。
要验证问题是否是Emacs特有的,您可以打开两个终端窗口,一个带有粗体提示,另一个不带,并比较它们之间的行距。如果像Emacs这样不同,则这与渲染和/或字体有关。
如果您编译了emacs,则可能会发生某些情况。
C-u C-x =
。您可能会发现影响defun的人脸或影响示例的人脸具有与您看到的行为有关的不同属性-例如,除了前景的基本颜色以外。面部属性可以由用户自定义。