[USP10]
authorAmine Khaldi <amine.khaldi@reactos.org>
Wed, 8 Oct 2014 18:56:19 +0000 (18:56 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Wed, 8 Oct 2014 18:56:19 +0000 (18:56 +0000)
* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64606

reactos/dll/win32/usp10/CMakeLists.txt
reactos/dll/win32/usp10/bidi.c
reactos/dll/win32/usp10/bracket.c [new file with mode: 0644]
reactos/dll/win32/usp10/breaking.c
reactos/dll/win32/usp10/indicsyllable.c
reactos/dll/win32/usp10/linebreak.c
reactos/dll/win32/usp10/mirror.c
reactos/dll/win32/usp10/shape.c
reactos/dll/win32/usp10/shaping.c
reactos/dll/win32/usp10/usp10.c
reactos/media/doc/README.WINE

index 2cf15aa..dd87e1e 100644 (file)
@@ -5,6 +5,7 @@ spec2def(usp10.dll usp10.spec ADD_IMPORTLIB)
 
 list(APPEND SOURCE
     bidi.c
+    bracket.c
     breaking.c
     indic.c
     indicsyllable.c
index 8d94fd2..60b9592 100644 (file)
@@ -47,6 +47,8 @@
 
 #include "usp10_internal.h"
 
+extern const unsigned short bidi_bracket_table[];
+
 WINE_DEFAULT_DEBUG_CHANNEL(bidi);
 
 #define ASSERT(x) do { if (!(x)) FIXME("assert failed: %s\n", #x); } while(0)
@@ -135,10 +137,15 @@ static const char debug_type[][4] =
 
 static inline void dump_types(const char* header, WORD *types, int start, int end)
 {
-    int i;
+    int i, len = 0;
     TRACE("%s:",header);
-    for (i = start; i< end; i++)
+    for (i = start; i < end && len < 200; i++)
+    {
         TRACE(" %s",debug_type[types[i]]);
+        len += strlen(debug_type[types[i]])+1;
+    }
+    if (i != end)
+        TRACE("...");
     TRACE("\n");
 }
 
@@ -454,6 +461,12 @@ typedef struct tagRun
     WORD e;
 } Run;
 
+typedef struct tagRunChar
+{
+    WCHAR ch;
+    WORD *pcls;
+} RunChar;
+
 typedef struct tagIsolatedRun
 {
     struct list entry;
@@ -462,14 +475,14 @@ typedef struct tagIsolatedRun
     WORD eos;
     WORD e;
 
-    WORD *ppcls[1];
+    RunChar item[1];
 } IsolatedRun;
 
 static inline int iso_nextValidChar(IsolatedRun *iso_run, int index)
 {
     if (index >= (iso_run->length-1)) return -1;
     index ++;
-    while (index < iso_run->length && *iso_run->ppcls[index] == BN) index++;
+    while (index < iso_run->length && *iso_run->item[index].pcls == BN) index++;
     if (index == iso_run->length) return -1;
     return index;
 }
@@ -479,7 +492,7 @@ static inline int iso_previousValidChar(IsolatedRun *iso_run, int index)
 
     if (index <= 0) return -1;
     index --;
-    while (index > -1 && *iso_run->ppcls[index] == BN) index--;
+    while (index > -1 && *iso_run->item[index].pcls == BN) index--;
     return index;
 }
 
@@ -491,11 +504,16 @@ static inline int iso_previousChar(IsolatedRun *iso_run, int index)
 
 static inline void iso_dump_types(const char* header, IsolatedRun *iso_run)
 {
-    int i;
+    int i, len = 0;
     TRACE("%s:",header);
     TRACE("[ ");
-    for (i = 0; i < iso_run->length; i++)
-        TRACE(" %s",debug_type[*iso_run->ppcls[i]]);
+    for (i = 0; i < iso_run->length && len < 200; i++)
+    {
+        TRACE(" %s",debug_type[*iso_run->item[i].pcls]);
+        len += strlen(debug_type[*iso_run->item[i].pcls])+1;
+    }
+    if (i != iso_run->length)
+        TRACE("...");
     TRACE(" ]\n");
 }
 
@@ -522,30 +540,30 @@ static void resolveWeak(IsolatedRun * iso_run)
     /* W1 */
     for (i=0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == NSM)
+        if (*iso_run->item[i].pcls == NSM)
         {
             int j = iso_previousValidChar(iso_run, i);
             if (j == -1)
-                *iso_run->ppcls[i] = iso_run->sos;
-            else if (*iso_run->ppcls[j] >= LRI)
-                *iso_run->ppcls[i] = ON;
+                *iso_run->item[i].pcls = iso_run->sos;
+            else if (*iso_run->item[j].pcls >= LRI)
+                *iso_run->item[i].pcls = ON;
             else
-                *iso_run->ppcls[i] = *iso_run->ppcls[j];
+                *iso_run->item[i].pcls = *iso_run->item[j].pcls;
         }
     }
 
     /* W2 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == EN)
+        if (*iso_run->item[i].pcls == EN)
         {
             int j = iso_previousValidChar(iso_run, i);
             while (j > -1)
             {
-                if (*iso_run->ppcls[j] == R || *iso_run->ppcls[j] == L || *iso_run->ppcls[j] == AL)
+                if (*iso_run->item[j].pcls == R || *iso_run->item[j].pcls == L || *iso_run->item[j].pcls == AL)
                 {
-                    if (*iso_run->ppcls[j] == AL)
-                        *iso_run->ppcls[i] = AN;
+                    if (*iso_run->item[j].pcls == AL)
+                        *iso_run->item[i].pcls = AN;
                     break;
                 }
                 j = iso_previousValidChar(iso_run, j);
@@ -556,53 +574,53 @@ static void resolveWeak(IsolatedRun * iso_run)
     /* W3 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == AL)
-            *iso_run->ppcls[i] = R;
+        if (*iso_run->item[i].pcls == AL)
+            *iso_run->item[i].pcls = R;
     }
 
     /* W4 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == ES)
+        if (*iso_run->item[i].pcls == ES)
         {
             int b = iso_previousValidChar(iso_run, i);
             int f = iso_nextValidChar(iso_run, i);
 
-            if (b > -1 && f > -1 && *iso_run->ppcls[b] == EN && *iso_run->ppcls[f] == EN)
-                *iso_run->ppcls[i] = EN;
+            if (b > -1 && f > -1 && *iso_run->item[b].pcls == EN && *iso_run->item[f].pcls == EN)
+                *iso_run->item[i].pcls = EN;
         }
-        else if (*iso_run->ppcls[i] == CS)
+        else if (*iso_run->item[i].pcls == CS)
         {
             int b = iso_previousValidChar(iso_run, i);
             int f = iso_nextValidChar(iso_run, i);
 
-            if (b > -1 && f > -1 && *iso_run->ppcls[b] == EN && *iso_run->ppcls[f] == EN)
-                *iso_run->ppcls[i] = EN;
-            else if (b > -1 && f > -1 && *iso_run->ppcls[b] == AN && *iso_run->ppcls[f] == AN)
-                *iso_run->ppcls[i] = AN;
+            if (b > -1 && f > -1 && *iso_run->item[b].pcls == EN && *iso_run->item[f].pcls == EN)
+                *iso_run->item[i].pcls = EN;
+            else if (b > -1 && f > -1 && *iso_run->item[b].pcls == AN && *iso_run->item[f].pcls == AN)
+                *iso_run->item[i].pcls = AN;
         }
     }
 
     /* W5 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == ET)
+        if (*iso_run->item[i].pcls == ET)
         {
             int j;
             for (j = i-1 ; j > -1; j--)
             {
-                if (*iso_run->ppcls[j] == BN) continue;
-                if (*iso_run->ppcls[j] == ET) continue;
-                else if (*iso_run->ppcls[j] == EN) *iso_run->ppcls[i] = EN;
+                if (*iso_run->item[j].pcls == BN) continue;
+                if (*iso_run->item[j].pcls == ET) continue;
+                else if (*iso_run->item[j].pcls == EN) *iso_run->item[i].pcls = EN;
                 else break;
             }
-            if (*iso_run->ppcls[i] == ET)
+            if (*iso_run->item[i].pcls == ET)
             {
                 for (j = i+1; j < iso_run->length; j++)
                 {
-                    if (*iso_run->ppcls[j] == BN) continue;
-                    if (*iso_run->ppcls[j] == ET) continue;
-                    else if (*iso_run->ppcls[j] == EN) *iso_run->ppcls[i] = EN;
+                    if (*iso_run->item[j].pcls == BN) continue;
+                    if (*iso_run->item[j].pcls == ET) continue;
+                    else if (*iso_run->item[j].pcls == EN) *iso_run->item[i].pcls = EN;
                     else break;
                 }
             }
@@ -612,38 +630,118 @@ static void resolveWeak(IsolatedRun * iso_run)
     /* W6 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == ET || *iso_run->ppcls[i] == ES || *iso_run->ppcls[i] == CS || *iso_run->ppcls[i] == ON)
+        if (*iso_run->item[i].pcls == ET || *iso_run->item[i].pcls == ES || *iso_run->item[i].pcls == CS || *iso_run->item[i].pcls == ON)
         {
             int b = i-1;
             int f = i+1;
-            if (b > -1 && *iso_run->ppcls[b] == BN)
-                *iso_run->ppcls[b] = ON;
-            if (f < iso_run->length && *iso_run->ppcls[f] == BN)
-                *iso_run->ppcls[f] = ON;
+            if (b > -1 && *iso_run->item[b].pcls == BN)
+                *iso_run->item[b].pcls = ON;
+            if (f < iso_run->length && *iso_run->item[f].pcls == BN)
+                *iso_run->item[f].pcls = ON;
 
-            *iso_run->ppcls[i] = ON;
+            *iso_run->item[i].pcls = ON;
         }
     }
 
     /* W7 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == EN)
+        if (*iso_run->item[i].pcls == EN)
         {
             int j;
             for (j = iso_previousValidChar(iso_run, i); j > -1; j = iso_previousValidChar(iso_run, j))
-                if (*iso_run->ppcls[j] == R || *iso_run->ppcls[j] == L)
+                if (*iso_run->item[j].pcls == R || *iso_run->item[j].pcls == L)
                 {
-                    if (*iso_run->ppcls[j] == L)
-                        *iso_run->ppcls[i] = L;
+                    if (*iso_run->item[j].pcls == L)
+                        *iso_run->item[i].pcls = L;
                     break;
                 }
             if (iso_run->sos == L &&  j == -1)
-                *iso_run->ppcls[i] = L;
+                *iso_run->item[i].pcls = L;
+        }
+    }
+}
+
+typedef struct tagBracketPair
+{
+    int start;
+    int end;
+} BracketPair;
+
+static int compr(const void *a, const void* b)
+{
+    return ((BracketPair*)a)->start - ((BracketPair*)b)->start;
+}
+
+static BracketPair *computeBracketPairs(IsolatedRun *iso_run)
+{
+    WCHAR *open_stack;
+    int *stack_index;
+    int stack_top = iso_run->length;
+    BracketPair *out = NULL;
+    int pair_count = 0;
+    int i;
+
+    open_stack = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * iso_run->length);
+    stack_index = HeapAlloc(GetProcessHeap(), 0, sizeof(int) * iso_run->length);
+
+    for (i = 0; i < iso_run->length; i++)
+    {
+        unsigned short ubv = get_table_entry(bidi_bracket_table, iso_run->item[i].ch);
+        if (ubv)
+        {
+            if (!out)
+            {
+                out = HeapAlloc(GetProcessHeap(),0,sizeof(BracketPair));
+                out[0].start = -1;
+            }
+
+            if ((ubv >> 8) == 0)
+            {
+                stack_top --;
+                open_stack[stack_top] = iso_run->item[i].ch + (signed char)(ubv & 0xff);
+                /* deal with canonical equivalent U+2329/232A and U+3008/3009 */
+                if (open_stack[stack_top] == 0x232A)
+                    open_stack[stack_top] = 0x3009;
+                stack_index[stack_top] = i;
+            }
+            else if ((ubv >> 8) == 1)
+            {
+                int j;
+                if (stack_top == iso_run->length) continue;
+                for (j = stack_top; j < iso_run->length; j++)
+                {
+                    WCHAR c = iso_run->item[i].ch;
+                    if (c == 0x232A) c = 0x3009;
+                    if (c == open_stack[j])
+                    {
+                        out[pair_count].start = stack_index[j];
+                        out[pair_count].end = i;
+                        pair_count++;
+                        out = HeapReAlloc(GetProcessHeap(), 0, out, sizeof(BracketPair) * (pair_count+1));
+                        out[pair_count].start = -1;
+                        stack_top = j+1;
+                        break;
+                    }
+                }
+            }
         }
     }
