mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-14 01:32:29 +00:00
Add Hex_Digit support from PropList.txt.
This commit is contained in:
@@ -326,7 +326,7 @@ const char *ucd_get_script_string(ucd_script s);
|
||||
ucd_script ucd_lookup_script(codepoint_t c);
|
||||
|
||||
/** @brief Properties
|
||||
*/
|
||||
*/
|
||||
typedef enum ucd_property_
|
||||
{
|
||||
UCD_PROPERTY_WHITE_SPACE = 0x00000001, /**< @brief White_Space PropList */
|
||||
@@ -338,6 +338,7 @@ typedef enum ucd_property_
|
||||
UCD_PROPERTY_QUOTATION_MARK = 0x00000040, /**< @brief Quotation_Mark PropList */
|
||||
UCD_PROPERTY_TERMINAL_PUNCTUATION = 0x00000080, /**< @brief Terminal_Punctuation PropList */
|
||||
UCD_PROPERTY_OTHER_MATH = 0x00000100, /**< @brief Other_Math PropList */
|
||||
UCD_PROPERTY_HEX_DIGIT = 0x00000200, /**< @brief Hex_Digit PropList */
|
||||
} ucd_property;
|
||||
|
||||
/** @brief Return the properties of the specified codepoint.
|
||||
@@ -794,7 +795,7 @@ namespace ucd
|
||||
}
|
||||
|
||||
/** @brief Properties
|
||||
*/
|
||||
*/
|
||||
enum property
|
||||
{
|
||||
White_Space = UCD_PROPERTY_WHITE_SPACE, /**< @brief White_Space PropList */
|
||||
@@ -806,6 +807,7 @@ namespace ucd
|
||||
Quotation_Mark = UCD_PROPERTY_QUOTATION_MARK, /**< @brief Quotation_Mark PropList */
|
||||
Terminal_Punctuation = UCD_PROPERTY_TERMINAL_PUNCTUATION, /**< @brief Terminal_Punctuation PropList */
|
||||
Other_Math = UCD_PROPERTY_OTHER_MATH, /**< @brief Other_Math PropList */
|
||||
Hex_Digit = UCD_PROPERTY_HEX_DIGIT, /**< @brief Hex_Digit PropList */
|
||||
};
|
||||
|
||||
/** @brief Return the properties of the specified codepoint.
|
||||
|
||||
@@ -52,12 +52,18 @@ static int properties_Ll(codepoint_t c)
|
||||
{
|
||||
switch (c & 0xFFFFFF00)
|
||||
{
|
||||
case 0x0000:
|
||||
if (c >= 0x0061 && c <= 0x0066) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0x0300:
|
||||
if (c >= 0x03D0 && c <= 0x03D2) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
if (c == 0x03D5) return UCD_PROPERTY_OTHER_MATH;
|
||||
if (c >= 0x03F0 && c <= 0x03F1) return UCD_PROPERTY_OTHER_MATH;
|
||||
if (c >= 0x03F4 && c <= 0x03F5) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
break;
|
||||
case 0xFF00:
|
||||
if (c >= 0xFF41 && c <= 0xFF46) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0x2100:
|
||||
if (c >= 0x210A && c <= 0x2113) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
if (c >= 0x212F && c <= 0x2131) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
@@ -115,10 +121,16 @@ static int properties_Lu(codepoint_t c)
|
||||
{
|
||||
switch (c & 0xFFFFFF00)
|
||||
{
|
||||
case 0x0000:
|
||||
if (c >= 0x0041 && c <= 0x0046) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0x0300:
|
||||
if (c >= 0x03D0 && c <= 0x03D2) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
if (c >= 0x03F4 && c <= 0x03F5) return UCD_PROPERTY_OTHER_MATH; // Ll|Lu
|
||||
break;
|
||||
case 0xFF00:
|
||||
if (c >= 0xFF21 && c <= 0xFF26) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0x2100:
|
||||
if (c == 0x2102) return UCD_PROPERTY_OTHER_MATH;
|
||||
if (c == 0x2107) return UCD_PROPERTY_OTHER_MATH;
|
||||
@@ -188,6 +200,12 @@ static int properties_Nd(codepoint_t c)
|
||||
{
|
||||
switch (c & 0xFFFFFF00)
|
||||
{
|
||||
case 0x0000:
|
||||
if (c >= 0x0030 && c <= 0x0039) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0xFF00:
|
||||
if (c >= 0xFF10 && c <= 0xFF19) return UCD_PROPERTY_HEX_DIGIT;
|
||||
break;
|
||||
case 0x01D700:
|
||||
if (c >= 0x01D7CE && c <= 0x01D7FF) return UCD_PROPERTY_OTHER_MATH;
|
||||
break;
|
||||
|
||||
@@ -130,6 +130,7 @@ def properties(data):
|
||||
props += 64 * data.get('Quotation_Mark', 0)
|
||||
props += 128 * data.get('Terminal_Punctuation', 0)
|
||||
props += 256 * data.get('Other_Math', 0)
|
||||
props += 512 * data.get('Hex_Digit', 0)
|
||||
return props
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user