Символы в приложении ncurses отображаются корректно только в tmux - PullRequest
1 голос
/ 09 января 2020

Я портировал и кросс-компилировал приложение calcurse в Blackberry 10 в рамках проекта Berrymuch (https://github.com/BerryFarm/berrymuch/tree/master/ports-wip/calcurse), однако у меня возникают проблемы с отображением псевдографических символов. При запуске в терминальном приложении term48 (TERM = xterm-256color) разделители отображаются в виде букв. неработающий вывод

Однако, если то же приложение запущено в tmux, разделители выглядят нормально. ok output

Я попытался запустить с TERM = screen в самом терминале, но это не решило проблему.

У кого-нибудь есть теория, где это может что-то не так?

Я подозреваю, что либо LC_ALL установлен на en_US.UTF-8. Установка NCURSES_NO_UTF8_ACS=1 тоже не помогает. ldd показывает, что калькулятор связан с libncursesw.so.1

1 Ответ

1 голос
/ 09 января 2020

Я думаю, что вы находитесь на правильном пути с NCURSES_NO_UTF8_ACS - tmux будет использовать UTF-8 для рисования ACS по умолчанию, если он думает, что терминал поддерживает его (потому что ваш LANG содержит UTF-8), поэтому, похоже, ваш терминал поддерживает UTF-8, но не поддерживает ACS должным образом. Работает ли следующее вне tmux (должно отображать символы, а не ASCII):

tput enacs; tput smacs; tput acsc; tput rmacs; echo

Современные ncurses также должны использовать UTF-8, я не знаю, почему это не так. Возможно, вы захотите проверить, какую версию ncurses вы используете, и, возможно, попробовать более новую, есть также возможность U8 terminfo (5), вы можете попробовать пользовательскую запись с этим значением 0 или 1.

...