繁体   English   中英

UTF-8字符的属性

[英]Attributes for UTF-8 characters

Ncurses可以通过chtype显示具有附加属性的字符, chtype s是这样构成的:

addch('a' | A_REVERSE);

但是,在启用UTF-8支持后,必须通过addstr(char const*)将多字节字符推送到屏幕,并且没有空间容纳属性。

是否可以使用多字节字符保留属性,还是我应该自己跟踪它们并在需要时使用attron() / attroff()

实际上,ncurses可以使用四种字符类型:

对于8位编码, charchtype数据排在第一位。 wchar_tcchar_t后来出现了宽字符。 每对中的后者实际上是前者与视频属性和颜色的组合。

ncurses与X / Open curses不同,它允许通过waddstr (和waddch )接口添加多字节字符。 实际上,这将是“ ncursesw ”库(“ ncurses ”库执行8位编码)。

wchar_tchar拥有更多的位。

在Linux上, wchar_t (几乎)与Unicode同义。 这不一定是可移植的,因此ncurses使用宽字符函数根据需要将wchar_t转换为UTF-8(或终端用于其编码的任何形式)。 同样, waddstr的输入可能是UTF-8,但是ncurses使用相应的多字节字符函数将应用程序的语言环境编码转换为wchar_t值。

如果您的ncurses支持宽字符,则可以使用诸如add_wch类的add_wch来添加单个宽字符,并可选地添加属性。 然而,宽字符是一样的一个多字节字符; 您需要将多字节序列转换为宽字符,以便将它们与add_wch一起使用。

请参阅标准库函数mbtowcmbstowcs以及它们的可重入变体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM