Browse Source

Add Hyphen support from PropList.txt.

master
Reece H. Dunn 8 years ago
parent
commit
d1eb23a741
2 changed files with 19 additions and 8 deletions
  1. 2
    0
      src/include/ucd/ucd.h
  2. 17
    8
      src/proplist.c

+ 2
- 0
src/include/ucd/ucd.h View File

UCD_PROPERTY_BIDI_CONTROL = 0x0004, /**< @brief Bidi_Control */ UCD_PROPERTY_BIDI_CONTROL = 0x0004, /**< @brief Bidi_Control */
UCD_PROPERTY_JOIN_CONTROL = 0x0008, /**< @brief Join_Control */ UCD_PROPERTY_JOIN_CONTROL = 0x0008, /**< @brief Join_Control */
UCD_PROPERTY_DASH = 0x0010, /**< @brief Dash */ UCD_PROPERTY_DASH = 0x0010, /**< @brief Dash */
UCD_PROPERTY_HYPHEN = 0x0020, /**< @brief Hyphen */
} ucd_property; } ucd_property;


/** @brief Return the properties of the specified codepoint. /** @brief Return the properties of the specified codepoint.
Bidi_Control = UCD_PROPERTY_BIDI_CONTROL, /**< @brief Bidi_Control */ Bidi_Control = UCD_PROPERTY_BIDI_CONTROL, /**< @brief Bidi_Control */
Join_Control = UCD_PROPERTY_JOIN_CONTROL, /**< @brief Join_Control */ Join_Control = UCD_PROPERTY_JOIN_CONTROL, /**< @brief Join_Control */
Dash = UCD_PROPERTY_DASH, /**< @brief Dash */ Dash = UCD_PROPERTY_DASH, /**< @brief Dash */
Hyphen = UCD_PROPERTY_HYPHEN, /**< @brief Hyphen */
}; };


/** @brief Return the properties of the specified codepoint. /** @brief Return the properties of the specified codepoint.

+ 17
- 8
src/proplist.c View File

{ {
switch (c & 0xFFFFFF00) switch (c & 0xFFFFFF00)
{ {
case 0x0000:
if (c == 0x00AD) return UCD_PROPERTY_HYPHEN;
break;
case 0x0600: case 0x0600:
if (c == 0x061C) return UCD_PROPERTY_BIDI_CONTROL; if (c == 0x061C) return UCD_PROPERTY_BIDI_CONTROL;
break; break;
switch (c & 0xFFFFFF00) switch (c & 0xFFFFFF00)
{ {
case 0x0000: case 0x0000:
if (c == 0x002D) return UCD_PROPERTY_DASH;
if (c == 0x002D) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN;
break; break;
case 0x0500: 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; if (c == 0x05BE) return UCD_PROPERTY_DASH;
break; break;
case 0x1400: case 0x1400:
if (c == 0x1400) return UCD_PROPERTY_DASH; if (c == 0x1400) return UCD_PROPERTY_DASH;
break; break;
case 0x1800: case 0x1800:
if (c == 0x1806) return UCD_PROPERTY_DASH;
if (c == 0x1806) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN;
break; break;
case 0x2000: 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; if (c >= 0x2012 && c <= 0x2015) return UCD_PROPERTY_DASH;
break; break;
case 0x2E00: 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 == 0x2E1A) return UCD_PROPERTY_DASH;
if (c >= 0x2E3A && c <= 0x2E3B) return UCD_PROPERTY_DASH; if (c >= 0x2E3A && c <= 0x2E3B) return UCD_PROPERTY_DASH;
if (c == 0x2E40) return UCD_PROPERTY_DASH; if (c == 0x2E40) return UCD_PROPERTY_DASH;
case 0xFE00: case 0xFE00:
if (c >= 0xFE31 && c <= 0xFE32) return UCD_PROPERTY_DASH; if (c >= 0xFE31 && c <= 0xFE32) return UCD_PROPERTY_DASH;
if (c == 0xFE58) 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; break;
case 0xFF00: case 0xFF00:
if (c == 0xFF0D) return UCD_PROPERTY_DASH;
if (c == 0xFF0D) return UCD_PROPERTY_DASH | UCD_PROPERTY_HYPHEN;
break; break;
} }
return 0; return 0;
case 0x2000: case 0x2000:
if (c == 0x2053) return UCD_PROPERTY_DASH; if (c == 0x2053) return UCD_PROPERTY_DASH;
break; break;
case 0x3000:
if (c == 0x30FB) return UCD_PROPERTY_HYPHEN;
break;
case 0xFF00:
if (c == 0xFF65) return UCD_PROPERTY_HYPHEN;
break;
} }
return 0; return 0;
} }

Loading…
Cancel
Save