From b11468c19bc1f2ce21e076d5be945efbdc84878f Mon Sep 17 00:00:00 2001 From: Nick Lanham Date: Tue, 22 Feb 2011 17:17:55 +0100 Subject: [PATCH] handle double-wide unicode characters --- deluge/ui/console/modes/format_utils.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/deluge/ui/console/modes/format_utils.py b/deluge/ui/console/modes/format_utils.py index 3b73edbad..81906d4b1 100644 --- a/deluge/ui/console/modes/format_utils.py +++ b/deluge/ui/console/modes/format_utils.py @@ -33,6 +33,11 @@ # import deluge.common +try: + import unicodedata + haveud = True +except: + haveud = False def format_speed(speed): if (speed > 0): @@ -61,7 +66,14 @@ def trim_string(string, w): return "%s... "%(string[0:w-4]) def format_column(col, lim): - size = len(col) + dbls = 0 + if haveud and isinstance(col,unicode): + # might have some double width chars + for c in col: + if unicodedata.east_asian_width(c) in ['W','F']: + # found a wide/full char + dbls += 1 + size = len(col)+dbls if (size >= lim - 1): return trim_string(col,lim) else: