奇妙なことに、htop
ncurses を使用しているため、Unicodeの有無にかかわらず線を描画できます。ただし、のソースコードを見ると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であるかどうかに依存しない、これらの移植可能なシンボルがあります。一部のアプリケーション(ダイアログの--ascii-lines
オプションなど)は、ASCII線画を使用するためのオプションを提供しますが、ncursesで提供される線画を使用しようとしないアプリケーションでも、ライブラリを効果的に使用できません。
つまり、そのように動作するプログラムに遭遇した場合、それをバグとして開発者に報告する必要があります。
参考文献: