• Борьба с псевдографикой

    From Vitaliy Aksyonov@1:104/117 to All on Sun Mar 17 13:26:44 2024
    Привет, 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
    * Origin: Aurora, Colorado (1:104/117)
  • From Vitaliy Aksyonov@1:104/117 to All on Sun Mar 17 13:48:18 2024
    Привет, All!

    17 Mar 24 13:26, я писал(а) тебе:


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

    [...skipped...]

    Ещё забыл важную вещь. ужно обязательно проверить, что используется корректный тип терминала.
    "echo $TERM" выдаст вам, что сейчас используется.

    Он должен поддерживаться ncurses. Для проверки можно выполнить "infocmp" если выдаст длинную портянку - значит поддерживается. Если же напишет, что не найдена информация - надо доустановить нужные пакеты или попробовать сменить тип терминала.


    Best regards,
    Vitaliy Aksyonov.

    ... Работа на износ - ковыряние в носу.
    --- GoldED+/LNX 1.1.5-b20240305-beta
    * Origin: Aurora, Colorado (1:104/117)
  • From Stas Mishchenkov@2:460/5858 to Vitaliy Aksyonov on Mon Mar 18 09:20:48 2024
    Hi Vitaliy!

    17 Mar 24 13:48, Vitaliy Aksyonov -> All:

    Он должен поддерживаться ncurses. Для проверки можно выполнить
    "infocmp" если выдаст длинную портянку - значит поддерживается. Если
    же напишет, что не найдена информация - надо доустановить нужные
    пакеты или попробовать сменить тип терминала.

    [fido@brorabbit ~]$ infocmp
    -bash: infocmp: команда не найдена


    Have nice nights.
    Stas Mishchenkov.

    --- Уборка, уборка - перейди на Егорку, стирка - на Ирку, а готовка на Вовку!
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
  • From Cheslav Osanadze@2:6078/80 to Stas Mishchenkov on Mon Mar 18 11:46:38 2024
    Привет Stas!

    18 Мар 24 09:20, Stas Mishchenkov -> Vitaliy Aksyonov:

    Он должен поддерживаться ncurses. Для проверки можно выполнить
    "infocmp" если выдаст длинную портянку - значит поддерживается.
    Если же напишет, что не найдена информация - надо доустановить
    нужные пакеты или попробовать сменить тип терминала.

    [fido@brorabbit ~]$ infocmp
    -bash: infocmp: команда не найдена

    Боюсь ошибиться...

    apt-get install libncurses5-dbg


    Cheslav.


    ... Мягким органам - твёрдая рука!
    ---
    * Origin: ,,, (2:6078/80)
  • From Vitaliy Aksyonov@1:104/117 to Cheslav Osanadze on Mon Mar 18 07:46:36 2024
    Привет, Cheslav!

    18 Mar 24 11:46, ты писал(а) Stas Mishchenkov:

    Он должен поддерживаться ncurses. Для проверки можно выполнить
    "infocmp" если выдаст длинную портянку - значит поддерживается.
    Если же напишет, что не найдена информация - надо доустановить
    нужные пакеты или попробовать сменить тип терминала.

    [fido@brorabbit ~]$ infocmp
    -bash: infocmp: команда не найдена

    Боюсь ошибиться...

    apt-get install libncurses5-dbg

    ncurses-bin

    А так-то я думаю человек сам сможет найти, в каком пакете его дистрибутива поставляется тот или иной бинарь. ;)

    Best regards,
    Vitaliy Aksyonov.

    ... Режим наибольшего благопрепятствования...
    --- GoldED+/LNX 1.1.5-b20240305-beta
    * Origin: Aurora, Colorado (1:104/117)
  • From Cheslav Osanadze@2:6078/80 to Vitaliy Aksyonov on Mon Mar 18 16:10:56 2024
    Привет Vitaliy!

    18 Мар 24 07:46, Vitaliy Aksyonov -> Cheslav Osanadze:

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

    [fido@brorabbit ~]$ infocmp
    -bash: infocmp: команда не найдена

    Боюсь ошибиться...

    apt-get install libncurses5-dbg

    ncurses-bin

    А так-то я думаю человек сам сможет найти, в каком пакете его
    дистрибутива поставляется тот или иной бинарь. ;)

    Я пошутил.:) Я вообще "не сварщик", но совет сохранил! Спасибо. Мало ли... А то, помню, как меня бесили вот эти символы, вместо нормальных прямых линий таблиц.


    Cheslav.


    ... - Прораб! Скрипач не нужен!(с)Кдд
    ---
    * Origin: ,,, (2:6078/80)
  • From Stas Mishchenkov@2:460/5858 to Vitaliy Aksyonov on Tue Mar 19 10:34:56 2024
    Hi Vitaliy!

    18 Mar 24 07:46, Vitaliy Aksyonov -> Cheslav Osanadze:

    [fido@brorabbit ~]$ infocmp
    -bash: infocmp: команда не найдена

    Боюсь ошибиться...

    apt-get install libncurses5-dbg

    ncurses-bin

    Тоже не угадал. ;)

    А так-то я думаю человек сам сможет найти, в каком пакете его
    дистрибутива поставляется тот или иной бинарь. ;)

    Ага. Разобрался. ;)

    Have nice nights.
    Stas Mishchenkov.

    --- Это только от большого ума горе, а от маленького - так, легкая грусть.
    * Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)