aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2018-07-25 17:00:45 -0400
committerCarlos O'Donell <carlos@redhat.com>2018-07-25 17:00:45 -0400
commit7cd7d36f1feb3ccacf476e909b115b45cdd46e77 (patch)
tree6df764ca0242733146b3ba6b08eba3a2a4128b3e
parent3fb455b318c48f76280b4f8a0ff23b2cb1af9a3e (diff)
downloadglibc-7cd7d36f1feb3ccacf476e909b115b45cdd46e77.tar.xz
glibc-7cd7d36f1feb3ccacf476e909b115b45cdd46e77.zip
Keep expected behaviour for [a-z] and [A-z] (Bug 23393).
In commit 9479b6d5e08eacce06c6ab60abc9b2f4eb8b71e4 we updated all of the collation data to harmonize with the new version of ISO 14651 which is derived from Unicode 9.0.0. This collation update brought with it some changes to locales which were not desirable by some users, in particular it altered the meaning of the locale-dependent-range regular expression, namely [a-z] and [A-Z], and for en_US it caused uppercase letters to be matched by [a-z] for the first time. The matching of uppercase letters by [a-z] is something which is already known to users of other locales which have this property, but this change could cause significant problems to en_US and other similar locales that had never had this change before. Whether this behaviour is desirable or not is contentious and GNU Awk has this to say on the topic: https://www.gnu.org/software/gawk/manual/html_node/Ranges-and-Locales.html While the POSIX standard also has this further to say: "RE Bracket Expression": http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap09.html "The current standard leaves unspecified the behavior of a range expression outside the POSIX locale. ... As noted above, efforts were made to resolve the differences, but no solution has been found that would be specific enough to allow for portable software while not invalidating existing implementations." In glibc we implement the requirement of ISO POSIX-2:1993 and use collation element order (CEO) to construct the range expression, the API internally is __collseq_table_lookup(). The fact that we use CEO and also have 4-level weights on each collation rule means that we can in practice reorder the collation rules in iso14651_t1_common (the new data) to provide consistent range expression resolution *and* the weights should maintain the expected total order. Therefore this patch does three things: * Reorder the collation rules for the LATIN script in iso14651_t1_common to deinterlace uppercase and lowercase letters in the collation element orders. * Adds new test data en_US.UTF-8.in for sort-test.sh which exercises strcoll* and strxfrm* and ensures the ISO 14651 collation remains. * Add back tests to tst-fnmatch.input and tst-regexloc.c which exercise that [a-z] does not match A or Z. The reordering of the ISO 14651 data is done in an entirely mechanical fashion using the following program attached to the bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c28 It is up for discussion if the iso14651_t1_common data should be refined further to have 3 very tight collation element ranges that include only a-z, A-Z, and 0-9, which would implement the solution sought after in: https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c12 and implemented here: https://www.sourceware.org/ml/libc-alpha/2018-07/msg00854.html No regressions on x86_64. Verified that removal of the iso14651_t1_common change causes tst-fnmatch to regress with: 422: fnmatch ("[a-z]", "A", 0) = 0 (FAIL, expected FNM_NOMATCH) *** ... 425: fnmatch ("[A-Z]", "z", 0) = 0 (FAIL, expected FNM_NOMATCH) ***
-rw-r--r--ChangeLog11
-rw-r--r--localedata/Makefile1
-rw-r--r--localedata/locales/iso14651_t1_common1928
-rw-r--r--posix/tst-fnmatch.input125
-rw-r--r--posix/tst-regexloc.c8
5 files changed, 1065 insertions, 1008 deletions
diff --git a/ChangeLog b/ChangeLog
index e6c2adc95e..8b509d4a34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-07-25 Carlos O'Donell <carlos@redhat.com>
+
+ [BZ #23393]
+ * localedata/locales/iso14651_t1_common: Deinterlace uppercase and
+ lowercase in LATIN script.
+ * localedata/Makefile (test-input): Add en_US.UTF-8.
+ * localedata/en_US.UTF-8.in: New file.
+ * posix/tst-fnmatch.input: Add comments and new tests for en_US.UTF-8,
+ and restore old tests.
+ * posix/tst-regexloc.c (do_test): Add back range expression test.
+
2018-07-25 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/unix/sysv/linux/ia64/tst-setcontext4.c: New file.
diff --git a/localedata/Makefile b/localedata/Makefile
index 43d2d3775b..13c5423e0e 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -58,6 +58,7 @@ test-input := \
dsb_DE.UTF-8 \
dz_BT.UTF-8 \
en_US.ISO-8859-1 \
+ en_US.UTF-8 \
eo.UTF-8 \
es_ES.UTF-8 \
et_EE.UTF-8 \
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
index f444933d3b..227400cc4e 100644
--- a/localedata/locales/iso14651_t1_common
+++ b/localedata/locales/iso14651_t1_common
@@ -64344,142 +64344,78 @@ endif
<U0001D656> <S0061>;<BASE>;<FONT>;<U0001D656> % MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
<U0001D68A> <S0061>;<BASE>;<FONT>;<U0001D68A> % MATHEMATICAL MONOSPACE SMALL A
<U24D0> <S0061>;<BASE>;<CIRCLE>;<U24D0> % CIRCLED LATIN SMALL LETTER A
-<U0041> <S0061>;<BASE>;<CAP>;<U0041> % LATIN CAPITAL LETTER A
-<UFF21> <S0061>;<BASE>;<WIDECAP>;<UFF21> % FULLWIDTH LATIN CAPITAL LETTER A
-<U0001F110> <S0061>;<BASE>;<COMPATCAP>;<U0001F110> % PARENTHESIZED LATIN CAPITAL LETTER A
-<U0001D400> <S0061>;<BASE>;<FONTCAP>;<U0001D400> % MATHEMATICAL BOLD CAPITAL A
-<U0001D434> <S0061>;<BASE>;<FONTCAP>;<U0001D434> % MATHEMATICAL ITALIC CAPITAL A
-<U0001D468> <S0061>;<BASE>;<FONTCAP>;<U0001D468> % MATHEMATICAL BOLD ITALIC CAPITAL A
-<U0001D49C> <S0061>;<BASE>;<FONTCAP>;<U0001D49C> % MATHEMATICAL SCRIPT CAPITAL A
-<U0001D4D0> <S0061>;<BASE>;<FONTCAP>;<U0001D4D0> % MATHEMATICAL BOLD SCRIPT CAPITAL A
-<U0001D504> <S0061>;<BASE>;<FONTCAP>;<U0001D504> % MATHEMATICAL FRAKTUR CAPITAL A
-<U0001D538> <S0061>;<BASE>;<FONTCAP>;<U0001D538> % MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-<U0001D56C> <S0061>;<BASE>;<FONTCAP>;<U0001D56C> % MATHEMATICAL BOLD FRAKTUR CAPITAL A
-<U0001D5A0> <S0061>;<BASE>;<FONTCAP>;<U0001D5A0> % MATHEMATICAL SANS-SERIF CAPITAL A
-<U0001D5D4> <S0061>;<BASE>;<FONTCAP>;<U0001D5D4> % MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-<U0001D608> <S0061>;<BASE>;<FONTCAP>;<U0001D608> % MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-<U0001D63C> <S0061>;<BASE>;<FONTCAP>;<U0001D63C> % MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-<U0001D670> <S0061>;<BASE>;<FONTCAP>;<U0001D670> % MATHEMATICAL MONOSPACE CAPITAL A
-<U24B6> <S0061>;<BASE>;<CIRCLECAP>;<U24B6> % CIRCLED LATIN CAPITAL LETTER A
-<U0001F150> <S0061>;<BASE>;<CIRCLECAP>;<U0001F150> % NEGATIVE CIRCLED LATIN CAPITAL LETTER A
<U00AA> <S0061>;<BASE>;<MNN>;<U00AA> % FEMININE ORDINAL INDICATOR
<U1D43> <S0061>;<BASE>;<MNN>;<U1D43> % MODIFIER LETTER SMALL A
<U2090> <S0061>;<BASE>;<MNS>;<U2090> % LATIN SUBSCRIPT SMALL LETTER A
<U1D2C> <S0061>;<BASE>;<MISCCAP>;<U1D2C> % MODIFIER LETTER CAPITAL A
-<U0001F130> <S0061>;<BASE>;<MISCCAP>;<U0001F130> % SQUARED LATIN CAPITAL LETTER A
-<U0001F170> <S0061>;<BASE>;<MISCCAP>;<U0001F170> % NEGATIVE SQUARED LATIN CAPITAL LETTER A
<U00E1> <S0061>;"<BASE><AIGUT>";"<MIN><MIN>";<U00E1> % LATIN SMALL LETTER A WITH ACUTE
-<U00C1> <S0061>;"<BASE><AIGUT>";"<CAP><MIN>";<U00C1> % LATIN CAPITAL LETTER A WITH ACUTE
<U00E0> <S0061>;"<BASE><GRAVE>";"<MIN><MIN>";<U00E0> % LATIN SMALL LETTER A WITH GRAVE
-<U00C0> <S0061>;"<BASE><GRAVE>";"<CAP><MIN>";<U00C0> % LATIN CAPITAL LETTER A WITH GRAVE
<U0103> <S0061>;"<BASE><BREVE>";"<MIN><MIN>";<U0103> % LATIN SMALL LETTER A WITH BREVE
-<U0102> <S0061>;"<BASE><BREVE>";"<CAP><MIN>";<U0102> % LATIN CAPITAL LETTER A WITH BREVE
<U1EAF> <S0061>;"<BASE><BREVE><AIGUT>";"<MIN><MIN><MIN>";<U1EAF> % LATIN SMALL LETTER A WITH BREVE AND ACUTE
-<U1EAE> <S0061>;"<BASE><BREVE><AIGUT>";"<CAP><MIN><MIN>";<U1EAE> % LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
<U1EB1> <S0061>;"<BASE><BREVE><GRAVE>";"<MIN><MIN><MIN>";<U1EB1> % LATIN SMALL LETTER A WITH BREVE AND GRAVE
-<U1EB0> <S0061>;"<BASE><BREVE><GRAVE>";"<CAP><MIN><MIN>";<U1EB0> % LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
<U1EB5> <S0061>;"<BASE><BREVE><TILDE>";"<MIN><MIN><MIN>";<U1EB5> % LATIN SMALL LETTER A WITH BREVE AND TILDE
-<U1EB4> <S0061>;"<BASE><BREVE><TILDE>";"<CAP><MIN><MIN>";<U1EB4> % LATIN CAPITAL LETTER A WITH BREVE AND TILDE
<U1EB3> <S0061>;"<BASE><BREVE><CROOK>";"<MIN><MIN><MIN>";<U1EB3> % LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-<U1EB2> <S0061>;"<BASE><BREVE><CROOK>";"<CAP><MIN><MIN>";<U1EB2> % LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
<U00E2> <S0061>;"<BASE><CIRCF>";"<MIN><MIN>";<U00E2> % LATIN SMALL LETTER A WITH CIRCUMFLEX
-<U00C2> <S0061>;"<BASE><CIRCF>";"<CAP><MIN>";<U00C2> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX
<U1EA5> <S0061>;"<BASE><CIRCF><AIGUT>";"<MIN><MIN><MIN>";<U1EA5> % LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-<U1EA4> <S0061>;"<BASE><CIRCF><AIGUT>";"<CAP><MIN><MIN>";<U1EA4> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
<U1EA7> <S0061>;"<BASE><CIRCF><GRAVE>";"<MIN><MIN><MIN>";<U1EA7> % LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-<U1EA6> <S0061>;"<BASE><CIRCF><GRAVE>";"<CAP><MIN><MIN>";<U1EA6> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
<U1EAB> <S0061>;"<BASE><CIRCF><TILDE>";"<MIN><MIN><MIN>";<U1EAB> % LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-<U1EAA> <S0061>;"<BASE><CIRCF><TILDE>";"<CAP><MIN><MIN>";<U1EAA> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
<U1EA9> <S0061>;"<BASE><CIRCF><CROOK>";"<MIN><MIN><MIN>";<U1EA9> % LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-<U1EA8> <S0061>;"<BASE><CIRCF><CROOK>";"<CAP><MIN><MIN>";<U1EA8> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
<U01CE> <S0061>;"<BASE><CARON>";"<MIN><MIN>";<U01CE> % LATIN SMALL LETTER A WITH CARON
-<U01CD> <S0061>;"<BASE><CARON>";"<CAP><MIN>";<U01CD> % LATIN CAPITAL LETTER A WITH CARON
<U00E5> <S0061>;"<BASE><CRCLE>";"<MIN><MIN>";<U00E5> % LATIN SMALL LETTER A WITH RING ABOVE
-<U00C5> <S0061>;"<BASE><CRCLE>";"<CAP><MIN>";<U00C5> % LATIN CAPITAL LETTER A WITH RING ABOVE
-<U212B> <S0061>;"<BASE><CRCLE>";"<CAP><MIN>";<U212B> % ANGSTROM SIGN
<U01FB> <S0061>;"<BASE><CRCLE><AIGUT>";"<MIN><MIN><MIN>";<U01FB> % LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-<U01FA> <S0061>;"<BASE><CRCLE><AIGUT>";"<CAP><MIN><MIN>";<U01FA> % LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
<U00E4> <S0061>;"<BASE><TREMA>";"<MIN><MIN>";<U00E4> % LATIN SMALL LETTER A WITH DIAERESIS
<U1DF2> <S0061>;"<BASE><TREMA>";"<COMPAT><COMPAT>";<U1DF2> % COMBINING LATIN SMALL LETTER A WITH DIAERESIS
<UA79B> <S0061>;"<BASE><TREMA>";"<COMPAT><COMPAT>";<UA79B> % LATIN SMALL LETTER VOLAPUK AE
-<U00C4> <S0061>;"<BASE><TREMA>";"<CAP><MIN>";<U00C4> % LATIN CAPITAL LETTER A WITH DIAERESIS
-<UA79A> <S0061>;"<BASE><TREMA>";"<COMPATCAP><COMPAT>";<UA79A> % LATIN CAPITAL LETTER VOLAPUK AE
<U01DF> <S0061>;"<BASE><TREMA><MACRO>";"<MIN><MIN><MIN>";<U01DF> % LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-<U01DE> <S0061>;"<BASE><TREMA><MACRO>";"<CAP><MIN><MIN>";<U01DE> % LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
<U00E3> <S0061>;"<BASE><TILDE>";"<MIN><MIN>";<U00E3> % LATIN SMALL LETTER A WITH TILDE
-<U00C3> <S0061>;"<BASE><TILDE>";"<CAP><MIN>";<U00C3> % LATIN CAPITAL LETTER A WITH TILDE
<U0227> <S0061>;"<BASE><POINT>";"<MIN><MIN>";<U0227> % LATIN SMALL LETTER A WITH DOT ABOVE
-<U0226> <S0061>;"<BASE><POINT>";"<CAP><MIN>";<U0226> % LATIN CAPITAL LETTER A WITH DOT ABOVE
<U01E1> <S0061>;"<BASE><POINT><MACRO>";"<MIN><MIN><MIN>";<U01E1> % LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-<U01E0> <S0061>;"<BASE><POINT><MACRO>";"<CAP><MIN><MIN>";<U01E0> % LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
<U0105> <S0061>;"<BASE><OGONK>";"<MIN><MIN>";<U0105> % LATIN SMALL LETTER A WITH OGONEK
-<U0104> <S0061>;"<BASE><OGONK>";"<CAP><MIN>";<U0104> % LATIN CAPITAL LETTER A WITH OGONEK
<U0101> <S0061>;"<BASE><MACRO>";"<MIN><MIN>";<U0101> % LATIN SMALL LETTER A WITH MACRON
-<U0100> <S0061>;"<BASE><MACRO>";"<CAP><MIN>";<U0100> % LATIN CAPITAL LETTER A WITH MACRON
<U1EA3> <S0061>;"<BASE><CROOK>";"<MIN><MIN>";<U1EA3> % LATIN SMALL LETTER A WITH HOOK ABOVE
-<U1EA2> <S0061>;"<BASE><CROOK>";"<CAP><MIN>";<U1EA2> % LATIN CAPITAL LETTER A WITH HOOK ABOVE
<U0201> <S0061>;"<BASE><2GRAV>";"<MIN><MIN>";<U0201> % LATIN SMALL LETTER A WITH DOUBLE GRAVE
-<U0200> <S0061>;"<BASE><2GRAV>";"<CAP><MIN>";<U0200> % LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
<U0203> <S0061>;"<BASE><BREVR>";"<MIN><MIN>";<U0203> % LATIN SMALL LETTER A WITH INVERTED BREVE
-<U0202> <S0061>;"<BASE><BREVR>";"<CAP><MIN>";<U0202> % LATIN CAPITAL LETTER A WITH INVERTED BREVE
<U1EA1> <S0061>;"<BASE><POINS>";"<MIN><MIN>";<U1EA1> % LATIN SMALL LETTER A WITH DOT BELOW
-<U1EA0> <S0061>;"<BASE><POINS>";"<CAP><MIN>";<U1EA0> % LATIN CAPITAL LETTER A WITH DOT BELOW
<U1EB7> <S0061>;"<BASE><POINS><BREVE>";"<MIN><MIN><MIN>";<U1EB7> % LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-<U1EB6> <S0061>;"<BASE><POINS><BREVE>";"<CAP><MIN><MIN>";<U1EB6> % LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
<U1EAD> <S0061>;"<BASE><POINS><CIRCF>";"<MIN><MIN><MIN>";<U1EAD> % LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-<U1EAC> <S0061>;"<BASE><POINS><CIRCF>";"<CAP><MIN><MIN>";<U1EAC> % LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
<U1E01> <S0061>;"<BASE><CRCLS>";"<MIN><MIN>";<U1E01> % LATIN SMALL LETTER A WITH RING BELOW
-<U1E00> <S0061>;"<BASE><CRCLS>";"<CAP><MIN>";<U1E00> % LATIN CAPITAL LETTER A WITH RING BELOW
<U1DD3> <S0061>;"<BASE><VRNT1>";"<COMPAT><COMPAT>";<U1DD3> % COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
<UA733> "<S0061><S0061>";"<BASE><BASE>";"<COMPAT><COMPAT>";<UA733> % LATIN SMALL LETTER AA
-<UA732> "<S0061><S0061>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<UA732> % LATIN CAPITAL LETTER AA
<U0001F18E> "<S0061><S0062>";"<BASE><BASE>";"<MISCCAP><MISCCAP>";<U0001F18E> % NEGATIVE SQUARED AB
<U2100> "<S0061><S0063>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U2100> % ACCOUNT OF
<U00E6> "<S0061><S0065>";"<BASE><VRNT1><BASE>";"<COMPAT><COMPAT><COMPAT>";<U00E6> % LATIN SMALL LETTER AE
<U1DD4> "<S0061><S0065>";"<BASE><VRNT1><BASE>";"<COMPAT><COMPAT><COMPAT>";<U1DD4> % COMBINING LATIN SMALL LETTER AE
-<U00C6> "<S0061><S0065>";"<BASE><VRNT1><BASE>";"<COMPATCAP><COMPAT><COMPATCAP>";<U00C6> % LATIN CAPITAL LETTER AE
<U1D2D> "<S0061><S0065>";"<BASE><VRNT1><BASE>";"<MNN><MNN><MNN>";<U1D2D> % MODIFIER LETTER CAPITAL AE
<U01FD> "<S0061><S0065>";"<BASE><VRNT1><BASE><AIGUT>";"<COMPAT><COMPAT><COMPAT><MIN>";<U01FD> % LATIN SMALL LETTER AE WITH ACUTE
-<U01FC> "<S0061><S0065>";"<BASE><VRNT1><BASE><AIGUT>";"<COMPATCAP><COMPAT><COMPATCAP><MIN>";<U01FC> % LATIN CAPITAL LETTER AE WITH ACUTE
<U01E3> "<S0061><S0065>";"<BASE><VRNT1><BASE><MACRO>";"<COMPAT><COMPAT><COMPAT><MIN>";<U01E3> % LATIN SMALL LETTER AE WITH MACRON
-<U01E2> "<S0061><S0065>";"<BASE><VRNT1><BASE><MACRO>";"<COMPATCAP><COMPAT><COMPATCAP><MIN>";<U01E2> % LATIN CAPITAL LETTER AE WITH MACRON
<U33C2> "<S0061><S006D>";"<BASE><BASE>";"<SQUARED><SQUARED>";<U33C2> % SQUARE AM
<U33DF> "<S0061><S006D>";"<BASE><BASE>";"<MISCCAP><SQUARED>";<U33DF> % SQUARE A OVER M
<U1DD5> "<S0061><S006F>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U1DD5> % COMBINING LATIN SMALL LETTER AO
<UA735> "<S0061><S006F>";"<BASE><BASE>";"<COMPAT><COMPAT>";<UA735> % LATIN SMALL LETTER AO
-<UA734> "<S0061><S006F>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<UA734> % LATIN CAPITAL LETTER AO
<U2101> "<S0061><S0073>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U2101> % ADDRESSED TO THE SUBJECT
<U214D> "<S0061><S0073>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<U214D> % AKTIESELSKAB
<UA737> "<S0061><S0075>";"<BASE><BASE>";"<COMPAT><COMPAT>";<UA737> % LATIN SMALL LETTER AU
-<UA736> "<S0061><S0075>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<UA736> % LATIN CAPITAL LETTER AU
<U3373> "<S0061><S0075>";"<BASE><BASE>";"<MISCCAP><MISCCAP>";<U3373> % SQUARE AU
<U1DD6> "<S0061><S0076>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U1DD6> % COMBINING LATIN SMALL LETTER AV
<UA739> "<S0061><S0076>";"<BASE><BASE>";"<COMPAT><COMPAT>";<UA739> % LATIN SMALL LETTER AV
-<UA738> "<S0061><S0076>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<UA738> % LATIN CAPITAL LETTER AV
<UA73B> "<S0061><S0076>";"<BASE><VRNT1><BASE>";"<COMPAT><COMPAT><COMPAT>";<UA73B> % LATIN SMALL LETTER AV WITH HORIZONTAL BAR
-<UA73A> "<S0061><S0076>";"<BASE><VRNT1><BASE>";"<COMPATCAP><COMPAT><COMPATCAP>";<UA73A> % LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
<UA73D> "<S0061><S0079>";"<BASE><BASE>";"<COMPAT><COMPAT>";<UA73D> % LATIN SMALL LETTER AY
-<UA73C> "<S0061><S0079>";"<BASE><BASE>";"<COMPATCAP><COMPATCAP>";<UA73C> % LATIN CAPITAL LETTER AY
<U1E9A> "<S0061><S02BE>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U1E9A> % LATIN SMALL LETTER A WITH RIGHT HALF RING
<U1D00> <S1D00>;<BASE>;<MIN>;<U1D00> % LATIN LETTER SMALL CAPITAL A
<U2C65> <S2C65>;<BASE>;<MIN>;<U2C65> % LATIN SMALL LETTER A WITH STROKE
-<U023A> <S2C65>;<BASE>;<CAP>;<U023A> % LATIN CAPITAL LETTER A WITH STROKE
<U1D8F> <S1D8F>;<BASE>;<MIN>;<U1D8F> % LATIN SMALL LETTER A WITH RETROFLEX HOOK
<U1D01> <S1D01>;<BASE>;<MIN>;<U1D01> % LATIN LETTER SMALL CAPITAL AE
<U1D02> <S1D02>;<BASE>;<MIN>;<U1D02> % LATIN SMALL LETTER TURNED AE
<U1D46> <S1D02>;<BASE>;<MNN>;<U1D46> % MODIFIER LETTER SMALL TURNED AE
<UAB31> <SAB31>;<BASE>;<MIN>;<UAB31> % LATIN SMALL LETTER A REVERSED-SCHWA
<U0250> <S0250>;<BASE>;<MIN>;<U0250> % LATIN SMALL LETTER TURNED A
-<U2C6F> <S0250>;<BASE>;<CAP>;<U2C6F> % LATIN CAPITAL LETTER TURNED A
<U1D44> <S0250>;<BASE>;<MNN>;<U1D44> % MODIFIER LETTER SMALL TURNED A
<U0251> <S0251>;<BASE>;<MIN>;<U0251> % LATIN SMALL LETTER ALPHA
<U1DE7> <S0251>;<BASE>;<COMPAT>;<U1DE7> % COMBINING LATIN SMALL LETTER ALPHA
-<U2C6D> <S0251>;<BASE>;<CAP>;<U2C6D> % LATIN CAPITAL LETTER ALPHA
<U1D45> <S0251>;<BASE>;<MNN>;<U1D45> % MODIFIER LETTER SMALL ALPHA
<UAB30> <SAB30>;<BASE>;<MIN>;<UAB30> % LATIN SMALL LETTER BARRED ALPHA
<U1D90> <S1D90>;<BASE>;<MIN>;<U1D90> % LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
<U0252> <S0252>;<BASE>;<MIN>;<U0252> % LATIN SMALL LETTER TURNED ALPHA
-<U2C70> <S0252>;<BASE>;<CAP>;<U2C70> % LATIN CAPITAL LETTER TURNED ALPHA
<U1D9B> <S0252>;<BASE>;<MNN>;<U1D9B> % MODIFIER LETTER SMALL TURNED ALPHA
<UAB64> <SAB64>;<BASE>;<MIN>;<UAB64> % LATIN SMALL LETTER INVERTED ALPHA
<U0062> <S0062>;<BASE>;<MIN>;<U0062> % LATIN SMALL LETTER B
@@ -64500,52 +64436,24 @@ endif
<U0001D657> <S0062>;<BASE>;<FONT>;<U0001D657> % MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
<U0001D68B> <S0062>;<BASE>;<FONT>;<U0001D68B> % MATHEMATICAL MONOSPACE SMALL B
<U24D1> <S0062>;<BASE>;<CIRCLE>;<U24D1> % CIRCLED LATIN SMALL LETTER B
-<U0042> <S0062>;<BASE>;<CAP>;<U0042> % LATIN CAPITAL LETTER B
-<UFF22> <S0062>;<BASE>;<WIDECAP>;<UFF22> % FULLWIDTH LATIN CAPITAL LETTER B
-<U0001F111> <S0062>;<BASE>;<COMPATCAP>;<U0001F111> % PARENTHESIZED LATIN CAPITAL LETTER B
-<U212C> <S0062>;<BASE>;<FONTCAP>;<U212C> % SCRIPT CAPITAL B
-<U0001D401> <S0062>;<BASE>;<FONTCAP>;<U0001D401> % MATHEMATICAL BOLD CAPITAL B
-<U0001D435> <S0062>;<BASE>;<FONTCAP>;<U0001D435> % MATHEMATICAL ITALIC CAPITAL B
-<U0001D469> <S0062>;<BASE>;<FONTCAP>;<U0001D469> % MATHEMATICAL BOLD ITALIC CAPITAL B
-<U0001D4D1> <S0062>;<BASE>;<FONTCAP>;<U0001D4D1> % MATHEMATICAL BOLD SCRIPT CAPITAL B
-<U0001D505> <S0062>;<BASE>;<FONTCAP>;<U0001D505> % MATHEMATICAL FRAKTUR CAPITAL B
-<U0001D539> <S0062>;<BASE>;<FONTCAP>;<U0001D539> % MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-<U0001D56D> <S0062>;<BASE>;<FONTCAP>;<U0001D56D> % MATHEMATICAL BOLD FRAKTUR CAPITAL B
-<U0001D5A1> <S0062>;<BASE>;<FONTCAP>;<U0001D5A1> % MATHEMATICAL SANS-SERIF CAPITAL B
-<U0001D5D5> <S0062>;<BASE>;<FONTCAP>;<U0001D5D5> % MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-<U0001D609> <S0062>;<BASE>;<FONTCAP>;<U0001D609> % MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-<U0001D63D> <S0062>;<BASE>;<FONTCAP>;<U0001D63D> % MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-<U0001D671> <S0062>;<BASE>;<FONTCAP>;<U0001D671> % MATHEMATICAL MONOSPACE CAPITAL B
-<U24B7> <S0062>;<BASE>;<CIRCLECAP>;<U24B7> % CIRCLED LATIN CAPITAL LETTER B
-<U0001F151> <S0062>;<BASE>;<CIRCLECAP>;<U0001F151> % NEGATIVE CIRCLED LATIN CAPITAL LETTER B
<U1D47> <S0062>;<BASE>;<MNN>;<U1D47> % MODIFIER LETTER SMALL B
<U1D2E> <S0062>;<BASE>;<MISCCAP>;<U1D2E> % MODIFIER LETTER CAPITAL B
-<U0001F131> <S0062>;<BASE>;<MISCCAP>;<U0001F131> % SQUARED LATIN CAPITAL LETTER B
-<U0001F171> <S0062>;<BASE>;<MISCCAP>;<U0001F171> % NEGATIVE SQUARED LATIN CAPITAL LETTER B
<U1E03> <S0062>;"<BASE><POINT>";"<MIN><MIN>";<U1E03> % LATIN SMALL LETTER B WITH DOT ABOVE
-<U1E02> <S0062>;"<BASE><POINT>";"<CAP><MIN>";<U1E02> % LATIN CAPITAL LETTER B WITH DOT ABOVE
<U1E05> <S0062>;"<BASE><POINS>";"<MIN><MIN>";<U1E05> % LATIN SMALL LETTER B WITH DOT BELOW
-<U1E04> <S0062>;"<BASE><POINS>";"<CAP><MIN>";<U1E04> % LATIN CAPITAL LETTER B WITH DOT BELOW
<U1E07> <S0062>;"<BASE><MACRS>";"<MIN><MIN>";<U1E07> % LATIN SMALL LETTER B WITH LINE BELOW
-<U1E06> <S0062>;"<BASE><MACRS>";"<CAP><MIN>";<U1E06> % LATIN CAPITAL LETTER B WITH LINE BELOW
<U3374> "<S0062><S0061><S0072>";"<BASE><BASE><BASE>";"<SQUARED><SQUARED><SQUARED>";<U3374> % SQUARE BAR
<U33C3> "<S0062><S0071>";"<BASE><BASE>";"<MISCCAP><SQUARED>";<U33C3> % SQUARE BQ
<U0299> <S0299>;<BASE>;<MIN>;<U0299> % LATIN LETTER SMALL CAPITAL B
<U0180> <S0180>;<BASE>;<MIN>;<U0180> % LATIN SMALL LETTER B WITH STROKE
-<U0243> <S0180>;<BASE>;<CAP>;<U0243> % LATIN CAPITAL LETTER B WITH STROKE
<U1D2F> <S1D2F>;<BASE>;<MIN>;<U1D2F> % MODIFIER LETTER CAPITAL BARRED B
<U1D03> <S1D03>;<BASE>;<MIN>;<U1D03> % LATIN LETTER SMALL CAPITAL BARRED B
<U1D6C> <S1D6C>;<BASE>;<MIN>;<U1D6C> % LATIN SMALL LETTER B WITH MIDDLE TILDE
<UA797> <SA797>;<BASE>;<MIN>;<UA797> % LATIN SMALL LETTER B WITH FLOURISH
-<UA796> <SA797>;<BASE>;<CAP>;<UA796> % LATIN CAPITAL LETTER B WITH FLOURISH
<U1D80> <S1D80>;<BASE>;<MIN>;<U1D80> % LATIN SMALL LETTER B WITH PALATAL HOOK
<U0253> <S0253>;<BASE>;<MIN>;<U0253> % LATIN SMALL LETTER B WITH HOOK
-<U0181> <S0253>;<BASE>;<CAP>;<U0181> % LATIN CAPITAL LETTER B WITH HOOK
<U0183> <S0183>;<BASE>;<MIN>;<U0183> % LATIN SMALL LETTER B WITH TOPBAR
-<U0182> <S0183>;<BASE>;<CAP>;<U0182> % LATIN CAPITAL LETTER B WITH TOPBAR
<UA7B5> <SA7B5>;<BASE>;<MIN>;<UA7B5> % LATIN SMALL LETTER BETA
<U1DE9> <SA7B5>;<BASE>;<COMPAT>;<U1DE9> % COMBINING LATIN SMALL LETTER BETA
-<UA7B4> <SA7B5>;<BASE>;<CAP>;<UA7B4> % LATIN CAPITAL LETTER BETA
<U0063> <S0063>;<BASE>;<MIN>;<U0063> % LATIN SMALL LETTER C
<UFF43> <S0063>;<BASE>;<WIDE>;<UFF43> % FULLWIDTH LATIN SMALL LETTER C
<U0368> <S0063>;<BASE>;<COMPAT>;<U0368> % COMBINING LATIN SMALL LETTER C
@@ -64565,43 +64473,15 @@ endif
<U0001D658> <S0063>;<BASE>;<FONT>;<U0001D658> % MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
<U0001D68C> <S0063>;<BASE>;<FONT>;<U0001D68C> % MATHEMATICAL MONOSPACE SMALL C
<U24D2> <S0063>;<BASE>;<CIRCLE>;<U24D2> % CIRCLED LATIN SMALL LETTER C
-<U0043> <S0063>;<BASE>;<CAP>;<U0043> % LATIN CAPITAL LETTER C
-<UFF23> <S0063>;<BASE>;<WIDECAP>;<UFF23> % FULLWIDTH LATIN CAPITAL LETTER C
<U2103> <S0063>;<BASE>;<COMPATCAP>;<U2103> % DEGREE CELSIUS
-<U216D> <S0063>;<BASE>;<COMPATCAP>;<U216D> % ROMAN NUMERAL ONE HUNDRED
-<U0001F112> <S0063>;<BASE>;<COMPATCAP>;<U0001F112> % PARENTHESIZED LATIN CAPITAL LETTER C
-<U2102> <S0063>;<BASE>;<FONTCAP>;<U2102> % DOUBLE-STRUCK CAPITAL C
-<U212D> <S0063>;<BASE>;<FONTCAP>;<U212D> % BLACK-LETTER CAPITAL C
-<U0001D402> <S0063>;<BASE>;<FONTCAP>;<U0001D402> % MATHEMATICAL BOLD CAPITAL C
-<U0001D436> <S0063>;<BASE>;<FONTCAP>;<U0001D436> % MATHEMATICAL ITALIC CAPITAL C
-<U0001D46A> <S0063>;<BASE>;<FONTCAP>;<U0001D46A> % MATHEMATICAL BOLD ITALIC CAPITAL C
-<U0001D49E> <S0063>;<BASE>;<FONTCAP>;<U0001D49E> % MATHEMATICAL SCRIPT CAPITAL C
-<U0001D4D2> <S0063>;<BASE>;<FONTCAP>;<U0001D4D2> % MATHEMATICAL BOLD SCRIPT CAPITAL C
-<U0001D56E> <S0063>;<BASE>;<FONTCAP>;<U0001D56E> % MATHEMATICAL BOLD FRAKTUR CAPITAL C
-<U0001D5A2> <S0063>;<BASE>;<FONTCAP>;<U0001D5A2> % MATHEMATICAL SANS-SERIF CAPITAL C
-<U0001D5D6> <S0063>;<BASE>;<FONTCAP>;<U0001D5D6> % MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-<U0001D60A> <S0063>;<BASE>;<FONTCAP>;<U0001D60A> % MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-<U0001D63E> <S0063>;<BASE>;<FONTCAP>;<U0001D63E> % MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-<U0001D672> <S0063>;<BASE>;<FONTCAP>;<U0001D672> % MATHEMATICAL MONOSPACE C