+    if (pair_count == 0)
+    {
+        HeapFree(GetProcessHeap(),0,out);
+        out = NULL;
+    }
+    else if (pair_count > 1)
+        qsort(out, pair_count, sizeof(BracketPair), compr);
+
+    HeapFree(GetProcessHeap(), 0, open_stack);
+    HeapFree(GetProcessHeap(), 0, stack_index);
+    return out;
 }
 
+#define N0_TYPE(a) ((a == AN || a == EN)?R:a)
+
 /*------------------------------------------------------------------------
     Function: resolveNeutrals
 
@@ -665,31 +763,87 @@ static void resolveWeak(IsolatedRun * iso_run)
 static void resolveNeutrals(IsolatedRun *iso_run)
 {
     int i;
+    BracketPair *pairs = NULL;
 
     /* Translate isolates into NI */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] >= LRI)
-            *iso_run->ppcls[i] = NI;
+        if (*iso_run->item[i].pcls >= LRI)
+            *iso_run->item[i].pcls = NI;
 
-        switch(*iso_run->ppcls[i])
+        switch(*iso_run->item[i].pcls)
         {
             case B:
             case S:
-            case WS: *iso_run->ppcls[i] = NI;
+            case WS: *iso_run->item[i].pcls = NI;
         }
 
-        ASSERT(*iso_run->ppcls[i] < 5 || *iso_run->ppcls[i] == BN); /* "Only NI, L, R,  AN, EN and BN are allowed" */
+        ASSERT(*iso_run->item[i].pcls < 5 || *iso_run->item[i].pcls == BN); /* "Only NI, L, R,  AN, EN and BN are allowed" */
     }
 
     /* N0: Skipping bracketed pairs for now */
+    pairs = computeBracketPairs(iso_run);
+    if (pairs)
+    {
+        BracketPair *p = &pairs[0];
+        int i = 0;
+        while (p->start >= 0)
+        {
+            int j;
+            int e = EmbeddingDirection(iso_run->e);
+            int o = EmbeddingDirection(iso_run->e+1);
+            BOOL flag_o = FALSE;
+            TRACE("Bracket Pair [%i - %i]\n",p->start, p->end);
+
+            /* N0.b */
+            for (j = p->start+1; j < p->end; j++)
+            {
+                if (N0_TYPE(*iso_run->item[j].pcls) == e)
+                {
+                    *iso_run->item[p->start].pcls = e;
+                    *iso_run->item[p->end].pcls = e;
+                    break;
+                }
+                else if (N0_TYPE(*iso_run->item[j].pcls) == o)
+                    flag_o = TRUE;
+            }
+            /* N0.c */
+            if (j == p->end && flag_o)
+            {
+                for (j = p->start; j >= 0; j--)
+                {
+                    if (N0_TYPE(*iso_run->item[j].pcls) == o)
+                    {
+                        *iso_run->item[p->start].pcls = o;
+                        *iso_run->item[p->end].pcls = o;
+                        break;
+                    }
+                    else if (N0_TYPE(*iso_run->item[j].pcls) == e)
+                    {
+                        *iso_run->item[p->start].pcls = e;
+                        *iso_run->item[p->end].pcls = e;
+                        break;
+                    }
+                }
+                if ( j < 0 )
+                {
+                    *iso_run->item[p->start].pcls = iso_run->sos;
+                    *iso_run->item[p->end].pcls = iso_run->sos;
+                }
+            }
+
+            i++;
+            p = &pairs[i];
+        }
+        HeapFree(GetProcessHeap(),0,pairs);
+    }
 
     /* N1 */
     for (i = 0; i < iso_run->length; i++)
     {
         WORD l,r;
 
-        if (*iso_run->ppcls[i] == NI)
+        if (*iso_run->item[i].pcls == NI)
         {
             int j;
             int b = iso_previousValidChar(iso_run, i);
@@ -701,24 +855,24 @@ static void resolveNeutrals(IsolatedRun *iso_run)
             }
             else
             {
-                if (*iso_run->ppcls[b] == R || *iso_run->ppcls[b] == AN || *iso_run->ppcls[b] == EN)
+                if (*iso_run->item[b].pcls == R || *iso_run->item[b].pcls == AN || *iso_run->item[b].pcls == EN)
                     l = R;
-                else if (*iso_run->ppcls[b] == L)
+                else if (*iso_run->item[b].pcls == L)
                     l = L;
                 else /* No string type */
                     continue;
             }
             j = iso_nextValidChar(iso_run, i);
-            while (j > -1 && *iso_run->ppcls[j] == NI) j = iso_nextValidChar(iso_run, j);
+            while (j > -1 && *iso_run->item[j].pcls == NI) j = iso_nextValidChar(iso_run, j);
 
             if (j == -1)
             {
                 r = iso_run->eos;
                 j = iso_run->length;
             }
-            else if (*iso_run->ppcls[j] == R || *iso_run->ppcls[j] == AN || *iso_run->ppcls[j] == EN)
+            else if (*iso_run->item[j].pcls == R || *iso_run->item[j].pcls == AN || *iso_run->item[j].pcls == EN)
                 r = R;
-            else if (*iso_run->ppcls[j] == L)
+            else if (*iso_run->item[j].pcls == L)
                 r = L;
             else /* No string type */
                 continue;
@@ -726,7 +880,7 @@ static void resolveNeutrals(IsolatedRun *iso_run)
             if (r == l)
             {
                 for (b = i; b < j && b < iso_run->length; b++)
-                    *iso_run->ppcls[b] = r;
+                    *iso_run->item[b].pcls = r;
             }
         }
     }
@@ -734,15 +888,15 @@ static void resolveNeutrals(IsolatedRun *iso_run)
     /* N2 */
     for (i = 0; i < iso_run->length; i++)
     {
-        if (*iso_run->ppcls[i] == NI)
+        if (*iso_run->item[i].pcls == NI)
         {
             int b = i-1;
             int f = i+1;
-            *iso_run->ppcls[i] = EmbeddingDirection(iso_run->e);
-            if (b > -1 && *iso_run->ppcls[b] == BN)
-                *iso_run->ppcls[b] = EmbeddingDirection(iso_run->e);
-            if (f < iso_run->length && *iso_run->ppcls[f] == BN)
-                *iso_run->ppcls[f] = EmbeddingDirection(iso_run->e);
+            *iso_run->item[i].pcls = EmbeddingDirection(iso_run->e);
+            if (b > -1 && *iso_run->item[b].pcls == BN)
+                *iso_run->item[b].pcls = EmbeddingDirection(iso_run->e);
+            if (f < iso_run->length && *iso_run->item[f].pcls == BN)
+                *iso_run->item[f].pcls = EmbeddingDirection(iso_run->e);
         }
     }
 }
@@ -816,7 +970,7 @@ static void resolveResolved(unsigned baselevel, const WORD * pcls, WORD *plevel,
     }
 }
 
