Nп/п : 1 из 100
 От   : Vitaliy Aksyonov                    1:104/117         17 мар 24 13:26:44
 К    : All                                                   17 мар 24 22:29:03
 Тема : Борьба с псевдографикой
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 1:104/117 65f74430
@CHRS: CP866 2
@TZUTC: -0600
@TID: hpt/lnx 1.9 2022-07-03
Привет, All!

* Originally in ru.golded
* Crossposted in pvt.luna.local

 По результатам долгих исследований, как же так получается, что у
меня нормально выводится псевдографика, а у Нила нет, решил написать
небольшую инструкцию, как сделать так, чтобы правильно отображались символы с
кодами больше 127. То есть это национальные алфавиты и та самая
псевдографика.

 Сразу оговорюсь, что это для линукса (скорее всего очень похоже и
для MacOS), однобайтовых кодировок и локалей. Про юникод здесь нет
ничего. Хотя я планирую разобраться, как можно выводить юникод с существующим
кодом. Есть ненулевая вероятность, что это возможно.

 Итак, если у вас есть проблемы с выводом псевдографики, или вообще
проблемы с выводом неанглийских символов в GoldEd, надо проверить несколько
вещей. Я буду приводить примеры с KOI8-R, но должно так же без проблем
работать и с CP866, CP437, CP1125 и других однобайтовых кодировках.

 Также моя инструкция подразумевает, что не используются никакие
перекодировщики (вроде luit) или терминал мультиплексоры (screen, tmux).

 1. Убедитесь, что ваш терминал использует правильную кодировку. Я
пробовал и удаленный доступ через ssh (Putty) и локальную консоль (гномовский
терминал). В обоих случаях я выбрал KOI8-R в качестве кодировки.

2. Попробуйте выполнить вот такой простой скрипт:

printf `%b` $(printf `\\%03o` {128..255})

 Он должен выдать вам последовательность русских букв, символов
псевдографики и несколько специальных символов. Если выводятся квадраты, знаки
вопроса или другой бред - разбирайтесь с настроками терминала. Это кодировка
и шрифт.

 3. Очень важно, чтобы при запуске GoldEd была выбрана правильная
локаль. В моём случае это ru_RU.koi8r. Может отличаться в зависимости от
системы. Тут еще надо понимать, что совсем необязательно менять локаль для
всей системы. Локаль - это свойство процесса и можно просто запустить
GoldEd в локали, отличной от системной. Что я и делаю вот так:

LANG=ru_RU.koi8r gedlnx -C

 Также обязательно проверьте, что такая локаль в системе вообще есть.
Узнать это можно, выполнив команду locale -a. Если нужной локали в вашей
системе нет - читайте документацию к дистрибутиву, как доставить или
сгенерировать нужные локали.

Этого должно быть достаточно, чтобы псевдографика отлично показывалась.

 В чём же проблема, когда выбрана "неправильная" локаль. Дело в том,
что ncurses (библиотека, которую GoldEd использует для вывода текста)
пытается определить, является ли каждый выводимый символ "печатаемым". И делает
это с помощью функций isprint и iscntrl. Так вот, когда локаль не
соответствует выводимому тексту, то символы псевдографики распознаются как
непечатные. В этом случае ncurses конвертирует их с помощью специальной таблицы
в последовательности вроде M~D, где первый символ - это Ctrl, Alt, а
дальше английская буква.

 Еще несколько моментов. У меня нормально завелась связка с запуском
GoldEd через luit. Но я предпочитаю запускать его напрямую.

 Надеюсь, что эта инструкция поможет кому-то ещё. Ну и для себя
прикопаю на будущее.

Best regards,
Vitaliy Aksyonov.

... Я больше не пью... И меньше тоже!
--- GoldED+/LNX 1.1.5-b20240305-beta
 * Origin: Aurora, Colorado (1:104/117)
SEEN-BY: 104/117 5001/100 5005/49 5015/46 255
5019/40 5020/715 830 848 1042
SEEN-BY: 5020/4441 12000 5030/49 1081 5058/104
5061/133
@PATH: 104/117 5020/1042 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх