LINUX.ORG.RU

Исправление отображения символа списка в man'ах в системе с локалью KOI8-R


0

0

Сразу уточню, что речь идет о дистрибутиве Gentoo GNU/Linux с groff версии 1.19.1-r2, но описываемая проблема касается и пользователей большинства других дистрибутивов. Проблема заключается в том, что в системах с локалью KOI8-R, символы списка в man страницах отображаются некрасиво. Проверить это можно набрав man bash и осуществив поиск по регулярному выражению "^RESTRICTED SHELL". В этой секции man'а полно символов списка, которые в системе с локалью KOI8-R выглядят как псевдографическая буква "T", символ с кодом 0xB7. Весь смысл проблемы в том, что обычно вывод groff производится в кодировке ISO 8859-1, опция -Tlatin1 в /etc/man.conf. В кодировке ISO 8859-1 символ с кодом 0xB7 это "MIDDLE DOT", выглядящий как маленькая буква "o"; но в кодировке KOI8-R, которая используется на большинстве российских *nix систем, символ с кодом 0xB7 это псевдографический символ, похожий на букву "T" и списки из-за этого выглядят некрасиво. Для решения проблемы есть несколько способов:

1) Поменять в /etc/man.conf -Tlatin1 на -Tascii, после этого символы списков будут отображаться как "o", но этот способ не годится, если в системе есть кириллические man-страницы, так как используются только 7 бит. Также по этой же причине не будут нормально отображаться man страницы с интернациональными таблицами кодировки, такие как man koi8-r.

2) Способ, который использую я: в файле конфигурации шелла прописать export MANPAGER="/bin/tr '\267' o|${PAGER:-/usr/bin/less}". В этом способе перед тем, как передать обработанный текст man страницы пэйджеру less, tr заменяет все символы с кодом 0xB7 на символ "o". Преимущество в том, что теперь вместе с правильным символом списка нормально отображаются и кириллические man страницы. Недостаток в том, что в интернациональных таблицах кодировок, таких как man koi8-r, символ с кодом B7 тоже будет заменен на "o", в результате чего таблица выглядит неверно.

3) Переехать на системную кодировку UTF-8, автоматически решив данную проблему и создав много новых с приложениями, которые до сих пор нормально не поддерживают Юникод, такие как mc (не особо и нужен!), zsh (наоборот программа первостепенной необходимости), все графические приложения GTK1 (из которых, например, xmms с множеством существующих для него плагинов ничем не заменить).

4) Написать патч к groff, добавляющий кодировку -Tkoi8-r, а также попытаться протащить его в официальную дистрибьюцию groff'а. Если протащить патч в апстрим не удастся, то для каждой новой вышедшей версии groff'а дорабатывать написанный патч и пересобирать groff из исходников с этим патчем. Вроде бы, в дистрибутиве SuSE для решения описанной проблемы используется именно патч.

5) Другие способы, неизвестные автору поста?

Интересно было бы услышать соображения многоуважаемого all по поводу оптимального решения этой досадной проблемы.

Re: Исправление отображения символа списка в man'ах в системе с локалью KOI8-R

export PAGER=most - символ вообще не отображается, зато маны цветные Ж)
export PAGER=less - символ выглядит как "o"

Локаль koi8-r.

W98 ()

Re: Исправление отображения символа списка в man'ах в системе с локалью KOI8-R

W98: а какой дистрибутив и его версия? Какая версия groff'а? Судя по всему он у тебя пропатчен, не мог бы ты посмотреть, что на него наложены за патчи? Еще скажи пожалуйста, в /etc/man.conf у тебя -Tlatin1, -Tascii или -Tчто-то_еще?

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