diff --git a/requirements.txt b/requirements.txt index 5fda76f43..c34bae0db 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ pyyaml>=5.3.1 requests>=2.5.0 setuptools>=24.2.0 six>=1.4.1 +wcwidth>=0.2.5 diff --git a/xml2rfc/util/unicode.py b/xml2rfc/util/unicode.py index 2756bc9c0..20270fdbc 100644 --- a/xml2rfc/util/unicode.py +++ b/xml2rfc/util/unicode.py @@ -15,6 +15,7 @@ except ImportError: pass +from wcwidth import wcswidth unicode_content_tags = set([ 'artwork', @@ -197,7 +198,7 @@ def isascii(u): def textwidth(u): "Length of string, disregarding zero-width code points" - return len(re.sub('[\u200B\u200C\u2060\uE060]', '', u)) + return wcswidth(u) def downcode_punctuation(str): while True: