| @@ -7,6 +7,10 @@ These are eSpeak NG specific modifications to the `ucd-tools` project: | |||
| * `data/espeak-ng` data files for eSpeak NG extended data. | |||
| * espeak-ng PropList property lookup as part of the `ucd_property` API. | |||
| ## (In Development) | |||
| * Make the ispunct ctype compatibility implementation conformant. | |||
| ## 10.0.0 - 2017-06-25 | |||
| * Add `iswblank` and `iswxdigit` compatibility. | |||
| @@ -17,8 +17,8 @@ this information within a C or C++ program. | |||
| The project uses and supports the following sources of Unicode codepoint data: | |||
| * [Unicode Character Database](http://www.unicode.org/Public/9.0.0/ucd/) 9.0.0 | |||
| * [Unicode Emoji](http://www.unicode.org/Public/emoji/4.0/) 4.0 (UTR #51) | |||
| * [Unicode Character Database](http://www.unicode.org/Public/10.0.0/ucd/) 10.0.0 | |||
| * [Unicode Emoji](http://www.unicode.org/Public/emoji/5.0/) 5.0 (UTR #51) | |||
| * [ConScript Unicode Registry](http://www.evertype.com/standards/csur/) | |||
| ## Build Dependencies | |||
| @@ -1,6 +1,6 @@ | |||
| /* ctype-style APIs. | |||
| * | |||
| * Copyright (C) 2012-2017 Reece H. Dunn | |||
| * Copyright (C) 2012-2018 Reece H. Dunn | |||
| * | |||
| * This file is part of ucd-tools. | |||
| * | |||
| @@ -151,19 +151,7 @@ int ucd_isprint(codepoint_t c) | |||
| int ucd_ispunct(codepoint_t c) | |||
| { | |||
| switch (ucd_lookup_category(c)) | |||
| { | |||
| case UCD_CATEGORY_Pc: | |||
| case UCD_CATEGORY_Pd: | |||
| case UCD_CATEGORY_Pe: | |||
| case UCD_CATEGORY_Pf: | |||
| case UCD_CATEGORY_Pi: | |||
| case UCD_CATEGORY_Po: | |||
| case UCD_CATEGORY_Ps: | |||
| return 1; | |||
| default: | |||
| return 0; | |||
| } | |||
| return ucd_isgraph(c) && !ucd_isalnum(c); | |||
| } | |||
| int ucd_isspace(codepoint_t c) | |||
| @@ -79,10 +79,7 @@ def isblank(data): # word separator | |||
| return 0 | |||
| def ispunct(data): | |||
| if data.get('GeneralCategory', 'Cn')[0] in 'P': | |||
| return 1 | |||
| else: | |||
| return 0 | |||
| return 1 if isgraph(data) and not isalnum(data) else 0 | |||
| def isprint(data): | |||
| if data.get('GeneralCategory', 'Cn')[0] in 'LMNPSZ': # not in 'CI' | |||