From 7672a052e519e2a6458e578d830b9436e3699777 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 9 Apr 2024 23:20:36 +0200 Subject: Add uprop_get_dt() --- gen/data-files | 1 + gen/prop/dt | 84 ++++ include/unicode/prop.h | 22 ++ lib/unicode/prop/uprop_get_dt.c | 830 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 937 insertions(+) create mode 100755 gen/prop/dt create mode 100644 lib/unicode/prop/uprop_get_dt.c diff --git a/gen/data-files b/gen/data-files index 0946f7e..3c87b73 100755 --- a/gen/data-files +++ b/gen/data-files @@ -13,6 +13,7 @@ DerivedCoreProperties.txt DerivedNormalizationProps.txt emoji/emoji-data.txt extracted/DerivedBinaryProperties.txt +extracted/DerivedDecompositionType.txt extracted/DerivedEastAsianWidth.txt extracted/DerivedNumericType.txt extracted/DerivedNumericValues.txt diff --git a/gen/prop/dt b/gen/prop/dt new file mode 100755 index 0000000..ba0582a --- /dev/null +++ b/gen/prop/dt @@ -0,0 +1,84 @@ +#!/bin/sh + +set -e +cd "${0%/*}/../.." +exec >lib/unicode/prop/uprop_get_dt.c + +gawk ' +BEGIN { + FS = "( *#.*| +; +)" + + map["Canonical"] = "CAN" + map["Compat"] = "COM" + map["Circle"] = "ENC" + map["Final"] = "FIN" + map["Font"] = "FONT" + map["Fraction"] = "FRA" + map["Initial"] = "INIT" + map["Isolated"] = "ISO" + map["Medial"] = "MED" + map["Narrow"] = "NAR" + map["Nobreak"] = "NB" + map["Small"] = "SML" + map["Square"] = "SQR" + map["Sub"] = "SUB" + map["Super"] = "SUP" + map["Vertical"] = "VERT" + map["Wide"] = "WIDE" + + + print "/* This file is autogenerated by gen/prop/dt; DO NOT EDIT. */" + print "" + print "#include \"__bsearch.h\"" + print "#include \"macros.h\"" + print "#include \"rune.h\"" + print "#include \"unicode/prop.h\"" + print "" +} + +/^[^#]/ { + n = split($1, a, /\.\./) + lo = strtonum("0X" a[1]) + hi = strtonum("0X" a[n]) + + for (i = lo; i <= hi; i++) { + gsub(/^; /, "", $2) + props[i] = "DT_" map[$2] + } +} + +END { + print "static constexpr enum uprop_dt lookup_lat1[] = {" + for (i = 0; i < 0x100; i++) { + if (i % 8 == 0) + printf "\t" + printf "%-8s%s", (props[i] ? props[i] : "DT_NONE") ",", \ + i % 8 == 7 ? "\n" : " " + } + print "};" + print "" + print "static const struct {" + print "\trune lo, hi;" + print "\tenum uprop_dt val;" + print "} lookup[] = {" + + for (i = 0x100; i <= 0x10FFFF; i++) { + if (!props[i]) + continue + lo = i + while (props[lo] == props[i + 1]) + i++ + printf "\t{RUNE_C(0x%06X), RUNE_C(0x%06X), %s},\n", lo, i, props[i] + } + + print "};" + print "" + print "__MLIB_DEFINE_BSEARCH(enum uprop_dt, lookup, DT_NONE)" + print "" + print "enum uprop_dt" + print "uprop_get_dt(rune ch)" + print "{" + print "\treturn ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);" + print "}" +} +' data/DerivedDecompositionType.txt diff --git a/include/unicode/prop.h b/include/unicode/prop.h index 1af318b..ea1ef60 100644 --- a/include/unicode/prop.h +++ b/include/unicode/prop.h @@ -11,6 +11,27 @@ enum uprop_bpt { BPT_O, /* Open */ }; +enum uprop_dt { + DT_NONE, /* None */ + DT_CAN, /* Canonical */ + DT_COM, /* Compat */ + DT_ENC, /* Circle */ + DT_FIN, /* Final */ + DT_FONT, /* Font */ + DT_FRA, /* Fraction */ + DT_INIT, /* Initial */ + DT_ISO, /* Isolated */ + DT_MED, /* Medial */ + DT_NAR, /* Narrow */ + DT_NB, /* Nobreak */ + DT_SML, /* Small */ + DT_SQR, /* Square */ + DT_SUB, /* Sub */ + DT_SUP, /* Super */ + DT_VERT, /* Vertical */ + DT_WIDE, /* Wide */ +}; + enum uprop_ea { EA_A, /* Ambiguous */ EA_F, /* Fullwidth */ @@ -72,6 +93,7 @@ enum uprop_nt { [[__nodiscard__, __unsequenced__]] double uprop_get_nv(rune); [[__nodiscard__, __unsequenced__]] enum uprop_bpt uprop_get_bpt(rune); +[[__nodiscard__, __unsequenced__]] enum uprop_dt uprop_get_dt(rune); [[__nodiscard__, __unsequenced__]] enum uprop_ea uprop_get_ea(rune); [[__nodiscard__, __unsequenced__]] enum uprop_gc uprop_get_gc(rune); [[__nodiscard__, __unsequenced__]] enum uprop_nt uprop_get_nt(rune); diff --git a/lib/unicode/prop/uprop_get_dt.c b/lib/unicode/prop/uprop_get_dt.c new file mode 100644 index 0000000..2ee015d --- /dev/null +++ b/lib/unicode/prop/uprop_get_dt.c @@ -0,0 +1,830 @@ +/* This file is autogenerated by gen/prop/dt; DO NOT EDIT. */ + +#include "__bsearch.h" +#include "macros.h" +#include "rune.h" +#include "unicode/prop.h" + +static constexpr enum uprop_dt lookup_lat1[] = { + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_NB, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_NONE, + DT_COM, DT_NONE, DT_SUP, DT_NONE, DT_NONE, DT_NONE, DT_NONE, DT_COM, + DT_NONE, DT_NONE, DT_SUP, DT_SUP, DT_COM, DT_COM, DT_NONE, DT_NONE, + DT_COM, DT_SUP, DT_SUP, DT_NONE, DT_FRA, DT_FRA, DT_FRA, DT_NONE, + DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, DT_CAN, + DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, + DT_NONE, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, + DT_NONE, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, DT_NONE, + DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, DT_CAN, + DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, + DT_NONE, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, + DT_NONE, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_CAN, DT_NONE, DT_CAN, +}; + +static const struct { + rune lo, hi; + enum uprop_dt val; +} lookup[] = { + {RUNE_C(0x000100), RUNE_C(0x00010F), DT_CAN}, + {RUNE_C(0x000112), RUNE_C(0x000125), DT_CAN}, + {RUNE_C(0x000128), RUNE_C(0x000130), DT_CAN}, + {RUNE_C(0x000132), RUNE_C(0x000133), DT_COM}, + {RUNE_C(0x000134), RUNE_C(0x000137), DT_CAN}, + {RUNE_C(0x000139), RUNE_C(0x00013E), DT_CAN}, + {RUNE_C(0x00013F), RUNE_C(0x000140), DT_COM}, + {RUNE_C(0x000143), RUNE_C(0x000148), DT_CAN}, + {RUNE_C(0x000149), RUNE_C(0x000149), DT_COM}, + {RUNE_C(0x00014C), RUNE_C(0x000151), DT_CAN}, + {RUNE_C(0x000154), RUNE_C(0x000165), DT_CAN}, + {RUNE_C(0x000168), RUNE_C(0x00017E), DT_CAN}, + {RUNE_C(0x00017F), RUNE_C(0x00017F), DT_COM}, + {RUNE_C(0x0001A0), RUNE_C(0x0001A1), DT_CAN}, + {RUNE_C(0x0001AF), RUNE_C(0x0001B0), DT_CAN}, + {RUNE_C(0x0001C4), RUNE_C(0x0001CC), DT_COM}, + {RUNE_C(0x0001CD), RUNE_C(0x0001DC), DT_CAN}, + {RUNE_C(0x0001DE), RUNE_C(0x0001E3), DT_CAN}, + {RUNE_C(0x0001E6), RUNE_C(0x0001F0), DT_CAN}, + {RUNE_C(0x0001F1), RUNE_C(0x0001F3), DT_COM}, + {RUNE_C(0x0001F4), RUNE_C(0x0001F5), DT_CAN}, + {RUNE_C(0x0001F8), RUNE_C(0x00021B), DT_CAN}, + {RUNE_C(0x00021E), RUNE_C(0x00021F), DT_CAN}, + {RUNE_C(0x000226), RUNE_C(0x000233), DT_CAN}, + {RUNE_C(0x0002B0), RUNE_C(0x0002B8), DT_SUP}, + {RUNE_C(0x0002D8), RUNE_C(0x0002DD), DT_COM}, + {RUNE_C(0x0002E0), RUNE_C(0x0002E4), DT_SUP}, + {RUNE_C(0x000340), RUNE_C(0x000341), DT_CAN}, + {RUNE_C(0x000343), RUNE_C(0x000344), DT_CAN}, + {RUNE_C(0x000374), RUNE_C(0x000374), DT_CAN}, + {RUNE_C(0x00037A), RUNE_C(0x00037A), DT_COM}, + {RUNE_C(0x00037E), RUNE_C(0x00037E), DT_CAN}, + {RUNE_C(0x000384), RUNE_C(0x000384), DT_COM}, + {RUNE_C(0x000385), RUNE_C(0x00038A), DT_CAN}, + {RUNE_C(0x00038C), RUNE_C(0x00038C), DT_CAN}, + {RUNE_C(0x00038E), RUNE_C(0x000390), DT_CAN}, + {RUNE_C(0x0003AA), RUNE_C(0x0003B0), DT_CAN}, + {RUNE_C(0x0003CA), RUNE_C(0x0003CE), DT_CAN}, + {RUNE_C(0x0003D0), RUNE_C(0x0003D2), DT_COM}, + {RUNE_C(0x0003D3), RUNE_C(0x0003D4), DT_CAN}, + {RUNE_C(0x0003D5), RUNE_C(0x0003D6), DT_COM}, + {RUNE_C(0x0003F0), RUNE_C(0x0003F2), DT_COM}, + {RUNE_C(0x0003F4), RUNE_C(0x0003F5), DT_COM}, + {RUNE_C(0x0003F9), RUNE_C(0x0003F9), DT_COM}, + {RUNE_C(0x000400), RUNE_C(0x000401), DT_CAN}, + {RUNE_C(0x000403), RUNE_C(0x000403), DT_CAN}, + {RUNE_C(0x000407), RUNE_C(0x000407), DT_CAN}, + {RUNE_C(0x00040C), RUNE_C(0x00040E), DT_CAN}, + {RUNE_C(0x000419), RUNE_C(0x000419), DT_CAN}, + {RUNE_C(0x000439), RUNE_C(0x000439), DT_CAN}, + {RUNE_C(0x000450), RUNE_C(0x000451), DT_CAN}, + {RUNE_C(0x000453), RUNE_C(0x000453), DT_CAN}, + {RUNE_C(0x000457), RUNE_C(0x000457), DT_CAN}, + {RUNE_C(0x00045C), RUNE_C(0x00045E), DT_CAN}, + {RUNE_C(0x000476), RUNE_C(0x000477), DT_CAN}, + {RUNE_C(0x0004C1), RUNE_C(0x0004C2), DT_CAN}, + {RUNE_C(0x0004D0), RUNE_C(0x0004D3), DT_CAN}, + {RUNE_C(0x0004D6), RUNE_C(0x0004D7), DT_CAN}, + {RUNE_C(0x0004DA), RUNE_C(0x0004DF), DT_CAN}, + {RUNE_C(0x0004E2), RUNE_C(0x0004E7), DT_CAN}, + {RUNE_C(0x0004EA), RUNE_C(0x0004F5), DT_CAN}, + {RUNE_C(0x0004F8), RUNE_C(0x0004F9), DT_CAN}, + {RUNE_C(0x000587), RUNE_C(0x000587), DT_COM}, + {RUNE_C(0x000622), RUNE_C(0x000626), DT_CAN}, + {RUNE_C(0x000675), RUNE_C(0x000678), DT_COM}, + {RUNE_C(0x0006C0), RUNE_C(0x0006C0), DT_CAN}, + {RUNE_C(0x0006C2), RUNE_C(0x0006C2), DT_CAN}, + {RUNE_C(0x0006D3), RUNE_C(0x0006D3), DT_CAN}, + {RUNE_C(0x000929), RUNE_C(0x000929), DT_CAN}, + {RUNE_C(0x000931), RUNE_C(0x000931), DT_CAN}, + {RUNE_C(0x000934), RUNE_C(0x000934), DT_CAN}, + {RUNE_C(0x000958), RUNE_C(0x00095F), DT_CAN}, + {RUNE_C(0x0009CB), RUNE_C(0x0009CC), DT_CAN}, + {RUNE_C(0x0009DC), RUNE_C(0x0009DD), DT_CAN}, + {RUNE_C(0x0009DF), RUNE_C(0x0009DF), DT_CAN}, + {RUNE_C(0x000A33), RUNE_C(0x000A33), DT_CAN}, + {RUNE_C(0x000A36), RUNE_C(0x000A36), DT_CAN}, + {RUNE_C(0x000A59), RUNE_C(0x000A5B), DT_CAN}, + {RUNE_C(0x000A5E), RUNE_C(0x000A5E), DT_CAN}, + {RUNE_C(0x000B48), RUNE_C(0x000B48), DT_CAN}, + {RUNE_C(0x000B4B), RUNE_C(0x000B4C), DT_CAN}, + {RUNE_C(0x000B5C), RUNE_C(0x000B5D), DT_CAN}, + {RUNE_C(0x000B94), RUNE_C(0x000B94), DT_CAN}, + {RUNE_C(0x000BCA), RUNE_C(0x000BCC), DT_CAN}, + {RUNE_C(0x000C48), RUNE_C(0x000C48), DT_CAN}, + {RUNE_C(0x000CC0), RUNE_C(0x000CC0), DT_CAN}, + {RUNE_C(0x000CC7), RUNE_C(0x000CC8), DT_CAN}, + {RUNE_C(0x000CCA), RUNE_C(0x000CCB), DT_CAN}, + {RUNE_C(0x000D4A), RUNE_C(0x000D4C), DT_CAN}, + {RUNE_C(0x000DDA), RUNE_C(0x000DDA), DT_CAN}, + {RUNE_C(0x000DDC), RUNE_C(0x000DDE), DT_CAN}, + {RUNE_C(0x000E33), RUNE_C(0x000E33), DT_COM}, + {RUNE_C(0x000EB3), RUNE_C(0x000EB3), DT_COM}, + {RUNE_C(0x000EDC), RUNE_C(0x000EDD), DT_COM}, + {RUNE_C(0x000F0C), RUNE_C(0x000F0C), DT_NB}, + {RUNE_C(0x000F43), RUNE_C(0x000F43), DT_CAN}, + {RUNE_C(0x000F4D), RUNE_C(0x000F4D), DT_CAN}, + {RUNE_C(0x000F52), RUNE_C(0x000F52), DT_CAN}, + {RUNE_C(0x000F57), RUNE_C(0x000F57), DT_CAN}, + {RUNE_C(0x000F5C), RUNE_C(0x000F5C), DT_CAN}, + {RUNE_C(0x000F69), RUNE_C(0x000F69), DT_CAN}, + {RUNE_C(0x000F73), RUNE_C(0x000F73), DT_CAN}, + {RUNE_C(0x000F75), RUNE_C(0x000F76), DT_CAN}, + {RUNE_C(0x000F77), RUNE_C(0x000F77), DT_COM}, + {RUNE_C(0x000F78), RUNE_C(0x000F78), DT_CAN}, + {RUNE_C(0x000F79), RUNE_C(0x000F79), DT_COM}, + {RUNE_C(0x000F81), RUNE_C(0x000F81), DT_CAN}, + {RUNE_C(0x000F93), RUNE_C(0x000F93), DT_CAN}, + {RUNE_C(0x000F9D), RUNE_C(0x000F9D), DT_CAN}, + {RUNE_C(0x000FA2), RUNE_C(0x000FA2), DT_CAN}, + {RUNE_C(0x000FA7), RUNE_C(0x000FA7), DT_CAN}, + {RUNE_C(0x000FAC), RUNE_C(0x000FAC), DT_CAN}, + {RUNE_C(0x000FB9), RUNE_C(0x000FB9), DT_CAN}, + {RUNE_C(0x001026), RUNE_C(0x001026), DT_CAN}, + {RUNE_C(0x0010FC), RUNE_C(0x0010FC), DT_SUP}, + {RUNE_C(0x001B06), RUNE_C(0x001B06), DT_CAN}, + {RUNE_C(0x001B08), RUNE_C(0x001B08), DT_CAN}, + {RUNE_C(0x001B0A), RUNE_C(0x001B0A), DT_CAN}, + {RUNE_C(0x001B0C), RUNE_C(0x001B0C), DT_CAN}, + {RUNE_C(0x001B0E), RUNE_C(0x001B0E), DT_CAN}, + {RUNE_C(0x001B12), RUNE_C(0x001B12), DT_CAN}, + {RUNE_C(0x001B3B), RUNE_C(0x001B3B), DT_CAN}, + {RUNE_C(0x001B3D), RUNE_C(0x001B3D), DT_CAN}, + {RUNE_C(0x001B40), RUNE_C(0x001B41), DT_CAN}, + {RUNE_C(0x001B43), RUNE_C(0x001B43), DT_CAN}, + {RUNE_C(0x001D2C), RUNE_C(0x001D2E), DT_SUP}, + {RUNE_C(0x001D30), RUNE_C(0x001D3A), DT_SUP}, + {RUNE_C(0x001D3C), RUNE_C(0x001D4D), DT_SUP}, + {RUNE_C(0x001D4F), RUNE_C(0x001D61), DT_SUP}, + {RUNE_C(0x001D62), RUNE_C(0x001D6A), DT_SUB}, + {RUNE_C(0x001D78), RUNE_C(0x001D78), DT_SUP}, + {RUNE_C(0x001D9B), RUNE_C(0x001DBF), DT_SUP}, + {RUNE_C(0x001E00), RUNE_C(0x001E99), DT_CAN}, + {RUNE_C(0x001E9A), RUNE_C(0x001E9A), DT_COM}, + {RUNE_C(0x001E9B), RUNE_C(0x001E9B), DT_CAN}, + {RUNE_C(0x001EA0), RUNE_C(0x001EF9), DT_CAN}, + {RUNE_C(0x001F00), RUNE_C(0x001F15), DT_CAN}, + {RUNE_C(0x001F18), RUNE_C(0x001F1D), DT_CAN}, + {RUNE_C(0x001F20), RUNE_C(0x001F45), DT_CAN}, + {RUNE_C(0x001F48), RUNE_C(0x001F4D), DT_CAN}, + {RUNE_C(0x001F50), RUNE_C(0x001F57), DT_CAN}, + {RUNE_C(0x001F59), RUNE_C(0x001F59), DT_CAN}, + {RUNE_C(0x001F5B), RUNE_C(0x001F5B), DT_CAN}, + {RUNE_C(0x001F5D), RUNE_C(0x001F5D), DT_CAN}, + {RUNE_C(0x001F5F), RUNE_C(0x001F7D), DT_CAN}, + {RUNE_C(0x001F80), RUNE_C(0x001FB4), DT_CAN}, + {RUNE_C(0x001FB6), RUNE_C(0x001FBC), DT_CAN}, + {RUNE_C(0x001FBD), RUNE_C(0x001FBD), DT_COM}, + {RUNE_C(0x001FBE), RUNE_C(0x001FBE), DT_CAN}, + {RUNE_C(0x001FBF), RUNE_C(0x001FC0), DT_COM}, + {RUNE_C(0x001FC1), RUNE_C(0x001FC4), DT_CAN}, + {RUNE_C(0x001FC6), RUNE_C(0x001FD3), DT_CAN}, + {RUNE_C(0x001FD6), RUNE_C(0x001FDB), DT_CAN}, + {RUNE_C(0x001FDD), RUNE_C(0x001FEF), DT_CAN}, + {RUNE_C(0x001FF2), RUNE_C(0x001FF4), DT_CAN}, + {RUNE_C(0x001FF6), RUNE_C(0x001FFD), DT_CAN}, + {RUNE_C(0x001FFE), RUNE_C(0x001FFE), DT_COM}, + {RUNE_C(0x002000), RUNE_C(0x002001), DT_CAN}, + {RUNE_C(0x002002), RUNE_C(0x002006), DT_COM}, + {RUNE_C(0x002007), RUNE_C(0x002007), DT_NB}, + {RUNE_C(0x002008), RUNE_C(0x00200A), DT_COM}, + {RUNE_C(0x002011), RUNE_C(0x002011), DT_NB}, + {RUNE_C(0x002017), RUNE_C(0x002017), DT_COM}, + {RUNE_C(0x002024), RUNE_C(0x002026), DT_COM}, + {RUNE_C(0x00202F), RUNE_C(0x00202F), DT_NB}, + {RUNE_C(0x002033), RUNE_C(0x002034), DT_COM}, + {RUNE_C(0x002036), RUNE_C(0x002037), DT_COM}, + {RUNE_C(0x00203C), RUNE_C(0x00203C), DT_COM}, + {RUNE_C(0x00203E), RUNE_C(0x00203E), DT_COM}, + {RUNE_C(0x002047), RUNE_C(0x002049), DT_COM}, + {RUNE_C(0x002057), RUNE_C(0x002057), DT_COM}, + {RUNE_C(0x00205F), RUNE_C(0x00205F), DT_COM}, + {RUNE_C(0x002070), RUNE_C(0x002071), DT_SUP}, + {RUNE_C(0x002074), RUNE_C(0x00207F), DT_SUP}, + {RUNE_C(0x002080), RUNE_C(0x00208E), DT_SUB}, + {RUNE_C(0x002090), RUNE_C(0x00209C), DT_SUB}, + {RUNE_C(0x0020A8), RUNE_C(0x0020A8), DT_COM}, + {RUNE_C(0x002100), RUNE_C(0x002101), DT_COM}, + {RUNE_C(0x002102), RUNE_C(0x002102), DT_FONT}, + {RUNE_C(0x002103), RUNE_C(0x002103), DT_COM}, + {RUNE_C(0x002105), RUNE_C(0x002107), DT_COM}, + {RUNE_C(0x002109), RUNE_C(0x002109), DT_COM}, + {RUNE_C(0x00210A), RUNE_C(0x002113), DT_FONT}, + {RUNE_C(0x002115), RUNE_C(0x002115), DT_FONT}, + {RUNE_C(0x002116), RUNE_C(0x002116), DT_COM}, + {RUNE_C(0x002119), RUNE_C(0x00211D), DT_FONT}, + {RUNE_C(0x002120), RUNE_C(0x002120), DT_SUP}, + {RUNE_C(0x002121), RUNE_C(0x002121), DT_COM}, + {RUNE_C(0x002122), RUNE_C(0x002122), DT_SUP}, + {RUNE_C(0x002124), RUNE_C(0x002124), DT_FONT}, + {RUNE_C(0x002126), RUNE_C(0x002126), DT_CAN}, + {RUNE_C(0x002128), RUNE_C(0x002128), DT_FONT}, + {RUNE_C(0x00212A), RUNE_C(0x00212B), DT_CAN}, + {RUNE_C(0x00212C), RUNE_C(0x00212D), DT_FONT}, + {RUNE_C(0x00212F), RUNE_C(0x002131), DT_FONT}, + {RUNE_C(0x002133), RUNE_C(0x002134), DT_FONT}, + {RUNE_C(0x002135), RUNE_C(0x002138), DT_COM}, + {RUNE_C(0x002139), RUNE_C(0x002139), DT_FONT}, + {RUNE_C(0x00213B), RUNE_C(0x00213B), DT_COM}, + {RUNE_C(0x00213C), RUNE_C(0x002140), DT_FONT}, + {RUNE_C(0x002145), RUNE_C(0x002149), DT_FONT}, + {RUNE_C(0x002150), RUNE_C(0x00215F), DT_FRA}, + {RUNE_C(0x002160), RUNE_C(0x00217F), DT_COM}, + {RUNE_C(0x002189), RUNE_C(0x002189), DT_FRA}, + {RUNE_C(0x00219A), RUNE_C(0x00219B), DT_CAN}, + {RUNE_C(0x0021AE), RUNE_C(0x0021AE), DT_CAN}, + {RUNE_C(0x0021CD), RUNE_C(0x0021CF), DT_CAN}, + {RUNE_C(0x002204), RUNE_C(0x002204), DT_CAN}, + {RUNE_C(0x002209), RUNE_C(0x002209), DT_CAN}, + {RUNE_C(0x00220C), RUNE_C(0x00220C), DT_CAN}, + {RUNE_C(0x002224), RUNE_C(0x002224), DT_CAN}, + {RUNE_C(0x002226), RUNE_C(0x002226), DT_CAN}, + {RUNE_C(0x00222C), RUNE_C(0x00222D), DT_COM}, + {RUNE_C(0x00222F), RUNE_C(0x002230), DT_COM}, + {RUNE_C(0x002241), RUNE_C(0x002241), DT_CAN}, + {RUNE_C(0x002244), RUNE_C(0x002244), DT_CAN}, + {RUNE_C(0x002247), RUNE_C(0x002247), DT_CAN}, + {RUNE_C(0x002249), RUNE_C(0x002249), DT_CAN}, + {RUNE_C(0x002260), RUNE_C(0x002260), DT_CAN}, + {RUNE_C(0x002262), RUNE_C(0x002262), DT_CAN}, + {RUNE_C(0x00226D), RUNE_C(0x002271), DT_CAN}, + {RUNE_C(0x002274), RUNE_C(0x002275), DT_CAN}, + {RUNE_C(0x002278), RUNE_C(0x002279), DT_CAN}, + {RUNE_C(0x002280), RUNE_C(0x002281), DT_CAN}, + {RUNE_C(0x002284), RUNE_C(0x002285), DT_CAN}, + {RUNE_C(0x002288), RUNE_C(0x002289), DT_CAN}, + {RUNE_C(0x0022AC), RUNE_C(0x0022AF), DT_CAN}, + {RUNE_C(0x0022E0), RUNE_C(0x0022E3), DT_CAN}, + {RUNE_C(0x0022EA), RUNE_C(0x0022ED), DT_CAN}, + {RUNE_C(0x002329), RUNE_C(0x00232A), DT_CAN}, + {RUNE_C(0x002460), RUNE_C(0x002473), DT_ENC}, + {RUNE_C(0x002474), RUNE_C(0x0024B5), DT_COM}, + {RUNE_C(0x0024B6), RUNE_C(0x0024EA), DT_ENC}, + {RUNE_C(0x002A0C), RUNE_C(0x002A0C), DT_COM}, + {RUNE_C(0x002A74), RUNE_C(0x002A76), DT_COM}, + {RUNE_C(0x002ADC), RUNE_C(0x002ADC), DT_CAN}, + {RUNE_C(0x002C7C), RUNE_C(0x002C7C), DT_SUB}, + {RUNE_C(0x002C7D), RUNE_C(0x002C7D), DT_SUP}, + {RUNE_C(0x002D6F), RUNE_C(0x002D6F), DT_SUP}, + {RUNE_C(0x002E9F), RUNE_C(0x002E9F), DT_COM}, + {RUNE_C(0x002EF3), RUNE_C(0x002EF3), DT_COM}, + {RUNE_C(0x002F00), RUNE_C(0x002FD5), DT_COM}, + {RUNE_C(0x003000), RUNE_C(0x003000), DT_WIDE}, + {RUNE_C(0x003036), RUNE_C(0x003036), DT_COM}, + {RUNE_C(0x003038), RUNE_C(0x00303A), DT_COM}, + {RUNE_C(0x00304C), RUNE_C(0x00304C), DT_CAN}, + {RUNE_C(0x00304E), RUNE_C(0x00304E), DT_CAN}, + {RUNE_C(0x003050), RUNE_C(0x003050), DT_CAN}, + {RUNE_C(0x003052), RUNE_C(0x003052), DT_CAN}, + {RUNE_C(0x003054), RUNE_C(0x003054), DT_CAN}, + {RUNE_C(0x003056), RUNE_C(0x003056), DT_CAN}, + {RUNE_C(0x003058), RUNE_C(0x003058), DT_CAN}, + {RUNE_C(0x00305A), RUNE_C(0x00305A), DT_CAN}, + {RUNE_C(0x00305C), RUNE_C(0x00305C), DT_CAN}, + {RUNE_C(0x00305E), RUNE_C(0x00305E), DT_CAN}, + {RUNE_C(0x003060), RUNE_C(0x003060), DT_CAN}, + {RUNE_C(0x003062), RUNE_C(0x003062), DT_CAN}, + {RUNE_C(0x003065), RUNE_C(0x003065), DT_CAN}, + {RUNE_C(0x003067), RUNE_C(0x003067), DT_CAN}, + {RUNE_C(0x003069), RUNE_C(0x003069), DT_CAN}, + {RUNE_C(0x003070), RUNE_C(0x003071), DT_CAN}, + {RUNE_C(0x003073), RUNE_C(0x003074), DT_CAN}, + {RUNE_C(0x003076), RUNE_C(0x003077), DT_CAN}, + {RUNE_C(0x003079), RUNE_C(0x00307A), DT_CAN}, + {RUNE_C(0x00307C), RUNE_C(0x00307D), DT_CAN}, + {RUNE_C(0x003094), RUNE_C(0x003094), DT_CAN}, + {RUNE_C(0x00309B), RUNE_C(0x00309C), DT_COM}, + {RUNE_C(0x00309E), RUNE_C(0x00309E), DT_CAN}, + {RUNE_C(0x00309F), RUNE_C(0x00309F), DT_VERT}, + {RUNE_C(0x0030AC), RUNE_C(0x0030AC), DT_CAN}, + {RUNE_C(0x0030AE), RUNE_C(0x0030AE), DT_CAN}, + {RUNE_C(0x0030B0), RUNE_C(0x0030B0), DT_CAN}, + {RUNE_C(0x0030B2), RUNE_C(0x0030B2), DT_CAN}, + {RUNE_C(0x0030B4), RUNE_C(0x0030B4), DT_CAN}, + {RUNE_C(0x0030B6), RUNE_C(0x0030B6), DT_CAN}, + {RUNE_C(0x0030B8), RUNE_C(0x0030B8), DT_CAN}, + {RUNE_C(0x0030BA), RUNE_C(0x0030BA), DT_CAN}, + {RUNE_C(0x0030BC), RUNE_C(0x0030BC), DT_CAN}, + {RUNE_C(0x0030BE), RUNE_C(0x0030BE), DT_CAN}, + {RUNE_C(0x0030C0), RUNE_C(0x0030C0), DT_CAN}, + {RUNE_C(0x0030C2), RUNE_C(0x0030C2), DT_CAN}, + {RUNE_C(0x0030C5), RUNE_C(0x0030C5), DT_CAN}, + {RUNE_C(0x0030C7), RUNE_C(0x0030C7), DT_CAN}, + {RUNE_C(0x0030C9), RUNE_C(0x0030C9), DT_CAN}, + {RUNE_C(0x0030D0), RUNE_C(0x0030D1), DT_CAN}, + {RUNE_C(0x0030D3), RUNE_C(0x0030D4), DT_CAN}, + {RUNE_C(0x0030D6), RUNE_C(0x0030D7), DT_CAN}, + {RUNE_C(0x0030D9), RUNE_C(0x0030DA), DT_CAN}, + {RUNE_C(0x0030DC), RUNE_C(0x0030DD), DT_CAN}, + {RUNE_C(0x0030F4), RUNE_C(0x0030F4), DT_CAN}, + {RUNE_C(0x0030F7), RUNE_C(0x0030FA), DT_CAN}, + {RUNE_C(0x0030FE), RUNE_C(0x0030FE), DT_CAN}, + {RUNE_C(0x0030FF), RUNE_C(0x0030FF), DT_VERT}, + {RUNE_C(0x003131), RUNE_C(0x00318E), DT_COM}, + {RUNE_C(0x003192), RUNE_C(0x00319F), DT_SUP}, + {RUNE_C(0x003200), RUNE_C(0x00321E), DT_COM}, + {RUNE_C(0x003220), RUNE_C(0x003243), DT_COM}, + {RUNE_C(0x003244), RUNE_C(0x003247), DT_ENC}, + {RUNE_C(0x003250), RUNE_C(0x003250), DT_SQR}, + {RUNE_C(0x003251), RUNE_C(0x00327E), DT_ENC}, + {RUNE_C(0x003280), RUNE_C(0x0032BF), DT_ENC}, + {RUNE_C(0x0032C0), RUNE_C(0x0032CB), DT_COM}, + {RUNE_C(0x0032CC), RUNE_C(0x0032CF), DT_SQR}, + {RUNE_C(0x0032D0), RUNE_C(0x0032FE), DT_ENC}, + {RUNE_C(0x0032FF), RUNE_C(0x003357), DT_SQR}, + {RUNE_C(0x003358), RUNE_C(0x003370), DT_COM}, + {RUNE_C(0x003371), RUNE_C(0x0033DF), DT_SQR}, + {RUNE_C(0x0033E0), RUNE_C(0x0033FE), DT_COM}, + {RUNE_C(0x0033FF), RUNE_C(0x0033FF), DT_SQR}, + {RUNE_C(0x00A69C), RUNE_C(0x00A69D), DT_SUP}, + {RUNE_C(0x00A770), RUNE_C(0x00A770), DT_SUP}, + {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), DT_SUP}, + {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), DT_SUP}, + {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), DT_SUP}, + {RUNE_C(0x00AB69), RUNE_C(0x00AB69), DT_SUP}, + {RUNE_C(0x00AC00), RUNE_C(0x00D7A3), DT_CAN}, + {RUNE_C(0x00F900), RUNE_C(0x00FA0D), DT_CAN}, + {RUNE_C(0x00FA10), RUNE_C(0x00FA10), DT_CAN}, + {RUNE_C(0x00FA12), RUNE_C(0x00FA12), DT_CAN}, + {RUNE_C(0x00FA15), RUNE_C(0x00FA1E), DT_CAN}, + {RUNE_C(0x00FA20), RUNE_C(0x00FA20), DT_CAN}, + {RUNE_C(0x00FA22), RUNE_C(0x00FA22), DT_CAN}, + {RUNE_C(0x00FA25), RUNE_C(0x00FA26), DT_CAN}, + {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), DT_CAN}, + {RUNE_C(0x00FA70), RUNE_C(0x00FAD9), DT_CAN}, + {RUNE_C(0x00FB00), RUNE_C(0x00FB06), DT_COM}, + {RUNE_C(0x00FB13), RUNE_C(0x00FB17), DT_COM}, + {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), DT_CAN}, + {RUNE_C(0x00FB1F), RUNE_C(0x00FB1F), DT_CAN}, + {RUNE_C(0x00FB20), RUNE_C(0x00FB29), DT_FONT}, + {RUNE_C(0x00FB2A), RUNE_C(0x00FB36), DT_CAN}, + {RUNE_C(0x00FB38), RUNE_C(0x00FB3C), DT_CAN}, + {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), DT_CAN}, + {RUNE_C(0x00FB40), RUNE_C(0x00FB41), DT_CAN}, + {RUNE_C(0x00FB43), RUNE_C(0x00FB44), DT_CAN}, + {RUNE_C(0x00FB46), RUNE_C(0x00FB4E), DT_CAN}, + {RUNE_C(0x00FB4F), RUNE_C(0x00FB4F), DT_COM}, + {RUNE_C(0x00FB50), RUNE_C(0x00FB50), DT_ISO}, + {RUNE_C(0x00FB51), RUNE_C(0x00FB51), DT_FIN}, + {RUNE_C(0x00FB52), RUNE_C(0x00FB52), DT_ISO}, + {RUNE_C(0x00FB53), RUNE_C(0x00FB53), DT_FIN}, + {RUNE_C(0x00FB54), RUNE_C(0x00FB54), DT_INIT}, + {RUNE_C(0x00FB55), RUNE_C(0x00FB55), DT_MED}, + {RUNE_C(0x00FB56), RUNE_C(0x00FB56), DT_ISO}, + {RUNE_C(0x00FB57), RUNE_C(0x00FB57), DT_FIN}, + {RUNE_C(0x00FB58), RUNE_C(0x00FB58), DT_INIT}, + {RUNE_C(0x00FB59), RUNE_C(0x00FB59), DT_MED}, + {RUNE_C(0x00FB5A), RUNE_C(0x00FB5A), DT_ISO}, + {RUNE_C(0x00FB5B), RUNE_C(0x00FB5B), DT_FIN}, + {RUNE_C(0x00FB5C), RUNE_C(0x00FB5C), DT_INIT}, + {RUNE_C(0x00FB5D), RUNE_C(0x00FB5D), DT_MED}, + {RUNE_C(0x00FB5E), RUNE_C(0x00FB5E), DT_ISO}, + {RUNE_C(0x00FB5F), RUNE_C(0x00FB5F), DT_FIN}, + {RUNE_C(0x00FB60), RUNE_C(0x00FB60), DT_INIT}, + {RUNE_C(0x00FB61), RUNE_C(0x00FB61), DT_MED}, + {RUNE_C(0x00FB62), RUNE_C(0x00FB62), DT_ISO}, + {RUNE_C(0x00FB63), RUNE_C(0x00FB63), DT_FIN}, + {RUNE_C(0x00FB64), RUNE_C(0x00FB64), DT_INIT}, + {RUNE_C(0x00FB65), RUNE_C(0x00FB65), DT_MED}, + {RUNE_C(0x00FB66), RUNE_C(0x00FB66), DT_ISO}, + {RUNE_C(0x00FB67), RUNE_C(0x00FB67), DT_FIN}, + {RUNE_C(0x00FB68), RUNE_C(0x00FB68), DT_INIT}, + {RUNE_C(0x00FB69), RUNE_C(0x00FB69), DT_MED}, + {RUNE_C(0x00FB6A), RUNE_C(0x00FB6A), DT_ISO}, + {RUNE_C(0x00FB6B), RUNE_C(0x00FB6B), DT_FIN}, + {RUNE_C(0x00FB6C), RUNE_C(0x00FB6C), DT_INIT}, + {RUNE_C(0x00FB6D), RUNE_C(0x00FB6D), DT_MED}, + {RUNE_C(0x00FB6E), RUNE_C(0x00FB6E), DT_ISO}, + {RUNE_C(0x00FB6F), RUNE_C(0x00FB6F), DT_FIN}, + {RUNE_C(0x00FB70), RUNE_C(0x00FB70), DT_INIT}, + {RUNE_C(0x00FB71), RUNE_C(0x00FB71), DT_MED}, + {RUNE_C(0x00FB72), RUNE_C(0x00FB72), DT_ISO}, + {RUNE_C(0x00FB73), RUNE_C(0x00FB73), DT_FIN}, + {RUNE_C(0x00FB74), RUNE_C(0x00FB74), DT_INIT}, + {RUNE_C(0x00FB75), RUNE_C(0x00FB75), DT_MED}, + {RUNE_C(0x00FB76), RUNE_C(0x00FB76), DT_ISO}, + {RUNE_C(0x00FB77), RUNE_C(0x00FB77), DT_FIN}, + {RUNE_C(0x00FB78), RUNE_C(0x00FB78), DT_INIT}, + {RUNE_C(0x00FB79), RUNE_C(0x00FB79), DT_MED}, + {RUNE_C(0x00FB7A), RUNE_C(0x00FB7A), DT_ISO}, + {RUNE_C(0x00FB7B), RUNE_C(0x00FB7B), DT_FIN}, + {RUNE_C(0x00FB7C), RUNE_C(0x00FB7C), DT_INIT}, + {RUNE_C(0x00FB7D), RUNE_C(0x00FB7D), DT_MED}, + {RUNE_C(0x00FB7E), RUNE_C(0x00FB7E), DT_ISO}, + {RUNE_C(0x00FB7F), RUNE_C(0x00FB7F), DT_FIN}, + {RUNE_C(0x00FB80), RUNE_C(0x00FB80), DT_INIT}, + {RUNE_C(0x00FB81), RUNE_C(0x00FB81), DT_MED}, + {RUNE_C(0x00FB82), RUNE_C(0x00FB82), DT_ISO}, + {RUNE_C(0x00FB83), RUNE_C(0x00FB83), DT_FIN}, + {RUNE_C(0x00FB84), RUNE_C(0x00FB84), DT_ISO}, + {RUNE_C(0x00FB85), RUNE_C(0x00FB85), DT_FIN}, + {RUNE_C(0x00FB86), RUNE_C(0x00FB86), DT_ISO}, + {RUNE_C(0x00FB87), RUNE_C(0x00FB87), DT_FIN}, + {RUNE_C(0x00FB88), RUNE_C(0x00FB88), DT_ISO}, + {RUNE_C(0x00FB89), RUNE_C(0x00FB89), DT_FIN}, + {RUNE_C(0x00FB8A), RUNE_C(0x00FB8A), DT_ISO}, + {RUNE_C(0x00FB8B), RUNE_C(0x00FB8B), DT_FIN}, + {RUNE_C(0x00FB8C), RUNE_C(0x00FB8C), DT_ISO}, + {RUNE_C(0x00FB8D), RUNE_C(0x00FB8D), DT_FIN}, + {RUNE_C(0x00FB8E), RUNE_C(0x00FB8E), DT_ISO}, + {RUNE_C(0x00FB8F), RUNE_C(0x00FB8F), DT_FIN}, + {RUNE_C(0x00FB90), RUNE_C(0x00FB90), DT_INIT}, + {RUNE_C(0x00FB91), RUNE_C(0x00FB91), DT_MED}, + {RUNE_C(0x00FB92), RUNE_C(0x00FB92), DT_ISO}, + {RUNE_C(0x00FB93), RUNE_C(0x00FB93), DT_FIN}, + {RUNE_C(0x00FB94), RUNE_C(0x00FB94), DT_INIT}, + {RUNE_C(0x00FB95), RUNE_C(0x00FB95), DT_MED}, + {RUNE_C(0x00FB96), RUNE_C(0x00FB96), DT_ISO}, + {RUNE_C(0x00FB97), RUNE_C(0x00FB97), DT_FIN}, + {RUNE_C(0x00FB98), RUNE_C(0x00FB98), DT_INIT}, + {RUNE_C(0x00FB99), RUNE_C(0x00FB99), DT_MED}, + {RUNE_C(0x00FB9A), RUNE_C(0x00FB9A), DT_ISO}, + {RUNE_C(0x00FB9B), RUNE_C(0x00FB9B), DT_FIN}, + {RUNE_C(0x00FB9C), RUNE_C(0x00FB9C), DT_INIT}, + {RUNE_C(0x00FB9D), RUNE_C(0x00FB9D), DT_MED}, + {RUNE_C(0x00FB9E), RUNE_C(0x00FB9E), DT_ISO}, + {RUNE_C(0x00FB9F), RUNE_C(0x00FB9F), DT_FIN}, + {RUNE_C(0x00FBA0), RUNE_C(0x00FBA0), DT_ISO}, + {RUNE_C(0x00FBA1), RUNE_C(0x00FBA1), DT_FIN}, + {RUNE_C(0x00FBA2), RUNE_C(0x00FBA2), DT_INIT}, + {RUNE_C(0x00FBA3), RUNE_C(0x00FBA3), DT_MED}, + {RUNE_C(0x00FBA4), RUNE_C(0x00FBA4), DT_ISO}, + {RUNE_C(0x00FBA5), RUNE_C(0x00FBA5), DT_FIN}, + {RUNE_C(0x00FBA6), RUNE_C(0x00FBA6), DT_ISO}, + {RUNE_C(0x00FBA7), RUNE_C(0x00FBA7), DT_FIN}, + {RUNE_C(0x00FBA8), RUNE_C(0x00FBA8), DT_INIT}, + {RUNE_C(0x00FBA9), RUNE_C(0x00FBA9), DT_MED}, + {RUNE_C(0x00FBAA), RUNE_C(0x00FBAA), DT_ISO}, + {RUNE_C(0x00FBAB), RUNE_C(0x00FBAB), DT_FIN}, + {RUNE_C(0x00FBAC), RUNE_C(0x00FBAC), DT_INIT}, + {RUNE_C(0x00FBAD), RUNE_C(0x00FBAD), DT_MED}, + {RUNE_C(0x00FBAE), RUNE_C(0x00FBAE), DT_ISO}, + {RUNE_C(0x00FBAF), RUNE_C(0x00FBAF), DT_FIN}, + {RUNE_C(0x00FBB0), RUNE_C(0x00FBB0), DT_ISO}, + {RUNE_C(0x00FBB1), RUNE_C(0x00FBB1), DT_FIN}, + {RUNE_C(0x00FBD3), RUNE_C(0x00FBD3), DT_ISO}, + {RUNE_C(0x00FBD4), RUNE_C(0x00FBD4), DT_FIN}, + {RUNE_C(0x00FBD5), RUNE_C(0x00FBD5), DT_INIT}, + {RUNE_C(0x00FBD6), RUNE_C(0x00FBD6), DT_MED}, + {RUNE_C(0x00FBD7), RUNE_C(0x00FBD7), DT_ISO}, + {RUNE_C(0x00FBD8), RUNE_C(0x00FBD8), DT_FIN}, + {RUNE_C(0x00FBD9), RUNE_C(0x00FBD9), DT_ISO}, + {RUNE_C(0x00FBDA), RUNE_C(0x00FBDA), DT_FIN}, + {RUNE_C(0x00FBDB), RUNE_C(0x00FBDB), DT_ISO}, + {RUNE_C(0x00FBDC), RUNE_C(0x00FBDC), DT_FIN}, + {RUNE_C(0x00FBDD), RUNE_C(0x00FBDE), DT_ISO}, + {RUNE_C(0x00FBDF), RUNE_C(0x00FBDF), DT_FIN}, + {RUNE_C(0x00FBE0), RUNE_C(0x00FBE0), DT_ISO}, + {RUNE_C(0x00FBE1), RUNE_C(0x00FBE1), DT_FIN}, + {RUNE_C(0x00FBE2), RUNE_C(0x00FBE2), DT_ISO}, + {RUNE_C(0x00FBE3), RUNE_C(0x00FBE3), DT_FIN}, + {RUNE_C(0x00FBE4), RUNE_C(0x00FBE4), DT_ISO}, + {RUNE_C(0x00FBE5), RUNE_C(0x00FBE5), DT_FIN}, + {RUNE_C(0x00FBE6), RUNE_C(0x00FBE6), DT_INIT}, + {RUNE_C(0x00FBE7), RUNE_C(0x00FBE7), DT_MED}, + {RUNE_C(0x00FBE8), RUNE_C(0x00FBE8), DT_INIT}, + {RUNE_C(0x00FBE9), RUNE_C(0x00FBE9), DT_MED}, + {RUNE_C(0x00FBEA), RUNE_C(0x00FBEA), DT_ISO}, + {RUNE_C(0x00FBEB), RUNE_C(0x00FBEB), DT_FIN}, + {RUNE_C(0x00FBEC), RUNE_C(0x00FBEC), DT_ISO}, + {RUNE_C(0x00FBED), RUNE_C(0x00FBED), DT_FIN}, + {RUNE_C(0x00FBEE), RUNE_C(0x00FBEE), DT_ISO}, + {RUNE_C(0x00FBEF), RUNE_C(0x00FBEF), DT_FIN}, + {RUNE_C(0x00FBF0), RUNE_C(0x00FBF0), DT_ISO}, + {RUNE_C(0x00FBF1), RUNE_C(0x00FBF1), DT_FIN}, + {RUNE_C(0x00FBF2), RUNE_C(0x00FBF2), DT_ISO}, + {RUNE_C(0x00FBF3), RUNE_C(0x00FBF3), DT_FIN}, + {RUNE_C(0x00FBF4), RUNE_C(0x00FBF4), DT_ISO}, + {RUNE_C(0x00FBF5), RUNE_C(0x00FBF5), DT_FIN}, + {RUNE_C(0x00FBF6), RUNE_C(0x00FBF6), DT_ISO}, + {RUNE_C(0x00FBF7), RUNE_C(0x00FBF7), DT_FIN}, + {RUNE_C(0x00FBF8), RUNE_C(0x00FBF8), DT_INIT}, + {RUNE_C(0x00FBF9), RUNE_C(0x00FBF9), DT_ISO}, + {RUNE_C(0x00FBFA), RUNE_C(0x00FBFA), DT_FIN}, + {RUNE_C(0x00FBFB), RUNE_C(0x00FBFB), DT_INIT}, + {RUNE_C(0x00FBFC), RUNE_C(0x00FBFC), DT_ISO}, + {RUNE_C(0x00FBFD), RUNE_C(0x00FBFD), DT_FIN}, + {RUNE_C(0x00FBFE), RUNE_C(0x00FBFE), DT_INIT}, + {RUNE_C(0x00FBFF), RUNE_C(0x00FBFF), DT_MED}, + {RUNE_C(0x00FC00), RUNE_C(0x00FC63), DT_ISO}, + {RUNE_C(0x00FC64), RUNE_C(0x00FC96), DT_FIN}, + {RUNE_C(0x00FC97), RUNE_C(0x00FCDE), DT_INIT}, + {RUNE_C(0x00FCDF), RUNE_C(0x00FCF4), DT_MED}, + {RUNE_C(0x00FCF5), RUNE_C(0x00FD10), DT_ISO}, + {RUNE_C(0x00FD11), RUNE_C(0x00FD2C), DT_FIN}, + {RUNE_C(0x00FD2D), RUNE_C(0x00FD33), DT_INIT}, + {RUNE_C(0x00FD34), RUNE_C(0x00FD3B), DT_MED}, + {RUNE_C(0x00FD3C), RUNE_C(0x00FD3C), DT_FIN}, + {RUNE_C(0x00FD3D), RUNE_C(0x00FD3D), DT_ISO}, + {RUNE_C(0x00FD50), RUNE_C(0x00FD50), DT_INIT}, + {RUNE_C(0x00FD51), RUNE_C(0x00FD51), DT_FIN}, + {RUNE_C(0x00FD52), RUNE_C(0x00FD57), DT_INIT}, + {RUNE_C(0x00FD58), RUNE_C(0x00FD58), DT_FIN}, + {RUNE_C(0x00FD59), RUNE_C(0x00FD59), DT_INIT}, + {RUNE_C(0x00FD5A), RUNE_C(0x00FD5B), DT_FIN}, + {RUNE_C(0x00FD5C), RUNE_C(0x00FD5D), DT_INIT}, + {RUNE_C(0x00FD5E), RUNE_C(0x00FD5F), DT_FIN}, + {RUNE_C(0x00FD60), RUNE_C(0x00FD61), DT_INIT}, + {RUNE_C(0x00FD62), RUNE_C(0x00FD62), DT_FIN}, + {RUNE_C(0x00FD63), RUNE_C(0x00FD63), DT_INIT}, + {RUNE_C(0x00FD64), RUNE_C(0x00FD64), DT_FIN}, + {RUNE_C(0x00FD65), RUNE_C(0x00FD65), DT_INIT}, + {RUNE_C(0x00FD66), RUNE_C(0x00FD67), DT_FIN}, + {RUNE_C(0x00FD68), RUNE_C(0x00FD68), DT_INIT}, + {RUNE_C(0x00FD69), RUNE_C(0x00FD6A), DT_FIN}, + {RUNE_C(0x00FD6B), RUNE_C(0x00FD6B), DT_INIT}, + {RUNE_C(0x00FD6C), RUNE_C(0x00FD6C), DT_FIN}, + {RUNE_C(0x00FD6D), RUNE_C(0x00FD6D), DT_INIT}, + {RUNE_C(0x00FD6E), RUNE_C(0x00FD6F), DT_FIN}, + {RUNE_C(0x00FD70), RUNE_C(0x00FD70), DT_INIT}, + {RUNE_C(0x00FD71), RUNE_C(0x00FD71), DT_FIN}, + {RUNE_C(0x00FD72), RUNE_C(0x00FD73), DT_INIT}, + {RUNE_C(0x00FD74), RUNE_C(0x00FD76), DT_FIN}, + {RUNE_C(0x00FD77), RUNE_C(0x00FD77), DT_INIT}, + {RUNE_C(0x00FD78), RUNE_C(0x00FD7C), DT_FIN}, + {RUNE_C(0x00FD7D), RUNE_C(0x00FD7D), DT_INIT}, + {RUNE_C(0x00FD7E), RUNE_C(0x00FD82), DT_FIN}, + {RUNE_C(0x00FD83), RUNE_C(0x00FD83), DT_INIT}, + {RUNE_C(0x00FD84), RUNE_C(0x00FD85), DT_FIN}, + {RUNE_C(0x00FD86), RUNE_C(0x00FD86), DT_INIT}, + {RUNE_C(0x00FD87), RUNE_C(0x00FD87), DT_FIN}, + {RUNE_C(0x00FD88), RUNE_C(0x00FD8A), DT_INIT}, + {RUNE_C(0x00FD8B), RUNE_C(0x00FD8B), DT_FIN}, + {RUNE_C(0x00FD8C), RUNE_C(0x00FD8F), DT_INIT}, + {RUNE_C(0x00FD92), RUNE_C(0x00FD95), DT_INIT}, + {RUNE_C(0x00FD96), RUNE_C(0x00FD97), DT_FIN}, + {RUNE_C(0x00FD98), RUNE_C(0x00FD98), DT_INIT}, + {RUNE_C(0x00FD99), RUNE_C(0x00FD9C), DT_FIN}, + {RUNE_C(0x00FD9D), RUNE_C(0x00FD9D), DT_INIT}, + {RUNE_C(0x00FD9E), RUNE_C(0x00FDB3), DT_FIN}, + {RUNE_C(0x00FDB4), RUNE_C(0x00FDB5), DT_INIT}, + {RUNE_C(0x00FDB6), RUNE_C(0x00FDB7), DT_FIN}, + {RUNE_C(0x00FDB8), RUNE_C(0x00FDB8), DT_INIT}, + {RUNE_C(0x00FDB9), RUNE_C(0x00FDB9), DT_FIN}, + {RUNE_C(0x00FDBA), RUNE_C(0x00FDBA), DT_INIT}, + {RUNE_C(0x00FDBB), RUNE_C(0x00FDC2), DT_FIN}, + {RUNE_C(0x00FDC3), RUNE_C(0x00FDC5), DT_INIT}, + {RUNE_C(0x00FDC6), RUNE_C(0x00FDC7), DT_FIN}, + {RUNE_C(0x00FDF0), RUNE_C(0x00FDFC), DT_ISO}, + {RUNE_C(0x00FE10), RUNE_C(0x00FE19), DT_VERT}, + {RUNE_C(0x00FE30), RUNE_C(0x00FE44), DT_VERT}, + {RUNE_C(0x00FE47), RUNE_C(0x00FE48), DT_VERT}, + {RUNE_C(0x00FE49), RUNE_C(0x00FE4F), DT_COM}, + {RUNE_C(0x00FE50), RUNE_C(0x00FE52), DT_SML}, + {RUNE_C(0x00FE54), RUNE_C(0x00FE66), DT_SML}, + {RUNE_C(0x00FE68), RUNE_C(0x00FE6B), DT_SML}, + {RUNE_C(0x00FE70), RUNE_C(0x00FE70), DT_ISO}, + {RUNE_C(0x00FE71), RUNE_C(0x00FE71), DT_MED}, + {RUNE_C(0x00FE72), RUNE_C(0x00FE72), DT_ISO}, + {RUNE_C(0x00FE74), RUNE_C(0x00FE74), DT_ISO}, + {RUNE_C(0x00FE76), RUNE_C(0x00FE76), DT_ISO}, + {RUNE_C(0x00FE77), RUNE_C(0x00FE77), DT_MED}, + {RUNE_C(0x00FE78), RUNE_C(0x00FE78), DT_ISO}, + {RUNE_C(0x00FE79), RUNE_C(0x00FE79), DT_MED}, + {RUNE_C(0x00FE7A), RUNE_C(0x00FE7A), DT_ISO}, + {RUNE_C(0x00FE7B), RUNE_C(0x00FE7B), DT_MED}, + {RUNE_C(0x00FE7C), RUNE_C(0x00FE7C), DT_ISO}, + {RUNE_C(0x00FE7D), RUNE_C(0x00FE7D), DT_MED}, + {RUNE_C(0x00FE7E), RUNE_C(0x00FE7E), DT_ISO}, + {RUNE_C(0x00FE7F), RUNE_C(0x00FE7F), DT_MED}, + {RUNE_C(0x00FE80), RUNE_C(0x00FE81), DT_ISO}, + {RUNE_C(0x00FE82), RUNE_C(0x00FE82), DT_FIN}, + {RUNE_C(0x00FE83), RUNE_C(0x00FE83), DT_ISO}, + {RUNE_C(0x00FE84), RUNE_C(0x00FE84), DT_FIN}, + {RUNE_C(0x00FE85), RUNE_C(0x00FE85), DT_ISO}, + {RUNE_C(0x00FE86), RUNE_C(0x00FE86), DT_FIN}, + {RUNE_C(0x00FE87), RUNE_C(0x00FE87), DT_ISO}, + {RUNE_C(0x00FE88), RUNE_C(0x00FE88), DT_FIN}, + {RUNE_C(0x00FE89), RUNE_C(0x00FE89), DT_ISO}, + {RUNE_C(0x00FE8A), RUNE_C(0x00FE8A), DT_FIN}, + {RUNE_C(0x00FE8B), RUNE_C(0x00FE8B), DT_INIT}, + {RUNE_C(0x00FE8C), RUNE_C(0x00FE8C), DT_MED}, + {RUNE_C(0x00FE8D), RUNE_C(0x00FE8D), DT_ISO}, + {RUNE_C(0x00FE8E), RUNE_C(0x00FE8E), DT_FIN}, + {RUNE_C(0x00FE8F), RUNE_C(0x00FE8F), DT_ISO}, + {RUNE_C(0x00FE90), RUNE_C(0x00FE90), DT_FIN}, + {RUNE_C(0x00FE91), RUNE_C(0x00FE91), DT_INIT}, + {RUNE_C(0x00FE92), RUNE_C(0x00FE92), DT_MED}, + {RUNE_C(0x00FE93), RUNE_C(0x00FE93), DT_ISO}, + {RUNE_C(0x00FE94), RUNE_C(0x00FE94), DT_FIN}, + {RUNE_C(0x00FE95), RUNE_C(0x00FE95), DT_ISO}, + {RUNE_C(0x00FE96), RUNE_C(0x00FE96), DT_FIN}, + {RUNE_C(0x00FE97), RUNE_C(0x00FE97), DT_INIT}, + {RUNE_C(0x00FE98), RUNE_C(0x00FE98), DT_MED}, + {RUNE_C(0x00FE99), RUNE_C(0x00FE99), DT_ISO}, + {RUNE_C(0x00FE9A), RUNE_C(0x00FE9A), DT_FIN}, + {RUNE_C(0x00FE9B), RUNE_C(0x00FE9B), DT_INIT}, + {RUNE_C(0x00FE9C), RUNE_C(0x00FE9C), DT_MED}, + {RUNE_C(0x00FE9D), RUNE_C(0x00FE9D), DT_ISO}, + {RUNE_C(0x00FE9E), RUNE_C(0x00FE9E), DT_FIN}, + {RUNE_C(0x00FE9F), RUNE_C(0x00FE9F), DT_INIT}, + {RUNE_C(0x00FEA0), RUNE_C(0x00FEA0), DT_MED}, + {RUNE_C(0x00FEA1), RUNE_C(0x00FEA1), DT_ISO}, + {RUNE_C(0x00FEA2), RUNE_C(0x00FEA2), DT_FIN}, + {RUNE_C(0x00FEA3), RUNE_C(0x00FEA3), DT_INIT}, + {RUNE_C(0x00FEA4), RUNE_C(0x00FEA4), DT_MED}, + {RUNE_C(0x00FEA5), RUNE_C(0x00FEA5), DT_ISO}, + {RUNE_C(0x00FEA6), RUNE_C(0x00FEA6), DT_FIN}, + {RUNE_C(0x00FEA7), RUNE_C(0x00FEA7), DT_INIT}, + {RUNE_C(0x00FEA8), RUNE_C(0x00FEA8), DT_MED}, + {RUNE_C(0x00FEA9), RUNE_C(0x00FEA9), DT_ISO}, + {RUNE_C(0x00FEAA), RUNE_C(0x00FEAA), DT_FIN}, + {RUNE_C(0x00FEAB), RUNE_C(0x00FEAB), DT_ISO}, + {RUNE_C(0x00FEAC), RUNE_C(0x00FEAC), DT_FIN}, + {RUNE_C(0x00FEAD), RUNE_C(0x00FEAD), DT_ISO}, + {RUNE_C(0x00FEAE), RUNE_C(0x00FEAE), DT_FIN}, + {RUNE_C(0x00FEAF), RUNE_C(0x00FEAF), DT_ISO}, + {RUNE_C(0x00FEB0), RUNE_C(0x00FEB0), DT_FIN}, + {RUNE_C(0x00FEB1), RUNE_C(0x00FEB1), DT_ISO}, + {RUNE_C(0x00FEB2), RUNE_C(0x00FEB2), DT_FIN}, + {RUNE_C(0x00FEB3), RUNE_C(0x00FEB3), DT_INIT}, + {RUNE_C(0x00FEB4), RUNE_C(0x00FEB4), DT_MED}, + {RUNE_C(0x00FEB5), RUNE_C(0x00FEB5), DT_ISO}, + {RUNE_C(0x00FEB6), RUNE_C(0x00FEB6), DT_FIN}, + {RUNE_C(0x00FEB7), RUNE_C(0x00FEB7), DT_INIT}, + {RUNE_C(0x00FEB8), RUNE_C(0x00FEB8), DT_MED}, + {RUNE_C(0x00FEB9), RUNE_C(0x00FEB9), DT_ISO}, + {RUNE_C(0x00FEBA), RUNE_C(0x00FEBA), DT_FIN}, + {RUNE_C(0x00FEBB), RUNE_C(0x00FEBB), DT_INIT}, + {RUNE_C(0x00FEBC), RUNE_C(0x00FEBC), DT_MED}, + {RUNE_C(0x00FEBD), RUNE_C(0x00FEBD), DT_ISO}, + {RUNE_C(0x00FEBE), RUNE_C(0x00FEBE), DT_FIN}, + {RUNE_C(0x00FEBF), RUNE_C(0x00FEBF), DT_INIT}, + {RUNE_C(0x00FEC0), RUNE_C(0x00FEC0), DT_MED}, + {RUNE_C(0x00FEC1), RUNE_C(0x00FEC1), DT_ISO}, + {RUNE_C(0x00FEC2), RUNE_C(0x00FEC2), DT_FIN}, + {RUNE_C(0x00FEC3), RUNE_C(0x00FEC3), DT_INIT}, + {RUNE_C(0x00FEC4), RUNE_C(0x00FEC4), DT_MED}, + {RUNE_C(0x00FEC5), RUNE_C(0x00FEC5), DT_ISO}, + {RUNE_C(0x00FEC6), RUNE_C(0x00FEC6), DT_FIN}, + {RUNE_C(0x00FEC7), RUNE_C(0x00FEC7), DT_INIT}, + {RUNE_C(0x00FEC8), RUNE_C(0x00FEC8), DT_MED}, + {RUNE_C(0x00FEC9), RUNE_C(0x00FEC9), DT_ISO}, + {RUNE_C(0x00FECA), RUNE_C(0x00FECA), DT_FIN}, + {RUNE_C(0x00FECB), RUNE_C(0x00FECB), DT_INIT}, + {RUNE_C(0x00FECC), RUNE_C(0x00FECC), DT_MED}, + {RUNE_C(0x00FECD), RUNE_C(0x00FECD), DT_ISO}, + {RUNE_C(0x00FECE), RUNE_C(0x00FECE), DT_FIN}, + {RUNE_C(0x00FECF), RUNE_C(0x00FECF), DT_INIT}, + {RUNE_C(0x00FED0), RUNE_C(0x00FED0), DT_MED}, + {RUNE_C(0x00FED1), RUNE_C(0x00FED1), DT_ISO}, + {RUNE_C(0x00FED2), RUNE_C(0x00FED2), DT_FIN}, + {RUNE_C(0x00FED3), RUNE_C(0x00FED3), DT_INIT}, + {RUNE_C(0x00FED4), RUNE_C(0x00FED4), DT_MED}, + {RUNE_C(0x00FED5), RUNE_C(0x00FED5), DT_ISO}, + {RUNE_C(0x00FED6), RUNE_C(0x00FED6), DT_FIN}, + {RUNE_C(0x00FED7), RUNE_C(0x00FED7), DT_INIT}, + {RUNE_C(0x00FED8), RUNE_C(0x00FED8), DT_MED}, + {RUNE_C(0x00FED9), RUNE_C(0x00FED9), DT_ISO}, + {RUNE_C(0x00FEDA), RUNE_C(0x00FEDA), DT_FIN}, + {RUNE_C(0x00FEDB), RUNE_C(0x00FEDB), DT_INIT}, + {RUNE_C(0x00FEDC), RUNE_C(0x00FEDC), DT_MED}, + {RUNE_C(0x00FEDD), RUNE_C(0x00FEDD), DT_ISO}, + {RUNE_C(0x00FEDE), RUNE_C(0x00FEDE), DT_FIN}, + {RUNE_C(0x00FEDF), RUNE_C(0x00FEDF), DT_INIT}, + {RUNE_C(0x00FEE0), RUNE_C(0x00FEE0), DT_MED}, + {RUNE_C(0x00FEE1), RUNE_C(0x00FEE1), DT_ISO}, + {RUNE_C(0x00FEE2), RUNE_C(0x00FEE2), DT_FIN}, + {RUNE_C(0x00FEE3), RUNE_C(0x00FEE3), DT_INIT}, + {RUNE_C(0x00FEE4), RUNE_C(0x00FEE4), DT_MED}, + {RUNE_C(0x00FEE5), RUNE_C(0x00FEE5), DT_ISO}, + {RUNE_C(0x00FEE6), RUNE_C(0x00FEE6), DT_FIN}, + {RUNE_C(0x00FEE7), RUNE_C(0x00FEE7), DT_INIT}, + {RUNE_C(0x00FEE8), RUNE_C(0x00FEE8), DT_MED}, + {RUNE_C(0x00FEE9), RUNE_C(0x00FEE9), DT_ISO}, + {RUNE_C(0x00FEEA), RUNE_C(0x00FEEA), DT_FIN}, + {RUNE_C(0x00FEEB), RUNE_C(0x00FEEB), DT_INIT}, + {RUNE_C(0x00FEEC), RUNE_C(0x00FEEC), DT_MED}, + {RUNE_C(0x00FEED), RUNE_C(0x00FEED), DT_ISO}, + {RUNE_C(0x00FEEE), RUNE_C(0x00FEEE), DT_FIN}, + {RUNE_C(0x00FEEF), RUNE_C(0x00FEEF), DT_ISO}, + {RUNE_C(0x00FEF0), RUNE_C(0x00FEF0), DT_FIN}, + {RUNE_C(0x00FEF1), RUNE_C(0x00FEF1), DT_ISO}, + {RUNE_C(0x00FEF2), RUNE_C(0x00FEF2), DT_FIN}, + {RUNE_C(0x00FEF3), RUNE_C(0x00FEF3), DT_INIT}, + {RUNE_C(0x00FEF4), RUNE_C(0x00FEF4), DT_MED}, + {RUNE_C(0x00FEF5), RUNE_C(0x00FEF5), DT_ISO}, + {RUNE_C(0x00FEF6), RUNE_C(0x00FEF6), DT_FIN}, + {RUNE_C(0x00FEF7), RUNE_C(0x00FEF7), DT_ISO}, + {RUNE_C(0x00FEF8), RUNE_C(0x00FEF8), DT_FIN}, + {RUNE_C(0x00FEF9), RUNE_C(0x00FEF9), DT_ISO}, + {RUNE_C(0x00FEFA), RUNE_C(0x00FEFA), DT_FIN}, + {RUNE_C(0x00FEFB), RUNE_C(0x00FEFB), DT_ISO}, + {RUNE_C(0x00FEFC), RUNE_C(0x00FEFC), DT_FIN}, + {RUNE_C(0x00FF01), RUNE_C(0x00FF60), DT_WIDE}, + {RUNE_C(0x00FF61), RUNE_C(0x00FFBE), DT_NAR}, + {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), DT_NAR}, + {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), DT_NAR}, + {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), DT_NAR}, + {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), DT_NAR}, + {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6), DT_WIDE}, + {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE), DT_NAR}, + {RUNE_C(0x010781), RUNE_C(0x010785), DT_SUP}, + {RUNE_C(0x010787), RUNE_C(0x0107B0), DT_SUP}, + {RUNE_C(0x0107B2), RUNE_C(0x0107BA), DT_SUP}, + {RUNE_C(0x01109A), RUNE_C(0x01109A), DT_CAN}, + {RUNE_C(0x01109C), RUNE_C(0x01109C), DT_CAN}, + {RUNE_C(0x0110AB), RUNE_C(0x0110AB), DT_CAN}, + {RUNE_C(0x01112E), RUNE_C(0x01112F), DT_CAN}, + {RUNE_C(0x01134B), RUNE_C(0x01134C), DT_CAN}, + {RUNE_C(0x0114BB), RUNE_C(0x0114BC), DT_CAN}, + {RUNE_C(0x0114BE), RUNE_C(0x0114BE), DT_CAN}, + {RUNE_C(0x0115BA), RUNE_C(0x0115BB), DT_CAN}, + {RUNE_C(0x011938), RUNE_C(0x011938), DT_CAN}, + {RUNE_C(0x01D15E), RUNE_C(0x01D164), DT_CAN}, + {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), DT_CAN}, + {RUNE_C(0x01D400), RUNE_C(0x01D454), DT_FONT}, + {RUNE_C(0x01D456), RUNE_C(0x01D49C), DT_FONT}, + {RUNE_C(0x01D49E), RUNE_C(0x01D49F), DT_FONT}, + {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), DT_FONT}, + {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), DT_FONT}, + {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), DT_FONT}, + {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9), DT_FONT}, + {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), DT_FONT}, + {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), DT_FONT}, + {RUNE_C(0x01D4C5), RUNE_C(0x01D505), DT_FONT}, + {RUNE_C(0x01D507), RUNE_C(0x01D50A), DT_FONT}, + {RUNE_C(0x01D50D), RUNE_C(0x01D514), DT_FONT}, + {RUNE_C(0x01D516), RUNE_C(0x01D51C), DT_FONT}, + {RUNE_C(0x01D51E), RUNE_C(0x01D539), DT_FONT}, + {RUNE_C(0x01D53B), RUNE_C(0x01D53E), DT_FONT}, + {RUNE_C(0x01D540), RUNE_C(0x01D544), DT_FONT}, + {RUNE_C(0x01D546), RUNE_C(0x01D546), DT_FONT}, + {RUNE_C(0x01D54A), RUNE_C(0x01D550), DT_FONT}, + {RUNE_C(0x01D552), RUNE_C(0x01D6A5), DT_FONT}, + {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB), DT_FONT}, + {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), DT_FONT}, + {RUNE_C(0x01E030), RUNE_C(0x01E050), DT_SUP}, + {RUNE_C(0x01E051), RUNE_C(0x01E06A), DT_SUB}, + {RUNE_C(0x01E06B), RUNE_C(0x01E06D), DT_SUP}, + {RUNE_C(0x01EE00), RUNE_C(0x01EE03), DT_FONT}, + {RUNE_C(0x01EE05), RUNE_C(0x01EE1F), DT_FONT}, + {RUNE_C(0x01EE21), RUNE_C(0x01EE22), DT_FONT}, + {RUNE_C(0x01EE24), RUNE_C(0x01EE24), DT_FONT}, + {RUNE_C(0x01EE27), RUNE_C(0x01EE27), DT_FONT}, + {RUNE_C(0x01EE29), RUNE_C(0x01EE32), DT_FONT}, + {RUNE_C(0x01EE34), RUNE_C(0x01EE37), DT_FONT}, + {RUNE_C(0x01EE39), RUNE_C(0x01EE39), DT_FONT}, + {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), DT_FONT}, + {RUNE_C(0x01EE42), RUNE_C(0x01EE42), DT_FONT}, + {RUNE_C(0x01EE47), RUNE_C(0x01EE47), DT_FONT}, + {RUNE_C(0x01EE49), RUNE_C(0x01EE49), DT_FONT}, + {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), DT_FONT}, + {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), DT_FONT}, + {RUNE_C(0x01EE51), RUNE_C(0x01EE52), DT_FONT}, + {RUNE_C(0x01EE54), RUNE_C(0x01EE54), DT_FONT}, + {RUNE_C(0x01EE57), RUNE_C(0x01EE57), DT_FONT}, + {RUNE_C(0x01EE59), RUNE_C(0x01EE59), DT_FONT}, + {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), DT_FONT}, + {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), DT_FONT}, + {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), DT_FONT}, + {RUNE_C(0x01EE61), RUNE_C(0x01EE62), DT_FONT}, + {RUNE_C(0x01EE64), RUNE_C(0x01EE64), DT_FONT}, + {RUNE_C(0x01EE67), RUNE_C(0x01EE6A), DT_FONT}, + {RUNE_C(0x01EE6C), RUNE_C(0x01EE72), DT_FONT}, + {RUNE_C(0x01EE74), RUNE_C(0x01EE77), DT_FONT}, + {RUNE_C(0x01EE79), RUNE_C(0x01EE7C), DT_FONT}, + {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), DT_FONT}, + {RUNE_C(0x01EE80), RUNE_C(0x01EE89), DT_FONT}, + {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), DT_FONT}, + {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), DT_FONT}, + {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), DT_FONT}, + {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), DT_FONT}, + {RUNE_C(0x01F100), RUNE_C(0x01F10A), DT_COM}, + {RUNE_C(0x01F110), RUNE_C(0x01F12A), DT_COM}, + {RUNE_C(0x01F12B), RUNE_C(0x01F12E), DT_ENC}, + {RUNE_C(0x01F130), RUNE_C(0x01F14F), DT_SQR}, + {RUNE_C(0x01F16A), RUNE_C(0x01F16C), DT_SUP}, + {RUNE_C(0x01F190), RUNE_C(0x01F190), DT_SQR}, + {RUNE_C(0x01F200), RUNE_C(0x01F202), DT_SQR}, + {RUNE_C(0x01F210), RUNE_C(0x01F23B), DT_SQR}, + {RUNE_C(0x01F240), RUNE_C(0x01F248), DT_COM}, + {RUNE_C(0x01F250), RUNE_C(0x01F251), DT_ENC}, + {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), DT_FONT}, + {RUNE_C(0x02F800), RUNE_C(0x02FA1D), DT_CAN}, +}; + +__MLIB_DEFINE_BSEARCH(enum uprop_dt, lookup, DT_NONE) + +enum uprop_dt +uprop_get_dt(rune ch) +{ + return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch); +} -- cgit v1.2.3