mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 11:32:48 -05:00
CJK cleanups. Correct handling when the cursor is covering the
right-hand half of a CJK wide character; correct handling of cut and paste when CJK text wraps between lines _irrespective of the parity of the starting column_; correct handling of wordness values irrespective of which half of a CJK character the user double-clicked on; correct handling when any terminal activity overwrites only one half of a CJK wide character. I think we now behave marginally better than xterm in this respect (it has a redraw problem when you overwrite the RH half of a CJK char), so I'm happy. Also redefined the internal UCSWIDE marker to something in the surrogate range, while I'm here, so that U+303F is available for use by actual users. [originally from svn r2426]
This commit is contained in:
11
putty.h
11
putty.h
@ -51,6 +51,7 @@ typedef struct terminal_tag Terminal;
|
||||
#define LATTR_BOT 0x03000000UL
|
||||
#define LATTR_MODE 0x03000000UL
|
||||
#define LATTR_WRAPPED 0x10000000UL
|
||||
#define LATTR_WRAPPED2 0x20000000UL
|
||||
|
||||
#define ATTR_INVALID 0x00FF0000UL
|
||||
|
||||
@ -69,7 +70,15 @@ typedef struct terminal_tag Terminal;
|
||||
#define DIRECT_FONT(c) ((c&0xFE00)==0xF000)
|
||||
|
||||
#define UCSERR (ATTR_LINEDRW|'a') /* UCS Format error character. */
|
||||
#define UCSWIDE 0x303F
|
||||
/*
|
||||
* UCSWIDE is a special value used in the terminal data to signify
|
||||
* the character cell containing the right-hand half of a CJK wide
|
||||
* character. We use 0xDFFF because it's part of the surrogate
|
||||
* range and hence won't be used for anything else (it's impossible
|
||||
* to input it via UTF-8 because our UTF-8 decoder correctly
|
||||
* rejects surrogates).
|
||||
*/
|
||||
#define UCSWIDE 0xDFFF
|
||||
|
||||
#define ATTR_NARROW 0x20000000UL
|
||||
#define ATTR_WIDE 0x10000000UL
|
||||
|
Reference in New Issue
Block a user