1 /* Copyright (C) 2000-2012 by George Williams */ 2 /* 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are met: 5 * 6 * Redistributions of source code must retain the above copyright notice, this 7 * list of conditions and the following disclaimer. 8 * 9 * Redistributions in binary form must reproduce the above copyright notice, 10 * this list of conditions and the following disclaimer in the documentation 11 * and/or other materials provided with the distribution. 12 * 13 * The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 /* This file was generated using the program 'makebuildtables.c' */ 29 30 #include "gdrawP.h" 31 32 #define ACUTE 0x0000001 33 #define GRAVE 0x0000002 34 #define DIAERESIS 0x0000004 35 #define CIRCUMFLEX 0x0000008 36 #define TILDE 0x0000010 37 #define RING 0x0000020 38 #define SLASH 0x0000040 39 #define BREVE 0x0000080 40 #define CARON 0x0000100 41 #define DOTABOVE 0x0000200 42 #define DOTBELOW 0x0000400 43 #define CEDILLA 0x0000800 44 #define OGONEK 0x0001000 45 #define MACRON 0x0002000 46 #define DBLGRAVE 0x0004000 47 #define DBLACUTE 0x0008000 48 #define INVBREVE 0x0010000 49 #define DIAERESISBELOW 0x0020000 50 #define CIRCUMFLEXBELOW 0x0040000 51 #define TILDEBELOW 0x0080000 52 #define RINGBELOW 0x0100000 53 #define LINEBELOW 0x0200000 54 #define HOOKABOVE 0x0400000 55 #define HORN 0x0800000 56 #define GREEK 0x8000000 57 58 #define ANY 0xfffffff 59 60 static struct gchr_transform trans_space[] = { 61 { 0, 0, 0x00000a0 }, 62 { GREEK, 0, 0x0002001 } 63 }; 64 65 static struct gchr_transform trans_exclam[] = { 66 { 0, 0, 0x00000a1 } 67 }; 68 69 static struct gchr_transform trans_quotedbl[] = { 70 { ANY, DBLGRAVE, 0x0000000 } 71 }; 72 73 static struct gchr_transform trans_numbersign[] = { 74 { 0, 0, 0x00000a3 }, 75 { GREEK, 0, 0x00000a5 } 76 }; 77 78 static struct gchr_transform trans_dollar[] = { 79 { 0, 0, 0x00020ac }, 80 { GREEK, 0, 0x00000a2 } 81 }; 82 83 static struct gchr_transform trans_quotesingle[] = { 84 { ANY, ACUTE, 0x0000000 } 85 }; 86 87 static struct gchr_transform trans_asterisk[] = { 88 { 0, 0, 0x00000b0 }, 89 { GREEK, 0, 0x0002022 } 90 }; 91 92 static struct gchr_transform trans_plus[] = { 93 { 0, 0, 0x00000b1 } 94 }; 95 96 static struct gchr_transform trans_comma[] = { 97 { ANY, DOTBELOW, 0x0000000 } 98 }; 99 100 static struct gchr_transform trans_hyphenminus[] = { 101 { 0, 0, 0x00000ad }, 102 { GREEK, 0, 0x0002013 } 103 }; 104 105 static struct gchr_transform trans_period[] = { 106 { ANY, DOTABOVE, 0x0000000 }, 107 { GREEK, 0, 0x00000b7 } 108 }; 109 110 static struct gchr_transform trans_slash[] = { 111 { ANY, SLASH, 0x0000000 } 112 }; 113 114 static struct gchr_transform trans_zero[] = { 115 { ANY, RING, 0x0000000 } 116 }; 117 118 static struct gchr_transform trans_two[] = { 119 { BREVE, 0, 0x00000bd } 120 }; 121 122 static struct gchr_transform trans_four[] = { 123 { ANY, OGONEK, 0x0000000 } 124 }; 125 126 static struct gchr_transform trans_five[] = { 127 { ANY, CEDILLA, 0x0000000 } 128 }; 129 130 static struct gchr_transform trans_six[] = { 131 { ANY, CARON, 0x0000000 } 132 }; 133 134 static struct gchr_transform trans_seven[] = { 135 { ANY, BREVE, 0x0000000 } 136 }; 137 138 static struct gchr_transform trans_colon[] = { 139 { ANY, DIAERESIS, 0x0000000 } 140 }; 141 142 static struct gchr_transform trans_semicolon[] = { 143 { 0, 0, 0x0002026 } 144 }; 145 146 static struct gchr_transform trans_less[] = { 147 { 0, 0, 0x0002265 } 148 }; 149 150 static struct gchr_transform trans_equal[] = { 151 { GREEK, 0, 0x0002015 } 152 }; 153 154 static struct gchr_transform trans_greater[] = { 155 { 0, 0, 0x0002264 }, 156 { GREEK, 0, 0x0002023 } 157 }; 158 159 static struct gchr_transform trans_question[] = { 160 { 0, 0, 0x00000bf } 161 }; 162 163 static struct gchr_transform trans_at[] = { 164 { ANY, GREEK, 0x0000000 } 165 }; 166 167 static struct gchr_transform trans_A[] = { 168 { 0, 0, 0x00000c6 }, 169 { GREEK, 0, 0x0000391 }, 170 { DBLGRAVE|GREEK, 0, 0x0000386 }, 171 { BREVE|GREEK, 0, 0x0001fb8 }, 172 { MACRON|GREEK, 0, 0x0001fb9 }, 173 { GRAVE, 0, 0x00000c0 }, 174 { ACUTE, 0, 0x00000c1 }, 175 { CIRCUMFLEX, 0, 0x00000c2 }, 176 { TILDE, 0, 0x00000c3 }, 177 { DIAERESIS, 0, 0x00000c4 }, 178 { RING, 0, 0x00000c5 }, 179 { MACRON, 0, 0x0000100 }, 180 { BREVE, 0, 0x0000102 }, 181 { OGONEK, 0, 0x0000104 }, 182 { CARON, 0, 0x00001cd }, 183 { DIAERESIS|MACRON, 0, 0x00001de }, 184 { DOTABOVE|MACRON, 0, 0x00001e0 }, 185 { ACUTE|RING, 0, 0x00001fa }, 186 { DBLGRAVE, 0, 0x0000200 }, 187 { INVBREVE, 0, 0x0000202 }, 188 { DOTABOVE, 0, 0x0000226 }, 189 { SLASH, 0, 0x000023a }, 190 { RINGBELOW, 0, 0x0001e00 }, 191 { DOTBELOW, 0, 0x0001ea0 }, 192 { HOOKABOVE, 0, 0x0001ea2 }, 193 { ACUTE|CIRCUMFLEX, 0, 0x0001ea4 }, 194 { GRAVE|CIRCUMFLEX, 0, 0x0001ea6 }, 195 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ea8 }, 196 { CIRCUMFLEX|TILDE, 0, 0x0001eaa }, 197 { CIRCUMFLEX|DOTBELOW, 0, 0x0001eac }, 198 { ACUTE|BREVE, 0, 0x0001eae }, 199 { GRAVE|BREVE, 0, 0x0001eb0 }, 200 { BREVE|HOOKABOVE, 0, 0x0001eb2 }, 201 { TILDE|BREVE, 0, 0x0001eb4 }, 202 { BREVE|DOTBELOW, 0, 0x0001eb6 } 203 }; 204 205 static struct gchr_transform trans_B[] = { 206 { GREEK, 0, 0x0000392 }, 207 { SLASH, 0, 0x0000243 }, 208 { DOTABOVE, 0, 0x0001e02 }, 209 { DOTBELOW, 0, 0x0001e04 }, 210 { LINEBELOW, 0, 0x0001e06 } 211 }; 212 213 static struct gchr_transform trans_C[] = { 214 { 0, 0, 0x00000c7 }, 215 { GREEK, 0, 0x00003a7 }, 216 { CEDILLA, 0, 0x00000c7 }, 217 { ACUTE, 0, 0x0000106 }, 218 { CIRCUMFLEX, 0, 0x0000108 }, 219 { DOTABOVE, 0, 0x000010a }, 220 { CARON, 0, 0x000010c }, 221 { SLASH, 0, 0x000023b }, 222 { ACUTE|CEDILLA, 0, 0x0001e08 } 223 }; 224 225 static struct gchr_transform trans_D[] = { 226 { GREEK, 0, 0x0000394 }, 227 { CARON, 0, 0x000010e }, 228 { SLASH, 0, 0x0000110 }, 229 { DOTABOVE, 0, 0x0001e0a }, 230 { DOTBELOW, 0, 0x0001e0c }, 231 { LINEBELOW, 0, 0x0001e0e }, 232 { CEDILLA, 0, 0x0001e10 }, 233 { CIRCUMFLEXBELOW, 0, 0x0001e12 } 234 }; 235 236 static struct gchr_transform trans_E[] = { 237 { GREEK, 0, 0x0000395 }, 238 { DBLGRAVE|GREEK, 0, 0x0000388 }, 239 { GRAVE|GREEK, 0, 0x0001fc8 }, 240 { ACUTE|GREEK, 0, 0x0001fc9 }, 241 { GRAVE, 0, 0x00000c8 }, 242 { ACUTE, 0, 0x00000c9 }, 243 { CIRCUMFLEX, 0, 0x00000ca }, 244 { DIAERESIS, 0, 0x00000cb }, 245 { MACRON, 0, 0x0000112 }, 246 { BREVE, 0, 0x0000114 }, 247 { DOTABOVE, 0, 0x0000116 }, 248 { OGONEK, 0, 0x0000118 }, 249 { CARON, 0, 0x000011a }, 250 { DBLGRAVE, 0, 0x0000204 }, 251 { INVBREVE, 0, 0x0000206 }, 252 { CEDILLA, 0, 0x0000228 }, 253 { SLASH, 0, 0x0000246 }, 254 { GRAVE|MACRON, 0, 0x0001e14 }, 255 { ACUTE|MACRON, 0, 0x0001e16 }, 256 { CIRCUMFLEXBELOW, 0, 0x0001e18 }, 257 { TILDEBELOW, 0, 0x0001e1a }, 258 { BREVE|CEDILLA, 0, 0x0001e1c }, 259 { DOTBELOW, 0, 0x0001eb8 }, 260 { HOOKABOVE, 0, 0x0001eba }, 261 { TILDE, 0, 0x0001ebc }, 262 { ACUTE|CIRCUMFLEX, 0, 0x0001ebe }, 263 { GRAVE|CIRCUMFLEX, 0, 0x0001ec0 }, 264 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ec2 }, 265 { CIRCUMFLEX|TILDE, 0, 0x0001ec4 }, 266 { CIRCUMFLEX|DOTBELOW, 0, 0x0001ec6 } 267 }; 268 269 static struct gchr_transform trans_F[] = { 270 { GREEK, 0, 0x00003a6 }, 271 { DOTABOVE, 0, 0x0001e1e }, 272 { SLASH, 0, 0x000a798 } 273 }; 274 275 static struct gchr_transform trans_G[] = { 276 { GREEK, 0, 0x0000393 }, 277 { CIRCUMFLEX, 0, 0x000011c }, 278 { BREVE, 0, 0x000011e }, 279 { DOTABOVE, 0, 0x0000120 }, 280 { CEDILLA, 0, 0x0000122 }, 281 { SLASH, 0, 0x00001e4 }, 282 { CARON, 0, 0x00001e6 }, 283 { ACUTE, 0, 0x00001f4 }, 284 { MACRON, 0, 0x0001e20 } 285 }; 286 287 static struct gchr_transform trans_H[] = { 288 { 0, 0, 0x000261e }, 289 { GREEK, 0, 0x0000397 }, 290 { DBLGRAVE|GREEK, 0, 0x0000389 }, 291 { GRAVE|GREEK, 0, 0x0001fca }, 292 { ACUTE|GREEK, 0, 0x0001fcb }, 293 { CIRCUMFLEX, 0, 0x0000124 }, 294 { SLASH, 0, 0x0000126 }, 295 { CARON, 0, 0x000021e }, 296 { DOTABOVE, 0, 0x0001e22 }, 297 { DOTBELOW, 0, 0x0001e24 }, 298 { DIAERESIS, 0, 0x0001e26 }, 299 { CEDILLA, 0, 0x0001e28 }, 300 { BREVE, 0, 0x0001e2a } 301 }; 302 303 static struct gchr_transform trans_I[] = { 304 { GREEK, 0, 0x0000399 }, 305 { DBLGRAVE|GREEK, 0, 0x000038a }, 306 { DIAERESIS|GREEK, 0, 0x00003aa }, 307 { GRAVE|GREEK, 0, 0x0001f7a }, 308 { ACUTE|GREEK, 0, 0x0001f7b }, 309 { TILDE|GREEK, 0, 0x0001f78 }, 310 { MACRON|GREEK, 0, 0x0001f79 }, 311 { GRAVE, 0, 0x00000cc }, 312 { ACUTE, 0, 0x00000cd }, 313 { CIRCUMFLEX, 0, 0x00000ce }, 314 { DIAERESIS, 0, 0x00000cf }, 315 { TILDE, 0, 0x0000128 }, 316 { MACRON, 0, 0x000012a }, 317 { BREVE, 0, 0x000012c }, 318 { OGONEK, 0, 0x000012e }, 319 { DOTABOVE, 0, 0x0000130 }, 320 { SLASH, 0, 0x0000197 }, 321 { CARON, 0, 0x00001cf }, 322 { DBLGRAVE, 0, 0x0000208 }, 323 { INVBREVE, 0, 0x000020a }, 324 { TILDEBELOW, 0, 0x0001e2c }, 325 { ACUTE|DIAERESIS, 0, 0x0001e2e }, 326 { HOOKABOVE, 0, 0x0001ec8 }, 327 { DOTBELOW, 0, 0x0001eca } 328 }; 329 330 static struct gchr_transform trans_J[] = { 331 { GREEK, 0, 0x00003d1 }, 332 { CIRCUMFLEX, 0, 0x0000134 }, 333 { SLASH, 0, 0x0000248 } 334 }; 335 336 static struct gchr_transform trans_K[] = { 337 { GREEK, 0, 0x000039a }, 338 { CEDILLA, 0, 0x0000136 }, 339 { CARON, 0, 0x00001e8 }, 340 { ACUTE, 0, 0x0001e30 }, 341 { DOTBELOW, 0, 0x0001e32 }, 342 { LINEBELOW, 0, 0x0001e34 }, 343 { SLASH, 0, 0x000a740 } 344 }; 345 346 static struct gchr_transform trans_L[] = { 347 { GREEK, 0, 0x000039b }, 348 { ACUTE, 0, 0x0000139 }, 349 { CEDILLA, 0, 0x000013b }, 350 { CARON, 0, 0x000013d }, 351 { DOTABOVE, 0, 0x000013f }, 352 { SLASH, 0, 0x0000141 }, 353 { DOTBELOW, 0, 0x0001e36 }, 354 { DOTBELOW|MACRON, 0, 0x0001e38 }, 355 { LINEBELOW, 0, 0x0001e3a }, 356 { CIRCUMFLEXBELOW, 0, 0x0001e3c } 357 }; 358 359 static struct gchr_transform trans_M[] = { 360 { GREEK, 0, 0x000039c }, 361 { ACUTE, 0, 0x0001e3e }, 362 { DOTABOVE, 0, 0x0001e40 }, 363 { DOTBELOW, 0, 0x0001e42 } 364 }; 365 366 static struct gchr_transform trans_N[] = { 367 { GREEK, 0, 0x000039d }, 368 { TILDE, 0, 0x00000d1 }, 369 { ACUTE, 0, 0x0000143 }, 370 { CEDILLA, 0, 0x0000145 }, 371 { CARON, 0, 0x0000147 }, 372 { GRAVE, 0, 0x00001f8 }, 373 { DOTABOVE, 0, 0x0001e44 }, 374 { DOTBELOW, 0, 0x0001e46 }, 375 { LINEBELOW, 0, 0x0001e48 }, 376 { CIRCUMFLEXBELOW, 0, 0x0001e4a } 377 }; 378 379 static struct gchr_transform trans_O[] = { 380 { 0, 0, 0x0000152 }, 381 { GREEK, 0, 0x000039f }, 382 { DBLGRAVE|GREEK, 0, 0x000038c }, 383 { GRAVE|GREEK, 0, 0x0001ff8 }, 384 { ACUTE|GREEK, 0, 0x0001ff9 }, 385 { GRAVE, 0, 0x00000d2 }, 386 { ACUTE, 0, 0x00000d3 }, 387 { CIRCUMFLEX, 0, 0x00000d4 }, 388 { TILDE, 0, 0x00000d5 }, 389 { DIAERESIS, 0, 0x00000d6 }, 390 { SLASH, 0, 0x00000d8 }, 391 { MACRON, 0, 0x000014c }, 392 { BREVE, 0, 0x000014e }, 393 { DBLACUTE, 0, 0x0000150 }, 394 { HORN, 0, 0x00001a0 }, 395 { CARON, 0, 0x00001d1 }, 396 { OGONEK, 0, 0x00001ea }, 397 { OGONEK|MACRON, 0, 0x00001ec }, 398 { ACUTE|SLASH, 0, 0x00001fe }, 399 { DBLGRAVE, 0, 0x000020c }, 400 { INVBREVE, 0, 0x000020e }, 401 { DIAERESIS|MACRON, 0, 0x000022a }, 402 { TILDE|MACRON, 0, 0x000022c }, 403 { DOTABOVE, 0, 0x000022e }, 404 { DOTABOVE|MACRON, 0, 0x0000230 }, 405 { ACUTE|TILDE, 0, 0x0001e4c }, 406 { DIAERESIS|TILDE, 0, 0x0001e4e }, 407 { GRAVE|MACRON, 0, 0x0001e50 }, 408 { ACUTE|MACRON, 0, 0x0001e52 }, 409 { DOTBELOW, 0, 0x0001ecc }, 410 { HOOKABOVE, 0, 0x0001ece }, 411 { ACUTE|CIRCUMFLEX, 0, 0x0001ed0 }, 412 { GRAVE|CIRCUMFLEX, 0, 0x0001ed2 }, 413 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ed4 }, 414 { CIRCUMFLEX|TILDE, 0, 0x0001ed6 }, 415 { CIRCUMFLEX|DOTBELOW, 0, 0x0001ed8 }, 416 { ACUTE|HORN, 0, 0x0001eda }, 417 { GRAVE|HORN, 0, 0x0001edc }, 418 { HOOKABOVE|HORN, 0, 0x0001ede }, 419 { TILDE|HORN, 0, 0x0001ee0 }, 420 { DOTBELOW|HORN, 0, 0x0001ee2 } 421 }; 422 423 static struct gchr_transform trans_P[] = { 424 { 0, 0, 0x00000a7 }, 425 { GREEK, 0, 0x00003a0 }, 426 { ACUTE, 0, 0x0001e54 }, 427 { DOTABOVE, 0, 0x0001e56 }, 428 { SLASH, 0, 0x0002c63 }, 429 { SLASH, 0, 0x000a750 } 430 }; 431 432 static struct gchr_transform trans_Q[] = { 433 { GREEK, 0, 0x0000398 }, 434 { SLASH, 0, 0x000a756 } 435 }; 436 437 static struct gchr_transform trans_R[] = { 438 { GREEK, 0, 0x00003a1 }, 439 { ACUTE, 0, 0x0000154 }, 440 { CEDILLA, 0, 0x0000156 }, 441 { CARON, 0, 0x0000158 }, 442 { DBLGRAVE, 0, 0x0000210 }, 443 { INVBREVE, 0, 0x0000212 }, 444 { SLASH, 0, 0x000024c }, 445 { DOTABOVE, 0, 0x0001e58 }, 446 { DOTBELOW, 0, 0x0001e5a }, 447 { DOTBELOW|MACRON, 0, 0x0001e5c }, 448 { LINEBELOW, 0, 0x0001e5e } 449 }; 450 451 static struct gchr_transform trans_S[] = { 452 { GREEK, 0, 0x00003a3 }, 453 { ACUTE, 0, 0x000015a }, 454 { CIRCUMFLEX, 0, 0x000015c }, 455 { CEDILLA, 0, 0x000015e }, 456 { CARON, 0, 0x0000160 }, 457 { DOTABOVE, 0, 0x0001e60 }, 458 { DOTBELOW, 0, 0x0001e62 }, 459 { ACUTE|DOTABOVE, 0, 0x0001e64 }, 460 { CARON|DOTABOVE, 0, 0x0001e66 }, 461 { DOTABOVE|DOTBELOW, 0, 0x0001e68 } 462 }; 463 464 static struct gchr_transform trans_T[] = { 465 { GREEK, 0, 0x00003a4 }, 466 { CEDILLA, 0, 0x0000162 }, 467 { CARON, 0, 0x0000164 }, 468 { SLASH, 0, 0x0000166 }, 469 { DOTABOVE, 0, 0x0001e6a }, 470 { DOTBELOW, 0, 0x0001e6c }, 471 { LINEBELOW, 0, 0x0001e6e }, 472 { CIRCUMFLEXBELOW, 0, 0x0001e70 } 473 }; 474 475 static struct gchr_transform trans_U[] = { 476 { GREEK, 0, 0x00003a5 }, 477 { DBLGRAVE|GREEK, 0, 0x000038e }, 478 { DIAERESIS|GREEK, 0, 0x00003ab }, 479 { GRAVE|GREEK, 0, 0x0001fea }, 480 { ACUTE|GREEK, 0, 0x0001feb }, 481 { BREVE|GREEK, 0, 0x0001fe8 }, 482 { MACRON|GREEK, 0, 0x0001fe9 }, 483 { GRAVE, 0, 0x00000d9 }, 484 { ACUTE, 0, 0x00000da }, 485 { CIRCUMFLEX, 0, 0x00000db }, 486 { DIAERESIS, 0, 0x00000dc }, 487 { TILDE, 0, 0x0000168 }, 488 { MACRON, 0, 0x000016a }, 489 { BREVE, 0, 0x000016c }, 490 { RING, 0, 0x000016e }, 491 { DBLACUTE, 0, 0x0000170 }, 492 { OGONEK, 0, 0x0000172 }, 493 { HORN, 0, 0x00001af }, 494 { CARON, 0, 0x00001d3 }, 495 { DIAERESIS|MACRON, 0, 0x00001d5 }, 496 { ACUTE|DIAERESIS, 0, 0x00001d7 }, 497 { DIAERESIS|CARON, 0, 0x00001d9 }, 498 { GRAVE|DIAERESIS, 0, 0x00001db }, 499 { DBLGRAVE, 0, 0x0000214 }, 500 { INVBREVE, 0, 0x0000216 }, 501 { DIAERESISBELOW, 0, 0x0001e72 }, 502 { TILDEBELOW, 0, 0x0001e74 }, 503 { CIRCUMFLEXBELOW, 0, 0x0001e76 }, 504 { ACUTE|TILDE, 0, 0x0001e78 }, 505 { DIAERESIS|MACRON, 0, 0x0001e7a }, 506 { DOTBELOW, 0, 0x0001ee4 }, 507 { HOOKABOVE, 0, 0x0001ee6 }, 508 { ACUTE|HORN, 0, 0x0001ee8 }, 509 { GRAVE|HORN, 0, 0x0001eea }, 510 { HOOKABOVE|HORN, 0, 0x0001eec }, 511 { TILDE|HORN, 0, 0x0001eee }, 512 { DOTBELOW|HORN, 0, 0x0001ef0 }, 513 { SLASH, 0, 0x000a7b8 } 514 }; 515 516 static struct gchr_transform trans_V[] = { 517 { GREEK, 0, 0x00003c2 }, 518 { TILDE, 0, 0x0001e7c }, 519 { DOTBELOW, 0, 0x0001e7e } 520 }; 521 522 static struct gchr_transform trans_W[] = { 523 { GREEK, 0, 0x00003a9 }, 524 { DBLGRAVE|GREEK, 0, 0x000038f }, 525 { GRAVE|GREEK, 0, 0x0001ffa }, 526 { ACUTE|GREEK, 0, 0x0001ffb }, 527 { CIRCUMFLEX, 0, 0x0000174 }, 528 { GRAVE, 0, 0x0001e80 }, 529 { ACUTE, 0, 0x0001e82 }, 530 { DIAERESIS, 0, 0x0001e84 }, 531 { DOTABOVE, 0, 0x0001e86 }, 532 { DOTBELOW, 0, 0x0001e88 } 533 }; 534 535 static struct gchr_transform trans_X[] = { 536 { GREEK, 0, 0x000039e }, 537 { DOTABOVE, 0, 0x0001e8a }, 538 { DIAERESIS, 0, 0x0001e8c } 539 }; 540 541 static struct gchr_transform trans_Y[] = { 542 { GREEK, 0, 0x00003a8 }, 543 { ACUTE, 0, 0x00000dd }, 544 { CIRCUMFLEX, 0, 0x0000176 }, 545 { DIAERESIS, 0, 0x0000178 }, 546 { MACRON, 0, 0x0000232 }, 547 { SLASH, 0, 0x000024e }, 548 { DOTABOVE, 0, 0x0001e8e }, 549 { GRAVE, 0, 0x0001ef2 }, 550 { DOTBELOW, 0, 0x0001ef4 }, 551 { HOOKABOVE, 0, 0x0001ef6 }, 552 { TILDE, 0, 0x0001ef8 } 553 }; 554 555 static struct gchr_transform trans_Z[] = { 556 { GREEK, 0, 0x0000396 }, 557 { ACUTE, 0, 0x0000179 }, 558 { DOTABOVE, 0, 0x000017b }, 559 { CARON, 0, 0x000017d }, 560 { SLASH, 0, 0x00001b5 }, 561 { CIRCUMFLEX, 0, 0x0001e90 }, 562 { DOTBELOW, 0, 0x0001e92 }, 563 { LINEBELOW, 0, 0x0001e94 } 564 }; 565 566 static struct gchr_transform trans_bracketleft[] = { 567 { 0, 0, 0x0002018 } 568 }; 569 570 static struct gchr_transform trans_backslash[] = { 571 { 0, 0, 0x00000ab }, 572 { GREEK, 0, 0x0002039 } 573 }; 574 575 static struct gchr_transform trans_bracketright[] = { 576 { 0, 0, 0x0002019 } 577 }; 578 579 static struct gchr_transform trans_asciicircum[] = { 580 { ANY, CIRCUMFLEX, 0x0000000 } 581 }; 582 583 static struct gchr_transform trans_underscore[] = { 584 { ANY, MACRON, 0x0000000 }, 585 { GREEK, 0, 0x0002014 } 586 }; 587 588 static struct gchr_transform trans_grave[] = { 589 { ANY, GRAVE, 0x0000000 } 590 }; 591 592 static struct gchr_transform trans_a[] = { 593 { 0, 0, 0x00000e6 }, 594 { GREEK, 0, 0x00003b1 }, 595 { DBLGRAVE|GREEK, 0, 0x00003ac }, 596 { GRAVE|GREEK, 0, 0x0001f70 }, 597 { ACUTE|GREEK, 0, 0x0001f71 }, 598 { BREVE|GREEK, 0, 0x0001fb0 }, 599 { MACRON|GREEK, 0, 0x0001fb1 }, 600 { TILDE|GREEK, 0, 0x0001fb6 }, 601 { GRAVE, 0, 0x00000e0 }, 602 { ACUTE, 0, 0x00000e1 }, 603 { CIRCUMFLEX, 0, 0x00000e2 }, 604 { TILDE, 0, 0x00000e3 }, 605 { DIAERESIS, 0, 0x00000e4 }, 606 { RING, 0, 0x00000e5 }, 607 { MACRON, 0, 0x0000101 }, 608 { BREVE, 0, 0x0000103 }, 609 { OGONEK, 0, 0x0000105 }, 610 { CARON, 0, 0x00001ce }, 611 { DIAERESIS|MACRON, 0, 0x00001df }, 612 { DOTABOVE|MACRON, 0, 0x00001e1 }, 613 { ACUTE|RING, 0, 0x00001fb }, 614 { DBLGRAVE, 0, 0x0000201 }, 615 { INVBREVE, 0, 0x0000203 }, 616 { DOTABOVE, 0, 0x0000227 }, 617 { RINGBELOW, 0, 0x0001e01 }, 618 { DOTBELOW, 0, 0x0001ea1 }, 619 { HOOKABOVE, 0, 0x0001ea3 }, 620 { ACUTE|CIRCUMFLEX, 0, 0x0001ea5 }, 621 { GRAVE|CIRCUMFLEX, 0, 0x0001ea7 }, 622 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ea9 }, 623 { CIRCUMFLEX|TILDE, 0, 0x0001eab }, 624 { CIRCUMFLEX|DOTBELOW, 0, 0x0001ead }, 625 { ACUTE|BREVE, 0, 0x0001eaf }, 626 { GRAVE|BREVE, 0, 0x0001eb1 }, 627 { BREVE|HOOKABOVE, 0, 0x0001eb3 }, 628 { TILDE|BREVE, 0, 0x0001eb5 }, 629 { BREVE|DOTBELOW, 0, 0x0001eb7 }, 630 { SLASH, 0, 0x0002c65 } 631 }; 632 633 static struct gchr_transform trans_b[] = { 634 { GREEK, 0, 0x00003b2 }, 635 { SLASH, 0, 0x0000180 }, 636 { DOTABOVE, 0, 0x0001e03 }, 637 { DOTBELOW, 0, 0x0001e05 }, 638 { LINEBELOW, 0, 0x0001e07 } 639 }; 640 641 static struct gchr_transform trans_c[] = { 642 { 0, 0, 0x00000e7 }, 643 { GREEK, 0, 0x00003c7 }, 644 { CEDILLA, 0, 0x00000e7 }, 645 { ACUTE, 0, 0x0000107 }, 646 { CIRCUMFLEX, 0, 0x0000109 }, 647 { DOTABOVE, 0, 0x000010b }, 648 { CARON, 0, 0x000010d }, 649 { SLASH, 0, 0x000023c }, 650 { ACUTE|CEDILLA, 0, 0x0001e09 } 651 }; 652 653 static struct gchr_transform trans_d[] = { 654 { GREEK, 0, 0x00003b4 }, 655 { CARON, 0, 0x000010f }, 656 { SLASH, 0, 0x0000111 }, 657 { DOTABOVE, 0, 0x0001e0b }, 658 { DOTBELOW, 0, 0x0001e0d }, 659 { LINEBELOW, 0, 0x0001e0f }, 660 { CEDILLA, 0, 0x0001e11 }, 661 { CIRCUMFLEXBELOW, 0, 0x0001e13 } 662 }; 663 664 static struct gchr_transform trans_e[] = { 665 { 0, ACUTE, 0x0000000 }, 666 { GREEK, 0, 0x00003b5 }, 667 { DBLGRAVE|GREEK, 0, 0x00003ad }, 668 { GRAVE|GREEK, 0, 0x0001f72 }, 669 { ACUTE|GREEK, 0, 0x0001f73 }, 670 { GRAVE, 0, 0x00000e8 }, 671 { ACUTE, 0, 0x00000e9 }, 672 { CIRCUMFLEX, 0, 0x00000ea }, 673 { DIAERESIS, 0, 0x00000eb }, 674 { MACRON, 0, 0x0000113 }, 675 { BREVE, 0, 0x0000115 }, 676 { DOTABOVE, 0, 0x0000117 }, 677 { OGONEK, 0, 0x0000119 }, 678 { CARON, 0, 0x000011b }, 679 { DBLGRAVE, 0, 0x0000205 }, 680 { INVBREVE, 0, 0x0000207 }, 681 { CEDILLA, 0, 0x0000229 }, 682 { SLASH, 0, 0x0000247 }, 683 { GRAVE|MACRON, 0, 0x0001e15 }, 684 { ACUTE|MACRON, 0, 0x0001e17 }, 685 { CIRCUMFLEXBELOW, 0, 0x0001e19 }, 686 { TILDEBELOW, 0, 0x0001e1b }, 687 { BREVE|CEDILLA, 0, 0x0001e1d }, 688 { DOTBELOW, 0, 0x0001eb9 }, 689 { HOOKABOVE, 0, 0x0001ebb }, 690 { TILDE, 0, 0x0001ebd }, 691 { ACUTE|CIRCUMFLEX, 0, 0x0001ebf }, 692 { GRAVE|CIRCUMFLEX, 0, 0x0001ec1 }, 693 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ec3 }, 694 { CIRCUMFLEX|TILDE, 0, 0x0001ec5 }, 695 { CIRCUMFLEX|DOTBELOW, 0, 0x0001ec7 } 696 }; 697 698 static struct gchr_transform trans_f[] = { 699 { 0, 0, 0x0002640 }, 700 { GREEK, 0, 0x00003c6 }, 701 { DOTABOVE, 0, 0x0001e1f }, 702 { SLASH, 0, 0x000a799 } 703 }; 704 705 static struct gchr_transform trans_g[] = { 706 { 0, 0, 0x00000a9 }, 707 { GREEK, 0, 0x00003b3 }, 708 { CIRCUMFLEX, 0, 0x000011d }, 709 { BREVE, 0, 0x000011f }, 710 { DOTABOVE, 0, 0x0000121 }, 711 { CEDILLA, 0, 0x0000123 }, 712 { SLASH, 0, 0x00001e5 }, 713 { CARON, 0, 0x00001e7 }, 714 { ACUTE, 0, 0x00001f5 }, 715 { MACRON, 0, 0x0001e21 } 716 }; 717 718 static struct gchr_transform trans_h[] = { 719 { SLASH|GREEK, 0, 0x000210f }, 720 { 0, 0, 0x000261e }, 721 { GREEK, 0, 0x00003b7 }, 722 { DBLGRAVE|GREEK, 0, 0x00003ae }, 723 { GRAVE|GREEK, 0, 0x0001f74 }, 724 { ACUTE|GREEK, 0, 0x0001f75 }, 725 { TILDE|GREEK, 0, 0x0001fc6 }, 726 { CIRCUMFLEX, 0, 0x0000125 }, 727 { SLASH, 0, 0x0000127 }, 728 { CARON, 0, 0x000021f }, 729 { DOTABOVE, 0, 0x0001e23 }, 730 { DOTBELOW, 0, 0x0001e25 }, 731 { DIAERESIS, 0, 0x0001e27 }, 732 { CEDILLA, 0, 0x0001e29 }, 733 { BREVE, 0, 0x0001e2b }, 734 { LINEBELOW, 0, 0x0001e96 } 735 }; 736 737 static struct gchr_transform trans_i[] = { 738 { 0, CIRCUMFLEX, 0x0000000 }, 739 { DOTABOVE, 0, 0x0000131 }, 740 { GREEK, 0, 0x00003b9 }, 741 { DBLGRAVE|GREEK, 0, 0x00003af }, 742 { DIAERESIS|GREEK, 0, 0x00003ca }, 743 { DIAERESIS|DBLGRAVE|GREEK, 0, 0x0000390 }, 744 { GRAVE|GREEK, 0, 0x0001f76 }, 745 { ACUTE|GREEK, 0, 0x0001f77 }, 746 { BREVE|GREEK, 0, 0x0001fd0 }, 747 { MACRON|GREEK, 0, 0x0001fd1 }, 748 { TILDE|GREEK, 0, 0x0001fd6 }, 749 { GRAVE|DIAERESIS|GREEK, 0, 0x0001fd2 }, 750 { ACUTE|DIAERESIS|GREEK, 0, 0x0001fd3 }, 751 { DIAERESIS|TILDE|GREEK, 0, 0x0001fd7 }, 752 { GRAVE, 0, 0x00000ec }, 753 { ACUTE, 0, 0x00000ed }, 754 { CIRCUMFLEX, 0, 0x00000ee }, 755 { DIAERESIS, 0, 0x00000ef }, 756 { TILDE, 0, 0x0000129 }, 757 { MACRON, 0, 0x000012b }, 758 { BREVE, 0, 0x000012d }, 759 { OGONEK, 0, 0x000012f }, 760 { CARON, 0, 0x00001d0 }, 761 { DBLGRAVE, 0, 0x0000209 }, 762 { INVBREVE, 0, 0x000020b }, 763 { SLASH, 0, 0x0000268 }, 764 { TILDEBELOW, 0, 0x0001e2d }, 765 { ACUTE|DIAERESIS, 0, 0x0001e2f }, 766 { HOOKABOVE, 0, 0x0001ec9 }, 767 { DOTBELOW, 0, 0x0001ecb } 768 }; 769 770 static struct gchr_transform trans_j[] = { 771 { GREEK, 0, 0x00003d5 }, 772 { CIRCUMFLEX, 0, 0x0000135 }, 773 { CARON, 0, 0x00001f0 }, 774 { SLASH, 0, 0x0000249 } 775 }; 776 777 static struct gchr_transform trans_k[] = { 778 { GREEK, 0, 0x00003ba }, 779 { CEDILLA, 0, 0x0000137 }, 780 { CARON, 0, 0x00001e9 }, 781 { ACUTE, 0, 0x0001e31 }, 782 { DOTBELOW, 0, 0x0001e33 }, 783 { LINEBELOW, 0, 0x0001e35 }, 784 { SLASH, 0, 0x000a741 } 785 }; 786 787 static struct gchr_transform trans_l[] = { 788 { GREEK, 0, 0x00003bb }, 789 { ACUTE, 0, 0x000013a }, 790 { CEDILLA, 0, 0x000013c }, 791 { CARON, 0, 0x000013e }, 792 { DOTABOVE, 0, 0x0000140 }, 793 { SLASH, 0, 0x0000142 }, 794 { DOTBELOW, 0, 0x0001e37 }, 795 { DOTBELOW|MACRON, 0, 0x0001e39 }, 796 { LINEBELOW, 0, 0x0001e3b }, 797 { CIRCUMFLEXBELOW, 0, 0x0001e3d } 798 }; 799 800 static struct gchr_transform trans_m[] = { 801 { 0, 0, 0x0002642 }, 802 { GREEK, 0, 0x00003bc }, 803 { ACUTE, 0, 0x0001e3f }, 804 { DOTABOVE, 0, 0x0001e41 }, 805 { DOTBELOW, 0, 0x0001e43 } 806 }; 807 808 static struct gchr_transform trans_n[] = { 809 { 0, TILDE, 0x0000000 }, 810 { GREEK, 0, 0x00003bd }, 811 { TILDE, 0, 0x00000f1 }, 812 { ACUTE, 0, 0x0000144 }, 813 { CEDILLA, 0, 0x0000146 }, 814 { CARON, 0, 0x0000148 }, 815 { GRAVE, 0, 0x00001f9 }, 816 { DOTABOVE, 0, 0x0001e45 }, 817 { DOTBELOW, 0, 0x0001e47 }, 818 { LINEBELOW, 0, 0x0001e49 }, 819 { CIRCUMFLEXBELOW, 0, 0x0001e4b } 820 }; 821 822 static struct gchr_transform trans_o[] = { 823 { 0, 0, 0x0001536 }, 824 { GREEK, 0, 0x00003bf }, 825 { DBLGRAVE|GREEK, 0, 0x00003cc }, 826 { GRAVE|GREEK, 0, 0x0001f78 }, 827 { ACUTE|GREEK, 0, 0x0001f79 }, 828 { GRAVE, 0, 0x00000f2 }, 829 { ACUTE, 0, 0x00000f3 }, 830 { CIRCUMFLEX, 0, 0x00000f4 }, 831 { TILDE, 0, 0x00000f5 }, 832 { DIAERESIS, 0, 0x00000f6 }, 833 { SLASH, 0, 0x00000f8 }, 834 { MACRON, 0, 0x000014d }, 835 { BREVE, 0, 0x000014f }, 836 { DBLACUTE, 0, 0x0000151 }, 837 { HORN, 0, 0x00001a1 }, 838 { CARON, 0, 0x00001d2 }, 839 { OGONEK, 0, 0x00001eb }, 840 { OGONEK|MACRON, 0, 0x00001ed }, 841 { ACUTE|SLASH, 0, 0x00001ff }, 842 { DBLGRAVE, 0, 0x000020d }, 843 { INVBREVE, 0, 0x000020f }, 844 { DIAERESIS|MACRON, 0, 0x000022b }, 845 { TILDE|MACRON, 0, 0x000022d }, 846 { DOTABOVE, 0, 0x000022f }, 847 { DOTABOVE|MACRON, 0, 0x0000231 }, 848 { ACUTE|TILDE, 0, 0x0001e4d }, 849 { DIAERESIS|TILDE, 0, 0x0001e4f }, 850 { GRAVE|MACRON, 0, 0x0001e51 }, 851 { ACUTE|MACRON, 0, 0x0001e53 }, 852 { DOTBELOW, 0, 0x0001ecd }, 853 { HOOKABOVE, 0, 0x0001ecf }, 854 { ACUTE|CIRCUMFLEX, 0, 0x0001ed1 }, 855 { GRAVE|CIRCUMFLEX, 0, 0x0001ed3 }, 856 { CIRCUMFLEX|HOOKABOVE, 0, 0x0001ed5 }, 857 { CIRCUMFLEX|TILDE, 0, 0x0001ed7 }, 858 { CIRCUMFLEX|DOTBELOW, 0, 0x0001ed9 }, 859 { ACUTE|HORN, 0, 0x0001edb }, 860 { GRAVE|HORN, 0, 0x0001edd }, 861 { HOOKABOVE|HORN, 0, 0x0001edf }, 862 { TILDE|HORN, 0, 0x0001ee1 }, 863 { DOTBELOW|HORN, 0, 0x0001ee3 } 864 }; 865 866 static struct gchr_transform trans_p[] = { 867 { 0, 0, 0x00000b6 }, 868 { GREEK, 0, 0x00003c0 }, 869 { SLASH, 0, 0x0001d7d }, 870 { ACUTE, 0, 0x0001e55 }, 871 { DOTABOVE, 0, 0x0001e57 }, 872 { SLASH, 0, 0x000a751 } 873 }; 874 875 static struct gchr_transform trans_q[] = { 876 { GREEK, 0, 0x00003b8 }, 877 { SLASH, 0, 0x000a757 } 878 }; 879 880 static struct gchr_transform trans_r[] = { 881 { 0, 0, 0x00000ae }, 882 { GREEK, 0, 0x00003c1 }, 883 { ACUTE, 0, 0x0000155 }, 884 { CEDILLA, 0, 0x0000157 }, 885 { CARON, 0, 0x0000159 }, 886 { DBLGRAVE, 0, 0x0000211 }, 887 { INVBREVE, 0, 0x0000213 }, 888 { SLASH, 0, 0x000024d }, 889 { DOTABOVE, 0, 0x0001e59 }, 890 { DOTBELOW, 0, 0x0001e5b }, 891 { DOTBELOW|MACRON, 0, 0x0001e5d }, 892 { LINEBELOW, 0, 0x0001e5f } 893 }; 894 895 static struct gchr_transform trans_s[] = { 896 { 0, 0, 0x00000df }, 897 { GREEK, 0, 0x00003c3 }, 898 { ACUTE, 0, 0x000015b }, 899 { CIRCUMFLEX, 0, 0x000015d }, 900 { CEDILLA, 0, 0x000015f }, 901 { CARON, 0, 0x0000161 }, 902 { DOTABOVE, 0, 0x0001e61 }, 903 { DOTBELOW, 0, 0x0001e63 }, 904 { ACUTE|DOTABOVE, 0, 0x0001e65 }, 905 { CARON|DOTABOVE, 0, 0x0001e67 }, 906 { DOTABOVE|DOTBELOW, 0, 0x0001e69 } 907 }; 908 909 static struct gchr_transform trans_t[] = { 910 { 0, 0, 0x0002122 }, 911 { GREEK, 0, 0x00003c4 }, 912 { CEDILLA, 0, 0x0000163 }, 913 { CARON, 0, 0x0000165 }, 914 { SLASH, 0, 0x0000167 }, 915 { DOTABOVE, 0, 0x0001e6b }, 916 { DOTBELOW, 0, 0x0001e6d }, 917 { LINEBELOW, 0, 0x0001e6f }, 918 { CIRCUMFLEXBELOW, 0, 0x0001e71 }, 919 { DIAERESIS, 0, 0x0001e97 } 920 }; 921 922 static struct gchr_transform trans_u[] = { 923 { 0, DIAERESIS, 0x0000000 }, 924 { GREEK, 0, 0x00003c5 }, 925 { DBLGRAVE|GREEK, 0, 0x00003cd }, 926 { DIAERESIS|GREEK, 0, 0x00003cb }, 927 { DIAERESIS|DBLGRAVE|GREEK, 0, 0x00003b0 }, 928 { GRAVE|GREEK, 0, 0x0001f7a }, 929 { ACUTE|GREEK, 0, 0x0001f7b }, 930 { BREVE|GREEK, 0, 0x0001ff0 }, 931 { MACRON|GREEK, 0, 0x0001fe1 }, 932 { GRAVE|DIAERESIS|GREEK, 0, 0x0001fe3 }, 933 { ACUTE|DIAERESIS|GREEK, 0, 0x0001fe4 }, 934 { TILDE|GREEK, 0, 0x0001fe6 }, 935 { DIAERESIS|TILDE|GREEK, 0, 0x0001fe7 }, 936 { GRAVE, 0, 0x00000f9 }, 937 { ACUTE, 0, 0x00000fa }, 938 { CIRCUMFLEX, 0, 0x00000fb }, 939 { DIAERESIS, 0, 0x00000fc }, 940 { TILDE, 0, 0x0000169 }, 941 { MACRON, 0, 0x000016b }, 942 { BREVE, 0, 0x000016d }, 943 { RING, 0, 0x000016f }, 944 { DBLACUTE, 0, 0x0000171 }, 945 { OGONEK, 0, 0x0000173 }, 946 { HORN, 0, 0x00001b0 }, 947 { CARON, 0, 0x00001d4 }, 948 { DIAERESIS|MACRON, 0, 0x00001d6 }, 949 { ACUTE|DIAERESIS, 0, 0x00001d8 }, 950 { DIAERESIS|CARON, 0, 0x00001da }, 951 { GRAVE|DIAERESIS, 0, 0x00001dc }, 952 { DBLGRAVE, 0, 0x0000215 }, 953 { INVBREVE, 0, 0x0000217 }, 954 { DIAERESISBELOW, 0, 0x0001e73 }, 955 { TILDEBELOW, 0, 0x0001e75 }, 956 { CIRCUMFLEXBELOW, 0, 0x0001e77 }, 957 { ACUTE|TILDE, 0, 0x0001e79 }, 958 { DIAERESIS|MACRON, 0, 0x0001e7b }, 959 { DOTBELOW, 0, 0x0001ee5 }, 960 { HOOKABOVE, 0, 0x0001ee7 }, 961 { ACUTE|HORN, 0, 0x0001ee9 }, 962 { GRAVE|HORN, 0, 0x0001eeb }, 963 { HOOKABOVE|HORN, 0, 0x0001eed }, 964 { TILDE|HORN, 0, 0x0001eef }, 965 { DOTBELOW|HORN, 0, 0x0001ef1 }, 966 { SLASH, 0, 0x000a7b9 } 967 }; 968 969 static struct gchr_transform trans_v[] = { 970 { GREEK, 0, 0x00003d6 }, 971 { TILDE, 0, 0x0001e7d }, 972 { DOTBELOW, 0, 0x0001e7f } 973 }; 974 975 static struct gchr_transform trans_w[] = { 976 { GREEK, 0, 0x00003c9 }, 977 { DBLGRAVE|GREEK, 0, 0x00003ce }, 978 { GRAVE|GREEK, 0, 0x0001f7a }, 979 { ACUTE|GREEK, 0, 0x0001f7b }, 980 { CIRCUMFLEX, 0, 0x0000175 }, 981 { GRAVE, 0, 0x0001e81 }, 982 { ACUTE, 0, 0x0001e83 }, 983 { DIAERESIS, 0, 0x0001e85 }, 984 { DOTABOVE, 0, 0x0001e87 }, 985 { DOTBELOW, 0, 0x0001e89 }, 986 { RING, 0, 0x0001e98 } 987 }; 988 989 static struct gchr_transform trans_x[] = { 990 { GREEK, 0, 0x00003be }, 991 { DOTABOVE, 0, 0x0001e8b }, 992 { DIAERESIS, 0, 0x0001e8d } 993 }; 994 995 static struct gchr_transform trans_y[] = { 996 { GREEK, 0, 0x00003c8 }, 997 { ACUTE, 0, 0x00000fd }, 998 { DIAERESIS, 0, 0x00000ff }, 999 { CIRCUMFLEX, 0, 0x0000177 }, 1000 { MACRON, 0, 0x0000233 }, 1001 { SLASH, 0, 0x000024f }, 1002 { DOTABOVE, 0, 0x0001e8f }, 1003 { RING, 0, 0x0001e99 }, 1004 { GRAVE, 0, 0x0001ef3 }, 1005 { DOTBELOW, 0, 0x0001ef5 }, 1006 { HOOKABOVE, 0, 0x0001ef7 }, 1007 { TILDE, 0, 0x0001ef9 } 1008 }; 1009 1010 static struct gchr_transform trans_z[] = { 1011 { 0, 0, 0x000017f }, 1012 { GREEK, 0, 0x00003b6 }, 1013 { ACUTE, 0, 0x000017a }, 1014 { DOTABOVE, 0, 0x000017c }, 1015 { CARON, 0, 0x000017e }, 1016 { SLASH, 0, 0x00001b6 }, 1017 { CIRCUMFLEX, 0, 0x0001e91 }, 1018 { DOTBELOW, 0, 0x0001e93 }, 1019 { LINEBELOW, 0, 0x0001e95 } 1020 }; 1021 1022 static struct gchr_transform trans_braceleft[] = { 1023 { 0, 0, 0x000201c } 1024 }; 1025 1026 static struct gchr_transform trans_bar[] = { 1027 { 0, 0, 0x00000bb }, 1028 { GREEK, 0, 0x000203a } 1029 }; 1030 1031 static struct gchr_transform trans_braceright[] = { 1032 { 0, 0, 0x000201c } 1033 }; 1034 1035 static struct gchr_transform trans_asciitilde[] = { 1036 { ANY, TILDE, 0x0000000 } 1037 }; 1038 1039 struct gchr_lookup _gdraw_chrlookup[95] = { 1040 /* */ { 2, trans_space }, 1041 /* ! */ { 1, trans_exclam }, 1042 /* " */ { 1, trans_quotedbl }, 1043 /* # */ { 2, trans_numbersign }, 1044 /* $ */ { 2, trans_dollar }, 1045 /* % */ { 0 }, 1046 /* & */ { 0 }, 1047 /* ' */ { 1, trans_quotesingle }, 1048 /* ( */ { 0 }, 1049 /* ) */ { 0 }, 1050 /* * */ { 2, trans_asterisk }, 1051 /* + */ { 1, trans_plus }, 1052 /* , */ { 1, trans_comma }, 1053 /* - */ { 2, trans_hyphenminus }, 1054 /* . */ { 2, trans_period }, 1055 /* / */ { 1, trans_slash }, 1056 /* 0 */ { 1, trans_zero }, 1057 /* 1 */ { 0 }, 1058 /* 2 */ { 1, trans_two }, 1059 /* 3 */ { 0 }, 1060 /* 4 */ { 1, trans_four }, 1061 /* 5 */ { 1, trans_five }, 1062 /* 6 */ { 1, trans_six }, 1063 /* 7 */ { 1, trans_seven }, 1064 /* 8 */ { 0 }, 1065 /* 9 */ { 0 }, 1066 /* : */ { 1, trans_colon }, 1067 /* ; */ { 1, trans_semicolon }, 1068 /* < */ { 1, trans_less }, 1069 /* = */ { 1, trans_equal }, 1070 /* > */ { 2, trans_greater }, 1071 /* ? */ { 1, trans_question }, 1072 /* @ */ { 1, trans_at }, 1073 /* A */ { 35, trans_A }, 1074 /* B */ { 5, trans_B }, 1075 /* C */ { 9, trans_C }, 1076 /* D */ { 8, trans_D }, 1077 /* E */ { 30, trans_E }, 1078 /* F */ { 3, trans_F }, 1079 /* G */ { 9, trans_G }, 1080 /* H */ { 13, trans_H }, 1081 /* I */ { 24, trans_I }, 1082 /* J */ { 3, trans_J }, 1083 /* K */ { 7, trans_K }, 1084 /* L */ { 10, trans_L }, 1085 /* M */ { 4, trans_M }, 1086 /* N */ { 10, trans_N }, 1087 /* O */ { 41, trans_O }, 1088 /* P */ { 6, trans_P }, 1089 /* Q */ { 2, trans_Q }, 1090 /* R */ { 11, trans_R }, 1091 /* S */ { 10, trans_S }, 1092 /* T */ { 8, trans_T }, 1093 /* U */ { 38, trans_U }, 1094 /* V */ { 3, trans_V }, 1095 /* W */ { 10, trans_W }, 1096 /* X */ { 3, trans_X }, 1097 /* Y */ { 11, trans_Y }, 1098 /* Z */ { 8, trans_Z }, 1099 /* [ */ { 1, trans_bracketleft }, 1100 /* \ */ { 2, trans_backslash }, 1101 /* ] */ { 1, trans_bracketright }, 1102 /* ^ */ { 1, trans_asciicircum }, 1103 /* _ */ { 2, trans_underscore }, 1104 /* ` */ { 1, trans_grave }, 1105 /* a */ { 38, trans_a }, 1106 /* b */ { 5, trans_b }, 1107 /* c */ { 9, trans_c }, 1108 /* d */ { 8, trans_d }, 1109 /* e */ { 31, trans_e }, 1110 /* f */ { 4, trans_f }, 1111 /* g */ { 10, trans_g }, 1112 /* h */ { 16, trans_h }, 1113 /* i */ { 30, trans_i }, 1114 /* j */ { 4, trans_j }, 1115 /* k */ { 7, trans_k }, 1116 /* l */ { 10, trans_l }, 1117 /* m */ { 5, trans_m }, 1118 /* n */ { 11, trans_n }, 1119 /* o */ { 41, trans_o }, 1120 /* p */ { 6, trans_p }, 1121 /* q */ { 2, trans_q }, 1122 /* r */ { 12, trans_r }, 1123 /* s */ { 11, trans_s }, 1124 /* t */ { 10, trans_t }, 1125 /* u */ { 44, trans_u }, 1126 /* v */ { 3, trans_v }, 1127 /* w */ { 11, trans_w }, 1128 /* x */ { 3, trans_x }, 1129 /* y */ { 12, trans_y }, 1130 /* z */ { 9, trans_z }, 1131 /* { */ { 1, trans_braceleft }, 1132 /* | */ { 2, trans_bar }, 1133 /* } */ { 1, trans_braceright }, 1134 /* ~ */ { 1, trans_asciitilde }, 1135 }; 1136 1137 struct gchr_accents _gdraw_accents[] = { 1138 { 0x0301, 0x0000001 }, 1139 { 0x0300, 0x0000002 }, 1140 { 0x0308, 0x0000004 }, 1141 { 0x0302, 0x0000008 }, 1142 { 0x0303, 0x0000010 }, 1143 { 0x030a, 0x0000020 }, 1144 { 0x0338, 0x0000040 }, 1145 { 0x0306, 0x0000080 }, 1146 { 0x030c, 0x0000100 }, 1147 { 0x0307, 0x0000200 }, 1148 { 0x0323, 0x0000400 }, 1149 { 0x0327, 0x0000800 }, 1150 { 0x0328, 0x0001000 }, 1151 { 0x0304, 0x0002000 }, 1152 { 0x030d, 0x8004000 }, 1153 { 0x030b, 0x0004000 }, 1154 { 0x030b, 0x0008000 }, 1155 { 0x030b, 0x0010000 }, 1156 { 0x030b, 0x0020000 }, 1157 { 0x030b, 0x0040000 }, 1158 { 0x030b, 0x0080000 }, 1159 { 0x030b, 0x0100000 }, 1160 { 0x030b, 0x0200000 }, 1161 { 0x030b, 0x0400000 }, 1162 { 0x030b, 0x0800000 }, 1163 { 0, 0 }, 1164 }; 1165 1166 uint32 _gdraw_chrs_any=ANY, _gdraw_chrs_ctlmask=GREEK, _gdraw_chrs_metamask=0; 1167