gh-139246: zero-width word paste can be wrong in default repl (GH-139254)

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
Co-authored-by: grayjk <grayjk@gmail.com>
This commit is contained in:
yihong 2025-10-30 23:14:06 +08:00 committed by GitHub
parent a3ce2f77f0
commit 4e6dba0ef7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 1 deletions

View file

@ -63,6 +63,12 @@ class ColorSpan(NamedTuple):
def str_width(c: str) -> int:
if ord(c) < 128:
return 1
# gh-139246 for zero-width joiner and combining characters
if unicodedata.combining(c):
return 0
category = unicodedata.category(c)
if category == "Cf" and c != "\u00ad":
return 0
w = unicodedata.east_asian_width(c)
if w in ("N", "Na", "H", "A"):
return 1