[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250410011839.64418-9-nico@fluxnic.net>
Date: Wed, 9 Apr 2025 21:14:00 -0400
From: Nicolas Pitre <nico@...xnic.net>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jirislaby@...nel.org>
Cc: Nicolas Pitre <npitre@...libre.com>,
Dave Mielke <Dave@...lke.cc>,
linux-serial@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH 08/11] vt: support Unicode recomposition
From: Nicolas Pitre <npitre@...libre.com>
Try replacing any decomposed Unicode sequence by the corresponding
recomposed code point. Code point to glyph correspondance works best
after recomposition, and this apply mostly to single-width code points
therefore we can't preserve them in their decomposed form anyway.
With all the infrastructure in place this is now trivial to do.
Signed-off-by: Nicolas Pitre <npitre@...libre.com>
---
drivers/tty/vt/vt.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 5d53feeb5d..e3d35c4f92 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -2953,8 +2953,15 @@ static int vc_con_write_normal(struct vc_data *vc, int tc, int c,
* double-width.
*/
} else {
- /* Otherwise zero-width code points are ignored */
- goto out;
+ /* try recomposition */
+ prev_c = ucs_recompose(prev_c, c);
+ if (prev_c != 0) {
+ vc_con_rewind(vc);
+ c = prev_c;
+ } else {
+ /* Otherwise zero-width code points are ignored */
+ goto out;
+ }
}
}
}
--
2.49.0
Powered by blists - more mailing lists