summaryrefslogtreecommitdiffstats
path: root/contrib/python/wcwidth
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-10-08 09:57:44 +0300
committerrobot-piglet <[email protected]>2025-10-08 10:11:25 +0300
commit94c10d61d66a7b6d830dbcb419ad44b330066765 (patch)
tree421761b447c002ffbdc753aebf3d812f38f9d9e1 /contrib/python/wcwidth
parent0f3f07ccb038beab419ba7ac850d95885f624989 (diff)
Intermediate changes
commit_hash:572d11de7e4c4fd16eeb91e832abea46ff94a4f2
Diffstat (limited to 'contrib/python/wcwidth')
-rw-r--r--contrib/python/wcwidth/py3/.dist-info/METADATA38
-rw-r--r--contrib/python/wcwidth/py3/README.rst18
-rw-r--r--contrib/python/wcwidth/py3/tests/test_core.py96
-rw-r--r--contrib/python/wcwidth/py3/tests/test_emojis.py85
-rw-r--r--contrib/python/wcwidth/py3/tests/test_table_integrity.py5
-rw-r--r--contrib/python/wcwidth/py3/tests/test_ucslevel.py13
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/__init__.py2
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/table_vs15.py103
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/table_vs16.py4
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/table_wide.py262
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/table_zero.py711
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/unicode_versions.py4
-rw-r--r--contrib/python/wcwidth/py3/wcwidth/wcwidth.py49
-rw-r--r--contrib/python/wcwidth/py3/ya.make3
14 files changed, 1216 insertions, 177 deletions
diff --git a/contrib/python/wcwidth/py3/.dist-info/METADATA b/contrib/python/wcwidth/py3/.dist-info/METADATA
index f7f7fcdcc85..95adb5715ec 100644
--- a/contrib/python/wcwidth/py3/.dist-info/METADATA
+++ b/contrib/python/wcwidth/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: wcwidth
-Version: 0.2.13
+Version: 0.2.14
Summary: Measures the displayed width of unicode strings in a terminal
Home-page: https://github.com/jquast/wcwidth
Author: Jeff Quast
@@ -13,8 +13,6 @@ Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
@@ -22,12 +20,24 @@ Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Localization
Classifier: Topic :: Software Development :: Internationalization
Classifier: Topic :: Terminals
+Requires-Python: >=3.6
License-File: LICENSE
-Requires-Dist: backports.functools-lru-cache >=1.2.1 ; python_version < "3.2"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: requires-python
+Dynamic: summary
|pypi_downloads| |codecov| |license|
@@ -126,7 +136,7 @@ Briefly, return values of function ``wcwidth()`` are:
Function ``wcswidth()`` simply returns the sum of all values for each character
along a string, or ``-1`` when it occurs anywhere along a string.
-Full API Documentation at https://wcwidth.readthedocs.org
+Full API Documentation at https://wcwidth.readthedocs.io
==========
Developing
@@ -136,9 +146,9 @@ Install wcwidth in editable mode::
pip install -e .
-Execute unit tests using tox_::
+Execute unit tests using tox_ for all supported Python versions::
- tox -e py27,py35,py36,py37,py38,py39,py310,py311,py312
+ tox -e py36,py37,py38,py39,py310,py311,py312,py313,py314
Updating Unicode Version
------------------------
@@ -248,6 +258,13 @@ Other Languages
History
=======
+0.2.14 *2025-09-22*
+ * **Drop Support** for Python 2.7 and 3.5. `PR #117`_.
+ * **Update** tables to include Unicode Specifications 16.0.0 and 17.0.0.
+ `PR #146`_.
+ * **Bugfix** U+00AD SOFT HYPHEN should measure as 1, versions 0.2.9 through
+ 0.2.13 measured as 0. `PR #149`_.
+
0.2.13 *2024-01-06*
* **Bugfix** zero-width support for Hangul Jamo (Korean)
@@ -290,7 +307,7 @@ History
Environment variable ``UNICODE_VERSION``, such as ``13.0``, or ``6.3.0``.
See the `jquast/ucs-detect`_ CLI utility for automatic detection.
* **Enhancement**:
- API Documentation is published to readthedocs.org.
+ API Documentation is published to readthedocs.io.
* **Updated** tables for *all* Unicode Specifications with files
published in a programmatically consumable format, versions 4.1.0
through 13.0
@@ -368,6 +385,9 @@ https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c::
.. _`PR #97`: https://github.com/jquast/wcwidth/pull/97
.. _`PR #98`: https://github.com/jquast/wcwidth/pull/98
.. _`PR #100`: https://github.com/jquast/wcwidth/pull/100
+.. _`PR #117`: https://github.com/jquast/wcwidth/pull/117
+.. _`PR #146`: https://github.com/jquast/wcwidth/pull/146
+.. _`PR #149`: https://github.com/jquast/wcwidth/pull/149
.. _`Issue #101`: https://github.com/jquast/wcwidth/issues/101
.. _`jquast/blessed`: https://github.com/jquast/blessed
.. _`selectel/pyte`: https://github.com/selectel/pyte
diff --git a/contrib/python/wcwidth/py3/README.rst b/contrib/python/wcwidth/py3/README.rst
index 65df2081b8d..1b92ef4ca03 100644
--- a/contrib/python/wcwidth/py3/README.rst
+++ b/contrib/python/wcwidth/py3/README.rst
@@ -95,7 +95,7 @@ Briefly, return values of function ``wcwidth()`` are:
Function ``wcswidth()`` simply returns the sum of all values for each character
along a string, or ``-1`` when it occurs anywhere along a string.
-Full API Documentation at https://wcwidth.readthedocs.org
+Full API Documentation at https://wcwidth.readthedocs.io
==========
Developing
@@ -105,9 +105,9 @@ Install wcwidth in editable mode::
pip install -e .
-Execute unit tests using tox_::
+Execute unit tests using tox_ for all supported Python versions::
- tox -e py27,py35,py36,py37,py38,py39,py310,py311,py312
+ tox -e py36,py37,py38,py39,py310,py311,py312,py313,py314
Updating Unicode Version
------------------------
@@ -217,6 +217,13 @@ Other Languages
History
=======
+0.2.14 *2025-09-22*
+ * **Drop Support** for Python 2.7 and 3.5. `PR #117`_.
+ * **Update** tables to include Unicode Specifications 16.0.0 and 17.0.0.
+ `PR #146`_.
+ * **Bugfix** U+00AD SOFT HYPHEN should measure as 1, versions 0.2.9 through
+ 0.2.13 measured as 0. `PR #149`_.
+
0.2.13 *2024-01-06*
* **Bugfix** zero-width support for Hangul Jamo (Korean)
@@ -259,7 +266,7 @@ History
Environment variable ``UNICODE_VERSION``, such as ``13.0``, or ``6.3.0``.
See the `jquast/ucs-detect`_ CLI utility for automatic detection.
* **Enhancement**:
- API Documentation is published to readthedocs.org.
+ API Documentation is published to readthedocs.io.
* **Updated** tables for *all* Unicode Specifications with files
published in a programmatically consumable format, versions 4.1.0
through 13.0
@@ -337,6 +344,9 @@ https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c::
.. _`PR #97`: https://github.com/jquast/wcwidth/pull/97
.. _`PR #98`: https://github.com/jquast/wcwidth/pull/98
.. _`PR #100`: https://github.com/jquast/wcwidth/pull/100
+.. _`PR #117`: https://github.com/jquast/wcwidth/pull/117
+.. _`PR #146`: https://github.com/jquast/wcwidth/pull/146
+.. _`PR #149`: https://github.com/jquast/wcwidth/pull/149
.. _`Issue #101`: https://github.com/jquast/wcwidth/issues/101
.. _`jquast/blessed`: https://github.com/jquast/blessed
.. _`selectel/pyte`: https://github.com/selectel/pyte
diff --git a/contrib/python/wcwidth/py3/tests/test_core.py b/contrib/python/wcwidth/py3/tests/test_core.py
index 60ed6b1cde7..206bbdcab38 100644
--- a/contrib/python/wcwidth/py3/tests/test_core.py
+++ b/contrib/python/wcwidth/py3/tests/test_core.py
@@ -1,4 +1,3 @@
-# coding: utf-8
"""Core tests for wcwidth module. isort:skip_file"""
try:
# std import
@@ -10,13 +9,6 @@ except ImportError:
# local
import wcwidth
-try:
- # python 2
- _ = unichr
-except NameError:
- # python 3
- unichr = chr
-
def test_package_version():
"""wcwidth.__version__ is expected value."""
@@ -70,7 +62,7 @@ def basic_string_type():
def test_hello_jp():
- u"""
+ """
Width of Japanese phrase: コンニチハ, セカイ!
Given a phrase of 5 and 3 Katakana ideographs, joined with
@@ -78,7 +70,7 @@ def test_hello_jp():
phrase consumes 19 cells of a terminal emulator.
"""
# given,
- phrase = u'コンニチハ, セカイ!'
+ phrase = 'コンニチハ, セカイ!'
expect_length_each = (2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1)
expect_length_phrase = sum(expect_length_each)
@@ -99,7 +91,7 @@ def test_wcswidth_substr():
to stop counting length.
"""
# given,
- phrase = u'コンニチハ, セカイ!'
+ phrase = 'コンニチハ, セカイ!'
end = 7
expect_length_each = (2, 2, 2, 2, 2, 1, 1,)
expect_length_phrase = sum(expect_length_each)
@@ -116,7 +108,7 @@ def test_wcswidth_substr():
def test_null_width_0():
"""NULL (0) reports width 0."""
# given,
- phrase = u'abc\x00def'
+ phrase = 'abc\x00def'
expect_length_each = (1, 1, 1, 0, 1, 1, 1)
expect_length_phrase = sum(expect_length_each)
@@ -140,7 +132,7 @@ def test_control_c0_width_negative_1():
any string containing the C1 control character \x1b (ESC).
"""
# given,
- phrase = u'\x1b[0m'
+ phrase = '\x1b[0m'
expect_length_each = (-1, 1, 1, 1)
expect_length_phrase = -1
@@ -156,7 +148,7 @@ def test_control_c0_width_negative_1():
def test_combining_width():
"""Simple test combining reports total width of 4."""
# given,
- phrase = u'--\u05bf--'
+ phrase = '--\u05bf--'
expect_length_each = (1, 1, 0, 1, 1)
expect_length_phrase = 4
@@ -170,8 +162,8 @@ def test_combining_width():
def test_combining_cafe():
- u"""Phrase cafe + COMBINING ACUTE ACCENT is café of length 4."""
- phrase = u"cafe\u0301"
+ """Phrase cafe + COMBINING ACUTE ACCENT is café of length 4."""
+ phrase = "cafe\u0301"
expect_length_each = (1, 1, 1, 1, 0)
expect_length_phrase = 4
@@ -185,8 +177,8 @@ def test_combining_cafe():
def test_combining_enclosing():
- u"""CYRILLIC CAPITAL LETTER A + COMBINING CYRILLIC HUNDRED THOUSANDS SIGN is of length 1."""
- phrase = u"\u0410\u0488"
+ """CYRILLIC CAPITAL LETTER A + COMBINING CYRILLIC HUNDRED THOUSANDS SIGN is of length 1."""
+ phrase = "\u0410\u0488"
expect_length_each = (1, 0)
expect_length_phrase = 1
@@ -200,16 +192,16 @@ def test_combining_enclosing():
def test_balinese_script():
- u"""
+ """
Balinese kapal (ship) is length 3.
This may be an example that is not yet correctly rendered by any terminal so
far, like devanagari.
"""
- phrase = (u"\u1B13" # Category 'Lo', EAW 'N' -- BALINESE LETTER KA
- u"\u1B28" # Category 'Lo', EAW 'N' -- BALINESE LETTER PA KAPAL
- u"\u1B2E" # Category 'Lo', EAW 'N' -- BALINESE LETTER LA
- u"\u1B44") # Category 'Mc', EAW 'N' -- BALINESE ADEG ADEG
+ phrase = ("\u1B13" # Category 'Lo', EAW 'N' -- BALINESE LETTER KA
+ "\u1B28" # Category 'Lo', EAW 'N' -- BALINESE LETTER PA KAPAL
+ "\u1B2E" # Category 'Lo', EAW 'N' -- BALINESE LETTER LA
+ "\u1B44") # Category 'Mc', EAW 'N' -- BALINESE ADEG ADEG
expect_length_each = (1, 1, 1, 0)
expect_length_phrase = 3
@@ -237,8 +229,8 @@ def test_kr_jamo():
# and not by independent display, like other zero-width characters that may
# only combine with an appropriate preceding character.
phrase = (
- u"\u1100" # ᄀ HANGUL CHOSEONG KIYEOK (consonant)
- u"\u1161" # ᅡ HANGUL JUNGSEONG A (vowel)
+ "\u1100" # ᄀ HANGUL CHOSEONG KIYEOK (consonant)
+ "\u1161" # ᅡ HANGUL JUNGSEONG A (vowel)
)
expect_length_each = (2, 0)
expect_length_phrase = 2
@@ -253,14 +245,14 @@ def test_kr_jamo():
def test_kr_jamo_filler():
- u"""
+ """
Jamo filler is 0 width.
Example from https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf
"""
phrase = (
- u"\u1100" # HANGUL CHOSEONG KIYEOK (consonant)
- u"\u1160" # HANGUL JUNGSEONG FILLER (vowel)
+ "\u1100" # HANGUL CHOSEONG KIYEOK (consonant)
+ "\u1160" # HANGUL JUNGSEONG FILLER (vowel)
)
expect_length_each = (2, 0)
expect_length_phrase = 2
@@ -305,10 +297,10 @@ def test_devanagari_script():
# as a sum of each individual width, as this library currently performs with exception of
# ZWJ, but I think it incorrectly gestures what a stateless call to wcwidth.wcwidth of
# each codepoint *should* return.
- phrase = (u"\u0915" # Akhand, Category 'Lo', East Asian Width property 'N' -- DEVANAGARI LETTER KA
- u"\u094D" # Joiner, Category 'Mn', East Asian Width property 'N' -- DEVANAGARI SIGN VIRAMA
- u"\u0937" # Fused, Category 'Lo', East Asian Width property 'N' -- DEVANAGARI LETTER SSA
- u"\u093F") # MatraL, Category 'Mc', East Asian Width property 'N' -- DEVANAGARI VOWEL SIGN I
+ phrase = ("\u0915" # Akhand, Category 'Lo', East Asian Width property 'N' -- DEVANAGARI LETTER KA
+ "\u094D" # Joiner, Category 'Mn', East Asian Width property 'N' -- DEVANAGARI SIGN VIRAMA
+ "\u0937" # Fused, Category 'Lo', East Asian Width property 'N' -- DEVANAGARI LETTER SSA
+ "\u093F") # MatraL, Category 'Mc', East Asian Width property 'N' -- DEVANAGARI VOWEL SIGN I
# 23107-terminal-suppt.pdf suggests wcwidth.wcwidth should return (2, 0, 0, 1)
expect_length_each = (1, 0, 1, 0)
# I believe the final width *should* be 3.
@@ -325,10 +317,10 @@ def test_devanagari_script():
def test_tamil_script():
# This test adapted from https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf
- phrase = (u"\u0b95" # Akhand, Category 'Lo', East Asian Width property 'N' -- TAMIL LETTER KA
- u"\u0bcd" # Joiner, Category 'Mn', East Asian Width property 'N' -- TAMIL SIGN VIRAMA
- u"\u0bb7" # Fused, Category 'Lo', East Asian Width property 'N' -- TAMIL LETTER SSA
- u"\u0bcc") # MatraLR, Category 'Mc', East Asian Width property 'N' -- TAMIL VOWEL SIGN AU
+ phrase = ("\u0b95" # Akhand, Category 'Lo', East Asian Width property 'N' -- TAMIL LETTER KA
+ "\u0bcd" # Joiner, Category 'Mn', East Asian Width property 'N' -- TAMIL SIGN VIRAMA
+ "\u0bb7" # Fused, Category 'Lo', East Asian Width property 'N' -- TAMIL LETTER SSA
+ "\u0bcc") # MatraLR, Category 'Mc', East Asian Width property 'N' -- TAMIL VOWEL SIGN AU
# 23107-terminal-suppt.pdf suggests wcwidth.wcwidth should return (3, 0, 0, 4)
expect_length_each = (1, 0, 1, 0)
@@ -348,10 +340,10 @@ def test_kannada_script():
# This test adapted from https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf
# |ರ್ಝೈ|
# |123|
- phrase = (u"\u0cb0" # Repha, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER RA
- u"\u0ccd" # Joiner, Category 'Mn', East Asian Width property 'N' -- KANNADA SIGN VIRAMA
- u"\u0c9d" # Base, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER JHA
- u"\u0cc8") # MatraUR, Category 'Mc', East Asian Width property 'N' -- KANNADA VOWEL SIGN AI
+ phrase = ("\u0cb0" # Repha, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER RA
+ "\u0ccd" # Joiner, Category 'Mn', East Asian Width property 'N' -- KANNADA SIGN VIRAMA
+ "\u0c9d" # Base, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER JHA
+ "\u0cc8") # MatraUR, Category 'Mc', East Asian Width property 'N' -- KANNADA VOWEL SIGN AI
# 23107-terminal-suppt.pdf suggests should be (2, 0, 3, 1)
expect_length_each = (1, 0, 1, 0)
# I believe the correct final width *should* be 3 or 4.
@@ -370,10 +362,10 @@ def test_kannada_script_2():
# This test adapted from https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf
# |ರ಼್ಚ|
# |12|
- phrase = (u"\u0cb0" # Base, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER RA
- u"\u0cbc" # Nukta, Category 'Mn', East Asian Width property 'N' -- KANNADA SIGN NUKTA
- u"\u0ccd" # Joiner, Category 'Lo', East Asian Width property 'N' -- KANNADA SIGN VIRAMA
- u"\u0c9a") # Subjoin, Category 'Mc', East Asian Width property 'N' -- KANNADA LETTER CA
+ phrase = ("\u0cb0" # Base, Category 'Lo', East Asian Width property 'N' -- KANNADA LETTER RA
+ "\u0cbc" # Nukta, Category 'Mn', East Asian Width property 'N' -- KANNADA SIGN NUKTA
+ "\u0ccd" # Joiner, Category 'Lo', East Asian Width property 'N' -- KANNADA SIGN VIRAMA
+ "\u0c9a") # Subjoin, Category 'Mc', East Asian Width property 'N' -- KANNADA LETTER CA
# 23107-terminal-suppt.pdf suggests wcwidth.wcwidth should return (2, 0, 0, 1)
expect_length_each = (1, 0, 0, 1)
# I believe the final width is correct, but maybe for the wrong reasons!
@@ -392,11 +384,17 @@ def test_zero_wide_conflict():
# Test characters considered both "wide" and "zero" width
# - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In
# + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine
- assert wcwidth.wcwidth(unichr(0x03029), unicode_version='4.1.0') == 2
- assert wcwidth.wcwidth(unichr(0x0302a), unicode_version='4.1.0') == 0
+ assert wcwidth.wcwidth(chr(0x03029), unicode_version='4.1.0') == 2
+ assert wcwidth.wcwidth(chr(0x0302a), unicode_version='4.1.0') == 0
# - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto
# + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
- assert wcwidth.wcwidth(unichr(0x03099), unicode_version='4.1.0') == 0
- assert wcwidth.wcwidth(unichr(0x0309a), unicode_version='4.1.0') == 0
- assert wcwidth.wcwidth(unichr(0x0309b), unicode_version='4.1.0') == 2
+ assert wcwidth.wcwidth(chr(0x03099), unicode_version='4.1.0') == 0
+ assert wcwidth.wcwidth(chr(0x0309a), unicode_version='4.1.0') == 0
+ assert wcwidth.wcwidth(chr(0x0309b), unicode_version='4.1.0') == 2
+
+def test_soft_hyphen():
+ # Test SOFT HYPHEN, category 'Cf' usually are zero-width, but most
+ # implementations agree to draw it was '1' cell, visually
+ # indistinguishable from a space, ' ' in Konsole, for example.
+ assert wcwidth.wcwidth(chr(0x000ad)) == 1
diff --git a/contrib/python/wcwidth/py3/tests/test_emojis.py b/contrib/python/wcwidth/py3/tests/test_emojis.py
index 4f88e2330e5..310d0c3d44e 100644
--- a/contrib/python/wcwidth/py3/tests/test_emojis.py
+++ b/contrib/python/wcwidth/py3/tests/test_emojis.py
@@ -1,22 +1,14 @@
# std imports
import os
-import codecs
# 3rd party
import pytest
-try:
- # python 2
- _ = unichr
-except NameError:
- # python 3
- unichr = chr
-
# some tests cannot be done on some builds of python, where the internal
# unicode structure is limited to 0x10000 for memory conservation,
# "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
try:
- unichr(0x2fffe)
+ chr(0x2fffe)
NARROW_ONLY = False
except ValueError:
NARROW_ONLY = True
@@ -27,18 +19,18 @@ import wcwidth
def make_sequence_from_line(line):
# convert '002A FE0F ; ..' -> (0x2a, 0xfe0f) -> chr(0x2a) + chr(0xfe0f)
- return ''.join(unichr(int(cp, 16)) for cp in line.split(';', 1)[0].strip().split())
+ return ''.join(chr(int(cp, 16)) for cp in line.split(';', 1)[0].strip().split())
@pytest.mark.skipif(NARROW_ONLY, reason="Test cannot verify on python 'narrow' builds")
def emoji_zwj_sequence():
- u"""
+ """
Emoji zwj sequence of four codepoints is just 2 cells.
"""
- phrase = (u"\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
- u"\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
- u"\u200d" # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
- u"\U0001f4bb") # Fused, Category So, East Asian Width peroperty 'W' -- PERSONAL COMPUTER
+ phrase = ("\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
+ "\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
+ "\u200d" # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
+ "\U0001f4bb") # Fused, Category So, East Asian Width peroperty 'W' -- PERSONAL COMPUTER
# This test adapted from https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf
expect_length_each = (2, 0, 0, 2)
expect_length_phrase = 2
@@ -54,12 +46,12 @@ def emoji_zwj_sequence():
@pytest.mark.skipif(NARROW_ONLY, reason="Test cannot verify on python 'narrow' builds")
def test_unfinished_zwj_sequence():
- u"""
+ """
Ensure index-out-of-bounds does not occur for zero-width joiner without any following character
"""
- phrase = (u"\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
- u"\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
- u"\u200d") # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
+ phrase = ("\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
+ "\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
+ "\u200d") # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
expect_length_each = (2, 0, 0)
expect_length_phrase = 2
@@ -77,9 +69,9 @@ def test_non_recommended_zwj_sequence():
"""
Verify ZWJ is measured as though successful with characters that cannot be joined, wcwidth does not verify
"""
- phrase = (u"\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
- u"\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
- u"\u200d") # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
+ phrase = ("\U0001f469" # Base, Category So, East Asian Width property 'W' -- WOMAN
+ "\U0001f3fb" # Modifier, Category Sk, East Asian Width property 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
+ "\u200d") # Joiner, Category Cf, East Asian Width property 'N' -- ZERO WIDTH JOINER
expect_length_each = (2, 0, 0)
expect_length_phrase = 2
@@ -95,11 +87,11 @@ def test_non_recommended_zwj_sequence():
@pytest.mark.skipif(NARROW_ONLY, reason="Test cannot verify on python 'narrow' builds")
def test_another_emoji_zwj_sequence():
phrase = (
- u"\u26F9" # PERSON WITH BALL
- u"\U0001F3FB" # EMOJI MODIFIER FITZPATRICK TYPE-1-2
- u"\u200D" # ZERO WIDTH JOINER
- u"\u2640" # FEMALE SIGN
- u"\uFE0F") # VARIATION SELECTOR-16
+ "\u26F9" # PERSON WITH BALL
+ "\U0001F3FB" # EMOJI MODIFIER FITZPATRICK TYPE-1-2
+ "\u200D" # ZERO WIDTH JOINER
+ "\u2640" # FEMALE SIGN
+ "\uFE0F") # VARIATION SELECTOR-16
expect_length_each = (1, 0, 0, 1, 0)
expect_length_phrase = 2
@@ -121,17 +113,17 @@ def test_longer_emoji_zwj_sequence():
in a single function call.
"""
# 'Category Code', 'East Asian Width property' -- 'description'
- phrase = (u"\U0001F9D1" # 'So', 'W' -- ADULT
- u"\U0001F3FB" # 'Sk', 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
- u"\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
- u"\u2764" # 'So', 'N' -- HEAVY BLACK HEART
- u"\uFE0F" # 'Mn', 'A' -- VARIATION SELECTOR-16
- u"\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
- u"\U0001F48B" # 'So', 'W' -- KISS MARK
- u"\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
- u"\U0001F9D1" # 'So', 'W' -- ADULT
- u"\U0001F3FD" # 'Sk', 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-4
- ) * 2
+ phrase = ("\U0001F9D1" # 'So', 'W' -- ADULT
+ "\U0001F3FB" # 'Sk', 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-1-2
+ "\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
+ "\u2764" # 'So', 'N' -- HEAVY BLACK HEART
+ "\uFE0F" # 'Mn', 'A' -- VARIATION SELECTOR-16
+ "\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
+ "\U0001F48B" # 'So', 'W' -- KISS MARK
+ "\u200d" # 'Cf', 'N' -- ZERO WIDTH JOINER
+ "\U0001F9D1" # 'So', 'W' -- ADULT
+ "\U0001F3FD" # 'Sk', 'W' -- EMOJI MODIFIER FITZPATRICK TYPE-4
+ ) * 2
# This test adapted from https://www.unicode.org/L2/L2023/23107-terminal-suppt.pdf
expect_length_each = (2, 0, 0, 1, 0, 0, 2, 0, 2, 0) * 2
expect_length_phrase = 4
@@ -146,10 +138,10 @@ def test_longer_emoji_zwj_sequence():
def read_sequences_from_file(filename):
- fp = codecs.open(os.path.join(os.path.dirname(__file__), filename), 'r', encoding='utf-8')
+ fp = open(os.path.join(os.path.dirname(__file__), filename), 'r', encoding='utf-8')
lines = [line.strip()
- for line in fp.readlines()
- if not line.startswith('#') and line.strip()]
+ for line in fp.readlines()
+ if not line.startswith('#') and line.strip()]
fp.close()
sequences = [make_sequence_from_line(line) for line in lines]
return lines, sequences
@@ -212,8 +204,8 @@ def test_recommended_variation_16_sequences():
def test_unicode_9_vs16():
"""Verify effect of VS-16 on unicode_version 9.0 and later"""
- phrase = (u"\u2640" # FEMALE SIGN
- u"\uFE0F") # VARIATION SELECTOR-16
+ phrase = ("\u2640" # FEMALE SIGN
+ "\uFE0F") # VARIATION SELECTOR-16
expect_length_each = (1, 0)
expect_length_phrase = 2
@@ -226,10 +218,11 @@ def test_unicode_9_vs16():
assert length_each == expect_length_each
assert length_phrase == expect_length_phrase
+
def test_unicode_8_vs16():
"""Verify that VS-16 has no effect on unicode_version 8.0 and earler"""
- phrase = (u"\u2640" # FEMALE SIGN
- u"\uFE0F") # VARIATION SELECTOR-16
+ phrase = ("\u2640" # FEMALE SIGN
+ "\uFE0F") # VARIATION SELECTOR-16
expect_length_each = (1, 0)
expect_length_phrase = 1
@@ -240,4 +233,4 @@ def test_unicode_8_vs16():
# verify.
assert length_each == expect_length_each
- assert length_phrase == expect_length_phrase \ No newline at end of file
+ assert length_phrase == expect_length_phrase
diff --git a/contrib/python/wcwidth/py3/tests/test_table_integrity.py b/contrib/python/wcwidth/py3/tests/test_table_integrity.py
index 66e63ddbe3f..e680498162a 100644
--- a/contrib/python/wcwidth/py3/tests/test_table_integrity.py
+++ b/contrib/python/wcwidth/py3/tests/test_table_integrity.py
@@ -1,15 +1,18 @@
"""
Executes verify-table-integrity.py as a unit test.
"""
+# std imports
import os
import sys
import subprocess
+# 3rd party
import pytest
+
@pytest.mark.skipif(sys.version_info[:2] != (3, 12), reason='Test only with a single version of python')
def test_verify_table_integrity():
subprocess.check_output([sys.executable, os.path.join(os.path.dirname(__file__),
os.path.pardir,
'bin',
- 'verify-table-integrity.py')]) \ No newline at end of file
+ 'verify-table-integrity.py')])
diff --git a/contrib/python/wcwidth/py3/tests/test_ucslevel.py b/contrib/python/wcwidth/py3/tests/test_ucslevel.py
index 654e835fc72..b15fb5f5a71 100644
--- a/contrib/python/wcwidth/py3/tests/test_ucslevel.py
+++ b/contrib/python/wcwidth/py3/tests/test_ucslevel.py
@@ -1,4 +1,3 @@
-# coding: utf-8
"""Unicode version level tests for wcwidth."""
# std imports
import warnings
@@ -37,7 +36,7 @@ def test_exact_410_str():
def test_exact_410_unicode():
"""wcwidth._wcmatch_version(u'4.1.0') returns equal value (unicode)."""
# given,
- given = expected = u'4.1.0'
+ given = expected = '4.1.0'
# exercise,
result = wcwidth._wcmatch_version(given)
@@ -61,7 +60,7 @@ def test_nearest_505_str():
def test_nearest_505_unicode():
"""wcwidth._wcmatch_version(u'5.0.5') returns nearest u'5.0.0'. (unicode)"""
# given
- given, expected = u'5.0.5', u'5.0.0'
+ given, expected = '5.0.5', '5.0.0'
# exercise
result = wcwidth._wcmatch_version(given)
@@ -89,7 +88,7 @@ def test_nearest_lowint40_str():
def test_nearest_lowint40_unicode():
"""wcwidth._wcmatch_version(u'4.0') returns nearest u'4.1.0'."""
# given
- given, expected = u'4.0', u'4.1.0'
+ given, expected = '4.0', '4.1.0'
warnings.resetwarnings()
wcwidth._wcmatch_version.cache_clear()
@@ -117,7 +116,7 @@ def test_nearest_800_str():
def test_nearest_800_unicode():
"""wcwidth._wcmatch_version(u'8') returns nearest u'8.0.0'."""
# given
- given, expected = u'8', u'8.0.0'
+ given, expected = '8', '8.0.0'
# exercise
result = wcwidth._wcmatch_version(given)
@@ -141,7 +140,7 @@ def test_nearest_999_str():
def test_nearest_999_unicode():
"""wcwidth._wcmatch_version(u'999.0') returns nearest (latest)."""
# given
- given, expected = u'999.0', wcwidth.list_versions()[-1]
+ given, expected = '999.0', wcwidth.list_versions()[-1]
# exercise
result = wcwidth._wcmatch_version(given)
@@ -153,7 +152,7 @@ def test_nearest_999_unicode():
def test_nonint_unicode():
"""wcwidth._wcmatch_version(u'x.y.z') returns latest (unicode)."""
# given
- given, expected = u'x.y.z', wcwidth.list_versions()[-1]
+ given, expected = 'x.y.z', wcwidth.list_versions()[-1]
warnings.resetwarnings()
wcwidth._wcmatch_version.cache_clear()
diff --git a/contrib/python/wcwidth/py3/wcwidth/__init__.py b/contrib/python/wcwidth/py3/wcwidth/__init__.py
index d686b30e1b6..e4e81380913 100644
--- a/contrib/python/wcwidth/py3/wcwidth/__init__.py
+++ b/contrib/python/wcwidth/py3/wcwidth/__init__.py
@@ -26,4 +26,4 @@ __all__ = ('wcwidth', 'wcswidth', 'list_versions')
# We also used pkg_resources to load unicode version tables from version.json,
# generated by bin/update-tables.py, but some environments are unable to
# import pkg_resources for one reason or another, yikes!
-__version__ = '0.2.13'
+__version__ = '0.2.14'
diff --git a/contrib/python/wcwidth/py3/wcwidth/table_vs15.py b/contrib/python/wcwidth/py3/wcwidth/table_vs15.py
new file mode 100644
index 00000000000..a5ede6f961e
--- /dev/null
+++ b/contrib/python/wcwidth/py3/wcwidth/table_vs15.py
@@ -0,0 +1,103 @@
+"""
+Exports VS15_WIDE_TO_NARROW table keyed by supporting unicode version level.
+
+This code generated by wcwidth/bin/update-tables.py on 2024-02-14 19:59:22 UTC.
+"""
+VS15_WIDE_TO_NARROW = {
+ '9.0.0': (
+ # Source: 9.0.0
+ # Date: 2023-02-01, 02:22:54 GMT
+ #
+ (0x0231a, 0x0231b,), # Watch ..Hourglass
+ (0x023e9, 0x023ec,), # Black Right-pointing Dou..Black Down-pointing Doub
+ (0x023f0, 0x023f0,), # Alarm Clock
+ (0x023f3, 0x023f3,), # Hourglass With Flowing Sand
+ (0x025fd, 0x025fe,), # White Medium Small Squar..Black Medium Small Squar
+ (0x02614, 0x02615,), # Umbrella With Rain Drops..Hot Beverage
+ (0x02648, 0x02653,), # Aries ..Pisces
+ (0x0267f, 0x0267f,), # Wheelchair Symbol
+ (0x02693, 0x02693,), # Anchor
+ (0x026a1, 0x026a1,), # High Voltage Sign
+ (0x026aa, 0x026ab,), # Medium White Circle ..Medium Black Circle
+ (0x026bd, 0x026be,), # Soccer Ball ..Baseball
+ (0x026c4, 0x026c5,), # Snowman Without Snow ..Sun Behind Cloud
+ (0x026ce, 0x026ce,), # Ophiuchus
+ (0x026d4, 0x026d4,), # No Entry
+ (0x026ea, 0x026ea,), # Church
+ (0x026f2, 0x026f3,), # Fountain ..Flag In Hole
+ (0x026f5, 0x026f5,), # Sailboat
+ (0x026fa, 0x026fa,), # Tent
+ (0x026fd, 0x026fd,), # Fuel Pump
+ (0x02705, 0x02705,), # White Heavy Check Mark
+ (0x0270a, 0x0270b,), # Raised Fist ..Raised Hand
+ (0x02728, 0x02728,), # Sparkles
+ (0x0274c, 0x0274c,), # Cross Mark
+ (0x0274e, 0x0274e,), # Negative Squared Cross Mark
+ (0x02753, 0x02755,), # Black Question Mark Orna..White Exclamation Mark O
+ (0x02757, 0x02757,), # Heavy Exclamation Mark Symbol
+ (0x02795, 0x02797,), # Heavy Plus Sign ..Heavy Division Sign
+ (0x027b0, 0x027b0,), # Curly Loop
+ (0x027bf, 0x027bf,), # Double Curly Loop
+ (0x02b1b, 0x02b1c,), # Black Large Square ..White Large Square
+ (0x02b50, 0x02b50,), # White Medium Star
+ (0x02b55, 0x02b55,), # Heavy Large Circle
+ (0x03030, 0x03030,), # Wavy Dash
+ (0x0303d, 0x0303d,), # Part Alternation Mark
+ (0x03297, 0x03297,), # Circled Ideograph Congratulation
+ (0x03299, 0x03299,), # Circled Ideograph Secret
+ (0x1f004, 0x1f004,), # Mahjong Tile Red Dragon
+ (0x1f202, 0x1f202,), # Squared Katakana Sa
+ (0x1f21a, 0x1f21a,), # Squared Cjk Unified Ideograph-7121
+ (0x1f22f, 0x1f22f,), # Squared Cjk Unified Ideograph-6307
+ (0x1f237, 0x1f237,), # Squared Cjk Unified Ideograph-6708
+ (0x1f30d, 0x1f30f,), # Earth Globe Europe-afric..Earth Globe Asia-austral
+ (0x1f315, 0x1f315,), # Full Moon Symbol
+ (0x1f31c, 0x1f31c,), # Last Quarter Moon With Face
+ (0x1f378, 0x1f378,), # Cocktail Glass
+ (0x1f393, 0x1f393,), # Graduation Cap
+ (0x1f3a7, 0x1f3a7,), # Headphone
+ (0x1f3ac, 0x1f3ae,), # Clapper Board ..Video Game
+ (0x1f3c2, 0x1f3c2,), # Snowboarder
+ (0x1f3c4, 0x1f3c4,), # Surfer
+ (0x1f3c6, 0x1f3c6,), # Trophy
+ (0x1f3ca, 0x1f3ca,), # Swimmer
+ (0x1f3e0, 0x1f3e0,), # House Building
+ (0x1f3ed, 0x1f3ed,), # Factory
+ (0x1f408, 0x1f408,), # Cat
+ (0x1f415, 0x1f415,), # Dog
+ (0x1f41f, 0x1f41f,), # Fish
+ (0x1f426, 0x1f426,), # Bird
+ (0x1f442, 0x1f442,), # Ear
+ (0x1f446, 0x1f449,), # White Up Pointing Backha..White Right Pointing Bac
+ (0x1f44d, 0x1f44e,), # Thumbs Up Sign ..Thumbs Down Sign
+ (0x1f453, 0x1f453,), # Eyeglasses
+ (0x1f46a, 0x1f46a,), # Family
+ (0x1f47d, 0x1f47d,), # Extraterrestrial Alien
+ (0x1f4a3, 0x1f4a3,), # Bomb
+ (0x1f4b0, 0x1f4b0,), # Money Bag
+ (0x1f4b3, 0x1f4b3,), # Credit Card
+ (0x1f4bb, 0x1f4bb,), # Personal Computer
+ (0x1f4bf, 0x1f4bf,), # Optical Disc
+ (0x1f4cb, 0x1f4cb,), # Clipboard
+ (0x1f4da, 0x1f4da,), # Books
+ (0x1f4df, 0x1f4df,), # Pager
+ (0x1f4e4, 0x1f4e6,), # Outbox Tray ..Package
+ (0x1f4ea, 0x1f4ed,), # Closed Mailbox With Lowe..Open Mailbox With Lowere
+ (0x1f4f7, 0x1f4f7,), # Camera
+ (0x1f4f9, 0x1f4fb,), # Video Camera ..Radio
+ (0x1f508, 0x1f508,), # Speaker
+ (0x1f50d, 0x1f50d,), # Left-pointing Magnifying Glass
+ (0x1f512, 0x1f513,), # Lock ..Open Lock
+ (0x1f550, 0x1f567,), # Clock Face One Oclock ..Clock Face Twelve-thirty
+ (0x1f610, 0x1f610,), # Neutral Face
+ (0x1f687, 0x1f687,), # Metro
+ (0x1f68d, 0x1f68d,), # Oncoming Bus
+ (0x1f691, 0x1f691,), # Ambulance
+ (0x1f694, 0x1f694,), # Oncoming Police Car
+ (0x1f698, 0x1f698,), # Oncoming Automobile
+ (0x1f6ad, 0x1f6ad,), # No Smoking Symbol
+ (0x1f6b2, 0x1f6b2,), # Bicycle
+ (0x1f6b9, 0x1f6ba,), # Mens Symbol ..Womens Symbol
+ (0x1f6bc, 0x1f6bc,), # Baby Symbol
+ ),
+}
diff --git a/contrib/python/wcwidth/py3/wcwidth/table_vs16.py b/contrib/python/wcwidth/py3/wcwidth/table_vs16.py
index 3249262d981..1ca25c66368 100644
--- a/contrib/python/wcwidth/py3/wcwidth/table_vs16.py
+++ b/contrib/python/wcwidth/py3/wcwidth/table_vs16.py
@@ -1,12 +1,12 @@
"""
Exports VS16_NARROW_TO_WIDE table keyed by supporting unicode version level.
-This code generated by wcwidth/bin/update-tables.py on 2023-11-07 16:43:49 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2025-09-15 16:57:50 UTC.
"""
VS16_NARROW_TO_WIDE = {
'9.0.0': (
# Source: 9.0.0
- # Date: 2023-02-01, 02:22:54 GMT
+ # Date: 2025-01-30, 21:48:29 GMT
#
(0x00023, 0x00023,), # Number Sign
(0x0002a, 0x0002a,), # Asterisk
diff --git a/contrib/python/wcwidth/py3/wcwidth/table_wide.py b/contrib/python/wcwidth/py3/wcwidth/table_wide.py
index bd6dfdd82a0..5139b1f0d3b 100644
--- a/contrib/python/wcwidth/py3/wcwidth/table_wide.py
+++ b/contrib/python/wcwidth/py3/wcwidth/table_wide.py
@@ -1,7 +1,7 @@
"""
Exports WIDE_EASTASIAN table keyed by supporting unicode version level.
-This code generated by wcwidth/bin/update-tables.py on 2024-01-06 01:39:49 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2025-09-19 15:55:08 UTC.
"""
WIDE_EASTASIAN = {
'4.1.0': (
@@ -1413,7 +1413,7 @@ WIDE_EASTASIAN = {
(0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
(0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
(0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q
- (0x031ef, 0x0321e,), # (nil) ..Parenthesized Korean Cha
+ (0x031ef, 0x0321e,), # Ideographic Description ..Parenthesized Korean Cha
(0x03220, 0x03247,), # Parenthesized Ideograph ..Circled Ideograph Koto
(0x03250, 0x04dbf,), # Partnership Sign ..Cjk Unified Ideograph-4d
(0x04e00, 0x0a48c,), # Cjk Unified Ideograph-4e..Yi Syllable Yyr
@@ -1490,4 +1490,262 @@ WIDE_EASTASIAN = {
(0x20000, 0x2fffd,), # Cjk Unified Ideograph-20..(nil)
(0x30000, 0x3fffd,), # Cjk Unified Ideograph-30..(nil)
),
+ '16.0.0': (
+ # Source: EastAsianWidth-16.0.0.txt
+ # Date: 2024-04-30, 21:48:20 GMT
+ #
+ (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler
+ (0x0231a, 0x0231b,), # Watch ..Hourglass
+ (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra
+ (0x023e9, 0x023ec,), # Black Right-pointing Dou..Black Down-pointing Doub
+ (0x023f0, 0x023f0,), # Alarm Clock
+ (0x023f3, 0x023f3,), # Hourglass With Flowing Sand
+ (0x025fd, 0x025fe,), # White Medium Small Squar..Black Medium Small Squar
+ (0x02614, 0x02615,), # Umbrella With Rain Drops..Hot Beverage
+ (0x02630, 0x02637,), # Trigram For Heaven ..Trigram For Earth
+ (0x02648, 0x02653,), # Aries ..Pisces
+ (0x0267f, 0x0267f,), # Wheelchair Symbol
+ (0x0268a, 0x0268f,), # Monogram For Yang ..Digram For Greater Yin
+ (0x02693, 0x02693,), # Anchor
+ (0x026a1, 0x026a1,), # High Voltage Sign
+ (0x026aa, 0x026ab,), # Medium White Circle ..Medium Black Circle
+ (0x026bd, 0x026be,), # Soccer Ball ..Baseball
+ (0x026c4, 0x026c5,), # Snowman Without Snow ..Sun Behind Cloud
+ (0x026ce, 0x026ce,), # Ophiuchus
+ (0x026d4, 0x026d4,), # No Entry
+ (0x026ea, 0x026ea,), # Church
+ (0x026f2, 0x026f3,), # Fountain ..Flag In Hole
+ (0x026f5, 0x026f5,), # Sailboat
+ (0x026fa, 0x026fa,), # Tent
+ (0x026fd, 0x026fd,), # Fuel Pump
+ (0x02705, 0x02705,), # White Heavy Check Mark
+ (0x0270a, 0x0270b,), # Raised Fist ..Raised Hand
+ (0x02728, 0x02728,), # Sparkles
+ (0x0274c, 0x0274c,), # Cross Mark
+ (0x0274e, 0x0274e,), # Negative Squared Cross Mark
+ (0x02753, 0x02755,), # Black Question Mark Orna..White Exclamation Mark O
+ (0x02757, 0x02757,), # Heavy Exclamation Mark Symbol
+ (0x02795, 0x02797,), # Heavy Plus Sign ..Heavy Division Sign
+ (0x027b0, 0x027b0,), # Curly Loop
+ (0x027bf, 0x027bf,), # Double Curly Loop
+ (0x02b1b, 0x02b1c,), # Black Large Square ..White Large Square
+ (0x02b50, 0x02b50,), # White Medium Star
+ (0x02b55, 0x02b55,), # Heavy Large Circle
+ (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
+ (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
+ (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
+ (0x02ff0, 0x03029,), # Ideographic Description ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
+ (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
+ (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
+ (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
+ (0x03190, 0x031e5,), # Ideographic Annotation L..(nil)
+ (0x031ef, 0x0321e,), # Ideographic Description ..Parenthesized Korean Cha
+ (0x03220, 0x03247,), # Parenthesized Ideograph ..Circled Ideograph Koto
+ (0x03250, 0x0a48c,), # Partnership Sign ..Yi Syllable Yyr
+ (0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke
+ (0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo
+ (0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih
+ (0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil)
+ (0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve
+ (0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop
+ (0x0fe54, 0x0fe66,), # Small Semicolon ..Small Equals Sign
+ (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
+ (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
+ (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
+ (0x17000, 0x187f7,), # (nil)
+ (0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char
+ (0x18cff, 0x18d08,), # (nil)
+ (0x1aff0, 0x1aff3,), # Katakana Letter Minnan T..Katakana Letter Minnan T
+ (0x1aff5, 0x1affb,), # Katakana Letter Minnan T..Katakana Letter Minnan N
+ (0x1affd, 0x1affe,), # Katakana Letter Minnan N..Katakana Letter Minnan N
+ (0x1b000, 0x1b122,), # Katakana Letter Archaic ..Katakana Letter Archaic
+ (0x1b132, 0x1b132,), # Hiragana Letter Small Ko
+ (0x1b150, 0x1b152,), # Hiragana Letter Small Wi..Hiragana Letter Small Wo
+ (0x1b155, 0x1b155,), # Katakana Letter Small Ko
+ (0x1b164, 0x1b167,), # Katakana Letter Small Wi..Katakana Letter Small N
+ (0x1b170, 0x1b2fb,), # Nushu Character-1b170 ..Nushu Character-1b2fb
+ (0x1d300, 0x1d356,), # Monogram For Earth ..Tetragram For Fostering
+ (0x1d360, 0x1d376,), # Counting Rod Unit Digit ..Ideographic Tally Mark F
+ (0x1f004, 0x1f004,), # Mahjong Tile Red Dragon
+ (0x1f0cf, 0x1f0cf,), # Playing Card Black Joker
+ (0x1f18e, 0x1f18e,), # Negative Squared Ab
+ (0x1f191, 0x1f19a,), # Squared Cl ..Squared Vs
+ (0x1f200, 0x1f202,), # Square Hiragana Hoka ..Squared Katakana Sa
+ (0x1f210, 0x1f23b,), # Squared Cjk Unified Ideo..Squared Cjk Unified Ideo
+ (0x1f240, 0x1f248,), # Tortoise Shell Bracketed..Tortoise Shell Bracketed
+ (0x1f250, 0x1f251,), # Circled Ideograph Advant..Circled Ideograph Accept
+ (0x1f260, 0x1f265,), # Rounded Symbol For Fu ..Rounded Symbol For Cai
+ (0x1f300, 0x1f320,), # Cyclone ..Shooting Star
+ (0x1f32d, 0x1f335,), # Hot Dog ..Cactus
+ (0x1f337, 0x1f37c,), # Tulip ..Baby Bottle
+ (0x1f37e, 0x1f393,), # Bottle With Popping Cork..Graduation Cap
+ (0x1f3a0, 0x1f3ca,), # Carousel Horse ..Swimmer
+ (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
+ (0x1f3e0, 0x1f3f0,), # House Building ..European Castle
+ (0x1f3f4, 0x1f3f4,), # Waving Black Flag
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
+ (0x1f440, 0x1f440,), # Eyes
+ (0x1f442, 0x1f4fc,), # Ear ..Videocassette
+ (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
+ (0x1f54b, 0x1f54e,), # Kaaba ..Menorah With Nine Branch
+ (0x1f550, 0x1f567,), # Clock Face One Oclock ..Clock Face Twelve-thirty
+ (0x1f57a, 0x1f57a,), # Man Dancing
+ (0x1f595, 0x1f596,), # Reversed Hand With Middl..Raised Hand With Part Be
+ (0x1f5a4, 0x1f5a4,), # Black Heart
+ (0x1f5fb, 0x1f64f,), # Mount Fuji ..Person With Folded Hands
+ (0x1f680, 0x1f6c5,), # Rocket ..Left Luggage
+ (0x1f6cc, 0x1f6cc,), # Sleeping Accommodation
+ (0x1f6d0, 0x1f6d2,), # Place Of Worship ..Shopping Trolley
+ (0x1f6d5, 0x1f6d7,), # Hindu Temple ..Elevator
+ (0x1f6dc, 0x1f6df,), # Wireless ..Ring Buoy
+ (0x1f6eb, 0x1f6ec,), # Airplane Departure ..Airplane Arriving
+ (0x1f6f4, 0x1f6fc,), # Scooter ..Roller Skate
+ (0x1f7e0, 0x1f7eb,), # Large Orange Circle ..Large Brown Square
+ (0x1f7f0, 0x1f7f0,), # Heavy Equals Sign
+ (0x1f90c, 0x1f93a,), # Pinched Fingers ..Fencer
+ (0x1f93c, 0x1f945,), # Wrestlers ..Goal Net
+ (0x1f947, 0x1f9ff,), # First Place Medal ..Nazar Amulet
+ (0x1fa70, 0x1fa7c,), # Ballet Shoes ..Crutch
+ (0x1fa80, 0x1fa89,), # Yo-yo ..(nil)
+ (0x1fa8f, 0x1fac6,), # (nil)
+ (0x1face, 0x1fadc,), # Moose ..(nil)
+ (0x1fadf, 0x1fae9,), # (nil)
+ (0x1faf0, 0x1faf8,), # Hand With Index Finger A..Rightwards Pushing Hand
+ (0x20000, 0x2fffd,), # Cjk Unified Ideograph-20..(nil)
+ (0x30000, 0x3fffd,), # Cjk Unified Ideograph-30..(nil)
+ ),
+ '17.0.0': (
+ # Source: EastAsianWidth-17.0.0.txt
+ # Date: 2025-07-24, 00:12:54 GMT
+ #
+ (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler
+ (0x0231a, 0x0231b,), # Watch ..Hourglass
+ (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra
+ (0x023e9, 0x023ec,), # Black Right-pointing Dou..Black Down-pointing Doub
+ (0x023f0, 0x023f0,), # Alarm Clock
+ (0x023f3, 0x023f3,), # Hourglass With Flowing Sand
+ (0x025fd, 0x025fe,), # White Medium Small Squar..Black Medium Small Squar
+ (0x02614, 0x02615,), # Umbrella With Rain Drops..Hot Beverage
+ (0x02630, 0x02637,), # Trigram For Heaven ..Trigram For Earth
+ (0x02648, 0x02653,), # Aries ..Pisces
+ (0x0267f, 0x0267f,), # Wheelchair Symbol
+ (0x0268a, 0x0268f,), # Monogram For Yang ..Digram For Greater Yin
+ (0x02693, 0x02693,), # Anchor
+ (0x026a1, 0x026a1,), # High Voltage Sign
+ (0x026aa, 0x026ab,), # Medium White Circle ..Medium Black Circle
+ (0x026bd, 0x026be,), # Soccer Ball ..Baseball
+ (0x026c4, 0x026c5,), # Snowman Without Snow ..Sun Behind Cloud
+ (0x026ce, 0x026ce,), # Ophiuchus
+ (0x026d4, 0x026d4,), # No Entry
+ (0x026ea, 0x026ea,), # Church
+ (0x026f2, 0x026f3,), # Fountain ..Flag In Hole
+ (0x026f5, 0x026f5,), # Sailboat
+ (0x026fa, 0x026fa,), # Tent
+ (0x026fd, 0x026fd,), # Fuel Pump
+ (0x02705, 0x02705,), # White Heavy Check Mark
+ (0x0270a, 0x0270b,), # Raised Fist ..Raised Hand
+ (0x02728, 0x02728,), # Sparkles
+ (0x0274c, 0x0274c,), # Cross Mark
+ (0x0274e, 0x0274e,), # Negative Squared Cross Mark
+ (0x02753, 0x02755,), # Black Question Mark Orna..White Exclamation Mark O
+ (0x02757, 0x02757,), # Heavy Exclamation Mark Symbol
+ (0x02795, 0x02797,), # Heavy Plus Sign ..Heavy Division Sign
+ (0x027b0, 0x027b0,), # Curly Loop
+ (0x027bf, 0x027bf,), # Double Curly Loop
+ (0x02b1b, 0x02b1c,), # Black Large Square ..White Large Square
+ (0x02b50, 0x02b50,), # White Medium Star
+ (0x02b55, 0x02b55,), # Heavy Large Circle
+ (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap
+ (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified
+ (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute
+ (0x02ff0, 0x03029,), # Ideographic Description ..Hangzhou Numeral Nine
+ (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In
+ (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke
+ (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto
+ (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn
+ (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae
+ (0x03190, 0x031e5,), # Ideographic Annotation L..(nil)
+ (0x031ef, 0x0321e,), # Ideographic Description ..Parenthesized Korean Cha
+ (0x03220, 0x03247,), # Parenthesized Ideograph ..Circled Ideograph Koto
+ (0x03250, 0x0a48c,), # Partnership Sign ..Yi Syllable Yyr
+ (0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke
+ (0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo
+ (0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih
+ (0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil)
+ (0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve
+ (0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop
+ (0x0fe54, 0x0fe66,), # Small Semicolon ..Small Equals Sign
+ (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At
+ (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa
+ (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign
+ (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma
+ (0x16ff2, 0x16ff6,), # (nil)
+ (0x17000, 0x18cd5,), # (nil) ..Khitan Small Script Char
+ (0x18cff, 0x18d1e,), # (nil)
+ (0x18d80, 0x18df2,), # (nil)
+ (0x1aff0, 0x1aff3,), # Katakana Letter Minnan T..Katakana Letter Minnan T
+ (0x1aff5, 0x1affb,), # Katakana Letter Minnan T..Katakana Letter Minnan N
+ (0x1affd, 0x1affe,), # Katakana Letter Minnan N..Katakana Letter Minnan N
+ (0x1b000, 0x1b122,), # Katakana Letter Archaic ..Katakana Letter Archaic
+ (0x1b132, 0x1b132,), # Hiragana Letter Small Ko
+ (0x1b150, 0x1b152,), # Hiragana Letter Small Wi..Hiragana Letter Small Wo
+ (0x1b155, 0x1b155,), # Katakana Letter Small Ko
+ (0x1b164, 0x1b167,), # Katakana Letter Small Wi..Katakana Letter Small N
+ (0x1b170, 0x1b2fb,), # Nushu Character-1b170 ..Nushu Character-1b2fb
+ (0x1d300, 0x1d356,), # Monogram For Earth ..Tetragram For Fostering
+ (0x1d360, 0x1d376,), # Counting Rod Unit Digit ..Ideographic Tally Mark F
+ (0x1f004, 0x1f004,), # Mahjong Tile Red Dragon
+ (0x1f0cf, 0x1f0cf,), # Playing Card Black Joker
+ (0x1f18e, 0x1f18e,), # Negative Squared Ab
+ (0x1f191, 0x1f19a,), # Squared Cl ..Squared Vs
+ (0x1f200, 0x1f202,), # Square Hiragana Hoka ..Squared Katakana Sa
+ (0x1f210, 0x1f23b,), # Squared Cjk Unified Ideo..Squared Cjk Unified Ideo
+ (0x1f240, 0x1f248,), # Tortoise Shell Bracketed..Tortoise Shell Bracketed
+ (0x1f250, 0x1f251,), # Circled Ideograph Advant..Circled Ideograph Accept
+ (0x1f260, 0x1f265,), # Rounded Symbol For Fu ..Rounded Symbol For Cai
+ (0x1f300, 0x1f320,), # Cyclone ..Shooting Star
+ (0x1f32d, 0x1f335,), # Hot Dog ..Cactus
+ (0x1f337, 0x1f37c,), # Tulip ..Baby Bottle
+ (0x1f37e, 0x1f393,), # Bottle With Popping Cork..Graduation Cap
+ (0x1f3a0, 0x1f3ca,), # Carousel Horse ..Swimmer
+ (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And
+ (0x1f3e0, 0x1f3f0,), # House Building ..European Castle
+ (0x1f3f4, 0x1f3f4,), # Waving Black Flag
+ (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora
+ (0x1f400, 0x1f43e,), # Rat ..Paw Prints
+ (0x1f440, 0x1f440,), # Eyes
+ (0x1f442, 0x1f4fc,), # Ear ..Videocassette
+ (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red
+ (0x1f54b, 0x1f54e,), # Kaaba ..Menorah With Nine Branch
+ (0x1f550, 0x1f567,), # Clock Face One Oclock ..Clock Face Twelve-thirty
+ (0x1f57a, 0x1f57a,), # Man Dancing
+ (0x1f595, 0x1f596,), # Reversed Hand With Middl..Raised Hand With Part Be
+ (0x1f5a4, 0x1f5a4,), # Black Heart
+ (0x1f5fb, 0x1f64f,), # Mount Fuji ..Person With Folded Hands
+ (0x1f680, 0x1f6c5,), # Rocket ..Left Luggage
+ (0x1f6cc, 0x1f6cc,), # Sleeping Accommodation
+ (0x1f6d0, 0x1f6d2,), # Place Of Worship ..Shopping Trolley
+ (0x1f6d5, 0x1f6d8,), # Hindu Temple ..(nil)
+ (0x1f6dc, 0x1f6df,), # Wireless ..Ring Buoy
+ (0x1f6eb, 0x1f6ec,), # Airplane Departure ..Airplane Arriving
+ (0x1f6f4, 0x1f6fc,), # Scooter ..Roller Skate
+ (0x1f7e0, 0x1f7eb,), # Large Orange Circle ..Large Brown Square
+ (0x1f7f0, 0x1f7f0,), # Heavy Equals Sign
+ (0x1f90c, 0x1f93a,), # Pinched Fingers ..Fencer
+ (0x1f93c, 0x1f945,), # Wrestlers ..Goal Net
+ (0x1f947, 0x1f9ff,), # First Place Medal ..Nazar Amulet
+ (0x1fa70, 0x1fa7c,), # Ballet Shoes ..Crutch
+ (0x1fa80, 0x1fa8a,), # Yo-yo ..(nil)
+ (0x1fa8e, 0x1fac6,), # (nil)
+ (0x1fac8, 0x1fac8,), # (nil)
+ (0x1facd, 0x1fadc,), # (nil)
+ (0x1fadf, 0x1faea,), # (nil)
+ (0x1faef, 0x1faf8,), # (nil) ..Rightwards Pushing Hand
+ (0x20000, 0x2fffd,), # Cjk Unified Ideograph-20..(nil)
+ (0x30000, 0x3fffd,), # Cjk Unified Ideograph-30..(nil)
+ ),
}
diff --git a/contrib/python/wcwidth/py3/wcwidth/table_zero.py b/contrib/python/wcwidth/py3/wcwidth/table_zero.py
index dd422915605..ef99d09e9f4 100644
--- a/contrib/python/wcwidth/py3/wcwidth/table_zero.py
+++ b/contrib/python/wcwidth/py3/wcwidth/table_zero.py
@@ -1,7 +1,7 @@
"""
Exports ZERO_WIDTH table keyed by supporting unicode version level.
-This code generated by wcwidth/bin/update-tables.py on 2024-01-04 07:14:52 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2025-09-18 07:49:05 UTC.
"""
ZERO_WIDTH = {
'4.1.0': (
@@ -9,7 +9,6 @@ ZERO_WIDTH = {
# Date: 2005-02-26, 02:35:50 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00486,), # Combining Cyrillic Titlo..Combining Cyrillic Psili
(0x00488, 0x00489,), # Combining Cyrillic Hundr..Combining Cyrillic Milli
@@ -159,7 +158,6 @@ ZERO_WIDTH = {
# Date: 2006-02-27, 23:41:27 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00486,), # Combining Cyrillic Titlo..Combining Cyrillic Psili
(0x00488, 0x00489,), # Combining Cyrillic Hundr..Combining Cyrillic Milli
@@ -314,7 +312,6 @@ ZERO_WIDTH = {
# Date: 2008-03-20, 17:54:57 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -492,7 +489,6 @@ ZERO_WIDTH = {
# Date: 2009-08-22, 04:58:21 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -698,7 +694,6 @@ ZERO_WIDTH = {
# Date: 2010-08-19, 00:48:09 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -910,7 +905,6 @@ ZERO_WIDTH = {
# Date: 2011-11-27, 05:10:22 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -1133,7 +1127,6 @@ ZERO_WIDTH = {
# Date: 2012-05-20, 00:42:34 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -1356,7 +1349,6 @@ ZERO_WIDTH = {
# Date: 2013-07-05, 14:08:45 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -1580,7 +1572,6 @@ ZERO_WIDTH = {
# Date: 2014-02-07, 18:42:12 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -1830,7 +1821,6 @@ ZERO_WIDTH = {
# Date: 2015-02-13, 13:47:11 GMT [MD]
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -2088,7 +2078,6 @@ ZERO_WIDTH = {
# Date: 2016-06-01, 10:34:26 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -2359,7 +2348,6 @@ ZERO_WIDTH = {
# Date: 2017-03-08, 08:41:49 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -2643,7 +2631,6 @@ ZERO_WIDTH = {
# Date: 2018-02-21, 05:34:04 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -2940,7 +2927,6 @@ ZERO_WIDTH = {
# Date: 2019-01-22, 08:18:28 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -3243,7 +3229,6 @@ ZERO_WIDTH = {
# Date: 2019-03-10, 10:53:08 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -3546,7 +3531,6 @@ ZERO_WIDTH = {
# Date: 2019-10-21, 14:30:32 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -3859,7 +3843,6 @@ ZERO_WIDTH = {
# Date: 2021-07-10, 00:35:08 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -4181,7 +4164,6 @@ ZERO_WIDTH = {
# Date: 2022-04-26, 23:14:35 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -4513,7 +4495,6 @@ ZERO_WIDTH = {
# Date: 2023-07-28, 23:34:02 GMT
#
(0x00000, 0x00000,), # (nil)
- (0x000ad, 0x000ad,), # Soft Hyphen
(0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
(0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
(0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
@@ -4840,4 +4821,694 @@ ZERO_WIDTH = {
(0xe0020, 0xe007f,), # Tag Space ..Cancel Tag
(0xe0100, 0xe01ef,), # Variation Selector-17 ..Variation Selector-256
),
+ '16.0.0': (
+ # Source: DerivedGeneralCategory-16.0.0.txt
+ # Date: 2024-04-30, 21:48:17 GMT
+ #
+ (0x00000, 0x00000,), # (nil)
+ (0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
+ (0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
+ (0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
+ (0x005bf, 0x005bf,), # Hebrew Point Rafe
+ (0x005c1, 0x005c2,), # Hebrew Point Shin Dot ..Hebrew Point Sin Dot
+ (0x005c4, 0x005c5,), # Hebrew Mark Upper Dot ..Hebrew Mark Lower Dot
+ (0x005c7, 0x005c7,), # Hebrew Point Qamats Qatan
+ (0x00600, 0x00605,), # Arabic Number Sign ..Arabic Number Mark Above
+ (0x00610, 0x0061a,), # Arabic Sign Sallallahou ..Arabic Small Kasra
+ (0x0061c, 0x0061c,), # Arabic Letter Mark
+ (0x0064b, 0x0065f,), # Arabic Fathatan ..Arabic Wavy Hamza Below
+ (0x00670, 0x00670,), # Arabic Letter Superscript Alef
+ (0x006d6, 0x006dd,), # Arabic Small High Ligatu..Arabic End Of Ayah
+ (0x006df, 0x006e4,), # Arabic Small High Rounde..Arabic Small High Madda
+ (0x006e7, 0x006e8,), # Arabic Small High Yeh ..Arabic Small High Noon
+ (0x006ea, 0x006ed,), # Arabic Empty Centre Low ..Arabic Small Low Meem
+ (0x0070f, 0x0070f,), # Syriac Abbreviation Mark
+ (0x00711, 0x00711,), # Syriac Letter Superscript Alaph
+ (0x00730, 0x0074a,), # Syriac Pthaha Above ..Syriac Barrekh
+ (0x007a6, 0x007b0,), # Thaana Abafili ..Thaana Sukun
+ (0x007eb, 0x007f3,), # Nko Combining Short High..Nko Combining Double Dot
+ (0x007fd, 0x007fd,), # Nko Dantayalan
+ (0x00816, 0x00819,), # Samaritan Mark In ..Samaritan Mark Dagesh
+ (0x0081b, 0x00823,), # Samaritan Mark Epentheti..Samaritan Vowel Sign A
+ (0x00825, 0x00827,), # Samaritan Vowel Sign Sho..Samaritan Vowel Sign U
+ (0x00829, 0x0082d,), # Samaritan Vowel Sign Lon..Samaritan Mark Nequdaa
+ (0x00859, 0x0085b,), # Mandaic Affrication Mark..Mandaic Gemination Mark
+ (0x00890, 0x00891,), # Arabic Pound Mark Above ..Arabic Piastre Mark Abov
+ (0x00897, 0x0089f,), # (nil) ..Arabic Half Madda Over M
+ (0x008ca, 0x00903,), # Arabic Small High Farsi ..Devanagari Sign Visarga
+ (0x0093a, 0x0093c,), # Devanagari Vowel Sign Oe..Devanagari Sign Nukta
+ (0x0093e, 0x0094f,), # Devanagari Vowel Sign Aa..Devanagari Vowel Sign Aw
+ (0x00951, 0x00957,), # Devanagari Stress Sign U..Devanagari Vowel Sign Uu
+ (0x00962, 0x00963,), # Devanagari Vowel Sign Vo..Devanagari Vowel Sign Vo
+ (0x00981, 0x00983,), # Bengali Sign Candrabindu..Bengali Sign Visarga
+ (0x009bc, 0x009bc,), # Bengali Sign Nukta
+ (0x009be, 0x009c4,), # Bengali Vowel Sign Aa ..Bengali Vowel Sign Vocal
+ (0x009c7, 0x009c8,), # Bengali Vowel Sign E ..Bengali Vowel Sign Ai
+ (0x009cb, 0x009cd,), # Bengali Vowel Sign O ..Bengali Sign Virama
+ (0x009d7, 0x009d7,), # Bengali Au Length Mark
+ (0x009e2, 0x009e3,), # Bengali Vowel Sign Vocal..Bengali Vowel Sign Vocal
+ (0x009fe, 0x009fe,), # Bengali Sandhi Mark
+ (0x00a01, 0x00a03,), # Gurmukhi Sign Adak Bindi..Gurmukhi Sign Visarga
+ (0x00a3c, 0x00a3c,), # Gurmukhi Sign Nukta
+ (0x00a3e, 0x00a42,), # Gurmukhi Vowel Sign Aa ..Gurmukhi Vowel Sign Uu
+ (0x00a47, 0x00a48,), # Gurmukhi Vowel Sign Ee ..Gurmukhi Vowel Sign Ai
+ (0x00a4b, 0x00a4d,), # Gurmukhi Vowel Sign Oo ..Gurmukhi Sign Virama
+ (0x00a51, 0x00a51,), # Gurmukhi Sign Udaat
+ (0x00a70, 0x00a71,), # Gurmukhi Tippi ..Gurmukhi Addak
+ (0x00a75, 0x00a75,), # Gurmukhi Sign Yakash
+ (0x00a81, 0x00a83,), # Gujarati Sign Candrabind..Gujarati Sign Visarga
+ (0x00abc, 0x00abc,), # Gujarati Sign Nukta
+ (0x00abe, 0x00ac5,), # Gujarati Vowel Sign Aa ..Gujarati Vowel Sign Cand
+ (0x00ac7, 0x00ac9,), # Gujarati Vowel Sign E ..Gujarati Vowel Sign Cand
+ (0x00acb, 0x00acd,), # Gujarati Vowel Sign O ..Gujarati Sign Virama
+ (0x00ae2, 0x00ae3,), # Gujarati Vowel Sign Voca..Gujarati Vowel Sign Voca
+ (0x00afa, 0x00aff,), # Gujarati Sign Sukun ..Gujarati Sign Two-circle
+ (0x00b01, 0x00b03,), # Oriya Sign Candrabindu ..Oriya Sign Visarga
+ (0x00b3c, 0x00b3c,), # Oriya Sign Nukta
+ (0x00b3e, 0x00b44,), # Oriya Vowel Sign Aa ..Oriya Vowel Sign Vocalic
+ (0x00b47, 0x00b48,), # Oriya Vowel Sign E ..Oriya Vowel Sign Ai
+ (0x00b4b, 0x00b4d,), # Oriya Vowel Sign O ..Oriya Sign Virama
+ (0x00b55, 0x00b57,), # Oriya Sign Overline ..Oriya Au Length Mark
+ (0x00b62, 0x00b63,), # Oriya Vowel Sign Vocalic..Oriya Vowel Sign Vocalic
+ (0x00b82, 0x00b82,), # Tamil Sign Anusvara
+ (0x00bbe, 0x00bc2,), # Tamil Vowel Sign Aa ..Tamil Vowel Sign Uu
+ (0x00bc6, 0x00bc8,), # Tamil Vowel Sign E ..Tamil Vowel Sign Ai
+ (0x00bca, 0x00bcd,), # Tamil Vowel Sign O ..Tamil Sign Virama
+ (0x00bd7, 0x00bd7,), # Tamil Au Length Mark
+ (0x00c00, 0x00c04,), # Telugu Sign Combining Ca..Telugu Sign Combining An
+ (0x00c3c, 0x00c3c,), # Telugu Sign Nukta
+ (0x00c3e, 0x00c44,), # Telugu Vowel Sign Aa ..Telugu Vowel Sign Vocali
+ (0x00c46, 0x00c48,), # Telugu Vowel Sign E ..Telugu Vowel Sign Ai
+ (0x00c4a, 0x00c4d,), # Telugu Vowel Sign O ..Telugu Sign Virama
+ (0x00c55, 0x00c56,), # Telugu Length Mark ..Telugu Ai Length Mark
+ (0x00c62, 0x00c63,), # Telugu Vowel Sign Vocali..Telugu Vowel Sign Vocali
+ (0x00c81, 0x00c83,), # Kannada Sign Candrabindu..Kannada Sign Visarga
+ (0x00cbc, 0x00cbc,), # Kannada Sign Nukta
+ (0x00cbe, 0x00cc4,), # Kannada Vowel Sign Aa ..Kannada Vowel Sign Vocal
+ (0x00cc6, 0x00cc8,), # Kannada Vowel Sign E ..Kannada Vowel Sign Ai
+ (0x00cca, 0x00ccd,), # Kannada Vowel Sign O ..Kannada Sign Virama
+ (0x00cd5, 0x00cd6,), # Kannada Length Mark ..Kannada Ai Length Mark
+ (0x00ce2, 0x00ce3,), # Kannada Vowel Sign Vocal..Kannada Vowel Sign Vocal
+ (0x00cf3, 0x00cf3,), # Kannada Sign Combining Anusvara Above Right
+ (0x00d00, 0x00d03,), # Malayalam Sign Combining..Malayalam Sign Visarga
+ (0x00d3b, 0x00d3c,), # Malayalam Sign Vertical ..Malayalam Sign Circular
+ (0x00d3e, 0x00d44,), # Malayalam Vowel Sign Aa ..Malayalam Vowel Sign Voc
+ (0x00d46, 0x00d48,), # Malayalam Vowel Sign E ..Malayalam Vowel Sign Ai
+ (0x00d4a, 0x00d4d,), # Malayalam Vowel Sign O ..Malayalam Sign Virama
+ (0x00d57, 0x00d57,), # Malayalam Au Length Mark
+ (0x00d62, 0x00d63,), # Malayalam Vowel Sign Voc..Malayalam Vowel Sign Voc
+ (0x00d81, 0x00d83,), # Sinhala Sign Candrabindu..Sinhala Sign Visargaya
+ (0x00dca, 0x00dca,), # Sinhala Sign Al-lakuna
+ (0x00dcf, 0x00dd4,), # Sinhala Vowel Sign Aela-..Sinhala Vowel Sign Ketti
+ (0x00dd6, 0x00dd6,), # Sinhala Vowel Sign Diga Paa-pilla
+ (0x00dd8, 0x00ddf,), # Sinhala Vowel Sign Gaett..Sinhala Vowel Sign Gayan
+ (0x00df2, 0x00df3,), # Sinhala Vowel Sign Diga ..Sinhala Vowel Sign Diga
+ (0x00e31, 0x00e31,), # Thai Character Mai Han-akat
+ (0x00e34, 0x00e3a,), # Thai Character Sara I ..Thai Character Phinthu
+ (0x00e47, 0x00e4e,), # Thai Character Maitaikhu..Thai Character Yamakkan
+ (0x00eb1, 0x00eb1,), # Lao Vowel Sign Mai Kan
+ (0x00eb4, 0x00ebc,), # Lao Vowel Sign I ..Lao Semivowel Sign Lo
+ (0x00ec8, 0x00ece,), # Lao Tone Mai Ek ..Lao Yamakkan
+ (0x00f18, 0x00f19,), # Tibetan Astrological Sig..Tibetan Astrological Sig
+ (0x00f35, 0x00f35,), # Tibetan Mark Ngas Bzung Nyi Zla
+ (0x00f37, 0x00f37,), # Tibetan Mark Ngas Bzung Sgor Rtags
+ (0x00f39, 0x00f39,), # Tibetan Mark Tsa -phru
+ (0x00f3e, 0x00f3f,), # Tibetan Sign Yar Tshes ..Tibetan Sign Mar Tshes
+ (0x00f71, 0x00f84,), # Tibetan Vowel Sign Aa ..Tibetan Mark Halanta
+ (0x00f86, 0x00f87,), # Tibetan Sign Lci Rtags ..Tibetan Sign Yang Rtags
+ (0x00f8d, 0x00f97,), # Tibetan Subjoined Sign L..Tibetan Subjoined Letter
+ (0x00f99, 0x00fbc,), # Tibetan Subjoined Letter..Tibetan Subjoined Letter
+ (0x00fc6, 0x00fc6,), # Tibetan Symbol Padma Gdan
+ (0x0102b, 0x0103e,), # Myanmar Vowel Sign Tall ..Myanmar Consonant Sign M
+ (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal
+ (0x0105e, 0x01060,), # Myanmar Consonant Sign M..Myanmar Consonant Sign M
+ (0x01062, 0x01064,), # Myanmar Vowel Sign Sgaw ..Myanmar Tone Mark Sgaw K
+ (0x01067, 0x0106d,), # Myanmar Vowel Sign Weste..Myanmar Sign Western Pwo
+ (0x01071, 0x01074,), # Myanmar Vowel Sign Geba ..Myanmar Vowel Sign Kayah
+ (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
+ (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
+ (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
+ (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
+ (0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod
+ (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
+ (0x01752, 0x01753,), # Buhid Vowel Sign I ..Buhid Vowel Sign U
+ (0x01772, 0x01773,), # Tagbanwa Vowel Sign I ..Tagbanwa Vowel Sign U
+ (0x017b4, 0x017d3,), # Khmer Vowel Inherent Aq ..Khmer Sign Bathamasat
+ (0x017dd, 0x017dd,), # Khmer Sign Atthacan
+ (0x0180b, 0x0180f,), # Mongolian Free Variation..Mongolian Free Variation
+ (0x01885, 0x01886,), # Mongolian Letter Ali Gal..Mongolian Letter Ali Gal
+ (0x018a9, 0x018a9,), # Mongolian Letter Ali Gali Dagalga
+ (0x01920, 0x0192b,), # Limbu Vowel Sign A ..Limbu Subjoined Letter W
+ (0x01930, 0x0193b,), # Limbu Small Letter Ka ..Limbu Sign Sa-i
+ (0x01a17, 0x01a1b,), # Buginese Vowel Sign I ..Buginese Vowel Sign Ae
+ (0x01a55, 0x01a5e,), # Tai Tham Consonant Sign ..Tai Tham Consonant Sign
+ (0x01a60, 0x01a7c,), # Tai Tham Sign Sakot ..Tai Tham Sign Khuen-lue
+ (0x01a7f, 0x01a7f,), # Tai Tham Combining Cryptogrammic Dot
+ (0x01ab0, 0x01ace,), # Combining Doubled Circum..Combining Latin Small Le
+ (0x01b00, 0x01b04,), # Balinese Sign Ulu Ricem ..Balinese Sign Bisah
+ (0x01b34, 0x01b44,), # Balinese Sign Rerekan ..Balinese Adeg Adeg
+ (0x01b6b, 0x01b73,), # Balinese Musical Symbol ..Balinese Musical Symbol
+ (0x01b80, 0x01b82,), # Sundanese Sign Panyecek ..Sundanese Sign Pangwisad
+ (0x01ba1, 0x01bad,), # Sundanese Consonant Sign..Sundanese Consonant Sign
+ (0x01be6, 0x01bf3,), # Batak Sign Tompi ..Batak Panongonan
+ (0x01c24, 0x01c37,), # Lepcha Subjoined Letter ..Lepcha Sign Nukta
+ (0x01cd0, 0x01cd2,), # Vedic Tone Karshana ..Vedic Tone Prenkha
+ (0x01cd4, 0x01ce8,), # Vedic Sign Yajurvedic Mi..Vedic Sign Visarga Anuda
+ (0x01ced, 0x01ced,), # Vedic Sign Tiryak
+ (0x01cf4, 0x01cf4,), # Vedic Tone Candra Above
+ (0x01cf7, 0x01cf9,), # Vedic Sign Atikrama ..Vedic Tone Double Ring A
+ (0x01dc0, 0x01dff,), # Combining Dotted Grave A..Combining Right Arrowhea
+ (0x0200b, 0x0200f,), # Zero Width Space ..Right-to-left Mark
+ (0x02028, 0x0202e,), # Line Separator ..Right-to-left Override
+ (0x02060, 0x02064,), # Word Joiner ..Invisible Plus
+ (0x02066, 0x0206f,), # Left-to-right Isolate ..Nominal Digit Shapes
+ (0x020d0, 0x020f0,), # Combining Left Harpoon A..Combining Asterisk Above
+ (0x02cef, 0x02cf1,), # Coptic Combining Ni Abov..Coptic Combining Spiritu
+ (0x02d7f, 0x02d7f,), # Tifinagh Consonant Joiner
+ (0x02de0, 0x02dff,), # Combining Cyrillic Lette..Combining Cyrillic Lette
+ (0x0302a, 0x0302f,), # Ideographic Level Tone M..Hangul Double Dot Tone M
+ (0x03099, 0x0309a,), # Combining Katakana-hirag..Combining Katakana-hirag
+ (0x0a66f, 0x0a672,), # Combining Cyrillic Vzmet..Combining Cyrillic Thous
+ (0x0a674, 0x0a67d,), # Combining Cyrillic Lette..Combining Cyrillic Payer
+ (0x0a69e, 0x0a69f,), # Combining Cyrillic Lette..Combining Cyrillic Lette
+ (0x0a6f0, 0x0a6f1,), # Bamum Combining Mark Koq..Bamum Combining Mark Tuk
+ (0x0a802, 0x0a802,), # Syloti Nagri Sign Dvisvara
+ (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta
+ (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara
+ (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign
+ (0x0a82c, 0x0a82c,), # Syloti Nagri Sign Alternate Hasanta
+ (0x0a880, 0x0a881,), # Saurashtra Sign Anusvara..Saurashtra Sign Visarga
+ (0x0a8b4, 0x0a8c5,), # Saurashtra Consonant Sig..Saurashtra Sign Candrabi
+ (0x0a8e0, 0x0a8f1,), # Combining Devanagari Dig..Combining Devanagari Sig
+ (0x0a8ff, 0x0a8ff,), # Devanagari Vowel Sign Ay
+ (0x0a926, 0x0a92d,), # Kayah Li Vowel Ue ..Kayah Li Tone Calya Plop
+ (0x0a947, 0x0a953,), # Rejang Vowel Sign I ..Rejang Virama
+ (0x0a980, 0x0a983,), # Javanese Sign Panyangga ..Javanese Sign Wignyan
+ (0x0a9b3, 0x0a9c0,), # Javanese Sign Cecak Telu..Javanese Pangkon
+ (0x0a9e5, 0x0a9e5,), # Myanmar Sign Shan Saw
+ (0x0aa29, 0x0aa36,), # Cham Vowel Sign Aa ..Cham Consonant Sign Wa
+ (0x0aa43, 0x0aa43,), # Cham Consonant Sign Final Ng
+ (0x0aa4c, 0x0aa4d,), # Cham Consonant Sign Fina..Cham Consonant Sign Fina
+ (0x0aa7b, 0x0aa7d,), # Myanmar Sign Pao Karen T..Myanmar Sign Tai Laing T
+ (0x0aab0, 0x0aab0,), # Tai Viet Mai Kang
+ (0x0aab2, 0x0aab4,), # Tai Viet Vowel I ..Tai Viet Vowel U
+ (0x0aab7, 0x0aab8,), # Tai Viet Mai Khit ..Tai Viet Vowel Ia
+ (0x0aabe, 0x0aabf,), # Tai Viet Vowel Am ..Tai Viet Tone Mai Ek
+ (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho
+ (0x0aaeb, 0x0aaef,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
+ (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
+ (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
+ (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
+ (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
+ (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
+ (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
+ (0x0feff, 0x0feff,), # Zero Width No-break Space
+ (0x0fff9, 0x0fffb,), # Interlinear Annotation A..Interlinear Annotation T
+ (0x101fd, 0x101fd,), # Phaistos Disc Sign Combining Oblique Stroke
+ (0x102e0, 0x102e0,), # Coptic Epact Thousands Mark
+ (0x10376, 0x1037a,), # Combining Old Permic Let..Combining Old Permic Let
+ (0x10a01, 0x10a03,), # Kharoshthi Vowel Sign I ..Kharoshthi Vowel Sign Vo
+ (0x10a05, 0x10a06,), # Kharoshthi Vowel Sign E ..Kharoshthi Vowel Sign O
+ (0x10a0c, 0x10a0f,), # Kharoshthi Vowel Length ..Kharoshthi Sign Visarga
+ (0x10a38, 0x10a3a,), # Kharoshthi Sign Bar Abov..Kharoshthi Sign Dot Belo
+ (0x10a3f, 0x10a3f,), # Kharoshthi Virama
+ (0x10ae5, 0x10ae6,), # Manichaean Abbreviation ..Manichaean Abbreviation
+ (0x10d24, 0x10d27,), # Hanifi Rohingya Sign Har..Hanifi Rohingya Sign Tas
+ (0x10d69, 0x10d6d,), # (nil)
+ (0x10eab, 0x10eac,), # Yezidi Combining Hamza M..Yezidi Combining Madda M
+ (0x10efc, 0x10eff,), # (nil) ..Arabic Small Low Word Ma
+ (0x10f46, 0x10f50,), # Sogdian Combining Dot Be..Sogdian Combining Stroke
+ (0x10f82, 0x10f85,), # Old Uyghur Combining Dot..Old Uyghur Combining Two
+ (0x11000, 0x11002,), # Brahmi Sign Candrabindu ..Brahmi Sign Visarga
+ (0x11038, 0x11046,), # Brahmi Vowel Sign Aa ..Brahmi Virama
+ (0x11070, 0x11070,), # Brahmi Sign Old Tamil Virama
+ (0x11073, 0x11074,), # Brahmi Vowel Sign Old Ta..Brahmi Vowel Sign Old Ta
+ (0x1107f, 0x11082,), # Brahmi Number Joiner ..Kaithi Sign Visarga
+ (0x110b0, 0x110ba,), # Kaithi Vowel Sign Aa ..Kaithi Sign Nukta
+ (0x110bd, 0x110bd,), # Kaithi Number Sign
+ (0x110c2, 0x110c2,), # Kaithi Vowel Sign Vocalic R
+ (0x110cd, 0x110cd,), # Kaithi Number Sign Above
+ (0x11100, 0x11102,), # Chakma Sign Candrabindu ..Chakma Sign Visarga
+ (0x11127, 0x11134,), # Chakma Vowel Sign A ..Chakma Maayyaa
+ (0x11145, 0x11146,), # Chakma Vowel Sign Aa ..Chakma Vowel Sign Ei
+ (0x11173, 0x11173,), # Mahajani Sign Nukta
+ (0x11180, 0x11182,), # Sharada Sign Candrabindu..Sharada Sign Visarga
+ (0x111b3, 0x111c0,), # Sharada Vowel Sign Aa ..Sharada Sign Virama
+ (0x111c9, 0x111cc,), # Sharada Sandhi Mark ..Sharada Extra Short Vowe
+ (0x111ce, 0x111cf,), # Sharada Vowel Sign Prish..Sharada Sign Inverted Ca
+ (0x1122c, 0x11237,), # Khojki Vowel Sign Aa ..Khojki Sign Shadda
+ (0x1123e, 0x1123e,), # Khojki Sign Sukun
+ (0x11241, 0x11241,), # Khojki Vowel Sign Vocalic R
+ (0x112df, 0x112ea,), # Khudawadi Sign Anusvara ..Khudawadi Sign Virama
+ (0x11300, 0x11303,), # Grantha Sign Combining A..Grantha Sign Visarga
+ (0x1133b, 0x1133c,), # Combining Bindu Below ..Grantha Sign Nukta
+ (0x1133e, 0x11344,), # Grantha Vowel Sign Aa ..Grantha Vowel Sign Vocal
+ (0x11347, 0x11348,), # Grantha Vowel Sign Ee ..Grantha Vowel Sign Ai
+ (0x1134b, 0x1134d,), # Grantha Vowel Sign Oo ..Grantha Sign Virama
+ (0x11357, 0x11357,), # Grantha Au Length Mark
+ (0x11362, 0x11363,), # Grantha Vowel Sign Vocal..Grantha Vowel Sign Vocal
+ (0x11366, 0x1136c,), # Combining Grantha Digit ..Combining Grantha Digit
+ (0x11370, 0x11374,), # Combining Grantha Letter..Combining Grantha Letter
+ (0x113b8, 0x113c0,), # (nil)
+ (0x113c2, 0x113c2,), # (nil)
+ (0x113c5, 0x113c5,), # (nil)
+ (0x113c7, 0x113ca,), # (nil)
+ (0x113cc, 0x113d0,), # (nil)
+ (0x113d2, 0x113d2,), # (nil)
+ (0x113e1, 0x113e2,), # (nil)
+ (0x11435, 0x11446,), # Newa Vowel Sign Aa ..Newa Sign Nukta
+ (0x1145e, 0x1145e,), # Newa Sandhi Mark
+ (0x114b0, 0x114c3,), # Tirhuta Vowel Sign Aa ..Tirhuta Sign Nukta
+ (0x115af, 0x115b5,), # Siddham Vowel Sign Aa ..Siddham Vowel Sign Vocal
+ (0x115b8, 0x115c0,), # Siddham Vowel Sign E ..Siddham Sign Nukta
+ (0x115dc, 0x115dd,), # Siddham Vowel Sign Alter..Siddham Vowel Sign Alter
+ (0x11630, 0x11640,), # Modi Vowel Sign Aa ..Modi Sign Ardhacandra
+ (0x116ab, 0x116b7,), # Takri Sign Anusvara ..Takri Sign Nukta
+ (0x1171d, 0x1172b,), # Ahom Consonant Sign Medi..Ahom Sign Killer
+ (0x1182c, 0x1183a,), # Dogra Vowel Sign Aa ..Dogra Sign Nukta
+ (0x11930, 0x11935,), # Dives Akuru Vowel Sign A..Dives Akuru Vowel Sign E
+ (0x11937, 0x11938,), # Dives Akuru Vowel Sign A..Dives Akuru Vowel Sign O
+ (0x1193b, 0x1193e,), # Dives Akuru Sign Anusvar..Dives Akuru Virama
+ (0x11940, 0x11940,), # Dives Akuru Medial Ya
+ (0x11942, 0x11943,), # Dives Akuru Medial Ra ..Dives Akuru Sign Nukta
+ (0x119d1, 0x119d7,), # Nandinagari Vowel Sign A..Nandinagari Vowel Sign V
+ (0x119da, 0x119e0,), # Nandinagari Vowel Sign E..Nandinagari Sign Virama
+ (0x119e4, 0x119e4,), # Nandinagari Vowel Sign Prishthamatra E
+ (0x11a01, 0x11a0a,), # Zanabazar Square Vowel S..Zanabazar Square Vowel L
+ (0x11a33, 0x11a39,), # Zanabazar Square Final C..Zanabazar Square Sign Vi
+ (0x11a3b, 0x11a3e,), # Zanabazar Square Cluster..Zanabazar Square Cluster
+ (0x11a47, 0x11a47,), # Zanabazar Square Subjoiner
+ (0x11a51, 0x11a5b,), # Soyombo Vowel Sign I ..Soyombo Vowel Length Mar
+ (0x11a8a, 0x11a99,), # Soyombo Final Consonant ..Soyombo Subjoiner
+ (0x11c2f, 0x11c36,), # Bhaiksuki Vowel Sign Aa ..Bhaiksuki Vowel Sign Voc
+ (0x11c38, 0x11c3f,), # Bhaiksuki Vowel Sign E ..Bhaiksuki Sign Virama
+ (0x11c92, 0x11ca7,), # Marchen Subjoined Letter..Marchen Subjoined Letter
+ (0x11ca9, 0x11cb6,), # Marchen Subjoined Letter..Marchen Sign Candrabindu
+ (0x11d31, 0x11d36,), # Masaram Gondi Vowel Sign..Masaram Gondi Vowel Sign
+ (0x11d3a, 0x11d3a,), # Masaram Gondi Vowel Sign E
+ (0x11d3c, 0x11d3d,), # Masaram Gondi Vowel Sign..Masaram Gondi Vowel Sign
+ (0x11d3f, 0x11d45,), # Masaram Gondi Vowel Sign..Masaram Gondi Virama
+ (0x11d47, 0x11d47,), # Masaram Gondi Ra-kara
+ (0x11d8a, 0x11d8e,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Vowel Sign
+ (0x11d90, 0x11d91,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Vowel Sign
+ (0x11d93, 0x11d97,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Virama
+ (0x11ef3, 0x11ef6,), # Makasar Vowel Sign I ..Makasar Vowel Sign O
+ (0x11f00, 0x11f01,), # Kawi Sign Candrabindu ..Kawi Sign Anusvara
+ (0x11f03, 0x11f03,), # Kawi Sign Visarga
+ (0x11f34, 0x11f3a,), # Kawi Vowel Sign Aa ..Kawi Vowel Sign Vocalic
+ (0x11f3e, 0x11f42,), # Kawi Vowel Sign E ..Kawi Conjoiner
+ (0x11f5a, 0x11f5a,), # (nil)
+ (0x13430, 0x13440,), # Egyptian Hieroglyph Vert..Egyptian Hieroglyph Mirr
+ (0x13447, 0x13455,), # Egyptian Hieroglyph Modi..Egyptian Hieroglyph Modi
+ (0x1611e, 0x1612f,), # (nil)
+ (0x16af0, 0x16af4,), # Bassa Vah Combining High..Bassa Vah Combining High
+ (0x16b30, 0x16b36,), # Pahawh Hmong Mark Cim Tu..Pahawh Hmong Mark Cim Ta
+ (0x16f4f, 0x16f4f,), # Miao Sign Consonant Modifier Bar
+ (0x16f51, 0x16f87,), # Miao Sign Aspiration ..Miao Vowel Sign Ui
+ (0x16f8f, 0x16f92,), # Miao Tone Right ..Miao Tone Below
+ (0x16fe4, 0x16fe4,), # Khitan Small Script Filler
+ (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x1bc9d, 0x1bc9e,), # Duployan Thick Letter Se..Duployan Double Mark
+ (0x1bca0, 0x1bca3,), # Shorthand Format Letter ..Shorthand Format Up Step
+ (0x1cf00, 0x1cf2d,), # Znamenny Combining Mark ..Znamenny Combining Mark
+ (0x1cf30, 0x1cf46,), # Znamenny Combining Tonal..Znamenny Priznak Modifie
+ (0x1d165, 0x1d169,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d16d, 0x1d182,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d185, 0x1d18b,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d1aa, 0x1d1ad,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d242, 0x1d244,), # Combining Greek Musical ..Combining Greek Musical
+ (0x1da00, 0x1da36,), # Signwriting Head Rim ..Signwriting Air Sucking
+ (0x1da3b, 0x1da6c,), # Signwriting Mouth Closed..Signwriting Excitement
+ (0x1da75, 0x1da75,), # Signwriting Upper Body Tilting From Hip Joints
+ (0x1da84, 0x1da84,), # Signwriting Location Head Neck
+ (0x1da9b, 0x1da9f,), # Signwriting Fill Modifie..Signwriting Fill Modifie
+ (0x1daa1, 0x1daaf,), # Signwriting Rotation Mod..Signwriting Rotation Mod
+ (0x1e000, 0x1e006,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e008, 0x1e018,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e01b, 0x1e021,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e023, 0x1e024,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e026, 0x1e02a,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e08f, 0x1e08f,), # Combining Cyrillic Small Letter Byelorussian-ukr
+ (0x1e130, 0x1e136,), # Nyiakeng Puachue Hmong T..Nyiakeng Puachue Hmong T
+ (0x1e2ae, 0x1e2ae,), # Toto Sign Rising Tone
+ (0x1e2ec, 0x1e2ef,), # Wancho Tone Tup ..Wancho Tone Koini
+ (0x1e4ec, 0x1e4ef,), # Nag Mundari Sign Muhor ..Nag Mundari Sign Sutuh
+ (0x1e5ee, 0x1e5ef,), # (nil)
+ (0x1e8d0, 0x1e8d6,), # Mende Kikakui Combining ..Mende Kikakui Combining
+ (0x1e944, 0x1e94a,), # Adlam Alif Lengthener ..Adlam Nukta
+ (0x1f3fb, 0x1f3ff,), # Emoji Modifier Fitzpatri..Emoji Modifier Fitzpatri
+ (0xe0001, 0xe0001,), # Language Tag
+ (0xe0020, 0xe007f,), # Tag Space ..Cancel Tag
+ (0xe0100, 0xe01ef,), # Variation Selector-17 ..Variation Selector-256
+ ),
+ '17.0.0': (
+ # Source: DerivedGeneralCategory-17.0.0.txt
+ # Date: 2025-07-24, 00:12:50 GMT
+ #
+ (0x00000, 0x00000,), # (nil)
+ (0x00300, 0x0036f,), # Combining Grave Accent ..Combining Latin Small Le
+ (0x00483, 0x00489,), # Combining Cyrillic Titlo..Combining Cyrillic Milli
+ (0x00591, 0x005bd,), # Hebrew Accent Etnahta ..Hebrew Point Meteg
+ (0x005bf, 0x005bf,), # Hebrew Point Rafe
+ (0x005c1, 0x005c2,), # Hebrew Point Shin Dot ..Hebrew Point Sin Dot
+ (0x005c4, 0x005c5,), # Hebrew Mark Upper Dot ..Hebrew Mark Lower Dot
+ (0x005c7, 0x005c7,), # Hebrew Point Qamats Qatan
+ (0x00600, 0x00605,), # Arabic Number Sign ..Arabic Number Mark Above
+ (0x00610, 0x0061a,), # Arabic Sign Sallallahou ..Arabic Small Kasra
+ (0x0061c, 0x0061c,), # Arabic Letter Mark
+ (0x0064b, 0x0065f,), # Arabic Fathatan ..Arabic Wavy Hamza Below
+ (0x00670, 0x00670,), # Arabic Letter Superscript Alef
+ (0x006d6, 0x006dd,), # Arabic Small High Ligatu..Arabic End Of Ayah
+ (0x006df, 0x006e4,), # Arabic Small High Rounde..Arabic Small High Madda
+ (0x006e7, 0x006e8,), # Arabic Small High Yeh ..Arabic Small High Noon
+ (0x006ea, 0x006ed,), # Arabic Empty Centre Low ..Arabic Small Low Meem
+ (0x0070f, 0x0070f,), # Syriac Abbreviation Mark
+ (0x00711, 0x00711,), # Syriac Letter Superscript Alaph
+ (0x00730, 0x0074a,), # Syriac Pthaha Above ..Syriac Barrekh
+ (0x007a6, 0x007b0,), # Thaana Abafili ..Thaana Sukun
+ (0x007eb, 0x007f3,), # Nko Combining Short High..Nko Combining Double Dot
+ (0x007fd, 0x007fd,), # Nko Dantayalan
+ (0x00816, 0x00819,), # Samaritan Mark In ..Samaritan Mark Dagesh
+ (0x0081b, 0x00823,), # Samaritan Mark Epentheti..Samaritan Vowel Sign A
+ (0x00825, 0x00827,), # Samaritan Vowel Sign Sho..Samaritan Vowel Sign U
+ (0x00829, 0x0082d,), # Samaritan Vowel Sign Lon..Samaritan Mark Nequdaa
+ (0x00859, 0x0085b,), # Mandaic Affrication Mark..Mandaic Gemination Mark
+ (0x00890, 0x00891,), # Arabic Pound Mark Above ..Arabic Piastre Mark Abov
+ (0x00897, 0x0089f,), # (nil) ..Arabic Half Madda Over M
+ (0x008ca, 0x00903,), # Arabic Small High Farsi ..Devanagari Sign Visarga
+ (0x0093a, 0x0093c,), # Devanagari Vowel Sign Oe..Devanagari Sign Nukta
+ (0x0093e, 0x0094f,), # Devanagari Vowel Sign Aa..Devanagari Vowel Sign Aw
+ (0x00951, 0x00957,), # Devanagari Stress Sign U..Devanagari Vowel Sign Uu
+ (0x00962, 0x00963,), # Devanagari Vowel Sign Vo..Devanagari Vowel Sign Vo
+ (0x00981, 0x00983,), # Bengali Sign Candrabindu..Bengali Sign Visarga
+ (0x009bc, 0x009bc,), # Bengali Sign Nukta
+ (0x009be, 0x009c4,), # Bengali Vowel Sign Aa ..Bengali Vowel Sign Vocal
+ (0x009c7, 0x009c8,), # Bengali Vowel Sign E ..Bengali Vowel Sign Ai
+ (0x009cb, 0x009cd,), # Bengali Vowel Sign O ..Bengali Sign Virama
+ (0x009d7, 0x009d7,), # Bengali Au Length Mark
+ (0x009e2, 0x009e3,), # Bengali Vowel Sign Vocal..Bengali Vowel Sign Vocal
+ (0x009fe, 0x009fe,), # Bengali Sandhi Mark
+ (0x00a01, 0x00a03,), # Gurmukhi Sign Adak Bindi..Gurmukhi Sign Visarga
+ (0x00a3c, 0x00a3c,), # Gurmukhi Sign Nukta
+ (0x00a3e, 0x00a42,), # Gurmukhi Vowel Sign Aa ..Gurmukhi Vowel Sign Uu
+ (0x00a47, 0x00a48,), # Gurmukhi Vowel Sign Ee ..Gurmukhi Vowel Sign Ai
+ (0x00a4b, 0x00a4d,), # Gurmukhi Vowel Sign Oo ..Gurmukhi Sign Virama
+ (0x00a51, 0x00a51,), # Gurmukhi Sign Udaat
+ (0x00a70, 0x00a71,), # Gurmukhi Tippi ..Gurmukhi Addak
+ (0x00a75, 0x00a75,), # Gurmukhi Sign Yakash
+ (0x00a81, 0x00a83,), # Gujarati Sign Candrabind..Gujarati Sign Visarga
+ (0x00abc, 0x00abc,), # Gujarati Sign Nukta
+ (0x00abe, 0x00ac5,), # Gujarati Vowel Sign Aa ..Gujarati Vowel Sign Cand
+ (0x00ac7, 0x00ac9,), # Gujarati Vowel Sign E ..Gujarati Vowel Sign Cand
+ (0x00acb, 0x00acd,), # Gujarati Vowel Sign O ..Gujarati Sign Virama
+ (0x00ae2, 0x00ae3,), # Gujarati Vowel Sign Voca..Gujarati Vowel Sign Voca
+ (0x00afa, 0x00aff,), # Gujarati Sign Sukun ..Gujarati Sign Two-circle
+ (0x00b01, 0x00b03,), # Oriya Sign Candrabindu ..Oriya Sign Visarga
+ (0x00b3c, 0x00b3c,), # Oriya Sign Nukta
+ (0x00b3e, 0x00b44,), # Oriya Vowel Sign Aa ..Oriya Vowel Sign Vocalic
+ (0x00b47, 0x00b48,), # Oriya Vowel Sign E ..Oriya Vowel Sign Ai
+ (0x00b4b, 0x00b4d,), # Oriya Vowel Sign O ..Oriya Sign Virama
+ (0x00b55, 0x00b57,), # Oriya Sign Overline ..Oriya Au Length Mark
+ (0x00b62, 0x00b63,), # Oriya Vowel Sign Vocalic..Oriya Vowel Sign Vocalic
+ (0x00b82, 0x00b82,), # Tamil Sign Anusvara
+ (0x00bbe, 0x00bc2,), # Tamil Vowel Sign Aa ..Tamil Vowel Sign Uu
+ (0x00bc6, 0x00bc8,), # Tamil Vowel Sign E ..Tamil Vowel Sign Ai
+ (0x00bca, 0x00bcd,), # Tamil Vowel Sign O ..Tamil Sign Virama
+ (0x00bd7, 0x00bd7,), # Tamil Au Length Mark
+ (0x00c00, 0x00c04,), # Telugu Sign Combining Ca..Telugu Sign Combining An
+ (0x00c3c, 0x00c3c,), # Telugu Sign Nukta
+ (0x00c3e, 0x00c44,), # Telugu Vowel Sign Aa ..Telugu Vowel Sign Vocali
+ (0x00c46, 0x00c48,), # Telugu Vowel Sign E ..Telugu Vowel Sign Ai
+ (0x00c4a, 0x00c4d,), # Telugu Vowel Sign O ..Telugu Sign Virama
+ (0x00c55, 0x00c56,), # Telugu Length Mark ..Telugu Ai Length Mark
+ (0x00c62, 0x00c63,), # Telugu Vowel Sign Vocali..Telugu Vowel Sign Vocali
+ (0x00c81, 0x00c83,), # Kannada Sign Candrabindu..Kannada Sign Visarga
+ (0x00cbc, 0x00cbc,), # Kannada Sign Nukta
+ (0x00cbe, 0x00cc4,), # Kannada Vowel Sign Aa ..Kannada Vowel Sign Vocal
+ (0x00cc6, 0x00cc8,), # Kannada Vowel Sign E ..Kannada Vowel Sign Ai
+ (0x00cca, 0x00ccd,), # Kannada Vowel Sign O ..Kannada Sign Virama
+ (0x00cd5, 0x00cd6,), # Kannada Length Mark ..Kannada Ai Length Mark
+ (0x00ce2, 0x00ce3,), # Kannada Vowel Sign Vocal..Kannada Vowel Sign Vocal
+ (0x00cf3, 0x00cf3,), # Kannada Sign Combining Anusvara Above Right
+ (0x00d00, 0x00d03,), # Malayalam Sign Combining..Malayalam Sign Visarga
+ (0x00d3b, 0x00d3c,), # Malayalam Sign Vertical ..Malayalam Sign Circular
+ (0x00d3e, 0x00d44,), # Malayalam Vowel Sign Aa ..Malayalam Vowel Sign Voc
+ (0x00d46, 0x00d48,), # Malayalam Vowel Sign E ..Malayalam Vowel Sign Ai
+ (0x00d4a, 0x00d4d,), # Malayalam Vowel Sign O ..Malayalam Sign Virama
+ (0x00d57, 0x00d57,), # Malayalam Au Length Mark
+ (0x00d62, 0x00d63,), # Malayalam Vowel Sign Voc..Malayalam Vowel Sign Voc
+ (0x00d81, 0x00d83,), # Sinhala Sign Candrabindu..Sinhala Sign Visargaya
+ (0x00dca, 0x00dca,), # Sinhala Sign Al-lakuna
+ (0x00dcf, 0x00dd4,), # Sinhala Vowel Sign Aela-..Sinhala Vowel Sign Ketti
+ (0x00dd6, 0x00dd6,), # Sinhala Vowel Sign Diga Paa-pilla
+ (0x00dd8, 0x00ddf,), # Sinhala Vowel Sign Gaett..Sinhala Vowel Sign Gayan
+ (0x00df2, 0x00df3,), # Sinhala Vowel Sign Diga ..Sinhala Vowel Sign Diga
+ (0x00e31, 0x00e31,), # Thai Character Mai Han-akat
+ (0x00e34, 0x00e3a,), # Thai Character Sara I ..Thai Character Phinthu
+ (0x00e47, 0x00e4e,), # Thai Character Maitaikhu..Thai Character Yamakkan
+ (0x00eb1, 0x00eb1,), # Lao Vowel Sign Mai Kan
+ (0x00eb4, 0x00ebc,), # Lao Vowel Sign I ..Lao Semivowel Sign Lo
+ (0x00ec8, 0x00ece,), # Lao Tone Mai Ek ..Lao Yamakkan
+ (0x00f18, 0x00f19,), # Tibetan Astrological Sig..Tibetan Astrological Sig
+ (0x00f35, 0x00f35,), # Tibetan Mark Ngas Bzung Nyi Zla
+ (0x00f37, 0x00f37,), # Tibetan Mark Ngas Bzung Sgor Rtags
+ (0x00f39, 0x00f39,), # Tibetan Mark Tsa -phru
+ (0x00f3e, 0x00f3f,), # Tibetan Sign Yar Tshes ..Tibetan Sign Mar Tshes
+ (0x00f71, 0x00f84,), # Tibetan Vowel Sign Aa ..Tibetan Mark Halanta
+ (0x00f86, 0x00f87,), # Tibetan Sign Lci Rtags ..Tibetan Sign Yang Rtags
+ (0x00f8d, 0x00f97,), # Tibetan Subjoined Sign L..Tibetan Subjoined Letter
+ (0x00f99, 0x00fbc,), # Tibetan Subjoined Letter..Tibetan Subjoined Letter
+ (0x00fc6, 0x00fc6,), # Tibetan Symbol Padma Gdan
+ (0x0102b, 0x0103e,), # Myanmar Vowel Sign Tall ..Myanmar Consonant Sign M
+ (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal
+ (0x0105e, 0x01060,), # Myanmar Consonant Sign M..Myanmar Consonant Sign M
+ (0x01062, 0x01064,), # Myanmar Vowel Sign Sgaw ..Myanmar Tone Mark Sgaw K
+ (0x01067, 0x0106d,), # Myanmar Vowel Sign Weste..Myanmar Sign Western Pwo
+ (0x01071, 0x01074,), # Myanmar Vowel Sign Geba ..Myanmar Vowel Sign Kayah
+ (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci
+ (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5
+ (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton
+ (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni
+ (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin
+ (0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod
+ (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod
+ (0x01752, 0x01753,), # Buhid Vowel Sign I ..Buhid Vowel Sign U
+ (0x01772, 0x01773,), # Tagbanwa Vowel Sign I ..Tagbanwa Vowel Sign U
+ (0x017b4, 0x017d3,), # Khmer Vowel Inherent Aq ..Khmer Sign Bathamasat
+ (0x017dd, 0x017dd,), # Khmer Sign Atthacan
+ (0x0180b, 0x0180f,), # Mongolian Free Variation..Mongolian Free Variation
+ (0x01885, 0x01886,), # Mongolian Letter Ali Gal..Mongolian Letter Ali Gal
+ (0x018a9, 0x018a9,), # Mongolian Letter Ali Gali Dagalga
+ (0x01920, 0x0192b,), # Limbu Vowel Sign A ..Limbu Subjoined Letter W
+ (0x01930, 0x0193b,), # Limbu Small Letter Ka ..Limbu Sign Sa-i
+ (0x01a17, 0x01a1b,), # Buginese Vowel Sign I ..Buginese Vowel Sign Ae
+ (0x01a55, 0x01a5e,), # Tai Tham Consonant Sign ..Tai Tham Consonant Sign
+ (0x01a60, 0x01a7c,), # Tai Tham Sign Sakot ..Tai Tham Sign Khuen-lue
+ (0x01a7f, 0x01a7f,), # Tai Tham Combining Cryptogrammic Dot
+ (0x01ab0, 0x01add,), # Combining Doubled Circum..(nil)
+ (0x01ae0, 0x01aeb,), # (nil)
+ (0x01b00, 0x01b04,), # Balinese Sign Ulu Ricem ..Balinese Sign Bisah
+ (0x01b34, 0x01b44,), # Balinese Sign Rerekan ..Balinese Adeg Adeg
+ (0x01b6b, 0x01b73,), # Balinese Musical Symbol ..Balinese Musical Symbol
+ (0x01b80, 0x01b82,), # Sundanese Sign Panyecek ..Sundanese Sign Pangwisad
+ (0x01ba1, 0x01bad,), # Sundanese Consonant Sign..Sundanese Consonant Sign
+ (0x01be6, 0x01bf3,), # Batak Sign Tompi ..Batak Panongonan
+ (0x01c24, 0x01c37,), # Lepcha Subjoined Letter ..Lepcha Sign Nukta
+ (0x01cd0, 0x01cd2,), # Vedic Tone Karshana ..Vedic Tone Prenkha
+ (0x01cd4, 0x01ce8,), # Vedic Sign Yajurvedic Mi..Vedic Sign Visarga Anuda
+ (0x01ced, 0x01ced,), # Vedic Sign Tiryak
+ (0x01cf4, 0x01cf4,), # Vedic Tone Candra Above
+ (0x01cf7, 0x01cf9,), # Vedic Sign Atikrama ..Vedic Tone Double Ring A
+ (0x01dc0, 0x01dff,), # Combining Dotted Grave A..Combining Right Arrowhea
+ (0x0200b, 0x0200f,), # Zero Width Space ..Right-to-left Mark
+ (0x02028, 0x0202e,), # Line Separator ..Right-to-left Override
+ (0x02060, 0x02064,), # Word Joiner ..Invisible Plus
+ (0x02066, 0x0206f,), # Left-to-right Isolate ..Nominal Digit Shapes
+ (0x020d0, 0x020f0,), # Combining Left Harpoon A..Combining Asterisk Above
+ (0x02cef, 0x02cf1,), # Coptic Combining Ni Abov..Coptic Combining Spiritu
+ (0x02d7f, 0x02d7f,), # Tifinagh Consonant Joiner
+ (0x02de0, 0x02dff,), # Combining Cyrillic Lette..Combining Cyrillic Lette
+ (0x0302a, 0x0302f,), # Ideographic Level Tone M..Hangul Double Dot Tone M
+ (0x03099, 0x0309a,), # Combining Katakana-hirag..Combining Katakana-hirag
+ (0x0a66f, 0x0a672,), # Combining Cyrillic Vzmet..Combining Cyrillic Thous
+ (0x0a674, 0x0a67d,), # Combining Cyrillic Lette..Combining Cyrillic Payer
+ (0x0a69e, 0x0a69f,), # Combining Cyrillic Lette..Combining Cyrillic Lette
+ (0x0a6f0, 0x0a6f1,), # Bamum Combining Mark Koq..Bamum Combining Mark Tuk
+ (0x0a802, 0x0a802,), # Syloti Nagri Sign Dvisvara
+ (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta
+ (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara
+ (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign
+ (0x0a82c, 0x0a82c,), # Syloti Nagri Sign Alternate Hasanta
+ (0x0a880, 0x0a881,), # Saurashtra Sign Anusvara..Saurashtra Sign Visarga
+ (0x0a8b4, 0x0a8c5,), # Saurashtra Consonant Sig..Saurashtra Sign Candrabi
+ (0x0a8e0, 0x0a8f1,), # Combining Devanagari Dig..Combining Devanagari Sig
+ (0x0a8ff, 0x0a8ff,), # Devanagari Vowel Sign Ay
+ (0x0a926, 0x0a92d,), # Kayah Li Vowel Ue ..Kayah Li Tone Calya Plop
+ (0x0a947, 0x0a953,), # Rejang Vowel Sign I ..Rejang Virama
+ (0x0a980, 0x0a983,), # Javanese Sign Panyangga ..Javanese Sign Wignyan
+ (0x0a9b3, 0x0a9c0,), # Javanese Sign Cecak Telu..Javanese Pangkon
+ (0x0a9e5, 0x0a9e5,), # Myanmar Sign Shan Saw
+ (0x0aa29, 0x0aa36,), # Cham Vowel Sign Aa ..Cham Consonant Sign Wa
+ (0x0aa43, 0x0aa43,), # Cham Consonant Sign Final Ng
+ (0x0aa4c, 0x0aa4d,), # Cham Consonant Sign Fina..Cham Consonant Sign Fina
+ (0x0aa7b, 0x0aa7d,), # Myanmar Sign Pao Karen T..Myanmar Sign Tai Laing T
+ (0x0aab0, 0x0aab0,), # Tai Viet Mai Kang
+ (0x0aab2, 0x0aab4,), # Tai Viet Vowel I ..Tai Viet Vowel U
+ (0x0aab7, 0x0aab8,), # Tai Viet Mai Khit ..Tai Viet Vowel Ia
+ (0x0aabe, 0x0aabf,), # Tai Viet Vowel Am ..Tai Viet Tone Mai Ek
+ (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho
+ (0x0aaeb, 0x0aaef,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
+ (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama
+ (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign
+ (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek
+ (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil)
+ (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika
+ (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16
+ (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo
+ (0x0feff, 0x0feff,), # Zero Width No-break Space
+ (0x0fff9, 0x0fffb,), # Interlinear Annotation A..Interlinear Annotation T
+ (0x101fd, 0x101fd,), # Phaistos Disc Sign Combining Oblique Stroke
+ (0x102e0, 0x102e0,), # Coptic Epact Thousands Mark
+ (0x10376, 0x1037a,), # Combining Old Permic Let..Combining Old Permic Let
+ (0x10a01, 0x10a03,), # Kharoshthi Vowel Sign I ..Kharoshthi Vowel Sign Vo
+ (0x10a05, 0x10a06,), # Kharoshthi Vowel Sign E ..Kharoshthi Vowel Sign O
+ (0x10a0c, 0x10a0f,), # Kharoshthi Vowel Length ..Kharoshthi Sign Visarga
+ (0x10a38, 0x10a3a,), # Kharoshthi Sign Bar Abov..Kharoshthi Sign Dot Belo
+ (0x10a3f, 0x10a3f,), # Kharoshthi Virama
+ (0x10ae5, 0x10ae6,), # Manichaean Abbreviation ..Manichaean Abbreviation
+ (0x10d24, 0x10d27,), # Hanifi Rohingya Sign Har..Hanifi Rohingya Sign Tas
+ (0x10d69, 0x10d6d,), # (nil)
+ (0x10eab, 0x10eac,), # Yezidi Combining Hamza M..Yezidi Combining Madda M
+ (0x10efa, 0x10eff,), # (nil) ..Arabic Small Low Word Ma
+ (0x10f46, 0x10f50,), # Sogdian Combining Dot Be..Sogdian Combining Stroke
+ (0x10f82, 0x10f85,), # Old Uyghur Combining Dot..Old Uyghur Combining Two
+ (0x11000, 0x11002,), # Brahmi Sign Candrabindu ..Brahmi Sign Visarga
+ (0x11038, 0x11046,), # Brahmi Vowel Sign Aa ..Brahmi Virama
+ (0x11070, 0x11070,), # Brahmi Sign Old Tamil Virama
+ (0x11073, 0x11074,), # Brahmi Vowel Sign Old Ta..Brahmi Vowel Sign Old Ta
+ (0x1107f, 0x11082,), # Brahmi Number Joiner ..Kaithi Sign Visarga
+ (0x110b0, 0x110ba,), # Kaithi Vowel Sign Aa ..Kaithi Sign Nukta
+ (0x110bd, 0x110bd,), # Kaithi Number Sign
+ (0x110c2, 0x110c2,), # Kaithi Vowel Sign Vocalic R
+ (0x110cd, 0x110cd,), # Kaithi Number Sign Above
+ (0x11100, 0x11102,), # Chakma Sign Candrabindu ..Chakma Sign Visarga
+ (0x11127, 0x11134,), # Chakma Vowel Sign A ..Chakma Maayyaa
+ (0x11145, 0x11146,), # Chakma Vowel Sign Aa ..Chakma Vowel Sign Ei
+ (0x11173, 0x11173,), # Mahajani Sign Nukta
+ (0x11180, 0x11182,), # Sharada Sign Candrabindu..Sharada Sign Visarga
+ (0x111b3, 0x111c0,), # Sharada Vowel Sign Aa ..Sharada Sign Virama
+ (0x111c9, 0x111cc,), # Sharada Sandhi Mark ..Sharada Extra Short Vowe
+ (0x111ce, 0x111cf,), # Sharada Vowel Sign Prish..Sharada Sign Inverted Ca
+ (0x1122c, 0x11237,), # Khojki Vowel Sign Aa ..Khojki Sign Shadda
+ (0x1123e, 0x1123e,), # Khojki Sign Sukun
+ (0x11241, 0x11241,), # Khojki Vowel Sign Vocalic R
+ (0x112df, 0x112ea,), # Khudawadi Sign Anusvara ..Khudawadi Sign Virama
+ (0x11300, 0x11303,), # Grantha Sign Combining A..Grantha Sign Visarga
+ (0x1133b, 0x1133c,), # Combining Bindu Below ..Grantha Sign Nukta
+ (0x1133e, 0x11344,), # Grantha Vowel Sign Aa ..Grantha Vowel Sign Vocal
+ (0x11347, 0x11348,), # Grantha Vowel Sign Ee ..Grantha Vowel Sign Ai
+ (0x1134b, 0x1134d,), # Grantha Vowel Sign Oo ..Grantha Sign Virama
+ (0x11357, 0x11357,), # Grantha Au Length Mark
+ (0x11362, 0x11363,), # Grantha Vowel Sign Vocal..Grantha Vowel Sign Vocal
+ (0x11366, 0x1136c,), # Combining Grantha Digit ..Combining Grantha Digit
+ (0x11370, 0x11374,), # Combining Grantha Letter..Combining Grantha Letter
+ (0x113b8, 0x113c0,), # (nil)
+ (0x113c2, 0x113c2,), # (nil)
+ (0x113c5, 0x113c5,), # (nil)
+ (0x113c7, 0x113ca,), # (nil)
+ (0x113cc, 0x113d0,), # (nil)
+ (0x113d2, 0x113d2,), # (nil)
+ (0x113e1, 0x113e2,), # (nil)
+ (0x11435, 0x11446,), # Newa Vowel Sign Aa ..Newa Sign Nukta
+ (0x1145e, 0x1145e,), # Newa Sandhi Mark
+ (0x114b0, 0x114c3,), # Tirhuta Vowel Sign Aa ..Tirhuta Sign Nukta
+ (0x115af, 0x115b5,), # Siddham Vowel Sign Aa ..Siddham Vowel Sign Vocal
+ (0x115b8, 0x115c0,), # Siddham Vowel Sign E ..Siddham Sign Nukta
+ (0x115dc, 0x115dd,), # Siddham Vowel Sign Alter..Siddham Vowel Sign Alter
+ (0x11630, 0x11640,), # Modi Vowel Sign Aa ..Modi Sign Ardhacandra
+ (0x116ab, 0x116b7,), # Takri Sign Anusvara ..Takri Sign Nukta
+ (0x1171d, 0x1172b,), # Ahom Consonant Sign Medi..Ahom Sign Killer
+ (0x1182c, 0x1183a,), # Dogra Vowel Sign Aa ..Dogra Sign Nukta
+ (0x11930, 0x11935,), # Dives Akuru Vowel Sign A..Dives Akuru Vowel Sign E
+ (0x11937, 0x11938,), # Dives Akuru Vowel Sign A..Dives Akuru Vowel Sign O
+ (0x1193b, 0x1193e,), # Dives Akuru Sign Anusvar..Dives Akuru Virama
+ (0x11940, 0x11940,), # Dives Akuru Medial Ya
+ (0x11942, 0x11943,), # Dives Akuru Medial Ra ..Dives Akuru Sign Nukta
+ (0x119d1, 0x119d7,), # Nandinagari Vowel Sign A..Nandinagari Vowel Sign V
+ (0x119da, 0x119e0,), # Nandinagari Vowel Sign E..Nandinagari Sign Virama
+ (0x119e4, 0x119e4,), # Nandinagari Vowel Sign Prishthamatra E
+ (0x11a01, 0x11a0a,), # Zanabazar Square Vowel S..Zanabazar Square Vowel L
+ (0x11a33, 0x11a39,), # Zanabazar Square Final C..Zanabazar Square Sign Vi
+ (0x11a3b, 0x11a3e,), # Zanabazar Square Cluster..Zanabazar Square Cluster
+ (0x11a47, 0x11a47,), # Zanabazar Square Subjoiner
+ (0x11a51, 0x11a5b,), # Soyombo Vowel Sign I ..Soyombo Vowel Length Mar
+ (0x11a8a, 0x11a99,), # Soyombo Final Consonant ..Soyombo Subjoiner
+ (0x11b60, 0x11b67,), # (nil)
+ (0x11c2f, 0x11c36,), # Bhaiksuki Vowel Sign Aa ..Bhaiksuki Vowel Sign Voc
+ (0x11c38, 0x11c3f,), # Bhaiksuki Vowel Sign E ..Bhaiksuki Sign Virama
+ (0x11c92, 0x11ca7,), # Marchen Subjoined Letter..Marchen Subjoined Letter
+ (0x11ca9, 0x11cb6,), # Marchen Subjoined Letter..Marchen Sign Candrabindu
+ (0x11d31, 0x11d36,), # Masaram Gondi Vowel Sign..Masaram Gondi Vowel Sign
+ (0x11d3a, 0x11d3a,), # Masaram Gondi Vowel Sign E
+ (0x11d3c, 0x11d3d,), # Masaram Gondi Vowel Sign..Masaram Gondi Vowel Sign
+ (0x11d3f, 0x11d45,), # Masaram Gondi Vowel Sign..Masaram Gondi Virama
+ (0x11d47, 0x11d47,), # Masaram Gondi Ra-kara
+ (0x11d8a, 0x11d8e,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Vowel Sign
+ (0x11d90, 0x11d91,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Vowel Sign
+ (0x11d93, 0x11d97,), # Gunjala Gondi Vowel Sign..Gunjala Gondi Virama
+ (0x11ef3, 0x11ef6,), # Makasar Vowel Sign I ..Makasar Vowel Sign O
+ (0x11f00, 0x11f01,), # Kawi Sign Candrabindu ..Kawi Sign Anusvara
+ (0x11f03, 0x11f03,), # Kawi Sign Visarga
+ (0x11f34, 0x11f3a,), # Kawi Vowel Sign Aa ..Kawi Vowel Sign Vocalic
+ (0x11f3e, 0x11f42,), # Kawi Vowel Sign E ..Kawi Conjoiner
+ (0x11f5a, 0x11f5a,), # (nil)
+ (0x13430, 0x13440,), # Egyptian Hieroglyph Vert..Egyptian Hieroglyph Mirr
+ (0x13447, 0x13455,), # Egyptian Hieroglyph Modi..Egyptian Hieroglyph Modi
+ (0x1611e, 0x1612f,), # (nil)
+ (0x16af0, 0x16af4,), # Bassa Vah Combining High..Bassa Vah Combining High
+ (0x16b30, 0x16b36,), # Pahawh Hmong Mark Cim Tu..Pahawh Hmong Mark Cim Ta
+ (0x16f4f, 0x16f4f,), # Miao Sign Consonant Modifier Bar
+ (0x16f51, 0x16f87,), # Miao Sign Aspiration ..Miao Vowel Sign Ui
+ (0x16f8f, 0x16f92,), # Miao Tone Right ..Miao Tone Below
+ (0x16fe4, 0x16fe4,), # Khitan Small Script Filler
+ (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea
+ (0x1bc9d, 0x1bc9e,), # Duployan Thick Letter Se..Duployan Double Mark
+ (0x1bca0, 0x1bca3,), # Shorthand Format Letter ..Shorthand Format Up Step
+ (0x1cf00, 0x1cf2d,), # Znamenny Combining Mark ..Znamenny Combining Mark
+ (0x1cf30, 0x1cf46,), # Znamenny Combining Tonal..Znamenny Priznak Modifie
+ (0x1d165, 0x1d169,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d16d, 0x1d182,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d185, 0x1d18b,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d1aa, 0x1d1ad,), # Musical Symbol Combining..Musical Symbol Combining
+ (0x1d242, 0x1d244,), # Combining Greek Musical ..Combining Greek Musical
+ (0x1da00, 0x1da36,), # Signwriting Head Rim ..Signwriting Air Sucking
+ (0x1da3b, 0x1da6c,), # Signwriting Mouth Closed..Signwriting Excitement
+ (0x1da75, 0x1da75,), # Signwriting Upper Body Tilting From Hip Joints
+ (0x1da84, 0x1da84,), # Signwriting Location Head Neck
+ (0x1da9b, 0x1da9f,), # Signwriting Fill Modifie..Signwriting Fill Modifie
+ (0x1daa1, 0x1daaf,), # Signwriting Rotation Mod..Signwriting Rotation Mod
+ (0x1e000, 0x1e006,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e008, 0x1e018,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e01b, 0x1e021,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e023, 0x1e024,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e026, 0x1e02a,), # Combining Glagolitic Let..Combining Glagolitic Let
+ (0x1e08f, 0x1e08f,), # Combining Cyrillic Small Letter Byelorussian-ukr
+ (0x1e130, 0x1e136,), # Nyiakeng Puachue Hmong T..Nyiakeng Puachue Hmong T
+ (0x1e2ae, 0x1e2ae,), # Toto Sign Rising Tone
+ (0x1e2ec, 0x1e2ef,), # Wancho Tone Tup ..Wancho Tone Koini
+ (0x1e4ec, 0x1e4ef,), # Nag Mundari Sign Muhor ..Nag Mundari Sign Sutuh
+ (0x1e5ee, 0x1e5ef,), # (nil)
+ (0x1e6e3, 0x1e6e3,), # (nil)
+ (0x1e6e6, 0x1e6e6,), # (nil)
+ (0x1e6ee, 0x1e6ef,), # (nil)
+ (0x1e6f5, 0x1e6f5,), # (nil)
+ (0x1e8d0, 0x1e8d6,), # Mende Kikakui Combining ..Mende Kikakui Combining
+ (0x1e944, 0x1e94a,), # Adlam Alif Lengthener ..Adlam Nukta
+ (0x1f3fb, 0x1f3ff,), # Emoji Modifier Fitzpatri..Emoji Modifier Fitzpatri
+ (0xe0001, 0xe0001,), # Language Tag
+ (0xe0020, 0xe007f,), # Tag Space ..Cancel Tag
+ (0xe0100, 0xe01ef,), # Variation Selector-17 ..Variation Selector-256
+ ),
}
diff --git a/contrib/python/wcwidth/py3/wcwidth/unicode_versions.py b/contrib/python/wcwidth/py3/wcwidth/unicode_versions.py
index 4e9ccbf7a71..4d140c181a7 100644
--- a/contrib/python/wcwidth/py3/wcwidth/unicode_versions.py
+++ b/contrib/python/wcwidth/py3/wcwidth/unicode_versions.py
@@ -1,7 +1,7 @@
"""
Exports function list_versions() for unicode version level support.
-This code generated by wcwidth/bin/update-tables.py on 2023-09-14 15:45:33 UTC.
+This code generated by wcwidth/bin/update-tables.py on 2025-09-15 16:57:50 UTC.
"""
@@ -35,4 +35,6 @@ def list_versions():
"14.0.0",
"15.0.0",
"15.1.0",
+ "16.0.0",
+ "17.0.0",
)
diff --git a/contrib/python/wcwidth/py3/wcwidth/wcwidth.py b/contrib/python/wcwidth/py3/wcwidth/wcwidth.py
index e924020630c..92ca14afba1 100644
--- a/contrib/python/wcwidth/py3/wcwidth/wcwidth.py
+++ b/contrib/python/wcwidth/py3/wcwidth/wcwidth.py
@@ -60,12 +60,11 @@ http://www.unicode.org/unicode/reports/tr11/
Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
"""
-from __future__ import division
# std imports
import os
-import sys
import warnings
+from functools import lru_cache
# local
from .table_vs16 import VS16_NARROW_TO_WIDE
@@ -73,17 +72,6 @@ from .table_wide import WIDE_EASTASIAN
from .table_zero import ZERO_WIDTH
from .unicode_versions import list_versions
-try:
- # std imports
- from functools import lru_cache
-except ImportError:
- # lru_cache was added in Python 3.2
- # 3rd party
- from backports.functools_lru_cache import lru_cache
-
-# global cache
-_PY3 = sys.version_info[0] >= 3
-
def _bisearch(ucs, table):
"""
@@ -186,11 +174,11 @@ def wcswidth(pwcs, n=None, unicode_version='auto'):
last_measured_char = None
while idx < end:
char = pwcs[idx]
- if char == u'\u200D':
+ if char == '\u200D':
# Zero Width Joiner, do not measure this or next character
idx += 2
continue
- if char == u'\uFE0F' and last_measured_char:
+ if char == '\uFE0F' and last_measured_char:
# on variation selector 16 (VS16) following another character,
# conditionally add '1' to the measured width if that character is
# known to be converted from narrow to wide by the VS16 character.
@@ -250,8 +238,7 @@ def _wcmatch_version(given_version):
``UNICODE_VERSION``. If the environment variable is not set, then the
latest is used.
:rtype: str
- :returns: unicode string, or non-unicode ``str`` type for python 2
- when given ``version`` is also type ``str``.
+ :returns: unicode string.
"""
# Design note: the choice to return the same type that is given certainly
# complicates it for python 2 str-type, but allows us to define an api that
@@ -261,30 +248,24 @@ def _wcmatch_version(given_version):
# That, along with the string-to-numeric and comparisons of earliest,
# latest, matching, or nearest, greatly complicates this function.
# Performance is somewhat curbed by memoization.
- _return_str = not _PY3 and isinstance(given_version, str)
-
- if _return_str:
- # avoid list-comprehension to work around a coverage issue:
- # https://github.com/nedbat/coveragepy/issues/753
- unicode_versions = list(map(lambda ucs: ucs.encode(), list_versions()))
- else:
- unicode_versions = list_versions()
+
+ unicode_versions = list_versions()
latest_version = unicode_versions[-1]
- if given_version in (u'auto', 'auto'):
+ if given_version == 'auto':
given_version = os.environ.get(
'UNICODE_VERSION',
- 'latest' if not _return_str else latest_version.encode())
+ 'latest')
- if given_version in (u'latest', 'latest'):
+ if given_version == 'latest':
# default match, when given as 'latest', use the most latest unicode
# version specification level supported.
- return latest_version if not _return_str else latest_version.encode()
+ return latest_version
if given_version in unicode_versions:
# exact match, downstream has specified an explicit matching version
# matching any value of list_versions().
- return given_version if not _return_str else given_version.encode()
+ return given_version
# The user's version is not supported by ours. We return the newest unicode
# version level that we support below their given value.
@@ -298,7 +279,7 @@ def _wcmatch_version(given_version):
"supported unicode version {latest_version!r} has been "
"inferred.".format(given_version=given_version,
latest_version=latest_version))
- return latest_version if not _return_str else latest_version.encode()
+ return latest_version
# given version is less than any available version, return earliest
# version.
@@ -314,7 +295,7 @@ def _wcmatch_version(given_version):
"version level, {earliest_version!r}".format(
given_version=given_version,
earliest_version=earliest_version))
- return earliest_version if not _return_str else earliest_version.encode()
+ return earliest_version
# create list of versions which are less than our equal to given version,
# and return the tail value, which is the highest level we may support,
@@ -328,7 +309,7 @@ def _wcmatch_version(given_version):
cmp_next_version = _wcversion_value(unicode_versions[idx + 1])
except IndexError:
# at end of list, return latest version
- return latest_version if not _return_str else latest_version.encode()
+ return latest_version
# Maybe our given version has less parts, as in tuple(8, 0), than the
# next compare version tuple(8, 0, 0). Test for an exact match by
@@ -338,7 +319,7 @@ def _wcmatch_version(given_version):
# Or, if any next value is greater than our given support level
# version, return the current value in index. Even though it must
- # be less than the given value, its our closest possible match. That
+ # be less than the given value, it's our closest possible match. That
# is, 4.1 is returned for given 4.9.9, where 4.1 and 5.0 are available.
if cmp_next_version > cmp_given:
return unicode_version
diff --git a/contrib/python/wcwidth/py3/ya.make b/contrib/python/wcwidth/py3/ya.make
index 6d2ab552d88..7f889617c63 100644
--- a/contrib/python/wcwidth/py3/ya.make
+++ b/contrib/python/wcwidth/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(0.2.13)
+VERSION(0.2.14)
LICENSE(MIT)
@@ -11,6 +11,7 @@ NO_LINT()
PY_SRCS(
TOP_LEVEL
wcwidth/__init__.py
+ wcwidth/table_vs15.py
wcwidth/table_vs16.py
wcwidth/table_wide.py
wcwidth/table_zero.py