unicode: Add support for high Unicode planes to the combining class table.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2020-02-17 13:00:48 +01:00
parent 23cee79d72
commit 148f564d10
3 changed files with 239 additions and 97 deletions

View File

@ -4,102 +4,170 @@
#include "windef.h" #include "windef.h"
const unsigned short DECLSPEC_HIDDEN combining_class_table[1747] = const unsigned short DECLSPEC_HIDDEN combining_class_table[2647] =
{ {
/* level 1 offsets */ /* level 1 offsets */
0x0100, 0x0100, 0x0100, 0x0110, 0x0118, 0x0121, 0x0130, 0x013f, 0x0110, 0x0120, 0x0130, 0x0140, 0x0141, 0x0141, 0x0141, 0x0141,
0x014f, 0x015f, 0x016f, 0x0177, 0x0184, 0x0191, 0x019e, 0x01ad, 0x0141, 0x0141, 0x014b, 0x0141, 0x0141, 0x0141, 0x0141, 0x0157,
0x01ba, 0x0100, 0x0100, 0x01c5, 0x0100, 0x0100, 0x0100, 0x01d4, 0x0166, 0x0176, 0x0141, 0x0141, 0x0141, 0x0141, 0x0184, 0x0141,
0x01e2, 0x01ef, 0x01fe, 0x020b, 0x021b, 0x022b, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0190, 0x0141, 0x019f, 0x01af, 0x0141,
0x023b, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x024b, 0x025b, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x026b, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0275, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0285, 0x0295, 0x02a2, 0x02b2, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0100, 0x0100, 0x0100, 0x02c1, 0x0100, 0x0100, 0x02cf, 0x0100, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
/* level 2 offsets */ /* level 2 offsets */
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e0, 0x01ef, 0x01fe,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x020e, 0x021e, 0x022e, 0x0236, 0x0243, 0x0250, 0x025d, 0x026c,
0x02ef, 0x02fa, 0x0309, 0x0315, 0x0322, 0x0332, 0x033f, 0x02df, 0x0279, 0x01bf, 0x01bf, 0x0284, 0x01bf, 0x01bf, 0x01bf, 0x0293,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02a1, 0x02ae, 0x02bd, 0x02ca, 0x02da, 0x02ea, 0x01bf, 0x01bf,
0x034f, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02fa, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x02df, 0x02df, 0x035e, 0x036c, 0x037c, 0x038c, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x030a, 0x031a, 0x01bf, 0x01bf,
0x02df, 0x039c, 0x02df, 0x02df, 0x03a7, 0x03b7, 0x02df, 0x03c7, 0x032a, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x03d1, 0x03e0, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x03ef, 0x02df, 0x03ff, 0x040e, 0x02df, 0x02df, 0x02df, 0x02df, 0x01bf, 0x0334, 0x01bf, 0x0344, 0x0354, 0x0361, 0x0371, 0x01bf,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02e4, 0x041e, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x042c, 0x0438, 0x02df, 0x02df, 0x0446, 0x02df, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x0380, 0x01bf, 0x01bf, 0x038e, 0x01bf, 0x0391,
0x02df, 0x02df, 0x02df, 0x02df, 0x0453, 0x0461, 0x0471, 0x02df, 0x03a1, 0x03b0, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x02df, 0x02df, 0x0481, 0x048e, 0x049d, 0x02df, 0x02df, 0x02df, 0x03c0, 0x01bf, 0x01bf, 0x03cf, 0x01bf, 0x03db, 0x03e7, 0x03f7,
0x02df, 0x02df, 0x0481, 0x048e, 0x02df, 0x02df, 0x04a2, 0x02df, 0x0404, 0x0413, 0x041f, 0x042c, 0x0439, 0x0447, 0x0454, 0x0458,
0x02df, 0x02df, 0x0481, 0x048e, 0x02df, 0x02df, 0x02df, 0x02df, 0x0467, 0x01bf, 0x0474, 0x0480, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x02df, 0x02df, 0x0481, 0x048e, 0x02df, 0x02df, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x048a, 0x049a,
0x02df, 0x02df, 0x02df, 0x048e, 0x02df, 0x02df, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x048e, 0x04b1, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0481, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x04a1, 0x01bf, 0x01bf, 0x01bf,
0x048e, 0x02df, 0x02df, 0x02df, 0x04b8, 0x048e, 0x02df, 0x02df, 0x04ab, 0x04b7, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04c5, 0x02df, 0x02df, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x04c7,
0x02df, 0x04d0, 0x04db, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x049a, 0x04ca, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x04d9,
0x02df, 0x04e7, 0x04f2, 0x02df, 0x02df, 0x02df, 0x04fe, 0x02df, 0x04e7, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
0x0509, 0x02df, 0x02df, 0x02df, 0x0518, 0x0528, 0x02df, 0x02df, /* level 3 offsets */
0x02df, 0x0532, 0x02df, 0x02df, 0x02df, 0x053b, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x0546, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02e2, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0507, 0x0512, 0x0521, 0x052d, 0x053a, 0x054a, 0x0557, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0554, 0x02df, 0x0554, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0567, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x0562, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x0576, 0x0584, 0x0594, 0x05a4, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x0570, 0x02df, 0x02df, 0x02df, 0x04f7, 0x05b4, 0x04f7, 0x04f7, 0x05bf, 0x05cf, 0x04f7, 0x05df,
0x02df, 0x02df, 0x057a, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x05e9, 0x05f8, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0586, 0x0607, 0x04f7, 0x0617, 0x0626, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x0596, 0x05a1, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04fc, 0x0636, 0x04f7,
0x02df, 0x05b1, 0x02df, 0x02df, 0x02df, 0x02df, 0x0489, 0x0554, 0x0644, 0x0650, 0x04f7, 0x04f7, 0x065e, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x05bf, 0x047d, 0x02df, 0x02df, 0x04b9, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x066b, 0x0679, 0x0689, 0x04f7,
0x02df, 0x0487, 0x05cf, 0x02df, 0x02df, 0x02df, 0x0486, 0x02df, 0x04f7, 0x04f7, 0x0699, 0x06a6, 0x06b5, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x0699, 0x06a6, 0x04f7, 0x04f7, 0x06ba, 0x04f7,
0x05df, 0x05ef, 0x05fd, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x0699, 0x06a6, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x060d, 0x04f7, 0x04f7, 0x0699, 0x06a6, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x061d, 0x02ef, 0x0627, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x06a6, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x06a6, 0x06c9, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0699,
0x0637, 0x0646, 0x0656, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x06a6, 0x04f7, 0x04f7, 0x04f7, 0x06d0, 0x06a6, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x06dd, 0x04f7, 0x04f7,
0x02df, 0x02e0, 0x04a0, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x06e8, 0x06f3, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x0657, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x06ff, 0x070a, 0x04f7, 0x04f7, 0x04f7, 0x0716, 0x04f7,
0x02df, 0x02ef, 0x02ef, 0x02df, 0x02df, 0x0667, 0x02df, 0x02df, 0x0721, 0x04f7, 0x04f7, 0x04f7, 0x0730, 0x0740, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x0677, 0x02df, 0x02df, 0x02df, 0x04f7, 0x074a, 0x04f7, 0x04f7, 0x04f7, 0x0753, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02e0, 0x0683, 0x02df, 0x02e1, 0x02df, 0x04f7, 0x04f7, 0x075e, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x04a0, 0x055e, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04fa, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x076c, 0x04f7, 0x076c,
0x02df, 0x0554, 0x02df, 0x02ef, 0x04a0, 0x02df, 0x02df, 0x0691, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x0593, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x077a, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x048a, 0x0596, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0788, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x06a1, 0x06b1, 0x02df, 0x04f7, 0x04f7, 0x0792, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x02df, 0x055e, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x079e,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x07ae, 0x07b9, 0x04f7, 0x04f7,
0x048e, 0x02df, 0x06b3, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x07c9, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x06a1, 0x076c,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x07d7, 0x0695, 0x04f7, 0x04f7, 0x06d1, 0x04f7, 0x04f7,
0x02df, 0x06c3, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x069f, 0x07e7, 0x04f7, 0x04f7, 0x04f7, 0x069e, 0x04f7,
0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x07f7, 0x0807, 0x0815, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0825,
0x0835, 0x0507, 0x083f, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x084f, 0x085e, 0x086e, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f8, 0x06b8, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x086f, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x0507, 0x0507, 0x04f7, 0x04f7, 0x087f, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x088f, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f8, 0x089b, 0x04f7, 0x04f9, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x06b8, 0x0776, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x076c, 0x04f7, 0x0507, 0x06b8, 0x04f7, 0x04f7, 0x08a9,
0x04f7, 0x04f7, 0x07ab, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x06a2, 0x07ae, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x08b9, 0x08c9, 0x04f7,
0x04f7, 0x0776, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x06a6, 0x04f7, 0x08cb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x08db, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x075e, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x08eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x08f5, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x0900, 0x04f7, 0x04f7, 0x0910, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0920,
0x04f7, 0x04f7, 0x092c, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x0936, 0x08eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0776, 0x04f7, 0x04f7, 0x086f,
0x04f7, 0x04f7, 0x04f7, 0x0946, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x08fd, 0x04f7, 0x04f7, 0x0953, 0x04f7, 0x04f7, 0x04f7, 0x06a2,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0963, 0x04f7, 0x04f7, 0x04f7,
0x096e, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x0975, 0x04f7, 0x04f7, 0x04f7, 0x0980,
0x06a6, 0x04f7, 0x098d, 0x0694, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x099b, 0x06ba, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x09a9, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x086f, 0x09ac, 0x04f7, 0x04f7, 0x04f7, 0x086f, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x09a5, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x0771, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x0946, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x07ae,
0x04f7, 0x04f7, 0x04f7, 0x076c, 0x06e0, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x06de, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x086f, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0758, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x06e0, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x09bc, 0x04f7, 0x04f7, 0x04f7, 0x08a2, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x09c1, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x09d0, 0x09de, 0x09eb, 0x04f7, 0x09f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0a05, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x0a15, 0x0a1d, 0x0a2b, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04fb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0a3b,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0a47, 0x04f7, 0x04f7, 0x04f7,
0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
/* values */ /* 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@ -227,5 +295,50 @@ const unsigned short DECLSPEC_HIDDEN combining_class_table[1747] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x001a, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000, 0x0000, 0x001a, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
0x00e6, 0x00e6, 0x00e6, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
0x00dc, 0x00dc, 0x00e6, 0x00e6 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00dc, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
0x00e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x0000,
0x00e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x00e6, 0x0001, 0x00dc, 0x0000, 0x0000, 0x0000, 0x0000,
0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x00dc,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x00dc, 0x00e6,
0x00e6, 0x00e6, 0x00dc, 0x00e6, 0x00dc, 0x00dc, 0x00dc, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0009, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009,
0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0007, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,
0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
0x00e6, 0x00e6, 0x00e6, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000,
0x0000, 0x0000, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0007, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d8, 0x00d8,
0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x00e2, 0x00d8,
0x00d8, 0x00d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x0000,
0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00dc, 0x00dc,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000, 0x0000,
0x00e6, 0x00e6, 0x00e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x00e6,
0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000, 0x00e6, 0x00e6,
0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000,
0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000, 0x00e6,
0x00e6, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
0x00dc, 0x00dc, 0x00dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
0x00e6, 0x00e6, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
}; };

View File

@ -167,9 +167,10 @@ static const WCHAR *get_decomposition( const unsigned short *table, WCHAR ch, un
} }
static BYTE get_combining_class( WCHAR c ) static BYTE get_combining_class( unsigned int c )
{ {
return combining_class_table[combining_class_table[combining_class_table[c >> 8] + ((c >> 4) & 0xf)] + (c & 0xf)]; const unsigned short *table = combining_class_table;
return table[table[table[table[c >> 12] + ((c >> 8) & 0xf)] + ((c >> 4) & 0xf)] + (c & 0xf)];
} }

View File

@ -38,6 +38,9 @@ my $STRINGPREP = "rfc3454.txt";
# Default char for undefined mappings # Default char for undefined mappings
my $DEF_CHAR = ord '?'; my $DEF_CHAR = ord '?';
# Last valid Unicode character
my $MAX_CHAR = 0x10ffff;
my @allfiles = my @allfiles =
( (
"CodpageFiles/037.txt", "CodpageFiles/037.txt",
@ -1670,6 +1673,31 @@ sub dump_two_level_mapping($$@)
printf OUTPUT " /* values */\n%s\n};\n", dump_array( $size, 0, @row_array[4096..$#row_array] ); printf OUTPUT " /* values */\n%s\n};\n", dump_array( $size, 0, @row_array[4096..$#row_array] );
} }
################################################################
# dump a char -> value mapping table using three-level tables
sub dump_three_level_mapping($$@)
{
my $name = shift;
my $def = shift;
my $size = shift;
my $type = $size == 16 ? "unsigned short" : "unsigned int";
my $level3 = ($MAX_CHAR + 1) / 16;
my $level2 = $level3 / 16;
my $level1 = $level2 / 16;
my @array3 = compress_array( $level3, $def, @_[0..$MAX_CHAR] );
my @array2 = compress_array( $level2, 0, @array3[0..$level3-1] );
my @array1 = compress_array( $level1, 0, @array2[0..$level2-1] );
for (my $i = $level2; $i < @array2; $i++) { $array2[$i] += @array1 + @array2 - $level2 - $level3; }
for (my $i = $level1; $i < @array1; $i++) { $array1[$i] += @array1 - $level2; }
printf OUTPUT "const %s DECLSPEC_HIDDEN %s[%u] =\n{\n", $type, $name, @array1 + (@array2 - $level2) + (@array3 - $level3);
printf OUTPUT " /* level 1 offsets */\n%s,\n", dump_array( $size, 0, @array1[0..$level1-1] );
printf OUTPUT " /* level 2 offsets */\n%s,\n", dump_array( $size, 0, @array1[$level1..$#array1] );
printf OUTPUT " /* level 3 offsets */\n%s,\n", dump_array( $size, 0, @array2[$level2..$#array2] );
printf OUTPUT " /* values */\n%s\n};\n", dump_array( $size, 0, @array3[$level3..$#array3] );
}
################################################################ ################################################################
# dump a binary case mapping table in l_intl.nls format # dump a binary case mapping table in l_intl.nls format
sub dump_binary_case_table(@) sub dump_binary_case_table(@)
@ -2187,7 +2215,7 @@ sub dump_combining_class($)
print OUTPUT "/* DO NOT EDIT!! */\n\n"; print OUTPUT "/* DO NOT EDIT!! */\n\n";
print OUTPUT "#include \"windef.h\"\n\n"; print OUTPUT "#include \"windef.h\"\n\n";
dump_two_level_mapping( "combining_class_table", 0, 16, @combining_class_table ); dump_three_level_mapping( "combining_class_table", 0, 16, @combining_class_table );
close OUTPUT; close OUTPUT;
save_file($filename); save_file($filename);
} }