UCD_PROPERTY_DIACRITIC = 0x00002000, /**< @brief Diacritic PropList */ | UCD_PROPERTY_DIACRITIC = 0x00002000, /**< @brief Diacritic PropList */ | ||||
UCD_PROPERTY_EXTENDER = 0x00004000, /**< @brief Extender PropList */ | UCD_PROPERTY_EXTENDER = 0x00004000, /**< @brief Extender PropList */ | ||||
UCD_PROPERTY_OTHER_LOWERCASE = 0x00008000, /**< @brief Other_Lowercase PropList */ | UCD_PROPERTY_OTHER_LOWERCASE = 0x00008000, /**< @brief Other_Lowercase PropList */ | ||||
UCD_PROPERTY_OTHER_UPPERCASE = 0x00010000, /**< @brief Other_Uppercase PropList */ | |||||
} ucd_property; | } ucd_property; | ||||
/** @brief Return the properties of the specified codepoint. | /** @brief Return the properties of the specified codepoint. | ||||
Diacritic = UCD_PROPERTY_DIACRITIC, /**< @brief Diacritic PropList */ | Diacritic = UCD_PROPERTY_DIACRITIC, /**< @brief Diacritic PropList */ | ||||
Extender = UCD_PROPERTY_EXTENDER, /**< @brief Extender PropList */ | Extender = UCD_PROPERTY_EXTENDER, /**< @brief Extender PropList */ | ||||
Other_Lowercase = UCD_PROPERTY_OTHER_LOWERCASE, /**< @brief Other_Lowercase PropList */ | Other_Lowercase = UCD_PROPERTY_OTHER_LOWERCASE, /**< @brief Other_Lowercase PropList */ | ||||
Other_Uppercase = UCD_PROPERTY_OTHER_UPPERCASE, /**< @brief Other_Uppercase PropList */ | |||||
}; | }; | ||||
/** @brief Return the properties of the specified codepoint. | /** @brief Return the properties of the specified codepoint. |
switch (c & 0xFFFFFF00) | switch (c & 0xFFFFFF00) | ||||
{ | { | ||||
case 0x2100: | case 0x2100: | ||||
if (c >= 0x2160 && c <= 0x216F) return UCD_PROPERTY_OTHER_UPPERCASE; | |||||
if (c >= 0x2170 && c <= 0x217F) return UCD_PROPERTY_OTHER_LOWERCASE; | if (c >= 0x2170 && c <= 0x217F) return UCD_PROPERTY_OTHER_LOWERCASE; | ||||
break; | break; | ||||
case 0x3000: | case 0x3000: | ||||
if (c == 0x23E2) return UCD_PROPERTY_OTHER_MATH; | if (c == 0x23E2) return UCD_PROPERTY_OTHER_MATH; | ||||
break; | break; | ||||
case 0x2400: | case 0x2400: | ||||
if (c >= 0x24B6 && c <= 0x24CF) return UCD_PROPERTY_OTHER_ALPHABETIC; | |||||
if (c >= 0x24B6 && c <= 0x24CF) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_UPPERCASE; | |||||
if (c >= 0x24D0 && c <= 0x24E9) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_LOWERCASE; | if (c >= 0x24D0 && c <= 0x24E9) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_LOWERCASE; | ||||
break; | break; | ||||
case 0x2500: | case 0x2500: | ||||
if (c >= 0x266D && c <= 0x266E) return UCD_PROPERTY_OTHER_MATH; | if (c >= 0x266D && c <= 0x266E) return UCD_PROPERTY_OTHER_MATH; | ||||
break; | break; | ||||
case 0x01F100: | case 0x01F100: | ||||
if (c >= 0x01F130 && c <= 0x01F149) return UCD_PROPERTY_OTHER_ALPHABETIC; | |||||
if (c >= 0x01F150 && c <= 0x01F169) return UCD_PROPERTY_OTHER_ALPHABETIC; | |||||
if (c >= 0x01F170 && c <= 0x01F189) return UCD_PROPERTY_OTHER_ALPHABETIC; | |||||
if (c >= 0x01F130 && c <= 0x01F149) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_UPPERCASE; | |||||
if (c >= 0x01F150 && c <= 0x01F169) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_UPPERCASE; | |||||
if (c >= 0x01F170 && c <= 0x01F189) return UCD_PROPERTY_OTHER_ALPHABETIC | UCD_PROPERTY_OTHER_UPPERCASE; | |||||
break; | break; | ||||
} | } | ||||
return 0; | return 0; |
props += 8192 * data.get('Diacritic', 0) | props += 8192 * data.get('Diacritic', 0) | ||||
props += 16384 * data.get('Extender', 0) | props += 16384 * data.get('Extender', 0) | ||||
props += 32768 * data.get('Other_Lowercase', 0) | props += 32768 * data.get('Other_Lowercase', 0) | ||||
props += 65536 * data.get('Other_Uppercase', 0) | |||||
return props | return props | ||||
if __name__ == '__main__': | if __name__ == '__main__': |