1// Generated by contrib/unicode/gen_libstdcxx_unicode_data.py, do not edit.
2
3// Copyright The GNU Toolchain Authors.
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23// <http://www.gnu.org/licenses/>.
24
25/** @file bits/unicode-data.h
26 * This is an internal header file, included by other library headers.
27 * Do not attempt to use it directly. @headername{format}
28 */
29
30#ifndef _GLIBCXX_GET_UNICODE_DATA
31# error "This is not a public header, do not include it directly"
32#elif _GLIBCXX_GET_UNICODE_DATA != 150100
33# error "Version mismatch for Unicode static data"
34#endif
35
36 // Table generated by contrib/unicode/gen_std_format_width.py,
37 // from EastAsianWidth.txt from the Unicode standard.
38 inline constexpr char32_t __width_edges[] = {
39 0x1100, 0x1160, 0x231a, 0x231c, 0x2329, 0x232b, 0x23e9, 0x23ed,
40 0x23f0, 0x23f1, 0x23f3, 0x23f4, 0x25fd, 0x25ff, 0x2614, 0x2616,
41 0x2648, 0x2654, 0x267f, 0x2680, 0x2693, 0x2694, 0x26a1, 0x26a2,
42 0x26aa, 0x26ac, 0x26bd, 0x26bf, 0x26c4, 0x26c6, 0x26ce, 0x26cf,
43 0x26d4, 0x26d5, 0x26ea, 0x26eb, 0x26f2, 0x26f4, 0x26f5, 0x26f6,
44 0x26fa, 0x26fb, 0x26fd, 0x26fe, 0x2705, 0x2706, 0x270a, 0x270c,
45 0x2728, 0x2729, 0x274c, 0x274d, 0x274e, 0x274f, 0x2753, 0x2756,
46 0x2757, 0x2758, 0x2795, 0x2798, 0x27b0, 0x27b1, 0x27bf, 0x27c0,
47 0x2b1b, 0x2b1d, 0x2b50, 0x2b51, 0x2b55, 0x2b56, 0x2e80, 0x2e9a,
48 0x2e9b, 0x2ef4, 0x2f00, 0x2fd6, 0x2ff0, 0x303f, 0x3041, 0x3097,
49 0x3099, 0x3100, 0x3105, 0x3130, 0x3131, 0x318f, 0x3190, 0x31e4,
50 0x31ef, 0x321f, 0x3220, 0x3248, 0x3250, 0xa48d, 0xa490, 0xa4c7,
51 0xa960, 0xa97d, 0xac00, 0xd7a4, 0xf900, 0xfb00, 0xfe10, 0xfe1a,
52 0xfe30, 0xfe53, 0xfe54, 0xfe67, 0xfe68, 0xfe6c, 0xff01, 0xff61,
53 0xffe0, 0xffe7, 0x16fe0, 0x16fe5, 0x16ff0, 0x16ff2, 0x17000, 0x187f8,
54 0x18800, 0x18cd6, 0x18d00, 0x18d09, 0x1aff0, 0x1aff4, 0x1aff5, 0x1affc,
55 0x1affd, 0x1afff, 0x1b000, 0x1b123, 0x1b132, 0x1b133, 0x1b150, 0x1b153,
56 0x1b155, 0x1b156, 0x1b164, 0x1b168, 0x1b170, 0x1b2fc, 0x1f004, 0x1f005,
57 0x1f0cf, 0x1f0d0, 0x1f18e, 0x1f18f, 0x1f191, 0x1f19b, 0x1f200, 0x1f203,
58 0x1f210, 0x1f23c, 0x1f240, 0x1f249, 0x1f250, 0x1f252, 0x1f260, 0x1f266,
59 0x1f300, 0x1f650, 0x1f680, 0x1f6c6, 0x1f6cc, 0x1f6cd, 0x1f6d0, 0x1f6d3,
60 0x1f6d5, 0x1f6d8, 0x1f6dc, 0x1f6e0, 0x1f6eb, 0x1f6ed, 0x1f6f4, 0x1f6fd,
61 0x1f7e0, 0x1f7ec, 0x1f7f0, 0x1f7f1, 0x1f900, 0x1fa00, 0x1fa70, 0x1fa7d,
62 0x1fa80, 0x1fa89, 0x1fa90, 0x1fabe, 0x1fabf, 0x1fac6, 0x1face, 0x1fadc,
63 0x1fae0, 0x1fae9, 0x1faf0, 0x1faf9, 0x20000, 0x2fffe, 0x30000, 0x3fffe,
64 };
65
66 enum class _Gcb_property {
67 _Gcb_Other = 0,
68 _Gcb_Control = 1,
69 _Gcb_LF = 2,
70 _Gcb_CR = 3,
71 _Gcb_Extend = 4,
72 _Gcb_Prepend = 5,
73 _Gcb_SpacingMark = 6,
74 _Gcb_L = 7,
75 _Gcb_V = 8,
76 _Gcb_T = 9,
77 _Gcb_ZWJ = 10,
78 _Gcb_LV = 11,
79 _Gcb_LVT = 12,
80 _Gcb_Regional_Indicator = 13,
81 };
82
83 // Values generated by contrib/unicode/gen_std_format_width.py,
84 // from GraphemeBreakProperty.txt from the Unicode standard.
85 // Entries are (code_point << shift_bits) + property.
86 inline constexpr int __gcb_shift_bits = 0x4;
87 inline constexpr uint32_t __gcb_edges[] = {
88 0x1, 0xa2, 0xb1, 0xd3, 0xe1, 0x200,
89 0x7f1, 0xa00, 0xad1, 0xae0, 0x3004, 0x3700,
90 0x4834, 0x48a0, 0x5914, 0x5be0, 0x5bf4, 0x5c00,
91 0x5c14, 0x5c30, 0x5c44, 0x5c60, 0x5c74, 0x5c80,
92 0x6005, 0x6060, 0x6104, 0x61b0, 0x61c1, 0x61d0,
93 0x64b4, 0x6600, 0x6704, 0x6710, 0x6d64, 0x6dd5,
94 0x6de0, 0x6df4, 0x6e50, 0x6e74, 0x6e90, 0x6ea4,
95 0x6ee0, 0x70f5, 0x7100, 0x7114, 0x7120, 0x7304,
96 0x74b0, 0x7a64, 0x7b10, 0x7eb4, 0x7f40, 0x7fd4,
97 0x7fe0, 0x8164, 0x81a0, 0x81b4, 0x8240, 0x8254,
98 0x8280, 0x8294, 0x82e0, 0x8594, 0x85c0, 0x8905,
99 0x8920, 0x8984, 0x8a00, 0x8ca4, 0x8e25, 0x8e34,
100 0x9036, 0x9040, 0x93a4, 0x93b6, 0x93c4, 0x93d0,
101 0x93e6, 0x9414, 0x9496, 0x94d4, 0x94e6, 0x9500,
102 0x9514, 0x9580, 0x9624, 0x9640, 0x9814, 0x9826,
103 0x9840, 0x9bc4, 0x9bd0, 0x9be4, 0x9bf6, 0x9c14,
104 0x9c50, 0x9c76, 0x9c90, 0x9cb6, 0x9cd4, 0x9ce0,
105 0x9d74, 0x9d80, 0x9e24, 0x9e40, 0x9fe4, 0x9ff0,
106 0xa014, 0xa036, 0xa040, 0xa3c4, 0xa3d0, 0xa3e6,
107 0xa414, 0xa430, 0xa474, 0xa490, 0xa4b4, 0xa4e0,
108 0xa514, 0xa520, 0xa704, 0xa720, 0xa754, 0xa760,
109 0xa814, 0xa836, 0xa840, 0xabc4, 0xabd0, 0xabe6,
110 0xac14, 0xac60, 0xac74, 0xac96, 0xaca0, 0xacb6,
111 0xacd4, 0xace0, 0xae24, 0xae40, 0xafa4, 0xb000,
112 0xb014, 0xb026, 0xb040, 0xb3c4, 0xb3d0, 0xb3e4,
113 0xb406, 0xb414, 0xb450, 0xb476, 0xb490, 0xb4b6,
114 0xb4d4, 0xb4e0, 0xb554, 0xb580, 0xb624, 0xb640,
115 0xb824, 0xb830, 0xbbe4, 0xbbf6, 0xbc04, 0xbc16,
116 0xbc30, 0xbc66, 0xbc90, 0xbca6, 0xbcd4, 0xbce0,
117 0xbd74, 0xbd80, 0xc004, 0xc016, 0xc044, 0xc050,
118 0xc3c4, 0xc3d0, 0xc3e4, 0xc416, 0xc450, 0xc464,
119 0xc490, 0xc4a4, 0xc4e0, 0xc554, 0xc570, 0xc624,
120 0xc640, 0xc814, 0xc826, 0xc840, 0xcbc4, 0xcbd0,
121 0xcbe6, 0xcbf4, 0xcc06, 0xcc24, 0xcc36, 0xcc50,
122 0xcc64, 0xcc76, 0xcc90, 0xcca6, 0xccc4, 0xcce0,
123 0xcd54, 0xcd70, 0xce24, 0xce40, 0xcf36, 0xcf40,
124 0xd004, 0xd026, 0xd040, 0xd3b4, 0xd3d0, 0xd3e4,
125 0xd3f6, 0xd414, 0xd450, 0xd466, 0xd490, 0xd4a6,
126 0xd4d4, 0xd4e5, 0xd4f0, 0xd574, 0xd580, 0xd624,
127 0xd640, 0xd814, 0xd826, 0xd840, 0xdca4, 0xdcb0,
128 0xdcf4, 0xdd06, 0xdd24, 0xdd50, 0xdd64, 0xdd70,
129 0xdd86, 0xddf4, 0xde00, 0xdf26, 0xdf40, 0xe314,
130 0xe320, 0xe336, 0xe344, 0xe3b0, 0xe474, 0xe4f0,
131 0xeb14, 0xeb20, 0xeb36, 0xeb44, 0xebd0, 0xec84,
132 0xecf0, 0xf184, 0xf1a0, 0xf354, 0xf360, 0xf374,
133 0xf380, 0xf394, 0xf3a0, 0xf3e6, 0xf400, 0xf714,
134 0xf7f6, 0xf804, 0xf850, 0xf864, 0xf880, 0xf8d4,
135 0xf980, 0xf994, 0xfbd0, 0xfc64, 0xfc70, 0x102d4,
136 0x10316, 0x10324, 0x10380, 0x10394, 0x103b6, 0x103d4,
137 0x103f0, 0x10566, 0x10584, 0x105a0, 0x105e4, 0x10610,
138 0x10714, 0x10750, 0x10824, 0x10830, 0x10846, 0x10854,
139 0x10870, 0x108d4, 0x108e0, 0x109d4, 0x109e0, 0x11007,
140 0x11608, 0x11a89, 0x12000, 0x135d4, 0x13600, 0x17124,
141 0x17156, 0x17160, 0x17324, 0x17346, 0x17350, 0x17524,
142 0x17540, 0x17724, 0x17740, 0x17b44, 0x17b66, 0x17b74,
143 0x17be6, 0x17c64, 0x17c76, 0x17c94, 0x17d40, 0x17dd4,
144 0x17de0, 0x180b4, 0x180e1, 0x180f4, 0x18100, 0x18854,
145 0x18870, 0x18a94, 0x18aa0, 0x19204, 0x19236, 0x19274,
146 0x19296, 0x192c0, 0x19306, 0x19324, 0x19336, 0x19394,
147 0x193c0, 0x1a174, 0x1a196, 0x1a1b4, 0x1a1c0, 0x1a556,
148 0x1a564, 0x1a576, 0x1a584, 0x1a5f0, 0x1a604, 0x1a610,
149 0x1a624, 0x1a630, 0x1a654, 0x1a6d6, 0x1a734, 0x1a7d0,
150 0x1a7f4, 0x1a800, 0x1ab04, 0x1acf0, 0x1b004, 0x1b046,
151 0x1b050, 0x1b344, 0x1b3b6, 0x1b3c4, 0x1b3d6, 0x1b424,
152 0x1b436, 0x1b450, 0x1b6b4, 0x1b740, 0x1b804, 0x1b826,
153 0x1b830, 0x1ba16, 0x1ba24, 0x1ba66, 0x1ba84, 0x1baa6,
154 0x1bab4, 0x1bae0, 0x1be64, 0x1be76, 0x1be84, 0x1bea6,
155 0x1bed4, 0x1bee6, 0x1bef4, 0x1bf26, 0x1bf40, 0x1c246,
156 0x1c2c4, 0x1c346, 0x1c364, 0x1c380, 0x1cd04, 0x1cd30,
157 0x1cd44, 0x1ce16, 0x1ce24, 0x1ce90, 0x1ced4, 0x1cee0,
158 0x1cf44, 0x1cf50, 0x1cf76, 0x1cf84, 0x1cfa0, 0x1dc04,
159 0x1e000, 0x200b1, 0x200c4, 0x200da, 0x200e1, 0x20100,
160 0x20281, 0x202f0, 0x20601, 0x20700, 0x20d04, 0x20f10,
161 0x2cef4, 0x2cf20, 0x2d7f4, 0x2d800, 0x2de04, 0x2e000,
162 0x302a4, 0x30300, 0x30994, 0x309b0, 0xa66f4, 0xa6730,
163 0xa6744, 0xa67e0, 0xa69e4, 0xa6a00, 0xa6f04, 0xa6f20,
164 0xa8024, 0xa8030, 0xa8064, 0xa8070, 0xa80b4, 0xa80c0,
165 0xa8236, 0xa8254, 0xa8276, 0xa8280, 0xa82c4, 0xa82d0,
166 0xa8806, 0xa8820, 0xa8b46, 0xa8c44, 0xa8c60, 0xa8e04,
167 0xa8f20, 0xa8ff4, 0xa9000, 0xa9264, 0xa92e0, 0xa9474,
168 0xa9526, 0xa9540, 0xa9607, 0xa97d0, 0xa9804, 0xa9836,
169 0xa9840, 0xa9b34, 0xa9b46, 0xa9b64, 0xa9ba6, 0xa9bc4,
170 0xa9be6, 0xa9c10, 0xa9e54, 0xa9e60, 0xaa294, 0xaa2f6,
171 0xaa314, 0xaa336, 0xaa354, 0xaa370, 0xaa434, 0xaa440,
172 0xaa4c4, 0xaa4d6, 0xaa4e0, 0xaa7c4, 0xaa7d0, 0xaab04,
173 0xaab10, 0xaab24, 0xaab50, 0xaab74, 0xaab90, 0xaabe4,
174 0xaac00, 0xaac14, 0xaac20, 0xaaeb6, 0xaaec4, 0xaaee6,
175 0xaaf00, 0xaaf56, 0xaaf64, 0xaaf70, 0xabe36, 0xabe54,
176 0xabe66, 0xabe84, 0xabe96, 0xabeb0, 0xabec6, 0xabed4,
177 0xabee0, 0xac00b, 0xac01c, 0xac1cb, 0xac1dc, 0xac38b,
178 0xac39c, 0xac54b, 0xac55c, 0xac70b, 0xac71c, 0xac8cb,
179 0xac8dc, 0xaca8b, 0xaca9c, 0xacc4b, 0xacc5c, 0xace0b,
180 0xace1c, 0xacfcb, 0xacfdc, 0xad18b, 0xad19c, 0xad34b,
181 0xad35c, 0xad50b, 0xad51c, 0xad6cb, 0xad6dc, 0xad88b,
182 0xad89c, 0xada4b, 0xada5c, 0xadc0b, 0xadc1c, 0xaddcb,
183 0xadddc, 0xadf8b, 0xadf9c, 0xae14b, 0xae15c, 0xae30b,
184 0xae31c, 0xae4cb, 0xae4dc, 0xae68b, 0xae69c, 0xae84b,
185 0xae85c, 0xaea0b, 0xaea1c, 0xaebcb, 0xaebdc, 0xaed8b,
186 0xaed9c, 0xaef4b, 0xaef5c, 0xaf10b, 0xaf11c, 0xaf2cb,
187 0xaf2dc, 0xaf48b, 0xaf49c, 0xaf64b, 0xaf65c, 0xaf80b,
188 0xaf81c, 0xaf9cb, 0xaf9dc, 0xafb8b, 0xafb9c, 0xafd4b,
189 0xafd5c, 0xaff0b, 0xaff1c, 0xb00cb, 0xb00dc, 0xb028b,
190 0xb029c, 0xb044b, 0xb045c, 0xb060b, 0xb061c, 0xb07cb,
191 0xb07dc, 0xb098b, 0xb099c, 0xb0b4b, 0xb0b5c, 0xb0d0b,
192 0xb0d1c, 0xb0ecb, 0xb0edc, 0xb108b, 0xb109c, 0xb124b,
193 0xb125c, 0xb140b, 0xb141c, 0xb15cb, 0xb15dc, 0xb178b,
194 0xb179c, 0xb194b, 0xb195c, 0xb1b0b, 0xb1b1c, 0xb1ccb,
195 0xb1cdc, 0xb1e8b, 0xb1e9c, 0xb204b, 0xb205c, 0xb220b,
196 0xb221c, 0xb23cb, 0xb23dc, 0xb258b, 0xb259c, 0xb274b,
197 0xb275c, 0xb290b, 0xb291c, 0xb2acb, 0xb2adc, 0xb2c8b,
198 0xb2c9c, 0xb2e4b, 0xb2e5c, 0xb300b, 0xb301c, 0xb31cb,
199 0xb31dc, 0xb338b, 0xb339c, 0xb354b, 0xb355c, 0xb370b,
200 0xb371c, 0xb38cb, 0xb38dc, 0xb3a8b, 0xb3a9c, 0xb3c4b,
201 0xb3c5c, 0xb3e0b, 0xb3e1c, 0xb3fcb, 0xb3fdc, 0xb418b,
202 0xb419c, 0xb434b, 0xb435c, 0xb450b, 0xb451c, 0xb46cb,
203 0xb46dc, 0xb488b, 0xb489c, 0xb4a4b, 0xb4a5c, 0xb4c0b,
204 0xb4c1c, 0xb4dcb, 0xb4ddc, 0xb4f8b, 0xb4f9c, 0xb514b,
205 0xb515c, 0xb530b, 0xb531c, 0xb54cb, 0xb54dc, 0xb568b,
206 0xb569c, 0xb584b, 0xb585c, 0xb5a0b, 0xb5a1c, 0xb5bcb,
207 0xb5bdc, 0xb5d8b, 0xb5d9c, 0xb5f4b, 0xb5f5c, 0xb610b,
208 0xb611c, 0xb62cb, 0xb62dc, 0xb648b, 0xb649c, 0xb664b,
209 0xb665c, 0xb680b, 0xb681c, 0xb69cb, 0xb69dc, 0xb6b8b,
210 0xb6b9c, 0xb6d4b, 0xb6d5c, 0xb6f0b, 0xb6f1c, 0xb70cb,
211 0xb70dc, 0xb728b, 0xb729c, 0xb744b, 0xb745c, 0xb760b,
212 0xb761c, 0xb77cb, 0xb77dc, 0xb798b, 0xb799c, 0xb7b4b,
213 0xb7b5c, 0xb7d0b, 0xb7d1c, 0xb7ecb, 0xb7edc, 0xb808b,
214 0xb809c, 0xb824b, 0xb825c, 0xb840b, 0xb841c, 0xb85cb,
215 0xb85dc, 0xb878b, 0xb879c, 0xb894b, 0xb895c, 0xb8b0b,
216 0xb8b1c, 0xb8ccb, 0xb8cdc, 0xb8e8b, 0xb8e9c, 0xb904b,
217 0xb905c, 0xb920b, 0xb921c, 0xb93cb, 0xb93dc, 0xb958b,
218 0xb959c, 0xb974b, 0xb975c, 0xb990b, 0xb991c, 0xb9acb,
219 0xb9adc, 0xb9c8b, 0xb9c9c, 0xb9e4b, 0xb9e5c, 0xba00b,
220 0xba01c, 0xba1cb, 0xba1dc, 0xba38b, 0xba39c, 0xba54b,
221 0xba55c, 0xba70b, 0xba71c, 0xba8cb, 0xba8dc, 0xbaa8b,
222 0xbaa9c, 0xbac4b, 0xbac5c, 0xbae0b, 0xbae1c, 0xbafcb,
223 0xbafdc, 0xbb18b, 0xbb19c, 0xbb34b, 0xbb35c, 0xbb50b,
224 0xbb51c, 0xbb6cb, 0xbb6dc, 0xbb88b, 0xbb89c, 0xbba4b,
225 0xbba5c, 0xbbc0b, 0xbbc1c, 0xbbdcb, 0xbbddc, 0xbbf8b,
226 0xbbf9c, 0xbc14b, 0xbc15c, 0xbc30b, 0xbc31c, 0xbc4cb,
227 0xbc4dc, 0xbc68b, 0xbc69c, 0xbc84b, 0xbc85c, 0xbca0b,
228 0xbca1c, 0xbcbcb, 0xbcbdc, 0xbcd8b, 0xbcd9c, 0xbcf4b,
229 0xbcf5c, 0xbd10b, 0xbd11c, 0xbd2cb, 0xbd2dc, 0xbd48b,
230 0xbd49c, 0xbd64b, 0xbd65c, 0xbd80b, 0xbd81c, 0xbd9cb,
231 0xbd9dc, 0xbdb8b, 0xbdb9c, 0xbdd4b, 0xbdd5c, 0xbdf0b,
232 0xbdf1c, 0xbe0cb, 0xbe0dc, 0xbe28b, 0xbe29c, 0xbe44b,
233 0xbe45c, 0xbe60b, 0xbe61c, 0xbe7cb, 0xbe7dc, 0xbe98b,
234 0xbe99c, 0xbeb4b, 0xbeb5c, 0xbed0b, 0xbed1c, 0xbeecb,
235 0xbeedc, 0xbf08b, 0xbf09c, 0xbf24b, 0xbf25c, 0xbf40b,
236 0xbf41c, 0xbf5cb, 0xbf5dc, 0xbf78b, 0xbf79c, 0xbf94b,
237 0xbf95c, 0xbfb0b, 0xbfb1c, 0xbfccb, 0xbfcdc, 0xbfe8b,
238 0xbfe9c, 0xc004b, 0xc005c, 0xc020b, 0xc021c, 0xc03cb,
239 0xc03dc, 0xc058b, 0xc059c, 0xc074b, 0xc075c, 0xc090b,
240 0xc091c, 0xc0acb, 0xc0adc, 0xc0c8b, 0xc0c9c, 0xc0e4b,
241 0xc0e5c, 0xc100b, 0xc101c, 0xc11cb, 0xc11dc, 0xc138b,
242 0xc139c, 0xc154b, 0xc155c, 0xc170b, 0xc171c, 0xc18cb,
243 0xc18dc, 0xc1a8b, 0xc1a9c, 0xc1c4b, 0xc1c5c, 0xc1e0b,
244 0xc1e1c, 0xc1fcb, 0xc1fdc, 0xc218b, 0xc219c, 0xc234b,
245 0xc235c, 0xc250b, 0xc251c, 0xc26cb, 0xc26dc, 0xc288b,
246 0xc289c, 0xc2a4b, 0xc2a5c, 0xc2c0b, 0xc2c1c, 0xc2dcb,
247 0xc2ddc, 0xc2f8b, 0xc2f9c, 0xc314b, 0xc315c, 0xc330b,
248 0xc331c, 0xc34cb, 0xc34dc, 0xc368b, 0xc369c, 0xc384b,
249 0xc385c, 0xc3a0b, 0xc3a1c, 0xc3bcb, 0xc3bdc, 0xc3d8b,
250 0xc3d9c, 0xc3f4b, 0xc3f5c, 0xc410b, 0xc411c, 0xc42cb,
251 0xc42dc, 0xc448b, 0xc449c, 0xc464b, 0xc465c, 0xc480b,
252 0xc481c, 0xc49cb, 0xc49dc, 0xc4b8b, 0xc4b9c, 0xc4d4b,
253 0xc4d5c, 0xc4f0b, 0xc4f1c, 0xc50cb, 0xc50dc, 0xc528b,
254 0xc529c, 0xc544b, 0xc545c, 0xc560b, 0xc561c, 0xc57cb,
255 0xc57dc, 0xc598b, 0xc599c, 0xc5b4b, 0xc5b5c, 0xc5d0b,
256 0xc5d1c, 0xc5ecb, 0xc5edc, 0xc608b, 0xc609c, 0xc624b,
257 0xc625c, 0xc640b, 0xc641c, 0xc65cb, 0xc65dc, 0xc678b,
258 0xc679c, 0xc694b, 0xc695c, 0xc6b0b, 0xc6b1c, 0xc6ccb,
259 0xc6cdc, 0xc6e8b, 0xc6e9c, 0xc704b, 0xc705c, 0xc720b,
260 0xc721c, 0xc73cb, 0xc73dc, 0xc758b, 0xc759c, 0xc774b,
261 0xc775c, 0xc790b, 0xc791c, 0xc7acb, 0xc7adc, 0xc7c8b,
262 0xc7c9c, 0xc7e4b, 0xc7e5c, 0xc800b, 0xc801c, 0xc81cb,
263 0xc81dc, 0xc838b, 0xc839c, 0xc854b, 0xc855c, 0xc870b,
264 0xc871c, 0xc88cb, 0xc88dc, 0xc8a8b, 0xc8a9c, 0xc8c4b,
265 0xc8c5c, 0xc8e0b, 0xc8e1c, 0xc8fcb, 0xc8fdc, 0xc918b,
266 0xc919c, 0xc934b, 0xc935c, 0xc950b, 0xc951c, 0xc96cb,
267 0xc96dc, 0xc988b, 0xc989c, 0xc9a4b, 0xc9a5c, 0xc9c0b,
268 0xc9c1c, 0xc9dcb, 0xc9ddc, 0xc9f8b, 0xc9f9c, 0xca14b,
269 0xca15c, 0xca30b, 0xca31c, 0xca4cb, 0xca4dc, 0xca68b,
270 0xca69c, 0xca84b, 0xca85c, 0xcaa0b, 0xcaa1c, 0xcabcb,
271 0xcabdc, 0xcad8b, 0xcad9c, 0xcaf4b, 0xcaf5c, 0xcb10b,
272 0xcb11c, 0xcb2cb, 0xcb2dc, 0xcb48b, 0xcb49c, 0xcb64b,
273 0xcb65c, 0xcb80b, 0xcb81c, 0xcb9cb, 0xcb9dc, 0xcbb8b,
274 0xcbb9c, 0xcbd4b, 0xcbd5c, 0xcbf0b, 0xcbf1c, 0xcc0cb,
275 0xcc0dc, 0xcc28b, 0xcc29c, 0xcc44b, 0xcc45c, 0xcc60b,
276 0xcc61c, 0xcc7cb, 0xcc7dc, 0xcc98b, 0xcc99c, 0xccb4b,
277 0xccb5c, 0xccd0b, 0xccd1c, 0xccecb, 0xccedc, 0xcd08b,
278 0xcd09c, 0xcd24b, 0xcd25c, 0xcd40b, 0xcd41c, 0xcd5cb,
279 0xcd5dc, 0xcd78b, 0xcd79c, 0xcd94b, 0xcd95c, 0xcdb0b,
280 0xcdb1c, 0xcdccb, 0xcdcdc, 0xcde8b, 0xcde9c, 0xce04b,
281 0xce05c, 0xce20b, 0xce21c, 0xce3cb, 0xce3dc, 0xce58b,
282 0xce59c, 0xce74b, 0xce75c, 0xce90b, 0xce91c, 0xceacb,
283 0xceadc, 0xcec8b, 0xcec9c, 0xcee4b, 0xcee5c, 0xcf00b,
284 0xcf01c, 0xcf1cb, 0xcf1dc, 0xcf38b, 0xcf39c, 0xcf54b,
285 0xcf55c, 0xcf70b, 0xcf71c, 0xcf8cb, 0xcf8dc, 0xcfa8b,
286 0xcfa9c, 0xcfc4b, 0xcfc5c, 0xcfe0b, 0xcfe1c, 0xcffcb,
287 0xcffdc, 0xd018b, 0xd019c, 0xd034b, 0xd035c, 0xd050b,
288 0xd051c, 0xd06cb, 0xd06dc, 0xd088b, 0xd089c, 0xd0a4b,
289 0xd0a5c, 0xd0c0b, 0xd0c1c, 0xd0dcb, 0xd0ddc, 0xd0f8b,
290 0xd0f9c, 0xd114b, 0xd115c, 0xd130b, 0xd131c, 0xd14cb,
291 0xd14dc, 0xd168b, 0xd169c, 0xd184b, 0xd185c, 0xd1a0b,
292 0xd1a1c, 0xd1bcb, 0xd1bdc, 0xd1d8b, 0xd1d9c, 0xd1f4b,
293 0xd1f5c, 0xd210b, 0xd211c, 0xd22cb, 0xd22dc, 0xd248b,
294 0xd249c, 0xd264b, 0xd265c, 0xd280b, 0xd281c, 0xd29cb,
295 0xd29dc, 0xd2b8b, 0xd2b9c, 0xd2d4b, 0xd2d5c, 0xd2f0b,
296 0xd2f1c, 0xd30cb, 0xd30dc, 0xd328b, 0xd329c, 0xd344b,
297 0xd345c, 0xd360b, 0xd361c, 0xd37cb, 0xd37dc, 0xd398b,
298 0xd399c, 0xd3b4b, 0xd3b5c, 0xd3d0b, 0xd3d1c, 0xd3ecb,
299 0xd3edc, 0xd408b, 0xd409c, 0xd424b, 0xd425c, 0xd440b,
300 0xd441c, 0xd45cb, 0xd45dc, 0xd478b, 0xd479c, 0xd494b,
301 0xd495c, 0xd4b0b, 0xd4b1c, 0xd4ccb, 0xd4cdc, 0xd4e8b,
302 0xd4e9c, 0xd504b, 0xd505c, 0xd520b, 0xd521c, 0xd53cb,
303 0xd53dc, 0xd558b, 0xd559c, 0xd574b, 0xd575c, 0xd590b,
304 0xd591c, 0xd5acb, 0xd5adc, 0xd5c8b, 0xd5c9c, 0xd5e4b,
305 0xd5e5c, 0xd600b, 0xd601c, 0xd61cb, 0xd61dc, 0xd638b,
306 0xd639c, 0xd654b, 0xd655c, 0xd670b, 0xd671c, 0xd68cb,
307 0xd68dc, 0xd6a8b, 0xd6a9c, 0xd6c4b, 0xd6c5c, 0xd6e0b,
308 0xd6e1c, 0xd6fcb, 0xd6fdc, 0xd718b, 0xd719c, 0xd734b,
309 0xd735c, 0xd750b, 0xd751c, 0xd76cb, 0xd76dc, 0xd788b,
310 0xd789c, 0xd7a40, 0xd7b08, 0xd7c70, 0xd7cb9, 0xd7fc0,
311 0xfb1e4, 0xfb1f0, 0xfe004, 0xfe100, 0xfe204, 0xfe300,
312 0xfeff1, 0xff000, 0xff9e4, 0xffa00, 0xfff01, 0xfffc0,
313 0x101fd4, 0x101fe0, 0x102e04, 0x102e10, 0x103764, 0x1037b0,
314 0x10a014, 0x10a040, 0x10a054, 0x10a070, 0x10a0c4, 0x10a100,
315 0x10a384, 0x10a3b0, 0x10a3f4, 0x10a400, 0x10ae54, 0x10ae70,
316 0x10d244, 0x10d280, 0x10eab4, 0x10ead0, 0x10efd4, 0x10f000,
317 0x10f464, 0x10f510, 0x10f824, 0x10f860, 0x110006, 0x110014,
318 0x110026, 0x110030, 0x110384, 0x110470, 0x110704, 0x110710,
319 0x110734, 0x110750, 0x1107f4, 0x110826, 0x110830, 0x110b06,
320 0x110b34, 0x110b76, 0x110b94, 0x110bb0, 0x110bd5, 0x110be0,
321 0x110c24, 0x110c30, 0x110cd5, 0x110ce0, 0x111004, 0x111030,
322 0x111274, 0x1112c6, 0x1112d4, 0x111350, 0x111456, 0x111470,
323 0x111734, 0x111740, 0x111804, 0x111826, 0x111830, 0x111b36,
324 0x111b64, 0x111bf6, 0x111c10, 0x111c25, 0x111c40, 0x111c94,
325 0x111cd0, 0x111ce6, 0x111cf4, 0x111d00, 0x1122c6, 0x1122f4,
326 0x112326, 0x112344, 0x112356, 0x112364, 0x112380, 0x1123e4,
327 0x1123f0, 0x112414, 0x112420, 0x112df4, 0x112e06, 0x112e34,
328 0x112eb0, 0x113004, 0x113026, 0x113040, 0x1133b4, 0x1133d0,
329 0x1133e4, 0x1133f6, 0x113404, 0x113416, 0x113450, 0x113476,
330 0x113490, 0x1134b6, 0x1134e0, 0x113574, 0x113580, 0x113626,
331 0x113640, 0x113664, 0x1136d0, 0x113704, 0x113750, 0x114356,
332 0x114384, 0x114406, 0x114424, 0x114456, 0x114464, 0x114470,
333 0x1145e4, 0x1145f0, 0x114b04, 0x114b16, 0x114b34, 0x114b96,
334 0x114ba4, 0x114bb6, 0x114bd4, 0x114be6, 0x114bf4, 0x114c16,
335 0x114c24, 0x114c40, 0x115af4, 0x115b06, 0x115b24, 0x115b60,
336 0x115b86, 0x115bc4, 0x115be6, 0x115bf4, 0x115c10, 0x115dc4,
337 0x115de0, 0x116306, 0x116334, 0x1163b6, 0x1163d4, 0x1163e6,
338 0x1163f4, 0x116410, 0x116ab4, 0x116ac6, 0x116ad4, 0x116ae6,
339 0x116b04, 0x116b66, 0x116b74, 0x116b80, 0x1171d4, 0x117200,
340 0x117224, 0x117266, 0x117274, 0x1172c0, 0x1182c6, 0x1182f4,
341 0x118386, 0x118394, 0x1183b0, 0x119304, 0x119316, 0x119360,
342 0x119376, 0x119390, 0x1193b4, 0x1193d6, 0x1193e4, 0x1193f5,
343 0x119406, 0x119415, 0x119426, 0x119434, 0x119440, 0x119d16,
344 0x119d44, 0x119d80, 0x119da4, 0x119dc6, 0x119e04, 0x119e10,
345 0x119e46, 0x119e50, 0x11a014, 0x11a0b0, 0x11a334, 0x11a396,
346 0x11a3a5, 0x11a3b4, 0x11a3f0, 0x11a474, 0x11a480, 0x11a514,
347 0x11a576, 0x11a594, 0x11a5c0, 0x11a845, 0x11a8a4, 0x11a976,
348 0x11a984, 0x11a9a0, 0x11c2f6, 0x11c304, 0x11c370, 0x11c384,
349 0x11c3e6, 0x11c3f4, 0x11c400, 0x11c924, 0x11ca80, 0x11ca96,
350 0x11caa4, 0x11cb16, 0x11cb24, 0x11cb46, 0x11cb54, 0x11cb70,
351 0x11d314, 0x11d370, 0x11d3a4, 0x11d3b0, 0x11d3c4, 0x11d3e0,
352 0x11d3f4, 0x11d465, 0x11d474, 0x11d480, 0x11d8a6, 0x11d8f0,
353 0x11d904, 0x11d920, 0x11d936, 0x11d954, 0x11d966, 0x11d974,
354 0x11d980, 0x11ef34, 0x11ef56, 0x11ef70, 0x11f004, 0x11f025,
355 0x11f036, 0x11f040, 0x11f346, 0x11f364, 0x11f3b0, 0x11f3e6,
356 0x11f404, 0x11f416, 0x11f424, 0x11f430, 0x134301, 0x134404,
357 0x134410, 0x134474, 0x134560, 0x16af04, 0x16af50, 0x16b304,
358 0x16b370, 0x16f4f4, 0x16f500, 0x16f516, 0x16f880, 0x16f8f4,
359 0x16f930, 0x16fe44, 0x16fe50, 0x16ff06, 0x16ff20, 0x1bc9d4,
360 0x1bc9f0, 0x1bca01, 0x1bca40, 0x1cf004, 0x1cf2e0, 0x1cf304,
361 0x1cf470, 0x1d1654, 0x1d1666, 0x1d1674, 0x1d16a0, 0x1d16d6,
362 0x1d16e4, 0x1d1731, 0x1d17b4, 0x1d1830, 0x1d1854, 0x1d18c0,
363 0x1d1aa4, 0x1d1ae0, 0x1d2424, 0x1d2450, 0x1da004, 0x1da370,
364 0x1da3b4, 0x1da6d0, 0x1da754, 0x1da760, 0x1da844, 0x1da850,
365 0x1da9b4, 0x1daa00, 0x1daa14, 0x1dab00, 0x1e0004, 0x1e0070,
366 0x1e0084, 0x1e0190, 0x1e01b4, 0x1e0220, 0x1e0234, 0x1e0250,
367 0x1e0264, 0x1e02b0, 0x1e08f4, 0x1e0900, 0x1e1304, 0x1e1370,
368 0x1e2ae4, 0x1e2af0, 0x1e2ec4, 0x1e2f00, 0x1e4ec4, 0x1e4f00,
369 0x1e8d04, 0x1e8d70, 0x1e9444, 0x1e94b0, 0x1f1e6d, 0x1f2000,
370 0x1f3fb4, 0x1f4000, 0xe00001, 0xe00204, 0xe00801, 0xe01004,
371 0xe01f01, 0xe10000,
372 };
373
374 inline constexpr char32_t __incb_linkers[] = {
375 0x094d, 0x09cd, 0x0acd, 0x0b4d, 0x0c4d, 0x0d4d,
376 };
377
378 enum class _InCB { _Consonant = 1, _Extend = 2 };
379
380 // Values generated by contrib/unicode/gen_std_format_width.py,
381 // from DerivedCoreProperties.txt from the Unicode standard.
382 // Entries are (code_point << 2) + property.
383 inline constexpr uint32_t __incb_edges[] = {
384 0xc02, 0xd3c, 0xd42, 0xdc0, 0x120e, 0x1220,
385 0x1646, 0x16f8, 0x16fe, 0x1700, 0x1706, 0x170c,
386 0x1712, 0x1718, 0x171e, 0x1720, 0x1842, 0x186c,
387 0x192e, 0x1980, 0x19c2, 0x19c4, 0x1b5a, 0x1b74,
388 0x1b7e, 0x1b94, 0x1b9e, 0x1ba4, 0x1baa, 0x1bb8,
389 0x1c46, 0x1c48, 0x1cc2, 0x1d2c, 0x1fae, 0x1fd0,
390 0x1ff6, 0x1ff8, 0x205a, 0x2068, 0x206e, 0x2090,
391 0x2096, 0x20a0, 0x20a6, 0x20b8, 0x2166, 0x2170,
392 0x2262, 0x2280, 0x232a, 0x2388, 0x238e, 0x2400,
393 0x2455, 0x24e8, 0x24f2, 0x24f4, 0x2546, 0x2554,
394 0x2561, 0x2580, 0x25e1, 0x2600, 0x2655, 0x26a4,
395 0x26a9, 0x26c4, 0x26c9, 0x26cc, 0x26d9, 0x26e8,
396 0x26f2, 0x26f4, 0x2771, 0x2778, 0x277d, 0x2780,
397 0x27c1, 0x27c8, 0x27fa, 0x27fc, 0x28f2, 0x28f4,
398 0x2a55, 0x2aa4, 0x2aa9, 0x2ac4, 0x2ac9, 0x2ad0,
399 0x2ad5, 0x2ae8, 0x2af2, 0x2af4, 0x2be5, 0x2be8,
400 0x2c55, 0x2ca4, 0x2ca9, 0x2cc4, 0x2cc9, 0x2cd0,
401 0x2cd5, 0x2ce8, 0x2cf2, 0x2cf4, 0x2d71, 0x2d78,
402 0x2d7d, 0x2d80, 0x2dc5, 0x2dc8, 0x3055, 0x30a4,
403 0x30a9, 0x30e8, 0x30f2, 0x30f4, 0x3156, 0x315c,
404 0x3161, 0x316c, 0x32f2, 0x32f4, 0x3455, 0x34ee,
405 0x34f4, 0x38e2, 0x38ec, 0x3922, 0x3930, 0x3ae2,
406 0x3aec, 0x3b22, 0x3b30, 0x3c62, 0x3c68, 0x3cd6,
407 0x3cd8, 0x3cde, 0x3ce0, 0x3ce6, 0x3ce8, 0x3dc6,
408 0x3dcc, 0x3dd2, 0x3dd4, 0x3dea, 0x3df8, 0x3e02,
409 0x3e04, 0x3e0a, 0x3e14, 0x3e1a, 0x3e20, 0x3f1a,
410 0x3f1c, 0x40de, 0x40e0, 0x40e6, 0x40ec, 0x4236,
411 0x4238, 0x4d76, 0x4d80, 0x5c52, 0x5c54, 0x5f4a,
412 0x5f4c, 0x5f76, 0x5f78, 0x62a6, 0x62a8, 0x64e6,
413 0x64f0, 0x685e, 0x6864, 0x6982, 0x6984, 0x69d6,
414 0x69f4, 0x69fe, 0x6a00, 0x6ac2, 0x6af8, 0x6afe,
415 0x6b3c, 0x6cd2, 0x6cd4, 0x6dae, 0x6dd0, 0x6eae,
416 0x6eb0, 0x6f9a, 0x6f9c, 0x70de, 0x70e0, 0x7342,
417 0x734c, 0x7352, 0x7384, 0x738a, 0x73a4, 0x73b6,
418 0x73b8, 0x73d2, 0x73d4, 0x73e2, 0x73e8, 0x7702,
419 0x7800, 0x8036, 0x8038, 0x8342, 0x8374, 0x8386,
420 0x8388, 0x8396, 0x83c4, 0xb3be, 0xb3c8, 0xb5fe,
421 0xb600, 0xb782, 0xb800, 0xc0aa, 0xc0c0, 0xc266,
422 0xc26c, 0x299be, 0x299c0, 0x299d2, 0x299f8, 0x29a7a,
423 0x29a80, 0x29bc2, 0x29bc8, 0x2a0b2, 0x2a0b4, 0x2a382,
424 0x2a3c8, 0x2a4ae, 0x2a4b8, 0x2a6ce, 0x2a6d0, 0x2aac2,
425 0x2aac4, 0x2aaca, 0x2aad4, 0x2aade, 0x2aae4, 0x2aafa,
426 0x2ab00, 0x2ab06, 0x2ab08, 0x2abda, 0x2abdc, 0x2afb6,
427 0x2afb8, 0x3ec7a, 0x3ec7c, 0x3f882, 0x3f8c0, 0x407f6,
428 0x407f8, 0x40b82, 0x40b84, 0x40dda, 0x40dec, 0x42836,
429 0x42838, 0x4283e, 0x42840, 0x428e2, 0x428ec, 0x428fe,
430 0x42900, 0x42b96, 0x42b9c, 0x43492, 0x434a0, 0x43aae,
431 0x43ab4, 0x43bf6, 0x43c00, 0x43d1a, 0x43d44, 0x43e0a,
432 0x43e18, 0x441c2, 0x441c4, 0x441fe, 0x44200, 0x442ea,
433 0x442ec, 0x44402, 0x4440c, 0x444ce, 0x444d4, 0x445ce,
434 0x445d0, 0x4472a, 0x4472c, 0x448da, 0x448dc, 0x44ba6,
435 0x44bac, 0x44cee, 0x44cf4, 0x44d9a, 0x44db4, 0x44dc2,
436 0x44dd4, 0x4511a, 0x4511c, 0x4517a, 0x4517c, 0x4530e,
437 0x45310, 0x45702, 0x45704, 0x45ade, 0x45ae0, 0x45cae,
438 0x45cb0, 0x460ea, 0x460ec, 0x464fa, 0x464fc, 0x4650e,
439 0x46510, 0x468d2, 0x468d4, 0x4691e, 0x46920, 0x46a66,
440 0x46a68, 0x4750a, 0x4750c, 0x47512, 0x47518, 0x4765e,
441 0x47660, 0x47d0a, 0x47d0c, 0x5abc2, 0x5abd4, 0x5acc2,
442 0x5acdc, 0x6f27a, 0x6f27c, 0x74596, 0x74598, 0x7459e,
443 0x745a8, 0x745ba, 0x745cc, 0x745ee, 0x7460c, 0x74616,
444 0x74630, 0x746aa, 0x746b8, 0x7490a, 0x74914, 0x78002,
445 0x7801c, 0x78022, 0x78064, 0x7806e, 0x78088, 0x7808e,
446 0x78094, 0x7809a, 0x780ac, 0x7823e, 0x78240, 0x784c2,
447 0x784dc, 0x78aba, 0x78abc, 0x78bb2, 0x78bc0, 0x793b2,
448 0x793c0, 0x7a342, 0x7a35c, 0x7a512, 0x7a52c,
449 };
450
451 // Table generated by contrib/unicode/gen_std_format_width.py,
452 // from emoji-data.txt from the Unicode standard.
453 inline constexpr char32_t __xpicto_edges[] = {
454 0xa9, 0xaa, 0xae, 0xaf, 0x203c, 0x203d, 0x2049, 0x204a,
455 0x2122, 0x2123, 0x2139, 0x213a, 0x2194, 0x219a, 0x21a9, 0x21ab,
456 0x231a, 0x231c, 0x2328, 0x2329, 0x2388, 0x2389, 0x23cf, 0x23d0,
457 0x23e9, 0x23f4, 0x23f8, 0x23fb, 0x24c2, 0x24c3, 0x25aa, 0x25ac,
458 0x25b6, 0x25b7, 0x25c0, 0x25c1, 0x25fb, 0x25ff, 0x2600, 0x2606,
459 0x2607, 0x2613, 0x2614, 0x2686, 0x2690, 0x2706, 0x2708, 0x2713,
460 0x2714, 0x2715, 0x2716, 0x2717, 0x271d, 0x271e, 0x2721, 0x2722,
461 0x2728, 0x2729, 0x2733, 0x2735, 0x2744, 0x2745, 0x2747, 0x2748,
462 0x274c, 0x274d, 0x274e, 0x274f, 0x2753, 0x2756, 0x2757, 0x2758,
463 0x2763, 0x2768, 0x2795, 0x2798, 0x27a1, 0x27a2, 0x27b0, 0x27b1,
464 0x27bf, 0x27c0, 0x2934, 0x2936, 0x2b05, 0x2b08, 0x2b1b, 0x2b1d,
465 0x2b50, 0x2b51, 0x2b55, 0x2b56, 0x3030, 0x3031, 0x303d, 0x303e,
466 0x3297, 0x3298, 0x3299, 0x329a, 0x1f000, 0x1f100, 0x1f10d, 0x1f110,
467 0x1f12f, 0x1f130, 0x1f16c, 0x1f172, 0x1f17e, 0x1f180, 0x1f18e, 0x1f18f,
468 0x1f191, 0x1f19b, 0x1f1ad, 0x1f1e6, 0x1f201, 0x1f210, 0x1f21a, 0x1f21b,
469 0x1f22f, 0x1f230, 0x1f232, 0x1f23b, 0x1f23c, 0x1f240, 0x1f249, 0x1f3fb,
470 0x1f400, 0x1f53e, 0x1f546, 0x1f650, 0x1f680, 0x1f700, 0x1f774, 0x1f780,
471 0x1f7d5, 0x1f800, 0x1f80c, 0x1f810, 0x1f848, 0x1f850, 0x1f85a, 0x1f860,
472 0x1f888, 0x1f890, 0x1f8ae, 0x1f900, 0x1f90c, 0x1f93b, 0x1f93c, 0x1f946,
473 0x1f947, 0x1fb00, 0x1fc00, 0x1fffe,
474 };
475
476#undef _GLIBCXX_GET_UNICODE_DATA
477