При вставке необычных математических символов Юникода (обычно через font-lock-add-Keywords) я сталкиваюсь с такой проблемой, что когда у моего шрифта по умолчанию нет определенного символа, вместо него используется другой шрифт, который включает этот символ.
Почему-то высота символа во втором шрифте иногда отличается от высоты всех обычных символов в первом шрифте, возможно, на один пиксель. Это изменяет высоту текущей строки и "сдвигает" большую часть экранного текста на пиксель вверх / вниз, когда я набираю символ, что довольно раздражает. (Заменяющим шрифтом по умолчанию, вызывающим эту проблему, является Arial.)
В настоящее время я решаю эту проблему, используя что-то вроде этого, когда "Исходный код Pro" является шрифтом по умолчанию:
(set-default-fontset "fontset-default" '(#x???? . #x????) "DejaVu Serif")
Диапазон примерно такой: 2100..23ff, 27c0..27ff, 2900..2bff. Иногда это не работает, когда я узнаю, что у DejaVu Serif также нет символа, и мне нужно найти еще один шрифт с той же высотой, что и у меня. Это в emacs 24.3, в OS X 10.9.3.
Связанная проблема заключается в том, что для некоторых символов используется другой шрифт (разной высоты) в зависимости от того, выделен ли символ внутри выделенной области.
Почему это происходит, и что я могу с этим поделать? Меня не волнует, какой шрифт используется, если высота строк не прыгает. Какие-либо предложения? Можно ли как-нибудь настроить высоту второго альтернативного шрифта, чтобы он был точно таким же?