1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/********************************************************************
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * COPYRIGHT:
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Copyright (c) 1997-2007, International Business Machines Corporation and
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * others. All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************/
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*   file name:  cbididat.c
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   encoding:   US-ASCII
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   tab size:   8 (not used)
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   indentation:4
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   created on: 1999sep22
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   created by: Markus W. Scherer
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uchar.h"
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ubidi.h"
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "cbiditst.h"
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char * const
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerudirPropNames[U_CHAR_DIRECTION_COUNT]={
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    "L", "R", "EN", "ES", "ET", "AN", "CS", "B", "S", "WS", "ON",
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    "LRE", "LRO", "AL", "RLE", "RLO", "PDF", "NSM", "BN"
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruUChar
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerucharFromDirProp[U_CHAR_DIRECTION_COUNT]={
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* L     R      EN    ES    ET    AN     CS    B    S    WS    ON */
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0x61, 0x5d0, 0x30, 0x2f, 0x25, 0x660, 0x2c, 0xa, 0x9, 0x20, 0x26,
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* LRE     LRO     AL     RLE     RLO     PDF     NSM    BN */
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0x202a, 0x202d, 0x627, 0x202b, 0x202e, 0x202c, 0x308, 0x200c
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText1[]={
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, L, WS, L, WS, EN, L, B
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels1[]={
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 0, 0, 0, 0, 0
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap1[]={
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText2[]={
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    R, AL, WS, R, AL, WS, R
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels2[]={
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 1, 1, 1, 1, 1, 1
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap2[]={
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    6, 5, 4, 3, 2, 1, 0
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText3[]={
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels3[]={
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap3[]={
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText4[]={
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, AL, AL, AL, L, AL, AL, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels4[]={
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap4[]={
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 3, 2, 1, 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText5[]={
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    AL, R, AL, WS, EN, CS, WS, EN, CS, EN, WS, R, R, WS, L, L
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels5[]={
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap5[]={
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    15, 14, 13, 12, 11, 10, 9, 6, 7, 8, 5, 4, 3, 2, 0, 1
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText6[]={
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    R, EN, NSM, ET
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels6[]={
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 2, 2, 2
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap6[]={
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    3, 0, 1, 2
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if 0
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText7[]={
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /* empty */
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels7[]={
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap7[]={
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText8[]={
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RLE, WS, R, R, R, WS, PDF, WS, B
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels8[]={
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 1, 1, 1, 1, 1, 1, 1, 1
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap8[]={
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    8, 7, 6, 5, 4, 3, 2, 1, 0
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText9[]={
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    AN, RLO, NSM, LRE, PDF, RLE, ES, EN, ON
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels9[]={
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap9[]={
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, 6, 5, 4, 3, 2, 1, 0
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText10[]={
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LRE, BN, CS, RLO, S, PDF, EN, LRO, AN, ES
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels10[]={
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0, 0, 62, 62, 62, 62, 60
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap10[]={
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText11[]={
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    S, WS, NSM, RLE, WS, L, L, L, WS, LRO, WS, R, R, R, WS, RLO, WS, L, L,
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, WS, LRE, WS, R, R, R, WS, PDF, WS, L, L, L, WS, PDF, WS,
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    AL, AL, AL, WS, PDF, WS, L, L, L, WS, PDF, WS, L, L, L, WS, PDF,
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ON, PDF, BN, BN, ON, PDF
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels11[]={
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap11[]={
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 44, 43, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 30, 29, 28, 27, 26, 20, 21, 24, 23, 22, 25, 19, 18, 17, 16, 15, 14, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 3, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText12[]={
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS,
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    R, R, R, R, R, WS, L, L, L, L, L, L, L, WS, WS, AL,
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    AL, AL, AL, WS, EN, EN, ES, EN, EN, CS, S, EN, EN, CS, WS,
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    EN, EN, WS, AL, AL, AL, AL, AL, B, L, L, L, L, L, L,
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, L, WS, AN, AN, CS, AN, AN, WS
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels12[]={
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap12[]={
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels13[]={
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap13[]={
233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels14[]={
238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2
239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap14[]={
243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels15[]={
248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 5, 5, 6, 6, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5
249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap15[]={
253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    69, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, 54, 53, 52, 51, 50, 49, 42, 43, 44, 45, 46, 47, 48, 41, 40, 39, 38, 37, 36, 35, 33, 34, 32, 30, 31, 29, 28, 26, 27, 25, 24, 22, 23, 21, 20, 19, 18, 17, 16, 15, 7, 8, 9, 10, 11, 12, 13, 14, 6, 1, 2, 3, 4, 5, 0
254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels16[]={
258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0
259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap16[]={
263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35, 33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText13[]={
268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S, LRE, LRO, B
269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels17[]={
273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0
274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap17[]={
278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 15, 14, 13, 12, 11, 10, 4, 3, 2, 5, 6, 7, 8, 9, 16, 17, 18, 19
279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels18[]={
283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 0, 1, 1, 1, 0
284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap18[]={
288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0, 1, 4, 3, 2, 5
289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText14[]={
293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    RLO, RLO, AL, AL, WS, EN, ES, ON, WS, S, S, PDF, LRO, WS, AL, ET, RLE, ON, EN, B
294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels19[]={
298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1
299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap19[]={
303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0
304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText15[]={
308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    R, L, CS, L
309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
312ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels20[]={
313ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    2
314ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
315ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
316ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
317ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText16[]={
318ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L, L, L, WS, L, L, L, WS, L, L, L
319ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
320ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
321ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
322ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels21[]={
323ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    2, 2, 2, 2, 2, 2, 2, 1
324ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
325ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
326ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
327ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap20[]={
328ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 2, 3, 4, 5, 6, 7, 0
329ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
330ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
331ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
332ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestText17[]={
333ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    R, R, R, WS, R, R, R, WS, R, R, R
334ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
335ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
336ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
337ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevels22[]={
338ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    1, 1, 1, 1, 1, 1, 1, 0
339ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
340ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
341ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
342ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMap21[]={
343ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    6, 5, 4, 3, 2, 1, 0, 7
344ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
345ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
346ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
347ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestTextXX[]={
348ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    L
349ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
350ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
351ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UBiDiLevel
352ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestLevelsXX[]={
353ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    2
354ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
355ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
356ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const uint8_t
357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerutestVisualMapXX[]={
358ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    0
359ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
360ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
361ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst BiDiTestData
362ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutests[]={
363ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText1,  ARRAY_LENGTH(testText1),  UBIDI_DEFAULT_LTR, -1, -1,
364ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_LTR, 0,
365ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels1, testVisualMap1},
366ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText2,  ARRAY_LENGTH(testText2),  UBIDI_DEFAULT_LTR, -1, -1,
367ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_RTL, 1,
368ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels2, testVisualMap2},
369ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText3,  ARRAY_LENGTH(testText3),  UBIDI_DEFAULT_LTR, -1, -1,
370ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_LTR, 0,
371ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels3, testVisualMap3},
372ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText4,  ARRAY_LENGTH(testText4),  UBIDI_DEFAULT_LTR, -1, -1,
373ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
374ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels4, testVisualMap4},
375ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText5,  ARRAY_LENGTH(testText5),  UBIDI_DEFAULT_LTR, -1, -1,
376ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 1,
377ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels5, testVisualMap5},
378ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText6,  ARRAY_LENGTH(testText6),  UBIDI_DEFAULT_LTR, -1, -1,
379ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 1,
380ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels6, testVisualMap6},
381ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {NULL,       0,                        UBIDI_DEFAULT_LTR, -1, -1,
382ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_LTR, 0,
383ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        NULL, NULL},
384ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText8,  ARRAY_LENGTH(testText8),  UBIDI_DEFAULT_LTR, -1, -1,
385ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_RTL, 1,
386ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels8, testVisualMap8},
387ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText9,  ARRAY_LENGTH(testText9),  UBIDI_DEFAULT_LTR, -1, -1,
388ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
389ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels9, testVisualMap9},
390ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText10, ARRAY_LENGTH(testText10), UBIDI_DEFAULT_LTR, -1, -1,
391ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
392ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels10, testVisualMap10},
393ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText11, ARRAY_LENGTH(testText11), UBIDI_DEFAULT_LTR, -1, -1,
394ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
395ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels11, testVisualMap11},
396ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_LTR, -1, -1,
397ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
398ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels12, testVisualMap12},
399ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_RTL, -1, -1,
400ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
401ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels13, testVisualMap13},
402ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText12, ARRAY_LENGTH(testText12), 2, -1, -1,
403ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 2,
404ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels14, testVisualMap14},
405ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText12, ARRAY_LENGTH(testText12), 5, -1, -1,
406ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 5,
407ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels15, testVisualMap15},
408ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText12, ARRAY_LENGTH(testText12), UBIDI_DEFAULT_LTR, -1, -1,
409ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
410ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels16, testVisualMap16},
411ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText13, ARRAY_LENGTH(testText13), UBIDI_DEFAULT_LTR, -1, -1,
412ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
413ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels17, testVisualMap17},
414ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText13, ARRAY_LENGTH(testText13), UBIDI_DEFAULT_LTR, 0, 6,
415ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
416ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels18, testVisualMap18},
417ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText14, ARRAY_LENGTH(testText14), UBIDI_DEFAULT_LTR, 13, 14,
418ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_RTL, 1,
419ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels19, testVisualMap19},
420ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText15, ARRAY_LENGTH(testText15), UBIDI_DEFAULT_LTR, 2, 3,
421ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_LTR, 2,
422ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels20, testVisualMap19},
423ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText16, ARRAY_LENGTH(testText16), UBIDI_RTL, 0, 8,
424ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 1,
425ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels21, testVisualMap20},
426ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testText17, ARRAY_LENGTH(testText17), UBIDI_LTR, 0, 8,
427ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 0,
428ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        testLevels22, testVisualMap21},
429ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {testTextXX, ARRAY_LENGTH(testTextXX), UBIDI_RTL, -1, -1,
430ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UBIDI_MIXED, 1, testLevelsXX, testVisualMapXX}
431ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
432ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
433ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst int
434ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QuerubidiTestCount=ARRAY_LENGTH(tests);
435