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