gucharmap r1686 - trunk/gucharmap



Author: chpe
Date: Fri Mar 21 10:56:18 2008
New Revision: 1686
URL: http://svn.gnome.org/viewvc/gucharmap?rev=1686&view=rev

Log:
Add unicode version info. Bug #347941, based on a patch by Petr Tomasek.


Added:
   trunk/gucharmap/unicode-versions.h
Modified:
   trunk/gucharmap/Makefile.am
   trunk/gucharmap/download-unicode-files.sh
   trunk/gucharmap/gen-guch-unicode-tables.pl
   trunk/gucharmap/gucharmap-charmap.c
   trunk/gucharmap/gucharmap-unicode-info.c
   trunk/gucharmap/gucharmap-unicode-info.h

Modified: trunk/gucharmap/Makefile.am
==============================================================================
--- trunk/gucharmap/Makefile.am	(original)
+++ trunk/gucharmap/Makefile.am	Fri Mar 21 10:56:18 2008
@@ -25,22 +25,40 @@
 lib_LTLIBRARIES = libgucharmap.la
 
 libgucharmap_la_SOURCES = \
-	gucharmap-block-chapters-model.c gucharmap-block-chapters-model.h \
-	gucharmap-chapters-model.c gucharmap-chapters-model.h \
-	gucharmap-chapters-view.c gucharmap-chapters-view.h \
-	gucharmap-charmap.c gucharmap-charmap.h \
-	gucharmap-chartable-accessible.c gucharmap-chartable-accessible.h \
-	gucharmap-chartable-cell-accessible.c gucharmap-chartable-cell-accessible.h \
-	gucharmap-chartable.c gucharmap-chartable.h gucharmap-chartable-private.h \
-	gucharmap-codepoint-list.c gucharmap-codepoint-list.h \
-	gucharmap-init.c gucharmap-init.h \
-	gucharmap-marshal.c gucharmap-marshal.h \
+	gucharmap-block-chapters-model.c \
+	gucharmap-block-chapters-model.h \
+	gucharmap-chapters-model.c \
+	gucharmap-chapters-model.h \
+	gucharmap-chapters-view.c \
+	gucharmap-chapters-view.h \
+	gucharmap-charmap.c \
+	gucharmap-charmap.h \
+	gucharmap-chartable-accessible.c \
+	gucharmap-chartable-accessible.h \
+	gucharmap-chartable-cell-accessible.c \
+	gucharmap-chartable-cell-accessible.h \
+	gucharmap-chartable.c \
+	gucharmap-chartable.h \
+	gucharmap-codepoint-list.c \
+	gucharmap-codepoint-list.h \
+	gucharmap-init.c \
+	gucharmap-init.h \
+	gucharmap-marshal.c \
+	gucharmap-marshal.h \
 	gucharmap-private.h \
-	gucharmap-script-chapters-model.c gucharmap-script-chapters-model.h \
-	gucharmap-script-codepoint-list.c gucharmap-script-codepoint-list.h \
-	gucharmap-unicode-info.c gucharmap-unicode-info.h \
-	unicode-blocks.h unicode-categories.h unicode-names.h \
-	unicode-nameslist.h unicode-scripts.h unicode-unihan.h \
+	gucharmap-script-chapters-model.c \
+	gucharmap-script-chapters-model.h \
+	gucharmap-script-codepoint-list.c \
+	gucharmap-script-codepoint-list.h \
+	gucharmap-unicode-info.c \
+	gucharmap-unicode-info.h \
+	unicode-blocks.h \
+	unicode-categories.h \
+	unicode-names.h \
+	unicode-nameslist.h \
+	unicode-scripts.h \
+	unicode-unihan.h \
+	unicode-versions.h \
 	$(NULL)
 
 libgucharmap_la_CPPFLAGS = \

Modified: trunk/gucharmap/download-unicode-files.sh
==============================================================================
--- trunk/gucharmap/download-unicode-files.sh	(original)
+++ trunk/gucharmap/download-unicode-files.sh	Fri Mar 21 10:56:18 2008
@@ -8,9 +8,10 @@
 #  - NamesList.txt
 #  - Blocks.txt
 #  - Scripts.txt
+#  - DerivedAge.txt
 #
 
-FILES='UnicodeData.txt Unihan.zip NamesList.txt Blocks.txt Scripts.txt'
+FILES='UnicodeData.txt Unihan.zip NamesList.txt Blocks.txt Scripts.txt DerivedAge.txt'
 
 mkdir -p ${1:-unicode} 
 

Modified: trunk/gucharmap/gen-guch-unicode-tables.pl
==============================================================================
--- trunk/gucharmap/gen-guch-unicode-tables.pl	(original)
+++ trunk/gucharmap/gen-guch-unicode-tables.pl	Fri Mar 21 10:56:18 2008
@@ -9,6 +9,7 @@
 #  - unicode-unihan.h
 #  - unicode-categories.h
 #  - unicode-scripts.h
