unicode: Expand surrogates in decomposition tables.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
cd8eaef47e
commit
0576fa43c4
|
@ -4,7 +4,7 @@
|
|||
|
||||
#include "windef.h"
|
||||
|
||||
const WCHAR DECLSPEC_HIDDEN nfd_table[6061] =
|
||||
const WCHAR DECLSPEC_HIDDEN nfd_table[6075] =
|
||||
{
|
||||
/* index */
|
||||
0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0100, 0x0160, 0x0100,
|
||||
|
@ -569,42 +569,42 @@ const WCHAR DECLSPEC_HIDDEN nfd_table[6061] =
|
|||
0x16ee, 0x16ef, 0x16f0, 0x16f1, 0x16f2, 0x16f3, 0x16f4, 0x16f5,
|
||||
/* offsets 0xfa60 .. 0xfa6f */
|
||||
0x16f6, 0x16f7, 0x16f8, 0x16f9, 0x16fa, 0x16fb, 0x16fc, 0x16fd,
|
||||
0x16fe, 0x16ff, 0x1700, 0x1701, 0x1702, 0x1702, 0x1703, 0x1703,
|
||||
0x16fe, 0x16ff, 0x1700, 0x1701, 0x1702, 0x1704, 0x1705, 0x1705,
|
||||
/* offsets 0xfa70 .. 0xfa7f */
|
||||
0x1703, 0x1704, 0x1705, 0x1706, 0x1707, 0x1708, 0x1709, 0x170a,
|
||||
0x170b, 0x170c, 0x170d, 0x170e, 0x170f, 0x1710, 0x1711, 0x1712,
|
||||
0x1705, 0x1706, 0x1707, 0x1708, 0x1709, 0x170a, 0x170b, 0x170c,
|
||||
0x170d, 0x170e, 0x170f, 0x1710, 0x1711, 0x1712, 0x1713, 0x1714,
|
||||
/* offsets 0xfa80 .. 0xfa8f */
|
||||
0x1713, 0x1714, 0x1715, 0x1716, 0x1717, 0x1718, 0x1719, 0x171a,
|
||||
0x171b, 0x171c, 0x171d, 0x171e, 0x171f, 0x1720, 0x1721, 0x1722,
|
||||
0x1715, 0x1716, 0x1717, 0x1718, 0x1719, 0x171a, 0x171b, 0x171c,
|
||||
0x171d, 0x171e, 0x171f, 0x1720, 0x1721, 0x1722, 0x1723, 0x1724,
|
||||
/* offsets 0xfa90 .. 0xfa9f */
|
||||
0x1723, 0x1724, 0x1725, 0x1726, 0x1727, 0x1728, 0x1729, 0x172a,
|
||||
0x172b, 0x172c, 0x172d, 0x172e, 0x172f, 0x1730, 0x1731, 0x1732,
|
||||
0x1725, 0x1726, 0x1727, 0x1728, 0x1729, 0x172a, 0x172b, 0x172c,
|
||||
0x172d, 0x172e, 0x172f, 0x1730, 0x1731, 0x1732, 0x1733, 0x1734,
|
||||
/* offsets 0xfaa0 .. 0xfaaf */
|
||||
0x1733, 0x1734, 0x1735, 0x1736, 0x1737, 0x1738, 0x1739, 0x173a,
|
||||
0x173b, 0x173c, 0x173d, 0x173e, 0x173f, 0x1740, 0x1741, 0x1742,
|
||||
0x1735, 0x1736, 0x1737, 0x1738, 0x1739, 0x173a, 0x173b, 0x173c,
|
||||
0x173d, 0x173e, 0x173f, 0x1740, 0x1741, 0x1742, 0x1743, 0x1744,
|
||||
/* offsets 0xfab0 .. 0xfabf */
|
||||
0x1743, 0x1744, 0x1745, 0x1746, 0x1747, 0x1748, 0x1749, 0x174a,
|
||||
0x174b, 0x174c, 0x174d, 0x174e, 0x174f, 0x1750, 0x1751, 0x1752,
|
||||
0x1745, 0x1746, 0x1747, 0x1748, 0x1749, 0x174a, 0x174b, 0x174c,
|
||||
0x174d, 0x174e, 0x174f, 0x1750, 0x1751, 0x1752, 0x1753, 0x1754,
|
||||
/* offsets 0xfac0 .. 0xfacf */
|
||||
0x1753, 0x1754, 0x1755, 0x1756, 0x1757, 0x1758, 0x1759, 0x175a,
|
||||
0x175b, 0x175c, 0x175d, 0x175e, 0x175f, 0x1760, 0x1761, 0x1762,
|
||||
0x1755, 0x1756, 0x1757, 0x1758, 0x1759, 0x175a, 0x175b, 0x175c,
|
||||
0x175d, 0x175e, 0x175f, 0x1760, 0x1761, 0x1762, 0x1763, 0x1764,
|
||||
/* offsets 0xfad0 .. 0xfadf */
|
||||
0x1762, 0x1762, 0x1762, 0x1763, 0x1764, 0x1765, 0x1765, 0x1765,
|
||||
0x1765, 0x1766, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767,
|
||||
0x1766, 0x1768, 0x176a, 0x176b, 0x176c, 0x176d, 0x176f, 0x1771,
|
||||
0x1773, 0x1774, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775,
|
||||
/* offsets 0xfb10 .. 0xfb1f */
|
||||
0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767,
|
||||
0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1767, 0x1769, 0x1769,
|
||||
0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775,
|
||||
0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1775, 0x1777, 0x1777,
|
||||
/* offsets 0xfb20 .. 0xfb2f */
|
||||
0x176b, 0x176b, 0x176b, 0x176b, 0x176b, 0x176b, 0x176b, 0x176b,
|
||||
0x176b, 0x176b, 0x176b, 0x176d, 0x176f, 0x1772, 0x1775, 0x1777,
|
||||
0x1779, 0x1779, 0x1779, 0x1779, 0x1779, 0x1779, 0x1779, 0x1779,
|
||||
0x1779, 0x1779, 0x1779, 0x177b, 0x177d, 0x1780, 0x1783, 0x1785,
|
||||
/* offsets 0xfb30 .. 0xfb3f */
|
||||
0x1779, 0x177b, 0x177d, 0x177f, 0x1781, 0x1783, 0x1785, 0x1787,
|
||||
0x1787, 0x1789, 0x178b, 0x178d, 0x178f, 0x1791, 0x1791, 0x1793,
|
||||
0x1787, 0x1789, 0x178b, 0x178d, 0x178f, 0x1791, 0x1793, 0x1795,
|
||||
0x1795, 0x1797, 0x1799, 0x179b, 0x179d, 0x179f, 0x179f, 0x17a1,
|
||||
/* offsets 0xfb40 .. 0xfb4f */
|
||||
0x1793, 0x1795, 0x1797, 0x1797, 0x1799, 0x179b, 0x179b, 0x179d,
|
||||
0x179f, 0x17a1, 0x17a3, 0x17a5, 0x17a7, 0x17a9, 0x17ab, 0x17ad,
|
||||
0x17a1, 0x17a3, 0x17a5, 0x17a5, 0x17a7, 0x17a9, 0x17a9, 0x17ab,
|
||||
0x17ad, 0x17af, 0x17b1, 0x17b3, 0x17b5, 0x17b7, 0x17b9, 0x17bb,
|
||||
/* offset sentinel */
|
||||
0x17ad,
|
||||
0x17bb,
|
||||
/* data */
|
||||
0x0041, 0x0300, 0x0041, 0x0301, 0x0041, 0x0302, 0x0041, 0x0303,
|
||||
0x0041, 0x0308, 0x0041, 0x030a, 0x0043, 0x0327, 0x0045, 0x0300,
|
||||
|
@ -934,26 +934,28 @@ const WCHAR DECLSPEC_HIDDEN nfd_table[6061] =
|
|||
0x798e, 0x7a40, 0x7a81, 0x7bc0, 0x7df4, 0x7e09, 0x7e41, 0x7f72,
|
||||
0x8005, 0x81ed, 0x8279, 0x8279, 0x8457, 0x8910, 0x8996, 0x8b01,
|
||||
0x8b39, 0x8cd3, 0x8d08, 0x8fb6, 0x9038, 0x96e3, 0x97ff, 0x983b,
|
||||
0x6075, 0x8218, 0x4e26, 0x51b5, 0x5168, 0x4f80, 0x5145, 0x5180,
|
||||
0x52c7, 0x52fa, 0x559d, 0x5555, 0x5599, 0x55e2, 0x585a, 0x58b3,
|
||||
0x5944, 0x5954, 0x5a62, 0x5b28, 0x5ed2, 0x5ed9, 0x5f69, 0x5fad,
|
||||
0x60d8, 0x614e, 0x6108, 0x618e, 0x6160, 0x61f2, 0x6234, 0x63c4,
|
||||
0x641c, 0x6452, 0x6556, 0x6674, 0x6717, 0x671b, 0x6756, 0x6b79,
|
||||
0x6bba, 0x6d41, 0x6edb, 0x6ecb, 0x6f22, 0x701e, 0x716e, 0x77a7,
|
||||
0x7235, 0x72af, 0x732a, 0x7471, 0x7506, 0x753b, 0x761d, 0x761f,
|
||||
0x76ca, 0x76db, 0x76f4, 0x774a, 0x7740, 0x78cc, 0x7ab1, 0x7bc0,
|
||||
0x7c7b, 0x7d5b, 0x7df4, 0x7f3e, 0x8005, 0x8352, 0x83ef, 0x8779,
|
||||
0x8941, 0x8986, 0x8996, 0x8abf, 0x8af8, 0x8acb, 0x8b01, 0x8afe,
|
||||
0x8aed, 0x8b39, 0x8b8a, 0x8d08, 0x8f38, 0x9072, 0x9199, 0x9276,
|
||||
0x967c, 0x96e3, 0x9756, 0x97db, 0x97ff, 0x980b, 0x983b, 0x9b12,
|
||||
0x9f9c, 0x3b9d, 0x4018, 0x4039, 0x9f43, 0x9f8e, 0x05d9, 0x05b4,
|
||||
0x05f2, 0x05b7, 0x05e9, 0x05c1, 0x05e9, 0x05c2, 0x05e9, 0x05bc,
|
||||
0x05c1, 0x05e9, 0x05bc, 0x05c2, 0x05d0, 0x05b7, 0x05d0, 0x05b8,
|
||||
0x05d0, 0x05bc, 0x05d1, 0x05bc, 0x05d2, 0x05bc, 0x05d3, 0x05bc,
|
||||
0x05d4, 0x05bc, 0x05d5, 0x05bc, 0x05d6, 0x05bc, 0x05d8, 0x05bc,
|
||||
0x05d9, 0x05bc, 0x05da, 0x05bc, 0x05db, 0x05bc, 0x05dc, 0x05bc,
|
||||
0x05de, 0x05bc, 0x05e0, 0x05bc, 0x05e1, 0x05bc, 0x05e3, 0x05bc,
|
||||
0x05e4, 0x05bc, 0x05e6, 0x05bc, 0x05e7, 0x05bc, 0x05e8, 0x05bc,
|
||||
0x05e9, 0x05bc, 0x05ea, 0x05bc, 0x05d5, 0x05b9, 0x05d1, 0x05bf,
|
||||
0x05db, 0x05bf, 0x05e4, 0x05bf
|
||||
0x6075, 0xd850, 0xdeee, 0x8218, 0x4e26, 0x51b5, 0x5168, 0x4f80,
|
||||
0x5145, 0x5180, 0x52c7, 0x52fa, 0x559d, 0x5555, 0x5599, 0x55e2,
|
||||
0x585a, 0x58b3, 0x5944, 0x5954, 0x5a62, 0x5b28, 0x5ed2, 0x5ed9,
|
||||
0x5f69, 0x5fad, 0x60d8, 0x614e, 0x6108, 0x618e, 0x6160, 0x61f2,
|
||||
0x6234, 0x63c4, 0x641c, 0x6452, 0x6556, 0x6674, 0x6717, 0x671b,
|
||||
0x6756, 0x6b79, 0x6bba, 0x6d41, 0x6edb, 0x6ecb, 0x6f22, 0x701e,
|
||||
0x716e, 0x77a7, 0x7235, 0x72af, 0x732a, 0x7471, 0x7506, 0x753b,
|
||||
0x761d, 0x761f, 0x76ca, 0x76db, 0x76f4, 0x774a, 0x7740, 0x78cc,
|
||||
0x7ab1, 0x7bc0, 0x7c7b, 0x7d5b, 0x7df4, 0x7f3e, 0x8005, 0x8352,
|
||||
0x83ef, 0x8779, 0x8941, 0x8986, 0x8996, 0x8abf, 0x8af8, 0x8acb,
|
||||
0x8b01, 0x8afe, 0x8aed, 0x8b39, 0x8b8a, 0x8d08, 0x8f38, 0x9072,
|
||||
0x9199, 0x9276, 0x967c, 0x96e3, 0x9756, 0x97db, 0x97ff, 0x980b,
|
||||
0x983b, 0x9b12, 0x9f9c, 0xd84a, 0xdc4a, 0xd84a, 0xdc44, 0xd84c,
|
||||
0xdfd5, 0x3b9d, 0x4018, 0x4039, 0xd854, 0xde49, 0xd857, 0xdcd0,
|
||||
0xd85f, 0xded3, 0x9f43, 0x9f8e, 0x05d9, 0x05b4, 0x05f2, 0x05b7,
|
||||
0x05e9, 0x05c1, 0x05e9, 0x05c2, 0x05e9, 0x05bc, 0x05c1, 0x05e9,
|
||||
0x05bc, 0x05c2, 0x05d0, 0x05b7, 0x05d0, 0x05b8, 0x05d0, 0x05bc,
|
||||
0x05d1, 0x05bc, 0x05d2, 0x05bc, 0x05d3, 0x05bc, 0x05d4, 0x05bc,
|
||||
0x05d5, 0x05bc, 0x05d6, 0x05bc, 0x05d8, 0x05bc, 0x05d9, 0x05bc,
|
||||
0x05da, 0x05bc, 0x05db, 0x05bc, 0x05dc, 0x05bc, 0x05de, 0x05bc,
|
||||
0x05e0, 0x05bc, 0x05e1, 0x05bc, 0x05e3, 0x05bc, 0x05e4, 0x05bc,
|
||||
0x05e6, 0x05bc, 0x05e7, 0x05bc, 0x05e8, 0x05bc, 0x05e9, 0x05bc,
|
||||
0x05ea, 0x05bc, 0x05d5, 0x05b9, 0x05d1, 0x05bf, 0x05db, 0x05bf,
|
||||
0x05e4, 0x05bf
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -428,6 +428,14 @@ my %joining_forms =
|
|||
"medial" => []
|
||||
);
|
||||
|
||||
sub get_utf16($)
|
||||
{
|
||||
my $ch = shift;
|
||||
return $ch if ($ch < 0x10000);
|
||||
$ch -= 0x10000;
|
||||
return ( 0xd800 | ($ch >> 10), 0xdc00 | ($ch & 0x3ff) );
|
||||
}
|
||||
|
||||
################################################################
|
||||
# fetch a unicode.org file and open it
|
||||
sub open_data_file($$)
|
||||
|
@ -453,7 +461,7 @@ sub get_decomposition($$)
|
|||
my ($char, $table) = @_;
|
||||
my @ret;
|
||||
|
||||
return $char unless defined ${$table}[$char];
|
||||
return get_utf16($char) unless defined ${$table}[$char];
|
||||
foreach my $ch (@{${$table}[$char]})
|
||||
{
|
||||
push @ret, get_decomposition( $ch, $table );
|
||||
|
@ -614,10 +622,7 @@ sub load_data($)
|
|||
elsif ($decomp =~ /^([0-9a-fA-F]+)$/)
|
||||
{
|
||||
# Single char decomposition
|
||||
if (hex $1 < 65536)
|
||||
{
|
||||
$decomp_table[$src] = $decomp_compat_table[$src] = [ hex $1 ];
|
||||
}
|
||||
|
||||
if (($src >= 0xf900 && $src < 0xfb00) || ($src >= 0xfe30 && $src < 0xfffd))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue