From 3663cc1e0f0226652450fe6af32b7161534707ad Mon Sep 17 00:00:00 2001 From: Elango Cheran Date: Thu, 27 Jun 2024 16:04:06 -0700 Subject: [PATCH] ICU-22707 Add support for property Modifier_Combining_Mark --- icu4c/source/common/characterproperties.cpp | 1 + icu4c/source/common/propname_data.h | 207 +++++++++--------- icu4c/source/common/unicode/uchar.h | 8 +- icu4c/source/common/uprops.cpp | 29 +++ icu4c/source/common/uprops.h | 1 + icu4c/source/data/in/pnames.icu | Bin 46312 -> 46381 bytes icu4c/source/test/cintltst/cucdtst.c | 7 + icu4c/source/test/intltest/ucdtest.cpp | 1 + .../ibm/icu/impl/CharacterPropertiesImpl.java | 3 + .../com/ibm/icu/impl/UCharacterProperty.java | 38 +++- .../main/java/com/ibm/icu/lang/UProperty.java | 10 +- .../com/ibm/icu/impl/data/icudata/pnames.icu | Bin 46320 -> 46384 bytes .../ibm/icu/dev/test/lang/UCharacterTest.java | 7 + tools/unicode/c/genprops/pnames_data.h | 3 +- 14 files changed, 209 insertions(+), 106 deletions(-) diff --git a/icu4c/source/common/characterproperties.cpp b/icu4c/source/common/characterproperties.cpp index a3ed36ac5b8f..963ac8342151 100644 --- a/icu4c/source/common/characterproperties.cpp +++ b/icu4c/source/common/characterproperties.cpp @@ -184,6 +184,7 @@ void U_CALLCONV initInclusion(UPropertySource src, UErrorCode &errorCode) { sa.add(sa.set, 0x2FFF + 1); break; case UPROPS_SRC_ID_COMPAT_MATH: + case UPROPS_SRC_MCM: uprops_addPropertyStarts(src, &sa, &errorCode); break; case UPROPS_SRC_BLOCK: diff --git a/icu4c/source/common/propname_data.h b/icu4c/source/common/propname_data.h index 84c919ff12eb..750e58e97f2e 100644 --- a/icu4c/source/common/propname_data.h +++ b/icu4c/source/common/propname_data.h @@ -11,107 +11,107 @@ U_NAMESPACE_BEGIN -const int32_t PropNameData::indexes[8]={0x20,0x176c,0x561a,0xb4c8,0xb4c8,0xb4c8,0x31,0}; +const int32_t PropNameData::indexes[8]={0x20,0x1774,0x5642,0xb50d,0xb50d,0xb50d,0x31,0}; -const int32_t PropNameData::valueMaps[1491]={ -6,0,0x4b,0,0xfd,0x368,0xfd,0x37e,0xfd,0x393,0xfd,0x3a9,0xfd,0x3b4,0xfd,0x3d5, -0xfd,0x3e5,0xfd,0x3f4,0xfd,0x402,0xfd,0x426,0xfd,0x43d,0xfd,0x455,0xfd,0x46c,0xfd,0x47b, -0xfd,0x48a,0xfd,0x49b,0xfd,0x4a9,0xfd,0x4bb,0xfd,0x4d5,0xfd,0x4f0,0xfd,0x505,0xfd,0x522, -0xfd,0x533,0xfd,0x53e,0xfd,0x55d,0xfd,0x573,0xfd,0x584,0xfd,0x594,0xfd,0x5af,0xfd,0x5c8, -0xfd,0x5d9,0xfd,0x5f3,0xfd,0x606,0xfd,0x616,0xfd,0x630,0xfd,0x649,0xfd,0x660,0xfd,0x674, -0xfd,0x68a,0xfd,0x69e,0xfd,0x6b4,0xfd,0x6ce,0xfd,0x6e6,0xfd,0x702,0xfd,0x70a,0xfd,0x712, -0xfd,0x71a,0xfd,0x722,0xfd,0x72b,0xfd,0x738,0xfd,0x74b,0xfd,0x768,0xfd,0x785,0xfd,0x7a2, -0xfd,0x7c0,0xfd,0x7de,0xfd,0x802,0xfd,0x80f,0xfd,0x829,0xfd,0x83e,0xfd,0x859,0xfd,0x870, -0xfd,0x887,0xfd,0x8a9,0xfd,0x8c8,0xfd,0x8e1,0xfd,0x90e,0xfd,0x947,0xfd,0x978,0xfd,0x9a7, -0xfd,0x9d6,0xfd,0x9eb,0xfd,0xa04,0xfd,0xa2f,0xfd,0x1000,0x101b,0xa60,0x179,0xc80,0x194,0x344f, -0x103,0x346e,0x2eb,0x35ac,0x301,0x3606,0x30b,0x3863,0x32d,0x419f,0x399,0x420f,0x3a3,0x44f4,0x3d7,0x4532, -0x3df,0x50ee,0x4b3,0x516c,0x4bd,0x5191,0x4c3,0x51ab,0x4c9,0x51cc,0x4d0,0x51e6,0x103,0x520b,0x103,0x5231, -0x4d7,0x52db,0x4ed,0x5354,0x500,0x5406,0x51b,0x543d,0x522,0x561d,0x536,0x5ac2,0x55f,0x5b21,0x567,0x5b66, -0x56d,0x2000,0x2001,0x5b90,0x575,0x3000,0x3001,0x5c1c,0,0x4000,0x400e,0x5c2e,0,0x5c37,0,0x5c51, -0,0x5c62,0,0x5c73,0,0x5c89,0,0x5c92,0,0x5caf,0,0x5ccd,0,0x5ceb,0,0x5d09, -0,0x5d1f,0,0x5d33,0,0x5d49,0,0x7000,0x7002,0x5d62,0,0x5d79,0x5c3,0x8be,0x12,0, -1,0x12,0x20,0x8dc,0x4a,0,1,6,7,8,9,0xa,0xb,0xc,0xd,0xe, -0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, -0x1f,0x20,0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85, -0xc8,0xca,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e, -0x40,0x4c,0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106, -0x113,0x120,0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6, -0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1, -0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa7d,1,0,0x17,0xa6f,0xa80,0xa91, -0xaa5,0xabc,0xad4,0xae6,0xafb,0xb12,0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe, -0xc13,0xc2d,0xc48,0xc63,0xc1f,1,0,0x153,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52, -0xd7c,0xd94,0xda7,0xdba,0xdc9,0xdd8,0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e, -0xe93,0xea4,0xeaf,0xeb8,0xec9,0xeda,0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0, -0xfea,0x100b,0x1036,0x1059,0x10b7,0x10de,0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222, -0x1246,0x1259,0x1273,0x129d,0x12b5,0x12dd,0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f, -0x142b,0x1446,0x145f,0x1478,0x1499,0x14c9,0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658, -0x168b,0x16a2,0x16b1,0x16c2,0x16ed,0x1704,0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866, -0x188a,0x18ae,0x18e8,0x1920,0x194b,0x1963,0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2, -0x1ad1,0x1ae4,0x1af5,0x1b06,0x1b2b,0x1b50,0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac, -0x1cce,0x1ce5,0x1cfc,0x1d29,0x1d42,0x1d5b,0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e, -0x1e85,0x1e9a,0x1ecf,0x1ef3,0x1f08,0x1f17,0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8, -0x2007,0x2016,0x2025,0x203c,0x2051,0x2066,0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190, -0x21a3,0x21be,0x21e1,0x2204,0x2229,0x223a,0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3, -0x23c0,0x23e4,0x23f3,0x240f,0x2429,0x2446,0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd, -0x25e8,0x25f3,0x2604,0x261f,0x2643,0x2650,0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777, -0x2795,0x27a8,0x27bb,0x27d2,0x27ef,0x27fa,0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909, -0x293e,0x294f,0x2980,0x29a4,0x29b5,0x29ce,0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f, -0x2b3c,0x2b51,0x2b75,0x2b9b,0x2bd4,0x2be5,0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda, -0x2cf8,0x2d1b,0x2d38,0x2d45,0x2d65,0x2d82,0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2, -0x2ee1,0x2f0e,0x2f33,0x2f75,0x2f91,0x2fa0,0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4, -0x3108,0x3124,0x3142,0x3160,0x3177,0x3186,0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5, -0x32ee,0x331c,0x3358,0x3365,0x3380,0x3395,0x33b7,0x33c8,0x33d9,0x3423,0x3432,0x2096,1,0,0x12,0x3485, -0x3495,0x34a8,0x34b8,0x34c8,0x34d7,0x34e7,0x34f9,0x350c,0x351e,0x352e,0x353e,0x354d,0x355c,0x356c,0x3579,0x3588, -0x359c,0x2154,1,0,6,0x35c1,0x35cc,0x35d9,0x35e6,0x35f3,0x35fe,0x2198,1,0,0x1e,0x361b, -0x362a,0x363f,0x3654,0x3669,0x367d,0x368e,0x36a2,0x36b5,0x36c6,0x36df,0x36f1,0x3702,0x3716,0x3729,0x3741,0x3753, -0x375e,0x376e,0x377c,0x3791,0x37a6,0x37bc,0x37d6,0x37ec,0x37fc,0x3810,0x3824,0x3835,0x384d,0x23c3,1,0, -0x68,0x3875,0x3898,0x38a1,0x38ae,0x38b9,0x38c2,0x38cd,0x38d6,0x38ef,0x38f4,0x38fd,0x391a,0x3923,0x3930,0x3939, -0x396e,0x3975,0x397e,0x3991,0x399c,0x39a5,0x39b0,0x39c9,0x39d2,0x39e1,0x39ec,0x39f5,0x3a00,0x3a09,0x3a10,0x3a19, -0x3a24,0x3a2d,0x3a46,0x3a4f,0x3a5c,0x3a67,0x3a78,0x3a83,0x3a98,0x3aaf,0x3ab8,0x3ac1,0x3ada,0x3ae5,0x3aee,0x3af7, -0x3b0e,0x3b2b,0x3b36,0x3b47,0x3b52,0x3b59,0x3b66,0x3b73,0x3ba0,0x3bb5,0x3bbe,0x3bd9,0x3bfc,0x3c1d,0x3c3e,0x3c63, -0x3c8a,0x3cab,0x3cce,0x3cef,0x3d16,0x3d37,0x3d5c,0x3d7b,0x3d9a,0x3db9,0x3dd6,0x3df7,0x3e18,0x3e3b,0x3e60,0x3e7f, -0x3e9e,0x3ebf,0x3ee6,0x3f0b,0x3f2a,0x3f4b,0x3f6e,0x3f89,0x3fa2,0x3fbd,0x3fd6,0x3ff3,0x400e,0x402b,0x404a,0x4067, -0x4084,0x40a3,0x40c0,0x40db,0x40f8,0x4115,0x4148,0x416f,0x4182,0x2726,1,0,6,0x41b0,0x41bf,0x41cf, -0x41df,0x41ef,0x4200,0x2784,1,0,0x30,0x421e,0x422a,0x4238,0x4247,0x4256,0x4266,0x4277,0x428b,0x42a0, -0x42b6,0x42c9,0x42dd,0x42ed,0x42f6,0x4301,0x4311,0x432d,0x433f,0x434d,0x435c,0x4368,0x437d,0x4391,0x43a4,0x43b2, -0x43c6,0x43d4,0x43de,0x43f0,0x43fc,0x440a,0x441a,0x4421,0x4428,0x442f,0x4436,0x443d,0x4453,0x4474,0x870,0x4486, -0x4491,0x44a0,0x44a9,0x44b4,0x44c7,0x44d8,0x44e9,0x2a14,1,0,4,0x4505,0x4510,0x451c,0x4526,0x2a3a, -1,0,0xd0,0x453d,0x454a,0x455f,0x456c,0x457b,0x4589,0x4598,0x45a7,0x45b9,0x45c8,0x45d6,0x45e7,0x45f6, -0x4605,0x4612,0x461e,0x462d,0x463c,0x4646,0x4653,0x4660,0x466f,0x467d,0x468c,0x4698,0x46a2,0x46ae,0x46be,0x46ce, -0x46dc,0x46e8,0x46f9,0x4705,0x4711,0x471f,0x472c,0x4738,0x4745,0xea4,0x4752,0x4760,0x477a,0x4783,0x4791,0x479f, -0x47ab,0x47ba,0x47c8,0x47d6,0x47e2,0x47f1,0x47ff,0x480d,0x481a,0x4829,0x4844,0x4853,0x4864,0x4875,0x4888,0x489a, -0x48a9,0x48bb,0x48ca,0x48d6,0x48e1,0x1fb4,0x48ee,0x48f9,0x4904,0x490f,0x491a,0x4935,0x4940,0x494b,0x4956,0x4969, -0x497d,0x4988,0x4997,0x49a6,0x49b1,0x49bc,0x49c9,0x49d8,0x49e6,0x49f1,0x4a0c,0x4a16,0x4a27,0x4a38,0x4a47,0x4a58, -0x4a63,0x4a6e,0x4a79,0x4a84,0x4a8f,0x4a9a,0x4aa5,0x4aaf,0x4aba,0x4aca,0x4ad5,0x4ae3,0x4af0,0x4afb,0x4b0a,0x4b17, -0x4b24,0x4b33,0x4b40,0x4b51,0x4b63,0x4b73,0x4b7e,0x4b91,0x4ba8,0x4bb6,0x4bc3,0x4bce,0x4bdb,0x4bec,0x4c08,0x4c1e, -0x4c29,0x4c46,0x4c56,0x4c65,0x4c70,0x4c7b,0x20ce,0x4c87,0x4c92,0x4caa,0x4cba,0x4cc9,0x4cd7,0x4ce5,0x4cf0,0x4cfb, -0x4d0f,0x4d26,0x4d3e,0x4d4e,0x4d5e,0x4d6e,0x4d80,0x4d8b,0x4d96,0x4da0,0x4dac,0x4dba,0x4dcd,0x4dd9,0x4de6,0x4df1, -0x4e0d,0x4e1a,0x4e28,0x4e41,0x29ce,0x4e50,0x27ef,0x4e5d,0x4e6b,0x4e7d,0x4e8b,0x4e97,0x4ea7,0x2c09,0x4eb5,0x4ec1, -0x4ecc,0x4ed7,0x4ee2,0x4ef6,0x4f04,0x4f1b,0x4f27,0x4f3b,0x4f49,0x4f5b,0x4f71,0x4f7f,0x4f91,0x4f9f,0x4fbc,0x4fce, -0x4fdb,0x4fec,0x4ffe,0x5018,0x5025,0x5038,0x5049,0x3186,0x5056,0x32ca,0x5065,0x5077,0x5082,0x508e,0x50a1,0x50b1, -0x50bf,0x50cd,0x50da,0x3504,1,0,6,0x5108,0x511b,0x512b,0x5139,0x514a,0x515a,0x3560,0x12,0, -1,0x5184,0x518a,0x356d,0x12,0,1,0x5184,0x518a,0x357a,1,0,3,0x5184,0x518a,0x51c3, -0x3590,1,0,3,0x5184,0x518a,0x51c3,0x35a6,1,0,0x12,0x524d,0x5257,0x5263,0x526a,0x5275, -0x527a,0x5281,0x5288,0x5291,0x5296,0x529b,0x52ab,0x870,0x4486,0x52b7,0x4491,0x52c7,0x44a0,0x364f,1,0, -0xf,0x524d,0x52ee,0x52f8,0x5302,0x530d,0x435c,0x5317,0x5323,0x532b,0x5332,0x533c,0x5263,0x526a,0x527a,0x5346, -0x36d6,1,0,0x17,0x524d,0x5363,0x5302,0x536f,0x537c,0x538a,0x435c,0x5395,0x5263,0x53a6,0x527a,0x53b5, -0x53c3,0x870,0x4474,0x53cf,0x53e0,0x4486,0x52b7,0x4491,0x52c7,0x44a0,0x53f1,0x37f3,1,0,3,0x5424, -0x542c,0x5434,0x380c,1,0,0x10,0x545d,0x5464,0x5473,0x5494,0x54b7,0x54c2,0x54e1,0x54f8,0x5505,0x550e, -0x552d,0x5560,0x557b,0x55aa,0x55c7,0x55ec,0x38a5,1,0,0x25,0x563b,0x5648,0x565b,0x5668,0x5695,0x56ba, -0x56cf,0x56ee,0x570f,0x573c,0x5775,0x5798,0x57bb,0x57e8,0x581d,0x5844,0x586d,0x58a4,0x58d3,0x58f4,0x5919,0x5928, -0x594b,0x5962,0x596f,0x597e,0x599b,0x59b4,0x59d7,0x59fc,0x5a15,0x5a2a,0x5a39,0x5a4a,0x5a57,0x5a78,0x5a9d,0x3a88, -1,0,4,0x5adb,0x5ae6,0x5afe,0x5b16,0x3ac4,0x12,0,1,0x5b3e,0x5b55,0x3adb,1,0, -4,0x4505,0x56ba,0x53a6,0x5b81,0x3b00,0x36,1,2,4,8,0xe,0x10,0x20,0x3e,0x40, -0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000,0x40000,0x78001, -0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x361b,0x362a,0x363f, -0x3654,0x5bbe,0x3669,0x367d,0x5bb4,0x368e,0x36a2,0x36b5,0x5bcf,0x36c6,0x36df,0x36f1,0x5be6,0x3702,0x3716,0x3729, -0x5c0f,0x3741,0x3753,0x375e,0x376e,0x5bab,0x377c,0x3791,0x37a6,0x37bc,0x37d6,0x37ec,0x37fc,0x3810,0x3824,0x5c05, -0x3835,0x384d,0x5bf0,0x3e17,1,0,0xc,0x5d92,0x5daf,0x5dc6,0x5deb,0x5dfe,0x5e0f,0x5e24,0x5e37,0x5e4c, -0x5e67,0x5e80,0x5e95 +const int32_t PropNameData::valueMaps[1493]={ +6,0,0x4c,0,0xff,0x368,0xff,0x37e,0xff,0x393,0xff,0x3a9,0xff,0x3b4,0xff,0x3d5, +0xff,0x3e5,0xff,0x3f4,0xff,0x402,0xff,0x426,0xff,0x43d,0xff,0x455,0xff,0x46c,0xff,0x47b, +0xff,0x48a,0xff,0x49b,0xff,0x4a9,0xff,0x4bb,0xff,0x4d5,0xff,0x4f0,0xff,0x505,0xff,0x522, +0xff,0x533,0xff,0x53e,0xff,0x55d,0xff,0x573,0xff,0x584,0xff,0x594,0xff,0x5af,0xff,0x5c8, +0xff,0x5d9,0xff,0x5f3,0xff,0x606,0xff,0x616,0xff,0x630,0xff,0x649,0xff,0x660,0xff,0x674, +0xff,0x68a,0xff,0x69e,0xff,0x6b4,0xff,0x6ce,0xff,0x6e6,0xff,0x702,0xff,0x70a,0xff,0x712, +0xff,0x71a,0xff,0x722,0xff,0x72b,0xff,0x738,0xff,0x74b,0xff,0x768,0xff,0x785,0xff,0x7a2, +0xff,0x7c0,0xff,0x7de,0xff,0x802,0xff,0x80f,0xff,0x829,0xff,0x83e,0xff,0x859,0xff,0x870, +0xff,0x887,0xff,0x8a9,0xff,0x8c8,0xff,0x8e1,0xff,0x90e,0xff,0x947,0xff,0x978,0xff,0x9a7, +0xff,0x9d6,0xff,0x9eb,0xff,0xa04,0xff,0xa2f,0xff,0xa60,0xff,0x1000,0x101b,0xa7d,0x17b,0xc9d, +0x196,0x346c,0x105,0x348b,0x2ed,0x35c9,0x303,0x3623,0x30d,0x3880,0x32f,0x41bc,0x39b,0x422c,0x3a5,0x4511, +0x3d9,0x454f,0x3e1,0x510b,0x4b5,0x5189,0x4bf,0x51ae,0x4c5,0x51c8,0x4cb,0x51e9,0x4d2,0x5203,0x105,0x5228, +0x105,0x524e,0x4d9,0x52f8,0x4ef,0x5371,0x502,0x5423,0x51d,0x545a,0x524,0x563a,0x538,0x5adf,0x561,0x5b3e, +0x569,0x5b83,0x56f,0x2000,0x2001,0x5bad,0x577,0x3000,0x3001,0x5c39,0,0x4000,0x400e,0x5c4b,0,0x5c54, +0,0x5c6e,0,0x5c7f,0,0x5c90,0,0x5ca6,0,0x5caf,0,0x5ccc,0,0x5cea,0,0x5d08, +0,0x5d26,0,0x5d3c,0,0x5d50,0,0x5d66,0,0x7000,0x7002,0x5d7f,0,0x5d96,0x5c5,0x8de, +0x12,0,1,0x12,0x20,0x8fc,0x4a,0,1,6,7,8,9,0xa,0xb,0xc, +0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c, +0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82, +0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea, +0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec, +0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc, +0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7, +0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa9d,1,0,0x17,0xa8c, +0xa9d,0xaae,0xac2,0xad9,0xaf1,0xb03,0xb18,0xb2f,0xb44,0xb54,0xb66,0xb83,0xb9f,0xbb1,0xbce,0xbea, +0xc06,0xc1b,0xc30,0xc4a,0xc65,0xc80,0xc3f,1,0,0x153,0xca8,0xcb5,0xcc8,0xcf0,0xd0e,0xd2c, +0xd44,0xd6f,0xd99,0xdb1,0xdc4,0xdd7,0xde6,0xdf5,0xe04,0xe13,0xe2a,0xe3b,0xe4e,0xe61,0xe6e,0xe7b, +0xe8a,0xe9b,0xeb0,0xec1,0xecc,0xed5,0xee6,0xef7,0xf0a,0xf1c,0xf2f,0xf42,0xf81,0xf8e,0xf9b,0xfa8, +0xfbd,0xfed,0x1007,0x1028,0x1053,0x1076,0x10d4,0x10fb,0x1116,0x1125,0x114c,0x1174,0x1197,0x11ba,0x11e4,0x11fd, +0x121c,0x123f,0x1263,0x1276,0x1290,0x12ba,0x12d2,0x12fa,0x1323,0x1336,0x1349,0x135c,0x1383,0x1392,0x13b2,0x13e0, +0x13fe,0x142c,0x1448,0x1463,0x147c,0x1495,0x14b6,0x14e6,0x1505,0x1527,0x155b,0x1588,0x15cd,0x15ee,0x1618,0x1639, +0x1662,0x1675,0x16a8,0x16bf,0x16ce,0x16df,0x170a,0x1721,0x1752,0x1780,0x17c3,0x17ce,0x1807,0x1818,0x1829,0x1836, +0x1849,0x1883,0x18a7,0x18cb,0x1905,0x193d,0x1968,0x1980,0x19ac,0x19d8,0x19e5,0x19f4,0x1a11,0x1a33,0x1a61,0x1a81, +0x1aa8,0x1acf,0x1aee,0x1b01,0x1b12,0x1b23,0x1b48,0x1b6d,0x1b94,0x1bc8,0x1bf5,0x1c13,0x1c26,0x1c3f,0x1c78,0x1c87, +0x1ca7,0x1cc9,0x1ceb,0x1d02,0x1d19,0x1d46,0x1d5f,0x1d78,0x1da9,0x1dd3,0x1dee,0x1e01,0x1e20,0x1e29,0x1e3c,0x1e5a, +0x1e78,0x1e8b,0x1ea2,0x1eb7,0x1eec,0x1f10,0x1f25,0x1f34,0x1f47,0x1f6b,0x1f74,0x1f98,0x1faf,0x1fc2,0x1fd1,0x1fdc, +0x1ffd,0x2015,0x2024,0x2033,0x2042,0x2059,0x206e,0x2083,0x20bc,0x20cf,0x20eb,0x20f6,0x2103,0x2131,0x2155,0x2178, +0x218b,0x21ad,0x21c0,0x21db,0x21fe,0x2221,0x2246,0x2257,0x2286,0x22b3,0x22ca,0x22e5,0x22f4,0x231f,0x2357,0x2391, +0x23bf,0x23d0,0x23dd,0x2401,0x2410,0x242c,0x2446,0x2463,0x249b,0x24b0,0x24dd,0x24fc,0x252a,0x254a,0x257e,0x258d, +0x25b7,0x25da,0x2605,0x2610,0x2621,0x263c,0x2660,0x266d,0x2682,0x26a9,0x26d4,0x270b,0x271e,0x272f,0x275f,0x2770, +0x277f,0x2794,0x27b2,0x27c5,0x27d8,0x27ef,0x280c,0x2817,0x2820,0x2842,0x2857,0x287c,0x2893,0x28bc,0x28d7,0x28ec, +0x2905,0x2926,0x295b,0x296c,0x299d,0x29c1,0x29d2,0x29eb,0x29f6,0x2a23,0x2a45,0x2a73,0x2aa6,0x2ab5,0x2ac6,0x2ae3, +0x2b25,0x2b4c,0x2b59,0x2b6e,0x2b92,0x2bb8,0x2bf1,0x2c02,0x2c26,0x2c31,0x2c3e,0x2c4d,0x2c72,0x2ca0,0x2cbc,0x2cd9, +0x2ce6,0x2cf7,0x2d15,0x2d38,0x2d55,0x2d62,0x2d82,0x2d9f,0x2dc0,0x2de9,0x2dfa,0x2e19,0x2e32,0x2e4b,0x2e5c,0x2ea5, +0x2eb6,0x2ecf,0x2efe,0x2f2b,0x2f50,0x2f92,0x2fae,0x2fbd,0x2fd4,0x3002,0x301b,0x3044,0x305e,0x3099,0x30b7,0x30c6, +0x30e6,0x3101,0x3125,0x3141,0x315f,0x317d,0x3194,0x31a3,0x31ae,0x31eb,0x31fe,0x3228,0x3248,0x3276,0x329a,0x32c2, +0x32e7,0x32f2,0x330b,0x3339,0x3375,0x3382,0x339d,0x33b2,0x33d4,0x33e5,0x33f6,0x3440,0x344f,0x20b6,1,0, +0x12,0x34a2,0x34b2,0x34c5,0x34d5,0x34e5,0x34f4,0x3504,0x3516,0x3529,0x353b,0x354b,0x355b,0x356a,0x3579,0x3589, +0x3596,0x35a5,0x35b9,0x2174,1,0,6,0x35de,0x35e9,0x35f6,0x3603,0x3610,0x361b,0x21b8,1,0, +0x1e,0x3638,0x3647,0x365c,0x3671,0x3686,0x369a,0x36ab,0x36bf,0x36d2,0x36e3,0x36fc,0x370e,0x371f,0x3733,0x3746, +0x375e,0x3770,0x377b,0x378b,0x3799,0x37ae,0x37c3,0x37d9,0x37f3,0x3809,0x3819,0x382d,0x3841,0x3852,0x386a,0x23e3, +1,0,0x68,0x3892,0x38b5,0x38be,0x38cb,0x38d6,0x38df,0x38ea,0x38f3,0x390c,0x3911,0x391a,0x3937,0x3940, +0x394d,0x3956,0x398b,0x3992,0x399b,0x39ae,0x39b9,0x39c2,0x39cd,0x39e6,0x39ef,0x39fe,0x3a09,0x3a12,0x3a1d,0x3a26, +0x3a2d,0x3a36,0x3a41,0x3a4a,0x3a63,0x3a6c,0x3a79,0x3a84,0x3a95,0x3aa0,0x3ab5,0x3acc,0x3ad5,0x3ade,0x3af7,0x3b02, +0x3b0b,0x3b14,0x3b2b,0x3b48,0x3b53,0x3b64,0x3b6f,0x3b76,0x3b83,0x3b90,0x3bbd,0x3bd2,0x3bdb,0x3bf6,0x3c19,0x3c3a, +0x3c5b,0x3c80,0x3ca7,0x3cc8,0x3ceb,0x3d0c,0x3d33,0x3d54,0x3d79,0x3d98,0x3db7,0x3dd6,0x3df3,0x3e14,0x3e35,0x3e58, +0x3e7d,0x3e9c,0x3ebb,0x3edc,0x3f03,0x3f28,0x3f47,0x3f68,0x3f8b,0x3fa6,0x3fbf,0x3fda,0x3ff3,0x4010,0x402b,0x4048, +0x4067,0x4084,0x40a1,0x40c0,0x40dd,0x40f8,0x4115,0x4132,0x4165,0x418c,0x419f,0x2746,1,0,6,0x41cd, +0x41dc,0x41ec,0x41fc,0x420c,0x421d,0x27a4,1,0,0x30,0x423b,0x4247,0x4255,0x4264,0x4273,0x4283,0x4294, +0x42a8,0x42bd,0x42d3,0x42e6,0x42fa,0x430a,0x4313,0x431e,0x432e,0x434a,0x435c,0x436a,0x4379,0x4385,0x439a,0x43ae, +0x43c1,0x43cf,0x43e3,0x43f1,0x43fb,0x440d,0x4419,0x4427,0x4437,0x443e,0x4445,0x444c,0x4453,0x445a,0x4470,0x4491, +0x870,0x44a3,0x44ae,0x44bd,0x44c6,0x44d1,0x44e4,0x44f5,0x4506,0x2a34,1,0,4,0x4522,0x452d,0x4539, +0x4543,0x2a5a,1,0,0xd0,0x455a,0x4567,0x457c,0x4589,0x4598,0x45a6,0x45b5,0x45c4,0x45d6,0x45e5,0x45f3, +0x4604,0x4613,0x4622,0x462f,0x463b,0x464a,0x4659,0x4663,0x4670,0x467d,0x468c,0x469a,0x46a9,0x46b5,0x46bf,0x46cb, +0x46db,0x46eb,0x46f9,0x4705,0x4716,0x4722,0x472e,0x473c,0x4749,0x4755,0x4762,0xec1,0x476f,0x477d,0x4797,0x47a0, +0x47ae,0x47bc,0x47c8,0x47d7,0x47e5,0x47f3,0x47ff,0x480e,0x481c,0x482a,0x4837,0x4846,0x4861,0x4870,0x4881,0x4892, +0x48a5,0x48b7,0x48c6,0x48d8,0x48e7,0x48f3,0x48fe,0x1fd1,0x490b,0x4916,0x4921,0x492c,0x4937,0x4952,0x495d,0x4968, +0x4973,0x4986,0x499a,0x49a5,0x49b4,0x49c3,0x49ce,0x49d9,0x49e6,0x49f5,0x4a03,0x4a0e,0x4a29,0x4a33,0x4a44,0x4a55, +0x4a64,0x4a75,0x4a80,0x4a8b,0x4a96,0x4aa1,0x4aac,0x4ab7,0x4ac2,0x4acc,0x4ad7,0x4ae7,0x4af2,0x4b00,0x4b0d,0x4b18, +0x4b27,0x4b34,0x4b41,0x4b50,0x4b5d,0x4b6e,0x4b80,0x4b90,0x4b9b,0x4bae,0x4bc5,0x4bd3,0x4be0,0x4beb,0x4bf8,0x4c09, +0x4c25,0x4c3b,0x4c46,0x4c63,0x4c73,0x4c82,0x4c8d,0x4c98,0x20eb,0x4ca4,0x4caf,0x4cc7,0x4cd7,0x4ce6,0x4cf4,0x4d02, +0x4d0d,0x4d18,0x4d2c,0x4d43,0x4d5b,0x4d6b,0x4d7b,0x4d8b,0x4d9d,0x4da8,0x4db3,0x4dbd,0x4dc9,0x4dd7,0x4dea,0x4df6, +0x4e03,0x4e0e,0x4e2a,0x4e37,0x4e45,0x4e5e,0x29eb,0x4e6d,0x280c,0x4e7a,0x4e88,0x4e9a,0x4ea8,0x4eb4,0x4ec4,0x2c26, +0x4ed2,0x4ede,0x4ee9,0x4ef4,0x4eff,0x4f13,0x4f21,0x4f38,0x4f44,0x4f58,0x4f66,0x4f78,0x4f8e,0x4f9c,0x4fae,0x4fbc, +0x4fd9,0x4feb,0x4ff8,0x5009,0x501b,0x5035,0x5042,0x5055,0x5066,0x31a3,0x5073,0x32e7,0x5082,0x5094,0x509f,0x50ab, +0x50be,0x50ce,0x50dc,0x50ea,0x50f7,0x3524,1,0,6,0x5125,0x5138,0x5148,0x5156,0x5167,0x5177,0x3580, +0x12,0,1,0x51a1,0x51a7,0x358d,0x12,0,1,0x51a1,0x51a7,0x359a,1,0,3,0x51a1, +0x51a7,0x51e0,0x35b0,1,0,3,0x51a1,0x51a7,0x51e0,0x35c6,1,0,0x12,0x526a,0x5274,0x5280, +0x5287,0x5292,0x5297,0x529e,0x52a5,0x52ae,0x52b3,0x52b8,0x52c8,0x870,0x44a3,0x52d4,0x44ae,0x52e4,0x44bd,0x366f, +1,0,0xf,0x526a,0x530b,0x5315,0x531f,0x532a,0x4379,0x5334,0x5340,0x5348,0x534f,0x5359,0x5280,0x5287, +0x5297,0x5363,0x36f6,1,0,0x17,0x526a,0x5380,0x531f,0x538c,0x5399,0x53a7,0x4379,0x53b2,0x5280,0x53c3, +0x5297,0x53d2,0x53e0,0x870,0x4491,0x53ec,0x53fd,0x44a3,0x52d4,0x44ae,0x52e4,0x44bd,0x540e,0x3813,1,0, +3,0x5441,0x5449,0x5451,0x382c,1,0,0x10,0x547a,0x5481,0x5490,0x54b1,0x54d4,0x54df,0x54fe,0x5515, +0x5522,0x552b,0x554a,0x557d,0x5598,0x55c7,0x55e4,0x5609,0x38c5,1,0,0x25,0x5658,0x5665,0x5678,0x5685, +0x56b2,0x56d7,0x56ec,0x570b,0x572c,0x5759,0x5792,0x57b5,0x57d8,0x5805,0x583a,0x5861,0x588a,0x58c1,0x58f0,0x5911, +0x5936,0x5945,0x5968,0x597f,0x598c,0x599b,0x59b8,0x59d1,0x59f4,0x5a19,0x5a32,0x5a47,0x5a56,0x5a67,0x5a74,0x5a95, +0x5aba,0x3aa8,1,0,4,0x5af8,0x5b03,0x5b1b,0x5b33,0x3ae4,0x12,0,1,0x5b5b,0x5b72,0x3afb, +1,0,4,0x4522,0x56d7,0x53c3,0x5b9e,0x3b20,0x36,1,2,4,8,0xe,0x10,0x20, +0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000, +0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x3638, +0x3647,0x365c,0x3671,0x5bdb,0x3686,0x369a,0x5bd1,0x36ab,0x36bf,0x36d2,0x5bec,0x36e3,0x36fc,0x370e,0x5c03,0x371f, +0x3733,0x3746,0x5c2c,0x375e,0x3770,0x377b,0x378b,0x5bc8,0x3799,0x37ae,0x37c3,0x37d9,0x37f3,0x3809,0x3819,0x382d, +0x3841,0x5c22,0x3852,0x386a,0x5c0d,0x3e37,1,0,0xc,0x5daf,0x5dcc,0x5de3,0x5e08,0x5e1b,0x5e2c,0x5e41, +0x5e54,0x5e69,0x5e84,0x5e9d,0x5eb2 }; -const uint8_t PropNameData::bytesTries[16046]={ -0,0x15,0x6d,0xc3,0xc7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78, +const uint8_t PropNameData::bytesTries[16078]={ +0,0x15,0x6d,0xc3,0xe7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78, 1,0x64,0x50,0x69,0x10,0x64,1,0x63,0x30,0x73,0x62,0x13,0x74,0x61,0x72,0x74, 0x63,0x60,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x61,0x13,0x69,0x67,0x69,0x74, 0x81,3,0x61,0x2e,0x65,0x4c,0x6f,0xc3,0x18,0x73,0x69,0x1e,0x72,0x69,0x61,0x74, @@ -144,15 +144,17 @@ const uint8_t PropNameData::bytesTries[16046]={ 0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x11,0xd8,0x40,0xa,0x11,0x63, 0x63,0xc3,0x11,0x11,0x72,0x6d,0x58,0x1e,0x69,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63, 0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,0x1d,0x74,0x6c,0x65,0x63,0x61,0x73,0x65, -0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,0xa,0x6d,0xa2,0x76,0x6e,0xa2,0x78, -0x70,0xa4,0x3e,0x71,0xa4,0x90,0x72,3,0x61,0x2c,0x65,0x36,0x67,0x54,0x69,0x9d, +0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,0xa,0x6d,0xa2,0x76,0x6e,0xa2,0x98, +0x70,0xa4,0x5e,0x71,0xa4,0xb0,0x72,3,0x61,0x2c,0x65,0x36,0x67,0x54,0x69,0x9d, 0x14,0x64,0x69,0x63,0x61,0x6c,0x55,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e, 0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x9d,0x15,0x69,0x65,0x6d,0x6f,0x6a,0x69,0xa2, 0x47,3,0x66,0x44,0x6d,0x5c,0x74,0x7c,0x7a,0x19,0x77,0x6a,0x73,0x65,0x71,0x75, 0x65,0x6e,0x63,0x65,0xa3,0x46,0x1a,0x6c,0x61,0x67,0x73,0x65,0x71,0x75,0x65,0x6e, 0x63,0x65,0xa3,0x44,0x1e,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,0x65,0x71,0x75, 0x65,0x6e,0x63,0x65,0xa3,0x43,0x19,0x61,0x67,0x73,0x65,0x71,0x75,0x65,0x6e,0x63, -0x65,0xa3,0x45,0x12,0x61,0x74,0x68,0x4f,6,0x6f,0x39,0x6f,0x32,0x74,0xc3,9, +0x65,0xa3,0x45,2,0x61,0x54,0x63,0x58,0x6f,0x12,0x64,0x69,0x66,0x1f,0x69,0x65, +0x72,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa3,0x4b, +0x11,0x74,0x68,0x4f,0x10,0x6d,0xa3,0x4b,6,0x6f,0x39,0x6f,0x32,0x74,0xc3,9, 0x75,0x54,0x76,0xd9,0x30,0,0x12,0x6e,0x63,0x68,0x1f,0x61,0x72,0x61,0x63,0x74, 0x65,0x72,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x51,0x14,0x6d,0x65,0x72, 0x69,0x63,1,0x74,0x32,0x76,0x13,0x61,0x6c,0x75,0x65,0xd9,0x30,0,0x12,0x79, @@ -1116,7 +1118,7 @@ const uint8_t PropNameData::bytesTries[16046]={ 0x69,0x6f,0x6e,0x2b,0x17,0x6e,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x35 }; -const char PropNameData::nameGroups[24238]={ +const char PropNameData::nameGroups[24267]={ 2,'A','l','p','h','a',0,'A','l','p','h','a','b','e','t','i','c',0, 4,'N',0,'N','o',0,'F',0,'F','a','l','s','e',0,4,'Y',0,'Y','e','s',0,'T',0,'T','r','u','e',0, 2,'N','R',0,'N','o','t','_','R','e','o','r','d','e','r','e','d',0, @@ -1224,6 +1226,7 @@ const char PropNameData::nameGroups[24238]={ 2,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','S','t','a','r','t',0,'I','D','_','C','o','m','p','a','t','_', 'M','a','t','h','_','S','t','a','r','t',0,2,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','C','o','n','t','i', 'n','u','e',0,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','C','o','n','t','i','n','u','e',0, +2,'M','C','M',0,'M','o','d','i','f','i','e','r','_','C','o','m','b','i','n','i','n','g','_','M','a','r','k',0, 2,'b','c',0,'B','i','d','i','_','C','l','a','s','s',0,2,'L',0,'L','e','f','t','_','T','o','_','R','i','g','h','t',0, 2,'R',0,'R','i','g','h','t','_','T','o','_','L','e','f','t',0, 2,'E','N',0,'E','u','r','o','p','e','a','n','_','N','u','m','b','e','r',0, diff --git a/icu4c/source/common/unicode/uchar.h b/icu4c/source/common/unicode/uchar.h index 65ef1a42a457..aa01d85fade4 100644 --- a/icu4c/source/common/unicode/uchar.h +++ b/icu4c/source/common/unicode/uchar.h @@ -553,13 +553,19 @@ typedef enum UProperty { * @draft ICU 74 */ UCHAR_ID_COMPAT_MATH_CONTINUE=74, + /** + * Binary property Modifier_Combining_Mark. + * Used by the AMTRA algorithm in UAX #53. + * @draft ICU 76 + */ + UCHAR_MODIFIER_COMBINING_MARK=75, #endif // U_HIDE_DRAFT_API #ifndef U_HIDE_DEPRECATED_API /** * One more than the last constant for binary Unicode properties. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UCHAR_BINARY_LIMIT=75, + UCHAR_BINARY_LIMIT=76, #endif // U_HIDE_DEPRECATED_API /** Enumerated property Bidi_Class. diff --git a/icu4c/source/common/uprops.cpp b/icu4c/source/common/uprops.cpp index 184b036bea80..36aaba698d05 100644 --- a/icu4c/source/common/uprops.cpp +++ b/icu4c/source/common/uprops.cpp @@ -359,6 +359,19 @@ static constexpr UChar32 ID_COMPAT_MATH_START[] = { 0x1D7C3 }; +/** Ranges (start/limit pairs) of Modifier_Combining_mark (only), from UCD PropList.txt. */ +static constexpr UChar32 MODIFIER_COMBINING_MARK[] = { + 0x0654, 0x0655 + 1, + 0x0658, 0x0658 + 1, // U+0658 + 0x06DC, 0x06DC + 1, // U+06DC + 0x06E3, 0x06E3 + 1, // U+06E3 + 0x06E7, 0x06E8 + 1, + 0x08CA, 0x08CB + 1, + 0x08CD, 0x08CF + 1, + 0x08D3, 0x08D3 + 1, // U+08D3 + 0x08F3, 0x08F3 + 1 // U+08F3 +}; + static UBool isIDCompatMathStart(const BinaryProperty &/*prop*/, UChar32 c, UProperty /*which*/) { if (c < ID_COMPAT_MATH_START[0]) { return false; } // fastpath for common scripts for (UChar32 startChar : ID_COMPAT_MATH_START) { @@ -375,6 +388,14 @@ static UBool isIDCompatMathContinue(const BinaryProperty &prop, UChar32 c, UProp return isIDCompatMathStart(prop, c, UCHAR_ID_COMPAT_MATH_START); } +static UBool isModifierCombiningMark(const BinaryProperty &/*prop*/, UChar32 c, UProperty /*which*/) { + for (int32_t i = 0; i < UPRV_LENGTHOF(MODIFIER_COMBINING_MARK); i += 2) { + if (c < MODIFIER_COMBINING_MARK[i]) { return false; } // below range start + if (c < MODIFIER_COMBINING_MARK[i + 1]) { return true; } // below range limit + } + return false; +} + static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={ /* * column and mask values for binary properties from u_getUnicodeProperties(). @@ -459,6 +480,7 @@ static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={ { UPROPS_SRC_IDSU, 0, isIDSUnaryOperator }, // UCHAR_IDS_UNARY_OPERATOR { UPROPS_SRC_ID_COMPAT_MATH, 0, isIDCompatMathStart }, // UCHAR_ID_COMPAT_MATH_START { UPROPS_SRC_ID_COMPAT_MATH, 0, isIDCompatMathContinue }, // UCHAR_ID_COMPAT_MATH_CONTINUE + { UPROPS_SRC_MCM, 0 , isModifierCombiningMark }, // UCHAR_MODIFIER_COMBINING_MARK }; U_CAPI UBool U_EXPORT2 @@ -846,6 +868,13 @@ uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *p } return; } + if (src == UPROPS_SRC_MCM) { + // range limits + for (UChar32 c : MODIFIER_COMBINING_MARK) { + sa->add(sa->set, c); + } + return; + } if (!ulayout_ensureData(*pErrorCode)) { return; } const UCPTrie *trie; switch (src) { diff --git a/icu4c/source/common/uprops.h b/icu4c/source/common/uprops.h index cf7a6c37620a..022f64474a1b 100644 --- a/icu4c/source/common/uprops.h +++ b/icu4c/source/common/uprops.h @@ -449,6 +449,7 @@ enum UPropertySource { UPROPS_SRC_IDSU, UPROPS_SRC_ID_COMPAT_MATH, UPROPS_SRC_BLOCK, + UPROPS_SRC_MCM, /** One more than the highest UPropertySource (UPROPS_SRC_) constant. */ UPROPS_SRC_COUNT }; diff --git a/icu4c/source/data/in/pnames.icu b/icu4c/source/data/in/pnames.icu index 5488273aec63d52f551f543dd5040a87bf95e350..ffa4bd82929a43360ee04a47b7cf7d1496ebbdc8 100644 GIT binary patch delta 5529 zcmaLZ3!G0?0tfIjGe&tN6nWHoR~V@XMKa!xL>PHXQy!H^QE6rW6Fs(QKa$F0rI+y8 zZ4^z~mQ_U4Rw|KfrS^kqGkTJ25AF9hXLe_OKD+c2K$*+9OOJn{l$7h6)HHjLRk zX1kbuVvdh_XUxZAz7%s$%=8mW{^w+wO75g-tmqhXXv`@w?~b`DW?{^~$E;GJ6ru7+VAuO#N!b9@<)*)odIr8)L5MH|= zgbXiKqc&bznb$6amU4Y|2uoyE=Ma|5YTZKEE&Iv8%SxArP~bheM{bn)mwWzO6beZ%(CL7C(d`a!($HPJxBRdWcVS=13 zC(BSjgfyPEeoL~RI#&f3j0e%t$vJ`+_@!K5{B?jl@hq>fiz2?IT$K<`p&9MDj4@1N2KTarXLy-6*hvxJQSsyuPN(I`UZ2hixAQxe zu#ydY&IwgRIGcgo%np8_X0;HSa4FMxm>1c{Pn_FQ`@1tH@Q{#7Z`@jgP6QjT>8#>iz98*aK1`a@fniK%4v({rgH)}j*=S7< zuB(^QehLd&%_iRALw=%0ecb}B=*&VULiiOe8O;<@EMN^=c%Lt+e73%V`gGQ=X#d%GTSNU zNK@_Ks96Zzn95TWu$8?uY3>taD3h4a3w%v_mXmWH9qG%BJj!}@Q^a@FXrWgphpU*y zGG1ztGGr)xPwjI;IG;X@U^&n87RPAbGKBujC!Y=MApKmu9bFm4BG$2$BGS%tBV;q0 znJnN5@>3SY9OLZseIDG*Vm9$9-%zQQ@0y#K#ZuO=gZ&(#Q)>ey&wCluLdmbXcwF5Y zwy=}^9H!g_nz*J#Q`*yq;atnD+`~gG=TA)Y2A7_=yc6$H_ZdgXXyYZLE-#eX&sP`P zsq4WAZs0B!^M^Ltf1|>7_VOcD+WHD;MR!Iqg&E9Y5&3LpH;1UuPV>=%YzA;Gdy_Ax zoG3#Zp>1z zGnLsaU?m%PmmIn+b@|Ey4@rzsQ7XiIm-FooNh&vMqWmG}9SLmVR+vMcp+Q8XZn zwhUk-{V)S9242%;6y( z$9qC8&Z0Hh^k*cKQWkm4V+r|e;axtVn4?s<)F488x|7RPW^o@2DX#CUkgIu>T@-Pc z^u8{HT4d3M;iRs!n86&DvXZrI;5Bw}fFopF=E=~Ewsd0@$yh#7Ci8+{%ipq?l|08Q zBt!Lfxrfg<%+Hr;|5N&DGuqLWA&g}@zvK7hv!2})bCe4G4K`drXL1-zGOSLO$;dfN zE?^md;4f_BLk{p=f9>Dc=vDgJmDglVE_X5XWH95ng*^Ku!)fwM_J2&>3hw(K^^41# zH>1q{pE%~3(rx}f9KUgE=|_kucF_h9jPyRU9`jIjxJ1w3pPknNpxh!G@$@$jE z&4|{mDyI+wqL8eoq0UV z4nF1>HF9)XG^aN+b3Ffr3a_${3WI%qWlq?{35Te=hUwhN8g_AzN>{i5hBBW5-Y0X2 zp_eh-%gcO4wV~z$bYncJl*L?@@B;5}nA*ckM(M#|#xactd6AVD{pX1!W5rQ*8N+=M zv|^v_)zv4zcU-k(kV)<)X`4svQ2&7%HJ7E1pRs*lOX;lb9c44Oe^1;F zS}!|!%NX(B6Syqv$4}x49rJ%Ca-;q|lWXYU(%IZe%56)J(E H_8ass?Pa`w delta 5443 zcmaLZ3zScF0tfJ)F(&Vk4SA)9lBAR{$$K*v$y>>z*(TEF)zK^^{!;CV&aMfqv@I)? z)g~c@^spy0os8P8nWUFClS<-{)w0^pZGO|vY0vKeoX`E<`@8plAHU!4-rw)fU!?8- zJZ*mS)c6J=G#VB{!G{01ER_8+V)l*sFFCGq2uaS2xgh51m>Xig6LVk8qcPLc%l>~s zS*AkgSTHo^_?XjU&W-tK%+)cs#C#{_p_o;wlwIK5m~CTri8(6flT|HVawDPCn-pKhf5$`5C!1qx@Qft<0;blPp%ahQD!`%vvtMAns-% zPq3Ln-sLlnQLAyOy;qSH~E4Z zb#wrRvxyJ+ma3xPicaHjAW8~K2YpM=nmi&GX|8A~3E*v?)u z&j_Iv+1$u99-)x^RIe987jEMj-r@vJ>W9#i>zT)L*6}J|k*=NFkxOco#X7#=1U1ie zXI#u!=JGWAIlEy9eaYpwY@vV>j#9soX5eP#@horgDc_LM*aI^$?5A2wos|B}Vg(y1Vs}gJpK(zL z7cz_oSj=i(qiQR!7@ZhM9*^=i`>1xYD(4*9FqC^)%2o<_kK;6Mt!e1V7-sW$>y!b) z$_JdJ-X*@%bY%{Y@GN_&eQ5}7$s?a-Y+@g$XwfEw?%d51R#V8QRJ|;O=JX(ksr-uk zltmGHsd2g2gW=3zC9m@i2WisQJIxqov4~9+u$%L)Ff8)0j#w#_{pyPQl`Y~)o~M8k zJ|p$5Ma_0Tqg+B4`Z1F6+{qk%&k#Mh{KOef{ED(S*i9)%IK|=$$9dyIJgcm60ADr1GgsaFQ#UFTyQfhS7ru1bZ53rmUDdq^ZySZWda0~bGI4`q@ zz3wImOky?{_^?z8Wxu48J)`U;cJUEk6M8sVh2y+o;Vfkrkwq_tF_x*!V;Rp; z$OnAIu^uTG`)LTL)0(dIV`n1s$Z?Ia1Ix8DedXZVD2E9ZvRT= zvy9bjU`NX0T|VawU%X0X4<6EGm7Y2eO}K!L752Yre`jTVxRLQp=K&V;1TRoPF`sda zD%n2qoJDI=oh-5$Ob(Nn!GkPjIZv~VBHm{|-%_QQnxh#PlSNOGDc2yG!(H4|k-8zpH(JG#-AVcg0L z=I}dK_16CDtZb!_cPZsCHT!r)Xh9aexSm`lawqrkTb8hrwQS~f-r?^Y;sn+Ent0Hh zwsd1)$|9F3%p{*Dd5-NAv4;axy+*syl5B=ChRIB)=~7^EhdPwJXV&uYo*|R$NXe$}gT=INNq{g_AXiC(BiyoM#euGneFii)8ZuRWkYi zM!6j~n)?3pxXZ@JB%jD1-}PbTM~v;|cb?Q%^C3PsTtQ7kb@{$J_Ki|@GgDZ|CSGMP z$Eh;Zz(i|uhN}PRR{q2e4zRMq3D0-JtA-h%7{NFev6)>QB=b5oL>`OT!hV`w?<2+p zR`55D(r~yphrZmDvY5n79%Tb1oTT0jMl`OZ57#k`$C%UcKTn;E6?>GGa*FyRLimgQ zb(JT-q;|R}8_FK#<+YXk@APDlNuDNYn|mA(7BsEDH1*>d+cta3XKfp-o4Nfkaoc6P z;^eK=cEt%?=E(n^#I146|Cz{*{$VCp#h=S(bBFw?fvHFN{nvE24~_ECUsed by the AMTRA algorithm in UAX #53. + * + * @draft ICU 76 + */ + public static final int MODIFIER_COMBINING_MARK = 75; + /** * One more than the last constant for binary Unicode properties. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ @Deprecated - public static final int BINARY_LIMIT = 75; + public static final int BINARY_LIMIT = 76; /** * Enumerated property Bidi_Class. diff --git a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudata/pnames.icu b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudata/pnames.icu index a163e5b2f95a723374cd5bab6806f118b42eb2a6..ee134a33c21156606b4aaf382e0f6fe3e6cb31c1 100644 GIT binary patch delta 5526 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 delta 5446 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 t&#hV6DLpP-w`2Z=J2r3GKWuH