From d1eb23a741ae0df9d8e1c08a657c2c75b6acbb7e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 8 Apr 2017 20:05:33 +0100 Subject: [PATCH] Add Hyphen support from PropList.txt. --- src/include/ucd/ucd.h | 2 ++ src/proplist.c | 25 +++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/include/ucd/ucd.h b/src/include/ucd/ucd.h index 5d1e59e6..8356a31c 100644 --- a/src/include/ucd/ucd.h +++ b/src/include/ucd/ucd.h @@ -334,6 +334,7 @@ typedef enum ucd_property_ UCD_PROPERTY_BIDI_CONTROL = 0x0004, /**< @brief Bidi_Control */ UCD_PROPERTY_JOIN_CONTROL = 0x0008, /**< @brief Join_Control */ UCD_PROPERTY_DASH = 0x0010, /**< @brief Dash */ + UCD_PROPERTY_HYPHEN = 0x0020, /**< @brief Hyphen */ } ucd_property; /** @brief Return the properties of the specified codepoint. @@ -798,6 +799,7 @@ namespace ucd Bidi_Control = UCD_PROPERTY_BIDI_CONTROL, /**< @brief Bidi_Control */ Join_Control = UCD_PROPERTY_JOIN_CONTROL, /**< @brief Join_Control */ Dash = UCD_PROPERTY_DASH, /**< @brief Dash */ + Hyphen = UCD_PROPERTY_HYPHEN, /**< @brief Hyphen */ }; /** @brief Return the properties of the specified codepoint. diff --git a/src/proplist.c b/src/proplist.c index d971a8ab..69bdafe7 100644 --- a/src/proplist.c +++ b/src/proplist.c @@ -31,6 +31,9 @@ static int properties_Cf(codepoint_t c) { switch (c & 0xFFFFFF00) { + case 0x0000: + if (c == 0x00AD) return UCD_PROPERTY_HYPHEN; + break; case 0x0600: if (c == 0x061C) return UCD_PROPERTY_BIDI_CONTROL; break; @@ -49,25 +52,25 @@ static int properties_Pd(codepoint_t c) switch (c & 0xFFFFFF00) { case 0x0000: - if (c == 0x002D) return UCD_PROPERTY_DASH; + if (c == 0x002D) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; break; case 0x0500: - if (c == 0x058A) return UCD_PROPERTY_DASH; + if (c == 0x058A) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; if (c == 0x05BE) return UCD_PROPERTY_DASH; break; case 0x1400: if (c == 0x1400) return UCD_PROPERTY_DASH; break; case 0x1800: - if (c == 0x1806) return UCD_PROPERTY_DASH; + if (c == 0x1806) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; break; case 0x2000: - if (c == 0x2010) return UCD_PROPERTY_DASH; - if (c == 0x2011) return UCD_PROPERTY_DASH | UCD_PROPERTY_NO_BREAK; + if (c == 0x2010) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; + if (c == 0x2011) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN | UCD_PROPERTY_NO_BREAK; if (c >= 0x2012 && c <= 0x2015) return UCD_PROPERTY_DASH; break; case 0x2E00: - if (c == 0x2E17) return UCD_PROPERTY_DASH; + if (c == 0x2E17) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; if (c == 0x2E1A) return UCD_PROPERTY_DASH; if (c >= 0x2E3A && c <= 0x2E3B) return UCD_PROPERTY_DASH; if (c == 0x2E40) return UCD_PROPERTY_DASH; @@ -80,10 +83,10 @@ static int properties_Pd(codepoint_t c) case 0xFE00: if (c >= 0xFE31 && c <= 0xFE32) return UCD_PROPERTY_DASH; if (c == 0xFE58) return UCD_PROPERTY_DASH; - if (c == 0xFE63) return UCD_PROPERTY_DASH; + if (c == 0xFE63) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; break; case 0xFF00: - if (c == 0xFF0D) return UCD_PROPERTY_DASH; + if (c == 0xFF0D) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN; break; } return 0; @@ -99,6 +102,12 @@ static int properties_Po(codepoint_t c) case 0x2000: if (c == 0x2053) return UCD_PROPERTY_DASH; break; + case 0x3000: + if (c == 0x30FB) return UCD_PROPERTY_HYPHEN; + break; + case 0xFF00: + if (c == 0xFF65) return UCD_PROPERTY_HYPHEN; + break; } return 0; }