forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.GOLDED

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 17.03.2024, 23:32
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Борьба с псевдографикой

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  
Старый 18.03.2024, 00:02
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 18.03.2024, 10:31
Stas Mishchenkov
Guest
 
Сообщений: n/a
По умолчанию Борьба с псевдографикой

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  
Старый 18.03.2024, 13:51
Cheslav Osanadze
Guest
 
Сообщений: n/a
По умолчанию Борьба с псевдографикой

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  
Старый 18.03.2024, 17:51
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 18.03.2024, 18:22
Cheslav Osanadze
Guest
 
Сообщений: n/a
По умолчанию Борьба с псевдографикой

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  
Старый 19.03.2024, 11:51
Stas Mishchenkov
Guest
 
Сообщений: n/a
По умолчанию Борьба с псевдографикой

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.

--- Это только от большого ума горе, а от маленького - так, легкая грусть.
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:44. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot