1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/reftests/bidi/bidiMirroring.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,407 @@ 1.4 +// Pairs of mirrored characters from 1.5 +// http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt 1.6 +var mirrors = [ 1.7 + [0x0028, 0x0029], 1.8 + [0x0029, 0x0028], 1.9 + [0x003C, 0x003E], 1.10 + [0x003E, 0x003C], 1.11 + [0x005B, 0x005D], 1.12 + [0x005D, 0x005B], 1.13 + [0x007B, 0x007D], 1.14 + [0x007D, 0x007B], 1.15 + [0x00AB, 0x00BB], 1.16 + [0x00BB, 0x00AB], 1.17 +// These four are disabled as on Mac earlier than 10.7, Tibetan characters will 1.18 +// not be used from the BitPattern.woff font due to lack of platform support. 1.19 +// 1.20 +// [0x0F3A, 0x0F3B], 1.21 +// [0x0F3B, 0x0F3A], 1.22 +// [0x0F3C, 0x0F3D], 1.23 +// [0x0F3D, 0x0F3C], 1.24 + [0x169B, 0x169C], 1.25 + [0x169C, 0x169B], 1.26 + [0x2039, 0x203A], 1.27 + [0x203A, 0x2039], 1.28 + [0x2045, 0x2046], 1.29 + [0x2046, 0x2045], 1.30 + [0x207D, 0x207E], 1.31 + [0x207E, 0x207D], 1.32 + [0x208D, 0x208E], 1.33 + [0x208E, 0x208D], 1.34 + [0x2208, 0x220B], 1.35 + [0x2209, 0x220C], 1.36 + [0x220A, 0x220D], 1.37 + [0x220B, 0x2208], 1.38 + [0x220C, 0x2209], 1.39 + [0x220D, 0x220A], 1.40 + [0x2215, 0x29F5], 1.41 + [0x223C, 0x223D], 1.42 + [0x223D, 0x223C], 1.43 + [0x2243, 0x22CD], 1.44 + [0x2252, 0x2253], 1.45 + [0x2253, 0x2252], 1.46 + [0x2254, 0x2255], 1.47 + [0x2255, 0x2254], 1.48 + [0x2264, 0x2265], 1.49 + [0x2265, 0x2264], 1.50 + [0x2266, 0x2267], 1.51 + [0x2267, 0x2266], 1.52 + [0x2268, 0x2269], 1.53 + [0x2269, 0x2268], 1.54 + [0x226A, 0x226B], 1.55 + [0x226B, 0x226A], 1.56 + [0x226E, 0x226F], 1.57 + [0x226F, 0x226E], 1.58 + [0x2270, 0x2271], 1.59 + [0x2271, 0x2270], 1.60 + [0x2272, 0x2273], 1.61 + [0x2273, 0x2272], 1.62 + [0x2274, 0x2275], 1.63 + [0x2275, 0x2274], 1.64 + [0x2276, 0x2277], 1.65 + [0x2277, 0x2276], 1.66 + [0x2278, 0x2279], 1.67 + [0x2279, 0x2278], 1.68 + [0x227A, 0x227B], 1.69 + [0x227B, 0x227A], 1.70 + [0x227C, 0x227D], 1.71 + [0x227D, 0x227C], 1.72 + [0x227E, 0x227F], 1.73 + [0x227F, 0x227E], 1.74 + [0x2280, 0x2281], 1.75 + [0x2281, 0x2280], 1.76 + [0x2282, 0x2283], 1.77 + [0x2283, 0x2282], 1.78 + [0x2284, 0x2285], 1.79 + [0x2285, 0x2284], 1.80 + [0x2286, 0x2287], 1.81 + [0x2287, 0x2286], 1.82 + [0x2288, 0x2289], 1.83 + [0x2289, 0x2288], 1.84 + [0x228A, 0x228B], 1.85 + [0x228B, 0x228A], 1.86 + [0x228F, 0x2290], 1.87 + [0x2290, 0x228F], 1.88 + [0x2291, 0x2292], 1.89 + [0x2292, 0x2291], 1.90 + [0x2298, 0x29B8], 1.91 + [0x22A2, 0x22A3], 1.92 + [0x22A3, 0x22A2], 1.93 + [0x22A6, 0x2ADE], 1.94 + [0x22A8, 0x2AE4], 1.95 + [0x22A9, 0x2AE3], 1.96 + [0x22AB, 0x2AE5], 1.97 + [0x22B0, 0x22B1], 1.98 + [0x22B1, 0x22B0], 1.99 + [0x22B2, 0x22B3], 1.100 + [0x22B3, 0x22B2], 1.101 + [0x22B4, 0x22B5], 1.102 + [0x22B5, 0x22B4], 1.103 + [0x22B6, 0x22B7], 1.104 + [0x22B7, 0x22B6], 1.105 + [0x22C9, 0x22CA], 1.106 + [0x22CA, 0x22C9], 1.107 + [0x22CB, 0x22CC], 1.108 + [0x22CC, 0x22CB], 1.109 + [0x22CD, 0x2243], 1.110 + [0x22D0, 0x22D1], 1.111 + [0x22D1, 0x22D0], 1.112 + [0x22D6, 0x22D7], 1.113 + [0x22D7, 0x22D6], 1.114 + [0x22D8, 0x22D9], 1.115 + [0x22D9, 0x22D8], 1.116 + [0x22DA, 0x22DB], 1.117 + [0x22DB, 0x22DA], 1.118 + [0x22DC, 0x22DD], 1.119 + [0x22DD, 0x22DC], 1.120 + [0x22DE, 0x22DF], 1.121 + [0x22DF, 0x22DE], 1.122 + [0x22E0, 0x22E1], 1.123 + [0x22E1, 0x22E0], 1.124 + [0x22E2, 0x22E3], 1.125 + [0x22E3, 0x22E2], 1.126 + [0x22E4, 0x22E5], 1.127 + [0x22E5, 0x22E4], 1.128 + [0x22E6, 0x22E7], 1.129 + [0x22E7, 0x22E6], 1.130 + [0x22E8, 0x22E9], 1.131 + [0x22E9, 0x22E8], 1.132 + [0x22EA, 0x22EB], 1.133 + [0x22EB, 0x22EA], 1.134 + [0x22EC, 0x22ED], 1.135 + [0x22ED, 0x22EC], 1.136 + [0x22F0, 0x22F1], 1.137 + [0x22F1, 0x22F0], 1.138 + [0x22F2, 0x22FA], 1.139 + [0x22F3, 0x22FB], 1.140 + [0x22F4, 0x22FC], 1.141 + [0x22F6, 0x22FD], 1.142 + [0x22F7, 0x22FE], 1.143 + [0x22FA, 0x22F2], 1.144 + [0x22FB, 0x22F3], 1.145 + [0x22FC, 0x22F4], 1.146 + [0x22FD, 0x22F6], 1.147 + [0x22FE, 0x22F7], 1.148 + [0x2308, 0x2309], 1.149 + [0x2309, 0x2308], 1.150 + [0x230A, 0x230B], 1.151 + [0x230B, 0x230A], 1.152 + [0x2329, 0x232A], 1.153 + [0x232A, 0x2329], 1.154 + [0x2768, 0x2769], 1.155 + [0x2769, 0x2768], 1.156 + [0x276A, 0x276B], 1.157 + [0x276B, 0x276A], 1.158 + [0x276C, 0x276D], 1.159 + [0x276D, 0x276C], 1.160 + [0x276E, 0x276F], 1.161 + [0x276F, 0x276E], 1.162 + [0x2770, 0x2771], 1.163 + [0x2771, 0x2770], 1.164 + [0x2772, 0x2773], 1.165 + [0x2773, 0x2772], 1.166 + [0x2774, 0x2775], 1.167 + [0x2775, 0x2774], 1.168 + [0x27C3, 0x27C4], 1.169 + [0x27C4, 0x27C3], 1.170 + [0x27C5, 0x27C6], 1.171 + [0x27C6, 0x27C5], 1.172 + [0x27C8, 0x27C9], 1.173 + [0x27C9, 0x27C8], 1.174 + [0x27CB, 0x27CD], 1.175 + [0x27CD, 0x27CB], 1.176 + [0x27D5, 0x27D6], 1.177 + [0x27D6, 0x27D5], 1.178 + [0x27DD, 0x27DE], 1.179 + [0x27DE, 0x27DD], 1.180 + [0x27E2, 0x27E3], 1.181 + [0x27E3, 0x27E2], 1.182 + [0x27E4, 0x27E5], 1.183 + [0x27E5, 0x27E4], 1.184 + [0x27E6, 0x27E7], 1.185 + [0x27E7, 0x27E6], 1.186 + [0x27E8, 0x27E9], 1.187 + [0x27E9, 0x27E8], 1.188 + [0x27EA, 0x27EB], 1.189 + [0x27EB, 0x27EA], 1.190 + [0x27EC, 0x27ED], 1.191 + [0x27ED, 0x27EC], 1.192 + [0x27EE, 0x27EF], 1.193 + [0x27EF, 0x27EE], 1.194 + [0x2983, 0x2984], 1.195 + [0x2984, 0x2983], 1.196 + [0x2985, 0x2986], 1.197 + [0x2986, 0x2985], 1.198 + [0x2987, 0x2988], 1.199 + [0x2988, 0x2987], 1.200 + [0x2989, 0x298A], 1.201 + [0x298A, 0x2989], 1.202 + [0x298B, 0x298C], 1.203 + [0x298C, 0x298B], 1.204 + [0x298D, 0x2990], 1.205 + [0x298E, 0x298F], 1.206 + [0x298F, 0x298E], 1.207 + [0x2990, 0x298D], 1.208 + [0x2991, 0x2992], 1.209 + [0x2992, 0x2991], 1.210 + [0x2993, 0x2994], 1.211 + [0x2994, 0x2993], 1.212 + [0x2995, 0x2996], 1.213 + [0x2996, 0x2995], 1.214 + [0x2997, 0x2998], 1.215 + [0x2998, 0x2997], 1.216 + [0x29B8, 0x2298], 1.217 + [0x29C0, 0x29C1], 1.218 + [0x29C1, 0x29C0], 1.219 + [0x29C4, 0x29C5], 1.220 + [0x29C5, 0x29C4], 1.221 + [0x29CF, 0x29D0], 1.222 + [0x29D0, 0x29CF], 1.223 + [0x29D1, 0x29D2], 1.224 + [0x29D2, 0x29D1], 1.225 + [0x29D4, 0x29D5], 1.226 + [0x29D5, 0x29D4], 1.227 + [0x29D8, 0x29D9], 1.228 + [0x29D9, 0x29D8], 1.229 + [0x29DA, 0x29DB], 1.230 + [0x29DB, 0x29DA], 1.231 + [0x29F5, 0x2215], 1.232 + [0x29F8, 0x29F9], 1.233 + [0x29F9, 0x29F8], 1.234 + [0x29FC, 0x29FD], 1.235 + [0x29FD, 0x29FC], 1.236 + [0x2A2B, 0x2A2C], 1.237 + [0x2A2C, 0x2A2B], 1.238 + [0x2A2D, 0x2A2E], 1.239 + [0x2A2E, 0x2A2D], 1.240 + [0x2A34, 0x2A35], 1.241 + [0x2A35, 0x2A34], 1.242 + [0x2A3C, 0x2A3D], 1.243 + [0x2A3D, 0x2A3C], 1.244 + [0x2A64, 0x2A65], 1.245 + [0x2A65, 0x2A64], 1.246 + [0x2A79, 0x2A7A], 1.247 + [0x2A7A, 0x2A79], 1.248 + [0x2A7D, 0x2A7E], 1.249 + [0x2A7E, 0x2A7D], 1.250 + [0x2A7F, 0x2A80], 1.251 + [0x2A80, 0x2A7F], 1.252 + [0x2A81, 0x2A82], 1.253 + [0x2A82, 0x2A81], 1.254 + [0x2A83, 0x2A84], 1.255 + [0x2A84, 0x2A83], 1.256 + [0x2A8B, 0x2A8C], 1.257 + [0x2A8C, 0x2A8B], 1.258 + [0x2A91, 0x2A92], 1.259 + [0x2A92, 0x2A91], 1.260 + [0x2A93, 0x2A94], 1.261 + [0x2A94, 0x2A93], 1.262 + [0x2A95, 0x2A96], 1.263 + [0x2A96, 0x2A95], 1.264 + [0x2A97, 0x2A98], 1.265 + [0x2A98, 0x2A97], 1.266 + [0x2A99, 0x2A9A], 1.267 + [0x2A9A, 0x2A99], 1.268 + [0x2A9B, 0x2A9C], 1.269 + [0x2A9C, 0x2A9B], 1.270 + [0x2AA1, 0x2AA2], 1.271 + [0x2AA2, 0x2AA1], 1.272 + [0x2AA6, 0x2AA7], 1.273 + [0x2AA7, 0x2AA6], 1.274 + [0x2AA8, 0x2AA9], 1.275 + [0x2AA9, 0x2AA8], 1.276 + [0x2AAA, 0x2AAB], 1.277 + [0x2AAB, 0x2AAA], 1.278 + [0x2AAC, 0x2AAD], 1.279 + [0x2AAD, 0x2AAC], 1.280 + [0x2AAF, 0x2AB0], 1.281 + [0x2AB0, 0x2AAF], 1.282 + [0x2AB3, 0x2AB4], 1.283 + [0x2AB4, 0x2AB3], 1.284 + [0x2ABB, 0x2ABC], 1.285 + [0x2ABC, 0x2ABB], 1.286 + [0x2ABD, 0x2ABE], 1.287 + [0x2ABE, 0x2ABD], 1.288 + [0x2ABF, 0x2AC0], 1.289 + [0x2AC0, 0x2ABF], 1.290 + [0x2AC1, 0x2AC2], 1.291 + [0x2AC2, 0x2AC1], 1.292 + [0x2AC3, 0x2AC4], 1.293 + [0x2AC4, 0x2AC3], 1.294 + [0x2AC5, 0x2AC6], 1.295 + [0x2AC6, 0x2AC5], 1.296 + [0x2ACD, 0x2ACE], 1.297 + [0x2ACE, 0x2ACD], 1.298 + [0x2ACF, 0x2AD0], 1.299 + [0x2AD0, 0x2ACF], 1.300 + [0x2AD1, 0x2AD2], 1.301 + [0x2AD2, 0x2AD1], 1.302 + [0x2AD3, 0x2AD4], 1.303 + [0x2AD4, 0x2AD3], 1.304 + [0x2AD5, 0x2AD6], 1.305 + [0x2AD6, 0x2AD5], 1.306 + [0x2ADE, 0x22A6], 1.307 + [0x2AE3, 0x22A9], 1.308 + [0x2AE4, 0x22A8], 1.309 + [0x2AE5, 0x22AB], 1.310 + [0x2AEC, 0x2AED], 1.311 + [0x2AED, 0x2AEC], 1.312 + [0x2AF7, 0x2AF8], 1.313 + [0x2AF8, 0x2AF7], 1.314 + [0x2AF9, 0x2AFA], 1.315 + [0x2AFA, 0x2AF9], 1.316 + [0x2E02, 0x2E03], 1.317 + [0x2E03, 0x2E02], 1.318 + [0x2E04, 0x2E05], 1.319 + [0x2E05, 0x2E04], 1.320 + [0x2E09, 0x2E0A], 1.321 + [0x2E0A, 0x2E09], 1.322 + [0x2E0C, 0x2E0D], 1.323 + [0x2E0D, 0x2E0C], 1.324 + [0x2E1C, 0x2E1D], 1.325 + [0x2E1D, 0x2E1C], 1.326 + [0x2E20, 0x2E21], 1.327 + [0x2E21, 0x2E20], 1.328 + [0x2E22, 0x2E23], 1.329 + [0x2E23, 0x2E22], 1.330 + [0x2E24, 0x2E25], 1.331 + [0x2E25, 0x2E24], 1.332 + [0x2E26, 0x2E27], 1.333 + [0x2E27, 0x2E26], 1.334 + [0x2E28, 0x2E29], 1.335 + [0x2E29, 0x2E28], 1.336 + [0x3008, 0x3009], 1.337 + [0x3009, 0x3008], 1.338 + [0x300A, 0x300B], 1.339 + [0x300B, 0x300A], 1.340 + [0x300C, 0x300D], 1.341 + [0x300D, 0x300C], 1.342 + [0x300E, 0x300F], 1.343 + [0x300F, 0x300E], 1.344 + [0x3010, 0x3011], 1.345 + [0x3011, 0x3010], 1.346 + [0x3014, 0x3015], 1.347 + [0x3015, 0x3014], 1.348 + [0x3016, 0x3017], 1.349 + [0x3017, 0x3016], 1.350 + [0x3018, 0x3019], 1.351 + [0x3019, 0x3018], 1.352 + [0x301A, 0x301B], 1.353 + [0x301B, 0x301A], 1.354 + [0xFE59, 0xFE5A], 1.355 + [0xFE5A, 0xFE59], 1.356 + [0xFE5B, 0xFE5C], 1.357 + [0xFE5C, 0xFE5B], 1.358 + [0xFE5D, 0xFE5E], 1.359 + [0xFE5E, 0xFE5D], 1.360 + [0xFE64, 0xFE65], 1.361 + [0xFE65, 0xFE64], 1.362 + [0xFF08, 0xFF09], 1.363 + [0xFF09, 0xFF08], 1.364 + [0xFF1C, 0xFF1E], 1.365 + [0xFF1E, 0xFF1C], 1.366 + [0xFF3B, 0xFF3D], 1.367 + [0xFF3D, 0xFF3B], 1.368 + [0xFF5B, 0xFF5D], 1.369 + [0xFF5D, 0xFF5B], 1.370 + [0xFF5F, 0xFF60], 1.371 + [0xFF60, 0xFF5F], 1.372 + [0xFF62, 0xFF63], 1.373 + [0xFF63, 0xFF62] 1.374 +]; 1.375 + 1.376 +function show(attributes, text) { 1.377 + var e = document.createElementNS("http://www.w3.org/2000/svg", "text"); 1.378 + for (var name in attributes) { 1.379 + e.setAttribute(name, attributes[name]); 1.380 + } 1.381 + e.textContent = text; 1.382 + document.documentElement.appendChild(e); 1.383 +} 1.384 + 1.385 +function showCharacters(isReference) { 1.386 + var row = 0, col = 0; 1.387 + for (var i = 0; i < mirrors.length; i++) { 1.388 + show({ x: col * 50 + 30, 1.389 + y: row * 30 + 30, 1.390 + direction: isReference ? "ltr" : "rtl", 1.391 + "unicode-bidi": "embed", 1.392 + "text-anchor": "middle", 1.393 + "font-family": "BitPattern", 1.394 + "font-size": "40px" }, 1.395 + String.fromCharCode(mirrors[i][isReference ? 0 : 1])); 1.396 + if (++col == 16) { 1.397 + col = 0; 1.398 + row++; 1.399 + } 1.400 + } 1.401 + document.documentElement.removeAttribute("class"); 1.402 +} 1.403 + 1.404 +function test() { 1.405 + showCharacters(false); 1.406 +} 1.407 + 1.408 +function reference() { 1.409 + showCharacters(true); 1.410 +}