charsets.h revision 04b94745
1/* 2 * $XTermId: charsets.h,v 1.29 2024/02/08 08:52:16 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/* 618 * ISO Latin/Cyrillic is 8859-5 619 */ 620#define map_ISO_Latin_Cyrillic(code) \ 621 begin_CODEPAGE(96) \ 622 switch (code) { \ 623 UNI(0x20, 0x00A0) /* NO-BREAK SPACE */ \ 624 UNI(0x21, 0x0401) /* CYRILLIC CAPITAL LETTER IO */ \ 625 UNI(0x22, 0x0402) /* CYRILLIC CAPITAL LETTER DJE */ \ 626 UNI(0x23, 0x0403) /* CYRILLIC CAPITAL LETTER GJE */ \ 627 UNI(0x24, 0x0404) /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ 628 UNI(0x25, 0x0405) /* CYRILLIC CAPITAL LETTER DZE */ \ 629 UNI(0x26, 0x0406) /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ 630 UNI(0x27, 0x0407) /* CYRILLIC CAPITAL LETTER YI */ \ 631 UNI(0x28, 0x0408) /* CYRILLIC CAPITAL LETTER JE */ \ 632 UNI(0x29, 0x0409) /* CYRILLIC CAPITAL LETTER LJE */ \ 633 UNI(0x2A, 0x040A) /* CYRILLIC CAPITAL LETTER NJE */ \ 634 UNI(0x2B, 0x040B) /* CYRILLIC CAPITAL LETTER TSHE */ \ 635 UNI(0x2C, 0x040C) /* CYRILLIC CAPITAL LETTER KJE */ \ 636 UNI(0x2D, 0x00AD) /* SOFT HYPHEN */ \ 637 UNI(0x2E, 0x040E) /* CYRILLIC CAPITAL LETTER SHORT U */ \ 638 UNI(0x2F, 0x040F) /* CYRILLIC CAPITAL LETTER DZHE */ \ 639 UNI(0x30, 0x0410) /* CYRILLIC CAPITAL LETTER A */ \ 640 UNI(0x31, 0x0411) /* CYRILLIC CAPITAL LETTER BE */ \ 641 UNI(0x32, 0x0412) /* CYRILLIC CAPITAL LETTER VE */ \ 642 UNI(0x33, 0x0413) /* CYRILLIC CAPITAL LETTER GHE */ \ 643 UNI(0x34, 0x0414) /* CYRILLIC CAPITAL LETTER DE */ \ 644 UNI(0x35, 0x0415) /* CYRILLIC CAPITAL LETTER IE */ \ 645 UNI(0x36, 0x0416) /* CYRILLIC CAPITAL LETTER ZHE */ \ 646 UNI(0x37, 0x0417) /* CYRILLIC CAPITAL LETTER ZE */ \ 647 UNI(0x38, 0x0418) /* CYRILLIC CAPITAL LETTER I */ \ 648 UNI(0x39, 0x0419) /* CYRILLIC CAPITAL LETTER SHORT I */ \ 649 UNI(0x3A, 0x041A) /* CYRILLIC CAPITAL LETTER KA */ \ 650 UNI(0x3B, 0x041B) /* CYRILLIC CAPITAL LETTER EL */ \ 651 UNI(0x3C, 0x041C) /* CYRILLIC CAPITAL LETTER EM */ \ 652 UNI(0x3D, 0x041D) /* CYRILLIC CAPITAL LETTER EN */ \ 653 UNI(0x3E, 0x041E) /* CYRILLIC CAPITAL LETTER O */ \ 654 UNI(0x3F, 0x041F) /* CYRILLIC CAPITAL LETTER PE */ \ 655 UNI(0x40, 0x0420) /* CYRILLIC CAPITAL LETTER ER */ \ 656 UNI(0x41, 0x0421) /* CYRILLIC CAPITAL LETTER ES */ \ 657 UNI(0x42, 0x0422) /* CYRILLIC CAPITAL LETTER TE */ \ 658 UNI(0x43, 0x0423) /* CYRILLIC CAPITAL LETTER U */ \ 659 UNI(0x44, 0x0424) /* CYRILLIC CAPITAL LETTER EF */ \ 660 UNI(0x45, 0x0425) /* CYRILLIC CAPITAL LETTER HA */ \ 661 UNI(0x46, 0x0426) /* CYRILLIC CAPITAL LETTER TSE */ \ 662 UNI(0x47, 0x0427) /* CYRILLIC CAPITAL LETTER CHE */ \ 663 UNI(0x48, 0x0428) /* CYRILLIC CAPITAL LETTER SHA */ \ 664 UNI(0x49, 0x0429) /* CYRILLIC CAPITAL LETTER SHCHA */ \ 665 UNI(0x4A, 0x042A) /* CYRILLIC CAPITAL LETTER HARD SIGN */ \ 666 UNI(0x4B, 0x042B) /* CYRILLIC CAPITAL LETTER YERU */ \ 667 UNI(0x4C, 0x042C) /* CYRILLIC CAPITAL LETTER SOFT SIGN */ \ 668 UNI(0x4D, 0x042D) /* CYRILLIC CAPITAL LETTER E */ \ 669 UNI(0x4E, 0x042E) /* CYRILLIC CAPITAL LETTER YU */ \ 670 UNI(0x4F, 0x042F) /* CYRILLIC CAPITAL LETTER YA */ \ 671 UNI(0x50, 0x0430) /* CYRILLIC SMALL LETTER A */ \ 672 UNI(0x51, 0x0431) /* CYRILLIC SMALL LETTER BE */ \ 673 UNI(0x52, 0x0432) /* CYRILLIC SMALL LETTER VE */ \ 674 UNI(0x53, 0x0433) /* CYRILLIC SMALL LETTER GHE */ \ 675 UNI(0x54, 0x0434) /* CYRILLIC SMALL LETTER DE */ \ 676 UNI(0x55, 0x0435) /* CYRILLIC SMALL LETTER IE */ \ 677 UNI(0x56, 0x0436) /* CYRILLIC SMALL LETTER ZHE */ \ 678 UNI(0x57, 0x0437) /* CYRILLIC SMALL LETTER ZE */ \ 679 UNI(0x58, 0x0438) /* CYRILLIC SMALL LETTER I */ \ 680 UNI(0x59, 0x0439) /* CYRILLIC SMALL LETTER SHORT I */ \ 681 UNI(0x5A, 0x043A) /* CYRILLIC SMALL LETTER KA */ \ 682 UNI(0x5B, 0x043B) /* CYRILLIC SMALL LETTER EL */ \ 683 UNI(0x5C, 0x043C) /* CYRILLIC SMALL LETTER EM */ \ 684 UNI(0x5D, 0x043D) /* CYRILLIC SMALL LETTER EN */ \ 685 UNI(0x5E, 0x043E) /* CYRILLIC SMALL LETTER O */ \ 686 UNI(0x5F, 0x043F) /* CYRILLIC SMALL LETTER PE */ \ 687 UNI(0x60, 0x0440) /* CYRILLIC SMALL LETTER ER */ \ 688 UNI(0x61, 0x0441) /* CYRILLIC SMALL LETTER ES */ \ 689 UNI(0x62, 0x0442) /* CYRILLIC SMALL LETTER TE */ \ 690 UNI(0x63, 0x0443) /* CYRILLIC SMALL LETTER U */ \ 691 UNI(0x64, 0x0444) /* CYRILLIC SMALL LETTER EF */ \ 692 UNI(0x65, 0x0445) /* CYRILLIC SMALL LETTER HA */ \ 693 UNI(0x66, 0x0446) /* CYRILLIC SMALL LETTER TSE */ \ 694 UNI(0x67, 0x0447) /* CYRILLIC SMALL LETTER CHE */ \ 695 UNI(0x68, 0x0448) /* CYRILLIC SMALL LETTER SHA */ \ 696 UNI(0x69, 0x0449) /* CYRILLIC SMALL LETTER SHCHA */ \ 697 UNI(0x6A, 0x044A) /* CYRILLIC SMALL LETTER HARD SIGN */ \ 698 UNI(0x6B, 0x044B) /* CYRILLIC SMALL LETTER YERU */ \ 699 UNI(0x6C, 0x044C) /* CYRILLIC SMALL LETTER SOFT SIGN */ \ 700 UNI(0x6D, 0x044D) /* CYRILLIC SMALL LETTER E */ \ 701 UNI(0x6E, 0x044E) /* CYRILLIC SMALL LETTER YU */ \ 702 UNI(0x6F, 0x044F) /* CYRILLIC SMALL LETTER YA */ \ 703 UNI(0x70, 0x2116) /* NUMERO SIGN */ \ 704 UNI(0x71, 0x0451) /* CYRILLIC SMALL LETTER IO */ \ 705 UNI(0x72, 0x0452) /* CYRILLIC SMALL LETTER DJE */ \ 706 UNI(0x73, 0x0453) /* CYRILLIC SMALL LETTER GJE */ \ 707 UNI(0x74, 0x0454) /* CYRILLIC SMALL LETTER UKRAINIAN IE */ \ 708 UNI(0x75, 0x0455) /* CYRILLIC SMALL LETTER DZE */ \ 709 UNI(0x76, 0x0456) /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ 710 UNI(0x77, 0x0457) /* CYRILLIC SMALL LETTER YI */ \ 711 UNI(0x78, 0x0458) /* CYRILLIC SMALL LETTER JE */ \ 712 UNI(0x79, 0x0459) /* CYRILLIC SMALL LETTER LJE */ \ 713 UNI(0x7A, 0x045A) /* CYRILLIC SMALL LETTER NJE */ \ 714 UNI(0x7B, 0x045B) /* CYRILLIC SMALL LETTER TSHE */ \ 715 UNI(0x7C, 0x045C) /* CYRILLIC SMALL LETTER KJE */ \ 716 UNI(0x7D, 0x00A7) /* SECTION SIGN */ \ 717 UNI(0x7E, 0x045E) /* CYRILLIC SMALL LETTER SHORT U */ \ 718 UNI(0x7F, 0x045F) /* CYRILLIC SMALL LETTER DZHE */ \ 719 } \ 720 end_CODEPAGE() 721 722#define unmap_ISO_Latin_Cyrillic(code,dft) \ 723 switch (code) { \ 724 MAP(0x21, 0x03) /* CYRILLIC CAPITAL LETTER IO */ \ 725 MAP(0x22, 0x04) /* CYRILLIC CAPITAL LETTER DJE */ \ 726 MAP(0x23, 0x05) /* CYRILLIC CAPITAL LETTER GJE */ \ 727 MAP(0x24, 0x06) /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ 728 MAP(0x25, 0x07) /* CYRILLIC CAPITAL LETTER DZE */ \ 729 MAP(0x26, 0x08) /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ 730 MAP(0x27, 0x09) /* CYRILLIC CAPITAL LETTER YI */ \ 731 MAP(0x28, 0x0A) /* CYRILLIC CAPITAL LETTER JE */ \ 732 MAP(0x29, 0x0B) /* CYRILLIC CAPITAL LETTER LJE */ \ 733 MAP(0x2A, 0x0C) /* CYRILLIC CAPITAL LETTER NJE */ \ 734 MAP(0x2B, 0x0D) /* CYRILLIC CAPITAL LETTER TSHE */ \ 735 MAP(0x2C, 0x0E) /* CYRILLIC CAPITAL LETTER KJE */ \ 736 MAP(0x2E, 0x0F) /* CYRILLIC CAPITAL LETTER SHORT U */ \ 737 MAP(0x2F, 0x10) /* CYRILLIC CAPITAL LETTER DZHE */ \ 738 MAP(0x30, 0x11) /* CYRILLIC CAPITAL LETTER A */ \ 739 MAP(0x31, 0x12) /* CYRILLIC CAPITAL LETTER BE */ \ 740 MAP(0x32, 0x13) /* CYRILLIC CAPITAL LETTER VE */ \ 741 MAP(0x33, 0x14) /* CYRILLIC CAPITAL LETTER GHE */ \ 742 MAP(0x34, 0x15) /* CYRILLIC CAPITAL LETTER DE */ \ 743 MAP(0x35, 0x16) /* CYRILLIC CAPITAL LETTER IE */ \ 744 MAP(0x36, 0x17) /* CYRILLIC CAPITAL LETTER ZHE */ \ 745 MAP(0x37, 0x18) /* CYRILLIC CAPITAL LETTER ZE */ \ 746 MAP(0x38, 0x19) /* CYRILLIC CAPITAL LETTER I */ \ 747 MAP(0x39, 0x1A) /* CYRILLIC CAPITAL LETTER SHORT I */ \ 748 MAP(0x3A, 0x1B) /* CYRILLIC CAPITAL LETTER KA */ \ 749 MAP(0x3B, 0x1C) /* CYRILLIC CAPITAL LETTER EL */ \ 750 MAP(0x3C, 0x1D) /* CYRILLIC CAPITAL LETTER EM */ \ 751 MAP(0x3D, 0x1E) /* CYRILLIC CAPITAL LETTER EN */ \ 752 MAP(0x3E, 0x1F) /* CYRILLIC CAPITAL LETTER O */ \ 753 MAP(0x3F, 0x20) /* CYRILLIC CAPITAL LETTER PE */ \ 754 MAP(0x40, 0x21) /* CYRILLIC CAPITAL LETTER ER */ \ 755 MAP(0x41, 0x22) /* CYRILLIC CAPITAL LETTER ES */ \ 756 MAP(0x42, 0x23) /* CYRILLIC CAPITAL LETTER TE */ \ 757 MAP(0x43, 0x24) /* CYRILLIC CAPITAL LETTER U */ \ 758 MAP(0x44, 0x25) /* CYRILLIC CAPITAL LETTER EF */ \ 759 MAP(0x45, 0x26) /* CYRILLIC CAPITAL LETTER HA */ \ 760 MAP(0x46, 0x27) /* CYRILLIC CAPITAL LETTER TSE */ \ 761 MAP(0x47, 0x28) /* CYRILLIC CAPITAL LETTER CHE */ \ 762 MAP(0x48, 0x29) /* CYRILLIC CAPITAL LETTER SHA */ \ 763 MAP(0x49, 0x2A) /* CYRILLIC CAPITAL LETTER SHCHA */ \ 764 MAP(0x4A, 0x2B) /* CYRILLIC CAPITAL LETTER HARD SIGN */ \ 765 MAP(0x4B, 0x2C) /* CYRILLIC CAPITAL LETTER YERU */ \ 766 MAP(0x4C, 0x2D) /* CYRILLIC CAPITAL LETTER SOFT SIGN */ \ 767 MAP(0x4D, 0x2E) /* CYRILLIC CAPITAL LETTER E */ \ 768 MAP(0x4E, 0x2F) /* CYRILLIC CAPITAL LETTER YU */ \ 769 MAP(0x4F, 0x30) /* CYRILLIC CAPITAL LETTER YA */ \ 770 MAP(0x50, 0x31) /* CYRILLIC SMALL LETTER A */ \ 771 MAP(0x51, 0x32) /* CYRILLIC SMALL LETTER BE */ \ 772 MAP(0x52, 0x33) /* CYRILLIC SMALL LETTER VE */ \ 773 MAP(0x53, 0x34) /* CYRILLIC SMALL LETTER GHE */ \ 774 MAP(0x54, 0x35) /* CYRILLIC SMALL LETTER DE */ \ 775 MAP(0x55, 0x36) /* CYRILLIC SMALL LETTER IE */ \ 776 MAP(0x56, 0x37) /* CYRILLIC SMALL LETTER ZHE */ \ 777 MAP(0x57, 0x38) /* CYRILLIC SMALL LETTER ZE */ \ 778 MAP(0x58, 0x39) /* CYRILLIC SMALL LETTER I */ \ 779 MAP(0x59, 0x3A) /* CYRILLIC SMALL LETTER SHORT I */ \ 780 MAP(0x5A, 0x3B) /* CYRILLIC SMALL LETTER KA */ \ 781 MAP(0x5B, 0x3C) /* CYRILLIC SMALL LETTER EL */ \ 782 MAP(0x5C, 0x3D) /* CYRILLIC SMALL LETTER EM */ \ 783 MAP(0x5D, 0x3E) /* CYRILLIC SMALL LETTER EN */ \ 784 MAP(0x5E, 0x3F) /* CYRILLIC SMALL LETTER O */ \ 785 MAP(0x5F, 0x40) /* CYRILLIC SMALL LETTER PE */ \ 786 MAP(0x60, 0x41) /* CYRILLIC SMALL LETTER ER */ \ 787 MAP(0x61, 0x42) /* CYRILLIC SMALL LETTER ES */ \ 788 MAP(0x62, 0x43) /* CYRILLIC SMALL LETTER TE */ \ 789 MAP(0x63, 0x44) /* CYRILLIC SMALL LETTER U */ \ 790 MAP(0x64, 0x45) /* CYRILLIC SMALL LETTER EF */ \ 791 MAP(0x65, 0x46) /* CYRILLIC SMALL LETTER HA */ \ 792 MAP(0x66, 0x47) /* CYRILLIC SMALL LETTER TSE */ \ 793 MAP(0x67, 0x48) /* CYRILLIC SMALL LETTER CHE */ \ 794 MAP(0x68, 0x49) /* CYRILLIC SMALL LETTER SHA */ \ 795 MAP(0x69, 0x4A) /* CYRILLIC SMALL LETTER SHCHA */ \ 796 MAP(0x6A, 0x4B) /* CYRILLIC SMALL LETTER HARD SIGN */ \ 797 MAP(0x6B, 0x4C) /* CYRILLIC SMALL LETTER YERU */ \ 798 MAP(0x6C, 0x4D) /* CYRILLIC SMALL LETTER SOFT SIGN */ \ 799 MAP(0x6D, 0x4E) /* CYRILLIC SMALL LETTER E */ \ 800 MAP(0x6E, 0x4F) /* CYRILLIC SMALL LETTER YU */ \ 801 MAP(0x6F, 0x50) /* CYRILLIC SMALL LETTER YA */ \ 802 MAP(0x70, 0x51) /* NUMERO SIGN */ \ 803 MAP(0x71, 0x52) /* CYRILLIC SMALL LETTER IO */ \ 804 MAP(0x72, 0x53) /* CYRILLIC SMALL LETTER DJE */ \ 805 MAP(0x73, 0x54) /* CYRILLIC SMALL LETTER GJE */ \ 806 MAP(0x74, 0x55) /* CYRILLIC SMALL LETTER UKRAINIAN IE */ \ 807 MAP(0x75, 0x56) /* CYRILLIC SMALL LETTER DZE */ \ 808 MAP(0x76, 0x57) /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ 809 MAP(0x77, 0x58) /* CYRILLIC SMALL LETTER YI */ \ 810 MAP(0x78, 0x59) /* CYRILLIC SMALL LETTER JE */ \ 811 MAP(0x79, 0x5A) /* CYRILLIC SMALL LETTER LJE */ \ 812 MAP(0x7A, 0x5B) /* CYRILLIC SMALL LETTER NJE */ \ 813 MAP(0x7B, 0x5C) /* CYRILLIC SMALL LETTER TSHE */ \ 814 MAP(0x7C, 0x5D) /* CYRILLIC SMALL LETTER KJE */ \ 815 MAP(0x7D, 0xA7) /* SECTION SIGN */ \ 816 MAP(0x7E, 0x5E) /* CYRILLIC SMALL LETTER SHORT U */ \ 817 MAP(0x7F, 0x5F) /* CYRILLIC SMALL LETTER DZHE */ \ 818 default: dft; break; \ 819 } 820 821/* 822 * ISO Greek is 8859-7 823 */ 824#define map_ISO_Greek_Supp(code) \ 825 begin_CODEPAGE(96) \ 826 switch (code) { \ 827 UNI(0x20, 0x00A0) /* NO-BREAK SPACE */ \ 828 UNI(0x21, 0x2018) /* LEFT SINGLE QUOTATION MARK */ \ 829 UNI(0x22, 0x2019) /* RIGHT SINGLE QUOTATION MARK */ \ 830 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 831 XXX(0x24, UNDEF) /* undefined */ \ 832 XXX(0x25, UNDEF) /* undefined */ \ 833 UNI(0x26, 0x00A6) /* BROKEN BAR */ \ 834 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 835 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 836 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 837 XXX(0x2A, UNDEF) /* undefined */ \ 838 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 839 UNI(0x2C, 0x00AC) /* NOT SIGN */ \ 840 UNI(0x2D, 0x00AD) /* SOFT HYPHEN */ \ 841 XXX(0x2E, UNDEF) /* undefined */ \ 842 UNI(0x2F, 0x2015) /* HORIZONTAL BAR */ \ 843 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 844 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 845 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 846 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 847 UNI(0x34, 0x0384) /* GREEK TONOS */ \ 848 UNI(0x35, 0x0385) /* GREEK DIALYTIKA TONOS */ \ 849 UNI(0x36, 0x0386) /* GREEK CAPITAL LETTER ALPHA WITH TONOS */ \ 850 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 851 UNI(0x38, 0x0388) /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ \ 852 UNI(0x39, 0x0389) /* GREEK CAPITAL LETTER ETA WITH TONOS */ \ 853 UNI(0x3A, 0x038A) /* GREEK CAPITAL LETTER IOTA WITH TONOS */ \ 854 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 855 UNI(0x3C, 0x038C) /* GREEK CAPITAL LETTER OMICRON WITH TONOS */ \ 856 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 857 UNI(0x3E, 0x038E) /* GREEK CAPITAL LETTER UPSILON WITH TONOS */ \ 858 UNI(0x3F, 0x038F) /* GREEK CAPITAL LETTER OMEGA WITH TONOS */ \ 859 UNI(0x40, 0x0390) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ \ 860 UNI(0x41, 0x0391) /* GREEK CAPITAL LETTER ALPHA */ \ 861 UNI(0x42, 0x0392) /* GREEK CAPITAL LETTER BETA */ \ 862 UNI(0x43, 0x0393) /* GREEK CAPITAL LETTER GAMMA */ \ 863 UNI(0x44, 0x0394) /* GREEK CAPITAL LETTER DELTA */ \ 864 UNI(0x45, 0x0395) /* GREEK CAPITAL LETTER EPSILON */ \ 865 UNI(0x46, 0x0396) /* GREEK CAPITAL LETTER ZETA */ \ 866 UNI(0x47, 0x0397) /* GREEK CAPITAL LETTER ETA */ \ 867 UNI(0x48, 0x0398) /* GREEK CAPITAL LETTER THETA */ \ 868 UNI(0x49, 0x0399) /* GREEK CAPITAL LETTER IOTA */ \ 869 UNI(0x4A, 0x039A) /* GREEK CAPITAL LETTER KAPPA */ \ 870 UNI(0x4B, 0x039B) /* GREEK CAPITAL LETTER LAMDA */ \ 871 UNI(0x4C, 0x039C) /* GREEK CAPITAL LETTER MU */ \ 872 UNI(0x4D, 0x039D) /* GREEK CAPITAL LETTER NU */ \ 873 UNI(0x4E, 0x039E) /* GREEK CAPITAL LETTER XI */ \ 874 UNI(0x4F, 0x039F) /* GREEK CAPITAL LETTER OMICRON */ \ 875 UNI(0x50, 0x03A0) /* GREEK CAPITAL LETTER PI */ \ 876 UNI(0x51, 0x03A1) /* GREEK CAPITAL LETTER RHO */ \ 877 XXX(0x52, UNDEF) /* undefined */ \ 878 UNI(0x53, 0x03A3) /* GREEK CAPITAL LETTER SIGMA */ \ 879 UNI(0x54, 0x03A4) /* GREEK CAPITAL LETTER TAU */ \ 880 UNI(0x55, 0x03A5) /* GREEK CAPITAL LETTER UPSILON */ \ 881 UNI(0x56, 0x03A6) /* GREEK CAPITAL LETTER PHI */ \ 882 UNI(0x57, 0x03A7) /* GREEK CAPITAL LETTER CHI */ \ 883 UNI(0x58, 0x03A8) /* GREEK CAPITAL LETTER PSI */ \ 884 UNI(0x59, 0x03A9) /* GREEK CAPITAL LETTER OMEGA */ \ 885 UNI(0x5A, 0x03AA) /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ \ 886 UNI(0x5B, 0x03AB) /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ \ 887 UNI(0x5C, 0x03AC) /* GREEK SMALL LETTER ALPHA WITH TONOS */ \ 888 UNI(0x5D, 0x03AD) /* GREEK SMALL LETTER EPSILON WITH TONOS */ \ 889 UNI(0x5E, 0x03AE) /* GREEK SMALL LETTER ETA WITH TONOS */ \ 890 UNI(0x5F, 0x03AF) /* GREEK SMALL LETTER IOTA WITH TONOS */ \ 891 UNI(0x60, 0x03B0) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ \ 892 UNI(0x61, 0x03B1) /* GREEK SMALL LETTER ALPHA */ \ 893 UNI(0x62, 0x03B2) /* GREEK SMALL LETTER BETA */ \ 894 UNI(0x63, 0x03B3) /* GREEK SMALL LETTER GAMMA */ \ 895 UNI(0x64, 0x03B4) /* GREEK SMALL LETTER DELTA */ \ 896 UNI(0x65, 0x03B5) /* GREEK SMALL LETTER EPSILON */ \ 897 UNI(0x66, 0x03B6) /* GREEK SMALL LETTER ZETA */ \ 898 UNI(0x67, 0x03B7) /* GREEK SMALL LETTER ETA */ \ 899 UNI(0x68, 0x03B8) /* GREEK SMALL LETTER THETA */ \ 900 UNI(0x69, 0x03B9) /* GREEK SMALL LETTER IOTA */ \ 901 UNI(0x6A, 0x03BA) /* GREEK SMALL LETTER KAPPA */ \ 902 UNI(0x6B, 0x03BB) /* GREEK SMALL LETTER LAMDA */ \ 903 UNI(0x6C, 0x03BC) /* GREEK SMALL LETTER MU */ \ 904 UNI(0x6D, 0x03BD) /* GREEK SMALL LETTER NU */ \ 905 UNI(0x6E, 0x03BE) /* GREEK SMALL LETTER XI */ \ 906 UNI(0x6F, 0x03BF) /* GREEK SMALL LETTER OMICRON */ \ 907 UNI(0x70, 0x03C0) /* GREEK SMALL LETTER PI */ \ 908 UNI(0x71, 0x03C1) /* GREEK SMALL LETTER RHO */ \ 909 UNI(0x72, 0x03C2) /* GREEK SMALL LETTER FINAL SIGMA */ \ 910 UNI(0x73, 0x03C3) /* GREEK SMALL LETTER SIGMA */ \ 911 UNI(0x74, 0x03C4) /* GREEK SMALL LETTER TAU */ \ 912 UNI(0x75, 0x03C5) /* GREEK SMALL LETTER UPSILON */ \ 913 UNI(0x76, 0x03C6) /* GREEK SMALL LETTER PHI */ \ 914 UNI(0x77, 0x03C7) /* GREEK SMALL LETTER CHI */ \ 915 UNI(0x78, 0x03C8) /* GREEK SMALL LETTER PSI */ \ 916 UNI(0x79, 0x03C9) /* GREEK SMALL LETTER OMEGA */ \ 917 UNI(0x7A, 0x03CA) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \ 918 UNI(0x7B, 0x03CB) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \ 919 UNI(0x7C, 0x03CC) /* GREEK SMALL LETTER OMICRON WITH TONOS */ \ 920 UNI(0x7D, 0x03CD) /* GREEK SMALL LETTER UPSILON WITH TONOS */ \ 921 UNI(0x7E, 0x03CE) /* GREEK SMALL LETTER OMEGA WITH TONOS */ \ 922 XXX(0x7F, UNDEF) /* undefined */ \ 923 } \ 924 end_CODEPAGE() 925 926#define unmap_ISO_Greek_Supp(code,dft) \ 927 switch (code) { \ 928 MAP(0x21, 0x60) /* LEFT SINGLE QUOTATION MARK */ \ 929 MAP(0x22, 0x27) /* RIGHT SINGLE QUOTATION MARK */ \ 930 MAP(0x24, 0x1B) /* undefined */ \ 931 MAP(0x25, 0x1B) /* undefined */ \ 932 MAP(0x2A, 0x1B) /* undefined */ \ 933 MAP(0x2E, 0x1B) /* undefined */ \ 934 MAP(0x2F, 0x2D) /* HORIZONTAL BAR */ \ 935 MAP(0x34, 0x96) /* GREEK TONOS */ \ 936 MAP(0x35, 0x95) /* GREEK DIALYTIKA TONOS */ \ 937 MAP(0x36, 0x6E) /* GREEK CAPITAL LETTER ALPHA WITH TONOS */ \ 938 MAP(0x38, 0x6F) /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ \ 939 MAP(0x39, 0x70) /* GREEK CAPITAL LETTER ETA WITH TONOS */ \ 940 MAP(0x3A, 0x71) /* GREEK CAPITAL LETTER IOTA WITH TONOS */ \ 941 MAP(0x3C, 0x72) /* GREEK CAPITAL LETTER OMICRON WITH TONOS */ \ 942 MAP(0x3E, 0x73) /* GREEK CAPITAL LETTER UPSILON WITH TONOS */ \ 943 MAP(0x3F, 0x74) /* GREEK CAPITAL LETTER OMEGA WITH TONOS */ \ 944 MAP(0x40, 0x75) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ \ 945 MAP(0x41, 0x76) /* GREEK CAPITAL LETTER ALPHA */ \ 946 MAP(0x42, 0x77) /* GREEK CAPITAL LETTER BETA */ \ 947 MAP(0x43, 0x78) /* GREEK CAPITAL LETTER GAMMA */ \ 948 MAP(0x44, 0x79) /* GREEK CAPITAL LETTER DELTA */ \ 949 MAP(0x45, 0x7A) /* GREEK CAPITAL LETTER EPSILON */ \ 950 MAP(0x46, 0x7B) /* GREEK CAPITAL LETTER ZETA */ \ 951 MAP(0x47, 0x7C) /* GREEK CAPITAL LETTER ETA */ \ 952 MAP(0x48, 0x7D) /* GREEK CAPITAL LETTER THETA */ \ 953 MAP(0x49, 0x7E) /* GREEK CAPITAL LETTER IOTA */ \ 954 MAP(0x4A, 0x7F) /* GREEK CAPITAL LETTER KAPPA */ \ 955 MAP(0x4B, 0xA2) /* GREEK CAPITAL LETTER LAMDA */ \ 956 MAP(0x4C, 0xA3) /* GREEK CAPITAL LETTER MU */ \ 957 MAP(0x4D, 0xA4) /* GREEK CAPITAL LETTER NU */ \ 958 MAP(0x4E, 0xA5) /* GREEK CAPITAL LETTER XI */ \ 959 MAP(0x4F, 0xA6) /* GREEK CAPITAL LETTER OMICRON */ \ 960 MAP(0x50, 0xA7) /* GREEK CAPITAL LETTER PI */ \ 961 MAP(0x51, 0xA8) /* GREEK CAPITAL LETTER RHO */ \ 962 MAP(0x52, 0x1B) /* undefined */ \ 963 MAP(0x53, 0xA9) /* GREEK CAPITAL LETTER SIGMA */ \ 964 MAP(0x54, 0xAA) /* GREEK CAPITAL LETTER TAU */ \ 965 MAP(0x55, 0xAB) /* GREEK CAPITAL LETTER UPSILON */ \ 966 MAP(0x56, 0xAC) /* GREEK CAPITAL LETTER PHI */ \ 967 MAP(0x57, 0xAD) /* GREEK CAPITAL LETTER CHI */ \ 968 MAP(0x58, 0xAE) /* GREEK CAPITAL LETTER PSI */ \ 969 MAP(0x59, 0xAF) /* GREEK CAPITAL LETTER OMEGA */ \ 970 MAP(0x5A, 0xB0) /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ \ 971 MAP(0x5B, 0xB1) /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ \ 972 MAP(0x5C, 0xB2) /* GREEK SMALL LETTER ALPHA WITH TONOS */ \ 973 MAP(0x5D, 0xB3) /* GREEK SMALL LETTER EPSILON WITH TONOS */ \ 974 MAP(0x5E, 0xB4) /* GREEK SMALL LETTER ETA WITH TONOS */ \ 975 MAP(0x5F, 0xB5) /* GREEK SMALL LETTER IOTA WITH TONOS */ \ 976 MAP(0x60, 0xB6) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ \ 977 MAP(0x61, 0xB7) /* GREEK SMALL LETTER ALPHA */ \ 978 MAP(0x62, 0xB8) /* GREEK SMALL LETTER BETA */ \ 979 MAP(0x63, 0xB9) /* GREEK SMALL LETTER GAMMA */ \ 980 MAP(0x64, 0xBA) /* GREEK SMALL LETTER DELTA */ \ 981 MAP(0x65, 0xBB) /* GREEK SMALL LETTER EPSILON */ \ 982 MAP(0x66, 0xBC) /* GREEK SMALL LETTER ZETA */ \ 983 MAP(0x67, 0xBD) /* GREEK SMALL LETTER ETA */ \ 984 MAP(0x68, 0xBE) /* GREEK SMALL LETTER THETA */ \ 985 MAP(0x69, 0xBF) /* GREEK SMALL LETTER IOTA */ \ 986 MAP(0x6A, 0xC0) /* GREEK SMALL LETTER KAPPA */ \ 987 MAP(0x6B, 0xC1) /* GREEK SMALL LETTER LAMDA */ \ 988 MAP(0x6C, 0xC2) /* GREEK SMALL LETTER MU */ \ 989 MAP(0x6D, 0xC3) /* GREEK SMALL LETTER NU */ \ 990 MAP(0x6E, 0xC4) /* GREEK SMALL LETTER XI */ \ 991 MAP(0x6F, 0xC5) /* GREEK SMALL LETTER OMICRON */ \ 992 MAP(0x70, 0xC6) /* GREEK SMALL LETTER PI */ \ 993 MAP(0x71, 0xC7) /* GREEK SMALL LETTER RHO */ \ 994 MAP(0x72, 0xC8) /* GREEK SMALL LETTER FINAL SIGMA */ \ 995 MAP(0x73, 0xC9) /* GREEK SMALL LETTER SIGMA */ \ 996 MAP(0x74, 0xCA) /* GREEK SMALL LETTER TAU */ \ 997 MAP(0x75, 0xCB) /* GREEK SMALL LETTER UPSILON */ \ 998 MAP(0x76, 0xCC) /* GREEK SMALL LETTER PHI */ \ 999 MAP(0x77, 0xCD) /* GREEK SMALL LETTER CHI */ \ 1000 MAP(0x78, 0xCE) /* GREEK SMALL LETTER PSI */ \ 1001 MAP(0x79, 0xCF) /* GREEK SMALL LETTER OMEGA */ \ 1002 MAP(0x7A, 0xD0) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \ 1003 MAP(0x7B, 0xD1) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \ 1004 MAP(0x7C, 0xD2) /* GREEK SMALL LETTER OMICRON WITH TONOS */ \ 1005 MAP(0x7D, 0xD3) /* GREEK SMALL LETTER UPSILON WITH TONOS */ \ 1006 MAP(0x7E, 0xD4) /* GREEK SMALL LETTER OMEGA WITH TONOS */ \ 1007 MAP(0x7F, 0x1B) /* undefined */ \ 1008 default: dft; break; \ 1009 } 1010 1011/* 1012 * figure A-23 "ISO Latin-Hebrew Supplemental Character Set" 1013 */ 1014#define map_ISO_Hebrew(code) \ 1015 begin_CODEPAGE(96) \ 1016 switch (code) { \ 1017 UNI(0x20, 0x00A0) /* NO-BREAK SPACE */ \ 1018 XXX(0x21, UNDEF) /* undefined */ \ 1019 UNI(0x22, 0x00A2) /* CENT SIGN */ \ 1020 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 1021 UNI(0x24, 0x00A4) /* CURRENCY SIGN */ \ 1022 UNI(0x25, 0x00A5) /* YEN SIGN */ \ 1023 UNI(0x26, 0x00A6) /* BROKEN BAR */ \ 1024 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 1025 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 1026 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 1027 UNI(0x2A, 0x00D7) /* MULTIPLICATION SIGN */ \ 1028 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1029 UNI(0x2C, 0x00AC) /* NOT SIGN */ \ 1030 UNI(0x2D, 0x00AD) /* SOFT HYPHEN */ \ 1031 UNI(0x2E, 0x00AE) /* REGISTERED SIGN */ \ 1032 UNI(0x2F, 0x00AF) /* MACRON */ \ 1033 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 1034 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 1035 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 1036 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 1037 UNI(0x34, 0x00B4) /* ACUTE ACCENT */ \ 1038 UNI(0x35, 0x00B5) /* MICRO SIGN */ \ 1039 UNI(0x36, 0x00B6) /* PILCROW SIGN */ \ 1040 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 1041 UNI(0x38, 0x00B8) /* CEDILLA */ \ 1042 UNI(0x39, 0x00B9) /* SUPERSCRIPT ONE */ \ 1043 UNI(0x3A, 0x00F7) /* DIVISION SIGN */ \ 1044 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1045 UNI(0x3C, 0x00BC) /* VULGAR FRACTION ONE QUARTER */ \ 1046 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 1047 UNI(0x3E, 0x00BE) /* VULGAR FRACTION THREE QUARTERS */ \ 1048 XXX(0x3F, UNDEF) /* undefined */ \ 1049 XXX(0x40, UNDEF) /* undefined */ \ 1050 XXX(0x41, UNDEF) /* undefined */ \ 1051 XXX(0x42, UNDEF) /* undefined */ \ 1052 XXX(0x43, UNDEF) /* undefined */ \ 1053 XXX(0x44, UNDEF) /* undefined */ \ 1054 XXX(0x45, UNDEF) /* undefined */ \ 1055 XXX(0x46, UNDEF) /* undefined */ \ 1056 XXX(0x47, UNDEF) /* undefined */ \ 1057 XXX(0x48, UNDEF) /* undefined */ \ 1058 XXX(0x49, UNDEF) /* undefined */ \ 1059 XXX(0x4A, UNDEF) /* undefined */ \ 1060 XXX(0x4B, UNDEF) /* undefined */ \ 1061 XXX(0x4C, UNDEF) /* undefined */ \ 1062 XXX(0x4D, UNDEF) /* undefined */ \ 1063 XXX(0x4E, UNDEF) /* undefined */ \ 1064 XXX(0x4F, UNDEF) /* undefined */ \ 1065 XXX(0x50, UNDEF) /* undefined */ \ 1066 XXX(0x51, UNDEF) /* undefined */ \ 1067 XXX(0x52, UNDEF) /* undefined */ \ 1068 XXX(0x53, UNDEF) /* undefined */ \ 1069 XXX(0x54, UNDEF) /* undefined */ \ 1070 XXX(0x55, UNDEF) /* undefined */ \ 1071 XXX(0x56, UNDEF) /* undefined */ \ 1072 XXX(0x57, UNDEF) /* undefined */ \ 1073 XXX(0x58, UNDEF) /* undefined */ \ 1074 XXX(0x59, UNDEF) /* undefined */ \ 1075 XXX(0x5A, UNDEF) /* undefined */ \ 1076 XXX(0x5B, UNDEF) /* undefined */ \ 1077 XXX(0x5C, UNDEF) /* undefined */ \ 1078 XXX(0x5D, UNDEF) /* undefined */ \ 1079 XXX(0x5E, UNDEF) /* undefined */ \ 1080 UNI(0x5F, 0x2017) /* DOUBLE LOW LINE */ \ 1081 UNI(0x60, 0x05D0) /* HEBREW LETTER ALEF */ \ 1082 UNI(0x61, 0x05D1) /* HEBREW LETTER BET */ \ 1083 UNI(0x62, 0x05D2) /* HEBREW LETTER GIMEL */ \ 1084 UNI(0x63, 0x05D3) /* HEBREW LETTER DALET */ \ 1085 UNI(0x64, 0x05D4) /* HEBREW LETTER HE */ \ 1086 UNI(0x65, 0x05D5) /* HEBREW LETTER VAV */ \ 1087 UNI(0x66, 0x05D6) /* HEBREW LETTER ZAYIN */ \ 1088 UNI(0x67, 0x05D7) /* HEBREW LETTER HET */ \ 1089 UNI(0x68, 0x05D8) /* HEBREW LETTER TET */ \ 1090 UNI(0x69, 0x05D9) /* HEBREW LETTER YOD */ \ 1091 UNI(0x6A, 0x05DA) /* HEBREW LETTER FINAL KAF */ \ 1092 UNI(0x6B, 0x05DB) /* HEBREW LETTER KAF */ \ 1093 UNI(0x6C, 0x05DC) /* HEBREW LETTER LAMED */ \ 1094 UNI(0x6D, 0x05DD) /* HEBREW LETTER FINAL MEM */ \ 1095 UNI(0x6E, 0x05DE) /* HEBREW LETTER MEM */ \ 1096 UNI(0x6F, 0x05DF) /* HEBREW LETTER FINAL NUN */ \ 1097 UNI(0x70, 0x05E0) /* HEBREW LETTER NUN */ \ 1098 UNI(0x71, 0x05E1) /* HEBREW LETTER SAMEKH */ \ 1099 UNI(0x72, 0x05E2) /* HEBREW LETTER AYIN */ \ 1100 UNI(0x73, 0x05E3) /* HEBREW LETTER FINAL PE */ \ 1101 UNI(0x74, 0x05E4) /* HEBREW LETTER PE */ \ 1102 UNI(0x75, 0x05E5) /* HEBREW LETTER FINAL TSADI */ \ 1103 UNI(0x76, 0x05E6) /* HEBREW LETTER TSADI */ \ 1104 UNI(0x77, 0x05E7) /* HEBREW LETTER QOF */ \ 1105 UNI(0x78, 0x05E8) /* HEBREW LETTER RESH */ \ 1106 UNI(0x79, 0x05E9) /* HEBREW LETTER SHIN */ \ 1107 UNI(0x7A, 0x05EA) /* HEBREW LETTER TAV */ \ 1108 XXX(0x7B, UNDEF) /* undefined */ \ 1109 XXX(0x7C, UNDEF) /* undefined */ \ 1110 XXX(0x7D, UNDEF) /* undefined */ \ 1111 XXX(0x7E, UNDEF) /* undefined */ \ 1112 XXX(0x7F, UNDEF) /* undefined */ \ 1113 } \ 1114 end_CODEPAGE() 1115 1116#define unmap_ISO_Hebrew(code,dft) \ 1117 switch (code) { \ 1118 MAP(0x21, 0x1B) /* undefined */ \ 1119 MAP(0x2A, 0xD7) /* MULTIPLICATION SIGN */ \ 1120 MAP(0x3A, 0xF7) /* DIVISION SIGN */ \ 1121 MAP(0x3F, 0x1B) /* undefined */ \ 1122 MAP(0x40, 0x1B) /* undefined */ \ 1123 MAP(0x41, 0x1B) /* undefined */ \ 1124 MAP(0x42, 0x1B) /* undefined */ \ 1125 MAP(0x43, 0x1B) /* undefined */ \ 1126 MAP(0x44, 0x1B) /* undefined */ \ 1127 MAP(0x45, 0x1B) /* undefined */ \ 1128 MAP(0x46, 0x1B) /* undefined */ \ 1129 MAP(0x47, 0x1B) /* undefined */ \ 1130 MAP(0x48, 0x1B) /* undefined */ \ 1131 MAP(0x49, 0x1B) /* undefined */ \ 1132 MAP(0x4A, 0x1B) /* undefined */ \ 1133 MAP(0x4B, 0x1B) /* undefined */ \ 1134 MAP(0x4C, 0x1B) /* undefined */ \ 1135 MAP(0x4D, 0x1B) /* undefined */ \ 1136 MAP(0x4E, 0x1B) /* undefined */ \ 1137 MAP(0x4F, 0x1B) /* undefined */ \ 1138 MAP(0x50, 0x1B) /* undefined */ \ 1139 MAP(0x51, 0x1B) /* undefined */ \ 1140 MAP(0x52, 0x1B) /* undefined */ \ 1141 MAP(0x53, 0x1B) /* undefined */ \ 1142 MAP(0x54, 0x1B) /* undefined */ \ 1143 MAP(0x55, 0x1B) /* undefined */ \ 1144 MAP(0x56, 0x1B) /* undefined */ \ 1145 MAP(0x57, 0x1B) /* undefined */ \ 1146 MAP(0x58, 0x1B) /* undefined */ \ 1147 MAP(0x59, 0x1B) /* undefined */ \ 1148 MAP(0x5A, 0x1B) /* undefined */ \ 1149 MAP(0x5B, 0x1B) /* undefined */ \ 1150 MAP(0x5C, 0x1B) /* undefined */ \ 1151 MAP(0x5D, 0x1B) /* undefined */ \ 1152 MAP(0x5E, 0x1B) /* undefined */ \ 1153 MAP(0x5F, 0x52) /* DOUBLE LOW LINE */ \ 1154 MAP(0x60, 0x53) /* HEBREW LETTER ALEF */ \ 1155 MAP(0x61, 0x54) /* HEBREW LETTER BET */ \ 1156 MAP(0x62, 0x55) /* HEBREW LETTER GIMEL */ \ 1157 MAP(0x63, 0x56) /* HEBREW LETTER DALET */ \ 1158 MAP(0x64, 0x57) /* HEBREW LETTER HE */ \ 1159 MAP(0x65, 0x58) /* HEBREW LETTER VAV */ \ 1160 MAP(0x66, 0x59) /* HEBREW LETTER ZAYIN */ \ 1161 MAP(0x67, 0x5A) /* HEBREW LETTER HET */ \ 1162 MAP(0x68, 0x5B) /* HEBREW LETTER TET */ \ 1163 MAP(0x69, 0x5C) /* HEBREW LETTER YOD */ \ 1164 MAP(0x6A, 0x5D) /* HEBREW LETTER FINAL KAF */ \ 1165 MAP(0x6B, 0x5E) /* HEBREW LETTER KAF */ \ 1166 MAP(0x6C, 0x5F) /* HEBREW LETTER LAMED */ \ 1167 MAP(0x6D, 0x60) /* HEBREW LETTER FINAL MEM */ \ 1168 MAP(0x6E, 0x61) /* HEBREW LETTER MEM */ \ 1169 MAP(0x6F, 0x62) /* HEBREW LETTER FINAL NUN */ \ 1170 MAP(0x70, 0x63) /* HEBREW LETTER NUN */ \ 1171 MAP(0x71, 0x64) /* HEBREW LETTER SAMEKH */ \ 1172 MAP(0x72, 0x65) /* HEBREW LETTER AYIN */ \ 1173 MAP(0x73, 0x66) /* HEBREW LETTER FINAL PE */ \ 1174 MAP(0x74, 0x67) /* HEBREW LETTER PE */ \ 1175 MAP(0x75, 0x68) /* HEBREW LETTER FINAL TSADI */ \ 1176 MAP(0x76, 0x69) /* HEBREW LETTER TSADI */ \ 1177 MAP(0x77, 0x6A) /* HEBREW LETTER QOF */ \ 1178 MAP(0x78, 0x6B) /* HEBREW LETTER RESH */ \ 1179 MAP(0x79, 0x6C) /* HEBREW LETTER SHIN */ \ 1180 MAP(0x7A, 0x6D) /* HEBREW LETTER TAV */ \ 1181 MAP(0x7B, 0x1B) /* undefined */ \ 1182 MAP(0x7C, 0x1B) /* undefined */ \ 1183 MAP(0x7D, 0x1B) /* undefined */ \ 1184 MAP(0x7E, 0x1B) /* undefined */ \ 1185 MAP(0x7F, 0x1B) /* undefined */ \ 1186 default: dft; break; \ 1187 } 1188 1189/* 1190 * ISO Latin-2 is 8859-2 1191 */ 1192#define map_ISO_Latin_2(code) \ 1193 begin_CODEPAGE(96) \ 1194 switch (code) { \ 1195 UNI(0x20, 0x00A0) /* NO-BREAK SPACE */ \ 1196 UNI(0x21, 0x0104) /* LATIN CAPITAL LETTER A WITH OGONEK */ \ 1197 UNI(0x22, 0x02D8) /* BREVE */ \ 1198 UNI(0x23, 0x0141) /* LATIN CAPITAL LETTER L WITH STROKE */ \ 1199 UNI(0x24, 0x00A4) /* CURRENCY SIGN */ \ 1200 UNI(0x25, 0x013D) /* LATIN CAPITAL LETTER L WITH CARON */ \ 1201 UNI(0x26, 0x015A) /* LATIN CAPITAL LETTER S WITH ACUTE */ \ 1202 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 1203 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 1204 UNI(0x29, 0x0160) /* LATIN CAPITAL LETTER S WITH CARON */ \ 1205 UNI(0x2A, 0x015E) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 1206 UNI(0x2B, 0x0164) /* LATIN CAPITAL LETTER T WITH CARON */ \ 1207 UNI(0x2C, 0x0179) /* LATIN CAPITAL LETTER Z WITH ACUTE */ \ 1208 UNI(0x2D, 0x00AD) /* SOFT HYPHEN */ \ 1209 UNI(0x2E, 0x017D) /* LATIN CAPITAL LETTER Z WITH CARON */ \ 1210 UNI(0x2F, 0x017B) /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ 1211 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 1212 UNI(0x31, 0x0105) /* LATIN SMALL LETTER A WITH OGONEK */ \ 1213 UNI(0x32, 0x02DB) /* OGONEK */ \ 1214 UNI(0x33, 0x0142) /* LATIN SMALL LETTER L WITH STROKE */ \ 1215 UNI(0x34, 0x00B4) /* ACUTE ACCENT */ \ 1216 UNI(0x35, 0x013E) /* LATIN SMALL LETTER L WITH CARON */ \ 1217 UNI(0x36, 0x015B) /* LATIN SMALL LETTER S WITH ACUTE */ \ 1218 UNI(0x37, 0x02C7) /* CARON */ \ 1219 UNI(0x38, 0x00B8) /* CEDILLA */ \ 1220 UNI(0x39, 0x0161) /* LATIN SMALL LETTER S WITH CARON */ \ 1221 UNI(0x3A, 0x015F) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 1222 UNI(0x3B, 0x0165) /* LATIN SMALL LETTER T WITH CARON */ \ 1223 UNI(0x3C, 0x017A) /* LATIN SMALL LETTER Z WITH ACUTE */ \ 1224 UNI(0x3D, 0x02DD) /* DOUBLE ACUTE ACCENT */ \ 1225 UNI(0x3E, 0x017E) /* LATIN SMALL LETTER Z WITH CARON */ \ 1226 UNI(0x3F, 0x017C) /* LATIN SMALL LETTER Z WITH DOT ABOVE */ \ 1227 UNI(0x40, 0x0154) /* LATIN CAPITAL LETTER R WITH ACUTE */ \ 1228 UNI(0x41, 0x00C1) /* LATIN CAPITAL LETTER A WITH ACUTE */ \ 1229 UNI(0x42, 0x00C2) /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ 1230 UNI(0x43, 0x0102) /* LATIN CAPITAL LETTER A WITH BREVE */ \ 1231 UNI(0x44, 0x00C4) /* LATIN CAPITAL LETTER A WITH DIAERESIS */ \ 1232 UNI(0x45, 0x0139) /* LATIN CAPITAL LETTER L WITH ACUTE */ \ 1233 UNI(0x46, 0x0106) /* LATIN CAPITAL LETTER C WITH ACUTE */ \ 1234 UNI(0x47, 0x00C7) /* LATIN CAPITAL LETTER C WITH CEDILLA */ \ 1235 UNI(0x48, 0x010C) /* LATIN CAPITAL LETTER C WITH CARON */ \ 1236 UNI(0x49, 0x00C9) /* LATIN CAPITAL LETTER E WITH ACUTE */ \ 1237 UNI(0x4A, 0x0118) /* LATIN CAPITAL LETTER E WITH OGONEK */ \ 1238 UNI(0x4B, 0x00CB) /* LATIN CAPITAL LETTER E WITH DIAERESIS */ \ 1239 UNI(0x4C, 0x011A) /* LATIN CAPITAL LETTER E WITH CARON */ \ 1240 UNI(0x4D, 0x00CD) /* LATIN CAPITAL LETTER I WITH ACUTE */ \ 1241 UNI(0x4E, 0x00CE) /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ 1242 UNI(0x4F, 0x010E) /* LATIN CAPITAL LETTER D WITH CARON */ \ 1243 UNI(0x50, 0x0110) /* LATIN CAPITAL LETTER D WITH STROKE */ \ 1244 UNI(0x51, 0x0143) /* LATIN CAPITAL LETTER N WITH ACUTE */ \ 1245 UNI(0x52, 0x0147) /* LATIN CAPITAL LETTER N WITH CARON */ \ 1246 UNI(0x53, 0x00D3) /* LATIN CAPITAL LETTER O WITH ACUTE */ \ 1247 UNI(0x54, 0x00D4) /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ 1248 UNI(0x55, 0x0150) /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ 1249 UNI(0x56, 0x00D6) /* LATIN CAPITAL LETTER O WITH DIAERESIS */ \ 1250 UNI(0x57, 0x00D7) /* MULTIPLICATION SIGN */ \ 1251 UNI(0x58, 0x0158) /* LATIN CAPITAL LETTER R WITH CARON */ \ 1252 UNI(0x59, 0x016E) /* LATIN CAPITAL LETTER U WITH RING ABOVE */ \ 1253 UNI(0x5A, 0x00DA) /* LATIN CAPITAL LETTER U WITH ACUTE */ \ 1254 UNI(0x5B, 0x0170) /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ 1255 UNI(0x5C, 0x00DC) /* LATIN CAPITAL LETTER U WITH DIAERESIS */ \ 1256 UNI(0x5D, 0x00DD) /* LATIN CAPITAL LETTER Y WITH ACUTE */ \ 1257 UNI(0x5E, 0x0162) /* LATIN CAPITAL LETTER T WITH CEDILLA */ \ 1258 UNI(0x5F, 0x00DF) /* LATIN SMALL LETTER SHARP S */ \ 1259 UNI(0x60, 0x0155) /* LATIN SMALL LETTER R WITH ACUTE */ \ 1260 UNI(0x61, 0x00E1) /* LATIN SMALL LETTER A WITH ACUTE */ \ 1261 UNI(0x62, 0x00E2) /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ 1262 UNI(0x63, 0x0103) /* LATIN SMALL LETTER A WITH BREVE */ \ 1263 UNI(0x64, 0x00E4) /* LATIN SMALL LETTER A WITH DIAERESIS */ \ 1264 UNI(0x65, 0x013A) /* LATIN SMALL LETTER L WITH ACUTE */ \ 1265 UNI(0x66, 0x0107) /* LATIN SMALL LETTER C WITH ACUTE */ \ 1266 UNI(0x67, 0x00E7) /* LATIN SMALL LETTER C WITH CEDILLA */ \ 1267 UNI(0x68, 0x010D) /* LATIN SMALL LETTER C WITH CARON */ \ 1268 UNI(0x69, 0x00E9) /* LATIN SMALL LETTER E WITH ACUTE */ \ 1269 UNI(0x6A, 0x0119) /* LATIN SMALL LETTER E WITH OGONEK */ \ 1270 UNI(0x6B, 0x00EB) /* LATIN SMALL LETTER E WITH DIAERESIS */ \ 1271 UNI(0x6C, 0x011B) /* LATIN SMALL LETTER E WITH CARON */ \ 1272 UNI(0x6D, 0x00ED) /* LATIN SMALL LETTER I WITH ACUTE */ \ 1273 UNI(0x6E, 0x00EE) /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ 1274 UNI(0x6F, 0x010F) /* LATIN SMALL LETTER D WITH CARON */ \ 1275 UNI(0x70, 0x0111) /* LATIN SMALL LETTER D WITH STROKE */ \ 1276 UNI(0x71, 0x0144) /* LATIN SMALL LETTER N WITH ACUTE */ \ 1277 UNI(0x72, 0x0148) /* LATIN SMALL LETTER N WITH CARON */ \ 1278 UNI(0x73, 0x00F3) /* LATIN SMALL LETTER O WITH ACUTE */ \ 1279 UNI(0x74, 0x00F4) /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ 1280 UNI(0x75, 0x0151) /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ 1281 UNI(0x76, 0x00F6) /* LATIN SMALL LETTER O WITH DIAERESIS */ \ 1282 UNI(0x77, 0x00F7) /* DIVISION SIGN */ \ 1283 UNI(0x78, 0x0159) /* LATIN SMALL LETTER R WITH CARON */ \ 1284 UNI(0x79, 0x016F) /* LATIN SMALL LETTER U WITH RING ABOVE */ \ 1285 UNI(0x7A, 0x00FA) /* LATIN SMALL LETTER U WITH ACUTE */ \ 1286 UNI(0x7B, 0x0171) /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ 1287 UNI(0x7C, 0x00FC) /* LATIN SMALL LETTER U WITH DIAERESIS */ \ 1288 UNI(0x7D, 0x00FD) /* LATIN SMALL LETTER Y WITH ACUTE */ \ 1289 UNI(0x7E, 0x0163) /* LATIN SMALL LETTER T WITH CEDILLA */ \ 1290 UNI(0x7F, 0x02D9) /* DOT ABOVE */ \ 1291 } \ 1292 end_CODEPAGE() 1293 1294#define unmap_ISO_Latin_2(code,dft) \ 1295 switch (code) { \ 1296 MAP(0x21, 0x9A) /* LATIN CAPITAL LETTER A WITH OGONEK */ \ 1297 MAP(0x22, 0x90) /* BREVE */ \ 1298 MAP(0x23, 0x9B) /* LATIN CAPITAL LETTER L WITH STROKE */ \ 1299 MAP(0x25, 0x9C) /* LATIN CAPITAL LETTER L WITH CARON */ \ 1300 MAP(0x26, 0x9D) /* LATIN CAPITAL LETTER S WITH ACUTE */ \ 1301 MAP(0x29, 0x9E) /* LATIN CAPITAL LETTER S WITH CARON */ \ 1302 MAP(0x2A, 0x9F) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 1303 MAP(0x2B, 0x21) /* LATIN CAPITAL LETTER T WITH CARON */ \ 1304 MAP(0x2C, 0x22) /* LATIN CAPITAL LETTER Z WITH ACUTE */ \ 1305 MAP(0x2E, 0x23) /* LATIN CAPITAL LETTER Z WITH CARON */ \ 1306 MAP(0x2F, 0x24) /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ 1307 MAP(0x31, 0x25) /* LATIN SMALL LETTER A WITH OGONEK */ \ 1308 MAP(0x32, 0x91) /* OGONEK */ \ 1309 MAP(0x33, 0x26) /* LATIN SMALL LETTER L WITH STROKE */ \ 1310 MAP(0x35, 0x27) /* LATIN SMALL LETTER L WITH CARON */ \ 1311 MAP(0x36, 0x28) /* LATIN SMALL LETTER S WITH ACUTE */ \ 1312 MAP(0x37, 0x92) /* CARON */ \ 1313 MAP(0x39, 0x29) /* LATIN SMALL LETTER S WITH CARON */ \ 1314 MAP(0x3A, 0x2A) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 1315 MAP(0x3B, 0x2B) /* LATIN SMALL LETTER T WITH CARON */ \ 1316 MAP(0x3C, 0x2C) /* LATIN SMALL LETTER Z WITH ACUTE */ \ 1317 MAP(0x3D, 0x93) /* DOUBLE ACUTE ACCENT */ \ 1318 MAP(0x3E, 0x2D) /* LATIN SMALL LETTER Z WITH CARON */ \ 1319 MAP(0x3F, 0x2E) /* LATIN SMALL LETTER Z WITH DOT ABOVE */ \ 1320 MAP(0x40, 0x2F) /* LATIN CAPITAL LETTER R WITH ACUTE */ \ 1321 MAP(0x43, 0x30) /* LATIN CAPITAL LETTER A WITH BREVE */ \ 1322 MAP(0x45, 0x31) /* LATIN CAPITAL LETTER L WITH ACUTE */ \ 1323 MAP(0x46, 0x32) /* LATIN CAPITAL LETTER C WITH ACUTE */ \ 1324 MAP(0x48, 0x33) /* LATIN CAPITAL LETTER C WITH CARON */ \ 1325 MAP(0x4A, 0x34) /* LATIN CAPITAL LETTER E WITH OGONEK */ \ 1326 MAP(0x4C, 0x35) /* LATIN CAPITAL LETTER E WITH CARON */ \ 1327 MAP(0x4F, 0x36) /* LATIN CAPITAL LETTER D WITH CARON */ \ 1328 MAP(0x51, 0x37) /* LATIN CAPITAL LETTER N WITH ACUTE */ \ 1329 MAP(0x52, 0x38) /* LATIN CAPITAL LETTER N WITH CARON */ \ 1330 MAP(0x55, 0x39) /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ 1331 MAP(0x58, 0x3A) /* LATIN CAPITAL LETTER R WITH CARON */ \ 1332 MAP(0x59, 0x3B) /* LATIN CAPITAL LETTER U WITH RING ABOVE */ \ 1333 MAP(0x5B, 0x3C) /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ 1334 MAP(0x5E, 0x3D) /* LATIN CAPITAL LETTER T WITH CEDILLA */ \ 1335 MAP(0x60, 0x3E) /* LATIN SMALL LETTER R WITH ACUTE */ \ 1336 MAP(0x63, 0x3F) /* LATIN SMALL LETTER A WITH BREVE */ \ 1337 MAP(0x65, 0x40) /* LATIN SMALL LETTER L WITH ACUTE */ \ 1338 MAP(0x66, 0x41) /* LATIN SMALL LETTER C WITH ACUTE */ \ 1339 MAP(0x68, 0x42) /* LATIN SMALL LETTER C WITH CARON */ \ 1340 MAP(0x6A, 0x43) /* LATIN SMALL LETTER E WITH OGONEK */ \ 1341 MAP(0x6C, 0x44) /* LATIN SMALL LETTER E WITH CARON */ \ 1342 MAP(0x6F, 0x45) /* LATIN SMALL LETTER D WITH CARON */ \ 1343 MAP(0x70, 0x46) /* LATIN SMALL LETTER D WITH STROKE */ \ 1344 MAP(0x71, 0x47) /* LATIN SMALL LETTER N WITH ACUTE */ \ 1345 MAP(0x72, 0x48) /* LATIN SMALL LETTER N WITH CARON */ \ 1346 MAP(0x75, 0x49) /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ 1347 MAP(0x78, 0x4A) /* LATIN SMALL LETTER R WITH CARON */ \ 1348 MAP(0x79, 0x4B) /* LATIN SMALL LETTER U WITH RING ABOVE */ \ 1349 MAP(0x7B, 0x4C) /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ 1350 MAP(0x7E, 0x4D) /* LATIN SMALL LETTER T WITH CEDILLA */ \ 1351 MAP(0x7F, 0x94) /* DOT ABOVE */ \ 1352 default: dft; break; \ 1353 } 1354 1355/* 1356 * ISO Latin-5 is 8859-9 1357 */ 1358#define map_ISO_Latin_5(code) \ 1359 begin_CODEPAGE(96) \ 1360 switch (code) { \ 1361 UNI(0x20, 0x00A0) /* NO-BREAK SPACE */ \ 1362 UNI(0x21, 0x00A1) /* INVERTED EXCLAMATION MARK */ \ 1363 UNI(0x22, 0x00A2) /* CENT SIGN */ \ 1364 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 1365 UNI(0x24, 0x00A4) /* CURRENCY SIGN */ \ 1366 UNI(0x25, 0x00A5) /* YEN SIGN */ \ 1367 UNI(0x26, 0x00A6) /* BROKEN BAR */ \ 1368 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 1369 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 1370 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 1371 UNI(0x2A, 0x00AA) /* FEMININE ORDINAL INDICATOR */ \ 1372 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1373 UNI(0x2C, 0x00AC) /* NOT SIGN */ \ 1374 UNI(0x2D, 0x00AD) /* SOFT HYPHEN */ \ 1375 UNI(0x2E, 0x00AE) /* REGISTERED SIGN */ \ 1376 UNI(0x2F, 0x00AF) /* MACRON */ \ 1377 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 1378 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 1379 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 1380 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 1381 UNI(0x34, 0x00B4) /* ACUTE ACCENT */ \ 1382 UNI(0x35, 0x00B5) /* MICRO SIGN */ \ 1383 UNI(0x36, 0x00B6) /* PILCROW SIGN */ \ 1384 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 1385 UNI(0x38, 0x00B8) /* CEDILLA */ \ 1386 UNI(0x39, 0x00B9) /* SUPERSCRIPT ONE */ \ 1387 UNI(0x3A, 0x00BA) /* MASCULINE ORDINAL INDICATOR */ \ 1388 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1389 UNI(0x3C, 0x00BC) /* VULGAR FRACTION ONE QUARTER */ \ 1390 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 1391 UNI(0x3E, 0x00BE) /* VULGAR FRACTION THREE QUARTERS */ \ 1392 UNI(0x3F, 0x00BF) /* INVERTED QUESTION MARK */ \ 1393 UNI(0x40, 0x00C0) /* LATIN CAPITAL LETTER A WITH GRAVE */ \ 1394 UNI(0x41, 0x00C1) /* LATIN CAPITAL LETTER A WITH ACUTE */ \ 1395 UNI(0x42, 0x00C2) /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ 1396 UNI(0x43, 0x00C3) /* LATIN CAPITAL LETTER A WITH TILDE */ \ 1397 UNI(0x44, 0x00C4) /* LATIN CAPITAL LETTER A WITH DIAERESIS */ \ 1398 UNI(0x45, 0x00C5) /* LATIN CAPITAL LETTER A WITH RING ABOVE */ \ 1399 UNI(0x46, 0x00C6) /* LATIN CAPITAL LETTER AE */ \ 1400 UNI(0x47, 0x00C7) /* LATIN CAPITAL LETTER C WITH CEDILLA */ \ 1401 UNI(0x48, 0x00C8) /* LATIN CAPITAL LETTER E WITH GRAVE */ \ 1402 UNI(0x49, 0x00C9) /* LATIN CAPITAL LETTER E WITH ACUTE */ \ 1403 UNI(0x4A, 0x00CA) /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ 1404 UNI(0x4B, 0x00CB) /* LATIN CAPITAL LETTER E WITH DIAERESIS */ \ 1405 UNI(0x4C, 0x00CC) /* LATIN CAPITAL LETTER I WITH GRAVE */ \ 1406 UNI(0x4D, 0x00CD) /* LATIN CAPITAL LETTER I WITH ACUTE */ \ 1407 UNI(0x4E, 0x00CE) /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ 1408 UNI(0x4F, 0x00CF) /* LATIN CAPITAL LETTER I WITH DIAERESIS */ \ 1409 UNI(0x50, 0x011E) /* LATIN CAPITAL LETTER G WITH BREVE */ \ 1410 UNI(0x51, 0x00D1) /* LATIN CAPITAL LETTER N WITH TILDE */ \ 1411 UNI(0x52, 0x00D2) /* LATIN CAPITAL LETTER O WITH GRAVE */ \ 1412 UNI(0x53, 0x00D3) /* LATIN CAPITAL LETTER O WITH ACUTE */ \ 1413 UNI(0x54, 0x00D4) /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ 1414 UNI(0x55, 0x00D5) /* LATIN CAPITAL LETTER O WITH TILDE */ \ 1415 UNI(0x56, 0x00D6) /* LATIN CAPITAL LETTER O WITH DIAERESIS */ \ 1416 UNI(0x57, 0x00D7) /* MULTIPLICATION SIGN */ \ 1417 UNI(0x58, 0x00D8) /* LATIN CAPITAL LETTER O WITH STROKE */ \ 1418 UNI(0x59, 0x00D9) /* LATIN CAPITAL LETTER U WITH GRAVE */ \ 1419 UNI(0x5A, 0x00DA) /* LATIN CAPITAL LETTER U WITH ACUTE */ \ 1420 UNI(0x5B, 0x00DB) /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ 1421 UNI(0x5C, 0x00DC) /* LATIN CAPITAL LETTER U WITH DIAERESIS */ \ 1422 UNI(0x5D, 0x0130) /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ 1423 UNI(0x5E, 0x015E) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 1424 UNI(0x5F, 0x00DF) /* LATIN SMALL LETTER SHARP S */ \ 1425 UNI(0x60, 0x00E0) /* LATIN SMALL LETTER A WITH GRAVE */ \ 1426 UNI(0x61, 0x00E1) /* LATIN SMALL LETTER A WITH ACUTE */ \ 1427 UNI(0x62, 0x00E2) /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ 1428 UNI(0x63, 0x00E3) /* LATIN SMALL LETTER A WITH TILDE */ \ 1429 UNI(0x64, 0x00E4) /* LATIN SMALL LETTER A WITH DIAERESIS */ \ 1430 UNI(0x65, 0x00E5) /* LATIN SMALL LETTER A WITH RING ABOVE */ \ 1431 UNI(0x66, 0x00E6) /* LATIN SMALL LETTER AE */ \ 1432 UNI(0x67, 0x00E7) /* LATIN SMALL LETTER C WITH CEDILLA */ \ 1433 UNI(0x68, 0x00E8) /* LATIN SMALL LETTER E WITH GRAVE */ \ 1434 UNI(0x69, 0x00E9) /* LATIN SMALL LETTER E WITH ACUTE */ \ 1435 UNI(0x6A, 0x00EA) /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ 1436 UNI(0x6B, 0x00EB) /* LATIN SMALL LETTER E WITH DIAERESIS */ \ 1437 UNI(0x6C, 0x00EC) /* LATIN SMALL LETTER I WITH GRAVE */ \ 1438 UNI(0x6D, 0x00ED) /* LATIN SMALL LETTER I WITH ACUTE */ \ 1439 UNI(0x6E, 0x00EE) /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ 1440 UNI(0x6F, 0x00EF) /* LATIN SMALL LETTER I WITH DIAERESIS */ \ 1441 UNI(0x70, 0x011F) /* LATIN SMALL LETTER G WITH BREVE */ \ 1442 UNI(0x71, 0x00F1) /* LATIN SMALL LETTER N WITH TILDE */ \ 1443 UNI(0x72, 0x00F2) /* LATIN SMALL LETTER O WITH GRAVE */ \ 1444 UNI(0x73, 0x00F3) /* LATIN SMALL LETTER O WITH ACUTE */ \ 1445 UNI(0x74, 0x00F4) /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ 1446 UNI(0x75, 0x00F5) /* LATIN SMALL LETTER O WITH TILDE */ \ 1447 UNI(0x76, 0x00F6) /* LATIN SMALL LETTER O WITH DIAERESIS */ \ 1448 UNI(0x77, 0x00F7) /* DIVISION SIGN */ \ 1449 UNI(0x78, 0x00F8) /* LATIN SMALL LETTER O WITH STROKE */ \ 1450 UNI(0x79, 0x00F9) /* LATIN SMALL LETTER U WITH GRAVE */ \ 1451 UNI(0x7A, 0x00FA) /* LATIN SMALL LETTER U WITH ACUTE */ \ 1452 UNI(0x7B, 0x00FB) /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ 1453 UNI(0x7C, 0x00FC) /* LATIN SMALL LETTER U WITH DIAERESIS */ \ 1454 UNI(0x7D, 0x0131) /* LATIN SMALL LETTER DOTLESS I */ \ 1455 UNI(0x7E, 0x015F) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 1456 UNI(0x7F, 0x00FF) /* LATIN SMALL LETTER Y WITH DIAERESIS */ \ 1457 } \ 1458 end_CODEPAGE() 1459 1460#define unmap_ISO_Latin_5(code,dft) \ 1461 switch (code) { \ 1462 MAP(0x50, 0x4E) /* LATIN CAPITAL LETTER G WITH BREVE */ \ 1463 MAP(0x5D, 0x4F) /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ 1464 MAP(0x5E, 0x9F) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 1465 MAP(0x70, 0x50) /* LATIN SMALL LETTER G WITH BREVE */ \ 1466 MAP(0x7D, 0x51) /* LATIN SMALL LETTER DOTLESS I */ \ 1467 MAP(0x7E, 0x2A) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 1468 default: dft; break; \ 1469 } 1470 1471/* 1472 * DEC Cyrillic from screenshot 1473 */ 1474#define map_DEC_Cyrillic(code) \ 1475 begin_CODEPAGE(94) \ 1476 switch (code) { \ 1477 XXX(0x21, UNDEF) /* undefined */ \ 1478 XXX(0x22, UNDEF) /* undefined */ \ 1479 XXX(0x23, UNDEF) /* undefined */ \ 1480 XXX(0x24, UNDEF) /* undefined */ \ 1481 XXX(0x25, UNDEF) /* undefined */ \ 1482 XXX(0x26, UNDEF) /* undefined */ \ 1483 XXX(0x27, UNDEF) /* undefined */ \ 1484 XXX(0x28, UNDEF) /* undefined */ \ 1485 XXX(0x29, UNDEF) /* undefined */ \ 1486 XXX(0x2A, UNDEF) /* undefined */ \ 1487 XXX(0x2B, UNDEF) /* undefined */ \ 1488 XXX(0x2C, UNDEF) /* undefined */ \ 1489 XXX(0x2D, UNDEF) /* undefined */ \ 1490 XXX(0x2E, UNDEF) /* undefined */ \ 1491 XXX(0x2F, UNDEF) /* undefined */ \ 1492 XXX(0x30, UNDEF) /* undefined */ \ 1493 XXX(0x31, UNDEF) /* undefined */ \ 1494 XXX(0x32, UNDEF) /* undefined */ \ 1495 XXX(0x33, UNDEF) /* undefined */ \ 1496 XXX(0x34, UNDEF) /* undefined */ \ 1497 XXX(0x35, UNDEF) /* undefined */ \ 1498 XXX(0x36, UNDEF) /* undefined */ \ 1499 XXX(0x37, UNDEF) /* undefined */ \ 1500 XXX(0x38, UNDEF) /* undefined */ \ 1501 XXX(0x39, UNDEF) /* undefined */ \ 1502 XXX(0x3A, UNDEF) /* undefined */ \ 1503 XXX(0x3B, UNDEF) /* undefined */ \ 1504 XXX(0x3C, UNDEF) /* undefined */ \ 1505 XXX(0x3D, UNDEF) /* undefined */ \ 1506 XXX(0x3E, UNDEF) /* undefined */ \ 1507 XXX(0x3F, UNDEF) /* undefined */ \ 1508 UNI(0x40, 0x044E) /* CYRILLIC SMALL LETTER YU */ \ 1509 UNI(0x41, 0x0430) /* CYRILLIC SMALL LETTER A */ \ 1510 UNI(0x42, 0x0431) /* CYRILLIC SMALL LETTER BE */ \ 1511 UNI(0x43, 0x0446) /* CYRILLIC SMALL LETTER TSE */ \ 1512 UNI(0x44, 0x0434) /* CYRILLIC SMALL LETTER DE */ \ 1513 UNI(0x45, 0x0435) /* CYRILLIC SMALL LETTER IE */ \ 1514 UNI(0x46, 0x0444) /* CYRILLIC SMALL LETTER EF */ \ 1515 UNI(0x47, 0x0433) /* CYRILLIC SMALL LETTER GHE */ \ 1516 UNI(0x48, 0x0445) /* CYRILLIC SMALL LETTER HA */ \ 1517 UNI(0x49, 0x0438) /* CYRILLIC SMALL LETTER I */ \ 1518 UNI(0x4A, 0x0439) /* CYRILLIC SMALL LETTER SHORT I */ \ 1519 UNI(0x4B, 0x043A) /* CYRILLIC SMALL LETTER KA */ \ 1520 UNI(0x4C, 0x043B) /* CYRILLIC SMALL LETTER EL */ \ 1521 UNI(0x4D, 0x043C) /* CYRILLIC SMALL LETTER EM */ \ 1522 UNI(0x4E, 0x043D) /* CYRILLIC SMALL LETTER EN */ \ 1523 UNI(0x4F, 0x043E) /* CYRILLIC SMALL LETTER O */ \ 1524 UNI(0x50, 0x043F) /* CYRILLIC SMALL LETTER PE */ \ 1525 UNI(0x51, 0x044F) /* CYRILLIC SMALL LETTER YA */ \ 1526 UNI(0x52, 0x0440) /* CYRILLIC SMALL LETTER ER */ \ 1527 UNI(0x53, 0x0441) /* CYRILLIC SMALL LETTER ES */ \ 1528 UNI(0x54, 0x0442) /* CYRILLIC SMALL LETTER TE */ \ 1529 UNI(0x55, 0x0443) /* CYRILLIC SMALL LETTER U */ \ 1530 UNI(0x56, 0x0436) /* CYRILLIC SMALL LETTER ZHE */ \ 1531 UNI(0x57, 0x0432) /* CYRILLIC SMALL LETTER VE */ \ 1532 UNI(0x58, 0x044C) /* CYRILLIC SMALL LETTER SOFT SIGN */ \ 1533 UNI(0x59, 0x044B) /* CYRILLIC SMALL LETTER YERU */ \ 1534 UNI(0x5A, 0x0437) /* CYRILLIC SMALL LETTER ZE */ \ 1535 UNI(0x5B, 0x0448) /* CYRILLIC SMALL LETTER SHA */ \ 1536 UNI(0x5C, 0x044D) /* CYRILLIC SMALL LETTER E */ \ 1537 UNI(0x5D, 0x0449) /* CYRILLIC SMALL LETTER SHCHA */ \ 1538 UNI(0x5E, 0x0447) /* CYRILLIC SMALL LETTER CHE */ \ 1539 UNI(0x5F, 0x044A) /* CYRILLIC SMALL LETTER HARD SIGN */ \ 1540 UNI(0x60, 0x042E) /* CYRILLIC CAPITAL LETTER YU */ \ 1541 UNI(0x61, 0x0410) /* CYRILLIC CAPITAL LETTER A */ \ 1542 UNI(0x62, 0x0411) /* CYRILLIC CAPITAL LETTER BE */ \ 1543 UNI(0x63, 0x0426) /* CYRILLIC CAPITAL LETTER TSE */ \ 1544 UNI(0x64, 0x0414) /* CYRILLIC CAPITAL LETTER DE */ \ 1545 UNI(0x65, 0x0415) /* CYRILLIC CAPITAL LETTER IE */ \ 1546 UNI(0x66, 0x0424) /* CYRILLIC CAPITAL LETTER EF */ \ 1547 UNI(0x67, 0x0413) /* CYRILLIC CAPITAL LETTER GHE */ \ 1548 UNI(0x68, 0x0425) /* CYRILLIC CAPITAL LETTER HA */ \ 1549 UNI(0x69, 0x0418) /* CYRILLIC CAPITAL LETTER I */ \ 1550 UNI(0x6A, 0x0419) /* CYRILLIC CAPITAL LETTER SHORT I */ \ 1551 UNI(0x6B, 0x041A) /* CYRILLIC CAPITAL LETTER KA */ \ 1552 UNI(0x6C, 0x041B) /* CYRILLIC CAPITAL LETTER EL */ \ 1553 UNI(0x6D, 0x041C) /* CYRILLIC CAPITAL LETTER EM */ \ 1554 UNI(0x6E, 0x041D) /* CYRILLIC CAPITAL LETTER EN */ \ 1555 UNI(0x6F, 0x041E) /* CYRILLIC CAPITAL LETTER O */ \ 1556 UNI(0x70, 0x041F) /* CYRILLIC CAPITAL LETTER PE */ \ 1557 UNI(0x71, 0x042F) /* CYRILLIC CAPITAL LETTER YA */ \ 1558 UNI(0x72, 0x0420) /* CYRILLIC CAPITAL LETTER ER */ \ 1559 UNI(0x73, 0x0421) /* CYRILLIC CAPITAL LETTER ES */ \ 1560 UNI(0x74, 0x0422) /* CYRILLIC CAPITAL LETTER TE */ \ 1561 UNI(0x75, 0x0423) /* CYRILLIC CAPITAL LETTER U */ \ 1562 UNI(0x76, 0x0416) /* CYRILLIC CAPITAL LETTER ZHE */ \ 1563 UNI(0x77, 0x0412) /* CYRILLIC CAPITAL LETTER VE */ \ 1564 UNI(0x78, 0x042C) /* CYRILLIC CAPITAL LETTER SOFT SIGN */ \ 1565 UNI(0x79, 0x042B) /* CYRILLIC CAPITAL LETTER YERU */ \ 1566 UNI(0x7A, 0x0417) /* CYRILLIC CAPITAL LETTER ZE */ \ 1567 UNI(0x7B, 0x0428) /* CYRILLIC CAPITAL LETTER SHA */ \ 1568 UNI(0x7C, 0x042D) /* CYRILLIC CAPITAL LETTER E */ \ 1569 UNI(0x7D, 0x0429) /* CYRILLIC CAPITAL LETTER SHCHA */ \ 1570 UNI(0x7E, 0x0427) /* CYRILLIC CAPITAL LETTER CHE */ \ 1571 } \ 1572 end_CODEPAGE() 1573 1574#define unmap_DEC_Cyrillic(code,dft) \ 1575 switch (code) { \ 1576 MAP(0x21, 0x1B) /* undefined */ \ 1577 MAP(0x22, 0x1B) /* undefined */ \ 1578 MAP(0x23, 0x1B) /* undefined */ \ 1579 MAP(0x24, 0x1B) /* undefined */ \ 1580 MAP(0x25, 0x1B) /* undefined */ \ 1581 MAP(0x26, 0x1B) /* undefined */ \ 1582 MAP(0x27, 0x1B) /* undefined */ \ 1583 MAP(0x28, 0x1B) /* undefined */ \ 1584 MAP(0x29, 0x1B) /* undefined */ \ 1585 MAP(0x2A, 0x1B) /* undefined */ \ 1586 MAP(0x2B, 0x1B) /* undefined */ \ 1587 MAP(0x2C, 0x1B) /* undefined */ \ 1588 MAP(0x2D, 0x1B) /* undefined */ \ 1589 MAP(0x2E, 0x1B) /* undefined */ \ 1590 MAP(0x2F, 0x1B) /* undefined */ \ 1591 MAP(0x30, 0x1B) /* undefined */ \ 1592 MAP(0x31, 0x1B) /* undefined */ \ 1593 MAP(0x32, 0x1B) /* undefined */ \ 1594 MAP(0x33, 0x1B) /* undefined */ \ 1595 MAP(0x34, 0x1B) /* undefined */ \ 1596 MAP(0x35, 0x1B) /* undefined */ \ 1597 MAP(0x36, 0x1B) /* undefined */ \ 1598 MAP(0x37, 0x1B) /* undefined */ \ 1599 MAP(0x38, 0x1B) /* undefined */ \ 1600 MAP(0x39, 0x1B) /* undefined */ \ 1601 MAP(0x3A, 0x1B) /* undefined */ \ 1602 MAP(0x3B, 0x1B) /* undefined */ \ 1603 MAP(0x3C, 0x1B) /* undefined */ \ 1604 MAP(0x3D, 0x1B) /* undefined */ \ 1605 MAP(0x3E, 0x1B) /* undefined */ \ 1606 MAP(0x3F, 0x1B) /* undefined */ \ 1607 MAP(0x40, 0x4F) /* CYRILLIC SMALL LETTER YU */ \ 1608 MAP(0x41, 0x31) /* CYRILLIC SMALL LETTER A */ \ 1609 MAP(0x42, 0x32) /* CYRILLIC SMALL LETTER BE */ \ 1610 MAP(0x43, 0x47) /* CYRILLIC SMALL LETTER TSE */ \ 1611 MAP(0x44, 0x35) /* CYRILLIC SMALL LETTER DE */ \ 1612 MAP(0x45, 0x36) /* CYRILLIC SMALL LETTER IE */ \ 1613 MAP(0x46, 0x45) /* CYRILLIC SMALL LETTER EF */ \ 1614 MAP(0x47, 0x34) /* CYRILLIC SMALL LETTER GHE */ \ 1615 MAP(0x48, 0x46) /* CYRILLIC SMALL LETTER HA */ \ 1616 MAP(0x49, 0x39) /* CYRILLIC SMALL LETTER I */ \ 1617 MAP(0x4A, 0x3A) /* CYRILLIC SMALL LETTER SHORT I */ \ 1618 MAP(0x4B, 0x3B) /* CYRILLIC SMALL LETTER KA */ \ 1619 MAP(0x4C, 0x3C) /* CYRILLIC SMALL LETTER EL */ \ 1620 MAP(0x4D, 0x3D) /* CYRILLIC SMALL LETTER EM */ \ 1621 MAP(0x4E, 0x3E) /* CYRILLIC SMALL LETTER EN */ \ 1622 MAP(0x4F, 0x3F) /* CYRILLIC SMALL LETTER O */ \ 1623 MAP(0x50, 0x40) /* CYRILLIC SMALL LETTER PE */ \ 1624 MAP(0x51, 0x50) /* CYRILLIC SMALL LETTER YA */ \ 1625 MAP(0x52, 0x41) /* CYRILLIC SMALL LETTER ER */ \ 1626 MAP(0x53, 0x42) /* CYRILLIC SMALL LETTER ES */ \ 1627 MAP(0x54, 0x43) /* CYRILLIC SMALL LETTER TE */ \ 1628 MAP(0x55, 0x44) /* CYRILLIC SMALL LETTER U */ \ 1629 MAP(0x56, 0x37) /* CYRILLIC SMALL LETTER ZHE */ \ 1630 MAP(0x57, 0x33) /* CYRILLIC SMALL LETTER VE */ \ 1631 MAP(0x58, 0x4D) /* CYRILLIC SMALL LETTER SOFT SIGN */ \ 1632 MAP(0x59, 0x4C) /* CYRILLIC SMALL LETTER YERU */ \ 1633 MAP(0x5A, 0x38) /* CYRILLIC SMALL LETTER ZE */ \ 1634 MAP(0x5B, 0x49) /* CYRILLIC SMALL LETTER SHA */ \ 1635 MAP(0x5C, 0x4E) /* CYRILLIC SMALL LETTER E */ \ 1636 MAP(0x5D, 0x4A) /* CYRILLIC SMALL LETTER SHCHA */ \ 1637 MAP(0x5E, 0x48) /* CYRILLIC SMALL LETTER CHE */ \ 1638 MAP(0x5F, 0x4B) /* CYRILLIC SMALL LETTER HARD SIGN */ \ 1639 MAP(0x60, 0x2F) /* CYRILLIC CAPITAL LETTER YU */ \ 1640 MAP(0x61, 0x11) /* CYRILLIC CAPITAL LETTER A */ \ 1641 MAP(0x62, 0x12) /* CYRILLIC CAPITAL LETTER BE */ \ 1642 MAP(0x63, 0x27) /* CYRILLIC CAPITAL LETTER TSE */ \ 1643 MAP(0x64, 0x15) /* CYRILLIC CAPITAL LETTER DE */ \ 1644 MAP(0x65, 0x16) /* CYRILLIC CAPITAL LETTER IE */ \ 1645 MAP(0x66, 0x25) /* CYRILLIC CAPITAL LETTER EF */ \ 1646 MAP(0x67, 0x14) /* CYRILLIC CAPITAL LETTER GHE */ \ 1647 MAP(0x68, 0x26) /* CYRILLIC CAPITAL LETTER HA */ \ 1648 MAP(0x69, 0x19) /* CYRILLIC CAPITAL LETTER I */ \ 1649 MAP(0x6A, 0x1A) /* CYRILLIC CAPITAL LETTER SHORT I */ \ 1650 MAP(0x6B, 0x1B) /* CYRILLIC CAPITAL LETTER KA */ \ 1651 MAP(0x6C, 0x1C) /* CYRILLIC CAPITAL LETTER EL */ \ 1652 MAP(0x6D, 0x1D) /* CYRILLIC CAPITAL LETTER EM */ \ 1653 MAP(0x6E, 0x1E) /* CYRILLIC CAPITAL LETTER EN */ \ 1654 MAP(0x6F, 0x1F) /* CYRILLIC CAPITAL LETTER O */ \ 1655 MAP(0x70, 0x20) /* CYRILLIC CAPITAL LETTER PE */ \ 1656 MAP(0x71, 0x30) /* CYRILLIC CAPITAL LETTER YA */ \ 1657 MAP(0x72, 0x21) /* CYRILLIC CAPITAL LETTER ER */ \ 1658 MAP(0x73, 0x22) /* CYRILLIC CAPITAL LETTER ES */ \ 1659 MAP(0x74, 0x23) /* CYRILLIC CAPITAL LETTER TE */ \ 1660 MAP(0x75, 0x24) /* CYRILLIC CAPITAL LETTER U */ \ 1661 MAP(0x76, 0x17) /* CYRILLIC CAPITAL LETTER ZHE */ \ 1662 MAP(0x77, 0x13) /* CYRILLIC CAPITAL LETTER VE */ \ 1663 MAP(0x78, 0x2D) /* CYRILLIC CAPITAL LETTER SOFT SIGN */ \ 1664 MAP(0x79, 0x2C) /* CYRILLIC CAPITAL LETTER YERU */ \ 1665 MAP(0x7A, 0x18) /* CYRILLIC CAPITAL LETTER ZE */ \ 1666 MAP(0x7B, 0x29) /* CYRILLIC CAPITAL LETTER SHA */ \ 1667 MAP(0x7C, 0x2E) /* CYRILLIC CAPITAL LETTER E */ \ 1668 MAP(0x7D, 0x2A) /* CYRILLIC CAPITAL LETTER SHCHA */ \ 1669 MAP(0x7E, 0x28) /* CYRILLIC CAPITAL LETTER CHE */ \ 1670 default: dft; break; \ 1671 } 1672 1673/* 1674 * figure A-24 "DEC Greek Supplemental Character Set" 1675 */ 1676#define map_DEC_Greek_Supp(code) \ 1677 begin_CODEPAGE(94) \ 1678 switch (code) { \ 1679 UNI(0x21, 0x00A1) /* LEFT SINGLE QUOTATION MARK */ \ 1680 UNI(0x22, 0x00A2) /* RIGHT SINGLE QUOTATION MARK */ \ 1681 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 1682 XXX(0x24, UNDEF) /* EURO SIGN */ \ 1683 UNI(0x25, 0x00A5) /* YEN SIGN */ \ 1684 XXX(0x26, UNDEF) /* BROKEN BAR */ \ 1685 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 1686 UNI(0x28, 0x00A4) /* CURRENCY SIGN */ \ 1687 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 1688 UNI(0x2A, 0x00AA) /* FEMININE ORDINAL INDICATOR */ \ 1689 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1690 XXX(0x2C, UNDEF) /* reserved */ \ 1691 XXX(0x2D, UNDEF) /* reserved */ \ 1692 XXX(0x2E, UNDEF) /* reserved */ \ 1693 XXX(0x2F, UNDEF) /* reserved */ \ 1694 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 1695 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 1696 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 1697 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 1698 XXX(0x34, UNDEF) /* reserved */ \ 1699 UNI(0x35, 0x00B5) /* MICRO SIGN */ \ 1700 UNI(0x36, 0x00B6) /* PILCROW SIGN */ \ 1701 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 1702 XXX(0x38, UNDEF) /* reserved */ \ 1703 UNI(0x39, 0x00B9) /* SUPERSCRIPT ONE */ \ 1704 UNI(0x3A, 0x00BA) /* MASCULINE ORDINAL INDICATOR */ \ 1705 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1706 UNI(0x3C, 0x00BC) /* VULGAR FRACTION ONE QUARTER */ \ 1707 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 1708 XXX(0x3E, UNDEF) /* reserved */ \ 1709 UNI(0x3F, 0x00BF) /* INVERTED QUESTION MARK */ \ 1710 UNI(0x40, 0x03CA) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \ 1711 UNI(0x41, 0x0391) /* GREEK CAPITAL LETTER ALPHA */ \ 1712 UNI(0x42, 0x0392) /* GREEK CAPITAL LETTER BETA */ \ 1713 UNI(0x43, 0x0393) /* GREEK CAPITAL LETTER GAMMA */ \ 1714 UNI(0x44, 0x0394) /* GREEK CAPITAL LETTER DELTA */ \ 1715 UNI(0x45, 0x0395) /* GREEK CAPITAL LETTER EPSILON */ \ 1716 UNI(0x46, 0x0396) /* GREEK CAPITAL LETTER ZETA */ \ 1717 UNI(0x47, 0x0397) /* GREEK CAPITAL LETTER ETA */ \ 1718 UNI(0x48, 0x0398) /* GREEK CAPITAL LETTER THETA */ \ 1719 UNI(0x49, 0x0399) /* GREEK CAPITAL LETTER IOTA */ \ 1720 UNI(0x4A, 0x039A) /* GREEK CAPITAL LETTER KAPPA */ \ 1721 UNI(0x4B, 0x039B) /* GREEK CAPITAL LETTER LAMDA */ \ 1722 UNI(0x4C, 0x039C) /* GREEK CAPITAL LETTER MU */ \ 1723 UNI(0x4D, 0x039D) /* GREEK CAPITAL LETTER NU */ \ 1724 UNI(0x4E, 0x039E) /* GREEK CAPITAL LETTER XI */ \ 1725 UNI(0x4F, 0x039F) /* GREEK CAPITAL LETTER OMICRON */ \ 1726 XXX(0x50, UNDEF) /* reserved */ \ 1727 UNI(0x51, 0x03A0) /* GREEK CAPITAL LETTER PI */ \ 1728 UNI(0x52, 0x03A1) /* GREEK CAPITAL LETTER RHO */ \ 1729 UNI(0x53, 0x03A3) /* GREEK CAPITAL LETTER SIGMA */ \ 1730 UNI(0x54, 0x03A4) /* GREEK CAPITAL LETTER TAU */ \ 1731 UNI(0x55, 0x03A5) /* GREEK CAPITAL LETTER UPSILON */ \ 1732 UNI(0x56, 0x03A6) /* GREEK CAPITAL LETTER PHI */ \ 1733 UNI(0x57, 0x03A7) /* GREEK CAPITAL LETTER CHI */ \ 1734 UNI(0x58, 0x03A8) /* GREEK CAPITAL LETTER PSI */ \ 1735 UNI(0x59, 0x03A9) /* GREEK CAPITAL LETTER OMEGA */ \ 1736 UNI(0x5A, 0x03AC) /* GREEK SMALL LETTER ALPHA WITH TONOS */ \ 1737 UNI(0x5B, 0x03AD) /* GREEK SMALL LETTER EPSILON WITH TONOS */ \ 1738 UNI(0x5C, 0x03AE) /* GREEK SMALL LETTER ETA WITH TONOS */ \ 1739 UNI(0x5D, 0x03AF) /* GREEK SMALL LETTER IOTA WITH TONOS */ \ 1740 XXX(0x5E, UNDEF) /* reserved */ \ 1741 UNI(0x5F, 0x03CC) /* GREEK SMALL LETTER OMICRON WITH TONOS */ \ 1742 UNI(0x60, 0x03CB) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \ 1743 UNI(0x61, 0x03B1) /* GREEK SMALL LETTER ALPHA */ \ 1744 UNI(0x62, 0x03B2) /* GREEK SMALL LETTER BETA */ \ 1745 UNI(0x63, 0x03B3) /* GREEK SMALL LETTER GAMMA */ \ 1746 UNI(0x64, 0x03B4) /* GREEK SMALL LETTER DELTA */ \ 1747 UNI(0x65, 0x03B5) /* GREEK SMALL LETTER EPSILON */ \ 1748 UNI(0x66, 0x03B6) /* GREEK SMALL LETTER ZETA */ \ 1749 UNI(0x67, 0x03B7) /* GREEK SMALL LETTER ETA */ \ 1750 UNI(0x68, 0x03B8) /* GREEK SMALL LETTER THETA */ \ 1751 UNI(0x69, 0x03B9) /* GREEK SMALL LETTER IOTA */ \ 1752 UNI(0x6A, 0x03BA) /* GREEK SMALL LETTER KAPPA */ \ 1753 UNI(0x6B, 0x03BB) /* GREEK SMALL LETTER LAMDA */ \ 1754 UNI(0x6C, 0x03BC) /* GREEK SMALL LETTER MU */ \ 1755 UNI(0x6D, 0x03BD) /* GREEK SMALL LETTER NU */ \ 1756 UNI(0x6E, 0x03BE) /* GREEK SMALL LETTER XI */ \ 1757 UNI(0x6F, 0x03BF) /* GREEK SMALL LETTER OMICRON */ \ 1758 XXX(0x70, UNDEF) /* reserved */ \ 1759 UNI(0x71, 0x03C0) /* GREEK SMALL LETTER PI */ \ 1760 UNI(0x72, 0x03C1) /* GREEK SMALL LETTER RHO */ \ 1761 UNI(0x73, 0x03C3) /* GREEK SMALL LETTER SIGMA */ \ 1762 UNI(0x74, 0x03C4) /* GREEK SMALL LETTER TAU */ \ 1763 UNI(0x75, 0x03C5) /* GREEK SMALL LETTER UPSILON */ \ 1764 UNI(0x76, 0x03C6) /* GREEK SMALL LETTER PHI */ \ 1765 UNI(0x77, 0x03C7) /* GREEK SMALL LETTER CHI */ \ 1766 UNI(0x78, 0x03C8) /* GREEK SMALL LETTER PSI */ \ 1767 UNI(0x79, 0x03C9) /* GREEK SMALL LETTER OMEGA */ \ 1768 UNI(0x7A, 0x03C2) /* GREEK SMALL LETTER FINAL SIGMA */ \ 1769 UNI(0x7B, 0x03CD) /* GREEK SMALL LETTER UPSILON WITH TONOS */ \ 1770 UNI(0x7C, 0x03CE) /* GREEK SMALL LETTER OMEGA WITH TONOS */ \ 1771 UNI(0x7D, 0x0384) /* GREEK TONOS */ \ 1772 XXX(0x7E, UNDEF) /* reserved */ \ 1773 } \ 1774 end_CODEPAGE() 1775 1776#define unmap_DEC_Greek_Supp(code,dft) \ 1777 switch (code) { \ 1778 MAP(0x24, 0x1B) /* EURO SIGN */ \ 1779 MAP(0x26, 0x1B) /* BROKEN BAR */ \ 1780 MAP(0x28, 0xA4) /* CURRENCY SIGN */ \ 1781 MAP(0x2C, 0x1B) /* reserved */ \ 1782 MAP(0x2D, 0x1B) /* reserved */ \ 1783 MAP(0x2E, 0x1B) /* reserved */ \ 1784 MAP(0x2F, 0x1B) /* reserved */ \ 1785 MAP(0x34, 0x1B) /* reserved */ \ 1786 MAP(0x38, 0x1B) /* reserved */ \ 1787 MAP(0x3E, 0x1B) /* reserved */ \ 1788 MAP(0x40, 0xD0) /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */ \ 1789 MAP(0x41, 0x76) /* GREEK CAPITAL LETTER ALPHA */ \ 1790 MAP(0x42, 0x77) /* GREEK CAPITAL LETTER BETA */ \ 1791 MAP(0x43, 0x78) /* GREEK CAPITAL LETTER GAMMA */ \ 1792 MAP(0x44, 0x79) /* GREEK CAPITAL LETTER DELTA */ \ 1793 MAP(0x45, 0x7A) /* GREEK CAPITAL LETTER EPSILON */ \ 1794 MAP(0x46, 0x7B) /* GREEK CAPITAL LETTER ZETA */ \ 1795 MAP(0x47, 0x7C) /* GREEK CAPITAL LETTER ETA */ \ 1796 MAP(0x48, 0x7D) /* GREEK CAPITAL LETTER THETA */ \ 1797 MAP(0x49, 0x7E) /* GREEK CAPITAL LETTER IOTA */ \ 1798 MAP(0x4A, 0x7F) /* GREEK CAPITAL LETTER KAPPA */ \ 1799 MAP(0x4B, 0xA2) /* GREEK CAPITAL LETTER LAMDA */ \ 1800 MAP(0x4C, 0xA3) /* GREEK CAPITAL LETTER MU */ \ 1801 MAP(0x4D, 0xA4) /* GREEK CAPITAL LETTER NU */ \ 1802 MAP(0x4E, 0xA5) /* GREEK CAPITAL LETTER XI */ \ 1803 MAP(0x4F, 0xA6) /* GREEK CAPITAL LETTER OMICRON */ \ 1804 MAP(0x50, 0x1B) /* reserved */ \ 1805 MAP(0x51, 0xA7) /* GREEK CAPITAL LETTER PI */ \ 1806 MAP(0x52, 0xA8) /* GREEK CAPITAL LETTER RHO */ \ 1807 MAP(0x53, 0xA9) /* GREEK CAPITAL LETTER SIGMA */ \ 1808 MAP(0x54, 0xAA) /* GREEK CAPITAL LETTER TAU */ \ 1809 MAP(0x55, 0xAB) /* GREEK CAPITAL LETTER UPSILON */ \ 1810 MAP(0x56, 0xAC) /* GREEK CAPITAL LETTER PHI */ \ 1811 MAP(0x57, 0xAD) /* GREEK CAPITAL LETTER CHI */ \ 1812 MAP(0x58, 0xAE) /* GREEK CAPITAL LETTER PSI */ \ 1813 MAP(0x59, 0xAF) /* GREEK CAPITAL LETTER OMEGA */ \ 1814 MAP(0x5A, 0xB2) /* GREEK SMALL LETTER ALPHA WITH TONOS */ \ 1815 MAP(0x5B, 0xB3) /* GREEK SMALL LETTER EPSILON WITH TONOS */ \ 1816 MAP(0x5C, 0xB4) /* GREEK SMALL LETTER ETA WITH TONOS */ \ 1817 MAP(0x5D, 0xB5) /* GREEK SMALL LETTER IOTA WITH TONOS */ \ 1818 MAP(0x5E, 0x1B) /* reserved */ \ 1819 MAP(0x5F, 0xD2) /* GREEK SMALL LETTER OMICRON WITH TONOS */ \ 1820 MAP(0x60, 0xD1) /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ \ 1821 MAP(0x61, 0xB7) /* GREEK SMALL LETTER ALPHA */ \ 1822 MAP(0x62, 0xB8) /* GREEK SMALL LETTER BETA */ \ 1823 MAP(0x63, 0xB9) /* GREEK SMALL LETTER GAMMA */ \ 1824 MAP(0x64, 0xBA) /* GREEK SMALL LETTER DELTA */ \ 1825 MAP(0x65, 0xBB) /* GREEK SMALL LETTER EPSILON */ \ 1826 MAP(0x66, 0xBC) /* GREEK SMALL LETTER ZETA */ \ 1827 MAP(0x67, 0xBD) /* GREEK SMALL LETTER ETA */ \ 1828 MAP(0x68, 0xBE) /* GREEK SMALL LETTER THETA */ \ 1829 MAP(0x69, 0xBF) /* GREEK SMALL LETTER IOTA */ \ 1830 MAP(0x6A, 0xC0) /* GREEK SMALL LETTER KAPPA */ \ 1831 MAP(0x6B, 0xC1) /* GREEK SMALL LETTER LAMDA */ \ 1832 MAP(0x6C, 0xC2) /* GREEK SMALL LETTER MU */ \ 1833 MAP(0x6D, 0xC3) /* GREEK SMALL LETTER NU */ \ 1834 MAP(0x6E, 0xC4) /* GREEK SMALL LETTER XI */ \ 1835 MAP(0x6F, 0xC5) /* GREEK SMALL LETTER OMICRON */ \ 1836 MAP(0x70, 0x1B) /* reserved */ \ 1837 MAP(0x71, 0xC6) /* GREEK SMALL LETTER PI */ \ 1838 MAP(0x72, 0xC7) /* GREEK SMALL LETTER RHO */ \ 1839 MAP(0x73, 0xC9) /* GREEK SMALL LETTER SIGMA */ \ 1840 MAP(0x74, 0xCA) /* GREEK SMALL LETTER TAU */ \ 1841 MAP(0x75, 0xCB) /* GREEK SMALL LETTER UPSILON */ \ 1842 MAP(0x76, 0xCC) /* GREEK SMALL LETTER PHI */ \ 1843 MAP(0x77, 0xCD) /* GREEK SMALL LETTER CHI */ \ 1844 MAP(0x78, 0xCE) /* GREEK SMALL LETTER PSI */ \ 1845 MAP(0x79, 0xCF) /* GREEK SMALL LETTER OMEGA */ \ 1846 MAP(0x7A, 0xC8) /* GREEK SMALL LETTER FINAL SIGMA */ \ 1847 MAP(0x7B, 0xD3) /* GREEK SMALL LETTER UPSILON WITH TONOS */ \ 1848 MAP(0x7C, 0xD4) /* GREEK SMALL LETTER OMEGA WITH TONOS */ \ 1849 MAP(0x7D, 0x96) /* GREEK TONOS */ \ 1850 MAP(0x7E, 0x1B) /* reserved */ \ 1851 default: dft; break; \ 1852 } 1853 1854/* 1855 * figure A-22 "DEC Hebrew Supplemental Character Set" 1856 */ 1857#define map_DEC_Hebrew_Supp(code) \ 1858 begin_CODEPAGE(94) \ 1859 switch (code) { \ 1860 UNI(0x21, 0x00A1) /* INVERTED EXCLAMATION MARK */ \ 1861 UNI(0x22, 0x00A2) /* CENT SIGN */ \ 1862 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 1863 XXX(0x24, UNDEF) /* CURRENCY SIGN */ \ 1864 UNI(0x25, 0x00A5) /* YEN SIGN */ \ 1865 XXX(0x26, UNDEF) /* BROKEN BAR */ \ 1866 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 1867 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 1868 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 1869 UNI(0x2A, 0x00D7) /* MULTIPLICATION SIGN */ \ 1870 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1871 XXX(0x2C, UNDEF) /* NOT SIGN */ \ 1872 XXX(0x2D, UNDEF) /* SOFT HYPHEN */ \ 1873 XXX(0x2E, UNDEF) /* REGISTERED SIGN */ \ 1874 XXX(0x2F, UNDEF) /* MACRON */ \ 1875 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 1876 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 1877 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 1878 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 1879 XXX(0x34, UNDEF) /* ACUTE ACCENT */ \ 1880 UNI(0x35, 0x00B5) /* MICRO SIGN */ \ 1881 UNI(0x36, 0x00B6) /* PILCROW SIGN */ \ 1882 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 1883 XXX(0x38, UNDEF) /* CEDILLA */ \ 1884 UNI(0x39, 0x00B9) /* SUPERSCRIPT ONE */ \ 1885 UNI(0x3A, 0x00F7) /* DIVISION SIGN */ \ 1886 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 1887 UNI(0x3C, 0x00BC) /* VULGAR FRACTION ONE QUARTER */ \ 1888 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 1889 XXX(0x3E, UNDEF) /* VULGAR FRACTION THREE QUARTERS */ \ 1890 UNI(0x3F, 0x00BF) /* INVERTED QUESTION MARK */ \ 1891 XXX(0x40, UNDEF) /* reserved */ \ 1892 XXX(0x41, UNDEF) /* reserved */ \ 1893 XXX(0x42, UNDEF) /* reserved */ \ 1894 XXX(0x43, UNDEF) /* reserved */ \ 1895 XXX(0x44, UNDEF) /* reserved */ \ 1896 XXX(0x45, UNDEF) /* reserved */ \ 1897 XXX(0x46, UNDEF) /* reserved */ \ 1898 XXX(0x47, UNDEF) /* reserved */ \ 1899 XXX(0x48, UNDEF) /* reserved */ \ 1900 XXX(0x49, UNDEF) /* reserved */ \ 1901 XXX(0x4A, UNDEF) /* reserved */ \ 1902 XXX(0x4B, UNDEF) /* reserved */ \ 1903 XXX(0x4C, UNDEF) /* reserved */ \ 1904 XXX(0x4D, UNDEF) /* reserved */ \ 1905 XXX(0x4E, UNDEF) /* reserved */ \ 1906 XXX(0x4F, UNDEF) /* reserved */ \ 1907 XXX(0x50, UNDEF) /* reserved */ \ 1908 XXX(0x51, UNDEF) /* reserved */ \ 1909 XXX(0x52, UNDEF) /* reserved */ \ 1910 XXX(0x53, UNDEF) /* reserved */ \ 1911 XXX(0x54, UNDEF) /* reserved */ \ 1912 XXX(0x55, UNDEF) /* reserved */ \ 1913 XXX(0x56, UNDEF) /* reserved */ \ 1914 XXX(0x57, UNDEF) /* reserved */ \ 1915 XXX(0x58, UNDEF) /* reserved */ \ 1916 XXX(0x59, UNDEF) /* reserved */ \ 1917 XXX(0x5A, UNDEF) /* reserved */ \ 1918 XXX(0x5B, UNDEF) /* reserved */ \ 1919 XXX(0x5C, UNDEF) /* reserved */ \ 1920 XXX(0x5D, UNDEF) /* reserved */ \ 1921 XXX(0x5E, UNDEF) /* reserved */ \ 1922 XXX(0x5F, UNDEF) /* reserved */ \ 1923 UNI(0x60, 0x05D0) /* HEBREW LETTER ALEF */ \ 1924 UNI(0x61, 0x05D1) /* HEBREW LETTER BET */ \ 1925 UNI(0x62, 0x05D2) /* HEBREW LETTER GIMEL */ \ 1926 UNI(0x63, 0x05D3) /* HEBREW LETTER DALET */ \ 1927 UNI(0x64, 0x05D4) /* HEBREW LETTER HE */ \ 1928 UNI(0x65, 0x05D5) /* HEBREW LETTER VAV */ \ 1929 UNI(0x66, 0x05D6) /* HEBREW LETTER ZAYIN */ \ 1930 UNI(0x67, 0x05D7) /* HEBREW LETTER HET */ \ 1931 UNI(0x68, 0x05D8) /* HEBREW LETTER TET */ \ 1932 UNI(0x69, 0x05D9) /* HEBREW LETTER YOD */ \ 1933 UNI(0x6A, 0x05DA) /* HEBREW LETTER FINAL KAF */ \ 1934 UNI(0x6B, 0x05DB) /* HEBREW LETTER KAF */ \ 1935 UNI(0x6C, 0x05DC) /* HEBREW LETTER LAMED */ \ 1936 UNI(0x6D, 0x05DD) /* HEBREW LETTER FINAL MEM */ \ 1937 UNI(0x6E, 0x05DE) /* HEBREW LETTER MEM */ \ 1938 UNI(0x6F, 0x05DF) /* HEBREW LETTER FINAL NUN */ \ 1939 UNI(0x70, 0x05E0) /* HEBREW LETTER NUN */ \ 1940 UNI(0x71, 0x05E1) /* HEBREW LETTER SAMEKH */ \ 1941 UNI(0x72, 0x05E2) /* HEBREW LETTER AYIN */ \ 1942 UNI(0x73, 0x05E3) /* HEBREW LETTER FINAL PE */ \ 1943 UNI(0x74, 0x05E4) /* HEBREW LETTER PE */ \ 1944 UNI(0x75, 0x05E5) /* HEBREW LETTER FINAL TSADI */ \ 1945 UNI(0x76, 0x05E6) /* HEBREW LETTER TSADI */ \ 1946 UNI(0x77, 0x05E7) /* HEBREW LETTER QOF */ \ 1947 UNI(0x78, 0x05E8) /* HEBREW LETTER RESH */ \ 1948 UNI(0x79, 0x05E9) /* HEBREW LETTER SHIN */ \ 1949 UNI(0x7A, 0x05EA) /* HEBREW LETTER TAV */ \ 1950 XXX(0x7B, UNDEF) /* reserved */ \ 1951 XXX(0x7C, UNDEF) /* reserved */ \ 1952 XXX(0x7D, UNDEF) /* reserved */ \ 1953 XXX(0x7E, UNDEF) /* reserved */ \ 1954 } \ 1955 end_CODEPAGE() 1956 1957#define unmap_DEC_Hebrew_Supp(code,dft) \ 1958 switch (code) { \ 1959 MAP(0x24, 0x1B) /* CURRENCY SIGN */ \ 1960 MAP(0x26, 0x1B) /* BROKEN BAR */ \ 1961 MAP(0x28, 0xA4) /* DIAERESIS */ \ 1962 MAP(0x2C, 0x1B) /* NOT SIGN */ \ 1963 MAP(0x2D, 0x1B) /* SOFT HYPHEN */ \ 1964 MAP(0x2E, 0x1B) /* REGISTERED SIGN */ \ 1965 MAP(0x2F, 0x1B) /* MACRON */ \ 1966 MAP(0x34, 0x1B) /* ACUTE ACCENT */ \ 1967 MAP(0x38, 0x1B) /* CEDILLA */ \ 1968 MAP(0x3E, 0x1B) /* VULGAR FRACTION THREE QUARTERS */ \ 1969 MAP(0x40, 0x1B) /* reserved */ \ 1970 MAP(0x41, 0x1B) /* reserved */ \ 1971 MAP(0x42, 0x1B) /* reserved */ \ 1972 MAP(0x43, 0x1B) /* reserved */ \ 1973 MAP(0x44, 0x1B) /* reserved */ \ 1974 MAP(0x45, 0x1B) /* reserved */ \ 1975 MAP(0x46, 0x1B) /* reserved */ \ 1976 MAP(0x47, 0x1B) /* reserved */ \ 1977 MAP(0x48, 0x1B) /* reserved */ \ 1978 MAP(0x49, 0x1B) /* reserved */ \ 1979 MAP(0x4A, 0x1B) /* reserved */ \ 1980 MAP(0x4B, 0x1B) /* reserved */ \ 1981 MAP(0x4C, 0x1B) /* reserved */ \ 1982 MAP(0x4D, 0x1B) /* reserved */ \ 1983 MAP(0x4E, 0x1B) /* reserved */ \ 1984 MAP(0x4F, 0x1B) /* reserved */ \ 1985 MAP(0x50, 0x1B) /* reserved */ \ 1986 MAP(0x51, 0x1B) /* reserved */ \ 1987 MAP(0x52, 0x1B) /* reserved */ \ 1988 MAP(0x53, 0x1B) /* reserved */ \ 1989 MAP(0x54, 0x1B) /* reserved */ \ 1990 MAP(0x55, 0x1B) /* reserved */ \ 1991 MAP(0x56, 0x1B) /* reserved */ \ 1992 MAP(0x57, 0x1B) /* reserved */ \ 1993 MAP(0x58, 0x1B) /* reserved */ \ 1994 MAP(0x59, 0x1B) /* reserved */ \ 1995 MAP(0x5A, 0x1B) /* reserved */ \ 1996 MAP(0x5B, 0x1B) /* reserved */ \ 1997 MAP(0x5C, 0x1B) /* reserved */ \ 1998 MAP(0x5D, 0x1B) /* reserved */ \ 1999 MAP(0x5E, 0x1B) /* reserved */ \ 2000 MAP(0x5F, 0x1B) /* reserved */ \ 2001 MAP(0x60, 0x53) /* HEBREW LETTER ALEF */ \ 2002 MAP(0x61, 0x54) /* HEBREW LETTER BET */ \ 2003 MAP(0x62, 0x55) /* HEBREW LETTER GIMEL */ \ 2004 MAP(0x63, 0x56) /* HEBREW LETTER DALET */ \ 2005 MAP(0x64, 0x57) /* HEBREW LETTER HE */ \ 2006 MAP(0x65, 0x58) /* HEBREW LETTER VAV */ \ 2007 MAP(0x66, 0x59) /* HEBREW LETTER ZAYIN */ \ 2008 MAP(0x67, 0x5A) /* HEBREW LETTER HET */ \ 2009 MAP(0x68, 0x5B) /* HEBREW LETTER TET */ \ 2010 MAP(0x69, 0x5C) /* HEBREW LETTER YOD */ \ 2011 MAP(0x6A, 0x5D) /* HEBREW LETTER FINAL KAF */ \ 2012 MAP(0x6B, 0x5E) /* HEBREW LETTER KAF */ \ 2013 MAP(0x6C, 0x5F) /* HEBREW LETTER LAMED */ \ 2014 MAP(0x6D, 0x60) /* HEBREW LETTER FINAL MEM */ \ 2015 MAP(0x6E, 0x61) /* HEBREW LETTER MEM */ \ 2016 MAP(0x6F, 0x62) /* HEBREW LETTER FINAL NUN */ \ 2017 MAP(0x70, 0x63) /* HEBREW LETTER NUN */ \ 2018 MAP(0x71, 0x64) /* HEBREW LETTER SAMEKH */ \ 2019 MAP(0x72, 0x65) /* HEBREW LETTER AYIN */ \ 2020 MAP(0x73, 0x66) /* HEBREW LETTER FINAL PE */ \ 2021 MAP(0x74, 0x67) /* HEBREW LETTER PE */ \ 2022 MAP(0x75, 0x68) /* HEBREW LETTER FINAL TSADI */ \ 2023 MAP(0x76, 0x69) /* HEBREW LETTER TSADI */ \ 2024 MAP(0x77, 0x6A) /* HEBREW LETTER QOF */ \ 2025 MAP(0x78, 0x6B) /* HEBREW LETTER RESH */ \ 2026 MAP(0x79, 0x6C) /* HEBREW LETTER SHIN */ \ 2027 MAP(0x7A, 0x6D) /* HEBREW LETTER TAV */ \ 2028 MAP(0x7B, 0x1B) /* reserved */ \ 2029 MAP(0x7C, 0x1B) /* reserved */ \ 2030 MAP(0x7D, 0x1B) /* reserved */ \ 2031 MAP(0x7E, 0x1B) /* reserved */ \ 2032 default: dft; break; \ 2033 } 2034 2035/* 2036 * figure A-27 "DEC 8-Bit Turkish Supplemental Character Set" 2037 */ 2038#define map_DEC_Turkish_Supp(code) \ 2039 begin_CODEPAGE(94) \ 2040 switch (code) { \ 2041 UNI(0x21, 0x00A1) /* INVERTED EXCLAMATION MARK */ \ 2042 UNI(0x22, 0x00A2) /* CENT SIGN */ \ 2043 UNI(0x23, 0x00A3) /* POUND SIGN */ \ 2044 XXX(0x24, UNDEF) /* reserved */ \ 2045 UNI(0x25, 0x00A5) /* YEN SIGN */ \ 2046 XXX(0x26, UNDEF) /* reserved */ \ 2047 UNI(0x27, 0x00A7) /* SECTION SIGN */ \ 2048 UNI(0x28, 0x00A8) /* DIAERESIS */ \ 2049 UNI(0x29, 0x00A9) /* COPYRIGHT SIGN */ \ 2050 UNI(0x2A, 0x00AA) /* FEMININE ORDINAL INDICATOR */ \ 2051 UNI(0x2B, 0x00AB) /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 2052 XXX(0x2C, UNDEF) /* reserved */ \ 2053 XXX(0x2D, UNDEF) /* reserved */ \ 2054 UNI(0x2E, 0x0130) /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ 2055 XXX(0x2F, UNDEF) /* reserved */ \ 2056 UNI(0x30, 0x00B0) /* DEGREE SIGN */ \ 2057 UNI(0x31, 0x00B1) /* PLUS-MINUS SIGN */ \ 2058 UNI(0x32, 0x00B2) /* SUPERSCRIPT TWO */ \ 2059 UNI(0x33, 0x00B3) /* SUPERSCRIPT THREE */ \ 2060 XXX(0x34, UNDEF) /* reserved */ \ 2061 UNI(0x35, 0x00B5) /* MICRO SIGN */ \ 2062 UNI(0x36, 0x00B6) /* PILCROW SIGN */ \ 2063 UNI(0x37, 0x00B7) /* MIDDLE DOT */ \ 2064 XXX(0x38, UNDEF) /* reserved */ \ 2065 UNI(0x39, 0x00B9) /* SUPERSCRIPT ONE */ \ 2066 UNI(0x3A, 0x00BA) /* MASCULINE ORDINAL INDICATOR */ \ 2067 UNI(0x3B, 0x00BB) /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ 2068 UNI(0x3C, 0x00BC) /* VULGAR FRACTION ONE QUARTER */ \ 2069 UNI(0x3D, 0x00BD) /* VULGAR FRACTION ONE HALF */ \ 2070 UNI(0x3E, 0x0131) /* LATIN SMALL LETTER DOTLESS I */ \ 2071 UNI(0x3F, 0x00BF) /* INVERTED QUESTION MARK */ \ 2072 UNI(0x40, 0x00C0) /* LATIN CAPITAL LETTER A WITH GRAVE */ \ 2073 UNI(0x41, 0x00C1) /* LATIN CAPITAL LETTER A WITH ACUTE */ \ 2074 UNI(0x42, 0x00C2) /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ 2075 UNI(0x43, 0x00C3) /* LATIN CAPITAL LETTER A WITH TILDE */ \ 2076 UNI(0x44, 0x00C4) /* LATIN CAPITAL LETTER A WITH DIAERESIS */ \ 2077 UNI(0x45, 0x00C5) /* LATIN CAPITAL LETTER A WITH RING ABOVE */ \ 2078 UNI(0x46, 0x00C6) /* LATIN CAPITAL LETTER AE */ \ 2079 UNI(0x47, 0x00C7) /* LATIN CAPITAL LETTER C WITH CEDILLA */ \ 2080 UNI(0x48, 0x00C8) /* LATIN CAPITAL LETTER E WITH GRAVE */ \ 2081 UNI(0x49, 0x00C9) /* LATIN CAPITAL LETTER E WITH ACUTE */ \ 2082 UNI(0x4A, 0x00CA) /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ 2083 UNI(0x4B, 0x00CB) /* LATIN CAPITAL LETTER E WITH DIAERESIS */ \ 2084 UNI(0x4C, 0x00CC) /* LATIN CAPITAL LETTER I WITH GRAVE */ \ 2085 UNI(0x4D, 0x00CD) /* LATIN CAPITAL LETTER I WITH ACUTE */ \ 2086 UNI(0x4E, 0x00CE) /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ 2087 UNI(0x4F, 0x00CF) /* LATIN CAPITAL LETTER I WITH DIAERESIS */ \ 2088 UNI(0x50, 0x011E) /* LATIN CAPITAL LETTER G WITH BREVE */ \ 2089 UNI(0x51, 0x00D1) /* LATIN CAPITAL LETTER N WITH TILDE */ \ 2090 UNI(0x52, 0x00D2) /* LATIN CAPITAL LETTER O WITH GRAVE */ \ 2091 UNI(0x53, 0x00D3) /* LATIN CAPITAL LETTER O WITH ACUTE */ \ 2092 UNI(0x54, 0x00D4) /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ 2093 UNI(0x55, 0x00D5) /* LATIN CAPITAL LETTER O WITH TILDE */ \ 2094 UNI(0x56, 0x00D6) /* LATIN CAPITAL LETTER O WITH DIAERESIS */ \ 2095 UNI(0x57, 0x0152) /* LATIN CAPITAL LIGATURE OE */ \ 2096 UNI(0x58, 0x00D8) /* LATIN CAPITAL LETTER O WITH STROKE */ \ 2097 UNI(0x59, 0x00D9) /* LATIN CAPITAL LETTER U WITH GRAVE */ \ 2098 UNI(0x5A, 0x00DA) /* LATIN CAPITAL LETTER U WITH ACUTE */ \ 2099 UNI(0x5B, 0x00DB) /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ 2100 UNI(0x5C, 0x00DC) /* LATIN CAPITAL LETTER U WITH DIAERESIS */ \ 2101 UNI(0x5D, 0x0178) /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ 2102 UNI(0x5E, 0x015E) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 2103 UNI(0x5F, 0x00DF) /* LATIN SMALL LETTER SHARP S */ \ 2104 UNI(0x60, 0x00E0) /* LATIN SMALL LETTER A WITH GRAVE */ \ 2105 UNI(0x61, 0x00E1) /* LATIN SMALL LETTER A WITH ACUTE */ \ 2106 UNI(0x62, 0x00E2) /* LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ 2107 UNI(0x63, 0x00E3) /* LATIN SMALL LETTER A WITH TILDE */ \ 2108 UNI(0x64, 0x00E4) /* LATIN SMALL LETTER A WITH DIAERESIS */ \ 2109 UNI(0x65, 0x00E5) /* LATIN SMALL LETTER A WITH RING ABOVE */ \ 2110 UNI(0x66, 0x00E6) /* LATIN SMALL LETTER AE */ \ 2111 UNI(0x67, 0x00E7) /* LATIN SMALL LETTER C WITH CEDILLA */ \ 2112 UNI(0x68, 0x00E8) /* LATIN SMALL LETTER E WITH GRAVE */ \ 2113 UNI(0x69, 0x00E9) /* LATIN SMALL LETTER E WITH ACUTE */ \ 2114 UNI(0x6A, 0x00EA) /* LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ 2115 UNI(0x6B, 0x00EB) /* LATIN SMALL LETTER E WITH DIAERESIS */ \ 2116 UNI(0x6C, 0x00EC) /* LATIN SMALL LETTER I WITH GRAVE */ \ 2117 UNI(0x6D, 0x00ED) /* LATIN SMALL LETTER I WITH ACUTE */ \ 2118 UNI(0x6E, 0x00EE) /* LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ 2119 UNI(0x6F, 0x00EF) /* LATIN SMALL LETTER I WITH DIAERESIS */ \ 2120 UNI(0x70, 0x011F) /* LATIN SMALL LETTER G WITH BREVE */ \ 2121 UNI(0x71, 0x00F1) /* LATIN SMALL LETTER N WITH TILDE */ \ 2122 UNI(0x72, 0x00F2) /* LATIN SMALL LETTER O WITH GRAVE */ \ 2123 UNI(0x73, 0x00F3) /* LATIN SMALL LETTER O WITH ACUTE */ \ 2124 UNI(0x74, 0x00F4) /* LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ 2125 UNI(0x75, 0x00F5) /* LATIN SMALL LETTER O WITH TILDE */ \ 2126 UNI(0x76, 0x00F6) /* LATIN SMALL LETTER O WITH DIAERESIS */ \ 2127 UNI(0x77, 0x0153) /* LATIN SMALL LIGATURE OE */ \ 2128 UNI(0x78, 0x00F8) /* LATIN SMALL LETTER O WITH STROKE */ \ 2129 UNI(0x79, 0x00F9) /* LATIN SMALL LETTER U WITH GRAVE */ \ 2130 UNI(0x7A, 0x00FA) /* LATIN SMALL LETTER U WITH ACUTE */ \ 2131 UNI(0x7B, 0x00FB) /* LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ 2132 UNI(0x7C, 0x00FC) /* LATIN SMALL LETTER U WITH DIAERESIS */ \ 2133 UNI(0x7D, 0x00FF) /* LATIN SMALL LETTER Y WITH DIAERESIS */ \ 2134 UNI(0x7E, 0x015F) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 2135 } \ 2136 end_CODEPAGE() 2137 2138#define unmap_DEC_Turkish_Supp(code,dft) \ 2139 switch (code) { \ 2140 MAP(0x24, 0x1B) /* reserved */ \ 2141 MAP(0x26, 0x1B) /* reserved */ \ 2142 MAP(0x28, 0xA4) /* DIAERESIS */ \ 2143 MAP(0x2C, 0x1B) /* reserved */ \ 2144 MAP(0x2D, 0x1B) /* reserved */ \ 2145 MAP(0x2E, 0x4F) /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ 2146 MAP(0x2F, 0x1B) /* reserved */ \ 2147 MAP(0x34, 0x1B) /* reserved */ \ 2148 MAP(0x38, 0x1B) /* reserved */ \ 2149 MAP(0x3E, 0x51) /* LATIN SMALL LETTER DOTLESS I */ \ 2150 MAP(0x50, 0x4E) /* LATIN CAPITAL LETTER G WITH BREVE */ \ 2151 MAP(0x57, 0x97) /* LATIN CAPITAL LIGATURE OE */ \ 2152 MAP(0x5D, 0x98) /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ 2153 MAP(0x5E, 0x9F) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 2154 MAP(0x70, 0x50) /* LATIN SMALL LETTER G WITH BREVE */ \ 2155 MAP(0x77, 0x99) /* LATIN SMALL LIGATURE OE */ \ 2156 MAP(0x7D, 0xFF) /* LATIN SMALL LETTER Y WITH DIAERESIS */ \ 2157 MAP(0x7E, 0x2A) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 2158 default: dft; break; \ 2159 } 2160 2161/* 2162 * mentioned, but not documented in VT510 manual, etc., this uses 2163 * the ELOT927 table from Kermit 95: 2164 */ 2165#define map_NRCS_Greek(code) \ 2166 switch (code) { \ 2167 UNI(0x61, 0x0391) /* CAPITAL GREEK LETTER ALPHA */ \ 2168 UNI(0x62, 0x0392) /* CAPITAL GREEK LETTER BETA */ \ 2169 UNI(0x63, 0x0393) /* CAPITAL GREEK LETTER GAMMA */ \ 2170 UNI(0x64, 0x0394) /* CAPITAL GREEK LETTER DELTA */ \ 2171 UNI(0x65, 0x0395) /* CAPITAL GREEK LETTER EPSILON */ \ 2172 UNI(0x66, 0x0396) /* CAPITAL GREEK LETTER ZETA */ \ 2173 UNI(0x67, 0x0397) /* CAPITAL GREEK LETTER ETA */ \ 2174 UNI(0x68, 0x0398) /* CAPITAL GREEK LETTER THETA */ \ 2175 UNI(0x69, 0x0399) /* CAPITAL GREEK LETTER IOTA */ \ 2176 UNI(0x6a, 0x039A) /* CAPITAL GREEK LETTER KAPPA */ \ 2177 UNI(0x6b, 0x039B) /* CAPITAL GREEK LETTER LAMDA */ \ 2178 UNI(0x6c, 0x039C) /* CAPITAL GREEK LETTER MU */ \ 2179 UNI(0x6d, 0x039D) /* CAPITAL GREEK LETTER NU */ \ 2180 UNI(0x6e, 0x03A7) /* CAPITAL GREEK LETTER KSI (CHI) */ \ 2181 UNI(0x6f, 0x039F) /* CAPITAL GREEK LETTER OMICRON */ \ 2182 UNI(0x70, 0x03A0) /* CAPITAL GREEK LETTER PI */ \ 2183 UNI(0x71, 0x03A1) /* CAPITAL GREEK LETTER RHO */ \ 2184 UNI(0x72, 0x03A3) /* CAPITAL GREEK LETTER SIGMA */ \ 2185 UNI(0x73, 0x03A4) /* CAPITAL GREEK LETTER TAU */ \ 2186 UNI(0x74, 0x03A5) /* CAPITAL GREEK LETTER UPSILON */ \ 2187 UNI(0x75, 0x03A6) /* CAPITAL GREEK LETTER FI (PHI) */ \ 2188 UNI(0x76, 0x039E) /* CAPITAL GREEK LETTER XI */ \ 2189 UNI(0x77, 0x03A8) /* CAPITAL GREEK LETTER PSI */ \ 2190 UNI(0x78, 0x03A9) /* CAPITAL GREEK LETTER OMEGA */ \ 2191 XXX(0x79, UNDEF) /* unused */ \ 2192 XXX(0x7a, UNDEF) /* unused */ \ 2193 } 2194 2195#define unmap_NRCS_Greek(code,dft) \ 2196 switch (code) { \ 2197 MAP(0x79, 0x1B) /* unused */ \ 2198 MAP(0x7a, 0x1B) /* unused */ \ 2199 default: dft; break; \ 2200 } 2201 2202/* 2203 * figure A-21 "DEC 7-Bit Hebrew Character Set" 2204 */ 2205#define map_NRCS_Hebrew(code) \ 2206 switch (code) { \ 2207 UNI(0x60, 0x05D0) /* HEBREW LETTER ALEF */ \ 2208 UNI(0x61, 0x05D1) /* HEBREW LETTER BET */ \ 2209 UNI(0x62, 0x05D2) /* HEBREW LETTER GIMEL */ \ 2210 UNI(0x63, 0x05D3) /* HEBREW LETTER DALET */ \ 2211 UNI(0x64, 0x05D4) /* HEBREW LETTER HE */ \ 2212 UNI(0x65, 0x05D5) /* HEBREW LETTER VAV */ \ 2213 UNI(0x66, 0x05D6) /* HEBREW LETTER ZAYIN */ \ 2214 UNI(0x67, 0x05D7) /* HEBREW LETTER HET */ \ 2215 UNI(0x68, 0x05D8) /* HEBREW LETTER TET */ \ 2216 UNI(0x69, 0x05D9) /* HEBREW LETTER YOD */ \ 2217 UNI(0x6a, 0x05DA) /* HEBREW LETTER FINAL KAF */ \ 2218 UNI(0x6b, 0x05DB) /* HEBREW LETTER KAF */ \ 2219 UNI(0x6c, 0x05DC) /* HEBREW LETTER LAMED */ \ 2220 UNI(0x6d, 0x05DD) /* HEBREW LETTER FINAL MEM */ \ 2221 UNI(0x6e, 0x05DE) /* HEBREW LETTER MEM */ \ 2222 UNI(0x6f, 0x05DF) /* HEBREW LETTER FINAL NUN */ \ 2223 UNI(0x70, 0x05E0) /* HEBREW LETTER NUN */ \ 2224 UNI(0x71, 0x05E1) /* HEBREW LETTER SAMEKH */ \ 2225 UNI(0x72, 0x05E2) /* HEBREW LETTER AYIN */ \ 2226 UNI(0x73, 0x05E3) /* HEBREW LETTER FINAL PE */ \ 2227 UNI(0x74, 0x05E4) /* HEBREW LETTER PE */ \ 2228 UNI(0x75, 0x05E5) /* HEBREW LETTER FINAL TSADI */ \ 2229 UNI(0x76, 0x05E6) /* HEBREW LETTER TSADI */ \ 2230 UNI(0x77, 0x05E7) /* HEBREW LETTER QOF */ \ 2231 UNI(0x78, 0x05E8) /* HEBREW LETTER RESH */ \ 2232 UNI(0x79, 0x05E9) /* HEBREW LETTER SHIN */ \ 2233 UNI(0x7a, 0x05EA) /* HEBREW LETTER TAV */ \ 2234 } 2235 2236#define unmap_NRCS_Hebrew(code,dft) /* nothing */ 2237 2238/* 2239 * figure A-26 "DEC 7-Bit Turkish Character Set" 2240 */ 2241#define map_NRCS_Turkish(code) \ 2242 switch (code) { \ 2243 UNI(0x26, 0x011F) /* LATIN SMALL LETTER G WITH BREVE */ \ 2244 UNI(0x40, 0x0130) /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ 2245 UNI(0x5b, 0x015E) /* LATIN CAPITAL LETTER S WITH CEDILLA */ \ 2246 UNI(0x5c, 0x00D6) /* LATIN CAPITAL LETTER O WITH DIAERESIS */ \ 2247 UNI(0x5d, 0x00C7) /* LATIN CAPITAL LETTER C WITH CEDILLA */ \ 2248 UNI(0x5e, 0x00dC) /* LATIN CAPITAL LETTER U WITH DIAERESIS */ \ 2249 UNI(0x60, 0x011E) /* LATIN CAPITAL LETTER G WITH BREVE */ \ 2250 UNI(0x7b, 0x015F) /* LATIN SMALL LETTER S WITH CEDILLA */ \ 2251 UNI(0x7c, 0x00F6) /* LATIN SMALL LETTER O WITH DIAERESIS */ \ 2252 UNI(0x7d, 0x00E7) /* LATIN SMALL LETTER C WITH CEDILLA */ \ 2253 UNI(0x7e, 0x00FC) /* LATIN SMALL LETTER U WITH DIAERESIS */ \ 2254 } 2255 2256#define unmap_NRCS_Turkish(code,dft) /* nothing */ 2257#else 2258#define map_DEC_Cyrillic(code) /* nothing */ 2259#define unmap_DEC_Cyrillic(code,dft) dft 2260#define map_DEC_Greek_Supp(code) /* nothing */ 2261#define unmap_DEC_Greek_Supp(code,dft) dft 2262#define map_DEC_Hebrew_Supp(code) /* nothing */ 2263#define unmap_DEC_Hebrew_Supp(code,dft) dft 2264#define map_DEC_Technical(code) /* nothing */ 2265#define unmap_DEC_Technical(code,dft) dft 2266#define map_DEC_Turkish_Supp(code) /* nothing */ 2267#define unmap_DEC_Turkish_Supp(code,dft) dft 2268#define map_ISO_Greek_Supp(code) /* nothing */ 2269#define unmap_ISO_Greek_Supp(code,dft) dft 2270#define map_ISO_Hebrew(code) /* nothing */ 2271#define unmap_ISO_Hebrew(code,dft) dft 2272#define map_ISO_Latin_2(code) /* nothing */ 2273#define unmap_ISO_Latin_2(code,dft) dft 2274#define map_ISO_Latin_5(code) /* nothing */ 2275#define unmap_ISO_Latin_5(code,dft) dft 2276#define map_ISO_Latin_Cyrillic(code) /* nothing */ 2277#define unmap_ISO_Latin_Cyrillic(code,dft) dft 2278#define map_NRCS_Greek(code) /* nothing */ 2279#define unmap_NRCS_Greek(code,dft) dft 2280#define map_NRCS_Hebrew(code) /* nothing */ 2281#define unmap_NRCS_Hebrew(code,dft) dft 2282#define map_NRCS_Turkish(code) /* nothing */ 2283#define unmap_NRCS_Turkish(code,dft) dft 2284#endif /* OPT_WIDE_CHARS */ 2285 2286#endif /* included_charsets_h */ 2287