summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog43
-rw-r--r--lib/gen-uni-tables.c103
-rw-r--r--lib/unictype.in.h19
-rw-r--r--lib/unictype/pr_emoji.c43
-rw-r--r--lib/unictype/pr_emoji.h363
-rw-r--r--lib/unictype/pr_emoji_component.c43
-rw-r--r--lib/unictype/pr_emoji_component.h476
-rw-r--r--lib/unictype/pr_emoji_modifier.c43
-rw-r--r--lib/unictype/pr_emoji_modifier.h183
-rw-r--r--lib/unictype/pr_emoji_modifier_base.c43
-rw-r--r--lib/unictype/pr_emoji_modifier_base.h327
-rw-r--r--lib/unictype/pr_emoji_presentation.c43
-rw-r--r--lib/unictype/pr_emoji_presentation.h343
-rw-r--r--lib/unictype/pr_extended_pictographic.c43
-rw-r--r--lib/unictype/pr_extended_pictographic.h371
-rw-r--r--modules/unictype/property-all6
-rw-r--r--modules/unictype/property-emoji28
-rw-r--r--modules/unictype/property-emoji-component28
-rw-r--r--modules/unictype/property-emoji-component-tests15
-rw-r--r--modules/unictype/property-emoji-modifier28
-rw-r--r--modules/unictype/property-emoji-modifier-base28
-rw-r--r--modules/unictype/property-emoji-modifier-base-tests15
-rw-r--r--modules/unictype/property-emoji-modifier-tests15
-rw-r--r--modules/unictype/property-emoji-presentation28
-rw-r--r--modules/unictype/property-emoji-presentation-tests15
-rw-r--r--modules/unictype/property-emoji-tests15
-rw-r--r--modules/unictype/property-extended-pictographic28
-rw-r--r--modules/unictype/property-extended-pictographic-tests15
-rw-r--r--tests/unictype/test-pr_emoji.c169
-rw-r--r--tests/unictype/test-pr_emoji_component.c32
-rw-r--r--tests/unictype/test-pr_emoji_modifier.c23
-rw-r--r--tests/unictype/test-pr_emoji_modifier_base.c56
-rw-r--r--tests/unictype/test-pr_emoji_presentation.c99
-rw-r--r--tests/unictype/test-pr_extended_pictographic.c99
34 files changed, 3210 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index eeaeabc577..9466a87427 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2021-12-30 Bruno Haible <bruno@clisp.org>
+
+ unictype: Add Emoji properties from Unicode 11.0.0.
+ * lib/gen-uni-tables.c (PROP_EMOJI*, PROP_EXTENDED_PICTOGRAPHIC): New
+ enum values.
+ (fill_properties): Don't require a space between the property name and
+ the comment. Handle the property names from emoji-data.txt.
+ (is_property_emoji, is_property_emoji_presentation,
+ is_property_emoji_modifier, is_property_emoji_modifier_base,
+ is_property_emoji_component, is_property_extended_pictographic): New
+ declarations.
+ (output_properties): Emit the properties emoji, emoji_presentation,
+ emoji_modifier, emoji_modifier_base, emoji_component,
+ extended_pictographic.
+ (get_lbp): Use the emoji_modifier property.
+ (main): Expect one more argument, for the emoji-data.txt file.
+ * lib/unictype.in.h (UC_PROPERTY_EMOJI, UC_PROPERTY_EMOJI_PRESENTATION,
+ UC_PROPERTY_EMOJI_MODIFIER, UC_PROPERTY_EMOJI_MODIFIER_BASE,
+ UC_PROPERTY_EMOJI_COMPONENT, UC_PROPERTY_EXTENDED_PICTOGRAPHIC,
+ uc_is_property_emoji, uc_is_property_emoji_presentation,
+ uc_is_property_emoji_modifier, uc_is_property_emoji_modifier_base,
+ uc_is_property_emoji_component, uc_is_property_extended_pictographic):
+ New declarations.
+ * lib/unictype/pr_emoji.c: New file.
+ * lib/unictype/pr_emoji_presentation.c: New file.
+ * lib/unictype/pr_emoji_modifier.c: New file.
+ * lib/unictype/pr_emoji_modifier_base.c: New file.
+ * lib/unictype/pr_emoji_component.c: New file.
+ * lib/unictype/pr_extended_pictographic.c: New file.
+ * modules/unictype/property-emoji: New file.
+ * modules/unictype/property-emoji-tests: New file.
+ * modules/unictype/property-emoji-presentation: New file.
+ * modules/unictype/property-emoji-presentation-tests: New file.
+ * modules/unictype/property-emoji-modifier: New file.
+ * modules/unictype/property-emoji-modifier-tests: New file.
+ * modules/unictype/property-emoji-modifier-base: New file.
+ * modules/unictype/property-emoji-modifier-base-tests: New file.
+ * modules/unictype/property-emoji-component: New file.
+ * modules/unictype/property-emoji-component-tests: New file.
+ * modules/unictype/property-extended-pictographic: New file.
+ * modules/unictype/property-extended-pictographic-tests: New file.
+ * modules/unictype/property-all (Depends-on): Depend on the new modules.
+
2021-12-29 Bruno Haible <bruno@clisp.org>
uniwidth: Give width 0 to conjoining Hangul Jamo jungseong, jongseong.
diff --git a/lib/gen-uni-tables.c b/lib/gen-uni-tables.c
index 85ad5c439e..a98da8b164 100644
--- a/lib/gen-uni-tables.c
+++ b/lib/gen-uni-tables.c
@@ -21,6 +21,7 @@
$ gen-uni-tables /usr/local/share/www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt \
/usr/local/share/www.unicode.org/Public/10.0.0/ucd/PropList.txt \
/usr/local/share/www.unicode.org/Public/10.0.0/ucd/DerivedCoreProperties.txt \
+ /usr/local/share/www.unicode.org/Public/emoji/11.0/emoji-data.txt \
/usr/local/share/www.unicode.org/Public/10.0.0/ucd/ArabicShaping.txt \
/usr/local/share/www.unicode.org/Public/10.0.0/ucd/Scripts.txt \
/usr/local/share/www.unicode.org/Public/10.0.0/ucd/Blocks.txt \
@@ -2736,7 +2737,14 @@ enum
PROP_DEFAULT_IGNORABLE_CODE_POINT,
PROP_GRAPHEME_EXTEND,
PROP_GRAPHEME_BASE,
- PROP_GRAPHEME_LINK
+ PROP_GRAPHEME_LINK,
+ /* emoji-data.txt */
+ PROP_EMOJI,
+ PROP_EMOJI_PRESENTATION,
+ PROP_EMOJI_MODIFIER,
+ PROP_EMOJI_MODIFIER_BASE,
+ PROP_EMOJI_COMPONENT,
+ PROP_EXTENDED_PICTOGRAPHIC
};
unsigned long long unicode_properties[0x110000];
@@ -2778,9 +2786,9 @@ fill_properties (const char *proplist_filename)
if (buf[0] == '\0' || buf[0] == '#')
continue;
- if (sscanf (buf, "%X..%X%[ ;]%[^ ]", &i1, &i2, padding, propname) != 4)
+ if (sscanf (buf, "%X..%X%[ ;]%[^ #]", &i1, &i2, padding, propname) != 4)
{
- if (sscanf (buf, "%X%[ ;]%[^ ]", &i1, padding, propname) != 3)
+ if (sscanf (buf, "%X%[ ;]%[^ #]", &i1, padding, propname) != 3)
{
fprintf (stderr, "parse error in '%s'\n", proplist_filename);
exit (1);
@@ -2844,6 +2852,13 @@ fill_properties (const char *proplist_filename)
PROP ("Grapheme_Extend", PROP_GRAPHEME_EXTEND)
PROP ("Grapheme_Base", PROP_GRAPHEME_BASE)
PROP ("Grapheme_Link", PROP_GRAPHEME_LINK)
+ /* emoji-data.txt */
+ PROP ("Emoji", PROP_EMOJI)
+ PROP ("Emoji_Presentation", PROP_EMOJI_PRESENTATION)
+ PROP ("Emoji_Modifier", PROP_EMOJI_MODIFIER)
+ PROP ("Emoji_Modifier_Base", PROP_EMOJI_MODIFIER_BASE)
+ PROP ("Emoji_Component", PROP_EMOJI_COMPONENT)
+ PROP ("Extended_Pictographic", PROP_EXTENDED_PICTOGRAPHIC)
#undef PROP
{
fprintf (stderr, "unknown property named '%s' in '%s'\n", propname,
@@ -3721,6 +3736,48 @@ is_property_regional_indicator (unsigned int ch)
return ((unicode_properties[ch] & (1ULL << PROP_REGIONAL_INDICATOR)) != 0);
}
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_emoji (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EMOJI)) != 0);
+}
+
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_emoji_presentation (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EMOJI_PRESENTATION)) != 0);
+}
+
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_emoji_modifier (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EMOJI_MODIFIER)) != 0);
+}
+
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_emoji_modifier_base (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EMOJI_MODIFIER_BASE)) != 0);
+}
+
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_emoji_component (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EMOJI_COMPONENT)) != 0);
+}
+
+/* See emoji-data.txt, UTS #51. */
+static bool
+is_property_extended_pictographic (unsigned int ch)
+{
+ return ((unicode_properties[ch] & (1ULL << PROP_EXTENDED_PICTOGRAPHIC)) != 0);
+}
+
/* ------------------------------------------------------------------------- */
/* Output all properties. */
@@ -3818,6 +3875,12 @@ output_properties (const char *version)
PROPERTY(extender)
PROPERTY(ignorable_control)
PROPERTY(regional_indicator)
+ PROPERTY(emoji)
+ PROPERTY(emoji_presentation)
+ PROPERTY(emoji_modifier)
+ PROPERTY(emoji_modifier_base)
+ PROPERTY(emoji_component)
+ PROPERTY(extended_pictographic)
#undef PROPERTY
}
@@ -6651,7 +6714,7 @@ get_lbp (unsigned int ch)
|| (ch >= 0x1F9D1 && ch <= 0x1F9DD) /* ADULT..ELF */)
attr |= (int64_t) 1 << LBP_EB;
- if ((ch >= 0x1F3FB && ch <= 0x1F3FF) /* EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 */)
+ if (((unicode_properties[ch] >> PROP_EMOJI_MODIFIER) & 1) != 0) /* EMOJI MODIFIER */
attr |= (int64_t) 1 << LBP_EM;
/* non-breaking (glue) */
@@ -10879,6 +10942,7 @@ main (int argc, char * argv[])
const char *unicodedata_filename;
const char *proplist_filename;
const char *derivedproplist_filename;
+ const char *emojidata_filename;
const char *arabicshaping_filename;
const char *scripts_filename;
const char *blocks_filename;
@@ -10892,9 +10956,9 @@ main (int argc, char * argv[])
const char *casefolding_filename;
const char *version;
- if (argc != 16)
+ if (argc != 17)
{
- fprintf (stderr, "Usage: %s UnicodeData.txt PropList.txt DerivedCoreProperties.txt ArabicShaping.txt Scripts.txt Blocks.txt PropList-3.0.1.txt EastAsianWidth.txt LineBreak.txt WordBreakProperty.txt GraphemeBreakProperty.txt CompositionExclusions.txt SpecialCasing.txt CaseFolding.txt version\n",
+ fprintf (stderr, "Usage: %s UnicodeData.txt PropList.txt DerivedCoreProperties.txt emoji-data.txt ArabicShaping.txt Scripts.txt Blocks.txt PropList-3.0.1.txt EastAsianWidth.txt LineBreak.txt WordBreakProperty.txt GraphemeBreakProperty.txt CompositionExclusions.txt SpecialCasing.txt CaseFolding.txt version\n",
argv[0]);
exit (1);
}
@@ -10902,23 +10966,25 @@ main (int argc, char * argv[])
unicodedata_filename = argv[1];
proplist_filename = argv[2];
derivedproplist_filename = argv[3];
- arabicshaping_filename = argv[4];
- scripts_filename = argv[5];
- blocks_filename = argv[6];
- proplist30_filename = argv[7];
- eastasianwidth_filename = argv[8];
- linebreak_filename = argv[9];
- wordbreakproperty_filename = argv[10];
- graphemebreakproperty_filename = argv[11];
- compositionexclusions_filename = argv[12];
- specialcasing_filename = argv[13];
- casefolding_filename = argv[14];
- version = argv[15];
+ emojidata_filename = argv[4];
+ arabicshaping_filename = argv[5];
+ scripts_filename = argv[6];
+ blocks_filename = argv[7];
+ proplist30_filename = argv[8];
+ eastasianwidth_filename = argv[9];
+ linebreak_filename = argv[10];
+ wordbreakproperty_filename = argv[11];
+ graphemebreakproperty_filename = argv[12];
+ compositionexclusions_filename = argv[13];
+ specialcasing_filename = argv[14];
+ casefolding_filename = argv[15];
+ version = argv[16];
fill_attributes (unicodedata_filename);
clear_properties ();
fill_properties (proplist_filename);
fill_properties (derivedproplist_filename);
+ fill_properties (emojidata_filename);
fill_properties30 (proplist30_filename);
fill_arabicshaping (arabicshaping_filename);
fill_scripts (scripts_filename);
@@ -10996,6 +11062,7 @@ main (int argc, char * argv[])
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/UnicodeData.txt \\
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/PropList.txt \\
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/DerivedCoreProperties.txt \\
+ * /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/emoji/11.0/emoji-data.txt \\
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/ArabicShaping.txt \\
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/Scripts.txt \\
* /media/nas/bruno/www-archive/software/i18n/unicode/ftp.unicode.org/ArchiveVersions/10.0.0/ucd/Blocks.txt \\
diff --git a/lib/unictype.in.h b/lib/unictype.in.h
index 89d11bebcb..cb4902b5f6 100644
--- a/lib/unictype.in.h
+++ b/lib/unictype.in.h
@@ -665,6 +665,13 @@ extern const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH;
extern const uc_property_t UC_PROPERTY_RADICAL;
extern const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR;
extern const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR;
+/* Emoji. */
+extern const uc_property_t UC_PROPERTY_EMOJI;
+extern const uc_property_t UC_PROPERTY_EMOJI_PRESENTATION;
+extern const uc_property_t UC_PROPERTY_EMOJI_MODIFIER;
+extern const uc_property_t UC_PROPERTY_EMOJI_MODIFIER_BASE;
+extern const uc_property_t UC_PROPERTY_EMOJI_COMPONENT;
+extern const uc_property_t UC_PROPERTY_EXTENDED_PICTOGRAPHIC;
/* Misc. */
extern const uc_property_t UC_PROPERTY_ZERO_WIDTH;
extern const uc_property_t UC_PROPERTY_SPACE;
@@ -825,6 +832,18 @@ extern bool uc_is_property_ids_binary_operator (ucs4_t uc)
_UC_ATTRIBUTE_CONST;
extern bool uc_is_property_ids_trinary_operator (ucs4_t uc)
_UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_emoji (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_emoji_presentation (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_emoji_modifier (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_emoji_modifier_base (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_emoji_component (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_extended_pictographic (ucs4_t uc)
+ _UC_ATTRIBUTE_CONST;
extern bool uc_is_property_zero_width (ucs4_t uc)
_UC_ATTRIBUTE_CONST;
extern bool uc_is_property_space (ucs4_t uc)
diff --git a/lib/unictype/pr_emoji.c b/lib/unictype/pr_emoji.c
new file mode 100644
index 0000000000..eb08236c57
--- /dev/null
+++ b/lib/unictype/pr_emoji.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_emoji table. */
+#include "pr_emoji.h"
+
+bool
+uc_is_property_emoji (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_emoji, uc);
+}
+
+const uc_property_t UC_PROPERTY_EMOJI =
+ { &uc_is_property_emoji };
diff --git a/lib/unictype/pr_emoji.h b/lib/unictype/pr_emoji.h
new file mode 100644
index 0000000000..1698c99c6e
--- /dev/null
+++ b/lib/unictype/pr_emoji.h
@@ -0,0 +1,363 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ unsigned int level3[14 << 4];
+ }
+u_property_emoji =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000U, 0x03FF0408U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00004200U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x10000000U, 0x00000200U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x02000004U, 0x00000000U, 0x00000000U,
+ 0x03F00000U, 0x00000600U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x0C000000U, 0x00000100U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00008000U, 0x070FFE00U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000004U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00400C00U, 0x00000001U, 0x78000000U,
+ 0x2132401FU, 0x0700C44DU, 0x800FFF05U, 0xC8000169U,
+ 0x1AFC0000U, 0x60030C03U, 0x001AC130U, 0x27BF0600U,
+ 0x2054BF24U, 0x00180102U, 0x00B85090U, 0x00000018U,
+ 0x00E00000U, 0x80010002U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00300000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x180000E0U, 0x00000000U, 0x00210000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x20010000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x02800000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000010U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00008000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xC0030000U,
+ 0x07FE4000U, 0x00000000U, 0x00000000U, 0xFFFFFFC0U,
+ 0x04000006U, 0x07FC8000U, 0x00030000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFFFFFF3U, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xCECFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFB9FFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xBFFFFFFFU,
+ 0xFFFFFFFFU, 0x3FFFFFFFU, 0xFFFF7E00U, 0x07F980FFU,
+ 0x00613C80U, 0x10060130U, 0x700E001CU, 0xFC08810AU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0007F83FU, 0x03F91A3FU,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xFFFF0000U, 0x77FFFFFFU, 0xFFFFFFBFU, 0xF479FFFFU,
+ 0xFFFFFFFFU, 0x03FF0007U, 0xFFFF0007U, 0xFFFFFFFFU
+ }
+};
diff --git a/lib/unictype/pr_emoji_component.c b/lib/unictype/pr_emoji_component.c
new file mode 100644
index 0000000000..a4e4715211
--- /dev/null
+++ b/lib/unictype/pr_emoji_component.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_emoji_component table. */
+#include "pr_emoji_component.h"
+
+bool
+uc_is_property_emoji_component (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_emoji_component, uc);
+}
+
+const uc_property_t UC_PROPERTY_EMOJI_COMPONENT =
+ { &uc_is_property_emoji_component };
diff --git a/lib/unictype/pr_emoji_component.h b/lib/unictype/pr_emoji_component.h
new file mode 100644
index 0000000000..016beba168
--- /dev/null
+++ b/lib/unictype/pr_emoji_component.h
@@ -0,0 +1,476 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ unsigned int level3[7 << 4];
+ }
+u_property_emoji_component =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000U, 0x03FF0408U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00002000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000008U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00008000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xFFFFFFC0U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xF8000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x000F0000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U
+ }
+};
diff --git a/lib/unictype/pr_emoji_modifier.c b/lib/unictype/pr_emoji_modifier.c
new file mode 100644
index 0000000000..69febd9ea1
--- /dev/null
+++ b/lib/unictype/pr_emoji_modifier.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_emoji_modifier table. */
+#include "pr_emoji_modifier.h"
+
+bool
+uc_is_property_emoji_modifier (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_emoji_modifier, uc);
+}
+
+const uc_property_t UC_PROPERTY_EMOJI_MODIFIER =
+ { &uc_is_property_emoji_modifier };
diff --git a/lib/unictype/pr_emoji_modifier.h b/lib/unictype/pr_emoji_modifier.h
new file mode 100644
index 0000000000..f4ece8c04b
--- /dev/null
+++ b/lib/unictype/pr_emoji_modifier.h
@@ -0,0 +1,183 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[1 << 7];
+ unsigned int level3[1 << 4];
+ }
+u_property_emoji_modifier =
+{
+ { 2 },
+ {
+ -1,
+ 3 * sizeof (int) / sizeof (short) + 0
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xF8000000U
+ }
+};
diff --git a/lib/unictype/pr_emoji_modifier_base.c b/lib/unictype/pr_emoji_modifier_base.c
new file mode 100644
index 0000000000..8e3d29626e
--- /dev/null
+++ b/lib/unictype/pr_emoji_modifier_base.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_emoji_modifier_base table. */
+#include "pr_emoji_modifier_base.h"
+
+bool
+uc_is_property_emoji_modifier_base (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_emoji_modifier_base, uc);
+}
+
+const uc_property_t UC_PROPERTY_EMOJI_MODIFIER_BASE =
+ { &uc_is_property_emoji_modifier_base };
diff --git a/lib/unictype/pr_emoji_modifier_base.h b/lib/unictype/pr_emoji_modifier_base.h
new file mode 100644
index 0000000000..dbf785ee7c
--- /dev/null
+++ b/lib/unictype/pr_emoji_modifier_base.h
@@ -0,0 +1,327 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ unsigned int level3[5 << 4];
+ }
+u_property_emoji_modifier_base =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x20000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x02000000U,
+ 0x00003C00U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000020U, 0x00000000U, 0x00001C9CU, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x0001FFCCU, 0x11FF43C0U,
+ 0x000000EEU, 0x00000400U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x04300000U,
+ 0x00610000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x0000F8E0U, 0x00000000U,
+ 0x00000000U, 0x00700008U, 0x00001001U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xDF000000U, 0x63FF0040U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x03600000U, 0x3FFE0000U, 0x00000000U
+ }
+};
diff --git a/lib/unictype/pr_emoji_presentation.c b/lib/unictype/pr_emoji_presentation.c
new file mode 100644
index 0000000000..84b1c9146f
--- /dev/null
+++ b/lib/unictype/pr_emoji_presentation.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_emoji_presentation table. */
+#include "pr_emoji_presentation.h"
+
+bool
+uc_is_property_emoji_presentation (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_emoji_presentation, uc);
+}
+
+const uc_property_t UC_PROPERTY_EMOJI_PRESENTATION =
+ { &uc_is_property_emoji_presentation };
diff --git a/lib/unictype/pr_emoji_presentation.h b/lib/unictype/pr_emoji_presentation.h
new file mode 100644
index 0000000000..f6675e4bf6
--- /dev/null
+++ b/lib/unictype/pr_emoji_presentation.h
@@ -0,0 +1,343 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ unsigned int level3[9 << 4];
+ }
+u_property_emoji_presentation =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x0C000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00091E00U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x60000000U,
+ 0x00300000U, 0x00000000U, 0x000FFF00U, 0x80000000U,
+ 0x00080000U, 0x60000C02U, 0x00104030U, 0x242C0400U,
+ 0x00000C20U, 0x00000100U, 0x00B85000U, 0x00000000U,
+ 0x00E00000U, 0x80010000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x18000000U, 0x00000000U, 0x00210000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000010U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00008000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x07FE4000U, 0x00000000U, 0x00000000U, 0xFFFFFFC0U,
+ 0x04000002U, 0x077C8000U, 0x00030000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFBFE001U, 0xFFFFFFFFU, 0xDFFFFFFFU,
+ 0x000FFFFFU, 0xFFFFFFFFU, 0x000F87FFU, 0xFF11FFFFU,
+ 0xFFFFFFFFU, 0x7FFFFFFFU, 0xFFFFFFFDU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x9FFFFFFFU,
+ 0xFFFFFFFFU, 0x3FFFFFFFU, 0xFFFF7800U, 0x040000FFU,
+ 0x00600000U, 0x00000010U, 0x00000000U, 0xF8000000U,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0007103FU, 0x03F01800U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xFFFF0000U, 0x77FFFFFFU, 0xFFFFFFBFU, 0xF479FFFFU,
+ 0xFFFFFFFFU, 0x03FF0007U, 0xFFFF0007U, 0xFFFFFFFFU
+ }
+};
diff --git a/lib/unictype/pr_extended_pictographic.c b/lib/unictype/pr_extended_pictographic.c
new file mode 100644
index 0000000000..960fb45f1f
--- /dev/null
+++ b/lib/unictype/pr_extended_pictographic.c
@@ -0,0 +1,43 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_extended_pictographic table. */
+#include "pr_extended_pictographic.h"
+
+bool
+uc_is_property_extended_pictographic (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_extended_pictographic, uc);
+}
+
+const uc_property_t UC_PROPERTY_EXTENDED_PICTOGRAPHIC =
+ { &uc_is_property_extended_pictographic };
diff --git a/lib/unictype/pr_extended_pictographic.h b/lib/unictype/pr_extended_pictographic.h
new file mode 100644
index 0000000000..fc059f1d02
--- /dev/null
+++ b/lib/unictype/pr_extended_pictographic.h
@@ -0,0 +1,371 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 10.0.0. */
+
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+
+ This file is free software.
+ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
+ You can redistribute it and/or modify it under either
+ - the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version, or
+ - the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option)
+ any later version, or
+ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License and the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License and of the GNU General Public License along with this
+ program. If not, see <https://www.gnu.org/licenses/>. */
+
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ unsigned int level3[16 << 4];
+ }
+u_property_extended_pictographic =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240
+ },
+ {
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00004200U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x10000000U, 0x00000200U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x02000004U, 0x00000000U, 0x00000000U,
+ 0x03F00000U, 0x00000600U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x0C000000U, 0x00000100U, 0x00000000U, 0x00000000U,
+ 0x00000100U, 0x00000000U, 0x00008000U, 0x070FFE00U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000004U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00400C00U, 0x00000001U, 0x78000000U,
+ 0xFFF7FFBFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFF003FU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0x2057FF3FU, 0x00180102U, 0x00B85090U, 0x000000F8U,
+ 0x00E00000U, 0x80010002U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00300000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x180000E0U, 0x00000000U, 0x00210000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x20010000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x02800000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0x0000E000U, 0x00008000U, 0x00000000U, 0xC003F000U,
+ 0x07FE4000U, 0xFFFFE000U, 0xFFFFFFFFU, 0x0000003FU,
+ 0x0400FFFEU, 0xF7FC8000U, 0xFFFFFE00U, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x07FFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0x3FFFFFFFU, 0xFFFFFFC0U, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU, 0x00000000U,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xFFF00000U,
+ 0x00000000U, 0x00000000U, 0xFFE00000U, 0xFFFFFFFFU,
+ 0x0000F000U, 0x00000000U, 0xFC00FF00U, 0x00000000U,
+ 0x0000FF00U, 0xFFFFC000U, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFF000U, 0xF7FFFFFFU, 0xFFFFFFBFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+ 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x3FFFFFFFU
+ }
+};
diff --git a/modules/unictype/property-all b/modules/unictype/property-all
index facfdd24f4..73bea9dcb2 100644
--- a/modules/unictype/property-all
+++ b/modules/unictype/property-all
@@ -39,6 +39,12 @@ unictype/property-decimal-digit
unictype/property-default-ignorable-code-point
unictype/property-deprecated
unictype/property-diacritic
+unictype/property-emoji
+unictype/property-emoji-component
+unictype/property-emoji-modifier
+unictype/property-emoji-modifier-base
+unictype/property-emoji-presentation
+unictype/property-extended-pictographic
unictype/property-extender
unictype/property-format-control
unictype/property-grapheme-base
diff --git a/modules/unictype/property-emoji b/modules/unictype/property-emoji
new file mode 100644
index 0000000000..022f167c06
--- /dev/null
+++ b/modules/unictype/property-emoji
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "emoji".
+
+Files:
+lib/unictype/pr_emoji.c
+lib/unictype/pr_emoji.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EMOJI
+lib_SOURCES += unictype/pr_emoji.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-emoji-component b/modules/unictype/property-emoji-component
new file mode 100644
index 0000000000..df067e3c74
--- /dev/null
+++ b/modules/unictype/property-emoji-component
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "emoji component".
+
+Files:
+lib/unictype/pr_emoji_component.c
+lib/unictype/pr_emoji_component.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-component])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EMOJI_COMPONENT
+lib_SOURCES += unictype/pr_emoji_component.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-emoji-component-tests b/modules/unictype/property-emoji-component-tests
new file mode 100644
index 0000000000..125439bf55
--- /dev/null
+++ b/modules/unictype/property-emoji-component-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_emoji_component.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_emoji_component
+check_PROGRAMS += test-pr_emoji_component
+test_pr_emoji_component_SOURCES = unictype/test-pr_emoji_component.c
+test_pr_emoji_component_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/modules/unictype/property-emoji-modifier b/modules/unictype/property-emoji-modifier
new file mode 100644
index 0000000000..9d358e7860
--- /dev/null
+++ b/modules/unictype/property-emoji-modifier
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "emoji modifier".
+
+Files:
+lib/unictype/pr_emoji_modifier.c
+lib/unictype/pr_emoji_modifier.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-modifier])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EMOJI_MODIFIER
+lib_SOURCES += unictype/pr_emoji_modifier.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-emoji-modifier-base b/modules/unictype/property-emoji-modifier-base
new file mode 100644
index 0000000000..f16556b8f5
--- /dev/null
+++ b/modules/unictype/property-emoji-modifier-base
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "emoji modifier base".
+
+Files:
+lib/unictype/pr_emoji_modifier_base.c
+lib/unictype/pr_emoji_modifier_base.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-modifier-base])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE
+lib_SOURCES += unictype/pr_emoji_modifier_base.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-emoji-modifier-base-tests b/modules/unictype/property-emoji-modifier-base-tests
new file mode 100644
index 0000000000..4ed0ac0ab5
--- /dev/null
+++ b/modules/unictype/property-emoji-modifier-base-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_emoji_modifier_base.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_emoji_modifier_base
+check_PROGRAMS += test-pr_emoji_modifier_base
+test_pr_emoji_modifier_base_SOURCES = unictype/test-pr_emoji_modifier_base.c
+test_pr_emoji_modifier_base_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/modules/unictype/property-emoji-modifier-tests b/modules/unictype/property-emoji-modifier-tests
new file mode 100644
index 0000000000..5a3c064832
--- /dev/null
+++ b/modules/unictype/property-emoji-modifier-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_emoji_modifier.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_emoji_modifier
+check_PROGRAMS += test-pr_emoji_modifier
+test_pr_emoji_modifier_SOURCES = unictype/test-pr_emoji_modifier.c
+test_pr_emoji_modifier_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/modules/unictype/property-emoji-presentation b/modules/unictype/property-emoji-presentation
new file mode 100644
index 0000000000..f3259eaede
--- /dev/null
+++ b/modules/unictype/property-emoji-presentation
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "emoji presentation".
+
+Files:
+lib/unictype/pr_emoji_presentation.c
+lib/unictype/pr_emoji_presentation.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-presentation])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EMOJI_PRESENTATION
+lib_SOURCES += unictype/pr_emoji_presentation.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-emoji-presentation-tests b/modules/unictype/property-emoji-presentation-tests
new file mode 100644
index 0000000000..dca080d544
--- /dev/null
+++ b/modules/unictype/property-emoji-presentation-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_emoji_presentation.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_emoji_presentation
+check_PROGRAMS += test-pr_emoji_presentation
+test_pr_emoji_presentation_SOURCES = unictype/test-pr_emoji_presentation.c
+test_pr_emoji_presentation_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/modules/unictype/property-emoji-tests b/modules/unictype/property-emoji-tests
new file mode 100644
index 0000000000..369db5568c
--- /dev/null
+++ b/modules/unictype/property-emoji-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_emoji.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_emoji
+check_PROGRAMS += test-pr_emoji
+test_pr_emoji_SOURCES = unictype/test-pr_emoji.c
+test_pr_emoji_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/modules/unictype/property-extended-pictographic b/modules/unictype/property-extended-pictographic
new file mode 100644
index 0000000000..96ce308a51
--- /dev/null
+++ b/modules/unictype/property-extended-pictographic
@@ -0,0 +1,28 @@
+Description:
+Test whether a Unicode character is "extended pictographic".
+
+Files:
+lib/unictype/pr_extended_pictographic.c
+lib/unictype/pr_extended_pictographic.h
+lib/unictype/bitmap.h
+
+Depends-on:
+unictype/base
+
+configure.ac:
+AC_REQUIRE([AC_C_INLINE])
+gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-extended-pictographic])
+
+Makefile.am:
+if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC
+lib_SOURCES += unictype/pr_extended_pictographic.c
+endif
+
+Include:
+"unictype.h"
+
+License:
+LGPLv3+ or GPLv2+
+
+Maintainer:
+all
diff --git a/modules/unictype/property-extended-pictographic-tests b/modules/unictype/property-extended-pictographic-tests
new file mode 100644
index 0000000000..731257aa56
--- /dev/null
+++ b/modules/unictype/property-extended-pictographic-tests
@@ -0,0 +1,15 @@
+Files:
+tests/unictype/test-pr_extended_pictographic.c
+tests/unictype/test-predicate-part1.h
+tests/unictype/test-predicate-part2.h
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-pr_extended_pictographic
+check_PROGRAMS += test-pr_extended_pictographic
+test_pr_extended_pictographic_SOURCES = unictype/test-pr_extended_pictographic.c
+test_pr_extended_pictographic_LDADD = $(LDADD) $(LIBUNISTRING)
diff --git a/tests/unictype/test-pr_emoji.c b/tests/unictype/test-pr_emoji.c
new file mode 100644
index 0000000000..a4fa3b8a47
--- /dev/null
+++ b/tests/unictype/test-pr_emoji.c
@@ -0,0 +1,169 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0023, 0x0023 },
+ { 0x002A, 0x002A },
+ { 0x0030, 0x0039 },
+ { 0x00A9, 0x00A9 },
+ { 0x00AE, 0x00AE },
+ { 0x203C, 0x203C },
+ { 0x2049, 0x2049 },
+ { 0x2122, 0x2122 },
+ { 0x2139, 0x2139 },
+ { 0x2194, 0x2199 },
+ { 0x21A9, 0x21AA },
+ { 0x231A, 0x231B },
+ { 0x2328, 0x2328 },
+ { 0x23CF, 0x23CF },
+ { 0x23E9, 0x23F3 },
+ { 0x23F8, 0x23FA },
+ { 0x24C2, 0x24C2 },
+ { 0x25AA, 0x25AB },
+ { 0x25B6, 0x25B6 },
+ { 0x25C0, 0x25C0 },
+ { 0x25FB, 0x25FE },
+ { 0x2600, 0x2604 },
+ { 0x260E, 0x260E },
+ { 0x2611, 0x2611 },
+ { 0x2614, 0x2615 },
+ { 0x2618, 0x2618 },
+ { 0x261D, 0x261D },
+ { 0x2620, 0x2620 },
+ { 0x2622, 0x2623 },
+ { 0x2626, 0x2626 },
+ { 0x262A, 0x262A },
+ { 0x262E, 0x262F },
+ { 0x2638, 0x263A },
+ { 0x2640, 0x2640 },
+ { 0x2642, 0x2642 },
+ { 0x2648, 0x2653 },
+ { 0x265F, 0x2660 },
+ { 0x2663, 0x2663 },
+ { 0x2665, 0x2666 },
+ { 0x2668, 0x2668 },
+ { 0x267B, 0x267B },
+ { 0x267E, 0x267F },
+ { 0x2692, 0x2697 },
+ { 0x2699, 0x2699 },
+ { 0x269B, 0x269C },
+ { 0x26A0, 0x26A1 },
+ { 0x26AA, 0x26AB },
+ { 0x26B0, 0x26B1 },
+ { 0x26BD, 0x26BE },
+ { 0x26C4, 0x26C5 },
+ { 0x26C8, 0x26C8 },
+ { 0x26CE, 0x26CF },
+ { 0x26D1, 0x26D1 },
+ { 0x26D3, 0x26D4 },
+ { 0x26E9, 0x26EA },
+ { 0x26F0, 0x26F5 },
+ { 0x26F7, 0x26FA },
+ { 0x26FD, 0x26FD },
+ { 0x2702, 0x2702 },
+ { 0x2705, 0x2705 },
+ { 0x2708, 0x270D },
+ { 0x270F, 0x270F },
+ { 0x2712, 0x2712 },
+ { 0x2714, 0x2714 },
+ { 0x2716, 0x2716 },
+ { 0x271D, 0x271D },
+ { 0x2721, 0x2721 },
+ { 0x2728, 0x2728 },
+ { 0x2733, 0x2734 },
+ { 0x2744, 0x2744 },
+ { 0x2747, 0x2747 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x2763, 0x2764 },
+ { 0x2795, 0x2797 },
+ { 0x27A1, 0x27A1 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x2934, 0x2935 },
+ { 0x2B05, 0x2B07 },
+ { 0x2B1B, 0x2B1C },
+ { 0x2B50, 0x2B50 },
+ { 0x2B55, 0x2B55 },
+ { 0x3030, 0x3030 },
+ { 0x303D, 0x303D },
+ { 0x3297, 0x3297 },
+ { 0x3299, 0x3299 },
+ { 0x1F004, 0x1F004 },
+ { 0x1F0CF, 0x1F0CF },
+ { 0x1F170, 0x1F171 },
+ { 0x1F17E, 0x1F17F },
+ { 0x1F18E, 0x1F18E },
+ { 0x1F191, 0x1F19A },
+ { 0x1F1E6, 0x1F1FF },
+ { 0x1F201, 0x1F202 },
+ { 0x1F21A, 0x1F21A },
+ { 0x1F22F, 0x1F22F },
+ { 0x1F232, 0x1F23A },
+ { 0x1F250, 0x1F251 },
+ { 0x1F300, 0x1F321 },
+ { 0x1F324, 0x1F393 },
+ { 0x1F396, 0x1F397 },
+ { 0x1F399, 0x1F39B },
+ { 0x1F39E, 0x1F3F0 },
+ { 0x1F3F3, 0x1F3F5 },
+ { 0x1F3F7, 0x1F4FD },
+ { 0x1F4FF, 0x1F53D },
+ { 0x1F549, 0x1F54E },
+ { 0x1F550, 0x1F567 },
+ { 0x1F56F, 0x1F570 },
+ { 0x1F573, 0x1F57A },
+ { 0x1F587, 0x1F587 },
+ { 0x1F58A, 0x1F58D },
+ { 0x1F590, 0x1F590 },
+ { 0x1F595, 0x1F596 },
+ { 0x1F5A4, 0x1F5A5 },
+ { 0x1F5A8, 0x1F5A8 },
+ { 0x1F5B1, 0x1F5B2 },
+ { 0x1F5BC, 0x1F5BC },
+ { 0x1F5C2, 0x1F5C4 },
+ { 0x1F5D1, 0x1F5D3 },
+ { 0x1F5DC, 0x1F5DE },
+ { 0x1F5E1, 0x1F5E1 },
+ { 0x1F5E3, 0x1F5E3 },
+ { 0x1F5E8, 0x1F5E8 },
+ { 0x1F5EF, 0x1F5EF },
+ { 0x1F5F3, 0x1F5F3 },
+ { 0x1F5FA, 0x1F64F },
+ { 0x1F680, 0x1F6C5 },
+ { 0x1F6CB, 0x1F6D2 },
+ { 0x1F6E0, 0x1F6E5 },
+ { 0x1F6E9, 0x1F6E9 },
+ { 0x1F6EB, 0x1F6EC },
+ { 0x1F6F0, 0x1F6F0 },
+ { 0x1F6F3, 0x1F6F9 },
+ { 0x1F910, 0x1F93A },
+ { 0x1F93C, 0x1F93E },
+ { 0x1F940, 0x1F945 },
+ { 0x1F947, 0x1F970 },
+ { 0x1F973, 0x1F976 },
+ { 0x1F97A, 0x1F97A },
+ { 0x1F97C, 0x1F9A2 },
+ { 0x1F9B0, 0x1F9B9 },
+ { 0x1F9C0, 0x1F9C2 },
+ { 0x1F9D0, 0x1F9FF }
+
+#define PREDICATE(c) uc_is_property_emoji (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_emoji_component.c b/tests/unictype/test-pr_emoji_component.c
new file mode 100644
index 0000000000..45d3862545
--- /dev/null
+++ b/tests/unictype/test-pr_emoji_component.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0023, 0x0023 },
+ { 0x002A, 0x002A },
+ { 0x0030, 0x0039 },
+ { 0x200D, 0x200D },
+ { 0x20E3, 0x20E3 },
+ { 0xFE0F, 0xFE0F },
+ { 0x1F1E6, 0x1F1FF },
+ { 0x1F3FB, 0x1F3FF },
+ { 0x1F9B0, 0x1F9B3 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_property_emoji_component (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_emoji_modifier.c b/tests/unictype/test-pr_emoji_modifier.c
new file mode 100644
index 0000000000..6722ef13f1
--- /dev/null
+++ b/tests/unictype/test-pr_emoji_modifier.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x1F3FB, 0x1F3FF }
+
+#define PREDICATE(c) uc_is_property_emoji_modifier (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_emoji_modifier_base.c b/tests/unictype/test-pr_emoji_modifier_base.c
new file mode 100644
index 0000000000..ea70851dff
--- /dev/null
+++ b/tests/unictype/test-pr_emoji_modifier_base.c
@@ -0,0 +1,56 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x261D, 0x261D },
+ { 0x26F9, 0x26F9 },
+ { 0x270A, 0x270D },
+ { 0x1F385, 0x1F385 },
+ { 0x1F3C2, 0x1F3C4 },
+ { 0x1F3C7, 0x1F3C7 },
+ { 0x1F3CA, 0x1F3CC },
+ { 0x1F442, 0x1F443 },
+ { 0x1F446, 0x1F450 },
+ { 0x1F466, 0x1F469 },
+ { 0x1F46E, 0x1F46E },
+ { 0x1F470, 0x1F478 },
+ { 0x1F47C, 0x1F47C },
+ { 0x1F481, 0x1F483 },
+ { 0x1F485, 0x1F487 },
+ { 0x1F4AA, 0x1F4AA },
+ { 0x1F574, 0x1F575 },
+ { 0x1F57A, 0x1F57A },
+ { 0x1F590, 0x1F590 },
+ { 0x1F595, 0x1F596 },
+ { 0x1F645, 0x1F647 },
+ { 0x1F64B, 0x1F64F },
+ { 0x1F6A3, 0x1F6A3 },
+ { 0x1F6B4, 0x1F6B6 },
+ { 0x1F6C0, 0x1F6C0 },
+ { 0x1F6CC, 0x1F6CC },
+ { 0x1F918, 0x1F91C },
+ { 0x1F91E, 0x1F91F },
+ { 0x1F926, 0x1F926 },
+ { 0x1F930, 0x1F939 },
+ { 0x1F93D, 0x1F93E },
+ { 0x1F9B5, 0x1F9B6 },
+ { 0x1F9B8, 0x1F9B9 },
+ { 0x1F9D1, 0x1F9DD }
+
+#define PREDICATE(c) uc_is_property_emoji_modifier_base (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_emoji_presentation.c b/tests/unictype/test-pr_emoji_presentation.c
new file mode 100644
index 0000000000..3e1998f86a
--- /dev/null
+++ b/tests/unictype/test-pr_emoji_presentation.c
@@ -0,0 +1,99 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x231A, 0x231B },
+ { 0x23E9, 0x23EC },
+ { 0x23F0, 0x23F0 },
+ { 0x23F3, 0x23F3 },
+ { 0x25FD, 0x25FE },
+ { 0x2614, 0x2615 },
+ { 0x2648, 0x2653 },
+ { 0x267F, 0x267F },
+ { 0x2693, 0x2693 },
+ { 0x26A1, 0x26A1 },
+ { 0x26AA, 0x26AB },
+ { 0x26BD, 0x26BE },
+ { 0x26C4, 0x26C5 },
+ { 0x26CE, 0x26CE },
+ { 0x26D4, 0x26D4 },
+ { 0x26EA, 0x26EA },
+ { 0x26F2, 0x26F3 },
+ { 0x26F5, 0x26F5 },
+ { 0x26FA, 0x26FA },
+ { 0x26FD, 0x26FD },
+ { 0x2705, 0x2705 },
+ { 0x270A, 0x270B },
+ { 0x2728, 0x2728 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x2795, 0x2797 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x2B1B, 0x2B1C },
+ { 0x2B50, 0x2B50 },
+ { 0x2B55, 0x2B55 },
+ { 0x1F004, 0x1F004 },
+ { 0x1F0CF, 0x1F0CF },
+ { 0x1F18E, 0x1F18E },
+ { 0x1F191, 0x1F19A },
+ { 0x1F1E6, 0x1F1FF },
+ { 0x1F201, 0x1F201 },
+ { 0x1F21A, 0x1F21A },
+ { 0x1F22F, 0x1F22F },
+ { 0x1F232, 0x1F236 },
+ { 0x1F238, 0x1F23A },
+ { 0x1F250, 0x1F251 },
+ { 0x1F300, 0x1F320 },
+ { 0x1F32D, 0x1F335 },
+ { 0x1F337, 0x1F37C },
+ { 0x1F37E, 0x1F393 },
+ { 0x1F3A0, 0x1F3CA },
+ { 0x1F3CF, 0x1F3D3 },
+ { 0x1F3E0, 0x1F3F0 },
+ { 0x1F3F4, 0x1F3F4 },
+ { 0x1F3F8, 0x1F43E },
+ { 0x1F440, 0x1F440 },
+ { 0x1F442, 0x1F4FC },
+ { 0x1F4FF, 0x1F53D },
+ { 0x1F54B, 0x1F54E },
+ { 0x1F550, 0x1F567 },
+ { 0x1F57A, 0x1F57A },
+ { 0x1F595, 0x1F596 },
+ { 0x1F5A4, 0x1F5A4 },
+ { 0x1F5FB, 0x1F64F },
+ { 0x1F680, 0x1F6C5 },
+ { 0x1F6CC, 0x1F6CC },
+ { 0x1F6D0, 0x1F6D2 },
+ { 0x1F6EB, 0x1F6EC },
+ { 0x1F6F4, 0x1F6F9 },
+ { 0x1F910, 0x1F93A },
+ { 0x1F93C, 0x1F93E },
+ { 0x1F940, 0x1F945 },
+ { 0x1F947, 0x1F970 },
+ { 0x1F973, 0x1F976 },
+ { 0x1F97A, 0x1F97A },
+ { 0x1F97C, 0x1F9A2 },
+ { 0x1F9B0, 0x1F9B9 },
+ { 0x1F9C0, 0x1F9C2 },
+ { 0x1F9D0, 0x1F9FF }
+
+#define PREDICATE(c) uc_is_property_emoji_presentation (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_extended_pictographic.c b/tests/unictype/test-pr_extended_pictographic.c
new file mode 100644
index 0000000000..e3efe80bba
--- /dev/null
+++ b/tests/unictype/test-pr_extended_pictographic.c
@@ -0,0 +1,99 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00A9, 0x00A9 },
+ { 0x00AE, 0x00AE },
+ { 0x203C, 0x203C },
+ { 0x2049, 0x2049 },
+ { 0x2122, 0x2122 },
+ { 0x2139, 0x2139 },
+ { 0x2194, 0x2199 },
+ { 0x21A9, 0x21AA },
+ { 0x231A, 0x231B },
+ { 0x2328, 0x2328 },
+ { 0x2388, 0x2388 },
+ { 0x23CF, 0x23CF },
+ { 0x23E9, 0x23F3 },
+ { 0x23F8, 0x23FA },
+ { 0x24C2, 0x24C2 },
+ { 0x25AA, 0x25AB },
+ { 0x25B6, 0x25B6 },
+ { 0x25C0, 0x25C0 },
+ { 0x25FB, 0x25FE },
+ { 0x2600, 0x2605 },
+ { 0x2607, 0x2612 },
+ { 0x2614, 0x2685 },
+ { 0x2690, 0x2705 },
+ { 0x2708, 0x2712 },
+ { 0x2714, 0x2714 },
+ { 0x2716, 0x2716 },
+ { 0x271D, 0x271D },
+ { 0x2721, 0x2721 },
+ { 0x2728, 0x2728 },
+ { 0x2733, 0x2734 },
+ { 0x2744, 0x2744 },
+ { 0x2747, 0x2747 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x2763, 0x2767 },
+ { 0x2795, 0x2797 },
+ { 0x27A1, 0x27A1 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x2934, 0x2935 },
+ { 0x2B05, 0x2B07 },
+ { 0x2B1B, 0x2B1C },
+ { 0x2B50, 0x2B50 },
+ { 0x2B55, 0x2B55 },
+ { 0x3030, 0x3030 },
+ { 0x303D, 0x303D },
+ { 0x3297, 0x3297 },
+ { 0x3299, 0x3299 },
+ { 0x1F000, 0x1F0FF },
+ { 0x1F10D, 0x1F10F },
+ { 0x1F12F, 0x1F12F },
+ { 0x1F16C, 0x1F171 },
+ { 0x1F17E, 0x1F17F },
+ { 0x1F18E, 0x1F18E },
+ { 0x1F191, 0x1F19A },
+ { 0x1F1AD, 0x1F1E5 },
+ { 0x1F201, 0x1F20F },
+ { 0x1F21A, 0x1F21A },
+ { 0x1F22F, 0x1F22F },
+ { 0x1F232, 0x1F23A },
+ { 0x1F23C, 0x1F23F },
+ { 0x1F249, 0x1F3FA },
+ { 0x1F400, 0x1F53D },
+ { 0x1F546, 0x1F64F },
+ { 0x1F680, 0x1F6FF },
+ { 0x1F774, 0x1F77F },
+ { 0x1F7D5, 0x1F7FF },
+ { 0x1F80C, 0x1F80F },
+ { 0x1F848, 0x1F84F },
+ { 0x1F85A, 0x1F85F },
+ { 0x1F888, 0x1F88F },
+ { 0x1F8AE, 0x1F8FF },
+ { 0x1F90C, 0x1F93A },
+ { 0x1F93C, 0x1F945 },
+ { 0x1F947, 0x1FFFD }
+
+#define PREDICATE(c) uc_is_property_extended_pictographic (c)
+#include "test-predicate-part2.h"