"Fossies" - the Fresh Open Source Software Archive 
Member "xorriso-1.5.4/libisofs/hfsplus_decompose_ts_test.c" (30 Jan 2021, 72442 Bytes) of package /linux/misc/xorriso-1.5.4.pl02.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "hfsplus_decompose_ts_test.c" see the
Fossies "Dox" file reference documentation.
1 /*
2 cc -g -o demo/decompose libisofs/hfsplus_decompose_ts_test.c
3 */
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdio.h>
7
8
9 #ifdef HAVE_CONFIG_H
10 #include "../config.h"
11 #endif
12
13 #include "hfsplus.h"
14
15 /*
16 Cased on tn1150 (HFS+ format specification)
17 */
18
19
20 static const uint16_t page00[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
21 [0xc0] = { 0x0041, 0x0300, 0x0000 },
22 [0xc1] = { 0x0041, 0x0301, 0x0000 },
23 [0xc2] = { 0x0041, 0x0302, 0x0000 },
24 [0xc3] = { 0x0041, 0x0303, 0x0000 },
25 [0xc4] = { 0x0041, 0x0308, 0x0000 },
26 [0xc5] = { 0x0041, 0x030A, 0x0000 },
27 [0xc7] = { 0x0043, 0x0327, 0x0000 },
28 [0xc8] = { 0x0045, 0x0300, 0x0000 },
29 [0xc9] = { 0x0045, 0x0301, 0x0000 },
30 [0xca] = { 0x0045, 0x0302, 0x0000 },
31 [0xcb] = { 0x0045, 0x0308, 0x0000 },
32 [0xcc] = { 0x0049, 0x0300, 0x0000 },
33 [0xcd] = { 0x0049, 0x0301, 0x0000 },
34 [0xce] = { 0x0049, 0x0302, 0x0000 },
35 [0xcf] = { 0x0049, 0x0308, 0x0000 },
36 [0xd1] = { 0x004E, 0x0303, 0x0000 },
37 [0xd2] = { 0x004F, 0x0300, 0x0000 },
38 [0xd3] = { 0x004F, 0x0301, 0x0000 },
39 [0xd4] = { 0x004F, 0x0302, 0x0000 },
40 [0xd5] = { 0x004F, 0x0303, 0x0000 },
41 [0xd6] = { 0x004F, 0x0308, 0x0000 },
42 [0xd9] = { 0x0055, 0x0300, 0x0000 },
43 [0xda] = { 0x0055, 0x0301, 0x0000 },
44 [0xdb] = { 0x0055, 0x0302, 0x0000 },
45 [0xdc] = { 0x0055, 0x0308, 0x0000 },
46 [0xdd] = { 0x0059, 0x0301, 0x0000 },
47 [0xe0] = { 0x0061, 0x0300, 0x0000 },
48 [0xe1] = { 0x0061, 0x0301, 0x0000 },
49 [0xe2] = { 0x0061, 0x0302, 0x0000 },
50 [0xe3] = { 0x0061, 0x0303, 0x0000 },
51 [0xe4] = { 0x0061, 0x0308, 0x0000 },
52 [0xe5] = { 0x0061, 0x030A, 0x0000 },
53 [0xe7] = { 0x0063, 0x0327, 0x0000 },
54 [0xe8] = { 0x0065, 0x0300, 0x0000 },
55 [0xe9] = { 0x0065, 0x0301, 0x0000 },
56 [0xea] = { 0x0065, 0x0302, 0x0000 },
57 [0xeb] = { 0x0065, 0x0308, 0x0000 },
58 [0xec] = { 0x0069, 0x0300, 0x0000 },
59 [0xed] = { 0x0069, 0x0301, 0x0000 },
60 [0xee] = { 0x0069, 0x0302, 0x0000 },
61 [0xef] = { 0x0069, 0x0308, 0x0000 },
62 [0xf1] = { 0x006E, 0x0303, 0x0000 },
63 [0xf2] = { 0x006F, 0x0300, 0x0000 },
64 [0xf3] = { 0x006F, 0x0301, 0x0000 },
65 [0xf4] = { 0x006F, 0x0302, 0x0000 },
66 [0xf5] = { 0x006F, 0x0303, 0x0000 },
67 [0xf6] = { 0x006F, 0x0308, 0x0000 },
68 [0xf9] = { 0x0075, 0x0300, 0x0000 },
69 [0xfa] = { 0x0075, 0x0301, 0x0000 },
70 [0xfb] = { 0x0075, 0x0302, 0x0000 },
71 [0xfc] = { 0x0075, 0x0308, 0x0000 },
72 [0xfd] = { 0x0079, 0x0301, 0x0000 },
73 [0xff] = { 0x0079, 0x0308, 0x0000 },
74 };
75
76 static const uint16_t page01[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
77 [0x00] = { 0x0041, 0x0304, 0x0000 },
78 [0x01] = { 0x0061, 0x0304, 0x0000 },
79 [0x02] = { 0x0041, 0x0306, 0x0000 },
80 [0x03] = { 0x0061, 0x0306, 0x0000 },
81 [0x04] = { 0x0041, 0x0328, 0x0000 },
82 [0x05] = { 0x0061, 0x0328, 0x0000 },
83 [0x06] = { 0x0043, 0x0301, 0x0000 },
84 [0x07] = { 0x0063, 0x0301, 0x0000 },
85 [0x08] = { 0x0043, 0x0302, 0x0000 },
86 [0x09] = { 0x0063, 0x0302, 0x0000 },
87 [0x0a] = { 0x0043, 0x0307, 0x0000 },
88 [0x0b] = { 0x0063, 0x0307, 0x0000 },
89 [0x0c] = { 0x0043, 0x030C, 0x0000 },
90 [0x0d] = { 0x0063, 0x030C, 0x0000 },
91 [0x0e] = { 0x0044, 0x030C, 0x0000 },
92 [0x0f] = { 0x0064, 0x030C, 0x0000 },
93 [0x12] = { 0x0045, 0x0304, 0x0000 },
94 [0x13] = { 0x0065, 0x0304, 0x0000 },
95 [0x14] = { 0x0045, 0x0306, 0x0000 },
96 [0x15] = { 0x0065, 0x0306, 0x0000 },
97 [0x16] = { 0x0045, 0x0307, 0x0000 },
98 [0x17] = { 0x0065, 0x0307, 0x0000 },
99 [0x18] = { 0x0045, 0x0328, 0x0000 },
100 [0x19] = { 0x0065, 0x0328, 0x0000 },
101 [0x1a] = { 0x0045, 0x030C, 0x0000 },
102 [0x1b] = { 0x0065, 0x030C, 0x0000 },
103 [0x1c] = { 0x0047, 0x0302, 0x0000 },
104 [0x1d] = { 0x0067, 0x0302, 0x0000 },
105 [0x1e] = { 0x0047, 0x0306, 0x0000 },
106 [0x1f] = { 0x0067, 0x0306, 0x0000 },
107 [0x20] = { 0x0047, 0x0307, 0x0000 },
108 [0x21] = { 0x0067, 0x0307, 0x0000 },
109 [0x22] = { 0x0047, 0x0327, 0x0000 },
110 [0x23] = { 0x0067, 0x0327, 0x0000 },
111 [0x24] = { 0x0048, 0x0302, 0x0000 },
112 [0x25] = { 0x0068, 0x0302, 0x0000 },
113 [0x28] = { 0x0049, 0x0303, 0x0000 },
114 [0x29] = { 0x0069, 0x0303, 0x0000 },
115 [0x2a] = { 0x0049, 0x0304, 0x0000 },
116 [0x2b] = { 0x0069, 0x0304, 0x0000 },
117 [0x2c] = { 0x0049, 0x0306, 0x0000 },
118 [0x2d] = { 0x0069, 0x0306, 0x0000 },
119 [0x2e] = { 0x0049, 0x0328, 0x0000 },
120 [0x2f] = { 0x0069, 0x0328, 0x0000 },
121 [0x30] = { 0x0049, 0x0307, 0x0000 },
122 [0x34] = { 0x004A, 0x0302, 0x0000 },
123 [0x35] = { 0x006A, 0x0302, 0x0000 },
124 [0x36] = { 0x004B, 0x0327, 0x0000 },
125 [0x37] = { 0x006B, 0x0327, 0x0000 },
126 [0x39] = { 0x004C, 0x0301, 0x0000 },
127 [0x3a] = { 0x006C, 0x0301, 0x0000 },
128 [0x3b] = { 0x004C, 0x0327, 0x0000 },
129 [0x3c] = { 0x006C, 0x0327, 0x0000 },
130 [0x3d] = { 0x004C, 0x030C, 0x0000 },
131 [0x3e] = { 0x006C, 0x030C, 0x0000 },
132 [0x43] = { 0x004E, 0x0301, 0x0000 },
133 [0x44] = { 0x006E, 0x0301, 0x0000 },
134 [0x45] = { 0x004E, 0x0327, 0x0000 },
135 [0x46] = { 0x006E, 0x0327, 0x0000 },
136 [0x47] = { 0x004E, 0x030C, 0x0000 },
137 [0x48] = { 0x006E, 0x030C, 0x0000 },
138 [0x4c] = { 0x004F, 0x0304, 0x0000 },
139 [0x4d] = { 0x006F, 0x0304, 0x0000 },
140 [0x4e] = { 0x004F, 0x0306, 0x0000 },
141 [0x4f] = { 0x006F, 0x0306, 0x0000 },
142 [0x50] = { 0x004F, 0x030B, 0x0000 },
143 [0x51] = { 0x006F, 0x030B, 0x0000 },
144 [0x54] = { 0x0052, 0x0301, 0x0000 },
145 [0x55] = { 0x0072, 0x0301, 0x0000 },
146 [0x56] = { 0x0052, 0x0327, 0x0000 },
147 [0x57] = { 0x0072, 0x0327, 0x0000 },
148 [0x58] = { 0x0052, 0x030C, 0x0000 },
149 [0x59] = { 0x0072, 0x030C, 0x0000 },
150 [0x5a] = { 0x0053, 0x0301, 0x0000 },
151 [0x5b] = { 0x0073, 0x0301, 0x0000 },
152 [0x5c] = { 0x0053, 0x0302, 0x0000 },
153 [0x5d] = { 0x0073, 0x0302, 0x0000 },
154 [0x5e] = { 0x0053, 0x0327, 0x0000 },
155 [0x5f] = { 0x0073, 0x0327, 0x0000 },
156 [0x60] = { 0x0053, 0x030C, 0x0000 },
157 [0x61] = { 0x0073, 0x030C, 0x0000 },
158 [0x62] = { 0x0054, 0x0327, 0x0000 },
159 [0x63] = { 0x0074, 0x0327, 0x0000 },
160 [0x64] = { 0x0054, 0x030C, 0x0000 },
161 [0x65] = { 0x0074, 0x030C, 0x0000 },
162 [0x68] = { 0x0055, 0x0303, 0x0000 },
163 [0x69] = { 0x0075, 0x0303, 0x0000 },
164 [0x6a] = { 0x0055, 0x0304, 0x0000 },
165 [0x6b] = { 0x0075, 0x0304, 0x0000 },
166 [0x6c] = { 0x0055, 0x0306, 0x0000 },
167 [0x6d] = { 0x0075, 0x0306, 0x0000 },
168 [0x6e] = { 0x0055, 0x030A, 0x0000 },
169 [0x6f] = { 0x0075, 0x030A, 0x0000 },
170 [0x70] = { 0x0055, 0x030B, 0x0000 },
171 [0x71] = { 0x0075, 0x030B, 0x0000 },
172 [0x72] = { 0x0055, 0x0328, 0x0000 },
173 [0x73] = { 0x0075, 0x0328, 0x0000 },
174 [0x74] = { 0x0057, 0x0302, 0x0000 },
175 [0x75] = { 0x0077, 0x0302, 0x0000 },
176 [0x76] = { 0x0059, 0x0302, 0x0000 },
177 [0x77] = { 0x0079, 0x0302, 0x0000 },
178 [0x78] = { 0x0059, 0x0308, 0x0000 },
179 [0x79] = { 0x005A, 0x0301, 0x0000 },
180 [0x7a] = { 0x007A, 0x0301, 0x0000 },
181 [0x7b] = { 0x005A, 0x0307, 0x0000 },
182 [0x7c] = { 0x007A, 0x0307, 0x0000 },
183 [0x7d] = { 0x005A, 0x030C, 0x0000 },
184 [0x7e] = { 0x007A, 0x030C, 0x0000 },
185 [0xa0] = { 0x004F, 0x031B, 0x0000 },
186 [0xa1] = { 0x006F, 0x031B, 0x0000 },
187 [0xaf] = { 0x0055, 0x031B, 0x0000 },
188 [0xb0] = { 0x0075, 0x031B, 0x0000 },
189 [0xcd] = { 0x0041, 0x030C, 0x0000 },
190 [0xce] = { 0x0061, 0x030C, 0x0000 },
191 [0xcf] = { 0x0049, 0x030C, 0x0000 },
192 [0xd0] = { 0x0069, 0x030C, 0x0000 },
193 [0xd1] = { 0x004F, 0x030C, 0x0000 },
194 [0xd2] = { 0x006F, 0x030C, 0x0000 },
195 [0xd3] = { 0x0055, 0x030C, 0x0000 },
196 [0xd4] = { 0x0075, 0x030C, 0x0000 },
197 [0xd5] = { 0x0055, 0x0308, 0x0304, 0x0000 },
198 [0xd6] = { 0x0075, 0x0308, 0x0304, 0x0000 },
199 [0xd7] = { 0x0055, 0x0308, 0x0301, 0x0000 },
200 [0xd8] = { 0x0075, 0x0308, 0x0301, 0x0000 },
201 [0xd9] = { 0x0055, 0x0308, 0x030C, 0x0000 },
202 [0xda] = { 0x0075, 0x0308, 0x030C, 0x0000 },
203 [0xdb] = { 0x0055, 0x0308, 0x0300, 0x0000 },
204 [0xdc] = { 0x0075, 0x0308, 0x0300, 0x0000 },
205 [0xde] = { 0x0041, 0x0308, 0x0304, 0x0000 },
206 [0xdf] = { 0x0061, 0x0308, 0x0304, 0x0000 },
207 [0xe0] = { 0x0041, 0x0307, 0x0304, 0x0000 },
208 [0xe1] = { 0x0061, 0x0307, 0x0304, 0x0000 },
209 [0xe2] = { 0x00C6, 0x0304, 0x0000 },
210 [0xe3] = { 0x00E6, 0x0304, 0x0000 },
211 [0xe6] = { 0x0047, 0x030C, 0x0000 },
212 [0xe7] = { 0x0067, 0x030C, 0x0000 },
213 [0xe8] = { 0x004B, 0x030C, 0x0000 },
214 [0xe9] = { 0x006B, 0x030C, 0x0000 },
215 [0xea] = { 0x004F, 0x0328, 0x0000 },
216 [0xeb] = { 0x006F, 0x0328, 0x0000 },
217 [0xec] = { 0x004F, 0x0328, 0x0304, 0x0000 },
218 [0xed] = { 0x006F, 0x0328, 0x0304, 0x0000 },
219 [0xee] = { 0x01B7, 0x030C, 0x0000 },
220 [0xef] = { 0x0292, 0x030C, 0x0000 },
221 [0xf0] = { 0x006A, 0x030C, 0x0000 },
222 [0xf4] = { 0x0047, 0x0301, 0x0000 },
223 [0xf5] = { 0x0067, 0x0301, 0x0000 },
224 [0xfa] = { 0x0041, 0x030A, 0x0301, 0x0000 },
225 [0xfb] = { 0x0061, 0x030A, 0x0301, 0x0000 },
226 [0xfc] = { 0x00C6, 0x0301, 0x0000 },
227 [0xfd] = { 0x00E6, 0x0301, 0x0000 },
228 [0xfe] = { 0x00D8, 0x0301, 0x0000 },
229 [0xff] = { 0x00F8, 0x0301, 0x0000 },
230 };
231
232 static const uint16_t page02[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
233 [0x00] = { 0x0041, 0x030F, 0x0000 },
234 [0x01] = { 0x0061, 0x030F, 0x0000 },
235 [0x02] = { 0x0041, 0x0311, 0x0000 },
236 [0x03] = { 0x0061, 0x0311, 0x0000 },
237 [0x04] = { 0x0045, 0x030F, 0x0000 },
238 [0x05] = { 0x0065, 0x030F, 0x0000 },
239 [0x06] = { 0x0045, 0x0311, 0x0000 },
240 [0x07] = { 0x0065, 0x0311, 0x0000 },
241 [0x08] = { 0x0049, 0x030F, 0x0000 },
242 [0x09] = { 0x0069, 0x030F, 0x0000 },
243 [0x0a] = { 0x0049, 0x0311, 0x0000 },
244 [0x0b] = { 0x0069, 0x0311, 0x0000 },
245 [0x0c] = { 0x004F, 0x030F, 0x0000 },
246 [0x0d] = { 0x006F, 0x030F, 0x0000 },
247 [0x0e] = { 0x004F, 0x0311, 0x0000 },
248 [0x0f] = { 0x006F, 0x0311, 0x0000 },
249 [0x10] = { 0x0052, 0x030F, 0x0000 },
250 [0x11] = { 0x0072, 0x030F, 0x0000 },
251 [0x12] = { 0x0052, 0x0311, 0x0000 },
252 [0x13] = { 0x0072, 0x0311, 0x0000 },
253 [0x14] = { 0x0055, 0x030F, 0x0000 },
254 [0x15] = { 0x0075, 0x030F, 0x0000 },
255 [0x16] = { 0x0055, 0x0311, 0x0000 },
256 [0x17] = { 0x0075, 0x0311, 0x0000 },
257 };
258
259 static const uint16_t page03[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
260 [0x10] = { 0x0306, 0x0307, 0x0000 },
261 [0x40] = { 0x0300, 0x0000 },
262 [0x41] = { 0x0301, 0x0000 },
263 [0x43] = { 0x0313, 0x0000 },
264 [0x44] = { 0x0308, 0x030D, 0x0000 },
265 [0x74] = { 0x02B9, 0x0000 },
266 [0x7e] = { 0x003B, 0x0000 },
267 [0x85] = { 0x00A8, 0x030D, 0x0000 },
268 [0x86] = { 0x0391, 0x030D, 0x0000 },
269 [0x87] = { 0x00B7, 0x0000 },
270 [0x88] = { 0x0395, 0x030D, 0x0000 },
271 [0x89] = { 0x0397, 0x030D, 0x0000 },
272 [0x8a] = { 0x0399, 0x030D, 0x0000 },
273 [0x8c] = { 0x039F, 0x030D, 0x0000 },
274 [0x8e] = { 0x03A5, 0x030D, 0x0000 },
275 [0x8f] = { 0x03A9, 0x030D, 0x0000 },
276 [0x90] = { 0x03B9, 0x0308, 0x030D, 0x0000 },
277 [0xaa] = { 0x0399, 0x0308, 0x0000 },
278 [0xab] = { 0x03A5, 0x0308, 0x0000 },
279 [0xac] = { 0x03B1, 0x030D, 0x0000 },
280 [0xad] = { 0x03B5, 0x030D, 0x0000 },
281 [0xae] = { 0x03B7, 0x030D, 0x0000 },
282 [0xaf] = { 0x03B9, 0x030D, 0x0000 },
283 [0xb0] = { 0x03C5, 0x0308, 0x030D, 0x0000 },
284 [0xca] = { 0x03B9, 0x0308, 0x0000 },
285 [0xcb] = { 0x03C5, 0x0308, 0x0000 },
286 [0xcc] = { 0x03BF, 0x030D, 0x0000 },
287 [0xcd] = { 0x03C5, 0x030D, 0x0000 },
288 [0xce] = { 0x03C9, 0x030D, 0x0000 },
289 [0xd3] = { 0x03D2, 0x030D, 0x0000 },
290 [0xd4] = { 0x03D2, 0x0308, 0x0000 },
291 };
292
293 static const uint16_t page04[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
294 [0x01] = { 0x0415, 0x0308, 0x0000 },
295 [0x03] = { 0x0413, 0x0301, 0x0000 },
296 [0x07] = { 0x0406, 0x0308, 0x0000 },
297 [0x0c] = { 0x041A, 0x0301, 0x0000 },
298 [0x0e] = { 0x0423, 0x0306, 0x0000 },
299 [0x19] = { 0x0418, 0x0306, 0x0000 },
300 [0x39] = { 0x0438, 0x0306, 0x0000 },
301 [0x51] = { 0x0435, 0x0308, 0x0000 },
302 [0x53] = { 0x0433, 0x0301, 0x0000 },
303 [0x57] = { 0x0456, 0x0308, 0x0000 },
304 [0x5c] = { 0x043A, 0x0301, 0x0000 },
305 [0x5e] = { 0x0443, 0x0306, 0x0000 },
306 [0x76] = { 0x0474, 0x030F, 0x0000 },
307 [0x77] = { 0x0475, 0x030F, 0x0000 },
308 [0xc1] = { 0x0416, 0x0306, 0x0000 },
309 [0xc2] = { 0x0436, 0x0306, 0x0000 },
310 [0xd0] = { 0x0410, 0x0306, 0x0000 },
311 [0xd1] = { 0x0430, 0x0306, 0x0000 },
312 [0xd2] = { 0x0410, 0x0308, 0x0000 },
313 [0xd3] = { 0x0430, 0x0308, 0x0000 },
314 [0xd4] = { 0x00C6, 0x0000 },
315 [0xd5] = { 0x00E6, 0x0000 },
316 [0xd6] = { 0x0415, 0x0306, 0x0000 },
317 [0xd7] = { 0x0435, 0x0306, 0x0000 },
318 [0xd8] = { 0x018F, 0x0000 },
319 [0xd9] = { 0x0259, 0x0000 },
320 [0xda] = { 0x018F, 0x0308, 0x0000 },
321 [0xdb] = { 0x0259, 0x0308, 0x0000 },
322 [0xdc] = { 0x0416, 0x0308, 0x0000 },
323 [0xdd] = { 0x0436, 0x0308, 0x0000 },
324 [0xde] = { 0x0417, 0x0308, 0x0000 },
325 [0xdf] = { 0x0437, 0x0308, 0x0000 },
326 [0xe0] = { 0x01B7, 0x0000 },
327 [0xe1] = { 0x0292, 0x0000 },
328 [0xe2] = { 0x0418, 0x0304, 0x0000 },
329 [0xe3] = { 0x0438, 0x0304, 0x0000 },
330 [0xe4] = { 0x0418, 0x0308, 0x0000 },
331 [0xe5] = { 0x0438, 0x0308, 0x0000 },
332 [0xe6] = { 0x041E, 0x0308, 0x0000 },
333 [0xe7] = { 0x043E, 0x0308, 0x0000 },
334 [0xe8] = { 0x019F, 0x0000 },
335 [0xe9] = { 0x0275, 0x0000 },
336 [0xea] = { 0x019F, 0x0308, 0x0000 },
337 [0xeb] = { 0x0275, 0x0308, 0x0000 },
338 [0xee] = { 0x0423, 0x0304, 0x0000 },
339 [0xef] = { 0x0443, 0x0304, 0x0000 },
340 [0xf0] = { 0x0423, 0x0308, 0x0000 },
341 [0xf1] = { 0x0443, 0x0308, 0x0000 },
342 [0xf2] = { 0x0423, 0x030B, 0x0000 },
343 [0xf3] = { 0x0443, 0x030B, 0x0000 },
344 [0xf4] = { 0x0427, 0x0308, 0x0000 },
345 [0xf5] = { 0x0447, 0x0308, 0x0000 },
346 [0xf8] = { 0x042B, 0x0308, 0x0000 },
347 [0xf9] = { 0x044B, 0x0308, 0x0000 },
348 };
349
350 static const uint16_t page09[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
351 [0x29] = { 0x0928, 0x093C, 0x0000 },
352 [0x31] = { 0x0930, 0x093C, 0x0000 },
353 [0x34] = { 0x0933, 0x093C, 0x0000 },
354 [0x58] = { 0x0915, 0x093C, 0x0000 },
355 [0x59] = { 0x0916, 0x093C, 0x0000 },
356 [0x5a] = { 0x0917, 0x093C, 0x0000 },
357 [0x5b] = { 0x091C, 0x093C, 0x0000 },
358 [0x5c] = { 0x0921, 0x093C, 0x0000 },
359 [0x5d] = { 0x0922, 0x093C, 0x0000 },
360 [0x5e] = { 0x092B, 0x093C, 0x0000 },
361 [0x5f] = { 0x092F, 0x093C, 0x0000 },
362 [0xb0] = { 0x09AC, 0x09BC, 0x0000 },
363 [0xcb] = { 0x09C7, 0x09BE, 0x0000 },
364 [0xcc] = { 0x09C7, 0x09D7, 0x0000 },
365 [0xdc] = { 0x09A1, 0x09BC, 0x0000 },
366 [0xdd] = { 0x09A2, 0x09BC, 0x0000 },
367 [0xdf] = { 0x09AF, 0x09BC, 0x0000 },
368 };
369
370 static const uint16_t page0a[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
371 [0x59] = { 0x0A16, 0x0A3C, 0x0000 },
372 [0x5a] = { 0x0A17, 0x0A3C, 0x0000 },
373 [0x5b] = { 0x0A1C, 0x0A3C, 0x0000 },
374 [0x5c] = { 0x0A21, 0x0A3C, 0x0000 },
375 [0x5e] = { 0x0A2B, 0x0A3C, 0x0000 },
376 };
377
378 static const uint16_t page0b[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
379 [0x48] = { 0x0B47, 0x0B56, 0x0000 },
380 [0x4b] = { 0x0B47, 0x0B3E, 0x0000 },
381 [0x4c] = { 0x0B47, 0x0B57, 0x0000 },
382 [0x5c] = { 0x0B21, 0x0B3C, 0x0000 },
383 [0x5d] = { 0x0B22, 0x0B3C, 0x0000 },
384 [0x5f] = { 0x0B2F, 0x0B3C, 0x0000 },
385 [0x94] = { 0x0B92, 0x0BD7, 0x0000 },
386 [0xca] = { 0x0BC6, 0x0BBE, 0x0000 },
387 [0xcb] = { 0x0BC7, 0x0BBE, 0x0000 },
388 [0xcc] = { 0x0BC6, 0x0BD7, 0x0000 },
389 };
390
391 static const uint16_t page0c[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
392 [0x48] = { 0x0C46, 0x0C56, 0x0000 },
393 [0xc0] = { 0x0CBF, 0x0CD5, 0x0000 },
394 [0xc7] = { 0x0CC6, 0x0CD5, 0x0000 },
395 [0xc8] = { 0x0CC6, 0x0CD6, 0x0000 },
396 [0xca] = { 0x0CC6, 0x0CC2, 0x0000 },
397 [0xcb] = { 0x0CC6, 0x0CC2, 0x0CD5, 0x0000 },
398 };
399
400 static const uint16_t page0d[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
401 [0x4a] = { 0x0D46, 0x0D3E, 0x0000 },
402 [0x4b] = { 0x0D47, 0x0D3E, 0x0000 },
403 [0x4c] = { 0x0D46, 0x0D57, 0x0000 },
404 };
405
406 static const uint16_t page0e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
407 [0x33] = { 0x0E4D, 0x0E32, 0x0000 },
408 [0xb3] = { 0x0ECD, 0x0EB2, 0x0000 },
409 };
410
411 static const uint16_t page0f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
412 [0x43] = { 0x0F42, 0x0FB7, 0x0000 },
413 [0x4d] = { 0x0F4C, 0x0FB7, 0x0000 },
414 [0x52] = { 0x0F51, 0x0FB7, 0x0000 },
415 [0x57] = { 0x0F56, 0x0FB7, 0x0000 },
416 [0x5c] = { 0x0F5B, 0x0FB7, 0x0000 },
417 [0x69] = { 0x0F40, 0x0FB5, 0x0000 },
418 [0x73] = { 0x0F72, 0x0F71, 0x0000 },
419 [0x75] = { 0x0F74, 0x0F71, 0x0000 },
420 [0x76] = { 0x0FB2, 0x0F80, 0x0000 },
421 [0x77] = { 0x0FB2, 0x0F80, 0x0F71, 0x0000 },
422 [0x78] = { 0x0FB3, 0x0F80, 0x0000 },
423 [0x79] = { 0x0FB3, 0x0F80, 0x0F71, 0x0000 },
424 [0x81] = { 0x0F80, 0x0F71, 0x0000 },
425 [0x93] = { 0x0F92, 0x0FB7, 0x0000 },
426 [0x9d] = { 0x0F9C, 0x0FB7, 0x0000 },
427 [0xa2] = { 0x0FA1, 0x0FB7, 0x0000 },
428 [0xa7] = { 0x0FA6, 0x0FB7, 0x0000 },
429 [0xac] = { 0x0FAB, 0x0FB7, 0x0000 },
430 [0xb9] = { 0x0F90, 0x0FB5, 0x0000 },
431 };
432
433 static const uint16_t page1e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
434 [0x00] = { 0x0041, 0x0325, 0x0000 },
435 [0x01] = { 0x0061, 0x0325, 0x0000 },
436 [0x02] = { 0x0042, 0x0307, 0x0000 },
437 [0x03] = { 0x0062, 0x0307, 0x0000 },
438 [0x04] = { 0x0042, 0x0323, 0x0000 },
439 [0x05] = { 0x0062, 0x0323, 0x0000 },
440 [0x06] = { 0x0042, 0x0331, 0x0000 },
441 [0x07] = { 0x0062, 0x0331, 0x0000 },
442 [0x08] = { 0x0043, 0x0327, 0x0301, 0x0000 },
443 [0x09] = { 0x0063, 0x0327, 0x0301, 0x0000 },
444 [0x0a] = { 0x0044, 0x0307, 0x0000 },
445 [0x0b] = { 0x0064, 0x0307, 0x0000 },
446 [0x0c] = { 0x0044, 0x0323, 0x0000 },
447 [0x0d] = { 0x0064, 0x0323, 0x0000 },
448 [0x0e] = { 0x0044, 0x0331, 0x0000 },
449 [0x0f] = { 0x0064, 0x0331, 0x0000 },
450 [0x10] = { 0x0044, 0x0327, 0x0000 },
451 [0x11] = { 0x0064, 0x0327, 0x0000 },
452 [0x12] = { 0x0044, 0x032D, 0x0000 },
453 [0x13] = { 0x0064, 0x032D, 0x0000 },
454 [0x14] = { 0x0045, 0x0304, 0x0300, 0x0000 },
455 [0x15] = { 0x0065, 0x0304, 0x0300, 0x0000 },
456 [0x16] = { 0x0045, 0x0304, 0x0301, 0x0000 },
457 [0x17] = { 0x0065, 0x0304, 0x0301, 0x0000 },
458 [0x18] = { 0x0045, 0x032D, 0x0000 },
459 [0x19] = { 0x0065, 0x032D, 0x0000 },
460 [0x1a] = { 0x0045, 0x0330, 0x0000 },
461 [0x1b] = { 0x0065, 0x0330, 0x0000 },
462 [0x1c] = { 0x0045, 0x0327, 0x0306, 0x0000 },
463 [0x1d] = { 0x0065, 0x0327, 0x0306, 0x0000 },
464 [0x1e] = { 0x0046, 0x0307, 0x0000 },
465 [0x1f] = { 0x0066, 0x0307, 0x0000 },
466 [0x20] = { 0x0047, 0x0304, 0x0000 },
467 [0x21] = { 0x0067, 0x0304, 0x0000 },
468 [0x22] = { 0x0048, 0x0307, 0x0000 },
469 [0x23] = { 0x0068, 0x0307, 0x0000 },
470 [0x24] = { 0x0048, 0x0323, 0x0000 },
471 [0x25] = { 0x0068, 0x0323, 0x0000 },
472 [0x26] = { 0x0048, 0x0308, 0x0000 },
473 [0x27] = { 0x0068, 0x0308, 0x0000 },
474 [0x28] = { 0x0048, 0x0327, 0x0000 },
475 [0x29] = { 0x0068, 0x0327, 0x0000 },
476 [0x2a] = { 0x0048, 0x032E, 0x0000 },
477 [0x2b] = { 0x0068, 0x032E, 0x0000 },
478 [0x2c] = { 0x0049, 0x0330, 0x0000 },
479 [0x2d] = { 0x0069, 0x0330, 0x0000 },
480 [0x2e] = { 0x0049, 0x0308, 0x0301, 0x0000 },
481 [0x2f] = { 0x0069, 0x0308, 0x0301, 0x0000 },
482 [0x30] = { 0x004B, 0x0301, 0x0000 },
483 [0x31] = { 0x006B, 0x0301, 0x0000 },
484 [0x32] = { 0x004B, 0x0323, 0x0000 },
485 [0x33] = { 0x006B, 0x0323, 0x0000 },
486 [0x34] = { 0x004B, 0x0331, 0x0000 },
487 [0x35] = { 0x006B, 0x0331, 0x0000 },
488 [0x36] = { 0x004C, 0x0323, 0x0000 },
489 [0x37] = { 0x006C, 0x0323, 0x0000 },
490 [0x38] = { 0x004C, 0x0323, 0x0304, 0x0000 },
491 [0x39] = { 0x006C, 0x0323, 0x0304, 0x0000 },
492 [0x3a] = { 0x004C, 0x0331, 0x0000 },
493 [0x3b] = { 0x006C, 0x0331, 0x0000 },
494 [0x3c] = { 0x004C, 0x032D, 0x0000 },
495 [0x3d] = { 0x006C, 0x032D, 0x0000 },
496 [0x3e] = { 0x004D, 0x0301, 0x0000 },
497 [0x3f] = { 0x006D, 0x0301, 0x0000 },
498 [0x40] = { 0x004D, 0x0307, 0x0000 },
499 [0x41] = { 0x006D, 0x0307, 0x0000 },
500 [0x42] = { 0x004D, 0x0323, 0x0000 },
501 [0x43] = { 0x006D, 0x0323, 0x0000 },
502 [0x44] = { 0x004E, 0x0307, 0x0000 },
503 [0x45] = { 0x006E, 0x0307, 0x0000 },
504 [0x46] = { 0x004E, 0x0323, 0x0000 },
505 [0x47] = { 0x006E, 0x0323, 0x0000 },
506 [0x48] = { 0x004E, 0x0331, 0x0000 },
507 [0x49] = { 0x006E, 0x0331, 0x0000 },
508 [0x4a] = { 0x004E, 0x032D, 0x0000 },
509 [0x4b] = { 0x006E, 0x032D, 0x0000 },
510 [0x4c] = { 0x004F, 0x0303, 0x0301, 0x0000 },
511 [0x4d] = { 0x006F, 0x0303, 0x0301, 0x0000 },
512 [0x4e] = { 0x004F, 0x0303, 0x0308, 0x0000 },
513 [0x4f] = { 0x006F, 0x0303, 0x0308, 0x0000 },
514 [0x50] = { 0x004F, 0x0304, 0x0300, 0x0000 },
515 [0x51] = { 0x006F, 0x0304, 0x0300, 0x0000 },
516 [0x52] = { 0x004F, 0x0304, 0x0301, 0x0000 },
517 [0x53] = { 0x006F, 0x0304, 0x0301, 0x0000 },
518 [0x54] = { 0x0050, 0x0301, 0x0000 },
519 [0x55] = { 0x0070, 0x0301, 0x0000 },
520 [0x56] = { 0x0050, 0x0307, 0x0000 },
521 [0x57] = { 0x0070, 0x0307, 0x0000 },
522 [0x58] = { 0x0052, 0x0307, 0x0000 },
523 [0x59] = { 0x0072, 0x0307, 0x0000 },
524 [0x5a] = { 0x0052, 0x0323, 0x0000 },
525 [0x5b] = { 0x0072, 0x0323, 0x0000 },
526 [0x5c] = { 0x0052, 0x0323, 0x0304, 0x0000 },
527 [0x5d] = { 0x0072, 0x0323, 0x0304, 0x0000 },
528 [0x5e] = { 0x0052, 0x0331, 0x0000 },
529 [0x5f] = { 0x0072, 0x0331, 0x0000 },
530 [0x60] = { 0x0053, 0x0307, 0x0000 },
531 [0x61] = { 0x0073, 0x0307, 0x0000 },
532 [0x62] = { 0x0053, 0x0323, 0x0000 },
533 [0x63] = { 0x0073, 0x0323, 0x0000 },
534 [0x64] = { 0x0053, 0x0301, 0x0307, 0x0000 },
535 [0x65] = { 0x0073, 0x0301, 0x0307, 0x0000 },
536 [0x66] = { 0x0053, 0x030C, 0x0307, 0x0000 },
537 [0x67] = { 0x0073, 0x030C, 0x0307, 0x0000 },
538 [0x68] = { 0x0053, 0x0323, 0x0307, 0x0000 },
539 [0x69] = { 0x0073, 0x0323, 0x0307, 0x0000 },
540 [0x6a] = { 0x0054, 0x0307, 0x0000 },
541 [0x6b] = { 0x0074, 0x0307, 0x0000 },
542 [0x6c] = { 0x0054, 0x0323, 0x0000 },
543 [0x6d] = { 0x0074, 0x0323, 0x0000 },
544 [0x6e] = { 0x0054, 0x0331, 0x0000 },
545 [0x6f] = { 0x0074, 0x0331, 0x0000 },
546 [0x70] = { 0x0054, 0x032D, 0x0000 },
547 [0x71] = { 0x0074, 0x032D, 0x0000 },
548 [0x72] = { 0x0055, 0x0324, 0x0000 },
549 [0x73] = { 0x0075, 0x0324, 0x0000 },
550 [0x74] = { 0x0055, 0x0330, 0x0000 },
551 [0x75] = { 0x0075, 0x0330, 0x0000 },
552 [0x76] = { 0x0055, 0x032D, 0x0000 },
553 [0x77] = { 0x0075, 0x032D, 0x0000 },
554 [0x78] = { 0x0055, 0x0303, 0x0301, 0x0000 },
555 [0x79] = { 0x0075, 0x0303, 0x0301, 0x0000 },
556 [0x7a] = { 0x0055, 0x0304, 0x0308, 0x0000 },
557 [0x7b] = { 0x0075, 0x0304, 0x0308, 0x0000 },
558 [0x7c] = { 0x0056, 0x0303, 0x0000 },
559 [0x7d] = { 0x0076, 0x0303, 0x0000 },
560 [0x7e] = { 0x0056, 0x0323, 0x0000 },
561 [0x7f] = { 0x0076, 0x0323, 0x0000 },
562 [0x80] = { 0x0057, 0x0300, 0x0000 },
563 [0x81] = { 0x0077, 0x0300, 0x0000 },
564 [0x82] = { 0x0057, 0x0301, 0x0000 },
565 [0x83] = { 0x0077, 0x0301, 0x0000 },
566 [0x84] = { 0x0057, 0x0308, 0x0000 },
567 [0x85] = { 0x0077, 0x0308, 0x0000 },
568 [0x86] = { 0x0057, 0x0307, 0x0000 },
569 [0x87] = { 0x0077, 0x0307, 0x0000 },
570 [0x88] = { 0x0057, 0x0323, 0x0000 },
571 [0x89] = { 0x0077, 0x0323, 0x0000 },
572 [0x8a] = { 0x0058, 0x0307, 0x0000 },
573 [0x8b] = { 0x0078, 0x0307, 0x0000 },
574 [0x8c] = { 0x0058, 0x0308, 0x0000 },
575 [0x8d] = { 0x0078, 0x0308, 0x0000 },
576 [0x8e] = { 0x0059, 0x0307, 0x0000 },
577 [0x8f] = { 0x0079, 0x0307, 0x0000 },
578 [0x90] = { 0x005A, 0x0302, 0x0000 },
579 [0x91] = { 0x007A, 0x0302, 0x0000 },
580 [0x92] = { 0x005A, 0x0323, 0x0000 },
581 [0x93] = { 0x007A, 0x0323, 0x0000 },
582 [0x94] = { 0x005A, 0x0331, 0x0000 },
583 [0x95] = { 0x007A, 0x0331, 0x0000 },
584 [0x96] = { 0x0068, 0x0331, 0x0000 },
585 [0x97] = { 0x0074, 0x0308, 0x0000 },
586 [0x98] = { 0x0077, 0x030A, 0x0000 },
587 [0x99] = { 0x0079, 0x030A, 0x0000 },
588 [0x9b] = { 0x017F, 0x0307, 0x0000 },
589 [0xa0] = { 0x0041, 0x0323, 0x0000 },
590 [0xa1] = { 0x0061, 0x0323, 0x0000 },
591 [0xa2] = { 0x0041, 0x0309, 0x0000 },
592 [0xa3] = { 0x0061, 0x0309, 0x0000 },
593 [0xa4] = { 0x0041, 0x0302, 0x0301, 0x0000 },
594 [0xa5] = { 0x0061, 0x0302, 0x0301, 0x0000 },
595 [0xa6] = { 0x0041, 0x0302, 0x0300, 0x0000 },
596 [0xa7] = { 0x0061, 0x0302, 0x0300, 0x0000 },
597 [0xa8] = { 0x0041, 0x0302, 0x0309, 0x0000 },
598 [0xa9] = { 0x0061, 0x0302, 0x0309, 0x0000 },
599 [0xaa] = { 0x0041, 0x0302, 0x0303, 0x0000 },
600 [0xab] = { 0x0061, 0x0302, 0x0303, 0x0000 },
601 [0xac] = { 0x0041, 0x0323, 0x0302, 0x0000 },
602 [0xad] = { 0x0061, 0x0323, 0x0302, 0x0000 },
603 [0xae] = { 0x0041, 0x0306, 0x0301, 0x0000 },
604 [0xaf] = { 0x0061, 0x0306, 0x0301, 0x0000 },
605 [0xb0] = { 0x0041, 0x0306, 0x0300, 0x0000 },
606 [0xb1] = { 0x0061, 0x0306, 0x0300, 0x0000 },
607 [0xb2] = { 0x0041, 0x0306, 0x0309, 0x0000 },
608 [0xb3] = { 0x0061, 0x0306, 0x0309, 0x0000 },
609 [0xb4] = { 0x0041, 0x0306, 0x0303, 0x0000 },
610 [0xb5] = { 0x0061, 0x0306, 0x0303, 0x0000 },
611 [0xb6] = { 0x0041, 0x0323, 0x0306, 0x0000 },
612 [0xb7] = { 0x0061, 0x0323, 0x0306, 0x0000 },
613 [0xb8] = { 0x0045, 0x0323, 0x0000 },
614 [0xb9] = { 0x0065, 0x0323, 0x0000 },
615 [0xba] = { 0x0045, 0x0309, 0x0000 },
616 [0xbb] = { 0x0065, 0x0309, 0x0000 },
617 [0xbc] = { 0x0045, 0x0303, 0x0000 },
618 [0xbd] = { 0x0065, 0x0303, 0x0000 },
619 [0xbe] = { 0x0045, 0x0302, 0x0301, 0x0000 },
620 [0xbf] = { 0x0065, 0x0302, 0x0301, 0x0000 },
621 [0xc0] = { 0x0045, 0x0302, 0x0300, 0x0000 },
622 [0xc1] = { 0x0065, 0x0302, 0x0300, 0x0000 },
623 [0xc2] = { 0x0045, 0x0302, 0x0309, 0x0000 },
624 [0xc3] = { 0x0065, 0x0302, 0x0309, 0x0000 },
625 [0xc4] = { 0x0045, 0x0302, 0x0303, 0x0000 },
626 [0xc5] = { 0x0065, 0x0302, 0x0303, 0x0000 },
627 [0xc6] = { 0x0045, 0x0323, 0x0302, 0x0000 },
628 [0xc7] = { 0x0065, 0x0323, 0x0302, 0x0000 },
629 [0xc8] = { 0x0049, 0x0309, 0x0000 },
630 [0xc9] = { 0x0069, 0x0309, 0x0000 },
631 [0xca] = { 0x0049, 0x0323, 0x0000 },
632 [0xcb] = { 0x0069, 0x0323, 0x0000 },
633 [0xcc] = { 0x004F, 0x0323, 0x0000 },
634 [0xcd] = { 0x006F, 0x0323, 0x0000 },
635 [0xce] = { 0x004F, 0x0309, 0x0000 },
636 [0xcf] = { 0x006F, 0x0309, 0x0000 },
637 [0xd0] = { 0x004F, 0x0302, 0x0301, 0x0000 },
638 [0xd1] = { 0x006F, 0x0302, 0x0301, 0x0000 },
639 [0xd2] = { 0x004F, 0x0302, 0x0300, 0x0000 },
640 [0xd3] = { 0x006F, 0x0302, 0x0300, 0x0000 },
641 [0xd4] = { 0x004F, 0x0302, 0x0309, 0x0000 },
642 [0xd5] = { 0x006F, 0x0302, 0x0309, 0x0000 },
643 [0xd6] = { 0x004F, 0x0302, 0x0303, 0x0000 },
644 [0xd7] = { 0x006F, 0x0302, 0x0303, 0x0000 },
645 [0xd8] = { 0x004F, 0x0323, 0x0302, 0x0000 },
646 [0xd9] = { 0x006F, 0x0323, 0x0302, 0x0000 },
647 [0xda] = { 0x004F, 0x031B, 0x0301, 0x0000 },
648 [0xdb] = { 0x006F, 0x031B, 0x0301, 0x0000 },
649 [0xdc] = { 0x004F, 0x031B, 0x0300, 0x0000 },
650 [0xdd] = { 0x006F, 0x031B, 0x0300, 0x0000 },
651 [0xde] = { 0x004F, 0x031B, 0x0309, 0x0000 },
652 [0xdf] = { 0x006F, 0x031B, 0x0309, 0x0000 },
653 [0xe0] = { 0x004F, 0x031B, 0x0303, 0x0000 },
654 [0xe1] = { 0x006F, 0x031B, 0x0303, 0x0000 },
655 [0xe2] = { 0x004F, 0x031B, 0x0323, 0x0000 },
656 [0xe3] = { 0x006F, 0x031B, 0x0323, 0x0000 },
657 [0xe4] = { 0x0055, 0x0323, 0x0000 },
658 [0xe5] = { 0x0075, 0x0323, 0x0000 },
659 [0xe6] = { 0x0055, 0x0309, 0x0000 },
660 [0xe7] = { 0x0075, 0x0309, 0x0000 },
661 [0xe8] = { 0x0055, 0x031B, 0x0301, 0x0000 },
662 [0xe9] = { 0x0075, 0x031B, 0x0301, 0x0000 },
663 [0xea] = { 0x0055, 0x031B, 0x0300, 0x0000 },
664 [0xeb] = { 0x0075, 0x031B, 0x0300, 0x0000 },
665 [0xec] = { 0x0055, 0x031B, 0x0309, 0x0000 },
666 [0xed] = { 0x0075, 0x031B, 0x0309, 0x0000 },
667 [0xee] = { 0x0055, 0x031B, 0x0303, 0x0000 },
668 [0xef] = { 0x0075, 0x031B, 0x0303, 0x0000 },
669 [0xf0] = { 0x0055, 0x031B, 0x0323, 0x0000 },
670 [0xf1] = { 0x0075, 0x031B, 0x0323, 0x0000 },
671 [0xf2] = { 0x0059, 0x0300, 0x0000 },
672 [0xf3] = { 0x0079, 0x0300, 0x0000 },
673 [0xf4] = { 0x0059, 0x0323, 0x0000 },
674 [0xf5] = { 0x0079, 0x0323, 0x0000 },
675 [0xf6] = { 0x0059, 0x0309, 0x0000 },
676 [0xf7] = { 0x0079, 0x0309, 0x0000 },
677 [0xf8] = { 0x0059, 0x0303, 0x0000 },
678 [0xf9] = { 0x0079, 0x0303, 0x0000 },
679 };
680
681 static const uint16_t page1f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
682 [0x00] = { 0x03B1, 0x0313, 0x0000 },
683 [0x01] = { 0x03B1, 0x0314, 0x0000 },
684 [0x02] = { 0x03B1, 0x0313, 0x0300, 0x0000 },
685 [0x03] = { 0x03B1, 0x0314, 0x0300, 0x0000 },
686 [0x04] = { 0x03B1, 0x0313, 0x0301, 0x0000 },
687 [0x05] = { 0x03B1, 0x0314, 0x0301, 0x0000 },
688 [0x06] = { 0x03B1, 0x0313, 0x0342, 0x0000 },
689 [0x07] = { 0x03B1, 0x0314, 0x0342, 0x0000 },
690 [0x08] = { 0x0391, 0x0313, 0x0000 },
691 [0x09] = { 0x0391, 0x0314, 0x0000 },
692 [0x0a] = { 0x0391, 0x0313, 0x0300, 0x0000 },
693 [0x0b] = { 0x0391, 0x0314, 0x0300, 0x0000 },
694 [0x0c] = { 0x0391, 0x0313, 0x0301, 0x0000 },
695 [0x0d] = { 0x0391, 0x0314, 0x0301, 0x0000 },
696 [0x0e] = { 0x0391, 0x0313, 0x0342, 0x0000 },
697 [0x0f] = { 0x0391, 0x0314, 0x0342, 0x0000 },
698 [0x10] = { 0x03B5, 0x0313, 0x0000 },
699 [0x11] = { 0x03B5, 0x0314, 0x0000 },
700 [0x12] = { 0x03B5, 0x0313, 0x0300, 0x0000 },
701 [0x13] = { 0x03B5, 0x0314, 0x0300, 0x0000 },
702 [0x14] = { 0x03B5, 0x0313, 0x0301, 0x0000 },
703 [0x15] = { 0x03B5, 0x0314, 0x0301, 0x0000 },
704 [0x18] = { 0x0395, 0x0313, 0x0000 },
705 [0x19] = { 0x0395, 0x0314, 0x0000 },
706 [0x1a] = { 0x0395, 0x0313, 0x0300, 0x0000 },
707 [0x1b] = { 0x0395, 0x0314, 0x0300, 0x0000 },
708 [0x1c] = { 0x0395, 0x0313, 0x0301, 0x0000 },
709 [0x1d] = { 0x0395, 0x0314, 0x0301, 0x0000 },
710 [0x20] = { 0x03B7, 0x0313, 0x0000 },
711 [0x21] = { 0x03B7, 0x0314, 0x0000 },
712 [0x22] = { 0x03B7, 0x0313, 0x0300, 0x0000 },
713 [0x23] = { 0x03B7, 0x0314, 0x0300, 0x0000 },
714 [0x24] = { 0x03B7, 0x0313, 0x0301, 0x0000 },
715 [0x25] = { 0x03B7, 0x0314, 0x0301, 0x0000 },
716 [0x26] = { 0x03B7, 0x0313, 0x0342, 0x0000 },
717 [0x27] = { 0x03B7, 0x0314, 0x0342, 0x0000 },
718 [0x28] = { 0x0397, 0x0313, 0x0000 },
719 [0x29] = { 0x0397, 0x0314, 0x0000 },
720 [0x2a] = { 0x0397, 0x0313, 0x0300, 0x0000 },
721 [0x2b] = { 0x0397, 0x0314, 0x0300, 0x0000 },
722 [0x2c] = { 0x0397, 0x0313, 0x0301, 0x0000 },
723 [0x2d] = { 0x0397, 0x0314, 0x0301, 0x0000 },
724 [0x2e] = { 0x0397, 0x0313, 0x0342, 0x0000 },
725 [0x2f] = { 0x0397, 0x0314, 0x0342, 0x0000 },
726 [0x30] = { 0x03B9, 0x0313, 0x0000 },
727 [0x31] = { 0x03B9, 0x0314, 0x0000 },
728 [0x32] = { 0x03B9, 0x0313, 0x0300, 0x0000 },
729 [0x33] = { 0x03B9, 0x0314, 0x0300, 0x0000 },
730 [0x34] = { 0x03B9, 0x0313, 0x0301, 0x0000 },
731 [0x35] = { 0x03B9, 0x0314, 0x0301, 0x0000 },
732 [0x36] = { 0x03B9, 0x0313, 0x0342, 0x0000 },
733 [0x37] = { 0x03B9, 0x0314, 0x0342, 0x0000 },
734 [0x38] = { 0x0399, 0x0313, 0x0000 },
735 [0x39] = { 0x0399, 0x0314, 0x0000 },
736 [0x3a] = { 0x0399, 0x0313, 0x0300, 0x0000 },
737 [0x3b] = { 0x0399, 0x0314, 0x0300, 0x0000 },
738 [0x3c] = { 0x0399, 0x0313, 0x0301, 0x0000 },
739 [0x3d] = { 0x0399, 0x0314, 0x0301, 0x0000 },
740 [0x3e] = { 0x0399, 0x0313, 0x0342, 0x0000 },
741 [0x3f] = { 0x0399, 0x0314, 0x0342, 0x0000 },
742 [0x40] = { 0x03BF, 0x0313, 0x0000 },
743 [0x41] = { 0x03BF, 0x0314, 0x0000 },
744 [0x42] = { 0x03BF, 0x0313, 0x0300, 0x0000 },
745 [0x43] = { 0x03BF, 0x0314, 0x0300, 0x0000 },
746 [0x44] = { 0x03BF, 0x0313, 0x0301, 0x0000 },
747 [0x45] = { 0x03BF, 0x0314, 0x0301, 0x0000 },
748 [0x48] = { 0x039F, 0x0313, 0x0000 },
749 [0x49] = { 0x039F, 0x0314, 0x0000 },
750 [0x4a] = { 0x039F, 0x0313, 0x0300, 0x0000 },
751 [0x4b] = { 0x039F, 0x0314, 0x0300, 0x0000 },
752 [0x4c] = { 0x039F, 0x0313, 0x0301, 0x0000 },
753 [0x4d] = { 0x039F, 0x0314, 0x0301, 0x0000 },
754 [0x50] = { 0x03C5, 0x0313, 0x0000 },
755 [0x51] = { 0x03C5, 0x0314, 0x0000 },
756 [0x52] = { 0x03C5, 0x0313, 0x0300, 0x0000 },
757 [0x53] = { 0x03C5, 0x0314, 0x0300, 0x0000 },
758 [0x54] = { 0x03C5, 0x0313, 0x0301, 0x0000 },
759 [0x55] = { 0x03C5, 0x0314, 0x0301, 0x0000 },
760 [0x56] = { 0x03C5, 0x0313, 0x0342, 0x0000 },
761 [0x57] = { 0x03C5, 0x0314, 0x0342, 0x0000 },
762 [0x59] = { 0x03A5, 0x0314, 0x0000 },
763 [0x5b] = { 0x03A5, 0x0314, 0x0300, 0x0000 },
764 [0x5d] = { 0x03A5, 0x0314, 0x0301, 0x0000 },
765 [0x5f] = { 0x03A5, 0x0314, 0x0342, 0x0000 },
766 [0x60] = { 0x03C9, 0x0313, 0x0000 },
767 [0x61] = { 0x03C9, 0x0314, 0x0000 },
768 [0x62] = { 0x03C9, 0x0313, 0x0300, 0x0000 },
769 [0x63] = { 0x03C9, 0x0314, 0x0300, 0x0000 },
770 [0x64] = { 0x03C9, 0x0313, 0x0301, 0x0000 },
771 [0x65] = { 0x03C9, 0x0314, 0x0301, 0x0000 },
772 [0x66] = { 0x03C9, 0x0313, 0x0342, 0x0000 },
773 [0x67] = { 0x03C9, 0x0314, 0x0342, 0x0000 },
774 [0x68] = { 0x03A9, 0x0313, 0x0000 },
775 [0x69] = { 0x03A9, 0x0314, 0x0000 },
776 [0x6a] = { 0x03A9, 0x0313, 0x0300, 0x0000 },
777 [0x6b] = { 0x03A9, 0x0314, 0x0300, 0x0000 },
778 [0x6c] = { 0x03A9, 0x0313, 0x0301, 0x0000 },
779 [0x6d] = { 0x03A9, 0x0314, 0x0301, 0x0000 },
780 [0x6e] = { 0x03A9, 0x0313, 0x0342, 0x0000 },
781 [0x6f] = { 0x03A9, 0x0314, 0x0342, 0x0000 },
782 [0x70] = { 0x03B1, 0x0300, 0x0000 },
783 [0x71] = { 0x03B1, 0x0301, 0x0000 },
784 [0x72] = { 0x03B5, 0x0300, 0x0000 },
785 [0x73] = { 0x03B5, 0x0301, 0x0000 },
786 [0x74] = { 0x03B7, 0x0300, 0x0000 },
787 [0x75] = { 0x03B7, 0x0301, 0x0000 },
788 [0x76] = { 0x03B9, 0x0300, 0x0000 },
789 [0x77] = { 0x03B9, 0x0301, 0x0000 },
790 [0x78] = { 0x03BF, 0x0300, 0x0000 },
791 [0x79] = { 0x03BF, 0x0301, 0x0000 },
792 [0x7a] = { 0x03C5, 0x0300, 0x0000 },
793 [0x7b] = { 0x03C5, 0x0301, 0x0000 },
794 [0x7c] = { 0x03C9, 0x0300, 0x0000 },
795 [0x7d] = { 0x03C9, 0x0301, 0x0000 },
796 [0x80] = { 0x03B1, 0x0345, 0x0313, 0x0000 },
797 [0x81] = { 0x03B1, 0x0345, 0x0314, 0x0000 },
798 [0x82] = { 0x03B1, 0x0345, 0x0313, 0x0300, 0x0000 },
799 [0x83] = { 0x03B1, 0x0345, 0x0314, 0x0300, 0x0000 },
800 [0x84] = { 0x03B1, 0x0345, 0x0313, 0x0301, 0x0000 },
801 [0x85] = { 0x03B1, 0x0345, 0x0314, 0x0301, 0x0000 },
802 [0x86] = { 0x03B1, 0x0345, 0x0313, 0x0342, 0x0000 },
803 [0x87] = { 0x03B1, 0x0345, 0x0314, 0x0342, 0x0000 },
804 [0x88] = { 0x0391, 0x0345, 0x0313, 0x0000 },
805 [0x89] = { 0x0391, 0x0345, 0x0314, 0x0000 },
806 [0x8a] = { 0x0391, 0x0345, 0x0313, 0x0300, 0x0000 },
807 [0x8b] = { 0x0391, 0x0345, 0x0314, 0x0300, 0x0000 },
808 [0x8c] = { 0x0391, 0x0345, 0x0313, 0x0301, 0x0000 },
809 [0x8d] = { 0x0391, 0x0345, 0x0314, 0x0301, 0x0000 },
810 [0x8e] = { 0x0391, 0x0345, 0x0313, 0x0342, 0x0000 },
811 [0x8f] = { 0x0391, 0x0345, 0x0314, 0x0342, 0x0000 },
812 [0x90] = { 0x03B7, 0x0345, 0x0313, 0x0000 },
813 [0x91] = { 0x03B7, 0x0345, 0x0314, 0x0000 },
814 [0x92] = { 0x03B7, 0x0345, 0x0313, 0x0300, 0x0000 },
815 [0x93] = { 0x03B7, 0x0345, 0x0314, 0x0300, 0x0000 },
816 [0x94] = { 0x03B7, 0x0345, 0x0313, 0x0301, 0x0000 },
817 [0x95] = { 0x03B7, 0x0345, 0x0314, 0x0301, 0x0000 },
818 [0x96] = { 0x03B7, 0x0345, 0x0313, 0x0342, 0x0000 },
819 [0x97] = { 0x03B7, 0x0345, 0x0314, 0x0342, 0x0000 },
820 [0x98] = { 0x0397, 0x0345, 0x0313, 0x0000 },
821 [0x99] = { 0x0397, 0x0345, 0x0314, 0x0000 },
822 [0x9a] = { 0x0397, 0x0345, 0x0313, 0x0300, 0x0000 },
823 [0x9b] = { 0x0397, 0x0345, 0x0314, 0x0300, 0x0000 },
824 [0x9c] = { 0x0397, 0x0345, 0x0313, 0x0301, 0x0000 },
825 [0x9d] = { 0x0397, 0x0345, 0x0314, 0x0301, 0x0000 },
826 [0x9e] = { 0x0397, 0x0345, 0x0313, 0x0342, 0x0000 },
827 [0x9f] = { 0x0397, 0x0345, 0x0314, 0x0342, 0x0000 },
828 [0xa0] = { 0x03C9, 0x0345, 0x0313, 0x0000 },
829 [0xa1] = { 0x03C9, 0x0345, 0x0314, 0x0000 },
830 [0xa2] = { 0x03C9, 0x0345, 0x0313, 0x0300, 0x0000 },
831 [0xa3] = { 0x03C9, 0x0345, 0x0314, 0x0300, 0x0000 },
832 [0xa4] = { 0x03C9, 0x0345, 0x0313, 0x0301, 0x0000 },
833 [0xa5] = { 0x03C9, 0x0345, 0x0314, 0x0301, 0x0000 },
834 [0xa6] = { 0x03C9, 0x0345, 0x0313, 0x0342, 0x0000 },
835 [0xa7] = { 0x03C9, 0x0345, 0x0314, 0x0342, 0x0000 },
836 [0xa8] = { 0x03A9, 0x0345, 0x0313, 0x0000 },
837 [0xa9] = { 0x03A9, 0x0345, 0x0314, 0x0000 },
838 [0xaa] = { 0x03A9, 0x0345, 0x0313, 0x0300, 0x0000 },
839 [0xab] = { 0x03A9, 0x0345, 0x0314, 0x0300, 0x0000 },
840 [0xac] = { 0x03A9, 0x0345, 0x0313, 0x0301, 0x0000 },
841 [0xad] = { 0x03A9, 0x0345, 0x0314, 0x0301, 0x0000 },
842 [0xae] = { 0x03A9, 0x0345, 0x0313, 0x0342, 0x0000 },
843 [0xaf] = { 0x03A9, 0x0345, 0x0314, 0x0342, 0x0000 },
844 [0xb0] = { 0x03B1, 0x0306, 0x0000 },
845 [0xb1] = { 0x03B1, 0x0304, 0x0000 },
846 [0xb2] = { 0x03B1, 0x0345, 0x0300, 0x0000 },
847 [0xb3] = { 0x03B1, 0x0345, 0x0000 },
848 [0xb4] = { 0x03B1, 0x0345, 0x0301, 0x0000 },
849 [0xb6] = { 0x03B1, 0x0342, 0x0000 },
850 [0xb7] = { 0x03B1, 0x0345, 0x0342, 0x0000 },
851 [0xb8] = { 0x0391, 0x0306, 0x0000 },
852 [0xb9] = { 0x0391, 0x0304, 0x0000 },
853 [0xba] = { 0x0391, 0x0300, 0x0000 },
854 [0xbb] = { 0x0391, 0x0301, 0x0000 },
855 [0xbc] = { 0x0391, 0x0345, 0x0000 },
856 [0xbe] = { 0x03B9, 0x0000 },
857 [0xc1] = { 0x00A8, 0x0342, 0x0000 },
858 [0xc2] = { 0x03B7, 0x0345, 0x0300, 0x0000 },
859 [0xc3] = { 0x03B7, 0x0345, 0x0000 },
860 [0xc4] = { 0x03B7, 0x0345, 0x0301, 0x0000 },
861 [0xc6] = { 0x03B7, 0x0342, 0x0000 },
862 [0xc7] = { 0x03B7, 0x0345, 0x0342, 0x0000 },
863 [0xc8] = { 0x0395, 0x0300, 0x0000 },
864 [0xc9] = { 0x0395, 0x0301, 0x0000 },
865 [0xca] = { 0x0397, 0x0300, 0x0000 },
866 [0xcb] = { 0x0397, 0x0301, 0x0000 },
867 [0xcc] = { 0x0397, 0x0345, 0x0000 },
868 [0xcd] = { 0x1FBF, 0x0300, 0x0000 },
869 [0xce] = { 0x1FBF, 0x0301, 0x0000 },
870 [0xcf] = { 0x1FBF, 0x0342, 0x0000 },
871 [0xd0] = { 0x03B9, 0x0306, 0x0000 },
872 [0xd1] = { 0x03B9, 0x0304, 0x0000 },
873 [0xd2] = { 0x03B9, 0x0308, 0x0300, 0x0000 },
874 [0xd3] = { 0x03B9, 0x0308, 0x0301, 0x0000 },
875 [0xd6] = { 0x03B9, 0x0342, 0x0000 },
876 [0xd7] = { 0x03B9, 0x0308, 0x0342, 0x0000 },
877 [0xd8] = { 0x0399, 0x0306, 0x0000 },
878 [0xd9] = { 0x0399, 0x0304, 0x0000 },
879 [0xda] = { 0x0399, 0x0300, 0x0000 },
880 [0xdb] = { 0x0399, 0x0301, 0x0000 },
881 [0xdd] = { 0x1FFE, 0x0300, 0x0000 },
882 [0xde] = { 0x1FFE, 0x0301, 0x0000 },
883 [0xdf] = { 0x1FFE, 0x0342, 0x0000 },
884 [0xe0] = { 0x03C5, 0x0306, 0x0000 },
885 [0xe1] = { 0x03C5, 0x0304, 0x0000 },
886 [0xe2] = { 0x03C5, 0x0308, 0x0300, 0x0000 },
887 [0xe3] = { 0x03C5, 0x0308, 0x0301, 0x0000 },
888 [0xe4] = { 0x03C1, 0x0313, 0x0000 },
889 [0xe5] = { 0x03C1, 0x0314, 0x0000 },
890 [0xe6] = { 0x03C5, 0x0342, 0x0000 },
891 [0xe7] = { 0x03C5, 0x0308, 0x0342, 0x0000 },
892 [0xe8] = { 0x03A5, 0x0306, 0x0000 },
893 [0xe9] = { 0x03A5, 0x0304, 0x0000 },
894 [0xea] = { 0x03A5, 0x0300, 0x0000 },
895 [0xeb] = { 0x03A5, 0x0301, 0x0000 },
896 [0xec] = { 0x03A1, 0x0314, 0x0000 },
897 [0xed] = { 0x00A8, 0x0300, 0x0000 },
898 [0xee] = { 0x00A8, 0x0301, 0x0000 },
899 [0xef] = { 0x0060, 0x0000 },
900 [0xf2] = { 0x03C9, 0x0345, 0x0300, 0x0000 },
901 [0xf3] = { 0x03C9, 0x0345, 0x0000 },
902 [0xf4] = { 0x03BF, 0x0345, 0x0301, 0x0000 },
903 [0xf6] = { 0x03C9, 0x0342, 0x0000 },
904 [0xf7] = { 0x03C9, 0x0345, 0x0342, 0x0000 },
905 [0xf8] = { 0x039F, 0x0300, 0x0000 },
906 [0xf9] = { 0x039F, 0x0301, 0x0000 },
907 [0xfa] = { 0x03A9, 0x0300, 0x0000 },
908 [0xfb] = { 0x03A9, 0x0301, 0x0000 },
909 [0xfc] = { 0x03A9, 0x0345, 0x0000 },
910 [0xfd] = { 0x00B4, 0x0000 },
911 };
912
913 static const uint16_t page30[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
914 [0x4c] = { 0x304B, 0x3099, 0x0000 },
915 [0x4e] = { 0x304D, 0x3099, 0x0000 },
916 [0x50] = { 0x304F, 0x3099, 0x0000 },
917 [0x52] = { 0x3051, 0x3099, 0x0000 },
918 [0x54] = { 0x3053, 0x3099, 0x0000 },
919 [0x56] = { 0x3055, 0x3099, 0x0000 },
920 [0x58] = { 0x3057, 0x3099, 0x0000 },
921 [0x5a] = { 0x3059, 0x3099, 0x0000 },
922 [0x5c] = { 0x305B, 0x3099, 0x0000 },
923 [0x5e] = { 0x305D, 0x3099, 0x0000 },
924 [0x60] = { 0x305F, 0x3099, 0x0000 },
925 [0x62] = { 0x3061, 0x3099, 0x0000 },
926 [0x65] = { 0x3064, 0x3099, 0x0000 },
927 [0x67] = { 0x3066, 0x3099, 0x0000 },
928 [0x69] = { 0x3068, 0x3099, 0x0000 },
929 [0x70] = { 0x306F, 0x3099, 0x0000 },
930 [0x71] = { 0x306F, 0x309A, 0x0000 },
931 [0x73] = { 0x3072, 0x3099, 0x0000 },
932 [0x74] = { 0x3072, 0x309A, 0x0000 },
933 [0x76] = { 0x3075, 0x3099, 0x0000 },
934 [0x77] = { 0x3075, 0x309A, 0x0000 },
935 [0x79] = { 0x3078, 0x3099, 0x0000 },
936 [0x7a] = { 0x3078, 0x309A, 0x0000 },
937 [0x7c] = { 0x307B, 0x3099, 0x0000 },
938 [0x7d] = { 0x307B, 0x309A, 0x0000 },
939 [0x94] = { 0x3046, 0x3099, 0x0000 },
940 [0x9e] = { 0x309D, 0x3099, 0x0000 },
941 [0xac] = { 0x30AB, 0x3099, 0x0000 },
942 [0xae] = { 0x30AD, 0x3099, 0x0000 },
943 [0xb0] = { 0x30AF, 0x3099, 0x0000 },
944 [0xb2] = { 0x30B1, 0x3099, 0x0000 },
945 [0xb4] = { 0x30B3, 0x3099, 0x0000 },
946 [0xb6] = { 0x30B5, 0x3099, 0x0000 },
947 [0xb8] = { 0x30B7, 0x3099, 0x0000 },
948 [0xba] = { 0x30B9, 0x3099, 0x0000 },
949 [0xbc] = { 0x30BB, 0x3099, 0x0000 },
950 [0xbe] = { 0x30BD, 0x3099, 0x0000 },
951 [0xc0] = { 0x30BF, 0x3099, 0x0000 },
952 [0xc2] = { 0x30C1, 0x3099, 0x0000 },
953 [0xc5] = { 0x30C4, 0x3099, 0x0000 },
954 [0xc7] = { 0x30C6, 0x3099, 0x0000 },
955 [0xc9] = { 0x30C8, 0x3099, 0x0000 },
956 [0xd0] = { 0x30CF, 0x3099, 0x0000 },
957 [0xd1] = { 0x30CF, 0x309A, 0x0000 },
958 [0xd3] = { 0x30D2, 0x3099, 0x0000 },
959 [0xd4] = { 0x30D2, 0x309A, 0x0000 },
960 [0xd6] = { 0x30D5, 0x3099, 0x0000 },
961 [0xd7] = { 0x30D5, 0x309A, 0x0000 },
962 [0xd9] = { 0x30D8, 0x3099, 0x0000 },
963 [0xda] = { 0x30D8, 0x309A, 0x0000 },
964 [0xdc] = { 0x30DB, 0x3099, 0x0000 },
965 [0xdd] = { 0x30DB, 0x309A, 0x0000 },
966 [0xf4] = { 0x30A6, 0x3099, 0x0000 },
967 [0xf7] = { 0x30EF, 0x3099, 0x0000 },
968 [0xf8] = { 0x30F0, 0x3099, 0x0000 },
969 [0xf9] = { 0x30F1, 0x3099, 0x0000 },
970 [0xfa] = { 0x30F2, 0x3099, 0x0000 },
971 [0xfe] = { 0x30FD, 0x3099, 0x0000 },
972 };
973
974 static const uint16_t pagefb[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
975 [0x1f] = { 0x05F2, 0x05B7, 0x0000 },
976 [0x2a] = { 0x05E9, 0x05C1, 0x0000 },
977 [0x2b] = { 0x05E9, 0x05C2, 0x0000 },
978 [0x2c] = { 0x05E9, 0x05BC, 0x05C1, 0x0000 },
979 [0x2d] = { 0x05E9, 0x05BC, 0x05C2, 0x0000 },
980 [0x2e] = { 0x05D0, 0x05B7, 0x0000 },
981 [0x2f] = { 0x05D0, 0x05B8, 0x0000 },
982 [0x30] = { 0x05D0, 0x05BC, 0x0000 },
983 [0x31] = { 0x05D1, 0x05BC, 0x0000 },
984 [0x32] = { 0x05D2, 0x05BC, 0x0000 },
985 [0x33] = { 0x05D3, 0x05BC, 0x0000 },
986 [0x34] = { 0x05D4, 0x05BC, 0x0000 },
987 [0x35] = { 0x05D5, 0x05BC, 0x0000 },
988 [0x36] = { 0x05D6, 0x05BC, 0x0000 },
989 [0x38] = { 0x05D8, 0x05BC, 0x0000 },
990 [0x39] = { 0x05D9, 0x05BC, 0x0000 },
991 [0x3a] = { 0x05DA, 0x05BC, 0x0000 },
992 [0x3b] = { 0x05DB, 0x05BC, 0x0000 },
993 [0x3c] = { 0x05DC, 0x05BC, 0x0000 },
994 [0x3e] = { 0x05DE, 0x05BC, 0x0000 },
995 [0x40] = { 0x05E0, 0x05BC, 0x0000 },
996 [0x41] = { 0x05E1, 0x05BC, 0x0000 },
997 [0x43] = { 0x05E3, 0x05BC, 0x0000 },
998 [0x44] = { 0x05E4, 0x05BC, 0x0000 },
999 [0x46] = { 0x05E6, 0x05BC, 0x0000 },
1000 [0x47] = { 0x05E7, 0x05BC, 0x0000 },
1001 [0x48] = { 0x05E8, 0x05BC, 0x0000 },
1002 [0x49] = { 0x05E9, 0x05BC, 0x0000 },
1003 [0x4a] = { 0x05EA, 0x05BC, 0x0000 },
1004 [0x4b] = { 0x05D5, 0x05B9, 0x0000 },
1005 [0x4c] = { 0x05D1, 0x05BF, 0x0000 },
1006 [0x4d] = { 0x05DB, 0x05BF, 0x0000 },
1007 [0x4e] = { 0x05E4, 0x05BF, 0x0000 },
1008 };
1009
1010 const uint16_t (*hfsplus_decompose_pages_old[256])[HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
1011 [0x00] = page00,
1012 [0x01] = page01,
1013 [0x02] = page02,
1014 [0x03] = page03,
1015 [0x04] = page04,
1016 [0x09] = page09,
1017 [0x0a] = page0a,
1018 [0x0b] = page0b,
1019 [0x0c] = page0c,
1020 [0x0d] = page0d,
1021 [0x0e] = page0e,
1022 [0x0f] = page0f,
1023 [0x1e] = page1e,
1024 [0x1f] = page1f,
1025 [0x30] = page30,
1026 [0xfb] = pagefb,
1027 };
1028
1029 /* ====================================== ts ============================= */
1030
1031 /* This encodes a matrix of page and character, with a number of
1032 HFSPLUS_MAX_DECOMPOSE_LEN + 1 elements of 16 bit each.
1033 Initially the matrix ist filled with zeros.
1034 1: The first element is the page number.
1035 If it is equal or lower than the previous one, then the matrix is done.
1036 2: The next element is the character number
1037 If it is equal or lower than the previous one, the page is done. Goto 1.
1038 3: The next elements are matrix elements.
1039 If element 0 is encountered, then the character is done. Goto 2.
1040 */
1041
1042 static const uint16_t decompose_page_data[] = {
1043
1044 /* page00 */
1045 0x00,
1046 0xc0, 0x0041, 0x0300, 0,
1047 0xc1, 0x0041, 0x0301, 0,
1048 0xc2, 0x0041, 0x0302, 0,
1049 0xc3, 0x0041, 0x0303, 0,
1050 0xc4, 0x0041, 0x0308, 0,
1051 0xc5, 0x0041, 0x030A, 0,
1052 0xc7, 0x0043, 0x0327, 0,
1053 0xc8, 0x0045, 0x0300, 0,
1054 0xc9, 0x0045, 0x0301, 0,
1055 0xca, 0x0045, 0x0302, 0,
1056 0xcb, 0x0045, 0x0308, 0,
1057 0xcc, 0x0049, 0x0300, 0,
1058 0xcd, 0x0049, 0x0301, 0,
1059 0xce, 0x0049, 0x0302, 0,
1060 0xcf, 0x0049, 0x0308, 0,
1061 0xd1, 0x004E, 0x0303, 0,
1062 0xd2, 0x004F, 0x0300, 0,
1063 0xd3, 0x004F, 0x0301, 0,
1064 0xd4, 0x004F, 0x0302, 0,
1065 0xd5, 0x004F, 0x0303, 0,
1066 0xd6, 0x004F, 0x0308, 0,
1067 0xd9, 0x0055, 0x0300, 0,
1068 0xda, 0x0055, 0x0301, 0,
1069 0xdb, 0x0055, 0x0302, 0,
1070 0xdc, 0x0055, 0x0308, 0,
1071 0xdd, 0x0059, 0x0301, 0,
1072 0xe0, 0x0061, 0x0300, 0,
1073 0xe1, 0x0061, 0x0301, 0,
1074 0xe2, 0x0061, 0x0302, 0,
1075 0xe3, 0x0061, 0x0303, 0,
1076 0xe4, 0x0061, 0x0308, 0,
1077 0xe5, 0x0061, 0x030A, 0,
1078 0xe7, 0x0063, 0x0327, 0,
1079 0xe8, 0x0065, 0x0300, 0,
1080 0xe9, 0x0065, 0x0301, 0,
1081 0xea, 0x0065, 0x0302, 0,
1082 0xeb, 0x0065, 0x0308, 0,
1083 0xec, 0x0069, 0x0300, 0,
1084 0xed, 0x0069, 0x0301, 0,
1085 0xee, 0x0069, 0x0302, 0,
1086 0xef, 0x0069, 0x0308, 0,
1087 0xf1, 0x006E, 0x0303, 0,
1088 0xf2, 0x006F, 0x0300, 0,
1089 0xf3, 0x006F, 0x0301, 0,
1090 0xf4, 0x006F, 0x0302, 0,
1091 0xf5, 0x006F, 0x0303, 0,
1092 0xf6, 0x006F, 0x0308, 0,
1093 0xf9, 0x0075, 0x0300, 0,
1094 0xfa, 0x0075, 0x0301, 0,
1095 0xfb, 0x0075, 0x0302, 0,
1096 0xfc, 0x0075, 0x0308, 0,
1097 0xfd, 0x0079, 0x0301, 0,
1098 0xff, 0x0079, 0x0308, 0,
1099 0x00,
1100
1101 /* page01 */
1102 0x01,
1103 0x00, 0x0041, 0x0304, 0,
1104 0x01, 0x0061, 0x0304, 0,
1105 0x02, 0x0041, 0x0306, 0,
1106 0x03, 0x0061, 0x0306, 0,
1107 0x04, 0x0041, 0x0328, 0,
1108 0x05, 0x0061, 0x0328, 0,
1109 0x06, 0x0043, 0x0301, 0,
1110 0x07, 0x0063, 0x0301, 0,
1111 0x08, 0x0043, 0x0302, 0,
1112 0x09, 0x0063, 0x0302, 0,
1113 0x0a, 0x0043, 0x0307, 0,
1114 0x0b, 0x0063, 0x0307, 0,
1115 0x0c, 0x0043, 0x030C, 0,
1116 0x0d, 0x0063, 0x030C, 0,
1117 0x0e, 0x0044, 0x030C, 0,
1118 0x0f, 0x0064, 0x030C, 0,
1119 0x12, 0x0045, 0x0304, 0,
1120 0x13, 0x0065, 0x0304, 0,
1121 0x14, 0x0045, 0x0306, 0,
1122 0x15, 0x0065, 0x0306, 0,
1123 0x16, 0x0045, 0x0307, 0,
1124 0x17, 0x0065, 0x0307, 0,
1125 0x18, 0x0045, 0x0328, 0,
1126 0x19, 0x0065, 0x0328, 0,
1127 0x1a, 0x0045, 0x030C, 0,
1128 0x1b, 0x0065, 0x030C, 0,
1129 0x1c, 0x0047, 0x0302, 0,
1130 0x1d, 0x0067, 0x0302, 0,
1131 0x1e, 0x0047, 0x0306, 0,
1132 0x1f, 0x0067, 0x0306, 0,
1133 0x20, 0x0047, 0x0307, 0,
1134 0x21, 0x0067, 0x0307, 0,
1135 0x22, 0x0047, 0x0327, 0,
1136 0x23, 0x0067, 0x0327, 0,
1137 0x24, 0x0048, 0x0302, 0,
1138 0x25, 0x0068, 0x0302, 0,
1139 0x28, 0x0049, 0x0303, 0,
1140 0x29, 0x0069, 0x0303, 0,
1141 0x2a, 0x0049, 0x0304, 0,
1142 0x2b, 0x0069, 0x0304, 0,
1143 0x2c, 0x0049, 0x0306, 0,
1144 0x2d, 0x0069, 0x0306, 0,
1145 0x2e, 0x0049, 0x0328, 0,
1146 0x2f, 0x0069, 0x0328, 0,
1147 0x30, 0x0049, 0x0307, 0,
1148 0x34, 0x004A, 0x0302, 0,
1149 0x35, 0x006A, 0x0302, 0,
1150 0x36, 0x004B, 0x0327, 0,
1151 0x37, 0x006B, 0x0327, 0,
1152 0x39, 0x004C, 0x0301, 0,
1153 0x3a, 0x006C, 0x0301, 0,
1154 0x3b, 0x004C, 0x0327, 0,
1155 0x3c, 0x006C, 0x0327, 0,
1156 0x3d, 0x004C, 0x030C, 0,
1157 0x3e, 0x006C, 0x030C, 0,
1158 0x43, 0x004E, 0x0301, 0,
1159 0x44, 0x006E, 0x0301, 0,
1160 0x45, 0x004E, 0x0327, 0,
1161 0x46, 0x006E, 0x0327, 0,
1162 0x47, 0x004E, 0x030C, 0,
1163 0x48, 0x006E, 0x030C, 0,
1164 0x4c, 0x004F, 0x0304, 0,
1165 0x4d, 0x006F, 0x0304, 0,
1166 0x4e, 0x004F, 0x0306, 0,
1167 0x4f, 0x006F, 0x0306, 0,
1168 0x50, 0x004F, 0x030B, 0,
1169 0x51, 0x006F, 0x030B, 0,
1170 0x54, 0x0052, 0x0301, 0,
1171 0x55, 0x0072, 0x0301, 0,
1172 0x56, 0x0052, 0x0327, 0,
1173 0x57, 0x0072, 0x0327, 0,
1174 0x58, 0x0052, 0x030C, 0,
1175 0x59, 0x0072, 0x030C, 0,
1176 0x5a, 0x0053, 0x0301, 0,
1177 0x5b, 0x0073, 0x0301, 0,
1178 0x5c, 0x0053, 0x0302, 0,
1179 0x5d, 0x0073, 0x0302, 0,
1180 0x5e, 0x0053, 0x0327, 0,
1181 0x5f, 0x0073, 0x0327, 0,
1182 0x60, 0x0053, 0x030C, 0,
1183 0x61, 0x0073, 0x030C, 0,
1184 0x62, 0x0054, 0x0327, 0,
1185 0x63, 0x0074, 0x0327, 0,
1186 0x64, 0x0054, 0x030C, 0,
1187 0x65, 0x0074, 0x030C, 0,
1188 0x68, 0x0055, 0x0303, 0,
1189 0x69, 0x0075, 0x0303, 0,
1190 0x6a, 0x0055, 0x0304, 0,
1191 0x6b, 0x0075, 0x0304, 0,
1192 0x6c, 0x0055, 0x0306, 0,
1193 0x6d, 0x0075, 0x0306, 0,
1194 0x6e, 0x0055, 0x030A, 0,
1195 0x6f, 0x0075, 0x030A, 0,
1196 0x70, 0x0055, 0x030B, 0,
1197 0x71, 0x0075, 0x030B, 0,
1198 0x72, 0x0055, 0x0328, 0,
1199 0x73, 0x0075, 0x0328, 0,
1200 0x74, 0x0057, 0x0302, 0,
1201 0x75, 0x0077, 0x0302, 0,
1202 0x76, 0x0059, 0x0302, 0,
1203 0x77, 0x0079, 0x0302, 0,
1204 0x78, 0x0059, 0x0308, 0,
1205 0x79, 0x005A, 0x0301, 0,
1206 0x7a, 0x007A, 0x0301, 0,
1207 0x7b, 0x005A, 0x0307, 0,
1208 0x7c, 0x007A, 0x0307, 0,
1209 0x7d, 0x005A, 0x030C, 0,
1210 0x7e, 0x007A, 0x030C, 0,
1211 0xa0, 0x004F, 0x031B, 0,
1212 0xa1, 0x006F, 0x031B, 0,
1213 0xaf, 0x0055, 0x031B, 0,
1214 0xb0, 0x0075, 0x031B, 0,
1215 0xcd, 0x0041, 0x030C, 0,
1216 0xce, 0x0061, 0x030C, 0,
1217 0xcf, 0x0049, 0x030C, 0,
1218 0xd0, 0x0069, 0x030C, 0,
1219 0xd1, 0x004F, 0x030C, 0,
1220 0xd2, 0x006F, 0x030C, 0,
1221 0xd3, 0x0055, 0x030C, 0,
1222 0xd4, 0x0075, 0x030C, 0,
1223 0xd5, 0x0055, 0x0308, 0x0304, 0,
1224 0xd6, 0x0075, 0x0308, 0x0304, 0,
1225 0xd7, 0x0055, 0x0308, 0x0301, 0,
1226 0xd8, 0x0075, 0x0308, 0x0301, 0,
1227 0xd9, 0x0055, 0x0308, 0x030C, 0,
1228 0xda, 0x0075, 0x0308, 0x030C, 0,
1229 0xdb, 0x0055, 0x0308, 0x0300, 0,
1230 0xdc, 0x0075, 0x0308, 0x0300, 0,
1231 0xde, 0x0041, 0x0308, 0x0304, 0,
1232 0xdf, 0x0061, 0x0308, 0x0304, 0,
1233 0xe0, 0x0041, 0x0307, 0x0304, 0,
1234 0xe1, 0x0061, 0x0307, 0x0304, 0,
1235 0xe2, 0x00C6, 0x0304, 0,
1236 0xe3, 0x00E6, 0x0304, 0,
1237 0xe6, 0x0047, 0x030C, 0,
1238 0xe7, 0x0067, 0x030C, 0,
1239 0xe8, 0x004B, 0x030C, 0,
1240 0xe9, 0x006B, 0x030C, 0,
1241 0xea, 0x004F, 0x0328, 0,
1242 0xeb, 0x006F, 0x0328, 0,
1243 0xec, 0x004F, 0x0328, 0x0304, 0,
1244 0xed, 0x006F, 0x0328, 0x0304, 0,
1245 0xee, 0x01B7, 0x030C, 0,
1246 0xef, 0x0292, 0x030C, 0,
1247 0xf0, 0x006A, 0x030C, 0,
1248 0xf4, 0x0047, 0x0301, 0,
1249 0xf5, 0x0067, 0x0301, 0,
1250 0xfa, 0x0041, 0x030A, 0x0301, 0,
1251 0xfb, 0x0061, 0x030A, 0x0301, 0,
1252 0xfc, 0x00C6, 0x0301, 0,
1253 0xfd, 0x00E6, 0x0301, 0,
1254 0xfe, 0x00D8, 0x0301, 0,
1255 0xff, 0x00F8, 0x0301, 0,
1256 0x00,
1257
1258 /* page02 */
1259 0x02,
1260 0x00, 0x0041, 0x030F, 0,
1261 0x01, 0x0061, 0x030F, 0,
1262 0x02, 0x0041, 0x0311, 0,
1263 0x03, 0x0061, 0x0311, 0,
1264 0x04, 0x0045, 0x030F, 0,
1265 0x05, 0x0065, 0x030F, 0,
1266 0x06, 0x0045, 0x0311, 0,
1267 0x07, 0x0065, 0x0311, 0,
1268 0x08, 0x0049, 0x030F, 0,
1269 0x09, 0x0069, 0x030F, 0,
1270 0x0a, 0x0049, 0x0311, 0,
1271 0x0b, 0x0069, 0x0311, 0,
1272 0x0c, 0x004F, 0x030F, 0,
1273 0x0d, 0x006F, 0x030F, 0,
1274 0x0e, 0x004F, 0x0311, 0,
1275 0x0f, 0x006F, 0x0311, 0,
1276 0x10, 0x0052, 0x030F, 0,
1277 0x11, 0x0072, 0x030F, 0,
1278 0x12, 0x0052, 0x0311, 0,
1279 0x13, 0x0072, 0x0311, 0,
1280 0x14, 0x0055, 0x030F, 0,
1281 0x15, 0x0075, 0x030F, 0,
1282 0x16, 0x0055, 0x0311, 0,
1283 0x17, 0x0075, 0x0311, 0,
1284 0x00,
1285
1286 /* page03 */
1287 0x03,
1288 0x10, 0x0306, 0x0307, 0,
1289 0x40, 0x0300, 0,
1290 0x41, 0x0301, 0,
1291 0x43, 0x0313, 0,
1292 0x44, 0x0308, 0x030D, 0,
1293 0x74, 0x02B9, 0,
1294 0x7e, 0x003B, 0,
1295 0x85, 0x00A8, 0x030D, 0,
1296 0x86, 0x0391, 0x030D, 0,
1297 0x87, 0x00B7, 0,
1298 0x88, 0x0395, 0x030D, 0,
1299 0x89, 0x0397, 0x030D, 0,
1300 0x8a, 0x0399, 0x030D, 0,
1301 0x8c, 0x039F, 0x030D, 0,
1302 0x8e, 0x03A5, 0x030D, 0,
1303 0x8f, 0x03A9, 0x030D, 0,
1304 0x90, 0x03B9, 0x0308, 0x030D, 0,
1305 0xaa, 0x0399, 0x0308, 0,
1306 0xab, 0x03A5, 0x0308, 0,
1307 0xac, 0x03B1, 0x030D, 0,
1308 0xad, 0x03B5, 0x030D, 0,
1309 0xae, 0x03B7, 0x030D, 0,
1310 0xaf, 0x03B9, 0x030D, 0,
1311 0xb0, 0x03C5, 0x0308, 0x030D, 0,
1312 0xca, 0x03B9, 0x0308, 0,
1313 0xcb, 0x03C5, 0x0308, 0,
1314 0xcc, 0x03BF, 0x030D, 0,
1315 0xcd, 0x03C5, 0x030D, 0,
1316 0xce, 0x03C9, 0x030D, 0,
1317 0xd3, 0x03D2, 0x030D, 0,
1318 0xd4, 0x03D2, 0x0308, 0,
1319 0x00,
1320
1321 /* page04 */
1322 0x04,
1323 0x01, 0x0415, 0x0308, 0,
1324 0x03, 0x0413, 0x0301, 0,
1325 0x07, 0x0406, 0x0308, 0,
1326 0x0c, 0x041A, 0x0301, 0,
1327 0x0e, 0x0423, 0x0306, 0,
1328 0x19, 0x0418, 0x0306, 0,
1329 0x39, 0x0438, 0x0306, 0,
1330 0x51, 0x0435, 0x0308, 0,
1331 0x53, 0x0433, 0x0301, 0,
1332 0x57, 0x0456, 0x0308, 0,
1333 0x5c, 0x043A, 0x0301, 0,
1334 0x5e, 0x0443, 0x0306, 0,
1335 0x76, 0x0474, 0x030F, 0,
1336 0x77, 0x0475, 0x030F, 0,
1337 0xc1, 0x0416, 0x0306, 0,
1338 0xc2, 0x0436, 0x0306, 0,
1339 0xd0, 0x0410, 0x0306, 0,
1340 0xd1, 0x0430, 0x0306, 0,
1341 0xd2, 0x0410, 0x0308, 0,
1342 0xd3, 0x0430, 0x0308, 0,
1343 0xd4, 0x00C6, 0,
1344 0xd5, 0x00E6, 0,
1345 0xd6, 0x0415, 0x0306, 0,
1346 0xd7, 0x0435, 0x0306, 0,
1347 0xd8, 0x018F, 0,
1348 0xd9, 0x0259, 0,
1349 0xda, 0x018F, 0x0308, 0,
1350 0xdb, 0x0259, 0x0308, 0,
1351 0xdc, 0x0416, 0x0308, 0,
1352 0xdd, 0x0436, 0x0308, 0,
1353 0xde, 0x0417, 0x0308, 0,
1354 0xdf, 0x0437, 0x0308, 0,
1355 0xe0, 0x01B7, 0,
1356 0xe1, 0x0292, 0,
1357 0xe2, 0x0418, 0x0304, 0,
1358 0xe3, 0x0438, 0x0304, 0,
1359 0xe4, 0x0418, 0x0308, 0,
1360 0xe5, 0x0438, 0x0308, 0,
1361 0xe6, 0x041E, 0x0308, 0,
1362 0xe7, 0x043E, 0x0308, 0,
1363 0xe8, 0x019F, 0,
1364 0xe9, 0x0275, 0,
1365 0xea, 0x019F, 0x0308, 0,
1366 0xeb, 0x0275, 0x0308, 0,
1367 0xee, 0x0423, 0x0304, 0,
1368 0xef, 0x0443, 0x0304, 0,
1369 0xf0, 0x0423, 0x0308, 0,
1370 0xf1, 0x0443, 0x0308, 0,
1371 0xf2, 0x0423, 0x030B, 0,
1372 0xf3, 0x0443, 0x030B, 0,
1373 0xf4, 0x0427, 0x0308, 0,
1374 0xf5, 0x0447, 0x0308, 0,
1375 0xf8, 0x042B, 0x0308, 0,
1376 0xf9, 0x044B, 0x0308, 0,
1377 0x00,
1378
1379 /* page09 */
1380 0x09,
1381 0x29, 0x0928, 0x093C, 0,
1382 0x31, 0x0930, 0x093C, 0,
1383 0x34, 0x0933, 0x093C, 0,
1384 0x58, 0x0915, 0x093C, 0,
1385 0x59, 0x0916, 0x093C, 0,
1386 0x5a, 0x0917, 0x093C, 0,
1387 0x5b, 0x091C, 0x093C, 0,
1388 0x5c, 0x0921, 0x093C, 0,
1389 0x5d, 0x0922, 0x093C, 0,
1390 0x5e, 0x092B, 0x093C, 0,
1391 0x5f, 0x092F, 0x093C, 0,
1392 0xb0, 0x09AC, 0x09BC, 0,
1393 0xcb, 0x09C7, 0x09BE, 0,
1394 0xcc, 0x09C7, 0x09D7, 0,
1395 0xdc, 0x09A1, 0x09BC, 0,
1396 0xdd, 0x09A2, 0x09BC, 0,
1397 0xdf, 0x09AF, 0x09BC, 0,
1398 0x00,
1399
1400 /* page0a */
1401 0x0a,
1402 0x59, 0x0A16, 0x0A3C, 0,
1403 0x5a, 0x0A17, 0x0A3C, 0,
1404 0x5b, 0x0A1C, 0x0A3C, 0,
1405 0x5c, 0x0A21, 0x0A3C, 0,
1406 0x5e, 0x0A2B, 0x0A3C, 0,
1407 0x00,
1408
1409 /* page0b */
1410 0x0b,
1411 0x48, 0x0B47, 0x0B56, 0,
1412 0x4b, 0x0B47, 0x0B3E, 0,
1413 0x4c, 0x0B47, 0x0B57, 0,
1414 0x5c, 0x0B21, 0x0B3C, 0,
1415 0x5d, 0x0B22, 0x0B3C, 0,
1416 0x5f, 0x0B2F, 0x0B3C, 0,
1417 0x94, 0x0B92, 0x0BD7, 0,
1418 0xca, 0x0BC6, 0x0BBE, 0,
1419 0xcb, 0x0BC7, 0x0BBE, 0,
1420 0xcc, 0x0BC6, 0x0BD7, 0,
1421 0x00,
1422
1423 /* page0c */
1424 0x0c,
1425 0x48, 0x0C46, 0x0C56, 0,
1426 0xc0, 0x0CBF, 0x0CD5, 0,
1427 0xc7, 0x0CC6, 0x0CD5, 0,
1428 0xc8, 0x0CC6, 0x0CD6, 0,
1429 0xca, 0x0CC6, 0x0CC2, 0,
1430 0xcb, 0x0CC6, 0x0CC2, 0x0CD5, 0,
1431 0x00,
1432
1433 /* page0d */
1434 0x0d,
1435 0x4a, 0x0D46, 0x0D3E, 0,
1436 0x4b, 0x0D47, 0x0D3E, 0,
1437 0x4c, 0x0D46, 0x0D57, 0,
1438 0x00,
1439
1440 /* page0e */
1441 0x0e,
1442 0x33, 0x0E4D, 0x0E32, 0,
1443 0xb3, 0x0ECD, 0x0EB2, 0,
1444 0x00,
1445
1446 /* page0f */
1447 0x0f,
1448 0x43, 0x0F42, 0x0FB7, 0,
1449 0x4d, 0x0F4C, 0x0FB7, 0,
1450 0x52, 0x0F51, 0x0FB7, 0,
1451 0x57, 0x0F56, 0x0FB7, 0,
1452 0x5c, 0x0F5B, 0x0FB7, 0,
1453 0x69, 0x0F40, 0x0FB5, 0,
1454 0x73, 0x0F72, 0x0F71, 0,
1455 0x75, 0x0F74, 0x0F71, 0,
1456 0x76, 0x0FB2, 0x0F80, 0,
1457 0x77, 0x0FB2, 0x0F80, 0x0F71, 0,
1458 0x78, 0x0FB3, 0x0F80, 0,
1459 0x79, 0x0FB3, 0x0F80, 0x0F71, 0,
1460 0x81, 0x0F80, 0x0F71, 0,
1461 0x93, 0x0F92, 0x0FB7, 0,
1462 0x9d, 0x0F9C, 0x0FB7, 0,
1463 0xa2, 0x0FA1, 0x0FB7, 0,
1464 0xa7, 0x0FA6, 0x0FB7, 0,
1465 0xac, 0x0FAB, 0x0FB7, 0,
1466 0xb9, 0x0F90, 0x0FB5, 0,
1467 0x00,
1468
1469 /* page1e */
1470 0x1e,
1471 0x00, 0x0041, 0x0325, 0,
1472 0x01, 0x0061, 0x0325, 0,
1473 0x02, 0x0042, 0x0307, 0,
1474 0x03, 0x0062, 0x0307, 0,
1475 0x04, 0x0042, 0x0323, 0,
1476 0x05, 0x0062, 0x0323, 0,
1477 0x06, 0x0042, 0x0331, 0,
1478 0x07, 0x0062, 0x0331, 0,
1479 0x08, 0x0043, 0x0327, 0x0301, 0,
1480 0x09, 0x0063, 0x0327, 0x0301, 0,
1481 0x0a, 0x0044, 0x0307, 0,
1482 0x0b, 0x0064, 0x0307, 0,
1483 0x0c, 0x0044, 0x0323, 0,
1484 0x0d, 0x0064, 0x0323, 0,
1485 0x0e, 0x0044, 0x0331, 0,
1486 0x0f, 0x0064, 0x0331, 0,
1487 0x10, 0x0044, 0x0327, 0,
1488 0x11, 0x0064, 0x0327, 0,
1489 0x12, 0x0044, 0x032D, 0,
1490 0x13, 0x0064, 0x032D, 0,
1491 0x14, 0x0045, 0x0304, 0x0300, 0,
1492 0x15, 0x0065, 0x0304, 0x0300, 0,
1493 0x16, 0x0045, 0x0304, 0x0301, 0,
1494 0x17, 0x0065, 0x0304, 0x0301, 0,
1495 0x18, 0x0045, 0x032D, 0,
1496 0x19, 0x0065, 0x032D, 0,
1497 0x1a, 0x0045, 0x0330, 0,
1498 0x1b, 0x0065, 0x0330, 0,
1499 0x1c, 0x0045, 0x0327, 0x0306, 0,
1500 0x1d, 0x0065, 0x0327, 0x0306, 0,
1501 0x1e, 0x0046, 0x0307, 0,
1502 0x1f, 0x0066, 0x0307, 0,
1503 0x20, 0x0047, 0x0304, 0,
1504 0x21, 0x0067, 0x0304, 0,
1505 0x22, 0x0048, 0x0307, 0,
1506 0x23, 0x0068, 0x0307, 0,
1507 0x24, 0x0048, 0x0323, 0,
1508 0x25, 0x0068, 0x0323, 0,
1509 0x26, 0x0048, 0x0308, 0,
1510 0x27, 0x0068, 0x0308, 0,
1511 0x28, 0x0048, 0x0327, 0,
1512 0x29, 0x0068, 0x0327, 0,
1513 0x2a, 0x0048, 0x032E, 0,
1514 0x2b, 0x0068, 0x032E, 0,
1515 0x2c, 0x0049, 0x0330, 0,
1516 0x2d, 0x0069, 0x0330, 0,
1517 0x2e, 0x0049, 0x0308, 0x0301, 0,
1518 0x2f, 0x0069, 0x0308, 0x0301, 0,
1519 0x30, 0x004B, 0x0301, 0,
1520 0x31, 0x006B, 0x0301, 0,
1521 0x32, 0x004B, 0x0323, 0,
1522 0x33, 0x006B, 0x0323, 0,
1523 0x34, 0x004B, 0x0331, 0,
1524 0x35, 0x006B, 0x0331, 0,
1525 0x36, 0x004C, 0x0323, 0,
1526 0x37, 0x006C, 0x0323, 0,
1527 0x38, 0x004C, 0x0323, 0x0304, 0,
1528 0x39, 0x006C, 0x0323, 0x0304, 0,
1529 0x3a, 0x004C, 0x0331, 0,
1530 0x3b, 0x006C, 0x0331, 0,
1531 0x3c, 0x004C, 0x032D, 0,
1532 0x3d, 0x006C, 0x032D, 0,
1533 0x3e, 0x004D, 0x0301, 0,
1534 0x3f, 0x006D, 0x0301, 0,
1535 0x40, 0x004D, 0x0307, 0,
1536 0x41, 0x006D, 0x0307, 0,
1537 0x42, 0x004D, 0x0323, 0,
1538 0x43, 0x006D, 0x0323, 0,
1539 0x44, 0x004E, 0x0307, 0,
1540 0x45, 0x006E, 0x0307, 0,
1541 0x46, 0x004E, 0x0323, 0,
1542 0x47, 0x006E, 0x0323, 0,
1543 0x48, 0x004E, 0x0331, 0,
1544 0x49, 0x006E, 0x0331, 0,
1545 0x4a, 0x004E, 0x032D, 0,
1546 0x4b, 0x006E, 0x032D, 0,
1547 0x4c, 0x004F, 0x0303, 0x0301, 0,
1548 0x4d, 0x006F, 0x0303, 0x0301, 0,
1549 0x4e, 0x004F, 0x0303, 0x0308, 0,
1550 0x4f, 0x006F, 0x0303, 0x0308, 0,
1551 0x50, 0x004F, 0x0304, 0x0300, 0,
1552 0x51, 0x006F, 0x0304, 0x0300, 0,
1553 0x52, 0x004F, 0x0304, 0x0301, 0,
1554 0x53, 0x006F, 0x0304, 0x0301, 0,
1555 0x54, 0x0050, 0x0301, 0,
1556 0x55, 0x0070, 0x0301, 0,
1557 0x56, 0x0050, 0x0307, 0,
1558 0x57, 0x0070, 0x0307, 0,
1559 0x58, 0x0052, 0x0307, 0,
1560 0x59, 0x0072, 0x0307, 0,
1561 0x5a, 0x0052, 0x0323, 0,
1562 0x5b, 0x0072, 0x0323, 0,
1563 0x5c, 0x0052, 0x0323, 0x0304, 0,
1564 0x5d, 0x0072, 0x0323, 0x0304, 0,
1565 0x5e, 0x0052, 0x0331, 0,
1566 0x5f, 0x0072, 0x0331, 0,
1567 0x60, 0x0053, 0x0307, 0,
1568 0x61, 0x0073, 0x0307, 0,
1569 0x62, 0x0053, 0x0323, 0,
1570 0x63, 0x0073, 0x0323, 0,
1571 0x64, 0x0053, 0x0301, 0x0307, 0,
1572 0x65, 0x0073, 0x0301, 0x0307, 0,
1573 0x66, 0x0053, 0x030C, 0x0307, 0,
1574 0x67, 0x0073, 0x030C, 0x0307, 0,
1575 0x68, 0x0053, 0x0323, 0x0307, 0,
1576 0x69, 0x0073, 0x0323, 0x0307, 0,
1577 0x6a, 0x0054, 0x0307, 0,
1578 0x6b, 0x0074, 0x0307, 0,
1579 0x6c, 0x0054, 0x0323, 0,
1580 0x6d, 0x0074, 0x0323, 0,
1581 0x6e, 0x0054, 0x0331, 0,
1582 0x6f, 0x0074, 0x0331, 0,
1583 0x70, 0x0054, 0x032D, 0,
1584 0x71, 0x0074, 0x032D, 0,
1585 0x72, 0x0055, 0x0324, 0,
1586 0x73, 0x0075, 0x0324, 0,
1587 0x74, 0x0055, 0x0330, 0,
1588 0x75, 0x0075, 0x0330, 0,
1589 0x76, 0x0055, 0x032D, 0,
1590 0x77, 0x0075, 0x032D, 0,
1591 0x78, 0x0055, 0x0303, 0x0301, 0,
1592 0x79, 0x0075, 0x0303, 0x0301, 0,
1593 0x7a, 0x0055, 0x0304, 0x0308, 0,
1594 0x7b, 0x0075, 0x0304, 0x0308, 0,
1595 0x7c, 0x0056, 0x0303, 0,
1596 0x7d, 0x0076, 0x0303, 0,
1597 0x7e, 0x0056, 0x0323, 0,
1598 0x7f, 0x0076, 0x0323, 0,
1599 0x80, 0x0057, 0x0300, 0,
1600 0x81, 0x0077, 0x0300, 0,
1601 0x82, 0x0057, 0x0301, 0,
1602 0x83, 0x0077, 0x0301, 0,
1603 0x84, 0x0057, 0x0308, 0,
1604 0x85, 0x0077, 0x0308, 0,
1605 0x86, 0x0057, 0x0307, 0,
1606 0x87, 0x0077, 0x0307, 0,
1607 0x88, 0x0057, 0x0323, 0,
1608 0x89, 0x0077, 0x0323, 0,
1609 0x8a, 0x0058, 0x0307, 0,
1610 0x8b, 0x0078, 0x0307, 0,
1611 0x8c, 0x0058, 0x0308, 0,
1612 0x8d, 0x0078, 0x0308, 0,
1613 0x8e, 0x0059, 0x0307, 0,
1614 0x8f, 0x0079, 0x0307, 0,
1615 0x90, 0x005A, 0x0302, 0,
1616 0x91, 0x007A, 0x0302, 0,
1617 0x92, 0x005A, 0x0323, 0,
1618 0x93, 0x007A, 0x0323, 0,
1619 0x94, 0x005A, 0x0331, 0,
1620 0x95, 0x007A, 0x0331, 0,
1621 0x96, 0x0068, 0x0331, 0,
1622 0x97, 0x0074, 0x0308, 0,
1623 0x98, 0x0077, 0x030A, 0,
1624 0x99, 0x0079, 0x030A, 0,
1625 0x9b, 0x017F, 0x0307, 0,
1626 0xa0, 0x0041, 0x0323, 0,
1627 0xa1, 0x0061, 0x0323, 0,
1628 0xa2, 0x0041, 0x0309, 0,
1629 0xa3, 0x0061, 0x0309, 0,
1630 0xa4, 0x0041, 0x0302, 0x0301, 0,
1631 0xa5, 0x0061, 0x0302, 0x0301, 0,
1632 0xa6, 0x0041, 0x0302, 0x0300, 0,
1633 0xa7, 0x0061, 0x0302, 0x0300, 0,
1634 0xa8, 0x0041, 0x0302, 0x0309, 0,
1635 0xa9, 0x0061, 0x0302, 0x0309, 0,
1636 0xaa, 0x0041, 0x0302, 0x0303, 0,
1637 0xab, 0x0061, 0x0302, 0x0303, 0,
1638 0xac, 0x0041, 0x0323, 0x0302, 0,
1639 0xad, 0x0061, 0x0323, 0x0302, 0,
1640 0xae, 0x0041, 0x0306, 0x0301, 0,
1641 0xaf, 0x0061, 0x0306, 0x0301, 0,
1642 0xb0, 0x0041, 0x0306, 0x0300, 0,
1643 0xb1, 0x0061, 0x0306, 0x0300, 0,
1644 0xb2, 0x0041, 0x0306, 0x0309, 0,
1645 0xb3, 0x0061, 0x0306, 0x0309, 0,
1646 0xb4, 0x0041, 0x0306, 0x0303, 0,
1647 0xb5, 0x0061, 0x0306, 0x0303, 0,
1648 0xb6, 0x0041, 0x0323, 0x0306, 0,
1649 0xb7, 0x0061, 0x0323, 0x0306, 0,
1650 0xb8, 0x0045, 0x0323, 0,
1651 0xb9, 0x0065, 0x0323, 0,
1652 0xba, 0x0045, 0x0309, 0,
1653 0xbb, 0x0065, 0x0309, 0,
1654 0xbc, 0x0045, 0x0303, 0,
1655 0xbd, 0x0065, 0x0303, 0,
1656 0xbe, 0x0045, 0x0302, 0x0301, 0,
1657 0xbf, 0x0065, 0x0302, 0x0301, 0,
1658 0xc0, 0x0045, 0x0302, 0x0300, 0,
1659 0xc1, 0x0065, 0x0302, 0x0300, 0,
1660 0xc2, 0x0045, 0x0302, 0x0309, 0,
1661 0xc3, 0x0065, 0x0302, 0x0309, 0,
1662 0xc4, 0x0045, 0x0302, 0x0303, 0,
1663 0xc5, 0x0065, 0x0302, 0x0303, 0,
1664 0xc6, 0x0045, 0x0323, 0x0302, 0,
1665 0xc7, 0x0065, 0x0323, 0x0302, 0,
1666 0xc8, 0x0049, 0x0309, 0,
1667 0xc9, 0x0069, 0x0309, 0,
1668 0xca, 0x0049, 0x0323, 0,
1669 0xcb, 0x0069, 0x0323, 0,
1670 0xcc, 0x004F, 0x0323, 0,
1671 0xcd, 0x006F, 0x0323, 0,
1672 0xce, 0x004F, 0x0309, 0,
1673 0xcf, 0x006F, 0x0309, 0,
1674 0xd0, 0x004F, 0x0302, 0x0301, 0,
1675 0xd1, 0x006F, 0x0302, 0x0301, 0,
1676 0xd2, 0x004F, 0x0302, 0x0300, 0,
1677 0xd3, 0x006F, 0x0302, 0x0300, 0,
1678 0xd4, 0x004F, 0x0302, 0x0309, 0,
1679 0xd5, 0x006F, 0x0302, 0x0309, 0,
1680 0xd6, 0x004F, 0x0302, 0x0303, 0,
1681 0xd7, 0x006F, 0x0302, 0x0303, 0,
1682 0xd8, 0x004F, 0x0323, 0x0302, 0,
1683 0xd9, 0x006F, 0x0323, 0x0302, 0,
1684 0xda, 0x004F, 0x031B, 0x0301, 0,
1685 0xdb, 0x006F, 0x031B, 0x0301, 0,
1686 0xdc, 0x004F, 0x031B, 0x0300, 0,
1687 0xdd, 0x006F, 0x031B, 0x0300, 0,
1688 0xde, 0x004F, 0x031B, 0x0309, 0,
1689 0xdf, 0x006F, 0x031B, 0x0309, 0,
1690 0xe0, 0x004F, 0x031B, 0x0303, 0,
1691 0xe1, 0x006F, 0x031B, 0x0303, 0,
1692 0xe2, 0x004F, 0x031B, 0x0323, 0,
1693 0xe3, 0x006F, 0x031B, 0x0323, 0,
1694 0xe4, 0x0055, 0x0323, 0,
1695 0xe5, 0x0075, 0x0323, 0,
1696 0xe6, 0x0055, 0x0309, 0,
1697 0xe7, 0x0075, 0x0309, 0,
1698 0xe8, 0x0055, 0x031B, 0x0301, 0,
1699 0xe9, 0x0075, 0x031B, 0x0301, 0,
1700 0xea, 0x0055, 0x031B, 0x0300, 0,
1701 0xeb, 0x0075, 0x031B, 0x0300, 0,
1702 0xec, 0x0055, 0x031B, 0x0309, 0,
1703 0xed, 0x0075, 0x031B, 0x0309, 0,
1704 0xee, 0x0055, 0x031B, 0x0303, 0,
1705 0xef, 0x0075, 0x031B, 0x0303, 0,
1706 0xf0, 0x0055, 0x031B, 0x0323, 0,
1707 0xf1, 0x0075, 0x031B, 0x0323, 0,
1708 0xf2, 0x0059, 0x0300, 0,
1709 0xf3, 0x0079, 0x0300, 0,
1710 0xf4, 0x0059, 0x0323, 0,
1711 0xf5, 0x0079, 0x0323, 0,
1712 0xf6, 0x0059, 0x0309, 0,
1713 0xf7, 0x0079, 0x0309, 0,
1714 0xf8, 0x0059, 0x0303, 0,
1715 0xf9, 0x0079, 0x0303, 0,
1716 0x00,
1717
1718 /* page1f */
1719 0x1f,
1720 0x00, 0x03B1, 0x0313, 0,
1721 0x01, 0x03B1, 0x0314, 0,
1722 0x02, 0x03B1, 0x0313, 0x0300, 0,
1723 0x03, 0x03B1, 0x0314, 0x0300, 0,
1724 0x04, 0x03B1, 0x0313, 0x0301, 0,
1725 0x05, 0x03B1, 0x0314, 0x0301, 0,
1726 0x06, 0x03B1, 0x0313, 0x0342, 0,
1727 0x07, 0x03B1, 0x0314, 0x0342, 0,
1728 0x08, 0x0391, 0x0313, 0,
1729 0x09, 0x0391, 0x0314, 0,
1730 0x0a, 0x0391, 0x0313, 0x0300, 0,
1731 0x0b, 0x0391, 0x0314, 0x0300, 0,
1732 0x0c, 0x0391, 0x0313, 0x0301, 0,
1733 0x0d, 0x0391, 0x0314, 0x0301, 0,
1734 0x0e, 0x0391, 0x0313, 0x0342, 0,
1735 0x0f, 0x0391, 0x0314, 0x0342, 0,
1736 0x10, 0x03B5, 0x0313, 0,
1737 0x11, 0x03B5, 0x0314, 0,
1738 0x12, 0x03B5, 0x0313, 0x0300, 0,
1739 0x13, 0x03B5, 0x0314, 0x0300, 0,
1740 0x14, 0x03B5, 0x0313, 0x0301, 0,
1741 0x15, 0x03B5, 0x0314, 0x0301, 0,
1742 0x18, 0x0395, 0x0313, 0,
1743 0x19, 0x0395, 0x0314, 0,
1744 0x1a, 0x0395, 0x0313, 0x0300, 0,
1745 0x1b, 0x0395, 0x0314, 0x0300, 0,
1746 0x1c, 0x0395, 0x0313, 0x0301, 0,
1747 0x1d, 0x0395, 0x0314, 0x0301, 0,
1748 0x20, 0x03B7, 0x0313, 0,
1749 0x21, 0x03B7, 0x0314, 0,
1750 0x22, 0x03B7, 0x0313, 0x0300, 0,
1751 0x23, 0x03B7, 0x0314, 0x0300, 0,
1752 0x24, 0x03B7, 0x0313, 0x0301, 0,
1753 0x25, 0x03B7, 0x0314, 0x0301, 0,
1754 0x26, 0x03B7, 0x0313, 0x0342, 0,
1755 0x27, 0x03B7, 0x0314, 0x0342, 0,
1756 0x28, 0x0397, 0x0313, 0,
1757 0x29, 0x0397, 0x0314, 0,
1758 0x2a, 0x0397, 0x0313, 0x0300, 0,
1759 0x2b, 0x0397, 0x0314, 0x0300, 0,
1760 0x2c, 0x0397, 0x0313, 0x0301, 0,
1761 0x2d, 0x0397, 0x0314, 0x0301, 0,
1762 0x2e, 0x0397, 0x0313, 0x0342, 0,
1763 0x2f, 0x0397, 0x0314, 0x0342, 0,
1764 0x30, 0x03B9, 0x0313, 0,
1765 0x31, 0x03B9, 0x0314, 0,
1766 0x32, 0x03B9, 0x0313, 0x0300, 0,
1767 0x33, 0x03B9, 0x0314, 0x0300, 0,
1768 0x34, 0x03B9, 0x0313, 0x0301, 0,
1769 0x35, 0x03B9, 0x0314, 0x0301, 0,
1770 0x36, 0x03B9, 0x0313, 0x0342, 0,
1771 0x37, 0x03B9, 0x0314, 0x0342, 0,
1772 0x38, 0x0399, 0x0313, 0,
1773 0x39, 0x0399, 0x0314, 0,
1774 0x3a, 0x0399, 0x0313, 0x0300, 0,
1775 0x3b, 0x0399, 0x0314, 0x0300, 0,
1776 0x3c, 0x0399, 0x0313, 0x0301, 0,
1777 0x3d, 0x0399, 0x0314, 0x0301, 0,
1778 0x3e, 0x0399, 0x0313, 0x0342, 0,
1779 0x3f, 0x0399, 0x0314, 0x0342, 0,
1780 0x40, 0x03BF, 0x0313, 0,
1781 0x41, 0x03BF, 0x0314, 0,
1782 0x42, 0x03BF, 0x0313, 0x0300, 0,
1783 0x43, 0x03BF, 0x0314, 0x0300, 0,
1784 0x44, 0x03BF, 0x0313, 0x0301, 0,
1785 0x45, 0x03BF, 0x0314, 0x0301, 0,
1786 0x48, 0x039F, 0x0313, 0,
1787 0x49, 0x039F, 0x0314, 0,
1788 0x4a, 0x039F, 0x0313, 0x0300, 0,
1789 0x4b, 0x039F, 0x0314, 0x0300, 0,
1790 0x4c, 0x039F, 0x0313, 0x0301, 0,
1791 0x4d, 0x039F, 0x0314, 0x0301, 0,
1792 0x50, 0x03C5, 0x0313, 0,
1793 0x51, 0x03C5, 0x0314, 0,
1794 0x52, 0x03C5, 0x0313, 0x0300, 0,
1795 0x53, 0x03C5, 0x0314, 0x0300, 0,
1796 0x54, 0x03C5, 0x0313, 0x0301, 0,
1797 0x55, 0x03C5, 0x0314, 0x0301, 0,
1798 0x56, 0x03C5, 0x0313, 0x0342, 0,
1799 0x57, 0x03C5, 0x0314, 0x0342, 0,
1800 0x59, 0x03A5, 0x0314, 0,
1801 0x5b, 0x03A5, 0x0314, 0x0300, 0,
1802 0x5d, 0x03A5, 0x0314, 0x0301, 0,
1803 0x5f, 0x03A5, 0x0314, 0x0342, 0,
1804 0x60, 0x03C9, 0x0313, 0,
1805 0x61, 0x03C9, 0x0314, 0,
1806 0x62, 0x03C9, 0x0313, 0x0300, 0,
1807 0x63, 0x03C9, 0x0314, 0x0300, 0,
1808 0x64, 0x03C9, 0x0313, 0x0301, 0,
1809 0x65, 0x03C9, 0x0314, 0x0301, 0,
1810 0x66, 0x03C9, 0x0313, 0x0342, 0,
1811 0x67, 0x03C9, 0x0314, 0x0342, 0,
1812 0x68, 0x03A9, 0x0313, 0,
1813 0x69, 0x03A9, 0x0314, 0,
1814 0x6a, 0x03A9, 0x0313, 0x0300, 0,
1815 0x6b, 0x03A9, 0x0314, 0x0300, 0,
1816 0x6c, 0x03A9, 0x0313, 0x0301, 0,
1817 0x6d, 0x03A9, 0x0314, 0x0301, 0,
1818 0x6e, 0x03A9, 0x0313, 0x0342, 0,
1819 0x6f, 0x03A9, 0x0314, 0x0342, 0,
1820 0x70, 0x03B1, 0x0300, 0,
1821 0x71, 0x03B1, 0x0301, 0,
1822 0x72, 0x03B5, 0x0300, 0,
1823 0x73, 0x03B5, 0x0301, 0,
1824 0x74, 0x03B7, 0x0300, 0,
1825 0x75, 0x03B7, 0x0301, 0,
1826 0x76, 0x03B9, 0x0300, 0,
1827 0x77, 0x03B9, 0x0301, 0,
1828 0x78, 0x03BF, 0x0300, 0,
1829 0x79, 0x03BF, 0x0301, 0,
1830 0x7a, 0x03C5, 0x0300, 0,
1831 0x7b, 0x03C5, 0x0301, 0,
1832 0x7c, 0x03C9, 0x0300, 0,
1833 0x7d, 0x03C9, 0x0301, 0,
1834 0x80, 0x03B1, 0x0345, 0x0313, 0,
1835 0x81, 0x03B1, 0x0345, 0x0314, 0,
1836 0x82, 0x03B1, 0x0345, 0x0313, 0x0300, 0,
1837 0x83, 0x03B1, 0x0345, 0x0314, 0x0300, 0,
1838 0x84, 0x03B1, 0x0345, 0x0313, 0x0301, 0,
1839 0x85, 0x03B1, 0x0345, 0x0314, 0x0301, 0,
1840 0x86, 0x03B1, 0x0345, 0x0313, 0x0342, 0,
1841 0x87, 0x03B1, 0x0345, 0x0314, 0x0342, 0,
1842 0x88, 0x0391, 0x0345, 0x0313, 0,
1843 0x89, 0x0391, 0x0345, 0x0314, 0,
1844 0x8a, 0x0391, 0x0345, 0x0313, 0x0300, 0,
1845 0x8b, 0x0391, 0x0345, 0x0314, 0x0300, 0,
1846 0x8c, 0x0391, 0x0345, 0x0313, 0x0301, 0,
1847 0x8d, 0x0391, 0x0345, 0x0314, 0x0301, 0,
1848 0x8e, 0x0391, 0x0345, 0x0313, 0x0342, 0,
1849 0x8f, 0x0391, 0x0345, 0x0314, 0x0342, 0,
1850 0x90, 0x03B7, 0x0345, 0x0313, 0,
1851 0x91, 0x03B7, 0x0345, 0x0314, 0,
1852 0x92, 0x03B7, 0x0345, 0x0313, 0x0300, 0,
1853 0x93, 0x03B7, 0x0345, 0x0314, 0x0300, 0,
1854 0x94, 0x03B7, 0x0345, 0x0313, 0x0301, 0,
1855 0x95, 0x03B7, 0x0345, 0x0314, 0x0301, 0,
1856 0x96, 0x03B7, 0x0345, 0x0313, 0x0342, 0,
1857 0x97, 0x03B7, 0x0345, 0x0314, 0x0342, 0,
1858 0x98, 0x0397, 0x0345, 0x0313, 0,
1859 0x99, 0x0397, 0x0345, 0x0314, 0,
1860 0x9a, 0x0397, 0x0345, 0x0313, 0x0300, 0,
1861 0x9b, 0x0397, 0x0345, 0x0314, 0x0300, 0,
1862 0x9c, 0x0397, 0x0345, 0x0313, 0x0301, 0,
1863 0x9d, 0x0397, 0x0345, 0x0314, 0x0301, 0,
1864 0x9e, 0x0397, 0x0345, 0x0313, 0x0342, 0,
1865 0x9f, 0x0397, 0x0345, 0x0314, 0x0342, 0,
1866 0xa0, 0x03C9, 0x0345, 0x0313, 0,
1867 0xa1, 0x03C9, 0x0345, 0x0314, 0,
1868 0xa2, 0x03C9, 0x0345, 0x0313, 0x0300, 0,
1869 0xa3, 0x03C9, 0x0345, 0x0314, 0x0300, 0,
1870 0xa4, 0x03C9, 0x0345, 0x0313, 0x0301, 0,
1871 0xa5, 0x03C9, 0x0345, 0x0314, 0x0301, 0,
1872 0xa6, 0x03C9, 0x0345, 0x0313, 0x0342, 0,
1873 0xa7, 0x03C9, 0x0345, 0x0314, 0x0342, 0,
1874 0xa8, 0x03A9, 0x0345, 0x0313, 0,
1875 0xa9, 0x03A9, 0x0345, 0x0314, 0,
1876 0xaa, 0x03A9, 0x0345, 0x0313, 0x0300, 0,
1877 0xab, 0x03A9, 0x0345, 0x0314, 0x0300, 0,
1878 0xac, 0x03A9, 0x0345, 0x0313, 0x0301, 0,
1879 0xad, 0x03A9, 0x0345, 0x0314, 0x0301, 0,
1880 0xae, 0x03A9, 0x0345, 0x0313, 0x0342, 0,
1881 0xaf, 0x03A9, 0x0345, 0x0314, 0x0342, 0,
1882 0xb0, 0x03B1, 0x0306, 0,
1883 0xb1, 0x03B1, 0x0304, 0,
1884 0xb2, 0x03B1, 0x0345, 0x0300, 0,
1885 0xb3, 0x03B1, 0x0345, 0,
1886 0xb4, 0x03B1, 0x0345, 0x0301, 0,
1887 0xb6, 0x03B1, 0x0342, 0,
1888 0xb7, 0x03B1, 0x0345, 0x0342, 0,
1889 0xb8, 0x0391, 0x0306, 0,
1890 0xb9, 0x0391, 0x0304, 0,
1891 0xba, 0x0391, 0x0300, 0,
1892 0xbb, 0x0391, 0x0301, 0,
1893 0xbc, 0x0391, 0x0345, 0,
1894 0xbe, 0x03B9, 0,
1895 0xc1, 0x00A8, 0x0342, 0,
1896 0xc2, 0x03B7, 0x0345, 0x0300, 0,
1897 0xc3, 0x03B7, 0x0345, 0,
1898 0xc4, 0x03B7, 0x0345, 0x0301, 0,
1899 0xc6, 0x03B7, 0x0342, 0,
1900 0xc7, 0x03B7, 0x0345, 0x0342, 0,
1901 0xc8, 0x0395, 0x0300, 0,
1902 0xc9, 0x0395, 0x0301, 0,
1903 0xca, 0x0397, 0x0300, 0,
1904 0xcb, 0x0397, 0x0301, 0,
1905 0xcc, 0x0397, 0x0345, 0,
1906 0xcd, 0x1FBF, 0x0300, 0,
1907 0xce, 0x1FBF, 0x0301, 0,
1908 0xcf, 0x1FBF, 0x0342, 0,
1909 0xd0, 0x03B9, 0x0306, 0,
1910 0xd1, 0x03B9, 0x0304, 0,
1911 0xd2, 0x03B9, 0x0308, 0x0300, 0,
1912 0xd3, 0x03B9, 0x0308, 0x0301, 0,
1913 0xd6, 0x03B9, 0x0342, 0,
1914 0xd7, 0x03B9, 0x0308, 0x0342, 0,
1915 0xd8, 0x0399, 0x0306, 0,
1916 0xd9, 0x0399, 0x0304, 0,
1917 0xda, 0x0399, 0x0300, 0,
1918 0xdb, 0x0399, 0x0301, 0,
1919 0xdd, 0x1FFE, 0x0300, 0,
1920 0xde, 0x1FFE, 0x0301, 0,
1921 0xdf, 0x1FFE, 0x0342, 0,
1922 0xe0, 0x03C5, 0x0306, 0,
1923 0xe1, 0x03C5, 0x0304, 0,
1924 0xe2, 0x03C5, 0x0308, 0x0300, 0,
1925 0xe3, 0x03C5, 0x0308, 0x0301, 0,
1926 0xe4, 0x03C1, 0x0313, 0,
1927 0xe5, 0x03C1, 0x0314, 0,
1928 0xe6, 0x03C5, 0x0342, 0,
1929 0xe7, 0x03C5, 0x0308, 0x0342, 0,
1930 0xe8, 0x03A5, 0x0306, 0,
1931 0xe9, 0x03A5, 0x0304, 0,
1932 0xea, 0x03A5, 0x0300, 0,
1933 0xeb, 0x03A5, 0x0301, 0,
1934 0xec, 0x03A1, 0x0314, 0,
1935 0xed, 0x00A8, 0x0300, 0,
1936 0xee, 0x00A8, 0x0301, 0,
1937 0xef, 0x0060, 0,
1938 0xf2, 0x03C9, 0x0345, 0x0300, 0,
1939 0xf3, 0x03C9, 0x0345, 0,
1940 0xf4, 0x03BF, 0x0345, 0x0301, 0,
1941 0xf6, 0x03C9, 0x0342, 0,
1942 0xf7, 0x03C9, 0x0345, 0x0342, 0,
1943 0xf8, 0x039F, 0x0300, 0,
1944 0xf9, 0x039F, 0x0301, 0,
1945 0xfa, 0x03A9, 0x0300, 0,
1946 0xfb, 0x03A9, 0x0301, 0,
1947 0xfc, 0x03A9, 0x0345, 0,
1948 0xfd, 0x00B4, 0,
1949 0x00,
1950
1951 /* page30 */
1952 0x30,
1953 0x4c, 0x304B, 0x3099, 0,
1954 0x4e, 0x304D, 0x3099, 0,
1955 0x50, 0x304F, 0x3099, 0,
1956 0x52, 0x3051, 0x3099, 0,
1957 0x54, 0x3053, 0x3099, 0,
1958 0x56, 0x3055, 0x3099, 0,
1959 0x58, 0x3057, 0x3099, 0,
1960 0x5a, 0x3059, 0x3099, 0,
1961 0x5c, 0x305B, 0x3099, 0,
1962 0x5e, 0x305D, 0x3099, 0,
1963 0x60, 0x305F, 0x3099, 0,
1964 0x62, 0x3061, 0x3099, 0,
1965 0x65, 0x3064, 0x3099, 0,
1966 0x67, 0x3066, 0x3099, 0,
1967 0x69, 0x3068, 0x3099, 0,
1968 0x70, 0x306F, 0x3099, 0,
1969 0x71, 0x306F, 0x309A, 0,
1970 0x73, 0x3072, 0x3099, 0,
1971 0x74, 0x3072, 0x309A, 0,
1972 0x76, 0x3075, 0x3099, 0,
1973 0x77, 0x3075, 0x309A, 0,
1974 0x79, 0x3078, 0x3099, 0,
1975 0x7a, 0x3078, 0x309A, 0,
1976 0x7c, 0x307B, 0x3099, 0,
1977 0x7d, 0x307B, 0x309A, 0,
1978 0x94, 0x3046, 0x3099, 0,
1979 0x9e, 0x309D, 0x3099, 0,
1980 0xac, 0x30AB, 0x3099, 0,
1981 0xae, 0x30AD, 0x3099, 0,
1982 0xb0, 0x30AF, 0x3099, 0,
1983 0xb2, 0x30B1, 0x3099, 0,
1984 0xb4, 0x30B3, 0x3099, 0,
1985 0xb6, 0x30B5, 0x3099, 0,
1986 0xb8, 0x30B7, 0x3099, 0,
1987 0xba, 0x30B9, 0x3099, 0,
1988 0xbc, 0x30BB, 0x3099, 0,
1989 0xbe, 0x30BD, 0x3099, 0,
1990 0xc0, 0x30BF, 0x3099, 0,
1991 0xc2, 0x30C1, 0x3099, 0,
1992 0xc5, 0x30C4, 0x3099, 0,
1993 0xc7, 0x30C6, 0x3099, 0,
1994 0xc9, 0x30C8, 0x3099, 0,
1995 0xd0, 0x30CF, 0x3099, 0,
1996 0xd1, 0x30CF, 0x309A, 0,
1997 0xd3, 0x30D2, 0x3099, 0,
1998 0xd4, 0x30D2, 0x309A, 0,
1999 0xd6, 0x30D5, 0x3099, 0,
2000 0xd7, 0x30D5, 0x309A, 0,
2001 0xd9, 0x30D8, 0x3099, 0,
2002 0xda, 0x30D8, 0x309A, 0,
2003 0xdc, 0x30DB, 0x3099, 0,
2004 0xdd, 0x30DB, 0x309A, 0,
2005 0xf4, 0x30A6, 0x3099, 0,
2006 0xf7, 0x30EF, 0x3099, 0,
2007 0xf8, 0x30F0, 0x3099, 0,
2008 0xf9, 0x30F1, 0x3099, 0,
2009 0xfa, 0x30F2, 0x3099, 0,
2010 0xfe, 0x30FD, 0x3099, 0,
2011 0x00,
2012
2013 /* pagefb */
2014 0xfb,
2015 0x1f, 0x05F2, 0x05B7, 0,
2016 0x2a, 0x05E9, 0x05C1, 0,
2017 0x2b, 0x05E9, 0x05C2, 0,
2018 0x2c, 0x05E9, 0x05BC, 0x05C1, 0,
2019 0x2d, 0x05E9, 0x05BC, 0x05C2, 0,
2020 0x2e, 0x05D0, 0x05B7, 0,
2021 0x2f, 0x05D0, 0x05B8, 0,
2022 0x30, 0x05D0, 0x05BC, 0,
2023 0x31, 0x05D1, 0x05BC, 0,
2024 0x32, 0x05D2, 0x05BC, 0,
2025 0x33, 0x05D3, 0x05BC, 0,
2026 0x34, 0x05D4, 0x05BC, 0,
2027 0x35, 0x05D5, 0x05BC, 0,
2028 0x36, 0x05D6, 0x05BC, 0,
2029 0x38, 0x05D8, 0x05BC, 0,
2030 0x39, 0x05D9, 0x05BC, 0,
2031 0x3a, 0x05DA, 0x05BC, 0,
2032 0x3b, 0x05DB, 0x05BC, 0,
2033 0x3c, 0x05DC, 0x05BC, 0,
2034 0x3e, 0x05DE, 0x05BC, 0,
2035 0x40, 0x05E0, 0x05BC, 0,
2036 0x41, 0x05E1, 0x05BC, 0,
2037 0x43, 0x05E3, 0x05BC, 0,
2038 0x44, 0x05E4, 0x05BC, 0,
2039 0x46, 0x05E6, 0x05BC, 0,
2040 0x47, 0x05E7, 0x05BC, 0,
2041 0x48, 0x05E8, 0x05BC, 0,
2042 0x49, 0x05E9, 0x05BC, 0,
2043 0x4a, 0x05EA, 0x05BC, 0,
2044 0x4b, 0x05D5, 0x05B9, 0,
2045 0x4c, 0x05D1, 0x05BF, 0,
2046 0x4d, 0x05DB, 0x05BF, 0,
2047 0x4e, 0x05E4, 0x05BF, 0,
2048 0x00,
2049
2050 /* end of list */
2051 0x00
2052 };
2053
2054 #define HFSPLUS_DECOMPOSE_PAGE_SIZE (256 * (HFSPLUS_MAX_DECOMPOSE_LEN + 1))
2055
2056 static uint16_t decompose_pages[16 * 256][HFSPLUS_MAX_DECOMPOSE_LEN + 1];
2057
2058 uint16_t (*hfsplus_decompose_pages[256])[HFSPLUS_MAX_DECOMPOSE_LEN + 1];
2059
2060
2061 void make_hfsplus_decompose_pages()
2062 {
2063 int page_idx = -1, char_idx, i;
2064 uint16_t *rpt, *page_pt, *value_pt;
2065 int page_count = 0;
2066
2067
2068 memset(decompose_pages, 0, 16 * HFSPLUS_DECOMPOSE_PAGE_SIZE);
2069 for (i = 0; i < 256; i++)
2070 hfsplus_decompose_pages[i] = NULL;
2071
2072 rpt = (uint16_t *) decompose_page_data;
2073 page_pt = (uint16_t *) decompose_pages;
2074 while (1) {
2075 if (*rpt <= page_idx)
2076 break;
2077
2078 /* <<< only for development */
2079 page_count++;
2080 if (page_count > 16) {
2081 fprintf(stderr, "FATAL: More than 16 pages encountered\n");
2082 exit(1);
2083 }
2084
2085 page_idx = *(rpt++);
2086 char_idx = -1;
2087 while (1) {
2088 if(*rpt <= char_idx)
2089 break;
2090 char_idx = *(rpt++);
2091 value_pt = page_pt + char_idx * (HFSPLUS_MAX_DECOMPOSE_LEN + 1);
2092 while (1) {
2093 if(*rpt == 0)
2094 break;
2095 *(value_pt++) = *(rpt++);
2096 }
2097 rpt++;
2098 }
2099 rpt++;
2100 hfsplus_decompose_pages[page_idx] =
2101 decompose_pages + (page_count - 1) * 256;
2102 page_pt += HFSPLUS_DECOMPOSE_PAGE_SIZE;
2103 }
2104
2105 /* <<< only for development */
2106 rpt++;
2107 printf("Items read: %d\n", (int) (rpt - decompose_page_data));
2108 if (page_count != 16) {
2109 fprintf(stderr, "FATAL: Less than 16 pages encountered: %d\n",
2110 page_count);
2111 exit(1);
2112 }
2113 }
2114
2115
2116 static int compare_decompose_pages()
2117 {
2118 int i, j, k;
2119
2120 for (i = 0; i < 256; i++) {
2121 if (hfsplus_decompose_pages_old[i] == NULL) {
2122 if (hfsplus_decompose_pages[i] == NULL)
2123 continue;
2124 fprintf(stderr, "DIFF : i= %d , ts != NULL\n", i);
2125 return 0;
2126 } else if (hfsplus_decompose_pages[i] == NULL) {
2127 fprintf(stderr, "DIFF : i= %d , ts == NULL\n", i);
2128 return 0;
2129 }
2130
2131 for (j = 0; j < 256; j++)
2132 for (k = 0; k < HFSPLUS_MAX_DECOMPOSE_LEN + 1; k++)
2133 if (hfsplus_decompose_pages_old[i][j][k] !=
2134 hfsplus_decompose_pages[i][j][k]) {
2135 fprintf(stderr,
2136 "DIFF : i= %d , j= %d , k= %d : %4.4x !+ %4.4x\n",
2137 i, j, k, hfsplus_decompose_pages[i][j][k],
2138 hfsplus_decompose_pages[i][j][k]);
2139 return 0;
2140 }
2141 }
2142 return 1;
2143 }
2144
2145
2146 main()
2147 {
2148
2149 make_hfsplus_decompose_pages();
2150
2151 /* <<< intentional deviations */
2152 /* hfsplus_decompose_pages[1][4][0] = 0xffff; */
2153 /* hfsplus_decompose_pages_old[3] = NULL; */
2154
2155 compare_decompose_pages();
2156
2157 exit(0);
2158 }
2159