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