aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop/uprop_get_nfd_qc.c
blob: d2f5e1d610960d922ec64324fb99cacda8775d1d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
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);
}