LINUX.ORG.RU

Emacs: разный шрифт для русского текста в utf-8 и koi


0

1

Всем привет.

Обнаружил такое несколько странное поведение емакса. Если открыть емаксом текстовый файл в кодировке utf-8, то в нём и русские, и английские символы отображаются, как и положено, одним шрифтом. Если же в этом же емаксе (даже без перезапуска) отрыть файл в кодировке koi8-r, то английские символы отображаются как и раньше, а русские - почему-то италиком. Предположение о том, что это какая-то проблема с шрифтами (отсутсвующие символы и т. д.) отметается в виду того, что если файл в utf8 - то проблема исчезает.

Проблема проявляется только с koi8. С cp1251 такого почему-то нет. emacs-23.3 (с 23.2 вроде была та же проблема). Дело точно не в моём конфиге - специально попробовал запустить емакс вообще без .emacs - результат тот же.

Как мне добиться одинакового отображения русских и английских символов для файлов в koi8-r?

★★

Собственно, италиком почему-то отображается русский текст, у которого установлен атрибут (text property) charset = koi8-r. После facemenu-remove-all текст становится нормальным.

slav ★★ ()

Проблема проявляется только с dejavu sans mono в качестве default-font. С liberation mono и terminus все в порядке.

dmsh ()

Похоже, что нужно поковырять fontset через set-fontset-font.

dmsh ()
Ответ на: комментарий от dmsh

> Проблема проявляется только с dejavu sans mono в качестве default-font. С liberation mono и terminus все в порядке.

Да, и правда, так. А в чём причина? Кривой dejavu sans mono? Почему тогда проблема проявляется только с koi8 (при том, что текст в буфере абсолютно одинаковый - отличается только наличием property charset)?

dejavu мне больше нравится, использовать вместо него liberation (а тем более - terminus) не хочется...

ЗЫ хотя вполне возможно что кривой именно dejavu. Т. к. в предыдущей версии емакса он вообще как-то криво отображался. В 23.3 стал отображатся более-менее нормально. Как бы вот его ещё отучить выбирать разный шрифт в зависимости от кодировки текста...

slav ★★ ()
Ответ на: комментарий от slav

Ну вот так работает, вроде бы. Не знаю насколько «правильное» такое решение.

 (set-fontset-font t 'koi8-r (font-spec :family "dejavu sans mono"))

dmsh ()
Ответ на: комментарий от dmsh

Ага, спасибо, я сам только что до этого дошёл. Можно даже чуть попроще:

(set-fontset-font t 'koi8-r "DejaVu Sans Mono")

Интересно почему он по дефолту так странно себя ведёт...

slav ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.