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 5488273aec63..ffa4bd82929a 100644 Binary files a/icu4c/source/data/in/pnames.icu and b/icu4c/source/data/in/pnames.icu differ diff --git a/icu4c/source/test/cintltst/cucdtst.c b/icu4c/source/test/cintltst/cucdtst.c index 3d6a1b561aef..8ea805f93c25 100644 --- a/icu4c/source/test/cintltst/cucdtst.c +++ b/icu4c/source/test/cintltst/cucdtst.c @@ -2810,6 +2810,13 @@ TestAdditionalProperties(void) { { 0x05C0, UCHAR_INDIC_CONJUNCT_BREAK, U_INCB_NONE }, { 0xD800, UCHAR_INDIC_CONJUNCT_BREAK, U_INCB_NONE }, + /* Modifier_Combining_Mark values */ + { 0xD800, UCHAR_MODIFIER_COMBINING_MARK, false }, + { 0x0653, UCHAR_MODIFIER_COMBINING_MARK, false }, + { 0x0654, UCHAR_MODIFIER_COMBINING_MARK, true }, + { 0x0655, UCHAR_MODIFIER_COMBINING_MARK, true }, + { 0x0656, UCHAR_MODIFIER_COMBINING_MARK, false }, + /* undefined UProperty values */ { 0x61, 0x4a7, 0 }, { 0x234bc, 0x15ed, 0 } diff --git a/icu4c/source/test/intltest/ucdtest.cpp b/icu4c/source/test/intltest/ucdtest.cpp index 7b107198cb37..36f40c327136 100644 --- a/icu4c/source/test/intltest/ucdtest.cpp +++ b/icu4c/source/test/intltest/ucdtest.cpp @@ -1099,6 +1099,7 @@ void UnicodeTest::TestPropertiesUsingPpucd() { { UCHAR_INDIC_CONJUNCT_BREAK, U_INCB_CONSONANT }, { UCHAR_INDIC_CONJUNCT_BREAK, U_INCB_EXTEND }, { UCHAR_INDIC_CONJUNCT_BREAK, U_INCB_LINKER }, + { UCHAR_MODIFIER_COMBINING_MARK }, }; // Iterate through PPUCD file, accumulating each line's data into each UnicodeSet per property diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/CharacterPropertiesImpl.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/CharacterPropertiesImpl.java index 3860cda97100..d9fa335d6023 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/CharacterPropertiesImpl.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/CharacterPropertiesImpl.java @@ -82,6 +82,9 @@ private static UnicodeSet getInclusionsForSource(int src) { case UCharacterProperty.SRC_ID_COMPAT_MATH: UCharacterProperty.mathCompat_addPropertyStarts(incl); break; + case UCharacterProperty.SRC_MCM: + UCharacterProperty.mcm_addPropertyStarts(incl); + break; case UCharacterProperty.SRC_BLOCK: UCharacterProperty.INSTANCE.ublock_addPropertyStarts(incl); break; diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java index 12de7ea9cdad..feb7e7a5847b 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/UCharacterProperty.java @@ -115,8 +115,9 @@ public final class UCharacterProperty public static final int SRC_IDSU=16; public static final int SRC_ID_COMPAT_MATH=17; public static final int SRC_BLOCK=18; + public static final int SRC_MCM=19; /** One more than the highest UPropertySource (SRC_) constant. */ - public static final int SRC_COUNT=19; + public static final int SRC_COUNT=20; private static final class LayoutProps { private static final class IsAcceptable implements ICUBinary.Authenticate { @@ -407,6 +408,19 @@ boolean contains(int c) { 0x1D7C3 }; + /** Ranges (start/limit pairs) of Modifier_Combining_mark (only), from UCD PropList.txt. */ + private static final int[] 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 +}; + private class MathCompatBinaryProperty extends BinaryProperty { int which; MathCompatBinaryProperty(int which) { @@ -429,6 +443,20 @@ boolean contains(int c) { } } + private class MCMBinaryProperty extends BinaryProperty { + MCMBinaryProperty() { + super(SRC_MCM); + } + @Override + boolean contains(int c) { + for (int i = 0; i < MODIFIER_COMBINING_MARK.length; 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; + } + } + BinaryProperty[] binProps={ /* * Binary-property implementations must be in order of corresponding UProperty, @@ -629,6 +657,7 @@ boolean contains(int c) { }, new MathCompatBinaryProperty(UProperty.ID_COMPAT_MATH_START), new MathCompatBinaryProperty(UProperty.ID_COMPAT_MATH_CONTINUE), + new MCMBinaryProperty(), }; public boolean hasBinaryProperty(int c, int which) { @@ -1803,6 +1832,13 @@ static void mathCompat_addPropertyStarts(UnicodeSet set) { } } + static void mcm_addPropertyStarts(UnicodeSet set) { + // range limits + for (int c : MODIFIER_COMBINING_MARK) { + set.add(c); + } + } + public void ublock_addPropertyStarts(UnicodeSet set) { // Add the start code point of each same-value range of the trie. // We store Block values indexed by the code point shifted right 4 bits; diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java index e5cb9759451a..9e3c83849fe2 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/lang/UProperty.java @@ -641,12 +641,20 @@ public interface UProperty */ public static final int ID_COMPAT_MATH_CONTINUE = 74; + /** + * Binary property Modifier_Combining_Mark. + *
Used 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 a163e5b2f95a..ee134a33c211 100644 Binary files a/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudata/pnames.icu and b/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/icudata/pnames.icu differ diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java index 29645fbc23c2..1701b8f17a62 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/lang/UCharacterTest.java @@ -2220,6 +2220,13 @@ public void TestAdditionalProperties() { 0x05C0, UProperty.INDIC_CONJUNCT_BREAK, UCharacter.IndicConjunctBreak.NONE.ordinal() }, { 0xD800, UProperty.INDIC_CONJUNCT_BREAK, UCharacter.IndicConjunctBreak.NONE.ordinal() }, + /* Modifier_Combining_Mark values */ + { 0xD800, UProperty.MODIFIER_COMBINING_MARK, FALSE }, + { 0x0653, UProperty.MODIFIER_COMBINING_MARK, FALSE }, + { 0x0654, UProperty.MODIFIER_COMBINING_MARK, TRUE }, + { 0x0655, UProperty.MODIFIER_COMBINING_MARK, TRUE }, + { 0x0656, UProperty.MODIFIER_COMBINING_MARK, FALSE }, + /* undefined UProperty values */ { 0x61, 0x4a7, 0 }, { 0x234bc, 0x15ed, 0 } diff --git a/tools/unicode/c/genprops/pnames_data.h b/tools/unicode/c/genprops/pnames_data.h index 6b7fb68e797f..4ab1de024ae3 100644 --- a/tools/unicode/c/genprops/pnames_data.h +++ b/tools/unicode/c/genprops/pnames_data.h @@ -1249,7 +1249,7 @@ static const Value VALUES_ID_Type[12] = { Value(U_ID_TYPE_RECOMMENDED, "Recommended Recommended"), }; -static const Property PROPERTIES[120] = { +static const Property PROPERTIES[121] = { Property(UCHAR_ALPHABETIC, "Alpha Alphabetic"), Property(UCHAR_ASCII_HEX_DIGIT, "AHex ASCII_Hex_Digit"), Property(UCHAR_BIDI_CONTROL, "Bidi_C Bidi_Control"), @@ -1325,6 +1325,7 @@ static const Property PROPERTIES[120] = { Property(UCHAR_IDS_UNARY_OPERATOR, "IDSU IDS_Unary_Operator"), Property(UCHAR_ID_COMPAT_MATH_START, "ID_Compat_Math_Start ID_Compat_Math_Start"), Property(UCHAR_ID_COMPAT_MATH_CONTINUE, "ID_Compat_Math_Continue ID_Compat_Math_Continue"), + Property(UCHAR_MODIFIER_COMBINING_MARK, "MCM Modifier_Combining_Mark"), Property(UCHAR_BIDI_CLASS, "bc Bidi_Class", VALUES_bc, 23), Property(UCHAR_BLOCK, "blk Block", VALUES_blk, 339), Property(UCHAR_CANONICAL_COMBINING_CLASS, "ccc Canonical_Combining_Class", VALUES_ccc, 58),