]> Savannah Git Hosting - gnulib.git/commitdiff
unictype: Add Emoji properties from Unicode 11.0.0.
authorBruno Haible <bruno@clisp.org>
Thu, 30 Dec 2021 10:43:09 +0000 (11:43 +0100)
committerBruno Haible <bruno@clisp.org>
Thu, 30 Dec 2021 10:43:09 +0000 (11:43 +0100)
* 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.

34 files changed:
ChangeLog
lib/gen-uni-tables.c
lib/unictype.in.h
lib/unictype/pr_emoji.c [new file with mode: 0644]
lib/unictype/pr_emoji.h [new file with mode: 0644]
lib/unictype/pr_emoji_component.c [new file with mode: 0644]
lib/unictype/pr_emoji_component.h [new file with mode: 0644]
lib/unictype/pr_emoji_modifier.c [new file with mode: 0644]
lib/unictype/pr_emoji_modifier.h [new file with mode: 0644]
lib/unictype/pr_emoji_modifier_base.c [new file with mode: 0644]
lib/unictype/pr_emoji_modifier_base.h [new file with mode: 0644]
lib/unictype/pr_emoji_presentation.c [new file with mode: 0644]
lib/unictype/pr_emoji_presentation.h [new file with mode: 0644]
lib/unictype/pr_extended_pictographic.c [new file with mode: 0644]
lib/unictype/pr_extended_pictographic.h [new file with mode: 0644]
modules/unictype/property-all
modules/unictype/property-emoji [new file with mode: 0644]
modules/unictype/property-emoji-component [new file with mode: 0644]
modules/unictype/property-emoji-component-tests [new file with mode: 0644]
modules/unictype/property-emoji-modifier [new file with mode: 0644]
modules/unictype/property-emoji-modifier-base [new file with mode: 0644]
modules/unictype/property-emoji-modifier-base-tests [new file with mode: 0644]
modules/unictype/property-emoji-modifier-tests [new file with mode: 0644]
modules/unictype/property-emoji-presentation [new file with mode: 0644]
modules/unictype/property-emoji-presentation-tests [new file with mode: 0644]
modules/unictype/property-emoji-tests [new file with mode: 0644]
modules/unictype/property-extended-pictographic [new file with mode: 0644]
modules/unictype/property-extended-pictographic-tests [new file with mode: 0644]
tests/unictype/test-pr_emoji.c [new file with mode: 0644]
tests/unictype/test-pr_emoji_component.c [new file with mode: 0644]
tests/unictype/test-pr_emoji_modifier.c [new file with mode: 0644]
tests/unictype/test-pr_emoji_modifier_base.c [new file with mode: 0644]
tests/unictype/test-pr_emoji_presentation.c [new file with mode: 0644]
tests/unictype/test-pr_extended_pictographic.c [new file with mode: 0644]

index eeaeabc577e0612babcf37bc161d1f8b0fa882f4..9466a874276e48330db4b24393c926f095aed6cb 100644 (file)
--- 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.
index 85ad5c439e121c6c5ba7b831729c935502f17a95..a98da8b1647cc5b93acfbfc5261851fe4fa5aebf 100644 (file)
@@ -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 \\
index 89d11bebcbd89119519a9f7d4cdc8fab5f7a2a39..cb4902b5f6d3da9a6f783a77096bee0252196f3a 100644 (file)
@@ -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 (file)
index 0000000..eb08236
--- /dev/null
@@ -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 (file)
index 0000000..1698c99
--- /dev/null
@@ -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 (file)
index 0000000..a4e4715
--- /dev/null
@@ -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 (file)
index 0000000..016beba
--- /dev/null
@@ -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 (file)
index 0000000..69febd9
--- /dev/null
@@ -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 (file)
index 0000000..f4ece8c
--- /dev/null
@@ -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 (file)
index 0000000..8e3d296
--- /dev/null
@@ -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 (file)
index 0000000..dbf785e
--- /dev/null
@@ -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 (file)
index 0000000..84b1c91
--- /dev/null
@@ -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 (file)
index 0000000..f6675e4
--- /dev/null
@@ -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 (file)
index 0000000..960fb45
--- /dev/null
@@ -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 (file)
index 0000000..fc059f1
--- /dev/null
@@ -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
+  }
+};
index facfdd24f449a9e931acaba06c6a26bd33625ae5..73bea9dcb20f01c5d374b691c47074d4e895b04c 100644 (file)
@@ -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 (file)
index 0000000..022f167
--- /dev/null
@@ -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 (file)
index 0000000..df067e3
--- /dev/null
@@ -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 (file)
index 0000000..125439b
--- /dev/null
@@ -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 (file)
index 0000000..9d358e7
--- /dev/null
@@ -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 (file)
index 0000000..f16556b
--- /dev/null
@@ -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 (file)
index 0000000..4ed0ac0
--- /dev/null
@@ -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 (file)
index 0000000..5a3c064
--- /dev/null
@@ -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 (file)
index 0000000..f3259ea
--- /dev/null
@@ -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 (file)
index 0000000..dca080d
--- /dev/null
@@ -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 (file)
index 0000000..369db55
--- /dev/null
@@ -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 (file)
index 0000000..96ce308
--- /dev/null
@@ -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 (file)
index 0000000..731257a
--- /dev/null
@@ -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 (file)
index 0000000..a4fa3b8
--- /dev/null
@@ -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 (file)
index 0000000..45d3862
--- /dev/null
@@ -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 (file)
index 0000000..6722ef1
--- /dev/null
@@ -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 (file)
index 0000000..ea70851
--- /dev/null
@@ -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 (file)
index 0000000..3e1998f
--- /dev/null
@@ -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 (file)
index 0000000..e3efe80
--- /dev/null
@@ -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"