From 8ed7f2c880508a44e4114ea6ac07e8a6b6c76f7f Mon Sep 17 00:00:00 2001 From: Jeff Quast Date: Fri, 5 Jan 2024 20:56:17 -0500 Subject: [PATCH] Implement zero-width support for Hangul Jamo (#111) From https://github.com/jquast/ucs-detect/issues/9 --- bin/update-tables.py | 21 ++++++++++++++++++++- docs/intro.rst | 3 +++ tests/test_core.py | 43 +++++++++++++++++++++++++++++++++++++------ wcwidth/table_wide.py | 14 +------------- wcwidth/table_zero.py | 40 +++++++++++++++++++++++++++++++++++++++- 5 files changed, 100 insertions(+), 21 deletions(-) diff --git a/bin/update-tables.py b/bin/update-tables.py index e7a4395..7cc55f0 100644 --- a/bin/update-tables.py +++ b/bin/update-tables.py @@ -54,6 +54,19 @@ MAX_RETRIES = int(os.environ.get('MAX_RETRIES', '6')) BACKOFF_FACTOR = float(os.environ.get('BACKOFF_FACTOR', '0.1')) +# Hangul Jamo is a decomposed form of Hangul Syllables, see +# see https://www.unicode.org/faq/korean.html#3 +# https://github.com/ridiculousfish/widecharwidth/pull/17 +# https://github.com/jquast/ucs-detect/issues/9 +# https://devblogs.microsoft.com/oldnewthing/20201009-00/?p=104351 +# "Conjoining Jamo are divided into three classes: L, V, T (Leading +# consonant, Vowel, Trailing consonant). A Hangul Syllable consists of +# or sequences." +HANGUL_JAMO_ZEROWIDTH = ( + *range(0x1160, 0x1200), # Hangul Jungseong Filler .. Hangul Jongseong Ssangnieun + *range(0xD7B0, 0xD800), # Hangul Jungseong O-Yeo .. Undefined Character of Hangul Jamo Extended-B +) + def _bisearch(ucs, table): """A copy of wcwwidth._bisearch, to prevent having issues when depending on code that imports @@ -333,6 +346,9 @@ def fetch_table_wide_data() -> UnicodeTableRenderCtx: fname=UnicodeDataFile.DerivedGeneralCategory(version), wide=0).values) + # Also subtract Hangul Jamo Vowels and Hangul Trailing Consonants + table[version].values = table[version].values.difference(HANGUL_JAMO_ZEROWIDTH) + # finally, join with atypical 'wide' characters defined by category 'Sk', table[version].values.update(parse_category(fname=UnicodeDataFile.DerivedGeneralCategory(version), wide=2).values) @@ -351,8 +367,11 @@ def fetch_table_zero_data() -> UnicodeTableRenderCtx: table[version] = parse_category(fname=UnicodeDataFile.DerivedGeneralCategory(version), wide=0) - # And, include NULL + # Include NULL table[version].values.add(0) + + # Add Hangul Jamo Vowels and Hangul Trailing Consonants + table[version].values.update(HANGUL_JAMO_ZEROWIDTH) return UnicodeTableRenderCtx('ZERO_WIDTH', table) diff --git a/docs/intro.rst b/docs/intro.rst index e454962..ad7588b 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -216,6 +216,9 @@ Other Languages ======= History ======= +Unreleased + * **Bugfix** zero-width support for Hangul Jamo (Korean) + 0.2.12 *2023-11-21* * re-release to remove .pyi file misplaced in wheel files `Issue #101`_. diff --git a/tests/test_core.py b/tests/test_core.py index c190698..60ed6b1 100755 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -222,17 +222,48 @@ def test_balinese_script(): assert length_phrase == expect_length_phrase +def test_kr_jamo(): + """ + Test basic combining of HANGUL CHOSEONG and JUNGSEONG + + Example and from Raymond Chen's blog post, + https://devblogs.microsoft.com/oldnewthing/20201009-00/?p=104351 + """ + # This is an example where both characters are "wide" when displayed alone. + # + # But JUNGSEONG (vowel) is designed for combination with a CHOSEONG (consonant). + # + # This wcwidth library understands their width only when combination, + # 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) + ) + expect_length_each = (2, 0) + expect_length_phrase = 2 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + def test_kr_jamo_filler(): u""" Jamo filler is 0 width. - According to https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf this character and others - like it, ``\uffa0``, ``\u1160``, ``\u115f``, ``\u1160``, are not commonly viewed with a terminal, - seems it doesn't matter whether it is implemented or not, they are not typically used ! + Example from https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf """ - phrase = u"\u1100\u1160" - expect_length_each = (2, 1) - expect_length_phrase = 3 + phrase = ( + u"\u1100" # HANGUL CHOSEONG KIYEOK (consonant) + u"\u1160" # HANGUL JUNGSEONG FILLER (vowel) + ) + expect_length_each = (2, 0) + expect_length_phrase = 2 # exercise, length_each = tuple(map(wcwidth.wcwidth, phrase)) diff --git a/wcwidth/table_wide.py b/wcwidth/table_wide.py index 4c26119..bd6dfdd 100644 --- a/wcwidth/table_wide.py +++ b/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-03 17:16:09 UTC. +This code generated by wcwidth/bin/update-tables.py on 2024-01-06 01:39:49 UTC. """ WIDE_EASTASIAN = { '4.1.0': ( @@ -126,8 +126,6 @@ # Date: 2009-06-09, 17:47:00 PDT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified @@ -149,8 +147,6 @@ (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 - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (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 @@ -169,8 +165,6 @@ # Date: 2010-08-17, 12:17:00 PDT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified @@ -192,8 +186,6 @@ (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 - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (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 @@ -214,8 +206,6 @@ # Date: 2011-09-19, 18:46:00 GMT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified @@ -237,8 +227,6 @@ (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 - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (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 diff --git a/wcwidth/table_zero.py b/wcwidth/table_zero.py index 67261fd..dd42291 100644 --- a/wcwidth/table_zero.py +++ b/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 2023-10-19 20:57:31 UTC. +This code generated by wcwidth/bin/update-tables.py on 2024-01-04 07:14:52 UTC. """ ZERO_WIDTH = { '4.1.0': ( @@ -107,6 +107,7 @@ (0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai (0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -133,6 +134,7 @@ (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R @@ -256,6 +258,7 @@ (0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai (0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -286,6 +289,7 @@ (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R @@ -418,6 +422,7 @@ (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 + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -461,6 +466,7 @@ (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 + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -599,6 +605,7 @@ (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 (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -662,6 +669,7 @@ (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho (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, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -805,6 +813,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -870,6 +879,7 @@ (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho (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, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1016,6 +1026,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1084,6 +1095,7 @@ (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, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1237,6 +1249,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1305,6 +1318,7 @@ (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, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1459,6 +1473,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1527,6 +1542,7 @@ (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, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1680,6 +1696,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1751,6 +1768,7 @@ (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, 0x0fe2d,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1928,6 +1946,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1997,6 +2016,7 @@ (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 @@ -2184,6 +2204,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2254,6 +2275,7 @@ (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 @@ -2455,6 +2477,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2525,6 +2548,7 @@ (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 @@ -2739,6 +2763,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2810,6 +2835,7 @@ (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 @@ -3033,6 +3059,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3104,6 +3131,7 @@ (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 @@ -3334,6 +3362,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3405,6 +3434,7 @@ (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 @@ -3635,6 +3665,7 @@ (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, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3707,6 +3738,7 @@ (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 @@ -3949,6 +3981,7 @@ (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 @@ -4020,6 +4053,7 @@ (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 @@ -4270,6 +4304,7 @@ (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 @@ -4341,6 +4376,7 @@ (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 @@ -4600,6 +4636,7 @@ (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 @@ -4671,6 +4708,7 @@ (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