From: Tomita Moeko Date: Wed, 7 May 2025 14:25:24 +0000 (+0800) Subject: ply-terminal-emulator: Fix incorrect SGR attribute handling X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11e889ef2fa8cf58bc853661ac44c723f06b1ce2;p=thirdparty%2Fplymouth.git ply-terminal-emulator: Fix incorrect SGR attribute handling According to ECMA-48 [1], Select Graphic Rendition (SGR) attribute 21 is for "doubly underlined", not "disabling bold" in current plymouth implementation. Additionally, SGR 22 is for "normal colour or normal intensity (neither bold nor faint)", both bold and dim should be disabled with it. [1] 8.3.117, https://www.ecma-international.org/wp-content/uploads/ECMA-48_5th_edition_june_1991.pdf Signed-off-by: Tomita Moeko --- diff --git a/src/libply-splash-core/ply-terminal-emulator.c b/src/libply-splash-core/ply-terminal-emulator.c index d4aebc95..ad09186e 100644 --- a/src/libply-splash-core/ply-terminal-emulator.c +++ b/src/libply-splash-core/ply-terminal-emulator.c @@ -822,13 +822,11 @@ on_control_sequence_set_attributes (ply_terminal_emulator_t *terminal_emulator, case PLY_TERMINAL_ATTRIBUTE_BOLD: terminal_emulator->current_style.bold_enabled = true; break; - case PLY_TERMINAL_ATTRIBUTE_NO_BOLD: - terminal_emulator->current_style.bold_enabled = false; - break; case PLY_TERMINAL_ATTRIBUTE_DIM: terminal_emulator->current_style.dim_enabled = true; break; - case PLY_TERMINAL_ATTRIBUTE_NO_DIM: + case PLY_TERMINAL_ATTRIBUTE_NO_BOLD_OR_DIM: + terminal_emulator->current_style.bold_enabled = false; terminal_emulator->current_style.dim_enabled = false; break; case PLY_TERMINAL_ATTRIBUTE_ITALIC: diff --git a/src/libply-splash-core/ply-terminal-emulator.h b/src/libply-splash-core/ply-terminal-emulator.h index a189146d..4945b10a 100644 --- a/src/libply-splash-core/ply-terminal-emulator.h +++ b/src/libply-splash-core/ply-terminal-emulator.h @@ -40,12 +40,11 @@ typedef enum PLY_TERMINAL_ATTRIBUTE_DIM, PLY_TERMINAL_ATTRIBUTE_ITALIC, PLY_TERMINAL_ATTRIBUTE_UNDERLINE, - PLY_TERMINAL_ATTRIBUTE_REVERSE = 7, - PLY_TERMINAL_ATTRIBUTE_NO_BOLD = 21, - PLY_TERMINAL_ATTRIBUTE_NO_DIM, + PLY_TERMINAL_ATTRIBUTE_REVERSE = 7, + PLY_TERMINAL_ATTRIBUTE_NO_BOLD_OR_DIM = 22, PLY_TERMINAL_ATTRIBUTE_NO_ITALIC, PLY_TERMINAL_ATTRIBUTE_NO_UNDERLINE, - PLY_TERMINAL_ATTRIBUTE_NO_REVERSE = 27 + PLY_TERMINAL_ATTRIBUTE_NO_REVERSE = 27 } ply_terminal_style_attributes_t; typedef void (*ply_terminal_emulator_output_handler_t) (void *user_data,