Skip to content

Commit a66b8b5

Browse files
Add Unicode 16.0 and 17.0
Default to Unicode 16.0.
1 parent 0b27807 commit a66b8b5

5 files changed

Lines changed: 1033 additions & 2 deletions

File tree

src/Wcwidth.Tests/WcwidthTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ public void Test_Combining_Spacing()
117117
length.ShouldBe(expected);
118118
}
119119

120+
[Fact]
121+
public void Test_U4DC0()
122+
{
123+
// Given, When
124+
var length = UnicodeCalculator.GetWidth('\u4DC0');
125+
126+
// Then
127+
length.ShouldBe(2);
128+
}
129+
120130
[Fact]
121131
public void Test_Int32_Overload()
122132
{

src/Wcwidth/Tables/WideTable.Generated.cs

Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ internal static partial class WideTable
3636
Unicode.Version_14_0_0 => Unicode_14_0_0(),
3737
Unicode.Version_15_0_0 => Unicode_15_0_0(),
3838
Unicode.Version_15_1_0 => Unicode_15_1_0(),
39+
Unicode.Version_16_0_0 => Unicode_16_0_0(),
40+
Unicode.Version_17_0_0 => Unicode_17_0_0(),
3941
_ => throw new InvalidOperationException("Unknown Unicode version"),
4042
};
4143
}
@@ -1552,5 +1554,264 @@ internal static partial class WideTable
15521554
{ 0x030000, 0x03FFFD },
15531555
};
15541556
}
1557+
1558+
private static uint[,] Unicode_16_0_0()
1559+
{
1560+
return new uint[,]
1561+
{
1562+
{ 0x001100, 0x00115F },
1563+
{ 0x00231A, 0x00231B },
1564+
{ 0x002329, 0x00232A },
1565+
{ 0x0023E9, 0x0023EC },
1566+
{ 0x0023F0, 0x0023F0 },
1567+
{ 0x0023F3, 0x0023F3 },
1568+
{ 0x0025FD, 0x0025FE },
1569+
{ 0x002614, 0x002615 },
1570+
{ 0x002630, 0x002637 },
1571+
{ 0x002648, 0x002653 },
1572+
{ 0x00267F, 0x00267F },
1573+
{ 0x00268A, 0x00268F },
1574+
{ 0x002693, 0x002693 },
1575+
{ 0x0026A1, 0x0026A1 },
1576+
{ 0x0026AA, 0x0026AB },
1577+
{ 0x0026BD, 0x0026BE },
1578+
{ 0x0026C4, 0x0026C5 },
1579+
{ 0x0026CE, 0x0026CE },
1580+
{ 0x0026D4, 0x0026D4 },
1581+
{ 0x0026EA, 0x0026EA },
1582+
{ 0x0026F2, 0x0026F3 },
1583+
{ 0x0026F5, 0x0026F5 },
1584+
{ 0x0026FA, 0x0026FA },
1585+
{ 0x0026FD, 0x0026FD },
1586+
{ 0x002705, 0x002705 },
1587+
{ 0x00270A, 0x00270B },
1588+
{ 0x002728, 0x002728 },
1589+
{ 0x00274C, 0x00274C },
1590+
{ 0x00274E, 0x00274E },
1591+
{ 0x002753, 0x002755 },
1592+
{ 0x002757, 0x002757 },
1593+
{ 0x002795, 0x002797 },
1594+
{ 0x0027B0, 0x0027B0 },
1595+
{ 0x0027BF, 0x0027BF },
1596+
{ 0x002B1B, 0x002B1C },
1597+
{ 0x002B50, 0x002B50 },
1598+
{ 0x002B55, 0x002B55 },
1599+
{ 0x002E80, 0x002E99 },
1600+
{ 0x002E9B, 0x002EF3 },
1601+
{ 0x002F00, 0x002FD5 },
1602+
{ 0x002FF0, 0x00303E },
1603+
{ 0x003041, 0x003096 },
1604+
{ 0x003099, 0x0030FF },
1605+
{ 0x003105, 0x00312F },
1606+
{ 0x003131, 0x00318E },
1607+
{ 0x003190, 0x0031E5 },
1608+
{ 0x0031EF, 0x00321E },
1609+
{ 0x003220, 0x003247 },
1610+
{ 0x003250, 0x00A48C },
1611+
{ 0x00A490, 0x00A4C6 },
1612+
{ 0x00A960, 0x00A97C },
1613+
{ 0x00AC00, 0x00D7A3 },
1614+
{ 0x00F900, 0x00FAFF },
1615+
{ 0x00FE10, 0x00FE19 },
1616+
{ 0x00FE30, 0x00FE52 },
1617+
{ 0x00FE54, 0x00FE66 },
1618+
{ 0x00FE68, 0x00FE6B },
1619+
{ 0x00FF01, 0x00FF60 },
1620+
{ 0x00FFE0, 0x00FFE6 },
1621+
{ 0x016FE0, 0x016FE4 },
1622+
{ 0x016FF0, 0x016FF1 },
1623+
{ 0x017000, 0x0187F7 },
1624+
{ 0x018800, 0x018CD5 },
1625+
{ 0x018CFF, 0x018D08 },
1626+
{ 0x01AFF0, 0x01AFF3 },
1627+
{ 0x01AFF5, 0x01AFFB },
1628+
{ 0x01AFFD, 0x01AFFE },
1629+
{ 0x01B000, 0x01B122 },
1630+
{ 0x01B132, 0x01B132 },
1631+
{ 0x01B150, 0x01B152 },
1632+
{ 0x01B155, 0x01B155 },
1633+
{ 0x01B164, 0x01B167 },
1634+
{ 0x01B170, 0x01B2FB },
1635+
{ 0x01D300, 0x01D356 },
1636+
{ 0x01D360, 0x01D376 },
1637+
{ 0x01F004, 0x01F004 },
1638+
{ 0x01F0CF, 0x01F0CF },
1639+
{ 0x01F18E, 0x01F18E },
1640+
{ 0x01F191, 0x01F19A },
1641+
{ 0x01F200, 0x01F202 },
1642+
{ 0x01F210, 0x01F23B },
1643+
{ 0x01F240, 0x01F248 },
1644+
{ 0x01F250, 0x01F251 },
1645+
{ 0x01F260, 0x01F265 },
1646+
{ 0x01F300, 0x01F320 },
1647+
{ 0x01F32D, 0x01F335 },
1648+
{ 0x01F337, 0x01F37C },
1649+
{ 0x01F37E, 0x01F393 },
1650+
{ 0x01F3A0, 0x01F3CA },
1651+
{ 0x01F3CF, 0x01F3D3 },
1652+
{ 0x01F3E0, 0x01F3F0 },
1653+
{ 0x01F3F4, 0x01F3F4 },
1654+
{ 0x01F3F8, 0x01F43E },
1655+
{ 0x01F440, 0x01F440 },
1656+
{ 0x01F442, 0x01F4FC },
1657+
{ 0x01F4FF, 0x01F53D },
1658+
{ 0x01F54B, 0x01F54E },
1659+
{ 0x01F550, 0x01F567 },
1660+
{ 0x01F57A, 0x01F57A },
1661+
{ 0x01F595, 0x01F596 },
1662+
{ 0x01F5A4, 0x01F5A4 },
1663+
{ 0x01F5FB, 0x01F64F },
1664+
{ 0x01F680, 0x01F6C5 },
1665+
{ 0x01F6CC, 0x01F6CC },
1666+
{ 0x01F6D0, 0x01F6D2 },
1667+
{ 0x01F6D5, 0x01F6D7 },
1668+
{ 0x01F6DC, 0x01F6DF },
1669+
{ 0x01F6EB, 0x01F6EC },
1670+
{ 0x01F6F4, 0x01F6FC },
1671+
{ 0x01F7E0, 0x01F7EB },
1672+
{ 0x01F7F0, 0x01F7F0 },
1673+
{ 0x01F90C, 0x01F93A },
1674+
{ 0x01F93C, 0x01F945 },
1675+
{ 0x01F947, 0x01F9FF },
1676+
{ 0x01FA70, 0x01FA7C },
1677+
{ 0x01FA80, 0x01FA89 },
1678+
{ 0x01FA8F, 0x01FAC6 },
1679+
{ 0x01FACE, 0x01FADC },
1680+
{ 0x01FADF, 0x01FAE9 },
1681+
{ 0x01FAF0, 0x01FAF8 },
1682+
{ 0x020000, 0x02FFFD },
1683+
{ 0x030000, 0x03FFFD },
1684+
};
1685+
}
1686+
1687+
private static uint[,] Unicode_17_0_0()
1688+
{
1689+
return new uint[,]
1690+
{
1691+
{ 0x001100, 0x00115F },
1692+
{ 0x00231A, 0x00231B },
1693+
{ 0x002329, 0x00232A },
1694+
{ 0x0023E9, 0x0023EC },
1695+
{ 0x0023F0, 0x0023F0 },
1696+
{ 0x0023F3, 0x0023F3 },
1697+
{ 0x0025FD, 0x0025FE },
1698+
{ 0x002614, 0x002615 },
1699+
{ 0x002630, 0x002637 },
1700+
{ 0x002648, 0x002653 },
1701+
{ 0x00267F, 0x00267F },
1702+
{ 0x00268A, 0x00268F },
1703+
{ 0x002693, 0x002693 },
1704+
{ 0x0026A1, 0x0026A1 },
1705+
{ 0x0026AA, 0x0026AB },
1706+
{ 0x0026BD, 0x0026BE },
1707+
{ 0x0026C4, 0x0026C5 },
1708+
{ 0x0026CE, 0x0026CE },
1709+
{ 0x0026D4, 0x0026D4 },
1710+
{ 0x0026EA, 0x0026EA },
1711+
{ 0x0026F2, 0x0026F3 },
1712+
{ 0x0026F5, 0x0026F5 },
1713+
{ 0x0026FA, 0x0026FA },
1714+
{ 0x0026FD, 0x0026FD },
1715+
{ 0x002705, 0x002705 },
1716+
{ 0x00270A, 0x00270B },
1717+
{ 0x002728, 0x002728 },
1718+
{ 0x00274C, 0x00274C },
1719+
{ 0x00274E, 0x00274E },
1720+
{ 0x002753, 0x002755 },
1721+
{ 0x002757, 0x002757 },
1722+
{ 0x002795, 0x002797 },
1723+
{ 0x0027B0, 0x0027B0 },
1724+
{ 0x0027BF, 0x0027BF },
1725+
{ 0x002B1B, 0x002B1C },
1726+
{ 0x002B50, 0x002B50 },
1727+
{ 0x002B55, 0x002B55 },
1728+
{ 0x002E80, 0x002E99 },
1729+
{ 0x002E9B, 0x002EF3 },
1730+
{ 0x002F00, 0x002FD5 },
1731+
{ 0x002FF0, 0x00303E },
1732+
{ 0x003041, 0x003096 },
1733+
{ 0x003099, 0x0030FF },
1734+
{ 0x003105, 0x00312F },
1735+
{ 0x003131, 0x00318E },
1736+
{ 0x003190, 0x0031E5 },
1737+
{ 0x0031EF, 0x00321E },
1738+
{ 0x003220, 0x003247 },
1739+
{ 0x003250, 0x00A48C },
1740+
{ 0x00A490, 0x00A4C6 },
1741+
{ 0x00A960, 0x00A97C },
1742+
{ 0x00AC00, 0x00D7A3 },
1743+
{ 0x00F900, 0x00FAFF },
1744+
{ 0x00FE10, 0x00FE19 },
1745+
{ 0x00FE30, 0x00FE52 },
1746+
{ 0x00FE54, 0x00FE66 },
1747+
{ 0x00FE68, 0x00FE6B },
1748+
{ 0x00FF01, 0x00FF60 },
1749+
{ 0x00FFE0, 0x00FFE6 },
1750+
{ 0x016FE0, 0x016FE4 },
1751+
{ 0x016FF0, 0x016FF6 },
1752+
{ 0x017000, 0x018CD5 },
1753+
{ 0x018CFF, 0x018D1E },
1754+
{ 0x018D80, 0x018DF2 },
1755+
{ 0x01AFF0, 0x01AFF3 },
1756+
{ 0x01AFF5, 0x01AFFB },
1757+
{ 0x01AFFD, 0x01AFFE },
1758+
{ 0x01B000, 0x01B122 },
1759+
{ 0x01B132, 0x01B132 },
1760+
{ 0x01B150, 0x01B152 },
1761+
{ 0x01B155, 0x01B155 },
1762+
{ 0x01B164, 0x01B167 },
1763+
{ 0x01B170, 0x01B2FB },
1764+
{ 0x01D300, 0x01D356 },
1765+
{ 0x01D360, 0x01D376 },
1766+
{ 0x01F004, 0x01F004 },
1767+
{ 0x01F0CF, 0x01F0CF },
1768+
{ 0x01F18E, 0x01F18E },
1769+
{ 0x01F191, 0x01F19A },
1770+
{ 0x01F200, 0x01F202 },
1771+
{ 0x01F210, 0x01F23B },
1772+
{ 0x01F240, 0x01F248 },
1773+
{ 0x01F250, 0x01F251 },
1774+
{ 0x01F260, 0x01F265 },
1775+
{ 0x01F300, 0x01F320 },
1776+
{ 0x01F32D, 0x01F335 },
1777+
{ 0x01F337, 0x01F37C },
1778+
{ 0x01F37E, 0x01F393 },
1779+
{ 0x01F3A0, 0x01F3CA },
1780+
{ 0x01F3CF, 0x01F3D3 },
1781+
{ 0x01F3E0, 0x01F3F0 },
1782+
{ 0x01F3F4, 0x01F3F4 },
1783+
{ 0x01F3F8, 0x01F43E },
1784+
{ 0x01F440, 0x01F440 },
1785+
{ 0x01F442, 0x01F4FC },
1786+
{ 0x01F4FF, 0x01F53D },
1787+
{ 0x01F54B, 0x01F54E },
1788+
{ 0x01F550, 0x01F567 },
1789+
{ 0x01F57A, 0x01F57A },
1790+
{ 0x01F595, 0x01F596 },
1791+
{ 0x01F5A4, 0x01F5A4 },
1792+
{ 0x01F5FB, 0x01F64F },
1793+
{ 0x01F680, 0x01F6C5 },
1794+
{ 0x01F6CC, 0x01F6CC },
1795+
{ 0x01F6D0, 0x01F6D2 },
1796+
{ 0x01F6D5, 0x01F6D8 },
1797+
{ 0x01F6DC, 0x01F6DF },
1798+
{ 0x01F6EB, 0x01F6EC },
1799+
{ 0x01F6F4, 0x01F6FC },
1800+
{ 0x01F7E0, 0x01F7EB },
1801+
{ 0x01F7F0, 0x01F7F0 },
1802+
{ 0x01F90C, 0x01F93A },
1803+
{ 0x01F93C, 0x01F945 },
1804+
{ 0x01F947, 0x01F9FF },
1805+
{ 0x01FA70, 0x01FA7C },
1806+
{ 0x01FA80, 0x01FA8A },
1807+
{ 0x01FA8E, 0x01FAC6 },
1808+
{ 0x01FAC8, 0x01FAC8 },
1809+
{ 0x01FACD, 0x01FADC },
1810+
{ 0x01FADF, 0x01FAEA },
1811+
{ 0x01FAEF, 0x01FAF8 },
1812+
{ 0x020000, 0x02FFFD },
1813+
{ 0x030000, 0x03FFFD },
1814+
};
1815+
}
15551816
}
15561817
}

0 commit comments

Comments
 (0)