diff --git a/src/ucd-tools/CHANGELOG.md b/src/ucd-tools/CHANGELOG.md index db784527..f2dbf341 100644 --- a/src/ucd-tools/CHANGELOG.md +++ b/src/ucd-tools/CHANGELOG.md @@ -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. diff --git a/src/ucd-tools/README.md b/src/ucd-tools/README.md index 6a583766..40ae1793 100644 --- a/src/ucd-tools/README.md +++ b/src/ucd-tools/README.md @@ -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 diff --git a/src/ucd-tools/src/ctype.c b/src/ucd-tools/src/ctype.c index 42bb9f58..ac6a37ea 100644 --- a/src/ucd-tools/src/ctype.c +++ b/src/ucd-tools/src/ctype.c @@ -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) diff --git a/src/ucd-tools/tools/printdata.py b/src/ucd-tools/tools/printdata.py index ea306466..3b90dc76 100755 --- a/src/ucd-tools/tools/printdata.py +++ b/src/ucd-tools/tools/printdata.py @@ -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'