diff options
| author | Carlos O'Donell <carlos@redhat.com> | 2018-07-25 17:00:45 -0400 |
|---|---|---|
| committer | Carlos O'Donell <carlos@redhat.com> | 2018-07-25 17:00:45 -0400 |
| commit | 7cd7d36f1feb3ccacf476e909b115b45cdd46e77 (patch) | |
| tree | 6df764ca0242733146b3ba6b08eba3a2a4128b3e | |
| parent | 3fb455b318c48f76280b4f8a0ff23b2cb1af9a3e (diff) | |
| download | glibc-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-- | ChangeLog | 11 | ||||
| -rw-r--r-- | localedata/Makefile | 1 | ||||
| -rw-r--r-- | localedata/locales/iso14651_t1_common | 1928 | ||||
| -rw-r--r-- | posix/tst-fnmatch.input | 125 | ||||
| -rw-r--r-- | posix/tst-regexloc.c | 8 |
5 files changed, 1065 insertions, 1008 deletions
@@ -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 |
