diff --git a/src/include/ucd/ucd.h b/src/include/ucd/ucd.h index 65658fa1..99b33960 100644 --- a/src/include/ucd/ucd.h +++ b/src/include/ucd/ucd.h @@ -329,8 +329,9 @@ ucd_script ucd_lookup_script(codepoint_t c); */ typedef enum ucd_property_ { - UCD_PROPERTY_WHITE_SPACE = 0x0001, /**< @brief White_Space */ - UCD_PROPERTY_NO_BREAK = 0x0002, /**< @brief */ + UCD_PROPERTY_WHITE_SPACE = 0x0001, /**< @brief White_Space */ + UCD_PROPERTY_NO_BREAK = 0x0002, /**< @brief */ + UCD_PROPERTY_BIDI_CONTROL = 0x0004, /**< @brief Bidi_Control */ } ucd_property; /** @brief Return the properties of the specified codepoint. @@ -792,6 +793,7 @@ namespace ucd { White_Space = UCD_PROPERTY_WHITE_SPACE, /**< @brief White_Space */ noBreak = UCD_PROPERTY_NO_BREAK, /**< @brief */ + Bidi_Control = UCD_PROPERTY_BIDI_CONTROL, /**< @brief Bidi_Control */ }; /** @brief Return the properties of the specified codepoint. diff --git a/src/proplist.c b/src/proplist.c index c5b60b7b..a3d421b8 100644 --- a/src/proplist.c +++ b/src/proplist.c @@ -36,6 +36,12 @@ ucd_property ucd_properties(codepoint_t c, ucd_category category) return UCD_PROPERTY_WHITE_SPACE; } return 0; + case UCD_CATEGORY_Cf: + if (c == 0x061C) return UCD_PROPERTY_BIDI_CONTROL; + if (c >= 0x200E && c <= 0x200F) return UCD_PROPERTY_BIDI_CONTROL; + if (c >= 0x202A && c <= 0x202E) return UCD_PROPERTY_BIDI_CONTROL; + if (c >= 0x2066 && c <= 0x2069) return UCD_PROPERTY_BIDI_CONTROL; + return 0; case UCD_CATEGORY_Pd: if (c == 0x2011) // NON-BREAKING HYPHEN return UCD_PROPERTY_NO_BREAK;