AnselInputStreamReader.java |
1 /**************************************************************************** 2 * This demo file is part of yFiles for Java 2.14. 3 * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28, 4 * 72070 Tuebingen, Germany. All rights reserved. 5 * 6 * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution 7 * of demo files in source code or binary form, with or without 8 * modification, is not permitted. 9 * 10 * Owners of a valid software license for a yFiles for Java version that this 11 * demo is shipped with are allowed to use the demo source code as basis 12 * for their own yFiles for Java powered applications. Use of such programs is 13 * governed by the rights and conditions as set out in the yFiles for Java 14 * license agreement. 15 * 16 * THIS SOFTWARE IS PROVIDED ''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 19 * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 ***************************************************************************/ 28 package demo.layout.genealogy.iohandler; 29 30 import java.io.InputStreamReader; 31 import java.io.InputStream; 32 import java.io.IOException; 33 34 public class AnselInputStreamReader extends InputStreamReader { 35 private InputStream input; 36 private int pending; 37 38 public AnselInputStreamReader(InputStream in) 39 throws IOException { 40 super(in); 41 input = in; 42 pending = input.read(); // we read one character ahead to cope 43 // with non-spacing diacriticals 44 } 45 46 /* 47 * Return one UNICODE character 48 */ 49 50 public int read() throws IOException 51 { 52 int b = pending; 53 if (b<0) return b; // return EOF unchanged 54 pending = input.read(); 55 if (b<128) return b; // return ASCII characters unchanged 56 57 // try to match two ansel chars if we can 58 if (pending>0 && b>=0xE0 && b<=0xFF) { 59 int u = convert2(b*256 + pending); 60 if (u>0) { 61 pending = input.read(); 62 return u; 63 } 64 } 65 // else match one char 66 return(convert1(b)); 67 } 68 69 /* 70 * Fill a supplied buffer with UNICODE characters 71 */ 72 73 public int read(char[] cbuf, int off, int len) 74 throws IOException 75 { 76 if (pending<0) return -1; // have already hit EOF 77 for (int i=off; i<off+len; i++) { 78 int c = read(); 79 if (c<0) return i-off; 80 cbuf[off+i] = (char)c; 81 } 82 return len; 83 } 84 85 /* 86 * Determine the character code in use 87 */ 88 89 public String getEncoding() { 90 return "ANSEL"; 91 } 92 93 /* 94 * Conversion table for ANSEL characters coded in one byte 95 */ 96 97 private int convert1( int ansel ) 98 { 99 switch(ansel) { 100 case 0x8D: return 0x200D; // zero width joiner 101 case 0x8E: return 0x200C; // zero width non-joiner 102 case 0xA1: return 0x0141; // capital L with stroke 103 case 0xA2: return 0x00D8; // capital O with oblique stroke 104 // case 0xA3: return 0x0110; capital D with stroke 105 case 0xA3: return 0x00D0; // capital icelandic letter Eth 106 case 0xA4: return 0x00DE; // capital Icelandic letter Thorn 107 case 0xA5: return 0x00C6; // capital diphthong A with E 108 case 0xA6: return 0x0152; // capital ligature OE 109 case 0xA7: return 0x02B9; // modified letter prime 110 case 0xA8: return 0x00B7; // middle dot 111 case 0xA9: return 0x266D; // music flat sign 112 case 0xAA: return 0x00AE; // registered trade mark sign 113 case 0xAB: return 0x00B1; // plus-minus sign 114 case 0xAC: return 0x01A0; // capital O with horn 115 case 0xAD: return 0x01AF; // capital U with horn 116 case 0xAE: return 0x02BE; // modifier letter right half ring 117 case 0xB0: return 0x02BF; // modifier letter left half ring 118 case 0xB1: return 0x0142; // small l with stroke 119 case 0xB2: return 0x00F8; // small o with oblique stroke 120 case 0xB3: return 0x0111; // small D with stroke 121 case 0xB4: return 0x00FE; // small Icelandic letter Thorn 122 case 0xB5: return 0x00E6; // small diphthong a with e 123 case 0xB6: return 0x0153; // small ligature OE 124 case 0xB7: return 0x02BA; // modified letter double prime 125 case 0xB8: return 0x0131; // small dotless i 126 case 0xB9: return 0x00A3; // pound sign 127 case 0xBA: return 0x00F0; // small Icelandic letter Eth 128 case 0xBC: return 0x01A1; // small o with horn 129 case 0xBD: return 0x01B0; // small u with horn 130 case 0xC0: return 0x00B0; // degree sign, ring above 131 case 0xC1: return 0x2113; // script small l 132 case 0xC2: return 0x2117; // sound recording copyright 133 case 0xC3: return 0x00A9; // copyright sign 134 case 0xC4: return 0x266F; // music sharp sign 135 case 0xC5: return 0x00BF; // inverted question mark 136 case 0xC6: return 0x00A1; // inverted exclamation mark 137 case 0xCF: return 0x00DF; // small German letter sharp s 138 case 0xE0: return 0x0309; // hook above 139 case 0xE1: return 0x0300; // grave accent 140 case 0xE2: return 0x0301; // acute accent 141 case 0xE3: return 0x0302; // circumflex accent 142 case 0xE4: return 0x0303; // tilde 143 case 0xE5: return 0x0304; // combining macron 144 case 0xE6: return 0x0306; // breve 145 case 0xE7: return 0x0307; // dot above 146 case 0xE9: return 0x030C; // caron 147 case 0xEA: return 0x030A; // ring above 148 case 0xEB: return 0xFE20; // ligature left half 149 case 0xEC: return 0xFE21; // ligature right half 150 case 0xED: return 0x0315; // comma above right 151 case 0xEE: return 0x030B; // double acute accent 152 case 0xEF: return 0x0310; // candrabindu 153 case 0xF0: return 0x0327; // combining cedilla 154 case 0xF1: return 0x0328; // ogonek 155 case 0xF2: return 0x0323; // dot below 156 case 0xF3: return 0x0324; // diaeresis below 157 case 0xF4: return 0x0325; // ring below 158 case 0xF5: return 0x0333; // double low line 159 case 0xF6: return 0x0332; // low line (= line below?) 160 case 0xF7: return 0x0326; // comma below 161 case 0xF8: return 0x031C; // combining half ring below 162 case 0xF9: return 0x032E; // breve below 163 case 0xFA: return 0xFE22; // double tilde left half 164 case 0xFB: return 0xFE23; // double tilde right half 165 case 0xFE: return 0x0313; // comma above 166 167 default: return 0xFFFD; // if no match, use Unicode REPLACEMENT CHARACTER 168 } //end switch 169 } 170 171 /* 172 * Conversion table for ANSEL characters coded in two bytes 173 */ 174 175 private int convert2( int ansel ) 176 { 177 switch(ansel) { 178 case 0xE041: return 0x1EA2; // capital a with hook above 179 case 0xE045: return 0x1EBA; // capital e with hook above 180 case 0xE049: return 0x1EC8; // capital i with hook above 181 case 0xE04F: return 0x1ECE; // capital o with hook above 182 case 0xE055: return 0x1EE6; // capital u with hook above 183 case 0xE059: return 0x1EF6; // capital y with hook above 184 case 0xE061: return 0x1EA3; // small a with hook above 185 case 0xE065: return 0x1EBB; // small e with hook above 186 case 0xE069: return 0x1EC9; // small i with hook above 187 case 0xE06F: return 0x1ECF; // small o with hook above 188 case 0xE075: return 0x1EE7; // small u with hook above 189 case 0xE079: return 0x1EF7; // small y with hook above 190 case 0xE141: return 0x00C0; // capital A with grave accent 191 case 0xE145: return 0x00C8; // capital E with grave accent 192 case 0xE149: return 0x00CC; // capital I with grave accent 193 case 0xE14F: return 0x00D2; // capital O with grave accent 194 case 0xE155: return 0x00D9; // capital U with grave accent 195 case 0xE157: return 0x1E80; // capital w with grave 196 case 0xE159: return 0x1EF2; // capital y with grave 197 case 0xE161: return 0x00E0; // small a with grave accent 198 case 0xE165: return 0x00E8; // small e with grave accent 199 case 0xE169: return 0x00EC; // small i with grave accent 200 case 0xE16F: return 0x00F2; // small o with grave accent 201 case 0xE175: return 0x00F9; // small u with grave accent 202 case 0xE177: return 0x1E81; // small w with grave 203 case 0xE179: return 0x1EF3; // small y with grave 204 case 0xE241: return 0x00C1; // capital A with acute accent 205 case 0xE243: return 0x0106; // capital C with acute accent 206 case 0xE245: return 0x00C9; // capital E with acute accent 207 case 0xE247: return 0x01F4; // capital g with acute 208 case 0xE249: return 0x00CD; // capital I with acute accent 209 case 0xE24B: return 0x1E30; // capital k with acute 210 case 0xE24C: return 0x0139; // capital L with acute accent 211 case 0xE24D: return 0x1E3E; // capital m with acute 212 case 0xE24E: return 0x0143; // capital N with acute accent 213 case 0xE24F: return 0x00D3; // capital O with acute accent 214 case 0xE250: return 0x1E54; // capital p with acute 215 case 0xE252: return 0x0154; // capital R with acute accent 216 case 0xE253: return 0x015A; // capital S with acute accent 217 case 0xE255: return 0x00DA; // capital U with acute accent 218 case 0xE257: return 0x1E82; // capital w with acute 219 case 0xE259: return 0x00DD; // capital Y with acute accent 220 case 0xE25A: return 0x0179; // capital Z with acute accent 221 case 0xE261: return 0x00E1; // small a with acute accent 222 case 0xE263: return 0x0107; // small c with acute accent 223 case 0xE265: return 0x00E9; // small e with acute accent 224 case 0xE267: return 0x01F5; // small g with acute 225 case 0xE269: return 0x00ED; // small i with acute accent 226 case 0xE26B: return 0x1E31; // small k with acute 227 case 0xE26C: return 0x013A; // small l with acute accent 228 case 0xE26D: return 0x1E3F; // small m with acute 229 case 0xE26E: return 0x0144; // small n with acute accent 230 case 0xE26F: return 0x00F3; // small o with acute accent 231 case 0xE270: return 0x1E55; // small p with acute 232 case 0xE272: return 0x0155; // small r with acute accent 233 case 0xE273: return 0x015B; // small s with acute accent 234 case 0xE275: return 0x00FA; // small u with acute accent 235 case 0xE277: return 0x1E83; // small w with acute 236 case 0xE279: return 0x00FD; // small y with acute accent 237 case 0xE27A: return 0x017A; // small z with acute accent 238 case 0xE2A5: return 0x01FC; // capital ae with acute 239 case 0xE2B5: return 0x01FD; // small ae with acute 240 case 0xE341: return 0x00C2; // capital A with circumflex accent 241 case 0xE343: return 0x0108; // capital c with circumflex 242 case 0xE345: return 0x00CA; // capital E with circumflex accent 243 case 0xE347: return 0x011C; // capital g with circumflex 244 case 0xE348: return 0x0124; // capital h with circumflex 245 case 0xE349: return 0x00CE; // capital I with circumflex accent 246 case 0xE34A: return 0x0134; // capital j with circumflex 247 case 0xE34F: return 0x00D4; // capital O with circumflex accent 248 case 0xE353: return 0x015C; // capital s with circumflex 249 case 0xE355: return 0x00DB; // capital U with circumflex 250 case 0xE357: return 0x0174; // capital w with circumflex 251 case 0xE359: return 0x0176; // capital y with circumflex 252 case 0xE35A: return 0x1E90; // capital z with circumflex 253 case 0xE361: return 0x00E2; // small a with circumflex accent 254 case 0xE363: return 0x0109; // small c with circumflex 255 case 0xE365: return 0x00EA; // small e with circumflex accent 256 case 0xE367: return 0x011D; // small g with circumflex 257 case 0xE368: return 0x0125; // small h with circumflex 258 case 0xE369: return 0x00EE; // small i with circumflex accent 259 case 0xE36A: return 0x0135; // small j with circumflex 260 case 0xE36F: return 0x00F4; // small o with circumflex accent 261 case 0xE373: return 0x015D; // small s with circumflex 262 case 0xE375: return 0x00FB; // small u with circumflex 263 case 0xE377: return 0x0175; // small w with circumflex 264 case 0xE379: return 0x0177; // small y with circumflex 265 case 0xE37A: return 0x1E91; // small z with circumflex 266 case 0xE441: return 0x00C3; // capital A with tilde 267 case 0xE445: return 0x1EBC; // capital e with tilde 268 case 0xE449: return 0x0128; // capital i with tilde 269 case 0xE44E: return 0x00D1; // capital N with tilde 270 case 0xE44F: return 0x00D5; // capital O with tilde 271 case 0xE455: return 0x0168; // capital u with tilde 272 case 0xE456: return 0x1E7C; // capital v with tilde 273 case 0xE459: return 0x1EF8; // capital y with tilde 274 case 0xE461: return 0x00E3; // small a with tilde 275 case 0xE465: return 0x1EBD; // small e with tilde 276 case 0xE469: return 0x0129; // small i with tilde 277 case 0xE46E: return 0x00F1; // small n with tilde 278 case 0xE46F: return 0x00F5; // small o with tilde 279 case 0xE475: return 0x0169; // small u with tilde 280 case 0xE476: return 0x1E7D; // small v with tilde 281 case 0xE479: return 0x1EF9; // small y with tilde 282 case 0xE541: return 0x0100; // capital a with macron 283 case 0xE545: return 0x0112; // capital e with macron 284 case 0xE547: return 0x1E20; // capital g with macron 285 case 0xE549: return 0x012A; // capital i with macron 286 case 0xE54F: return 0x014C; // capital o with macron 287 case 0xE555: return 0x016A; // capital u with macron 288 case 0xE561: return 0x0101; // small a with macron 289 case 0xE565: return 0x0113; // small e with macron 290 case 0xE567: return 0x1E21; // small g with macron 291 case 0xE569: return 0x012B; // small i with macron 292 case 0xE56F: return 0x014D; // small o with macron 293 case 0xE575: return 0x016B; // small u with macron 294 case 0xE5A5: return 0x01E2; // capital ae with macron 295 case 0xE5B5: return 0x01E3; // small ae with macron 296 case 0xE641: return 0x0102; // capital A with breve 297 case 0xE645: return 0x0114; // capital e with breve 298 case 0xE647: return 0x011E; // capital g with breve 299 case 0xE649: return 0x012C; // capital i with breve 300 case 0xE64F: return 0x014E; // capital o with breve 301 case 0xE655: return 0x016C; // capital u with breve 302 case 0xE661: return 0x0103; // small a with breve 303 case 0xE665: return 0x0115; // small e with breve 304 case 0xE667: return 0x011F; // small g with breve 305 case 0xE669: return 0x012D; // small i with breve 306 case 0xE66F: return 0x014F; // small o with breve 307 case 0xE675: return 0x016D; // small u with breve 308 case 0xE742: return 0x1E02; // capital b with dot above 309 case 0xE743: return 0x010A; // capital c with dot above 310 case 0xE744: return 0x1E0A; // capital d with dot above 311 case 0xE745: return 0x0116; // capital e with dot above 312 case 0xE746: return 0x1E1E; // capital f with dot above 313 case 0xE747: return 0x0120; // capital g with dot above 314 case 0xE748: return 0x1E22; // capital h with dot above 315 case 0xE749: return 0x0130; // capital i with dot above 316 case 0xE74D: return 0x1E40; // capital m with dot above 317 case 0xE74E: return 0x1E44; // capital n with dot above 318 case 0xE750: return 0x1E56; // capital p with dot above 319 case 0xE752: return 0x1E58; // capital r with dot above 320 case 0xE753: return 0x1E60; // capital s with dot above 321 case 0xE754: return 0x1E6A; // capital t with dot above 322 case 0xE757: return 0x1E86; // capital w with dot above 323 case 0xE758: return 0x1E8A; // capital x with dot above 324 case 0xE759: return 0x1E8E; // capital y with dot above 325 case 0xE75A: return 0x017B; // capital Z with dot above 326 case 0xE762: return 0x1E03; // small b with dot above 327 case 0xE763: return 0x010B; // small c with dot above 328 case 0xE764: return 0x1E0B; // small d with dot above 329 case 0xE765: return 0x0117; // small e with dot above 330 case 0xE766: return 0x1E1F; // small f with dot above 331 case 0xE767: return 0x0121; // small g with dot above 332 case 0xE768: return 0x1E23; // small h with dot above 333 case 0xE76D: return 0x1E41; // small m with dot above 334 case 0xE76E: return 0x1E45; // small n with dot above 335 case 0xE770: return 0x1E57; // small p with dot above 336 case 0xE772: return 0x1E59; // small r with dot above 337 case 0xE773: return 0x1E61; // small s with dot above 338 case 0xE774: return 0x1E6B; // small t with dot above 339 case 0xE777: return 0x1E87; // small w with dot above 340 case 0xE778: return 0x1E8B; // small x with dot above 341 case 0xE779: return 0x1E8F; // small y with dot above 342 case 0xE77A: return 0x017C; // small z with dot above 343 case 0xE841: return 0x00C4; // capital A with diaeresis 344 case 0xE845: return 0x00CB; // capital E with diaeresis 345 case 0xE848: return 0x1E26; // capital h with diaeresis 346 case 0xE849: return 0x00CF; // capital I with diaeresis 347 case 0xE84F: return 0x00D6; // capital O with diaeresis 348 case 0xE855: return 0x00DC; // capital U with diaeresis 349 case 0xE857: return 0x1E84; // capital w with diaeresis 350 case 0xE858: return 0x1E8C; // capital x with diaeresis 351 case 0xE859: return 0x0178; // capital y with diaeresis 352 case 0xE861: return 0x00E4; // small a with diaeresis 353 case 0xE865: return 0x00EB; // small e with diaeresis 354 case 0xE868: return 0x1E27; // small h with diaeresis 355 case 0xE869: return 0x00EF; // small i with diaeresis 356 case 0xE86F: return 0x00F6; // small o with diaeresis 357 case 0xE874: return 0x1E97; // small t with diaeresis 358 case 0xE875: return 0x00FC; // small u with diaeresis 359 case 0xE877: return 0x1E85; // small w with diaeresis 360 case 0xE878: return 0x1E8D; // small x with diaeresis 361 case 0xE879: return 0x00FF; // small y with diaeresis 362 case 0xE941: return 0x01CD; // capital a with caron 363 case 0xE943: return 0x010C; // capital C with caron 364 case 0xE944: return 0x010E; // capital D with caron 365 case 0xE945: return 0x011A; // capital E with caron 366 case 0xE947: return 0x01E6; // capital g with caron 367 case 0xE949: return 0x01CF; // capital i with caron 368 case 0xE94B: return 0x01E8; // capital k with caron 369 case 0xE94C: return 0x013D; // capital L with caron 370 case 0xE94E: return 0x0147; // capital N with caron 371 case 0xE94F: return 0x01D1; // capital o with caron 372 case 0xE952: return 0x0158; // capital R with caron 373 case 0xE953: return 0x0160; // capital S with caron 374 case 0xE954: return 0x0164; // capital T with caron 375 case 0xE955: return 0x01D3; // capital u with caron 376 case 0xE95A: return 0x017D; // capital Z with caron 377 case 0xE961: return 0x01CE; // small a with caron 378 case 0xE963: return 0x010D; // small c with caron 379 case 0xE964: return 0x010F; // small d with caron 380 case 0xE965: return 0x011B; // small e with caron 381 case 0xE967: return 0x01E7; // small g with caron 382 case 0xE969: return 0x01D0; // small i with caron 383 case 0xE96A: return 0x01F0; // small j with caron 384 case 0xE96B: return 0x01E9; // small k with caron 385 case 0xE96C: return 0x013E; // small l with caron 386 case 0xE96E: return 0x0148; // small n with caron 387 case 0xE96F: return 0x01D2; // small o with caron 388 case 0xE972: return 0x0159; // small r with caron 389 case 0xE973: return 0x0161; // small s with caron 390 case 0xE974: return 0x0165; // small t with caron 391 case 0xE975: return 0x01D4; // small u with caron 392 case 0xE97A: return 0x017E; // small z with caron 393 case 0xEA41: return 0x00C5; // capital A with ring above 394 case 0xEA61: return 0x00E5; // small a with ring above 395 case 0xEA75: return 0x016F; // small u with ring above 396 case 0xEA77: return 0x1E98; // small w with ring above 397 case 0xEA79: return 0x1E99; // small y with ring above 398 case 0xEAAD: return 0x016E; // capital U with ring above 399 case 0xEE4F: return 0x0150; // capital O with double acute 400 case 0xEE55: return 0x0170; // capital U with double acute 401 case 0xEE6F: return 0x0151; // small o with double acute 402 case 0xEE75: return 0x0171; // small u with double acute 403 case 0xF020: return 0x00B8; // cedilla 404 case 0xF043: return 0x00C7; // capital C with cedilla 405 case 0xF044: return 0x1E10; // capital d with cedilla 406 case 0xF047: return 0x0122; // capital g with cedilla 407 case 0xF048: return 0x1E28; // capital h with cedilla 408 case 0xF04B: return 0x0136; // capital k with cedilla 409 case 0xF04C: return 0x013B; // capital l with cedilla 410 case 0xF04E: return 0x0145; // capital n with cedilla 411 case 0xF052: return 0x0156; // capital r with cedilla 412 case 0xF053: return 0x015E; // capital S with cedilla 413 case 0xF054: return 0x0162; // capital T with cedilla 414 case 0xF063: return 0x00E7; // small c with cedilla 415 case 0xF064: return 0x1E11; // small d with cedilla 416 case 0xF067: return 0x0123; // small g with cedilla 417 case 0xF068: return 0x1E29; // small h with cedilla 418 case 0xF06B: return 0x0137; // small k with cedilla 419 case 0xF06C: return 0x013C; // small l with cedilla 420 case 0xF06E: return 0x0146; // small n with cedilla 421 case 0xF072: return 0x0157; // small r with cedilla 422 case 0xF073: return 0x015F; // small s with cedilla 423 case 0xF074: return 0x0163; // small t with cedilla 424 case 0xF141: return 0x0104; // capital A with ogonek 425 case 0xF145: return 0x0118; // capital E with ogonek 426 case 0xF149: return 0x012E; // capital i with ogonek 427 case 0xF14F: return 0x01EA; // capital o with ogonek 428 case 0xF155: return 0x0172; // capital u with ogonek 429 case 0xF161: return 0x0105; // small a with ogonek 430 case 0xF165: return 0x0119; // small e with ogonek 431 case 0xF169: return 0x012F; // small i with ogonek 432 case 0xF16F: return 0x01EB; // small o with ogonek 433 case 0xF175: return 0x0173; // small u with ogonek 434 case 0xF241: return 0x1EA0; // capital a with dot below 435 case 0xF242: return 0x1E04; // capital b with dot below 436 case 0xF244: return 0x1E0C; // capital d with dot below 437 case 0xF245: return 0x1EB8; // capital e with dot below 438 case 0xF248: return 0x1E24; // capital h with dot below 439 case 0xF249: return 0x1ECA; // capital i with dot below 440 case 0xF24B: return 0x1E32; // capital k with dot below 441 case 0xF24C: return 0x1E36; // capital l with dot below 442 case 0xF24D: return 0x1E42; // capital m with dot below 443 case 0xF24E: return 0x1E46; // capital n with dot below 444 case 0xF24F: return 0x1ECC; // capital o with dot below 445 case 0xF252: return 0x1E5A; // capital r with dot below 446 case 0xF253: return 0x1E62; // capital s with dot below 447 case 0xF254: return 0x1E6C; // capital t with dot below 448 case 0xF255: return 0x1EE4; // capital u with dot below 449 case 0xF256: return 0x1E7E; // capital v with dot below 450 case 0xF257: return 0x1E88; // capital w with dot below 451 case 0xF259: return 0x1EF4; // capital y with dot below 452 case 0xF25A: return 0x1E92; // capital z with dot below 453 case 0xF261: return 0x1EA1; // small a with dot below 454 case 0xF262: return 0x1E05; // small b with dot below 455 case 0xF264: return 0x1E0D; // small d with dot below 456 case 0xF265: return 0x1EB9; // small e with dot below 457 case 0xF268: return 0x1E25; // small h with dot below 458 case 0xF269: return 0x1ECB; // small i with dot below 459 case 0xF26B: return 0x1E33; // small k with dot below 460 case 0xF26C: return 0x1E37; // small l with dot below 461 case 0xF26D: return 0x1E43; // small m with dot below 462 case 0xF26E: return 0x1E47; // small n with dot below 463 case 0xF26F: return 0x1ECD; // small o with dot below 464 case 0xF272: return 0x1E5B; // small r with dot below 465 case 0xF273: return 0x1E63; // small s with dot below 466 case 0xF274: return 0x1E6D; // small t with dot below 467 case 0xF275: return 0x1EE5; // small u with dot below 468 case 0xF276: return 0x1E7F; // small v with dot below 469 case 0xF277: return 0x1E89; // small w with dot below 470 case 0xF279: return 0x1EF5; // small y with dot below 471 case 0xF27A: return 0x1E93; // small z with dot below 472 case 0xF355: return 0x1E72; // capital u with diaeresis below 473 case 0xF375: return 0x1E73; // small u with diaeresis below 474 case 0xF441: return 0x1E00; // capital a with ring below 475 case 0xF461: return 0x1E01; // small a with ring below 476 case 0xF948: return 0x1E2A; // capital h with breve below 477 case 0xF968: return 0x1E2B; // small h with breve below 478 479 default: return -1; 480 } //end switch 481 } 482 483 } 484