Высота шрифта изменяется в DejaVu при этом размере точки, потому что информация о высоте шрифта между двумя обычным шрифтом и полужирным шрифтом отличается, когда она должна быть одинаковой.
Используемый мной шрифт DejaVu Sans Mono 10 не изменяет высоту шрифта между нормальным и жирным шрифтом. Я установил это в моем .emacs с(set-frame-font "DejaVu Sans Mono-10")
Так что у вас есть с чем сравнить информацию о шрифте "DejaVu Sans 10" через (font-info на Emacs 25):
(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) между normal и bold или что-то другое, чем DejaVu.
Что касается того, что вызывает это, это может быть одна из ваших библиотек (мой gtk - libgtk-x11-2.0.so.0), но я сомневаюсь, что это будет именно эта библиотека. Также сомневаюсь, что это файл или пакет ttf. Скорее всего, это рендеринг freetype (у меня есть libfreetype.so.6). Поскольку DejaVu масштабируется так же, как и другие шрифты, которые работают на вас, ошибка вычисления, возникшая в результате написания DejaVu, объяснит, почему они работают в некоторых размерах, но не в других.
Чтобы проверить, является ли проблема специфичной для Emacs или нет, вы можете вызвать два окна терминала, одно с жирным приглашением, а другое без, и сравнить межстрочный интервал на них. Если он отличается от Emacs, то это связано с рендерингом и / или шрифтом.
Если вы скомпилировали emacs, там может что-то происходить.
C-u C-x =
. Вы, вероятно, обнаружите, что либо лицо, влияющее на defun, либо пример, влияющий на лицо, имеют различные атрибуты, которые отвечают за поведение, которое вы видите, например, кроме основного цвета переднего плана. Атрибуты лица могут быть настроены пользователем.