summaryrefslogtreecommitdiff
path: root/app/xterm/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/xterm/util.c')
-rw-r--r--app/xterm/util.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/app/xterm/util.c b/app/xterm/util.c
index de73d112c..49dcc5acd 100644
--- a/app/xterm/util.c
+++ b/app/xterm/util.c
@@ -1,4 +1,4 @@
-/* $XTermId: util.c,v 1.950 2024/07/10 20:22:19 tom Exp $ */
+/* $XTermId: util.c,v 1.955 2024/09/01 22:51:57 tom Exp $ */
/*
* Copyright 1999-2023,2024 by Thomas E. Dickey
@@ -3702,7 +3702,7 @@ fixupItalics(XTermDraw * params,
#if OPT_DEC_CHRSET
static int
-fakeDoubleChars(XTermDraw * params,
+fakeDoubleChars(const XTermDraw * params,
GC gc,
int y,
int x,
@@ -3905,8 +3905,11 @@ xtermFullString16(XTermDraw * params, unsigned flags, GC gc,
? XTermFontsRef(screen->fnts,
(VTFontEnum) (xf - fn))
: fp))) {
+ unsigned part = ucs2dec(screen, ch);
+ if (xtermIsDecGraphic(part) && ch > 255)
+ ch = (IChar) part;
x = xtermPartString16(screen, flags, gc, x, y, dst);
- if (xtermIsDecTechnical(ch)) {
+ if (xtermIsInternalCs(ch)) {
xtermDrawBoxChar(params, ch, gc,
x, y - FontAscent(screen), 1, False);
x += FontWidth(screen);
@@ -3968,7 +3971,7 @@ xtermDrawString(TScreen *screen, unsigned flags, GC gc, int x, int y, int length
* value is the updated x position.
*/
int
-drawXtermText(XTermDraw * params,
+drawXtermText(const XTermDraw * params,
GC gc,
int start_x,
int start_y,
@@ -4496,6 +4499,7 @@ drawXtermText(XTermDraw * params,
Bool isMissing;
int ch_width;
#if OPT_WIDE_CHARS
+ unsigned part;
if (ch == HIDDEN_CHAR) {
if (last > first) {
@@ -4533,8 +4537,8 @@ drawXtermText(XTermDraw * params,
if (!isMissing
&& TScreenOf(recur.xw)->force_box_chars) {
if (ch > 255
- && ucs2dec(screen, ch) < 32) {
- ch = ucs2dec(screen, ch);
+ && (part = ucs2dec(screen, ch)) < 32) {
+ ch = part;
isMissing = True;
} else if (ch < 32) {
isMissing = True;
@@ -4557,7 +4561,9 @@ drawXtermText(XTermDraw * params,
ch_width = 1; /* special case for line-drawing */
else if (ch_width < 0)
ch_width = 1; /* special case for combining char */
- if (!ucs_workaround(&recur, ch, gc, x, y)) {
+ if (ch > 255 && (part = ucs2dec(screen, ch)) < 32) {
+ xtermDrawBoxChar(&recur, part, gc, x, y, 1, False);
+ } else if (!ucs_workaround(&recur, ch, gc, x, y)) {
xtermDrawBoxChar(&recur, ch, gc, x, y, ch_width, False);
}
#else
@@ -5269,7 +5275,7 @@ typedef struct _DimColorHT {
} DimColorHT;
static unsigned
-jhash1(unsigned char *key, size_t len)
+jhash1(const unsigned char *key, size_t len)
{
unsigned hash;
size_t i;