+#  - unicode-versions.h
 #
 # usage: ./gen-guch-unicode-tables.pl UNICODE-VERSION DIRECTORY
 # where DIRECTORY contains UnicodeData.txt Unihan.zip NamesList.txt Blocks.txt Scripts.txt
@@ -26,6 +27,7 @@
 sub process_nameslist_txt ($);
 sub process_blocks_txt ($);
 sub process_scripts_txt ($);
+sub process_versions_txt ($);
 
 $| = 1;  # flush stdout buffer
 
@@ -44,7 +46,7 @@
 EOF
 }
 
-my ($unicodedata_txt, $unihan_zip, $nameslist_txt, $blocks_txt, $scripts_txt);
+my ($unicodedata_txt, $unihan_zip, $nameslist_txt, $blocks_txt, $scripts_txt, $versions_txt);
 
 my $v = $ARGV[0];
 my $d = $ARGV[1];
@@ -56,6 +58,7 @@
     $nameslist_txt = "$d/$f" if ($f =~ /NamesList.*\.txt/);
     $blocks_txt = "$d/$f" if ($f =~ /Blocks.*\.txt/);
     $scripts_txt = "$d/$f" if ($f =~ /Scripts.*\.txt/);
+    $versions_txt = "$d/$f" if ($f =~ /DerivedAge.*\.txt/);
 }
 
 defined $unicodedata_txt or die "Did not find $d/UnicodeData.txt";
@@ -63,11 +66,13 @@
 defined $nameslist_txt or die "Did not find $d/NamesList.txt";
 defined $blocks_txt or die "Did not find $d/Blocks.txt";
 defined $scripts_txt or die "Did not find $d/Scripts.txt";
+defined $versions_txt or die "Did not find $d/DerivedAge.txt";
 
 process_unicode_data_txt ($unicodedata_txt);
 process_nameslist_txt ($nameslist_txt);
 process_blocks_txt ($blocks_txt);
 process_scripts_txt ($scripts_txt);
+process_versions_txt ($versions_txt);
 process_unihan_zip ($unihan_zip);
 
 exit;
@@ -858,3 +863,102 @@
     close ($out);
     print " done.\n";
 }
+
+#------------------------#
+
+sub process_versions_txt ($)
+{
+    my ($versions_txt) = @_;
+
+    my %version_hash;
+    my %versions;
+
+    open (my $versions, $versions_txt) or die;
+    open (my $out, "> unicode-versions.h") or die;
+
+    print "processing $versions_txt...";
+
+    while (my $line = <$versions>)
+    {
+        my ($start, $end, $raw_version);
+
+        if ($line =~ /^([0-9A-F]+)\.\.([0-9A-F]+)\s+;\s+(\S+)/)
+        {
+            $start = hex ($1);
+            $end = hex ($2);
+            $raw_version = $3;
+        }
+        elsif ($line =~ /^([0-9A-F]+)\s+;\s+(\S+)/)
+        {
+            $start = hex ($1);
+            $end = $start;
+            $raw_version = $2;
+        }
+        else 
+        {
+            next;
+        }
+
+        my $version = $raw_version;
+        $version =~ tr/_/ /;
+        $version =~ s/(\w+)/\u\L$1/g;
+
+        $versions{$version} = 1;
+
+        $version =~ s/\./_/g;
+        $version_hash{$start} = { 'end' => $end, 'version' => $version };
+    }
+
+    close ($versions);
+
+    print $out "/* unicode-versions.h */\n";
+    print $out "/* THIS IS A GENERATED FILE. CHANGES WILL BE OVERWRITTEN. */\n";
+    print $out "/* Generated by $0 */\n";
+    print $out "/* Generated from UCD version $v */\n\n";
+
+    print $out "#ifndef UNICODE_VERSIONS_H\n";
+    print $out "#define UNICODE_VERSIONS_H\n\n";
+
+    print $out "#include <glib/gunicode.h>\n";
+    print $out "#include <glib/gi18n-lib.h>\n\n";
+
+    print $out "typedef struct {\n";
+    print $out "  gunichar start;\n";
+    print $out "  gunichar end;\n";
+    print $out "  GucharmapUnicodeVersion version;\n";
+    print $out "} UnicodeVersion;\n\n";
+
+    print $out "static const UnicodeVersion unicode_versions[] =\n";
+    print $out "{\n";
+    for my $start (sort { $a <=> $b } keys %version_hash)
+    {
+        printf $out (qq/  { 0x%04X, 0x%04X, GUCHARMAP_UNICODE_VERSION_\%s },\n/,
+                     $start, $version_hash{$start}->{'end'}, $version_hash{$start}->{'version'});
+    }
+    print $out "};\n\n";
+
+    print $out "static const gchar unicode_version_strings[] =\n";
+    my $offset = 0;
+    my %version_offsets;
+    for my $version (sort keys %versions)
+    {
+        printf $out (qq/  "\%s\\0"\n/, $version);
+	$version_offsets{$version} = $offset;
+	$offset += length($version) + 1;
+    }
+    print $out "  ;\n\n";
+    undef $offset;
+
+    print $out "static const guint16 unicode_version_string_offsets[] =\n";
+    print $out "{\n";
+    for my $version (sort keys %versions)
+    {
+        printf $out (qq/  \%d,\n/, $version_offsets{$version});
+    }
+    print $out "};\n\n";
+
+    print $out "#endif  /* #ifndef UNICODE_VERSIONS_H */\n";
+
+    close ($out);
+    print " done.\n";
+}

