#1
|
|||
|
|||
Борьба с псевдографикой
Vitaliy Aksyonov написал(а) к All в Mar 24 13:26:44 по местному времени:
Привет, 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<path to my config> Также обязательно проверьте, что такая локаль в системе вообще есть. Узнать это можно, выполнив команду locale -a. Если нужной локали в вашей системе нет - читайте документацию к дистрибутиву, как доставить или сгенерировать нужные локали. Этого должно быть достаточно, чтобы псевдографика отлично показывалась. В чём же проблема, когда выбрана "неправильная" локаль. Дело в том, что ncurses (библиотека, которую GoldEd использует для вывода текста) пытается определить, является ли каждый выводимый символ "печатаемым". И делает это с помощью функций isprint и iscntrl. Так вот, когда локаль не соответствует выводимому тексту, то символы псевдографики распознаются как непечатные. В этом случае ncurses конвертирует их с помощью специальной таблицы в последовательности вроде M~D, где первый символ - это Ctrl, Alt, а дальше английская буква. Еще несколько моментов. У меня нормально завелась связка с запуском GoldEd через luit. Но я предпочитаю запускать его напрямую. Надеюсь, что эта инструкция поможет кому-то ещё. Ну и для себя прикопаю на будущее. Best regards, Vitaliy Aksyonov. ... Я больше не пью... И меньше тоже! --- GoldED+/LNX 1.1.5-b20240305-beta |
#2
|
|||
|
|||
Re: Борьба с псевдографикой
Vitaliy Aksyonov написал(а) к All в Mar 24 13:48:18 по местному времени:
Привет, All! 17 Mar 24 13:26, я писал(а) тебе: VA> По результатам долгих исследований, как же так получается, что у меня VA> нормально выводится псевдографика, а у Нила нет, решил написать VA> небольшую инструкцию, как сделать так, чтобы правильно отображались VA> символы с кодами больше 127. То есть это национальные алфавиты и та VA> самая псевдографика. [...skipped...] Ещё забыл важную вещь. Нужно обязательно проверить, что используется корректный тип терминала. "echo $TERM" выдаст вам, что сейчас используется. Он должен поддерживаться ncurses. Для проверки можно выполнить "infocmp" если выдаст длинную портянку - значит поддерживается. Если же напишет, что не найдена информация - надо доустановить нужные пакеты или попробовать сменить тип терминала. Best regards, Vitaliy Aksyonov. ... Работа на износ - ковыряние в носу. --- GoldED+/LNX 1.1.5-b20240305-beta |
#3
|
|||
|
|||
Борьба с псевдографикой
Stas Mishchenkov написал(а) к Vitaliy Aksyonov в Mar 24 09:20:48 по местному времени:
Нi Vitaliy! 17 Mar 24 13:48, Vitaliy Aksyonov -> All: VA> Он должен поддерживаться ncurses. Для проверки можно выполнить VA> "infocmp" если выдаст длинную портянку - значит поддерживается. Если VA> же напишет, что не найдена информация - надо доустановить нужные VA> пакеты или попробовать сменить тип терминала. [fido@brorabbit ~]$ infocmp -bash: infocmp: команда не найдена Нave nice nights. Stas Mishchenkov. --- Уборка, уборка - перейди на Егорку, стирка - на Ирку, а готовка на Вовку! |
#4
|
|||
|
|||
Борьба с псевдографикой
Cheslav Osanadze написал(а) к Stas Mishchenkov в Mar 24 11:46:38 по местному времени:
Привет Stas! 18 Мар 24 09:20, Stas Mishchenkov -> Vitaliy Aksyonov: VA>> Он должен поддерживаться ncurses. Для проверки можно выполнить VA>> "infocmp" если выдаст длинную портянку - значит поддерживается. VA>> Если же напишет, что не найдена информация - надо доустановить VA>> нужные пакеты или попробовать сменить тип терминала. SM> [fido@brorabbit ~]$ infocmp SM> -bash: infocmp: команда не найдена Боюсь ошибиться... apt-get install libncurses5-dbg Cheslav. ... Мягким органам - твёрдая рука! --- |
#5
|
|||
|
|||
Re: Борьба с псевдографикой
Vitaliy Aksyonov написал(а) к Cheslav Osanadze в Mar 24 07:46:36 по местному времени:
Привет, Cheslav! 18 Mar 24 11:46, ты писал(а) Stas Mishchenkov: VA>>> Он должен поддерживаться ncurses. Для проверки можно выполнить VA>>> "infocmp" если выдаст длинную портянку - значит поддерживается. VA>>> Если же напишет, что не найдена информация - надо доустановить VA>>> нужные пакеты или попробовать сменить тип терминала. SM>> [fido@brorabbit ~]$ infocmp SM>> -bash: infocmp: команда не найдена CO> Боюсь ошибиться... CO> apt-get install libncurses5-dbg ncurses-bin А так-то я думаю человек сам сможет найти, в каком пакете его дистрибутива поставляется тот или иной бинарь. ;) Best regards, Vitaliy Aksyonov. ... Режим наибольшего благопрепятствования... --- GoldED+/LNX 1.1.5-b20240305-beta |
#6
|
|||
|
|||
Борьба с псевдографикой
Cheslav Osanadze написал(а) к Vitaliy Aksyonov в Mar 24 16:10:56 по местному времени:
Привет Vitaliy! 18 Мар 24 07:46, Vitaliy Aksyonov -> Cheslav Osanadze: VA>>>> Если же напишет, что не найдена информация - надо доустановить VA>>>> нужные пакеты или попробовать сменить тип терминала. SM>>> [fido@brorabbit ~]$ infocmp SM>>> -bash: infocmp: команда не найдена CO>> Боюсь ошибиться... CO>> apt-get install libncurses5-dbg VA> ncurses-bin VA> А так-то я думаю человек сам сможет найти, в каком пакете его VA> дистрибутива поставляется тот или иной бинарь. ;) Я пошутил.:) Я вообще "не сварщик", но совет сохранил! Спасибо. Мало ли... А то, помню, как меня бесили вот эти символы, вместо нормальных прямых линий таблиц. Cheslav. ... - Прораб! Скрипач не нужен!(с)Кдд --- |
#7
|
|||
|
|||
Борьба с псевдографикой
Stas Mishchenkov написал(а) к Vitaliy Aksyonov в Mar 24 10:34:56 по местному времени:
Нi Vitaliy! 18 Mar 24 07:46, Vitaliy Aksyonov -> Cheslav Osanadze: SM>>> [fido@brorabbit ~]$ infocmp SM>>> -bash: infocmp: команда не найдена CO>> Боюсь ошибиться... CO>> apt-get install libncurses5-dbg VA> ncurses-bin Тоже не угадал. ;) VA> А так-то я думаю человек сам сможет найти, в каком пакете его VA> дистрибутива поставляется тот или иной бинарь. ;) Ага. Разобрался. ;) Нave nice nights. Stas Mishchenkov. --- Это только от большого ума горе, а от маленького - так, легкая грусть. |