diff options
author | Daiki Ueno <ueno@gnu.org> | 2017-11-27 11:34:25 +0100 |
---|---|---|
committer | Daiki Ueno <dueno@redhat.com> | 2017-11-27 11:34:25 +0100 |
commit | 19f18ecffa68391c6d0babc3568672108884bbc0 (patch) | |
tree | eb1b23f3ce024c42df42a33ab8deb052856f6cc7 /lib/unigbrk/uc-is-grapheme-break.c | |
parent | d5aa1da12243e1ac20800b9ffc1be93b13fe2f5b (diff) | |
download | gnulib-19f18ecffa68391c6d0babc3568672108884bbc0.tar.gz |
libunistring: update to Unicode 9.0.0
* lib/gen-uni-tables.c (fill_properties): Recognize
Sentence_Terminal and Prepended_Concatenation_Mark.
(is_property_default_ignorable_code_point): Exclude U+08E2.
(fill_arabicshaping): Allow missing whitespace when parsing;
recognize "AFRICAN FEH", "AFRICAN QAF", and "AFRICAN MOON".
(output_blocks): Increase the element size of the level1 table to
accommodate more blocks.
(get_lbp): Recognize ZWJ, E_Base, and E_Modifier characters;
Update each class according to the standard.
(get_wbp): Recognize ZWJ, E_Base, E_Modifier, Glue_After_Zwj, and
E_Base_GAZ characters.
(output_gbp_table): Recognize ZWJ, E_Base, E_Modifier,
Glue_After_Zwj, and E_Base_GAZ characters.
* lib/unictype.in.h (UC_JOINING_GROUP_AFRICAN_FEH)
(UC_JOINING_GROUP_AFRICAN_QAF, UC_JOINING_GROUP_AFRICAN_MOON): New
enum value.
* lib/unilbrk/lbrktables.h (LBP_ZWJ, LBP_EB, LBP_EM): New enum
value.
* lib/unilbrk/lbrktables.c (unilbrk_table): Extend the table with
LBP_ZWJ, LBP_EB, and LBP_EM.
* lib/uniwbrk.in.h (WBP_ZWJ, WBP_EB, WBP_EM, WBP_GAZ, WBP_EBG): New
enum value.
* lib/uniwbrk/u-wordbreaks.h: Implement WB3c, WB15, and WB16.
* lib/uniwbrk/wbrktable.h (uniwbrk_prop_index): New variable
declaration.
* lib/uniwbrk/wbrktable.c (uniwbrk_prop_index): New variable.
(uniwbrk_table): Implement WB14.
* tests/uniwbrk/test-uc-wordbreaks.c (wordbreakproperty_to_string):
Check WBP_ZWJ, WBP_EB, WBP_EM, WBP_GAZ, and WBP_EBG.
* modules/unigbrk/u{32,16,8}-grapheme-breaks: No longer depend on
uc-is-grapheme-break.
* modules/unigbrk/uc-grapheme-breaks: New module.
* modules/unigbrk/uc-grapheme-breaks-tests: New module.
* lib/unigbrk.in.h (GBP_ZWJ, GBP_EB, GBP_EM, GBP_GAZ, GBP_EBG): New
enum value.
(uc_grapheme_breaks): New function, replacing uc_is_grapheme_break.
* lib/unigbrk/u-grapheme-breaks.h: New file.
* lib/unigbrk/u{32,16,8}-grapheme-breaks.c: Rewrite using
u-grapheme-breaks.h instead of uc_is_grapheme_break.
* lib/unigbrk/uc-grapheme-breaks.c: New file.
* lib/unigbrk/uc-is-grapheme-break.c: Partially update to TR29 rev
29.
* tests/unigbrk/test-uc-gbrk-prop.c
(graphemebreakproperty_to_string): Check GBP_ZWJ, GBP_EB, GBP_EM,
GBP_GAZ, and GBP_EBG.
* tests/unigbrk/test-uc-grapheme-breaks.c: New test.
* tests/unigbrk/test-uc-is-grapheme-break.c
(graphemebreakproperty_to_string): Check GBP_ZWJ, GBP_EB, GBP_EM,
GBP_GAZ, and GBP_EBG.
(main): Skip unsupported rules involving 3 or more characters,
namely GB10, GB12, and GB13.
* lib/uniwidth/width.c (nonspacing_table_data): Update.
* all generated files under lib/uni* and tests/uni*: Regenerate.
* all the dependant modules: Bump version.
Diffstat (limited to 'lib/unigbrk/uc-is-grapheme-break.c')
-rw-r--r-- | lib/unigbrk/uc-is-grapheme-break.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/lib/unigbrk/uc-is-grapheme-break.c b/lib/unigbrk/uc-is-grapheme-break.c index f14a01c51a..8ac975b336 100644 --- a/lib/unigbrk/uc-is-grapheme-break.c +++ b/lib/unigbrk/uc-is-grapheme-break.c @@ -47,19 +47,22 @@ /* GB8 */ \ ((A) == GBP_LVT || (A) == GBP_T) && (B) == GBP_T ? false : \ \ - /* GB8a */ \ - (A) == GBP_RI && (B) == GBP_RI ? false : \ - \ /* GB9 */ \ - (B) == GBP_EXTEND ? false : \ + (B) == GBP_EXTEND || (B) == GBP_ZWJ ? false : \ \ /* GB9a */ \ (B) == GBP_SPACINGMARK ? false : \ \ /* GB9b */ \ - (A) == GBP_PREPEND ? false \ + (A) == GBP_PREPEND ? false : \ \ - /* GB10 */ \ + /* GB10 -- incomplete */ \ + ((A) == GBP_EB || (A) == GBP_EBG) && (B) == GBP_EM ? false : \ + \ + /* GB11 */ \ + (A) == GBP_ZWJ && ((B) == GBP_GAZ || (B) == GBP_EBG) ? false \ + \ + /* GB999 */ \ : true) #define UC_GRAPHEME_BREAKS_FOR(A) \ @@ -75,9 +78,14 @@ | (UC_IS_GRAPHEME_BREAK(A, GBP_T) << GBP_T) \ | (UC_IS_GRAPHEME_BREAK(A, GBP_LV) << GBP_LV) \ | (UC_IS_GRAPHEME_BREAK(A, GBP_LVT) << GBP_LVT) \ - | (UC_IS_GRAPHEME_BREAK(A, GBP_RI) << GBP_RI)) + | (UC_IS_GRAPHEME_BREAK(A, GBP_RI) << GBP_RI) \ + | (UC_IS_GRAPHEME_BREAK(A, GBP_ZWJ) << GBP_ZWJ) \ + | (UC_IS_GRAPHEME_BREAK(A, GBP_EB) << GBP_EB) \ + | (UC_IS_GRAPHEME_BREAK(A, GBP_EM) << GBP_EM) \ + | (UC_IS_GRAPHEME_BREAK(A, GBP_GAZ) << GBP_GAZ) \ + | (UC_IS_GRAPHEME_BREAK(A, GBP_EBG) << GBP_EBG)) -static const unsigned short int gb_table[13] = +static const unsigned long int gb_table[18] = { UC_GRAPHEME_BREAKS_FOR(0), /* GBP_OTHER */ UC_GRAPHEME_BREAKS_FOR(1), /* GBP_CR */ @@ -92,6 +100,11 @@ static const unsigned short int gb_table[13] = UC_GRAPHEME_BREAKS_FOR(10), /* GBP_LV */ UC_GRAPHEME_BREAKS_FOR(11), /* GBP_LVT */ UC_GRAPHEME_BREAKS_FOR(12), /* GBP_RI */ + UC_GRAPHEME_BREAKS_FOR(13), /* GBP_ZWJ */ + UC_GRAPHEME_BREAKS_FOR(14), /* GBP_EB */ + UC_GRAPHEME_BREAKS_FOR(15), /* GBP_EM */ + UC_GRAPHEME_BREAKS_FOR(16), /* GBP_GAZ */ + UC_GRAPHEME_BREAKS_FOR(17), /* GBP_EBG */ }; bool |