Summary: | bash(1) | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Michael Shigorin <mike> |
Component: | groff-base | Assignee: | Alexey Gladkov <legion> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | legion, php-coder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Michael Shigorin
2008-12-04 23:31:32 MSK
It depends on groff/man version. bash(1) looks fine in 4.0 environment, where $ rpmquery groff-base man groff-base-1.19.2-alt2.0 man-1.5m2-alt4 Эта бага зависит от локали. У меня на LANG=ru_RU.UTF-8 всё нормально, но с LANG=C бага действительно есть. Скорее всего глючит перекодировка. Пока считаю что это бага groff. Пишу для информации. Вот часть bash(1): .PP An OR list has the form .RS .PP \fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP groff_char(7): The extensible bracket pieces are font-invariant glyphs. In classical troff only one glyph was available to vertically extend brackets, braces, and parentheses: `bv'. We map it rather arbitrarily to u23AA. pad:~> locale LANG=ru_RU.KOI8-R LC_CTYPE=uk_UA.KOI8-U LC_NUMERIC=C LC_TIME=C LC_COLLATE=uk_UA.KOI8-U LC_MONETARY=C LC_MESSAGES=C LC_PAPER="ru_RU.KOI8-R" LC_NAME="ru_RU.KOI8-R" LC_ADDRESS="ru_RU.KOI8-R" LC_TELEPHONE="ru_RU.KOI8-R" LC_MEASUREMENT="ru_RU.KOI8-R" LC_IDENTIFICATION="ru_RU.KOI8-R" LC_ALL= (In reply to comment #4) > pad:~> locale > LANG=ru_RU.KOI8-R > LC_CTYPE=uk_UA.KOI8-U С 8-битными кодировками всё не очень хорошо ... сейчас groff переводит в utf8 внутри себя... а потом man переводит её в нужную локаль с помощью iconv. При этом некоторые специальные символы теряются по понятным причинам. Как это лечить я пока не знаю. У вас есть идеи? (In reply to comment #5) > некоторые специальные символы теряются по понятным причинам. > Как это лечить я пока не знаю. У вас есть идеи? Я уже озвучивал идею - взять рекодер, который умеет транслировать отсутствующие в целевой кодировке символы в похожие или в последовательности (© -> (c), ¦ -> |). Я знаю recode(1), но можно и другие поискать. Впрочем, recode про 0+23AA не знает, и в | переводить его не умеет :-| Этот конкретный случай можно запатчить, но наверняка им дело не ограничится. (In reply to comment #7) > Впрочем, recode про 0+23AA не знает, и в | переводить его не умеет :-| Именно. Однозначного перевода не получится и символы будут теряться ... Видимо нужно писать другой транслятор, знающий про groff. Можно и таблички recode допилить, благо такой перевод для любой конверсии UTF-8 -> что-нибудь-ещё пригодится. (In reply to comment #9) > Можно и таблички recode допилить, благо такой перевод для любой конверсии UTF-8 -> > что-нибудь-ещё пригодится. Есть такой фонт: /usr/share/groff/1.19.3/font/devascii. Тут есть преобразование разных символов. Но вот беда ... там нет и остальных не ascii символов ... их можно добавить, скажем из devutf8 и таким образом получится dev8bit. (In reply to comment #10) > там нет и остальных не ascii символов ... их можно > добавить, скажем из devutf8 и таким образом получится dev8bit. На самом деле получилось не совсем так. :) Но получилось нечто. Новый девайс создать всё-таки пришлось, но лишь затем чтобы разделить utf8 и 8-битные кодировки. Проблему вроде как можно решить обычными макросами, а таблицу замен предоставил devascii. Вообщем, groff-1.19.3-alt3.20081215 и man-1.6f-alt8 выложены: ftp://devel.altlinux.org/legion/repo/ прошу протестировать. groff-base последней модели -- работает: * Mon Dec 15 2008 Alexey Gladkov <legion@altlinux.ru> 1.19.3-alt3.20081215 - New cvs snapshot (1.19.3 cvs20081215). - Fix special characters for 8-bit encodings. Сборка ушла в сизиф. Кроме тебя, Миша, никто не проявил интереса к тестированию сборки не проявил. Тем хуже для них. Да ладно, она ж работает :-) Спасибо! |