Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 34 additions & 6 deletions data/CaseFolding.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CaseFolding-16.0.0.txt
# Date: 2024-04-30, 21:48:11 GMT
# © 2024 Unicode®, Inc.
# CaseFolding-17.0.0.txt
# Date: 2025-07-30, 23:54:36 GMT
# © 2025 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
Expand All @@ -18,15 +18,15 @@
# The data supports both implementations that require simple case foldings
# (where string lengths don't change), and implementations that allow full case folding
# (where string lengths may grow). Note that where they can be supported, the
# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match.
# full case foldings are superior: for example, they allow "FUSS" and "Fuß" to match.
#
# All code points not listed in this file map to themselves.
#
# NOTE: case folding does not preserve normalization formats!
#
# For information on case folding, including how to have case folding
# preserve normalization formats, see Section 3.13 Default Case Algorithms in
# The Unicode Standard.
# preserve normalization formats, see the
# "Conformance" / "Default Case Algorithms" section of the core specification.
#
# ================================================================================
# Format
Expand Down Expand Up @@ -1243,7 +1243,10 @@ A7C7; C; A7C8; # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9; C; A7CA; # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
A7CB; C; 0264; # LATIN CAPITAL LETTER RAMS HORN
A7CC; C; A7CD; # LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
A7CE; C; A7CF; # LATIN CAPITAL LETTER PHARYNGEAL VOICED FRICATIVE
A7D0; C; A7D1; # LATIN CAPITAL LETTER CLOSED INSULAR G
A7D2; C; A7D3; # LATIN CAPITAL LETTER DOUBLE THORN
A7D4; C; A7D5; # LATIN CAPITAL LETTER DOUBLE WYNN
A7D6; C; A7D7; # LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8; C; A7D9; # LATIN CAPITAL LETTER SIGMOID S
A7DA; C; A7DB; # LATIN CAPITAL LETTER LAMBDA
Expand Down Expand Up @@ -1616,6 +1619,31 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
16E5D; C; 16E7D; # MEDEFAIDRIN CAPITAL LETTER O
16E5E; C; 16E7E; # MEDEFAIDRIN CAPITAL LETTER AI
16E5F; C; 16E7F; # MEDEFAIDRIN CAPITAL LETTER Y
16EA0; C; 16EBB; # BERIA ERFE CAPITAL LETTER ARKAB
16EA1; C; 16EBC; # BERIA ERFE CAPITAL LETTER BASIGNA
16EA2; C; 16EBD; # BERIA ERFE CAPITAL LETTER DARBAI
16EA3; C; 16EBE; # BERIA ERFE CAPITAL LETTER EH
16EA4; C; 16EBF; # BERIA ERFE CAPITAL LETTER FITKO
16EA5; C; 16EC0; # BERIA ERFE CAPITAL LETTER GOWAY
16EA6; C; 16EC1; # BERIA ERFE CAPITAL LETTER HIRDEABO
16EA7; C; 16EC2; # BERIA ERFE CAPITAL LETTER I
16EA8; C; 16EC3; # BERIA ERFE CAPITAL LETTER DJAI
16EA9; C; 16EC4; # BERIA ERFE CAPITAL LETTER KOBO
16EAA; C; 16EC5; # BERIA ERFE CAPITAL LETTER LAKKO
16EAB; C; 16EC6; # BERIA ERFE CAPITAL LETTER MERI
16EAC; C; 16EC7; # BERIA ERFE CAPITAL LETTER NINI
16EAD; C; 16EC8; # BERIA ERFE CAPITAL LETTER GNA
16EAE; C; 16EC9; # BERIA ERFE CAPITAL LETTER NGAY
16EAF; C; 16ECA; # BERIA ERFE CAPITAL LETTER OI
16EB0; C; 16ECB; # BERIA ERFE CAPITAL LETTER PI
16EB1; C; 16ECC; # BERIA ERFE CAPITAL LETTER ERIGO
16EB2; C; 16ECD; # BERIA ERFE CAPITAL LETTER ERIGO TAMURA
16EB3; C; 16ECE; # BERIA ERFE CAPITAL LETTER SERI
16EB4; C; 16ECF; # BERIA ERFE CAPITAL LETTER SHEP
16EB5; C; 16ED0; # BERIA ERFE CAPITAL LETTER TATASOUE
16EB6; C; 16ED1; # BERIA ERFE CAPITAL LETTER UI
16EB7; C; 16ED2; # BERIA ERFE CAPITAL LETTER WASSE
16EB8; C; 16ED3; # BERIA ERFE CAPITAL LETTER AY
1E900; C; 1E922; # ADLAM CAPITAL LETTER ALIF
1E901; C; 1E923; # ADLAM CAPITAL LETTER DAALI
1E902; C; 1E924; # ADLAM CAPITAL LETTER LAAM
Expand Down
183 changes: 98 additions & 85 deletions src/case_fold.inc
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// Generated by tools/make_case_fold_inc.py

