[1mdiff --git a/dlls/gdi32/bidi.c b/dlls/gdi32/bidi.c[m
[1mindex 9ac5e1d..f006335 100644[m
[1m--- a/dlls/gdi32/bidi.c[m
[1m+++ b/dlls/gdi32/bidi.c[m
[36m@@ -38,6 +38,29 @@[m
  * modified Data File or in the Software as well as in the documentation[m
  * associated with the Data File(s) or Software that the data or software[m
  * has been modified.[m
[32m+[m[32m *[m
[32m+[m[32m * Code derived from minibidi an implementation of Unicode's Bidirectional[m
[32m+[m[32m * Algorithm (UAX#9).[m
[32m+[m[32m *[m
[32m+[m[32m * minibidi is Copyright (c) 2004 Ahmad Khalifa[m
[32m+[m[32m *[m
[32m+[m[32m * Permission is hereby granted, free of charge, to any person obtaining a copy of[m
[32m+[m[32m * this software and associated documentation files (the "Software"), to deal in[m
[32m+[m[32m * the Software without restriction, including without limitation the rights to[m
[32m+[m[32m * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies[m
[32m+[m[32m * of the Software, and to permit persons to whom the Software is furnished to do[m
[32m+[m[32m * so, subject to the following conditions:[m
[32m+[m[32m *[m
[32m+[m[32m * The above copyright notice and this permission notice shall be included in all[m
[32m+[m[32m * copies or substantial portions of the Software.[m
[32m+[m[32m *[m
[32m+[m[32m * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR[m
[32m+[m[32m * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,[m
[32m+[m[32m * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE[m
[32m+[m[32m * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER[m
[32m+[m[32m * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,[m
[32m+[m[32m * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE[m
[32m+[m[32m * SOFTWARE.[m
  */[m
 [m
 #include "config.h"[m
[36m@@ -967,6 +990,399 @@ static int reorder(int baselevel, LPWSTR pszText, const WORD* plevel, int cch)[m
 }[m
 [m
 /* DISPLAY OPTIONS */[m
[32m+[m[32mstatic const struct{[m
[32m+[m[32m    WCHAR first, mirror;[m
[32m+[m[32m} mirrored[] = {[m
[32m+[m[32m    {0x0028, 0x0029},[m
[32m+[m[32m    {0x0029, 0x0028},[m
[32m+[m[32m    {0x003C, 0x003E},[m
[32m+[m[32m    {0x003E, 0x003C},[m
[32m+[m[32m    {0x005B, 0x005D},[m
[32m+[m[32m    {0x005D, 0x005B},[m
[32m+[m[32m    {0x007B, 0x007D},[m
[32m+[m[32m    {0x007D, 0x007B},[m
[32m+[m[32m    {0x00AB, 0x00BB},[m
[32m+[m[32m    {0x00BB, 0x00AB},[m
[32m+[m[32m    {0x0F3A, 0x0F3B},[m
[32m+[m[32m    {0x0F3B, 0x0F3A},[m
[32m+[m[32m    {0x0F3C, 0x0F3D},[m
[32m+[m[32m    {0x0F3D, 0x0F3C},[m
[32m+[m[32m    {0x169B, 0x169C},[m
[32m+[m[32m    {0x169C, 0x169B},[m
[32m+[m[32m    {0x2039, 0x203A},[m
[32m+[m[32m    {0x203A, 0x2039},[m
[32m+[m[32m    {0x2045, 0x2046},[m
[32m+[m[32m    {0x2046, 0x2045},[m
[32m+[m[32m    {0x207D, 0x207E},[m
[32m+[m[32m    {0x207E, 0x207D},[m
[32m+[m[32m    {0x208D, 0x208E},[m
[32m+[m[32m    {0x208E, 0x208D},[m
[32m+[m[32m    {0x2208, 0x220B},[m
[32m+[m[32m    {0x2209, 0x220C},[m
[32m+[m[32m    {0x220A, 0x220D},[m
[32m+[m[32m    {0x220B, 0x2208},[m
[32m+[m[32m    {0x220C, 0x2209},[m
[32m+[m[32m    {0x220D, 0x220A},[m
[32m+[m[32m    {0x2215, 0x29F5},[m
[32m+[m[32m    {0x223C, 0x223D},[m
[32m+[m[32m    {0x223D, 0x223C},[m
[32m+[m[32m    {0x2243, 0x22CD},[m
[32m+[m[32m    {0x2252, 0x2253},[m
[32m+[m[32m    {0x2253, 0x2252},[m
[32m+[m[32m    {0x2254, 0x2255},[m
[32m+[m[32m    {0x2255, 0x2254},[m
[32m+[m[32m    {0x2264, 0x2265},[m
[32m+[m[32m    {0x2265, 0x2264},[m
[32m+[m[32m    {0x2266, 0x2267},[m
[32m+[m[32m    {0x2267, 0x2266},[m
[32m+[m[32m    {0x2268, 0x2269},[m
[32m+[m[32m    {0x2269, 0x2268},[m
[32m+[m[32m    {0x226A, 0x226B},[m
[32m+[m[32m    {0x226B, 0x226A},[m
[32m+[m[32m    {0x226E, 0x226F},[m
[32m+[m[32m    {0x226F, 0x226E},[m
[32m+[m[32m    {0x2270, 0x2271},[m
[32m+[m[32m    {0x2271, 0x2270},[m
[32m+[m[32m    {0x2272, 0x2273},[m
[32m+[m[32m    {0x2273, 0x2272},[m
[32m+[m[32m    {0x2274, 0x2275},[m
[32m+[m[32m    {0x2275, 0x2274},[m
[32m+[m[32m    {0x2276, 0x2277},[m
[32m+[m[32m    {0x2277, 0x2276},[m
[32m+[m[32m    {0x2278, 0x2279},[m
[32m+[m[32m    {0x2279, 0x2278},[m
[32m+[m[32m    {0x227A, 0x227B},[m
[32m+[m[32m    {0x227B, 0x227A},[m
[32m+[m[32m    {0x227C, 0x227D},[m
[32m+[m[32m    {0x227D, 0x227C},[m
[32m+[m[32m    {0x227E, 0x227F},[m
[32m+[m[32m    {0x227F, 0x227E},[m
[32m+[m[32m    {0x2280, 0x2281},[m
[32m+[m[32m    {0x2281, 0x2280},[m
[32m+[m[32m    {0x2282, 0x2283},[m
[32m+[m[32m    {0x2283, 0x2282},[m
[32m+[m[32m    {0x2284, 0x2285},[m
[32m+[m[32m    {0x2285, 0x2284},[m
[32m+[m[32m    {0x2286, 0x2287},[m
[32m+[m[32m    {0x2287, 0x2286},[m
[32m+[m[32m    {0x2288, 0x2289},[m
[32m+[m[32m    {0x2289, 0x2288},[m
[32m+[m[32m    {0x228A, 0x228B},[m
[32m+[m[32m    {0x228B, 0x228A},[m
[32m+[m[32m    {0x228F, 0x2290},[m
[32m+[m[32m    {0x2290, 0x228F},[m
[32m+[m[32m    {0x2291, 0x2292},[m
[32m+[m[32m    {0x2292, 0x2291},[m
[32m+[m[32m    {0x2298, 0x29B8},[m
[32m+[m[32m    {0x22A2, 0x22A3},[m
[32m+[m[32m    {0x22A3, 0x22A2},[m
[32m+[m[32m    {0x22A6, 0x2ADE},[m
[32m+[m[32m    {0x22A8, 0x2AE4},[m
[32m+[m[32m    {0x22A9, 0x2AE3},[m
[32m+[m[32m    {0x22AB, 0x2AE5},[m
[32m+[m[32m    {0x22B0, 0x22B1},[m
[32m+[m[32m    {0x22B1, 0x22B0},[m
[32m+[m[32m    {0x22B2, 0x22B3},[m
[32m+[m[32m    {0x22B3, 0x22B2},[m
[32m+[m[32m    {0x22B4, 0x22B5},[m
[32m+[m[32m    {0x22B5, 0x22B4},[m
[32m+[m[32m    {0x22B6, 0x22B7},[m
[32m+[m[32m    {0x22B7, 0x22B6},[m
[32m+[m[32m    {0x22C9, 0x22CA},[m
[32m+[m[32m    {0x22CA, 0x22C9},[m
[32m+[m[32m    {0x22CB, 0x22CC},[m
[32m+[m[32m    {0x22CC, 0x22CB},[m
[32m+[m[32m    {0x22CD, 0x2243},[m
[32m+[m[32m    {0x22D0, 0x22D1},[m
[32m+[m[32m    {0x22D1, 0x22D0},[m
[32m+[m[32m    {0x22D6, 0x22D7},[m
[32m+[m[32m    {0x22D7, 0x22D6},[m
[32m+[m[32m    {0x22D8, 0x22D9},[m
[32m+[m[32m    {0x22D9, 0x22D8},[m
[32m+[m[32m    {0x22DA, 0x22DB},[m
[32m+[m[32m    {0x22DB, 0x22DA},[m
[32m+[m[32m    {0x22DC, 0x22DD},[m
[32m+[m[32m    {0x22DD, 0x22DC},[m
[32m+[m[32m    {0x22DE, 0x22DF},[m
[32m+[m[32m    {0x22DF, 0x22DE},[m
[32m+[m[32m    {0x22E0, 0x22E1},[m
[32m+[m[32m    {0x22E1, 0x22E0},[m
[32m+[m[32m    {0x22E2, 0x22E3},[m
[32m+[m[32m    {0x22E3, 0x22E2},[m
[32m+[m[32m    {0x22E4, 0x22E5},[m
[32m+[m[32m    {0x22E5, 0x22E4},[m
[32m+[m[32m    {0x22E6, 0x22E7},[m
[32m+[m[32m    {0x22E7, 0x22E6},[m
[32m+[m[32m    {0x22E8, 0x22E9},[m
[32m+[m[32m    {0x22E9, 0x22E8},[m
[32m+[m[32m    {0x22EA, 0x22EB},[m
[32m+[m[32m    {0x22EB, 0x22EA},[m
[32m+[m[32m    {0x22EC, 0x22ED},[m
[32m+[m[32m    {0x22ED, 0x22EC},[m
[32m+[m[32m    {0x22F0, 0x22F1},[m
[32m+[m[32m    {0x22F1, 0x22F0},[m
[32m+[m[32m    {0x22F2, 0x22FA},[m
[32m+[m[32m    {0x22F3, 0x22FB},[m
[32m+[m[32m    {0x22F4, 0x22FC},[m
[32m+[m[32m    {0x22F6, 0x22FD},[m
[32m+[m[32m    {0x22F7, 0x22FE},[m
[32m+[m[32m    {0x22FA, 0x22F2},[m
[32m+[m[32m    {0x22FB, 0x22F3},[m
[32m+[m[32m    {0x22FC, 0x22F4},[m
[32m+[m[32m    {0x22FD, 0x22F6},[m
[32m+[m[32m    {0x22FE, 0x22F7},[m
[32m+[m[32m    {0x2308, 0x2309},[m
[32m+[m[32m    {0x2309, 0x2308},[m
[32m+[m[32m    {0x230A, 0x230B},[m
[32m+[m[32m    {0x230B, 0x230A},[m
[32m+[m[32m    {0x2329, 0x232A},[m
[32m+[m[32m    {0x232A, 0x2329},[m
[32m+[m[32m    {0x2768, 0x2769},[m
[32m+[m[32m    {0x2769, 0x2768},[m
[32m+[m[32m    {0x276A, 0x276B},[m
[32m+[m[32m    {0x276B, 0x276A},[m
[32m+[m[32m    {0x276C, 0x276D},[m
[32m+[m[32m    {0x276D, 0x276C},[m
[32m+[m[32m    {0x276E, 0x276F},[m
[32m+[m[32m    {0x276F, 0x276E},[m
[32m+[m[32m    {0x2770, 0x2771},[m
[32m+[m[32m    {0x2771, 0x2770},[m
[32m+[m[32m    {0x2772, 0x2773},[m
[32m+[m[32m    {0x2773, 0x2772},[m
[32m+[m[32m    {0x2774, 0x2775},[m
[32m+[m[32m    {0x2775, 0x2774},[m
[32m+[m[32m    {0x27C3, 0x27C4},[m
[32m+[m[32m    {0x27C4, 0x27C3},[m
[32m+[m[32m    {0x27C5, 0x27C6},[m
[32m+[m[32m    {0x27C6, 0x27C5},[m
[32m+[m[32m    {0x27C8, 0x27C9},[m
[32m+[m[32m    {0x27C9, 0x27C8},[m
[32m+[m[32m    {0x27D5, 0x27D6},[m
[32m+[m[32m    {0x27D6, 0x27D5},[m
[32m+[m[32m    {0x27DD, 0x27DE},[m
[32m+[m[32m    {0x27DE, 0x27DD},[m
[32m+[m[32m    {0x27E2, 0x27E3},[m
[32m+[m[32m    {0x27E3, 0x27E2},[m
[32m+[m[32m    {0x27E4, 0x27E5},[m
[32m+[m[32m    {0x27E5, 0x27E4},[m
[32m+[m[32m    {0x27E6, 0x27E7},[m
[32m+[m[32m    {0x27E7, 0x27E6},[m
[32m+[m[32m    {0x27E8, 0x27E9},[m
[32m+[m[32m    {0x27E9, 0x27E8},[m
[32m+[m[32m    {0x27EA, 0x27EB},[m
[32m+[m[32m    {0x27EB, 0x27EA},[m
[32m+[m[32m    {0x27EC, 0x27ED},[m
[32m+[m[32m    {0x27ED, 0x27EC},[m
[32m+[m[32m    {0x27EE, 0x27EF},[m
[32m+[m[32m    {0x27EF, 0x27EE},[m
[32m+[m[32m    {0x2983, 0x2984},[m
[32m+[m[32m    {0x2984, 0x2983},[m
[32m+[m[32m    {0x2985, 0x2986},[m
[32m+[m[32m    {0x2986, 0x2985},[m
[32m+[m[32m    {0x2987, 0x2988},[m
[32m+[m[32m    {0x2988, 0x2987},[m
[32m+[m[32m    {0x2989, 0x298A},[m
[32m+[m[32m    {0x298A, 0x2989},[m
[32m+[m[32m    {0x298B, 0x298C},[m
[32m+[m[32m    {0x298C, 0x298B},[m
[32m+[m[32m    {0x298D, 0x2990},[m
[32m+[m[32m    {0x298E, 0x298F},[m
[32m+[m[32m    {0x298F, 0x298E},[m
[32m+[m[32m    {0x2990, 0x298D},[m
[32m+[m[32m    {0x2991, 0x2992},[m
[32m+[m[32m    {0x2992, 0x2991},[m
[32m+[m[32m    {0x2993, 0x2994},[m
[32m+[m[32m    {0x2994, 0x2993},[m
[32m+[m[32m    {0x2995, 0x2996},[m
[32m+[m[32m    {0x2996, 0x2995},[m
[32m+[m[32m    {0x2997, 0x2998},[m
[32m+[m[32m    {0x2998, 0x2997},[m
[32m+[m[32m    {0x29B8, 0x2298},[m
[32m+[m[32m    {0x29C0, 0x29C1},[m
[32m+[m[32m    {0x29C1, 0x29C0},[m
[32m+[m[32m    {0x29C4, 0x29C5},[m
[32m+[m[32m    {0x29C5, 0x29C4},[m
[32m+[m[32m    {0x29CF, 0x29D0},[m
[32m+[m[32m    {0x29D0, 0x29CF},[m
[32m+[m[32m    {0x29D1, 0x29D2},[m
[32m+[m[32m    {0x29D2, 0x29D1},[m
[32m+[m[32m    {0x29D4, 0x29D5},[m
[32m+[m[32m    {0x29D5, 0x29D4},[m
[32m+[m[32m    {0x29D8, 0x29D9},[m
[32m+[m[32m    {0x29D9, 0x29D8},[m
[32m+[m[32m    {0x29DA, 0x29DB},[m
[32m+[m[32m    {0x29DB, 0x29DA},[m
[32m+[m[32m    {0x29F5, 0x2215},[m
[32m+[m[32m    {0x29F8, 0x29F9},[m
[32m+[m[32m    {0x29F9, 0x29F8},[m
[32m+[m[32m    {0x29FC, 0x29FD},[m
[32m+[m[32m    {0x29FD, 0x29FC},[m
[32m+[m[32m    {0x2A2B, 0x2A2C},[m
[32m+[m[32m    {0x2A2C, 0x2A2B},[m
[32m+[m[32m    {0x2A2D, 0x2A2E},[m
[32m+[m[32m    {0x2A2E, 0x2A2D},[m
[32m+[m[32m    {0x2A34, 0x2A35},[m
[32m+[m[32m    {0x2A35, 0x2A34},[m
[32m+[m[32m    {0x2A3C, 0x2A3D},[m
[32m+[m[32m    {0x2A3D, 0x2A3C},[m
[32m+[m[32m    {0x2A64, 0x2A65},[m
[32m+[m[32m    {0x2A65, 0x2A64},[m
[32m+[m[32m    {0x2A79, 0x2A7A},[m
[32m+[m[32m    {0x2A7A, 0x2A79},[m
[32m+[m[32m    {0x2A7D, 0x2A7E},[m
[32m+[m[32m    {0x2A7E, 0x2A7D},[m
[32m+[m[32m    {0x2A7F, 0x2A80},[m
[32m+[m[32m    {0x2A80, 0x2A7F},[m
[32m+[m[32m    {0x2A81, 0x2A82},[m
[32m+[m[32m    {0x2A82, 0x2A81},[m
[32m+[m[32m    {0x2A83, 0x2A84},[m
[32m+[m[32m    {0x2A84, 0x2A83},[m
[32m+[m[32m    {0x2A8B, 0x2A8C},[m
[32m+[m[32m    {0x2A8C, 0x2A8B},[m
[32m+[m[32m    {0x2A91, 0x2A92},[m
[32m+[m[32m    {0x2A92, 0x2A91},[m
[32m+[m[32m    {0x2A93, 0x2A94},[m
[32m+[m[32m    {0x2A94, 0x2A93},[m
[32m+[m[32m    {0x2A95, 0x2A96},[m
[32m+[m[32m    {0x2A96, 0x2A95},[m
[32m+[m[32m    {0x2A97, 0x2A98},[m
[32m+[m[32m    {0x2A98, 0x2A97},[m
[32m+[m[32m    {0x2A99, 0x2A9A},[m
[32m+[m[32m    {0x2A9A, 0x2A99},[m
[32m+[m[32m    {0x2A9B, 0x2A9C},[m
[32m+[m[32m    {0x2A9C, 0x2A9B},[m
[32m+[m[32m    {0x2AA1, 0x2AA2},[m
[32m+[m[32m    {0x2AA2, 0x2AA1},[m
[32m+[m[32m    {0x2AA6, 0x2AA7},[m
[32m+[m[32m    {0x2AA7, 0x2AA6},[m
[32m+[m[32m    {0x2AA8, 0x2AA9},[m
[32m+[m[32m    {0x2AA9, 0x2AA8},[m
[32m+[m[32m    {0x2AAA, 0x2AAB},[m
[32m+[m[32m    {0x2AAB, 0x2AAA},[m
[32m+[m[32m    {0x2AAC, 0x2AAD},[m
[32m+[m[32m    {0x2AAD, 0x2AAC},[m
[32m+[m[32m    {0x2AAF, 0x2AB0},[m
[32m+[m[32m    {0x2AB0, 0x2AAF},[m
[32m+[m[32m    {0x2AB3, 0x2AB4},[m
[32m+[m[32m    {0x2AB4, 0x2AB3},[m
[32m+[m[32m    {0x2ABB, 0x2ABC},[m
[32m+[m[32m    {0x2ABC, 0x2ABB},[m
[32m+[m[32m    {0x2ABD, 0x2ABE},[m
[32m+[m[32m    {0x2ABE, 0x2ABD},[m
[32m+[m[32m    {0x2ABF, 0x2AC0},[m
[32m+[m[32m    {0x2AC0, 0x2ABF},[m
[32m+[m[32m    {0x2AC1, 0x2AC2},[m
[32m+[m[32m    {0x2AC2, 0x2AC1},[m
[32m+[m[32m    {0x2AC3, 0x2AC4},[m
[32m+[m[32m    {0x2AC4, 0x2AC3},[m
[32m+[m[32m    {0x2AC5, 0x2AC6},[m
[32m+[m[32m    {0x2AC6, 0x2AC5},[m
[32m+[m[32m    {0x2ACD, 0x2ACE},[m
[32m+[m[32m    {0x2ACE, 0x2ACD},[m
[32m+[m[32m    {0x2ACF, 0x2AD0},[m
[32m+[m[32m    {0x2AD0, 0x2ACF},[m
[32m+[m[32m    {0x2AD1, 0x2AD2},[m
[32m+[m[32m    {0x2AD2, 0x2AD1},[m
[32m+[m[32m    {0x2AD3, 0x2AD4},[m
[32m+[m[32m    {0x2AD4, 0x2AD3},[m
[32m+[m[32m    {0x2AD5, 0x2AD6},[m
[32m+[m[32m    {0x2AD6, 0x2AD5},[m
[32m+[m[32m    {0x2ADE, 0x22A6},[m
[32m+[m[32m    {0x2AE3, 0x22A9},[m
[32m+[m[32m    {0x2AE4, 0x22A8},[m
[32m+[m[32m    {0x2AE5, 0x22AB},[m
[32m+[m[32m    {0x2AEC, 0x2AED},[m
[32m+[m[32m    {0x2AED, 0x2AEC},[m
[32m+[m[32m    {0x2AF7, 0x2AF8},[m
[32m+[m[32m    {0x2AF8, 0x2AF7},[m
[32m+[m[32m    {0x2AF9, 0x2AFA},[m
[32m+[m[32m    {0x2AFA, 0x2AF9},[m
[32m+[m[32m    {0x2E02, 0x2E03},[m
[32m+[m[32m    {0x2E03, 0x2E02},[m
[32m+[m[32m    {0x2E04, 0x2E05},[m
[32m+[m[32m    {0x2E05, 0x2E04},[m
[32m+[m[32m    {0x2E09, 0x2E0A},[m
[32m+[m[32m    {0x2E0A, 0x2E09},[m
[32m+[m[32m    {0x2E0C, 0x2E0D},[m
[32m+[m[32m    {0x2E0D, 0x2E0C},[m
[32m+[m[32m    {0x2E1C, 0x2E1D},[m
[32m+[m[32m    {0x2E1D, 0x2E1C},[m
[32m+[m[32m    {0x2E20, 0x2E21},[m
[32m+[m[32m    {0x2E21, 0x2E20},[m
[32m+[m[32m    {0x2E22, 0x2E23},[m
[32m+[m[32m    {0x2E23, 0x2E22},[m
[32m+[m[32m    {0x2E24, 0x2E25},[m
[32m+[m[32m    {0x2E25, 0x2E24},[m
[32m+[m[32m    {0x2E26, 0x2E27},[m
[32m+[m[32m    {0x2E27, 0x2E26},[m
[32m+[m[32m    {0x2E28, 0x2E29},[m
[32m+[m[32m    {0x2E29, 0x2E28},[m
[32m+[m[32m    {0x3008, 0x3009},[m
[32m+[m[32m    {0x3009, 0x3008},[m
[32m+[m[32m    {0x300A, 0x300B},[m
[32m+[m[32m    {0x300B, 0x300A},[m
[32m+[m[32m    {0x300C, 0x300D},[m
[32m+[m[32m    {0x300D, 0x300C},[m
[32m+[m[32m    {0x300E, 0x300F},[m
[32m+[m[32m    {0x300F, 0x300E},[m
[32m+[m[32m    {0x3010, 0x3011},[m
[32m+[m[32m    {0x3011, 0x3010},[m
[32m+[m[32m    {0x3014, 0x3015},[m
[32m+[m[32m    {0x3015, 0x3014},[m
[32m+[m[32m    {0x3016, 0x3017},[m
[32m+[m[32m    {0x3017, 0x3016},[m
[32m+[m[32m    {0x3018, 0x3019},[m
[32m+[m[32m    {0x3019, 0x3018},[m
[32m+[m[32m    {0x301A, 0x301B},[m
[32m+[m[32m    {0x301B, 0x301A},[m
[32m+[m[32m    {0xFE59, 0xFE5A},[m
[32m+[m[32m    {0xFE5A, 0xFE59},[m
[32m+[m[32m    {0xFE5B, 0xFE5C},[m
[32m+[m[32m    {0xFE5C, 0xFE5B},[m
[32m+[m[32m    {0xFE5D, 0xFE5E},[m
[32m+[m[32m    {0xFE5E, 0xFE5D},[m
[32m+[m[32m    {0xFE64, 0xFE65},[m
[32m+[m[32m    {0xFE65, 0xFE64},[m
[32m+[m[32m    {0xFF08, 0xFF09},[m
[32m+[m[32m    {0xFF09, 0xFF08},[m
[32m+[m[32m    {0xFF1C, 0xFF1E},[m
[32m+[m[32m    {0xFF1E, 0xFF1C},[m
[32m+[m[32m    {0xFF3B, 0xFF3D},[m
[32m+[m[32m    {0xFF3D, 0xFF3B},[m
[32m+[m[32m    {0xFF5B, 0xFF5D},[m
[32m+[m[32m    {0xFF5D, 0xFF5B},[m
[32m+[m[32m    {0xFF5F, 0xFF60},[m
[32m+[m[32m    {0xFF60, 0xFF5F},[m
[32m+[m[32m    {0xFF62, 0xFF63},[m
[32m+[m[32m    {0xFF63, 0xFF62},[m
[32m+[m[32m};[m
[32m+[m
[32m+[m[32m/*------------------------------------------------------------------------[m
[32m+[m[32m    takes a pointer to a character that is checked for[m
[32m+[m[32m    having a mirror glyph, and replaced on the spot[m
[32m+[m[32m------------------------------------------------------------------------*/[m
[32m+[m[32mstatic void doMirror(WCHAR* ch)[m
[32m+[m[32m{[m
[32m+[m[32m    int i, j, k;[m
[32m+[m
[32m+[m[32m    i = -1;[m
[32m+[m[32m    j = sizeof(mirrored)/sizeof(mirrored[0]);[m
[32m+[m
[32m+[m[32m    while (j - i > 1)[m
[32m+[m[32m    {[m
[32m+[m[32m        k = (i + j) / 2;[m
[32m+[m[32m        if (*ch < mirrored[k].first)[m
[32m+[m[32m            j = k;[m
[32m+[m[32m        else if (*ch > mirrored[k].first)[m
[32m+[m[32m            i = k;[m
[32m+[m[32m        else if(*ch == mirrored[k].first)[m
[32m+[m[32m        {[m
[32m+[m[32m            *ch = mirrored[k].mirror;[m
[32m+[m[32m            return;[m
[32m+[m[32m        }[m
[32m+[m[32m    }[m
[32m+[m[32m}[m
[32m+[m
 /*-----------------------------------------------------------------------[m
    Function:    mirror[m
 [m
[36m@@ -985,17 +1401,12 @@ static int reorder(int baselevel, LPWSTR pszText, const WORD* plevel, int cch)[m
 -----------------------------------------------------------------------*/[m
 static void mirror(LPWSTR pszInput, const WORD* plevel, int cch)[m
 {[m
[31m-    static int warn_once;[m
     int i;[m
 [m
     for (i = 0; i < cch; ++i)[m
     {[m
[31m-        if (!odd(plevel[i]))[m
[31m-            continue;[m
[31m-        /* This needs the data from http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt */[m
[31m-        if (!warn_once++)[m
[31m-            FIXME("stub: mirroring of characters not yet implemented\n");[m
[31m-        break;[m
[32m+[m[32m        if (odd(plevel[i]))[m
[32m+[m[32m            doMirror(&pszInput[i]);[m
     }[m
 }[m
 [m
