aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-04-20 00:24:03 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-04-20 00:24:03 +0200
commita541a957e7ea83d31b411fb82e86870c3bf82652 (patch)
tree21bc6216298dbe19f192630b300a30cf176415c8 /lib/unicode/prop
parentdb816ef1e678e20d91d1b5308b2d7a182a3f114c (diff)
Add uprop_get_nf{,k}{c,d}_qc()
Diffstat (limited to 'lib/unicode/prop')
-rw-r--r--lib/unicode/prop/uprop_get_nfc_qc.c137
-rw-r--r--lib/unicode/prop/uprop_get_nfd_qc.c281
-rw-r--r--lib/unicode/prop/uprop_get_nfkc_qc.c347
-rw-r--r--lib/unicode/prop/uprop_get_nfkd_qc.c439
4 files changed, 1204 insertions, 0 deletions
diff --git a/lib/unicode/prop/uprop_get_nfc_qc.c b/lib/unicode/prop/uprop_get_nfc_qc.c
new file mode 100644
index 0000000..318140e
--- /dev/null
+++ b/lib/unicode/prop/uprop_get_nfc_qc.c
@@ -0,0 +1,137 @@
+/* This file is autogenerated by gen/prop/nfXX_qc; DO NOT EDIT. */
+
+/* The macros.h include may be unused */
+
+#include "_bsearch.h"
+#include "macros.h"
+#include "rune.h"
+#include "unicode/prop.h"
+
+static const struct {
+ rune lo, hi;
+ enum uprop_nfc_qc val;
+} lookup[] = {
+ {RUNE_C(0x000300), RUNE_C(0x000304), NFC_QC_M},
+ {RUNE_C(0x000306), RUNE_C(0x00030C), NFC_QC_M},
+ {RUNE_C(0x00030F), RUNE_C(0x00030F), NFC_QC_M},
+ {RUNE_C(0x000311), RUNE_C(0x000311), NFC_QC_M},
+ {RUNE_C(0x000313), RUNE_C(0x000314), NFC_QC_M},
+ {RUNE_C(0x00031B), RUNE_C(0x00031B), NFC_QC_M},
+ {RUNE_C(0x000323), RUNE_C(0x000328), NFC_QC_M},
+ {RUNE_C(0x00032D), RUNE_C(0x00032E), NFC_QC_M},
+ {RUNE_C(0x000330), RUNE_C(0x000331), NFC_QC_M},
+ {RUNE_C(0x000338), RUNE_C(0x000338), NFC_QC_M},
+ {RUNE_C(0x000340), RUNE_C(0x000341), NFC_QC_N},
+ {RUNE_C(0x000342), RUNE_C(0x000342), NFC_QC_M},
+ {RUNE_C(0x000343), RUNE_C(0x000344), NFC_QC_N},
+ {RUNE_C(0x000345), RUNE_C(0x000345), NFC_QC_M},
+ {RUNE_C(0x000374), RUNE_C(0x000374), NFC_QC_N},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), NFC_QC_N},
+ {RUNE_C(0x000387), RUNE_C(0x000387), NFC_QC_N},
+ {RUNE_C(0x000653), RUNE_C(0x000655), NFC_QC_M},
+ {RUNE_C(0x00093C), RUNE_C(0x00093C), NFC_QC_M},
+ {RUNE_C(0x000958), RUNE_C(0x00095F), NFC_QC_N},
+ {RUNE_C(0x0009BE), RUNE_C(0x0009BE), NFC_QC_M},
+ {RUNE_C(0x0009D7), RUNE_C(0x0009D7), NFC_QC_M},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), NFC_QC_N},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009DF), NFC_QC_N},
+ {RUNE_C(0x000A33), RUNE_C(0x000A33), NFC_QC_N},
+ {RUNE_C(0x000A36), RUNE_C(0x000A36), NFC_QC_N},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5B), NFC_QC_N},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), NFC_QC_N},
+ {RUNE_C(0x000B3E), RUNE_C(0x000B3E), NFC_QC_M},
+ {RUNE_C(0x000B56), RUNE_C(0x000B57), NFC_QC_M},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), NFC_QC_N},
+ {RUNE_C(0x000BBE), RUNE_C(0x000BBE), NFC_QC_M},
+ {RUNE_C(0x000BD7), RUNE_C(0x000BD7), NFC_QC_M},
+ {RUNE_C(0x000C56), RUNE_C(0x000C56), NFC_QC_M},
+ {RUNE_C(0x000CC2), RUNE_C(0x000CC2), NFC_QC_M},
+ {RUNE_C(0x000CD5), RUNE_C(0x000CD6), NFC_QC_M},
+ {RUNE_C(0x000D3E), RUNE_C(0x000D3E), NFC_QC_M},
+ {RUNE_C(0x000D57), RUNE_C(0x000D57), NFC_QC_M},
+ {RUNE_C(0x000DCA), RUNE_C(0x000DCA), NFC_QC_M},
+ {RUNE_C(0x000DCF), RUNE_C(0x000DCF), NFC_QC_M},
+ {RUNE_C(0x000DDF), RUNE_C(0x000DDF), NFC_QC_M},
+ {RUNE_C(0x000F43), RUNE_C(0x000F43), NFC_QC_N},
+ {RUNE_C(0x000F4D), RUNE_C(0x000F4D), NFC_QC_N},
+ {RUNE_C(0x000F52), RUNE_C(0x000F52), NFC_QC_N},
+ {RUNE_C(0x000F57), RUNE_C(0x000F57), NFC_QC_N},
+ {RUNE_C(0x000F5C), RUNE_C(0x000F5C), NFC_QC_N},
+ {RUNE_C(0x000F69), RUNE_C(0x000F69), NFC_QC_N},
+ {RUNE_C(0x000F73), RUNE_C(0x000F73), NFC_QC_N},
+ {RUNE_C(0x000F75), RUNE_C(0x000F76), NFC_QC_N},
+ {RUNE_C(0x000F78), RUNE_C(0x000F78), NFC_QC_N},
+ {RUNE_C(0x000F81), RUNE_C(0x000F81), NFC_QC_N},
+ {RUNE_C(0x000F93), RUNE_C(0x000F93), NFC_QC_N},
+ {RUNE_C(0x000F9D), RUNE_C(0x000F9D), NFC_QC_N},
+ {RUNE_C(0x000FA2), RUNE_C(0x000FA2), NFC_QC_N},
+ {RUNE_C(0x000FA7), RUNE_C(0x000FA7), NFC_QC_N},
+ {RUNE_C(0x000FAC), RUNE_C(0x000FAC), NFC_QC_N},
+ {RUNE_C(0x000FB9), RUNE_C(0x000FB9), NFC_QC_N},
+ {RUNE_C(0x00102E), RUNE_C(0x00102E), NFC_QC_M},
+ {RUNE_C(0x001161), RUNE_C(0x001175), NFC_QC_M},
+ {RUNE_C(0x0011A8), RUNE_C(0x0011C2), NFC_QC_M},
+ {RUNE_C(0x001B35), RUNE_C(0x001B35), NFC_QC_M},
+ {RUNE_C(0x001F71), RUNE_C(0x001F71), NFC_QC_N},
+ {RUNE_C(0x001F73), RUNE_C(0x001F73), NFC_QC_N},
+ {RUNE_C(0x001F75), RUNE_C(0x001F75), NFC_QC_N},
+ {RUNE_C(0x001F77), RUNE_C(0x001F77), NFC_QC_N},
+ {RUNE_C(0x001F79), RUNE_C(0x001F79), NFC_QC_N},
+ {RUNE_C(0x001F7B), RUNE_C(0x001F7B), NFC_QC_N},
+ {RUNE_C(0x001F7D), RUNE_C(0x001F7D), NFC_QC_N},
+ {RUNE_C(0x001FBB), RUNE_C(0x001FBB), NFC_QC_N},
+ {RUNE_C(0x001FBE), RUNE_C(0x001FBE), NFC_QC_N},
+ {RUNE_C(0x001FC9), RUNE_C(0x001FC9), NFC_QC_N},
+ {RUNE_C(0x001FCB), RUNE_C(0x001FCB), NFC_QC_N},
+ {RUNE_C(0x001FD3), RUNE_C(0x001FD3), NFC_QC_N},
+ {RUNE_C(0x001FDB), RUNE_C(0x001FDB), NFC_QC_N},
+ {RUNE_C(0x001FE3), RUNE_C(0x001FE3), NFC_QC_N},
+ {RUNE_C(0x001FEB), RUNE_C(0x001FEB), NFC_QC_N},
+ {RUNE_C(0x001FEE), RUNE_C(0x001FEF), NFC_QC_N},
+ {RUNE_C(0x001FF9), RUNE_C(0x001FF9), NFC_QC_N},
+ {RUNE_C(0x001FFB), RUNE_C(0x001FFB), NFC_QC_N},
+ {RUNE_C(0x001FFD), RUNE_C(0x001FFD), NFC_QC_N},
+ {RUNE_C(0x002000), RUNE_C(0x002001), NFC_QC_N},
+ {RUNE_C(0x002126), RUNE_C(0x002126), NFC_QC_N},
+ {RUNE_C(0x00212A), RUNE_C(0x00212B), NFC_QC_N},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), NFC_QC_N},
+ {RUNE_C(0x002ADC), RUNE_C(0x002ADC), NFC_QC_N},
+ {RUNE_C(0x003099), RUNE_C(0x00309A), NFC_QC_M},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA0D), NFC_QC_N},
+ {RUNE_C(0x00FA10), RUNE_C(0x00FA10), NFC_QC_N},
+ {RUNE_C(0x00FA12), RUNE_C(0x00FA12), NFC_QC_N},
+ {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), NFC_QC_N},
+ {RUNE_C(0x00FA20), RUNE_C(0x00FA20), NFC_QC_N},
+ {RUNE_C(0x00FA22), RUNE_C(0x00FA22), NFC_QC_N},
+ {RUNE_C(0x00FA25), RUNE_C(0x00FA26), NFC_QC_N},
+ {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), NFC_QC_N},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), NFC_QC_N},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), NFC_QC_N},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB1F), NFC_QC_N},
+ {RUNE_C(0x00FB2A), RUNE_C(0x00FB36), NFC_QC_N},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), NFC_QC_N},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), NFC_QC_N},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), NFC_QC_N},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), NFC_QC_N},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FB4E), NFC_QC_N},
+ {RUNE_C(0x0110BA), RUNE_C(0x0110BA), NFC_QC_M},
+ {RUNE_C(0x011127), RUNE_C(0x011127), NFC_QC_M},
+ {RUNE_C(0x01133E), RUNE_C(0x01133E), NFC_QC_M},
+ {RUNE_C(0x011357), RUNE_C(0x011357), NFC_QC_M},
+ {RUNE_C(0x0114B0), RUNE_C(0x0114B0), NFC_QC_M},
+ {RUNE_C(0x0114BA), RUNE_C(0x0114BA), NFC_QC_M},
+ {RUNE_C(0x0114BD), RUNE_C(0x0114BD), NFC_QC_M},
+ {RUNE_C(0x0115AF), RUNE_C(0x0115AF), NFC_QC_M},
+ {RUNE_C(0x011930), RUNE_C(0x011930), NFC_QC_M},
+ {RUNE_C(0x01D15E), RUNE_C(0x01D164), NFC_QC_N},
+ {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), NFC_QC_N},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), NFC_QC_N},
+};
+
+_MLIB_DEFINE_BSEARCH(enum uprop_nfc_qc, lookup, NFC_QC_Y)
+
+enum uprop_nfc_qc
+uprop_get_nfc_qc(rune ch)
+{
+ return ch < lookup[0].lo ? NFC_QC_Y : mlib_lookup(ch);
+}
diff --git a/lib/unicode/prop/uprop_get_nfd_qc.c b/lib/unicode/prop/uprop_get_nfd_qc.c
new file mode 100644
index 0000000..d2f5e1d
--- /dev/null
+++ b/lib/unicode/prop/uprop_get_nfd_qc.c
@@ -0,0 +1,281 @@
+/* This file is autogenerated by gen/prop/nfXX_qc; DO NOT EDIT. */
+
+/* The macros.h include may be unused */
+
+#include "_bsearch.h"
+#include "macros.h"
+#include "rune.h"
+#include "unicode/prop.h"
+
+static constexpr enum uprop_nfd_qc lookup_lat1[] = {
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y, NFD_QC_N,
+ NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N,
+ NFD_QC_Y, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y, NFD_QC_Y,
+ NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y, NFD_QC_N,
+ NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N,
+ NFD_QC_Y, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y,
+ NFD_QC_Y, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_N, NFD_QC_Y, NFD_QC_N,
+};
+
+static const struct {
+ rune lo, hi;
+ enum uprop_nfd_qc val;
+} lookup[] = {
+ {RUNE_C(0x000100), RUNE_C(0x00010F), NFD_QC_N},
+ {RUNE_C(0x000112), RUNE_C(0x000125), NFD_QC_N},
+ {RUNE_C(0x000128), RUNE_C(0x000130), NFD_QC_N},
+ {RUNE_C(0x000134), RUNE_C(0x000137), NFD_QC_N},
+ {RUNE_C(0x000139), RUNE_C(0x00013E), NFD_QC_N},
+ {RUNE_C(0x000143), RUNE_C(0x000148), NFD_QC_N},
+ {RUNE_C(0x00014C), RUNE_C(0x000151), NFD_QC_N},
+ {RUNE_C(0x000154), RUNE_C(0x000165), NFD_QC_N},
+ {RUNE_C(0x000168), RUNE_C(0x00017E), NFD_QC_N},
+ {RUNE_C(0x0001A0), RUNE_C(0x0001A1), NFD_QC_N},
+ {RUNE_C(0x0001AF), RUNE_C(0x0001B0), NFD_QC_N},
+ {RUNE_C(0x0001CD), RUNE_C(0x0001DC), NFD_QC_N},
+ {RUNE_C(0x0001DE), RUNE_C(0x0001E3), NFD_QC_N},
+ {RUNE_C(0x0001E6), RUNE_C(0x0001F0), NFD_QC_N},
+ {RUNE_C(0x0001F4), RUNE_C(0x0001F5), NFD_QC_N},
+ {RUNE_C(0x0001F8), RUNE_C(0x00021B), NFD_QC_N},
+ {RUNE_C(0x00021E), RUNE_C(0x00021F), NFD_QC_N},
+ {RUNE_C(0x000226), RUNE_C(0x000233), NFD_QC_N},
+ {RUNE_C(0x000340), RUNE_C(0x000341), NFD_QC_N},
+ {RUNE_C(0x000343), RUNE_C(0x000344), NFD_QC_N},
+ {RUNE_C(0x000374), RUNE_C(0x000374), NFD_QC_N},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), NFD_QC_N},
+ {RUNE_C(0x000385), RUNE_C(0x00038A), NFD_QC_N},
+ {RUNE_C(0x00038C), RUNE_C(0x00038C), NFD_QC_N},
+ {RUNE_C(0x00038E), RUNE_C(0x000390), NFD_QC_N},
+ {RUNE_C(0x0003AA), RUNE_C(0x0003B0), NFD_QC_N},
+ {RUNE_C(0x0003CA), RUNE_C(0x0003CE), NFD_QC_N},
+ {RUNE_C(0x0003D3), RUNE_C(0x0003D4), NFD_QC_N},
+ {RUNE_C(0x000400), RUNE_C(0x000401), NFD_QC_N},
+ {RUNE_C(0x000403), RUNE_C(0x000403), NFD_QC_N},
+ {RUNE_C(0x000407), RUNE_C(0x000407), NFD_QC_N},
+ {RUNE_C(0x00040C), RUNE_C(0x00040E), NFD_QC_N},
+ {RUNE_C(0x000419), RUNE_C(0x000419), NFD_QC_N},
+ {RUNE_C(0x000439), RUNE_C(0x000439), NFD_QC_N},
+ {RUNE_C(0x000450), RUNE_C(0x000451), NFD_QC_N},
+ {RUNE_C(0x000453), RUNE_C(0x000453), NFD_QC_N},
+ {RUNE_C(0x000457), RUNE_C(0x000457), NFD_QC_N},
+ {RUNE_C(0x00045C), RUNE_C(0x00045E), NFD_QC_N},
+ {RUNE_C(0x000476), RUNE_C(0x000477), NFD_QC_N},
+ {RUNE_C(0x0004C1), RUNE_C(0x0004C2), NFD_QC_N},
+ {RUNE_C(0x0004D0), RUNE_C(0x0004D3), NFD_QC_N},
+ {RUNE_C(0x0004D6), RUNE_C(0x0004D7), NFD_QC_N},
+ {RUNE_C(0x0004DA), RUNE_C(0x0004DF), NFD_QC_N},
+ {RUNE_C(0x0004E2), RUNE_C(0x0004E7), NFD_QC_N},
+ {RUNE_C(0x0004EA), RUNE_C(0x0004F5), NFD_QC_N},
+ {RUNE_C(0x0004F8), RUNE_C(0x0004F9), NFD_QC_N},
+ {RUNE_C(0x000622), RUNE_C(0x000626), NFD_QC_N},
+ {RUNE_C(0x0006C0), RUNE_C(0x0006C0), NFD_QC_N},
+ {RUNE_C(0x0006C2), RUNE_C(0x0006C2), NFD_QC_N},
+ {RUNE_C(0x0006D3), RUNE_C(0x0006D3), NFD_QC_N},
+ {RUNE_C(0x000929), RUNE_C(0x000929), NFD_QC_N},
+ {RUNE_C(0x000931), RUNE_C(0x000931), NFD_QC_N},
+ {RUNE_C(0x000934), RUNE_C(0x000934), NFD_QC_N},
+ {RUNE_C(0x000958), RUNE_C(0x00095F), NFD_QC_N},
+ {RUNE_C(0x0009CB), RUNE_C(0x0009CC), NFD_QC_N},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), NFD_QC_N},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009DF), NFD_QC_N},
+ {RUNE_C(0x000A33), RUNE_C(0x000A33), NFD_QC_N},
+ {RUNE_C(0x000A36), RUNE_C(0x000A36), NFD_QC_N},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5B), NFD_QC_N},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), NFD_QC_N},
+ {RUNE_C(0x000B48), RUNE_C(0x000B48), NFD_QC_N},
+ {RUNE_C(0x000B4B), RUNE_C(0x000B4C), NFD_QC_N},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), NFD_QC_N},
+ {RUNE_C(0x000B94), RUNE_C(0x000B94), NFD_QC_N},
+ {RUNE_C(0x000BCA), RUNE_C(0x000BCC), NFD_QC_N},
+ {RUNE_C(0x000C48), RUNE_C(0x000C48), NFD_QC_N},
+ {RUNE_C(0x000CC0), RUNE_C(0x000CC0), NFD_QC_N},
+ {RUNE_C(0x000CC7), RUNE_C(0x000CC8), NFD_QC_N},
+ {RUNE_C(0x000CCA), RUNE_C(0x000CCB), NFD_QC_N},
+ {RUNE_C(0x000D4A), RUNE_C(0x000D4C), NFD_QC_N},
+ {RUNE_C(0x000DDA), RUNE_C(0x000DDA), NFD_QC_N},
+ {RUNE_C(0x000DDC), RUNE_C(0x000DDE), NFD_QC_N},
+ {RUNE_C(0x000F43), RUNE_C(0x000F43), NFD_QC_N},
+ {RUNE_C(0x000F4D), RUNE_C(0x000F4D), NFD_QC_N},
+ {RUNE_C(0x000F52), RUNE_C(0x000F52), NFD_QC_N},
+ {RUNE_C(0x000F57), RUNE_C(0x000F57), NFD_QC_N},
+ {RUNE_C(0x000F5C), RUNE_C(0x000F5C), NFD_QC_N},
+ {RUNE_C(0x000F69), RUNE_C(0x000F69), NFD_QC_N},
+ {RUNE_C(0x000F73), RUNE_C(0x000F73), NFD_QC_N},
+ {RUNE_C(0x000F75), RUNE_C(0x000F76), NFD_QC_N},
+ {RUNE_C(0x000F78), RUNE_C(0x000F78), NFD_QC_N},
+ {RUNE_C(0x000F81), RUNE_C(0x000F81), NFD_QC_N},
+ {RUNE_C(0x000F93), RUNE_C(0x000F93), NFD_QC_N},
+ {RUNE_C(0x000F9D), RUNE_C(0x000F9D), NFD_QC_N},
+ {RUNE_C(0x000FA2), RUNE_C(0x000FA2), NFD_QC_N},
+ {RUNE_C(0x000FA7), RUNE_C(0x000FA7), NFD_QC_N},
+ {RUNE_C(0x000FAC), RUNE_C(0x000FAC), NFD_QC_N},
+ {RUNE_C(0x000FB9), RUNE_C(0x000FB9), NFD_QC_N},
+ {RUNE_C(0x001026), RUNE_C(0x001026), NFD_QC_N},
+ {RUNE_C(0x001B06), RUNE_C(0x001B06), NFD_QC_N},
+ {RUNE_C(0x001B08), RUNE_C(0x001B08), NFD_QC_N},
+ {RUNE_C(0x001B0A), RUNE_C(0x001B0A), NFD_QC_N},
+ {RUNE_C(0x001B0C), RUNE_C(0x001B0C), NFD_QC_N},
+ {RUNE_C(0x001B0E), RUNE_C(0x001B0E), NFD_QC_N},
+ {RUNE_C(0x001B12), RUNE_C(0x001B12), NFD_QC_N},
+ {RUNE_C(0x001B3B), RUNE_C(0x001B3B), NFD_QC_N},
+ {RUNE_C(0x001B3D), RUNE_C(0x001B3D), NFD_QC_N},
+ {RUNE_C(0x001B40), RUNE_C(0x001B41), NFD_QC_N},
+ {RUNE_C(0x001B43), RUNE_C(0x001B43), NFD_QC_N},
+ {RUNE_C(0x001E00), RUNE_C(0x001E99), NFD_QC_N},
+ {RUNE_C(0x001E9B), RUNE_C(0x001E9B), NFD_QC_N},
+ {RUNE_C(0x001EA0), RUNE_C(0x001EF9), NFD_QC_N},
+ {RUNE_C(0x001F00), RUNE_C(0x001F15), NFD_QC_N},
+ {RUNE_C(0x001F18), RUNE_C(0x001F1D), NFD_QC_N},
+ {RUNE_C(0x001F20), RUNE_C(0x001F45), NFD_QC_N},
+ {RUNE_C(0x001F48), RUNE_C(0x001F4D), NFD_QC_N},
+ {RUNE_C(0x001F50), RUNE_C(0x001F57), NFD_QC_N},
+ {RUNE_C(0x001F59), RUNE_C(0x001F59), NFD_QC_N},
+ {RUNE_C(0x001F5B), RUNE_C(0x001F5B), NFD_QC_N},
+ {RUNE_C(0x001F5D), RUNE_C(0x001F5D), NFD_QC_N},
+ {RUNE_C(0x001F5F), RUNE_C(0x001F7D), NFD_QC_N},
+ {RUNE_C(0x001F80), RUNE_C(0x001FB4), NFD_QC_N},
+ {RUNE_C(0x001FB6), RUNE_C(0x001FBC), NFD_QC_N},
+ {RUNE_C(0x001FBE), RUNE_C(0x001FBE), NFD_QC_N},
+ {RUNE_C(0x001FC1), RUNE_C(0x001FC4), NFD_QC_N},
+ {RUNE_C(0x001FC6), RUNE_C(0x001FD3), NFD_QC_N},
+ {RUNE_C(0x001FD6), RUNE_C(0x001FDB), NFD_QC_N},
+ {RUNE_C(0x001FDD), RUNE_C(0x001FEF), NFD_QC_N},
+ {RUNE_C(0x001FF2), RUNE_C(0x001FF4), NFD_QC_N},
+ {RUNE_C(0x001FF6), RUNE_C(0x001FFD), NFD_QC_N},
+ {RUNE_C(0x002000), RUNE_C(0x002001), NFD_QC_N},
+ {RUNE_C(0x002126), RUNE_C(0x002126), NFD_QC_N},
+ {RUNE_C(0x00212A), RUNE_C(0x00212B), NFD_QC_N},
+ {RUNE_C(0x00219A), RUNE_C(0x00219B), NFD_QC_N},
+ {RUNE_C(0x0021AE), RUNE_C(0x0021AE), NFD_QC_N},
+ {RUNE_C(0x0021CD), RUNE_C(0x0021CF), NFD_QC_N},
+ {RUNE_C(0x002204), RUNE_C(0x002204), NFD_QC_N},
+ {RUNE_C(0x002209), RUNE_C(0x002209), NFD_QC_N},
+ {RUNE_C(0x00220C), RUNE_C(0x00220C), NFD_QC_N},
+ {RUNE_C(0x002224), RUNE_C(0x002224), NFD_QC_N},
+ {RUNE_C(0x002226), RUNE_C(0x002226), NFD_QC_N},
+ {RUNE_C(0x002241), RUNE_C(0x002241), NFD_QC_N},
+ {RUNE_C(0x002244), RUNE_C(0x002244), NFD_QC_N},
+ {RUNE_C(0x002247), RUNE_C(0x002247), NFD_QC_N},
+ {RUNE_C(0x002249), RUNE_C(0x002249), NFD_QC_N},
+ {RUNE_C(0x002260), RUNE_C(0x002260), NFD_QC_N},
+ {RUNE_C(0x002262), RUNE_C(0x002262), NFD_QC_N},
+ {RUNE_C(0x00226D), RUNE_C(0x002271), NFD_QC_N},
+ {RUNE_C(0x002274), RUNE_C(0x002275), NFD_QC_N},
+ {RUNE_C(0x002278), RUNE_C(0x002279), NFD_QC_N},
+ {RUNE_C(0x002280), RUNE_C(0x002281), NFD_QC_N},
+ {RUNE_C(0x002284), RUNE_C(0x002285), NFD_QC_N},
+ {RUNE_C(0x002288), RUNE_C(0x002289), NFD_QC_N},
+ {RUNE_C(0x0022AC), RUNE_C(0x0022AF), NFD_QC_N},
+ {RUNE_C(0x0022E0), RUNE_C(0x0022E3), NFD_QC_N},
+ {RUNE_C(0x0022EA), RUNE_C(0x0022ED), NFD_QC_N},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), NFD_QC_N},
+ {RUNE_C(0x002ADC), RUNE_C(0x002ADC), NFD_QC_N},
+ {RUNE_C(0x00304C), RUNE_C(0x00304C), NFD_QC_N},
+ {RUNE_C(0x00304E), RUNE_C(0x00304E), NFD_QC_N},
+ {RUNE_C(0x003050), RUNE_C(0x003050), NFD_QC_N},
+ {RUNE_C(0x003052), RUNE_C(0x003052), NFD_QC_N},
+ {RUNE_C(0x003054), RUNE_C(0x003054), NFD_QC_N},
+ {RUNE_C(0x003056), RUNE_C(0x003056), NFD_QC_N},
+ {RUNE_C(0x003058), RUNE_C(0x003058), NFD_QC_N},
+ {RUNE_C(0x00305A), RUNE_C(0x00305A), NFD_QC_N},
+ {RUNE_C(0x00305C), RUNE_C(0x00305C), NFD_QC_N},
+ {RUNE_C(0x00305E), RUNE_C(0x00305E), NFD_QC_N},
+ {RUNE_C(0x003060), RUNE_C(0x003060), NFD_QC_N},
+ {RUNE_C(0x003062), RUNE_C(0x003062), NFD_QC_N},
+ {RUNE_C(0x003065), RUNE_C(0x003065), NFD_QC_N},
+ {RUNE_C(0x003067), RUNE_C(0x003067), NFD_QC_N},
+ {RUNE_C(0x003069), RUNE_C(0x003069), NFD_QC_N},
+ {RUNE_C(0x003070), RUNE_C(0x003071), NFD_QC_N},
+ {RUNE_C(0x003073), RUNE_C(0x003074), NFD_QC_N},
+ {RUNE_C(0x003076), RUNE_C(0x003077), NFD_QC_N},
+ {RUNE_C(0x003079), RUNE_C(0x00307A), NFD_QC_N},
+ {RUNE_C(0x00307C), RUNE_C(0x00307D), NFD_QC_N},
+ {RUNE_C(0x003094), RUNE_C(0x003094), NFD_QC_N},
+ {RUNE_C(0x00309E), RUNE_C(0x00309E), NFD_QC_N},
+ {RUNE_C(0x0030AC), RUNE_C(0x0030AC), NFD_QC_N},
+ {RUNE_C(0x0030AE), RUNE_C(0x0030AE), NFD_QC_N},
+ {RUNE_C(0x0030B0), RUNE_C(0x0030B0), NFD_QC_N},
+ {RUNE_C(0x0030B2), RUNE_C(0x0030B2), NFD_QC_N},
+ {RUNE_C(0x0030B4), RUNE_C(0x0030B4), NFD_QC_N},
+ {RUNE_C(0x0030B6), RUNE_C(0x0030B6), NFD_QC_N},
+ {RUNE_C(0x0030B8), RUNE_C(0x0030B8), NFD_QC_N},
+ {RUNE_C(0x0030BA), RUNE_C(0x0030BA), NFD_QC_N},
+ {RUNE_C(0x0030BC), RUNE_C(0x0030BC), NFD_QC_N},
+ {RUNE_C(0x0030BE), RUNE_C(0x0030BE), NFD_QC_N},
+ {RUNE_C(0x0030C0), RUNE_C(0x0030C0), NFD_QC_N},
+ {RUNE_C(0x0030C2), RUNE_C(0x0030C2), NFD_QC_N},
+ {RUNE_C(0x0030C5), RUNE_C(0x0030C5), NFD_QC_N},
+ {RUNE_C(0x0030C7), RUNE_C(0x0030C7), NFD_QC_N},
+ {RUNE_C(0x0030C9), RUNE_C(0x0030C9), NFD_QC_N},
+ {RUNE_C(0x0030D0), RUNE_C(0x0030D1), NFD_QC_N},
+ {RUNE_C(0x0030D3), RUNE_C(0x0030D4), NFD_QC_N},
+ {RUNE_C(0x0030D6), RUNE_C(0x0030D7), NFD_QC_N},
+ {RUNE_C(0x0030D9), RUNE_C(0x0030DA), NFD_QC_N},
+ {RUNE_C(0x0030DC), RUNE_C(0x0030DD), NFD_QC_N},
+ {RUNE_C(0x0030F4), RUNE_C(0x0030F4), NFD_QC_N},
+ {RUNE_C(0x0030F7), RUNE_C(0x0030FA), NFD_QC_N},
+ {RUNE_C(0x0030FE), RUNE_C(0x0030FE), NFD_QC_N},
+ {RUNE_C(0x00AC00), RUNE_C(0x00D7A3), NFD_QC_N},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA0D), NFD_QC_N},
+ {RUNE_C(0x00FA10), RUNE_C(0x00FA10), NFD_QC_N},
+ {RUNE_C(0x00FA12), RUNE_C(0x00FA12), NFD_QC_N},
+ {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), NFD_QC_N},
+ {RUNE_C(0x00FA20), RUNE_C(0x00FA20), NFD_QC_N},
+ {RUNE_C(0x00FA22), RUNE_C(0x00FA22), NFD_QC_N},
+ {RUNE_C(0x00FA25), RUNE_C(0x00FA26), NFD_QC_N},
+ {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), NFD_QC_N},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), NFD_QC_N},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), NFD_QC_N},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB1F), NFD_QC_N},
+ {RUNE_C(0x00FB2A), RUNE_C(0x00FB36), NFD_QC_N},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), NFD_QC_N},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), NFD_QC_N},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), NFD_QC_N},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), NFD_QC_N},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FB4E), NFD_QC_N},
+ {RUNE_C(0x01109A), RUNE_C(0x01109A), NFD_QC_N},
+ {RUNE_C(0x01109C), RUNE_C(0x01109C), NFD_QC_N},
+ {RUNE_C(0x0110AB), RUNE_C(0x0110AB), NFD_QC_N},
+ {RUNE_C(0x01112E), RUNE_C(0x01112F), NFD_QC_N},
+ {RUNE_C(0x01134B), RUNE_C(0x01134C), NFD_QC_N},
+ {RUNE_C(0x0114BB), RUNE_C(0x0114BC), NFD_QC_N},
+ {RUNE_C(0x0114BE), RUNE_C(0x0114BE), NFD_QC_N},
+ {RUNE_C(0x0115BA), RUNE_C(0x0115BB), NFD_QC_N},
+ {RUNE_C(0x011938), RUNE_C(0x011938), NFD_QC_N},
+ {RUNE_C(0x01D15E), RUNE_C(0x01D164), NFD_QC_N},
+ {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), NFD_QC_N},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), NFD_QC_N},
+};
+
+_MLIB_DEFINE_BSEARCH(enum uprop_nfd_qc, lookup, NFD_QC_Y)
+
+enum uprop_nfd_qc
+uprop_get_nfd_qc(rune ch)
+{
+ return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);
+}
diff --git a/lib/unicode/prop/uprop_get_nfkc_qc.c b/lib/unicode/prop/uprop_get_nfkc_qc.c
new file mode 100644
index 0000000..18d1d0f
--- /dev/null
+++ b/lib/unicode/prop/uprop_get_nfkc_qc.c
@@ -0,0 +1,347 @@
+/* This file is autogenerated by gen/prop/nfXX_qc; DO NOT EDIT. */
+
+/* The macros.h include may be unused */
+
+#include "_bsearch.h"
+#include "macros.h"
+#include "rune.h"
+#include "unicode/prop.h"
+
+static constexpr enum uprop_nfkc_qc lookup_lat1[] = {
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_N, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_N,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+ NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
+};
+
+static const struct {
+ rune lo, hi;
+ enum uprop_nfkc_qc val;
+} lookup[] = {
+ {RUNE_C(0x000132), RUNE_C(0x000133), NFKC_QC_N},
+ {RUNE_C(0x00013F), RUNE_C(0x000140), NFKC_QC_N},
+ {RUNE_C(0x000149), RUNE_C(0x000149), NFKC_QC_N},
+ {RUNE_C(0x00017F), RUNE_C(0x00017F), NFKC_QC_N},
+ {RUNE_C(0x0001C4), RUNE_C(0x0001CC), NFKC_QC_N},
+ {RUNE_C(0x0001F1), RUNE_C(0x0001F3), NFKC_QC_N},
+ {RUNE_C(0x0002B0), RUNE_C(0x0002B8), NFKC_QC_N},
+ {RUNE_C(0x0002D8), RUNE_C(0x0002DD), NFKC_QC_N},
+ {RUNE_C(0x0002E0), RUNE_C(0x0002E4), NFKC_QC_N},
+ {RUNE_C(0x000300), RUNE_C(0x000304), NFKC_QC_M},
+ {RUNE_C(0x000306), RUNE_C(0x00030C), NFKC_QC_M},
+ {RUNE_C(0x00030F), RUNE_C(0x00030F), NFKC_QC_M},
+ {RUNE_C(0x000311), RUNE_C(0x000311), NFKC_QC_M},
+ {RUNE_C(0x000313), RUNE_C(0x000314), NFKC_QC_M},
+ {RUNE_C(0x00031B), RUNE_C(0x00031B), NFKC_QC_M},
+ {RUNE_C(0x000323), RUNE_C(0x000328), NFKC_QC_M},
+ {RUNE_C(0x00032D), RUNE_C(0x00032E), NFKC_QC_M},
+ {RUNE_C(0x000330), RUNE_C(0x000331), NFKC_QC_M},
+ {RUNE_C(0x000338), RUNE_C(0x000338), NFKC_QC_M},
+ {RUNE_C(0x000340), RUNE_C(0x000341), NFKC_QC_N},
+ {RUNE_C(0x000342), RUNE_C(0x000342), NFKC_QC_M},
+ {RUNE_C(0x000343), RUNE_C(0x000344), NFKC_QC_N},
+ {RUNE_C(0x000345), RUNE_C(0x000345), NFKC_QC_M},
+ {RUNE_C(0x000374), RUNE_C(0x000374), NFKC_QC_N},
+ {RUNE_C(0x00037A), RUNE_C(0x00037A), NFKC_QC_N},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), NFKC_QC_N},
+ {RUNE_C(0x000384), RUNE_C(0x000385), NFKC_QC_N},
+ {RUNE_C(0x000387), RUNE_C(0x000387), NFKC_QC_N},
+ {RUNE_C(0x0003D0), RUNE_C(0x0003D6), NFKC_QC_N},
+ {RUNE_C(0x0003F0), RUNE_C(0x0003F2), NFKC_QC_N},
+ {RUNE_C(0x0003F4), RUNE_C(0x0003F5), NFKC_QC_N},
+ {RUNE_C(0x0003F9), RUNE_C(0x0003F9), NFKC_QC_N},
+ {RUNE_C(0x000587), RUNE_C(0x000587), NFKC_QC_N},
+ {RUNE_C(0x000653), RUNE_C(0x000655), NFKC_QC_M},
+ {RUNE_C(0x000675), RUNE_C(0x000678), NFKC_QC_N},
+ {RUNE_C(0x00093C), RUNE_C(0x00093C), NFKC_QC_M},
+ {RUNE_C(0x000958), RUNE_C(0x00095F), NFKC_QC_N},
+ {RUNE_C(0x0009BE), RUNE_C(0x0009BE), NFKC_QC_M},
+ {RUNE_C(0x0009D7), RUNE_C(0x0009D7), NFKC_QC_M},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), NFKC_QC_N},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009DF), NFKC_QC_N},
+ {RUNE_C(0x000A33), RUNE_C(0x000A33), NFKC_QC_N},
+ {RUNE_C(0x000A36), RUNE_C(0x000A36), NFKC_QC_N},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5B), NFKC_QC_N},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), NFKC_QC_N},
+ {RUNE_C(0x000B3E), RUNE_C(0x000B3E), NFKC_QC_M},
+ {RUNE_C(0x000B56), RUNE_C(0x000B57), NFKC_QC_M},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), NFKC_QC_N},
+ {RUNE_C(0x000BBE), RUNE_C(0x000BBE), NFKC_QC_M},
+ {RUNE_C(0x000BD7), RUNE_C(0x000BD7), NFKC_QC_M},
+ {RUNE_C(0x000C56), RUNE_C(0x000C56), NFKC_QC_M},
+ {RUNE_C(0x000CC2), RUNE_C(0x000CC2), NFKC_QC_M},
+ {RUNE_C(0x000CD5), RUNE_C(0x000CD6), NFKC_QC_M},
+ {RUNE_C(0x000D3E), RUNE_C(0x000D3E), NFKC_QC_M},
+ {RUNE_C(0x000D57), RUNE_C(0x000D57), NFKC_QC_M},
+ {RUNE_C(0x000DCA), RUNE_C(0x000DCA), NFKC_QC_M},
+ {RUNE_C(0x000DCF), RUNE_C(0x000DCF), NFKC_QC_M},
+ {RUNE_C(0x000DDF), RUNE_C(0x000DDF), NFKC_QC_M},
+ {RUNE_C(0x000E33), RUNE_C(0x000E33), NFKC_QC_N},
+ {RUNE_C(0x000EB3), RUNE_C(0x000EB3), NFKC_QC_N},
+ {RUNE_C(0x000EDC), RUNE_C(0x000EDD), NFKC_QC_N},
+ {RUNE_C(0x000F0C), RUNE_C(0x000F0C), NFKC_QC_N},
+ {RUNE_C(0x000F43), RUNE_C(0x000F43), NFKC_QC_N},
+ {RUNE_C(0x000F4D), RUNE_C(0x000F4D), NFKC_QC_N},
+ {RUNE_C(0x000F52), RUNE_C(0x000F52), NFKC_QC_N},
+ {RUNE_C(0x000F57), RUNE_C(0x000F57), NFKC_QC_N},
+ {RUNE_C(0x000F5C), RUNE_C(0x000F5C), NFKC_QC_N},
+ {RUNE_C(0x000F69), RUNE_C(0x000F69), NFKC_QC_N},
+ {RUNE_C(0x000F73), RUNE_C(0x000F73), NFKC_QC_N},
+ {RUNE_C(0x000F75), RUNE_C(0x000F79), NFKC_QC_N},
+ {RUNE_C(0x000F81), RUNE_C(0x000F81), NFKC_QC_N},
+ {RUNE_C(0x000F93), RUNE_C(0x000F93), NFKC_QC_N},
+ {RUNE_C(0x000F9D), RUNE_C(0x000F9D), NFKC_QC_N},
+ {RUNE_C(0x000FA2), RUNE_C(0x000FA2), NFKC_QC_N},
+ {RUNE_C(0x000FA7), RUNE_C(0x000FA7), NFKC_QC_N},
+ {RUNE_C(0x000FAC), RUNE_C(0x000FAC), NFKC_QC_N},
+ {RUNE_C(0x000FB9), RUNE_C(0x000FB9), NFKC_QC_N},
+ {RUNE_C(0x00102E), RUNE_C(0x00102E), NFKC_QC_M},
+ {RUNE_C(0x0010FC), RUNE_C(0x0010FC), NFKC_QC_N},
+ {RUNE_C(0x001161), RUNE_C(0x001175), NFKC_QC_M},
+ {RUNE_C(0x0011A8), RUNE_C(0x0011C2), NFKC_QC_M},
+ {RUNE_C(0x001B35), RUNE_C(0x001B35), NFKC_QC_M},
+ {RUNE_C(0x001D2C), RUNE_C(0x001D2E), NFKC_QC_N},
+ {RUNE_C(0x001D30), RUNE_C(0x001D3A), NFKC_QC_N},
+ {RUNE_C(0x001D3C), RUNE_C(0x001D4D), NFKC_QC_N},
+ {RUNE_C(0x001D4F), RUNE_C(0x001D6A), NFKC_QC_N},
+ {RUNE_C(0x001D78), RUNE_C(0x001D78), NFKC_QC_N},
+ {RUNE_C(0x001D9B), RUNE_C(0x001DBF), NFKC_QC_N},
+ {RUNE_C(0x001E9A), RUNE_C(0x001E9B), NFKC_QC_N},
+ {RUNE_C(0x001F71), RUNE_C(0x001F71), NFKC_QC_N},
+ {RUNE_C(0x001F73), RUNE_C(0x001F73), NFKC_QC_N},
+ {RUNE_C(0x001F75), RUNE_C(0x001F75), NFKC_QC_N},
+ {RUNE_C(0x001F77), RUNE_C(0x001F77), NFKC_QC_N},
+ {RUNE_C(0x001F79), RUNE_C(0x001F79), NFKC_QC_N},
+ {RUNE_C(0x001F7B), RUNE_C(0x001F7B), NFKC_QC_N},
+ {RUNE_C(0x001F7D), RUNE_C(0x001F7D), NFKC_QC_N},
+ {RUNE_C(0x001FBB), RUNE_C(0x001FBB), NFKC_QC_N},
+ {RUNE_C(0x001FBD), RUNE_C(0x001FC1), NFKC_QC_N},
+ {RUNE_C(0x001FC9), RUNE_C(0x001FC9), NFKC_QC_N},
+ {RUNE_C(0x001FCB), RUNE_C(0x001FCB), NFKC_QC_N},
+ {RUNE_C(0x001FCD), RUNE_C(0x001FCF), NFKC_QC_N},
+ {RUNE_C(0x001FD3), RUNE_C(0x001FD3), NFKC_QC_N},
+ {RUNE_C(0x001FDB), RUNE_C(0x001FDB), NFKC_QC_N},
+ {RUNE_C(0x001FDD), RUNE_C(0x001FDF), NFKC_QC_N},
+ {RUNE_C(0x001FE3), RUNE_C(0x001FE3), NFKC_QC_N},
+ {RUNE_C(0x001FEB), RUNE_C(0x001FEB), NFKC_QC_N},
+ {RUNE_C(0x001FED), RUNE_C(0x001FEF), NFKC_QC_N},
+ {RUNE_C(0x001FF9), RUNE_C(0x001FF9), NFKC_QC_N},
+ {RUNE_C(0x001FFB), RUNE_C(0x001FFB), NFKC_QC_N},
+ {RUNE_C(0x001FFD), RUNE_C(0x001FFE), NFKC_QC_N},
+ {RUNE_C(0x002000), RUNE_C(0x00200A), NFKC_QC_N},
+ {RUNE_C(0x002011), RUNE_C(0x002011), NFKC_QC_N},
+ {RUNE_C(0x002017), RUNE_C(0x002017), NFKC_QC_N},
+ {RUNE_C(0x002024), RUNE_C(0x002026), NFKC_QC_N},
+ {RUNE_C(0x00202F), RUNE_C(0x00202F), NFKC_QC_N},
+ {RUNE_C(0x002033), RUNE_C(0x002034), NFKC_QC_N},
+ {RUNE_C(0x002036), RUNE_C(0x002037), NFKC_QC_N},
+ {RUNE_C(0x00203C), RUNE_C(0x00203C), NFKC_QC_N},
+ {RUNE_C(0x00203E), RUNE_C(0x00203E), NFKC_QC_N},
+ {RUNE_C(0x002047), RUNE_C(0x002049), NFKC_QC_N},
+ {RUNE_C(0x002057), RUNE_C(0x002057), NFKC_QC_N},
+ {RUNE_C(0x00205F), RUNE_C(0x00205F), NFKC_QC_N},
+ {RUNE_C(0x002070), RUNE_C(0x002071), NFKC_QC_N},
+ {RUNE_C(0x002074), RUNE_C(0x00208E), NFKC_QC_N},
+ {RUNE_C(0x002090), RUNE_C(0x00209C), NFKC_QC_N},
+ {RUNE_C(0x0020A8), RUNE_C(0x0020A8), NFKC_QC_N},
+ {RUNE_C(0x002100), RUNE_C(0x002103), NFKC_QC_N},
+ {RUNE_C(0x002105), RUNE_C(0x002107), NFKC_QC_N},
+ {RUNE_C(0x002109), RUNE_C(0x002113), NFKC_QC_N},
+ {RUNE_C(0x002115), RUNE_C(0x002116), NFKC_QC_N},
+ {RUNE_C(0x002119), RUNE_C(0x00211D), NFKC_QC_N},
+ {RUNE_C(0x002120), RUNE_C(0x002122), NFKC_QC_N},
+ {RUNE_C(0x002124), RUNE_C(0x002124), NFKC_QC_N},
+ {RUNE_C(0x002126), RUNE_C(0x002126), NFKC_QC_N},
+ {RUNE_C(0x002128), RUNE_C(0x002128), NFKC_QC_N},
+ {RUNE_C(0x00212A), RUNE_C(0x00212D), NFKC_QC_N},
+ {RUNE_C(0x00212F), RUNE_C(0x002131), NFKC_QC_N},
+ {RUNE_C(0x002133), RUNE_C(0x002139), NFKC_QC_N},
+ {RUNE_C(0x00213B), RUNE_C(0x002140), NFKC_QC_N},
+ {RUNE_C(0x002145), RUNE_C(0x002149), NFKC_QC_N},
+ {RUNE_C(0x002150), RUNE_C(0x00217F), NFKC_QC_N},
+ {RUNE_C(0x002189), RUNE_C(0x002189), NFKC_QC_N},
+ {RUNE_C(0x00222C), RUNE_C(0x00222D), NFKC_QC_N},
+ {RUNE_C(0x00222F), RUNE_C(0x002230), NFKC_QC_N},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), NFKC_QC_N},
+ {RUNE_C(0x002460), RUNE_C(0x0024EA), NFKC_QC_N},
+ {RUNE_C(0x002A0C), RUNE_C(0x002A0C), NFKC_QC_N},
+ {RUNE_C(0x002A74), RUNE_C(0x002A76), NFKC_QC_N},
+ {RUNE_C(0x002ADC), RUNE_C(0x002ADC), NFKC_QC_N},
+ {RUNE_C(0x002C7C), RUNE_C(0x002C7D), NFKC_QC_N},
+ {RUNE_C(0x002D6F), RUNE_C(0x002D6F), NFKC_QC_N},
+ {RUNE_C(0x002E9F), RUNE_C(0x002E9F), NFKC_QC_N},
+ {RUNE_C(0x002EF3), RUNE_C(0x002EF3), NFKC_QC_N},
+ {RUNE_C(0x002F00), RUNE_C(0x002FD5), NFKC_QC_N},
+ {RUNE_C(0x003000), RUNE_C(0x003000), NFKC_QC_N},
+ {RUNE_C(0x003036), RUNE_C(0x003036), NFKC_QC_N},
+ {RUNE_C(0x003038), RUNE_C(0x00303A), NFKC_QC_N},
+ {RUNE_C(0x003099), RUNE_C(0x00309A), NFKC_QC_M},
+ {RUNE_C(0x00309B), RUNE_C(0x00309C), NFKC_QC_N},
+ {RUNE_C(0x00309F), RUNE_C(0x00309F), NFKC_QC_N},
+ {RUNE_C(0x0030FF), RUNE_C(0x0030FF), NFKC_QC_N},
+ {RUNE_C(0x003131), RUNE_C(0x00318E), NFKC_QC_N},
+ {RUNE_C(0x003192), RUNE_C(0x00319F), NFKC_QC_N},
+ {RUNE_C(0x003200), RUNE_C(0x00321E), NFKC_QC_N},
+ {RUNE_C(0x003220), RUNE_C(0x003247), NFKC_QC_N},
+ {RUNE_C(0x003250), RUNE_C(0x00327E), NFKC_QC_N},
+ {RUNE_C(0x003280), RUNE_C(0x0033FF), NFKC_QC_N},
+ {RUNE_C(0x00A69C), RUNE_C(0x00A69D), NFKC_QC_N},
+ {RUNE_C(0x00A770), RUNE_C(0x00A770), NFKC_QC_N},
+ {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), NFKC_QC_N},
+ {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), NFKC_QC_N},
+ {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), NFKC_QC_N},
+ {RUNE_C(0x00AB69), RUNE_C(0x00AB69), NFKC_QC_N},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA0D), NFKC_QC_N},
+ {RUNE_C(0x00FA10), RUNE_C(0x00FA10), NFKC_QC_N},
+ {RUNE_C(0x00FA12), RUNE_C(0x00FA12), NFKC_QC_N},
+ {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), NFKC_QC_N},
+ {RUNE_C(0x00FA20), RUNE_C(0x00FA20), NFKC_QC_N},
+ {RUNE_C(0x00FA22), RUNE_C(0x00FA22), NFKC_QC_N},
+ {RUNE_C(0x00FA25), RUNE_C(0x00FA26), NFKC_QC_N},
+ {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), NFKC_QC_N},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), NFKC_QC_N},
+ {RUNE_C(0x00FB00), RUNE_C(0x00FB06), NFKC_QC_N},
+ {RUNE_C(0x00FB13), RUNE_C(0x00FB17), NFKC_QC_N},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), NFKC_QC_N},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB36), NFKC_QC_N},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), NFKC_QC_N},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), NFKC_QC_N},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), NFKC_QC_N},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), NFKC_QC_N},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FBB1), NFKC_QC_N},
+ {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D), NFKC_QC_N},
+ {RUNE_C(0x00FD50), RUNE_C(0x00FD8F), NFKC_QC_N},
+ {RUNE_C(0x00FD92), RUNE_C(0x00FDC7), NFKC_QC_N},
+ {RUNE_C(0x00FDF0), RUNE_C(0x00FDFC), NFKC_QC_N},
+ {RUNE_C(0x00FE10), RUNE_C(0x00FE19), NFKC_QC_N},
+ {RUNE_C(0x00FE30), RUNE_C(0x00FE44), NFKC_QC_N},
+ {RUNE_C(0x00FE47), RUNE_C(0x00FE52), NFKC_QC_N},
+ {RUNE_C(0x00FE54), RUNE_C(0x00FE66), NFKC_QC_N},
+ {RUNE_C(0x00FE68), RUNE_C(0x00FE6B), NFKC_QC_N},
+ {RUNE_C(0x00FE70), RUNE_C(0x00FE72), NFKC_QC_N},
+ {RUNE_C(0x00FE74), RUNE_C(0x00FE74), NFKC_QC_N},
+ {RUNE_C(0x00FE76), RUNE_C(0x00FEFC), NFKC_QC_N},
+ {RUNE_C(0x00FF01), RUNE_C(0x00FFBE), NFKC_QC_N},
+ {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), NFKC_QC_N},
+ {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), NFKC_QC_N},
+ {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), NFKC_QC_N},
+ {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), NFKC_QC_N},
+ {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6), NFKC_QC_N},
+ {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE), NFKC_QC_N},
+ {RUNE_C(0x010781), RUNE_C(0x010785), NFKC_QC_N},
+ {RUNE_C(0x010787), RUNE_C(0x0107B0), NFKC_QC_N},
+ {RUNE_C(0x0107B2), RUNE_C(0x0107BA), NFKC_QC_N},
+ {RUNE_C(0x0110BA), RUNE_C(0x0110BA), NFKC_QC_M},
+ {RUNE_C(0x011127), RUNE_C(0x011127), NFKC_QC_M},
+ {RUNE_C(0x01133E), RUNE_C(0x01133E), NFKC_QC_M},
+ {RUNE_C(0x011357), RUNE_C(0x011357), NFKC_QC_M},
+ {RUNE_C(0x0114B0), RUNE_C(0x0114B0), NFKC_QC_M},
+ {RUNE_C(0x0114BA), RUNE_C(0x0114BA), NFKC_QC_M},
+ {RUNE_C(0x0114BD), RUNE_C(0x0114BD), NFKC_QC_M},
+ {RUNE_C(0x0115AF), RUNE_C(0x0115AF), NFKC_QC_M},
+ {RUNE_C(0x011930), RUNE_C(0x011930), NFKC_QC_M},
+ {RUNE_C(0x01D15E), RUNE_C(0x01D164), NFKC_QC_N},
+ {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), NFKC_QC_N},
+ {RUNE_C(0x01D400), RUNE_C(0x01D454), NFKC_QC_N},
+ {RUNE_C(0x01D456), RUNE_C(0x01D49C), NFKC_QC_N},
+ {RUNE_C(0x01D49E), RUNE_C(0x01D49F), NFKC_QC_N},
+ {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), NFKC_QC_N},
+ {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), NFKC_QC_N},
+ {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), NFKC_QC_N},
+ {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9), NFKC_QC_N},
+ {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), NFKC_QC_N},
+ {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), NFKC_QC_N},
+ {RUNE_C(0x01D4C5), RUNE_C(0x01D505), NFKC_QC_N},
+ {RUNE_C(0x01D507), RUNE_C(0x01D50A), NFKC_QC_N},
+ {RUNE_C(0x01D50D), RUNE_C(0x01D514), NFKC_QC_N},
+ {RUNE_C(0x01D516), RUNE_C(0x01D51C), NFKC_QC_N},
+ {RUNE_C(0x01D51E), RUNE_C(0x01D539), NFKC_QC_N},
+ {RUNE_C(0x01D53B), RUNE_C(0x01D53E), NFKC_QC_N},
+ {RUNE_C(0x01D540), RUNE_C(0x01D544), NFKC_QC_N},
+ {RUNE_C(0x01D546), RUNE_C(0x01D546), NFKC_QC_N},
+ {RUNE_C(0x01D54A), RUNE_C(0x01D550), NFKC_QC_N},
+ {RUNE_C(0x01D552), RUNE_C(0x01D6A5), NFKC_QC_N},
+ {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB), NFKC_QC_N},
+ {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), NFKC_QC_N},
+ {RUNE_C(0x01E030), RUNE_C(0x01E06D), NFKC_QC_N},
+ {RUNE_C(0x01EE00), RUNE_C(0x01EE03), NFKC_QC_N},
+ {RUNE_C(0x01EE05), RUNE_C(0x01EE1F), NFKC_QC_N},
+ {RUNE_C(0x01EE21), RUNE_C(0x01EE22), NFKC_QC_N},
+ {RUNE_C(0x01EE24), RUNE_C(0x01EE24), NFKC_QC_N},
+ {RUNE_C(0x01EE27), RUNE_C(0x01EE27), NFKC_QC_N},
+ {RUNE_C(0x01EE29), RUNE_C(0x01EE32), NFKC_QC_N},
+ {RUNE_C(0x01EE34), RUNE_C(0x01EE37), NFKC_QC_N},
+ {RUNE_C(0x01EE39), RUNE_C(0x01EE39), NFKC_QC_N},
+ {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), NFKC_QC_N},
+ {RUNE_C(0x01EE42), RUNE_C(0x01EE42), NFKC_QC_N},
+ {RUNE_C(0x01EE47), RUNE_C(0x01EE47), NFKC_QC_N},
+ {RUNE_C(0x01EE49), RUNE_C(0x01EE49), NFKC_QC_N},
+ {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), NFKC_QC_N},
+ {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), NFKC_QC_N},
+ {RUNE_C(0x01EE51), RUNE_C(0x01EE52), NFKC_QC_N},
+ {RUNE_C(0x01EE54), RUNE_C(0x01EE54), NFKC_QC_N},
+ {RUNE_C(0x01EE57), RUNE_C(0x01EE57), NFKC_QC_N},
+ {RUNE_C(0x01EE59), RUNE_C(0x01EE59), NFKC_QC_N},
+ {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), NFKC_QC_N},
+ {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), NFKC_QC_N},
+ {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), NFKC_QC_N},
+ {RUNE_C(0x01EE61), RUNE_C(0x01EE62), NFKC_QC_N},
+ {RUNE_C(0x01EE64), RUNE_C(0x01EE64), NFKC_QC_N},
+ {RUNE_C(0x01EE67), RUNE_C(0x01EE6A), NFKC_QC_N},
+ {RUNE_C(0x01EE6C), RUNE_C(0x01EE72), NFKC_QC_N},
+ {RUNE_C(0x01EE74), RUNE_C(0x01EE77), NFKC_QC_N},
+ {RUNE_C(0x01EE79), RUNE_C(0x01EE7C), NFKC_QC_N},
+ {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), NFKC_QC_N},
+ {RUNE_C(0x01EE80), RUNE_C(0x01EE89), NFKC_QC_N},
+ {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), NFKC_QC_N},
+ {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), NFKC_QC_N},
+ {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), NFKC_QC_N},
+ {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), NFKC_QC_N},
+ {RUNE_C(0x01F100), RUNE_C(0x01F10A), NFKC_QC_N},
+ {RUNE_C(0x01F110), RUNE_C(0x01F12E), NFKC_QC_N},
+ {RUNE_C(0x01F130), RUNE_C(0x01F14F), NFKC_QC_N},
+ {RUNE_C(0x01F16A), RUNE_C(0x01F16C), NFKC_QC_N},
+ {RUNE_C(0x01F190), RUNE_C(0x01F190), NFKC_QC_N},
+ {RUNE_C(0x01F200), RUNE_C(0x01F202), NFKC_QC_N},
+ {RUNE_C(0x01F210), RUNE_C(0x01F23B), NFKC_QC_N},
+ {RUNE_C(0x01F240), RUNE_C(0x01F248), NFKC_QC_N},
+ {RUNE_C(0x01F250), RUNE_C(0x01F251), NFKC_QC_N},
+ {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), NFKC_QC_N},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), NFKC_QC_N},
+};
+
+_MLIB_DEFINE_BSEARCH(enum uprop_nfkc_qc, lookup, NFKC_QC_Y)
+
+enum uprop_nfkc_qc
+uprop_get_nfkc_qc(rune ch)
+{
+ return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);
+}
diff --git a/lib/unicode/prop/uprop_get_nfkd_qc.c b/lib/unicode/prop/uprop_get_nfkd_qc.c
new file mode 100644
index 0000000..d8dec3c
--- /dev/null
+++ b/lib/unicode/prop/uprop_get_nfkd_qc.c
@@ -0,0 +1,439 @@
+/* This file is autogenerated by gen/prop/nfXX_qc; DO NOT EDIT. */
+
+/* The macros.h include may be unused */
+
+#include "_bsearch.h"
+#include "macros.h"
+#include "rune.h"
+#include "unicode/prop.h"
+
+static constexpr enum uprop_nfkd_qc lookup_lat1[] = {
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_N, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_N, NFKD_QC_Y, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_N,
+ NFKD_QC_Y, NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y,
+ NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_N,
+ NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N,
+ NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_Y,
+ NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_N,
+ NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N,
+ NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y,
+ NFKD_QC_Y, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_N, NFKD_QC_Y, NFKD_QC_N,
+};
+
+static const struct {
+ rune lo, hi;
+ enum uprop_nfkd_qc val;
+} lookup[] = {
+ {RUNE_C(0x000100), RUNE_C(0x00010F), NFKD_QC_N},
+ {RUNE_C(0x000112), RUNE_C(0x000125), NFKD_QC_N},
+ {RUNE_C(0x000128), RUNE_C(0x000130), NFKD_QC_N},
+ {RUNE_C(0x000132), RUNE_C(0x000137), NFKD_QC_N},
+ {RUNE_C(0x000139), RUNE_C(0x000140), NFKD_QC_N},
+ {RUNE_C(0x000143), RUNE_C(0x000149), NFKD_QC_N},
+ {RUNE_C(0x00014C), RUNE_C(0x000151), NFKD_QC_N},
+ {RUNE_C(0x000154), RUNE_C(0x000165), NFKD_QC_N},
+ {RUNE_C(0x000168), RUNE_C(0x00017F), NFKD_QC_N},
+ {RUNE_C(0x0001A0), RUNE_C(0x0001A1), NFKD_QC_N},
+ {RUNE_C(0x0001AF), RUNE_C(0x0001B0), NFKD_QC_N},
+ {RUNE_C(0x0001C4), RUNE_C(0x0001DC), NFKD_QC_N},
+ {RUNE_C(0x0001DE), RUNE_C(0x0001E3), NFKD_QC_N},
+ {RUNE_C(0x0001E6), RUNE_C(0x0001F5), NFKD_QC_N},
+ {RUNE_C(0x0001F8), RUNE_C(0x00021B), NFKD_QC_N},
+ {RUNE_C(0x00021E), RUNE_C(0x00021F), NFKD_QC_N},
+ {RUNE_C(0x000226), RUNE_C(0x000233), NFKD_QC_N},
+ {RUNE_C(0x0002B0), RUNE_C(0x0002B8), NFKD_QC_N},
+ {RUNE_C(0x0002D8), RUNE_C(0x0002DD), NFKD_QC_N},
+ {RUNE_C(0x0002E0), RUNE_C(0x0002E4), NFKD_QC_N},
+ {RUNE_C(0x000340), RUNE_C(0x000341), NFKD_QC_N},
+ {RUNE_C(0x000343), RUNE_C(0x000344), NFKD_QC_N},
+ {RUNE_C(0x000374), RUNE_C(0x000374), NFKD_QC_N},
+ {RUNE_C(0x00037A), RUNE_C(0x00037A), NFKD_QC_N},
+ {RUNE_C(0x00037E), RUNE_C(0x00037E), NFKD_QC_N},
+ {RUNE_C(0x000384), RUNE_C(0x00038A), NFKD_QC_N},
+ {RUNE_C(0x00038C), RUNE_C(0x00038C), NFKD_QC_N},
+ {RUNE_C(0x00038E), RUNE_C(0x000390), NFKD_QC_N},
+ {RUNE_C(0x0003AA), RUNE_C(0x0003B0), NFKD_QC_N},
+ {RUNE_C(0x0003CA), RUNE_C(0x0003CE), NFKD_QC_N},
+ {RUNE_C(0x0003D0), RUNE_C(0x0003D6), NFKD_QC_N},
+ {RUNE_C(0x0003F0), RUNE_C(0x0003F2), NFKD_QC_N},
+ {RUNE_C(0x0003F4), RUNE_C(0x0003F5), NFKD_QC_N},
+ {RUNE_C(0x0003F9), RUNE_C(0x0003F9), NFKD_QC_N},
+ {RUNE_C(0x000400), RUNE_C(0x000401), NFKD_QC_N},
+ {RUNE_C(0x000403), RUNE_C(0x000403), NFKD_QC_N},
+ {RUNE_C(0x000407), RUNE_C(0x000407), NFKD_QC_N},
+ {RUNE_C(0x00040C), RUNE_C(0x00040E), NFKD_QC_N},
+ {RUNE_C(0x000419), RUNE_C(0x000419), NFKD_QC_N},
+ {RUNE_C(0x000439), RUNE_C(0x000439), NFKD_QC_N},
+ {RUNE_C(0x000450), RUNE_C(0x000451), NFKD_QC_N},
+ {RUNE_C(0x000453), RUNE_C(0x000453), NFKD_QC_N},
+ {RUNE_C(0x000457), RUNE_C(0x000457), NFKD_QC_N},
+ {RUNE_C(0x00045C), RUNE_C(0x00045E), NFKD_QC_N},
+ {RUNE_C(0x000476), RUNE_C(0x000477), NFKD_QC_N},
+ {RUNE_C(0x0004C1), RUNE_C(0x0004C2), NFKD_QC_N},
+ {RUNE_C(0x0004D0), RUNE_C(0x0004D3), NFKD_QC_N},
+ {RUNE_C(0x0004D6), RUNE_C(0x0004D7), NFKD_QC_N},
+ {RUNE_C(0x0004DA), RUNE_C(0x0004DF), NFKD_QC_N},
+ {RUNE_C(0x0004E2), RUNE_C(0x0004E7), NFKD_QC_N},
+ {RUNE_C(0x0004EA), RUNE_C(0x0004F5), NFKD_QC_N},
+ {RUNE_C(0x0004F8), RUNE_C(0x0004F9), NFKD_QC_N},
+ {RUNE_C(0x000587), RUNE_C(0x000587), NFKD_QC_N},
+ {RUNE_C(0x000622), RUNE_C(0x000626), NFKD_QC_N},
+ {RUNE_C(0x000675), RUNE_C(0x000678), NFKD_QC_N},
+ {RUNE_C(0x0006C0), RUNE_C(0x0006C0), NFKD_QC_N},
+ {RUNE_C(0x0006C2), RUNE_C(0x0006C2), NFKD_QC_N},
+ {RUNE_C(0x0006D3), RUNE_C(0x0006D3), NFKD_QC_N},
+ {RUNE_C(0x000929), RUNE_C(0x000929), NFKD_QC_N},
+ {RUNE_C(0x000931), RUNE_C(0x000931), NFKD_QC_N},
+ {RUNE_C(0x000934), RUNE_C(0x000934), NFKD_QC_N},
+ {RUNE_C(0x000958), RUNE_C(0x00095F), NFKD_QC_N},
+ {RUNE_C(0x0009CB), RUNE_C(0x0009CC), NFKD_QC_N},
+ {RUNE_C(0x0009DC), RUNE_C(0x0009DD), NFKD_QC_N},
+ {RUNE_C(0x0009DF), RUNE_C(0x0009DF), NFKD_QC_N},
+ {RUNE_C(0x000A33), RUNE_C(0x000A33), NFKD_QC_N},
+ {RUNE_C(0x000A36), RUNE_C(0x000A36), NFKD_QC_N},
+ {RUNE_C(0x000A59), RUNE_C(0x000A5B), NFKD_QC_N},
+ {RUNE_C(0x000A5E), RUNE_C(0x000A5E), NFKD_QC_N},
+ {RUNE_C(0x000B48), RUNE_C(0x000B48), NFKD_QC_N},
+ {RUNE_C(0x000B4B), RUNE_C(0x000B4C), NFKD_QC_N},
+ {RUNE_C(0x000B5C), RUNE_C(0x000B5D), NFKD_QC_N},
+ {RUNE_C(0x000B94), RUNE_C(0x000B94), NFKD_QC_N},
+ {RUNE_C(0x000BCA), RUNE_C(0x000BCC), NFKD_QC_N},
+ {RUNE_C(0x000C48), RUNE_C(0x000C48), NFKD_QC_N},
+ {RUNE_C(0x000CC0), RUNE_C(0x000CC0), NFKD_QC_N},
+ {RUNE_C(0x000CC7), RUNE_C(0x000CC8), NFKD_QC_N},
+ {RUNE_C(0x000CCA), RUNE_C(0x000CCB), NFKD_QC_N},
+ {RUNE_C(0x000D4A), RUNE_C(0x000D4C), NFKD_QC_N},
+ {RUNE_C(0x000DDA), RUNE_C(0x000DDA), NFKD_QC_N},
+ {RUNE_C(0x000DDC), RUNE_C(0x000DDE), NFKD_QC_N},
+ {RUNE_C(0x000E33), RUNE_C(0x000E33), NFKD_QC_N},
+ {RUNE_C(0x000EB3), RUNE_C(0x000EB3), NFKD_QC_N},
+ {RUNE_C(0x000EDC), RUNE_C(0x000EDD), NFKD_QC_N},
+ {RUNE_C(0x000F0C), RUNE_C(0x000F0C), NFKD_QC_N},
+ {RUNE_C(0x000F43), RUNE_C(0x000F43), NFKD_QC_N},
+ {RUNE_C(0x000F4D), RUNE_C(0x000F4D), NFKD_QC_N},
+ {RUNE_C(0x000F52), RUNE_C(0x000F52), NFKD_QC_N},
+ {RUNE_C(0x000F57), RUNE_C(0x000F57), NFKD_QC_N},
+ {RUNE_C(0x000F5C), RUNE_C(0x000F5C), NFKD_QC_N},
+ {RUNE_C(0x000F69), RUNE_C(0x000F69), NFKD_QC_N},
+ {RUNE_C(0x000F73), RUNE_C(0x000F73), NFKD_QC_N},
+ {RUNE_C(0x000F75), RUNE_C(0x000F79), NFKD_QC_N},
+ {RUNE_C(0x000F81), RUNE_C(0x000F81), NFKD_QC_N},
+ {RUNE_C(0x000F93), RUNE_C(0x000F93), NFKD_QC_N},
+ {RUNE_C(0x000F9D), RUNE_C(0x000F9D), NFKD_QC_N},
+ {RUNE_C(0x000FA2), RUNE_C(0x000FA2), NFKD_QC_N},
+ {RUNE_C(0x000FA7), RUNE_C(0x000FA7), NFKD_QC_N},
+ {RUNE_C(0x000FAC), RUNE_C(0x000FAC), NFKD_QC_N},
+ {RUNE_C(0x000FB9), RUNE_C(0x000FB9), NFKD_QC_N},
+ {RUNE_C(0x001026), RUNE_C(0x001026), NFKD_QC_N},
+ {RUNE_C(0x0010FC), RUNE_C(0x0010FC), NFKD_QC_N},
+ {RUNE_C(0x001B06), RUNE_C(0x001B06), NFKD_QC_N},
+ {RUNE_C(0x001B08), RUNE_C(0x001B08), NFKD_QC_N},
+ {RUNE_C(0x001B0A), RUNE_C(0x001B0A), NFKD_QC_N},
+ {RUNE_C(0x001B0C), RUNE_C(0x001B0C), NFKD_QC_N},
+ {RUNE_C(0x001B0E), RUNE_C(0x001B0E), NFKD_QC_N},
+ {RUNE_C(0x001B12), RUNE_C(0x001B12), NFKD_QC_N},
+ {RUNE_C(0x001B3B), RUNE_C(0x001B3B), NFKD_QC_N},
+ {RUNE_C(0x001B3D), RUNE_C(0x001B3D), NFKD_QC_N},
+ {RUNE_C(0x001B40), RUNE_C(0x001B41), NFKD_QC_N},
+ {RUNE_C(0x001B43), RUNE_C(0x001B43), NFKD_QC_N},
+ {RUNE_C(0x001D2C), RUNE_C(0x001D2E), NFKD_QC_N},
+ {RUNE_C(0x001D30), RUNE_C(0x001D3A), NFKD_QC_N},
+ {RUNE_C(0x001D3C), RUNE_C(0x001D4D), NFKD_QC_N},
+ {RUNE_C(0x001D4F), RUNE_C(0x001D6A), NFKD_QC_N},
+ {RUNE_C(0x001D78), RUNE_C(0x001D78), NFKD_QC_N},
+ {RUNE_C(0x001D9B), RUNE_C(0x001DBF), NFKD_QC_N},
+ {RUNE_C(0x001E00), RUNE_C(0x001E9B), NFKD_QC_N},
+ {RUNE_C(0x001EA0), RUNE_C(0x001EF9), NFKD_QC_N},
+ {RUNE_C(0x001F00), RUNE_C(0x001F15), NFKD_QC_N},
+ {RUNE_C(0x001F18), RUNE_C(0x001F1D), NFKD_QC_N},
+ {RUNE_C(0x001F20), RUNE_C(0x001F45), NFKD_QC_N},
+ {RUNE_C(0x001F48), RUNE_C(0x001F4D), NFKD_QC_N},
+ {RUNE_C(0x001F50), RUNE_C(0x001F57), NFKD_QC_N},
+ {RUNE_C(0x001F59), RUNE_C(0x001F59), NFKD_QC_N},
+ {RUNE_C(0x001F5B), RUNE_C(0x001F5B), NFKD_QC_N},
+ {RUNE_C(0x001F5D), RUNE_C(0x001F5D), NFKD_QC_N},
+ {RUNE_C(0x001F5F), RUNE_C(0x001F7D), NFKD_QC_N},
+ {RUNE_C(0x001F80), RUNE_C(0x001FB4), NFKD_QC_N},
+ {RUNE_C(0x001FB6), RUNE_C(0x001FC4), NFKD_QC_N},
+ {RUNE_C(0x001FC6), RUNE_C(0x001FD3), NFKD_QC_N},
+ {RUNE_C(0x001FD6), RUNE_C(0x001FDB), NFKD_QC_N},
+ {RUNE_C(0x001FDD), RUNE_C(0x001FEF), NFKD_QC_N},
+ {RUNE_C(0x001FF2), RUNE_C(0x001FF4), NFKD_QC_N},
+ {RUNE_C(0x001FF6), RUNE_C(0x001FFE), NFKD_QC_N},
+ {RUNE_C(0x002000), RUNE_C(0x00200A), NFKD_QC_N},
+ {RUNE_C(0x002011), RUNE_C(0x002011), NFKD_QC_N},
+ {RUNE_C(0x002017), RUNE_C(0x002017), NFKD_QC_N},
+ {RUNE_C(0x002024), RUNE_C(0x002026), NFKD_QC_N},
+ {RUNE_C(0x00202F), RUNE_C(0x00202F), NFKD_QC_N},
+ {RUNE_C(0x002033), RUNE_C(0x002034), NFKD_QC_N},
+ {RUNE_C(0x002036), RUNE_C(0x002037), NFKD_QC_N},
+ {RUNE_C(0x00203C), RUNE_C(0x00203C), NFKD_QC_N},
+ {RUNE_C(0x00203E), RUNE_C(0x00203E), NFKD_QC_N},
+ {RUNE_C(0x002047), RUNE_C(0x002049), NFKD_QC_N},
+ {RUNE_C(0x002057), RUNE_C(0x002057), NFKD_QC_N},
+ {RUNE_C(0x00205F), RUNE_C(0x00205F), NFKD_QC_N},
+ {RUNE_C(0x002070), RUNE_C(0x002071), NFKD_QC_N},
+ {RUNE_C(0x002074), RUNE_C(0x00208E), NFKD_QC_N},
+ {RUNE_C(0x002090), RUNE_C(0x00209C), NFKD_QC_N},
+ {RUNE_C(0x0020A8), RUNE_C(0x0020A8), NFKD_QC_N},
+ {RUNE_C(0x002100), RUNE_C(0x002103), NFKD_QC_N},
+ {RUNE_C(0x002105), RUNE_C(0x002107), NFKD_QC_N},
+ {RUNE_C(0x002109), RUNE_C(0x002113), NFKD_QC_N},
+ {RUNE_C(0x002115), RUNE_C(0x002116), NFKD_QC_N},
+ {RUNE_C(0x002119), RUNE_C(0x00211D), NFKD_QC_N},
+ {RUNE_C(0x002120), RUNE_C(0x002122), NFKD_QC_N},
+ {RUNE_C(0x002124), RUNE_C(0x002124), NFKD_QC_N},
+ {RUNE_C(0x002126), RUNE_C(0x002126), NFKD_QC_N},
+ {RUNE_C(0x002128), RUNE_C(0x002128), NFKD_QC_N},
+ {RUNE_C(0x00212A), RUNE_C(0x00212D), NFKD_QC_N},
+ {RUNE_C(0x00212F), RUNE_C(0x002131), NFKD_QC_N},
+ {RUNE_C(0x002133), RUNE_C(0x002139), NFKD_QC_N},
+ {RUNE_C(0x00213B), RUNE_C(0x002140), NFKD_QC_N},
+ {RUNE_C(0x002145), RUNE_C(0x002149), NFKD_QC_N},
+ {RUNE_C(0x002150), RUNE_C(0x00217F), NFKD_QC_N},
+ {RUNE_C(0x002189), RUNE_C(0x002189), NFKD_QC_N},
+ {RUNE_C(0x00219A), RUNE_C(0x00219B), NFKD_QC_N},
+ {RUNE_C(0x0021AE), RUNE_C(0x0021AE), NFKD_QC_N},
+ {RUNE_C(0x0021CD), RUNE_C(0x0021CF), NFKD_QC_N},
+ {RUNE_C(0x002204), RUNE_C(0x002204), NFKD_QC_N},
+ {RUNE_C(0x002209), RUNE_C(0x002209), NFKD_QC_N},
+ {RUNE_C(0x00220C), RUNE_C(0x00220C), NFKD_QC_N},
+ {RUNE_C(0x002224), RUNE_C(0x002224), NFKD_QC_N},
+ {RUNE_C(0x002226), RUNE_C(0x002226), NFKD_QC_N},
+ {RUNE_C(0x00222C), RUNE_C(0x00222D), NFKD_QC_N},
+ {RUNE_C(0x00222F), RUNE_C(0x002230), NFKD_QC_N},
+ {RUNE_C(0x002241), RUNE_C(0x002241), NFKD_QC_N},
+ {RUNE_C(0x002244), RUNE_C(0x002244), NFKD_QC_N},
+ {RUNE_C(0x002247), RUNE_C(0x002247), NFKD_QC_N},
+ {RUNE_C(0x002249), RUNE_C(0x002249), NFKD_QC_N},
+ {RUNE_C(0x002260), RUNE_C(0x002260), NFKD_QC_N},
+ {RUNE_C(0x002262), RUNE_C(0x002262), NFKD_QC_N},
+ {RUNE_C(0x00226D), RUNE_C(0x002271), NFKD_QC_N},
+ {RUNE_C(0x002274), RUNE_C(0x002275), NFKD_QC_N},
+ {RUNE_C(0x002278), RUNE_C(0x002279), NFKD_QC_N},
+ {RUNE_C(0x002280), RUNE_C(0x002281), NFKD_QC_N},
+ {RUNE_C(0x002284), RUNE_C(0x002285), NFKD_QC_N},
+ {RUNE_C(0x002288), RUNE_C(0x002289), NFKD_QC_N},
+ {RUNE_C(0x0022AC), RUNE_C(0x0022AF), NFKD_QC_N},
+ {RUNE_C(0x0022E0), RUNE_C(0x0022E3), NFKD_QC_N},
+ {RUNE_C(0x0022EA), RUNE_C(0x0022ED), NFKD_QC_N},
+ {RUNE_C(0x002329), RUNE_C(0x00232A), NFKD_QC_N},
+ {RUNE_C(0x002460), RUNE_C(0x0024EA), NFKD_QC_N},
+ {RUNE_C(0x002A0C), RUNE_C(0x002A0C), NFKD_QC_N},
+ {RUNE_C(0x002A74), RUNE_C(0x002A76), NFKD_QC_N},
+ {RUNE_C(0x002ADC), RUNE_C(0x002ADC), NFKD_QC_N},
+ {RUNE_C(0x002C7C), RUNE_C(0x002C7D), NFKD_QC_N},
+ {RUNE_C(0x002D6F), RUNE_C(0x002D6F), NFKD_QC_N},
+ {RUNE_C(0x002E9F), RUNE_C(0x002E9F), NFKD_QC_N},
+ {RUNE_C(0x002EF3), RUNE_C(0x002EF3), NFKD_QC_N},
+ {RUNE_C(0x002F00), RUNE_C(0x002FD5), NFKD_QC_N},
+ {RUNE_C(0x003000), RUNE_C(0x003000), NFKD_QC_N},
+ {RUNE_C(0x003036), RUNE_C(0x003036), NFKD_QC_N},
+ {RUNE_C(0x003038), RUNE_C(0x00303A), NFKD_QC_N},
+ {RUNE_C(0x00304C), RUNE_C(0x00304C), NFKD_QC_N},
+ {RUNE_C(0x00304E), RUNE_C(0x00304E), NFKD_QC_N},
+ {RUNE_C(0x003050), RUNE_C(0x003050), NFKD_QC_N},
+ {RUNE_C(0x003052), RUNE_C(0x003052), NFKD_QC_N},
+ {RUNE_C(0x003054), RUNE_C(0x003054), NFKD_QC_N},
+ {RUNE_C(0x003056), RUNE_C(0x003056), NFKD_QC_N},
+ {RUNE_C(0x003058), RUNE_C(0x003058), NFKD_QC_N},
+ {RUNE_C(0x00305A), RUNE_C(0x00305A), NFKD_QC_N},
+ {RUNE_C(0x00305C), RUNE_C(0x00305C), NFKD_QC_N},
+ {RUNE_C(0x00305E), RUNE_C(0x00305E), NFKD_QC_N},
+ {RUNE_C(0x003060), RUNE_C(0x003060), NFKD_QC_N},
+ {RUNE_C(0x003062), RUNE_C(0x003062), NFKD_QC_N},
+ {RUNE_C(0x003065), RUNE_C(0x003065), NFKD_QC_N},
+ {RUNE_C(0x003067), RUNE_C(0x003067), NFKD_QC_N},
+ {RUNE_C(0x003069), RUNE_C(0x003069), NFKD_QC_N},
+ {RUNE_C(0x003070), RUNE_C(0x003071), NFKD_QC_N},
+ {RUNE_C(0x003073), RUNE_C(0x003074), NFKD_QC_N},
+ {RUNE_C(0x003076), RUNE_C(0x003077), NFKD_QC_N},
+ {RUNE_C(0x003079), RUNE_C(0x00307A), NFKD_QC_N},
+ {RUNE_C(0x00307C), RUNE_C(0x00307D), NFKD_QC_N},
+ {RUNE_C(0x003094), RUNE_C(0x003094), NFKD_QC_N},
+ {RUNE_C(0x00309B), RUNE_C(0x00309C), NFKD_QC_N},
+ {RUNE_C(0x00309E), RUNE_C(0x00309F), NFKD_QC_N},
+ {RUNE_C(0x0030AC), RUNE_C(0x0030AC), NFKD_QC_N},
+ {RUNE_C(0x0030AE), RUNE_C(0x0030AE), NFKD_QC_N},
+ {RUNE_C(0x0030B0), RUNE_C(0x0030B0), NFKD_QC_N},
+ {RUNE_C(0x0030B2), RUNE_C(0x0030B2), NFKD_QC_N},
+ {RUNE_C(0x0030B4), RUNE_C(0x0030B4), NFKD_QC_N},
+ {RUNE_C(0x0030B6), RUNE_C(0x0030B6), NFKD_QC_N},
+ {RUNE_C(0x0030B8), RUNE_C(0x0030B8), NFKD_QC_N},
+ {RUNE_C(0x0030BA), RUNE_C(0x0030BA), NFKD_QC_N},
+ {RUNE_C(0x0030BC), RUNE_C(0x0030BC), NFKD_QC_N},
+ {RUNE_C(0x0030BE), RUNE_C(0x0030BE), NFKD_QC_N},
+ {RUNE_C(0x0030C0), RUNE_C(0x0030C0), NFKD_QC_N},
+ {RUNE_C(0x0030C2), RUNE_C(0x0030C2), NFKD_QC_N},
+ {RUNE_C(0x0030C5), RUNE_C(0x0030C5), NFKD_QC_N},
+ {RUNE_C(0x0030C7), RUNE_C(0x0030C7), NFKD_QC_N},
+ {RUNE_C(0x0030C9), RUNE_C(0x0030C9), NFKD_QC_N},
+ {RUNE_C(0x0030D0), RUNE_C(0x0030D1), NFKD_QC_N},
+ {RUNE_C(0x0030D3), RUNE_C(0x0030D4), NFKD_QC_N},
+ {RUNE_C(0x0030D6), RUNE_C(0x0030D7), NFKD_QC_N},
+ {RUNE_C(0x0030D9), RUNE_C(0x0030DA), NFKD_QC_N},
+ {RUNE_C(0x0030DC), RUNE_C(0x0030DD), NFKD_QC_N},
+ {RUNE_C(0x0030F4), RUNE_C(0x0030F4), NFKD_QC_N},
+ {RUNE_C(0x0030F7), RUNE_C(0x0030FA), NFKD_QC_N},
+ {RUNE_C(0x0030FE), RUNE_C(0x0030FF), NFKD_QC_N},
+ {RUNE_C(0x003131), RUNE_C(0x00318E), NFKD_QC_N},
+ {RUNE_C(0x003192), RUNE_C(0x00319F), NFKD_QC_N},
+ {RUNE_C(0x003200), RUNE_C(0x00321E), NFKD_QC_N},
+ {RUNE_C(0x003220), RUNE_C(0x003247), NFKD_QC_N},
+ {RUNE_C(0x003250), RUNE_C(0x00327E), NFKD_QC_N},
+ {RUNE_C(0x003280), RUNE_C(0x0033FF), NFKD_QC_N},
+ {RUNE_C(0x00A69C), RUNE_C(0x00A69D), NFKD_QC_N},
+ {RUNE_C(0x00A770), RUNE_C(0x00A770), NFKD_QC_N},
+ {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), NFKD_QC_N},
+ {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), NFKD_QC_N},
+ {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), NFKD_QC_N},
+ {RUNE_C(0x00AB69), RUNE_C(0x00AB69), NFKD_QC_N},
+ {RUNE_C(0x00AC00), RUNE_C(0x00D7A3), NFKD_QC_N},
+ {RUNE_C(0x00F900), RUNE_C(0x00FA0D), NFKD_QC_N},
+ {RUNE_C(0x00FA10), RUNE_C(0x00FA10), NFKD_QC_N},
+ {RUNE_C(0x00FA12), RUNE_C(0x00FA12), NFKD_QC_N},
+ {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), NFKD_QC_N},
+ {RUNE_C(0x00FA20), RUNE_C(0x00FA20), NFKD_QC_N},
+ {RUNE_C(0x00FA22), RUNE_C(0x00FA22), NFKD_QC_N},
+ {RUNE_C(0x00FA25), RUNE_C(0x00FA26), NFKD_QC_N},
+ {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), NFKD_QC_N},
+ {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), NFKD_QC_N},
+ {RUNE_C(0x00FB00), RUNE_C(0x00FB06), NFKD_QC_N},
+ {RUNE_C(0x00FB13), RUNE_C(0x00FB17), NFKD_QC_N},
+ {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), NFKD_QC_N},
+ {RUNE_C(0x00FB1F), RUNE_C(0x00FB36), NFKD_QC_N},
+ {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), NFKD_QC_N},
+ {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), NFKD_QC_N},
+ {RUNE_C(0x00FB40), RUNE_C(0x00FB41), NFKD_QC_N},
+ {RUNE_C(0x00FB43), RUNE_C(0x00FB44), NFKD_QC_N},
+ {RUNE_C(0x00FB46), RUNE_C(0x00FBB1), NFKD_QC_N},
+ {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D), NFKD_QC_N},
+ {RUNE_C(0x00FD50), RUNE_C(0x00FD8F), NFKD_QC_N},
+ {RUNE_C(0x00FD92), RUNE_C(0x00FDC7), NFKD_QC_N},
+ {RUNE_C(0x00FDF0), RUNE_C(0x00FDFC), NFKD_QC_N},
+ {RUNE_C(0x00FE10), RUNE_C(0x00FE19), NFKD_QC_N},
+ {RUNE_C(0x00FE30), RUNE_C(0x00FE44), NFKD_QC_N},
+ {RUNE_C(0x00FE47), RUNE_C(0x00FE52), NFKD_QC_N},
+ {RUNE_C(0x00FE54), RUNE_C(0x00FE66), NFKD_QC_N},
+ {RUNE_C(0x00FE68), RUNE_C(0x00FE6B), NFKD_QC_N},
+ {RUNE_C(0x00FE70), RUNE_C(0x00FE72), NFKD_QC_N},
+ {RUNE_C(0x00FE74), RUNE_C(0x00FE74), NFKD_QC_N},
+ {RUNE_C(0x00FE76), RUNE_C(0x00FEFC), NFKD_QC_N},
+ {RUNE_C(0x00FF01), RUNE_C(0x00FFBE), NFKD_QC_N},
+ {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), NFKD_QC_N},
+ {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), NFKD_QC_N},
+ {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), NFKD_QC_N},
+ {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), NFKD_QC_N},
+ {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6), NFKD_QC_N},
+ {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE), NFKD_QC_N},
+ {RUNE_C(0x010781), RUNE_C(0x010785), NFKD_QC_N},
+ {RUNE_C(0x010787), RUNE_C(0x0107B0), NFKD_QC_N},
+ {RUNE_C(0x0107B2), RUNE_C(0x0107BA), NFKD_QC_N},
+ {RUNE_C(0x01109A), RUNE_C(0x01109A), NFKD_QC_N},
+ {RUNE_C(0x01109C), RUNE_C(0x01109C), NFKD_QC_N},
+ {RUNE_C(0x0110AB), RUNE_C(0x0110AB), NFKD_QC_N},
+ {RUNE_C(0x01112E), RUNE_C(0x01112F), NFKD_QC_N},
+ {RUNE_C(0x01134B), RUNE_C(0x01134C), NFKD_QC_N},
+ {RUNE_C(0x0114BB), RUNE_C(0x0114BC), NFKD_QC_N},
+ {RUNE_C(0x0114BE), RUNE_C(0x0114BE), NFKD_QC_N},
+ {RUNE_C(0x0115BA), RUNE_C(0x0115BB), NFKD_QC_N},
+ {RUNE_C(0x011938), RUNE_C(0x011938), NFKD_QC_N},
+ {RUNE_C(0x01D15E), RUNE_C(0x01D164), NFKD_QC_N},
+ {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), NFKD_QC_N},
+ {RUNE_C(0x01D400), RUNE_C(0x01D454), NFKD_QC_N},
+ {RUNE_C(0x01D456), RUNE_C(0x01D49C), NFKD_QC_N},
+ {RUNE_C(0x01D49E), RUNE_C(0x01D49F), NFKD_QC_N},
+ {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), NFKD_QC_N},
+ {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), NFKD_QC_N},
+ {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), NFKD_QC_N},
+ {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9), NFKD_QC_N},
+ {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), NFKD_QC_N},
+ {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), NFKD_QC_N},
+ {RUNE_C(0x01D4C5), RUNE_C(0x01D505), NFKD_QC_N},
+ {RUNE_C(0x01D507), RUNE_C(0x01D50A), NFKD_QC_N},
+ {RUNE_C(0x01D50D), RUNE_C(0x01D514), NFKD_QC_N},
+ {RUNE_C(0x01D516), RUNE_C(0x01D51C), NFKD_QC_N},
+ {RUNE_C(0x01D51E), RUNE_C(0x01D539), NFKD_QC_N},
+ {RUNE_C(0x01D53B), RUNE_C(0x01D53E), NFKD_QC_N},
+ {RUNE_C(0x01D540), RUNE_C(0x01D544), NFKD_QC_N},
+ {RUNE_C(0x01D546), RUNE_C(0x01D546), NFKD_QC_N},
+ {RUNE_C(0x01D54A), RUNE_C(0x01D550), NFKD_QC_N},
+ {RUNE_C(0x01D552), RUNE_C(0x01D6A5), NFKD_QC_N},
+ {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB), NFKD_QC_N},
+ {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), NFKD_QC_N},
+ {RUNE_C(0x01E030), RUNE_C(0x01E06D), NFKD_QC_N},
+ {RUNE_C(0x01EE00), RUNE_C(0x01EE03), NFKD_QC_N},
+ {RUNE_C(0x01EE05), RUNE_C(0x01EE1F), NFKD_QC_N},
+ {RUNE_C(0x01EE21), RUNE_C(0x01EE22), NFKD_QC_N},
+ {RUNE_C(0x01EE24), RUNE_C(0x01EE24), NFKD_QC_N},
+ {RUNE_C(0x01EE27), RUNE_C(0x01EE27), NFKD_QC_N},
+ {RUNE_C(0x01EE29), RUNE_C(0x01EE32), NFKD_QC_N},
+ {RUNE_C(0x01EE34), RUNE_C(0x01EE37), NFKD_QC_N},
+ {RUNE_C(0x01EE39), RUNE_C(0x01EE39), NFKD_QC_N},
+ {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), NFKD_QC_N},
+ {RUNE_C(0x01EE42), RUNE_C(0x01EE42), NFKD_QC_N},
+ {RUNE_C(0x01EE47), RUNE_C(0x01EE47), NFKD_QC_N},
+ {RUNE_C(0x01EE49), RUNE_C(0x01EE49), NFKD_QC_N},
+ {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), NFKD_QC_N},
+ {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), NFKD_QC_N},
+ {RUNE_C(0x01EE51), RUNE_C(0x01EE52), NFKD_QC_N},
+ {RUNE_C(0x01EE54), RUNE_C(0x01EE54), NFKD_QC_N},
+ {RUNE_C(0x01EE57), RUNE_C(0x01EE57), NFKD_QC_N},
+ {RUNE_C(0x01EE59), RUNE_C(0x01EE59), NFKD_QC_N},
+ {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), NFKD_QC_N},
+ {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), NFKD_QC_N},
+ {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), NFKD_QC_N},
+ {RUNE_C(0x01EE61), RUNE_C(0x01EE62), NFKD_QC_N},
+ {RUNE_C(0x01EE64), RUNE_C(0x01EE64), NFKD_QC_N},
+ {RUNE_C(0x01EE67), RUNE_C(0x01EE6A), NFKD_QC_N},
+ {RUNE_C(0x01EE6C), RUNE_C(0x01EE72), NFKD_QC_N},
+ {RUNE_C(0x01EE74), RUNE_C(0x01EE77), NFKD_QC_N},
+ {RUNE_C(0x01EE79), RUNE_C(0x01EE7C), NFKD_QC_N},
+ {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), NFKD_QC_N},
+ {RUNE_C(0x01EE80), RUNE_C(0x01EE89), NFKD_QC_N},
+ {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), NFKD_QC_N},
+ {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), NFKD_QC_N},
+ {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), NFKD_QC_N},
+ {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), NFKD_QC_N},
+ {RUNE_C(0x01F100), RUNE_C(0x01F10A), NFKD_QC_N},
+ {RUNE_C(0x01F110), RUNE_C(0x01F12E), NFKD_QC_N},
+ {RUNE_C(0x01F130), RUNE_C(0x01F14F), NFKD_QC_N},
+ {RUNE_C(0x01F16A), RUNE_C(0x01F16C), NFKD_QC_N},
+ {RUNE_C(0x01F190), RUNE_C(0x01F190), NFKD_QC_N},
+ {RUNE_C(0x01F200), RUNE_C(0x01F202), NFKD_QC_N},
+ {RUNE_C(0x01F210), RUNE_C(0x01F23B), NFKD_QC_N},
+ {RUNE_C(0x01F240), RUNE_C(0x01F248), NFKD_QC_N},
+ {RUNE_C(0x01F250), RUNE_C(0x01F251), NFKD_QC_N},
+ {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), NFKD_QC_N},
+ {RUNE_C(0x02F800), RUNE_C(0x02FA1D), NFKD_QC_N},
+};
+
+_MLIB_DEFINE_BSEARCH(enum uprop_nfkd_qc, lookup, NFKD_QC_Y)
+
+enum uprop_nfkd_qc
+uprop_get_nfkd_qc(rune ch)
+{
+ return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);
+}