#define CF_MAX (1 << 17)
#define CF_TABLE_SIZE 1531
#define CF_TABLE_SIZE 1559
#define CF_CODE_POINT(x) ((x) & 0x1FFFF)
#define CF_REPL_IDX(x) ((((x) >> 17) & 0xFFF) * 2)
#define CF_REPL_SIZE(x) ((x) >> 29)

static const uint32_t cf_table[1531] = {
static const uint32_t cf_table[1559] = {
0x400000B5, 0x400200C0, 0x400400C1, 0x400600C2, 0x400800C3, 0x400A00C4,
0x400C00C5, 0x400E00C6, 0x401000C7, 0x401200C8, 0x401400C9, 0x401600CA,
0x401800CB, 0x401A00CC, 0x401C00CD, 0x401E00CE, 0x402000CF, 0x402200D0,
Expand Down Expand Up @@ -194,78 +194,82 @@ static const uint32_t cf_table[1531] = {
0x4E08A7AD, 0x4E0AA7AE, 0x4E0CA7B0, 0x4E0EA7B1, 0x4E10A7B2, 0x6E12A7B3,
0x6E16A7B4, 0x6E1AA7B6, 0x6E1EA7B8, 0x6E22A7BA, 0x6E26A7BC, 0x6E2AA7BE,
0x6E2EA7C0, 0x6E32A7C2, 0x6E36A7C4, 0x4E3AA7C5, 0x6E3CA7C6, 0x6E40A7C7,
0x6E44A7C9, 0x4E48A7CB, 0x6E4AA7CC, 0x6E4EA7D0, 0x6E52A7D6, 0x6E56A7D8,
0x6E5AA7DA, 0x4E5EA7DC, 0x6E60A7F5, 0x6E64AB70, 0x6E68AB71, 0x6E6CAB72,
0x6E70AB73, 0x6E74AB74, 0x6E78AB75, 0x6E7CAB76, 0x6E80AB77, 0x6E84AB78,
0x6E88AB79, 0x6E8CAB7A, 0x6E90AB7B, 0x6E94AB7C, 0x6E98AB7D, 0x6E9CAB7E,
0x6EA0AB7F, 0x6EA4AB80, 0x6EA8AB81, 0x6EACAB82, 0x6EB0AB83, 0x6EB4AB84,
0x6EB8AB85, 0x6EBCAB86, 0x6EC0AB87, 0x6EC4AB88, 0x6EC8AB89, 0x6ECCAB8A,
0x6ED0AB8B, 0x6ED4AB8C, 0x6ED8AB8D, 0x6EDCAB8E, 0x6EE0AB8F, 0x6EE4AB90,
0x6EE8AB91, 0x6EECAB92, 0x6EF0AB93, 0x6EF4AB94, 0x6EF8AB95, 0x6EFCAB96,
0x6F00AB97, 0x6F04AB98, 0x6F08AB99, 0x6F0CAB9A, 0x6F10AB9B, 0x6F14AB9C,
0x6F18AB9D, 0x6F1CAB9E, 0x6F20AB9F, 0x6F24ABA0, 0x6F28ABA1, 0x6F2CABA2,
0x6F30ABA3, 0x6F34ABA4, 0x6F38ABA5, 0x6F3CABA6, 0x6F40ABA7, 0x6F44ABA8,
0x6F48ABA9, 0x6F4CABAA, 0x6F50ABAB, 0x6F54ABAC, 0x6F58ABAD, 0x6F5CABAE,
0x6F60ABAF, 0x6F64ABB0, 0x6F68ABB1, 0x6F6CABB2, 0x6F70ABB3, 0x6F74ABB4,
0x6F78ABB5, 0x6F7CABB6, 0x6F80ABB7, 0x6F84ABB8, 0x6F88ABB9, 0x6F8CABBA,
0x6F90ABBB, 0x6F94ABBC, 0x6F98ABBD, 0x6F9CABBE, 0x6FA0ABBF, 0x4FA4FB00,
0x4FA6FB01, 0x4FA8FB02, 0x6FAAFB03, 0x6FAEFB04, 0x4FB2FB05, 0x4FB4FB06,
0x8FB6FB13, 0x8FBAFB14, 0x8FBEFB15, 0x8FC2FB16, 0x8FC6FB17, 0x6FCAFF21,
0x6FCEFF22, 0x6FD2FF23, 0x6FD6FF24, 0x6FDAFF25, 0x6FDEFF26, 0x6FE2FF27,
0x6FE6FF28, 0x6FEAFF29, 0x6FEEFF2A, 0x6FF2FF2B, 0x6FF6FF2C, 0x6FFAFF2D,
0x6FFEFF2E, 0x7002FF2F, 0x7006FF30, 0x700AFF31, 0x700EFF32, 0x7012FF33,
0x7016FF34, 0x701AFF35, 0x701EFF36, 0x7022FF37, 0x7026FF38, 0x702AFF39,
0x702EFF3A, 0x90330400, 0x90370401, 0x903B0402, 0x903F0403, 0x90430404,
0x90470405, 0x904B0406, 0x904F0407, 0x90530408, 0x90570409, 0x905B040A,
0x905F040B, 0x9063040C, 0x9067040D, 0x906B040E, 0x906F040F, 0x90730410,
0x90770411, 0x907B0412, 0x907F0413, 0x90830414, 0x90870415, 0x908B0416,
0x908F0417, 0x90930418, 0x90970419, 0x909B041A, 0x909F041B, 0x90A3041C,
0x90A7041D, 0x90AB041E, 0x90AF041F, 0x90B30420, 0x90B70421, 0x90BB0422,
0x90BF0423, 0x90C30424, 0x90C70425, 0x90CB0426, 0x90CF0427, 0x90D304B0,
0x90D704B1, 0x90DB04B2, 0x90DF04B3, 0x90E304B4, 0x90E704B5, 0x90EB04B6,
0x90EF04B7, 0x90F304B8, 0x90F704B9, 0x90FB04BA, 0x90FF04BB, 0x910304BC,
0x910704BD, 0x910B04BE, 0x910F04BF, 0x911304C0, 0x911704C1, 0x911B04C2,
0x911F04C3, 0x912304C4, 0x912704C5, 0x912B04C6, 0x912F04C7, 0x913304C8,
0x913704C9, 0x913B04CA, 0x913F04CB, 0x914304CC, 0x914704CD, 0x914B04CE,
0x914F04CF, 0x915304D0, 0x915704D1, 0x915B04D2, 0x915F04D3, 0x91630570,
0x91670571, 0x916B0572, 0x916F0573, 0x91730574, 0x91770575, 0x917B0576,
0x917F0577, 0x91830578, 0x91870579, 0x918B057A, 0x918F057C, 0x9193057D,
0x9197057E, 0x919B057F, 0x919F0580, 0x91A30581, 0x91A70582, 0x91AB0583,
0x91AF0584, 0x91B30585, 0x91B70586, 0x91BB0587, 0x91BF0588, 0x91C30589,
0x91C7058A, 0x91CB058C, 0x91CF058D, 0x91D3058E, 0x91D7058F, 0x91DB0590,
0x91DF0591, 0x91E30592, 0x91E70594, 0x91EB0595, 0x91EF0C80, 0x91F30C81,
0x91F70C82, 0x91FB0C83, 0x91FF0C84, 0x92030C85, 0x92070C86, 0x920B0C87,
0x920F0C88, 0x92130C89, 0x92170C8A, 0x921B0C8B, 0x921F0C8C, 0x92230C8D,
0x92270C8E, 0x922B0C8F, 0x922F0C90, 0x92330C91, 0x92370C92, 0x923B0C93,
0x923F0C94, 0x92430C95, 0x92470C96, 0x924B0C97, 0x924F0C98, 0x92530C99,
0x92570C9A, 0x925B0C9B, 0x925F0C9C, 0x92630C9D, 0x92670C9E, 0x926B0C9F,
0x926F0CA0, 0x92730CA1, 0x92770CA2, 0x927B0CA3, 0x927F0CA4, 0x92830CA5,
0x92870CA6, 0x928B0CA7, 0x928F0CA8, 0x92930CA9, 0x92970CAA, 0x929B0CAB,
0x929F0CAC, 0x92A30CAD, 0x92A70CAE, 0x92AB0CAF, 0x92AF0CB0, 0x92B30CB1,
0x92B70CB2, 0x92BB0D50, 0x92BF0D51, 0x92C30D52, 0x92C70D53, 0x92CB0D54,
0x92CF0D55, 0x92D30D56, 0x92D70D57, 0x92DB0D58, 0x92DF0D59, 0x92E30D5A,
0x92E70D5B, 0x92EB0D5C, 0x92EF0D5D, 0x92F30D5E, 0x92F70D5F, 0x92FB0D60,
0x92FF0D61, 0x93030D62, 0x93070D63, 0x930B0D64, 0x930F0D65, 0x931318A0,
0x931718A1, 0x931B18A2, 0x931F18A3, 0x932318A4, 0x932718A5, 0x932B18A6,
0x932F18A7, 0x933318A8, 0x933718A9, 0x933B18AA, 0x933F18AB, 0x934318AC,
0x934718AD, 0x934B18AE, 0x934F18AF, 0x935318B0, 0x935718B1, 0x935B18B2,
0x935F18B3, 0x936318B4, 0x936718B5, 0x936B18B6, 0x936F18B7, 0x937318B8,
0x937718B9, 0x937B18BA, 0x937F18BB, 0x938318BC, 0x938718BD, 0x938B18BE,
0x938F18BF, 0x93936E40, 0x93976E41, 0x939B6E42, 0x939F6E43, 0x93A36E44,
0x93A76E45, 0x93AB6E46, 0x93AF6E47, 0x93B36E48, 0x93B76E49, 0x93BB6E4A,
0x93BF6E4B, 0x93C36E4C, 0x93C76E4D, 0x93CB6E4E, 0x93CF6E4F, 0x93D36E50,
0x93D76E51, 0x93DB6E52, 0x93DF6E53, 0x93E36E54, 0x93E76E55, 0x93EB6E56,
0x93EF6E57, 0x93F36E58, 0x93F76E59, 0x93FB6E5A, 0x93FF6E5B, 0x94036E5C,
0x94076E5D, 0x940B6E5E, 0x940F6E5F, 0x9413E900, 0x9417E901, 0x941BE902,
0x941FE903, 0x9423E904, 0x9427E905, 0x942BE906, 0x942FE907, 0x9433E908,
0x9437E909, 0x943BE90A, 0x943FE90B, 0x9443E90C, 0x9447E90D, 0x944BE90E,
0x944FE90F, 0x9453E910, 0x9457E911, 0x945BE912, 0x945FE913, 0x9463E914,
0x9467E915, 0x946BE916, 0x946FE917, 0x9473E918, 0x9477E919, 0x947BE91A,
0x947FE91B, 0x9483E91C, 0x9487E91D, 0x948BE91E, 0x948FE91F, 0x9493E920,
0x9497E921
0x6E44A7C9, 0x4E48A7CB, 0x6E4AA7CC, 0x6E4EA7CE, 0x6E52A7D0, 0x6E56A7D2,
0x6E5AA7D4, 0x6E5EA7D6, 0x6E62A7D8, 0x6E66A7DA, 0x4E6AA7DC, 0x6E6CA7F5,
0x6E70AB70, 0x6E74AB71, 0x6E78AB72, 0x6E7CAB73, 0x6E80AB74, 0x6E84AB75,
0x6E88AB76, 0x6E8CAB77, 0x6E90AB78, 0x6E94AB79, 0x6E98AB7A, 0x6E9CAB7B,
0x6EA0AB7C, 0x6EA4AB7D, 0x6EA8AB7E, 0x6EACAB7F, 0x6EB0AB80, 0x6EB4AB81,
0x6EB8AB82, 0x6EBCAB83, 0x6EC0AB84, 0x6EC4AB85, 0x6EC8AB86, 0x6ECCAB87,
0x6ED0AB88, 0x6ED4AB89, 0x6ED8AB8A, 0x6EDCAB8B, 0x6EE0AB8C, 0x6EE4AB8D,
0x6EE8AB8E, 0x6EECAB8F, 0x6EF0AB90, 0x6EF4AB91, 0x6EF8AB92, 0x6EFCAB93,
0x6F00AB94, 0x6F04AB95, 0x6F08AB96, 0x6F0CAB97, 0x6F10AB98, 0x6F14AB99,
0x6F18AB9A, 0x6F1CAB9B, 0x6F20AB9C, 0x6F24AB9D, 0x6F28AB9E, 0x6F2CAB9F,
0x6F30ABA0, 0x6F34ABA1, 0x6F38ABA2, 0x6F3CABA3, 0x6F40ABA4, 0x6F44ABA5,
0x6F48ABA6, 0x6F4CABA7, 0x6F50ABA8, 0x6F54ABA9, 0x6F58ABAA, 0x6F5CABAB,
0x6F60ABAC, 0x6F64ABAD, 0x6F68ABAE, 0x6F6CABAF, 0x6F70ABB0, 0x6F74ABB1,
0x6F78ABB2, 0x6F7CABB3, 0x6F80ABB4, 0x6F84ABB5, 0x6F88ABB6, 0x6F8CABB7,
0x6F90ABB8, 0x6F94ABB9, 0x6F98ABBA, 0x6F9CABBB, 0x6FA0ABBC, 0x6FA4ABBD,
0x6FA8ABBE, 0x6FACABBF, 0x4FB0FB00, 0x4FB2FB01, 0x4FB4FB02, 0x6FB6FB03,
0x6FBAFB04, 0x4FBEFB05, 0x4FC0FB06, 0x8FC2FB13, 0x8FC6FB14, 0x8FCAFB15,
0x8FCEFB16, 0x8FD2FB17, 0x6FD6FF21, 0x6FDAFF22, 0x6FDEFF23, 0x6FE2FF24,
0x6FE6FF25, 0x6FEAFF26, 0x6FEEFF27, 0x6FF2FF28, 0x6FF6FF29, 0x6FFAFF2A,
0x6FFEFF2B, 0x7002FF2C, 0x7006FF2D, 0x700AFF2E, 0x700EFF2F, 0x7012FF30,
0x7016FF31, 0x701AFF32, 0x701EFF33, 0x7022FF34, 0x7026FF35, 0x702AFF36,
0x702EFF37, 0x7032FF38, 0x7036FF39, 0x703AFF3A, 0x903F0400, 0x90430401,
0x90470402, 0x904B0403, 0x904F0404, 0x90530405, 0x90570406, 0x905B0407,
0x905F0408, 0x90630409, 0x9067040A, 0x906B040B, 0x906F040C, 0x9073040D,
0x9077040E, 0x907B040F, 0x907F0410, 0x90830411, 0x90870412, 0x908B0413,
0x908F0414, 0x90930415, 0x90970416, 0x909B0417, 0x909F0418, 0x90A30419,
0x90A7041A, 0x90AB041B, 0x90AF041C, 0x90B3041D, 0x90B7041E, 0x90BB041F,
0x90BF0420, 0x90C30421, 0x90C70422, 0x90CB0423, 0x90CF0424, 0x90D30425,
0x90D70426, 0x90DB0427, 0x90DF04B0, 0x90E304B1, 0x90E704B2, 0x90EB04B3,
0x90EF04B4, 0x90F304B5, 0x90F704B6, 0x90FB04B7, 0x90FF04B8, 0x910304B9,
0x910704BA, 0x910B04BB, 0x910F04BC, 0x911304BD, 0x911704BE, 0x911B04BF,
0x911F04C0, 0x912304C1, 0x912704C2, 0x912B04C3, 0x912F04C4, 0x913304C5,
0x913704C6, 0x913B04C7, 0x913F04C8, 0x914304C9, 0x914704CA, 0x914B04CB,
0x914F04CC, 0x915304CD, 0x915704CE, 0x915B04CF, 0x915F04D0, 0x916304D1,
0x916704D2, 0x916B04D3, 0x916F0570, 0x91730571, 0x91770572, 0x917B0573,
0x917F0574, 0x91830575, 0x91870576, 0x918B0577, 0x918F0578, 0x91930579,
0x9197057A, 0x919B057C, 0x919F057D, 0x91A3057E, 0x91A7057F, 0x91AB0580,
0x91AF0581, 0x91B30582, 0x91B70583, 0x91BB0584, 0x91BF0585, 0x91C30586,
0x91C70587, 0x91CB0588, 0x91CF0589, 0x91D3058A, 0x91D7058C, 0x91DB058D,
0x91DF058E, 0x91E3058F, 0x91E70590, 0x91EB0591, 0x91EF0592, 0x91F30594,
0x91F70595, 0x91FB0C80, 0x91FF0C81, 0x92030C82, 0x92070C83, 0x920B0C84,
0x920F0C85, 0x92130C86, 0x92170C87, 0x921B0C88, 0x921F0C89, 0x92230C8A,
0x92270C8B, 0x922B0C8C, 0x922F0C8D, 0x92330C8E, 0x92370C8F, 0x923B0C90,
0x923F0C91, 0x92430C92, 0x92470C93, 0x924B0C94, 0x924F0C95, 0x92530C96,
0x92570C97, 0x925B0C98, 0x925F0C99, 0x92630C9A, 0x92670C9B, 0x926B0C9C,
0x926F0C9D, 0x92730C9E, 0x92770C9F, 0x927B0CA0, 0x927F0CA1, 0x92830CA2,
0x92870CA3, 0x928B0CA4, 0x928F0CA5, 0x92930CA6, 0x92970CA7, 0x929B0CA8,
0x929F0CA9, 0x92A30CAA, 0x92A70CAB, 0x92AB0CAC, 0x92AF0CAD, 0x92B30CAE,
0x92B70CAF, 0x92BB0CB0, 0x92BF0CB1, 0x92C30CB2, 0x92C70D50, 0x92CB0D51,
0x92CF0D52, 0x92D30D53, 0x92D70D54, 0x92DB0D55, 0x92DF0D56, 0x92E30D57,
0x92E70D58, 0x92EB0D59, 0x92EF0D5A, 0x92F30D5B, 0x92F70D5C, 0x92FB0D5D,
0x92FF0D5E, 0x93030D5F, 0x93070D60, 0x930B0D61, 0x930F0D62, 0x93130D63,
0x93170D64, 0x931B0D65, 0x931F18A0, 0x932318A1, 0x932718A2, 0x932B18A3,
0x932F18A4, 0x933318A5, 0x933718A6, 0x933B18A7, 0x933F18A8, 0x934318A9,
0x934718AA, 0x934B18AB, 0x934F18AC, 0x935318AD, 0x935718AE, 0x935B18AF,
0x935F18B0, 0x936318B1, 0x936718B2, 0x936B18B3, 0x936F18B4, 0x937318B5,
0x937718B6, 0x937B18B7, 0x937F18B8, 0x938318B9, 0x938718BA, 0x938B18BB,
0x938F18BC, 0x939318BD, 0x939718BE, 0x939B18BF, 0x939F6E40, 0x93A36E41,
0x93A76E42, 0x93AB6E43, 0x93AF6E44, 0x93B36E45, 0x93B76E46, 0x93BB6E47,
0x93BF6E48, 0x93C36E49, 0x93C76E4A, 0x93CB6E4B, 0x93CF6E4C, 0x93D36E4D,
0x93D76E4E, 0x93DB6E4F, 0x93DF6E50, 0x93E36E51, 0x93E76E52, 0x93EB6E53,
0x93EF6E54, 0x93F36E55, 0x93F76E56, 0x93FB6E57, 0x93FF6E58, 0x94036E59,
0x94076E5A, 0x940B6E5B, 0x940F6E5C, 0x94136E5D, 0x94176E5E, 0x941B6E5F,
0x941F6EA0, 0x94236EA1, 0x94276EA2, 0x942B6EA3, 0x942F6EA4, 0x94336EA5,
0x94376EA6, 0x943B6EA7, 0x943F6EA8, 0x94436EA9, 0x94476EAA, 0x944B6EAB,
0x944F6EAC, 0x94536EAD, 0x94576EAE, 0x945B6EAF, 0x945F6EB0, 0x94636EB1,
0x94676EB2, 0x946B6EB3, 0x946F6EB4, 0x94736EB5, 0x94776EB6, 0x947B6EB7,
0x947F6EB8, 0x9483E900, 0x9487E901, 0x948BE902, 0x948FE903, 0x9493E904,
0x9497E905, 0x949BE906, 0x949FE907, 0x94A3E908, 0x94A7E909, 0x94ABE90A,
0x94AFE90B, 0x94B3E90C, 0x94B7E90D, 0x94BBE90E, 0x94BFE90F, 0x94C3E910,
0x94C7E911, 0x94CBE912, 0x94CFE913, 0x94D3E914, 0x94D7E915, 0x94DBE916,
0x94DFE917, 0x94E3E918, 0x94E7E919, 0x94EBE91A, 0x94EFE91B, 0x94F3E91C,
0x94F7E91D, 0x94FBE91E, 0x94FFE91F, 0x9503E920, 0x9507E921
};

static const unsigned char cf_repl[5274] = {
static const unsigned char cf_repl[5386] = {
0xCE, 0xBC, 0xC3, 0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0xA3, 0xC3, 0xA4,
0xC3, 0xA5, 0xC3, 0xA6, 0xC3, 0xA7, 0xC3, 0xA8, 0xC3, 0xA9, 0xC3, 0xAA,
0xC3, 0xAB, 0xC3, 0xAC, 0xC3, 0xAD, 0xC3, 0xAE, 0xC3, 0xAF, 0xC3, 0xB0,
Expand Down Expand Up @@ -571,7 +575,8 @@ static const unsigned char cf_repl[5274] = {
0xBD, 0x00, 0xEA, 0x9E, 0xBF, 0x00, 0xEA, 0x9F, 0x81, 0x00, 0xEA, 0x9F,
0x83, 0x00, 0xEA, 0x9E, 0x94, 0x00, 0xCA, 0x82, 0xE1, 0xB6, 0x8E, 0x00,
0xEA, 0x9F, 0x88, 0x00, 0xEA, 0x9F, 0x8A, 0x00, 0xC9, 0xA4, 0xEA, 0x9F,
0x8D, 0x00, 0xEA, 0x9F, 0x91, 0x00, 0xEA, 0x9F, 0x97, 0x00, 0xEA, 0x9F,
0x8D, 0x00, 0xEA, 0x9F, 0x8F, 0x00, 0xEA, 0x9F, 0x91, 0x00, 0xEA, 0x9F,
0x93, 0x00, 0xEA, 0x9F, 0x95, 0x00, 0xEA, 0x9F, 0x97, 0x00, 0xEA, 0x9F,
0x99, 0x00, 0xEA, 0x9F, 0x9B, 0x00, 0xC6, 0x9B, 0xEA, 0x9F, 0xB6, 0x00,
0xE1, 0x8E, 0xA0, 0x00, 0xE1, 0x8E, 0xA1, 0x00, 0xE1, 0x8E, 0xA2, 0x00,
0xE1, 0x8E, 0xA3, 0x00, 0xE1, 0x8E, 0xA4, 0x00, 0xE1, 0x8E, 0xA5, 0x00,
Expand Down Expand Up @@ -694,16 +699,24 @@ static const unsigned char cf_repl[5274] = {
0xB9, 0xB6, 0xF0, 0x96, 0xB9, 0xB7, 0xF0, 0x96, 0xB9, 0xB8, 0xF0, 0x96,
0xB9, 0xB9, 0xF0, 0x96, 0xB9, 0xBA, 0xF0, 0x96, 0xB9, 0xBB, 0xF0, 0x96,
0xB9, 0xBC, 0xF0, 0x96, 0xB9, 0xBD, 0xF0, 0x96, 0xB9, 0xBE, 0xF0, 0x96,
0xB9, 0xBF, 0xF0, 0x9E, 0xA4, 0xA2, 0xF0, 0x9E, 0xA4, 0xA3, 0xF0, 0x9E,
0xA4, 0xA4, 0xF0, 0x9E, 0xA4, 0xA5, 0xF0, 0x9E, 0xA4, 0xA6, 0xF0, 0x9E,
0xA4, 0xA7, 0xF0, 0x9E, 0xA4, 0xA8, 0xF0, 0x9E, 0xA4, 0xA9, 0xF0, 0x9E,
0xA4, 0xAA, 0xF0, 0x9E, 0xA4, 0xAB, 0xF0, 0x9E, 0xA4, 0xAC, 0xF0, 0x9E,
0xA4, 0xAD, 0xF0, 0x9E, 0xA4, 0xAE, 0xF0, 0x9E, 0xA4, 0xAF, 0xF0, 0x9E,
0xA4, 0xB0, 0xF0, 0x9E, 0xA4, 0xB1, 0xF0, 0x9E, 0xA4, 0xB2, 0xF0, 0x9E,
0xA4, 0xB3, 0xF0, 0x9E, 0xA4, 0xB4, 0xF0, 0x9E, 0xA4, 0xB5, 0xF0, 0x9E,
0xA4, 0xB6, 0xF0, 0x9E, 0xA4, 0xB7, 0xF0, 0x9E, 0xA4, 0xB8, 0xF0, 0x9E,
0xA4, 0xB9, 0xF0, 0x9E, 0xA4, 0xBA, 0xF0, 0x9E, 0xA4, 0xBB, 0xF0, 0x9E,
0xA4, 0xBC, 0xF0, 0x9E, 0xA4, 0xBD, 0xF0, 0x9E, 0xA4, 0xBE, 0xF0, 0x9E,
0xA4, 0xBF, 0xF0, 0x9E, 0xA5, 0x80, 0xF0, 0x9E, 0xA5, 0x81, 0xF0, 0x9E,
0xA5, 0x82, 0xF0, 0x9E, 0xA5, 0x83
0xB9, 0xBF, 0xF0, 0x96, 0xBA, 0xBB, 0xF0, 0x96, 0xBA, 0xBC, 0xF0, 0x96,
0xBA, 0xBD, 0xF0, 0x96, 0xBA, 0xBE, 0xF0, 0x96, 0xBA, 0xBF, 0xF0, 0x96,
0xBB, 0x80, 0xF0, 0x96, 0xBB, 0x81, 0xF0, 0x96, 0xBB, 0x82, 0xF0, 0x96,
0xBB, 0x83, 0xF0, 0x96, 0xBB, 0x84, 0xF0, 0x96, 0xBB, 0x85, 0xF0, 0x96,
0xBB, 0x86, 0xF0, 0x96, 0xBB, 0x87, 0xF0, 0x96, 0xBB, 0x88, 0xF0, 0x96,
0xBB, 0x89, 0xF0, 0x96, 0xBB, 0x8A, 0xF0, 0x96, 0xBB, 0x8B, 0xF0, 0x96,
0xBB, 0x8C, 0xF0, 0x96, 0xBB, 0x8D, 0xF0, 0x96, 0xBB, 0x8E, 0xF0, 0x96,
0xBB, 0x8F, 0xF0, 0x96, 0xBB, 0x90, 0xF0, 0x96, 0xBB, 0x91, 0xF0, 0x96,
0xBB, 0x92, 0xF0, 0x96, 0xBB, 0x93, 0xF0, 0x9E, 0xA4, 0xA2, 0xF0, 0x9E,
0xA4, 0xA3, 0xF0, 0x9E, 0xA4, 0xA4, 0xF0, 0x9E, 0xA4, 0xA5, 0xF0, 0x9E,
0xA4, 0xA6, 0xF0, 0x9E, 0xA4, 0xA7, 0xF0, 0x9E, 0xA4, 0xA8, 0xF0, 0x9E,
0xA4, 0xA9, 0xF0, 0x9E, 0xA4, 0xAA, 0xF0, 0x9E, 0xA4, 0xAB, 0xF0, 0x9E,
0xA4, 0xAC, 0xF0, 0x9E, 0xA4, 0xAD, 0xF0, 0x9E, 0xA4, 0xAE, 0xF0, 0x9E,
0xA4, 0xAF, 0xF0, 0x9E, 0xA4, 0xB0, 0xF0, 0x9E, 0xA4, 0xB1, 0xF0, 0x9E,
0xA4, 0xB2, 0xF0, 0x9E, 0xA4, 0xB3, 0xF0, 0x9E, 0xA4, 0xB4, 0xF0, 0x9E,
0xA4, 0xB5, 0xF0, 0x9E, 0xA4, 0xB6, 0xF0, 0x9E, 0xA4, 0xB7, 0xF0, 0x9E,
0xA4, 0xB8, 0xF0, 0x9E, 0xA4, 0xB9, 0xF0, 0x9E, 0xA4, 0xBA, 0xF0, 0x9E,
0xA4, 0xBB, 0xF0, 0x9E, 0xA4, 0xBC, 0xF0, 0x9E, 0xA4, 0xBD, 0xF0, 0x9E,
0xA4, 0xBE, 0xF0, 0x9E, 0xA4, 0xBF, 0xF0, 0x9E, 0xA5, 0x80, 0xF0, 0x9E,
0xA5, 0x81, 0xF0, 0x9E, 0xA5, 0x82, 0xF0, 0x9E, 0xA5, 0x83
};