Modified: trunk/gucharmap/gucharmap-charmap.c
==============================================================================
--- trunk/gucharmap/gucharmap-charmap.c	(original)
+++ trunk/gucharmap/gucharmap-charmap.c	Fri Mar 21 10:56:18 2008
@@ -422,6 +422,7 @@
   const gchar **csarr;
   gunichar *ucs;
   gunichar2 *utf16;
+  GucharmapUnicodeVersion version;
 
   buffer = gtk_text_view_get_buffer (charmap->details_view);
   gtk_text_buffer_set_text (buffer, "", 0);
@@ -449,6 +450,13 @@
 
   insert_heading (charmap, buffer, &iter, _("General Character Properties"));
 
+  /* Unicode version */
+  version = gucharmap_get_unicode_version (uc);
+  if (version)
+    insert_vanilla_detail (charmap, buffer, &iter,
+                           _("In Unicode since:"),
+                           gucharmap_unicode_version_to_string (version));
+
   /* character category */
   insert_vanilla_detail (charmap, buffer, &iter, _("Unicode category:"),
                          gucharmap_get_unicode_category_name (uc));

Modified: trunk/gucharmap/gucharmap-unicode-info.c
==============================================================================
--- trunk/gucharmap/gucharmap-unicode-info.c	(original)
+++ trunk/gucharmap/gucharmap-unicode-info.c	Fri Mar 21 10:56:18 2008
@@ -27,6 +27,7 @@
 #include "unicode-blocks.h"
 #include "unicode-nameslist.h"
 #include "unicode-categories.h"
+#include "unicode-versions.h"
 #if ENABLE_UNIHAN
 # include "unicode-unihan.h"
 #endif
@@ -178,6 +179,41 @@
   return G_N_ELEMENTS (unicode_names);
 }
 
+/* does a binary search on unicode_versions */
+GucharmapUnicodeVersion
+gucharmap_get_unicode_version (gunichar uc)
+{
+  gint min = 0;
+  gint mid;
+  gint max = G_N_ELEMENTS (unicode_versions) - 1;
+
+  if (uc < unicode_versions[0].start || uc > unicode_versions[max].end)
+    return GUCHARMAP_UNICODE_VERSION_UNASSIGNED;;
+
+  while (max >= min)
+    {
+      mid = (min + max) / 2;
+
+      if (uc > unicode_versions[mid].end)
+        min = mid + 1;
+      else if (uc < unicode_versions[mid].start)
+        max = mid - 1;
+      else if ((uc >= unicode_versions[mid].start) && (uc <= unicode_versions[mid].end))
+        return unicode_versions[mid].version;
+    }
+
+  return GUCHARMAP_UNICODE_VERSION_UNASSIGNED;
+}
+
+G_CONST_RETURN gchar *
+gucharmap_unicode_version_to_string (GucharmapUnicodeVersion version)
+{
+  g_return_val_if_fail (version >= GUCHARMAP_UNICODE_VERSION_UNASSIGNED &&
+                        version <= GUCHARMAP_UNICODE_VERSION_LATEST, NULL);
+
+  return unicode_version_strings + unicode_version_string_offsets[version];
+}
+
 #if ENABLE_UNIHAN
 
 gint

Modified: trunk/gucharmap/gucharmap-unicode-info.h
==============================================================================
--- trunk/gucharmap/gucharmap-unicode-info.h	(original)
+++ trunk/gucharmap/gucharmap-unicode-info.h	Fri Mar 21 10:56:18 2008
@@ -27,10 +27,25 @@
 
 G_BEGIN_DECLS
 
+typedef enum {
+  GUCHARMAP_UNICODE_VERSION_UNASSIGNED,
+  GUCHARMAP_UNICODE_VERSION_1_1,
+  GUCHARMAP_UNICODE_VERSION_2_0,
+  GUCHARMAP_UNICODE_VERSION_2_1,
+  GUCHARMAP_UNICODE_VERSION_3_0,
+  GUCHARMAP_UNICODE_VERSION_3_1,
+  GUCHARMAP_UNICODE_VERSION_3_2,
+  GUCHARMAP_UNICODE_VERSION_4_0,
+  GUCHARMAP_UNICODE_VERSION_4_1,
+  GUCHARMAP_UNICODE_VERSION_5_0,
+  GUCHARMAP_UNICODE_VERSION_LATEST = GUCHARMAP_UNICODE_VERSION_5_0 /* private, will move forward with each revision */
+} GucharmapUnicodeVersion;
+
 /* return values are read-only */
 G_CONST_RETURN gchar *  gucharmap_get_unicode_name                (gunichar uc);
 G_CONST_RETURN gchar *  gucharmap_get_unicode_data_name           (gunichar uc);
 gint                    gucharmap_get_unicode_data_name_count     (void);
