Странно то, что htop
используются ncurses, которые могут рисовать линии с / без Юникода. Тем не менее, глядя на исходный код в CRT.c
показывает объяснение:
#ifdef HAVE_LIBNCURSESW
if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
CRT_utf8 = true;
else
CRT_utf8 = false;
#endif
CRT_treeStr =
#ifdef HAVE_LIBNCURSESW
CRT_utf8 ? CRT_treeStrUtf8 :
#endif
CRT_treeStrAscii;
и CRT_treeStrUtf8
значение
const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
"\xe2\x94\x80", // TREE_STR_HORZ ─
"\xe2\x94\x82", // TREE_STR_VERT │
"\xe2\x94\x9c", // TREE_STR_RTEE ├
"\xe2\x94\x94", // TREE_STR_BEND └
"\xe2\x94\x8c", // TREE_STR_TEND ┌
"+", // TREE_STR_OPEN +
"\xe2\x94\x80", // TREE_STR_SHUT ─
};
Однако ncurses (любая реализация curses) имеет переносимые символы для них, которые не зависят от того, является ли кодировка UTF-8 или нет. Некоторые приложения (например, диалог «s --ascii-lines
опция) обеспечивают вариант для использования ASCII рисования линий, но приложение , которое даже не пытаться использовать линию вытяжки , представленную в Ncurses не эффективное использование библиотеки.
Короче говоря, когда вы сталкиваетесь с программой, которая ведет себя так, вы должны сообщить об этом разработчикам как об ошибке.
Дальнейшее чтение:
- Line Graphics (страница руководства ncurses addch)
border
, wborder
, box
, hline
, whline
, vline
, wvline
,
mvhline
, mvwhline
, mvvline
, mvwvline
- создание проклинает границ, горизонтальные и вертикальные линии
dialog
скриншоты ( ни один не требует кодировки UTF-8 для использования рисования линий)