1/*
2 * $XTermId: charsets.h,v 1.35 2024/12/01 23:50:59 tom Exp $
3 */
4
5/*
6 * Copyright 2023,2024 by Thomas E. Dickey
7 *
8 *                         All Rights Reserved
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining a
11 * copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation the rights to use, copy, modify, merge, publish,
14 * distribute, sublicense, and/or sell copies of the Software, and to
15 * permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included
19 * in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
25 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 *
29 * Except as contained in this notice, the name(s) of the above copyright
30 * holders shall not be used in advertising or otherwise to promote the
31 * sale, use or other dealings in this Software without prior written
32 * authorization.
33 */
34
35#ifndef included_charsets_h
36#define included_charsets_h 1
37
38/*
39 * According to
40 *  Digital ANSI-Compliant Printing Protocol
41 *  Level 2 Programming Reference Manual
42 *  EK-PPLV2-PM. B01
43 *
44 * the supplementary character sets Greek, Hebrew, Latin-5 and Latin/Cyrillic
45 * are standardized by ISO:
46 *  ISO Greek is 8859-7
47 *  ISO Hebrew is 8859-8
48 *  ISO Latin-5 is 8859-9
49 *  ISO Latin/Cyrillic is 8859-5
50 *
51 * These are derived from the data at
52 *  ftp://www.unicode.org/Public/MAPPINGS/ISO8859/
53 *
54 * Note: the "figure A-xx" comments refer to EK-PPLV2-PM.
55 */
56
57#ifndef PUA
58#define PUA(n) (0xEEEE + (n))
59#endif
60#define UNDEF  0x2426		/* rendered as a backwards "?" */
61
62/*
63 * A "codepage" is treated different from the NRC mode:  it is always enabled.
64 * Reuse the UNI() macros by temporarily setting its state.
65 */
66
67#if OPT_WIDE_CHARS
68#define begin_CODEPAGE(size) \
69	if (!(xw->flags & NATIONAL)) { \
70	    screen->utf8_nrc_mode++; \
71	}
72#define end_CODEPAGE() \
73	if (!(xw->flags & NATIONAL)) { \
74	    screen->utf8_nrc_mode--; \
75	}
76#else
77#define begin_CODEPAGE(size)	/* nothing */
78#define end_CODEPAGE()		/* nothing */
79#endif
80
81/*
82 * xterm's original implementation of NRCS in 1998 was before Unicode became
83 * prevalent.  Most of the necessary mappings could be done using definitions
84 * from X11/keysymdef.h, using ISO-8859-1 as the default.
85 */
86
87#define map_ASCII(code) \
88	switch (code) { \
89	    XXX(0xA0, UNDEF) \
90	    XXX(0xFF, UNDEF) \
91	}
92
93#define unmap_ASCII(code,dft) \
94	switch (code) { \
95	    MAP(0xA0, 0x1B) \
96	    MAP(0xFF, 0x10000) \
97	    default: dft; break; \
98	}
99
100#define map_DEC_Spec_Graphic(code) \
101	begin_CODEPAGE(94) \
102	switch (code) { \
103	    XXX(0x5F, UNDEF) \
104	    UNI(0x60, 0x0020)	/* nbsp, treat as blank */ \
105	    UNI(0x61, 0x0020)	/* reserved, treat as blank */ \
106	    UNI(0x62, 0x25AE)	/* black vertical rectangle */ \
107	    UNI(0x63, 0x215F)	/* "1/" */ \
108	    UNI(0x64, 0x0020)	/* "3/", not in Unicode, ignore */ \
109	    UNI(0x65, 0x0020)	/* "5/", not in Unicode, ignore */ \
110	    UNI(0x66, 0x0020)	/* "7/", not in Unicode, ignore */ \
111	    UNI(0x67, 0x00B0)	/* degree sign */ \
112	    UNI(0x68, 0x00B1)	/* plus-minus sign */ \
113	    UNI(0x69, 0x2192)	/* right-arrow */ \
114	    UNI(0x6A, 0x2026)	/* ellipsis */ \
115	    UNI(0x6B, 0x00F7)	/* divide by */ \
116	    UNI(0x6C, 0x2193)	/* down arrow */ \
117	    UNI(0x6D, 0x23BA)	/* bar at scan 0 */ \
118	    UNI(0x6E, 0x23BA)	/* bar at scan 1 */ \
119	    UNI(0x6F, 0x23BB)	/* bar at scan 2 */ \
120	    UNI(0x70, 0x23BB)	/* bar at scan 3 */ \
121	    UNI(0x71, 0x23BC)	/* bar at scan 4 */ \
122	    UNI(0x72, 0x23BC)	/* bar at scan 5 */ \
123	    UNI(0x73, 0x23BD)	/* bar at scan 6 */ \
124	    UNI(0x74, 0x23BD)	/* bar at scan 7 */ \
125	    UNI(0x75, 0x2080)	/* subscript 0 */ \
126	    UNI(0x76, 0x2081)	/* subscript 1 */ \
127	    UNI(0x77, 0x2082)	/* subscript 2 */ \
128	    UNI(0x78, 0x2083)	/* subscript 3 */ \
129	    UNI(0x79, 0x2084)	/* subscript 4 */ \
130	    UNI(0x7A, 0x2085)	/* subscript 5 */ \
131	    UNI(0x7B, 0x2086)	/* subscript 6 */ \
132	    UNI(0x7C, 0x2087)	/* subscript 7 */ \
133	    UNI(0x7D, 0x2088)	/* subscript 8 */ \
134	    UNI(0x7E, 0x2089)	/* subscript 9 */ \
135	} \
136	end_CODEPAGE()
137
138#define unmap_DEC_Spec_Graphic(code,dft) \
139	switch (code) { \
140	    MAP(0x5F, 0x10000) \
141	    MAP(0x60, 0x14)	/* nbsp, treat as blank */ \
142	    MAP(0x61, 0x78)	/* reserved, treat as blank */ \
143	    MAP(0x62, 0x0A)	/* black vertical rectangle */ \
144	    MAP(0x63, 0x0D)	/* "1/" */ \
145	    MAP(0x64, 0x0E)	/* "3/", not in Unicode, ignore */ \
146	    MAP(0x65, 0x0B)	/* "5/", not in Unicode, ignore */ \
147	    MAP(0x66, 0xB0)	/* "7/", not in Unicode, ignore */ \
148	    MAP(0x67, 0xB1)	/* degree sign */ \
149	    MAP(0x68, 0x15)	/* plus-minus sign */ \
150	    MAP(0x69, 0x0C)	/* right-arrow */ \
151	    MAP(0x6A, 0x16)	/* ellipsis */ \
152	    MAP(0x6B, 0x17)	/* divide by */ \
153	    MAP(0x6C, 0x18)	/* down arrow */ \
154	    MAP(0x6D, 0x19)	/* bar at scan 0 */ \
155	    MAP(0x6E, 0x1A)	/* bar at scan 1 */ \
156	    MAP(0x6F, 0x1B)	/* bar at scan 2 */ \
157	    MAP(0x70, 0x1C)	/* bar at scan 3 */ \
158	    MAP(0x71, 0x1D)	/* bar at scan 4 */ \
159	    MAP(0x72, 0x1E)	/* bar at scan 5 */ \
160	    MAP(0x73, 0x1F)	/* bar at scan 6 */ \
161	    MAP(0x74, 0x80)	/* bar at scan 7 */ \
162	    MAP(0x75, 0x81)	/* subscript 0 */ \
163	    MAP(0x76, 0x82)	/* subscript 1 */ \
164	    MAP(0x77, 0x83)	/* subscript 2 */ \
165	    MAP(0x78, 0x84)	/* subscript 3 */ \
166	    MAP(0x79, 0x85)	/* subscript 4 */ \
167	    MAP(0x7A, 0x86)	/* subscript 5 */ \
168	    MAP(0x7B, 0xC6)	/* subscript 6 */ \
169	    MAP(0x7C, 0x87)	/* subscript 7 */ \
170	    MAP(0x7D, 0xA3)	/* subscript 8 */ \
171	    MAP(0x7E, 0xB7)	/* subscript 9 */ \
172	    default: dft; break; \
173	}
174
175#define map_ISO_Latin_1(code) \
176	begin_CODEPAGE(96) \
177	switch (code) { \
178	} \
179	end_CODEPAGE()
180
181#define unmap_ISO_Latin_1(code,dft) /* nothing */
182
183#define map_NRCS_Dutch(code) \
184	switch (code) { \
185	    MAP(0x23, XK_sterling)	/* U+00A3 POUND SIGN */ \
186	    MAP(0x40, XK_threequarters)	/* U+00BE VULGAR FRACTION THREE QUARTERS */ \
187	    UNI(0x5B, 0x0133)		/* LATIN SMALL LIGATURE IJ */ \
188	    MAP(0x5C, XK_onehalf)	/* U+00BD VULGAR FRACTION ONE HALF */ \
189	    MAP(0x5D, XK_bar)		/* U+007C VERTICAL LINE */ \
190	    MAP(0x7B, XK_diaeresis)	/* U+00A8 DIAERESIS */ \
191	    UNI(0x7C, 0x0192)		/* LATIN SMALL LETTER F WITH HOOK (florin) */ \
192	    MAP(0x7D, XK_onequarter)	/* U+00BC VULGAR FRACTION ONE QUARTER */ \
193	    MAP(0x7E, XK_acute)		/* U+00B4 ACUTE ACCENT */ \
194	}
195
196#define unmap_NRCS_Dutch(code,dft) /* nothing */
197
198#define map_NRCS_Finnish(code) \
199	switch (code) { \
200	    MAP(0x5B, XK_Adiaeresis)	/* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ \
201	    MAP(0x5C, XK_Odiaeresis)	/* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ \
202	    MAP(0x5D, XK_Aring)		/* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ \
203	    MAP(0x5E, XK_Udiaeresis)	/* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ \
204	    MAP(0x60, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
205	    MAP(0x7B, XK_adiaeresis)	/* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ \
206	    MAP(0x7C, XK_odiaeresis)	/* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ \
207	    MAP(0x7D, XK_aring)		/* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ \
208	    MAP(0x7E, XK_udiaeresis)	/* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ \
209	}
210
211#define unmap_NRCS_Finnish(code,dft) /* nothing */
212
213#define map_NRCS_French(code) \
214	switch (code) { \
215	    MAP(0x23, XK_sterling)	/* U+00A3 POUND SIGN */ \
216	    MAP(0x40, XK_agrave)	/* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ \
217	    MAP(0x5B, XK_degree)	/* U+00B0 DEGREE SIGN */ \
218	    MAP(0x5C, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
219	    MAP(0x5D, XK_section)	/* U+00A7 SECTION SIGN */ \
220	    MAP(0x7B, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
221	    MAP(0x7C, XK_ugrave)	/* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ \
222	    MAP(0x7D, XK_egrave)	/* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ \
223	    MAP(0x7E, XK_diaeresis)	/* U+00A8 DIAERESIS */ \
224	}
225
226#define unmap_NRCS_French(code,dft) /* nothing */
227
228#define map_NRCS_French_Canadian(code) \
229	switch (code) { \
230	    MAP(0x40, XK_agrave)	/* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ \
231	    MAP(0x5B, XK_acircumflex)	/* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ \
232	    MAP(0x5C, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
233	    MAP(0x5D, XK_ecircumflex)	/* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ \
234	    MAP(0x5E, XK_icircumflex)	/* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ \
235	    MAP(0x60, XK_ocircumflex)	/* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ \
236	    MAP(0x7B, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
237	    MAP(0x7C, XK_ugrave)	/* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ \
238	    MAP(0x7D, XK_egrave)	/* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ \
239	    MAP(0x7E, XK_ucircumflex)	/* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ \
240	}
241
242#define unmap_NRCS_French_Canadian(code,dft) /* nothing */
243
244#define map_NRCS_German(code) \
245	switch (code) { \
246	    MAP(0x40, XK_section)	/* U+00A7 SECTION SIGN */ \
247	    MAP(0x5B, XK_Adiaeresis)	/* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ \
248	    MAP(0x5C, XK_Odiaeresis)	/* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ \
249	    MAP(0x5D, XK_Udiaeresis)	/* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ \
250	    MAP(0x7B, XK_adiaeresis)	/* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ \
251	    MAP(0x7C, XK_odiaeresis)	/* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ \
252	    MAP(0x7D, XK_udiaeresis)	/* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ \
253	    MAP(0x7E, XK_ssharp)	/* U+00DF LATIN SMALL LETTER SHARP S */ \
254	}
255
256#define unmap_NRCS_German(code,dft) /* nothing */
257
258#define map_NRCS_Italian(code) \
259	switch (code) { \
260	    MAP(0x23, XK_sterling)	/* U+00A3 POUND SIGN */ \
261	    MAP(0x40, XK_section)	/* U+00A7 SECTION SIGN */ \
262	    MAP(0x5B, XK_degree)	/* U+00B0 DEGREE SIGN */ \
263	    MAP(0x5C, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
264	    MAP(0x5D, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
265	    MAP(0x60, XK_ugrave)	/* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ \
266	    MAP(0x7B, XK_agrave)	/* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ \
267	    MAP(0x7C, XK_ograve)	/* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ \
268	    MAP(0x7D, XK_egrave)	/* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ \
269	    MAP(0x7E, XK_igrave)	/* U+00EC LATIN SMALL LETTER I WITH GRAVE */ \
270	}
271
272#define unmap_NRCS_Italian(code,dft) /* nothing */
273
274#define map_NRCS_Norwegian_Danish(code) \
275	switch (code) { \
276	    MAP(0x40, XK_Adiaeresis)	/* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ \
277	    MAP(0x5B, XK_AE)		/* U+00C6 LATIN CAPITAL LETTER AE */ \
278	    MAP(0x5C, XK_Ooblique)	/* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ \
279	    MAP(0x5D, XK_Aring)		/* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ \
280	    MAP(0x5E, XK_Udiaeresis)	/* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ \
281	    MAP(0x60, XK_adiaeresis)	/* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ \
282	    MAP(0x7B, XK_ae)		/* U+00E6 LATIN SMALL LETTER AE */ \
283	    MAP(0x7C, XK_oslash)	/* U+00F8 LATIN SMALL LETTER O WITH STROKE */ \
284	    MAP(0x7D, XK_aring)		/* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ \
285	    MAP(0x7E, XK_udiaeresis)	/* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ \
286	}
287
288#define unmap_NRCS_Norwegian_Danish(code,dft) /* nothing */
289
290#define map_NRCS_Portuguese(code) \
291	switch (code) { \
292	    MAP(0x5B, XK_Atilde)	/* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ \
293	    MAP(0x5C, XK_Ccedilla)	/* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ \
294	    MAP(0x5D, XK_Otilde)	/* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ \
295	    MAP(0x7B, XK_atilde)	/* U+00E3 LATIN SMALL LETTER A WITH TILDE */ \
296	    MAP(0x7C, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
297	    MAP(0x7D, XK_otilde)	/* U+00F5 LATIN SMALL LETTER O WITH TILDE */ \
298	}
299
300#define unmap_NRCS_Portuguese(code,dft) /* nothing */
301
302#define map_NRCS_Spanish(code) \
303	switch (code) { \
304	    MAP(0x23, XK_sterling)	/* U+00A3 POUND SIGN */ \
305	    MAP(0x40, XK_section)	/* U+00A7 SECTION SIGN */ \
306	    MAP(0x5B, XK_exclamdown)	/* U+00A1 INVERTED EXCLAMATION MARK */ \
307	    MAP(0x5C, XK_Ntilde)	/* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ \
308	    MAP(0x5D, XK_questiondown)	/* U+00BF INVERTED QUESTION MARK */ \
309	    MAP(0x7B, XK_degree)	/* U+00B0 DEGREE SIGN */ \
310	    MAP(0x7C, XK_ntilde)	/* U+00F1 LATIN SMALL LETTER N WITH TILDE */ \
311	    MAP(0x7D, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
312	}
313
314#define unmap_NRCS_Spanish(code,dft) /* nothing */
315
316#define map_NRCS_Swedish(code) \
317	switch (code) { \
318	    MAP(0x40, XK_Eacute) \
319	    MAP(0x5B, XK_Adiaeresis)	/* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ \
320	    MAP(0x5C, XK_Odiaeresis)	/* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ \
321	    MAP(0x5D, XK_Aring)		/* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ \
322	    MAP(0x5E, XK_Udiaeresis)	/* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ \
323	    MAP(0x60, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
324	    MAP(0x7B, XK_adiaeresis)	/* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ \
325	    MAP(0x7C, XK_odiaeresis)	/* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ \
326	    MAP(0x7D, XK_aring)		/* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ \
327	    MAP(0x7E, XK_udiaeresis)	/* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ \
328	}
329
330#define unmap_NRCS_Swedish(code,dft) /* nothing */
331
332#define map_NRCS_Swiss(code) \
333	switch (code) { \
334	    MAP(0x23, XK_ugrave)	/* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ \
335	    MAP(0x40, XK_agrave)	/* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ \
336	    MAP(0x5B, XK_eacute)	/* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ \
337	    MAP(0x5C, XK_ccedilla)	/* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ \
338	    MAP(0x5D, XK_ecircumflex)	/* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ \
339	    MAP(0x5E, XK_icircumflex)	/* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ \
340	    MAP(0x5F, XK_egrave)	/* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ \
341	    MAP(0x60, XK_ocircumflex)	/* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ \
342	    MAP(0x7B, XK_adiaeresis)	/* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ \
343	    MAP(0x7C, XK_odiaeresis)	/* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ \
344	    MAP(0x7D, XK_udiaeresis)	/* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ \
345	    MAP(0x7E, XK_ucircumflex)	/* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ \
346	}
347
348#define unmap_NRCS_Swiss(code,dft) /* nothing */
349
350/*
351 * Unlike NRCS, which splices a few characters onto ISO-8859-1, the
352 * supplementary character sets are complete, normally mapped to GR.  Most of
353 * these mappings rely upon glyphs not found in ISO-8859-1.  We can display most
354 * of those using Unicode, thereby supporting specialized applications that use
355 * SCS with luit, subject to the limitation that select/paste will give
356 * meaningless results in terms of the application which uses these mappings.
357 *
358 * Since the codepages introduced with VT320, etc, use 8-bit encodings, there is
359 * no plausible argument to be made that these mappings "use" UTF-8, even though
360 * there is a hidden step in the terminal emulator which relies upon UTF-8.
361 */
362
363#define map_DEC_Supp_Graphic(code,dft) \
364	begin_CODEPAGE(94) \
365	switch (code) { \
366	    XXX(0x24, UNDEF) \
367	    XXX(0x26, UNDEF) \
368	    UNI(0x28, 0x00A4)	/* CURRENCY SIGN */ \
369	    XXX(0x2C, UNDEF) \
370	    XXX(0x2D, UNDEF) \
371	    XXX(0x2E, UNDEF) \
372	    XXX(0x2F, UNDEF) \
373	    XXX(0x34, UNDEF) \
374	    XXX(0x38, UNDEF) \
375	    XXX(0x3E, UNDEF) \
376	    XXX(0x50, UNDEF) \
377	    UNI(0x57, 0x0152)	/* LATIN CAPITAL LIGATURE OE */ \
378	    UNI(0x5D, 0x0178)	/* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \
379	    XXX(0x5E, UNDEF) \
380	    UNI(0x5F, 0x005F) \
381	    XXX(0x70, UNDEF) \
382	    UNI(0x77, 0x0153)	/* LATIN SMALL LIGATURE OE */ \
383	    UNI(0x7D, 0x00FF)	/* LATIN SMALL LETTER Y WITH DIAERESIS */ \
384	    XXX(0x7E, UNDEF) \
385	    default: dft; break; \
386	} \
387	end_CODEPAGE()
388
389#define unmap_DEC_Supp_Graphic(code,dft) \
390	switch (code) { \
391	    MAP(0x24, 0x1B) \
392	    MAP(0x26, 0x1B) \
393	    MAP(0x28, 0xA4)	/* CURRENCY SIGN */ \
394	    MAP(0x2C, 0x1B) \
395	    MAP(0x2D, 0x1B) \
396	    MAP(0x2E, 0x1B) \
397	    MAP(0x2F, 0x1B) \
398	    MAP(0x34, 0x1B) \
399	    MAP(0x38, 0x1B) \
400	    MAP(0x3E, 0x1B) \
401	    MAP(0x50, 0x1B) \
402	    MAP(0x57, 0x97)	/* LATIN CAPITAL LIGATURE OE */ \
403	    MAP(0x5D, 0x98)	/* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \
404	    MAP(0x5E, 0x1B) \
405	    MAP(0x5F, 0xDF) \
406	    MAP(0x70, 0x1B) \
407	    MAP(0x77, 0x99)	/* LATIN SMALL LIGATURE OE */ \
408	    MAP(0x7D, 0xFF)	/* LATIN SMALL LETTER Y WITH DIAERESIS */ \
409	    MAP(0x7E, 0x1B) \
410	    default: dft; break; \
411	}
412
413#if OPT_WIDE_CHARS
414
415/*
416 * derived from http://www.vt100.net/charsets/technical.html
417 */
418#define map_DEC_Technical(code) \
419	begin_CODEPAGE(94) \
420	switch (code) { \
421	    UNI(0x21, 0x23B7)	/* RADICAL SYMBOL BOTTOM Centred left to right, so that it joins up with 02/02 */ \
422	    UNI(0x22, 0x250C)	/* BOX DRAWINGS LIGHT DOWN AND RIGHT */ \
423	    UNI(0x23, 0x2500)	/* BOX DRAWINGS LIGHT HORIZONTAL */ \
424	    UNI(0x24, 0x2320)	/* TOP HALF INTEGRAL with the proviso that the stem is vertical, to join with 02/06 */ \
425	    UNI(0x25, 0x2321)	/* BOTTOM HALF INTEGRAL with the proviso above. */ \
426	    UNI(0x26, 0x2502)	/* BOX DRAWINGS LIGHT VERTICAL */ \
427	    UNI(0x27, 0x23A1)	/* LEFT SQUARE BRACKET UPPER CORNER Joins vertically to 02/06, 02/08. Doesn't join to its right. */ \
428	    UNI(0x28, 0x23A3)	/* LEFT SQUARE BRACKET LOWER CORNER Joins vertically to 02/06, 02/07. Doesn't join to its right. */ \
429	    UNI(0x29, 0x23A4)	/* RIGHT SQUARE BRACKET UPPER CORNER Joins vertically to 026, 02a. Doesn't join to its left. */ \
430	    UNI(0x2A, 0x23A6)	/* RIGHT SQUARE BRACKET LOWER CORNER Joins vertically to 026, 029. Doesn't join to its left. */ \
431	    UNI(0x2B, 0x23A7)	/* LEFT CURLY BRACKET UPPER HOOK Joins vertically to 026, 02c, 02/15. Doesn't join to its right. */ \
432	    UNI(0x2C, 0x23A9)	/* LEFT CURLY BRACKET LOWER HOOK Joins vertically to 026, 02b, 02/15. Doesn't join to its right. */ \
433	    UNI(0x2D, 0x23AB)	/* RIGHT CURLY BRACKET UPPER HOOK Joins vertically to 026, 02e, 03/00. Doesn't join to its left. */ \
434	    UNI(0x2E, 0x23AD)	/* RIGHT CURLY BRACKET LOWER HOOK Joins vertically to 026, 02d, 03/00. Doesn't join to its left. */ \
435	    UNI(0x2F, 0x23A8)	/* LEFT CURLY BRACKET MIDDLE PIECE Joins vertically to 026, 02b, 02c. */ \
436	    UNI(0x30, 0x23AC)	/* RIGHT CURLY BRACKET MIDDLE PIECE Joins vertically to 02/06, 02d, 02e. */ \
437	    XXX(0x31, PUA(0))	/* Top Left Sigma. Joins to right with 02/03, 03/05. Joins diagonally below right with 03/03, 03/07. */ \
438	    XXX(0x32, PUA(1))	/* Bottom Left Sigma. Joins to right with 02/03, 03/06. Joins diagonally above right with 03/04, 03/07. */ \
439	    XXX(0x33, PUA(2))	/* Top Diagonal Sigma. Line for joining 03/01 to 03/04 or 03/07. */ \
440	    XXX(0x34, PUA(3))	/* Bottom Diagonal Sigma. Line for joining 03/02 to 03/03 or 03/07. */ \
441	    XXX(0x35, PUA(4))	/* Top Right Sigma. Joins to left with 02/03, 03/01. */ \
442	    XXX(0x36, PUA(5))	/* Bottom Right Sigma. Joins to left with 02/03, 03/02. */ \
443	    XXX(0x37, PUA(6))	/* Middle Sigma. Joins diagonally with 03/01, 03/02, 03/03, 03/04. */ \
444	    XXX(0x38, UNDEF)	/* undefined */ \
445	    XXX(0x39, UNDEF)	/* undefined */ \
446	    XXX(0x3A, UNDEF)	/* undefined */ \
447	    XXX(0x3B, UNDEF)	/* undefined */ \
448	    UNI(0x3C, 0x2264)	/* LESS-THAN OR EQUAL TO */ \
449	    UNI(0x3D, 0x2260)	/* NOT EQUAL TO */ \
450	    UNI(0x3E, 0x2265)	/* GREATER-THAN OR EQUAL TO */ \
451	    UNI(0x3F, 0x222B)	/* INTEGRAL */ \
452	    UNI(0x40, 0x2234)	/* THEREFORE */ \
453	    UNI(0x41, 0x221D)	/* PROPORTIONAL TO */ \
454	    UNI(0x42, 0x221E)	/* INFINITY */ \
455	    UNI(0x43, 0x00F7)	/* DIVISION SIGN */ \
456	    UNI(0x44, 0x0394)	/* GREEK CAPITAL DELTA */ \
457	    UNI(0x45, 0x2207)	/* NABLA */ \
458	    UNI(0x46, 0x03A6)	/* GREEK CAPITAL LETTER PHI */ \
459	    UNI(0x47, 0x0393)	/* GREEK CAPITAL LETTER GAMMA */ \
460	    UNI(0x48, 0x223C)	/* TILDE OPERATOR */ \
461	    UNI(0x49, 0x2243)	/* ASYMPTOTICALLY EQUAL TO */ \
462	    UNI(0x4A, 0x0398)	/* GREEK CAPITAL LETTER THETA */ \
463	    UNI(0x4B, 0x00D7)	/* MULTIPLICATION SIGN */ \
464	    UNI(0x4C, 0x039B)	/* GREEK CAPITAL LETTER LAMDA */ \
465	    UNI(0x4D, 0x21D4)	/* LEFT RIGHT DOUBLE ARROW */ \
466	    UNI(0x4E, 0x21D2)	/* RIGHTWARDS DOUBLE ARROW */ \
467	    UNI(0x4F, 0x2261)	/* IDENTICAL TO */ \
468	    UNI(0x50, 0x03A0)	/* GREEK CAPITAL LETTER PI */ \
469	    UNI(0x51, 0x03A8)	/* GREEK CAPITAL LETTER PSI */ \
470	    XXX(0x52, UNDEF)	/* undefined */ \
471	    UNI(0x53, 0x03A3)	/* GREEK CAPITAL LETTER SIGMA */ \
472	    XXX(0x54, UNDEF)	/* undefined */ \
473	    XXX(0x55, UNDEF)	/* undefined */ \
474	    UNI(0x56, 0x221A)	/* SQUARE ROOT */ \
475	    UNI(0x57, 0x03A9)	/* GREEK CAPITAL LETTER OMEGA */ \
476	    UNI(0x58, 0x039E)	/* GREEK CAPITAL LETTER XI */ \
477	    UNI(0x59, 0x03A5)	/* GREEK CAPITAL LETTER UPSILON */ \
478	    UNI(0x5A, 0x2282)	/* SUBSET OF */ \
479	    UNI(0x5B, 0x2283)	/* SUPERSET OF */ \
480	    UNI(0x5C, 0x2229)	/* INTERSECTION */ \
481	    UNI(0x5D, 0x222A)	/* UNION */ \
482	    UNI(0x5E, 0x2227)	/* LOGICAL AND */ \
483	    UNI(0x5F, 0x2228)	/* LOGICAL OR */ \
484	    UNI(0x60, 0x00AC)	/* NOT SIGN */ \
485	    UNI(0x61, 0x03B1)	/* GREEK SMALL LETTER ALPHA */ \
486	    UNI(0x62, 0x03B2)	/* GREEK SMALL LETTER BETA */ \
487	    UNI(0x63, 0x03C7)	/* GREEK SMALL LETTER CHI */ \
488	    UNI(0x64, 0x03B4)	/* GREEK SMALL LETTER DELTA */ \
489	    UNI(0x65, 0x03B5)	/* GREEK SMALL LETTER EPSILON */ \
490	    UNI(0x66, 0x03C6)	/* GREEK SMALL LETTER PHI */ \
491	    UNI(0x67, 0x03B3)	/* GREEK SMALL LETTER GAMMA */ \
492	    UNI(0x68, 0x03B7)	/* GREEK SMALL LETTER ETA */ \
493	    UNI(0x69, 0x03B9)	/* GREEK SMALL LETTER IOTA */ \
494	    UNI(0x6A, 0x03B8)	/* GREEK SMALL LETTER THETA */ \
495	    UNI(0x6B, 0x03BA)	/* GREEK SMALL LETTER KAPPA */ \
496	    UNI(0x6C, 0x03BB)	/* GREEK SMALL LETTER LAMDA */ \
497	    XXX(0x6D, UNDEF)	/* undefined */ \
498	    UNI(0x6E, 0x03BD)	/* GREEK SMALL LETTER NU */ \
499	    UNI(0x6F, 0x2202)	/* PARTIAL DIFFERENTIAL */ \
500	    UNI(0x70, 0x03C0)	/* GREEK SMALL LETTER PI */ \
501	    UNI(0x71, 0x03C8)	/* GREEK SMALL LETTER PSI */ \
502	    UNI(0x72, 0x03C1)	/* GREEK SMALL LETTER RHO */ \
503	    UNI(0x73, 0x03C3)	/* GREEK SMALL LETTER SIGMA */ \
504	    UNI(0x74, 0x03C4)	/* GREEK SMALL LETTER TAU */ \
505	    XXX(0x75, UNDEF)	/* undefined */ \
506	    UNI(0x76, 0x0192)	/* LATIN SMALL LETTER F WITH HOOK Probably chosen for its meaning of "function" */ \
507	    UNI(0x77, 0x03C9)	/* GREEK SMALL LETTER OMEGA */ \
508	    UNI(0x78, 0x03BE)	/* GREEK SMALL LETTER XI */ \
509	    UNI(0x79, 0x03C5)	/* GREEK SMALL LETTER UPSILON */ \
510	    UNI(0x7A, 0x03B6)	/* GREEK SMALL LETTER ZETA */ \
511	    UNI(0x7B, 0x2190)	/* LEFTWARDS ARROW */ \
512	    UNI(0x7C, 0x2191)	/* UPWARDS ARROW */ \
513	    UNI(0x7D, 0x2192)	/* RIGHTWARDS ARROW */ \
514	    UNI(0x7E, 0x2193)	/* DOWNWARDS ARROW */ \
515	} \
516	end_CODEPAGE()
517
518#define unmap_DEC_Technical(code,dft) \
519	switch (code) { \
520	    MAP(0x21, 0xD5)	/* RADICAL SYMBOL BOTTOM Centred left to right, so that it joins up with 02/02 */ \
521	    MAP(0x22, 0xD6)	/* BOX DRAWINGS LIGHT DOWN AND RIGHT */ \
522	    MAP(0x23, 0x1D)	/* BOX DRAWINGS LIGHT HORIZONTAL */ \
523	    MAP(0x24, 0xD7)	/* TOP HALF INTEGRAL with the proviso that the stem is vertical, to join with 02/06 */ \
524	    MAP(0x25, 0xD8)	/* BOTTOM HALF INTEGRAL with the proviso above. */ \
525	    MAP(0x26, 0x84)	/* BOX DRAWINGS LIGHT VERTICAL */ \
526	    MAP(0x27, 0xD9)	/* LEFT SQUARE BRACKET UPPER CORNER Joins vertically to 02/06, 02/08. Doesn't join to its right. */ \
527	    MAP(0x28, 0xDA)	/* LEFT SQUARE BRACKET LOWER CORNER Joins vertically to 02/06, 02/07. Doesn't join to its right. */ \
528	    MAP(0x29, 0xDB)	/* RIGHT SQUARE BRACKET UPPER CORNER Joins vertically to 026, 02a. Doesn't join to its left. */ \
529	    MAP(0x2A, 0xDC)	/* RIGHT SQUARE BRACKET LOWER CORNER Joins vertically to 026, 029. Doesn't join to its left. */ \
530	    MAP(0x2B, 0xDD)	/* LEFT CURLY BRACKET UPPER HOOK Joins vertically to 026, 02c, 02/15. Doesn't join to its right. */ \
531	    MAP(0x2C, 0xDE)	/* LEFT CURLY BRACKET LOWER HOOK Joins vertically to 026, 02b, 02/15. Doesn't join to its right. */ \
532	    MAP(0x2D, 0xDF)	/* RIGHT CURLY BRACKET UPPER HOOK Joins vertically to 026, 02e, 03/00. Doesn't join to its left. */ \
533	    MAP(0x2E, 0xE0)	/* RIGHT CURLY BRACKET LOWER HOOK Joins vertically to 026, 02d, 03/00. Doesn't join to its left. */ \
534	    MAP(0x2F, 0xE1)	/* LEFT CURLY BRACKET MIDDLE PIECE Joins vertically to 026, 02b, 02c. */ \
535	    MAP(0x30, 0xE2)	/* RIGHT CURLY BRACKET MIDDLE PIECE Joins vertically to 02/06, 02d, 02e. */ \
536	    MAP(0x31, 0xE3)	/* Top Left Sigma. Joins to right with 02/03, 03/05. Joins diagonally below right with 03/03, 03/07. */ \
537	    MAP(0x32, 0xE4)	/* Bottom Left Sigma. Joins to right with 02/03, 03/06. Joins diagonally above right with 03/04, 03/07. */ \
538	    MAP(0x33, 0xE5)	/* Top Diagonal Sigma. Line for joining 03/01 to 03/04 or 03/07. */ \
539	    MAP(0x34, 0xE6)	/* Bottom Diagonal Sigma. Line for joining 03/02 to 03/03 or 03/07. */ \
540	    MAP(0x35, 0xE7)	/* Top Right Sigma. Joins to left with 02/03, 03/01. */ \
541	    MAP(0x36, 0xE8)	/* Bottom Right Sigma. Joins to left with 02/03, 03/02. */ \
542	    MAP(0x37, 0xE9)	/* Middle Sigma. Joins diagonally with 03/01, 03/02, 03/03, 03/04. */ \
543	    MAP(0x38, 0x1B)	/* undefined */ \
544	    MAP(0x39, 0x1B)	/* undefined */ \
545	    MAP(0x3A, 0x1B)	/* undefined */ \
546	    MAP(0x3B, 0x1B)	/* undefined */ \
547	    MAP(0x3C, 0x85)	/* LESS-THAN OR EQUAL TO */ \
548	    MAP(0x3D, 0x87)	/* NOT EQUAL TO */ \
549	    MAP(0x3E, 0x86)	/* GREATER-THAN OR EQUAL TO */ \
550	    MAP(0x3F, 0xEA)	/* INTEGRAL */ \
551	    MAP(0x40, 0xEB)	/* THEREFORE */ \
552	    MAP(0x41, 0xEC)	/* PROPORTIONAL TO */ \
553	    MAP(0x42, 0xED)	/* INFINITY */ \
554	    MAP(0x43, 0xF7)	/* DIVISION SIGN */ \
555	    MAP(0x44, 0xEE)	/* GREEK CAPITAL DELTA */ \
556	    MAP(0x45, 0xEF)	/* NABLA */ \
557	    MAP(0x46, 0xAC)	/* GREEK CAPITAL LETTER PHI */ \
558	    MAP(0x47, 0x78)	/* GREEK CAPITAL LETTER GAMMA */ \
559	    MAP(0x48, 0xF0)	/* TILDE OPERATOR */ \
560	    MAP(0x49, 0xF1)	/* ASYMPTOTICALLY EQUAL TO */ \
561	    MAP(0x4A, 0x7D)	/* GREEK CAPITAL LETTER THETA */ \
562	    MAP(0x4B, 0xD7)	/* MULTIPLICATION SIGN */ \
563	    MAP(0x4C, 0xA2)	/* GREEK CAPITAL LETTER LAMDA */ \
564	    MAP(0x4D, 0xF2)	/* LEFT RIGHT DOUBLE ARROW */ \
565	    MAP(0x4E, 0xF3)	/* RIGHTWARDS DOUBLE ARROW */ \
566	    MAP(0x4F, 0xF4)	/* IDENTICAL TO */ \
567	    MAP(0x50, 0xA7)	/* GREEK CAPITAL LETTER PI */ \
568	    MAP(0x51, 0xAE)	/* GREEK CAPITAL LETTER PSI */ \
569	    MAP(0x52, 0x1B)	/* undefined */ \
570	    MAP(0x53, 0xA9)	/* GREEK CAPITAL LETTER SIGMA */ \
571	    MAP(0x54, 0x1B)	/* undefined */ \
572	    MAP(0x55, 0x1B)	/* undefined */ \
573	    MAP(0x56, 0xF5)	/* SQUARE ROOT */ \
574	    MAP(0x57, 0xAF)	/* GREEK CAPITAL LETTER OMEGA */ \
575	    MAP(0x58, 0xA5)	/* GREEK CAPITAL LETTER XI */ \
576	    MAP(0x59, 0xAB)	/* GREEK CAPITAL LETTER UPSILON */ \
577	    MAP(0x5A, 0xF6)	/* SUBSET OF */ \
578	    MAP(0x5B, 0xF7)	/* SUPERSET OF */ \
579	    MAP(0x5C, 0xF8)	/* INTERSECTION */ \
580	    MAP(0x5D, 0xF9)	/* UNION */ \
581	    MAP(0x5E, 0xFA)	/* LOGICAL AND */ \
582	    MAP(0x5F, 0xFB)	/* LOGICAL OR */ \
583	    MAP(0x60, 0xAC)	/* NOT SIGN */ \
584	    MAP(0x61, 0xB7)	/* GREEK SMALL LETTER ALPHA */ \
585	    MAP(0x62, 0xB8)	/* GREEK SMALL LETTER BETA */ \
586	    MAP(0x63, 0xCD)	/* GREEK SMALL LETTER CHI */ \
587	    MAP(0x64, 0xBA)	/* GREEK SMALL LETTER DELTA */ \
588	    MAP(0x65, 0xBB)	/* GREEK SMALL LETTER EPSILON */ \
589	    MAP(0x66, 0xCC)	/* GREEK SMALL LETTER PHI */ \
590	    MAP(0x67, 0xB9)	/* GREEK SMALL LETTER GAMMA */ \
591	    MAP(0x68, 0xBD)	/* GREEK SMALL LETTER ETA */ \
592	    MAP(0x69, 0xBF)	/* GREEK SMALL LETTER IOTA */ \
593	    MAP(0x6A, 0xBE)	/* GREEK SMALL LETTER THETA */ \
594	    MAP(0x6B, 0xC0)	/* GREEK SMALL LETTER KAPPA */ \
595	    MAP(0x6C, 0xC1)	/* GREEK SMALL LETTER LAMDA */ \
596	    MAP(0x6D, 0x1B)	/* undefined */ \
597	    MAP(0x6E, 0xC3)	/* GREEK SMALL LETTER NU */ \
598	    MAP(0x6F, 0xFC)	/* PARTIAL DIFFERENTIAL */ \
599	    MAP(0x70, 0xC6)	/* GREEK SMALL LETTER PI */ \
600	    MAP(0x71, 0xCE)	/* GREEK SMALL LETTER PSI */ \
601	    MAP(0x72, 0xC7)	/* GREEK SMALL LETTER RHO */ \
602	    MAP(0x73, 0xC9)	/* GREEK SMALL LETTER SIGMA */ \
603	    MAP(0x74, 0xCA)	/* GREEK SMALL LETTER TAU */ \
604	    MAP(0x75, 0x1B)	/* undefined */ \
605	    MAP(0x76, 0xFD)	/* LATIN SMALL LETTER F WITH HOOK Probably chosen for its meaning of "function" */ \
606	    MAP(0x77, 0xCF)	/* GREEK SMALL LETTER OMEGA */ \
607	    MAP(0x78, 0xC4)	/* GREEK SMALL LETTER XI */ \
608	    MAP(0x79, 0xCB)	/* GREEK SMALL LETTER UPSILON */ \
609	    MAP(0x7A, 0xBC)	/* GREEK SMALL LETTER ZETA */ \
610	    MAP(0x7B, 0xFE)	/* LEFTWARDS ARROW */ \
611	    MAP(0x7C, 0xFF)	/* UPWARDS ARROW */ \
612	    MAP(0x7D, 0x100)	/* RIGHTWARDS ARROW */ \
613	    MAP(0x7E, 0x02)	/* DOWNWARDS ARROW */ \
614	    default: dft; break; \
615	}
616
617#define map_JIS_Roman(code) \
618	begin_CODEPAGE(94) \
619	switch (code) { \
620	    UNI(0x5C, 0x00A5)	/* YEN SIGN */ \
621	    UNI(0x7E, 0x203E)	/* OVERLINE */ \
622	} \
623	end_CODEPAGE()
624
625#define unmap_JIS_Roman(code,dft) /* nothing */
626
627/*
628 * Documented as if only GR, but encoded here to allow assignment to GL and GR.
629 */
630#define map_JIS_Katakana(code) \
631	begin_CODEPAGE(94) \
632	switch (code) { \
633	    UNI(0x21, 0xFF61)	/* HALFWIDTH IDEOGRAPHIC FULL STOP */ \
634	    UNI(0x22, 0xFF62)	/* HALFWIDTH LEFT CORNER BRACKET */ \
635	    UNI(0x23, 0xFF63)	/* HALFWIDTH RIGHT CORNER BRACKET */ \
636	    UNI(0x24, 0xFF64)	/* HALFWIDTH IDEOGRAPHIC COMMA */ \
637	    UNI(0x25, 0xFF65)	/* HALFWIDTH KATAKANA MIDDLE DOT */ \
638	    UNI(0x26, 0xFF66)	/* HALFWIDTH KATAKANA LETTER WO */ \
639	    UNI(0x27, 0xFF67)	/* HALFWIDTH KATAKANA LETTER SMALL A */ \
640	    UNI(0x28, 0xFF68)	/* HALFWIDTH KATAKANA LETTER SMALL I */ \
641	    UNI(0x29, 0xFF69)	/* HALFWIDTH KATAKANA LETTER SMALL U */ \
642	    UNI(0x2A, 0xFF6A)	/* HALFWIDTH KATAKANA LETTER SMALL E */ \
643	    UNI(0x2B, 0xFF6B)	/* HALFWIDTH KATAKANA LETTER SMALL O */ \
644	    UNI(0x2C, 0xFF6C)	/* HALFWIDTH KATAKANA LETTER SMALL YA */ \
645	    UNI(0x2D, 0xFF6D)	/* HALFWIDTH KATAKANA LETTER SMALL YU */ \
646	    UNI(0x2E, 0xFF6E)	/* HALFWIDTH KATAKANA LETTER SMALL YO */ \
647	    UNI(0x2F, 0xFF6F)	/* HALFWIDTH KATAKANA LETTER SMALL TU */ \
648	    UNI(0x30, 0xFF70)	/* HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK */ \
649	    UNI(0x31, 0xFF71)	/* HALFWIDTH KATAKANA LETTER A */ \
650	    UNI(0x32, 0xFF72)	/* HALFWIDTH KATAKANA LETTER I */ \
651	    UNI(0x33, 0xFF73)	/* HALFWIDTH KATAKANA LETTER U */ \
652	    UNI(0x34, 0xFF74)	/* HALFWIDTH KATAKANA LETTER E */ \
653	    UNI(0x35, 0xFF75)	/* HALFWIDTH KATAKANA LETTER O */ \
654	    UNI(0x36, 0xFF76)	/* HALFWIDTH KATAKANA LETTER KA */ \
655	    UNI(0x37, 0xFF77)	/* HALFWIDTH KATAKANA LETTER KI */ \
656	    UNI(0x38, 0xFF78)	/* HALFWIDTH KATAKANA LETTER KU */ \
657	    UNI(0x39, 0xFF79)	/* HALFWIDTH KATAKANA LETTER KE */ \
658	    UNI(0x3A, 0xFF7A)	/* HALFWIDTH KATAKANA LETTER KO */ \
659	    UNI(0x3B, 0xFF7B)	/* HALFWIDTH KATAKANA LETTER SA */ \
660	    UNI(0x3C, 0xFF7C)	/* HALFWIDTH KATAKANA LETTER SI */ \
661	    UNI(0x3D, 0xFF7D)	/* HALFWIDTH KATAKANA LETTER SU */ \
662	    UNI(0x3E, 0xFF7E)	/* HALFWIDTH KATAKANA LETTER SE */ \
663	    UNI(0x3F, 0xFF7F)	/* HALFWIDTH KATAKANA LETTER SO */ \
664	    UNI(0x40, 0xFF80)	/* HALFWIDTH KATAKANA LETTER TA */ \
665	    UNI(0x41, 0xFF81)	/* HALFWIDTH KATAKANA LETTER TI */ \
666	    UNI(0x42, 0xFF82)	/* HALFWIDTH KATAKANA LETTER TU */ \
667	    UNI(0x43, 0xFF83)	/* HALFWIDTH KATAKANA LETTER TE */ \
668	    UNI(0x44, 0xFF84)	/* HALFWIDTH KATAKANA LETTER TO */ \
669	    UNI(0x45, 0xFF85)	/* HALFWIDTH KATAKANA LETTER NA */ \
670	    UNI(0x46, 0xFF86)	/* HALFWIDTH KATAKANA LETTER NI */ \
671	    UNI(0x47, 0xFF87)	/* HALFWIDTH KATAKANA LETTER NU */ \
672	    UNI(0x48, 0xFF88)	/* HALFWIDTH KATAKANA LETTER NE */ \
673	    UNI(0x49, 0xFF89)	/* HALFWIDTH KATAKANA LETTER NO */ \
674	    UNI(0x4A, 0xFF8A)	/* HALFWIDTH KATAKANA LETTER HA */ \
675	    UNI(0x4B, 0xFF8B)	/* HALFWIDTH KATAKANA LETTER HI */ \
676	    UNI(0x4C, 0xFF8C)	/* HALFWIDTH KATAKANA LETTER HU */ \
677	    UNI(0x4D, 0xFF8D)	/* HALFWIDTH KATAKANA LETTER HE */ \
678	    UNI(0x4E, 0xFF8E)	/* HALFWIDTH KATAKANA LETTER HO */ \
679	    UNI(0x4F, 0xFF8F)	/* HALFWIDTH KATAKANA LETTER MA */ \
680	    UNI(0x50, 0xFF90)	/* HALFWIDTH KATAKANA LETTER MI */ \
681	    UNI(0x51, 0xFF91)	/* HALFWIDTH KATAKANA LETTER MU */ \
682	    UNI(0x52, 0xFF92)	/* HALFWIDTH KATAKANA LETTER ME */ \
683	    UNI(0x53, 0xFF93)	/* HALFWIDTH KATAKANA LETTER MO */ \
684	    UNI(0x54, 0xFF94)	/* HALFWIDTH KATAKANA LETTER YA */ \
685	    UNI(0x55, 0xFF95)	/* HALFWIDTH KATAKANA LETTER YU */ \
686	    UNI(0x56, 0xFF96)	/* HALFWIDTH KATAKANA LETTER YO */ \
687	    UNI(0x57, 0xFF97)	/* HALFWIDTH KATAKANA LETTER RA */ \
688	    UNI(0x58, 0xFF98)	/* HALFWIDTH KATAKANA LETTER RI */ \
689	    UNI(0x59, 0xFF99)	/* HALFWIDTH KATAKANA LETTER RU */ \
690	    UNI(0x5A, 0xFF9A)	/* HALFWIDTH KATAKANA LETTER RE */ \
691	    UNI(0x5B, 0xFF9B)	/* HALFWIDTH KATAKANA LETTER RO */ \
692	    UNI(0x5C, 0xFF9C)	/* HALFWIDTH KATAKANA LETTER WA */ \
693	    UNI(0x5D, 0xFF9D)	/* HALFWIDTH KATAKANA LETTER N */ \
694	    UNI(0x5E, 0xFF9E)	/* HALFWIDTH KATAKANA VOICED SOUND MARK */ \
695	    UNI(0x5F, 0xFF9F)	/* HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK */ \
696	    XXX(0x60, UNDEF) \
697	    XXX(0x61, UNDEF) \
698	    XXX(0x62, UNDEF) \
699	    XXX(0x63, UNDEF) \
700	    XXX(0x64, UNDEF) \
701	    XXX(0x65, UNDEF) \
702	    XXX(0x66, UNDEF) \
703	    XXX(0x67, UNDEF) \
704	    XXX(0x68, UNDEF) \
705	    XXX(0x69, UNDEF) \
706	    XXX(0x6A, UNDEF) \
707	    XXX(0x6B, UNDEF) \
708	    XXX(0x6C, UNDEF) \
709	    XXX(0x6D, UNDEF) \
710	    XXX(0x6E, UNDEF) \
711	    XXX(0x6F, UNDEF) \
712	    XXX(0x70, UNDEF) \
713	    XXX(0x71, UNDEF) \
714	    XXX(0x72, UNDEF) \
715	    XXX(0x73, UNDEF) \
716	    XXX(0x74, UNDEF) \
717	    XXX(0x75, UNDEF) \
718	    XXX(0x76, UNDEF) \
719	    XXX(0x77, UNDEF) \
720	    XXX(0x78, UNDEF) \
721	    XXX(0x79, UNDEF) \
722	    XXX(0x7A, UNDEF) \
723	    XXX(0x7B, UNDEF) \
724	    XXX(0x7C, UNDEF) \
725	    XXX(0x7D, UNDEF) \
726	} \
727	end_CODEPAGE()
728
729#define unmap_JIS_Katakana(code,dft) /* nothing */
730
731/*
732 * ISO Latin/Cyrillic is 8859-5
733 */
734#define map_ISO_Latin_Cyrillic(code) \
735	begin_CODEPAGE(96) \
736	switch (code) { \
737	    UNI(0x20, 0x00A0)	/* NO-BREAK SPACE */ \
738	    UNI(0x21, 0x0401)	/* CYRILLIC CAPITAL LETTER IO */ \
739	    UNI(0x22, 0x0402)	/* CYRILLIC CAPITAL LETTER DJE */ \
740	    UNI(0x23, 0x0403)	/* CYRILLIC CAPITAL LETTER GJE */ \
741	    UNI(0x24, 0x0404)	/* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \
742	    UNI(0x25, 0x0405)	/* CYRILLIC CAPITAL LETTER DZE */ \
743	    UNI(0x26, 0x0406)	/* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \
744	    UNI(0x27, 0x0407)	/* CYRILLIC CAPITAL LETTER YI */ \
745	    UNI(0x28, 0x0408)	/* CYRILLIC CAPITAL LETTER JE */ \
746	    UNI(0x29, 0x0409)	/* CYRILLIC CAPITAL LETTER LJE */ \
747	    UNI(0x2A, 0x040A)	/* CYRILLIC CAPITAL LETTER NJE */ \
748	    UNI(0x2B, 0x040B)	/* CYRILLIC CAPITAL LETTER TSHE */ \
749	    UNI(0x2C, 0x040C)	/* CYRILLIC CAPITAL LETTER KJE */ \
750	    UNI(0x2D, 0x00AD)	/* SOFT HYPHEN */ \
751	    UNI(0x2E, 0x040E)	/* CYRILLIC CAPITAL LETTER SHORT U */ \
752	    UNI(0x2F, 0x040F)	/* CYRILLIC CAPITAL LETTER DZHE */ \
753	    UNI(0x30, 0x0410)	/* CYRILLIC CAPITAL LETTER A */ \
754	    UNI(0x31, 0x0411)	/* CYRILLIC CAPITAL LETTER BE */ \
755	    UNI(0x32, 0x0412)	/* CYRILLIC CAPITAL LETTER VE */ \
756	    UNI(0x33, 0x0413)	/* CYRILLIC CAPITAL LETTER GHE */ \
757	    UNI(0x34, 0x0414)	/* CYRILLIC CAPITAL LETTER DE */ \
758	    UNI(0x35, 0x0415)	/* CYRILLIC CAPITAL LETTER IE */ \
759	    UNI(0x36, 0x0416)	/* CYRILLIC CAPITAL LETTER ZHE */ \
760	    UNI(0x37, 0x0417)	/* CYRILLIC CAPITAL LETTER ZE */ \
761	    UNI(0x38, 0x0418)	/* CYRILLIC CAPITAL LETTER I */ \
762	    UNI(0x39, 0x0419)	/* CYRILLIC CAPITAL LETTER SHORT I */ \
763	    UNI(0x3A, 0x041A)	/* CYRILLIC CAPITAL LETTER KA */ \
764	    UNI(0x3B, 0x041B)	/* CYRILLIC CAPITAL LETTER EL */ \
765	    UNI(0x3C, 0x041C)	/* CYRILLIC CAPITAL LETTER EM */ \
766	    UNI(0x3D, 0x041D)	/* CYRILLIC CAPITAL LETTER EN */ \
767	    UNI(0x3E, 0x041E)	/* CYRILLIC CAPITAL LETTER O */ \
768	    UNI(0x3F, 0x041F)	/* CYRILLIC CAPITAL LETTER PE */ \
769	    UNI(0x40, 0x0420)	/* CYRILLIC CAPITAL LETTER ER */ \
770	    UNI(0x41, 0x0421)	/* CYRILLIC CAPITAL LETTER ES */ \
771	    UNI(0x42, 0x0422)	/* CYRILLIC CAPITAL LETTER TE */ \
772	    UNI(0x43, 0x0423)	/* CYRILLIC CAPITAL LETTER U */ \
773	    UNI(0x44, 0x0424)	/* CYRILLIC CAPITAL LETTER EF */ \
774	    UNI(0x45, 0x0425)	/* CYRILLIC CAPITAL LETTER HA */ \
775	    UNI(0x46, 0x0426)	/* CYRILLIC CAPITAL LETTER TSE */ \
776	    UNI(0x47, 0x0427)	/* CYRILLIC CAPITAL LETTER CHE */ \
777	    UNI(0x48, 0x0428)	/* CYRILLIC CAPITAL LETTER SHA */ \
778	    UNI(0x49, 0x0429)	/* CYRILLIC CAPITAL LETTER SHCHA */ \
779	    UNI(0x4A, 0x042A)	/* CYRILLIC CAPITAL LETTER HARD SIGN */ \
780	    UNI(0x4B, 0x042B)	/* CYRILLIC CAPITAL LETTER YERU */ \
781	    UNI(0x4C, 0x042C)	/* CYRILLIC CAPITAL LETTER SOFT SIGN */ \
782	    UNI(0x4D, 0x042D)	/* CYRILLIC CAPITAL LETTER E */ \
783	    UNI(0x4E, 0x042E)	/* CYRILLIC CAPITAL LETTER YU */ \
784	    UNI(0x4F, 0x042F)	/* CYRILLIC CAPITAL LETTER YA */ \
785	    UNI(0x50, 0x0430)	/* CYRILLIC SMALL LETTER A */ \
786	    UNI(0x51, 0x0431)	/* CYRILLIC SMALL LETTER BE */ \
787	    UNI(0x52, 0x0432)	/* CYRILLIC SMALL LETTER VE */ \
788	    UNI(0x53, 0x0433)	/* CYRILLIC SMALL LETTER GHE */ \
789	    UNI(0x54, 0x0434)	/* CYRILLIC SMALL LETTER DE */ \
790	    UNI(0x55, 0x0435)	/* CYRILLIC SMALL LETTER IE */ \
791	    UNI(0x56, 0x0436)	/* CYRILLIC SMALL LETTER ZHE */ \
792	    UNI(0x57, 0x0437)	/* CYRILLIC SMALL LETTER ZE */ \
793	    UNI(0x58, 0x0438)	/* CYRILLIC SMALL LETTER I */ \
794	    UNI(0x59, 0x0439)	/* CYRILLIC SMALL LETTER SHORT I */ \
795	    UNI(0x5A, 0x043A)	/* CYRILLIC SMALL LETTER KA */ \
796	    UNI(0x5B, 0x043B)	/* CYRILLIC SMALL LETTER EL */ \
797	    UNI(0x5C, 0x043C)	/* CYRILLIC SMALL LETTER EM */ \
798	    UNI(0x5D, 0x043D)	/* CYRILLIC SMALL LETTER EN */ \
799	    UNI(0x5E, 0x043E)	/* CYRILLIC SMALL LETTER O */ \
800	    UNI(0x5F, 0x043F)	/* CYRILLIC SMALL LETTER PE */ \
801	    UNI(0x60, 0x0440)	/* CYRILLIC SMALL LETTER ER */ \
802	    UNI(0x61, 0x0441)	/* CYRILLIC SMALL LETTER ES */ \
803	    UNI(0x62, 0x0442)	/* CYRILLIC SMALL LETTER TE */ \
804	    UNI(0x63, 0x0443)	/* CYRILLIC SMALL LETTER U */ \
805	    UNI(0x64, 0x0444)	/* CYRILLIC SMALL LETTER EF */ \
806	    UNI(0x65, 0x0445)	/* CYRILLIC SMALL LETTER HA */ \
807	    UNI(0x66, 0x0446)	/* CYRILLIC SMALL LETTER TSE */ \
808	    UNI(0x67, 0x0447)	/* CYRILLIC SMALL LETTER CHE */ \
809	    UNI(0x68, 0x0448)	/* CYRILLIC SMALL LETTER SHA */ \
810	    UNI(0x69, 0x0449)	/* CYRILLIC SMALL LETTER SHCHA */ \
811	    UNI(0x6A, 0x044A)	/* CYRILLIC SMALL LETTER HARD SIGN */ \
812	    UNI(0x6B, 0x044B)	/* CYRILLIC SMALL LETTER YERU */ \
813	    UNI(0x6C, 0x044C)	/* CYRILLIC SMALL LETTER SOFT SIGN */ \
814	    UNI(0x6D, 0x044D)	/* CYRILLIC SMALL LETTER E */ \
815	    UNI(0x6E, 0x044E)	/* CYRILLIC SMALL LETTER YU */ \
816	    UNI(0x6F, 0x044F)	/* CYRILLIC SMALL LETTER YA */ \
817	    UNI(0x70, 0x2116)	/* NUMERO SIGN */ \
818	    UNI(0x71, 0x0451)	/* CYRILLIC SMALL LETTER IO */ \
819	    UNI(0x72, 0x0452)	/* CYRILLIC SMALL LETTER DJE */ \
820	    UNI(0x73, 0x0453)	/* CYRILLIC SMALL LETTER GJE */ \
821	    UNI(0x74, 0x0454)	/* CYRILLIC SMALL LETTER UKRAINIAN IE */ \
822	    UNI(0x75, 0x0455)	/* CYRILLIC SMALL LETTER DZE */ \
823	    UNI(0x76, 0x0456)	/* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \
824	    UNI(0x77, 0x0457)	/* CYRILLIC SMALL LETTER YI */ \
825	    UNI(0x78, 0x0458)	/* CYRILLIC SMALL LETTER JE */ \
826	    UNI(0x79, 0x0459)	/* CYRILLIC SMALL LETTER LJE */ \
827	    UNI(0x7A, 0x045A)	/* CYRILLIC SMALL LETTER NJE */ \
828	    UNI(0x7B, 0x045B)	/* CYRILLIC SMALL LETTER TSHE */ \
829	    UNI(0x7C, 0x045C)	/* CYRILLIC SMALL LETTER KJE */ \
830	    UNI(0x7D, 0x00A7)	/* SECTION SIGN */ \
831	    UNI(0x7E, 0x045E)	/* CYRILLIC SMALL LETTER SHORT U */ \
832	    UNI(0x7F, 0x045F)	/* CYRILLIC SMALL LETTER DZHE */ \
833	} \
834	end_CODEPAGE()
835
836#define unmap_ISO_Latin_Cyrillic(code,dft) \
837	switch (code) { \
838	    MAP(0x21, 0x03)	/* CYRILLIC CAPITAL LETTER IO */ \
839	    MAP(0x22, 0x04)	/* CYRILLIC CAPITAL LETTER DJE */ \
840	    MAP(0x23, 0x05)	/* CYRILLIC CAPITAL LETTER GJE */ \
841	    MAP(0x24, 0x06)	/* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \
842	    MAP(0x25, 0x07)	/* CYRILLIC CAPITAL LETTER DZE */ \
843	    MAP(0x26, 0x08)	/* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \
844	    MAP(0x27, 0x09)	/* CYRILLIC CAPITAL LETTER YI */ \
845	    MAP(0x28, 0x0A)	/* CYRILLIC CAPITAL LETTER JE */ \
846	    MAP(0x29, 0x0B)	/* CYRILLIC CAPITAL LETTER LJE */ \
847	    MAP(0x2A, 0x0C)	/* CYRILLIC CAPITAL LETTER NJE */ \
848	    MAP(0x2B, 0x0D)	/* CYRILLIC CAPITAL LETTER TSHE */ \
849	    MAP(0x2C, 0x0E)	/* CYRILLIC CAPITAL LETTER KJE */ \
850	    MAP(0x2E, 0x0F)	/* CYRILLIC CAPITAL LETTER SHORT U */ \
851	    MAP(0x2F, 0x10)	/* CYRILLIC CAPITAL LETTER DZHE */ \
852	    MAP(0x30, 0x11)	/* CYRILLIC CAPITAL LETTER A */ \
853	    MAP(0x31, 0x12)	/* CYRILLIC CAPITAL LETTER BE */ \
854	    MAP(0x32, 0x13)	/* CYRILLIC CAPITAL LETTER VE */ \
855	    MAP(0x33, 0x14)	/* CYRILLIC CAPITAL LETTER GHE */ \
856	    MAP(0x34, 0x15)	/* CYRILLIC CAPITAL LETTER DE */ \
857	    MAP(0x35, 0x16)	/* CYRILLIC CAPITAL LETTER IE */ \
858	    MAP(0x36, 0x17)	/* CYRILLIC CAPITAL LETTER ZHE */ \
859	    MAP(0x37, 0x18)	/* CYRILLIC CAPITAL LETTER ZE */ \
860	    MAP(0x38, 0x19)	/* CYRILLIC CAPITAL LETTER I */ \
861	    MAP(0x39, 0x1A)	/* CYRILLIC CAPITAL LETTER SHORT I */ \
862	    MAP(0x3A, 0x1B)	/* CYRILLIC CAPITAL LETTER KA */ \
863	    MAP(0x3B, 0x1C)	/* CYRILLIC CAPITAL LETTER EL */ \
864	    MAP(0x3C, 0x1D)	/* CYRILLIC CAPITAL LETTER EM */ \
865	    MAP(0x3D, 0x1E)	/* CYRILLIC CAPITAL LETTER EN */ \
866	    MAP(0x3E, 0x1F)	/* CYRILLIC CAPITAL LETTER O */ \
867	    MAP(0x3F, 0x20)	/* CYRILLIC CAPITAL LETTER PE */ \
868	    MAP(0x40, 0x21)	/* CYRILLIC CAPITAL LETTER ER */ \
869	    MAP(0x41, 0x22)	/* CYRILLIC CAPITAL LETTER ES */ \
870	    MAP(0x42, 0x23)	/* CYRILLIC CAPITAL LETTER TE */ \
871	    MAP(0x43, 0x24)	/* CYRILLIC CAPITAL LETTER U */ \
872	    MAP(0x44, 0x25)	/* CYRILLIC CAPITAL LETTER EF */ \
873	    MAP(0x45, 0x26)	/* CYRILLIC CAPITAL LETTER HA */ \
874	    MAP(0x46, 0x27)	/* CYRILLIC CAPITAL LETTER TSE */ \
875	    MAP(0x47, 0x28)	/* CYRILLIC CAPITAL LETTER CHE */ \
876	    MAP(0x48, 0x29)	/* CYRILLIC CAPITAL LETTER SHA */ \
877	    MAP(0x49, 0x2A)	/* CYRILLIC CAPITAL LETTER SHCHA */ \
878	    MAP(0x4A, 0x2B)	/* CYRILLIC CAPITAL LETTER HARD SIGN */ \
879	    MAP(0x4B, 0x2C)	/* CYRILLIC CAPITAL LETTER YERU */ \
880	    MAP(0x4C, 0x2D)	/* CYRILLIC CAPITAL LETTER SOFT SIGN */ \
881	    MAP(0x4D, 0x2E)	/* CYRILLIC CAPITAL LETTER E */ \
882	    MAP(0x4E, 0x2F)	/* CYRILLIC CAPITAL LETTER YU */ \
883	    MAP(0x4F, 0x30)	/* CYRILLIC CAPITAL LETTER YA */ \
884	    MAP(0x50, 0x31)	/* CYRILLIC SMALL LETTER A */ \
885	    MAP(0x51, 0x32)	/* CYRILLIC SMALL LETTER BE */ \
886	    MAP(0x52, 0x33)	/* CYRILLIC SMALL LETTER VE */ \
887	    MAP(0x53, 0x34)	/* CYRILLIC SMALL LETTER GHE */ \
888	    MAP(0x54, 0x35)	/* CYRILLIC SMALL LETTER DE */ \
889	    MAP(0x55, 0x36)	/* CYRILLIC SMALL LETTER IE */ \
890	    MAP(0x56, 0x37)	/* CYRILLIC SMALL LETTER ZHE */ \
891	    MAP(0x57, 0x38)	/* CYRILLIC SMALL LETTER ZE */ \
892	    MAP(0x58, 0x39)	/* CYRILLIC SMALL LETTER I */ \
893	    MAP(0x59, 0x3A)	/* CYRILLIC SMALL LETTER SHORT I */ \
894	    MAP(0x5A, 0x3B)	/* CYRILLIC SMALL LETTER KA */ \
895	    MAP(0x5B, 0x3C)	/* CYRILLIC SMALL LETTER EL */ \
896	    MAP(0x5C, 0x3D)	/* CYRILLIC SMALL LETTER EM */ \
897	    MAP(0x5D, 0x3E)	/* CYRILLIC SMALL LETTER EN */ \
898	    MAP(0x5E, 0x3F)	/* CYRILLIC SMALL LETTER O */ \
899	    MAP(0x5F, 0x40)	/* CYRILLIC SMALL LETTER PE */ \
900	    MAP(0x60, 0x41)	/* CYRILLIC SMALL LETTER ER */ \
901	    MAP(0x61, 0x42)	/* CYRILLIC SMALL LETTER ES */ \
902	    MAP(0x62, 0x43)	/* CYRILLIC SMALL LETTER TE */ \
903	    MAP(0x63, 0x44)	/* CYRILLIC SMALL LETTER U */ \
904	    MAP(0x64, 0x45)	/* CYRILLIC SMALL LETTER EF */ \
905	    MAP(0x65, 0x46)	/* CYRILLIC SMALL LETTER HA */ \
906	    MAP(0x66, 0x47)	/* CYRILLIC SMALL LETTER TSE */ \
907	    MAP(0x67, 0x48)	/* CYRILLIC SMALL LETTER CHE */ \
908	    MAP(0x68, 0x49)	/* CYRILLIC SMALL LETTER SHA */ \
909	    MAP(0x69, 0x4A)	/* CYRILLIC SMALL LETTER SHCHA */ \
910	    MAP(0x6A, 0x4B)	/* CYRILLIC SMALL LETTER HARD SIGN */ \
911	    MAP(0x6B, 0x4C)	/* CYRILLIC SMALL LETTER YERU */ \
912	    MAP(0x6C, 0x4D)	/* CYRILLIC SMALL LETTER SOFT SIGN */ \
913	    MAP(0x6D, 0x4E)	/* CYRILLIC SMALL LETTER E */ \
914	    MAP(0x6E, 0x4F)	/* CYRILLIC SMALL LETTER YU */ \
915	    MAP(0x6F, 0x50)	/* CYRILLIC SMALL LETTER YA */ \
916	    MAP(0x70, 0x51)	/* NUMERO SIGN */ \
917	    MAP(0x71, 0x52)	/* CYRILLIC SMALL LETTER IO */ \
918	    MAP(0x72, 0x53)	/* CYRILLIC SMALL LETTER DJE */ \
919	    MAP(0x73, 0x54)	/* CYRILLIC SMALL LETTER GJE */ \
920	    MAP(0x74, 0x55)	/* CYRILLIC SMALL LETTER UKRAINIAN IE */ \
921	    MAP(0x75, 0x56)	/* CYRILLIC SMALL LETTER DZE */ \
922	    MAP(0x76, 0x57)	/* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \
923	    MAP(0x77, 0x58)	/* CYRILLIC SMALL LETTER YI */ \
924	    MAP(0x78, 0x59)	/* CYRILLIC SMALL LETTER JE */ \
925	    MAP(0x79, 0x5A)	/* CYRILLIC SMALL LETTER LJE */ \
926	    MAP(0x7A, 0x5B)	/* CYRILLIC SMALL LETTER NJE */ \
927	    MAP(0x7B, 0x5C)	/* CYRILLIC SMALL LETTER TSHE */ \
928	    MAP(0x7C, 0x5D)	/* CYRILLIC SMALL LETTER KJE */ \
929	    MAP(0x7D, 0xA7)	/* SECTION SIGN */ \
930	    MAP(0x7E, 0x5E)	/* CYRILLIC SMALL LETTER SHORT U */ \
931	    MAP(0x7F, 0x5F)	/* CYRILLIC SMALL LETTER DZHE */ \
932	    default: dft; break; \
933	}
934
935/*
936 * ISO Greek is 8859-7
937 */
938#define map_ISO_Greek_Supp(code) \
939	begin_CODEPAGE(96) \
940	switch (code) { \
941	    UNI(0x20, 0x00A0)	/* NO-BREAK SPACE */ \
942	    UNI(0x21, 0x2018)	/* LEFT SINGLE QUOTATION MARK */ \
943	    UNI(0x22, 0x2019)	/* RIGHT SINGLE QUOTATION MARK */ \
944	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
945	    XXX(0x24, UNDEF)	/* undefined */ \
946	    XXX(0x25, UNDEF)	/* undefined */ \
947	    UNI(0x26, 0x00A6)	/* BROKEN BAR */ \
948	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
949	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
950	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
951	    XXX(0x2A, UNDEF)	/* undefined */ \
952	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
953	    UNI(0x2C, 0x00AC)	/* NOT SIGN */ \
954	    UNI(0x2D, 0x00AD)	/* SOFT HYPHEN */ \
955	    XXX(0x2E, UNDEF)	/* undefined */ \
956	    UNI(0x2F, 0x2015)	/* HORIZONTAL BAR */ \
957	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
958	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
959	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
960	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
961	    UNI(0x34, 0x0384)	/* GREEK TONOS */ \
962	    UNI(0x35, 0x0385)	/* GREEK DIALYTIKA TONOS */ \
963	    UNI(0x36, 0x0386)	/* GREEK CAPITAL LETTER ALPHA WITH TONOS */ \
964	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
965	    UNI(0x38, 0x0388)	/* GREEK CAPITAL LETTER EPSILON WITH TONOS */ \
966	    UNI(0x39, 0x0389)	/* GREEK CAPITAL LETTER ETA WITH TONOS */ \
967	    UNI(0x3A, 0x038A)	/* GREEK CAPITAL LETTER IOTA WITH TONOS */ \
968	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
969	    UNI(0x3C, 0x038C)	/* GREEK CAPITAL LETTER OMICRON WITH TONOS */ \
970	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
971	    UNI(0x3E, 0x038E)	/* GREEK CAPITAL LETTER UPSILON WITH TONOS */ \
972	    UNI(0x3F, 0x038F)	/* GREEK CAPITAL LETTER OMEGA WITH TONOS */ \
973	    UNI(0x40, 0x0390)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ \
974	    UNI(0x41, 0x0391)	/* GREEK CAPITAL LETTER ALPHA */ \
975	    UNI(0x42, 0x0392)	/* GREEK CAPITAL LETTER BETA */ \
976	    UNI(0x43, 0x0393)	/* GREEK CAPITAL LETTER GAMMA */ \
977	    UNI(0x44, 0x0394)	/* GREEK CAPITAL LETTER DELTA */ \
978	    UNI(0x45, 0x0395)	/* GREEK CAPITAL LETTER EPSILON */ \
979	    UNI(0x46, 0x0396)	/* GREEK CAPITAL LETTER ZETA */ \
980	    UNI(0x47, 0x0397)	/* GREEK CAPITAL LETTER ETA */ \
981	    UNI(0x48, 0x0398)	/* GREEK CAPITAL LETTER THETA */ \
982	    UNI(0x49, 0x0399)	/* GREEK CAPITAL LETTER IOTA */ \
983	    UNI(0x4A, 0x039A)	/* GREEK CAPITAL LETTER KAPPA */ \
984	    UNI(0x4B, 0x039B)	/* GREEK CAPITAL LETTER LAMDA */ \
985	    UNI(0x4C, 0x039C)	/* GREEK CAPITAL LETTER MU */ \
986	    UNI(0x4D, 0x039D)	/* GREEK CAPITAL LETTER NU */ \
987	    UNI(0x4E, 0x039E)	/* GREEK CAPITAL LETTER XI */ \
988	    UNI(0x4F, 0x039F)	/* GREEK CAPITAL LETTER OMICRON */ \
989	    UNI(0x50, 0x03A0)	/* GREEK CAPITAL LETTER PI */ \
990	    UNI(0x51, 0x03A1)	/* GREEK CAPITAL LETTER RHO */ \
991	    XXX(0x52, UNDEF)	/* undefined */ \
992	    UNI(0x53, 0x03A3)	/* GREEK CAPITAL LETTER SIGMA */ \
993	    UNI(0x54, 0x03A4)	/* GREEK CAPITAL LETTER TAU */ \
994	    UNI(0x55, 0x03A5)	/* GREEK CAPITAL LETTER UPSILON */ \
995	    UNI(0x56, 0x03A6)	/* GREEK CAPITAL LETTER PHI */ \
996	    UNI(0x57, 0x03A7)	/* GREEK CAPITAL LETTER CHI */ \
997	    UNI(0x58, 0x03A8)	/* GREEK CAPITAL LETTER PSI */ \
998	    UNI(0x59, 0x03A9)	/* GREEK CAPITAL LETTER OMEGA */ \
999	    UNI(0x5A, 0x03AA)	/* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ \
1000	    UNI(0x5B, 0x03AB)	/* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ \
1001	    UNI(0x5C, 0x03AC)	/* GREEK SMALL LETTER ALPHA WITH TONOS */ \
1002	    UNI(0x5D, 0x03AD)	/* GREEK SMALL LETTER EPSILON WITH TONOS */ \
1003	    UNI(0x5E, 0x03AE)	/* GREEK SMALL LETTER ETA WITH TONOS */ \
1004	    UNI(0x5F, 0x03AF)	/* GREEK SMALL LETTER IOTA WITH TONOS */ \
1005	    UNI(0x60, 0x03B0)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ \
1006	    UNI(0x61, 0x03B1)	/* GREEK SMALL LETTER ALPHA */ \
1007	    UNI(0x62, 0x03B2)	/* GREEK SMALL LETTER BETA */ \
1008	    UNI(0x63, 0x03B3)	/* GREEK SMALL LETTER GAMMA */ \
1009	    UNI(0x64, 0x03B4)	/* GREEK SMALL LETTER DELTA */ \
1010	    UNI(0x65, 0x03B5)	/* GREEK SMALL LETTER EPSILON */ \
1011	    UNI(0x66, 0x03B6)	/* GREEK SMALL LETTER ZETA */ \
1012	    UNI(0x67, 0x03B7)	/* GREEK SMALL LETTER ETA */ \
1013	    UNI(0x68, 0x03B8)	/* GREEK SMALL LETTER THETA */ \
1014	    UNI(0x69, 0x03B9)	/* GREEK SMALL LETTER IOTA */ \
1015	    UNI(0x6A, 0x03BA)	/* GREEK SMALL LETTER KAPPA */ \
1016	    UNI(0x6B, 0x03BB)	/* GREEK SMALL LETTER LAMDA */ \
1017	    UNI(0x6C, 0x03BC)	/* GREEK SMALL LETTER MU */ \
1018	    UNI(0x6D, 0x03BD)	/* GREEK SMALL LETTER NU */ \
1019	    UNI(0x6E, 0x03BE)	/* GREEK SMALL LETTER XI */ \
1020	    UNI(0x6F, 0x03BF)	/* GREEK SMALL LETTER OMICRON */ \
1021	    UNI(0x70, 0x03C0)	/* GREEK SMALL LETTER PI */ \
1022	    UNI(0x71, 0x03C1)	/* GREEK SMALL LETTER RHO */ \
1023	    UNI(0x72, 0x03C2)	/* GREEK SMALL LETTER FINAL SIGMA */ \
1024	    UNI(0x73, 0x03C3)	/* GREEK SMALL LETTER SIGMA */ \
1025	    UNI(0x74, 0x03C4)	/* GREEK SMALL LETTER TAU */ \
1026	    UNI(0x75, 0x03C5)	/* GREEK SMALL LETTER UPSILON */ \
1027	    UNI(0x76, 0x03C6)	/* GREEK SMALL LETTER PHI */ \
1028	    UNI(0x77, 0x03C7)	/* GREEK SMALL LETTER CHI */ \
1029	    UNI(0x78, 0x03C8)	/* GREEK SMALL LETTER PSI */ \
1030	    UNI(0x79, 0x03C9)	/* GREEK SMALL LETTER OMEGA */ \
1031	    UNI(0x7A, 0x03CA)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \
1032	    UNI(0x7B, 0x03CB)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \
1033	    UNI(0x7C, 0x03CC)	/* GREEK SMALL LETTER OMICRON WITH TONOS */ \
1034	    UNI(0x7D, 0x03CD)	/* GREEK SMALL LETTER UPSILON WITH TONOS */ \
1035	    UNI(0x7E, 0x03CE)	/* GREEK SMALL LETTER OMEGA WITH TONOS */ \
1036	    XXX(0x7F, UNDEF)	/* undefined */ \
1037	} \
1038	end_CODEPAGE()
1039
1040#define unmap_ISO_Greek_Supp(code,dft) \
1041	switch (code) { \
1042	    MAP(0x21, 0x60)	/* LEFT SINGLE QUOTATION MARK */ \
1043	    MAP(0x22, 0x27)	/* RIGHT SINGLE QUOTATION MARK */ \
1044	    MAP(0x24, 0x1B)	/* undefined */ \
1045	    MAP(0x25, 0x1B)	/* undefined */ \
1046	    MAP(0x2A, 0x1B)	/* undefined */ \
1047	    MAP(0x2E, 0x1B)	/* undefined */ \
1048	    MAP(0x2F, 0x2D)	/* HORIZONTAL BAR */ \
1049	    MAP(0x34, 0x96)	/* GREEK TONOS */ \
1050	    MAP(0x35, 0x95)	/* GREEK DIALYTIKA TONOS */ \
1051	    MAP(0x36, 0x6E)	/* GREEK CAPITAL LETTER ALPHA WITH TONOS */ \
1052	    MAP(0x38, 0x6F)	/* GREEK CAPITAL LETTER EPSILON WITH TONOS */ \
1053	    MAP(0x39, 0x70)	/* GREEK CAPITAL LETTER ETA WITH TONOS */ \
1054	    MAP(0x3A, 0x71)	/* GREEK CAPITAL LETTER IOTA WITH TONOS */ \
1055	    MAP(0x3C, 0x72)	/* GREEK CAPITAL LETTER OMICRON WITH TONOS */ \
1056	    MAP(0x3E, 0x73)	/* GREEK CAPITAL LETTER UPSILON WITH TONOS */ \
1057	    MAP(0x3F, 0x74)	/* GREEK CAPITAL LETTER OMEGA WITH TONOS */ \
1058	    MAP(0x40, 0x75)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ \
1059	    MAP(0x41, 0x76)	/* GREEK CAPITAL LETTER ALPHA */ \
1060	    MAP(0x42, 0x77)	/* GREEK CAPITAL LETTER BETA */ \
1061	    MAP(0x43, 0x78)	/* GREEK CAPITAL LETTER GAMMA */ \
1062	    MAP(0x44, 0x79)	/* GREEK CAPITAL LETTER DELTA */ \
1063	    MAP(0x45, 0x7A)	/* GREEK CAPITAL LETTER EPSILON */ \
1064	    MAP(0x46, 0x7B)	/* GREEK CAPITAL LETTER ZETA */ \
1065	    MAP(0x47, 0x7C)	/* GREEK CAPITAL LETTER ETA */ \
1066	    MAP(0x48, 0x7D)	/* GREEK CAPITAL LETTER THETA */ \
1067	    MAP(0x49, 0x7E)	/* GREEK CAPITAL LETTER IOTA */ \
1068	    MAP(0x4A, 0x7F)	/* GREEK CAPITAL LETTER KAPPA */ \
1069	    MAP(0x4B, 0xA2)	/* GREEK CAPITAL LETTER LAMDA */ \
1070	    MAP(0x4C, 0xA3)	/* GREEK CAPITAL LETTER MU */ \
1071	    MAP(0x4D, 0xA4)	/* GREEK CAPITAL LETTER NU */ \
1072	    MAP(0x4E, 0xA5)	/* GREEK CAPITAL LETTER XI */ \
1073	    MAP(0x4F, 0xA6)	/* GREEK CAPITAL LETTER OMICRON */ \
1074	    MAP(0x50, 0xA7)	/* GREEK CAPITAL LETTER PI */ \
1075	    MAP(0x51, 0xA8)	/* GREEK CAPITAL LETTER RHO */ \
1076	    MAP(0x52, 0x1B)	/* undefined */ \
1077	    MAP(0x53, 0xA9)	/* GREEK CAPITAL LETTER SIGMA */ \
1078	    MAP(0x54, 0xAA)	/* GREEK CAPITAL LETTER TAU */ \
1079	    MAP(0x55, 0xAB)	/* GREEK CAPITAL LETTER UPSILON */ \
1080	    MAP(0x56, 0xAC)	/* GREEK CAPITAL LETTER PHI */ \
1081	    MAP(0x57, 0xAD)	/* GREEK CAPITAL LETTER CHI */ \
1082	    MAP(0x58, 0xAE)	/* GREEK CAPITAL LETTER PSI */ \
1083	    MAP(0x59, 0xAF)	/* GREEK CAPITAL LETTER OMEGA */ \
1084	    MAP(0x5A, 0xB0)	/* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ \
1085	    MAP(0x5B, 0xB1)	/* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ \
1086	    MAP(0x5C, 0xB2)	/* GREEK SMALL LETTER ALPHA WITH TONOS */ \
1087	    MAP(0x5D, 0xB3)	/* GREEK SMALL LETTER EPSILON WITH TONOS */ \
1088	    MAP(0x5E, 0xB4)	/* GREEK SMALL LETTER ETA WITH TONOS */ \
1089	    MAP(0x5F, 0xB5)	/* GREEK SMALL LETTER IOTA WITH TONOS */ \
1090	    MAP(0x60, 0xB6)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ \
1091	    MAP(0x61, 0xB7)	/* GREEK SMALL LETTER ALPHA */ \
1092	    MAP(0x62, 0xB8)	/* GREEK SMALL LETTER BETA */ \
1093	    MAP(0x63, 0xB9)	/* GREEK SMALL LETTER GAMMA */ \
1094	    MAP(0x64, 0xBA)	/* GREEK SMALL LETTER DELTA */ \
1095	    MAP(0x65, 0xBB)	/* GREEK SMALL LETTER EPSILON */ \
1096	    MAP(0x66, 0xBC)	/* GREEK SMALL LETTER ZETA */ \
1097	    MAP(0x67, 0xBD)	/* GREEK SMALL LETTER ETA */ \
1098	    MAP(0x68, 0xBE)	/* GREEK SMALL LETTER THETA */ \
1099	    MAP(0x69, 0xBF)	/* GREEK SMALL LETTER IOTA */ \
1100	    MAP(0x6A, 0xC0)	/* GREEK SMALL LETTER KAPPA */ \
1101	    MAP(0x6B, 0xC1)	/* GREEK SMALL LETTER LAMDA */ \
1102	    MAP(0x6C, 0xC2)	/* GREEK SMALL LETTER MU */ \
1103	    MAP(0x6D, 0xC3)	/* GREEK SMALL LETTER NU */ \
1104	    MAP(0x6E, 0xC4)	/* GREEK SMALL LETTER XI */ \
1105	    MAP(0x6F, 0xC5)	/* GREEK SMALL LETTER OMICRON */ \
1106	    MAP(0x70, 0xC6)	/* GREEK SMALL LETTER PI */ \
1107	    MAP(0x71, 0xC7)	/* GREEK SMALL LETTER RHO */ \
1108	    MAP(0x72, 0xC8)	/* GREEK SMALL LETTER FINAL SIGMA */ \
1109	    MAP(0x73, 0xC9)	/* GREEK SMALL LETTER SIGMA */ \
1110	    MAP(0x74, 0xCA)	/* GREEK SMALL LETTER TAU */ \
1111	    MAP(0x75, 0xCB)	/* GREEK SMALL LETTER UPSILON */ \
1112	    MAP(0x76, 0xCC)	/* GREEK SMALL LETTER PHI */ \
1113	    MAP(0x77, 0xCD)	/* GREEK SMALL LETTER CHI */ \
1114	    MAP(0x78, 0xCE)	/* GREEK SMALL LETTER PSI */ \
1115	    MAP(0x79, 0xCF)	/* GREEK SMALL LETTER OMEGA */ \
1116	    MAP(0x7A, 0xD0)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \
1117	    MAP(0x7B, 0xD1)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \
1118	    MAP(0x7C, 0xD2)	/* GREEK SMALL LETTER OMICRON WITH TONOS */ \
1119	    MAP(0x7D, 0xD3)	/* GREEK SMALL LETTER UPSILON WITH TONOS */ \
1120	    MAP(0x7E, 0xD4)	/* GREEK SMALL LETTER OMEGA WITH TONOS */ \
1121	    MAP(0x7F, 0x1B)	/* undefined */ \
1122	    default: dft; break; \
1123	}
1124
1125/*
1126 * figure A-23 "ISO Latin-Hebrew Supplemental Character Set"
1127 */
1128#define map_ISO_Hebrew(code) \
1129	begin_CODEPAGE(96) \
1130	switch (code) { \
1131	    UNI(0x20, 0x00A0)	/* NO-BREAK SPACE */ \
1132	    XXX(0x21, UNDEF)	/* undefined */ \
1133	    UNI(0x22, 0x00A2)	/* CENT SIGN */ \
1134	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
1135	    UNI(0x24, 0x00A4)	/* CURRENCY SIGN */ \
1136	    UNI(0x25, 0x00A5)	/* YEN SIGN */ \
1137	    UNI(0x26, 0x00A6)	/* BROKEN BAR */ \
1138	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
1139	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
1140	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
1141	    UNI(0x2A, 0x00D7)	/* MULTIPLICATION SIGN */ \
1142	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1143	    UNI(0x2C, 0x00AC)	/* NOT SIGN */ \
1144	    UNI(0x2D, 0x00AD)	/* SOFT HYPHEN */ \
1145	    UNI(0x2E, 0x00AE)	/* REGISTERED SIGN */ \
1146	    UNI(0x2F, 0x00AF)	/* MACRON */ \
1147	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
1148	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
1149	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
1150	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
1151	    UNI(0x34, 0x00B4)	/* ACUTE ACCENT */ \
1152	    UNI(0x35, 0x00B5)	/* MICRO SIGN */ \
1153	    UNI(0x36, 0x00B6)	/* PILCROW SIGN */ \
1154	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
1155	    UNI(0x38, 0x00B8)	/* CEDILLA */ \
1156	    UNI(0x39, 0x00B9)	/* SUPERSCRIPT ONE */ \
1157	    UNI(0x3A, 0x00F7)	/* DIVISION SIGN */ \
1158	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1159	    UNI(0x3C, 0x00BC)	/* VULGAR FRACTION ONE QUARTER */ \
1160	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
1161	    UNI(0x3E, 0x00BE)	/* VULGAR FRACTION THREE QUARTERS */ \
1162	    XXX(0x3F, UNDEF)	/* undefined */ \
1163	    XXX(0x40, UNDEF)	/* undefined */ \
1164	    XXX(0x41, UNDEF)	/* undefined */ \
1165	    XXX(0x42, UNDEF)	/* undefined */ \
1166	    XXX(0x43, UNDEF)	/* undefined */ \
1167	    XXX(0x44, UNDEF)	/* undefined */ \
1168	    XXX(0x45, UNDEF)	/* undefined */ \
1169	    XXX(0x46, UNDEF)	/* undefined */ \
1170	    XXX(0x47, UNDEF)	/* undefined */ \
1171	    XXX(0x48, UNDEF)	/* undefined */ \
1172	    XXX(0x49, UNDEF)	/* undefined */ \
1173	    XXX(0x4A, UNDEF)	/* undefined */ \
1174	    XXX(0x4B, UNDEF)	/* undefined */ \
1175	    XXX(0x4C, UNDEF)	/* undefined */ \
1176	    XXX(0x4D, UNDEF)	/* undefined */ \
1177	    XXX(0x4E, UNDEF)	/* undefined */ \
1178	    XXX(0x4F, UNDEF)	/* undefined */ \
1179	    XXX(0x50, UNDEF)	/* undefined */ \
1180	    XXX(0x51, UNDEF)	/* undefined */ \
1181	    XXX(0x52, UNDEF)	/* undefined */ \
1182	    XXX(0x53, UNDEF)	/* undefined */ \
1183	    XXX(0x54, UNDEF)	/* undefined */ \
1184	    XXX(0x55, UNDEF)	/* undefined */ \
1185	    XXX(0x56, UNDEF)	/* undefined */ \
1186	    XXX(0x57, UNDEF)	/* undefined */ \
1187	    XXX(0x58, UNDEF)	/* undefined */ \
1188	    XXX(0x59, UNDEF)	/* undefined */ \
1189	    XXX(0x5A, UNDEF)	/* undefined */ \
1190	    XXX(0x5B, UNDEF)	/* undefined */ \
1191	    XXX(0x5C, UNDEF)	/* undefined */ \
1192	    XXX(0x5D, UNDEF)	/* undefined */ \
1193	    XXX(0x5E, UNDEF)	/* undefined */ \
1194	    UNI(0x5F, 0x2017)	/* DOUBLE LOW LINE */ \
1195	    UNI(0x60, 0x05D0)	/* HEBREW LETTER ALEF */ \
1196	    UNI(0x61, 0x05D1)	/* HEBREW LETTER BET */ \
1197	    UNI(0x62, 0x05D2)	/* HEBREW LETTER GIMEL */ \
1198	    UNI(0x63, 0x05D3)	/* HEBREW LETTER DALET */ \
1199	    UNI(0x64, 0x05D4)	/* HEBREW LETTER HE */ \
1200	    UNI(0x65, 0x05D5)	/* HEBREW LETTER VAV */ \
1201	    UNI(0x66, 0x05D6)	/* HEBREW LETTER ZAYIN */ \
1202	    UNI(0x67, 0x05D7)	/* HEBREW LETTER HET */ \
1203	    UNI(0x68, 0x05D8)	/* HEBREW LETTER TET */ \
1204	    UNI(0x69, 0x05D9)	/* HEBREW LETTER YOD */ \
1205	    UNI(0x6A, 0x05DA)	/* HEBREW LETTER FINAL KAF */ \
1206	    UNI(0x6B, 0x05DB)	/* HEBREW LETTER KAF */ \
1207	    UNI(0x6C, 0x05DC)	/* HEBREW LETTER LAMED */ \
1208	    UNI(0x6D, 0x05DD)	/* HEBREW LETTER FINAL MEM */ \
1209	    UNI(0x6E, 0x05DE)	/* HEBREW LETTER MEM */ \
1210	    UNI(0x6F, 0x05DF)	/* HEBREW LETTER FINAL NUN */ \
1211	    UNI(0x70, 0x05E0)	/* HEBREW LETTER NUN */ \
1212	    UNI(0x71, 0x05E1)	/* HEBREW LETTER SAMEKH */ \
1213	    UNI(0x72, 0x05E2)	/* HEBREW LETTER AYIN */ \
1214	    UNI(0x73, 0x05E3)	/* HEBREW LETTER FINAL PE */ \
1215	    UNI(0x74, 0x05E4)	/* HEBREW LETTER PE */ \
1216	    UNI(0x75, 0x05E5)	/* HEBREW LETTER FINAL TSADI */ \
1217	    UNI(0x76, 0x05E6)	/* HEBREW LETTER TSADI */ \
1218	    UNI(0x77, 0x05E7)	/* HEBREW LETTER QOF */ \
1219	    UNI(0x78, 0x05E8)	/* HEBREW LETTER RESH */ \
1220	    UNI(0x79, 0x05E9)	/* HEBREW LETTER SHIN */ \
1221	    UNI(0x7A, 0x05EA)	/* HEBREW LETTER TAV */ \
1222	    XXX(0x7B, UNDEF)	/* undefined */ \
1223	    XXX(0x7C, UNDEF)	/* undefined */ \
1224	    XXX(0x7D, UNDEF)	/* undefined */ \
1225	    XXX(0x7E, UNDEF)	/* undefined */ \
1226	    XXX(0x7F, UNDEF)	/* undefined */ \
1227	} \
1228	end_CODEPAGE()
1229
1230#define unmap_ISO_Hebrew(code,dft) \
1231	switch (code) { \
1232	    MAP(0x21, 0x1B)	/* undefined */ \
1233	    MAP(0x2A, 0xD7)	/* MULTIPLICATION SIGN */ \
1234	    MAP(0x3A, 0xF7)	/* DIVISION SIGN */ \
1235	    MAP(0x3F, 0x1B)	/* undefined */ \
1236	    MAP(0x40, 0x1B)	/* undefined */ \
1237	    MAP(0x41, 0x1B)	/* undefined */ \
1238	    MAP(0x42, 0x1B)	/* undefined */ \
1239	    MAP(0x43, 0x1B)	/* undefined */ \
1240	    MAP(0x44, 0x1B)	/* undefined */ \
1241	    MAP(0x45, 0x1B)	/* undefined */ \
1242	    MAP(0x46, 0x1B)	/* undefined */ \
1243	    MAP(0x47, 0x1B)	/* undefined */ \
1244	    MAP(0x48, 0x1B)	/* undefined */ \
1245	    MAP(0x49, 0x1B)	/* undefined */ \
1246	    MAP(0x4A, 0x1B)	/* undefined */ \
1247	    MAP(0x4B, 0x1B)	/* undefined */ \
1248	    MAP(0x4C, 0x1B)	/* undefined */ \
1249	    MAP(0x4D, 0x1B)	/* undefined */ \
1250	    MAP(0x4E, 0x1B)	/* undefined */ \
1251	    MAP(0x4F, 0x1B)	/* undefined */ \
1252	    MAP(0x50, 0x1B)	/* undefined */ \
1253	    MAP(0x51, 0x1B)	/* undefined */ \
1254	    MAP(0x52, 0x1B)	/* undefined */ \
1255	    MAP(0x53, 0x1B)	/* undefined */ \
1256	    MAP(0x54, 0x1B)	/* undefined */ \
1257	    MAP(0x55, 0x1B)	/* undefined */ \
1258	    MAP(0x56, 0x1B)	/* undefined */ \
1259	    MAP(0x57, 0x1B)	/* undefined */ \
1260	    MAP(0x58, 0x1B)	/* undefined */ \
1261	    MAP(0x59, 0x1B)	/* undefined */ \
1262	    MAP(0x5A, 0x1B)	/* undefined */ \
1263	    MAP(0x5B, 0x1B)	/* undefined */ \
1264	    MAP(0x5C, 0x1B)	/* undefined */ \
1265	    MAP(0x5D, 0x1B)	/* undefined */ \
1266	    MAP(0x5E, 0x1B)	/* undefined */ \
1267	    MAP(0x5F, 0x52)	/* DOUBLE LOW LINE */ \
1268	    MAP(0x60, 0x53)	/* HEBREW LETTER ALEF */ \
1269	    MAP(0x61, 0x54)	/* HEBREW LETTER BET */ \
1270	    MAP(0x62, 0x55)	/* HEBREW LETTER GIMEL */ \
1271	    MAP(0x63, 0x56)	/* HEBREW LETTER DALET */ \
1272	    MAP(0x64, 0x57)	/* HEBREW LETTER HE */ \
1273	    MAP(0x65, 0x58)	/* HEBREW LETTER VAV */ \
1274	    MAP(0x66, 0x59)	/* HEBREW LETTER ZAYIN */ \
1275	    MAP(0x67, 0x5A)	/* HEBREW LETTER HET */ \
1276	    MAP(0x68, 0x5B)	/* HEBREW LETTER TET */ \
1277	    MAP(0x69, 0x5C)	/* HEBREW LETTER YOD */ \
1278	    MAP(0x6A, 0x5D)	/* HEBREW LETTER FINAL KAF */ \
1279	    MAP(0x6B, 0x5E)	/* HEBREW LETTER KAF */ \
1280	    MAP(0x6C, 0x5F)	/* HEBREW LETTER LAMED */ \
1281	    MAP(0x6D, 0x60)	/* HEBREW LETTER FINAL MEM */ \
1282	    MAP(0x6E, 0x61)	/* HEBREW LETTER MEM */ \
1283	    MAP(0x6F, 0x62)	/* HEBREW LETTER FINAL NUN */ \
1284	    MAP(0x70, 0x63)	/* HEBREW LETTER NUN */ \
1285	    MAP(0x71, 0x64)	/* HEBREW LETTER SAMEKH */ \
1286	    MAP(0x72, 0x65)	/* HEBREW LETTER AYIN */ \
1287	    MAP(0x73, 0x66)	/* HEBREW LETTER FINAL PE */ \
1288	    MAP(0x74, 0x67)	/* HEBREW LETTER PE */ \
1289	    MAP(0x75, 0x68)	/* HEBREW LETTER FINAL TSADI */ \
1290	    MAP(0x76, 0x69)	/* HEBREW LETTER TSADI */ \
1291	    MAP(0x77, 0x6A)	/* HEBREW LETTER QOF */ \
1292	    MAP(0x78, 0x6B)	/* HEBREW LETTER RESH */ \
1293	    MAP(0x79, 0x6C)	/* HEBREW LETTER SHIN */ \
1294	    MAP(0x7A, 0x6D)	/* HEBREW LETTER TAV */ \
1295	    MAP(0x7B, 0x1B)	/* undefined */ \
1296	    MAP(0x7C, 0x1B)	/* undefined */ \
1297	    MAP(0x7D, 0x1B)	/* undefined */ \
1298	    MAP(0x7E, 0x1B)	/* undefined */ \
1299	    MAP(0x7F, 0x1B)	/* undefined */ \
1300	    default: dft; break; \
1301	}
1302
1303/*
1304 * ISO Latin-2 is 8859-2
1305 */
1306#define map_ISO_Latin_2(code) \
1307	begin_CODEPAGE(96) \
1308	switch (code) { \
1309	    UNI(0x20, 0x00A0)	/* NO-BREAK SPACE */ \
1310	    UNI(0x21, 0x0104)	/* LATIN CAPITAL LETTER A WITH OGONEK */ \
1311	    UNI(0x22, 0x02D8)	/* BREVE */ \
1312	    UNI(0x23, 0x0141)	/* LATIN CAPITAL LETTER L WITH STROKE */ \
1313	    UNI(0x24, 0x00A4)	/* CURRENCY SIGN */ \
1314	    UNI(0x25, 0x013D)	/* LATIN CAPITAL LETTER L WITH CARON */ \
1315	    UNI(0x26, 0x015A)	/* LATIN CAPITAL LETTER S WITH ACUTE */ \
1316	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
1317	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
1318	    UNI(0x29, 0x0160)	/* LATIN CAPITAL LETTER S WITH CARON */ \
1319	    UNI(0x2A, 0x015E)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
1320	    UNI(0x2B, 0x0164)	/* LATIN CAPITAL LETTER T WITH CARON */ \
1321	    UNI(0x2C, 0x0179)	/* LATIN CAPITAL LETTER Z WITH ACUTE */ \
1322	    UNI(0x2D, 0x00AD)	/* SOFT HYPHEN */ \
1323	    UNI(0x2E, 0x017D)	/* LATIN CAPITAL LETTER Z WITH CARON */ \
1324	    UNI(0x2F, 0x017B)	/* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \
1325	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
1326	    UNI(0x31, 0x0105)	/* LATIN SMALL LETTER A WITH OGONEK */ \
1327	    UNI(0x32, 0x02DB)	/* OGONEK */ \
1328	    UNI(0x33, 0x0142)	/* LATIN SMALL LETTER L WITH STROKE */ \
1329	    UNI(0x34, 0x00B4)	/* ACUTE ACCENT */ \
1330	    UNI(0x35, 0x013E)	/* LATIN SMALL LETTER L WITH CARON */ \
1331	    UNI(0x36, 0x015B)	/* LATIN SMALL LETTER S WITH ACUTE */ \
1332	    UNI(0x37, 0x02C7)	/* CARON */ \
1333	    UNI(0x38, 0x00B8)	/* CEDILLA */ \
1334	    UNI(0x39, 0x0161)	/* LATIN SMALL LETTER S WITH CARON */ \
1335	    UNI(0x3A, 0x015F)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
1336	    UNI(0x3B, 0x0165)	/* LATIN SMALL LETTER T WITH CARON */ \
1337	    UNI(0x3C, 0x017A)	/* LATIN SMALL LETTER Z WITH ACUTE */ \
1338	    UNI(0x3D, 0x02DD)	/* DOUBLE ACUTE ACCENT */ \
1339	    UNI(0x3E, 0x017E)	/* LATIN SMALL LETTER Z WITH CARON */ \
1340	    UNI(0x3F, 0x017C)	/* LATIN SMALL LETTER Z WITH DOT ABOVE */ \
1341	    UNI(0x40, 0x0154)	/* LATIN CAPITAL LETTER R WITH ACUTE */ \
1342	    UNI(0x41, 0x00C1)	/* LATIN CAPITAL LETTER A WITH ACUTE */ \
1343	    UNI(0x42, 0x00C2)	/* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \
1344	    UNI(0x43, 0x0102)	/* LATIN CAPITAL LETTER A WITH BREVE */ \
1345	    UNI(0x44, 0x00C4)	/* LATIN CAPITAL LETTER A WITH DIAERESIS */ \
1346	    UNI(0x45, 0x0139)	/* LATIN CAPITAL LETTER L WITH ACUTE */ \
1347	    UNI(0x46, 0x0106)	/* LATIN CAPITAL LETTER C WITH ACUTE */ \
1348	    UNI(0x47, 0x00C7)	/* LATIN CAPITAL LETTER C WITH CEDILLA */ \
1349	    UNI(0x48, 0x010C)	/* LATIN CAPITAL LETTER C WITH CARON */ \
1350	    UNI(0x49, 0x00C9)	/* LATIN CAPITAL LETTER E WITH ACUTE */ \
1351	    UNI(0x4A, 0x0118)	/* LATIN CAPITAL LETTER E WITH OGONEK */ \
1352	    UNI(0x4B, 0x00CB)	/* LATIN CAPITAL LETTER E WITH DIAERESIS */ \
1353	    UNI(0x4C, 0x011A)	/* LATIN CAPITAL LETTER E WITH CARON */ \
1354	    UNI(0x4D, 0x00CD)	/* LATIN CAPITAL LETTER I WITH ACUTE */ \
1355	    UNI(0x4E, 0x00CE)	/* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \
1356	    UNI(0x4F, 0x010E)	/* LATIN CAPITAL LETTER D WITH CARON */ \
1357	    UNI(0x50, 0x0110)	/* LATIN CAPITAL LETTER D WITH STROKE */ \
1358	    UNI(0x51, 0x0143)	/* LATIN CAPITAL LETTER N WITH ACUTE */ \
1359	    UNI(0x52, 0x0147)	/* LATIN CAPITAL LETTER N WITH CARON */ \
1360	    UNI(0x53, 0x00D3)	/* LATIN CAPITAL LETTER O WITH ACUTE */ \
1361	    UNI(0x54, 0x00D4)	/* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \
1362	    UNI(0x55, 0x0150)	/* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \
1363	    UNI(0x56, 0x00D6)	/* LATIN CAPITAL LETTER O WITH DIAERESIS */ \
1364	    UNI(0x57, 0x00D7)	/* MULTIPLICATION SIGN */ \
1365	    UNI(0x58, 0x0158)	/* LATIN CAPITAL LETTER R WITH CARON */ \
1366	    UNI(0x59, 0x016E)	/* LATIN CAPITAL LETTER U WITH RING ABOVE */ \
1367	    UNI(0x5A, 0x00DA)	/* LATIN CAPITAL LETTER U WITH ACUTE */ \
1368	    UNI(0x5B, 0x0170)	/* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \
1369	    UNI(0x5C, 0x00DC)	/* LATIN CAPITAL LETTER U WITH DIAERESIS */ \
1370	    UNI(0x5D, 0x00DD)	/* LATIN CAPITAL LETTER Y WITH ACUTE */ \
1371	    UNI(0x5E, 0x0162)	/* LATIN CAPITAL LETTER T WITH CEDILLA */ \
1372	    UNI(0x5F, 0x00DF)	/* LATIN SMALL LETTER SHARP S */ \
1373	    UNI(0x60, 0x0155)	/* LATIN SMALL LETTER R WITH ACUTE */ \
1374	    UNI(0x61, 0x00E1)	/* LATIN SMALL LETTER A WITH ACUTE */ \
1375	    UNI(0x62, 0x00E2)	/* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \
1376	    UNI(0x63, 0x0103)	/* LATIN SMALL LETTER A WITH BREVE */ \
1377	    UNI(0x64, 0x00E4)	/* LATIN SMALL LETTER A WITH DIAERESIS */ \
1378	    UNI(0x65, 0x013A)	/* LATIN SMALL LETTER L WITH ACUTE */ \
1379	    UNI(0x66, 0x0107)	/* LATIN SMALL LETTER C WITH ACUTE */ \
1380	    UNI(0x67, 0x00E7)	/* LATIN SMALL LETTER C WITH CEDILLA */ \
1381	    UNI(0x68, 0x010D)	/* LATIN SMALL LETTER C WITH CARON */ \
1382	    UNI(0x69, 0x00E9)	/* LATIN SMALL LETTER E WITH ACUTE */ \
1383	    UNI(0x6A, 0x0119)	/* LATIN SMALL LETTER E WITH OGONEK */ \
1384	    UNI(0x6B, 0x00EB)	/* LATIN SMALL LETTER E WITH DIAERESIS */ \
1385	    UNI(0x6C, 0x011B)	/* LATIN SMALL LETTER E WITH CARON */ \
1386	    UNI(0x6D, 0x00ED)	/* LATIN SMALL LETTER I WITH ACUTE */ \
1387	    UNI(0x6E, 0x00EE)	/* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \
1388	    UNI(0x6F, 0x010F)	/* LATIN SMALL LETTER D WITH CARON */ \
1389	    UNI(0x70, 0x0111)	/* LATIN SMALL LETTER D WITH STROKE */ \
1390	    UNI(0x71, 0x0144)	/* LATIN SMALL LETTER N WITH ACUTE */ \
1391	    UNI(0x72, 0x0148)	/* LATIN SMALL LETTER N WITH CARON */ \
1392	    UNI(0x73, 0x00F3)	/* LATIN SMALL LETTER O WITH ACUTE */ \
1393	    UNI(0x74, 0x00F4)	/* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \
1394	    UNI(0x75, 0x0151)	/* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \
1395	    UNI(0x76, 0x00F6)	/* LATIN SMALL LETTER O WITH DIAERESIS */ \
1396	    UNI(0x77, 0x00F7)	/* DIVISION SIGN */ \
1397	    UNI(0x78, 0x0159)	/* LATIN SMALL LETTER R WITH CARON */ \
1398	    UNI(0x79, 0x016F)	/* LATIN SMALL LETTER U WITH RING ABOVE */ \
1399	    UNI(0x7A, 0x00FA)	/* LATIN SMALL LETTER U WITH ACUTE */ \
1400	    UNI(0x7B, 0x0171)	/* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \
1401	    UNI(0x7C, 0x00FC)	/* LATIN SMALL LETTER U WITH DIAERESIS */ \
1402	    UNI(0x7D, 0x00FD)	/* LATIN SMALL LETTER Y WITH ACUTE */ \
1403	    UNI(0x7E, 0x0163)	/* LATIN SMALL LETTER T WITH CEDILLA */ \
1404	    UNI(0x7F, 0x02D9)	/* DOT ABOVE */ \
1405	} \
1406	end_CODEPAGE()
1407
1408#define unmap_ISO_Latin_2(code,dft) \
1409	switch (code) { \
1410	    MAP(0x21, 0x9A)	/* LATIN CAPITAL LETTER A WITH OGONEK */ \
1411	    MAP(0x22, 0x90)	/* BREVE */ \
1412	    MAP(0x23, 0x9B)	/* LATIN CAPITAL LETTER L WITH STROKE */ \
1413	    MAP(0x25, 0x9C)	/* LATIN CAPITAL LETTER L WITH CARON */ \
1414	    MAP(0x26, 0x9D)	/* LATIN CAPITAL LETTER S WITH ACUTE */ \
1415	    MAP(0x29, 0x9E)	/* LATIN CAPITAL LETTER S WITH CARON */ \
1416	    MAP(0x2A, 0x9F)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
1417	    MAP(0x2B, 0x21)	/* LATIN CAPITAL LETTER T WITH CARON */ \
1418	    MAP(0x2C, 0x22)	/* LATIN CAPITAL LETTER Z WITH ACUTE */ \
1419	    MAP(0x2E, 0x23)	/* LATIN CAPITAL LETTER Z WITH CARON */ \
1420	    MAP(0x2F, 0x24)	/* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \
1421	    MAP(0x31, 0x25)	/* LATIN SMALL LETTER A WITH OGONEK */ \
1422	    MAP(0x32, 0x91)	/* OGONEK */ \
1423	    MAP(0x33, 0x26)	/* LATIN SMALL LETTER L WITH STROKE */ \
1424	    MAP(0x35, 0x27)	/* LATIN SMALL LETTER L WITH CARON */ \
1425	    MAP(0x36, 0x28)	/* LATIN SMALL LETTER S WITH ACUTE */ \
1426	    MAP(0x37, 0x92)	/* CARON */ \
1427	    MAP(0x39, 0x29)	/* LATIN SMALL LETTER S WITH CARON */ \
1428	    MAP(0x3A, 0x2A)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
1429	    MAP(0x3B, 0x2B)	/* LATIN SMALL LETTER T WITH CARON */ \
1430	    MAP(0x3C, 0x2C)	/* LATIN SMALL LETTER Z WITH ACUTE */ \
1431	    MAP(0x3D, 0x93)	/* DOUBLE ACUTE ACCENT */ \
1432	    MAP(0x3E, 0x2D)	/* LATIN SMALL LETTER Z WITH CARON */ \
1433	    MAP(0x3F, 0x2E)	/* LATIN SMALL LETTER Z WITH DOT ABOVE */ \
1434	    MAP(0x40, 0x2F)	/* LATIN CAPITAL LETTER R WITH ACUTE */ \
1435	    MAP(0x43, 0x30)	/* LATIN CAPITAL LETTER A WITH BREVE */ \
1436	    MAP(0x45, 0x31)	/* LATIN CAPITAL LETTER L WITH ACUTE */ \
1437	    MAP(0x46, 0x32)	/* LATIN CAPITAL LETTER C WITH ACUTE */ \
1438	    MAP(0x48, 0x33)	/* LATIN CAPITAL LETTER C WITH CARON */ \
1439	    MAP(0x4A, 0x34)	/* LATIN CAPITAL LETTER E WITH OGONEK */ \
1440	    MAP(0x4C, 0x35)	/* LATIN CAPITAL LETTER E WITH CARON */ \
1441	    MAP(0x4F, 0x36)	/* LATIN CAPITAL LETTER D WITH CARON */ \
1442	    MAP(0x51, 0x37)	/* LATIN CAPITAL LETTER N WITH ACUTE */ \
1443	    MAP(0x52, 0x38)	/* LATIN CAPITAL LETTER N WITH CARON */ \
1444	    MAP(0x55, 0x39)	/* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \
1445	    MAP(0x58, 0x3A)	/* LATIN CAPITAL LETTER R WITH CARON */ \
1446	    MAP(0x59, 0x3B)	/* LATIN CAPITAL LETTER U WITH RING ABOVE */ \
1447	    MAP(0x5B, 0x3C)	/* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \
1448	    MAP(0x5E, 0x3D)	/* LATIN CAPITAL LETTER T WITH CEDILLA */ \
1449	    MAP(0x60, 0x3E)	/* LATIN SMALL LETTER R WITH ACUTE */ \
1450	    MAP(0x63, 0x3F)	/* LATIN SMALL LETTER A WITH BREVE */ \
1451	    MAP(0x65, 0x40)	/* LATIN SMALL LETTER L WITH ACUTE */ \
1452	    MAP(0x66, 0x41)	/* LATIN SMALL LETTER C WITH ACUTE */ \
1453	    MAP(0x68, 0x42)	/* LATIN SMALL LETTER C WITH CARON */ \
1454	    MAP(0x6A, 0x43)	/* LATIN SMALL LETTER E WITH OGONEK */ \
1455	    MAP(0x6C, 0x44)	/* LATIN SMALL LETTER E WITH CARON */ \
1456	    MAP(0x6F, 0x45)	/* LATIN SMALL LETTER D WITH CARON */ \
1457	    MAP(0x70, 0x46)	/* LATIN SMALL LETTER D WITH STROKE */ \
1458	    MAP(0x71, 0x47)	/* LATIN SMALL LETTER N WITH ACUTE */ \
1459	    MAP(0x72, 0x48)	/* LATIN SMALL LETTER N WITH CARON */ \
1460	    MAP(0x75, 0x49)	/* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \
1461	    MAP(0x78, 0x4A)	/* LATIN SMALL LETTER R WITH CARON */ \
1462	    MAP(0x79, 0x4B)	/* LATIN SMALL LETTER U WITH RING ABOVE */ \
1463	    MAP(0x7B, 0x4C)	/* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \
1464	    MAP(0x7E, 0x4D)	/* LATIN SMALL LETTER T WITH CEDILLA */ \
1465	    MAP(0x7F, 0x94)	/* DOT ABOVE */ \
1466	    default: dft; break; \
1467	}
1468
1469/*
1470 * ISO Latin-5 is 8859-9
1471 */
1472#define map_ISO_Latin_5(code) \
1473	begin_CODEPAGE(96) \
1474	switch (code) { \
1475	    UNI(0x20, 0x00A0)	/* NO-BREAK SPACE */ \
1476	    UNI(0x21, 0x00A1)	/* INVERTED EXCLAMATION MARK */ \
1477	    UNI(0x22, 0x00A2)	/* CENT SIGN */ \
1478	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
1479	    UNI(0x24, 0x00A4)	/* CURRENCY SIGN */ \
1480	    UNI(0x25, 0x00A5)	/* YEN SIGN */ \
1481	    UNI(0x26, 0x00A6)	/* BROKEN BAR */ \
1482	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
1483	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
1484	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
1485	    UNI(0x2A, 0x00AA)	/* FEMININE ORDINAL INDICATOR */ \
1486	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1487	    UNI(0x2C, 0x00AC)	/* NOT SIGN */ \
1488	    UNI(0x2D, 0x00AD)	/* SOFT HYPHEN */ \
1489	    UNI(0x2E, 0x00AE)	/* REGISTERED SIGN */ \
1490	    UNI(0x2F, 0x00AF)	/* MACRON */ \
1491	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
1492	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
1493	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
1494	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
1495	    UNI(0x34, 0x00B4)	/* ACUTE ACCENT */ \
1496	    UNI(0x35, 0x00B5)	/* MICRO SIGN */ \
1497	    UNI(0x36, 0x00B6)	/* PILCROW SIGN */ \
1498	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
1499	    UNI(0x38, 0x00B8)	/* CEDILLA */ \
1500	    UNI(0x39, 0x00B9)	/* SUPERSCRIPT ONE */ \
1501	    UNI(0x3A, 0x00BA)	/* MASCULINE ORDINAL INDICATOR */ \
1502	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1503	    UNI(0x3C, 0x00BC)	/* VULGAR FRACTION ONE QUARTER */ \
1504	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
1505	    UNI(0x3E, 0x00BE)	/* VULGAR FRACTION THREE QUARTERS */ \
1506	    UNI(0x3F, 0x00BF)	/* INVERTED QUESTION MARK */ \
1507	    UNI(0x40, 0x00C0)	/* LATIN CAPITAL LETTER A WITH GRAVE */ \
1508	    UNI(0x41, 0x00C1)	/* LATIN CAPITAL LETTER A WITH ACUTE */ \
1509	    UNI(0x42, 0x00C2)	/* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \
1510	    UNI(0x43, 0x00C3)	/* LATIN CAPITAL LETTER A WITH TILDE */ \
1511	    UNI(0x44, 0x00C4)	/* LATIN CAPITAL LETTER A WITH DIAERESIS */ \
1512	    UNI(0x45, 0x00C5)	/* LATIN CAPITAL LETTER A WITH RING ABOVE */ \
1513	    UNI(0x46, 0x00C6)	/* LATIN CAPITAL LETTER AE */ \
1514	    UNI(0x47, 0x00C7)	/* LATIN CAPITAL LETTER C WITH CEDILLA */ \
1515	    UNI(0x48, 0x00C8)	/* LATIN CAPITAL LETTER E WITH GRAVE */ \
1516	    UNI(0x49, 0x00C9)	/* LATIN CAPITAL LETTER E WITH ACUTE */ \
1517	    UNI(0x4A, 0x00CA)	/* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \
1518	    UNI(0x4B, 0x00CB)	/* LATIN CAPITAL LETTER E WITH DIAERESIS */ \
1519	    UNI(0x4C, 0x00CC)	/* LATIN CAPITAL LETTER I WITH GRAVE */ \
1520	    UNI(0x4D, 0x00CD)	/* LATIN CAPITAL LETTER I WITH ACUTE */ \
1521	    UNI(0x4E, 0x00CE)	/* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \
1522	    UNI(0x4F, 0x00CF)	/* LATIN CAPITAL LETTER I WITH DIAERESIS */ \
1523	    UNI(0x50, 0x011E)	/* LATIN CAPITAL LETTER G WITH BREVE */ \
1524	    UNI(0x51, 0x00D1)	/* LATIN CAPITAL LETTER N WITH TILDE */ \
1525	    UNI(0x52, 0x00D2)	/* LATIN CAPITAL LETTER O WITH GRAVE */ \
1526	    UNI(0x53, 0x00D3)	/* LATIN CAPITAL LETTER O WITH ACUTE */ \
1527	    UNI(0x54, 0x00D4)	/* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \
1528	    UNI(0x55, 0x00D5)	/* LATIN CAPITAL LETTER O WITH TILDE */ \
1529	    UNI(0x56, 0x00D6)	/* LATIN CAPITAL LETTER O WITH DIAERESIS */ \
1530	    UNI(0x57, 0x00D7)	/* MULTIPLICATION SIGN */ \
1531	    UNI(0x58, 0x00D8)	/* LATIN CAPITAL LETTER O WITH STROKE */ \
1532	    UNI(0x59, 0x00D9)	/* LATIN CAPITAL LETTER U WITH GRAVE */ \
1533	    UNI(0x5A, 0x00DA)	/* LATIN CAPITAL LETTER U WITH ACUTE */ \
1534	    UNI(0x5B, 0x00DB)	/* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \
1535	    UNI(0x5C, 0x00DC)	/* LATIN CAPITAL LETTER U WITH DIAERESIS */ \
1536	    UNI(0x5D, 0x0130)	/* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \
1537	    UNI(0x5E, 0x015E)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
1538	    UNI(0x5F, 0x00DF)	/* LATIN SMALL LETTER SHARP S */ \
1539	    UNI(0x60, 0x00E0)	/* LATIN SMALL LETTER A WITH GRAVE */ \
1540	    UNI(0x61, 0x00E1)	/* LATIN SMALL LETTER A WITH ACUTE */ \
1541	    UNI(0x62, 0x00E2)	/* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \
1542	    UNI(0x63, 0x00E3)	/* LATIN SMALL LETTER A WITH TILDE */ \
1543	    UNI(0x64, 0x00E4)	/* LATIN SMALL LETTER A WITH DIAERESIS */ \
1544	    UNI(0x65, 0x00E5)	/* LATIN SMALL LETTER A WITH RING ABOVE */ \
1545	    UNI(0x66, 0x00E6)	/* LATIN SMALL LETTER AE */ \
1546	    UNI(0x67, 0x00E7)	/* LATIN SMALL LETTER C WITH CEDILLA */ \
1547	    UNI(0x68, 0x00E8)	/* LATIN SMALL LETTER E WITH GRAVE */ \
1548	    UNI(0x69, 0x00E9)	/* LATIN SMALL LETTER E WITH ACUTE */ \
1549	    UNI(0x6A, 0x00EA)	/* LATIN SMALL LETTER E WITH CIRCUMFLEX */ \
1550	    UNI(0x6B, 0x00EB)	/* LATIN SMALL LETTER E WITH DIAERESIS */ \
1551	    UNI(0x6C, 0x00EC)	/* LATIN SMALL LETTER I WITH GRAVE */ \
1552	    UNI(0x6D, 0x00ED)	/* LATIN SMALL LETTER I WITH ACUTE */ \
1553	    UNI(0x6E, 0x00EE)	/* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \
1554	    UNI(0x6F, 0x00EF)	/* LATIN SMALL LETTER I WITH DIAERESIS */ \
1555	    UNI(0x70, 0x011F)	/* LATIN SMALL LETTER G WITH BREVE */ \
1556	    UNI(0x71, 0x00F1)	/* LATIN SMALL LETTER N WITH TILDE */ \
1557	    UNI(0x72, 0x00F2)	/* LATIN SMALL LETTER O WITH GRAVE */ \
1558	    UNI(0x73, 0x00F3)	/* LATIN SMALL LETTER O WITH ACUTE */ \
1559	    UNI(0x74, 0x00F4)	/* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \
1560	    UNI(0x75, 0x00F5)	/* LATIN SMALL LETTER O WITH TILDE */ \
1561	    UNI(0x76, 0x00F6)	/* LATIN SMALL LETTER O WITH DIAERESIS */ \
1562	    UNI(0x77, 0x00F7)	/* DIVISION SIGN */ \
1563	    UNI(0x78, 0x00F8)	/* LATIN SMALL LETTER O WITH STROKE */ \
1564	    UNI(0x79, 0x00F9)	/* LATIN SMALL LETTER U WITH GRAVE */ \
1565	    UNI(0x7A, 0x00FA)	/* LATIN SMALL LETTER U WITH ACUTE */ \
1566	    UNI(0x7B, 0x00FB)	/* LATIN SMALL LETTER U WITH CIRCUMFLEX */ \
1567	    UNI(0x7C, 0x00FC)	/* LATIN SMALL LETTER U WITH DIAERESIS */ \
1568	    UNI(0x7D, 0x0131)	/* LATIN SMALL LETTER DOTLESS I */ \
1569	    UNI(0x7E, 0x015F)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
1570	    UNI(0x7F, 0x00FF)	/* LATIN SMALL LETTER Y WITH DIAERESIS */ \
1571	} \
1572	end_CODEPAGE()
1573
1574#define unmap_ISO_Latin_5(code,dft) \
1575	switch (code) { \
1576	    MAP(0x50, 0x4E)	/* LATIN CAPITAL LETTER G WITH BREVE */ \
1577	    MAP(0x5D, 0x4F)	/* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \
1578	    MAP(0x5E, 0x9F)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
1579	    MAP(0x70, 0x50)	/* LATIN SMALL LETTER G WITH BREVE */ \
1580	    MAP(0x7D, 0x51)	/* LATIN SMALL LETTER DOTLESS I */ \
1581	    MAP(0x7E, 0x2A)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
1582	    default: dft; break; \
1583	}
1584
1585/*
1586 * DEC Cyrillic from screenshot
1587 */
1588#define map_DEC_Cyrillic(code) \
1589	begin_CODEPAGE(94) \
1590	switch (code) { \
1591	    XXX(0x21, UNDEF)	/* undefined */ \
1592	    XXX(0x22, UNDEF)	/* undefined */ \
1593	    XXX(0x23, UNDEF)	/* undefined */ \
1594	    XXX(0x24, UNDEF)	/* undefined */ \
1595	    XXX(0x25, UNDEF)	/* undefined */ \
1596	    XXX(0x26, UNDEF)	/* undefined */ \
1597	    XXX(0x27, UNDEF)	/* undefined */ \
1598	    XXX(0x28, UNDEF)	/* undefined */ \
1599	    XXX(0x29, UNDEF)	/* undefined */ \
1600	    XXX(0x2A, UNDEF)	/* undefined */ \
1601	    XXX(0x2B, UNDEF)	/* undefined */ \
1602	    XXX(0x2C, UNDEF)	/* undefined */ \
1603	    XXX(0x2D, UNDEF)	/* undefined */ \
1604	    XXX(0x2E, UNDEF)	/* undefined */ \
1605	    XXX(0x2F, UNDEF)	/* undefined */ \
1606	    XXX(0x30, UNDEF)	/* undefined */ \
1607	    XXX(0x31, UNDEF)	/* undefined */ \
1608	    XXX(0x32, UNDEF)	/* undefined */ \
1609	    XXX(0x33, UNDEF)	/* undefined */ \
1610	    XXX(0x34, UNDEF)	/* undefined */ \
1611	    XXX(0x35, UNDEF)	/* undefined */ \
1612	    XXX(0x36, UNDEF)	/* undefined */ \
1613	    XXX(0x37, UNDEF)	/* undefined */ \
1614	    XXX(0x38, UNDEF)	/* undefined */ \
1615	    XXX(0x39, UNDEF)	/* undefined */ \
1616	    XXX(0x3A, UNDEF)	/* undefined */ \
1617	    XXX(0x3B, UNDEF)	/* undefined */ \
1618	    XXX(0x3C, UNDEF)	/* undefined */ \
1619	    XXX(0x3D, UNDEF)	/* undefined */ \
1620	    XXX(0x3E, UNDEF)	/* undefined */ \
1621	    XXX(0x3F, UNDEF)	/* undefined */ \
1622	    UNI(0x40, 0x044E)	/* CYRILLIC SMALL LETTER YU */ \
1623	    UNI(0x41, 0x0430)	/* CYRILLIC SMALL LETTER A */ \
1624	    UNI(0x42, 0x0431)	/* CYRILLIC SMALL LETTER BE */ \
1625	    UNI(0x43, 0x0446)	/* CYRILLIC SMALL LETTER TSE */ \
1626	    UNI(0x44, 0x0434)	/* CYRILLIC SMALL LETTER DE */ \
1627	    UNI(0x45, 0x0435)	/* CYRILLIC SMALL LETTER IE */ \
1628	    UNI(0x46, 0x0444)	/* CYRILLIC SMALL LETTER EF */ \
1629	    UNI(0x47, 0x0433)	/* CYRILLIC SMALL LETTER GHE */ \
1630	    UNI(0x48, 0x0445)	/* CYRILLIC SMALL LETTER HA */ \
1631	    UNI(0x49, 0x0438)	/* CYRILLIC SMALL LETTER I */ \
1632	    UNI(0x4A, 0x0439)	/* CYRILLIC SMALL LETTER SHORT I */ \
1633	    UNI(0x4B, 0x043A)	/* CYRILLIC SMALL LETTER KA */ \
1634	    UNI(0x4C, 0x043B)	/* CYRILLIC SMALL LETTER EL */ \
1635	    UNI(0x4D, 0x043C)	/* CYRILLIC SMALL LETTER EM */ \
1636	    UNI(0x4E, 0x043D)	/* CYRILLIC SMALL LETTER EN */ \
1637	    UNI(0x4F, 0x043E)	/* CYRILLIC SMALL LETTER O */ \
1638	    UNI(0x50, 0x043F)	/* CYRILLIC SMALL LETTER PE */ \
1639	    UNI(0x51, 0x044F)	/* CYRILLIC SMALL LETTER YA */ \
1640	    UNI(0x52, 0x0440)	/* CYRILLIC SMALL LETTER ER */ \
1641	    UNI(0x53, 0x0441)	/* CYRILLIC SMALL LETTER ES */ \
1642	    UNI(0x54, 0x0442)	/* CYRILLIC SMALL LETTER TE */ \
1643	    UNI(0x55, 0x0443)	/* CYRILLIC SMALL LETTER U */ \
1644	    UNI(0x56, 0x0436)	/* CYRILLIC SMALL LETTER ZHE */ \
1645	    UNI(0x57, 0x0432)	/* CYRILLIC SMALL LETTER VE */ \
1646	    UNI(0x58, 0x044C)	/* CYRILLIC SMALL LETTER SOFT SIGN */ \
1647	    UNI(0x59, 0x044B)	/* CYRILLIC SMALL LETTER YERU */ \
1648	    UNI(0x5A, 0x0437)	/* CYRILLIC SMALL LETTER ZE */ \
1649	    UNI(0x5B, 0x0448)	/* CYRILLIC SMALL LETTER SHA */ \
1650	    UNI(0x5C, 0x044D)	/* CYRILLIC SMALL LETTER E */ \
1651	    UNI(0x5D, 0x0449)	/* CYRILLIC SMALL LETTER SHCHA */ \
1652	    UNI(0x5E, 0x0447)	/* CYRILLIC SMALL LETTER CHE */ \
1653	    UNI(0x5F, 0x044A)	/* CYRILLIC SMALL LETTER HARD SIGN */ \
1654	    UNI(0x60, 0x042E)	/* CYRILLIC CAPITAL LETTER YU */ \
1655	    UNI(0x61, 0x0410)	/* CYRILLIC CAPITAL LETTER A */ \
1656	    UNI(0x62, 0x0411)	/* CYRILLIC CAPITAL LETTER BE */ \
1657	    UNI(0x63, 0x0426)	/* CYRILLIC CAPITAL LETTER TSE */ \
1658	    UNI(0x64, 0x0414)	/* CYRILLIC CAPITAL LETTER DE */ \
1659	    UNI(0x65, 0x0415)	/* CYRILLIC CAPITAL LETTER IE */ \
1660	    UNI(0x66, 0x0424)	/* CYRILLIC CAPITAL LETTER EF */ \
1661	    UNI(0x67, 0x0413)	/* CYRILLIC CAPITAL LETTER GHE */ \
1662	    UNI(0x68, 0x0425)	/* CYRILLIC CAPITAL LETTER HA */ \
1663	    UNI(0x69, 0x0418)	/* CYRILLIC CAPITAL LETTER I */ \
1664	    UNI(0x6A, 0x0419)	/* CYRILLIC CAPITAL LETTER SHORT I */ \
1665	    UNI(0x6B, 0x041A)	/* CYRILLIC CAPITAL LETTER KA */ \
1666	    UNI(0x6C, 0x041B)	/* CYRILLIC CAPITAL LETTER EL */ \
1667	    UNI(0x6D, 0x041C)	/* CYRILLIC CAPITAL LETTER EM */ \
1668	    UNI(0x6E, 0x041D)	/* CYRILLIC CAPITAL LETTER EN */ \
1669	    UNI(0x6F, 0x041E)	/* CYRILLIC CAPITAL LETTER O */ \
1670	    UNI(0x70, 0x041F)	/* CYRILLIC CAPITAL LETTER PE */ \
1671	    UNI(0x71, 0x042F)	/* CYRILLIC CAPITAL LETTER YA */ \
1672	    UNI(0x72, 0x0420)	/* CYRILLIC CAPITAL LETTER ER */ \
1673	    UNI(0x73, 0x0421)	/* CYRILLIC CAPITAL LETTER ES */ \
1674	    UNI(0x74, 0x0422)	/* CYRILLIC CAPITAL LETTER TE */ \
1675	    UNI(0x75, 0x0423)	/* CYRILLIC CAPITAL LETTER U */ \
1676	    UNI(0x76, 0x0416)	/* CYRILLIC CAPITAL LETTER ZHE */ \
1677	    UNI(0x77, 0x0412)	/* CYRILLIC CAPITAL LETTER VE */ \
1678	    UNI(0x78, 0x042C)	/* CYRILLIC CAPITAL LETTER SOFT SIGN */ \
1679	    UNI(0x79, 0x042B)	/* CYRILLIC CAPITAL LETTER YERU */ \
1680	    UNI(0x7A, 0x0417)	/* CYRILLIC CAPITAL LETTER ZE */ \
1681	    UNI(0x7B, 0x0428)	/* CYRILLIC CAPITAL LETTER SHA */ \
1682	    UNI(0x7C, 0x042D)	/* CYRILLIC CAPITAL LETTER E */ \
1683	    UNI(0x7D, 0x0429)	/* CYRILLIC CAPITAL LETTER SHCHA */ \
1684	    UNI(0x7E, 0x0427)	/* CYRILLIC CAPITAL LETTER CHE */ \
1685	} \
1686	end_CODEPAGE()
1687
1688#define unmap_DEC_Cyrillic(code,dft) \
1689	switch (code) { \
1690	    MAP(0x21, 0x1B)	/* undefined */ \
1691	    MAP(0x22, 0x1B)	/* undefined */ \
1692	    MAP(0x23, 0x1B)	/* undefined */ \
1693	    MAP(0x24, 0x1B)	/* undefined */ \
1694	    MAP(0x25, 0x1B)	/* undefined */ \
1695	    MAP(0x26, 0x1B)	/* undefined */ \
1696	    MAP(0x27, 0x1B)	/* undefined */ \
1697	    MAP(0x28, 0x1B)	/* undefined */ \
1698	    MAP(0x29, 0x1B)	/* undefined */ \
1699	    MAP(0x2A, 0x1B)	/* undefined */ \
1700	    MAP(0x2B, 0x1B)	/* undefined */ \
1701	    MAP(0x2C, 0x1B)	/* undefined */ \
1702	    MAP(0x2D, 0x1B)	/* undefined */ \
1703	    MAP(0x2E, 0x1B)	/* undefined */ \
1704	    MAP(0x2F, 0x1B)	/* undefined */ \
1705	    MAP(0x30, 0x1B)	/* undefined */ \
1706	    MAP(0x31, 0x1B)	/* undefined */ \
1707	    MAP(0x32, 0x1B)	/* undefined */ \
1708	    MAP(0x33, 0x1B)	/* undefined */ \
1709	    MAP(0x34, 0x1B)	/* undefined */ \
1710	    MAP(0x35, 0x1B)	/* undefined */ \
1711	    MAP(0x36, 0x1B)	/* undefined */ \
1712	    MAP(0x37, 0x1B)	/* undefined */ \
1713	    MAP(0x38, 0x1B)	/* undefined */ \
1714	    MAP(0x39, 0x1B)	/* undefined */ \
1715	    MAP(0x3A, 0x1B)	/* undefined */ \
1716	    MAP(0x3B, 0x1B)	/* undefined */ \
1717	    MAP(0x3C, 0x1B)	/* undefined */ \
1718	    MAP(0x3D, 0x1B)	/* undefined */ \
1719	    MAP(0x3E, 0x1B)	/* undefined */ \
1720	    MAP(0x3F, 0x1B)	/* undefined */ \
1721	    MAP(0x40, 0x4F)	/* CYRILLIC SMALL LETTER YU */ \
1722	    MAP(0x41, 0x31)	/* CYRILLIC SMALL LETTER A */ \
1723	    MAP(0x42, 0x32)	/* CYRILLIC SMALL LETTER BE */ \
1724	    MAP(0x43, 0x47)	/* CYRILLIC SMALL LETTER TSE */ \
1725	    MAP(0x44, 0x35)	/* CYRILLIC SMALL LETTER DE */ \
1726	    MAP(0x45, 0x36)	/* CYRILLIC SMALL LETTER IE */ \
1727	    MAP(0x46, 0x45)	/* CYRILLIC SMALL LETTER EF */ \
1728	    MAP(0x47, 0x34)	/* CYRILLIC SMALL LETTER GHE */ \
1729	    MAP(0x48, 0x46)	/* CYRILLIC SMALL LETTER HA */ \
1730	    MAP(0x49, 0x39)	/* CYRILLIC SMALL LETTER I */ \
1731	    MAP(0x4A, 0x3A)	/* CYRILLIC SMALL LETTER SHORT I */ \
1732	    MAP(0x4B, 0x3B)	/* CYRILLIC SMALL LETTER KA */ \
1733	    MAP(0x4C, 0x3C)	/* CYRILLIC SMALL LETTER EL */ \
1734	    MAP(0x4D, 0x3D)	/* CYRILLIC SMALL LETTER EM */ \
1735	    MAP(0x4E, 0x3E)	/* CYRILLIC SMALL LETTER EN */ \
1736	    MAP(0x4F, 0x3F)	/* CYRILLIC SMALL LETTER O */ \
1737	    MAP(0x50, 0x40)	/* CYRILLIC SMALL LETTER PE */ \
1738	    MAP(0x51, 0x50)	/* CYRILLIC SMALL LETTER YA */ \
1739	    MAP(0x52, 0x41)	/* CYRILLIC SMALL LETTER ER */ \
1740	    MAP(0x53, 0x42)	/* CYRILLIC SMALL LETTER ES */ \
1741	    MAP(0x54, 0x43)	/* CYRILLIC SMALL LETTER TE */ \
1742	    MAP(0x55, 0x44)	/* CYRILLIC SMALL LETTER U */ \
1743	    MAP(0x56, 0x37)	/* CYRILLIC SMALL LETTER ZHE */ \
1744	    MAP(0x57, 0x33)	/* CYRILLIC SMALL LETTER VE */ \
1745	    MAP(0x58, 0x4D)	/* CYRILLIC SMALL LETTER SOFT SIGN */ \
1746	    MAP(0x59, 0x4C)	/* CYRILLIC SMALL LETTER YERU */ \
1747	    MAP(0x5A, 0x38)	/* CYRILLIC SMALL LETTER ZE */ \
1748	    MAP(0x5B, 0x49)	/* CYRILLIC SMALL LETTER SHA */ \
1749	    MAP(0x5C, 0x4E)	/* CYRILLIC SMALL LETTER E */ \
1750	    MAP(0x5D, 0x4A)	/* CYRILLIC SMALL LETTER SHCHA */ \
1751	    MAP(0x5E, 0x48)	/* CYRILLIC SMALL LETTER CHE */ \
1752	    MAP(0x5F, 0x4B)	/* CYRILLIC SMALL LETTER HARD SIGN */ \
1753	    MAP(0x60, 0x2F)	/* CYRILLIC CAPITAL LETTER YU */ \
1754	    MAP(0x61, 0x11)	/* CYRILLIC CAPITAL LETTER A */ \
1755	    MAP(0x62, 0x12)	/* CYRILLIC CAPITAL LETTER BE */ \
1756	    MAP(0x63, 0x27)	/* CYRILLIC CAPITAL LETTER TSE */ \
1757	    MAP(0x64, 0x15)	/* CYRILLIC CAPITAL LETTER DE */ \
1758	    MAP(0x65, 0x16)	/* CYRILLIC CAPITAL LETTER IE */ \
1759	    MAP(0x66, 0x25)	/* CYRILLIC CAPITAL LETTER EF */ \
1760	    MAP(0x67, 0x14)	/* CYRILLIC CAPITAL LETTER GHE */ \
1761	    MAP(0x68, 0x26)	/* CYRILLIC CAPITAL LETTER HA */ \
1762	    MAP(0x69, 0x19)	/* CYRILLIC CAPITAL LETTER I */ \
1763	    MAP(0x6A, 0x1A)	/* CYRILLIC CAPITAL LETTER SHORT I */ \
1764	    MAP(0x6B, 0x1B)	/* CYRILLIC CAPITAL LETTER KA */ \
1765	    MAP(0x6C, 0x1C)	/* CYRILLIC CAPITAL LETTER EL */ \
1766	    MAP(0x6D, 0x1D)	/* CYRILLIC CAPITAL LETTER EM */ \
1767	    MAP(0x6E, 0x1E)	/* CYRILLIC CAPITAL LETTER EN */ \
1768	    MAP(0x6F, 0x1F)	/* CYRILLIC CAPITAL LETTER O */ \
1769	    MAP(0x70, 0x20)	/* CYRILLIC CAPITAL LETTER PE */ \
1770	    MAP(0x71, 0x30)	/* CYRILLIC CAPITAL LETTER YA */ \
1771	    MAP(0x72, 0x21)	/* CYRILLIC CAPITAL LETTER ER */ \
1772	    MAP(0x73, 0x22)	/* CYRILLIC CAPITAL LETTER ES */ \
1773	    MAP(0x74, 0x23)	/* CYRILLIC CAPITAL LETTER TE */ \
1774	    MAP(0x75, 0x24)	/* CYRILLIC CAPITAL LETTER U */ \
1775	    MAP(0x76, 0x17)	/* CYRILLIC CAPITAL LETTER ZHE */ \
1776	    MAP(0x77, 0x13)	/* CYRILLIC CAPITAL LETTER VE */ \
1777	    MAP(0x78, 0x2D)	/* CYRILLIC CAPITAL LETTER SOFT SIGN */ \
1778	    MAP(0x79, 0x2C)	/* CYRILLIC CAPITAL LETTER YERU */ \
1779	    MAP(0x7A, 0x18)	/* CYRILLIC CAPITAL LETTER ZE */ \
1780	    MAP(0x7B, 0x29)	/* CYRILLIC CAPITAL LETTER SHA */ \
1781	    MAP(0x7C, 0x2E)	/* CYRILLIC CAPITAL LETTER E */ \
1782	    MAP(0x7D, 0x2A)	/* CYRILLIC CAPITAL LETTER SHCHA */ \
1783	    MAP(0x7E, 0x28)	/* CYRILLIC CAPITAL LETTER CHE */ \
1784	    default: dft; break; \
1785	}
1786
1787/*
1788 * figure A-24 "DEC Greek Supplemental Character Set"
1789 */
1790#define map_DEC_Greek_Supp(code) \
1791	begin_CODEPAGE(94) \
1792	switch (code) { \
1793	    UNI(0x21, 0x00A1)	/* LEFT SINGLE QUOTATION MARK */ \
1794	    UNI(0x22, 0x00A2)	/* RIGHT SINGLE QUOTATION MARK */ \
1795	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
1796	    XXX(0x24, UNDEF)	/* EURO SIGN */ \
1797	    UNI(0x25, 0x00A5)	/* YEN SIGN */ \
1798	    XXX(0x26, UNDEF)	/* BROKEN BAR */ \
1799	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
1800	    UNI(0x28, 0x00A4)	/* CURRENCY SIGN */ \
1801	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
1802	    UNI(0x2A, 0x00AA)	/* FEMININE ORDINAL INDICATOR */ \
1803	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1804	    XXX(0x2C, UNDEF)	/* reserved */ \
1805	    XXX(0x2D, UNDEF)	/* reserved */ \
1806	    XXX(0x2E, UNDEF)	/* reserved */ \
1807	    XXX(0x2F, UNDEF)	/* reserved */ \
1808	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
1809	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
1810	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
1811	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
1812	    XXX(0x34, UNDEF)	/* reserved */ \
1813	    UNI(0x35, 0x00B5)	/* MICRO SIGN */ \
1814	    UNI(0x36, 0x00B6)	/* PILCROW SIGN */ \
1815	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
1816	    XXX(0x38, UNDEF)	/* reserved */ \
1817	    UNI(0x39, 0x00B9)	/* SUPERSCRIPT ONE */ \
1818	    UNI(0x3A, 0x00BA)	/* MASCULINE ORDINAL INDICATOR */ \
1819	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1820	    UNI(0x3C, 0x00BC)	/* VULGAR FRACTION ONE QUARTER */ \
1821	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
1822	    XXX(0x3E, UNDEF)	/* reserved */ \
1823	    UNI(0x3F, 0x00BF)	/* INVERTED QUESTION MARK */ \
1824	    UNI(0x40, 0x03CA)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \
1825	    UNI(0x41, 0x0391)	/* GREEK CAPITAL LETTER ALPHA */ \
1826	    UNI(0x42, 0x0392)	/* GREEK CAPITAL LETTER BETA */ \
1827	    UNI(0x43, 0x0393)	/* GREEK CAPITAL LETTER GAMMA */ \
1828	    UNI(0x44, 0x0394)	/* GREEK CAPITAL LETTER DELTA */ \
1829	    UNI(0x45, 0x0395)	/* GREEK CAPITAL LETTER EPSILON */ \
1830	    UNI(0x46, 0x0396)	/* GREEK CAPITAL LETTER ZETA */ \
1831	    UNI(0x47, 0x0397)	/* GREEK CAPITAL LETTER ETA */ \
1832	    UNI(0x48, 0x0398)	/* GREEK CAPITAL LETTER THETA */ \
1833	    UNI(0x49, 0x0399)	/* GREEK CAPITAL LETTER IOTA */ \
1834	    UNI(0x4A, 0x039A)	/* GREEK CAPITAL LETTER KAPPA */ \
1835	    UNI(0x4B, 0x039B)	/* GREEK CAPITAL LETTER LAMDA */ \
1836	    UNI(0x4C, 0x039C)	/* GREEK CAPITAL LETTER MU */ \
1837	    UNI(0x4D, 0x039D)	/* GREEK CAPITAL LETTER NU */ \
1838	    UNI(0x4E, 0x039E)	/* GREEK CAPITAL LETTER XI */ \
1839	    UNI(0x4F, 0x039F)	/* GREEK CAPITAL LETTER OMICRON */ \
1840	    XXX(0x50, UNDEF)	/* reserved */ \
1841	    UNI(0x51, 0x03A0)	/* GREEK CAPITAL LETTER PI */ \
1842	    UNI(0x52, 0x03A1)	/* GREEK CAPITAL LETTER RHO */ \
1843	    UNI(0x53, 0x03A3)	/* GREEK CAPITAL LETTER SIGMA */ \
1844	    UNI(0x54, 0x03A4)	/* GREEK CAPITAL LETTER TAU */ \
1845	    UNI(0x55, 0x03A5)	/* GREEK CAPITAL LETTER UPSILON */ \
1846	    UNI(0x56, 0x03A6)	/* GREEK CAPITAL LETTER PHI */ \
1847	    UNI(0x57, 0x03A7)	/* GREEK CAPITAL LETTER CHI */ \
1848	    UNI(0x58, 0x03A8)	/* GREEK CAPITAL LETTER PSI */ \
1849	    UNI(0x59, 0x03A9)	/* GREEK CAPITAL LETTER OMEGA */ \
1850	    UNI(0x5A, 0x03AC)	/* GREEK SMALL LETTER ALPHA WITH TONOS */ \
1851	    UNI(0x5B, 0x03AD)	/* GREEK SMALL LETTER EPSILON WITH TONOS */ \
1852	    UNI(0x5C, 0x03AE)	/* GREEK SMALL LETTER ETA WITH TONOS */ \
1853	    UNI(0x5D, 0x03AF)	/* GREEK SMALL LETTER IOTA WITH TONOS */ \
1854	    XXX(0x5E, UNDEF)	/* reserved */ \
1855	    UNI(0x5F, 0x03CC)	/* GREEK SMALL LETTER OMICRON WITH TONOS */ \
1856	    UNI(0x60, 0x03CB)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \
1857	    UNI(0x61, 0x03B1)	/* GREEK SMALL LETTER ALPHA */ \
1858	    UNI(0x62, 0x03B2)	/* GREEK SMALL LETTER BETA */ \
1859	    UNI(0x63, 0x03B3)	/* GREEK SMALL LETTER GAMMA */ \
1860	    UNI(0x64, 0x03B4)	/* GREEK SMALL LETTER DELTA */ \
1861	    UNI(0x65, 0x03B5)	/* GREEK SMALL LETTER EPSILON */ \
1862	    UNI(0x66, 0x03B6)	/* GREEK SMALL LETTER ZETA */ \
1863	    UNI(0x67, 0x03B7)	/* GREEK SMALL LETTER ETA */ \
1864	    UNI(0x68, 0x03B8)	/* GREEK SMALL LETTER THETA */ \
1865	    UNI(0x69, 0x03B9)	/* GREEK SMALL LETTER IOTA */ \
1866	    UNI(0x6A, 0x03BA)	/* GREEK SMALL LETTER KAPPA */ \
1867	    UNI(0x6B, 0x03BB)	/* GREEK SMALL LETTER LAMDA */ \
1868	    UNI(0x6C, 0x03BC)	/* GREEK SMALL LETTER MU */ \
1869	    UNI(0x6D, 0x03BD)	/* GREEK SMALL LETTER NU */ \
1870	    UNI(0x6E, 0x03BE)	/* GREEK SMALL LETTER XI */ \
1871	    UNI(0x6F, 0x03BF)	/* GREEK SMALL LETTER OMICRON */ \
1872	    XXX(0x70, UNDEF)	/* reserved */ \
1873	    UNI(0x71, 0x03C0)	/* GREEK SMALL LETTER PI */ \
1874	    UNI(0x72, 0x03C1)	/* GREEK SMALL LETTER RHO */ \
1875	    UNI(0x73, 0x03C3)	/* GREEK SMALL LETTER SIGMA */ \
1876	    UNI(0x74, 0x03C4)	/* GREEK SMALL LETTER TAU */ \
1877	    UNI(0x75, 0x03C5)	/* GREEK SMALL LETTER UPSILON */ \
1878	    UNI(0x76, 0x03C6)	/* GREEK SMALL LETTER PHI */ \
1879	    UNI(0x77, 0x03C7)	/* GREEK SMALL LETTER CHI */ \
1880	    UNI(0x78, 0x03C8)	/* GREEK SMALL LETTER PSI */ \
1881	    UNI(0x79, 0x03C9)	/* GREEK SMALL LETTER OMEGA */ \
1882	    UNI(0x7A, 0x03C2)	/* GREEK SMALL LETTER FINAL SIGMA */ \
1883	    UNI(0x7B, 0x03CD)	/* GREEK SMALL LETTER UPSILON WITH TONOS */ \
1884	    UNI(0x7C, 0x03CE)	/* GREEK SMALL LETTER OMEGA WITH TONOS */ \
1885	    UNI(0x7D, 0x0384)	/* GREEK TONOS */ \
1886	    XXX(0x7E, UNDEF)	/* reserved */ \
1887	} \
1888	end_CODEPAGE()
1889
1890#define unmap_DEC_Greek_Supp(code,dft) \
1891	switch (code) { \
1892	    MAP(0x24, 0x1B)	/* EURO SIGN */ \
1893	    MAP(0x26, 0x1B)	/* BROKEN BAR */ \
1894	    MAP(0x28, 0xA4)	/* CURRENCY SIGN */ \
1895	    MAP(0x2C, 0x1B)	/* reserved */ \
1896	    MAP(0x2D, 0x1B)	/* reserved */ \
1897	    MAP(0x2E, 0x1B)	/* reserved */ \
1898	    MAP(0x2F, 0x1B)	/* reserved */ \
1899	    MAP(0x34, 0x1B)	/* reserved */ \
1900	    MAP(0x38, 0x1B)	/* reserved */ \
1901	    MAP(0x3E, 0x1B)	/* reserved */ \
1902	    MAP(0x40, 0xD0)	/* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \
1903	    MAP(0x41, 0x76)	/* GREEK CAPITAL LETTER ALPHA */ \
1904	    MAP(0x42, 0x77)	/* GREEK CAPITAL LETTER BETA */ \
1905	    MAP(0x43, 0x78)	/* GREEK CAPITAL LETTER GAMMA */ \
1906	    MAP(0x44, 0x79)	/* GREEK CAPITAL LETTER DELTA */ \
1907	    MAP(0x45, 0x7A)	/* GREEK CAPITAL LETTER EPSILON */ \
1908	    MAP(0x46, 0x7B)	/* GREEK CAPITAL LETTER ZETA */ \
1909	    MAP(0x47, 0x7C)	/* GREEK CAPITAL LETTER ETA */ \
1910	    MAP(0x48, 0x7D)	/* GREEK CAPITAL LETTER THETA */ \
1911	    MAP(0x49, 0x7E)	/* GREEK CAPITAL LETTER IOTA */ \
1912	    MAP(0x4A, 0x7F)	/* GREEK CAPITAL LETTER KAPPA */ \
1913	    MAP(0x4B, 0xA2)	/* GREEK CAPITAL LETTER LAMDA */ \
1914	    MAP(0x4C, 0xA3)	/* GREEK CAPITAL LETTER MU */ \
1915	    MAP(0x4D, 0xA4)	/* GREEK CAPITAL LETTER NU */ \
1916	    MAP(0x4E, 0xA5)	/* GREEK CAPITAL LETTER XI */ \
1917	    MAP(0x4F, 0xA6)	/* GREEK CAPITAL LETTER OMICRON */ \
1918	    MAP(0x50, 0x1B)	/* reserved */ \
1919	    MAP(0x51, 0xA7)	/* GREEK CAPITAL LETTER PI */ \
1920	    MAP(0x52, 0xA8)	/* GREEK CAPITAL LETTER RHO */ \
1921	    MAP(0x53, 0xA9)	/* GREEK CAPITAL LETTER SIGMA */ \
1922	    MAP(0x54, 0xAA)	/* GREEK CAPITAL LETTER TAU */ \
1923	    MAP(0x55, 0xAB)	/* GREEK CAPITAL LETTER UPSILON */ \
1924	    MAP(0x56, 0xAC)	/* GREEK CAPITAL LETTER PHI */ \
1925	    MAP(0x57, 0xAD)	/* GREEK CAPITAL LETTER CHI */ \
1926	    MAP(0x58, 0xAE)	/* GREEK CAPITAL LETTER PSI */ \
1927	    MAP(0x59, 0xAF)	/* GREEK CAPITAL LETTER OMEGA */ \
1928	    MAP(0x5A, 0xB2)	/* GREEK SMALL LETTER ALPHA WITH TONOS */ \
1929	    MAP(0x5B, 0xB3)	/* GREEK SMALL LETTER EPSILON WITH TONOS */ \
1930	    MAP(0x5C, 0xB4)	/* GREEK SMALL LETTER ETA WITH TONOS */ \
1931	    MAP(0x5D, 0xB5)	/* GREEK SMALL LETTER IOTA WITH TONOS */ \
1932	    MAP(0x5E, 0x1B)	/* reserved */ \
1933	    MAP(0x5F, 0xD2)	/* GREEK SMALL LETTER OMICRON WITH TONOS */ \
1934	    MAP(0x60, 0xD1)	/* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \
1935	    MAP(0x61, 0xB7)	/* GREEK SMALL LETTER ALPHA */ \
1936	    MAP(0x62, 0xB8)	/* GREEK SMALL LETTER BETA */ \
1937	    MAP(0x63, 0xB9)	/* GREEK SMALL LETTER GAMMA */ \
1938	    MAP(0x64, 0xBA)	/* GREEK SMALL LETTER DELTA */ \
1939	    MAP(0x65, 0xBB)	/* GREEK SMALL LETTER EPSILON */ \
1940	    MAP(0x66, 0xBC)	/* GREEK SMALL LETTER ZETA */ \
1941	    MAP(0x67, 0xBD)	/* GREEK SMALL LETTER ETA */ \
1942	    MAP(0x68, 0xBE)	/* GREEK SMALL LETTER THETA */ \
1943	    MAP(0x69, 0xBF)	/* GREEK SMALL LETTER IOTA */ \
1944	    MAP(0x6A, 0xC0)	/* GREEK SMALL LETTER KAPPA */ \
1945	    MAP(0x6B, 0xC1)	/* GREEK SMALL LETTER LAMDA */ \
1946	    MAP(0x6C, 0xC2)	/* GREEK SMALL LETTER MU */ \
1947	    MAP(0x6D, 0xC3)	/* GREEK SMALL LETTER NU */ \
1948	    MAP(0x6E, 0xC4)	/* GREEK SMALL LETTER XI */ \
1949	    MAP(0x6F, 0xC5)	/* GREEK SMALL LETTER OMICRON */ \
1950	    MAP(0x70, 0x1B)	/* reserved */ \
1951	    MAP(0x71, 0xC6)	/* GREEK SMALL LETTER PI */ \
1952	    MAP(0x72, 0xC7)	/* GREEK SMALL LETTER RHO */ \
1953	    MAP(0x73, 0xC9)	/* GREEK SMALL LETTER SIGMA */ \
1954	    MAP(0x74, 0xCA)	/* GREEK SMALL LETTER TAU */ \
1955	    MAP(0x75, 0xCB)	/* GREEK SMALL LETTER UPSILON */ \
1956	    MAP(0x76, 0xCC)	/* GREEK SMALL LETTER PHI */ \
1957	    MAP(0x77, 0xCD)	/* GREEK SMALL LETTER CHI */ \
1958	    MAP(0x78, 0xCE)	/* GREEK SMALL LETTER PSI */ \
1959	    MAP(0x79, 0xCF)	/* GREEK SMALL LETTER OMEGA */ \
1960	    MAP(0x7A, 0xC8)	/* GREEK SMALL LETTER FINAL SIGMA */ \
1961	    MAP(0x7B, 0xD3)	/* GREEK SMALL LETTER UPSILON WITH TONOS */ \
1962	    MAP(0x7C, 0xD4)	/* GREEK SMALL LETTER OMEGA WITH TONOS */ \
1963	    MAP(0x7D, 0x96)	/* GREEK TONOS */ \
1964	    MAP(0x7E, 0x1B)	/* reserved */ \
1965	    default: dft; break; \
1966	}
1967
1968/*
1969 * figure A-22 "DEC Hebrew Supplemental Character Set"
1970 */
1971#define map_DEC_Hebrew_Supp(code) \
1972	begin_CODEPAGE(94) \
1973	switch (code) { \
1974	    UNI(0x21, 0x00A1)	/* INVERTED EXCLAMATION MARK */ \
1975	    UNI(0x22, 0x00A2)	/* CENT SIGN */ \
1976	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
1977	    XXX(0x24, UNDEF)	/* CURRENCY SIGN */ \
1978	    UNI(0x25, 0x00A5)	/* YEN SIGN */ \
1979	    XXX(0x26, UNDEF)	/* BROKEN BAR */ \
1980	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
1981	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
1982	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
1983	    UNI(0x2A, 0x00D7)	/* MULTIPLICATION SIGN */ \
1984	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
1985	    XXX(0x2C, UNDEF)	/* NOT SIGN */ \
1986	    XXX(0x2D, UNDEF)	/* SOFT HYPHEN */ \
1987	    XXX(0x2E, UNDEF)	/* REGISTERED SIGN */ \
1988	    XXX(0x2F, UNDEF)	/* MACRON */ \
1989	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
1990	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
1991	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
1992	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
1993	    XXX(0x34, UNDEF)	/* ACUTE ACCENT */ \
1994	    UNI(0x35, 0x00B5)	/* MICRO SIGN */ \
1995	    UNI(0x36, 0x00B6)	/* PILCROW SIGN */ \
1996	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
1997	    XXX(0x38, UNDEF)	/* CEDILLA */ \
1998	    UNI(0x39, 0x00B9)	/* SUPERSCRIPT ONE */ \
1999	    UNI(0x3A, 0x00F7)	/* DIVISION SIGN */ \
2000	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
2001	    UNI(0x3C, 0x00BC)	/* VULGAR FRACTION ONE QUARTER */ \
2002	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
2003	    XXX(0x3E, UNDEF)	/* VULGAR FRACTION THREE QUARTERS */ \
2004	    UNI(0x3F, 0x00BF)	/* INVERTED QUESTION MARK */ \
2005	    XXX(0x40, UNDEF)	/* reserved */ \
2006	    XXX(0x41, UNDEF)	/* reserved */ \
2007	    XXX(0x42, UNDEF)	/* reserved */ \
2008	    XXX(0x43, UNDEF)	/* reserved */ \
2009	    XXX(0x44, UNDEF)	/* reserved */ \
2010	    XXX(0x45, UNDEF)	/* reserved */ \
2011	    XXX(0x46, UNDEF)	/* reserved */ \
2012	    XXX(0x47, UNDEF)	/* reserved */ \
2013	    XXX(0x48, UNDEF)	/* reserved */ \
2014	    XXX(0x49, UNDEF)	/* reserved */ \
2015	    XXX(0x4A, UNDEF)	/* reserved */ \
2016	    XXX(0x4B, UNDEF)	/* reserved */ \
2017	    XXX(0x4C, UNDEF)	/* reserved */ \
2018	    XXX(0x4D, UNDEF)	/* reserved */ \
2019	    XXX(0x4E, UNDEF)	/* reserved */ \
2020	    XXX(0x4F, UNDEF)	/* reserved */ \
2021	    XXX(0x50, UNDEF)	/* reserved */ \
2022	    XXX(0x51, UNDEF)	/* reserved */ \
2023	    XXX(0x52, UNDEF)	/* reserved */ \
2024	    XXX(0x53, UNDEF)	/* reserved */ \
2025	    XXX(0x54, UNDEF)	/* reserved */ \
2026	    XXX(0x55, UNDEF)	/* reserved */ \
2027	    XXX(0x56, UNDEF)	/* reserved */ \
2028	    XXX(0x57, UNDEF)	/* reserved */ \
2029	    XXX(0x58, UNDEF)	/* reserved */ \
2030	    XXX(0x59, UNDEF)	/* reserved */ \
2031	    XXX(0x5A, UNDEF)	/* reserved */ \
2032	    XXX(0x5B, UNDEF)	/* reserved */ \
2033	    XXX(0x5C, UNDEF)	/* reserved */ \
2034	    XXX(0x5D, UNDEF)	/* reserved */ \
2035	    XXX(0x5E, UNDEF)	/* reserved */ \
2036	    XXX(0x5F, UNDEF)	/* reserved */ \
2037	    UNI(0x60, 0x05D0)	/* HEBREW LETTER ALEF */ \
2038	    UNI(0x61, 0x05D1)	/* HEBREW LETTER BET */ \
2039	    UNI(0x62, 0x05D2)	/* HEBREW LETTER GIMEL */ \
2040	    UNI(0x63, 0x05D3)	/* HEBREW LETTER DALET */ \
2041	    UNI(0x64, 0x05D4)	/* HEBREW LETTER HE */ \
2042	    UNI(0x65, 0x05D5)	/* HEBREW LETTER VAV */ \
2043	    UNI(0x66, 0x05D6)	/* HEBREW LETTER ZAYIN */ \
2044	    UNI(0x67, 0x05D7)	/* HEBREW LETTER HET */ \
2045	    UNI(0x68, 0x05D8)	/* HEBREW LETTER TET */ \
2046	    UNI(0x69, 0x05D9)	/* HEBREW LETTER YOD */ \
2047	    UNI(0x6A, 0x05DA)	/* HEBREW LETTER FINAL KAF */ \
2048	    UNI(0x6B, 0x05DB)	/* HEBREW LETTER KAF */ \
2049	    UNI(0x6C, 0x05DC)	/* HEBREW LETTER LAMED */ \
2050	    UNI(0x6D, 0x05DD)	/* HEBREW LETTER FINAL MEM */ \
2051	    UNI(0x6E, 0x05DE)	/* HEBREW LETTER MEM */ \
2052	    UNI(0x6F, 0x05DF)	/* HEBREW LETTER FINAL NUN */ \
2053	    UNI(0x70, 0x05E0)	/* HEBREW LETTER NUN */ \
2054	    UNI(0x71, 0x05E1)	/* HEBREW LETTER SAMEKH */ \
2055	    UNI(0x72, 0x05E2)	/* HEBREW LETTER AYIN */ \
2056	    UNI(0x73, 0x05E3)	/* HEBREW LETTER FINAL PE */ \
2057	    UNI(0x74, 0x05E4)	/* HEBREW LETTER PE */ \
2058	    UNI(0x75, 0x05E5)	/* HEBREW LETTER FINAL TSADI */ \
2059	    UNI(0x76, 0x05E6)	/* HEBREW LETTER TSADI */ \
2060	    UNI(0x77, 0x05E7)	/* HEBREW LETTER QOF */ \
2061	    UNI(0x78, 0x05E8)	/* HEBREW LETTER RESH */ \
2062	    UNI(0x79, 0x05E9)	/* HEBREW LETTER SHIN */ \
2063	    UNI(0x7A, 0x05EA)	/* HEBREW LETTER TAV */ \
2064	    XXX(0x7B, UNDEF)	/* reserved */ \
2065	    XXX(0x7C, UNDEF)	/* reserved */ \
2066	    XXX(0x7D, UNDEF)	/* reserved */ \
2067	    XXX(0x7E, UNDEF)	/* reserved */ \
2068	} \
2069	end_CODEPAGE()
2070
2071#define unmap_DEC_Hebrew_Supp(code,dft) \
2072	switch (code) { \
2073	    MAP(0x24, 0x1B)	/* CURRENCY SIGN */ \
2074	    MAP(0x26, 0x1B)	/* BROKEN BAR */ \
2075	    MAP(0x28, 0xA4)	/* DIAERESIS */ \
2076	    MAP(0x2C, 0x1B)	/* NOT SIGN */ \
2077	    MAP(0x2D, 0x1B)	/* SOFT HYPHEN */ \
2078	    MAP(0x2E, 0x1B)	/* REGISTERED SIGN */ \
2079	    MAP(0x2F, 0x1B)	/* MACRON */ \
2080	    MAP(0x34, 0x1B)	/* ACUTE ACCENT */ \
2081	    MAP(0x38, 0x1B)	/* CEDILLA */ \
2082	    MAP(0x3E, 0x1B)	/* VULGAR FRACTION THREE QUARTERS */ \
2083	    MAP(0x40, 0x1B)	/* reserved */ \
2084	    MAP(0x41, 0x1B)	/* reserved */ \
2085	    MAP(0x42, 0x1B)	/* reserved */ \
2086	    MAP(0x43, 0x1B)	/* reserved */ \
2087	    MAP(0x44, 0x1B)	/* reserved */ \
2088	    MAP(0x45, 0x1B)	/* reserved */ \
2089	    MAP(0x46, 0x1B)	/* reserved */ \
2090	    MAP(0x47, 0x1B)	/* reserved */ \
2091	    MAP(0x48, 0x1B)	/* reserved */ \
2092	    MAP(0x49, 0x1B)	/* reserved */ \
2093	    MAP(0x4A, 0x1B)	/* reserved */ \
2094	    MAP(0x4B, 0x1B)	/* reserved */ \
2095	    MAP(0x4C, 0x1B)	/* reserved */ \
2096	    MAP(0x4D, 0x1B)	/* reserved */ \
2097	    MAP(0x4E, 0x1B)	/* reserved */ \
2098	    MAP(0x4F, 0x1B)	/* reserved */ \
2099	    MAP(0x50, 0x1B)	/* reserved */ \
2100	    MAP(0x51, 0x1B)	/* reserved */ \
2101	    MAP(0x52, 0x1B)	/* reserved */ \
2102	    MAP(0x53, 0x1B)	/* reserved */ \
2103	    MAP(0x54, 0x1B)	/* reserved */ \
2104	    MAP(0x55, 0x1B)	/* reserved */ \
2105	    MAP(0x56, 0x1B)	/* reserved */ \
2106	    MAP(0x57, 0x1B)	/* reserved */ \
2107	    MAP(0x58, 0x1B)	/* reserved */ \
2108	    MAP(0x59, 0x1B)	/* reserved */ \
2109	    MAP(0x5A, 0x1B)	/* reserved */ \
2110	    MAP(0x5B, 0x1B)	/* reserved */ \
2111	    MAP(0x5C, 0x1B)	/* reserved */ \
2112	    MAP(0x5D, 0x1B)	/* reserved */ \
2113	    MAP(0x5E, 0x1B)	/* reserved */ \
2114	    MAP(0x5F, 0x1B)	/* reserved */ \
2115	    MAP(0x60, 0x53)	/* HEBREW LETTER ALEF */ \
2116	    MAP(0x61, 0x54)	/* HEBREW LETTER BET */ \
2117	    MAP(0x62, 0x55)	/* HEBREW LETTER GIMEL */ \
2118	    MAP(0x63, 0x56)	/* HEBREW LETTER DALET */ \
2119	    MAP(0x64, 0x57)	/* HEBREW LETTER HE */ \
2120	    MAP(0x65, 0x58)	/* HEBREW LETTER VAV */ \
2121	    MAP(0x66, 0x59)	/* HEBREW LETTER ZAYIN */ \
2122	    MAP(0x67, 0x5A)	/* HEBREW LETTER HET */ \
2123	    MAP(0x68, 0x5B)	/* HEBREW LETTER TET */ \
2124	    MAP(0x69, 0x5C)	/* HEBREW LETTER YOD */ \
2125	    MAP(0x6A, 0x5D)	/* HEBREW LETTER FINAL KAF */ \
2126	    MAP(0x6B, 0x5E)	/* HEBREW LETTER KAF */ \
2127	    MAP(0x6C, 0x5F)	/* HEBREW LETTER LAMED */ \
2128	    MAP(0x6D, 0x60)	/* HEBREW LETTER FINAL MEM */ \
2129	    MAP(0x6E, 0x61)	/* HEBREW LETTER MEM */ \
2130	    MAP(0x6F, 0x62)	/* HEBREW LETTER FINAL NUN */ \
2131	    MAP(0x70, 0x63)	/* HEBREW LETTER NUN */ \
2132	    MAP(0x71, 0x64)	/* HEBREW LETTER SAMEKH */ \
2133	    MAP(0x72, 0x65)	/* HEBREW LETTER AYIN */ \
2134	    MAP(0x73, 0x66)	/* HEBREW LETTER FINAL PE */ \
2135	    MAP(0x74, 0x67)	/* HEBREW LETTER PE */ \
2136	    MAP(0x75, 0x68)	/* HEBREW LETTER FINAL TSADI */ \
2137	    MAP(0x76, 0x69)	/* HEBREW LETTER TSADI */ \
2138	    MAP(0x77, 0x6A)	/* HEBREW LETTER QOF */ \
2139	    MAP(0x78, 0x6B)	/* HEBREW LETTER RESH */ \
2140	    MAP(0x79, 0x6C)	/* HEBREW LETTER SHIN */ \
2141	    MAP(0x7A, 0x6D)	/* HEBREW LETTER TAV */ \
2142	    MAP(0x7B, 0x1B)	/* reserved */ \
2143	    MAP(0x7C, 0x1B)	/* reserved */ \
2144	    MAP(0x7D, 0x1B)	/* reserved */ \
2145	    MAP(0x7E, 0x1B)	/* reserved */ \
2146	    default: dft; break; \
2147	}
2148
2149/*
2150 * figure A-27 "DEC 8-Bit Turkish Supplemental Character Set"
2151 */
2152#define map_DEC_Turkish_Supp(code) \
2153	begin_CODEPAGE(94) \
2154	switch (code) { \
2155	    UNI(0x21, 0x00A1)	/* INVERTED EXCLAMATION MARK */ \
2156	    UNI(0x22, 0x00A2)	/* CENT SIGN */ \
2157	    UNI(0x23, 0x00A3)	/* POUND SIGN */ \
2158	    XXX(0x24, UNDEF)	/* reserved */ \
2159	    UNI(0x25, 0x00A5)	/* YEN SIGN */ \
2160	    XXX(0x26, UNDEF)	/* reserved */ \
2161	    UNI(0x27, 0x00A7)	/* SECTION SIGN */ \
2162	    UNI(0x28, 0x00A8)	/* DIAERESIS */ \
2163	    UNI(0x29, 0x00A9)	/* COPYRIGHT SIGN */ \
2164	    UNI(0x2A, 0x00AA)	/* FEMININE ORDINAL INDICATOR */ \
2165	    UNI(0x2B, 0x00AB)	/* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
2166	    XXX(0x2C, UNDEF)	/* reserved */ \
2167	    XXX(0x2D, UNDEF)	/* reserved */ \
2168	    UNI(0x2E, 0x0130)	/* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \
2169	    XXX(0x2F, UNDEF)	/* reserved */ \
2170	    UNI(0x30, 0x00B0)	/* DEGREE SIGN */ \
2171	    UNI(0x31, 0x00B1)	/* PLUS-MINUS SIGN */ \
2172	    UNI(0x32, 0x00B2)	/* SUPERSCRIPT TWO */ \
2173	    UNI(0x33, 0x00B3)	/* SUPERSCRIPT THREE */ \
2174	    XXX(0x34, UNDEF)	/* reserved */ \
2175	    UNI(0x35, 0x00B5)	/* MICRO SIGN */ \
2176	    UNI(0x36, 0x00B6)	/* PILCROW SIGN */ \
2177	    UNI(0x37, 0x00B7)	/* MIDDLE DOT */ \
2178	    XXX(0x38, UNDEF)	/* reserved */ \
2179	    UNI(0x39, 0x00B9)	/* SUPERSCRIPT ONE */ \
2180	    UNI(0x3A, 0x00BA)	/* MASCULINE ORDINAL INDICATOR */ \
2181	    UNI(0x3B, 0x00BB)	/* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \
2182	    UNI(0x3C, 0x00BC)	/* VULGAR FRACTION ONE QUARTER */ \
2183	    UNI(0x3D, 0x00BD)	/* VULGAR FRACTION ONE HALF */ \
2184	    UNI(0x3E, 0x0131)	/* LATIN SMALL LETTER DOTLESS I */ \
2185	    UNI(0x3F, 0x00BF)	/* INVERTED QUESTION MARK */ \
2186	    UNI(0x40, 0x00C0)	/* LATIN CAPITAL LETTER A WITH GRAVE */ \
2187	    UNI(0x41, 0x00C1)	/* LATIN CAPITAL LETTER A WITH ACUTE */ \
2188	    UNI(0x42, 0x00C2)	/* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \
2189	    UNI(0x43, 0x00C3)	/* LATIN CAPITAL LETTER A WITH TILDE */ \
2190	    UNI(0x44, 0x00C4)	/* LATIN CAPITAL LETTER A WITH DIAERESIS */ \
2191	    UNI(0x45, 0x00C5)	/* LATIN CAPITAL LETTER A WITH RING ABOVE */ \
2192	    UNI(0x46, 0x00C6)	/* LATIN CAPITAL LETTER AE */ \
2193	    UNI(0x47, 0x00C7)	/* LATIN CAPITAL LETTER C WITH CEDILLA */ \
2194	    UNI(0x48, 0x00C8)	/* LATIN CAPITAL LETTER E WITH GRAVE */ \
2195	    UNI(0x49, 0x00C9)	/* LATIN CAPITAL LETTER E WITH ACUTE */ \
2196	    UNI(0x4A, 0x00CA)	/* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \
2197	    UNI(0x4B, 0x00CB)	/* LATIN CAPITAL LETTER E WITH DIAERESIS */ \
2198	    UNI(0x4C, 0x00CC)	/* LATIN CAPITAL LETTER I WITH GRAVE */ \
2199	    UNI(0x4D, 0x00CD)	/* LATIN CAPITAL LETTER I WITH ACUTE */ \
2200	    UNI(0x4E, 0x00CE)	/* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \
2201	    UNI(0x4F, 0x00CF)	/* LATIN CAPITAL LETTER I WITH DIAERESIS */ \
2202	    UNI(0x50, 0x011E)	/* LATIN CAPITAL LETTER G WITH BREVE */ \
2203	    UNI(0x51, 0x00D1)	/* LATIN CAPITAL LETTER N WITH TILDE */ \
2204	    UNI(0x52, 0x00D2)	/* LATIN CAPITAL LETTER O WITH GRAVE */ \
2205	    UNI(0x53, 0x00D3)	/* LATIN CAPITAL LETTER O WITH ACUTE */ \
2206	    UNI(0x54, 0x00D4)	/* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \
2207	    UNI(0x55, 0x00D5)	/* LATIN CAPITAL LETTER O WITH TILDE */ \
2208	    UNI(0x56, 0x00D6)	/* LATIN CAPITAL LETTER O WITH DIAERESIS */ \
2209	    UNI(0x57, 0x0152)	/* LATIN CAPITAL LIGATURE OE */ \
2210	    UNI(0x58, 0x00D8)	/* LATIN CAPITAL LETTER O WITH STROKE */ \
2211	    UNI(0x59, 0x00D9)	/* LATIN CAPITAL LETTER U WITH GRAVE */ \
2212	    UNI(0x5A, 0x00DA)	/* LATIN CAPITAL LETTER U WITH ACUTE */ \
2213	    UNI(0x5B, 0x00DB)	/* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \
2214	    UNI(0x5C, 0x00DC)	/* LATIN CAPITAL LETTER U WITH DIAERESIS */ \
2215	    UNI(0x5D, 0x0178)	/* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \
2216	    UNI(0x5E, 0x015E)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
2217	    UNI(0x5F, 0x00DF)	/* LATIN SMALL LETTER SHARP S */ \
2218	    UNI(0x60, 0x00E0)	/* LATIN SMALL LETTER A WITH GRAVE */ \
2219	    UNI(0x61, 0x00E1)	/* LATIN SMALL LETTER A WITH ACUTE */ \
2220	    UNI(0x62, 0x00E2)	/* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \
2221	    UNI(0x63, 0x00E3)	/* LATIN SMALL LETTER A WITH TILDE */ \
2222	    UNI(0x64, 0x00E4)	/* LATIN SMALL LETTER A WITH DIAERESIS */ \
2223	    UNI(0x65, 0x00E5)	/* LATIN SMALL LETTER A WITH RING ABOVE */ \
2224	    UNI(0x66, 0x00E6)	/* LATIN SMALL LETTER AE */ \
2225	    UNI(0x67, 0x00E7)	/* LATIN SMALL LETTER C WITH CEDILLA */ \
2226	    UNI(0x68, 0x00E8)	/* LATIN SMALL LETTER E WITH GRAVE */ \
2227	    UNI(0x69, 0x00E9)	/* LATIN SMALL LETTER E WITH ACUTE */ \
2228	    UNI(0x6A, 0x00EA)	/* LATIN SMALL LETTER E WITH CIRCUMFLEX */ \
2229	    UNI(0x6B, 0x00EB)	/* LATIN SMALL LETTER E WITH DIAERESIS */ \
2230	    UNI(0x6C, 0x00EC)	/* LATIN SMALL LETTER I WITH GRAVE */ \
2231	    UNI(0x6D, 0x00ED)	/* LATIN SMALL LETTER I WITH ACUTE */ \
2232	    UNI(0x6E, 0x00EE)	/* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \
2233	    UNI(0x6F, 0x00EF)	/* LATIN SMALL LETTER I WITH DIAERESIS */ \
2234	    UNI(0x70, 0x011F)	/* LATIN SMALL LETTER G WITH BREVE */ \
2235	    UNI(0x71, 0x00F1)	/* LATIN SMALL LETTER N WITH TILDE */ \
2236	    UNI(0x72, 0x00F2)	/* LATIN SMALL LETTER O WITH GRAVE */ \
2237	    UNI(0x73, 0x00F3)	/* LATIN SMALL LETTER O WITH ACUTE */ \
2238	    UNI(0x74, 0x00F4)	/* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \
2239	    UNI(0x75, 0x00F5)	/* LATIN SMALL LETTER O WITH TILDE */ \
2240	    UNI(0x76, 0x00F6)	/* LATIN SMALL LETTER O WITH DIAERESIS */ \
2241	    UNI(0x77, 0x0153)	/* LATIN SMALL LIGATURE OE */ \
2242	    UNI(0x78, 0x00F8)	/* LATIN SMALL LETTER O WITH STROKE */ \
2243	    UNI(0x79, 0x00F9)	/* LATIN SMALL LETTER U WITH GRAVE */ \
2244	    UNI(0x7A, 0x00FA)	/* LATIN SMALL LETTER U WITH ACUTE */ \
2245	    UNI(0x7B, 0x00FB)	/* LATIN SMALL LETTER U WITH CIRCUMFLEX */ \
2246	    UNI(0x7C, 0x00FC)	/* LATIN SMALL LETTER U WITH DIAERESIS */ \
2247	    UNI(0x7D, 0x00FF)	/* LATIN SMALL LETTER Y WITH DIAERESIS */ \
2248	    UNI(0x7E, 0x015F)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
2249	} \
2250	end_CODEPAGE()
2251
2252#define unmap_DEC_Turkish_Supp(code,dft) \
2253	switch (code) { \
2254	    MAP(0x24, 0x1B)	/* reserved */ \
2255	    MAP(0x26, 0x1B)	/* reserved */ \
2256	    MAP(0x28, 0xA4)	/* DIAERESIS */ \
2257	    MAP(0x2C, 0x1B)	/* reserved */ \
2258	    MAP(0x2D, 0x1B)	/* reserved */ \
2259	    MAP(0x2E, 0x4F)	/* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \
2260	    MAP(0x2F, 0x1B)	/* reserved */ \
2261	    MAP(0x34, 0x1B)	/* reserved */ \
2262	    MAP(0x38, 0x1B)	/* reserved */ \
2263	    MAP(0x3E, 0x51)	/* LATIN SMALL LETTER DOTLESS I */ \
2264	    MAP(0x50, 0x4E)	/* LATIN CAPITAL LETTER G WITH BREVE */ \
2265	    MAP(0x57, 0x97)	/* LATIN CAPITAL LIGATURE OE */ \
2266	    MAP(0x5D, 0x98)	/* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \
2267	    MAP(0x5E, 0x9F)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
2268	    MAP(0x70, 0x50)	/* LATIN SMALL LETTER G WITH BREVE */ \
2269	    MAP(0x77, 0x99)	/* LATIN SMALL LIGATURE OE */ \
2270	    MAP(0x7D, 0xFF)	/* LATIN SMALL LETTER Y WITH DIAERESIS */ \
2271	    MAP(0x7E, 0x2A)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
2272	    default: dft; break; \
2273	}
2274
2275/*
2276 * mentioned, but not documented in VT510 manual, etc., this uses
2277 * the ELOT927 table from Kermit 95:
2278 */
2279#define map_NRCS_Greek(code) \
2280	switch (code) { \
2281	    UNI(0x61, 0x0391)	/* CAPITAL GREEK LETTER ALPHA */ \
2282	    UNI(0x62, 0x0392)	/* CAPITAL GREEK LETTER BETA */ \
2283	    UNI(0x63, 0x0393)	/* CAPITAL GREEK LETTER GAMMA */ \
2284	    UNI(0x64, 0x0394)	/* CAPITAL GREEK LETTER DELTA */ \
2285	    UNI(0x65, 0x0395)	/* CAPITAL GREEK LETTER EPSILON */ \
2286	    UNI(0x66, 0x0396)	/* CAPITAL GREEK LETTER ZETA */ \
2287	    UNI(0x67, 0x0397)	/* CAPITAL GREEK LETTER ETA */ \
2288	    UNI(0x68, 0x0398)	/* CAPITAL GREEK LETTER THETA */ \
2289	    UNI(0x69, 0x0399)	/* CAPITAL GREEK LETTER IOTA */ \
2290	    UNI(0x6a, 0x039A)	/* CAPITAL GREEK LETTER KAPPA */ \
2291	    UNI(0x6b, 0x039B)	/* CAPITAL GREEK LETTER LAMDA */ \
2292	    UNI(0x6c, 0x039C)	/* CAPITAL GREEK LETTER MU */ \
2293	    UNI(0x6d, 0x039D)	/* CAPITAL GREEK LETTER NU */ \
2294	    UNI(0x6e, 0x03A7)	/* CAPITAL GREEK LETTER KSI (CHI) */ \
2295	    UNI(0x6f, 0x039F)	/* CAPITAL GREEK LETTER OMICRON */ \
2296	    UNI(0x70, 0x03A0)	/* CAPITAL GREEK LETTER PI */ \
2297	    UNI(0x71, 0x03A1)	/* CAPITAL GREEK LETTER RHO */ \
2298	    UNI(0x72, 0x03A3)	/* CAPITAL GREEK LETTER SIGMA */ \
2299	    UNI(0x73, 0x03A4)	/* CAPITAL GREEK LETTER TAU */ \
2300	    UNI(0x74, 0x03A5)	/* CAPITAL GREEK LETTER UPSILON */ \
2301	    UNI(0x75, 0x03A6)	/* CAPITAL GREEK LETTER FI (PHI) */ \
2302	    UNI(0x76, 0x039E)	/* CAPITAL GREEK LETTER XI */ \
2303	    UNI(0x77, 0x03A8)	/* CAPITAL GREEK LETTER PSI */ \
2304	    UNI(0x78, 0x03A9)	/* CAPITAL GREEK LETTER OMEGA */ \
2305	    XXX(0x79, UNDEF)	/* unused */ \
2306	    XXX(0x7a, UNDEF)	/* unused */ \
2307	}
2308
2309#define unmap_NRCS_Greek(code,dft) \
2310	switch (code) { \
2311	    MAP(0x79,             0x1B) /* unused */ \
2312	    MAP(0x7a,             0x1B) /* unused */ \
2313	    default: dft; break; \
2314	}
2315
2316/*
2317 * figure A-21 "DEC 7-Bit Hebrew Character Set"
2318 */
2319#define map_NRCS_Hebrew(code) \
2320	switch (code) { \
2321	    UNI(0x60, 0x05D0)	/* HEBREW LETTER ALEF */ \
2322	    UNI(0x61, 0x05D1)	/* HEBREW LETTER BET */ \
2323	    UNI(0x62, 0x05D2)	/* HEBREW LETTER GIMEL */ \
2324	    UNI(0x63, 0x05D3)	/* HEBREW LETTER DALET */ \
2325	    UNI(0x64, 0x05D4)	/* HEBREW LETTER HE */ \
2326	    UNI(0x65, 0x05D5)	/* HEBREW LETTER VAV */ \
2327	    UNI(0x66, 0x05D6)	/* HEBREW LETTER ZAYIN */ \
2328	    UNI(0x67, 0x05D7)	/* HEBREW LETTER HET */ \
2329	    UNI(0x68, 0x05D8)	/* HEBREW LETTER TET */ \
2330	    UNI(0x69, 0x05D9)	/* HEBREW LETTER YOD */ \
2331	    UNI(0x6a, 0x05DA)	/* HEBREW LETTER FINAL KAF */ \
2332	    UNI(0x6b, 0x05DB)	/* HEBREW LETTER KAF */ \
2333	    UNI(0x6c, 0x05DC)	/* HEBREW LETTER LAMED */ \
2334	    UNI(0x6d, 0x05DD)	/* HEBREW LETTER FINAL MEM */ \
2335	    UNI(0x6e, 0x05DE)	/* HEBREW LETTER MEM */ \
2336	    UNI(0x6f, 0x05DF)	/* HEBREW LETTER FINAL NUN */ \
2337	    UNI(0x70, 0x05E0)	/* HEBREW LETTER NUN */ \
2338	    UNI(0x71, 0x05E1)	/* HEBREW LETTER SAMEKH */ \
2339	    UNI(0x72, 0x05E2)	/* HEBREW LETTER AYIN */ \
2340	    UNI(0x73, 0x05E3)	/* HEBREW LETTER FINAL PE */ \
2341	    UNI(0x74, 0x05E4)	/* HEBREW LETTER PE */ \
2342	    UNI(0x75, 0x05E5)	/* HEBREW LETTER FINAL TSADI */ \
2343	    UNI(0x76, 0x05E6)	/* HEBREW LETTER TSADI */ \
2344	    UNI(0x77, 0x05E7)	/* HEBREW LETTER QOF */ \
2345	    UNI(0x78, 0x05E8)	/* HEBREW LETTER RESH */ \
2346	    UNI(0x79, 0x05E9)	/* HEBREW LETTER SHIN */ \
2347	    UNI(0x7a, 0x05EA)	/* HEBREW LETTER TAV */ \
2348	}
2349
2350#define unmap_NRCS_Hebrew(code,dft) /* nothing */
2351
2352/*
2353 * VT520/VT525 manual p 4-35 explains "SCS" as Serbo-Croatian.  The remaining
2354 * "S" may be Slovene.  With that clue, choose ISO-IR-141, which provides a
2355 * chart with names of suitable replacement characters.
2356 */
2357#define map_NRCS_Serbo_Croatian(code) \
2358	switch (code) { \
2359	    UNI(0x40, 0x017D)		/* LATIN CAPITAL LETTER Z WITH CARON */ \
2360	    UNI(0x5B, 0x0160)		/* LATIN CAPITAL LETTER S WITH CARON */ \
2361	    UNI(0x5C, 0x0110)		/* LATIN CAPITAL LETTER D WITH STROKE */ \
2362	    UNI(0x5D, 0x0106)		/* LATIN CAPITAL LETTER C WITH ACUTE */ \
2363	    UNI(0x5E, 0x010C)		/* LATIN CAPITAL LETTER C WITH CARON */ \
2364	    UNI(0x60, 0x017E)		/* LATIN SMALL LETTER Z WITH CARON */ \
2365	    UNI(0x7B, 0x0161)		/* LATIN SMALL LETTER S WITH CARON */ \
2366	    UNI(0x7C, 0x0111)		/* LATIN SMALL LETTER D WITH STROKE */ \
2367	    UNI(0x7D, 0x0107)		/* LATIN SMALL LETTER C WITH ACUTE */ \
2368	    UNI(0x7E, 0x010D)		/* LATIN SMALL LETTER C WITH CARON */ \
2369	}
2370
2371#define unmap_NRCS_Serbo_Croatian(code,dft) /* nothing */
2372
2373/*
2374 * VT520/VT525 manual p 7-2 explains "Russian" as KOI-7, though the dialect
2375 * is unknown.  Choose the one Kermit used.
2376 */
2377#define map_NRCS_Russian(code) \
2378	switch (code) { \
2379	    UNI(0x60, 0x042E)		/* CYRILLIC CAPITAL LETTER YU */ \
2380	    UNI(0x61, 0x0410)		/* CYRILLIC CAPITAL LETTER A */ \
2381	    UNI(0x62, 0x0411)		/* CYRILLIC CAPITAL LETTER BE */ \
2382	    UNI(0x63, 0x0426)		/* CYRILLIC CAPITAL LETTER TSE */ \
2383	    UNI(0x64, 0x0414)		/* CYRILLIC CAPITAL LETTER DE */ \
2384	    UNI(0x65, 0x0415)		/* CYRILLIC CAPITAL LETTER IE */ \
2385	    UNI(0x66, 0x0424)		/* CYRILLIC CAPITAL LETTER EF */ \
2386	    UNI(0x67, 0x0413)		/* CYRILLIC CAPITAL LETTER GHE */ \
2387	    UNI(0x68, 0x0425)		/* CYRILLIC CAPITAL LETTER HA */ \
2388	    UNI(0x69, 0x0418)		/* CYRILLIC CAPITAL LETTER I */ \
2389	    UNI(0x6A, 0x0419)		/* CYRILLIC CAPITAL LETTER SHORT I */ \
2390	    UNI(0x6B, 0x041A)		/* CYRILLIC CAPITAL LETTER KA */ \
2391	    UNI(0x6C, 0x041B)		/* CYRILLIC CAPITAL LETTER EL */ \
2392	    UNI(0x6D, 0x041C)		/* CYRILLIC CAPITAL LETTER EM */ \
2393	    UNI(0x6E, 0x041D)		/* CYRILLIC CAPITAL LETTER EN */ \
2394	    UNI(0x6F, 0x041E)		/* CYRILLIC CAPITAL LETTER O */ \
2395	    UNI(0x70, 0x041F)		/* CYRILLIC CAPITAL LETTER PE */ \
2396	    UNI(0x71, 0x042F)		/* CYRILLIC CAPITAL LETTER YA */ \
2397	    UNI(0x72, 0x0420)		/* CYRILLIC CAPITAL LETTER ER */ \
2398	    UNI(0x73, 0x0421)		/* CYRILLIC CAPITAL LETTER ES */ \
2399	    UNI(0x74, 0x0422)		/* CYRILLIC CAPITAL LETTER TE */ \
2400	    UNI(0x75, 0x0423)		/* CYRILLIC CAPITAL LETTER U */ \
2401	    UNI(0x76, 0x0416)		/* CYRILLIC CAPITAL LETTER ZHE */ \
2402	    UNI(0x77, 0x0412)		/* CYRILLIC CAPITAL LETTER VE */ \
2403	    UNI(0x78, 0x042C)		/* CYRILLIC CAPITAL LETTER SOFT SIGN */ \
2404	    UNI(0x79, 0x042B)		/* CYRILLIC CAPITAL LETTER YERU */ \
2405	    UNI(0x7A, 0x0417)		/* CYRILLIC CAPITAL LETTER ZE */ \
2406	    UNI(0x7B, 0x0428)		/* CYRILLIC CAPITAL LETTER SHA */ \
2407	    UNI(0x7C, 0x042D)		/* CYRILLIC CAPITAL LETTER E */ \
2408	    UNI(0x7D, 0x0429)		/* CYRILLIC CAPITAL LETTER SHCHA */ \
2409	    UNI(0x7E, 0x0427)		/* CYRILLIC CAPITAL LETTER CHE */ \
2410	}
2411
2412#define unmap_NRCS_Russian(code,dft) /* nothing */
2413
2414/*
2415 * figure A-26 "DEC 7-Bit Turkish Character Set"
2416 */
2417#define map_NRCS_Turkish(code) \
2418	switch (code) { \
2419	    UNI(0x26, 0x011F)	/* LATIN SMALL LETTER G WITH BREVE */ \
2420	    UNI(0x40, 0x0130)	/* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \
2421	    UNI(0x5b, 0x015E)	/* LATIN CAPITAL LETTER S WITH CEDILLA */ \
2422	    UNI(0x5c, 0x00D6)	/* LATIN CAPITAL LETTER O WITH DIAERESIS */ \
2423	    UNI(0x5d, 0x00C7)	/* LATIN CAPITAL LETTER C WITH CEDILLA */ \
2424	    UNI(0x5e, 0x00dC)	/* LATIN CAPITAL LETTER U WITH DIAERESIS */ \
2425	    UNI(0x60, 0x011E)	/* LATIN CAPITAL LETTER G WITH BREVE */ \
2426	    UNI(0x7b, 0x015F)	/* LATIN SMALL LETTER S WITH CEDILLA */ \
2427	    UNI(0x7c, 0x00F6)	/* LATIN SMALL LETTER O WITH DIAERESIS */ \
2428	    UNI(0x7d, 0x00E7)	/* LATIN SMALL LETTER C WITH CEDILLA */ \
2429	    UNI(0x7e, 0x00FC)	/* LATIN SMALL LETTER U WITH DIAERESIS */ \
2430	}
2431
2432#define unmap_NRCS_Turkish(code,dft) /* nothing */
2433#else
2434#define map_DEC_Cyrillic(code)	/* nothing */
2435#define unmap_DEC_Cyrillic(code,dft) dft
2436#define map_DEC_Greek_Supp(code)	/* nothing */
2437#define unmap_DEC_Greek_Supp(code,dft) dft
2438#define map_DEC_Hebrew_Supp(code)	/* nothing */
2439#define unmap_DEC_Hebrew_Supp(code,dft) dft
2440#define map_DEC_Technical(code)	/* nothing */
2441#define unmap_DEC_Technical(code,dft) dft
2442#define map_DEC_Turkish_Supp(code)	/* nothing */
2443#define unmap_DEC_Turkish_Supp(code,dft) dft
2444#define map_ISO_Greek_Supp(code)	/* nothing */
2445#define unmap_ISO_Greek_Supp(code,dft) dft
2446#define map_ISO_Hebrew(code)	/* nothing */
2447#define unmap_ISO_Hebrew(code,dft) dft
2448#define map_ISO_Latin_2(code)	/* nothing */
2449#define unmap_ISO_Latin_2(code,dft) dft
2450#define map_ISO_Latin_5(code)	/* nothing */
2451#define unmap_ISO_Latin_5(code,dft) dft
2452#define map_ISO_Latin_Cyrillic(code)	/* nothing */
2453#define unmap_ISO_Latin_Cyrillic(code,dft) dft
2454#define map_JIS_Katakana(code)	/* nothing */
2455#define unmap_JIS_Katakana(code,dft) dft
2456#define map_JIS_Roman(code)	/* nothing */
2457#define unmap_JIS_Roman(code,dft) dft
2458#define map_NRCS_Greek(code)	/* nothing */
2459#define unmap_NRCS_Greek(code,dft) dft
2460#define map_NRCS_Hebrew(code)	/* nothing */
2461#define unmap_NRCS_Hebrew(code,dft) dft
2462#define map_NRCS_Russian(code)	/* nothing */
2463#define unmap_NRCS_Russian(code,dft) dft
2464#define map_NRCS_Serbo_Croatian(code)	/* nothing */
2465#define unmap_NRCS_Serbo_Croatian(code,dft) dft
2466#define map_NRCS_Turkish(code)	/* nothing */
2467#define unmap_NRCS_Turkish(code,dft) dft
2468#endif /* OPT_WIDE_CHARS */
2469
2470#endif /* included_charsets_h */
2471