|  |  | @@ -47,7 +47,7 @@ static ucd_property properties_Cf(codepoint_t c) | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x2000: | 
		
	
		
			
			|  |  |  | if (c == 0x200C)                return UCD_PROPERTY_JOIN_CONTROL | UCD_PROPERTY_OTHER_GRAPHEME_EXTEND; | 
		
	
		
			
			|  |  |  | if (c == 0x200D)                return UCD_PROPERTY_JOIN_CONTROL; | 
		
	
		
			
			|  |  |  | if (c == 0x200D)                return UCD_PROPERTY_JOIN_CONTROL | UCD_PROPERTY_EMOJI_COMPONENT; | 
		
	
		
			
			|  |  |  | if (c >= 0x200E && c <= 0x200F) return UCD_PROPERTY_BIDI_CONTROL | UCD_PROPERTY_PATTERN_WHITE_SPACE; | 
		
	
		
			
			|  |  |  | if (c >= 0x202A && c <= 0x202E) return UCD_PROPERTY_BIDI_CONTROL; | 
		
	
		
			
			|  |  |  | if (c >= 0x2061 && c <= 0x2064) return UCD_PROPERTY_OTHER_MATH; | 
		
	
	
		
			
			|  |  | @@ -60,7 +60,7 @@ static ucd_property properties_Cf(codepoint_t c) | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x0E0000: | 
		
	
		
			
			|  |  |  | if (c == 0x0E0001)                  return UCD_PROPERTY_DEPRECATED; | 
		
	
		
			
			|  |  |  | if (c >= 0x0E0020 && c <= 0x0E007F) return UCD_PROPERTY_OTHER_GRAPHEME_EXTEND; | 
		
	
		
			
			|  |  |  | if (c >= 0x0E0020 && c <= 0x0E007F) return UCD_PROPERTY_OTHER_GRAPHEME_EXTEND | UCD_PROPERTY_EMOJI_COMPONENT; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
	
		
			
			|  |  | @@ -596,6 +596,12 @@ static ucd_property properties_Mc(codepoint_t c) | 
		
	
		
			
			|  |  |  | return UCD_PROPERTY_OTHER_ALPHABETIC; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static ucd_property properties_Me(codepoint_t c) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if (c == 0x20E3) return UCD_PROPERTY_EMOJI_COMPONENT; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static ucd_property properties_Mn(codepoint_t c) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | switch (c & 0xFFFFFF00) | 
		
	
	
		
			
			|  |  | @@ -902,7 +908,8 @@ static ucd_property properties_Mn(codepoint_t c) | 
		
	
		
			
			|  |  |  | if (c == 0xFB1E)                return UCD_PROPERTY_DIACRITIC | UCD_PROPERTY_OTHER_ALPHABETIC; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0xFE00: | 
		
	
		
			
			|  |  |  | if (c >= 0xFE00 && c <= 0xFE0F) return UCD_PROPERTY_VARIATION_SELECTOR; | 
		
	
		
			
			|  |  |  | if (c >= 0xFE00 && c <= 0xFE0E) return UCD_PROPERTY_VARIATION_SELECTOR; | 
		
	
		
			
			|  |  |  | if (c == 0xFE0F)                return UCD_PROPERTY_VARIATION_SELECTOR | UCD_PROPERTY_EMOJI_COMPONENT; | 
		
	
		
			
			|  |  |  | if (c >= 0xFE20 && c <= 0xFE2F) return UCD_PROPERTY_DIACRITIC; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x010200: | 
		
	
	
		
			
			|  |  | @@ -1682,6 +1689,7 @@ static ucd_property properties_So_002600(codepoint_t c) | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x2650: | 
		
	
		
			
			|  |  |  | if (c <= 0x2653)                return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c == 0x265F)                return UCD_PROPERTY_EMOJI; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x2660: | 
		
	
		
			
			|  |  |  | if (c == 0x2606)                return UCD_PROPERTY_OTHER_MATH; | 
		
	
	
		
			
			|  |  | @@ -1694,6 +1702,7 @@ static ucd_property properties_So_002600(codepoint_t c) | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x2670: | 
		
	
		
			
			|  |  |  | if (c == 0x267B)                return UCD_PROPERTY_EMOJI; | 
		
	
		
			
			|  |  |  | if (c == 0x267E)                return UCD_PROPERTY_EMOJI; | 
		
	
		
			
			|  |  |  | if (c == 0x267F)                return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x2690: | 
		
	
	
		
			
			|  |  | @@ -1998,29 +2007,22 @@ static ucd_property properties_So(codepoint_t c) | 
		
	
		
			
			|  |  |  | if (c >= 0x01F6EB && c <= 0x01F6EC) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c == 0x01F6F0)                  return UCD_PROPERTY_EMOJI; | 
		
	
		
			
			|  |  |  | if (c == 0x01F6F3)                  return UCD_PROPERTY_EMOJI; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F6F4 && c <= 0x01F6F8) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F6F4 && c <= 0x01F6F9) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case 0x01F900: | 
		
	
		
			
			|  |  |  | if (c <= 0x01F90B)                  return 0; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F918 && c <= 0x01F91C) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F910 && c <= 0x01F91D) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F91E && c <= 0x01F91F) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c == 0x01F926)                  return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F920 && c <= 0x01F92F) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F930 && c <= 0x01F932) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F930 && c <= 0x01F939) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c == 0x01F93B)                  return 0; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F93A && c <= 0x01F93C) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F933 && c <= 0x01F93E) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F93D && c <= 0x01F93E) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c == 0x01F946)                  return 0; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F940 && c <= 0x01F94B) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c == 0x01F94C)                  return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F950 && c <= 0x01F95E) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F95F && c <= 0x01F96B) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F980 && c <= 0x01F991) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F992 && c <= 0x01F997) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c == 0x01F9C0)                  return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F9B0 && c <= 0x01F9B3) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_COMPONENT; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F9B5 && c <= 0x01F9B6) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F9B8 && c <= 0x01F9B9) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F9D1 && c <= 0x01F9DD) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION | UCD_PROPERTY_EMOJI_MODIFIER_BASE; | 
		
	
		
			
			|  |  |  | if (c >= 0x01F9D0 && c <= 0x01F9E6) return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | return UCD_PROPERTY_EMOJI | UCD_PROPERTY_EMOJI_PRESENTATION; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -2043,6 +2045,7 @@ ucd_property ucd_properties(codepoint_t c, ucd_category category) | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Lo: return properties_Lo(c) | properties_Lo_ideographic(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Lu: return properties_Lu(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Mc: return properties_Mc(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Me: return properties_Me(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Mn: return properties_Mn(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Nd: return properties_Nd(c); | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Nl: return properties_Nl(c); | 
		
	
	
		
			
			|  |  | @@ -2061,6 +2064,6 @@ ucd_property ucd_properties(codepoint_t c, ucd_category category) | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Zl: return UCD_PROPERTY_WHITE_SPACE | UCD_PROPERTY_PATTERN_WHITE_SPACE; | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Zp: return UCD_PROPERTY_WHITE_SPACE | UCD_PROPERTY_PATTERN_WHITE_SPACE; | 
		
	
		
			
			|  |  |  | case UCD_CATEGORY_Zs: return properties_Zs(c); | 
		
	
		
			
			|  |  |  | default:              return 0; /* Co Cs Ii Lt Me */ | 
		
	
		
			
			|  |  |  | default:              return 0; /* Co Cs Ii Lt */ | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } |