Search code examples
ncurses

Ncurses ACS_BLOCK not the same as WACS_BLOCK?


I switched over from add_ch to having to use add_wch which caused me to also have to change using the various ACS_ special drawing characters to the WCS_ version. The problem I found is that the WCS_ version is not a FULL block, but only a partial block whereas the ACS_ is the proper FULL block. Is there a way to fix that?

TIA!!


Solution

  • It appears to be a ncurses bug. They define WCS_BLOCK as 0x25AE but that is the "Vertical Rectangle". The correct definition should have been 0x2588 which is the "Full Block". So you have to create your own cchar_t and use that. Something like:

    wchar_t wch[2];
    wch[0]=(wchar_t) 0x2588;
    wch[1]=0;
    cchar_t cch;
    setcchar(&cch, wch, WA_NORMAL, 0, NULL);