diff -Nru xterm-383/charproc.c xterm-384/charproc.c
--- xterm-383/charproc.c 2023-06-26 22:28:07.000000000 +0000
+++ xterm-384/charproc.c 2023-07-10 15:53:46.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1957 2023/06/26 22:28:07 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1958 2023/07/10 15:53:46 tom Exp $ */
/*
* Copyright 1999-2022,2023 by Thomas E. Dickey
@@ -11220,6 +11220,9 @@
free(last->windowName);
free(last);
}
+#if OPT_STATUS_LINE
+ free(screen->status_fmt);
+#endif
#ifndef NO_ACTIVE_ICON
TRACE_FREE_LEAK(xw->misc.active_icon_s);
#endif
diff -Nru xterm-383/debian/changelog xterm-384/debian/changelog
--- xterm-383/debian/changelog 2023-06-30 23:12:08.000000000 +0000
+++ xterm-384/debian/changelog 2023-07-13 07:45:15.000000000 +0000
@@ -1,3 +1,25 @@
+xterm (384-1ubuntu1) mantic; urgency=low
+
+ * Merge from Debian unstable. Remaining changes:
+ - Add 950_ubuntu_charclass_highlight.diff:
+ + Enable URL highlighting.
+ - Add Add 951_uxterm_utf8_title.diff:
+ + Set utf8Titles to true by default when using uxterm, so that it
+ displays utf8 directories in titles properly. May cause issues with
+ apps that use control sequences for updating the xterm titlebar -
+ users should use xterm or set utf8Title to false in this case.
+ - Modify debian/gbp.conf: Set "debian-branch" to "ubuntu"
+
+ -- Gianfranco Costamagna Thu, 13 Jul 2023 09:45:15 +0200
+
+xterm (384-1) unstable; urgency=medium
+
+ * New upstream release.
+ - Correct a step in rendering double-width characters with
+ bitmap-fonts (report by Peter Fabinski, Closes: #1039986).
+
+ -- Sven Joachim Wed, 12 Jul 2023 18:00:23 +0200
+
xterm (383-1ubuntu1) mantic; urgency=low
* Merge from Debian unstable. Remaining changes:
diff -Nru xterm-383/fontutils.c xterm-384/fontutils.c
--- xterm-383/fontutils.c 2023-06-13 21:45:38.000000000 +0000
+++ xterm-384/fontutils.c 2023-07-10 19:01:33.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.775 2023/06/13 21:45:38 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.776 2023/07/10 19:01:33 tom Exp $ */
/*
* Copyright 1998-2022,2023 by Thomas E. Dickey
@@ -4134,7 +4134,9 @@
CapProjecting,
JoinMiter);
- if (ch == 1) { /* diamond */
+ if (ch == 32) { /* space! */
+ ; /* boxing a missing space is pointless */
+ } else if (ch == 1) { /* diamond */
XPoint points[5];
int npoints = 5, n;
diff -Nru xterm-383/graphics.c xterm-384/graphics.c
--- xterm-383/graphics.c 2022-05-16 23:35:50.000000000 +0000
+++ xterm-384/graphics.c 2023-07-10 00:22:25.000000000 +0000
@@ -1,8 +1,8 @@
-/* $XTermId: graphics.c,v 1.118 2022/05/16 23:35:50 tom Exp $ */
+/* $XTermId: graphics.c,v 1.122 2023/07/10 00:22:25 tom Exp $ */
/*
- * Copyright 2013-2021,2022 by Ross Combs
- * Copyright 2013-2021,2022 by Thomas E. Dickey
+ * Copyright 2013-2022,2023 by Ross Combs
+ * Copyright 2013-2022,2023 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -43,6 +43,10 @@
#include
#include
+#if OPT_REGIS_GRAPHICS
+#include
+#endif
+
#undef DUMP_BITMAP
#undef DUMP_COLORS
#undef DEBUG_PALETTE
@@ -413,6 +417,26 @@
}
void
+fetch_color_register(Graphic *graphic,
+ unsigned color,
+ ColorRegister *reg)
+{
+ assert(color < MAX_COLOR_REGISTERS);
+
+ reg->r = -1;
+ reg->g = -1;
+ reg->b = -1;
+
+ if (graphic->color_registers_used[color]) {
+ if (graphic->private_colors) {
+ *reg = graphic->private_color_registers[color];
+ } else {
+ *reg = getSharedRegisters()[color];
+ }
+ }
+}
+
+void
update_color_register(Graphic *graphic,
unsigned color,
int r,
@@ -944,6 +968,8 @@
holes, total, out_of_range));
}
+#define MAX_RGB 100. /* use this rather than 255 */
+
/*
* Primary color hues:
* blue: 0 degrees
@@ -954,8 +980,8 @@
hls2rgb(int h, int l, int s, short *r, short *g, short *b)
{
const int hs = ((h + 240) / 60) % 6;
- const double lv = l / 100.0;
- const double sv = s / 100.0;
+ const double lv = l / MAX_RGB;
+ const double sv = s / MAX_RGB;
double c, x, m, c2;
double r1, g1, b1;
@@ -1010,9 +1036,9 @@
return;
}
- *r = (short) ((r1 + m) * 100.0 + 0.5);
- *g = (short) ((g1 + m) * 100.0 + 0.5);
- *b = (short) ((b1 + m) * 100.0 + 0.5);
+ *r = (short) ((r1 + m) * MAX_RGB + 0.5);
+ *g = (short) ((g1 + m) * MAX_RGB + 0.5);
+ *b = (short) ((b1 + m) * MAX_RGB + 0.5);
if (*r < 0)
*r = 0;
@@ -1029,6 +1055,49 @@
}
void
+rgb2hls(int r, int g, int b, short *h, short *l, short *s)
+{
+ const double scaled_r = (r / MAX_RGB);
+ const double scaled_g = (g / MAX_RGB);
+ const double scaled_b = (b / MAX_RGB);
+
+ const double min_scale = Min(Min(scaled_r, scaled_g), scaled_b);
+ const double max_scale = Max(Max(scaled_r, scaled_g), scaled_b);
+ const double dif_scale = max_scale - min_scale;
+
+ double h_work = 0.;
+ double s_work = 0.;
+ double l_work = ((max_scale + min_scale) / 2.);
+
+ if (dif_scale != 0.) {
+ if (l_work < 0.5f) {
+ s_work = (dif_scale / (max_scale + min_scale));
+ } else {
+ s_work = (dif_scale / (2. - max_scale - min_scale));
+ }
+
+ if (scaled_r == max_scale) {
+ h_work = (scaled_g - scaled_b) / dif_scale;
+ } else if (scaled_g == max_scale) {
+ h_work = 2. + (scaled_b - scaled_r) / dif_scale;
+ } else if (scaled_b == max_scale) {
+ h_work = 4. + (scaled_r - scaled_g) / dif_scale;
+ }
+ }
+
+ h_work *= 60.;
+ if (h_work < 0)
+ h_work += 360.;
+
+ s_work *= MAX_RGB;
+ l_work *= MAX_RGB;
+
+ *h = (short) h_work;
+ *s = (short) s_work;
+ *l = (short) l_work;
+}
+
+void
dump_graphic(Graphic const *graphic)
{
#if defined(DUMP_COLORS) || defined(DUMP_BITMAP)
@@ -1754,6 +1823,9 @@
FOR_EACH_SLOT(ii) {
deactivateSlot(ii);
}
+#if OPT_REGIS_GRAPHICS
+ reset_regis();
+#endif
}
}
diff -Nru xterm-383/graphics.h xterm-384/graphics.h
--- xterm-383/graphics.h 2022-02-22 23:36:19.000000000 +0000
+++ xterm-384/graphics.h 2023-07-09 21:23:28.000000000 +0000
@@ -1,8 +1,8 @@
-/* $XTermId: graphics.h,v 1.29 2022/02/22 23:36:19 tom Exp $ */
+/* $XTermId: graphics.h,v 1.31 2023/07/09 21:23:28 tom Exp $ */
/*
- * Copyright 2013-2016,2022 by Ross Combs
- * Copyright 2013-2016,2022 by Thomas E. Dickey
+ * Copyright 2013-2022,2023 by Ross Combs
+ * Copyright 2013-2022,2023 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -93,8 +93,10 @@
extern void draw_solid_rectangle(Graphic */* graphic */, int /* x1 */, int /* y1 */, int /* x2 */, int /* y2 */, unsigned /* color */);
extern void copy_overlapping_area(Graphic */* graphic */, int /* src_x */, int /* src_y */, int /* dst_x */, int /* dst_y */, unsigned /* w */, unsigned /* h */, unsigned /* default_color */);
extern void hls2rgb(int /* h */, int /* l */, int /* s */, short */* r */, short */* g */, short */* b */);
+extern void rgb2hls(int /* r */, int /* g */, int /* b */, short */* h */, short */* l */, short */* s */);
extern void dump_graphic(Graphic const */* graphic */);
extern unsigned get_color_register_count(TScreen const */* screen */);
+extern void fetch_color_register(Graphic */* graphic */, unsigned /* color */, ColorRegister* /* reg */);
extern void update_color_register(Graphic */* graphic */, unsigned /* color */, int /* r */, int /* g */, int /* b */);
extern RegisterNum find_color_register(ColorRegister const */* color_registers */, int /* r */, int /* g */, int /* b */);
extern void chararea_clear_displayed_graphics(TScreen const */* screen */, int /* leftcol */, int /* toprow */, int /* ncols */, int /* nrows */);
@@ -117,6 +119,7 @@
#define draw_solid_rectangle(graphic, x1, y1, x2, y2, color) /* nothing */
#define copy_overlapping_area(graphic, src_x, src_y, dst_x, dst_y, w, h, default_color) /* nothing */
#define hls2rgb(h, l, s, r, g, b) /* nothing */
+#define rgb2hls(r, g, b, h, l, s) /* nothing */
#define dump_graphic(graphic) /* nothing */
#define get_color_register_count(screen) /* nothing */
#define update_color_register(graphic, color, r, g, b) /* nothing */
diff -Nru xterm-383/graphics_regis.c xterm-384/graphics_regis.c
--- xterm-383/graphics_regis.c 2023-03-08 01:06:03.000000000 +0000
+++ xterm-384/graphics_regis.c 2023-07-10 00:09:54.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: graphics_regis.c,v 1.139 2023/03/08 01:06:03 tom Exp $ */
+/* $XTermId: graphics_regis.c,v 1.142 2023/07/10 00:09:54 tom Exp $ */
/*
* Copyright 2014-2022,2023 by Ross Combs
@@ -3460,33 +3460,56 @@
return 1;
}
+#define spec_H xBIT(0)
+#define spec_L xBIT(1)
+#define spec_S xBIT(2)
+
+#define spec_HLS (spec_H | spec_L | spec_S)
+
+#define spec_R xBIT(3)
+#define spec_G xBIT(4)
+#define spec_B xBIT(5)
+
+#define spec_RGB (spec_R | spec_G | spec_B)
+
static int
load_regis_colorspec(RegisGraphicsContext const *context,
RegisDataFragment const *input,
- short *r_out, short *g_out, short *b_out)
+ ColorRegister *colors)
{
RegisDataFragment colorspec;
- short r = -1, g = -1, b = -1;
+ short r = colors->r;
+ short g = colors->g;
+ short b = colors->b;
short l = -1;
int simple;
+ unsigned len;
+ unsigned spec = 0;
assert(context);
assert(input);
- assert(r_out);
- assert(g_out);
- assert(b_out);
+ assert(colors);
copy_fragment(&colorspec, input);
TRACE(("colorspec option: \"%s\"\n", fragment_to_tempstr(&colorspec)));
skip_regis_whitespace(&colorspec);
simple = 0;
- if (fragment_remaining(&colorspec) == 1U) {
+ if ((len = fragment_remaining(&colorspec)) == 1U) {
simple = 1;
- } else if (fragment_remaining(&colorspec) > 1U) {
- char after = get_fragment(&colorspec, 1U);
- if (IsSpace(after))
- simple = 1;
+ } else if (len > 1U) {
+ unsigned n;
+ for (n = 1; n < len; ++n) {
+ char after = get_fragment(&colorspec, n);
+ /* if no parameters, we might see a right-parenthesis, but on error
+ * we can anything */
+ if (strchr("[(,)]", after) != NULL) {
+ simple = 1;
+ break;
+ } else if (!IsSpace(after)) {
+ break;
+ }
+ }
}
if (simple) {
char ch = pop_fragment(&colorspec);
@@ -3628,38 +3651,56 @@
switch (comp) {
case 'H':
h = (short) val;
+ spec |= spec_H;
break;
case 'L':
l = (short) val;
+ spec |= spec_L;
break;
case 'S':
s = (short) val;
+ spec |= spec_S;
break;
case 'R':
r = (short) val;
+ spec |= spec_R;
break;
case 'G':
g = (short) val;
+ spec |= spec_G;
break;
case 'B':
b = (short) val;
+ spec |= spec_B;
break;
}
}
- if (h >= 0 && l >= 0 && s >= 0 && r < 0 && g < 0 && b < 0) {
+ if ((spec & spec_HLS) && (spec & spec_RGB)) {
+ TRACE(("DATA_ERROR: conflicting colorspec format\n"));
+ return 0;
+ } else if (spec == spec_HLS) {
TRACE(("found HLS colorspec to be converted: %hd,%hd,%hd\n",
h, l, s));
hls2rgb(h, l, s, &r, &g, &b);
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
- } else if (h < 0 && l < 0 && s < 0 && r >= 0 && g >= 0 && b >= 0) {
+ } else if (spec == spec_RGB) {
TRACE(("found RGB colorspec: %hd,%hd,%hd\n", r, g, b));
l = (short) ((MIN3(r, g, b) + MAX3(r, g, b)) / 2);
TRACE(("calculated L: %d\n", l));
- } else if (h < 0 && l >= 0 && s < 0 && r < 0 && g < 0 && b < 0) {
- TRACE(("found L colorspec to be converted: %hd,%hd,%hd\n",
+ } else if ((spec & spec_HLS)) {
+ short old_h, old_l, old_s;
+ TRACE(("using partial HLS %hd,%hd,%hd\n", h, l, s));
+ rgb2hls(r, g, b, &old_h, &old_l, &old_s);
+ if (h < 0)
+ h = old_h;
+ if (l < 0)
+ l = old_l;
+ if (s < 0)
+ s = old_s;
+ TRACE(("resulting HLS colorspec to convert: %hd,%hd,%hd\n",
h, l, s));
- hls2rgb(0, l, 0, &r, &g, &b);
+ hls2rgb(h, l, s, &r, &g, &b);
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
} else {
TRACE(("DATA_ERROR: unrecognized colorspec format\n"));
@@ -3675,9 +3716,9 @@
TRACE(("converted to grayscale: %hd,%hd,%hd\n", r, g, b));
}
- *r_out = r;
- *g_out = g;
- *b_out = b;
+ colors->r = r;
+ colors->g = g;
+ colors->b = b;
skip_regis_whitespace(&colorspec);
if (!fragment_consumed(&colorspec)) {
@@ -3744,15 +3785,16 @@
}
if (extract_regis_parenthesized_data(&colorspec, &coloroption)) {
- short r, g, b;
+ ColorRegister find_reg =
+ {-1, -1, -1};
- if (!load_regis_colorspec(context, &coloroption, &r, &g, &b)) {
+ if (!load_regis_colorspec(context, &coloroption, &find_reg)) {
TRACE(("unable to parse colorspec\n"));
return 0;
}
*out = find_color_register(context->destination_graphic->color_registers,
- r, g, b);
+ find_reg.r, find_reg.g, find_reg.b);
TRACE(("colorspec maps to closest register %u\n", *out));
return 1;
@@ -6087,7 +6129,7 @@
if (extract_regis_num(&optionarg, ®num)) {
int register_num;
int color_only;
- short r, g, b;
+ ColorRegister my_reg;
if (!regis_num_to_int(®num, ®ister_num)) {
TRACE(("DATA_ERROR: unable to parse int in screen color register mapping option: \"%s\"\n",
@@ -6120,10 +6162,17 @@
break;
}
- TRACE(("mapping register %d to color spec: \"%s\"\n",
- register_num, fragment_to_tempstr(&colorspec)));
- if (!load_regis_colorspec(context, &colorspec,
- &r, &g, &b)) {
+ fetch_color_register(context->destination_graphic,
+ (RegisterNum) register_num,
+ &my_reg);
+
+ TRACE(("mapping register %d %d,%d,%d to color spec: \"%s\"\n",
+ register_num,
+ my_reg.r,
+ my_reg.g,
+ my_reg.b,
+ fragment_to_tempstr(&colorspec)));
+ if (!load_regis_colorspec(context, &colorspec, &my_reg)) {
TRACE(("DATA_ERROR: unable to use colorspec for mapping of register %d\n",
register_num));
return 1;
@@ -6133,13 +6182,13 @@
(context->graphics_termid == 240 ||
context->graphics_termid == 330)) {
TRACE(("NOT setting color register %d to %hd,%hd,%hd\n",
- register_num, r, g, b));
+ register_num, my_reg.r, my_reg.g, my_reg.b));
} else {
TRACE(("setting color register %d to %hd,%hd,%hd\n",
- register_num, r, g, b));
+ register_num, my_reg.r, my_reg.g, my_reg.b));
update_color_register(context->destination_graphic,
(RegisterNum) register_num,
- r, g, b);
+ my_reg.r, my_reg.g, my_reg.b);
}
continue;
} {
@@ -7609,6 +7658,13 @@
}
void
+reset_regis(void)
+{
+ persistent_context.width = 0;
+ persistent_context.height = 0;
+}
+
+void
parse_regis(XtermWidget xw, ANSI *params, char const *string)
{
TScreen *screen = TScreenOf(xw);
diff -Nru xterm-383/graphics_regis.h xterm-384/graphics_regis.h
--- xterm-383/graphics_regis.h 2016-05-29 16:34:47.000000000 +0000
+++ xterm-384/graphics_regis.h 2023-07-07 20:10:32.000000000 +0000
@@ -1,8 +1,8 @@
-/* $XTermId: graphics_regis.h,v 1.2 2016/05/29 16:34:47 tom Exp $ */
+/* $XTermId: graphics_regis.h,v 1.3 2023/07/07 20:10:32 tom Exp $ */
/*
- * Copyright 2014,2016 by Ross Combs
- * Copyright 2014,2016 by Thomas E. Dickey
+ * Copyright 2014-2016,2023 by Ross Combs
+ * Copyright 2014-2016,2023 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -38,8 +38,10 @@
#include
#if OPT_REGIS_GRAPHICS
+extern void reset_regis(void);
extern void parse_regis(XtermWidget /* xw */, ANSI */* params */, char const */* string */);
#else
+#define reset_regis() /* nothing */
#define parse_regis(xw, params, string) /* nothing */
#endif
diff -Nru xterm-383/MANIFEST xterm-384/MANIFEST
--- xterm-383/MANIFEST 2023-05-31 17:04:55.000000000 +0000
+++ xterm-384/MANIFEST 2023-06-29 22:22:58.000000000 +0000
@@ -1,4 +1,4 @@
-MANIFEST for xterm, version xterm-383
+MANIFEST for xterm, version xterm-384
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
diff -Nru xterm-383/NEWS xterm-384/NEWS
--- xterm-383/NEWS 2023-06-27 20:58:54.000000000 +0000
+++ xterm-384/NEWS 2023-07-10 21:11:27.000000000 +0000
@@ -1,24 +1,15 @@
The NEWS file was generated from xterm.log.html, which serves as the changelog
for xterm.
--------------------------------------------------------------------------------
- Patch #383 - 2023/06/27
+ Patch #384 - 2023/07/10
- * expand description of full- and soft-reset in the manual.
- * fixes for full- and soft-reset:
- + clear alternate screen on full reset.
- + disable menu-entry for active icon; it merely shows whether
- the feature is enabled.
- + use appcursorDefault and appkeypadDefault resources for reset
- of DECCKM and DECKPM.
- + save initial resource values for sixelScrolling and
- privateColorRegisters, using those in full reset.
- + update checkbox for Enable Blinking Cursor (report by Rajeev
- V. Pillai).
- * add reply for DECSACE with DECRQSS.
- * modify status-line feature to exit without erasing for DECSTR.
- * add private mode 1045 which imitates the original xterm cursor-back
- reverse wrapping mode 45 (see patch #380).
- * improve checks for non-Unicode values, e.g., in DECRQCRA.
- * re-checkout from RCS archive to fix stale identifiers (report by
- Sven Joachim).
+ * exclude ASCII space from showMissingGlyphs, since a few bitmap
+ fonts lack this (report by "SanRemo", Emanuel Haupt).
+ * correct a step in rendering double-width characters with
+ bitmap-fonts (report by Peter Fabinski, Debian #1039986).
+ * fixes for ReGIS-related problems (report by Ben Wong):
+ + mimic an undocumented hardware VT340 feature which handles
+ color initialization with incomplete parameters.
+ + handle whitespace between operator/operands for color values.
+ + reset ReGIS-context when resetting graphics in RIS.
diff -Nru xterm-383/package/debian/changelog xterm-384/package/debian/changelog
--- xterm-383/package/debian/changelog 2023-05-31 17:04:55.000000000 +0000
+++ xterm-384/package/debian/changelog 2023-07-01 09:53:42.000000000 +0000
@@ -1,3 +1,9 @@
+xterm-dev (384) unstable; urgency=low
+
+ * maintenance updates
+
+ -- Thomas E. Dickey Thu, 29 Jun 2023 18:22:58 -0400
+
xterm-dev (383) unstable; urgency=low
* maintenance updates
diff -Nru xterm-383/package/freebsd/Makefile xterm-384/package/freebsd/Makefile
--- xterm-383/package/freebsd/Makefile 2023-05-31 17:04:55.000000000 +0000
+++ xterm-384/package/freebsd/Makefile 2023-07-01 09:53:42.000000000 +0000
@@ -1,4 +1,4 @@
-# $XTermId: Makefile,v 1.104 2023/05/31 17:04:55 tom Exp $
+# $XTermId: Makefile,v 1.105 2023/07/01 09:53:42 tom Exp $
# $FreeBSD: head/x11/xterm/Makefile 492827 2019-02-13 06:43:36Z ehaupt $
# This is adapted from the FreeBSD port, installing as "xterm-dev" with
@@ -7,7 +7,7 @@
# and "make makesum".
PORTNAME= xterm
-PORTVERSION= 383
+PORTVERSION= 384
CATEGORIES= x11
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/:src1 \
https://invisible-mirror.net/archives/xterm/:src1
diff -Nru xterm-383/package/pkgsrc/Makefile xterm-384/package/pkgsrc/Makefile
--- xterm-383/package/pkgsrc/Makefile 2023-05-31 17:04:55.000000000 +0000
+++ xterm-384/package/pkgsrc/Makefile 2023-07-01 09:53:42.000000000 +0000
@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.117 2018/03/12 11:18:00 wiz Exp $
-DISTNAME= xterm-383
+DISTNAME= xterm-384
PKGREVISION= 1
CATEGORIES= x11
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/
diff -Nru xterm-383/package/xterm.spec xterm-384/package/xterm.spec
--- xterm-383/package/xterm.spec 2023-05-31 17:04:55.000000000 +0000
+++ xterm-384/package/xterm.spec 2023-07-01 09:53:42.000000000 +0000
@@ -1,11 +1,11 @@
-# $XTermId: xterm.spec,v 1.162 2023/05/31 17:04:55 tom Exp $
+# $XTermId: xterm.spec,v 1.163 2023/07/01 09:53:42 tom Exp $
Summary: X terminal emulator (development version)
%global my_middle xterm
%global my_suffix -dev
%global fullname %{my_middle}%{my_suffix}
%global my_class XTermDev
Name: %{fullname}
-Version: 383
+Version: 384
Release: 1
License: X11
Group: User Interface/X
diff -Nru xterm-383/util.c xterm-384/util.c
--- xterm-383/util.c 2023-05-29 18:16:51.000000000 +0000
+++ xterm-384/util.c 2023-07-10 19:01:33.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: util.c,v 1.933 2023/05/29 18:16:51 tom Exp $ */
+/* $XTermId: util.c,v 1.936 2023/07/10 19:01:33 tom Exp $ */
/*
* Copyright 1999-2022,2023 by Thomas E. Dickey
@@ -3864,6 +3864,7 @@
/*
* X11 bitmap-fonts are limited to 16-bits.
*/
+ assert(ch != HIDDEN_CHAR);
if (
#if OPT_WIDER_ICHAR
(ch > NARROW_ICHAR) ||
@@ -4661,7 +4662,7 @@
&& okFont(NormalWFont(screen)))) {
needWide = True;
}
- ++dst;
+ mapped[dst++] = ch;
}
}
@@ -4688,12 +4689,9 @@
}
if (useBoldFont && FontIsIncomplete(bold)) {
- for (src = 0; src < (int) len; src++) {
+ for (src = 0; src < dst; src++) {
IChar ch = mapped[src];
- if (ch == HIDDEN_CHAR)
- continue;
-
noBold = IsXtermMissingChar(screen, ch, bold);
if (noBold) {
noNorm = IsXtermMissingChar(screen, ch, norm);
@@ -4706,8 +4704,8 @@
}
}
- /* FIXME This is probably wrong. But it works. */
- underline_len = len;
+ /* This is probably wrong. But it works. */
+ underline_len = (Cardinal) dst;
/* Set the drawing font */
if (!(recur.draw_flags & (DOUBLEHFONT | DOUBLEWFONT))) {
@@ -4757,11 +4755,13 @@
NormalFont(screen)->max_bounds.width * 2) {
underline_len = real_length = (Cardinal) (dst * 2);
} else if (cgsId == gcWide || cgsId == gcWBold) {
+ int ascent2 = Max(NormalFont(screen)->ascent,
+ thisFp->ascent);
underline_len = real_length = (Cardinal) (dst * 2);
xtermFillCells(&recur,
gc,
x,
- y - thisFp->ascent,
+ y - ascent2,
real_length);
}
}
diff -Nru xterm-383/version.h xterm-384/version.h
--- xterm-383/version.h 2023-06-27 08:24:48.000000000 +0000
+++ xterm-384/version.h 2023-07-10 21:10:29.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: version.h,v 1.545 2023/06/27 08:24:48 tom Exp $ */
+/* $XTermId: version.h,v 1.547 2023/07/10 21:10:29 tom Exp $ */
/*
* Copyright 1998-2022,2023 by Thomas E. Dickey
@@ -38,8 +38,8 @@
* version of X to which this version of xterm has been built. The resulting
* number in parentheses is my patch number (Thomas E. Dickey).
*/
-#define XTERM_PATCH 383
-#define XTERM_DATE 2023-06-27
+#define XTERM_PATCH 384
+#define XTERM_DATE 2023-07-10
#ifndef __vendorversion__
#define __vendorversion__ "XTerm"
diff -Nru xterm-383/xterm.appdata.xml xterm-384/xterm.appdata.xml
--- xterm-383/xterm.appdata.xml 2023-06-27 20:59:15.000000000 +0000
+++ xterm-384/xterm.appdata.xml 2023-07-10 21:11:27.000000000 +0000
@@ -35,7 +35,7 @@
terminal
-
+
https://invisible-island.net/xterm/
dickey@invisible-island.net
diff -Nru xterm-383/xterm.log.html xterm-384/xterm.log.html
--- xterm-383/xterm.log.html 2023-06-27 20:58:54.000000000 +0000
+++ xterm-384/xterm.log.html 2023-07-10 21:11:27.000000000 +0000
@@ -30,7 +30,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
*****************************************************************************
- $XTermId: xterm.log.html,v 1.2527 2023/06/27 20:58:54 tom Exp $
+ $XTermId: xterm.log.html,v 1.2535 2023/07/10 21:11:27 tom Exp $
-->
@@ -70,6 +70,8 @@
CHANGELOG).
+
+
+
+ - exclude ASCII space from
showMissingGlyphs
,
+ since a few bitmap fonts lack this (report by "SanRemo",
+ Emanuel Haupt).
+
+ - correct a step in rendering double-width characters with
+ bitmap-fonts (report by Peter Fabinski, Debian #1039986).
+
+ - fixes for ReGIS-related problems (report by Ben Wong):
+
+ - mimic an undocumented hardware VT340 feature which
+ handles color initialization with incomplete
+ parameters.
+
+ - handle whitespace between operator/operands for color
+ values.
+
+ - reset ReGIS-context when resetting graphics in
+ RIS.
+
+
+
+