/****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 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 *
#include <ctype.h>
-MODULE_ID("$Id: tty_update.c,v 1.297 2017/09/02 21:45:44 Jeb.Rosen Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.299 2018/09/08 21:33:59 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
|| is_wacs_value(CharOfD(ch))
#endif
)) {
+ int c8;
my_ch = CHDEREF(ch); /* work around const param */
+ c8 = CharOf(my_ch);
#if USE_WIDEC_SUPPORT
/*
* This is crude & ugly, but works most of the time. It checks if the
chlen = 1;
}
#endif /* !NCURSES_WCWIDTH_GRAPHICS */
- }
+ } else
#endif
+ if (!SP_PARM->_screen_acs_map[c8]) {
+ /*
+ * If we found no mapping for a given alternate-character set item
+ * in the terminal description, attempt to use the ASCII fallback
+ * code which is populated in the _acs_map[] array. If that did
+ * not correspond to a line-drawing, etc., graphics character, the
+ * array entry would be empty.
+ */
+ chtype temp = UChar(SP_PARM->_acs_map[c8]);
+ if (temp) {
+ RemAttr(attr, A_ALTCHARSET);
+ SetChar(my_ch, temp, AttrOf(attr));
+ }
+ }
+
/*
* If we (still) have alternate character set, it is the normal 8bit
* flavor. The _screen_acs_map[] array tells if the character was