bidiMirroring.js (8468B)
1 // Pairs of mirrored characters from 2 // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt 3 var mirrors = [ 4 [0x0028, 0x0029], 5 [0x0029, 0x0028], 6 [0x003C, 0x003E], 7 [0x003E, 0x003C], 8 [0x005B, 0x005D], 9 [0x005D, 0x005B], 10 [0x007B, 0x007D], 11 [0x007D, 0x007B], 12 [0x00AB, 0x00BB], 13 [0x00BB, 0x00AB], 14 // These four are disabled as on Mac earlier than 10.7, Tibetan characters will 15 // not be used from the BitPattern.woff font due to lack of platform support. 16 // 17 // [0x0F3A, 0x0F3B], 18 // [0x0F3B, 0x0F3A], 19 // [0x0F3C, 0x0F3D], 20 // [0x0F3D, 0x0F3C], 21 [0x169B, 0x169C], 22 [0x169C, 0x169B], 23 [0x2039, 0x203A], 24 [0x203A, 0x2039], 25 [0x2045, 0x2046], 26 [0x2046, 0x2045], 27 [0x207D, 0x207E], 28 [0x207E, 0x207D], 29 [0x208D, 0x208E], 30 [0x208E, 0x208D], 31 [0x2208, 0x220B], 32 [0x2209, 0x220C], 33 [0x220A, 0x220D], 34 [0x220B, 0x2208], 35 [0x220C, 0x2209], 36 [0x220D, 0x220A], 37 [0x2215, 0x29F5], 38 [0x223C, 0x223D], 39 [0x223D, 0x223C], 40 [0x2243, 0x22CD], 41 [0x2252, 0x2253], 42 [0x2253, 0x2252], 43 [0x2254, 0x2255], 44 [0x2255, 0x2254], 45 [0x2264, 0x2265], 46 [0x2265, 0x2264], 47 [0x2266, 0x2267], 48 [0x2267, 0x2266], 49 [0x2268, 0x2269], 50 [0x2269, 0x2268], 51 [0x226A, 0x226B], 52 [0x226B, 0x226A], 53 [0x226E, 0x226F], 54 [0x226F, 0x226E], 55 [0x2270, 0x2271], 56 [0x2271, 0x2270], 57 [0x2272, 0x2273], 58 [0x2273, 0x2272], 59 [0x2274, 0x2275], 60 [0x2275, 0x2274], 61 [0x2276, 0x2277], 62 [0x2277, 0x2276], 63 [0x2278, 0x2279], 64 [0x2279, 0x2278], 65 [0x227A, 0x227B], 66 [0x227B, 0x227A], 67 [0x227C, 0x227D], 68 [0x227D, 0x227C], 69 [0x227E, 0x227F], 70 [0x227F, 0x227E], 71 [0x2280, 0x2281], 72 [0x2281, 0x2280], 73 [0x2282, 0x2283], 74 [0x2283, 0x2282], 75 [0x2284, 0x2285], 76 [0x2285, 0x2284], 77 [0x2286, 0x2287], 78 [0x2287, 0x2286], 79 [0x2288, 0x2289], 80 [0x2289, 0x2288], 81 [0x228A, 0x228B], 82 [0x228B, 0x228A], 83 [0x228F, 0x2290], 84 [0x2290, 0x228F], 85 [0x2291, 0x2292], 86 [0x2292, 0x2291], 87 [0x2298, 0x29B8], 88 [0x22A2, 0x22A3], 89 [0x22A3, 0x22A2], 90 [0x22A6, 0x2ADE], 91 [0x22A8, 0x2AE4], 92 [0x22A9, 0x2AE3], 93 [0x22AB, 0x2AE5], 94 [0x22B0, 0x22B1], 95 [0x22B1, 0x22B0], 96 [0x22B2, 0x22B3], 97 [0x22B3, 0x22B2], 98 [0x22B4, 0x22B5], 99 [0x22B5, 0x22B4], 100 [0x22B6, 0x22B7], 101 [0x22B7, 0x22B6], 102 [0x22C9, 0x22CA], 103 [0x22CA, 0x22C9], 104 [0x22CB, 0x22CC], 105 [0x22CC, 0x22CB], 106 [0x22CD, 0x2243], 107 [0x22D0, 0x22D1], 108 [0x22D1, 0x22D0], 109 [0x22D6, 0x22D7], 110 [0x22D7, 0x22D6], 111 [0x22D8, 0x22D9], 112 [0x22D9, 0x22D8], 113 [0x22DA, 0x22DB], 114 [0x22DB, 0x22DA], 115 [0x22DC, 0x22DD], 116 [0x22DD, 0x22DC], 117 [0x22DE, 0x22DF], 118 [0x22DF, 0x22DE], 119 [0x22E0, 0x22E1], 120 [0x22E1, 0x22E0], 121 [0x22E2, 0x22E3], 122 [0x22E3, 0x22E2], 123 [0x22E4, 0x22E5], 124 [0x22E5, 0x22E4], 125 [0x22E6, 0x22E7], 126 [0x22E7, 0x22E6], 127 [0x22E8, 0x22E9], 128 [0x22E9, 0x22E8], 129 [0x22EA, 0x22EB], 130 [0x22EB, 0x22EA], 131 [0x22EC, 0x22ED], 132 [0x22ED, 0x22EC], 133 [0x22F0, 0x22F1], 134 [0x22F1, 0x22F0], 135 [0x22F2, 0x22FA], 136 [0x22F3, 0x22FB], 137 [0x22F4, 0x22FC], 138 [0x22F6, 0x22FD], 139 [0x22F7, 0x22FE], 140 [0x22FA, 0x22F2], 141 [0x22FB, 0x22F3], 142 [0x22FC, 0x22F4], 143 [0x22FD, 0x22F6], 144 [0x22FE, 0x22F7], 145 [0x2308, 0x2309], 146 [0x2309, 0x2308], 147 [0x230A, 0x230B], 148 [0x230B, 0x230A], 149 [0x2329, 0x232A], 150 [0x232A, 0x2329], 151 [0x2768, 0x2769], 152 [0x2769, 0x2768], 153 [0x276A, 0x276B], 154 [0x276B, 0x276A], 155 [0x276C, 0x276D], 156 [0x276D, 0x276C], 157 [0x276E, 0x276F], 158 [0x276F, 0x276E], 159 [0x2770, 0x2771], 160 [0x2771, 0x2770], 161 [0x2772, 0x2773], 162 [0x2773, 0x2772], 163 [0x2774, 0x2775], 164 [0x2775, 0x2774], 165 [0x27C3, 0x27C4], 166 [0x27C4, 0x27C3], 167 [0x27C5, 0x27C6], 168 [0x27C6, 0x27C5], 169 [0x27C8, 0x27C9], 170 [0x27C9, 0x27C8], 171 [0x27CB, 0x27CD], 172 [0x27CD, 0x27CB], 173 [0x27D5, 0x27D6], 174 [0x27D6, 0x27D5], 175 [0x27DD, 0x27DE], 176 [0x27DE, 0x27DD], 177 [0x27E2, 0x27E3], 178 [0x27E3, 0x27E2], 179 [0x27E4, 0x27E5], 180 [0x27E5, 0x27E4], 181 [0x27E6, 0x27E7], 182 [0x27E7, 0x27E6], 183 [0x27E8, 0x27E9], 184 [0x27E9, 0x27E8], 185 [0x27EA, 0x27EB], 186 [0x27EB, 0x27EA], 187 [0x27EC, 0x27ED], 188 [0x27ED, 0x27EC], 189 [0x27EE, 0x27EF], 190 [0x27EF, 0x27EE], 191 [0x2983, 0x2984], 192 [0x2984, 0x2983], 193 [0x2985, 0x2986], 194 [0x2986, 0x2985], 195 [0x2987, 0x2988], 196 [0x2988, 0x2987], 197 [0x2989, 0x298A], 198 [0x298A, 0x2989], 199 [0x298B, 0x298C], 200 [0x298C, 0x298B], 201 [0x298D, 0x2990], 202 [0x298E, 0x298F], 203 [0x298F, 0x298E], 204 [0x2990, 0x298D], 205 [0x2991, 0x2992], 206 [0x2992, 0x2991], 207 [0x2993, 0x2994], 208 [0x2994, 0x2993], 209 [0x2995, 0x2996], 210 [0x2996, 0x2995], 211 [0x2997, 0x2998], 212 [0x2998, 0x2997], 213 [0x29B8, 0x2298], 214 [0x29C0, 0x29C1], 215 [0x29C1, 0x29C0], 216 [0x29C4, 0x29C5], 217 [0x29C5, 0x29C4], 218 [0x29CF, 0x29D0], 219 [0x29D0, 0x29CF], 220 [0x29D1, 0x29D2], 221 [0x29D2, 0x29D1], 222 [0x29D4, 0x29D5], 223 [0x29D5, 0x29D4], 224 [0x29D8, 0x29D9], 225 [0x29D9, 0x29D8], 226 [0x29DA, 0x29DB], 227 [0x29DB, 0x29DA], 228 [0x29F5, 0x2215], 229 [0x29F8, 0x29F9], 230 [0x29F9, 0x29F8], 231 [0x29FC, 0x29FD], 232 [0x29FD, 0x29FC], 233 [0x2A2B, 0x2A2C], 234 [0x2A2C, 0x2A2B], 235 [0x2A2D, 0x2A2E], 236 [0x2A2E, 0x2A2D], 237 [0x2A34, 0x2A35], 238 [0x2A35, 0x2A34], 239 [0x2A3C, 0x2A3D], 240 [0x2A3D, 0x2A3C], 241 [0x2A64, 0x2A65], 242 [0x2A65, 0x2A64], 243 [0x2A79, 0x2A7A], 244 [0x2A7A, 0x2A79], 245 [0x2A7D, 0x2A7E], 246 [0x2A7E, 0x2A7D], 247 [0x2A7F, 0x2A80], 248 [0x2A80, 0x2A7F], 249 [0x2A81, 0x2A82], 250 [0x2A82, 0x2A81], 251 [0x2A83, 0x2A84], 252 [0x2A84, 0x2A83], 253 [0x2A8B, 0x2A8C], 254 [0x2A8C, 0x2A8B], 255 [0x2A91, 0x2A92], 256 [0x2A92, 0x2A91], 257 [0x2A93, 0x2A94], 258 [0x2A94, 0x2A93], 259 [0x2A95, 0x2A96], 260 [0x2A96, 0x2A95], 261 [0x2A97, 0x2A98], 262 [0x2A98, 0x2A97], 263 [0x2A99, 0x2A9A], 264 [0x2A9A, 0x2A99], 265 [0x2A9B, 0x2A9C], 266 [0x2A9C, 0x2A9B], 267 [0x2AA1, 0x2AA2], 268 [0x2AA2, 0x2AA1], 269 [0x2AA6, 0x2AA7], 270 [0x2AA7, 0x2AA6], 271 [0x2AA8, 0x2AA9], 272 [0x2AA9, 0x2AA8], 273 [0x2AAA, 0x2AAB], 274 [0x2AAB, 0x2AAA], 275 [0x2AAC, 0x2AAD], 276 [0x2AAD, 0x2AAC], 277 [0x2AAF, 0x2AB0], 278 [0x2AB0, 0x2AAF], 279 [0x2AB3, 0x2AB4], 280 [0x2AB4, 0x2AB3], 281 [0x2ABB, 0x2ABC], 282 [0x2ABC, 0x2ABB], 283 [0x2ABD, 0x2ABE], 284 [0x2ABE, 0x2ABD], 285 [0x2ABF, 0x2AC0], 286 [0x2AC0, 0x2ABF], 287 [0x2AC1, 0x2AC2], 288 [0x2AC2, 0x2AC1], 289 [0x2AC3, 0x2AC4], 290 [0x2AC4, 0x2AC3], 291 [0x2AC5, 0x2AC6], 292 [0x2AC6, 0x2AC5], 293 [0x2ACD, 0x2ACE], 294 [0x2ACE, 0x2ACD], 295 [0x2ACF, 0x2AD0], 296 [0x2AD0, 0x2ACF], 297 [0x2AD1, 0x2AD2], 298 [0x2AD2, 0x2AD1], 299 [0x2AD3, 0x2AD4], 300 [0x2AD4, 0x2AD3], 301 [0x2AD5, 0x2AD6], 302 [0x2AD6, 0x2AD5], 303 [0x2ADE, 0x22A6], 304 [0x2AE3, 0x22A9], 305 [0x2AE4, 0x22A8], 306 [0x2AE5, 0x22AB], 307 [0x2AEC, 0x2AED], 308 [0x2AED, 0x2AEC], 309 [0x2AF7, 0x2AF8], 310 [0x2AF8, 0x2AF7], 311 [0x2AF9, 0x2AFA], 312 [0x2AFA, 0x2AF9], 313 [0x2E02, 0x2E03], 314 [0x2E03, 0x2E02], 315 [0x2E04, 0x2E05], 316 [0x2E05, 0x2E04], 317 [0x2E09, 0x2E0A], 318 [0x2E0A, 0x2E09], 319 [0x2E0C, 0x2E0D], 320 [0x2E0D, 0x2E0C], 321 [0x2E1C, 0x2E1D], 322 [0x2E1D, 0x2E1C], 323 [0x2E20, 0x2E21], 324 [0x2E21, 0x2E20], 325 [0x2E22, 0x2E23], 326 [0x2E23, 0x2E22], 327 [0x2E24, 0x2E25], 328 [0x2E25, 0x2E24], 329 [0x2E26, 0x2E27], 330 [0x2E27, 0x2E26], 331 [0x2E28, 0x2E29], 332 [0x2E29, 0x2E28], 333 [0x3008, 0x3009], 334 [0x3009, 0x3008], 335 [0x300A, 0x300B], 336 [0x300B, 0x300A], 337 [0x300C, 0x300D], 338 [0x300D, 0x300C], 339 [0x300E, 0x300F], 340 [0x300F, 0x300E], 341 [0x3010, 0x3011], 342 [0x3011, 0x3010], 343 [0x3014, 0x3015], 344 [0x3015, 0x3014], 345 [0x3016, 0x3017], 346 [0x3017, 0x3016], 347 [0x3018, 0x3019], 348 [0x3019, 0x3018], 349 [0x301A, 0x301B], 350 [0x301B, 0x301A], 351 [0xFE59, 0xFE5A], 352 [0xFE5A, 0xFE59], 353 [0xFE5B, 0xFE5C], 354 [0xFE5C, 0xFE5B], 355 [0xFE5D, 0xFE5E], 356 [0xFE5E, 0xFE5D], 357 [0xFE64, 0xFE65], 358 [0xFE65, 0xFE64], 359 [0xFF08, 0xFF09], 360 [0xFF09, 0xFF08], 361 [0xFF1C, 0xFF1E], 362 [0xFF1E, 0xFF1C], 363 [0xFF3B, 0xFF3D], 364 [0xFF3D, 0xFF3B], 365 [0xFF5B, 0xFF5D], 366 [0xFF5D, 0xFF5B], 367 [0xFF5F, 0xFF60], 368 [0xFF60, 0xFF5F], 369 [0xFF62, 0xFF63], 370 [0xFF63, 0xFF62] 371 ]; 372 373 function show(attributes, text) { 374 var e = document.createElementNS("http://www.w3.org/2000/svg", "text"); 375 for (var name in attributes) { 376 e.setAttribute(name, attributes[name]); 377 } 378 e.textContent = text; 379 document.documentElement.appendChild(e); 380 } 381 382 function showCharacters(isReference) { 383 var row = 0, col = 0; 384 for (var i = 0; i < mirrors.length; i++) { 385 show({ x: col * 50 + 30, 386 y: row * 30 + 30, 387 direction: isReference ? "ltr" : "rtl", 388 "unicode-bidi": "embed", 389 "text-anchor": "middle", 390 "font-family": "BitPattern", 391 "font-size": "40px" }, 392 String.fromCharCode(mirrors[i][isReference ? 0 : 1])); 393 if (++col == 16) { 394 col = 0; 395 row++; 396 } 397 } 398 document.documentElement.removeAttribute("class"); 399 } 400 401 function test() { 402 showCharacters(false); 403 } 404 405 function reference() { 406 showCharacters(true); 407 }