+GucharmapUnicodeVersion gucharmap_get_unicode_version             (gunichar wc);
 G_CONST_RETURN gchar *  gucharmap_get_unicode_category_name       (gunichar uc);
 gint                    gucharmap_get_unihan_count                (void);
 G_CONST_RETURN gchar *  gucharmap_get_unicode_kDefinition         (gunichar uc);
@@ -58,6 +73,8 @@
 G_CONST_RETURN gchar ** gucharmap_unicode_list_scripts            (void);
 G_CONST_RETURN gchar *  gucharmap_unicode_get_script_for_char     (gunichar wc);
 
+G_CONST_RETURN gchar *  gucharmap_unicode_version_to_string       (GucharmapUnicodeVersion version);
+
 /* doesn't really belong here, but no better place was available */
 gunichar     gucharmap_unicode_get_locale_character (void);
 

Added: trunk/gucharmap/unicode-versions.h
==============================================================================
--- (empty file)
+++ trunk/gucharmap/unicode-versions.h	Fri Mar 21 10:56:18 2008
@@ -0,0 +1,801 @@
+/* unicode-versions.h */
+/* THIS IS A GENERATED FILE. CHANGES WILL BE OVERWRITTEN. */
+/* Generated by ./gen-guch-unicode-tables.pl */
+/* Generated from UCD version 5.0 */
+
+#ifndef UNICODE_VERSIONS_H
+#define UNICODE_VERSIONS_H
+
+#include <glib/gunicode.h>
+#include <glib/gi18n-lib.h>
+
+typedef struct {
+  gunichar start;
+  gunichar end;
+  GucharmapUnicodeVersion version;
+} UnicodeVersion;
+
+static const UnicodeVersion unicode_versions[] =
+{
+  { 0x0000, 0x001F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0020, 0x007E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x007F, 0x009F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x00A0, 0x00AC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x00AD, 0x00AD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x00AE, 0x01F5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x01F6, 0x01F9, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x01FA, 0x0217, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0218, 0x021F, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0220, 0x0220, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x0221, 0x0221, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0222, 0x0233, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0234, 0x0236, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0237, 0x0241, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0242, 0x024F, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0250, 0x02A8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x02A9, 0x02AD, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x02AE, 0x02AF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x02B0, 0x02DE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x02DF, 0x02DF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x02E0, 0x02E9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x02EA, 0x02EE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x02EF, 0x02FF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0300, 0x0345, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0346, 0x034E, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x034F, 0x034F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x0350, 0x0357, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0358, 0x035C, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x035D, 0x035F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0360, 0x0361, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0362, 0x0362, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0363, 0x036F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x0374, 0x0375, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x037A, 0x037A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x037B, 0x037D, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x037E, 0x037E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0384, 0x038A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x038C, 0x038C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x038E, 0x03A1, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03A3, 0x03CE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03D0, 0x03D6, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03D7, 0x03D7, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x03D8, 0x03D9, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x03DA, 0x03DA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03DB, 0x03DB, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x03DC, 0x03DC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03DD, 0x03DD, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x03DE, 0x03DE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03DF, 0x03DF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x03E0, 0x03E0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03E1, 0x03E1, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x03E2, 0x03F3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x03F4, 0x03F5, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x03F6, 0x03F6, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x03F7, 0x03FB, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x03FC, 0x03FF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0400, 0x0400, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0401, 0x040C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x040D, 0x040D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x040E, 0x044F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0450, 0x0450, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0451, 0x045C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x045D, 0x045D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x045E, 0x0486, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0488, 0x0489, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x048A, 0x048B, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x048C, 0x048F, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0490, 0x04C4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04C5, 0x04C6, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x04C7, 0x04C8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04C9, 0x04CA, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x04CB, 0x04CC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04CD, 0x04CE, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x04CF, 0x04CF, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x04D0, 0x04EB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04EC, 0x04ED, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x04EE, 0x04F5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04F6, 0x04F7, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x04F8, 0x04F9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x04FA, 0x04FF, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0500, 0x050F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x0510, 0x0513, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0531, 0x0556, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0559, 0x055F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0561, 0x0587, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0589, 0x0589, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x058A, 0x058A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0591, 0x05A1, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x05A2, 0x05A2, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x05A3, 0x05AF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x05B0, 0x05B9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x05BA, 0x05BA, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x05BB, 0x05C3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x05C4, 0x05C4, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x05C5, 0x05C7, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x05D0, 0x05EA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x05F0, 0x05F4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0600, 0x0603, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x060B, 0x060B, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x060C, 0x060C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x060D, 0x0615, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x061B, 0x061B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x061E, 0x061E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x061F, 0x061F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0621, 0x063A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0640, 0x0652, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0653, 0x0655, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0656, 0x0658, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0659, 0x065E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0660, 0x066D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x066E, 0x066F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x0670, 0x06B7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06B8, 0x06B9, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x06BA, 0x06BE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06BF, 0x06BF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x06C0, 0x06CE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06CF, 0x06CF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x06D0, 0x06DC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06DD, 0x06DD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06DE, 0x06ED, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06EE, 0x06EF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x06F0, 0x06F9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x06FA, 0x06FE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x06FF, 0x06FF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0700, 0x070D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x070F, 0x070F, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0710, 0x072C, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x072D, 0x072F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0730, 0x074A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x074D, 0x074F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0750, 0x076D, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0780, 0x07B0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x07B1, 0x07B1, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x07C0, 0x07FA, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0901, 0x0903, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0904, 0x0904, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0905, 0x0939, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x093C, 0x094D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0950, 0x0954, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0958, 0x0970, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x097B, 0x097C, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x097D, 0x097D, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x097E, 0x097F, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0981, 0x0983, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0985, 0x098C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x098F, 0x0990, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0993, 0x09A8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09AA, 0x09B0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09B2, 0x09B2, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09B6, 0x09B9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09BC, 0x09BC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09BD, 0x09BD, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x09BE, 0x09C4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09C7, 0x09C8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09CB, 0x09CD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09CE, 0x09CE, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x09D7, 0x09D7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09DC, 0x09DD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09DF, 0x09E3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x09E6, 0x09FA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A01, 0x0A01, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0A02, 0x0A02, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A03, 0x0A03, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0A05, 0x0A0A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A0F, 0x0A10, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A13, 0x0A28, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A2A, 0x0A30, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A32, 0x0A33, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A35, 0x0A36, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A38, 0x0A39, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A3C, 0x0A3C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A3E, 0x0A42, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A47, 0x0A48, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A4B, 0x0A4D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A59, 0x0A5C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A5E, 0x0A5E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A66, 0x0A74, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A81, 0x0A83, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A85, 0x0A8B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A8C, 0x0A8C, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0A8D, 0x0A8D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A8F, 0x0A91, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0A93, 0x0AA8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AAA, 0x0AB0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AB2, 0x0AB3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AB5, 0x0AB9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0ABC, 0x0AC5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AC7, 0x0AC9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0ACB, 0x0ACD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AD0, 0x0AD0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AE0, 0x0AE0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AE1, 0x0AE3, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0AE6, 0x0AEF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0AF1, 0x0AF1, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0B01, 0x0B03, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B05, 0x0B0C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B0F, 0x0B10, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B13, 0x0B28, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B2A, 0x0B30, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B32, 0x0B33, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B35, 0x0B35, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0B36, 0x0B39, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B3C, 0x0B43, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B47, 0x0B48, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B4B, 0x0B4D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B56, 0x0B57, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B5C, 0x0B5D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B5F, 0x0B61, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B66, 0x0B70, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B71, 0x0B71, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0B82, 0x0B83, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B85, 0x0B8A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B8E, 0x0B90, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B92, 0x0B95, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B99, 0x0B9A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B9C, 0x0B9C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0B9E, 0x0B9F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BA3, 0x0BA4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BA8, 0x0BAA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BAE, 0x0BB5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BB6, 0x0BB6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0BB7, 0x0BB9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BBE, 0x0BC2, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BC6, 0x0BC8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BCA, 0x0BCD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BD7, 0x0BD7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BE6, 0x0BE6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x0BE7, 0x0BF2, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0BF3, 0x0BFA, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0C01, 0x0C03, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C05, 0x0C0C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C0E, 0x0C10, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C12, 0x0C28, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C2A, 0x0C33, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C35, 0x0C39, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C3E, 0x0C44, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C46, 0x0C48, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C4A, 0x0C4D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C55, 0x0C56, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C60, 0x0C61, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C66, 0x0C6F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C82, 0x0C83, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C85, 0x0C8C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C8E, 0x0C90, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0C92, 0x0CA8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CAA, 0x0CB3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CB5, 0x0CB9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CBC, 0x0CBD, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x0CBE, 0x0CC4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CC6, 0x0CC8, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CCA, 0x0CCD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CD5, 0x0CD6, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CDE, 0x0CDE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CE0, 0x0CE1, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CE2, 0x0CE3, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0CE6, 0x0CEF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0CF1, 0x0CF2, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x0D02, 0x0D03, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D05, 0x0D0C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D0E, 0x0D10, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D12, 0x0D28, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D2A, 0x0D39, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D3E, 0x0D43, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D46, 0x0D48, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D4A, 0x0D4D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D57, 0x0D57, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D60, 0x0D61, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D66, 0x0D6F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0D82, 0x0D83, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0D85, 0x0D96, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0D9A, 0x0DB1, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DB3, 0x0DBB, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DBD, 0x0DBD, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DC0, 0x0DC6, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DCA, 0x0DCA, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DCF, 0x0DD4, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DD6, 0x0DD6, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DD8, 0x0DDF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0DF2, 0x0DF4, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0E01, 0x0E3A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E3F, 0x0E5B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E81, 0x0E82, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E84, 0x0E84, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E87, 0x0E88, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E8A, 0x0E8A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E8D, 0x0E8D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E94, 0x0E97, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0E99, 0x0E9F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EA1, 0x0EA3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EA5, 0x0EA5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EA7, 0x0EA7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EAA, 0x0EAB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EAD, 0x0EB9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EBB, 0x0EBD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EC0, 0x0EC4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EC6, 0x0EC6, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EC8, 0x0ECD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0ED0, 0x0ED9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0EDC, 0x0EDD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x0F00, 0x0F47, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0F49, 0x0F69, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0F6A, 0x0F6A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0F71, 0x0F8B, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0F90, 0x0F95, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0F96, 0x0F96, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0F97, 0x0F97, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0F99, 0x0FAD, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0FAE, 0x0FB0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0FB1, 0x0FB7, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0FB8, 0x0FB8, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0FB9, 0x0FB9, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x0FBA, 0x0FBC, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0FBE, 0x0FCC, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0FCF, 0x0FCF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x0FD0, 0x0FD1, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1000, 0x1021, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1023, 0x1027, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1029, 0x102A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x102C, 0x1032, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1036, 0x1039, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1040, 0x1059, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x10A0, 0x10C5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x10D0, 0x10F6, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x10F7, 0x10F8, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x10F9, 0x10FA, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10FB, 0x10FB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x10FC, 0x10FC, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1100, 0x1159, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x115F, 0x11A2, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x11A8, 0x11F9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1200, 0x1206, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1207, 0x1207, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1208, 0x1246, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1247, 0x1247, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1248, 0x1248, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x124A, 0x124D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1250, 0x1256, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1258, 0x1258, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x125A, 0x125D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1260, 0x1286, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1287, 0x1287, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1288, 0x1288, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x128A, 0x128D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1290, 0x12AE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12AF, 0x12AF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x12B0, 0x12B0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12B2, 0x12B5, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12B8, 0x12BE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12C0, 0x12C0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12C2, 0x12C5, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12C8, 0x12CE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12CF, 0x12CF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x12D0, 0x12D6, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12D8, 0x12EE, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x12EF, 0x12EF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x12F0, 0x130E, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x130F, 0x130F, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1310, 0x1310, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1312, 0x1315, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1318, 0x131E, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x131F, 0x131F, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1320, 0x1346, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1347, 0x1347, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1348, 0x135A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x135F, 0x1360, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1361, 0x137C, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1380, 0x1399, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x13A0, 0x13F4, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1401, 0x1676, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1680, 0x169C, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x16A0, 0x16F0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1700, 0x170C, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x170E, 0x1714, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x1720, 0x1736, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x1740, 0x1753, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x1760, 0x176C, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x176E, 0x1770, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x1772, 0x1773, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x1780, 0x17B3, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x17B4, 0x17B5, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x17B6, 0x17DC, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x17DD, 0x17DD, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x17E0, 0x17E9, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x17F0, 0x17F9, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1800, 0x180E, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1810, 0x1819, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1820, 0x1877, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1880, 0x18A9, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x1900, 0x191C, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1920, 0x192B, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1930, 0x193B, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1940, 0x1940, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1944, 0x196D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1970, 0x1974, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1980, 0x19A9, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x19B0, 0x19C9, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x19D0, 0x19D9, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x19DE, 0x19DF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x19E0, 0x19FF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1A00, 0x1A1B, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1A1E, 0x1A1F, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1B00, 0x1B4B, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1B50, 0x1B7C, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1D00, 0x1D6B, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1D6C, 0x1DC3, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1DC4, 0x1DCA, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1DFE, 0x1DFF, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1E00, 0x1E9A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1E9B, 0x1E9B, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x1EA0, 0x1EF9, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F00, 0x1F15, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F18, 0x1F1D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F20, 0x1F45, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F48, 0x1F4D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F50, 0x1F57, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F59, 0x1F59, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F5B, 0x1F5B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F5D, 0x1F5D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F5F, 0x1F7D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1F80, 0x1FB4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FB6, 0x1FC4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FC6, 0x1FD3, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FD6, 0x1FDB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FDD, 0x1FEF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FF2, 0x1FF4, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x1FF6, 0x1FFE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2000, 0x200A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x200B, 0x200F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2010, 0x2027, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2028, 0x202E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x202F, 0x202F, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2030, 0x2046, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2047, 0x2047, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2048, 0x204D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x204E, 0x2052, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2053, 0x2054, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x2055, 0x2056, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2057, 0x2057, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2058, 0x205E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x205F, 0x205F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2060, 0x2063, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x206A, 0x206F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2070, 0x2070, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2071, 0x2071, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2074, 0x208E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2090, 0x2094, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x20A0, 0x20AA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x20AB, 0x20AB, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x20AC, 0x20AC, GUCHARMAP_UNICODE_VERSION_2_1 },
+  { 0x20AD, 0x20AF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x20B0, 0x20B1, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x20B2, 0x20B5, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x20D0, 0x20E1, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x20E2, 0x20E3, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x20E4, 0x20EA, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x20EB, 0x20EB, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x20EC, 0x20EF, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2100, 0x2138, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2139, 0x213A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x213B, 0x213B, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x213C, 0x213C, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x213D, 0x214B, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x214C, 0x214C, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x214D, 0x214E, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2153, 0x2182, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2183, 0x2183, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2184, 0x2184, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2190, 0x21EA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x21EB, 0x21F3, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x21F4, 0x21FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2200, 0x22F1, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x22F2, 0x22FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2300, 0x2300, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2301, 0x2301, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2302, 0x237A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x237B, 0x237B, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x237C, 0x237C, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x237D, 0x239A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x239B, 0x23CE, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x23CF, 0x23D0, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x23D1, 0x23DB, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x23DC, 0x23E7, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2400, 0x2424, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2425, 0x2426, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2440, 0x244A, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2460, 0x24EA, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x24EB, 0x24FE, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x24FF, 0x24FF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x2500, 0x2595, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2596, 0x259F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x25A0, 0x25EF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x25F0, 0x25F7, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x25F8, 0x25FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2600, 0x2613, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2614, 0x2615, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x2616, 0x2617, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2618, 0x2618, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2619, 0x2619, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x261A, 0x266F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2670, 0x2671, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2672, 0x267D, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x267E, 0x267F, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2680, 0x2689, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x268A, 0x2691, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x2692, 0x269C, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x26A0, 0x26A1, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x26A2, 0x26B1, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x26B2, 0x26B2, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2701, 0x2704, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2706, 0x2709, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x270C, 0x2727, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2729, 0x274B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x274D, 0x274D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x274F, 0x2752, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2756, 0x2756, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2758, 0x275E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2761, 0x2767, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2768, 0x2775, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2776, 0x2794, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x2798, 0x27AF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x27B1, 0x27BE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x27C0, 0x27C6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x27C7, 0x27CA, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x27D0, 0x27EB, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x27F0, 0x27FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2800, 0x28FF, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2900, 0x2AFF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x2B00, 0x2B0D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x2B0E, 0x2B13, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2B14, 0x2B1A, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2B20, 0x2B23, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2C00, 0x2C2E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2C30, 0x2C5E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2C60, 0x2C6C, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2C74, 0x2C77, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x2C80, 0x2CEA, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2CF9, 0x2D25, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2D30, 0x2D65, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2D6F, 0x2D6F, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2D80, 0x2D96, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DA0, 0x2DA6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DA8, 0x2DAE, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DB0, 0x2DB6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DB8, 0x2DBE, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DC0, 0x2DC6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DC8, 0x2DCE, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DD0, 0x2DD6, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2DD8, 0x2DDE, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2E00, 0x2E17, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2E1C, 0x2E1D, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x2E80, 0x2E99, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2E9B, 0x2EF3, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2F00, 0x2FD5, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x2FF0, 0x2FFB, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x3000, 0x3037, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3038, 0x303A, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x303B, 0x303D, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x303E, 0x303E, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x303F, 0x303F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3041, 0x3094, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3095, 0x3096, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x3099, 0x309E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x309F, 0x30A0, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x30A1, 0x30FE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x30FF, 0x30FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x3105, 0x312C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3131, 0x318E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3190, 0x319F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x31A0, 0x31B7, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x31C0, 0x31CF, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x31F0, 0x31FF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x3200, 0x321C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x321D, 0x321E, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x3220, 0x3243, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3250, 0x3250, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x3251, 0x325F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x3260, 0x327B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x327C, 0x327D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x327E, 0x327E, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x327F, 0x32B0, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x32B1, 0x32BF, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0x32C0, 0x32CB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x32CC, 0x32CF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x32D0, 0x32FE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3300, 0x3376, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x3377, 0x337A, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x337B, 0x33DD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x33DE, 0x33DF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x33E0, 0x33FE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x33FF, 0x33FF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x3400, 0x4DB5, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0x4DC0, 0x4DFF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x4E00, 0x9FA5, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x9FA6, 0x9FBB, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0xA000, 0xA48C, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA490, 0xA4A1, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA4A2, 0xA4A3, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xA4A4, 0xA4B3, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA4B4, 0xA4B4, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xA4B5, 0xA4C0, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA4C1, 0xA4C1, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xA4C2, 0xA4C4, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA4C5, 0xA4C5, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xA4C6, 0xA4C6, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xA700, 0xA716, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0xA717, 0xA71A, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0xA720, 0xA721, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0xA800, 0xA82B, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0xA840, 0xA877, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0xAC00, 0xD7A3, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xD800, 0xDFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xE000, 0xF8FF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xF900, 0xFA2D, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFA30, 0xFA6A, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFA70, 0xFAD9, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0xFB00, 0xFB06, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB13, 0xFB17, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB1D, 0xFB1D, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xFB1E, 0xFB36, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB38, 0xFB3C, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB3E, 0xFB3E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB40, 0xFB41, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB43, 0xFB44, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFB46, 0xFBB1, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFBD3, 0xFD3F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFD50, 0xFD8F, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFD92, 0xFDC7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFDD0, 0xFDEF, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0xFDF0, 0xFDFB, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFDFC, 0xFDFC, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFDFD, 0xFDFD, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0xFE00, 0xFE0F, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFE10, 0xFE19, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0xFE20, 0xFE23, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE30, 0xFE44, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE45, 0xFE46, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFE47, 0xFE48, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0xFE49, 0xFE52, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE54, 0xFE66, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE68, 0xFE6B, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE70, 0xFE72, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE73, 0xFE73, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFE74, 0xFE74, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFE76, 0xFEFC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFEFF, 0xFEFF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFF01, 0xFF5E, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFF5F, 0xFF60, GUCHARMAP_UNICODE_VERSION_3_2 },
+  { 0xFF61, 0xFFBE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFC2, 0xFFC7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFCA, 0xFFCF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFD2, 0xFFD7, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFDA, 0xFFDC, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFE0, 0xFFE6, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFE8, 0xFFEE, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFF9, 0xFFFB, GUCHARMAP_UNICODE_VERSION_3_0 },
+  { 0xFFFC, 0xFFFC, GUCHARMAP_UNICODE_VERSION_2_1 },
+  { 0xFFFD, 0xFFFD, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0xFFFE, 0xFFFF, GUCHARMAP_UNICODE_VERSION_1_1 },
+  { 0x10000, 0x1000B, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1000D, 0x10026, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10028, 0x1003A, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1003C, 0x1003D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1003F, 0x1004D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10050, 0x1005D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10080, 0x100FA, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10100, 0x10102, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10107, 0x10133, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10137, 0x1013F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10140, 0x1018A, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10300, 0x1031E, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x10320, 0x10323, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x10330, 0x1034A, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x10380, 0x1039D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1039F, 0x1039F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x103A0, 0x103C3, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x103C8, 0x103D5, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10400, 0x10425, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x10426, 0x10427, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10428, 0x1044D, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1044E, 0x1049D, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x104A0, 0x104A9, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10800, 0x10805, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10808, 0x10808, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1080A, 0x10835, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10837, 0x10838, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1083C, 0x1083C, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1083F, 0x1083F, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x10900, 0x10919, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1091F, 0x1091F, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x10A00, 0x10A03, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A05, 0x10A06, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A0C, 0x10A13, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A15, 0x10A17, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A19, 0x10A33, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A38, 0x10A3A, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A3F, 0x10A47, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x10A50, 0x10A58, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x12000, 0x1236E, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x12400, 0x12462, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x12470, 0x12473, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1D000, 0x1D0F5, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D100, 0x1D126, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D12A, 0x1D172, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D173, 0x1D17A, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D17B, 0x1D1DD, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D200, 0x1D245, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1D300, 0x1D356, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1D360, 0x1D371, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1D400, 0x1D454, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D456, 0x1D49C, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D49E, 0x1D49F, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4A2, 0x1D4A2, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4A5, 0x1D4A6, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4A9, 0x1D4AC, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4AE, 0x1D4B9, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4BB, 0x1D4BB, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4BD, 0x1D4C0, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4C1, 0x1D4C1, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0x1D4C2, 0x1D4C3, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D4C5, 0x1D505, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D507, 0x1D50A, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D50D, 0x1D514, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D516, 0x1D51C, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D51E, 0x1D539, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D53B, 0x1D53E, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D540, 0x1D544, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D546, 0x1D546, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D54A, 0x1D550, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D552, 0x1D6A3, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D6A4, 0x1D6A5, GUCHARMAP_UNICODE_VERSION_4_1 },
+  { 0x1D6A8, 0x1D7C9, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1D7CA, 0x1D7CB, GUCHARMAP_UNICODE_VERSION_5_0 },
+  { 0x1D7CE, 0x1D7FF, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x1FFFE, 0x1FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x20000, 0x2A6D6, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x2F800, 0x2FA1D, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0x2FFFE, 0x2FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x3FFFE, 0x3FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x4FFFE, 0x4FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x5FFFE, 0x5FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x6FFFE, 0x6FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x7FFFE, 0x7FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x8FFFE, 0x8FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0x9FFFE, 0x9FFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xAFFFE, 0xAFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xBFFFE, 0xBFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xCFFFE, 0xCFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xDFFFE, 0xDFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xE0001, 0xE0001, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0xE0020, 0xE007F, GUCHARMAP_UNICODE_VERSION_3_1 },
+  { 0xE0100, 0xE01EF, GUCHARMAP_UNICODE_VERSION_4_0 },
+  { 0xEFFFE, 0xEFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xF0000, 0xFFFFD, GUCHARMAP_UNICODE_VERSION_2_0 },
+  { 0xFFFFE, 0xFFFFF, GUCHARMAP_UNICODE_VERSION_2_0 },
+};
+
+static const gchar unicode_version_strings[] =
+  "1.1\0"
+  "2.0\0"
+  "2.1\0"
+  "3.0\0"
+  "3.1\0"
+  "3.2\0"
+  "4.0\0"
+  "4.1\0"
+  "5.0\0"
+  ;
+
+static const guint16 unicode_version_string_offsets[] =
+{
+  0,
+  4,
+  8,
+  12,
+  16,
+  20,
+  24,
+  28,
+  32,
+};
+
+#endif  /* #ifndef UNICODE_VERSIONS_H */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]