X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fwidechar%2Flib_wacs.c;h=5b6f6da28936d269c955335fd6739bd628bd7ca5;hp=455f4a1894a9c30d27429c9b806dc3e24ae1fd58;hb=HEAD;hpb=45766a7ed44677f18ccf230f9bd720862d7c69c8;ds=sidebyside diff --git a/ncurses/widechar/lib_wacs.c b/ncurses/widechar/lib_wacs.c index 455f4a18..5b6f6da2 100644 --- a/ncurses/widechar/lib_wacs.c +++ b/ncurses/widechar/lib_wacs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2014,2015 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2002-2015,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -32,7 +33,7 @@ #include -MODULE_ID("$Id: lib_wacs.c,v 1.16 2015/12/19 23:29:03 tom Exp $") +MODULE_ID("$Id: lib_wacs.c,v 1.20 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0; @@ -106,7 +107,6 @@ _nc_init_wacs(void) }; /* *INDENT-ON* */ - unsigned n, m; int active = _nc_unicode_locale(); /* @@ -120,8 +120,10 @@ _nc_init_wacs(void) active ? "" : " not")); if ((_nc_wacs = typeCalloc(cchar_t, ACS_LEN)) != 0) { + unsigned n; for (n = 0; n < SIZEOF(table); ++n) { + unsigned m; #if NCURSES_WCWIDTH_GRAPHICS int wide = wcwidth((wchar_t) table[n].value[active]); #else @@ -129,13 +131,17 @@ _nc_init_wacs(void) #endif m = table[n].map; - SetChar(_nc_wacs[m], - table[n].value[(active && (wide == 1)) ? 1 : 0], - A_NORMAL); + if (active && (wide == 1)) { + SetChar(_nc_wacs[m], table[n].value[1], A_NORMAL); + } else if (acs_map[m] & A_ALTCHARSET) { + SetChar(_nc_wacs[m], m, A_ALTCHARSET); + } else { + SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL); + } - T(("#%d, wide:%d SetChar(%c, %#04x) = %s", + T(("#%d, width:%d SetChar(%c, %s) = %s", n, wide, m, - table[n].value[active], + _tracechar(table[n].value[active]), _tracecchar_t(&_nc_wacs[m]))); } }