layout/reftests/bidi/bidiMirroring.js

changeset 0
6474c204b198
     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 +}

mercurial