-static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel, int uCount, struct list *set)
+static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel, LPCWSTR lpString, int uCount, struct list *set)
 {
     int run_start, run_end, i;
     int run_count = 0;
@@ -851,7 +1005,7 @@ static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel
         {
             int type_fence, real_end;
             int j;
-            current_isolated = HeapAlloc(GetProcessHeap(), 0, sizeof(IsolatedRun) + sizeof(WORD*)*uCount);
+            current_isolated = HeapAlloc(GetProcessHeap(), 0, sizeof(IsolatedRun) + sizeof(RunChar)*uCount);
             if (!current_isolated) break;
 
             run_start = runs[k].start;
@@ -859,7 +1013,10 @@ static void computeIsolatingRunsSet(unsigned baselevel, WORD *pcls, WORD *pLevel
             current_isolated->length = (runs[k].end - runs[k].start)+1;
 
             for (j = 0; j < current_isolated->length;  j++)
-                current_isolated->ppcls[j] = &pcls[runs[k].start+j];
+            {
+                current_isolated->item[j].pcls = &pcls[runs[k].start+j];
+                current_isolated->item[j].ch = lpString[runs[k].start+j];
+            }
 
             run_end = runs[k].end;
 
@@ -886,7 +1043,10 @@ search:
 
                     current_isolated->length += (runs[j].end - runs[j].start)+1;
                     for (m = 0; l < current_isolated->length; l++, m++)
-                        current_isolated->ppcls[l] = &pcls[runs[j].start+m];
+                    {
+                        current_isolated->item[l].pcls = &pcls[runs[j].start+m];
+                        current_isolated->item[l].ch = lpString[runs[j].start+m];
+                    }
 
                     TRACE("[%i -- %i]",runs[j].start, runs[j].end);
 
@@ -979,7 +1139,7 @@ BOOL BIDI_DetermineLevels(
     if (TRACE_ON(bidi)) dump_types("After Explicit", chartype, 0, uCount);
 
     /* X10/BD13: Computer Isolating runs */
-    computeIsolatingRunsSet(baselevel, chartype, lpOutLevels, uCount, &IsolatingRuns);
+    computeIsolatingRunsSet(baselevel, chartype, lpOutLevels, lpString, uCount, &IsolatingRuns);
 
     LIST_FOR_EACH_ENTRY_SAFE(iso_run, next, &IsolatingRuns, IsolatedRun, entry)
     {
diff --git a/reactos/dll/win32/usp10/bracket.c b/reactos/dll/win32/usp10/bracket.c
new file mode 100644 (file)
index 0000000..20df6fa
--- /dev/null
@@ -0,0 +1,106 @@
+/* Unicode Bidirectional Bracket table */
+/* generated from http://www.unicode.org/Public/7.0.0/ucd/BidiBrackets.txt */
+/* DO NOT EDIT!! */
+
+const unsigned short bidi_bracket_table[768] =
+{
+    /* level 1 offsets */
+    0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0120,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0130, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0140, 0x0110, 0x0110, 0x0150, 0x0110, 0x0110, 0x0110, 0x0160,
+    0x0110, 0x0170, 0x0110, 0x0110, 0x0110, 0x0110, 0x0180, 0x0110,
+    0x0190, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x01a0, 0x01b0,
+    /* level 2 offsets */
+    0x01c0, 0x01c0, 0x01d0, 0x01c0, 0x01c0, 0x01e0, 0x01c0, 0x01e0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01f0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x0200, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x0210, 0x01c0, 0x01c0, 0x0220,
+    0x0220, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x0230, 0x01c0, 0x0240, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x0250, 0x0260,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x0210, 0x01c0, 0x0270, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x0280, 0x0290, 0x01c0, 0x01c0, 0x01c0, 0x0230, 0x01c0, 0x02a0,
+    0x01c0, 0x01c0, 0x02b0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x0250, 0x02c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x02d0, 0x01c0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    0x01d0, 0x01c0, 0x01c0, 0x01e0, 0x01c0, 0x02e0, 0x02f0, 0x01c0,
+    0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0,
+    /* values */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x01fd, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x01fe, 0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe,
+    0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x01fe,
+    0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe,
+    0x0000, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001,
+    0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0003, 0x0101, 0x00fe,
+    0x01fc, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001,
+    0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe,
+    0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x01fe, 0x0000, 0x0000, 0x0001, 0x01fe, 0x0001, 0x01fe,
+    0x0001, 0x01fe, 0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0001, 0x01fe, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x01fd, 0x0000, 0x0001,
+    0x01fe, 0x0000, 0x0001, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
index e60b390..815c0c2 100644 (file)
@@ -265,6 +265,7 @@ void BREAK_line(const WCHAR *chars, int count, const SCRIPT_ANALYSIS *sa, SCRIPT
                 else_break(&break_before[i],b_s);
                 if (i < count-1)
                     else_break(&break_before[i+1],b_s);
+                break;
             /* LB21 */
             case b_BA:
             case b_HY:
index c6beeb9..821a10f 100644 (file)
@@ -1,18 +1,16 @@
 /* Unicode Indic Syllabic Category */
-/* generated from http://www.unicode.org/Public/6.3.0/ucd/IndicSyllabicCategory.txt */
-/*       and from http://www.unicode.org/Public/6.3.0/ucd/IndicMatraCategory.txt */
+/* generated from http://www.unicode.org/Public/7.0.0/ucd/IndicSyllabicCategory.txt */
+/*       and from http://www.unicode.org/Public/7.0.0/ucd/IndicMatraCategory.txt */
 /* DO NOT EDIT!! */
 
-//#include "wine/unicode.h"
-
-const unsigned short indic_syllabic_table[2704] =
+const unsigned short indic_syllabic_table[2864] =
 {
     /* level 1 offsets */
     0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170, 0x0180,
     0x0190, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x01a0,
     0x0110, 0x01b0, 0x01c0, 0x01d0, 0x01e0, 0x0110, 0x0110, 0x0110,
-    0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x01f0, 0x0110, 0x0110,
+    0x01f0, 0x0110, 0x0110, 0x0110, 0x0110, 0x0200, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
@@ -29,7 +27,7 @@ const unsigned short indic_syllabic_table[2704] =
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
-    0x0200, 0x0210, 0x0220, 0x0230, 0x0110, 0x0110, 0x0110, 0x0110,
+    0x0210, 0x0220, 0x0230, 0x0240, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
@@ -41,53 +39,61 @@ const unsigned short indic_syllabic_table[2704] =
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
     /* level 2 offsets */
-    0x0240, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0260, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0270, 0x0280, 0x0290, 0x02a0, 0x02b0, 0x02c0, 0x02d0, 0x02e0,
-    0x02f0, 0x0300, 0x0310, 0x0320, 0x0330, 0x0340, 0x02d0, 0x0350,
-    0x0360, 0x0300, 0x0310, 0x0370, 0x0380, 0x0390, 0x0250, 0x03a0,
-    0x03b0, 0x03c0, 0x0310, 0x03d0, 0x03e0, 0x0250, 0x02d0, 0x0250,
-    0x02f0, 0x0300, 0x0310, 0x03f0, 0x0400, 0x0410, 0x02d0, 0x0420,
-    0x0430, 0x0440, 0x0450, 0x0460, 0x0470, 0x0480, 0x0250, 0x0250,
-    0x0490, 0x04a0, 0x0310, 0x04b0, 0x04c0, 0x04d0, 0x02d0, 0x0250,
-    0x04e0, 0x04a0, 0x0310, 0x04f0, 0x0500, 0x0510, 0x02d0, 0x0250,
-    0x04e0, 0x04a0, 0x0290, 0x0520, 0x0530, 0x0480, 0x02d0, 0x0540,
-    0x0550, 0x0560, 0x0290, 0x0570, 0x0580, 0x0590, 0x0250, 0x05a0,
-    0x05b0, 0x0290, 0x05c0, 0x05d0, 0x05e0, 0x0250, 0x0250, 0x0250,
-    0x05f0, 0x0600, 0x0610, 0x0620, 0x0630, 0x0640, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0650, 0x0290, 0x0660, 0x0670,
-    0x0680, 0x0690, 0x06a0, 0x06b0, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0290, 0x0290, 0x06c0, 0x06d0, 0x0250, 0x06e0, 0x06f0, 0x0700,
-    0x0710, 0x0720, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0730, 0x0740, 0x0750, 0x0740, 0x0750, 0x0760, 0x0730, 0x0770,
-    0x0290, 0x0290, 0x0780, 0x0790, 0x07a0, 0x07b0, 0x0250, 0x0250,
-    0x07c0, 0x0660, 0x07d0, 0x07e0, 0x0250, 0x0290, 0x07f0, 0x0800,
-    0x0250, 0x0250, 0x0250, 0x0810, 0x0820, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0830, 0x0250, 0x0250, 0x0250, 0x0840, 0x0850, 0x0860,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0870, 0x0250, 0x0250, 0x0880, 0x0890, 0x0250, 0x0250, 0x0250,
-    0x08a0, 0x0250, 0x08b0, 0x08c0, 0x0250, 0x0250, 0x08d0, 0x08e0,
-    0x0250, 0x0250, 0x08f0, 0x0900, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0910,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0920, 0x0250, 0x0250, 0x0250,
-    0x0930, 0x0250, 0x0940, 0x0250, 0x0250, 0x0250, 0x0950, 0x0960,
-    0x0970, 0x0250, 0x0250, 0x0980, 0x0990, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x09a0, 0x09b0, 0x0250, 0x0250,
-    0x09c0, 0x0250, 0x0250, 0x09d0, 0x09e0, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x09f0, 0x0a00, 0x0a10, 0x0250, 0x0250, 0x0a20,
-    0x0250, 0x0250, 0x0250, 0x0a30, 0x0a40, 0x0250, 0x0a50, 0x0a60,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
-    0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0a70, 0x0a80, 0x0250,
+    0x0250, 0x0260, 0x0270, 0x0280, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0290, 0x0260, 0x0260, 0x02a0, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x02b0, 0x02c0, 0x02d0, 0x02e0, 0x02f0, 0x0300, 0x0310, 0x0320,
+    0x0330, 0x0340, 0x0350, 0x0360, 0x0370, 0x0380, 0x0310, 0x0390,
+    0x03a0, 0x0340, 0x0350, 0x03b0, 0x03c0, 0x03d0, 0x03e0, 0x03f0,
+    0x0400, 0x0410, 0x0350, 0x0420, 0x0430, 0x0260, 0x0310, 0x0260,
+    0x0330, 0x0340, 0x0350, 0x0440, 0x0450, 0x0460, 0x0310, 0x0470,
+    0x0480, 0x0490, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x03e0, 0x0260,
+    0x04e0, 0x04f0, 0x0350, 0x0500, 0x0510, 0x0520, 0x0310, 0x0260,
+    0x0530, 0x04f0, 0x0350, 0x0540, 0x0550, 0x0560, 0x0310, 0x0260,
+    0x0530, 0x04f0, 0x02d0, 0x0570, 0x0580, 0x04d0, 0x0310, 0x0590,
+    0x05a0, 0x05b0, 0x02d0, 0x05c0, 0x05d0, 0x05e0, 0x03e0, 0x05f0,
+    0x0600, 0x02d0, 0x0610, 0x0620, 0x0630, 0x0280, 0x0260, 0x0260,
+    0x0640, 0x0650, 0x0660, 0x0670, 0x0680, 0x0690, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x06a0, 0x06b0, 0x06c0, 0x02d0, 0x06d0, 0x06e0,
+    0x06f0, 0x0700, 0x0710, 0x0720, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x02d0, 0x02d0, 0x0730, 0x0740, 0x0750, 0x0760, 0x0770, 0x0780,
+    0x0790, 0x07a0, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x07b0, 0x07c0, 0x07d0, 0x07c0, 0x07d0, 0x07e0, 0x07b0, 0x07f0,
+    0x02d0, 0x02d0, 0x0800, 0x0810, 0x0820, 0x0830, 0x0280, 0x0260,
+    0x0840, 0x0610, 0x0850, 0x0860, 0x03e0, 0x02d0, 0x0870, 0x0880,
+    0x0260, 0x0260, 0x0260, 0x0890, 0x08a0, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x08b0, 0x0260, 0x0260, 0x0260, 0x08c0, 0x08d0, 0x08e0,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x08f0, 0x0260, 0x0260, 0x0900, 0x0910, 0x0260, 0x0260, 0x0260,
+    0x0920, 0x0260, 0x0930, 0x0940, 0x0260, 0x0260, 0x0950, 0x0960,
+    0x0260, 0x0260, 0x0970, 0x0980, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0990, 0x09a0,
+    0x09b0, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x09c0, 0x0260, 0x0260, 0x0260,
+    0x09d0, 0x0260, 0x09e0, 0x0260, 0x0260, 0x0260, 0x09f0, 0x0a00,
+    0x0a10, 0x0260, 0x0260, 0x0a20, 0x0a30, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0a40, 0x0a50, 0x0260, 0x0260,
+    0x0a60, 0x0260, 0x0260, 0x0a70, 0x0a80, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0a90, 0x0aa0, 0x0ab0, 0x0260, 0x0260, 0x0ac0,
+    0x0260, 0x0260, 0x0260, 0x0ad0, 0x0ae0, 0x0260, 0x0af0, 0x0b00,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260,
+    0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0b10, 0x0b20, 0x0260,
     /* values */
-    0x4d00, 0x8700, 0x8000, 0x8000, 0x7100, 0x7100, 0x7100, 0x7100,
-    0x6900, 0x5900, 0x4800, 0x3f00, 0x3000, 0x1f00, 0x1300, 0x0a00,
+    0x5f00, 0x9900, 0x9200, 0x9200, 0x8300, 0x8300, 0x8300, 0x8300,
+    0x7b00, 0x6b00, 0x5a00, 0x5100, 0x4200, 0x2d00, 0x1700, 0x0a00,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0001, 0x0001, 0x0001, 0x0002, 0x0006, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a,
@@ -98,12 +104,12 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x000a, 0x0507, 0x0107, 0x0004, 0x0003, 0x0107, 0x0207,
     0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0507, 0x0507, 0x0507,
     0x0507, 0x0107, 0x0107, 0x0107, 0x0107, 0x0605, 0x0207, 0x0107,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0607, 0x0607,
+    0x0000, 0x0013, 0x0013, 0x0000, 0x0000, 0x0507, 0x0607, 0x0607,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
-    0x0006, 0x0006, 0x0607, 0x0607, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0006, 0x0006, 0x0607, 0x0607, 0x0000, 0x0000, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
-    0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+    0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006,
     0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a,
@@ -126,7 +132,9 @@ const unsigned short indic_syllabic_table[2704] =
     0x0507, 0x0000, 0x0000, 0x0507, 0x0507, 0x0605, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000,
-    0x0001, 0x0000, 0x0009, 0x0009, 0x0000, 0x000e, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x0001, 0x0518, 0x0009, 0x0009, 0x0000, 0x000e, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006,
@@ -156,17 +164,17 @@ const unsigned short indic_syllabic_table[2704] =
     0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
+    0x0001, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006,
     0x0006, 0x0000, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
-    0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a,
+    0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0003, 0x0507, 0x0507,
     0x0507, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0507, 0x0507,
     0x0007, 0x0000, 0x0507, 0x0507, 0x0507, 0x0505, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0607, 0x0000,
     0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
+    0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006,
     0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0003, 0x0107, 0x0507,
@@ -177,7 +185,7 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0003, 0x0107, 0x0107,
     0x0107, 0x0107, 0x0107, 0x0607, 0x0607, 0x0000, 0x0207, 0x0207,
-    0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x000c, 0x0000,
+    0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0015, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
     0x0000, 0x0000, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006,
@@ -189,7 +197,7 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000,
     0x0000, 0x0000, 0x0505, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107,
     0x0107, 0x0107, 0x0507, 0x0507, 0x0607, 0x0000, 0x0607, 0x0000,
-    0x0107, 0x0207, 0x0007, 0x0207, 0x0407, 0x0407, 0x0407, 0x0107,
+    0x0107, 0x0207, 0x0007, 0x0207, 0x0007, 0x0007, 0x0007, 0x0107,
     0x0000, 0x0000, 0x0107, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -197,9 +205,9 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000,
     0x0107, 0x0507, 0x0107, 0x0107, 0x0507, 0x0507, 0x0507, 0x0507,
-    0x0607, 0x0607, 0x0605, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0607, 0x0607, 0x0616, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0107, 0x0000, 0x0507,
-    0x0013, 0x0013, 0x0013, 0x0013, 0x0000, 0x0001, 0x0505, 0x0000,
+    0x0013, 0x0013, 0x0013, 0x0013, 0x0000, 0x0001, 0x0516, 0x0000,
     0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x000a,
     0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -210,15 +218,19 @@ const unsigned short indic_syllabic_table[2704] =
     0x0607, 0x0607, 0x0000, 0x0507, 0x000e, 0x000e, 0x0000, 0x0000,
     0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0000, 0x0000, 0x0000,
     0x0013, 0x0013, 0x0013, 0x0013, 0x0000, 0x0001, 0x0000, 0x0000,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x0000,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0607, 0x0507, 0x0007, 0x0607, 0x0607, 0x0707, 0x0707,
     0x0707, 0x0707, 0x0507, 0x0507, 0x0507, 0x0507, 0x0001, 0x0002,
-    0x0507, 0x0007, 0x0001, 0x0001, 0x0605, 0x0003, 0x0000, 0x0000,
+    0x0507, 0x0007, 0x0001, 0x0001, 0x0616, 0x0003, 0x0000, 0x0000,
     0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x000d, 0x000d, 0x000d,
     0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
     0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
@@ -229,7 +241,9 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
     0x0006, 0x0006, 0x0006, 0x0107, 0x0107, 0x0507, 0x0507, 0x0607,
     0x0607, 0x0207, 0x0507, 0x0507, 0x0507, 0x0507, 0x0001, 0x0013,
-    0x0002, 0x0e05, 0x0505, 0x000e, 0x000e, 0x000e, 0x000e, 0x000a,
+    0x0002, 0x0017, 0x0516, 0x000e, 0x000e, 0x000e, 0x000e, 0x000a,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000,
     0x000a, 0x000a, 0x0006, 0x0006, 0x0006, 0x0006, 0x0107, 0x0107,
     0x0607, 0x0607, 0x000a, 0x000a, 0x000a, 0x000a, 0x000e, 0x000e,
     0x000e, 0x000a, 0x0107, 0x0013, 0x0013, 0x000a, 0x000a, 0x0107,
@@ -238,11 +252,11 @@ const unsigned short indic_syllabic_table[2704] =
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000e, 0x0107, 0x0207, 0x0507, 0x0507, 0x0013,
     0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x000a, 0x0013,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0013, 0x0013, 0x0107, 0x0507, 0x0000, 0x0000,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0013, 0x0013, 0x0107, 0x0507, 0x0000, 0x0000,
     0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a,
-    0x000a, 0x000a, 0x0507, 0x0607, 0x0605, 0x0000, 0x0000, 0x0000,
+    0x000a, 0x000a, 0x0507, 0x0607, 0x0616, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -255,8 +269,8 @@ const unsigned short indic_syllabic_table[2704] =
     0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0107, 0x0507,
     0x0507, 0x0507, 0x0507, 0x0607, 0x0607, 0x0607, 0x0007, 0x0007,
     0x0007, 0x0207, 0x0207, 0x0207, 0x0407, 0x0407, 0x0001, 0x0002,
-    0x0107, 0x0014, 0x0014, 0x0000, 0x000c, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0505, 0x0e05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0107, 0x0514, 0x0514, 0x0514, 0x050c, 0x0500, 0x0500, 0x0500,
+    0x0500, 0x0516, 0x0017, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0000,
     0x0009, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
     0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -273,10 +287,10 @@ const unsigned short indic_syllabic_table[2704] =
     0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500,
-    0x0600, 0x0200, 0x0100, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000f,
+    0x0600, 0x0200, 0x0100, 0x0507, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x020e, 0x000e, 0x000f,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0e05, 0x0107, 0x0507, 0x0100, 0x0100, 0x0500, 0x0500, 0x0500,
+    0x0017, 0x0107, 0x0507, 0x0100, 0x0100, 0x0500, 0x0500, 0x0500,
     0x0500, 0x0600, 0x0600, 0x0500, 0x0600, 0x0100, 0x0200, 0x0200,
     0x0200, 0x0200, 0x0200, 0x0500, 0x0500, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -289,22 +303,26 @@ const unsigned short indic_syllabic_table[2704] =
     0x0001, 0x000c, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x000d, 0x0000, 0x0000, 0x0500, 0x0600, 0x0200, 0x0100,
-    0x0500, 0x0500, 0x0105, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0500, 0x0500, 0x0116, 0x0017, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0007,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0107,
+    0x0500, 0x0500, 0x0100, 0x0100, 0x0100, 0x0507, 0x0107, 0x0507,
     0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0200,
     0x0200, 0x0000, 0x0100, 0x0100, 0x0607, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0200, 0x0000, 0x0004,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0002, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x001a, 0x001b, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0505, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0516, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0600, 0x0500, 0x0107,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -320,7 +338,7 @@ const unsigned short indic_syllabic_table[2704] =
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600,
     0x0600, 0x0600, 0x0500, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000,
-    0x0000, 0x0000, 0x000f, 0x0105, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x000f, 0x0116, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x000c, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -330,22 +348,22 @@ const unsigned short indic_syllabic_table[2704] =
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0500, 0x0500, 0x0500, 0x0500, 0x0600, 0x0500, 0x0200,
-    0x0200, 0x0500, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0200, 0x0500, 0x0600, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x000a, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x000a, 0x0013, 0x0013, 0x0013, 0x0000, 0x0000,
     0x0507, 0x0107, 0x0500, 0x0500, 0x0600, 0x0300, 0x0300, 0x0500,
     0x0500, 0x0000, 0x0100, 0x0300, 0x0300, 0x0100, 0x0507, 0x0013,
     0x0012, 0x0013, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0200, 0x0600, 0x0500, 0x0200, 0x0100,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0e05, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0207, 0x0600, 0x0500, 0x0200, 0x0100,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0017, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x000a, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0507, 0x0100, 0x0100,
-    0x0607, 0x0100, 0x0100, 0x0000, 0x0013, 0x0605, 0x0000, 0x0000
+    0x0607, 0x0100, 0x0100, 0x0000, 0x0013, 0x0616, 0x0000, 0x0000
 };
index 3a0bc1c..a0452c9 100644 (file)
@@ -1,10 +1,8 @@
 /* Unicode Line Break Properties */
-/* generated from http://www.unicode.org/Public/6.3.0/ucd/LineBreak.txt */
+/* generated from http://www.unicode.org/Public/7.0.0/ucd/LineBreak.txt */
 /* DO NOT EDIT!! */
 
-//#include "wine/unicode.h"
-
-const unsigned short wine_linebreak_table[7072] =
+const unsigned short wine_linebreak_table[7232] =
 {
     /* level 1 offsets */
     0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
@@ -50,30 +48,30 @@ const unsigned short wine_linebreak_table[7072] =
     0x0680, 0x05b0, 0x0690, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
     0x06a0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x06b0, 0x06c0, 0x05b0, 0x06d0, 0x06c0, 0x05b0,
-    0x06e0, 0x06f0, 0x0580, 0x0700, 0x0710, 0x0720, 0x0730, 0x0740,
-    0x0750, 0x0760, 0x05b0, 0x05b0, 0x0770, 0x0580, 0x0780, 0x0790,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x07a0, 0x07b0, 0x07c0,
-    0x07d0, 0x07e0, 0x05b0, 0x0580, 0x07f0, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x0800, 0x0810, 0x07c0, 0x05b0, 0x0770, 0x0820,
-    0x05b0, 0x0830, 0x0840, 0x0850, 0x05b0, 0x0860, 0x0870, 0x0870,
-    0x0870, 0x0870, 0x0880, 0x0870, 0x0870, 0x0870, 0x0890, 0x08a0,
-    0x08b0, 0x05b0, 0x05b0, 0x08c0, 0x0580, 0x08d0, 0x08e0, 0x08f0,
-    0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950, 0x0960, 0x0970,
-    0x0980, 0x0910, 0x0920, 0x0990, 0x09a0, 0x09b0, 0x09c0, 0x09d0,
-    0x09e0, 0x0690, 0x0920, 0x09f0, 0x0a00, 0x0a10, 0x0960, 0x0a20,
-    0x0900, 0x0910, 0x0920, 0x09f0, 0x0a30, 0x0a40, 0x0960, 0x06b0,
-    0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x09c0, 0x0ab0,
-    0x0ac0, 0x0ad0, 0x0920, 0x0ae0, 0x0af0, 0x0b00, 0x0960, 0x0b10,
-    0x0b20, 0x0ad0, 0x0920, 0x0b30, 0x0af0, 0x0b40, 0x0960, 0x0b50,
-    0x0b20, 0x0ad0, 0x05b0, 0x0b60, 0x0b70, 0x0b80, 0x0960, 0x0b90,
-    0x0ba0, 0x0bb0, 0x05b0, 0x0bc0, 0x0bd0, 0x0be0, 0x0870, 0x0bf0,
-    0x0c00, 0x0c10, 0x0c10, 0x0c20, 0x0c30, 0x0c40, 0x0870, 0x0870,
-    0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0870, 0x0870,
-    0x0cb0, 0x0cc0, 0x07c0, 0x0cd0, 0x08f0, 0x05b0, 0x0ce0, 0x0cf0,
-    0x0d00, 0x0d10, 0x0580, 0x0d20, 0x0d30, 0x0d40, 0x0870, 0x0870,
-    0x0c10, 0x0c10, 0x0c10, 0x0c10, 0x0d50, 0x0c10, 0x0c10, 0x0c10,
-    0x0c10, 0x0d60, 0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x06b0, 0x05b0, 0x06c0, 0x06b0, 0x05b0,
+    0x06d0, 0x06e0, 0x0580, 0x06f0, 0x0700, 0x0710, 0x0720, 0x0730,
+    0x0740, 0x0750, 0x05b0, 0x05b0, 0x0760, 0x0580, 0x0770, 0x0780,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0790, 0x07a0, 0x07b0,
+    0x07c0, 0x07d0, 0x05b0, 0x0580, 0x07e0, 0x05b0, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x07f0, 0x0800, 0x07b0, 0x05b0, 0x0760, 0x0810,
+    0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0860,
+    0x0860, 0x0860, 0x05b0, 0x0870, 0x0860, 0x0860, 0x0880, 0x0580,
+    0x0890, 0x05b0, 0x05b0, 0x08a0, 0x0580, 0x08b0, 0x08c0, 0x05b0,
+    0x08d0, 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940,
+    0x0950, 0x08e0, 0x08f0, 0x0960, 0x0970, 0x0980, 0x0990, 0x09a0,
+    0x09b0, 0x0690, 0x08f0, 0x09c0, 0x09d0, 0x09e0, 0x0930, 0x09f0,
+    0x0a00, 0x08e0, 0x08f0, 0x09c0, 0x0a10, 0x0a20, 0x0930, 0x0a30,
+    0x0a40, 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0990, 0x0aa0,
+    0x0ab0, 0x0ac0, 0x08f0, 0x0ad0, 0x0ae0, 0x0af0, 0x0930, 0x0b00,
+    0x0b10, 0x0ac0, 0x08f0, 0x0b20, 0x0ae0, 0x0b30, 0x0930, 0x0b40,
+    0x0b10, 0x0ac0, 0x05b0, 0x0b50, 0x0b60, 0x0b70, 0x0930, 0x0b80,
+    0x0b90, 0x0ba0, 0x05b0, 0x0bb0, 0x0bc0, 0x0bd0, 0x0990, 0x0be0,
+    0x0bf0, 0x0c00, 0x0c00, 0x0c10, 0x0c20, 0x0c30, 0x0860, 0x0860,
+    0x0c40, 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0860, 0x0860,
+    0x0ca0, 0x0cb0, 0x07b0, 0x0cc0, 0x0cd0, 0x05b0, 0x0ce0, 0x0cf0,
+    0x0d00, 0x0d10, 0x0580, 0x0d20, 0x0d30, 0x0d40, 0x0860, 0x0860,
+    0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0d50, 0x0c00, 0x0c00, 0x0c00,
+    0x0c00, 0x0d60, 0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0,
     0x0d80, 0x0d80, 0x0d80, 0x0d80, 0x0d80, 0x0d80, 0x0d90, 0x0d90,
     0x0d90, 0x0d90, 0x0da0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0dc0, 0x0dd0, 0x05b0, 0x05b0,
@@ -83,105 +81,105 @@ const unsigned short wine_linebreak_table[7072] =
     0x0e50, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x0e50, 0x0e60, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e70, 0x0a10,
-    0x0e80, 0x0e90, 0x05b0, 0x0ea0, 0x05b0, 0x0eb0, 0x0e80, 0x0ec0,
-    0x0c10, 0x0c10, 0x0c10, 0x0c10, 0x0c10, 0x0ed0, 0x0ee0, 0x0e30,
-    0x0ef0, 0x0ee0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x06b0,
-    0x05b0, 0x05b0, 0x0f00, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f10,
-    0x05b0, 0x0ce0, 0x0f20, 0x0f20, 0x0f30, 0x0c10, 0x0f40, 0x0f50,
-    0x0c10, 0x0c10, 0x0f60, 0x0c10, 0x0f70, 0x0f80, 0x05b0, 0x05b0,
-    0x05b0, 0x0f90, 0x0c10, 0x0c10, 0x0c10, 0x0fa0, 0x0c10, 0x0fb0,
-    0x0ee0, 0x0ee0, 0x0f40, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x0fc0, 0x05b0, 0x05b0, 0x0fd0, 0x0fe0, 0x0ff0, 0x1000, 0x1010,
-    0x1020, 0x05b0, 0x1030, 0x07c0, 0x05b0, 0x05b0, 0x0800, 0x1040,
-    0x05b0, 0x05b0, 0x0fd0, 0x1050, 0x1060, 0x07c0, 0x05b0, 0x1070,
-    0x0870, 0x0870, 0x0870, 0x0870, 0x06b0, 0x1080, 0x1090, 0x10a0,
+    0x0e50, 0x0e60, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e70, 0x0e80,
+    0x0e90, 0x0ea0, 0x05b0, 0x0eb0, 0x05b0, 0x0ec0, 0x0e90, 0x0ed0,
+    0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0ee0, 0x0ef0, 0x0e30,
+    0x0f00, 0x0ef0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a30,
+    0x05b0, 0x05b0, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f20,
+    0x05b0, 0x0840, 0x0f30, 0x0f30, 0x0f40, 0x0c00, 0x0f50, 0x0f60,
+    0x0c00, 0x0c00, 0x0f70, 0x0c00, 0x0f80, 0x0f90, 0x05b0, 0x05b0,
+    0x05b0, 0x0fa0, 0x0c00, 0x0c00, 0x0c00, 0x0fb0, 0x0c00, 0x0fc0,
+    0x0ef0, 0x0ef0, 0x0f50, 0x0fd0, 0x0860, 0x0860, 0x0860, 0x0860,
+    0x0fe0, 0x05b0, 0x05b0, 0x0ff0, 0x1000, 0x1010, 0x1020, 0x1030,
+    0x1040, 0x05b0, 0x1050, 0x07b0, 0x05b0, 0x05b0, 0x07f0, 0x1060,
+    0x05b0, 0x05b0, 0x0ff0, 0x1070, 0x1080, 0x07b0, 0x05b0, 0x1090,
+    0x0860, 0x0860, 0x0860, 0x0860, 0x0a30, 0x10a0, 0x10b0, 0x10c0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x10b0, 0x10c0,
-    0x05b0, 0x10d0, 0x05b0, 0x05b0, 0x10d0, 0x10e0, 0x05b0, 0x10f0,
-    0x05b0, 0x05b0, 0x05b0, 0x1100, 0x1100, 0x1110, 0x05b0, 0x1120,
-    0x1130, 0x1140, 0x1150, 0x1160, 0x1170, 0x1180, 0x1190, 0x11a0,
-    0x11b0, 0x0ce0, 0x11c0, 0x11d0, 0x11e0, 0x0580, 0x0580, 0x11f0,
-    0x1200, 0x1210, 0x1220, 0x05b0, 0x05b0, 0x1230, 0x1240, 0x1250,
-    0x1260, 0x1250, 0x05b0, 0x05b0, 0x05b0, 0x1270, 0x05b0, 0x05b0,
-    0x1280, 0x1290, 0x12a0, 0x12b0, 0x12c0, 0x12d0, 0x12e0, 0x05b0,
-    0x12f0, 0x1300, 0x1310, 0x1320, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x1330, 0x1340, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1350,
-    0x05b0, 0x05b0, 0x1360, 0x0870, 0x1370, 0x0870, 0x1380, 0x1380,
-    0x1380, 0x1380, 0x1380, 0x1380, 0x1380, 0x1380, 0x1380, 0x1390,
-    0x1380, 0x1380, 0x1380, 0x1380, 0x1240, 0x1380, 0x1380, 0x13a0,
-    0x1380, 0x13b0, 0x13c0, 0x13d0, 0x13e0, 0x13f0, 0x1400, 0x05b0,
-    0x1410, 0x1420, 0x05b0, 0x1430, 0x1440, 0x05b0, 0x1450, 0x1460,
-    0x05b0, 0x1470, 0x05b0, 0x1480, 0x1490, 0x14a0, 0x14b0, 0x14c0,
-    0x14d0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x14e0, 0x14f0, 0x1500,
-    0x1380, 0x1510, 0x05b0, 0x05b0, 0x1520, 0x05b0, 0x1530, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x10d0,
+    0x05b0, 0x10e0, 0x05b0, 0x05b0, 0x10e0, 0x10f0, 0x05b0, 0x1100,
+    0x05b0, 0x05b0, 0x05b0, 0x1110, 0x1110, 0x1120, 0x05b0, 0x1130,
+    0x1140, 0x1150, 0x1160, 0x1170, 0x1180, 0x1190, 0x11a0, 0x11b0,
+    0x11c0, 0x0ce0, 0x11d0, 0x11e0, 0x11f0, 0x0580, 0x0580, 0x1200,
+    0x1210, 0x1220, 0x1230, 0x05b0, 0x05b0, 0x1240, 0x1250, 0x1260,
+    0x1270, 0x1260, 0x05b0, 0x05b0, 0x05b0, 0x1280, 0x05b0, 0x05b0,
+    0x1290, 0x12a0, 0x12b0, 0x12c0, 0x12d0, 0x12e0, 0x12f0, 0x05b0,
+    0x1300, 0x1310, 0x1320, 0x1330, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+    0x1340, 0x1350, 0x1360, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1370,
+    0x05b0, 0x05b0, 0x1380, 0x0860, 0x1390, 0x0860, 0x13a0, 0x13a0,
+    0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13b0,
+    0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x1250, 0x13a0, 0x13a0, 0x13c0,
+    0x13a0, 0x13d0, 0x13e0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x05b0,
+    0x1430, 0x1440, 0x05b0, 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480,
+    0x05b0, 0x1490, 0x05b0, 0x14a0, 0x14b0, 0x14c0, 0x14d0, 0x14e0,
+    0x14f0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1500, 0x1510, 0x1520,
+    0x13a0, 0x1530, 0x05b0, 0x05b0, 0x1540, 0x05b0, 0x1550, 0x05b0,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x1540, 0x1550, 0x05b0, 0x05b0, 0x05b0, 0x1560, 0x05b0, 0x1570,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0ce0, 0x1580, 0x0870, 0x0870,
-    0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x05b0, 0x05b0, 0x0850, 0x05b0, 0x05b0, 0x0850, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1590, 0x15a0,
-    0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0, 0x15b0, 0x15c0,
-    0x05b0, 0x1360, 0x15d0, 0x15d0, 0x15d0, 0x15d0, 0x0580, 0x0580,
-    0x15e0, 0x15f0, 0x1600, 0x1610, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x1620, 0x1630, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1350,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1640, 0x0870, 0x1650,
-    0x1660, 0x1670, 0x1680, 0x1690, 0x16a0, 0x1620, 0x16b0, 0x1620,
-    0x16c0, 0x16d0, 0x16e0, 0x1620, 0x16b0, 0x1620, 0x16c0, 0x16f0,
-    0x1700, 0x1620, 0x1710, 0x1720, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1730, 0x1620, 0x1620, 0x1740, 0x1620, 0x1620, 0x1350, 0x1750,
-    0x1620, 0x1730, 0x1620, 0x1620, 0x1760, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1730,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x1620, 0x1770, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x1620,
-    0x1780, 0x1620, 0x1620, 0x1620, 0x1790, 0x05b0, 0x05b0, 0x1070,
-    0x17a0, 0x05b0, 0x17b0, 0x0870, 0x05b0, 0x05b0, 0x1590, 0x17c0,
-    0x05b0, 0x17d0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x17e0,
+    0x1560, 0x1570, 0x05b0, 0x05b0, 0x05b0, 0x1340, 0x05b0, 0x1580,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1590, 0x05b0, 0x15a0,
+    0x05b0, 0x15b0, 0x05b0, 0x15c0, 0x08f0, 0x15d0, 0x0860, 0x0860,
+    0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15e0, 0x15f0,
+    0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1610,
+    0x05b0, 0x1380, 0x1620, 0x1620, 0x1620, 0x1620, 0x0580, 0x0580,
+    0x1630, 0x1640, 0x1650, 0x1660, 0x1670, 0x0860, 0x0860, 0x0860,
+    0x1680, 0x1690, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x16a0,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x16b0, 0x0860, 0x16c0,
+    0x16d0, 0x16e0, 0x16f0, 0x1700, 0x1710, 0x1680, 0x1720, 0x1680,
+    0x1730, 0x1740, 0x1750, 0x1680, 0x1720, 0x1680, 0x1730, 0x1760,
+    0x1770, 0x1680, 0x1780, 0x1790, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x17a0, 0x1680, 0x1680, 0x17b0, 0x1680, 0x1680, 0x16a0, 0x17c0,
+    0x1680, 0x17a0, 0x1680, 0x1680, 0x17d0, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x17a0,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+    0x1680, 0x17e0, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680,
+    0x17f0, 0x1680, 0x1680, 0x1680, 0x1800, 0x05b0, 0x05b0, 0x1090,
+    0x1810, 0x05b0, 0x1820, 0x0860, 0x05b0, 0x05b0, 0x15e0, 0x1830,
+    0x05b0, 0x1840, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1850,
     0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
-    0x0850, 0x17f0, 0x1370, 0x0870, 0x0870, 0x0870, 0x0870, 0x0b10,
-    0x1800, 0x05b0, 0x1810, 0x1820, 0x05b0, 0x05b0, 0x05b0, 0x1830,
-    0x1840, 0x05b0, 0x05b0, 0x0fd0, 0x1850, 0x0ee0, 0x0580, 0x1860,
-    0x07c0, 0x05b0, 0x1870, 0x05b0, 0x1880, 0x1890, 0x0d80, 0x18a0,
-    0x08b0, 0x05b0, 0x05b0, 0x18b0, 0x18c0, 0x18d0, 0x0870, 0x0870,
-    0x05b0, 0x05b0, 0x18e0, 0x10b0, 0x18f0, 0x1900, 0x0c10, 0x0f60,
-    0x0c10, 0x0c10, 0x0c10, 0x0c10, 0x1910, 0x1920, 0x0770, 0x1930,
-    0x1940, 0x1950, 0x15d0, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x0870, 0x0870, 0x0870, 0x0870, 0x05b0, 0x05b0, 0x1960, 0x0ee0,
-    0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970,
-    0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980,
-    0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990,
-    0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0,
-    0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990,
-    0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0,
-    0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990,
-    0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970,
-    0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980,
-    0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990,
-    0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0,
-    0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990,
-    0x19b0, 0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0,
-    0x1990, 0x1970, 0x1980, 0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990,
-    0x1990, 0x19a0, 0x1990, 0x19b0, 0x1990, 0x1970, 0x1980, 0x1990,
-    0x19a0, 0x1990, 0x19c0, 0x0d90, 0x19d0, 0x0db0, 0x0db0, 0x19e0,
-    0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0,
-    0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0, 0x19f0,
-    0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
-    0x1360, 0x1a00, 0x1a10, 0x1a20, 0x1a30, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a40, 0x1a50, 0x05b0, 0x05b0,
-    0x05b0, 0x05b0, 0x05b0, 0x1a60, 0x0870, 0x05b0, 0x05b0, 0x05b0,
-    0x05b0, 0x1a70, 0x05b0, 0x05b0, 0x06b0, 0x0870, 0x0870, 0x1a80,
-    0x0580, 0x1a90, 0x10b0, 0x1aa0, 0x1ab0, 0x1ac0, 0x1ad0, 0x1100,
-    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1ae0,
-    0x1af0, 0x1b00, 0x1620, 0x1b10, 0x1620, 0x1b20, 0x1b30, 0x1b40,
-    0x05b0, 0x1b50, 0x05b0, 0x0850, 0x1b60, 0x1b70, 0x1b80, 0x1b90,
+    0x0840, 0x05b0, 0x1100, 0x15d0, 0x0860, 0x0860, 0x0860, 0x1860,
+    0x1870, 0x05b0, 0x1880, 0x1890, 0x05b0, 0x05b0, 0x05b0, 0x18a0,
+    0x18b0, 0x05b0, 0x05b0, 0x0ff0, 0x18c0, 0x0ef0, 0x0580, 0x18d0,
+    0x07b0, 0x05b0, 0x18e0, 0x05b0, 0x18f0, 0x1900, 0x0d80, 0x1910,
+    0x0890, 0x05b0, 0x05b0, 0x1920, 0x1930, 0x1940, 0x0c00, 0x1950,
+    0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x1990, 0x0c00, 0x0c00,
+    0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x19a0, 0x19b0, 0x0760, 0x19c0,
+    0x19d0, 0x19e0, 0x1620, 0x05b0, 0x05b0, 0x05b0, 0x19f0, 0x0860,
+    0x0860, 0x0860, 0x0860, 0x0860, 0x05b0, 0x05b0, 0x1a00, 0x0ef0,
+    0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10,
+    0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20,
+    0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30,
+    0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40,
+    0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30,
+    0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50,
+    0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30,
+    0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10,
+    0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20,
+    0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30,
+    0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40,
+    0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30,
+    0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50,
+    0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30,
+    0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30,
+    0x1a40, 0x1a30, 0x1a60, 0x0d90, 0x1a70, 0x0db0, 0x0db0, 0x1a80,
+    0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90,
+    0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1a90,
+    0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+    0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+    0x1380, 0x1aa0, 0x1ab0, 0x1ac0, 0x1ad0, 0x05b0, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15d0, 0x1ae0, 0x05b0, 0x05b0,
+    0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x0860, 0x05b0, 0x05b0, 0x05b0,
+    0x05b0, 0x1b00, 0x05b0, 0x05b0, 0x0a30, 0x0860, 0x0860, 0x1b10,
+    0x0580, 0x1b20, 0x1b30, 0x1b40, 0x1b50, 0x1b60, 0x1b70, 0x1110,
+    0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b80,
+    0x1b90, 0x1ba0, 0x1680, 0x1bb0, 0x1680, 0x1bc0, 0x1bd0, 0x1be0,
+    0x05b0, 0x1bf0, 0x05b0, 0x0840, 0x1c00, 0x1c10, 0x1c20, 0x1c30,
     /* values */
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004,
@@ -216,21 +214,19 @@ const unsigned short wine_linebreak_table[7072] =
     0x0006, 0x0006, 0x0006, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x0019, 0x0011,
+    0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x0019, 0x001d,
     0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
     0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0019, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a,
+    0x0011, 0x0019, 0x0022, 0x0011, 0x0011, 0x001d, 0x001d, 0x001a,
     0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
@@ -243,7 +239,7 @@ const unsigned short wine_linebreak_table[7072] =
     0x0026, 0x0026, 0x0026, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0026, 0x0026, 0x0026, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001b, 0x001b, 0x001b, 0x0019, 0x0019, 0x001d, 0x001d,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0017, 0x0004, 0x0011, 0x0017, 0x0017,
@@ -281,12 +277,10 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x001d, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011,
+    0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
-    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
-    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011,
     0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -295,9 +289,7 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0004, 0x0004, 0x0022, 0x0022, 0x001c, 0x001c,
     0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
     0x001d, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -335,10 +327,14 @@ const unsigned short wine_linebreak_table[7072] =
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004,
     0x0004, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004,
     0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x0011, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0004, 0x001d, 0x0011, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d,
     0x001d, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011,
@@ -353,11 +349,11 @@ const unsigned short wine_linebreak_table[7072] =
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001a, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
     0x001d, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004,
     0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
@@ -365,7 +361,7 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0011, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0011, 0x0011, 0x0004, 0x001d, 0x0004, 0x0004,
@@ -422,6 +418,8 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x001d, 0x001d, 0x001d, 0x0022, 0x0004, 0x001d, 0x0004,
     0x001d, 0x0004, 0x0012, 0x0013, 0x0012, 0x0013, 0x0004, 0x0004,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0022,
@@ -474,6 +472,8 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0022, 0x0022, 0x0022, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
@@ -513,6 +513,8 @@ const unsigned short wine_linebreak_table[7072] =
     0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0011,
     0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
     0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0011, 0x0011, 0x0004,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004,
@@ -542,10 +544,8 @@ const unsigned short wine_linebreak_table[7072] =
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011,
@@ -580,7 +580,7 @@ const unsigned short wine_linebreak_table[7072] =
     0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001b,
     0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
     0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001b, 0x001a,
-    0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+    0x001a, 0x001a, 0x001a, 0x001b, 0x001a, 0x001a, 0x001a, 0x001a,
     0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
     0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
     0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
@@ -623,12 +623,14 @@ const unsigned short wine_linebreak_table[7072] =
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x0012, 0x0013, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0024, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -675,11 +677,11 @@ const unsigned short wine_linebreak_table[7072] =
     0x0024, 0x0024, 0x001e, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
     0x0024, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x001e,
     0x001e, 0x001e, 0x001e, 0x0024, 0x0024, 0x001e, 0x001e, 0x001e,
-    0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d,
+    0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024,
-    0x001d, 0x001d, 0x001d, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d,
-    0x001d, 0x001d, 0x0017, 0x0017, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+    0x0015, 0x001d, 0x0017, 0x0017, 0x001d, 0x001d, 0x001d, 0x001d,
     0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013,
     0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0024, 0x0024,
     0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
@@ -694,11 +696,17 @@ const unsigned short wine_linebreak_table[7072] =
     0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012,
     0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0012, 0x0013, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x0012, 0x0013, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024, 0x0024, 0x0024,
-    0x0024, 0x0024, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0024, 0x0024, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d,
+    0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004,
     0x0004, 0x0004, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011,
@@ -716,11 +724,15 @@ const unsigned short wine_linebreak_table[7072] =
     0x0015, 0x0015, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013,
     0x0012, 0x0013, 0x0022, 0x0022, 0x0022, 0x0022, 0x0017, 0x001d,
     0x0022, 0x0022, 0x001d, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x0025, 0x0025, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x001d, 0x001d, 0x0025, 0x0025, 0x0022, 0x0022, 0x0022, 0x001d,
+    0x0022, 0x0022, 0x0012, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
     0x001e, 0x001e, 0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+    0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -772,11 +784,11 @@ const unsigned short wine_linebreak_table[7072] =
     0x0004, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0004,
     0x0004, 0x0004, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x0004, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
@@ -805,8 +817,12 @@ const unsigned short wine_linebreak_table[7072] =
     0x0022, 0x0022, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d,
     0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
     0x001c, 0x001c, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d,
+    0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+    0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0011,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0011, 0x0011,
     0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
@@ -821,6 +837,8 @@ const unsigned short wine_linebreak_table[7072] =
     0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
     0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
     0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x0011, 0x0011,
+    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
     0x0004, 0x0004, 0x0004, 0x0022, 0x0004, 0x0004, 0x0011, 0x0011,
     0x000f, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
@@ -849,18 +867,18 @@ const unsigned short wine_linebreak_table[7072] =
     0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0011, 0x0026, 0x0011,
     0x0026, 0x0026, 0x0011, 0x0026, 0x0026, 0x0011, 0x0026, 0x0026,
     0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
-    0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
-    0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
     0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
-    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0012, 0x0013,
+    0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0013, 0x0012,
     0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
     0x001d, 0x001d, 0x001d, 0x001d, 0x001b, 0x001d, 0x0011, 0x0011,
     0x0019, 0x0013, 0x0013, 0x0019, 0x0019, 0x0017, 0x0017, 0x0012,
     0x0013, 0x001f, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
     0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0012, 0x0013, 0x0012,
     0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012,
     0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x001e, 0x001e, 0x0012,
index 137d653..bce83c7 100644 (file)
@@ -1,5 +1,5 @@
 /* Unicode BiDi mirroring */
-/* generated from http://www.unicode.org/Public/6.3.0/ucd/BidiMirroring.txt */
+/* generated from http://www.unicode.org/Public/7.0.0/ucd/BidiMirroring.txt */
 /* DO NOT EDIT!! */
 
 #include <windef.h>
index e7d1558..67afd91 100644 (file)
@@ -2172,7 +2172,8 @@ static inline int unicode_lex(WCHAR c)
         case 0x0407: return lex_Composed_Vowel;
         case 0x0507: return lex_Matra_above;
         case 0x0607: return lex_Matra_below;
-        case 0x000c: return lex_Ra;
+        case 0x000c:
+        case 0x0015: return lex_Ra;
     };
 }
 
index 4494943..12b290c 100644 (file)
@@ -1,10 +1,8 @@
 /* Unicode Arabic shaping */
-/* generated from http://www.unicode.org/Public/6.3.0/ucd/ArabicShaping.txt */
+/* generated from http://www.unicode.org/Public/7.0.0/ucd/ArabicShaping.txt */
 /* DO NOT EDIT!! */
 
-//#include "wine/unicode.h"
-
-const unsigned short wine_shaping_table[2800] =
+const unsigned short wine_shaping_table[2864] =
 {
     /* level 1 offsets */
     0x0100, 0x0110, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
@@ -55,16 +53,16 @@ const unsigned short wine_shaping_table[2800] =
     0x0490, 0x04a0, 0x04b0, 0x0360, 0x04c0, 0x04d0, 0x04e0, 0x04f0,
     0x0340, 0x0340, 0x0500, 0x0510, 0x0520, 0x0530, 0x0540, 0x0550,
     0x0340, 0x0560, 0x0570, 0x0340, 0x0580, 0x0590, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x05a0, 0x0340, 0x0340, 0x0340, 0x05b0, 0x05c0,
+    0x0340, 0x0340, 0x05a0, 0x05b0, 0x0340, 0x0340, 0x05c0, 0x0360,
     0x05d0, 0x0340, 0x0340, 0x05e0, 0x05f0, 0x0600, 0x0610, 0x0340,
     0x0620, 0x0340, 0x0340, 0x0630, 0x0640, 0x0340, 0x0610, 0x0340,
     0x0650, 0x0340, 0x0340, 0x0630, 0x0660, 0x0620, 0x0340, 0x0670,
     0x0650, 0x0340, 0x0340, 0x0630, 0x0680, 0x0340, 0x0610, 0x0340,
     0x0620, 0x0340, 0x0340, 0x0690, 0x0640, 0x06a0, 0x0610, 0x0340,
     0x06b0, 0x0340, 0x0340, 0x0340, 0x06c0, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x06d0, 0x06e0, 0x06f0, 0x0610, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0690, 0x0700, 0x0340, 0x0610, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0640, 0x0340, 0x0610, 0x0340,
+    0x0510, 0x0340, 0x0340, 0x06d0, 0x06e0, 0x06f0, 0x0610, 0x0340,
+    0x0620, 0x0340, 0x0340, 0x0690, 0x0700, 0x0340, 0x0610, 0x0340,
+    0x0620, 0x0340, 0x0340, 0x0340, 0x0640, 0x0340, 0x0610, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0710, 0x0720, 0x0340, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0730, 0x0740, 0x0340, 0x0340, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0750, 0x0760, 0x0340, 0x0340, 0x0340,
@@ -81,37 +79,37 @@ const unsigned short wine_shaping_table[2800] =
     0x0340, 0x0340, 0x08a0, 0x08b0, 0x0340, 0x0340, 0x0340, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
     0x0340, 0x08c0, 0x0340, 0x0340, 0x0340, 0x08d0, 0x08e0, 0x08f0,
+    0x0340, 0x0340, 0x0340, 0x0900, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0910, 0x0340, 0x0340, 0x0920, 0x06b0, 0x0340, 0x0930, 0x0910,
+    0x0940, 0x0340, 0x0950, 0x0340, 0x0340, 0x0340, 0x0960, 0x0940,
+    0x0340, 0x0340, 0x0970, 0x0980, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0990, 0x09a0, 0x09b0,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0900, 0x0340, 0x0340, 0x0910, 0x06b0, 0x0340, 0x0920, 0x0900,
-    0x0930, 0x0340, 0x0940, 0x0340, 0x0340, 0x0340, 0x0950, 0x0930,
-    0x0340, 0x0340, 0x0960, 0x0970, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0980, 0x0990, 0x09a0,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x09b0, 0x0960,
-    0x09c0, 0x0340, 0x09d0, 0x0340, 0x0340, 0x0340, 0x09e0, 0x0340,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0360, 0x09c0,
+    0x09d0, 0x0340, 0x09e0, 0x0340, 0x0340, 0x0340, 0x09f0, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0510,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0930,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0940,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360,
-    0x0340, 0x0340, 0x09f0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0a00, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a10,
-    0x0340, 0x0490, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0930,
-    0x0a20, 0x0340, 0x06f0, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a30,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x09a0, 0x0340, 0x0360, 0x0930,
-    0x0340, 0x0340, 0x0a40, 0x0340, 0x0a50, 0x0930, 0x0340, 0x0340,
-    0x05d0, 0x0340, 0x0340, 0x0a60, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0a70, 0x0a80, 0x0a90, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0aa0, 0x0620, 0x0340, 0x0ab0, 0x06a0,
+    0x0340, 0x0340, 0x0a00, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0340, 0x0a10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a20,
+    0x0340, 0x0490, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0940,
+    0x0a30, 0x0340, 0x06f0, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a40,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0a50, 0x0340, 0x0360, 0x0940,
+    0x0340, 0x0340, 0x0a60, 0x0340, 0x0a70, 0x0940, 0x0340, 0x0340,
+    0x05d0, 0x0340, 0x0340, 0x0a80, 0x0340, 0x0340, 0x0a90, 0x0340,
+    0x0340, 0x0340, 0x0aa0, 0x0ab0, 0x0ac0, 0x0340, 0x0340, 0x0630,
+    0x0340, 0x0340, 0x0340, 0x0ad0, 0x0620, 0x0340, 0x0ae0, 0x06a0,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0ac0, 0x0340,
-    0x0340, 0x0ad0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0af0, 0x0340,
+    0x0340, 0x0b00, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0360, 0x0340, 0x09b0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+    0x0360, 0x0340, 0x0b10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
     0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
-    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0ae0,
+    0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b20,
     /* values */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -189,12 +187,12 @@ const unsigned short wine_shaping_table[2800] =
     0x0004, 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0002,
     0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0004, 0x0000, 0x0000,
     0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0404, 0x0000, 0x0604, 0x0b04, 0x0f04, 0x1004, 0x1204, 0x1304,
-    0x0104, 0x0104, 0x0802, 0x0302, 0x3402, 0x0000, 0x0000, 0x0000,
+    0x0404, 0x0404, 0x0604, 0x0b04, 0x0f04, 0x1004, 0x1204, 0x1304,
+    0x0104, 0x0104, 0x0802, 0x0302, 0x3402, 0x0000, 0x0702, 0x0a04,
+    0x0d04, 0x3502, 0x0802, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
     0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
-    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
-    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
     0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -297,6 +295,8 @@ const unsigned short wine_shaping_table[2800] =
     0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
     0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001,
+    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
     0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001,
@@ -306,7 +306,7 @@ const unsigned short wine_shaping_table[2800] =
     0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
-    0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
     0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0001,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -318,9 +318,9 @@ const unsigned short wine_shaping_table[2800] =
     0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
     0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -337,12 +337,16 @@ const unsigned short wine_shaping_table[2800] =
     0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0004, 0x0004, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,
     0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
     0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
     0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001,
     0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,
     0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000,
@@ -357,6 +361,8 @@ const unsigned short wine_shaping_table[2800] =
     0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
+    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000
 };
index 4a57480..102741f 100644 (file)
@@ -893,7 +893,7 @@ static WORD get_char_script( LPCWSTR str, INT index, INT end, INT *consumed)
     if (str[index] == 0xc || str[index] == 0x20 || str[index] == 0x202f)
         return Script_CR;
 
-    /* These punctuation are separated out as Latin punctuation */
+    /* These punctuation characters are separated out as Latin punctuation */
     if (strchrW(latin_punc,str[index]))
         return Script_Punctuation2;
 
@@ -1269,6 +1269,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
     WORD layoutRTL = 0;
     BOOL forceLevels = FALSE;
     INT consumed = 0;
+    HRESULT res = E_OUTOFMEMORY;
 
     TRACE("%s,%d,%d,%p,%p,%p,%p\n", debugstr_wn(pwcInChars, cInChars), cInChars, cMaxItems, 
           psControl, psState, pItems, pcItems);
@@ -1363,10 +1364,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
     {
         levels = heap_alloc_zero(cInChars * sizeof(WORD));
         if (!levels)
-        {
-            heap_free(scripts);
-            return E_OUTOFMEMORY;
-        }
+            goto nomemory;
 
         BIDI_DetermineLevels(pwcInChars, cInChars, psState, psControl, levels);
         baselevel = levels[0];
@@ -1385,11 +1383,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
 
             strength = heap_alloc_zero(cInChars * sizeof(WORD));
             if (!strength)
-            {
-                heap_free(scripts);
-                heap_free(levels);
-                return E_OUTOFMEMORY;
-            }
+                goto nomemory;
             BIDI_GetStrengths(pwcInChars, cInChars, psControl, strength);
 
             /* We currently mis-level leading Diacriticals */
@@ -1569,7 +1563,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
 
             index++;
             if  (index+1 > cMaxItems)
-                return E_OUTOFMEMORY;
+                goto nomemory;
 
             if (strength)
                 str = strength[cnt];
@@ -1605,7 +1599,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
      * item is set up to prevent random behaviour if the caller erroneously
      * checks the n+1 structure                                              */
     index++;
-    if (index + 1 > cMaxItems) return E_OUTOFMEMORY;
+    if (index + 1 > cMaxItems) goto nomemory;
     memset(&pItems[index].a, 0, sizeof(SCRIPT_ANALYSIS));
 
     TRACE("index=%d cnt=%d iCharPos=%d\n", index, cnt, pItems[index].iCharPos);
@@ -1615,10 +1609,12 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars,
 
     /*  Set SCRIPT_ITEM                                     */
     pItems[index].iCharPos = cnt;         /* the last item contains the ptr to the lastchar */
+    res = S_OK;
+nomemory:
     heap_free(levels);
     heap_free(strength);
     heap_free(scripts);
-    return S_OK;
+    return res;
 }
 
 /***********************************************************************
@@ -2837,6 +2833,7 @@ HRESULT WINAPI ScriptShapeOpenType( HDC hdc, SCRIPT_CACHE *psc,
     unsigned int g;
     BOOL rtl;
     int cluster;
+    static int once = 0;
 
     TRACE("(%p, %p, %p, %s, %s, %p, %p, %d, %s, %d, %d, %p, %p, %p, %p, %p )\n",
      hdc, psc, psa,
@@ -2851,7 +2848,7 @@ HRESULT WINAPI ScriptShapeOpenType( HDC hdc, SCRIPT_CACHE *psc,
     if (cChars > cMaxGlyphs) return E_OUTOFMEMORY;
 
     if (cRanges)
-        FIXME("Ranges not supported yet\n");
+        if(!once++) FIXME("Ranges not supported yet\n");
 
     rtl = (psa && !psa->fLogicalOrder && psa->fRTL);
 
@@ -3066,6 +3063,7 @@ HRESULT WINAPI ScriptPlaceOpenType( HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS
 {
     HRESULT hr;
     int i;
+    static int once = 0;
 
     TRACE("(%p, %p, %p, %s, %s, %p, %p, %d, %s, %p, %p, %d, %p, %p, %d, %p %p %p)\n",
      hdc, psc, psa,
@@ -3079,7 +3077,7 @@ HRESULT WINAPI ScriptPlaceOpenType( HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS
     if (!pGoffset) return E_FAIL;
 
     if (cRanges)
-        FIXME("Ranges not supported yet\n");
+        if (!once++) FIXME("Ranges not supported yet\n");
 
     ((ScriptCache *)*psc)->userScript = tagScript;
     ((ScriptCache *)*psc)->userLang = tagLangSys;
@@ -3740,8 +3738,10 @@ HRESULT WINAPI ScriptGetFontFeatureTags( HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANAL
     return SHAPE_GetFontFeatureTags(hdc, (ScriptCache *)*psc, psa, tagScript, tagLangSys, cMaxTags, pFeatureTags, pcTags);
 }
 
+#ifdef __REACTOS__
 BOOL gbLpkPresent = FALSE;
 VOID WINAPI LpkPresent()
 {
     gbLpkPresent = TRUE; /* Turn it on this way! Wine is out of control! */
 }
+#endif
index 03d1d51..23fa2c4 100644 (file)
@@ -201,7 +201,7 @@ reactos/dll/win32/unicows             # Synced to Wine-1.3.32 (Win9x only, why d
 reactos/dll/win32/updspapi            # Synced to Wine-1.7.17
 reactos/dll/win32/url                 # Synced to Wine-1.7.17
 reactos/dll/win32/urlmon              # Synced to Wine-1.7.27
-reactos/dll/win32/usp10               # Synced to Wine-1.7.17
+reactos/dll/win32/usp10               # Synced to Wine-1.7.27
 reactos/dll/win32/uxtheme             # Forked
 reactos/dll/win32/vbscript            # Synced to Wine-1.7.17
 reactos/dll/win32/version             # Synced to Wine-1.7.17