summaryrefslogtreecommitdiffstats
path: root/vendor/unicode-script
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/unicode-script
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/unicode-script')
-rw-r--r--vendor/unicode-script/.cargo-checksum.json1
-rw-r--r--vendor/unicode-script/Cargo.toml42
-rw-r--r--vendor/unicode-script/README.md7
-rw-r--r--vendor/unicode-script/scripts/unicode.py402
-rw-r--r--vendor/unicode-script/src/lib.rs560
-rw-r--r--vendor/unicode-script/src/tables.rs3111
6 files changed, 4123 insertions, 0 deletions
diff --git a/vendor/unicode-script/.cargo-checksum.json b/vendor/unicode-script/.cargo-checksum.json
new file mode 100644
index 000000000..44c6c80d2
--- /dev/null
+++ b/vendor/unicode-script/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"3b6e9ba98b2f20b8b8a13f2e961a78691a064dcd1ae0d5bcfaf26216b2bb9c68","README.md":"14f5fffdc485176a2ab2e04555231042d0f7d818dbf1a0749a1ecbd8a0d4d500","scripts/unicode.py":"53803e407327679983929fbbdaf874c44c21b6f775eb48690dd52528dd3f4a51","src/lib.rs":"1e67da407be73a423a1de030f1397864aa454925a8582e027e9a9246529bf0b6","src/tables.rs":"6303916c60cee9abfa380b345536177415f042f36df3479d35c17b3587e65479"},"package":"098ec66172ce21cd55f8bcc786ee209dd20e04eff70acfca30cb79924d173ae9"} \ No newline at end of file
diff --git a/vendor/unicode-script/Cargo.toml b/vendor/unicode-script/Cargo.toml
new file mode 100644
index 000000000..6dfc01148
--- /dev/null
+++ b/vendor/unicode-script/Cargo.toml
@@ -0,0 +1,42 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+edition = "2018"
+name = "unicode-script"
+version = "0.5.3"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+exclude = ["target/*", "Cargo.lock", "scripts/tmp", "*.txt"]
+description = "This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/)\n"
+homepage = "https://github.com/unicode-rs/unicode-script"
+documentation = "https://docs.rs/unicode-script"
+readme = "README.md"
+keywords = ["text", "unicode", "script", "language"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/unicode-rs/unicode-script"
+[dependencies.compiler_builtins]
+version = "0.1"
+optional = true
+
+[dependencies.core]
+version = "1.0"
+optional = true
+package = "rustc-std-workspace-core"
+
+[dependencies.std]
+version = "1.0"
+optional = true
+package = "rustc-std-workspace-std"
+
+[features]
+bench = []
+rustc-dep-of-std = ["std", "core", "compiler_builtins"]
diff --git a/vendor/unicode-script/README.md b/vendor/unicode-script/README.md
new file mode 100644
index 000000000..85fd60b11
--- /dev/null
+++ b/vendor/unicode-script/README.md
@@ -0,0 +1,7 @@
+# unicode-script
+
+[![Build Status](https://github.com/unicode-rs/unicode-script/workflows/Tests/badge.svg)](https://github.com/unicode-rs/unicode-script/actions)
+[![Current Version](https://meritbadge.herokuapp.com/unicode-script)](https://crates.io/crates/unicode-script)
+[![License: MIT/Apache-2.0](https://img.shields.io/crates/l/unicode-script.svg)](#license)
+
+This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/) \ No newline at end of file
diff --git a/vendor/unicode-script/scripts/unicode.py b/vendor/unicode-script/scripts/unicode.py
new file mode 100644
index 000000000..e40a92c6d
--- /dev/null
+++ b/vendor/unicode-script/scripts/unicode.py
@@ -0,0 +1,402 @@
+#!/usr/bin/env python
+#
+# Copyright 2011-2015 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+# This script uses the following Unicode tables:
+# - PropertyValueAliases.txt
+# - ScriptExtensions.txt
+# - Scripts.txt
+#
+# Since this should not require frequent updates, we just store this
+# out-of-line and check the unicode.rs file into git.
+
+import fileinput, re, os, sys
+
+preamble = '''// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
+
+#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
+
+pub use tables_impl::*;
+
+#[rustfmt::skip]
+mod tables_impl {
+use crate::ScriptExtension;
+'''
+
+# Close `mod impl {`
+ending='''
+}
+'''
+
+UNICODE_VERSION = (13, 0, 0)
+
+UNICODE_VERSION_NUMBER = "%s.%s.%s" %UNICODE_VERSION
+
+def escape_char(c):
+ return "'\\u{%x}'" % c
+
+def fetch(f):
+ if not os.path.exists(os.path.basename(f)):
+ if "emoji" in f:
+ os.system("curl -O https://www.unicode.org/Public/emoji/%s.%s/%s"
+ % (UNICODE_VERSION[0], UNICODE_VERSION[1], f))
+ else:
+ os.system("curl -O http://www.unicode.org/Public/%s/ucd/%s"
+ % (UNICODE_VERSION_NUMBER, f))
+
+ if not os.path.exists(os.path.basename(f)):
+ sys.stderr.write("cannot load %s" % f)
+ exit(1)
+
+def group_cats(cats):
+ cats_out = {}
+ for cat in cats:
+ cats_out[cat] = group_cat(cats[cat])
+ return cats_out
+
+def aliases():
+ """
+ Fetch the shorthand aliases for each longhand Script name
+ """
+ fetch("PropertyValueAliases.txt")
+ longforms = {}
+ shortforms = {}
+ re1 = re.compile(r"^ *sc *; *(\w+) *; *(\w+)")
+ for line in fileinput.input(os.path.basename("PropertyValueAliases.txt")):
+ m = re1.match(line)
+ if m:
+ l = m.group(2).strip()
+ s = m.group(1).strip()
+ assert(s not in longforms)
+ assert(l not in shortforms)
+ longforms[s] = l
+ shortforms[l] = s
+ else:
+ continue
+
+ return (longforms, shortforms)
+
+def format_table_content(f, content, indent):
+ line = " "*indent
+ first = True
+ for chunk in content.split(","):
+ if len(line) + len(chunk) < 98:
+ if first:
+ line += chunk
+ else:
+ line += ", " + chunk
+ first = False
+ else:
+ f.write(line + ",\n")
+ line = " "*indent + chunk
+ f.write(line)
+
+# Implementation from unicode-segmentation
+def load_properties(f, interestingprops):
+ fetch(f)
+ props = {}
+ # Note: these regexes are different from those in unicode-segmentation,
+ # becase we need to handle spaces here
+ re1 = re.compile(r"^ *([0-9A-F]+) *; *([^#]+) *#")
+ re2 = re.compile(r"^ *([0-9A-F]+)\.\.([0-9A-F]+) *; *([^#]+) *#")
+
+ for line in fileinput.input(os.path.basename(f)):
+ prop = None
+ d_lo = 0
+ d_hi = 0
+ m = re1.match(line)
+ if m:
+ d_lo = m.group(1)
+ d_hi = m.group(1)
+ prop = m.group(2).strip()
+ else:
+ m = re2.match(line)
+ if m:
+ d_lo = m.group(1)
+ d_hi = m.group(2)
+ prop = m.group(3).strip()
+ else:
+ continue
+ if interestingprops and prop not in interestingprops:
+ continue
+ d_lo = int(d_lo, 16)
+ d_hi = int(d_hi, 16)
+ if prop not in props:
+ props[prop] = []
+ props[prop].append((d_lo, d_hi))
+
+ return props
+
+# Implementation from unicode-segmentation
+def emit_table(f, name, t_data, t_type = "&'static [(char, char)]", is_pub=True,
+ pfun=lambda x: "(%s,%s)" % (escape_char(x[0]), escape_char(x[1])), is_const=True):
+ pub_string = "const"
+ if not is_const:
+ pub_string = "let"
+ if is_pub:
+ pub_string = "pub " + pub_string
+ f.write(" %s %s: %s = &[\n" % (pub_string, name, t_type))
+ data = ""
+ first = True
+ for dat in t_data:
+ if not first:
+ data += ","
+ first = False
+ data += pfun(dat)
+ format_table_content(f, data, 8)
+ f.write("\n ];\n\n")
+
+def emit_search(f):
+ f.write("""
+pub fn bsearch_range_value_table<T: Copy>(c: char, r: &'static [(char, char, T)]) -> Option<T> {
+ use core::cmp::Ordering::{Equal, Less, Greater};
+ match r.binary_search_by(|&(lo, hi, _)| {
+ if lo <= c && c <= hi { Equal }
+ else if hi < c { Less }
+ else { Greater }
+ }) {
+ Ok(idx) => {
+ let (_, _, cat) = r[idx];
+ Some(cat)
+ }
+ Err(_) => None
+ }
+}
+
+#[inline]
+pub fn get_script(c: char) -> Option<Script> {
+ bsearch_range_value_table(c, SCRIPTS)
+}
+
+#[inline]
+pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
+ bsearch_range_value_table(c, SCRIPT_EXTENSIONS)
+}
+""")
+
+def emit_enums(f, script_list, extension_list, longforms):
+ """
+ Emit the Script and ScriptExtension enums as well as any related utility functions
+ """
+
+ f.write("""
+#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
+#[non_exhaustive]
+#[allow(non_camel_case_types)]
+#[repr(u8)]
+/// A value of the `Script` property
+pub enum Script {
+ /// Unknown script
+ Unknown = 0xFF,
+ /// Zyyy
+ Common = 0xFE,
+ /// Zinh,
+ Inherited = 0xFD,
+""")
+ for (i, script) in enumerate(script_list):
+ f.write(" /// %s\n %s = %s,\n" % (script, longforms[script], i))
+ f.write("}\n")
+ f.write("pub const NEXT_SCRIPT: u8 = %s;" % len(script_list))
+ f.write("""
+
+pub mod script_extensions {
+ use crate::ScriptExtension;
+ pub const COMMON: ScriptExtension = ScriptExtension::new_common();
+ pub const INHERITED: ScriptExtension = ScriptExtension::new_inherited();
+ pub const UNKNOWN: ScriptExtension = ScriptExtension::new_unknown();
+""")
+ for (i, script) in enumerate(script_list):
+ first = 0
+ second = 0
+ third = 0
+ # need to replace L because `hex()` will spit out an L suffix for larger numbers
+ if i < 64:
+ first = hex(1 << i).replace("L", "")
+ elif i < 128:
+ second = hex(1 << (i - 64)).replace("L", "")
+ else:
+ third = hex(1 << (i - 128)).replace("L", "")
+ f.write(" /// %s\n pub const %s: ScriptExtension = ScriptExtension::new(%s, %s, %s);\n" %
+ (longforms[script], longforms[script].upper(), first, second, third))
+ if script != longforms[script]:
+ f.write(" /// %s\n pub const %s: ScriptExtension = %s;\n" %
+ (longforms[script], script.upper(), longforms[script].upper()))
+ for ext in extension_list:
+ longform = ", ".join([longforms[s] for s in ext])
+ name = "_".join([s.upper() for s in ext])
+ expr = ext[0].upper()
+ for e in ext[1:]:
+ expr = "%s.union(%s)" % (expr, e.upper())
+ f.write(" /// %s\n pub const %s: ScriptExtension = %s;\n" % (longform, name, expr))
+ f.write("""}
+
+""")
+
+ # Generate implementation for the `Script`
+ generate_script_impl(f)
+
+
+def generate_script_impl(f):
+ """Generates an `impl Script { ... }` section with all the required functions"""
+
+ # Open `impl Script` section.
+ f.write("""impl Script {
+""")
+
+ # Generate impl of `inner_full_name`.
+ f.write("""
+ #[inline]
+ pub(crate) fn inner_full_name(self) -> &'static str {
+ match self {
+ Script::Unknown => "Unknown",
+ Script::Common => "Common",
+ Script::Inherited => "Inherited",
+""")
+ for script in script_list:
+ f.write(" Script::%s => \"%s\",\n" % (longforms[script], longforms[script]))
+ f.write(""" }
+ }
+""")
+
+ # Generate impl of `inner_from_full_name`.
+ f.write("""
+ #[inline]
+ pub(crate) fn inner_from_full_name(input: &str) -> Option<Self> {
+ match input {
+ "Unknown" => Some(Script::Unknown),
+ "Common" => Some(Script::Common),
+ "Inherited" => Some(Script::Inherited),
+""")
+ for script in script_list:
+ f.write(" \"%s\" => Some(Script::%s),\n" % (longforms[script], longforms[script]))
+ f.write(" _ => None,\n" )
+ f.write(""" }
+ }
+""")
+
+ # Generate impl of `inner_short_name`
+ f.write("""
+ #[inline]
+ pub(crate) fn inner_short_name(self) -> &'static str {
+ match self {
+ Script::Unknown => "",
+ Script::Common => "Zyyy",
+ Script::Inherited => "Zinh",
+""")
+ for script in script_list:
+ f.write(" Script::%s => \"%s\",\n" % (longforms[script], script))
+ f.write(""" }
+ }
+""")
+
+ # Generate impl of `inner_from_short_name`
+ f.write("""
+ #[inline]
+ pub(crate) fn inner_from_short_name(input: &str) -> Option<Self> {
+ match input {
+ "Zyyy" => Some(Script::Common),
+ "Zinh" => Some(Script::Inherited),
+""")
+ for script in script_list:
+ f.write(" \"%s\" => Some(Script::%s),\n" % (script, longforms[script]))
+ f.write(""" _ => None,\n""")
+ f.write(""" }
+ }
+""")
+
+ # Generate impl of `for_integer`
+ f.write("""
+ #[inline]
+ pub(crate) fn for_integer(value: u8) -> Self {
+ match value {
+""")
+ for (i, script) in enumerate(script_list):
+ f.write(" %s => Script::%s,\n" % (i, longforms[script]))
+ f.write(""" _ => unreachable!(),
+ }
+ }
+""")
+
+ # Close `impl Script` section
+ f.write("""
+}
+""")
+
+def extension_name(ext):
+ """Get the rust source for a given ScriptExtension"""
+ return "script_extensions::%s" % "_".join([e.upper() for e in ext])
+
+
+if __name__ == "__main__":
+ r = "tables.rs"
+ if os.path.exists(r):
+ os.remove(r)
+ with open(r, "w") as rf:
+ # write the file's preamble
+ rf.write(preamble)
+ rf.write("""
+/// The version of [Unicode](http://www.unicode.org/)
+/// that this version of unicode-script is based on.
+pub const UNICODE_VERSION: (u64, u64, u64) = (%s, %s, %s);
+""" % UNICODE_VERSION)
+
+
+ (longforms, shortforms) = aliases()
+
+ scripts = load_properties("Scripts.txt", [])
+
+ script_table = []
+ script_list = []
+
+ for script in scripts:
+ if script not in ["Common", "Unknown", "Inherited"]:
+ script_list.append(shortforms[script])
+ script_table.extend([(x, y, shortforms[script]) for (x, y) in scripts[script]])
+ script_list.sort()
+ script_table.sort(key=lambda w: w[0])
+
+
+ extensions = load_properties("ScriptExtensions.txt", [])
+ extension_table = []
+ extension_list = []
+
+ for ext in extensions:
+ split = ext.split(" ")
+ split.sort()
+ output_ext = [ext]
+ if len(split) > 1:
+ extension_list.append(split)
+ output_ext = split
+ extension_table.extend([(x, y, output_ext) for (x, y) in extensions[ext]])
+ extension_table.sort(key=lambda w: w[0])
+
+
+ emit_enums(rf, script_list, extension_list, longforms)
+ emit_search(rf)
+
+ emit_table(rf, "SCRIPTS", script_table, t_type = "&'static [(char, char, Script)]",
+ is_pub=False , pfun=lambda x: "(%s,%s, Script::%s)" % (escape_char(x[0]), escape_char(x[1]), longforms[x[2]]))
+ emit_table(rf, "SCRIPT_EXTENSIONS", extension_table, t_type = "&'static [(char, char, ScriptExtension)]",
+ is_pub=False , pfun=lambda x: "(%s,%s,%s)" % (escape_char(x[0]), escape_char(x[1]), extension_name(x[2])))
+
+ # emit_table(rf, "FOObar", properties)
+
+ rf.write(ending)
diff --git a/vendor/unicode-script/src/lib.rs b/vendor/unicode-script/src/lib.rs
new file mode 100644
index 000000000..d650ee0b2
--- /dev/null
+++ b/vendor/unicode-script/src/lib.rs
@@ -0,0 +1,560 @@
+//! This crate exposes the Unicode `Script` and `Script_Extension`
+//! properties from [UAX #24](http://www.unicode.org/reports/tr24/)
+
+#![cfg_attr(not(test), no_std)]
+#![cfg_attr(feature = "bench", feature(test))]
+
+mod tables;
+
+use core::convert::TryFrom;
+use core::fmt;
+use core::u64;
+pub use tables::script_extensions;
+use tables::{get_script, get_script_extension, NEXT_SCRIPT};
+pub use tables::{Script, UNICODE_VERSION};
+
+impl Script {
+ /// Get the full name of a script.
+ pub fn full_name(self) -> &'static str {
+ self.inner_full_name()
+ }
+
+ /// Attempts to parse script name from the provided string.
+ /// Returns `None` if the provided string does not represent a valid
+ /// script full name.
+ pub fn from_full_name(input: &str) -> Option<Self> {
+ Self::inner_from_full_name(input)
+ }
+
+ /// Get the four-character short name of a script.
+ pub fn short_name(self) -> &'static str {
+ self.inner_short_name()
+ }
+
+ /// Attempts to parse script name from the provided string.
+ /// Returns `None` if the provided string does not represent a valid
+ /// script four-character short name.
+ pub fn from_short_name(input: &str) -> Option<Self> {
+ Self::inner_from_short_name(input)
+ }
+
+ /// Is this script "Recommended" according to
+ /// [UAX #31](www.unicode.org/reports/tr31/#Table_Recommended_Scripts)?
+ pub fn is_recommended(self) -> bool {
+ use Script::*;
+ match self {
+ Common | Inherited | Arabic | Armenian | Bengali | Bopomofo | Cyrillic | Devanagari
+ | Ethiopic | Georgian | Greek | Gujarati | Gurmukhi | Han | Hangul | Hebrew
+ | Hiragana | Kannada | Katakana | Khmer | Lao | Latin | Malayalam | Myanmar | Oriya
+ | Sinhala | Tamil | Telugu | Thaana | Thai | Tibetan => true,
+ _ => false,
+ }
+ }
+}
+
+impl From<Script> for ScriptExtension {
+ fn from(script: Script) -> Self {
+ if script == Script::Common {
+ ScriptExtension::new_common()
+ } else if script == Script::Inherited {
+ ScriptExtension::new_inherited()
+ } else if script == Script::Unknown {
+ ScriptExtension::new_unknown()
+ } else {
+ let mut first = 0;
+ let mut second = 0;
+ let mut third = 0;
+ let bit = script as u8;
+ // Find out which field it's in, and set the appropriate bit there
+ if bit < 64 {
+ first = 1 << bit as u64;
+ } else if bit < 128 {
+ // offset by 64 since `bit` is an absolute number,
+ // not relative to the chunk
+ second = 1 << (bit - 64) as u64;
+ } else {
+ third = 1 << (bit - 128) as u32;
+ }
+ ScriptExtension::new(first, second, third)
+ }
+ }
+}
+
+impl TryFrom<ScriptExtension> for Script {
+ type Error = ();
+ fn try_from(ext: ScriptExtension) -> Result<Self, ()> {
+ if ext.is_common_or_inherited() {
+ if ext.common {
+ Ok(Script::Common)
+ } else {
+ Ok(Script::Inherited)
+ }
+ } else if ext.is_empty() {
+ Ok(Script::Unknown)
+ } else {
+ // filled elements will have set ones
+ let fo = ext.first.count_ones();
+ let so = ext.second.count_ones();
+ let to = ext.third.count_ones();
+ // only one bit set, in the first chunk
+ if fo == 1 && so == 0 && to == 0 {
+ // use trailing_zeroes() to figure out which bit it is
+ Ok(Script::for_integer(ext.first.trailing_zeros() as u8))
+ // only one bit set, in the second chunk
+ } else if fo == 0 && so == 1 && to == 0 {
+ Ok(Script::for_integer(64 + ext.second.trailing_zeros() as u8))
+ // only one bit set, in the third chunk
+ } else if fo == 0 && so == 0 && to == 1 {
+ Ok(Script::for_integer(128 + ext.third.trailing_zeros() as u8))
+ } else {
+ Err(())
+ }
+ }
+ }
+}
+
+impl Default for Script {
+ fn default() -> Self {
+ Script::Common
+ }
+}
+
+impl From<char> for Script {
+ fn from(o: char) -> Self {
+ o.script()
+ }
+}
+
+impl fmt::Display for Script {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", self.full_name())
+ }
+}
+
+#[derive(Clone, Copy, PartialEq, Eq, Hash)]
+#[non_exhaustive]
+/// A value for the `Script_Extension` property
+///
+/// [`ScriptExtension`] is one or more [`Script`]
+///
+/// This is essentially an optimized version of `Vec<Script>` that uses bitfields
+pub struct ScriptExtension {
+ // A bitset for the first 64 scripts
+ first: u64,
+ // A bitset for the scripts 65-128
+ second: u64,
+ // A bitset for scripts after 128
+ third: u32,
+ // Both Common and Inherited are represented by all used bits being set,
+ // this flag lets us distinguish the two.
+ common: bool,
+}
+
+impl ScriptExtension {
+ // We don't use the complete u32 of `third`, so the "all" value is not just u32::MAX
+ // Instead, we take the number of the next (unused) script bit, subtract 128 to bring
+ // it in the range of `third`, create a u32 with just that bit set, and subtract 1
+ // to create one with all the lower bits set.
+ const THIRD_MAX: u32 = ((1 << (NEXT_SCRIPT - 128)) - 1);
+
+ pub(crate) const fn new(first: u64, second: u64, third: u32) -> Self {
+ ScriptExtension {
+ first,
+ second,
+ third,
+ common: false,
+ }
+ }
+
+ pub(crate) const fn new_common() -> Self {
+ ScriptExtension {
+ first: u64::MAX,
+ second: u64::MAX,
+ third: Self::THIRD_MAX,
+ common: true,
+ }
+ }
+
+ pub(crate) const fn new_inherited() -> Self {
+ ScriptExtension {
+ first: u64::MAX,
+ second: u64::MAX,
+ third: Self::THIRD_MAX,
+ common: false,
+ }
+ }
+
+ pub(crate) const fn new_unknown() -> Self {
+ ScriptExtension {
+ first: 0,
+ second: 0,
+ third: 0,
+ common: false,
+ }
+ }
+
+ const fn is_common_or_inherited(self) -> bool {
+ (self.first == u64::MAX) & (self.second == u64::MAX) & (self.third == Self::THIRD_MAX)
+ }
+
+ /// Checks if the script extension is Common
+ pub const fn is_common(self) -> bool {
+ self.is_common_or_inherited() & self.common
+ }
+
+ /// Checks if the script extension is Inherited
+ pub const fn is_inherited(self) -> bool {
+ self.is_common_or_inherited() & !self.common
+ }
+
+ /// Checks if the script extension is empty (unknown)
+ pub const fn is_empty(self) -> bool {
+ (self.first == 0) & (self.second == 0) & (self.third == 0)
+ }
+
+ /// Returns the number of scripts in the script extension
+ pub fn len(self) -> usize {
+ if self.is_common_or_inherited() {
+ 1
+ } else {
+ (self.first.count_ones() + self.second.count_ones() + self.third.count_ones()) as usize
+ }
+ }
+
+ /// Intersect this `ScriptExtension` with another `ScriptExtension`. Produces `Unknown` if things
+ /// do not intersect. This is equivalent to [`ScriptExtension::intersection`] but it stores the result
+ /// in `self`
+ ///
+ /// "Common" (`Zyyy`) and "Inherited" (`Zinh`) are considered as intersecting
+ /// everything, the intersection of `Common` and `Inherited` is `Inherited`
+ pub fn intersect_with(&mut self, other: Self) {
+ *self = self.intersection(other)
+ }
+
+ /// Find the intersection between two ScriptExtensions. Returns Unknown if things
+ /// do not intersect.
+ ///
+ /// "Common" (`Zyyy`) and "Inherited" (`Zinh`) are considered as intersecting
+ /// everything, the intersection of `Common` and `Inherited` is `Inherited`
+ pub const fn intersection(self, other: Self) -> Self {
+ let first = self.first & other.first;
+ let second = self.second & other.second;
+ let third = self.third & other.third;
+ let common = self.common & other.common;
+ ScriptExtension {
+ first,
+ second,
+ third,
+ common,
+ }
+ }
+
+ /// Find the union between two ScriptExtensions.
+ ///
+ /// "Common" (`Zyyy`) and "Inherited" (`Zinh`) are considered as intersecting
+ /// everything, the union of `Common` and `Inherited` is `Common`
+ pub const fn union(self, other: Self) -> Self {
+ let first = self.first | other.first;
+ let second = self.second | other.second;
+ let third = self.third | other.third;
+ let common = self.common | other.common;
+ ScriptExtension {
+ first,
+ second,
+ third,
+ common,
+ }
+ }
+
+ /// Check if this ScriptExtension contains the given script
+ ///
+ /// Should be used with specific scripts only, this will
+ /// return `true` if `self` is not `Unknown` and `script` is
+ /// `Common` or `Inherited`
+ pub fn contains_script(self, script: Script) -> bool {
+ !self.intersection(script.into()).is_empty()
+ }
+
+ /// Get the intersection of script extensions of all characters
+ /// in a string.
+ pub fn for_str(x: &str) -> Self {
+ let mut ext = ScriptExtension::default();
+ for ch in x.chars() {
+ ext.intersect_with(ch.into());
+ }
+ ext
+ }
+
+ /// Iterate over the scripts in this script extension
+ ///
+ /// Will never yield Script::Unknown
+ pub fn iter(self) -> ScriptIterator {
+ ScriptIterator { ext: self }
+ }
+}
+
+impl Default for ScriptExtension {
+ fn default() -> Self {
+ ScriptExtension::new_common()
+ }
+}
+
+impl From<char> for ScriptExtension {
+ fn from(o: char) -> Self {
+ o.script_extension()
+ }
+}
+
+impl From<&'_ str> for ScriptExtension {
+ fn from(o: &'_ str) -> Self {
+ Self::for_str(o)
+ }
+}
+
+impl fmt::Debug for ScriptExtension {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "ScriptExtension(")?;
+ fmt::Display::fmt(self, f)?;
+ write!(f, ")")
+ }
+}
+
+impl fmt::Display for ScriptExtension {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ if self.is_common() {
+ write!(f, "Common")?;
+ } else if self.is_inherited() {
+ write!(f, "Inherited")?;
+ } else if self.is_empty() {
+ write!(f, "Unknown")?;
+ } else {
+ let mut first = true;
+ for script in self.iter() {
+ if !first {
+ write!(f, " + ")?;
+ first = false;
+ }
+ script.full_name().fmt(f)?;
+ }
+ }
+ Ok(())
+ }
+}
+
+/// Extension trait on `char` for calculating script properties
+pub trait UnicodeScript {
+ /// Get the script for a given character
+ fn script(&self) -> Script;
+ /// Get the Script_Extension for a given character
+ fn script_extension(&self) -> ScriptExtension;
+}
+
+impl UnicodeScript for char {
+ fn script(&self) -> Script {
+ get_script(*self).unwrap_or(Script::Unknown)
+ }
+
+ fn script_extension(&self) -> ScriptExtension {
+ get_script_extension(*self).unwrap_or_else(|| self.script().into())
+ }
+}
+
+/// Iterator over scripts in a [ScriptExtension].
+///
+/// Can be obtained ia [ScriptExtension::iter()]
+pub struct ScriptIterator {
+ ext: ScriptExtension,
+}
+
+impl Iterator for ScriptIterator {
+ type Item = Script;
+
+ fn next(&mut self) -> Option<Script> {
+ if self.ext.is_common_or_inherited() {
+ let common = self.ext.common;
+ self.ext = ScriptExtension::new_unknown();
+ if common {
+ Some(Script::Common)
+ } else {
+ Some(Script::Inherited)
+ }
+ // Are there bits left in the first chunk?
+ } else if self.ext.first != 0 {
+ // Find the next bit
+ let bit = self.ext.first.trailing_zeros();
+ // unset just that bit
+ self.ext.first &= !(1 << bit);
+ Some(Script::for_integer(bit as u8))
+ // Are there bits left in the second chunk?
+ } else if self.ext.second != 0 {
+ let bit = self.ext.second.trailing_zeros();
+ self.ext.second &= !(1 << bit);
+ Some(Script::for_integer(64 + bit as u8))
+ // Are there bits left in the third chunk?
+ } else if self.ext.third != 0 {
+ let bit = self.ext.third.trailing_zeros();
+ self.ext.third &= !(1 << bit);
+ Some(Script::for_integer(128 + bit as u8))
+ } else {
+ // Script::Unknown
+ None
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::*;
+ use std::collections::HashSet;
+ use std::convert::TryInto;
+
+ #[cfg(feature = "bench")]
+ use test::bench::Bencher;
+ #[cfg(feature = "bench")]
+ extern crate test;
+
+ #[test]
+ fn test_conversion() {
+ let mut seen_scripts = HashSet::new();
+ let mut seen_exts = HashSet::new();
+ for bit in 0..NEXT_SCRIPT {
+ let script = Script::for_integer(bit);
+ let ext = script.into();
+ if seen_scripts.contains(&script) {
+ panic!("Found script {:?} twice!", script)
+ }
+ if seen_exts.contains(&ext) {
+ panic!("Found extension {:?} twice!", ext)
+ }
+ seen_scripts.insert(script);
+ seen_exts.insert(ext);
+ assert_eq!(script as u8, bit);
+ assert!(!ScriptExtension::new_common().intersection(ext).is_empty());
+ assert!(!ScriptExtension::new_inherited()
+ .intersection(ext)
+ .is_empty());
+ assert!(ScriptExtension::new_unknown().intersection(ext).is_empty());
+ assert_eq!(ext.iter().collect::<Vec<_>>(), vec![script]);
+ assert_eq!(Ok(script), ext.try_into());
+ }
+ }
+
+ #[test]
+ fn test_specific() {
+ let s = "सवव मानवी व्यद्क् जन्मतःच स्वतींत्र आहेत व त्ाींना समान प्रवतष्ठा व समान अविकार आहेत. त्ाींना ववचारशद्क् व सवविे कबुद्द्धलाभलेली आहे. व त्ाींनी एकमेकाींशी बींिुत्वाचाभावनेने आचरण करावे.";
+ let ext = ScriptExtension::for_str(s);
+ assert_eq!(ext, script_extensions::DEVA);
+ println!(
+ "{:?}",
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH
+ );
+ println!(
+ "{:?}",
+ ext.intersection(
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH
+ )
+ );
+ assert!(!ext
+ .intersection(script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH)
+ .is_empty());
+
+ let u = ext.union(Script::Dogra.into());
+ assert_eq!(
+ u.intersection(
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH
+ ),
+ u
+ );
+ }
+
+ #[test]
+ fn test_specific_ext() {
+ let ext = script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH;
+
+ let all: HashSet<_> = ext.iter().collect();
+
+ for bit in 0..NEXT_SCRIPT {
+ let script = Script::for_integer(bit);
+
+ if all.contains(&script) {
+ assert!(ext.contains_script(script))
+ } else {
+ assert!(!ext.contains_script(script))
+ }
+ }
+
+ assert!(ext.contains_script(Script::Devanagari));
+ assert!(ext.contains_script(Script::Dogra));
+ assert!(ext.contains_script(Script::Gujarati));
+ assert!(ext.contains_script(Script::Gurmukhi));
+ assert!(ext.contains_script(Script::Khojki));
+ assert!(ext.contains_script(Script::Kaithi));
+ assert!(ext.contains_script(Script::Mahajani));
+ assert!(ext.contains_script(Script::Modi));
+ assert!(ext.contains_script(Script::Khudawadi));
+ assert!(ext.contains_script(Script::Takri));
+ assert!(ext.contains_script(Script::Tirhuta));
+
+ let scr: Result<Script, _> = ext.try_into();
+ assert!(scr.is_err());
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_script_intersection(b: &mut Bencher) {
+ b.iter(|| {
+ let script = test::black_box(Script::Devanagari);
+ let ext = test::black_box(script_extensions::BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH);
+ test::black_box(ext.intersection(script.into()));
+ })
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_ext_to_script(b: &mut Bencher) {
+ let ext: ScriptExtension = Script::Devanagari.into();
+ b.iter(|| {
+ let ext = test::black_box(ext);
+ let script: Result<Script, _> = ext.try_into();
+ let _ = test::black_box(script);
+ })
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_script_to_ext(b: &mut Bencher) {
+ b.iter(|| {
+ let script = test::black_box(Script::Devanagari);
+ let ext: ScriptExtension = script.into();
+ test::black_box(ext);
+ })
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_ext_intersection(b: &mut Bencher) {
+ b.iter(|| {
+ let e1 = test::black_box(script_extensions::ARAB_ROHG_SYRC_THAA_YEZI);
+ let e2 = test::black_box(script_extensions::BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH);
+ test::black_box(e2.intersection(e1));
+ })
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_to_vec(b: &mut Bencher) {
+ b.iter(|| {
+ let ext = test::black_box(script_extensions::BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH);
+ test::black_box(ext.iter().collect::<Vec<_>>());
+ })
+ }
+
+ #[cfg(feature = "bench")]
+ #[bench]
+ fn bench_string_ext(b: &mut Bencher) {
+ b.iter(|| {
+ let s = test::black_box("सवव मानवी व्यद्क् जन्मतःच स्वतींत्र आहेत व त्ाींना समान प्रवतष्ठा व समान अविकार आहेत. त्ाींना ववचारशद्क् व सवविे कबुद्द्धलाभलेली आहे. व त्ाींनी एकमेकाींशी बींिुत्वाचाभावनेने आचरण करावे.");
+ test::black_box(ScriptExtension::for_str(s));
+ })
+ }
+}
diff --git a/vendor/unicode-script/src/tables.rs b/vendor/unicode-script/src/tables.rs
new file mode 100644
index 000000000..e31a7229f
--- /dev/null
+++ b/vendor/unicode-script/src/tables.rs
@@ -0,0 +1,3111 @@
+// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
+
+#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
+
+pub use tables_impl::*;
+
+#[rustfmt::skip]
+mod tables_impl {
+use crate::ScriptExtension;
+
+/// The version of [Unicode](http://www.unicode.org/)
+/// that this version of unicode-script is based on.
+pub const UNICODE_VERSION: (u64, u64, u64) = (13, 0, 0);
+
+#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
+#[non_exhaustive]
+#[allow(non_camel_case_types)]
+#[repr(u8)]
+/// A value of the `Script` property
+pub enum Script {
+ /// Unknown script
+ Unknown = 0xFF,
+ /// Zyyy
+ Common = 0xFE,
+ /// Zinh,
+ Inherited = 0xFD,
+ /// Adlm
+ Adlam = 0,
+ /// Aghb
+ Caucasian_Albanian = 1,
+ /// Ahom
+ Ahom = 2,
+ /// Arab
+ Arabic = 3,
+ /// Armi
+ Imperial_Aramaic = 4,
+ /// Armn
+ Armenian = 5,
+ /// Avst
+ Avestan = 6,
+ /// Bali
+ Balinese = 7,
+ /// Bamu
+ Bamum = 8,
+ /// Bass
+ Bassa_Vah = 9,
+ /// Batk
+ Batak = 10,
+ /// Beng
+ Bengali = 11,
+ /// Bhks
+ Bhaiksuki = 12,
+ /// Bopo
+ Bopomofo = 13,
+ /// Brah
+ Brahmi = 14,
+ /// Brai
+ Braille = 15,
+ /// Bugi
+ Buginese = 16,
+ /// Buhd
+ Buhid = 17,
+ /// Cakm
+ Chakma = 18,
+ /// Cans
+ Canadian_Aboriginal = 19,
+ /// Cari
+ Carian = 20,
+ /// Cham
+ Cham = 21,
+ /// Cher
+ Cherokee = 22,
+ /// Chrs
+ Chorasmian = 23,
+ /// Copt
+ Coptic = 24,
+ /// Cprt
+ Cypriot = 25,
+ /// Cyrl
+ Cyrillic = 26,
+ /// Deva
+ Devanagari = 27,
+ /// Diak
+ Dives_Akuru = 28,
+ /// Dogr
+ Dogra = 29,
+ /// Dsrt
+ Deseret = 30,
+ /// Dupl
+ Duployan = 31,
+ /// Egyp
+ Egyptian_Hieroglyphs = 32,
+ /// Elba
+ Elbasan = 33,
+ /// Elym
+ Elymaic = 34,
+ /// Ethi
+ Ethiopic = 35,
+ /// Geor
+ Georgian = 36,
+ /// Glag
+ Glagolitic = 37,
+ /// Gong
+ Gunjala_Gondi = 38,
+ /// Gonm
+ Masaram_Gondi = 39,
+ /// Goth
+ Gothic = 40,
+ /// Gran
+ Grantha = 41,
+ /// Grek
+ Greek = 42,
+ /// Gujr
+ Gujarati = 43,
+ /// Guru
+ Gurmukhi = 44,
+ /// Hang
+ Hangul = 45,
+ /// Hani
+ Han = 46,
+ /// Hano
+ Hanunoo = 47,
+ /// Hatr
+ Hatran = 48,
+ /// Hebr
+ Hebrew = 49,
+ /// Hira
+ Hiragana = 50,
+ /// Hluw
+ Anatolian_Hieroglyphs = 51,
+ /// Hmng
+ Pahawh_Hmong = 52,
+ /// Hmnp
+ Nyiakeng_Puachue_Hmong = 53,
+ /// Hung
+ Old_Hungarian = 54,
+ /// Ital
+ Old_Italic = 55,
+ /// Java
+ Javanese = 56,
+ /// Kali
+ Kayah_Li = 57,
+ /// Kana
+ Katakana = 58,
+ /// Khar
+ Kharoshthi = 59,
+ /// Khmr
+ Khmer = 60,
+ /// Khoj
+ Khojki = 61,
+ /// Kits
+ Khitan_Small_Script = 62,
+ /// Knda
+ Kannada = 63,
+ /// Kthi
+ Kaithi = 64,
+ /// Lana
+ Tai_Tham = 65,
+ /// Laoo
+ Lao = 66,
+ /// Latn
+ Latin = 67,
+ /// Lepc
+ Lepcha = 68,
+ /// Limb
+ Limbu = 69,
+ /// Lina
+ Linear_A = 70,
+ /// Linb
+ Linear_B = 71,
+ /// Lisu
+ Lisu = 72,
+ /// Lyci
+ Lycian = 73,
+ /// Lydi
+ Lydian = 74,
+ /// Mahj
+ Mahajani = 75,
+ /// Maka
+ Makasar = 76,
+ /// Mand
+ Mandaic = 77,
+ /// Mani
+ Manichaean = 78,
+ /// Marc
+ Marchen = 79,
+ /// Medf
+ Medefaidrin = 80,
+ /// Mend
+ Mende_Kikakui = 81,
+ /// Merc
+ Meroitic_Cursive = 82,
+ /// Mero
+ Meroitic_Hieroglyphs = 83,
+ /// Mlym
+ Malayalam = 84,
+ /// Modi
+ Modi = 85,
+ /// Mong
+ Mongolian = 86,
+ /// Mroo
+ Mro = 87,
+ /// Mtei
+ Meetei_Mayek = 88,
+ /// Mult
+ Multani = 89,
+ /// Mymr
+ Myanmar = 90,
+ /// Nand
+ Nandinagari = 91,
+ /// Narb
+ Old_North_Arabian = 92,
+ /// Nbat
+ Nabataean = 93,
+ /// Newa
+ Newa = 94,
+ /// Nkoo
+ Nko = 95,
+ /// Nshu
+ Nushu = 96,
+ /// Ogam
+ Ogham = 97,
+ /// Olck
+ Ol_Chiki = 98,
+ /// Orkh
+ Old_Turkic = 99,
+ /// Orya
+ Oriya = 100,
+ /// Osge
+ Osage = 101,
+ /// Osma
+ Osmanya = 102,
+ /// Palm
+ Palmyrene = 103,
+ /// Pauc
+ Pau_Cin_Hau = 104,
+ /// Perm
+ Old_Permic = 105,
+ /// Phag
+ Phags_Pa = 106,
+ /// Phli
+ Inscriptional_Pahlavi = 107,
+ /// Phlp
+ Psalter_Pahlavi = 108,
+ /// Phnx
+ Phoenician = 109,
+ /// Plrd
+ Miao = 110,
+ /// Prti
+ Inscriptional_Parthian = 111,
+ /// Rjng
+ Rejang = 112,
+ /// Rohg
+ Hanifi_Rohingya = 113,
+ /// Runr
+ Runic = 114,
+ /// Samr
+ Samaritan = 115,
+ /// Sarb
+ Old_South_Arabian = 116,
+ /// Saur
+ Saurashtra = 117,
+ /// Sgnw
+ SignWriting = 118,
+ /// Shaw
+ Shavian = 119,
+ /// Shrd
+ Sharada = 120,
+ /// Sidd
+ Siddham = 121,
+ /// Sind
+ Khudawadi = 122,
+ /// Sinh
+ Sinhala = 123,
+ /// Sogd
+ Sogdian = 124,
+ /// Sogo
+ Old_Sogdian = 125,
+ /// Sora
+ Sora_Sompeng = 126,
+ /// Soyo
+ Soyombo = 127,
+ /// Sund
+ Sundanese = 128,
+ /// Sylo
+ Syloti_Nagri = 129,
+ /// Syrc
+ Syriac = 130,
+ /// Tagb
+ Tagbanwa = 131,
+ /// Takr
+ Takri = 132,
+ /// Tale
+ Tai_Le = 133,
+ /// Talu
+ New_Tai_Lue = 134,
+ /// Taml
+ Tamil = 135,
+ /// Tang
+ Tangut = 136,
+ /// Tavt
+ Tai_Viet = 137,
+ /// Telu
+ Telugu = 138,
+ /// Tfng
+ Tifinagh = 139,
+ /// Tglg
+ Tagalog = 140,
+ /// Thaa
+ Thaana = 141,
+ /// Thai
+ Thai = 142,
+ /// Tibt
+ Tibetan = 143,
+ /// Tirh
+ Tirhuta = 144,
+ /// Ugar
+ Ugaritic = 145,
+ /// Vaii
+ Vai = 146,
+ /// Wara
+ Warang_Citi = 147,
+ /// Wcho
+ Wancho = 148,
+ /// Xpeo
+ Old_Persian = 149,
+ /// Xsux
+ Cuneiform = 150,
+ /// Yezi
+ Yezidi = 151,
+ /// Yiii
+ Yi = 152,
+ /// Zanb
+ Zanabazar_Square = 153,
+}
+pub const NEXT_SCRIPT: u8 = 154;
+
+pub mod script_extensions {
+ use crate::ScriptExtension;
+ pub const COMMON: ScriptExtension = ScriptExtension::new_common();
+ pub const INHERITED: ScriptExtension = ScriptExtension::new_inherited();
+ pub const UNKNOWN: ScriptExtension = ScriptExtension::new_unknown();
+ /// Adlam
+ pub const ADLAM: ScriptExtension = ScriptExtension::new(0x1, 0, 0);
+ /// Adlam
+ pub const ADLM: ScriptExtension = ADLAM;
+ /// Caucasian_Albanian
+ pub const CAUCASIAN_ALBANIAN: ScriptExtension = ScriptExtension::new(0x2, 0, 0);
+ /// Caucasian_Albanian
+ pub const AGHB: ScriptExtension = CAUCASIAN_ALBANIAN;
+ /// Ahom
+ pub const AHOM: ScriptExtension = ScriptExtension::new(0x4, 0, 0);
+ /// Arabic
+ pub const ARABIC: ScriptExtension = ScriptExtension::new(0x8, 0, 0);
+ /// Arabic
+ pub const ARAB: ScriptExtension = ARABIC;
+ /// Imperial_Aramaic
+ pub const IMPERIAL_ARAMAIC: ScriptExtension = ScriptExtension::new(0x10, 0, 0);
+ /// Imperial_Aramaic
+ pub const ARMI: ScriptExtension = IMPERIAL_ARAMAIC;
+ /// Armenian
+ pub const ARMENIAN: ScriptExtension = ScriptExtension::new(0x20, 0, 0);
+ /// Armenian
+ pub const ARMN: ScriptExtension = ARMENIAN;
+ /// Avestan
+ pub const AVESTAN: ScriptExtension = ScriptExtension::new(0x40, 0, 0);
+ /// Avestan
+ pub const AVST: ScriptExtension = AVESTAN;
+ /// Balinese
+ pub const BALINESE: ScriptExtension = ScriptExtension::new(0x80, 0, 0);
+ /// Balinese
+ pub const BALI: ScriptExtension = BALINESE;
+ /// Bamum
+ pub const BAMUM: ScriptExtension = ScriptExtension::new(0x100, 0, 0);
+ /// Bamum
+ pub const BAMU: ScriptExtension = BAMUM;
+ /// Bassa_Vah
+ pub const BASSA_VAH: ScriptExtension = ScriptExtension::new(0x200, 0, 0);
+ /// Bassa_Vah
+ pub const BASS: ScriptExtension = BASSA_VAH;
+ /// Batak
+ pub const BATAK: ScriptExtension = ScriptExtension::new(0x400, 0, 0);
+ /// Batak
+ pub const BATK: ScriptExtension = BATAK;
+ /// Bengali
+ pub const BENGALI: ScriptExtension = ScriptExtension::new(0x800, 0, 0);
+ /// Bengali
+ pub const BENG: ScriptExtension = BENGALI;
+ /// Bhaiksuki
+ pub const BHAIKSUKI: ScriptExtension = ScriptExtension::new(0x1000, 0, 0);
+ /// Bhaiksuki
+ pub const BHKS: ScriptExtension = BHAIKSUKI;
+ /// Bopomofo
+ pub const BOPOMOFO: ScriptExtension = ScriptExtension::new(0x2000, 0, 0);
+ /// Bopomofo
+ pub const BOPO: ScriptExtension = BOPOMOFO;
+ /// Brahmi
+ pub const BRAHMI: ScriptExtension = ScriptExtension::new(0x4000, 0, 0);
+ /// Brahmi
+ pub const BRAH: ScriptExtension = BRAHMI;
+ /// Braille
+ pub const BRAILLE: ScriptExtension = ScriptExtension::new(0x8000, 0, 0);
+ /// Braille
+ pub const BRAI: ScriptExtension = BRAILLE;
+ /// Buginese
+ pub const BUGINESE: ScriptExtension = ScriptExtension::new(0x10000, 0, 0);
+ /// Buginese
+ pub const BUGI: ScriptExtension = BUGINESE;
+ /// Buhid
+ pub const BUHID: ScriptExtension = ScriptExtension::new(0x20000, 0, 0);
+ /// Buhid
+ pub const BUHD: ScriptExtension = BUHID;
+ /// Chakma
+ pub const CHAKMA: ScriptExtension = ScriptExtension::new(0x40000, 0, 0);
+ /// Chakma
+ pub const CAKM: ScriptExtension = CHAKMA;
+ /// Canadian_Aboriginal
+ pub const CANADIAN_ABORIGINAL: ScriptExtension = ScriptExtension::new(0x80000, 0, 0);
+ /// Canadian_Aboriginal
+ pub const CANS: ScriptExtension = CANADIAN_ABORIGINAL;
+ /// Carian
+ pub const CARIAN: ScriptExtension = ScriptExtension::new(0x100000, 0, 0);
+ /// Carian
+ pub const CARI: ScriptExtension = CARIAN;
+ /// Cham
+ pub const CHAM: ScriptExtension = ScriptExtension::new(0x200000, 0, 0);
+ /// Cherokee
+ pub const CHEROKEE: ScriptExtension = ScriptExtension::new(0x400000, 0, 0);
+ /// Cherokee
+ pub const CHER: ScriptExtension = CHEROKEE;
+ /// Chorasmian
+ pub const CHORASMIAN: ScriptExtension = ScriptExtension::new(0x800000, 0, 0);
+ /// Chorasmian
+ pub const CHRS: ScriptExtension = CHORASMIAN;
+ /// Coptic
+ pub const COPTIC: ScriptExtension = ScriptExtension::new(0x1000000, 0, 0);
+ /// Coptic
+ pub const COPT: ScriptExtension = COPTIC;
+ /// Cypriot
+ pub const CYPRIOT: ScriptExtension = ScriptExtension::new(0x2000000, 0, 0);
+ /// Cypriot
+ pub const CPRT: ScriptExtension = CYPRIOT;
+ /// Cyrillic
+ pub const CYRILLIC: ScriptExtension = ScriptExtension::new(0x4000000, 0, 0);
+ /// Cyrillic
+ pub const CYRL: ScriptExtension = CYRILLIC;
+ /// Devanagari
+ pub const DEVANAGARI: ScriptExtension = ScriptExtension::new(0x8000000, 0, 0);
+ /// Devanagari
+ pub const DEVA: ScriptExtension = DEVANAGARI;
+ /// Dives_Akuru
+ pub const DIVES_AKURU: ScriptExtension = ScriptExtension::new(0x10000000, 0, 0);
+ /// Dives_Akuru
+ pub const DIAK: ScriptExtension = DIVES_AKURU;
+ /// Dogra
+ pub const DOGRA: ScriptExtension = ScriptExtension::new(0x20000000, 0, 0);
+ /// Dogra
+ pub const DOGR: ScriptExtension = DOGRA;
+ /// Deseret
+ pub const DESERET: ScriptExtension = ScriptExtension::new(0x40000000, 0, 0);
+ /// Deseret
+ pub const DSRT: ScriptExtension = DESERET;
+ /// Duployan
+ pub const DUPLOYAN: ScriptExtension = ScriptExtension::new(0x80000000, 0, 0);
+ /// Duployan
+ pub const DUPL: ScriptExtension = DUPLOYAN;
+ /// Egyptian_Hieroglyphs
+ pub const EGYPTIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x100000000, 0, 0);
+ /// Egyptian_Hieroglyphs
+ pub const EGYP: ScriptExtension = EGYPTIAN_HIEROGLYPHS;
+ /// Elbasan
+ pub const ELBASAN: ScriptExtension = ScriptExtension::new(0x200000000, 0, 0);
+ /// Elbasan
+ pub const ELBA: ScriptExtension = ELBASAN;
+ /// Elymaic
+ pub const ELYMAIC: ScriptExtension = ScriptExtension::new(0x400000000, 0, 0);
+ /// Elymaic
+ pub const ELYM: ScriptExtension = ELYMAIC;
+ /// Ethiopic
+ pub const ETHIOPIC: ScriptExtension = ScriptExtension::new(0x800000000, 0, 0);
+ /// Ethiopic
+ pub const ETHI: ScriptExtension = ETHIOPIC;
+ /// Georgian
+ pub const GEORGIAN: ScriptExtension = ScriptExtension::new(0x1000000000, 0, 0);
+ /// Georgian
+ pub const GEOR: ScriptExtension = GEORGIAN;
+ /// Glagolitic
+ pub const GLAGOLITIC: ScriptExtension = ScriptExtension::new(0x2000000000, 0, 0);
+ /// Glagolitic
+ pub const GLAG: ScriptExtension = GLAGOLITIC;
+ /// Gunjala_Gondi
+ pub const GUNJALA_GONDI: ScriptExtension = ScriptExtension::new(0x4000000000, 0, 0);
+ /// Gunjala_Gondi
+ pub const GONG: ScriptExtension = GUNJALA_GONDI;
+ /// Masaram_Gondi
+ pub const MASARAM_GONDI: ScriptExtension = ScriptExtension::new(0x8000000000, 0, 0);
+ /// Masaram_Gondi
+ pub const GONM: ScriptExtension = MASARAM_GONDI;
+ /// Gothic
+ pub const GOTHIC: ScriptExtension = ScriptExtension::new(0x10000000000, 0, 0);
+ /// Gothic
+ pub const GOTH: ScriptExtension = GOTHIC;
+ /// Grantha
+ pub const GRANTHA: ScriptExtension = ScriptExtension::new(0x20000000000, 0, 0);
+ /// Grantha
+ pub const GRAN: ScriptExtension = GRANTHA;
+ /// Greek
+ pub const GREEK: ScriptExtension = ScriptExtension::new(0x40000000000, 0, 0);
+ /// Greek
+ pub const GREK: ScriptExtension = GREEK;
+ /// Gujarati
+ pub const GUJARATI: ScriptExtension = ScriptExtension::new(0x80000000000, 0, 0);
+ /// Gujarati
+ pub const GUJR: ScriptExtension = GUJARATI;
+ /// Gurmukhi
+ pub const GURMUKHI: ScriptExtension = ScriptExtension::new(0x100000000000, 0, 0);
+ /// Gurmukhi
+ pub const GURU: ScriptExtension = GURMUKHI;
+ /// Hangul
+ pub const HANGUL: ScriptExtension = ScriptExtension::new(0x200000000000, 0, 0);
+ /// Hangul
+ pub const HANG: ScriptExtension = HANGUL;
+ /// Han
+ pub const HAN: ScriptExtension = ScriptExtension::new(0x400000000000, 0, 0);
+ /// Han
+ pub const HANI: ScriptExtension = HAN;
+ /// Hanunoo
+ pub const HANUNOO: ScriptExtension = ScriptExtension::new(0x800000000000, 0, 0);
+ /// Hanunoo
+ pub const HANO: ScriptExtension = HANUNOO;
+ /// Hatran
+ pub const HATRAN: ScriptExtension = ScriptExtension::new(0x1000000000000, 0, 0);
+ /// Hatran
+ pub const HATR: ScriptExtension = HATRAN;
+ /// Hebrew
+ pub const HEBREW: ScriptExtension = ScriptExtension::new(0x2000000000000, 0, 0);
+ /// Hebrew
+ pub const HEBR: ScriptExtension = HEBREW;
+ /// Hiragana
+ pub const HIRAGANA: ScriptExtension = ScriptExtension::new(0x4000000000000, 0, 0);
+ /// Hiragana
+ pub const HIRA: ScriptExtension = HIRAGANA;
+ /// Anatolian_Hieroglyphs
+ pub const ANATOLIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x8000000000000, 0, 0);
+ /// Anatolian_Hieroglyphs
+ pub const HLUW: ScriptExtension = ANATOLIAN_HIEROGLYPHS;
+ /// Pahawh_Hmong
+ pub const PAHAWH_HMONG: ScriptExtension = ScriptExtension::new(0x10000000000000, 0, 0);
+ /// Pahawh_Hmong
+ pub const HMNG: ScriptExtension = PAHAWH_HMONG;
+ /// Nyiakeng_Puachue_Hmong
+ pub const NYIAKENG_PUACHUE_HMONG: ScriptExtension = ScriptExtension::new(0x20000000000000, 0, 0);
+ /// Nyiakeng_Puachue_Hmong
+ pub const HMNP: ScriptExtension = NYIAKENG_PUACHUE_HMONG;
+ /// Old_Hungarian
+ pub const OLD_HUNGARIAN: ScriptExtension = ScriptExtension::new(0x40000000000000, 0, 0);
+ /// Old_Hungarian
+ pub const HUNG: ScriptExtension = OLD_HUNGARIAN;
+ /// Old_Italic
+ pub const OLD_ITALIC: ScriptExtension = ScriptExtension::new(0x80000000000000, 0, 0);
+ /// Old_Italic
+ pub const ITAL: ScriptExtension = OLD_ITALIC;
+ /// Javanese
+ pub const JAVANESE: ScriptExtension = ScriptExtension::new(0x100000000000000, 0, 0);
+ /// Javanese
+ pub const JAVA: ScriptExtension = JAVANESE;
+ /// Kayah_Li
+ pub const KAYAH_LI: ScriptExtension = ScriptExtension::new(0x200000000000000, 0, 0);
+ /// Kayah_Li
+ pub const KALI: ScriptExtension = KAYAH_LI;
+ /// Katakana
+ pub const KATAKANA: ScriptExtension = ScriptExtension::new(0x400000000000000, 0, 0);
+ /// Katakana
+ pub const KANA: ScriptExtension = KATAKANA;
+ /// Kharoshthi
+ pub const KHAROSHTHI: ScriptExtension = ScriptExtension::new(0x800000000000000, 0, 0);
+ /// Kharoshthi
+ pub const KHAR: ScriptExtension = KHAROSHTHI;
+ /// Khmer
+ pub const KHMER: ScriptExtension = ScriptExtension::new(0x1000000000000000, 0, 0);
+ /// Khmer
+ pub const KHMR: ScriptExtension = KHMER;
+ /// Khojki
+ pub const KHOJKI: ScriptExtension = ScriptExtension::new(0x2000000000000000, 0, 0);
+ /// Khojki
+ pub const KHOJ: ScriptExtension = KHOJKI;
+ /// Khitan_Small_Script
+ pub const KHITAN_SMALL_SCRIPT: ScriptExtension = ScriptExtension::new(0x4000000000000000, 0, 0);
+ /// Khitan_Small_Script
+ pub const KITS: ScriptExtension = KHITAN_SMALL_SCRIPT;
+ /// Kannada
+ pub const KANNADA: ScriptExtension = ScriptExtension::new(0x8000000000000000, 0, 0);
+ /// Kannada
+ pub const KNDA: ScriptExtension = KANNADA;
+ /// Kaithi
+ pub const KAITHI: ScriptExtension = ScriptExtension::new(0, 0x1, 0);
+ /// Kaithi
+ pub const KTHI: ScriptExtension = KAITHI;
+ /// Tai_Tham
+ pub const TAI_THAM: ScriptExtension = ScriptExtension::new(0, 0x2, 0);
+ /// Tai_Tham
+ pub const LANA: ScriptExtension = TAI_THAM;
+ /// Lao
+ pub const LAO: ScriptExtension = ScriptExtension::new(0, 0x4, 0);
+ /// Lao
+ pub const LAOO: ScriptExtension = LAO;
+ /// Latin
+ pub const LATIN: ScriptExtension = ScriptExtension::new(0, 0x8, 0);
+ /// Latin
+ pub const LATN: ScriptExtension = LATIN;
+ /// Lepcha
+ pub const LEPCHA: ScriptExtension = ScriptExtension::new(0, 0x10, 0);
+ /// Lepcha
+ pub const LEPC: ScriptExtension = LEPCHA;
+ /// Limbu
+ pub const LIMBU: ScriptExtension = ScriptExtension::new(0, 0x20, 0);
+ /// Limbu
+ pub const LIMB: ScriptExtension = LIMBU;
+ /// Linear_A
+ pub const LINEAR_A: ScriptExtension = ScriptExtension::new(0, 0x40, 0);
+ /// Linear_A
+ pub const LINA: ScriptExtension = LINEAR_A;
+ /// Linear_B
+ pub const LINEAR_B: ScriptExtension = ScriptExtension::new(0, 0x80, 0);
+ /// Linear_B
+ pub const LINB: ScriptExtension = LINEAR_B;
+ /// Lisu
+ pub const LISU: ScriptExtension = ScriptExtension::new(0, 0x100, 0);
+ /// Lycian
+ pub const LYCIAN: ScriptExtension = ScriptExtension::new(0, 0x200, 0);
+ /// Lycian
+ pub const LYCI: ScriptExtension = LYCIAN;
+ /// Lydian
+ pub const LYDIAN: ScriptExtension = ScriptExtension::new(0, 0x400, 0);
+ /// Lydian
+ pub const LYDI: ScriptExtension = LYDIAN;
+ /// Mahajani
+ pub const MAHAJANI: ScriptExtension = ScriptExtension::new(0, 0x800, 0);
+ /// Mahajani
+ pub const MAHJ: ScriptExtension = MAHAJANI;
+ /// Makasar
+ pub const MAKASAR: ScriptExtension = ScriptExtension::new(0, 0x1000, 0);
+ /// Makasar
+ pub const MAKA: ScriptExtension = MAKASAR;
+ /// Mandaic
+ pub const MANDAIC: ScriptExtension = ScriptExtension::new(0, 0x2000, 0);
+ /// Mandaic
+ pub const MAND: ScriptExtension = MANDAIC;
+ /// Manichaean
+ pub const MANICHAEAN: ScriptExtension = ScriptExtension::new(0, 0x4000, 0);
+ /// Manichaean
+ pub const MANI: ScriptExtension = MANICHAEAN;
+ /// Marchen
+ pub const MARCHEN: ScriptExtension = ScriptExtension::new(0, 0x8000, 0);
+ /// Marchen
+ pub const MARC: ScriptExtension = MARCHEN;
+ /// Medefaidrin
+ pub const MEDEFAIDRIN: ScriptExtension = ScriptExtension::new(0, 0x10000, 0);
+ /// Medefaidrin
+ pub const MEDF: ScriptExtension = MEDEFAIDRIN;
+ /// Mende_Kikakui
+ pub const MENDE_KIKAKUI: ScriptExtension = ScriptExtension::new(0, 0x20000, 0);
+ /// Mende_Kikakui
+ pub const MEND: ScriptExtension = MENDE_KIKAKUI;
+ /// Meroitic_Cursive
+ pub const MEROITIC_CURSIVE: ScriptExtension = ScriptExtension::new(0, 0x40000, 0);
+ /// Meroitic_Cursive
+ pub const MERC: ScriptExtension = MEROITIC_CURSIVE;
+ /// Meroitic_Hieroglyphs
+ pub const MEROITIC_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0, 0x80000, 0);
+ /// Meroitic_Hieroglyphs
+ pub const MERO: ScriptExtension = MEROITIC_HIEROGLYPHS;
+ /// Malayalam
+ pub const MALAYALAM: ScriptExtension = ScriptExtension::new(0, 0x100000, 0);
+ /// Malayalam
+ pub const MLYM: ScriptExtension = MALAYALAM;
+ /// Modi
+ pub const MODI: ScriptExtension = ScriptExtension::new(0, 0x200000, 0);
+ /// Mongolian
+ pub const MONGOLIAN: ScriptExtension = ScriptExtension::new(0, 0x400000, 0);
+ /// Mongolian
+ pub const MONG: ScriptExtension = MONGOLIAN;
+ /// Mro
+ pub const MRO: ScriptExtension = ScriptExtension::new(0, 0x800000, 0);
+ /// Mro
+ pub const MROO: ScriptExtension = MRO;
+ /// Meetei_Mayek
+ pub const MEETEI_MAYEK: ScriptExtension = ScriptExtension::new(0, 0x1000000, 0);
+ /// Meetei_Mayek
+ pub const MTEI: ScriptExtension = MEETEI_MAYEK;
+ /// Multani
+ pub const MULTANI: ScriptExtension = ScriptExtension::new(0, 0x2000000, 0);
+ /// Multani
+ pub const MULT: ScriptExtension = MULTANI;
+ /// Myanmar
+ pub const MYANMAR: ScriptExtension = ScriptExtension::new(0, 0x4000000, 0);
+ /// Myanmar
+ pub const MYMR: ScriptExtension = MYANMAR;
+ /// Nandinagari
+ pub const NANDINAGARI: ScriptExtension = ScriptExtension::new(0, 0x8000000, 0);
+ /// Nandinagari
+ pub const NAND: ScriptExtension = NANDINAGARI;
+ /// Old_North_Arabian
+ pub const OLD_NORTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x10000000, 0);
+ /// Old_North_Arabian
+ pub const NARB: ScriptExtension = OLD_NORTH_ARABIAN;
+ /// Nabataean
+ pub const NABATAEAN: ScriptExtension = ScriptExtension::new(0, 0x20000000, 0);
+ /// Nabataean
+ pub const NBAT: ScriptExtension = NABATAEAN;
+ /// Newa
+ pub const NEWA: ScriptExtension = ScriptExtension::new(0, 0x40000000, 0);
+ /// Nko
+ pub const NKO: ScriptExtension = ScriptExtension::new(0, 0x80000000, 0);
+ /// Nko
+ pub const NKOO: ScriptExtension = NKO;
+ /// Nushu
+ pub const NUSHU: ScriptExtension = ScriptExtension::new(0, 0x100000000, 0);
+ /// Nushu
+ pub const NSHU: ScriptExtension = NUSHU;
+ /// Ogham
+ pub const OGHAM: ScriptExtension = ScriptExtension::new(0, 0x200000000, 0);
+ /// Ogham
+ pub const OGAM: ScriptExtension = OGHAM;
+ /// Ol_Chiki
+ pub const OL_CHIKI: ScriptExtension = ScriptExtension::new(0, 0x400000000, 0);
+ /// Ol_Chiki
+ pub const OLCK: ScriptExtension = OL_CHIKI;
+ /// Old_Turkic
+ pub const OLD_TURKIC: ScriptExtension = ScriptExtension::new(0, 0x800000000, 0);
+ /// Old_Turkic
+ pub const ORKH: ScriptExtension = OLD_TURKIC;
+ /// Oriya
+ pub const ORIYA: ScriptExtension = ScriptExtension::new(0, 0x1000000000, 0);
+ /// Oriya
+ pub const ORYA: ScriptExtension = ORIYA;
+ /// Osage
+ pub const OSAGE: ScriptExtension = ScriptExtension::new(0, 0x2000000000, 0);
+ /// Osage
+ pub const OSGE: ScriptExtension = OSAGE;
+ /// Osmanya
+ pub const OSMANYA: ScriptExtension = ScriptExtension::new(0, 0x4000000000, 0);
+ /// Osmanya
+ pub const OSMA: ScriptExtension = OSMANYA;
+ /// Palmyrene
+ pub const PALMYRENE: ScriptExtension = ScriptExtension::new(0, 0x8000000000, 0);
+ /// Palmyrene
+ pub const PALM: ScriptExtension = PALMYRENE;
+ /// Pau_Cin_Hau
+ pub const PAU_CIN_HAU: ScriptExtension = ScriptExtension::new(0, 0x10000000000, 0);
+ /// Pau_Cin_Hau
+ pub const PAUC: ScriptExtension = PAU_CIN_HAU;
+ /// Old_Permic
+ pub const OLD_PERMIC: ScriptExtension = ScriptExtension::new(0, 0x20000000000, 0);
+ /// Old_Permic
+ pub const PERM: ScriptExtension = OLD_PERMIC;
+ /// Phags_Pa
+ pub const PHAGS_PA: ScriptExtension = ScriptExtension::new(0, 0x40000000000, 0);
+ /// Phags_Pa
+ pub const PHAG: ScriptExtension = PHAGS_PA;
+ /// Inscriptional_Pahlavi
+ pub const INSCRIPTIONAL_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x80000000000, 0);
+ /// Inscriptional_Pahlavi
+ pub const PHLI: ScriptExtension = INSCRIPTIONAL_PAHLAVI;
+ /// Psalter_Pahlavi
+ pub const PSALTER_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x100000000000, 0);
+ /// Psalter_Pahlavi
+ pub const PHLP: ScriptExtension = PSALTER_PAHLAVI;
+ /// Phoenician
+ pub const PHOENICIAN: ScriptExtension = ScriptExtension::new(0, 0x200000000000, 0);
+ /// Phoenician
+ pub const PHNX: ScriptExtension = PHOENICIAN;
+ /// Miao
+ pub const MIAO: ScriptExtension = ScriptExtension::new(0, 0x400000000000, 0);
+ /// Miao
+ pub const PLRD: ScriptExtension = MIAO;
+ /// Inscriptional_Parthian
+ pub const INSCRIPTIONAL_PARTHIAN: ScriptExtension = ScriptExtension::new(0, 0x800000000000, 0);
+ /// Inscriptional_Parthian
+ pub const PRTI: ScriptExtension = INSCRIPTIONAL_PARTHIAN;
+ /// Rejang
+ pub const REJANG: ScriptExtension = ScriptExtension::new(0, 0x1000000000000, 0);
+ /// Rejang
+ pub const RJNG: ScriptExtension = REJANG;
+ /// Hanifi_Rohingya
+ pub const HANIFI_ROHINGYA: ScriptExtension = ScriptExtension::new(0, 0x2000000000000, 0);
+ /// Hanifi_Rohingya
+ pub const ROHG: ScriptExtension = HANIFI_ROHINGYA;
+ /// Runic
+ pub const RUNIC: ScriptExtension = ScriptExtension::new(0, 0x4000000000000, 0);
+ /// Runic
+ pub const RUNR: ScriptExtension = RUNIC;
+ /// Samaritan
+ pub const SAMARITAN: ScriptExtension = ScriptExtension::new(0, 0x8000000000000, 0);
+ /// Samaritan
+ pub const SAMR: ScriptExtension = SAMARITAN;
+ /// Old_South_Arabian
+ pub const OLD_SOUTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x10000000000000, 0);
+ /// Old_South_Arabian
+ pub const SARB: ScriptExtension = OLD_SOUTH_ARABIAN;
+ /// Saurashtra
+ pub const SAURASHTRA: ScriptExtension = ScriptExtension::new(0, 0x20000000000000, 0);
+ /// Saurashtra
+ pub const SAUR: ScriptExtension = SAURASHTRA;
+ /// SignWriting
+ pub const SIGNWRITING: ScriptExtension = ScriptExtension::new(0, 0x40000000000000, 0);
+ /// SignWriting
+ pub const SGNW: ScriptExtension = SIGNWRITING;
+ /// Shavian
+ pub const SHAVIAN: ScriptExtension = ScriptExtension::new(0, 0x80000000000000, 0);
+ /// Shavian
+ pub const SHAW: ScriptExtension = SHAVIAN;
+ /// Sharada
+ pub const SHARADA: ScriptExtension = ScriptExtension::new(0, 0x100000000000000, 0);
+ /// Sharada
+ pub const SHRD: ScriptExtension = SHARADA;
+ /// Siddham
+ pub const SIDDHAM: ScriptExtension = ScriptExtension::new(0, 0x200000000000000, 0);
+ /// Siddham
+ pub const SIDD: ScriptExtension = SIDDHAM;
+ /// Khudawadi
+ pub const KHUDAWADI: ScriptExtension = ScriptExtension::new(0, 0x400000000000000, 0);
+ /// Khudawadi
+ pub const SIND: ScriptExtension = KHUDAWADI;
+ /// Sinhala
+ pub const SINHALA: ScriptExtension = ScriptExtension::new(0, 0x800000000000000, 0);
+ /// Sinhala
+ pub const SINH: ScriptExtension = SINHALA;
+ /// Sogdian
+ pub const SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0x1000000000000000, 0);
+ /// Sogdian
+ pub const SOGD: ScriptExtension = SOGDIAN;
+ /// Old_Sogdian
+ pub const OLD_SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0x2000000000000000, 0);
+ /// Old_Sogdian
+ pub const SOGO: ScriptExtension = OLD_SOGDIAN;
+ /// Sora_Sompeng
+ pub const SORA_SOMPENG: ScriptExtension = ScriptExtension::new(0, 0x4000000000000000, 0);
+ /// Sora_Sompeng
+ pub const SORA: ScriptExtension = SORA_SOMPENG;
+ /// Soyombo
+ pub const SOYOMBO: ScriptExtension = ScriptExtension::new(0, 0x8000000000000000, 0);
+ /// Soyombo
+ pub const SOYO: ScriptExtension = SOYOMBO;
+ /// Sundanese
+ pub const SUNDANESE: ScriptExtension = ScriptExtension::new(0, 0, 0x1);
+ /// Sundanese
+ pub const SUND: ScriptExtension = SUNDANESE;
+ /// Syloti_Nagri
+ pub const SYLOTI_NAGRI: ScriptExtension = ScriptExtension::new(0, 0, 0x2);
+ /// Syloti_Nagri
+ pub const SYLO: ScriptExtension = SYLOTI_NAGRI;
+ /// Syriac
+ pub const SYRIAC: ScriptExtension = ScriptExtension::new(0, 0, 0x4);
+ /// Syriac
+ pub const SYRC: ScriptExtension = SYRIAC;
+ /// Tagbanwa
+ pub const TAGBANWA: ScriptExtension = ScriptExtension::new(0, 0, 0x8);
+ /// Tagbanwa
+ pub const TAGB: ScriptExtension = TAGBANWA;
+ /// Takri
+ pub const TAKRI: ScriptExtension = ScriptExtension::new(0, 0, 0x10);
+ /// Takri
+ pub const TAKR: ScriptExtension = TAKRI;
+ /// Tai_Le
+ pub const TAI_LE: ScriptExtension = ScriptExtension::new(0, 0, 0x20);
+ /// Tai_Le
+ pub const TALE: ScriptExtension = TAI_LE;
+ /// New_Tai_Lue
+ pub const NEW_TAI_LUE: ScriptExtension = ScriptExtension::new(0, 0, 0x40);
+ /// New_Tai_Lue
+ pub const TALU: ScriptExtension = NEW_TAI_LUE;
+ /// Tamil
+ pub const TAMIL: ScriptExtension = ScriptExtension::new(0, 0, 0x80);
+ /// Tamil
+ pub const TAML: ScriptExtension = TAMIL;
+ /// Tangut
+ pub const TANGUT: ScriptExtension = ScriptExtension::new(0, 0, 0x100);
+ /// Tangut
+ pub const TANG: ScriptExtension = TANGUT;
+ /// Tai_Viet
+ pub const TAI_VIET: ScriptExtension = ScriptExtension::new(0, 0, 0x200);
+ /// Tai_Viet
+ pub const TAVT: ScriptExtension = TAI_VIET;
+ /// Telugu
+ pub const TELUGU: ScriptExtension = ScriptExtension::new(0, 0, 0x400);
+ /// Telugu
+ pub const TELU: ScriptExtension = TELUGU;
+ /// Tifinagh
+ pub const TIFINAGH: ScriptExtension = ScriptExtension::new(0, 0, 0x800);
+ /// Tifinagh
+ pub const TFNG: ScriptExtension = TIFINAGH;
+ /// Tagalog
+ pub const TAGALOG: ScriptExtension = ScriptExtension::new(0, 0, 0x1000);
+ /// Tagalog
+ pub const TGLG: ScriptExtension = TAGALOG;
+ /// Thaana
+ pub const THAANA: ScriptExtension = ScriptExtension::new(0, 0, 0x2000);
+ /// Thaana
+ pub const THAA: ScriptExtension = THAANA;
+ /// Thai
+ pub const THAI: ScriptExtension = ScriptExtension::new(0, 0, 0x4000);
+ /// Tibetan
+ pub const TIBETAN: ScriptExtension = ScriptExtension::new(0, 0, 0x8000);
+ /// Tibetan
+ pub const TIBT: ScriptExtension = TIBETAN;
+ /// Tirhuta
+ pub const TIRHUTA: ScriptExtension = ScriptExtension::new(0, 0, 0x10000);
+ /// Tirhuta
+ pub const TIRH: ScriptExtension = TIRHUTA;
+ /// Ugaritic
+ pub const UGARITIC: ScriptExtension = ScriptExtension::new(0, 0, 0x20000);
+ /// Ugaritic
+ pub const UGAR: ScriptExtension = UGARITIC;
+ /// Vai
+ pub const VAI: ScriptExtension = ScriptExtension::new(0, 0, 0x40000);
+ /// Vai
+ pub const VAII: ScriptExtension = VAI;
+ /// Warang_Citi
+ pub const WARANG_CITI: ScriptExtension = ScriptExtension::new(0, 0, 0x80000);
+ /// Warang_Citi
+ pub const WARA: ScriptExtension = WARANG_CITI;
+ /// Wancho
+ pub const WANCHO: ScriptExtension = ScriptExtension::new(0, 0, 0x100000);
+ /// Wancho
+ pub const WCHO: ScriptExtension = WANCHO;
+ /// Old_Persian
+ pub const OLD_PERSIAN: ScriptExtension = ScriptExtension::new(0, 0, 0x200000);
+ /// Old_Persian
+ pub const XPEO: ScriptExtension = OLD_PERSIAN;
+ /// Cuneiform
+ pub const CUNEIFORM: ScriptExtension = ScriptExtension::new(0, 0, 0x400000);
+ /// Cuneiform
+ pub const XSUX: ScriptExtension = CUNEIFORM;
+ /// Yezidi
+ pub const YEZIDI: ScriptExtension = ScriptExtension::new(0, 0, 0x800000);
+ /// Yezidi
+ pub const YEZI: ScriptExtension = YEZIDI;
+ /// Yi
+ pub const YI: ScriptExtension = ScriptExtension::new(0, 0, 0x1000000);
+ /// Yi
+ pub const YIII: ScriptExtension = YI;
+ /// Zanabazar_Square
+ pub const ZANABAZAR_SQUARE: ScriptExtension = ScriptExtension::new(0, 0, 0x2000000);
+ /// Zanabazar_Square
+ pub const ZANB: ScriptExtension = ZANABAZAR_SQUARE;
+ /// Arabic, Coptic
+ pub const ARAB_COPT: ScriptExtension = ARAB.union(COPT);
+ /// Arabic, Hanifi_Rohingya
+ pub const ARAB_ROHG: ScriptExtension = ARAB.union(ROHG);
+ /// Arabic, Syriac
+ pub const ARAB_SYRC: ScriptExtension = ARAB.union(SYRC);
+ /// Arabic, Thaana
+ pub const ARAB_THAA: ScriptExtension = ARAB.union(THAA);
+ /// Bengali, Devanagari
+ pub const BENG_DEVA: ScriptExtension = BENG.union(DEVA);
+ /// Bopomofo, Han
+ pub const BOPO_HANI: ScriptExtension = BOPO.union(HANI);
+ /// Buginese, Javanese
+ pub const BUGI_JAVA: ScriptExtension = BUGI.union(JAVA);
+ /// Cypriot, Linear_B
+ pub const CPRT_LINB: ScriptExtension = CPRT.union(LINB);
+ /// Cyrillic, Glagolitic
+ pub const CYRL_GLAG: ScriptExtension = CYRL.union(GLAG);
+ /// Cyrillic, Latin
+ pub const CYRL_LATN: ScriptExtension = CYRL.union(LATN);
+ /// Cyrillic, Old_Permic
+ pub const CYRL_PERM: ScriptExtension = CYRL.union(PERM);
+ /// Cyrillic, Syriac
+ pub const CYRL_SYRC: ScriptExtension = CYRL.union(SYRC);
+ /// Devanagari, Grantha
+ pub const DEVA_GRAN: ScriptExtension = DEVA.union(GRAN);
+ /// Devanagari, Nandinagari
+ pub const DEVA_NAND: ScriptExtension = DEVA.union(NAND);
+ /// Devanagari, Sharada
+ pub const DEVA_SHRD: ScriptExtension = DEVA.union(SHRD);
+ /// Devanagari, Tamil
+ pub const DEVA_TAML: ScriptExtension = DEVA.union(TAML);
+ /// Georgian, Latin
+ pub const GEOR_LATN: ScriptExtension = GEOR.union(LATN);
+ /// Grantha, Tamil
+ pub const GRAN_TAML: ScriptExtension = GRAN.union(TAML);
+ /// Gujarati, Khojki
+ pub const GUJR_KHOJ: ScriptExtension = GUJR.union(KHOJ);
+ /// Gurmukhi, Multani
+ pub const GURU_MULT: ScriptExtension = GURU.union(MULT);
+ /// Han, Latin
+ pub const HANI_LATN: ScriptExtension = HANI.union(LATN);
+ /// Hiragana, Katakana
+ pub const HIRA_KANA: ScriptExtension = HIRA.union(KANA);
+ /// Kannada, Nandinagari
+ pub const KNDA_NAND: ScriptExtension = KNDA.union(NAND);
+ /// Latin, Mongolian
+ pub const LATN_MONG: ScriptExtension = LATN.union(MONG);
+ /// Mongolian, Phags_Pa
+ pub const MONG_PHAG: ScriptExtension = MONG.union(PHAG);
+ /// Arabic, Syriac, Thaana
+ pub const ARAB_SYRC_THAA: ScriptExtension = ARAB.union(SYRC).union(THAA);
+ /// Arabic, Thaana, Yezidi
+ pub const ARAB_THAA_YEZI: ScriptExtension = ARAB.union(THAA).union(YEZI);
+ /// Bengali, Chakma, Syloti_Nagri
+ pub const BENG_CAKM_SYLO: ScriptExtension = BENG.union(CAKM).union(SYLO);
+ /// Chakma, Myanmar, Tai_Le
+ pub const CAKM_MYMR_TALE: ScriptExtension = CAKM.union(MYMR).union(TALE);
+ /// Cypriot, Linear_A, Linear_B
+ pub const CPRT_LINA_LINB: ScriptExtension = CPRT.union(LINA).union(LINB);
+ /// Devanagari, Grantha, Kannada
+ pub const DEVA_GRAN_KNDA: ScriptExtension = DEVA.union(GRAN).union(KNDA);
+ /// Devanagari, Grantha, Latin
+ pub const DEVA_GRAN_LATN: ScriptExtension = DEVA.union(GRAN).union(LATN);
+ /// Han, Hiragana, Katakana
+ pub const HANI_HIRA_KANA: ScriptExtension = HANI.union(HIRA).union(KANA);
+ /// Kayah_Li, Latin, Myanmar
+ pub const KALI_LATN_MYMR: ScriptExtension = KALI.union(LATN).union(MYMR);
+ /// Bengali, Devanagari, Grantha, Kannada
+ pub const BENG_DEVA_GRAN_KNDA: ScriptExtension = BENG.union(DEVA).union(GRAN).union(KNDA);
+ /// Buhid, Hanunoo, Tagbanwa, Tagalog
+ pub const BUHD_HANO_TAGB_TGLG: ScriptExtension = BUHD.union(HANO).union(TAGB).union(TGLG);
+ /// Devanagari, Dogra, Kaithi, Mahajani
+ pub const DEVA_DOGR_KTHI_MAHJ: ScriptExtension = DEVA.union(DOGR).union(KTHI).union(MAHJ);
+ /// Arabic, Hanifi_Rohingya, Syriac, Thaana, Yezidi
+ pub const ARAB_ROHG_SYRC_THAA_YEZI: ScriptExtension = ARAB.union(ROHG).union(SYRC).union(THAA).union(YEZI);
+ /// Bopomofo, Hangul, Han, Hiragana, Katakana
+ pub const BOPO_HANG_HANI_HIRA_KANA: ScriptExtension = BOPO.union(HANG).union(HANI).union(HIRA).union(KANA);
+ /// Bopomofo, Hangul, Han, Hiragana, Katakana, Yi
+ pub const BOPO_HANG_HANI_HIRA_KANA_YIII: ScriptExtension = BOPO.union(HANG).union(HANI).union(HIRA).union(KANA).union(YIII);
+ /// Devanagari, Kannada, Malayalam, Oriya, Tamil, Telugu
+ pub const DEVA_KNDA_MLYM_ORYA_TAML_TELU: ScriptExtension = DEVA.union(KNDA).union(MLYM).union(ORYA).union(TAML).union(TELU);
+ /// Adlam, Arabic, Mandaic, Manichaean, Psalter_Pahlavi, Hanifi_Rohingya, Sogdian, Syriac
+ pub const ADLM_ARAB_MAND_MANI_PHLP_ROHG_SOGD_SYRC: ScriptExtension = ADLM.union(ARAB).union(MAND).union(MANI).union(PHLP).union(ROHG).union(SOGD).union(SYRC);
+ /// Bengali, Devanagari, Grantha, Kannada, Nandinagari, Oriya, Telugu, Tirhuta
+ pub const BENG_DEVA_GRAN_KNDA_NAND_ORYA_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(GRAN).union(KNDA).union(NAND).union(ORYA).union(TELU).union(TIRH);
+ /// Devanagari, Dogra, Gujarati, Gurmukhi, Khojki, Kaithi, Mahajani, Modi, Khudawadi, Takri, Tirhuta
+ pub const DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH: ScriptExtension = DEVA.union(DOGR).union(GUJR).union(GURU).union(KHOJ).union(KTHI).union(MAHJ).union(MODI).union(SIND).union(TAKR).union(TIRH);
+ /// Bengali, Devanagari, Grantha, Gujarati, Gurmukhi, Kannada, Latin, Malayalam, Oriya, Tamil, Telugu, Tirhuta
+ pub const BENG_DEVA_GRAN_GUJR_GURU_KNDA_LATN_MLYM_ORYA_TAML_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(GRAN).union(GUJR).union(GURU).union(KNDA).union(LATN).union(MLYM).union(ORYA).union(TAML).union(TELU).union(TIRH);
+ /// Bengali, Devanagari, Grantha, Gujarati, Gurmukhi, Kannada, Latin, Malayalam, Oriya, Sharada, Tamil, Telugu, Tirhuta
+ pub const BENG_DEVA_GRAN_GUJR_GURU_KNDA_LATN_MLYM_ORYA_SHRD_TAML_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(GRAN).union(GUJR).union(GURU).union(KNDA).union(LATN).union(MLYM).union(ORYA).union(SHRD).union(TAML).union(TELU).union(TIRH);
+ /// Devanagari, Dogra, Gujarati, Gurmukhi, Khojki, Kannada, Kaithi, Mahajani, Modi, Nandinagari, Khudawadi, Takri, Tirhuta
+ pub const DEVA_DOGR_GUJR_GURU_KHOJ_KNDA_KTHI_MAHJ_MODI_NAND_SIND_TAKR_TIRH: ScriptExtension = DEVA.union(DOGR).union(GUJR).union(GURU).union(KHOJ).union(KNDA).union(KTHI).union(MAHJ).union(MODI).union(NAND).union(SIND).union(TAKR).union(TIRH);
+ /// Devanagari, Dogra, Gujarati, Gurmukhi, Khojki, Kannada, Kaithi, Mahajani, Malayalam, Modi, Nandinagari, Khudawadi, Takri, Tirhuta
+ pub const DEVA_DOGR_GUJR_GURU_KHOJ_KNDA_KTHI_MAHJ_MLYM_MODI_NAND_SIND_TAKR_TIRH: ScriptExtension = DEVA.union(DOGR).union(GUJR).union(GURU).union(KHOJ).union(KNDA).union(KTHI).union(MAHJ).union(MLYM).union(MODI).union(NAND).union(SIND).union(TAKR).union(TIRH);
+ /// Bengali, Devanagari, Dogra, Gunjala_Gondi, Masaram_Gondi, Grantha, Gujarati, Gurmukhi, Kannada, Mahajani, Malayalam, Nandinagari, Oriya, Khudawadi, Sinhala, Syloti_Nagri, Takri, Tamil, Telugu, Tirhuta
+ pub const BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(DOGR).union(GONG).union(GONM).union(GRAN).union(GUJR).union(GURU).union(KNDA).union(MAHJ).union(MLYM).union(NAND).union(ORYA).union(SIND).union(SINH).union(SYLO).union(TAKR).union(TAML).union(TELU).union(TIRH);
+ /// Bengali, Devanagari, Dogra, Gunjala_Gondi, Masaram_Gondi, Grantha, Gujarati, Gurmukhi, Kannada, Limbu, Mahajani, Malayalam, Nandinagari, Oriya, Khudawadi, Sinhala, Syloti_Nagri, Takri, Tamil, Telugu, Tirhuta
+ pub const BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_LIMB_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(DOGR).union(GONG).union(GONM).union(GRAN).union(GUJR).union(GURU).union(KNDA).union(LIMB).union(MAHJ).union(MLYM).union(NAND).union(ORYA).union(SIND).union(SINH).union(SYLO).union(TAKR).union(TAML).union(TELU).union(TIRH);
+}
+
+impl Script {
+
+ #[inline]
+ pub(crate) fn inner_full_name(self) -> &'static str {
+ match self {
+ Script::Unknown => "Unknown",
+ Script::Common => "Common",
+ Script::Inherited => "Inherited",
+ Script::Adlam => "Adlam",
+ Script::Caucasian_Albanian => "Caucasian_Albanian",
+ Script::Ahom => "Ahom",
+ Script::Arabic => "Arabic",
+ Script::Imperial_Aramaic => "Imperial_Aramaic",
+ Script::Armenian => "Armenian",
+ Script::Avestan => "Avestan",
+ Script::Balinese => "Balinese",
+ Script::Bamum => "Bamum",
+ Script::Bassa_Vah => "Bassa_Vah",
+ Script::Batak => "Batak",
+ Script::Bengali => "Bengali",
+ Script::Bhaiksuki => "Bhaiksuki",
+ Script::Bopomofo => "Bopomofo",
+ Script::Brahmi => "Brahmi",
+ Script::Braille => "Braille",
+ Script::Buginese => "Buginese",
+ Script::Buhid => "Buhid",
+ Script::Chakma => "Chakma",
+ Script::Canadian_Aboriginal => "Canadian_Aboriginal",
+ Script::Carian => "Carian",
+ Script::Cham => "Cham",
+ Script::Cherokee => "Cherokee",
+ Script::Chorasmian => "Chorasmian",
+ Script::Coptic => "Coptic",
+ Script::Cypriot => "Cypriot",
+ Script::Cyrillic => "Cyrillic",
+ Script::Devanagari => "Devanagari",
+ Script::Dives_Akuru => "Dives_Akuru",
+ Script::Dogra => "Dogra",
+ Script::Deseret => "Deseret",
+ Script::Duployan => "Duployan",
+ Script::Egyptian_Hieroglyphs => "Egyptian_Hieroglyphs",
+ Script::Elbasan => "Elbasan",
+ Script::Elymaic => "Elymaic",
+ Script::Ethiopic => "Ethiopic",
+ Script::Georgian => "Georgian",
+ Script::Glagolitic => "Glagolitic",
+ Script::Gunjala_Gondi => "Gunjala_Gondi",
+ Script::Masaram_Gondi => "Masaram_Gondi",
+ Script::Gothic => "Gothic",
+ Script::Grantha => "Grantha",
+ Script::Greek => "Greek",
+ Script::Gujarati => "Gujarati",
+ Script::Gurmukhi => "Gurmukhi",
+ Script::Hangul => "Hangul",
+ Script::Han => "Han",
+ Script::Hanunoo => "Hanunoo",
+ Script::Hatran => "Hatran",
+ Script::Hebrew => "Hebrew",
+ Script::Hiragana => "Hiragana",
+ Script::Anatolian_Hieroglyphs => "Anatolian_Hieroglyphs",
+ Script::Pahawh_Hmong => "Pahawh_Hmong",
+ Script::Nyiakeng_Puachue_Hmong => "Nyiakeng_Puachue_Hmong",
+ Script::Old_Hungarian => "Old_Hungarian",
+ Script::Old_Italic => "Old_Italic",
+ Script::Javanese => "Javanese",
+ Script::Kayah_Li => "Kayah_Li",
+ Script::Katakana => "Katakana",
+ Script::Kharoshthi => "Kharoshthi",
+ Script::Khmer => "Khmer",
+ Script::Khojki => "Khojki",
+ Script::Khitan_Small_Script => "Khitan_Small_Script",
+ Script::Kannada => "Kannada",
+ Script::Kaithi => "Kaithi",
+ Script::Tai_Tham => "Tai_Tham",
+ Script::Lao => "Lao",
+ Script::Latin => "Latin",
+ Script::Lepcha => "Lepcha",
+ Script::Limbu => "Limbu",
+ Script::Linear_A => "Linear_A",
+ Script::Linear_B => "Linear_B",
+ Script::Lisu => "Lisu",
+ Script::Lycian => "Lycian",
+ Script::Lydian => "Lydian",
+ Script::Mahajani => "Mahajani",
+ Script::Makasar => "Makasar",
+ Script::Mandaic => "Mandaic",
+ Script::Manichaean => "Manichaean",
+ Script::Marchen => "Marchen",
+ Script::Medefaidrin => "Medefaidrin",
+ Script::Mende_Kikakui => "Mende_Kikakui",
+ Script::Meroitic_Cursive => "Meroitic_Cursive",
+ Script::Meroitic_Hieroglyphs => "Meroitic_Hieroglyphs",
+ Script::Malayalam => "Malayalam",
+ Script::Modi => "Modi",
+ Script::Mongolian => "Mongolian",
+ Script::Mro => "Mro",
+ Script::Meetei_Mayek => "Meetei_Mayek",
+ Script::Multani => "Multani",
+ Script::Myanmar => "Myanmar",
+ Script::Nandinagari => "Nandinagari",
+ Script::Old_North_Arabian => "Old_North_Arabian",
+ Script::Nabataean => "Nabataean",
+ Script::Newa => "Newa",
+ Script::Nko => "Nko",
+ Script::Nushu => "Nushu",
+ Script::Ogham => "Ogham",
+ Script::Ol_Chiki => "Ol_Chiki",
+ Script::Old_Turkic => "Old_Turkic",
+ Script::Oriya => "Oriya",
+ Script::Osage => "Osage",
+ Script::Osmanya => "Osmanya",
+ Script::Palmyrene => "Palmyrene",
+ Script::Pau_Cin_Hau => "Pau_Cin_Hau",
+ Script::Old_Permic => "Old_Permic",
+ Script::Phags_Pa => "Phags_Pa",
+ Script::Inscriptional_Pahlavi => "Inscriptional_Pahlavi",
+ Script::Psalter_Pahlavi => "Psalter_Pahlavi",
+ Script::Phoenician => "Phoenician",
+ Script::Miao => "Miao",
+ Script::Inscriptional_Parthian => "Inscriptional_Parthian",
+ Script::Rejang => "Rejang",
+ Script::Hanifi_Rohingya => "Hanifi_Rohingya",
+ Script::Runic => "Runic",
+ Script::Samaritan => "Samaritan",
+ Script::Old_South_Arabian => "Old_South_Arabian",
+ Script::Saurashtra => "Saurashtra",
+ Script::SignWriting => "SignWriting",
+ Script::Shavian => "Shavian",
+ Script::Sharada => "Sharada",
+ Script::Siddham => "Siddham",
+ Script::Khudawadi => "Khudawadi",
+ Script::Sinhala => "Sinhala",
+ Script::Sogdian => "Sogdian",
+ Script::Old_Sogdian => "Old_Sogdian",
+ Script::Sora_Sompeng => "Sora_Sompeng",
+ Script::Soyombo => "Soyombo",
+ Script::Sundanese => "Sundanese",
+ Script::Syloti_Nagri => "Syloti_Nagri",
+ Script::Syriac => "Syriac",
+ Script::Tagbanwa => "Tagbanwa",
+ Script::Takri => "Takri",
+ Script::Tai_Le => "Tai_Le",
+ Script::New_Tai_Lue => "New_Tai_Lue",
+ Script::Tamil => "Tamil",
+ Script::Tangut => "Tangut",
+ Script::Tai_Viet => "Tai_Viet",
+ Script::Telugu => "Telugu",
+ Script::Tifinagh => "Tifinagh",
+ Script::Tagalog => "Tagalog",
+ Script::Thaana => "Thaana",
+ Script::Thai => "Thai",
+ Script::Tibetan => "Tibetan",
+ Script::Tirhuta => "Tirhuta",
+ Script::Ugaritic => "Ugaritic",
+ Script::Vai => "Vai",
+ Script::Warang_Citi => "Warang_Citi",
+ Script::Wancho => "Wancho",
+ Script::Old_Persian => "Old_Persian",
+ Script::Cuneiform => "Cuneiform",
+ Script::Yezidi => "Yezidi",
+ Script::Yi => "Yi",
+ Script::Zanabazar_Square => "Zanabazar_Square",
+ }
+ }
+
+ #[inline]
+ pub(crate) fn inner_from_full_name(input: &str) -> Option<Self> {
+ match input {
+ "Unknown" => Some(Script::Unknown),
+ "Common" => Some(Script::Common),
+ "Inherited" => Some(Script::Inherited),
+ "Adlam" => Some(Script::Adlam),
+ "Caucasian_Albanian" => Some(Script::Caucasian_Albanian),
+ "Ahom" => Some(Script::Ahom),
+ "Arabic" => Some(Script::Arabic),
+ "Imperial_Aramaic" => Some(Script::Imperial_Aramaic),
+ "Armenian" => Some(Script::Armenian),
+ "Avestan" => Some(Script::Avestan),
+ "Balinese" => Some(Script::Balinese),
+ "Bamum" => Some(Script::Bamum),
+ "Bassa_Vah" => Some(Script::Bassa_Vah),
+ "Batak" => Some(Script::Batak),
+ "Bengali" => Some(Script::Bengali),
+ "Bhaiksuki" => Some(Script::Bhaiksuki),
+ "Bopomofo" => Some(Script::Bopomofo),
+ "Brahmi" => Some(Script::Brahmi),
+ "Braille" => Some(Script::Braille),
+ "Buginese" => Some(Script::Buginese),
+ "Buhid" => Some(Script::Buhid),
+ "Chakma" => Some(Script::Chakma),
+ "Canadian_Aboriginal" => Some(Script::Canadian_Aboriginal),
+ "Carian" => Some(Script::Carian),
+ "Cham" => Some(Script::Cham),
+ "Cherokee" => Some(Script::Cherokee),
+ "Chorasmian" => Some(Script::Chorasmian),
+ "Coptic" => Some(Script::Coptic),
+ "Cypriot" => Some(Script::Cypriot),
+ "Cyrillic" => Some(Script::Cyrillic),
+ "Devanagari" => Some(Script::Devanagari),
+ "Dives_Akuru" => Some(Script::Dives_Akuru),
+ "Dogra" => Some(Script::Dogra),
+ "Deseret" => Some(Script::Deseret),
+ "Duployan" => Some(Script::Duployan),
+ "Egyptian_Hieroglyphs" => Some(Script::Egyptian_Hieroglyphs),
+ "Elbasan" => Some(Script::Elbasan),
+ "Elymaic" => Some(Script::Elymaic),
+ "Ethiopic" => Some(Script::Ethiopic),
+ "Georgian" => Some(Script::Georgian),
+ "Glagolitic" => Some(Script::Glagolitic),
+ "Gunjala_Gondi" => Some(Script::Gunjala_Gondi),
+ "Masaram_Gondi" => Some(Script::Masaram_Gondi),
+ "Gothic" => Some(Script::Gothic),
+ "Grantha" => Some(Script::Grantha),
+ "Greek" => Some(Script::Greek),
+ "Gujarati" => Some(Script::Gujarati),
+ "Gurmukhi" => Some(Script::Gurmukhi),
+ "Hangul" => Some(Script::Hangul),
+ "Han" => Some(Script::Han),
+ "Hanunoo" => Some(Script::Hanunoo),
+ "Hatran" => Some(Script::Hatran),
+ "Hebrew" => Some(Script::Hebrew),
+ "Hiragana" => Some(Script::Hiragana),
+ "Anatolian_Hieroglyphs" => Some(Script::Anatolian_Hieroglyphs),
+ "Pahawh_Hmong" => Some(Script::Pahawh_Hmong),
+ "Nyiakeng_Puachue_Hmong" => Some(Script::Nyiakeng_Puachue_Hmong),
+ "Old_Hungarian" => Some(Script::Old_Hungarian),
+ "Old_Italic" => Some(Script::Old_Italic),
+ "Javanese" => Some(Script::Javanese),
+ "Kayah_Li" => Some(Script::Kayah_Li),
+ "Katakana" => Some(Script::Katakana),
+ "Kharoshthi" => Some(Script::Kharoshthi),
+ "Khmer" => Some(Script::Khmer),
+ "Khojki" => Some(Script::Khojki),
+ "Khitan_Small_Script" => Some(Script::Khitan_Small_Script),
+ "Kannada" => Some(Script::Kannada),
+ "Kaithi" => Some(Script::Kaithi),
+ "Tai_Tham" => Some(Script::Tai_Tham),
+ "Lao" => Some(Script::Lao),
+ "Latin" => Some(Script::Latin),
+ "Lepcha" => Some(Script::Lepcha),
+ "Limbu" => Some(Script::Limbu),
+ "Linear_A" => Some(Script::Linear_A),
+ "Linear_B" => Some(Script::Linear_B),
+ "Lisu" => Some(Script::Lisu),
+ "Lycian" => Some(Script::Lycian),
+ "Lydian" => Some(Script::Lydian),
+ "Mahajani" => Some(Script::Mahajani),
+ "Makasar" => Some(Script::Makasar),
+ "Mandaic" => Some(Script::Mandaic),
+ "Manichaean" => Some(Script::Manichaean),
+ "Marchen" => Some(Script::Marchen),
+ "Medefaidrin" => Some(Script::Medefaidrin),
+ "Mende_Kikakui" => Some(Script::Mende_Kikakui),
+ "Meroitic_Cursive" => Some(Script::Meroitic_Cursive),
+ "Meroitic_Hieroglyphs" => Some(Script::Meroitic_Hieroglyphs),
+ "Malayalam" => Some(Script::Malayalam),
+ "Modi" => Some(Script::Modi),
+ "Mongolian" => Some(Script::Mongolian),
+ "Mro" => Some(Script::Mro),
+ "Meetei_Mayek" => Some(Script::Meetei_Mayek),
+ "Multani" => Some(Script::Multani),
+ "Myanmar" => Some(Script::Myanmar),
+ "Nandinagari" => Some(Script::Nandinagari),
+ "Old_North_Arabian" => Some(Script::Old_North_Arabian),
+ "Nabataean" => Some(Script::Nabataean),
+ "Newa" => Some(Script::Newa),
+ "Nko" => Some(Script::Nko),
+ "Nushu" => Some(Script::Nushu),
+ "Ogham" => Some(Script::Ogham),
+ "Ol_Chiki" => Some(Script::Ol_Chiki),
+ "Old_Turkic" => Some(Script::Old_Turkic),
+ "Oriya" => Some(Script::Oriya),
+ "Osage" => Some(Script::Osage),
+ "Osmanya" => Some(Script::Osmanya),
+ "Palmyrene" => Some(Script::Palmyrene),
+ "Pau_Cin_Hau" => Some(Script::Pau_Cin_Hau),
+ "Old_Permic" => Some(Script::Old_Permic),
+ "Phags_Pa" => Some(Script::Phags_Pa),
+ "Inscriptional_Pahlavi" => Some(Script::Inscriptional_Pahlavi),
+ "Psalter_Pahlavi" => Some(Script::Psalter_Pahlavi),
+ "Phoenician" => Some(Script::Phoenician),
+ "Miao" => Some(Script::Miao),
+ "Inscriptional_Parthian" => Some(Script::Inscriptional_Parthian),
+ "Rejang" => Some(Script::Rejang),
+ "Hanifi_Rohingya" => Some(Script::Hanifi_Rohingya),
+ "Runic" => Some(Script::Runic),
+ "Samaritan" => Some(Script::Samaritan),
+ "Old_South_Arabian" => Some(Script::Old_South_Arabian),
+ "Saurashtra" => Some(Script::Saurashtra),
+ "SignWriting" => Some(Script::SignWriting),
+ "Shavian" => Some(Script::Shavian),
+ "Sharada" => Some(Script::Sharada),
+ "Siddham" => Some(Script::Siddham),
+ "Khudawadi" => Some(Script::Khudawadi),
+ "Sinhala" => Some(Script::Sinhala),
+ "Sogdian" => Some(Script::Sogdian),
+ "Old_Sogdian" => Some(Script::Old_Sogdian),
+ "Sora_Sompeng" => Some(Script::Sora_Sompeng),
+ "Soyombo" => Some(Script::Soyombo),
+ "Sundanese" => Some(Script::Sundanese),
+ "Syloti_Nagri" => Some(Script::Syloti_Nagri),
+ "Syriac" => Some(Script::Syriac),
+ "Tagbanwa" => Some(Script::Tagbanwa),
+ "Takri" => Some(Script::Takri),
+ "Tai_Le" => Some(Script::Tai_Le),
+ "New_Tai_Lue" => Some(Script::New_Tai_Lue),
+ "Tamil" => Some(Script::Tamil),
+ "Tangut" => Some(Script::Tangut),
+ "Tai_Viet" => Some(Script::Tai_Viet),
+ "Telugu" => Some(Script::Telugu),
+ "Tifinagh" => Some(Script::Tifinagh),
+ "Tagalog" => Some(Script::Tagalog),
+ "Thaana" => Some(Script::Thaana),
+ "Thai" => Some(Script::Thai),
+ "Tibetan" => Some(Script::Tibetan),
+ "Tirhuta" => Some(Script::Tirhuta),
+ "Ugaritic" => Some(Script::Ugaritic),
+ "Vai" => Some(Script::Vai),
+ "Warang_Citi" => Some(Script::Warang_Citi),
+ "Wancho" => Some(Script::Wancho),
+ "Old_Persian" => Some(Script::Old_Persian),
+ "Cuneiform" => Some(Script::Cuneiform),
+ "Yezidi" => Some(Script::Yezidi),
+ "Yi" => Some(Script::Yi),
+ "Zanabazar_Square" => Some(Script::Zanabazar_Square),
+ _ => None,
+ }
+ }
+
+ #[inline]
+ pub(crate) fn inner_short_name(self) -> &'static str {
+ match self {
+ Script::Unknown => "",
+ Script::Common => "Zyyy",
+ Script::Inherited => "Zinh",
+ Script::Adlam => "Adlm",
+ Script::Caucasian_Albanian => "Aghb",
+ Script::Ahom => "Ahom",
+ Script::Arabic => "Arab",
+ Script::Imperial_Aramaic => "Armi",
+ Script::Armenian => "Armn",
+ Script::Avestan => "Avst",
+ Script::Balinese => "Bali",
+ Script::Bamum => "Bamu",
+ Script::Bassa_Vah => "Bass",
+ Script::Batak => "Batk",
+ Script::Bengali => "Beng",
+ Script::Bhaiksuki => "Bhks",
+ Script::Bopomofo => "Bopo",
+ Script::Brahmi => "Brah",
+ Script::Braille => "Brai",
+ Script::Buginese => "Bugi",
+ Script::Buhid => "Buhd",
+ Script::Chakma => "Cakm",
+ Script::Canadian_Aboriginal => "Cans",
+ Script::Carian => "Cari",
+ Script::Cham => "Cham",
+ Script::Cherokee => "Cher",
+ Script::Chorasmian => "Chrs",
+ Script::Coptic => "Copt",
+ Script::Cypriot => "Cprt",
+ Script::Cyrillic => "Cyrl",
+ Script::Devanagari => "Deva",
+ Script::Dives_Akuru => "Diak",
+ Script::Dogra => "Dogr",
+ Script::Deseret => "Dsrt",
+ Script::Duployan => "Dupl",
+ Script::Egyptian_Hieroglyphs => "Egyp",
+ Script::Elbasan => "Elba",
+ Script::Elymaic => "Elym",
+ Script::Ethiopic => "Ethi",
+ Script::Georgian => "Geor",
+ Script::Glagolitic => "Glag",
+ Script::Gunjala_Gondi => "Gong",
+ Script::Masaram_Gondi => "Gonm",
+ Script::Gothic => "Goth",
+ Script::Grantha => "Gran",
+ Script::Greek => "Grek",
+ Script::Gujarati => "Gujr",
+ Script::Gurmukhi => "Guru",
+ Script::Hangul => "Hang",
+ Script::Han => "Hani",
+ Script::Hanunoo => "Hano",
+ Script::Hatran => "Hatr",
+ Script::Hebrew => "Hebr",
+ Script::Hiragana => "Hira",
+ Script::Anatolian_Hieroglyphs => "Hluw",
+ Script::Pahawh_Hmong => "Hmng",
+ Script::Nyiakeng_Puachue_Hmong => "Hmnp",
+ Script::Old_Hungarian => "Hung",
+ Script::Old_Italic => "Ital",
+ Script::Javanese => "Java",
+ Script::Kayah_Li => "Kali",
+ Script::Katakana => "Kana",
+ Script::Kharoshthi => "Khar",
+ Script::Khmer => "Khmr",
+ Script::Khojki => "Khoj",
+ Script::Khitan_Small_Script => "Kits",
+ Script::Kannada => "Knda",
+ Script::Kaithi => "Kthi",
+ Script::Tai_Tham => "Lana",
+ Script::Lao => "Laoo",
+ Script::Latin => "Latn",
+ Script::Lepcha => "Lepc",
+ Script::Limbu => "Limb",
+ Script::Linear_A => "Lina",
+ Script::Linear_B => "Linb",
+ Script::Lisu => "Lisu",
+ Script::Lycian => "Lyci",
+ Script::Lydian => "Lydi",
+ Script::Mahajani => "Mahj",
+ Script::Makasar => "Maka",
+ Script::Mandaic => "Mand",
+ Script::Manichaean => "Mani",
+ Script::Marchen => "Marc",
+ Script::Medefaidrin => "Medf",
+ Script::Mende_Kikakui => "Mend",
+ Script::Meroitic_Cursive => "Merc",
+ Script::Meroitic_Hieroglyphs => "Mero",
+ Script::Malayalam => "Mlym",
+ Script::Modi => "Modi",
+ Script::Mongolian => "Mong",
+ Script::Mro => "Mroo",
+ Script::Meetei_Mayek => "Mtei",
+ Script::Multani => "Mult",
+ Script::Myanmar => "Mymr",
+ Script::Nandinagari => "Nand",
+ Script::Old_North_Arabian => "Narb",
+ Script::Nabataean => "Nbat",
+ Script::Newa => "Newa",
+ Script::Nko => "Nkoo",
+ Script::Nushu => "Nshu",
+ Script::Ogham => "Ogam",
+ Script::Ol_Chiki => "Olck",
+ Script::Old_Turkic => "Orkh",
+ Script::Oriya => "Orya",
+ Script::Osage => "Osge",
+ Script::Osmanya => "Osma",
+ Script::Palmyrene => "Palm",
+ Script::Pau_Cin_Hau => "Pauc",
+ Script::Old_Permic => "Perm",
+ Script::Phags_Pa => "Phag",
+ Script::Inscriptional_Pahlavi => "Phli",
+ Script::Psalter_Pahlavi => "Phlp",
+ Script::Phoenician => "Phnx",
+ Script::Miao => "Plrd",
+ Script::Inscriptional_Parthian => "Prti",
+ Script::Rejang => "Rjng",
+ Script::Hanifi_Rohingya => "Rohg",
+ Script::Runic => "Runr",
+ Script::Samaritan => "Samr",
+ Script::Old_South_Arabian => "Sarb",
+ Script::Saurashtra => "Saur",
+ Script::SignWriting => "Sgnw",
+ Script::Shavian => "Shaw",
+ Script::Sharada => "Shrd",
+ Script::Siddham => "Sidd",
+ Script::Khudawadi => "Sind",
+ Script::Sinhala => "Sinh",
+ Script::Sogdian => "Sogd",
+ Script::Old_Sogdian => "Sogo",
+ Script::Sora_Sompeng => "Sora",
+ Script::Soyombo => "Soyo",
+ Script::Sundanese => "Sund",
+ Script::Syloti_Nagri => "Sylo",
+ Script::Syriac => "Syrc",
+ Script::Tagbanwa => "Tagb",
+ Script::Takri => "Takr",
+ Script::Tai_Le => "Tale",
+ Script::New_Tai_Lue => "Talu",
+ Script::Tamil => "Taml",
+ Script::Tangut => "Tang",
+ Script::Tai_Viet => "Tavt",
+ Script::Telugu => "Telu",
+ Script::Tifinagh => "Tfng",
+ Script::Tagalog => "Tglg",
+ Script::Thaana => "Thaa",
+ Script::Thai => "Thai",
+ Script::Tibetan => "Tibt",
+ Script::Tirhuta => "Tirh",
+ Script::Ugaritic => "Ugar",
+ Script::Vai => "Vaii",
+ Script::Warang_Citi => "Wara",
+ Script::Wancho => "Wcho",
+ Script::Old_Persian => "Xpeo",
+ Script::Cuneiform => "Xsux",
+ Script::Yezidi => "Yezi",
+ Script::Yi => "Yiii",
+ Script::Zanabazar_Square => "Zanb",
+ }
+ }
+
+ #[inline]
+ pub(crate) fn inner_from_short_name(input: &str) -> Option<Self> {
+ match input {
+ "Zyyy" => Some(Script::Common),
+ "Zinh" => Some(Script::Inherited),
+ "Adlm" => Some(Script::Adlam),
+ "Aghb" => Some(Script::Caucasian_Albanian),
+ "Ahom" => Some(Script::Ahom),
+ "Arab" => Some(Script::Arabic),
+ "Armi" => Some(Script::Imperial_Aramaic),
+ "Armn" => Some(Script::Armenian),
+ "Avst" => Some(Script::Avestan),
+ "Bali" => Some(Script::Balinese),
+ "Bamu" => Some(Script::Bamum),
+ "Bass" => Some(Script::Bassa_Vah),
+ "Batk" => Some(Script::Batak),
+ "Beng" => Some(Script::Bengali),
+ "Bhks" => Some(Script::Bhaiksuki),
+ "Bopo" => Some(Script::Bopomofo),
+ "Brah" => Some(Script::Brahmi),
+ "Brai" => Some(Script::Braille),
+ "Bugi" => Some(Script::Buginese),
+ "Buhd" => Some(Script::Buhid),
+ "Cakm" => Some(Script::Chakma),
+ "Cans" => Some(Script::Canadian_Aboriginal),
+ "Cari" => Some(Script::Carian),
+ "Cham" => Some(Script::Cham),
+ "Cher" => Some(Script::Cherokee),
+ "Chrs" => Some(Script::Chorasmian),
+ "Copt" => Some(Script::Coptic),
+ "Cprt" => Some(Script::Cypriot),
+ "Cyrl" => Some(Script::Cyrillic),
+ "Deva" => Some(Script::Devanagari),
+ "Diak" => Some(Script::Dives_Akuru),
+ "Dogr" => Some(Script::Dogra),
+ "Dsrt" => Some(Script::Deseret),
+ "Dupl" => Some(Script::Duployan),
+ "Egyp" => Some(Script::Egyptian_Hieroglyphs),
+ "Elba" => Some(Script::Elbasan),
+ "Elym" => Some(Script::Elymaic),
+ "Ethi" => Some(Script::Ethiopic),
+ "Geor" => Some(Script::Georgian),
+ "Glag" => Some(Script::Glagolitic),
+ "Gong" => Some(Script::Gunjala_Gondi),
+ "Gonm" => Some(Script::Masaram_Gondi),
+ "Goth" => Some(Script::Gothic),
+ "Gran" => Some(Script::Grantha),
+ "Grek" => Some(Script::Greek),
+ "Gujr" => Some(Script::Gujarati),
+ "Guru" => Some(Script::Gurmukhi),
+ "Hang" => Some(Script::Hangul),
+ "Hani" => Some(Script::Han),
+ "Hano" => Some(Script::Hanunoo),
+ "Hatr" => Some(Script::Hatran),
+ "Hebr" => Some(Script::Hebrew),
+ "Hira" => Some(Script::Hiragana),
+ "Hluw" => Some(Script::Anatolian_Hieroglyphs),
+ "Hmng" => Some(Script::Pahawh_Hmong),
+ "Hmnp" => Some(Script::Nyiakeng_Puachue_Hmong),
+ "Hung" => Some(Script::Old_Hungarian),
+ "Ital" => Some(Script::Old_Italic),
+ "Java" => Some(Script::Javanese),
+ "Kali" => Some(Script::Kayah_Li),
+ "Kana" => Some(Script::Katakana),
+ "Khar" => Some(Script::Kharoshthi),
+ "Khmr" => Some(Script::Khmer),
+ "Khoj" => Some(Script::Khojki),
+ "Kits" => Some(Script::Khitan_Small_Script),
+ "Knda" => Some(Script::Kannada),
+ "Kthi" => Some(Script::Kaithi),
+ "Lana" => Some(Script::Tai_Tham),
+ "Laoo" => Some(Script::Lao),
+ "Latn" => Some(Script::Latin),
+ "Lepc" => Some(Script::Lepcha),
+ "Limb" => Some(Script::Limbu),
+ "Lina" => Some(Script::Linear_A),
+ "Linb" => Some(Script::Linear_B),
+ "Lisu" => Some(Script::Lisu),
+ "Lyci" => Some(Script::Lycian),
+ "Lydi" => Some(Script::Lydian),
+ "Mahj" => Some(Script::Mahajani),
+ "Maka" => Some(Script::Makasar),
+ "Mand" => Some(Script::Mandaic),
+ "Mani" => Some(Script::Manichaean),
+ "Marc" => Some(Script::Marchen),
+ "Medf" => Some(Script::Medefaidrin),
+ "Mend" => Some(Script::Mende_Kikakui),
+ "Merc" => Some(Script::Meroitic_Cursive),
+ "Mero" => Some(Script::Meroitic_Hieroglyphs),
+ "Mlym" => Some(Script::Malayalam),
+ "Modi" => Some(Script::Modi),
+ "Mong" => Some(Script::Mongolian),
+ "Mroo" => Some(Script::Mro),
+ "Mtei" => Some(Script::Meetei_Mayek),
+ "Mult" => Some(Script::Multani),
+ "Mymr" => Some(Script::Myanmar),
+ "Nand" => Some(Script::Nandinagari),
+ "Narb" => Some(Script::Old_North_Arabian),
+ "Nbat" => Some(Script::Nabataean),
+ "Newa" => Some(Script::Newa),
+ "Nkoo" => Some(Script::Nko),
+ "Nshu" => Some(Script::Nushu),
+ "Ogam" => Some(Script::Ogham),
+ "Olck" => Some(Script::Ol_Chiki),
+ "Orkh" => Some(Script::Old_Turkic),
+ "Orya" => Some(Script::Oriya),
+ "Osge" => Some(Script::Osage),
+ "Osma" => Some(Script::Osmanya),
+ "Palm" => Some(Script::Palmyrene),
+ "Pauc" => Some(Script::Pau_Cin_Hau),
+ "Perm" => Some(Script::Old_Permic),
+ "Phag" => Some(Script::Phags_Pa),
+ "Phli" => Some(Script::Inscriptional_Pahlavi),
+ "Phlp" => Some(Script::Psalter_Pahlavi),
+ "Phnx" => Some(Script::Phoenician),
+ "Plrd" => Some(Script::Miao),
+ "Prti" => Some(Script::Inscriptional_Parthian),
+ "Rjng" => Some(Script::Rejang),
+ "Rohg" => Some(Script::Hanifi_Rohingya),
+ "Runr" => Some(Script::Runic),
+ "Samr" => Some(Script::Samaritan),
+ "Sarb" => Some(Script::Old_South_Arabian),
+ "Saur" => Some(Script::Saurashtra),
+ "Sgnw" => Some(Script::SignWriting),
+ "Shaw" => Some(Script::Shavian),
+ "Shrd" => Some(Script::Sharada),
+ "Sidd" => Some(Script::Siddham),
+ "Sind" => Some(Script::Khudawadi),
+ "Sinh" => Some(Script::Sinhala),
+ "Sogd" => Some(Script::Sogdian),
+ "Sogo" => Some(Script::Old_Sogdian),
+ "Sora" => Some(Script::Sora_Sompeng),
+ "Soyo" => Some(Script::Soyombo),
+ "Sund" => Some(Script::Sundanese),
+ "Sylo" => Some(Script::Syloti_Nagri),
+ "Syrc" => Some(Script::Syriac),
+ "Tagb" => Some(Script::Tagbanwa),
+ "Takr" => Some(Script::Takri),
+ "Tale" => Some(Script::Tai_Le),
+ "Talu" => Some(Script::New_Tai_Lue),
+ "Taml" => Some(Script::Tamil),
+ "Tang" => Some(Script::Tangut),
+ "Tavt" => Some(Script::Tai_Viet),
+ "Telu" => Some(Script::Telugu),
+ "Tfng" => Some(Script::Tifinagh),
+ "Tglg" => Some(Script::Tagalog),
+ "Thaa" => Some(Script::Thaana),
+ "Thai" => Some(Script::Thai),
+ "Tibt" => Some(Script::Tibetan),
+ "Tirh" => Some(Script::Tirhuta),
+ "Ugar" => Some(Script::Ugaritic),
+ "Vaii" => Some(Script::Vai),
+ "Wara" => Some(Script::Warang_Citi),
+ "Wcho" => Some(Script::Wancho),
+ "Xpeo" => Some(Script::Old_Persian),
+ "Xsux" => Some(Script::Cuneiform),
+ "Yezi" => Some(Script::Yezidi),
+ "Yiii" => Some(Script::Yi),
+ "Zanb" => Some(Script::Zanabazar_Square),
+ _ => None,
+ }
+ }
+
+ #[inline]
+ pub(crate) fn for_integer(value: u8) -> Self {
+ match value {
+ 0 => Script::Adlam,
+ 1 => Script::Caucasian_Albanian,
+ 2 => Script::Ahom,
+ 3 => Script::Arabic,
+ 4 => Script::Imperial_Aramaic,
+ 5 => Script::Armenian,
+ 6 => Script::Avestan,
+ 7 => Script::Balinese,
+ 8 => Script::Bamum,
+ 9 => Script::Bassa_Vah,
+ 10 => Script::Batak,
+ 11 => Script::Bengali,
+ 12 => Script::Bhaiksuki,
+ 13 => Script::Bopomofo,
+ 14 => Script::Brahmi,
+ 15 => Script::Braille,
+ 16 => Script::Buginese,
+ 17 => Script::Buhid,
+ 18 => Script::Chakma,
+ 19 => Script::Canadian_Aboriginal,
+ 20 => Script::Carian,
+ 21 => Script::Cham,
+ 22 => Script::Cherokee,
+ 23 => Script::Chorasmian,
+ 24 => Script::Coptic,
+ 25 => Script::Cypriot,
+ 26 => Script::Cyrillic,
+ 27 => Script::Devanagari,
+ 28 => Script::Dives_Akuru,
+ 29 => Script::Dogra,
+ 30 => Script::Deseret,
+ 31 => Script::Duployan,
+ 32 => Script::Egyptian_Hieroglyphs,
+ 33 => Script::Elbasan,
+ 34 => Script::Elymaic,
+ 35 => Script::Ethiopic,
+ 36 => Script::Georgian,
+ 37 => Script::Glagolitic,
+ 38 => Script::Gunjala_Gondi,
+ 39 => Script::Masaram_Gondi,
+ 40 => Script::Gothic,
+ 41 => Script::Grantha,
+ 42 => Script::Greek,
+ 43 => Script::Gujarati,
+ 44 => Script::Gurmukhi,
+ 45 => Script::Hangul,
+ 46 => Script::Han,
+ 47 => Script::Hanunoo,
+ 48 => Script::Hatran,
+ 49 => Script::Hebrew,
+ 50 => Script::Hiragana,
+ 51 => Script::Anatolian_Hieroglyphs,
+ 52 => Script::Pahawh_Hmong,
+ 53 => Script::Nyiakeng_Puachue_Hmong,
+ 54 => Script::Old_Hungarian,
+ 55 => Script::Old_Italic,
+ 56 => Script::Javanese,
+ 57 => Script::Kayah_Li,
+ 58 => Script::Katakana,
+ 59 => Script::Kharoshthi,
+ 60 => Script::Khmer,
+ 61 => Script::Khojki,
+ 62 => Script::Khitan_Small_Script,
+ 63 => Script::Kannada,
+ 64 => Script::Kaithi,
+ 65 => Script::Tai_Tham,
+ 66 => Script::Lao,
+ 67 => Script::Latin,
+ 68 => Script::Lepcha,
+ 69 => Script::Limbu,
+ 70 => Script::Linear_A,
+ 71 => Script::Linear_B,
+ 72 => Script::Lisu,
+ 73 => Script::Lycian,
+ 74 => Script::Lydian,
+ 75 => Script::Mahajani,
+ 76 => Script::Makasar,
+ 77 => Script::Mandaic,
+ 78 => Script::Manichaean,
+ 79 => Script::Marchen,
+ 80 => Script::Medefaidrin,
+ 81 => Script::Mende_Kikakui,
+ 82 => Script::Meroitic_Cursive,
+ 83 => Script::Meroitic_Hieroglyphs,
+ 84 => Script::Malayalam,
+ 85 => Script::Modi,
+ 86 => Script::Mongolian,
+ 87 => Script::Mro,
+ 88 => Script::Meetei_Mayek,
+ 89 => Script::Multani,
+ 90 => Script::Myanmar,
+ 91 => Script::Nandinagari,
+ 92 => Script::Old_North_Arabian,
+ 93 => Script::Nabataean,
+ 94 => Script::Newa,
+ 95 => Script::Nko,
+ 96 => Script::Nushu,
+ 97 => Script::Ogham,
+ 98 => Script::Ol_Chiki,
+ 99 => Script::Old_Turkic,
+ 100 => Script::Oriya,
+ 101 => Script::Osage,
+ 102 => Script::Osmanya,
+ 103 => Script::Palmyrene,
+ 104 => Script::Pau_Cin_Hau,
+ 105 => Script::Old_Permic,
+ 106 => Script::Phags_Pa,
+ 107 => Script::Inscriptional_Pahlavi,
+ 108 => Script::Psalter_Pahlavi,
+ 109 => Script::Phoenician,
+ 110 => Script::Miao,
+ 111 => Script::Inscriptional_Parthian,
+ 112 => Script::Rejang,
+ 113 => Script::Hanifi_Rohingya,
+ 114 => Script::Runic,
+ 115 => Script::Samaritan,
+ 116 => Script::Old_South_Arabian,
+ 117 => Script::Saurashtra,
+ 118 => Script::SignWriting,
+ 119 => Script::Shavian,
+ 120 => Script::Sharada,
+ 121 => Script::Siddham,
+ 122 => Script::Khudawadi,
+ 123 => Script::Sinhala,
+ 124 => Script::Sogdian,
+ 125 => Script::Old_Sogdian,
+ 126 => Script::Sora_Sompeng,
+ 127 => Script::Soyombo,
+ 128 => Script::Sundanese,
+ 129 => Script::Syloti_Nagri,
+ 130 => Script::Syriac,
+ 131 => Script::Tagbanwa,
+ 132 => Script::Takri,
+ 133 => Script::Tai_Le,
+ 134 => Script::New_Tai_Lue,
+ 135 => Script::Tamil,
+ 136 => Script::Tangut,
+ 137 => Script::Tai_Viet,
+ 138 => Script::Telugu,
+ 139 => Script::Tifinagh,
+ 140 => Script::Tagalog,
+ 141 => Script::Thaana,
+ 142 => Script::Thai,
+ 143 => Script::Tibetan,
+ 144 => Script::Tirhuta,
+ 145 => Script::Ugaritic,
+ 146 => Script::Vai,
+ 147 => Script::Warang_Citi,
+ 148 => Script::Wancho,
+ 149 => Script::Old_Persian,
+ 150 => Script::Cuneiform,
+ 151 => Script::Yezidi,
+ 152 => Script::Yi,
+ 153 => Script::Zanabazar_Square,
+ _ => unreachable!(),
+ }
+ }
+
+}
+
+pub fn bsearch_range_value_table<T: Copy>(c: char, r: &'static [(char, char, T)]) -> Option<T> {
+ use core::cmp::Ordering::{Equal, Less, Greater};
+ match r.binary_search_by(|&(lo, hi, _)| {
+ if lo <= c && c <= hi { Equal }
+ else if hi < c { Less }
+ else { Greater }
+ }) {
+ Ok(idx) => {
+ let (_, _, cat) = r[idx];
+ Some(cat)
+ }
+ Err(_) => None
+ }
+}
+
+#[inline]
+pub fn get_script(c: char) -> Option<Script> {
+ bsearch_range_value_table(c, SCRIPTS)
+}
+
+#[inline]
+pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
+ bsearch_range_value_table(c, SCRIPT_EXTENSIONS)
+}
+ const SCRIPTS: &'static [(char, char, Script)] = &[
+ ('\u{0}', '\u{1f}', Script::Common), ('\u{20}', '\u{20}', Script::Common), ('\u{21}',
+ '\u{23}', Script::Common), ('\u{24}', '\u{24}', Script::Common), ('\u{25}', '\u{27}',
+ Script::Common), ('\u{28}', '\u{28}', Script::Common), ('\u{29}', '\u{29}',
+ Script::Common), ('\u{2a}', '\u{2a}', Script::Common), ('\u{2b}', '\u{2b}',
+ Script::Common), ('\u{2c}', '\u{2c}', Script::Common), ('\u{2d}', '\u{2d}',
+ Script::Common), ('\u{2e}', '\u{2f}', Script::Common), ('\u{30}', '\u{39}',
+ Script::Common), ('\u{3a}', '\u{3b}', Script::Common), ('\u{3c}', '\u{3e}',
+ Script::Common), ('\u{3f}', '\u{40}', Script::Common), ('\u{41}', '\u{5a}',
+ Script::Latin), ('\u{5b}', '\u{5b}', Script::Common), ('\u{5c}', '\u{5c}',
+ Script::Common), ('\u{5d}', '\u{5d}', Script::Common), ('\u{5e}', '\u{5e}',
+ Script::Common), ('\u{5f}', '\u{5f}', Script::Common), ('\u{60}', '\u{60}',
+ Script::Common), ('\u{61}', '\u{7a}', Script::Latin), ('\u{7b}', '\u{7b}',
+ Script::Common), ('\u{7c}', '\u{7c}', Script::Common), ('\u{7d}', '\u{7d}',
+ Script::Common), ('\u{7e}', '\u{7e}', Script::Common), ('\u{7f}', '\u{9f}',
+ Script::Common), ('\u{a0}', '\u{a0}', Script::Common), ('\u{a1}', '\u{a1}',
+ Script::Common), ('\u{a2}', '\u{a5}', Script::Common), ('\u{a6}', '\u{a6}',
+ Script::Common), ('\u{a7}', '\u{a7}', Script::Common), ('\u{a8}', '\u{a8}',
+ Script::Common), ('\u{a9}', '\u{a9}', Script::Common), ('\u{aa}', '\u{aa}',
+ Script::Latin), ('\u{ab}', '\u{ab}', Script::Common), ('\u{ac}', '\u{ac}',
+ Script::Common), ('\u{ad}', '\u{ad}', Script::Common), ('\u{ae}', '\u{ae}',
+ Script::Common), ('\u{af}', '\u{af}', Script::Common), ('\u{b0}', '\u{b0}',
+ Script::Common), ('\u{b1}', '\u{b1}', Script::Common), ('\u{b2}', '\u{b3}',
+ Script::Common), ('\u{b4}', '\u{b4}', Script::Common), ('\u{b5}', '\u{b5}',
+ Script::Common), ('\u{b6}', '\u{b7}', Script::Common), ('\u{b8}', '\u{b8}',
+ Script::Common), ('\u{b9}', '\u{b9}', Script::Common), ('\u{ba}', '\u{ba}',
+ Script::Latin), ('\u{bb}', '\u{bb}', Script::Common), ('\u{bc}', '\u{be}',
+ Script::Common), ('\u{bf}', '\u{bf}', Script::Common), ('\u{c0}', '\u{d6}',
+ Script::Latin), ('\u{d7}', '\u{d7}', Script::Common), ('\u{d8}', '\u{f6}',
+ Script::Latin), ('\u{f7}', '\u{f7}', Script::Common), ('\u{f8}', '\u{1ba}',
+ Script::Latin), ('\u{1bb}', '\u{1bb}', Script::Latin), ('\u{1bc}', '\u{1bf}',
+ Script::Latin), ('\u{1c0}', '\u{1c3}', Script::Latin), ('\u{1c4}', '\u{293}',
+ Script::Latin), ('\u{294}', '\u{294}', Script::Latin), ('\u{295}', '\u{2af}',
+ Script::Latin), ('\u{2b0}', '\u{2b8}', Script::Latin), ('\u{2b9}', '\u{2c1}',
+ Script::Common), ('\u{2c2}', '\u{2c5}', Script::Common), ('\u{2c6}', '\u{2d1}',
+ Script::Common), ('\u{2d2}', '\u{2df}', Script::Common), ('\u{2e0}', '\u{2e4}',
+ Script::Latin), ('\u{2e5}', '\u{2e9}', Script::Common), ('\u{2ea}', '\u{2eb}',
+ Script::Bopomofo), ('\u{2ec}', '\u{2ec}', Script::Common), ('\u{2ed}', '\u{2ed}',
+ Script::Common), ('\u{2ee}', '\u{2ee}', Script::Common), ('\u{2ef}', '\u{2ff}',
+ Script::Common), ('\u{300}', '\u{36f}', Script::Inherited), ('\u{370}', '\u{373}',
+ Script::Greek), ('\u{374}', '\u{374}', Script::Common), ('\u{375}', '\u{375}',
+ Script::Greek), ('\u{376}', '\u{377}', Script::Greek), ('\u{37a}', '\u{37a}',
+ Script::Greek), ('\u{37b}', '\u{37d}', Script::Greek), ('\u{37e}', '\u{37e}',
+ Script::Common), ('\u{37f}', '\u{37f}', Script::Greek), ('\u{384}', '\u{384}',
+ Script::Greek), ('\u{385}', '\u{385}', Script::Common), ('\u{386}', '\u{386}',
+ Script::Greek), ('\u{387}', '\u{387}', Script::Common), ('\u{388}', '\u{38a}',
+ Script::Greek), ('\u{38c}', '\u{38c}', Script::Greek), ('\u{38e}', '\u{3a1}',
+ Script::Greek), ('\u{3a3}', '\u{3e1}', Script::Greek), ('\u{3e2}', '\u{3ef}',
+ Script::Coptic), ('\u{3f0}', '\u{3f5}', Script::Greek), ('\u{3f6}', '\u{3f6}',
+ Script::Greek), ('\u{3f7}', '\u{3ff}', Script::Greek), ('\u{400}', '\u{481}',
+ Script::Cyrillic), ('\u{482}', '\u{482}', Script::Cyrillic), ('\u{483}', '\u{484}',
+ Script::Cyrillic), ('\u{485}', '\u{486}', Script::Inherited), ('\u{487}', '\u{487}',
+ Script::Cyrillic), ('\u{488}', '\u{489}', Script::Cyrillic), ('\u{48a}', '\u{52f}',
+ Script::Cyrillic), ('\u{531}', '\u{556}', Script::Armenian), ('\u{559}', '\u{559}',
+ Script::Armenian), ('\u{55a}', '\u{55f}', Script::Armenian), ('\u{560}', '\u{588}',
+ Script::Armenian), ('\u{589}', '\u{589}', Script::Armenian), ('\u{58a}', '\u{58a}',
+ Script::Armenian), ('\u{58d}', '\u{58e}', Script::Armenian), ('\u{58f}', '\u{58f}',
+ Script::Armenian), ('\u{591}', '\u{5bd}', Script::Hebrew), ('\u{5be}', '\u{5be}',
+ Script::Hebrew), ('\u{5bf}', '\u{5bf}', Script::Hebrew), ('\u{5c0}', '\u{5c0}',
+ Script::Hebrew), ('\u{5c1}', '\u{5c2}', Script::Hebrew), ('\u{5c3}', '\u{5c3}',
+ Script::Hebrew), ('\u{5c4}', '\u{5c5}', Script::Hebrew), ('\u{5c6}', '\u{5c6}',
+ Script::Hebrew), ('\u{5c7}', '\u{5c7}', Script::Hebrew), ('\u{5d0}', '\u{5ea}',
+ Script::Hebrew), ('\u{5ef}', '\u{5f2}', Script::Hebrew), ('\u{5f3}', '\u{5f4}',
+ Script::Hebrew), ('\u{600}', '\u{604}', Script::Arabic), ('\u{605}', '\u{605}',
+ Script::Common), ('\u{606}', '\u{608}', Script::Arabic), ('\u{609}', '\u{60a}',
+ Script::Arabic), ('\u{60b}', '\u{60b}', Script::Arabic), ('\u{60c}', '\u{60c}',
+ Script::Common), ('\u{60d}', '\u{60d}', Script::Arabic), ('\u{60e}', '\u{60f}',
+ Script::Arabic), ('\u{610}', '\u{61a}', Script::Arabic), ('\u{61b}', '\u{61b}',
+ Script::Common), ('\u{61c}', '\u{61c}', Script::Arabic), ('\u{61e}', '\u{61e}',
+ Script::Arabic), ('\u{61f}', '\u{61f}', Script::Common), ('\u{620}', '\u{63f}',
+ Script::Arabic), ('\u{640}', '\u{640}', Script::Common), ('\u{641}', '\u{64a}',
+ Script::Arabic), ('\u{64b}', '\u{655}', Script::Inherited), ('\u{656}', '\u{65f}',
+ Script::Arabic), ('\u{660}', '\u{669}', Script::Arabic), ('\u{66a}', '\u{66d}',
+ Script::Arabic), ('\u{66e}', '\u{66f}', Script::Arabic), ('\u{670}', '\u{670}',
+ Script::Inherited), ('\u{671}', '\u{6d3}', Script::Arabic), ('\u{6d4}', '\u{6d4}',
+ Script::Arabic), ('\u{6d5}', '\u{6d5}', Script::Arabic), ('\u{6d6}', '\u{6dc}',
+ Script::Arabic), ('\u{6dd}', '\u{6dd}', Script::Common), ('\u{6de}', '\u{6de}',
+ Script::Arabic), ('\u{6df}', '\u{6e4}', Script::Arabic), ('\u{6e5}', '\u{6e6}',
+ Script::Arabic), ('\u{6e7}', '\u{6e8}', Script::Arabic), ('\u{6e9}', '\u{6e9}',
+ Script::Arabic), ('\u{6ea}', '\u{6ed}', Script::Arabic), ('\u{6ee}', '\u{6ef}',
+ Script::Arabic), ('\u{6f0}', '\u{6f9}', Script::Arabic), ('\u{6fa}', '\u{6fc}',
+ Script::Arabic), ('\u{6fd}', '\u{6fe}', Script::Arabic), ('\u{6ff}', '\u{6ff}',
+ Script::Arabic), ('\u{700}', '\u{70d}', Script::Syriac), ('\u{70f}', '\u{70f}',
+ Script::Syriac), ('\u{710}', '\u{710}', Script::Syriac), ('\u{711}', '\u{711}',
+ Script::Syriac), ('\u{712}', '\u{72f}', Script::Syriac), ('\u{730}', '\u{74a}',
+ Script::Syriac), ('\u{74d}', '\u{74f}', Script::Syriac), ('\u{750}', '\u{77f}',
+ Script::Arabic), ('\u{780}', '\u{7a5}', Script::Thaana), ('\u{7a6}', '\u{7b0}',
+ Script::Thaana), ('\u{7b1}', '\u{7b1}', Script::Thaana), ('\u{7c0}', '\u{7c9}',
+ Script::Nko), ('\u{7ca}', '\u{7ea}', Script::Nko), ('\u{7eb}', '\u{7f3}', Script::Nko),
+ ('\u{7f4}', '\u{7f5}', Script::Nko), ('\u{7f6}', '\u{7f6}', Script::Nko), ('\u{7f7}',
+ '\u{7f9}', Script::Nko), ('\u{7fa}', '\u{7fa}', Script::Nko), ('\u{7fd}', '\u{7fd}',
+ Script::Nko), ('\u{7fe}', '\u{7ff}', Script::Nko), ('\u{800}', '\u{815}',
+ Script::Samaritan), ('\u{816}', '\u{819}', Script::Samaritan), ('\u{81a}', '\u{81a}',
+ Script::Samaritan), ('\u{81b}', '\u{823}', Script::Samaritan), ('\u{824}', '\u{824}',
+ Script::Samaritan), ('\u{825}', '\u{827}', Script::Samaritan), ('\u{828}', '\u{828}',
+ Script::Samaritan), ('\u{829}', '\u{82d}', Script::Samaritan), ('\u{830}', '\u{83e}',
+ Script::Samaritan), ('\u{840}', '\u{858}', Script::Mandaic), ('\u{859}', '\u{85b}',
+ Script::Mandaic), ('\u{85e}', '\u{85e}', Script::Mandaic), ('\u{860}', '\u{86a}',
+ Script::Syriac), ('\u{8a0}', '\u{8b4}', Script::Arabic), ('\u{8b6}', '\u{8c7}',
+ Script::Arabic), ('\u{8d3}', '\u{8e1}', Script::Arabic), ('\u{8e2}', '\u{8e2}',
+ Script::Common), ('\u{8e3}', '\u{8ff}', Script::Arabic), ('\u{900}', '\u{902}',
+ Script::Devanagari), ('\u{903}', '\u{903}', Script::Devanagari), ('\u{904}', '\u{939}',
+ Script::Devanagari), ('\u{93a}', '\u{93a}', Script::Devanagari), ('\u{93b}', '\u{93b}',
+ Script::Devanagari), ('\u{93c}', '\u{93c}', Script::Devanagari), ('\u{93d}', '\u{93d}',
+ Script::Devanagari), ('\u{93e}', '\u{940}', Script::Devanagari), ('\u{941}', '\u{948}',
+ Script::Devanagari), ('\u{949}', '\u{94c}', Script::Devanagari), ('\u{94d}', '\u{94d}',
+ Script::Devanagari), ('\u{94e}', '\u{94f}', Script::Devanagari), ('\u{950}', '\u{950}',
+ Script::Devanagari), ('\u{951}', '\u{954}', Script::Inherited), ('\u{955}', '\u{957}',
+ Script::Devanagari), ('\u{958}', '\u{961}', Script::Devanagari), ('\u{962}', '\u{963}',
+ Script::Devanagari), ('\u{964}', '\u{965}', Script::Common), ('\u{966}', '\u{96f}',
+ Script::Devanagari), ('\u{970}', '\u{970}', Script::Devanagari), ('\u{971}', '\u{971}',
+ Script::Devanagari), ('\u{972}', '\u{97f}', Script::Devanagari), ('\u{980}', '\u{980}',
+ Script::Bengali), ('\u{981}', '\u{981}', Script::Bengali), ('\u{982}', '\u{983}',
+ Script::Bengali), ('\u{985}', '\u{98c}', Script::Bengali), ('\u{98f}', '\u{990}',
+ Script::Bengali), ('\u{993}', '\u{9a8}', Script::Bengali), ('\u{9aa}', '\u{9b0}',
+ Script::Bengali), ('\u{9b2}', '\u{9b2}', Script::Bengali), ('\u{9b6}', '\u{9b9}',
+ Script::Bengali), ('\u{9bc}', '\u{9bc}', Script::Bengali), ('\u{9bd}', '\u{9bd}',
+ Script::Bengali), ('\u{9be}', '\u{9c0}', Script::Bengali), ('\u{9c1}', '\u{9c4}',
+ Script::Bengali), ('\u{9c7}', '\u{9c8}', Script::Bengali), ('\u{9cb}', '\u{9cc}',
+ Script::Bengali), ('\u{9cd}', '\u{9cd}', Script::Bengali), ('\u{9ce}', '\u{9ce}',
+ Script::Bengali), ('\u{9d7}', '\u{9d7}', Script::Bengali), ('\u{9dc}', '\u{9dd}',
+ Script::Bengali), ('\u{9df}', '\u{9e1}', Script::Bengali), ('\u{9e2}', '\u{9e3}',
+ Script::Bengali), ('\u{9e6}', '\u{9ef}', Script::Bengali), ('\u{9f0}', '\u{9f1}',
+ Script::Bengali), ('\u{9f2}', '\u{9f3}', Script::Bengali), ('\u{9f4}', '\u{9f9}',
+ Script::Bengali), ('\u{9fa}', '\u{9fa}', Script::Bengali), ('\u{9fb}', '\u{9fb}',
+ Script::Bengali), ('\u{9fc}', '\u{9fc}', Script::Bengali), ('\u{9fd}', '\u{9fd}',
+ Script::Bengali), ('\u{9fe}', '\u{9fe}', Script::Bengali), ('\u{a01}', '\u{a02}',
+ Script::Gurmukhi), ('\u{a03}', '\u{a03}', Script::Gurmukhi), ('\u{a05}', '\u{a0a}',
+ Script::Gurmukhi), ('\u{a0f}', '\u{a10}', Script::Gurmukhi), ('\u{a13}', '\u{a28}',
+ Script::Gurmukhi), ('\u{a2a}', '\u{a30}', Script::Gurmukhi), ('\u{a32}', '\u{a33}',
+ Script::Gurmukhi), ('\u{a35}', '\u{a36}', Script::Gurmukhi), ('\u{a38}', '\u{a39}',
+ Script::Gurmukhi), ('\u{a3c}', '\u{a3c}', Script::Gurmukhi), ('\u{a3e}', '\u{a40}',
+ Script::Gurmukhi), ('\u{a41}', '\u{a42}', Script::Gurmukhi), ('\u{a47}', '\u{a48}',
+ Script::Gurmukhi), ('\u{a4b}', '\u{a4d}', Script::Gurmukhi), ('\u{a51}', '\u{a51}',
+ Script::Gurmukhi), ('\u{a59}', '\u{a5c}', Script::Gurmukhi), ('\u{a5e}', '\u{a5e}',
+ Script::Gurmukhi), ('\u{a66}', '\u{a6f}', Script::Gurmukhi), ('\u{a70}', '\u{a71}',
+ Script::Gurmukhi), ('\u{a72}', '\u{a74}', Script::Gurmukhi), ('\u{a75}', '\u{a75}',
+ Script::Gurmukhi), ('\u{a76}', '\u{a76}', Script::Gurmukhi), ('\u{a81}', '\u{a82}',
+ Script::Gujarati), ('\u{a83}', '\u{a83}', Script::Gujarati), ('\u{a85}', '\u{a8d}',
+ Script::Gujarati), ('\u{a8f}', '\u{a91}', Script::Gujarati), ('\u{a93}', '\u{aa8}',
+ Script::Gujarati), ('\u{aaa}', '\u{ab0}', Script::Gujarati), ('\u{ab2}', '\u{ab3}',
+ Script::Gujarati), ('\u{ab5}', '\u{ab9}', Script::Gujarati), ('\u{abc}', '\u{abc}',
+ Script::Gujarati), ('\u{abd}', '\u{abd}', Script::Gujarati), ('\u{abe}', '\u{ac0}',
+ Script::Gujarati), ('\u{ac1}', '\u{ac5}', Script::Gujarati), ('\u{ac7}', '\u{ac8}',
+ Script::Gujarati), ('\u{ac9}', '\u{ac9}', Script::Gujarati), ('\u{acb}', '\u{acc}',
+ Script::Gujarati), ('\u{acd}', '\u{acd}', Script::Gujarati), ('\u{ad0}', '\u{ad0}',
+ Script::Gujarati), ('\u{ae0}', '\u{ae1}', Script::Gujarati), ('\u{ae2}', '\u{ae3}',
+ Script::Gujarati), ('\u{ae6}', '\u{aef}', Script::Gujarati), ('\u{af0}', '\u{af0}',
+ Script::Gujarati), ('\u{af1}', '\u{af1}', Script::Gujarati), ('\u{af9}', '\u{af9}',
+ Script::Gujarati), ('\u{afa}', '\u{aff}', Script::Gujarati), ('\u{b01}', '\u{b01}',
+ Script::Oriya), ('\u{b02}', '\u{b03}', Script::Oriya), ('\u{b05}', '\u{b0c}',
+ Script::Oriya), ('\u{b0f}', '\u{b10}', Script::Oriya), ('\u{b13}', '\u{b28}',
+ Script::Oriya), ('\u{b2a}', '\u{b30}', Script::Oriya), ('\u{b32}', '\u{b33}',
+ Script::Oriya), ('\u{b35}', '\u{b39}', Script::Oriya), ('\u{b3c}', '\u{b3c}',
+ Script::Oriya), ('\u{b3d}', '\u{b3d}', Script::Oriya), ('\u{b3e}', '\u{b3e}',
+ Script::Oriya), ('\u{b3f}', '\u{b3f}', Script::Oriya), ('\u{b40}', '\u{b40}',
+ Script::Oriya), ('\u{b41}', '\u{b44}', Script::Oriya), ('\u{b47}', '\u{b48}',
+ Script::Oriya), ('\u{b4b}', '\u{b4c}', Script::Oriya), ('\u{b4d}', '\u{b4d}',
+ Script::Oriya), ('\u{b55}', '\u{b56}', Script::Oriya), ('\u{b57}', '\u{b57}',
+ Script::Oriya), ('\u{b5c}', '\u{b5d}', Script::Oriya), ('\u{b5f}', '\u{b61}',
+ Script::Oriya), ('\u{b62}', '\u{b63}', Script::Oriya), ('\u{b66}', '\u{b6f}',
+ Script::Oriya), ('\u{b70}', '\u{b70}', Script::Oriya), ('\u{b71}', '\u{b71}',
+ Script::Oriya), ('\u{b72}', '\u{b77}', Script::Oriya), ('\u{b82}', '\u{b82}',
+ Script::Tamil), ('\u{b83}', '\u{b83}', Script::Tamil), ('\u{b85}', '\u{b8a}',
+ Script::Tamil), ('\u{b8e}', '\u{b90}', Script::Tamil), ('\u{b92}', '\u{b95}',
+ Script::Tamil), ('\u{b99}', '\u{b9a}', Script::Tamil), ('\u{b9c}', '\u{b9c}',
+ Script::Tamil), ('\u{b9e}', '\u{b9f}', Script::Tamil), ('\u{ba3}', '\u{ba4}',
+ Script::Tamil), ('\u{ba8}', '\u{baa}', Script::Tamil), ('\u{bae}', '\u{bb9}',
+ Script::Tamil), ('\u{bbe}', '\u{bbf}', Script::Tamil), ('\u{bc0}', '\u{bc0}',
+ Script::Tamil), ('\u{bc1}', '\u{bc2}', Script::Tamil), ('\u{bc6}', '\u{bc8}',
+ Script::Tamil), ('\u{bca}', '\u{bcc}', Script::Tamil), ('\u{bcd}', '\u{bcd}',
+ Script::Tamil), ('\u{bd0}', '\u{bd0}', Script::Tamil), ('\u{bd7}', '\u{bd7}',
+ Script::Tamil), ('\u{be6}', '\u{bef}', Script::Tamil), ('\u{bf0}', '\u{bf2}',
+ Script::Tamil), ('\u{bf3}', '\u{bf8}', Script::Tamil), ('\u{bf9}', '\u{bf9}',
+ Script::Tamil), ('\u{bfa}', '\u{bfa}', Script::Tamil), ('\u{c00}', '\u{c00}',
+ Script::Telugu), ('\u{c01}', '\u{c03}', Script::Telugu), ('\u{c04}', '\u{c04}',
+ Script::Telugu), ('\u{c05}', '\u{c0c}', Script::Telugu), ('\u{c0e}', '\u{c10}',
+ Script::Telugu), ('\u{c12}', '\u{c28}', Script::Telugu), ('\u{c2a}', '\u{c39}',
+ Script::Telugu), ('\u{c3d}', '\u{c3d}', Script::Telugu), ('\u{c3e}', '\u{c40}',
+ Script::Telugu), ('\u{c41}', '\u{c44}', Script::Telugu), ('\u{c46}', '\u{c48}',
+ Script::Telugu), ('\u{c4a}', '\u{c4d}', Script::Telugu), ('\u{c55}', '\u{c56}',
+ Script::Telugu), ('\u{c58}', '\u{c5a}', Script::Telugu), ('\u{c60}', '\u{c61}',
+ Script::Telugu), ('\u{c62}', '\u{c63}', Script::Telugu), ('\u{c66}', '\u{c6f}',
+ Script::Telugu), ('\u{c77}', '\u{c77}', Script::Telugu), ('\u{c78}', '\u{c7e}',
+ Script::Telugu), ('\u{c7f}', '\u{c7f}', Script::Telugu), ('\u{c80}', '\u{c80}',
+ Script::Kannada), ('\u{c81}', '\u{c81}', Script::Kannada), ('\u{c82}', '\u{c83}',
+ Script::Kannada), ('\u{c84}', '\u{c84}', Script::Kannada), ('\u{c85}', '\u{c8c}',
+ Script::Kannada), ('\u{c8e}', '\u{c90}', Script::Kannada), ('\u{c92}', '\u{ca8}',
+ Script::Kannada), ('\u{caa}', '\u{cb3}', Script::Kannada), ('\u{cb5}', '\u{cb9}',
+ Script::Kannada), ('\u{cbc}', '\u{cbc}', Script::Kannada), ('\u{cbd}', '\u{cbd}',
+ Script::Kannada), ('\u{cbe}', '\u{cbe}', Script::Kannada), ('\u{cbf}', '\u{cbf}',
+ Script::Kannada), ('\u{cc0}', '\u{cc4}', Script::Kannada), ('\u{cc6}', '\u{cc6}',
+ Script::Kannada), ('\u{cc7}', '\u{cc8}', Script::Kannada), ('\u{cca}', '\u{ccb}',
+ Script::Kannada), ('\u{ccc}', '\u{ccd}', Script::Kannada), ('\u{cd5}', '\u{cd6}',
+ Script::Kannada), ('\u{cde}', '\u{cde}', Script::Kannada), ('\u{ce0}', '\u{ce1}',
+ Script::Kannada), ('\u{ce2}', '\u{ce3}', Script::Kannada), ('\u{ce6}', '\u{cef}',
+ Script::Kannada), ('\u{cf1}', '\u{cf2}', Script::Kannada), ('\u{d00}', '\u{d01}',
+ Script::Malayalam), ('\u{d02}', '\u{d03}', Script::Malayalam), ('\u{d04}', '\u{d0c}',
+ Script::Malayalam), ('\u{d0e}', '\u{d10}', Script::Malayalam), ('\u{d12}', '\u{d3a}',
+ Script::Malayalam), ('\u{d3b}', '\u{d3c}', Script::Malayalam), ('\u{d3d}', '\u{d3d}',
+ Script::Malayalam), ('\u{d3e}', '\u{d40}', Script::Malayalam), ('\u{d41}', '\u{d44}',
+ Script::Malayalam), ('\u{d46}', '\u{d48}', Script::Malayalam), ('\u{d4a}', '\u{d4c}',
+ Script::Malayalam), ('\u{d4d}', '\u{d4d}', Script::Malayalam), ('\u{d4e}', '\u{d4e}',
+ Script::Malayalam), ('\u{d4f}', '\u{d4f}', Script::Malayalam), ('\u{d54}', '\u{d56}',
+ Script::Malayalam), ('\u{d57}', '\u{d57}', Script::Malayalam), ('\u{d58}', '\u{d5e}',
+ Script::Malayalam), ('\u{d5f}', '\u{d61}', Script::Malayalam), ('\u{d62}', '\u{d63}',
+ Script::Malayalam), ('\u{d66}', '\u{d6f}', Script::Malayalam), ('\u{d70}', '\u{d78}',
+ Script::Malayalam), ('\u{d79}', '\u{d79}', Script::Malayalam), ('\u{d7a}', '\u{d7f}',
+ Script::Malayalam), ('\u{d81}', '\u{d81}', Script::Sinhala), ('\u{d82}', '\u{d83}',
+ Script::Sinhala), ('\u{d85}', '\u{d96}', Script::Sinhala), ('\u{d9a}', '\u{db1}',
+ Script::Sinhala), ('\u{db3}', '\u{dbb}', Script::Sinhala), ('\u{dbd}', '\u{dbd}',
+ Script::Sinhala), ('\u{dc0}', '\u{dc6}', Script::Sinhala), ('\u{dca}', '\u{dca}',
+ Script::Sinhala), ('\u{dcf}', '\u{dd1}', Script::Sinhala), ('\u{dd2}', '\u{dd4}',
+ Script::Sinhala), ('\u{dd6}', '\u{dd6}', Script::Sinhala), ('\u{dd8}', '\u{ddf}',
+ Script::Sinhala), ('\u{de6}', '\u{def}', Script::Sinhala), ('\u{df2}', '\u{df3}',
+ Script::Sinhala), ('\u{df4}', '\u{df4}', Script::Sinhala), ('\u{e01}', '\u{e30}',
+ Script::Thai), ('\u{e31}', '\u{e31}', Script::Thai), ('\u{e32}', '\u{e33}',
+ Script::Thai), ('\u{e34}', '\u{e3a}', Script::Thai), ('\u{e3f}', '\u{e3f}',
+ Script::Common), ('\u{e40}', '\u{e45}', Script::Thai), ('\u{e46}', '\u{e46}',
+ Script::Thai), ('\u{e47}', '\u{e4e}', Script::Thai), ('\u{e4f}', '\u{e4f}',
+ Script::Thai), ('\u{e50}', '\u{e59}', Script::Thai), ('\u{e5a}', '\u{e5b}',
+ Script::Thai), ('\u{e81}', '\u{e82}', Script::Lao), ('\u{e84}', '\u{e84}', Script::Lao),
+ ('\u{e86}', '\u{e8a}', Script::Lao), ('\u{e8c}', '\u{ea3}', Script::Lao), ('\u{ea5}',
+ '\u{ea5}', Script::Lao), ('\u{ea7}', '\u{eb0}', Script::Lao), ('\u{eb1}', '\u{eb1}',
+ Script::Lao), ('\u{eb2}', '\u{eb3}', Script::Lao), ('\u{eb4}', '\u{ebc}', Script::Lao),
+ ('\u{ebd}', '\u{ebd}', Script::Lao), ('\u{ec0}', '\u{ec4}', Script::Lao), ('\u{ec6}',
+ '\u{ec6}', Script::Lao), ('\u{ec8}', '\u{ecd}', Script::Lao), ('\u{ed0}', '\u{ed9}',
+ Script::Lao), ('\u{edc}', '\u{edf}', Script::Lao), ('\u{f00}', '\u{f00}',
+ Script::Tibetan), ('\u{f01}', '\u{f03}', Script::Tibetan), ('\u{f04}', '\u{f12}',
+ Script::Tibetan), ('\u{f13}', '\u{f13}', Script::Tibetan), ('\u{f14}', '\u{f14}',
+ Script::Tibetan), ('\u{f15}', '\u{f17}', Script::Tibetan), ('\u{f18}', '\u{f19}',
+ Script::Tibetan), ('\u{f1a}', '\u{f1f}', Script::Tibetan), ('\u{f20}', '\u{f29}',
+ Script::Tibetan), ('\u{f2a}', '\u{f33}', Script::Tibetan), ('\u{f34}', '\u{f34}',
+ Script::Tibetan), ('\u{f35}', '\u{f35}', Script::Tibetan), ('\u{f36}', '\u{f36}',
+ Script::Tibetan), ('\u{f37}', '\u{f37}', Script::Tibetan), ('\u{f38}', '\u{f38}',
+ Script::Tibetan), ('\u{f39}', '\u{f39}', Script::Tibetan), ('\u{f3a}', '\u{f3a}',
+ Script::Tibetan), ('\u{f3b}', '\u{f3b}', Script::Tibetan), ('\u{f3c}', '\u{f3c}',
+ Script::Tibetan), ('\u{f3d}', '\u{f3d}', Script::Tibetan), ('\u{f3e}', '\u{f3f}',
+ Script::Tibetan), ('\u{f40}', '\u{f47}', Script::Tibetan), ('\u{f49}', '\u{f6c}',
+ Script::Tibetan), ('\u{f71}', '\u{f7e}', Script::Tibetan), ('\u{f7f}', '\u{f7f}',
+ Script::Tibetan), ('\u{f80}', '\u{f84}', Script::Tibetan), ('\u{f85}', '\u{f85}',
+ Script::Tibetan), ('\u{f86}', '\u{f87}', Script::Tibetan), ('\u{f88}', '\u{f8c}',
+ Script::Tibetan), ('\u{f8d}', '\u{f97}', Script::Tibetan), ('\u{f99}', '\u{fbc}',
+ Script::Tibetan), ('\u{fbe}', '\u{fc5}', Script::Tibetan), ('\u{fc6}', '\u{fc6}',
+ Script::Tibetan), ('\u{fc7}', '\u{fcc}', Script::Tibetan), ('\u{fce}', '\u{fcf}',
+ Script::Tibetan), ('\u{fd0}', '\u{fd4}', Script::Tibetan), ('\u{fd5}', '\u{fd8}',
+ Script::Common), ('\u{fd9}', '\u{fda}', Script::Tibetan), ('\u{1000}', '\u{102a}',
+ Script::Myanmar), ('\u{102b}', '\u{102c}', Script::Myanmar), ('\u{102d}', '\u{1030}',
+ Script::Myanmar), ('\u{1031}', '\u{1031}', Script::Myanmar), ('\u{1032}', '\u{1037}',
+ Script::Myanmar), ('\u{1038}', '\u{1038}', Script::Myanmar), ('\u{1039}', '\u{103a}',
+ Script::Myanmar), ('\u{103b}', '\u{103c}', Script::Myanmar), ('\u{103d}', '\u{103e}',
+ Script::Myanmar), ('\u{103f}', '\u{103f}', Script::Myanmar), ('\u{1040}', '\u{1049}',
+ Script::Myanmar), ('\u{104a}', '\u{104f}', Script::Myanmar), ('\u{1050}', '\u{1055}',
+ Script::Myanmar), ('\u{1056}', '\u{1057}', Script::Myanmar), ('\u{1058}', '\u{1059}',
+ Script::Myanmar), ('\u{105a}', '\u{105d}', Script::Myanmar), ('\u{105e}', '\u{1060}',
+ Script::Myanmar), ('\u{1061}', '\u{1061}', Script::Myanmar), ('\u{1062}', '\u{1064}',
+ Script::Myanmar), ('\u{1065}', '\u{1066}', Script::Myanmar), ('\u{1067}', '\u{106d}',
+ Script::Myanmar), ('\u{106e}', '\u{1070}', Script::Myanmar), ('\u{1071}', '\u{1074}',
+ Script::Myanmar), ('\u{1075}', '\u{1081}', Script::Myanmar), ('\u{1082}', '\u{1082}',
+ Script::Myanmar), ('\u{1083}', '\u{1084}', Script::Myanmar), ('\u{1085}', '\u{1086}',
+ Script::Myanmar), ('\u{1087}', '\u{108c}', Script::Myanmar), ('\u{108d}', '\u{108d}',
+ Script::Myanmar), ('\u{108e}', '\u{108e}', Script::Myanmar), ('\u{108f}', '\u{108f}',
+ Script::Myanmar), ('\u{1090}', '\u{1099}', Script::Myanmar), ('\u{109a}', '\u{109c}',
+ Script::Myanmar), ('\u{109d}', '\u{109d}', Script::Myanmar), ('\u{109e}', '\u{109f}',
+ Script::Myanmar), ('\u{10a0}', '\u{10c5}', Script::Georgian), ('\u{10c7}', '\u{10c7}',
+ Script::Georgian), ('\u{10cd}', '\u{10cd}', Script::Georgian), ('\u{10d0}', '\u{10fa}',
+ Script::Georgian), ('\u{10fb}', '\u{10fb}', Script::Common), ('\u{10fc}', '\u{10fc}',
+ Script::Georgian), ('\u{10fd}', '\u{10ff}', Script::Georgian), ('\u{1100}', '\u{11ff}',
+ Script::Hangul), ('\u{1200}', '\u{1248}', Script::Ethiopic), ('\u{124a}', '\u{124d}',
+ Script::Ethiopic), ('\u{1250}', '\u{1256}', Script::Ethiopic), ('\u{1258}', '\u{1258}',
+ Script::Ethiopic), ('\u{125a}', '\u{125d}', Script::Ethiopic), ('\u{1260}', '\u{1288}',
+ Script::Ethiopic), ('\u{128a}', '\u{128d}', Script::Ethiopic), ('\u{1290}', '\u{12b0}',
+ Script::Ethiopic), ('\u{12b2}', '\u{12b5}', Script::Ethiopic), ('\u{12b8}', '\u{12be}',
+ Script::Ethiopic), ('\u{12c0}', '\u{12c0}', Script::Ethiopic), ('\u{12c2}', '\u{12c5}',
+ Script::Ethiopic), ('\u{12c8}', '\u{12d6}', Script::Ethiopic), ('\u{12d8}', '\u{1310}',
+ Script::Ethiopic), ('\u{1312}', '\u{1315}', Script::Ethiopic), ('\u{1318}', '\u{135a}',
+ Script::Ethiopic), ('\u{135d}', '\u{135f}', Script::Ethiopic), ('\u{1360}', '\u{1368}',
+ Script::Ethiopic), ('\u{1369}', '\u{137c}', Script::Ethiopic), ('\u{1380}', '\u{138f}',
+ Script::Ethiopic), ('\u{1390}', '\u{1399}', Script::Ethiopic), ('\u{13a0}', '\u{13f5}',
+ Script::Cherokee), ('\u{13f8}', '\u{13fd}', Script::Cherokee), ('\u{1400}', '\u{1400}',
+ Script::Canadian_Aboriginal), ('\u{1401}', '\u{166c}', Script::Canadian_Aboriginal),
+ ('\u{166d}', '\u{166d}', Script::Canadian_Aboriginal), ('\u{166e}', '\u{166e}',
+ Script::Canadian_Aboriginal), ('\u{166f}', '\u{167f}', Script::Canadian_Aboriginal),
+ ('\u{1680}', '\u{1680}', Script::Ogham), ('\u{1681}', '\u{169a}', Script::Ogham),
+ ('\u{169b}', '\u{169b}', Script::Ogham), ('\u{169c}', '\u{169c}', Script::Ogham),
+ ('\u{16a0}', '\u{16ea}', Script::Runic), ('\u{16eb}', '\u{16ed}', Script::Common),
+ ('\u{16ee}', '\u{16f0}', Script::Runic), ('\u{16f1}', '\u{16f8}', Script::Runic),
+ ('\u{1700}', '\u{170c}', Script::Tagalog), ('\u{170e}', '\u{1711}', Script::Tagalog),
+ ('\u{1712}', '\u{1714}', Script::Tagalog), ('\u{1720}', '\u{1731}', Script::Hanunoo),
+ ('\u{1732}', '\u{1734}', Script::Hanunoo), ('\u{1735}', '\u{1736}', Script::Common),
+ ('\u{1740}', '\u{1751}', Script::Buhid), ('\u{1752}', '\u{1753}', Script::Buhid),
+ ('\u{1760}', '\u{176c}', Script::Tagbanwa), ('\u{176e}', '\u{1770}', Script::Tagbanwa),
+ ('\u{1772}', '\u{1773}', Script::Tagbanwa), ('\u{1780}', '\u{17b3}', Script::Khmer),
+ ('\u{17b4}', '\u{17b5}', Script::Khmer), ('\u{17b6}', '\u{17b6}', Script::Khmer),
+ ('\u{17b7}', '\u{17bd}', Script::Khmer), ('\u{17be}', '\u{17c5}', Script::Khmer),
+ ('\u{17c6}', '\u{17c6}', Script::Khmer), ('\u{17c7}', '\u{17c8}', Script::Khmer),
+ ('\u{17c9}', '\u{17d3}', Script::Khmer), ('\u{17d4}', '\u{17d6}', Script::Khmer),
+ ('\u{17d7}', '\u{17d7}', Script::Khmer), ('\u{17d8}', '\u{17da}', Script::Khmer),
+ ('\u{17db}', '\u{17db}', Script::Khmer), ('\u{17dc}', '\u{17dc}', Script::Khmer),
+ ('\u{17dd}', '\u{17dd}', Script::Khmer), ('\u{17e0}', '\u{17e9}', Script::Khmer),
+ ('\u{17f0}', '\u{17f9}', Script::Khmer), ('\u{1800}', '\u{1801}', Script::Mongolian),
+ ('\u{1802}', '\u{1803}', Script::Common), ('\u{1804}', '\u{1804}', Script::Mongolian),
+ ('\u{1805}', '\u{1805}', Script::Common), ('\u{1806}', '\u{1806}', Script::Mongolian),
+ ('\u{1807}', '\u{180a}', Script::Mongolian), ('\u{180b}', '\u{180d}', Script::Mongolian),
+ ('\u{180e}', '\u{180e}', Script::Mongolian), ('\u{1810}', '\u{1819}', Script::Mongolian),
+ ('\u{1820}', '\u{1842}', Script::Mongolian), ('\u{1843}', '\u{1843}', Script::Mongolian),
+ ('\u{1844}', '\u{1878}', Script::Mongolian), ('\u{1880}', '\u{1884}', Script::Mongolian),
+ ('\u{1885}', '\u{1886}', Script::Mongolian), ('\u{1887}', '\u{18a8}', Script::Mongolian),
+ ('\u{18a9}', '\u{18a9}', Script::Mongolian), ('\u{18aa}', '\u{18aa}', Script::Mongolian),
+ ('\u{18b0}', '\u{18f5}', Script::Canadian_Aboriginal), ('\u{1900}', '\u{191e}',
+ Script::Limbu), ('\u{1920}', '\u{1922}', Script::Limbu), ('\u{1923}', '\u{1926}',
+ Script::Limbu), ('\u{1927}', '\u{1928}', Script::Limbu), ('\u{1929}', '\u{192b}',
+ Script::Limbu), ('\u{1930}', '\u{1931}', Script::Limbu), ('\u{1932}', '\u{1932}',
+ Script::Limbu), ('\u{1933}', '\u{1938}', Script::Limbu), ('\u{1939}', '\u{193b}',
+ Script::Limbu), ('\u{1940}', '\u{1940}', Script::Limbu), ('\u{1944}', '\u{1945}',
+ Script::Limbu), ('\u{1946}', '\u{194f}', Script::Limbu), ('\u{1950}', '\u{196d}',
+ Script::Tai_Le), ('\u{1970}', '\u{1974}', Script::Tai_Le), ('\u{1980}', '\u{19ab}',
+ Script::New_Tai_Lue), ('\u{19b0}', '\u{19c9}', Script::New_Tai_Lue), ('\u{19d0}',
+ '\u{19d9}', Script::New_Tai_Lue), ('\u{19da}', '\u{19da}', Script::New_Tai_Lue),
+ ('\u{19de}', '\u{19df}', Script::New_Tai_Lue), ('\u{19e0}', '\u{19ff}', Script::Khmer),
+ ('\u{1a00}', '\u{1a16}', Script::Buginese), ('\u{1a17}', '\u{1a18}', Script::Buginese),
+ ('\u{1a19}', '\u{1a1a}', Script::Buginese), ('\u{1a1b}', '\u{1a1b}', Script::Buginese),
+ ('\u{1a1e}', '\u{1a1f}', Script::Buginese), ('\u{1a20}', '\u{1a54}', Script::Tai_Tham),
+ ('\u{1a55}', '\u{1a55}', Script::Tai_Tham), ('\u{1a56}', '\u{1a56}', Script::Tai_Tham),
+ ('\u{1a57}', '\u{1a57}', Script::Tai_Tham), ('\u{1a58}', '\u{1a5e}', Script::Tai_Tham),
+ ('\u{1a60}', '\u{1a60}', Script::Tai_Tham), ('\u{1a61}', '\u{1a61}', Script::Tai_Tham),
+ ('\u{1a62}', '\u{1a62}', Script::Tai_Tham), ('\u{1a63}', '\u{1a64}', Script::Tai_Tham),
+ ('\u{1a65}', '\u{1a6c}', Script::Tai_Tham), ('\u{1a6d}', '\u{1a72}', Script::Tai_Tham),
+ ('\u{1a73}', '\u{1a7c}', Script::Tai_Tham), ('\u{1a7f}', '\u{1a7f}', Script::Tai_Tham),
+ ('\u{1a80}', '\u{1a89}', Script::Tai_Tham), ('\u{1a90}', '\u{1a99}', Script::Tai_Tham),
+ ('\u{1aa0}', '\u{1aa6}', Script::Tai_Tham), ('\u{1aa7}', '\u{1aa7}', Script::Tai_Tham),
+ ('\u{1aa8}', '\u{1aad}', Script::Tai_Tham), ('\u{1ab0}', '\u{1abd}', Script::Inherited),
+ ('\u{1abe}', '\u{1abe}', Script::Inherited), ('\u{1abf}', '\u{1ac0}', Script::Inherited),
+ ('\u{1b00}', '\u{1b03}', Script::Balinese), ('\u{1b04}', '\u{1b04}', Script::Balinese),
+ ('\u{1b05}', '\u{1b33}', Script::Balinese), ('\u{1b34}', '\u{1b34}', Script::Balinese),
+ ('\u{1b35}', '\u{1b35}', Script::Balinese), ('\u{1b36}', '\u{1b3a}', Script::Balinese),
+ ('\u{1b3b}', '\u{1b3b}', Script::Balinese), ('\u{1b3c}', '\u{1b3c}', Script::Balinese),
+ ('\u{1b3d}', '\u{1b41}', Script::Balinese), ('\u{1b42}', '\u{1b42}', Script::Balinese),
+ ('\u{1b43}', '\u{1b44}', Script::Balinese), ('\u{1b45}', '\u{1b4b}', Script::Balinese),
+ ('\u{1b50}', '\u{1b59}', Script::Balinese), ('\u{1b5a}', '\u{1b60}', Script::Balinese),
+ ('\u{1b61}', '\u{1b6a}', Script::Balinese), ('\u{1b6b}', '\u{1b73}', Script::Balinese),
+ ('\u{1b74}', '\u{1b7c}', Script::Balinese), ('\u{1b80}', '\u{1b81}', Script::Sundanese),
+ ('\u{1b82}', '\u{1b82}', Script::Sundanese), ('\u{1b83}', '\u{1ba0}', Script::Sundanese),
+ ('\u{1ba1}', '\u{1ba1}', Script::Sundanese), ('\u{1ba2}', '\u{1ba5}', Script::Sundanese),
+ ('\u{1ba6}', '\u{1ba7}', Script::Sundanese), ('\u{1ba8}', '\u{1ba9}', Script::Sundanese),
+ ('\u{1baa}', '\u{1baa}', Script::Sundanese), ('\u{1bab}', '\u{1bad}', Script::Sundanese),
+ ('\u{1bae}', '\u{1baf}', Script::Sundanese), ('\u{1bb0}', '\u{1bb9}', Script::Sundanese),
+ ('\u{1bba}', '\u{1bbf}', Script::Sundanese), ('\u{1bc0}', '\u{1be5}', Script::Batak),
+ ('\u{1be6}', '\u{1be6}', Script::Batak), ('\u{1be7}', '\u{1be7}', Script::Batak),
+ ('\u{1be8}', '\u{1be9}', Script::Batak), ('\u{1bea}', '\u{1bec}', Script::Batak),
+ ('\u{1bed}', '\u{1bed}', Script::Batak), ('\u{1bee}', '\u{1bee}', Script::Batak),
+ ('\u{1bef}', '\u{1bf1}', Script::Batak), ('\u{1bf2}', '\u{1bf3}', Script::Batak),
+ ('\u{1bfc}', '\u{1bff}', Script::Batak), ('\u{1c00}', '\u{1c23}', Script::Lepcha),
+ ('\u{1c24}', '\u{1c2b}', Script::Lepcha), ('\u{1c2c}', '\u{1c33}', Script::Lepcha),
+ ('\u{1c34}', '\u{1c35}', Script::Lepcha), ('\u{1c36}', '\u{1c37}', Script::Lepcha),
+ ('\u{1c3b}', '\u{1c3f}', Script::Lepcha), ('\u{1c40}', '\u{1c49}', Script::Lepcha),
+ ('\u{1c4d}', '\u{1c4f}', Script::Lepcha), ('\u{1c50}', '\u{1c59}', Script::Ol_Chiki),
+ ('\u{1c5a}', '\u{1c77}', Script::Ol_Chiki), ('\u{1c78}', '\u{1c7d}', Script::Ol_Chiki),
+ ('\u{1c7e}', '\u{1c7f}', Script::Ol_Chiki), ('\u{1c80}', '\u{1c88}', Script::Cyrillic),
+ ('\u{1c90}', '\u{1cba}', Script::Georgian), ('\u{1cbd}', '\u{1cbf}', Script::Georgian),
+ ('\u{1cc0}', '\u{1cc7}', Script::Sundanese), ('\u{1cd0}', '\u{1cd2}', Script::Inherited),
+ ('\u{1cd3}', '\u{1cd3}', Script::Common), ('\u{1cd4}', '\u{1ce0}', Script::Inherited),
+ ('\u{1ce1}', '\u{1ce1}', Script::Common), ('\u{1ce2}', '\u{1ce8}', Script::Inherited),
+ ('\u{1ce9}', '\u{1cec}', Script::Common), ('\u{1ced}', '\u{1ced}', Script::Inherited),
+ ('\u{1cee}', '\u{1cf3}', Script::Common), ('\u{1cf4}', '\u{1cf4}', Script::Inherited),
+ ('\u{1cf5}', '\u{1cf6}', Script::Common), ('\u{1cf7}', '\u{1cf7}', Script::Common),
+ ('\u{1cf8}', '\u{1cf9}', Script::Inherited), ('\u{1cfa}', '\u{1cfa}', Script::Common),
+ ('\u{1d00}', '\u{1d25}', Script::Latin), ('\u{1d26}', '\u{1d2a}', Script::Greek),
+ ('\u{1d2b}', '\u{1d2b}', Script::Cyrillic), ('\u{1d2c}', '\u{1d5c}', Script::Latin),
+ ('\u{1d5d}', '\u{1d61}', Script::Greek), ('\u{1d62}', '\u{1d65}', Script::Latin),
+ ('\u{1d66}', '\u{1d6a}', Script::Greek), ('\u{1d6b}', '\u{1d77}', Script::Latin),
+ ('\u{1d78}', '\u{1d78}', Script::Cyrillic), ('\u{1d79}', '\u{1d9a}', Script::Latin),
+ ('\u{1d9b}', '\u{1dbe}', Script::Latin), ('\u{1dbf}', '\u{1dbf}', Script::Greek),
+ ('\u{1dc0}', '\u{1df9}', Script::Inherited), ('\u{1dfb}', '\u{1dff}', Script::Inherited),
+ ('\u{1e00}', '\u{1eff}', Script::Latin), ('\u{1f00}', '\u{1f15}', Script::Greek),
+ ('\u{1f18}', '\u{1f1d}', Script::Greek), ('\u{1f20}', '\u{1f45}', Script::Greek),
+ ('\u{1f48}', '\u{1f4d}', Script::Greek), ('\u{1f50}', '\u{1f57}', Script::Greek),
+ ('\u{1f59}', '\u{1f59}', Script::Greek), ('\u{1f5b}', '\u{1f5b}', Script::Greek),
+ ('\u{1f5d}', '\u{1f5d}', Script::Greek), ('\u{1f5f}', '\u{1f7d}', Script::Greek),
+ ('\u{1f80}', '\u{1fb4}', Script::Greek), ('\u{1fb6}', '\u{1fbc}', Script::Greek),
+ ('\u{1fbd}', '\u{1fbd}', Script::Greek), ('\u{1fbe}', '\u{1fbe}', Script::Greek),
+ ('\u{1fbf}', '\u{1fc1}', Script::Greek), ('\u{1fc2}', '\u{1fc4}', Script::Greek),
+ ('\u{1fc6}', '\u{1fcc}', Script::Greek), ('\u{1fcd}', '\u{1fcf}', Script::Greek),
+ ('\u{1fd0}', '\u{1fd3}', Script::Greek), ('\u{1fd6}', '\u{1fdb}', Script::Greek),
+ ('\u{1fdd}', '\u{1fdf}', Script::Greek), ('\u{1fe0}', '\u{1fec}', Script::Greek),
+ ('\u{1fed}', '\u{1fef}', Script::Greek), ('\u{1ff2}', '\u{1ff4}', Script::Greek),
+ ('\u{1ff6}', '\u{1ffc}', Script::Greek), ('\u{1ffd}', '\u{1ffe}', Script::Greek),
+ ('\u{2000}', '\u{200a}', Script::Common), ('\u{200b}', '\u{200b}', Script::Common),
+ ('\u{200c}', '\u{200d}', Script::Inherited), ('\u{200e}', '\u{200f}', Script::Common),
+ ('\u{2010}', '\u{2015}', Script::Common), ('\u{2016}', '\u{2017}', Script::Common),
+ ('\u{2018}', '\u{2018}', Script::Common), ('\u{2019}', '\u{2019}', Script::Common),
+ ('\u{201a}', '\u{201a}', Script::Common), ('\u{201b}', '\u{201c}', Script::Common),
+ ('\u{201d}', '\u{201d}', Script::Common), ('\u{201e}', '\u{201e}', Script::Common),
+ ('\u{201f}', '\u{201f}', Script::Common), ('\u{2020}', '\u{2027}', Script::Common),
+ ('\u{2028}', '\u{2028}', Script::Common), ('\u{2029}', '\u{2029}', Script::Common),
+ ('\u{202a}', '\u{202e}', Script::Common), ('\u{202f}', '\u{202f}', Script::Common),
+ ('\u{2030}', '\u{2038}', Script::Common), ('\u{2039}', '\u{2039}', Script::Common),
+ ('\u{203a}', '\u{203a}', Script::Common), ('\u{203b}', '\u{203e}', Script::Common),
+ ('\u{203f}', '\u{2040}', Script::Common), ('\u{2041}', '\u{2043}', Script::Common),
+ ('\u{2044}', '\u{2044}', Script::Common), ('\u{2045}', '\u{2045}', Script::Common),
+ ('\u{2046}', '\u{2046}', Script::Common), ('\u{2047}', '\u{2051}', Script::Common),
+ ('\u{2052}', '\u{2052}', Script::Common), ('\u{2053}', '\u{2053}', Script::Common),
+ ('\u{2054}', '\u{2054}', Script::Common), ('\u{2055}', '\u{205e}', Script::Common),
+ ('\u{205f}', '\u{205f}', Script::Common), ('\u{2060}', '\u{2064}', Script::Common),
+ ('\u{2066}', '\u{206f}', Script::Common), ('\u{2070}', '\u{2070}', Script::Common),
+ ('\u{2071}', '\u{2071}', Script::Latin), ('\u{2074}', '\u{2079}', Script::Common),
+ ('\u{207a}', '\u{207c}', Script::Common), ('\u{207d}', '\u{207d}', Script::Common),
+ ('\u{207e}', '\u{207e}', Script::Common), ('\u{207f}', '\u{207f}', Script::Latin),
+ ('\u{2080}', '\u{2089}', Script::Common), ('\u{208a}', '\u{208c}', Script::Common),
+ ('\u{208d}', '\u{208d}', Script::Common), ('\u{208e}', '\u{208e}', Script::Common),
+ ('\u{2090}', '\u{209c}', Script::Latin), ('\u{20a0}', '\u{20bf}', Script::Common),
+ ('\u{20d0}', '\u{20dc}', Script::Inherited), ('\u{20dd}', '\u{20e0}', Script::Inherited),
+ ('\u{20e1}', '\u{20e1}', Script::Inherited), ('\u{20e2}', '\u{20e4}', Script::Inherited),
+ ('\u{20e5}', '\u{20f0}', Script::Inherited), ('\u{2100}', '\u{2101}', Script::Common),
+ ('\u{2102}', '\u{2102}', Script::Common), ('\u{2103}', '\u{2106}', Script::Common),
+ ('\u{2107}', '\u{2107}', Script::Common), ('\u{2108}', '\u{2109}', Script::Common),
+ ('\u{210a}', '\u{2113}', Script::Common), ('\u{2114}', '\u{2114}', Script::Common),
+ ('\u{2115}', '\u{2115}', Script::Common), ('\u{2116}', '\u{2117}', Script::Common),
+ ('\u{2118}', '\u{2118}', Script::Common), ('\u{2119}', '\u{211d}', Script::Common),
+ ('\u{211e}', '\u{2123}', Script::Common), ('\u{2124}', '\u{2124}', Script::Common),
+ ('\u{2125}', '\u{2125}', Script::Common), ('\u{2126}', '\u{2126}', Script::Greek),
+ ('\u{2127}', '\u{2127}', Script::Common), ('\u{2128}', '\u{2128}', Script::Common),
+ ('\u{2129}', '\u{2129}', Script::Common), ('\u{212a}', '\u{212b}', Script::Latin),
+ ('\u{212c}', '\u{212d}', Script::Common), ('\u{212e}', '\u{212e}', Script::Common),
+ ('\u{212f}', '\u{2131}', Script::Common), ('\u{2132}', '\u{2132}', Script::Latin),
+ ('\u{2133}', '\u{2134}', Script::Common), ('\u{2135}', '\u{2138}', Script::Common),
+ ('\u{2139}', '\u{2139}', Script::Common), ('\u{213a}', '\u{213b}', Script::Common),
+ ('\u{213c}', '\u{213f}', Script::Common), ('\u{2140}', '\u{2144}', Script::Common),
+ ('\u{2145}', '\u{2149}', Script::Common), ('\u{214a}', '\u{214a}', Script::Common),
+ ('\u{214b}', '\u{214b}', Script::Common), ('\u{214c}', '\u{214d}', Script::Common),
+ ('\u{214e}', '\u{214e}', Script::Latin), ('\u{214f}', '\u{214f}', Script::Common),
+ ('\u{2150}', '\u{215f}', Script::Common), ('\u{2160}', '\u{2182}', Script::Latin),
+ ('\u{2183}', '\u{2184}', Script::Latin), ('\u{2185}', '\u{2188}', Script::Latin),
+ ('\u{2189}', '\u{2189}', Script::Common), ('\u{218a}', '\u{218b}', Script::Common),
+ ('\u{2190}', '\u{2194}', Script::Common), ('\u{2195}', '\u{2199}', Script::Common),
+ ('\u{219a}', '\u{219b}', Script::Common), ('\u{219c}', '\u{219f}', Script::Common),
+ ('\u{21a0}', '\u{21a0}', Script::Common), ('\u{21a1}', '\u{21a2}', Script::Common),
+ ('\u{21a3}', '\u{21a3}', Script::Common), ('\u{21a4}', '\u{21a5}', Script::Common),
+ ('\u{21a6}', '\u{21a6}', Script::Common), ('\u{21a7}', '\u{21ad}', Script::Common),
+ ('\u{21ae}', '\u{21ae}', Script::Common), ('\u{21af}', '\u{21cd}', Script::Common),
+ ('\u{21ce}', '\u{21cf}', Script::Common), ('\u{21d0}', '\u{21d1}', Script::Common),
+ ('\u{21d2}', '\u{21d2}', Script::Common), ('\u{21d3}', '\u{21d3}', Script::Common),
+ ('\u{21d4}', '\u{21d4}', Script::Common), ('\u{21d5}', '\u{21f3}', Script::Common),
+ ('\u{21f4}', '\u{22ff}', Script::Common), ('\u{2300}', '\u{2307}', Script::Common),
+ ('\u{2308}', '\u{2308}', Script::Common), ('\u{2309}', '\u{2309}', Script::Common),
+ ('\u{230a}', '\u{230a}', Script::Common), ('\u{230b}', '\u{230b}', Script::Common),
+ ('\u{230c}', '\u{231f}', Script::Common), ('\u{2320}', '\u{2321}', Script::Common),
+ ('\u{2322}', '\u{2328}', Script::Common), ('\u{2329}', '\u{2329}', Script::Common),
+ ('\u{232a}', '\u{232a}', Script::Common), ('\u{232b}', '\u{237b}', Script::Common),
+ ('\u{237c}', '\u{237c}', Script::Common), ('\u{237d}', '\u{239a}', Script::Common),
+ ('\u{239b}', '\u{23b3}', Script::Common), ('\u{23b4}', '\u{23db}', Script::Common),
+ ('\u{23dc}', '\u{23e1}', Script::Common), ('\u{23e2}', '\u{2426}', Script::Common),
+ ('\u{2440}', '\u{244a}', Script::Common), ('\u{2460}', '\u{249b}', Script::Common),
+ ('\u{249c}', '\u{24e9}', Script::Common), ('\u{24ea}', '\u{24ff}', Script::Common),
+ ('\u{2500}', '\u{25b6}', Script::Common), ('\u{25b7}', '\u{25b7}', Script::Common),
+ ('\u{25b8}', '\u{25c0}', Script::Common), ('\u{25c1}', '\u{25c1}', Script::Common),
+ ('\u{25c2}', '\u{25f7}', Script::Common), ('\u{25f8}', '\u{25ff}', Script::Common),
+ ('\u{2600}', '\u{266e}', Script::Common), ('\u{266f}', '\u{266f}', Script::Common),
+ ('\u{2670}', '\u{2767}', Script::Common), ('\u{2768}', '\u{2768}', Script::Common),
+ ('\u{2769}', '\u{2769}', Script::Common), ('\u{276a}', '\u{276a}', Script::Common),
+ ('\u{276b}', '\u{276b}', Script::Common), ('\u{276c}', '\u{276c}', Script::Common),
+ ('\u{276d}', '\u{276d}', Script::Common), ('\u{276e}', '\u{276e}', Script::Common),
+ ('\u{276f}', '\u{276f}', Script::Common), ('\u{2770}', '\u{2770}', Script::Common),
+ ('\u{2771}', '\u{2771}', Script::Common), ('\u{2772}', '\u{2772}', Script::Common),
+ ('\u{2773}', '\u{2773}', Script::Common), ('\u{2774}', '\u{2774}', Script::Common),
+ ('\u{2775}', '\u{2775}', Script::Common), ('\u{2776}', '\u{2793}', Script::Common),
+ ('\u{2794}', '\u{27bf}', Script::Common), ('\u{27c0}', '\u{27c4}', Script::Common),
+ ('\u{27c5}', '\u{27c5}', Script::Common), ('\u{27c6}', '\u{27c6}', Script::Common),
+ ('\u{27c7}', '\u{27e5}', Script::Common), ('\u{27e6}', '\u{27e6}', Script::Common),
+ ('\u{27e7}', '\u{27e7}', Script::Common), ('\u{27e8}', '\u{27e8}', Script::Common),
+ ('\u{27e9}', '\u{27e9}', Script::Common), ('\u{27ea}', '\u{27ea}', Script::Common),
+ ('\u{27eb}', '\u{27eb}', Script::Common), ('\u{27ec}', '\u{27ec}', Script::Common),
+ ('\u{27ed}', '\u{27ed}', Script::Common), ('\u{27ee}', '\u{27ee}', Script::Common),
+ ('\u{27ef}', '\u{27ef}', Script::Common), ('\u{27f0}', '\u{27ff}', Script::Common),
+ ('\u{2800}', '\u{28ff}', Script::Braille), ('\u{2900}', '\u{2982}', Script::Common),
+ ('\u{2983}', '\u{2983}', Script::Common), ('\u{2984}', '\u{2984}', Script::Common),
+ ('\u{2985}', '\u{2985}', Script::Common), ('\u{2986}', '\u{2986}', Script::Common),
+ ('\u{2987}', '\u{2987}', Script::Common), ('\u{2988}', '\u{2988}', Script::Common),
+ ('\u{2989}', '\u{2989}', Script::Common), ('\u{298a}', '\u{298a}', Script::Common),
+ ('\u{298b}', '\u{298b}', Script::Common), ('\u{298c}', '\u{298c}', Script::Common),
+ ('\u{298d}', '\u{298d}', Script::Common), ('\u{298e}', '\u{298e}', Script::Common),
+ ('\u{298f}', '\u{298f}', Script::Common), ('\u{2990}', '\u{2990}', Script::Common),
+ ('\u{2991}', '\u{2991}', Script::Common), ('\u{2992}', '\u{2992}', Script::Common),
+ ('\u{2993}', '\u{2993}', Script::Common), ('\u{2994}', '\u{2994}', Script::Common),
+ ('\u{2995}', '\u{2995}', Script::Common), ('\u{2996}', '\u{2996}', Script::Common),
+ ('\u{2997}', '\u{2997}', Script::Common), ('\u{2998}', '\u{2998}', Script::Common),
+ ('\u{2999}', '\u{29d7}', Script::Common), ('\u{29d8}', '\u{29d8}', Script::Common),
+ ('\u{29d9}', '\u{29d9}', Script::Common), ('\u{29da}', '\u{29da}', Script::Common),
+ ('\u{29db}', '\u{29db}', Script::Common), ('\u{29dc}', '\u{29fb}', Script::Common),
+ ('\u{29fc}', '\u{29fc}', Script::Common), ('\u{29fd}', '\u{29fd}', Script::Common),
+ ('\u{29fe}', '\u{2aff}', Script::Common), ('\u{2b00}', '\u{2b2f}', Script::Common),
+ ('\u{2b30}', '\u{2b44}', Script::Common), ('\u{2b45}', '\u{2b46}', Script::Common),
+ ('\u{2b47}', '\u{2b4c}', Script::Common), ('\u{2b4d}', '\u{2b73}', Script::Common),
+ ('\u{2b76}', '\u{2b95}', Script::Common), ('\u{2b97}', '\u{2bff}', Script::Common),
+ ('\u{2c00}', '\u{2c2e}', Script::Glagolitic), ('\u{2c30}', '\u{2c5e}',
+ Script::Glagolitic), ('\u{2c60}', '\u{2c7b}', Script::Latin), ('\u{2c7c}', '\u{2c7d}',
+ Script::Latin), ('\u{2c7e}', '\u{2c7f}', Script::Latin), ('\u{2c80}', '\u{2ce4}',
+ Script::Coptic), ('\u{2ce5}', '\u{2cea}', Script::Coptic), ('\u{2ceb}', '\u{2cee}',
+ Script::Coptic), ('\u{2cef}', '\u{2cf1}', Script::Coptic), ('\u{2cf2}', '\u{2cf3}',
+ Script::Coptic), ('\u{2cf9}', '\u{2cfc}', Script::Coptic), ('\u{2cfd}', '\u{2cfd}',
+ Script::Coptic), ('\u{2cfe}', '\u{2cff}', Script::Coptic), ('\u{2d00}', '\u{2d25}',
+ Script::Georgian), ('\u{2d27}', '\u{2d27}', Script::Georgian), ('\u{2d2d}', '\u{2d2d}',
+ Script::Georgian), ('\u{2d30}', '\u{2d67}', Script::Tifinagh), ('\u{2d6f}', '\u{2d6f}',
+ Script::Tifinagh), ('\u{2d70}', '\u{2d70}', Script::Tifinagh), ('\u{2d7f}', '\u{2d7f}',
+ Script::Tifinagh), ('\u{2d80}', '\u{2d96}', Script::Ethiopic), ('\u{2da0}', '\u{2da6}',
+ Script::Ethiopic), ('\u{2da8}', '\u{2dae}', Script::Ethiopic), ('\u{2db0}', '\u{2db6}',
+ Script::Ethiopic), ('\u{2db8}', '\u{2dbe}', Script::Ethiopic), ('\u{2dc0}', '\u{2dc6}',
+ Script::Ethiopic), ('\u{2dc8}', '\u{2dce}', Script::Ethiopic), ('\u{2dd0}', '\u{2dd6}',
+ Script::Ethiopic), ('\u{2dd8}', '\u{2dde}', Script::Ethiopic), ('\u{2de0}', '\u{2dff}',
+ Script::Cyrillic), ('\u{2e00}', '\u{2e01}', Script::Common), ('\u{2e02}', '\u{2e02}',
+ Script::Common), ('\u{2e03}', '\u{2e03}', Script::Common), ('\u{2e04}', '\u{2e04}',
+ Script::Common), ('\u{2e05}', '\u{2e05}', Script::Common), ('\u{2e06}', '\u{2e08}',
+ Script::Common), ('\u{2e09}', '\u{2e09}', Script::Common), ('\u{2e0a}', '\u{2e0a}',
+ Script::Common), ('\u{2e0b}', '\u{2e0b}', Script::Common), ('\u{2e0c}', '\u{2e0c}',
+ Script::Common), ('\u{2e0d}', '\u{2e0d}', Script::Common), ('\u{2e0e}', '\u{2e16}',
+ Script::Common), ('\u{2e17}', '\u{2e17}', Script::Common), ('\u{2e18}', '\u{2e19}',
+ Script::Common), ('\u{2e1a}', '\u{2e1a}', Script::Common), ('\u{2e1b}', '\u{2e1b}',
+ Script::Common), ('\u{2e1c}', '\u{2e1c}', Script::Common), ('\u{2e1d}', '\u{2e1d}',
+ Script::Common), ('\u{2e1e}', '\u{2e1f}', Script::Common), ('\u{2e20}', '\u{2e20}',
+ Script::Common), ('\u{2e21}', '\u{2e21}', Script::Common), ('\u{2e22}', '\u{2e22}',
+ Script::Common), ('\u{2e23}', '\u{2e23}', Script::Common), ('\u{2e24}', '\u{2e24}',
+ Script::Common), ('\u{2e25}', '\u{2e25}', Script::Common), ('\u{2e26}', '\u{2e26}',
+ Script::Common), ('\u{2e27}', '\u{2e27}', Script::Common), ('\u{2e28}', '\u{2e28}',
+ Script::Common), ('\u{2e29}', '\u{2e29}', Script::Common), ('\u{2e2a}', '\u{2e2e}',
+ Script::Common), ('\u{2e2f}', '\u{2e2f}', Script::Common), ('\u{2e30}', '\u{2e39}',
+ Script::Common), ('\u{2e3a}', '\u{2e3b}', Script::Common), ('\u{2e3c}', '\u{2e3f}',
+ Script::Common), ('\u{2e40}', '\u{2e40}', Script::Common), ('\u{2e41}', '\u{2e41}',
+ Script::Common), ('\u{2e42}', '\u{2e42}', Script::Common), ('\u{2e43}', '\u{2e4f}',
+ Script::Common), ('\u{2e50}', '\u{2e51}', Script::Common), ('\u{2e52}', '\u{2e52}',
+ Script::Common), ('\u{2e80}', '\u{2e99}', Script::Han), ('\u{2e9b}', '\u{2ef3}',
+ Script::Han), ('\u{2f00}', '\u{2fd5}', Script::Han), ('\u{2ff0}', '\u{2ffb}',
+ Script::Common), ('\u{3000}', '\u{3000}', Script::Common), ('\u{3001}', '\u{3003}',
+ Script::Common), ('\u{3004}', '\u{3004}', Script::Common), ('\u{3005}', '\u{3005}',
+ Script::Han), ('\u{3006}', '\u{3006}', Script::Common), ('\u{3007}', '\u{3007}',
+ Script::Han), ('\u{3008}', '\u{3008}', Script::Common), ('\u{3009}', '\u{3009}',
+ Script::Common), ('\u{300a}', '\u{300a}', Script::Common), ('\u{300b}', '\u{300b}',
+ Script::Common), ('\u{300c}', '\u{300c}', Script::Common), ('\u{300d}', '\u{300d}',
+ Script::Common), ('\u{300e}', '\u{300e}', Script::Common), ('\u{300f}', '\u{300f}',
+ Script::Common), ('\u{3010}', '\u{3010}', Script::Common), ('\u{3011}', '\u{3011}',
+ Script::Common), ('\u{3012}', '\u{3013}', Script::Common), ('\u{3014}', '\u{3014}',
+ Script::Common), ('\u{3015}', '\u{3015}', Script::Common), ('\u{3016}', '\u{3016}',
+ Script::Common), ('\u{3017}', '\u{3017}', Script::Common), ('\u{3018}', '\u{3018}',
+ Script::Common), ('\u{3019}', '\u{3019}', Script::Common), ('\u{301a}', '\u{301a}',
+ Script::Common), ('\u{301b}', '\u{301b}', Script::Common), ('\u{301c}', '\u{301c}',
+ Script::Common), ('\u{301d}', '\u{301d}', Script::Common), ('\u{301e}', '\u{301f}',
+ Script::Common), ('\u{3020}', '\u{3020}', Script::Common), ('\u{3021}', '\u{3029}',
+ Script::Han), ('\u{302a}', '\u{302d}', Script::Inherited), ('\u{302e}', '\u{302f}',
+ Script::Hangul), ('\u{3030}', '\u{3030}', Script::Common), ('\u{3031}', '\u{3035}',
+ Script::Common), ('\u{3036}', '\u{3037}', Script::Common), ('\u{3038}', '\u{303a}',
+ Script::Han), ('\u{303b}', '\u{303b}', Script::Han), ('\u{303c}', '\u{303c}',
+ Script::Common), ('\u{303d}', '\u{303d}', Script::Common), ('\u{303e}', '\u{303f}',
+ Script::Common), ('\u{3041}', '\u{3096}', Script::Hiragana), ('\u{3099}', '\u{309a}',
+ Script::Inherited), ('\u{309b}', '\u{309c}', Script::Common), ('\u{309d}', '\u{309e}',
+ Script::Hiragana), ('\u{309f}', '\u{309f}', Script::Hiragana), ('\u{30a0}', '\u{30a0}',
+ Script::Common), ('\u{30a1}', '\u{30fa}', Script::Katakana), ('\u{30fb}', '\u{30fb}',
+ Script::Common), ('\u{30fc}', '\u{30fc}', Script::Common), ('\u{30fd}', '\u{30fe}',
+ Script::Katakana), ('\u{30ff}', '\u{30ff}', Script::Katakana), ('\u{3105}', '\u{312f}',
+ Script::Bopomofo), ('\u{3131}', '\u{318e}', Script::Hangul), ('\u{3190}', '\u{3191}',
+ Script::Common), ('\u{3192}', '\u{3195}', Script::Common), ('\u{3196}', '\u{319f}',
+ Script::Common), ('\u{31a0}', '\u{31bf}', Script::Bopomofo), ('\u{31c0}', '\u{31e3}',
+ Script::Common), ('\u{31f0}', '\u{31ff}', Script::Katakana), ('\u{3200}', '\u{321e}',
+ Script::Hangul), ('\u{3220}', '\u{3229}', Script::Common), ('\u{322a}', '\u{3247}',
+ Script::Common), ('\u{3248}', '\u{324f}', Script::Common), ('\u{3250}', '\u{3250}',
+ Script::Common), ('\u{3251}', '\u{325f}', Script::Common), ('\u{3260}', '\u{327e}',
+ Script::Hangul), ('\u{327f}', '\u{327f}', Script::Common), ('\u{3280}', '\u{3289}',
+ Script::Common), ('\u{328a}', '\u{32b0}', Script::Common), ('\u{32b1}', '\u{32bf}',
+ Script::Common), ('\u{32c0}', '\u{32cf}', Script::Common), ('\u{32d0}', '\u{32fe}',
+ Script::Katakana), ('\u{32ff}', '\u{32ff}', Script::Common), ('\u{3300}', '\u{3357}',
+ Script::Katakana), ('\u{3358}', '\u{33ff}', Script::Common), ('\u{3400}', '\u{4dbf}',
+ Script::Han), ('\u{4dc0}', '\u{4dff}', Script::Common), ('\u{4e00}', '\u{9ffc}',
+ Script::Han), ('\u{a000}', '\u{a014}', Script::Yi), ('\u{a015}', '\u{a015}', Script::Yi),
+ ('\u{a016}', '\u{a48c}', Script::Yi), ('\u{a490}', '\u{a4c6}', Script::Yi), ('\u{a4d0}',
+ '\u{a4f7}', Script::Lisu), ('\u{a4f8}', '\u{a4fd}', Script::Lisu), ('\u{a4fe}',
+ '\u{a4ff}', Script::Lisu), ('\u{a500}', '\u{a60b}', Script::Vai), ('\u{a60c}', '\u{a60c}',
+ Script::Vai), ('\u{a60d}', '\u{a60f}', Script::Vai), ('\u{a610}', '\u{a61f}',
+ Script::Vai), ('\u{a620}', '\u{a629}', Script::Vai), ('\u{a62a}', '\u{a62b}',
+ Script::Vai), ('\u{a640}', '\u{a66d}', Script::Cyrillic), ('\u{a66e}', '\u{a66e}',
+ Script::Cyrillic), ('\u{a66f}', '\u{a66f}', Script::Cyrillic), ('\u{a670}', '\u{a672}',
+ Script::Cyrillic), ('\u{a673}', '\u{a673}', Script::Cyrillic), ('\u{a674}', '\u{a67d}',
+ Script::Cyrillic), ('\u{a67e}', '\u{a67e}', Script::Cyrillic), ('\u{a67f}', '\u{a67f}',
+ Script::Cyrillic), ('\u{a680}', '\u{a69b}', Script::Cyrillic), ('\u{a69c}', '\u{a69d}',
+ Script::Cyrillic), ('\u{a69e}', '\u{a69f}', Script::Cyrillic), ('\u{a6a0}', '\u{a6e5}',
+ Script::Bamum), ('\u{a6e6}', '\u{a6ef}', Script::Bamum), ('\u{a6f0}', '\u{a6f1}',
+ Script::Bamum), ('\u{a6f2}', '\u{a6f7}', Script::Bamum), ('\u{a700}', '\u{a716}',
+ Script::Common), ('\u{a717}', '\u{a71f}', Script::Common), ('\u{a720}', '\u{a721}',
+ Script::Common), ('\u{a722}', '\u{a76f}', Script::Latin), ('\u{a770}', '\u{a770}',
+ Script::Latin), ('\u{a771}', '\u{a787}', Script::Latin), ('\u{a788}', '\u{a788}',
+ Script::Common), ('\u{a789}', '\u{a78a}', Script::Common), ('\u{a78b}', '\u{a78e}',
+ Script::Latin), ('\u{a78f}', '\u{a78f}', Script::Latin), ('\u{a790}', '\u{a7bf}',
+ Script::Latin), ('\u{a7c2}', '\u{a7ca}', Script::Latin), ('\u{a7f5}', '\u{a7f6}',
+ Script::Latin), ('\u{a7f7}', '\u{a7f7}', Script::Latin), ('\u{a7f8}', '\u{a7f9}',
+ Script::Latin), ('\u{a7fa}', '\u{a7fa}', Script::Latin), ('\u{a7fb}', '\u{a7ff}',
+ Script::Latin), ('\u{a800}', '\u{a801}', Script::Syloti_Nagri), ('\u{a802}', '\u{a802}',
+ Script::Syloti_Nagri), ('\u{a803}', '\u{a805}', Script::Syloti_Nagri), ('\u{a806}',
+ '\u{a806}', Script::Syloti_Nagri), ('\u{a807}', '\u{a80a}', Script::Syloti_Nagri),
+ ('\u{a80b}', '\u{a80b}', Script::Syloti_Nagri), ('\u{a80c}', '\u{a822}',
+ Script::Syloti_Nagri), ('\u{a823}', '\u{a824}', Script::Syloti_Nagri), ('\u{a825}',
+ '\u{a826}', Script::Syloti_Nagri), ('\u{a827}', '\u{a827}', Script::Syloti_Nagri),
+ ('\u{a828}', '\u{a82b}', Script::Syloti_Nagri), ('\u{a82c}', '\u{a82c}',
+ Script::Syloti_Nagri), ('\u{a830}', '\u{a835}', Script::Common), ('\u{a836}', '\u{a837}',
+ Script::Common), ('\u{a838}', '\u{a838}', Script::Common), ('\u{a839}', '\u{a839}',
+ Script::Common), ('\u{a840}', '\u{a873}', Script::Phags_Pa), ('\u{a874}', '\u{a877}',
+ Script::Phags_Pa), ('\u{a880}', '\u{a881}', Script::Saurashtra), ('\u{a882}', '\u{a8b3}',
+ Script::Saurashtra), ('\u{a8b4}', '\u{a8c3}', Script::Saurashtra), ('\u{a8c4}',
+ '\u{a8c5}', Script::Saurashtra), ('\u{a8ce}', '\u{a8cf}', Script::Saurashtra),
+ ('\u{a8d0}', '\u{a8d9}', Script::Saurashtra), ('\u{a8e0}', '\u{a8f1}',
+ Script::Devanagari), ('\u{a8f2}', '\u{a8f7}', Script::Devanagari), ('\u{a8f8}',
+ '\u{a8fa}', Script::Devanagari), ('\u{a8fb}', '\u{a8fb}', Script::Devanagari),
+ ('\u{a8fc}', '\u{a8fc}', Script::Devanagari), ('\u{a8fd}', '\u{a8fe}',
+ Script::Devanagari), ('\u{a8ff}', '\u{a8ff}', Script::Devanagari), ('\u{a900}',
+ '\u{a909}', Script::Kayah_Li), ('\u{a90a}', '\u{a925}', Script::Kayah_Li), ('\u{a926}',
+ '\u{a92d}', Script::Kayah_Li), ('\u{a92e}', '\u{a92e}', Script::Common), ('\u{a92f}',
+ '\u{a92f}', Script::Kayah_Li), ('\u{a930}', '\u{a946}', Script::Rejang), ('\u{a947}',
+ '\u{a951}', Script::Rejang), ('\u{a952}', '\u{a953}', Script::Rejang), ('\u{a95f}',
+ '\u{a95f}', Script::Rejang), ('\u{a960}', '\u{a97c}', Script::Hangul), ('\u{a980}',
+ '\u{a982}', Script::Javanese), ('\u{a983}', '\u{a983}', Script::Javanese), ('\u{a984}',
+ '\u{a9b2}', Script::Javanese), ('\u{a9b3}', '\u{a9b3}', Script::Javanese), ('\u{a9b4}',
+ '\u{a9b5}', Script::Javanese), ('\u{a9b6}', '\u{a9b9}', Script::Javanese), ('\u{a9ba}',
+ '\u{a9bb}', Script::Javanese), ('\u{a9bc}', '\u{a9bd}', Script::Javanese), ('\u{a9be}',
+ '\u{a9c0}', Script::Javanese), ('\u{a9c1}', '\u{a9cd}', Script::Javanese), ('\u{a9cf}',
+ '\u{a9cf}', Script::Common), ('\u{a9d0}', '\u{a9d9}', Script::Javanese), ('\u{a9de}',
+ '\u{a9df}', Script::Javanese), ('\u{a9e0}', '\u{a9e4}', Script::Myanmar), ('\u{a9e5}',
+ '\u{a9e5}', Script::Myanmar), ('\u{a9e6}', '\u{a9e6}', Script::Myanmar), ('\u{a9e7}',
+ '\u{a9ef}', Script::Myanmar), ('\u{a9f0}', '\u{a9f9}', Script::Myanmar), ('\u{a9fa}',
+ '\u{a9fe}', Script::Myanmar), ('\u{aa00}', '\u{aa28}', Script::Cham), ('\u{aa29}',
+ '\u{aa2e}', Script::Cham), ('\u{aa2f}', '\u{aa30}', Script::Cham), ('\u{aa31}',
+ '\u{aa32}', Script::Cham), ('\u{aa33}', '\u{aa34}', Script::Cham), ('\u{aa35}',
+ '\u{aa36}', Script::Cham), ('\u{aa40}', '\u{aa42}', Script::Cham), ('\u{aa43}',
+ '\u{aa43}', Script::Cham), ('\u{aa44}', '\u{aa4b}', Script::Cham), ('\u{aa4c}',
+ '\u{aa4c}', Script::Cham), ('\u{aa4d}', '\u{aa4d}', Script::Cham), ('\u{aa50}',
+ '\u{aa59}', Script::Cham), ('\u{aa5c}', '\u{aa5f}', Script::Cham), ('\u{aa60}',
+ '\u{aa6f}', Script::Myanmar), ('\u{aa70}', '\u{aa70}', Script::Myanmar), ('\u{aa71}',
+ '\u{aa76}', Script::Myanmar), ('\u{aa77}', '\u{aa79}', Script::Myanmar), ('\u{aa7a}',
+ '\u{aa7a}', Script::Myanmar), ('\u{aa7b}', '\u{aa7b}', Script::Myanmar), ('\u{aa7c}',
+ '\u{aa7c}', Script::Myanmar), ('\u{aa7d}', '\u{aa7d}', Script::Myanmar), ('\u{aa7e}',
+ '\u{aa7f}', Script::Myanmar), ('\u{aa80}', '\u{aaaf}', Script::Tai_Viet), ('\u{aab0}',
+ '\u{aab0}', Script::Tai_Viet), ('\u{aab1}', '\u{aab1}', Script::Tai_Viet), ('\u{aab2}',
+ '\u{aab4}', Script::Tai_Viet), ('\u{aab5}', '\u{aab6}', Script::Tai_Viet), ('\u{aab7}',
+ '\u{aab8}', Script::Tai_Viet), ('\u{aab9}', '\u{aabd}', Script::Tai_Viet), ('\u{aabe}',
+ '\u{aabf}', Script::Tai_Viet), ('\u{aac0}', '\u{aac0}', Script::Tai_Viet), ('\u{aac1}',
+ '\u{aac1}', Script::Tai_Viet), ('\u{aac2}', '\u{aac2}', Script::Tai_Viet), ('\u{aadb}',
+ '\u{aadc}', Script::Tai_Viet), ('\u{aadd}', '\u{aadd}', Script::Tai_Viet), ('\u{aade}',
+ '\u{aadf}', Script::Tai_Viet), ('\u{aae0}', '\u{aaea}', Script::Meetei_Mayek),
+ ('\u{aaeb}', '\u{aaeb}', Script::Meetei_Mayek), ('\u{aaec}', '\u{aaed}',
+ Script::Meetei_Mayek), ('\u{aaee}', '\u{aaef}', Script::Meetei_Mayek), ('\u{aaf0}',
+ '\u{aaf1}', Script::Meetei_Mayek), ('\u{aaf2}', '\u{aaf2}', Script::Meetei_Mayek),
+ ('\u{aaf3}', '\u{aaf4}', Script::Meetei_Mayek), ('\u{aaf5}', '\u{aaf5}',
+ Script::Meetei_Mayek), ('\u{aaf6}', '\u{aaf6}', Script::Meetei_Mayek), ('\u{ab01}',
+ '\u{ab06}', Script::Ethiopic), ('\u{ab09}', '\u{ab0e}', Script::Ethiopic), ('\u{ab11}',
+ '\u{ab16}', Script::Ethiopic), ('\u{ab20}', '\u{ab26}', Script::Ethiopic), ('\u{ab28}',
+ '\u{ab2e}', Script::Ethiopic), ('\u{ab30}', '\u{ab5a}', Script::Latin), ('\u{ab5b}',
+ '\u{ab5b}', Script::Common), ('\u{ab5c}', '\u{ab5f}', Script::Latin), ('\u{ab60}',
+ '\u{ab64}', Script::Latin), ('\u{ab65}', '\u{ab65}', Script::Greek), ('\u{ab66}',
+ '\u{ab68}', Script::Latin), ('\u{ab69}', '\u{ab69}', Script::Latin), ('\u{ab6a}',
+ '\u{ab6b}', Script::Common), ('\u{ab70}', '\u{abbf}', Script::Cherokee), ('\u{abc0}',
+ '\u{abe2}', Script::Meetei_Mayek), ('\u{abe3}', '\u{abe4}', Script::Meetei_Mayek),
+ ('\u{abe5}', '\u{abe5}', Script::Meetei_Mayek), ('\u{abe6}', '\u{abe7}',
+ Script::Meetei_Mayek), ('\u{abe8}', '\u{abe8}', Script::Meetei_Mayek), ('\u{abe9}',
+ '\u{abea}', Script::Meetei_Mayek), ('\u{abeb}', '\u{abeb}', Script::Meetei_Mayek),
+ ('\u{abec}', '\u{abec}', Script::Meetei_Mayek), ('\u{abed}', '\u{abed}',
+ Script::Meetei_Mayek), ('\u{abf0}', '\u{abf9}', Script::Meetei_Mayek), ('\u{ac00}',
+ '\u{d7a3}', Script::Hangul), ('\u{d7b0}', '\u{d7c6}', Script::Hangul), ('\u{d7cb}',
+ '\u{d7fb}', Script::Hangul), ('\u{f900}', '\u{fa6d}', Script::Han), ('\u{fa70}',
+ '\u{fad9}', Script::Han), ('\u{fb00}', '\u{fb06}', Script::Latin), ('\u{fb13}',
+ '\u{fb17}', Script::Armenian), ('\u{fb1d}', '\u{fb1d}', Script::Hebrew), ('\u{fb1e}',
+ '\u{fb1e}', Script::Hebrew), ('\u{fb1f}', '\u{fb28}', Script::Hebrew), ('\u{fb29}',
+ '\u{fb29}', Script::Hebrew), ('\u{fb2a}', '\u{fb36}', Script::Hebrew), ('\u{fb38}',
+ '\u{fb3c}', Script::Hebrew), ('\u{fb3e}', '\u{fb3e}', Script::Hebrew), ('\u{fb40}',
+ '\u{fb41}', Script::Hebrew), ('\u{fb43}', '\u{fb44}', Script::Hebrew), ('\u{fb46}',
+ '\u{fb4f}', Script::Hebrew), ('\u{fb50}', '\u{fbb1}', Script::Arabic), ('\u{fbb2}',
+ '\u{fbc1}', Script::Arabic), ('\u{fbd3}', '\u{fd3d}', Script::Arabic), ('\u{fd3e}',
+ '\u{fd3e}', Script::Common), ('\u{fd3f}', '\u{fd3f}', Script::Common), ('\u{fd50}',
+ '\u{fd8f}', Script::Arabic), ('\u{fd92}', '\u{fdc7}', Script::Arabic), ('\u{fdf0}',
+ '\u{fdfb}', Script::Arabic), ('\u{fdfc}', '\u{fdfc}', Script::Arabic), ('\u{fdfd}',
+ '\u{fdfd}', Script::Arabic), ('\u{fe00}', '\u{fe0f}', Script::Inherited), ('\u{fe10}',
+ '\u{fe16}', Script::Common), ('\u{fe17}', '\u{fe17}', Script::Common), ('\u{fe18}',
+ '\u{fe18}', Script::Common), ('\u{fe19}', '\u{fe19}', Script::Common), ('\u{fe20}',
+ '\u{fe2d}', Script::Inherited), ('\u{fe2e}', '\u{fe2f}', Script::Cyrillic), ('\u{fe30}',
+ '\u{fe30}', Script::Common), ('\u{fe31}', '\u{fe32}', Script::Common), ('\u{fe33}',
+ '\u{fe34}', Script::Common), ('\u{fe35}', '\u{fe35}', Script::Common), ('\u{fe36}',
+ '\u{fe36}', Script::Common), ('\u{fe37}', '\u{fe37}', Script::Common), ('\u{fe38}',
+ '\u{fe38}', Script::Common), ('\u{fe39}', '\u{fe39}', Script::Common), ('\u{fe3a}',
+ '\u{fe3a}', Script::Common), ('\u{fe3b}', '\u{fe3b}', Script::Common), ('\u{fe3c}',
+ '\u{fe3c}', Script::Common), ('\u{fe3d}', '\u{fe3d}', Script::Common), ('\u{fe3e}',
+ '\u{fe3e}', Script::Common), ('\u{fe3f}', '\u{fe3f}', Script::Common), ('\u{fe40}',
+ '\u{fe40}', Script::Common), ('\u{fe41}', '\u{fe41}', Script::Common), ('\u{fe42}',
+ '\u{fe42}', Script::Common), ('\u{fe43}', '\u{fe43}', Script::Common), ('\u{fe44}',
+ '\u{fe44}', Script::Common), ('\u{fe45}', '\u{fe46}', Script::Common), ('\u{fe47}',
+ '\u{fe47}', Script::Common), ('\u{fe48}', '\u{fe48}', Script::Common), ('\u{fe49}',
+ '\u{fe4c}', Script::Common), ('\u{fe4d}', '\u{fe4f}', Script::Common), ('\u{fe50}',
+ '\u{fe52}', Script::Common), ('\u{fe54}', '\u{fe57}', Script::Common), ('\u{fe58}',
+ '\u{fe58}', Script::Common), ('\u{fe59}', '\u{fe59}', Script::Common), ('\u{fe5a}',
+ '\u{fe5a}', Script::Common), ('\u{fe5b}', '\u{fe5b}', Script::Common), ('\u{fe5c}',
+ '\u{fe5c}', Script::Common), ('\u{fe5d}', '\u{fe5d}', Script::Common), ('\u{fe5e}',
+ '\u{fe5e}', Script::Common), ('\u{fe5f}', '\u{fe61}', Script::Common), ('\u{fe62}',
+ '\u{fe62}', Script::Common), ('\u{fe63}', '\u{fe63}', Script::Common), ('\u{fe64}',
+ '\u{fe66}', Script::Common), ('\u{fe68}', '\u{fe68}', Script::Common), ('\u{fe69}',
+ '\u{fe69}', Script::Common), ('\u{fe6a}', '\u{fe6b}', Script::Common), ('\u{fe70}',
+ '\u{fe74}', Script::Arabic), ('\u{fe76}', '\u{fefc}', Script::Arabic), ('\u{feff}',
+ '\u{feff}', Script::Common), ('\u{ff01}', '\u{ff03}', Script::Common), ('\u{ff04}',
+ '\u{ff04}', Script::Common), ('\u{ff05}', '\u{ff07}', Script::Common), ('\u{ff08}',
+ '\u{ff08}', Script::Common), ('\u{ff09}', '\u{ff09}', Script::Common), ('\u{ff0a}',
+ '\u{ff0a}', Script::Common), ('\u{ff0b}', '\u{ff0b}', Script::Common), ('\u{ff0c}',
+ '\u{ff0c}', Script::Common), ('\u{ff0d}', '\u{ff0d}', Script::Common), ('\u{ff0e}',
+ '\u{ff0f}', Script::Common), ('\u{ff10}', '\u{ff19}', Script::Common), ('\u{ff1a}',
+ '\u{ff1b}', Script::Common), ('\u{ff1c}', '\u{ff1e}', Script::Common), ('\u{ff1f}',
+ '\u{ff20}', Script::Common), ('\u{ff21}', '\u{ff3a}', Script::Latin), ('\u{ff3b}',
+ '\u{ff3b}', Script::Common), ('\u{ff3c}', '\u{ff3c}', Script::Common), ('\u{ff3d}',
+ '\u{ff3d}', Script::Common), ('\u{ff3e}', '\u{ff3e}', Script::Common), ('\u{ff3f}',
+ '\u{ff3f}', Script::Common), ('\u{ff40}', '\u{ff40}', Script::Common), ('\u{ff41}',
+ '\u{ff5a}', Script::Latin), ('\u{ff5b}', '\u{ff5b}', Script::Common), ('\u{ff5c}',
+ '\u{ff5c}', Script::Common), ('\u{ff5d}', '\u{ff5d}', Script::Common), ('\u{ff5e}',
+ '\u{ff5e}', Script::Common), ('\u{ff5f}', '\u{ff5f}', Script::Common), ('\u{ff60}',
+ '\u{ff60}', Script::Common), ('\u{ff61}', '\u{ff61}', Script::Common), ('\u{ff62}',
+ '\u{ff62}', Script::Common), ('\u{ff63}', '\u{ff63}', Script::Common), ('\u{ff64}',
+ '\u{ff65}', Script::Common), ('\u{ff66}', '\u{ff6f}', Script::Katakana), ('\u{ff70}',
+ '\u{ff70}', Script::Common), ('\u{ff71}', '\u{ff9d}', Script::Katakana), ('\u{ff9e}',
+ '\u{ff9f}', Script::Common), ('\u{ffa0}', '\u{ffbe}', Script::Hangul), ('\u{ffc2}',
+ '\u{ffc7}', Script::Hangul), ('\u{ffca}', '\u{ffcf}', Script::Hangul), ('\u{ffd2}',
+ '\u{ffd7}', Script::Hangul), ('\u{ffda}', '\u{ffdc}', Script::Hangul), ('\u{ffe0}',
+ '\u{ffe1}', Script::Common), ('\u{ffe2}', '\u{ffe2}', Script::Common), ('\u{ffe3}',
+ '\u{ffe3}', Script::Common), ('\u{ffe4}', '\u{ffe4}', Script::Common), ('\u{ffe5}',
+ '\u{ffe6}', Script::Common), ('\u{ffe8}', '\u{ffe8}', Script::Common), ('\u{ffe9}',
+ '\u{ffec}', Script::Common), ('\u{ffed}', '\u{ffee}', Script::Common), ('\u{fff9}',
+ '\u{fffb}', Script::Common), ('\u{fffc}', '\u{fffd}', Script::Common), ('\u{10000}',
+ '\u{1000b}', Script::Linear_B), ('\u{1000d}', '\u{10026}', Script::Linear_B),
+ ('\u{10028}', '\u{1003a}', Script::Linear_B), ('\u{1003c}', '\u{1003d}',
+ Script::Linear_B), ('\u{1003f}', '\u{1004d}', Script::Linear_B), ('\u{10050}',
+ '\u{1005d}', Script::Linear_B), ('\u{10080}', '\u{100fa}', Script::Linear_B),
+ ('\u{10100}', '\u{10102}', Script::Common), ('\u{10107}', '\u{10133}', Script::Common),
+ ('\u{10137}', '\u{1013f}', Script::Common), ('\u{10140}', '\u{10174}', Script::Greek),
+ ('\u{10175}', '\u{10178}', Script::Greek), ('\u{10179}', '\u{10189}', Script::Greek),
+ ('\u{1018a}', '\u{1018b}', Script::Greek), ('\u{1018c}', '\u{1018e}', Script::Greek),
+ ('\u{10190}', '\u{1019c}', Script::Common), ('\u{101a0}', '\u{101a0}', Script::Greek),
+ ('\u{101d0}', '\u{101fc}', Script::Common), ('\u{101fd}', '\u{101fd}', Script::Inherited),
+ ('\u{10280}', '\u{1029c}', Script::Lycian), ('\u{102a0}', '\u{102d0}', Script::Carian),
+ ('\u{102e0}', '\u{102e0}', Script::Inherited), ('\u{102e1}', '\u{102fb}', Script::Common),
+ ('\u{10300}', '\u{1031f}', Script::Old_Italic), ('\u{10320}', '\u{10323}',
+ Script::Old_Italic), ('\u{1032d}', '\u{1032f}', Script::Old_Italic), ('\u{10330}',
+ '\u{10340}', Script::Gothic), ('\u{10341}', '\u{10341}', Script::Gothic), ('\u{10342}',
+ '\u{10349}', Script::Gothic), ('\u{1034a}', '\u{1034a}', Script::Gothic), ('\u{10350}',
+ '\u{10375}', Script::Old_Permic), ('\u{10376}', '\u{1037a}', Script::Old_Permic),
+ ('\u{10380}', '\u{1039d}', Script::Ugaritic), ('\u{1039f}', '\u{1039f}',
+ Script::Ugaritic), ('\u{103a0}', '\u{103c3}', Script::Old_Persian), ('\u{103c8}',
+ '\u{103cf}', Script::Old_Persian), ('\u{103d0}', '\u{103d0}', Script::Old_Persian),
+ ('\u{103d1}', '\u{103d5}', Script::Old_Persian), ('\u{10400}', '\u{1044f}',
+ Script::Deseret), ('\u{10450}', '\u{1047f}', Script::Shavian), ('\u{10480}', '\u{1049d}',
+ Script::Osmanya), ('\u{104a0}', '\u{104a9}', Script::Osmanya), ('\u{104b0}', '\u{104d3}',
+ Script::Osage), ('\u{104d8}', '\u{104fb}', Script::Osage), ('\u{10500}', '\u{10527}',
+ Script::Elbasan), ('\u{10530}', '\u{10563}', Script::Caucasian_Albanian), ('\u{1056f}',
+ '\u{1056f}', Script::Caucasian_Albanian), ('\u{10600}', '\u{10736}', Script::Linear_A),
+ ('\u{10740}', '\u{10755}', Script::Linear_A), ('\u{10760}', '\u{10767}',
+ Script::Linear_A), ('\u{10800}', '\u{10805}', Script::Cypriot), ('\u{10808}', '\u{10808}',
+ Script::Cypriot), ('\u{1080a}', '\u{10835}', Script::Cypriot), ('\u{10837}', '\u{10838}',
+ Script::Cypriot), ('\u{1083c}', '\u{1083c}', Script::Cypriot), ('\u{1083f}', '\u{1083f}',
+ Script::Cypriot), ('\u{10840}', '\u{10855}', Script::Imperial_Aramaic), ('\u{10857}',
+ '\u{10857}', Script::Imperial_Aramaic), ('\u{10858}', '\u{1085f}',
+ Script::Imperial_Aramaic), ('\u{10860}', '\u{10876}', Script::Palmyrene), ('\u{10877}',
+ '\u{10878}', Script::Palmyrene), ('\u{10879}', '\u{1087f}', Script::Palmyrene),
+ ('\u{10880}', '\u{1089e}', Script::Nabataean), ('\u{108a7}', '\u{108af}',
+ Script::Nabataean), ('\u{108e0}', '\u{108f2}', Script::Hatran), ('\u{108f4}', '\u{108f5}',
+ Script::Hatran), ('\u{108fb}', '\u{108ff}', Script::Hatran), ('\u{10900}', '\u{10915}',
+ Script::Phoenician), ('\u{10916}', '\u{1091b}', Script::Phoenician), ('\u{1091f}',
+ '\u{1091f}', Script::Phoenician), ('\u{10920}', '\u{10939}', Script::Lydian),
+ ('\u{1093f}', '\u{1093f}', Script::Lydian), ('\u{10980}', '\u{1099f}',
+ Script::Meroitic_Hieroglyphs), ('\u{109a0}', '\u{109b7}', Script::Meroitic_Cursive),
+ ('\u{109bc}', '\u{109bd}', Script::Meroitic_Cursive), ('\u{109be}', '\u{109bf}',
+ Script::Meroitic_Cursive), ('\u{109c0}', '\u{109cf}', Script::Meroitic_Cursive),
+ ('\u{109d2}', '\u{109ff}', Script::Meroitic_Cursive), ('\u{10a00}', '\u{10a00}',
+ Script::Kharoshthi), ('\u{10a01}', '\u{10a03}', Script::Kharoshthi), ('\u{10a05}',
+ '\u{10a06}', Script::Kharoshthi), ('\u{10a0c}', '\u{10a0f}', Script::Kharoshthi),
+ ('\u{10a10}', '\u{10a13}', Script::Kharoshthi), ('\u{10a15}', '\u{10a17}',
+ Script::Kharoshthi), ('\u{10a19}', '\u{10a35}', Script::Kharoshthi), ('\u{10a38}',
+ '\u{10a3a}', Script::Kharoshthi), ('\u{10a3f}', '\u{10a3f}', Script::Kharoshthi),
+ ('\u{10a40}', '\u{10a48}', Script::Kharoshthi), ('\u{10a50}', '\u{10a58}',
+ Script::Kharoshthi), ('\u{10a60}', '\u{10a7c}', Script::Old_South_Arabian), ('\u{10a7d}',
+ '\u{10a7e}', Script::Old_South_Arabian), ('\u{10a7f}', '\u{10a7f}',
+ Script::Old_South_Arabian), ('\u{10a80}', '\u{10a9c}', Script::Old_North_Arabian),
+ ('\u{10a9d}', '\u{10a9f}', Script::Old_North_Arabian), ('\u{10ac0}', '\u{10ac7}',
+ Script::Manichaean), ('\u{10ac8}', '\u{10ac8}', Script::Manichaean), ('\u{10ac9}',
+ '\u{10ae4}', Script::Manichaean), ('\u{10ae5}', '\u{10ae6}', Script::Manichaean),
+ ('\u{10aeb}', '\u{10aef}', Script::Manichaean), ('\u{10af0}', '\u{10af6}',
+ Script::Manichaean), ('\u{10b00}', '\u{10b35}', Script::Avestan), ('\u{10b39}',
+ '\u{10b3f}', Script::Avestan), ('\u{10b40}', '\u{10b55}', Script::Inscriptional_Parthian),
+ ('\u{10b58}', '\u{10b5f}', Script::Inscriptional_Parthian), ('\u{10b60}', '\u{10b72}',
+ Script::Inscriptional_Pahlavi), ('\u{10b78}', '\u{10b7f}', Script::Inscriptional_Pahlavi),
+ ('\u{10b80}', '\u{10b91}', Script::Psalter_Pahlavi), ('\u{10b99}', '\u{10b9c}',
+ Script::Psalter_Pahlavi), ('\u{10ba9}', '\u{10baf}', Script::Psalter_Pahlavi),
+ ('\u{10c00}', '\u{10c48}', Script::Old_Turkic), ('\u{10c80}', '\u{10cb2}',
+ Script::Old_Hungarian), ('\u{10cc0}', '\u{10cf2}', Script::Old_Hungarian), ('\u{10cfa}',
+ '\u{10cff}', Script::Old_Hungarian), ('\u{10d00}', '\u{10d23}', Script::Hanifi_Rohingya),
+ ('\u{10d24}', '\u{10d27}', Script::Hanifi_Rohingya), ('\u{10d30}', '\u{10d39}',
+ Script::Hanifi_Rohingya), ('\u{10e60}', '\u{10e7e}', Script::Arabic), ('\u{10e80}',
+ '\u{10ea9}', Script::Yezidi), ('\u{10eab}', '\u{10eac}', Script::Yezidi), ('\u{10ead}',
+ '\u{10ead}', Script::Yezidi), ('\u{10eb0}', '\u{10eb1}', Script::Yezidi), ('\u{10f00}',
+ '\u{10f1c}', Script::Old_Sogdian), ('\u{10f1d}', '\u{10f26}', Script::Old_Sogdian),
+ ('\u{10f27}', '\u{10f27}', Script::Old_Sogdian), ('\u{10f30}', '\u{10f45}',
+ Script::Sogdian), ('\u{10f46}', '\u{10f50}', Script::Sogdian), ('\u{10f51}', '\u{10f54}',
+ Script::Sogdian), ('\u{10f55}', '\u{10f59}', Script::Sogdian), ('\u{10fb0}', '\u{10fc4}',
+ Script::Chorasmian), ('\u{10fc5}', '\u{10fcb}', Script::Chorasmian), ('\u{10fe0}',
+ '\u{10ff6}', Script::Elymaic), ('\u{11000}', '\u{11000}', Script::Brahmi), ('\u{11001}',
+ '\u{11001}', Script::Brahmi), ('\u{11002}', '\u{11002}', Script::Brahmi), ('\u{11003}',
+ '\u{11037}', Script::Brahmi), ('\u{11038}', '\u{11046}', Script::Brahmi), ('\u{11047}',
+ '\u{1104d}', Script::Brahmi), ('\u{11052}', '\u{11065}', Script::Brahmi), ('\u{11066}',
+ '\u{1106f}', Script::Brahmi), ('\u{1107f}', '\u{1107f}', Script::Brahmi), ('\u{11080}',
+ '\u{11081}', Script::Kaithi), ('\u{11082}', '\u{11082}', Script::Kaithi), ('\u{11083}',
+ '\u{110af}', Script::Kaithi), ('\u{110b0}', '\u{110b2}', Script::Kaithi), ('\u{110b3}',
+ '\u{110b6}', Script::Kaithi), ('\u{110b7}', '\u{110b8}', Script::Kaithi), ('\u{110b9}',
+ '\u{110ba}', Script::Kaithi), ('\u{110bb}', '\u{110bc}', Script::Kaithi), ('\u{110bd}',
+ '\u{110bd}', Script::Kaithi), ('\u{110be}', '\u{110c1}', Script::Kaithi), ('\u{110cd}',
+ '\u{110cd}', Script::Kaithi), ('\u{110d0}', '\u{110e8}', Script::Sora_Sompeng),
+ ('\u{110f0}', '\u{110f9}', Script::Sora_Sompeng), ('\u{11100}', '\u{11102}',
+ Script::Chakma), ('\u{11103}', '\u{11126}', Script::Chakma), ('\u{11127}', '\u{1112b}',
+ Script::Chakma), ('\u{1112c}', '\u{1112c}', Script::Chakma), ('\u{1112d}', '\u{11134}',
+ Script::Chakma), ('\u{11136}', '\u{1113f}', Script::Chakma), ('\u{11140}', '\u{11143}',
+ Script::Chakma), ('\u{11144}', '\u{11144}', Script::Chakma), ('\u{11145}', '\u{11146}',
+ Script::Chakma), ('\u{11147}', '\u{11147}', Script::Chakma), ('\u{11150}', '\u{11172}',
+ Script::Mahajani), ('\u{11173}', '\u{11173}', Script::Mahajani), ('\u{11174}',
+ '\u{11175}', Script::Mahajani), ('\u{11176}', '\u{11176}', Script::Mahajani),
+ ('\u{11180}', '\u{11181}', Script::Sharada), ('\u{11182}', '\u{11182}', Script::Sharada),
+ ('\u{11183}', '\u{111b2}', Script::Sharada), ('\u{111b3}', '\u{111b5}', Script::Sharada),
+ ('\u{111b6}', '\u{111be}', Script::Sharada), ('\u{111bf}', '\u{111c0}', Script::Sharada),
+ ('\u{111c1}', '\u{111c4}', Script::Sharada), ('\u{111c5}', '\u{111c8}', Script::Sharada),
+ ('\u{111c9}', '\u{111cc}', Script::Sharada), ('\u{111cd}', '\u{111cd}', Script::Sharada),
+ ('\u{111ce}', '\u{111ce}', Script::Sharada), ('\u{111cf}', '\u{111cf}', Script::Sharada),
+ ('\u{111d0}', '\u{111d9}', Script::Sharada), ('\u{111da}', '\u{111da}', Script::Sharada),
+ ('\u{111db}', '\u{111db}', Script::Sharada), ('\u{111dc}', '\u{111dc}', Script::Sharada),
+ ('\u{111dd}', '\u{111df}', Script::Sharada), ('\u{111e1}', '\u{111f4}', Script::Sinhala),
+ ('\u{11200}', '\u{11211}', Script::Khojki), ('\u{11213}', '\u{1122b}', Script::Khojki),
+ ('\u{1122c}', '\u{1122e}', Script::Khojki), ('\u{1122f}', '\u{11231}', Script::Khojki),
+ ('\u{11232}', '\u{11233}', Script::Khojki), ('\u{11234}', '\u{11234}', Script::Khojki),
+ ('\u{11235}', '\u{11235}', Script::Khojki), ('\u{11236}', '\u{11237}', Script::Khojki),
+ ('\u{11238}', '\u{1123d}', Script::Khojki), ('\u{1123e}', '\u{1123e}', Script::Khojki),
+ ('\u{11280}', '\u{11286}', Script::Multani), ('\u{11288}', '\u{11288}', Script::Multani),
+ ('\u{1128a}', '\u{1128d}', Script::Multani), ('\u{1128f}', '\u{1129d}', Script::Multani),
+ ('\u{1129f}', '\u{112a8}', Script::Multani), ('\u{112a9}', '\u{112a9}', Script::Multani),
+ ('\u{112b0}', '\u{112de}', Script::Khudawadi), ('\u{112df}', '\u{112df}',
+ Script::Khudawadi), ('\u{112e0}', '\u{112e2}', Script::Khudawadi), ('\u{112e3}',
+ '\u{112ea}', Script::Khudawadi), ('\u{112f0}', '\u{112f9}', Script::Khudawadi),
+ ('\u{11300}', '\u{11301}', Script::Grantha), ('\u{11302}', '\u{11303}', Script::Grantha),
+ ('\u{11305}', '\u{1130c}', Script::Grantha), ('\u{1130f}', '\u{11310}', Script::Grantha),
+ ('\u{11313}', '\u{11328}', Script::Grantha), ('\u{1132a}', '\u{11330}', Script::Grantha),
+ ('\u{11332}', '\u{11333}', Script::Grantha), ('\u{11335}', '\u{11339}', Script::Grantha),
+ ('\u{1133b}', '\u{1133b}', Script::Inherited), ('\u{1133c}', '\u{1133c}',
+ Script::Grantha), ('\u{1133d}', '\u{1133d}', Script::Grantha), ('\u{1133e}', '\u{1133f}',
+ Script::Grantha), ('\u{11340}', '\u{11340}', Script::Grantha), ('\u{11341}', '\u{11344}',
+ Script::Grantha), ('\u{11347}', '\u{11348}', Script::Grantha), ('\u{1134b}', '\u{1134d}',
+ Script::Grantha), ('\u{11350}', '\u{11350}', Script::Grantha), ('\u{11357}', '\u{11357}',
+ Script::Grantha), ('\u{1135d}', '\u{11361}', Script::Grantha), ('\u{11362}', '\u{11363}',
+ Script::Grantha), ('\u{11366}', '\u{1136c}', Script::Grantha), ('\u{11370}', '\u{11374}',
+ Script::Grantha), ('\u{11400}', '\u{11434}', Script::Newa), ('\u{11435}', '\u{11437}',
+ Script::Newa), ('\u{11438}', '\u{1143f}', Script::Newa), ('\u{11440}', '\u{11441}',
+ Script::Newa), ('\u{11442}', '\u{11444}', Script::Newa), ('\u{11445}', '\u{11445}',
+ Script::Newa), ('\u{11446}', '\u{11446}', Script::Newa), ('\u{11447}', '\u{1144a}',
+ Script::Newa), ('\u{1144b}', '\u{1144f}', Script::Newa), ('\u{11450}', '\u{11459}',
+ Script::Newa), ('\u{1145a}', '\u{1145b}', Script::Newa), ('\u{1145d}', '\u{1145d}',
+ Script::Newa), ('\u{1145e}', '\u{1145e}', Script::Newa), ('\u{1145f}', '\u{11461}',
+ Script::Newa), ('\u{11480}', '\u{114af}', Script::Tirhuta), ('\u{114b0}', '\u{114b2}',
+ Script::Tirhuta), ('\u{114b3}', '\u{114b8}', Script::Tirhuta), ('\u{114b9}', '\u{114b9}',
+ Script::Tirhuta), ('\u{114ba}', '\u{114ba}', Script::Tirhuta), ('\u{114bb}', '\u{114be}',
+ Script::Tirhuta), ('\u{114bf}', '\u{114c0}', Script::Tirhuta), ('\u{114c1}', '\u{114c1}',
+ Script::Tirhuta), ('\u{114c2}', '\u{114c3}', Script::Tirhuta), ('\u{114c4}', '\u{114c5}',
+ Script::Tirhuta), ('\u{114c6}', '\u{114c6}', Script::Tirhuta), ('\u{114c7}', '\u{114c7}',
+ Script::Tirhuta), ('\u{114d0}', '\u{114d9}', Script::Tirhuta), ('\u{11580}', '\u{115ae}',
+ Script::Siddham), ('\u{115af}', '\u{115b1}', Script::Siddham), ('\u{115b2}', '\u{115b5}',
+ Script::Siddham), ('\u{115b8}', '\u{115bb}', Script::Siddham), ('\u{115bc}', '\u{115bd}',
+ Script::Siddham), ('\u{115be}', '\u{115be}', Script::Siddham), ('\u{115bf}', '\u{115c0}',
+ Script::Siddham), ('\u{115c1}', '\u{115d7}', Script::Siddham), ('\u{115d8}', '\u{115db}',
+ Script::Siddham), ('\u{115dc}', '\u{115dd}', Script::Siddham), ('\u{11600}', '\u{1162f}',
+ Script::Modi), ('\u{11630}', '\u{11632}', Script::Modi), ('\u{11633}', '\u{1163a}',
+ Script::Modi), ('\u{1163b}', '\u{1163c}', Script::Modi), ('\u{1163d}', '\u{1163d}',
+ Script::Modi), ('\u{1163e}', '\u{1163e}', Script::Modi), ('\u{1163f}', '\u{11640}',
+ Script::Modi), ('\u{11641}', '\u{11643}', Script::Modi), ('\u{11644}', '\u{11644}',
+ Script::Modi), ('\u{11650}', '\u{11659}', Script::Modi), ('\u{11660}', '\u{1166c}',
+ Script::Mongolian), ('\u{11680}', '\u{116aa}', Script::Takri), ('\u{116ab}', '\u{116ab}',
+ Script::Takri), ('\u{116ac}', '\u{116ac}', Script::Takri), ('\u{116ad}', '\u{116ad}',
+ Script::Takri), ('\u{116ae}', '\u{116af}', Script::Takri), ('\u{116b0}', '\u{116b5}',
+ Script::Takri), ('\u{116b6}', '\u{116b6}', Script::Takri), ('\u{116b7}', '\u{116b7}',
+ Script::Takri), ('\u{116b8}', '\u{116b8}', Script::Takri), ('\u{116c0}', '\u{116c9}',
+ Script::Takri), ('\u{11700}', '\u{1171a}', Script::Ahom), ('\u{1171d}', '\u{1171f}',
+ Script::Ahom), ('\u{11720}', '\u{11721}', Script::Ahom), ('\u{11722}', '\u{11725}',
+ Script::Ahom), ('\u{11726}', '\u{11726}', Script::Ahom), ('\u{11727}', '\u{1172b}',
+ Script::Ahom), ('\u{11730}', '\u{11739}', Script::Ahom), ('\u{1173a}', '\u{1173b}',
+ Script::Ahom), ('\u{1173c}', '\u{1173e}', Script::Ahom), ('\u{1173f}', '\u{1173f}',
+ Script::Ahom), ('\u{11800}', '\u{1182b}', Script::Dogra), ('\u{1182c}', '\u{1182e}',
+ Script::Dogra), ('\u{1182f}', '\u{11837}', Script::Dogra), ('\u{11838}', '\u{11838}',
+ Script::Dogra), ('\u{11839}', '\u{1183a}', Script::Dogra), ('\u{1183b}', '\u{1183b}',
+ Script::Dogra), ('\u{118a0}', '\u{118df}', Script::Warang_Citi), ('\u{118e0}',
+ '\u{118e9}', Script::Warang_Citi), ('\u{118ea}', '\u{118f2}', Script::Warang_Citi),
+ ('\u{118ff}', '\u{118ff}', Script::Warang_Citi), ('\u{11900}', '\u{11906}',
+ Script::Dives_Akuru), ('\u{11909}', '\u{11909}', Script::Dives_Akuru), ('\u{1190c}',
+ '\u{11913}', Script::Dives_Akuru), ('\u{11915}', '\u{11916}', Script::Dives_Akuru),
+ ('\u{11918}', '\u{1192f}', Script::Dives_Akuru), ('\u{11930}', '\u{11935}',
+ Script::Dives_Akuru), ('\u{11937}', '\u{11938}', Script::Dives_Akuru), ('\u{1193b}',
+ '\u{1193c}', Script::Dives_Akuru), ('\u{1193d}', '\u{1193d}', Script::Dives_Akuru),
+ ('\u{1193e}', '\u{1193e}', Script::Dives_Akuru), ('\u{1193f}', '\u{1193f}',
+ Script::Dives_Akuru), ('\u{11940}', '\u{11940}', Script::Dives_Akuru), ('\u{11941}',
+ '\u{11941}', Script::Dives_Akuru), ('\u{11942}', '\u{11942}', Script::Dives_Akuru),
+ ('\u{11943}', '\u{11943}', Script::Dives_Akuru), ('\u{11944}', '\u{11946}',
+ Script::Dives_Akuru), ('\u{11950}', '\u{11959}', Script::Dives_Akuru), ('\u{119a0}',
+ '\u{119a7}', Script::Nandinagari), ('\u{119aa}', '\u{119d0}', Script::Nandinagari),
+ ('\u{119d1}', '\u{119d3}', Script::Nandinagari), ('\u{119d4}', '\u{119d7}',
+ Script::Nandinagari), ('\u{119da}', '\u{119db}', Script::Nandinagari), ('\u{119dc}',
+ '\u{119df}', Script::Nandinagari), ('\u{119e0}', '\u{119e0}', Script::Nandinagari),
+ ('\u{119e1}', '\u{119e1}', Script::Nandinagari), ('\u{119e2}', '\u{119e2}',
+ Script::Nandinagari), ('\u{119e3}', '\u{119e3}', Script::Nandinagari), ('\u{119e4}',
+ '\u{119e4}', Script::Nandinagari), ('\u{11a00}', '\u{11a00}', Script::Zanabazar_Square),
+ ('\u{11a01}', '\u{11a0a}', Script::Zanabazar_Square), ('\u{11a0b}', '\u{11a32}',
+ Script::Zanabazar_Square), ('\u{11a33}', '\u{11a38}', Script::Zanabazar_Square),
+ ('\u{11a39}', '\u{11a39}', Script::Zanabazar_Square), ('\u{11a3a}', '\u{11a3a}',
+ Script::Zanabazar_Square), ('\u{11a3b}', '\u{11a3e}', Script::Zanabazar_Square),
+ ('\u{11a3f}', '\u{11a46}', Script::Zanabazar_Square), ('\u{11a47}', '\u{11a47}',
+ Script::Zanabazar_Square), ('\u{11a50}', '\u{11a50}', Script::Soyombo), ('\u{11a51}',
+ '\u{11a56}', Script::Soyombo), ('\u{11a57}', '\u{11a58}', Script::Soyombo), ('\u{11a59}',
+ '\u{11a5b}', Script::Soyombo), ('\u{11a5c}', '\u{11a89}', Script::Soyombo), ('\u{11a8a}',
+ '\u{11a96}', Script::Soyombo), ('\u{11a97}', '\u{11a97}', Script::Soyombo), ('\u{11a98}',
+ '\u{11a99}', Script::Soyombo), ('\u{11a9a}', '\u{11a9c}', Script::Soyombo), ('\u{11a9d}',
+ '\u{11a9d}', Script::Soyombo), ('\u{11a9e}', '\u{11aa2}', Script::Soyombo), ('\u{11ac0}',
+ '\u{11af8}', Script::Pau_Cin_Hau), ('\u{11c00}', '\u{11c08}', Script::Bhaiksuki),
+ ('\u{11c0a}', '\u{11c2e}', Script::Bhaiksuki), ('\u{11c2f}', '\u{11c2f}',
+ Script::Bhaiksuki), ('\u{11c30}', '\u{11c36}', Script::Bhaiksuki), ('\u{11c38}',
+ '\u{11c3d}', Script::Bhaiksuki), ('\u{11c3e}', '\u{11c3e}', Script::Bhaiksuki),
+ ('\u{11c3f}', '\u{11c3f}', Script::Bhaiksuki), ('\u{11c40}', '\u{11c40}',
+ Script::Bhaiksuki), ('\u{11c41}', '\u{11c45}', Script::Bhaiksuki), ('\u{11c50}',
+ '\u{11c59}', Script::Bhaiksuki), ('\u{11c5a}', '\u{11c6c}', Script::Bhaiksuki),
+ ('\u{11c70}', '\u{11c71}', Script::Marchen), ('\u{11c72}', '\u{11c8f}', Script::Marchen),
+ ('\u{11c92}', '\u{11ca7}', Script::Marchen), ('\u{11ca9}', '\u{11ca9}', Script::Marchen),
+ ('\u{11caa}', '\u{11cb0}', Script::Marchen), ('\u{11cb1}', '\u{11cb1}', Script::Marchen),
+ ('\u{11cb2}', '\u{11cb3}', Script::Marchen), ('\u{11cb4}', '\u{11cb4}', Script::Marchen),
+ ('\u{11cb5}', '\u{11cb6}', Script::Marchen), ('\u{11d00}', '\u{11d06}',
+ Script::Masaram_Gondi), ('\u{11d08}', '\u{11d09}', Script::Masaram_Gondi), ('\u{11d0b}',
+ '\u{11d30}', Script::Masaram_Gondi), ('\u{11d31}', '\u{11d36}', Script::Masaram_Gondi),
+ ('\u{11d3a}', '\u{11d3a}', Script::Masaram_Gondi), ('\u{11d3c}', '\u{11d3d}',
+ Script::Masaram_Gondi), ('\u{11d3f}', '\u{11d45}', Script::Masaram_Gondi), ('\u{11d46}',
+ '\u{11d46}', Script::Masaram_Gondi), ('\u{11d47}', '\u{11d47}', Script::Masaram_Gondi),
+ ('\u{11d50}', '\u{11d59}', Script::Masaram_Gondi), ('\u{11d60}', '\u{11d65}',
+ Script::Gunjala_Gondi), ('\u{11d67}', '\u{11d68}', Script::Gunjala_Gondi), ('\u{11d6a}',
+ '\u{11d89}', Script::Gunjala_Gondi), ('\u{11d8a}', '\u{11d8e}', Script::Gunjala_Gondi),
+ ('\u{11d90}', '\u{11d91}', Script::Gunjala_Gondi), ('\u{11d93}', '\u{11d94}',
+ Script::Gunjala_Gondi), ('\u{11d95}', '\u{11d95}', Script::Gunjala_Gondi), ('\u{11d96}',
+ '\u{11d96}', Script::Gunjala_Gondi), ('\u{11d97}', '\u{11d97}', Script::Gunjala_Gondi),
+ ('\u{11d98}', '\u{11d98}', Script::Gunjala_Gondi), ('\u{11da0}', '\u{11da9}',
+ Script::Gunjala_Gondi), ('\u{11ee0}', '\u{11ef2}', Script::Makasar), ('\u{11ef3}',
+ '\u{11ef4}', Script::Makasar), ('\u{11ef5}', '\u{11ef6}', Script::Makasar), ('\u{11ef7}',
+ '\u{11ef8}', Script::Makasar), ('\u{11fb0}', '\u{11fb0}', Script::Lisu), ('\u{11fc0}',
+ '\u{11fd4}', Script::Tamil), ('\u{11fd5}', '\u{11fdc}', Script::Tamil), ('\u{11fdd}',
+ '\u{11fe0}', Script::Tamil), ('\u{11fe1}', '\u{11ff1}', Script::Tamil), ('\u{11fff}',
+ '\u{11fff}', Script::Tamil), ('\u{12000}', '\u{12399}', Script::Cuneiform), ('\u{12400}',
+ '\u{1246e}', Script::Cuneiform), ('\u{12470}', '\u{12474}', Script::Cuneiform),
+ ('\u{12480}', '\u{12543}', Script::Cuneiform), ('\u{13000}', '\u{1342e}',
+ Script::Egyptian_Hieroglyphs), ('\u{13430}', '\u{13438}', Script::Egyptian_Hieroglyphs),
+ ('\u{14400}', '\u{14646}', Script::Anatolian_Hieroglyphs), ('\u{16800}', '\u{16a38}',
+ Script::Bamum), ('\u{16a40}', '\u{16a5e}', Script::Mro), ('\u{16a60}', '\u{16a69}',
+ Script::Mro), ('\u{16a6e}', '\u{16a6f}', Script::Mro), ('\u{16ad0}', '\u{16aed}',
+ Script::Bassa_Vah), ('\u{16af0}', '\u{16af4}', Script::Bassa_Vah), ('\u{16af5}',
+ '\u{16af5}', Script::Bassa_Vah), ('\u{16b00}', '\u{16b2f}', Script::Pahawh_Hmong),
+ ('\u{16b30}', '\u{16b36}', Script::Pahawh_Hmong), ('\u{16b37}', '\u{16b3b}',
+ Script::Pahawh_Hmong), ('\u{16b3c}', '\u{16b3f}', Script::Pahawh_Hmong), ('\u{16b40}',
+ '\u{16b43}', Script::Pahawh_Hmong), ('\u{16b44}', '\u{16b44}', Script::Pahawh_Hmong),
+ ('\u{16b45}', '\u{16b45}', Script::Pahawh_Hmong), ('\u{16b50}', '\u{16b59}',
+ Script::Pahawh_Hmong), ('\u{16b5b}', '\u{16b61}', Script::Pahawh_Hmong), ('\u{16b63}',
+ '\u{16b77}', Script::Pahawh_Hmong), ('\u{16b7d}', '\u{16b8f}', Script::Pahawh_Hmong),
+ ('\u{16e40}', '\u{16e7f}', Script::Medefaidrin), ('\u{16e80}', '\u{16e96}',
+ Script::Medefaidrin), ('\u{16e97}', '\u{16e9a}', Script::Medefaidrin), ('\u{16f00}',
+ '\u{16f4a}', Script::Miao), ('\u{16f4f}', '\u{16f4f}', Script::Miao), ('\u{16f50}',
+ '\u{16f50}', Script::Miao), ('\u{16f51}', '\u{16f87}', Script::Miao), ('\u{16f8f}',
+ '\u{16f92}', Script::Miao), ('\u{16f93}', '\u{16f9f}', Script::Miao), ('\u{16fe0}',
+ '\u{16fe0}', Script::Tangut), ('\u{16fe1}', '\u{16fe1}', Script::Nushu), ('\u{16fe2}',
+ '\u{16fe2}', Script::Common), ('\u{16fe3}', '\u{16fe3}', Script::Common), ('\u{16fe4}',
+ '\u{16fe4}', Script::Khitan_Small_Script), ('\u{16ff0}', '\u{16ff1}', Script::Han),
+ ('\u{17000}', '\u{187f7}', Script::Tangut), ('\u{18800}', '\u{18aff}', Script::Tangut),
+ ('\u{18b00}', '\u{18cd5}', Script::Khitan_Small_Script), ('\u{18d00}', '\u{18d08}',
+ Script::Tangut), ('\u{1b000}', '\u{1b000}', Script::Katakana), ('\u{1b001}', '\u{1b11e}',
+ Script::Hiragana), ('\u{1b150}', '\u{1b152}', Script::Hiragana), ('\u{1b164}',
+ '\u{1b167}', Script::Katakana), ('\u{1b170}', '\u{1b2fb}', Script::Nushu), ('\u{1bc00}',
+ '\u{1bc6a}', Script::Duployan), ('\u{1bc70}', '\u{1bc7c}', Script::Duployan),
+ ('\u{1bc80}', '\u{1bc88}', Script::Duployan), ('\u{1bc90}', '\u{1bc99}',
+ Script::Duployan), ('\u{1bc9c}', '\u{1bc9c}', Script::Duployan), ('\u{1bc9d}',
+ '\u{1bc9e}', Script::Duployan), ('\u{1bc9f}', '\u{1bc9f}', Script::Duployan),
+ ('\u{1bca0}', '\u{1bca3}', Script::Common), ('\u{1d000}', '\u{1d0f5}', Script::Common),
+ ('\u{1d100}', '\u{1d126}', Script::Common), ('\u{1d129}', '\u{1d164}', Script::Common),
+ ('\u{1d165}', '\u{1d166}', Script::Common), ('\u{1d167}', '\u{1d169}', Script::Inherited),
+ ('\u{1d16a}', '\u{1d16c}', Script::Common), ('\u{1d16d}', '\u{1d172}', Script::Common),
+ ('\u{1d173}', '\u{1d17a}', Script::Common), ('\u{1d17b}', '\u{1d182}', Script::Inherited),
+ ('\u{1d183}', '\u{1d184}', Script::Common), ('\u{1d185}', '\u{1d18b}', Script::Inherited),
+ ('\u{1d18c}', '\u{1d1a9}', Script::Common), ('\u{1d1aa}', '\u{1d1ad}', Script::Inherited),
+ ('\u{1d1ae}', '\u{1d1e8}', Script::Common), ('\u{1d200}', '\u{1d241}', Script::Greek),
+ ('\u{1d242}', '\u{1d244}', Script::Greek), ('\u{1d245}', '\u{1d245}', Script::Greek),
+ ('\u{1d2e0}', '\u{1d2f3}', Script::Common), ('\u{1d300}', '\u{1d356}', Script::Common),
+ ('\u{1d360}', '\u{1d378}', Script::Common), ('\u{1d400}', '\u{1d454}', Script::Common),
+ ('\u{1d456}', '\u{1d49c}', Script::Common), ('\u{1d49e}', '\u{1d49f}', Script::Common),
+ ('\u{1d4a2}', '\u{1d4a2}', Script::Common), ('\u{1d4a5}', '\u{1d4a6}', Script::Common),
+ ('\u{1d4a9}', '\u{1d4ac}', Script::Common), ('\u{1d4ae}', '\u{1d4b9}', Script::Common),
+ ('\u{1d4bb}', '\u{1d4bb}', Script::Common), ('\u{1d4bd}', '\u{1d4c3}', Script::Common),
+ ('\u{1d4c5}', '\u{1d505}', Script::Common), ('\u{1d507}', '\u{1d50a}', Script::Common),
+ ('\u{1d50d}', '\u{1d514}', Script::Common), ('\u{1d516}', '\u{1d51c}', Script::Common),
+ ('\u{1d51e}', '\u{1d539}', Script::Common), ('\u{1d53b}', '\u{1d53e}', Script::Common),
+ ('\u{1d540}', '\u{1d544}', Script::Common), ('\u{1d546}', '\u{1d546}', Script::Common),
+ ('\u{1d54a}', '\u{1d550}', Script::Common), ('\u{1d552}', '\u{1d6a5}', Script::Common),
+ ('\u{1d6a8}', '\u{1d6c0}', Script::Common), ('\u{1d6c1}', '\u{1d6c1}', Script::Common),
+ ('\u{1d6c2}', '\u{1d6da}', Script::Common), ('\u{1d6db}', '\u{1d6db}', Script::Common),
+ ('\u{1d6dc}', '\u{1d6fa}', Script::Common), ('\u{1d6fb}', '\u{1d6fb}', Script::Common),
+ ('\u{1d6fc}', '\u{1d714}', Script::Common), ('\u{1d715}', '\u{1d715}', Script::Common),
+ ('\u{1d716}', '\u{1d734}', Script::Common), ('\u{1d735}', '\u{1d735}', Script::Common),
+ ('\u{1d736}', '\u{1d74e}', Script::Common), ('\u{1d74f}', '\u{1d74f}', Script::Common),
+ ('\u{1d750}', '\u{1d76e}', Script::Common), ('\u{1d76f}', '\u{1d76f}', Script::Common),
+ ('\u{1d770}', '\u{1d788}', Script::Common), ('\u{1d789}', '\u{1d789}', Script::Common),
+ ('\u{1d78a}', '\u{1d7a8}', Script::Common), ('\u{1d7a9}', '\u{1d7a9}', Script::Common),
+ ('\u{1d7aa}', '\u{1d7c2}', Script::Common), ('\u{1d7c3}', '\u{1d7c3}', Script::Common),
+ ('\u{1d7c4}', '\u{1d7cb}', Script::Common), ('\u{1d7ce}', '\u{1d7ff}', Script::Common),
+ ('\u{1d800}', '\u{1d9ff}', Script::SignWriting), ('\u{1da00}', '\u{1da36}',
+ Script::SignWriting), ('\u{1da37}', '\u{1da3a}', Script::SignWriting), ('\u{1da3b}',
+ '\u{1da6c}', Script::SignWriting), ('\u{1da6d}', '\u{1da74}', Script::SignWriting),
+ ('\u{1da75}', '\u{1da75}', Script::SignWriting), ('\u{1da76}', '\u{1da83}',
+ Script::SignWriting), ('\u{1da84}', '\u{1da84}', Script::SignWriting), ('\u{1da85}',
+ '\u{1da86}', Script::SignWriting), ('\u{1da87}', '\u{1da8b}', Script::SignWriting),
+ ('\u{1da9b}', '\u{1da9f}', Script::SignWriting), ('\u{1daa1}', '\u{1daaf}',
+ Script::SignWriting), ('\u{1e000}', '\u{1e006}', Script::Glagolitic), ('\u{1e008}',
+ '\u{1e018}', Script::Glagolitic), ('\u{1e01b}', '\u{1e021}', Script::Glagolitic),
+ ('\u{1e023}', '\u{1e024}', Script::Glagolitic), ('\u{1e026}', '\u{1e02a}',
+ Script::Glagolitic), ('\u{1e100}', '\u{1e12c}', Script::Nyiakeng_Puachue_Hmong),
+ ('\u{1e130}', '\u{1e136}', Script::Nyiakeng_Puachue_Hmong), ('\u{1e137}', '\u{1e13d}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e140}', '\u{1e149}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e14e}', '\u{1e14e}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e14f}', '\u{1e14f}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e2c0}', '\u{1e2eb}', Script::Wancho), ('\u{1e2ec}',
+ '\u{1e2ef}', Script::Wancho), ('\u{1e2f0}', '\u{1e2f9}', Script::Wancho), ('\u{1e2ff}',
+ '\u{1e2ff}', Script::Wancho), ('\u{1e800}', '\u{1e8c4}', Script::Mende_Kikakui),
+ ('\u{1e8c7}', '\u{1e8cf}', Script::Mende_Kikakui), ('\u{1e8d0}', '\u{1e8d6}',
+ Script::Mende_Kikakui), ('\u{1e900}', '\u{1e943}', Script::Adlam), ('\u{1e944}',
+ '\u{1e94a}', Script::Adlam), ('\u{1e94b}', '\u{1e94b}', Script::Adlam), ('\u{1e950}',
+ '\u{1e959}', Script::Adlam), ('\u{1e95e}', '\u{1e95f}', Script::Adlam), ('\u{1ec71}',
+ '\u{1ecab}', Script::Common), ('\u{1ecac}', '\u{1ecac}', Script::Common), ('\u{1ecad}',
+ '\u{1ecaf}', Script::Common), ('\u{1ecb0}', '\u{1ecb0}', Script::Common), ('\u{1ecb1}',
+ '\u{1ecb4}', Script::Common), ('\u{1ed01}', '\u{1ed2d}', Script::Common), ('\u{1ed2e}',
+ '\u{1ed2e}', Script::Common), ('\u{1ed2f}', '\u{1ed3d}', Script::Common), ('\u{1ee00}',
+ '\u{1ee03}', Script::Arabic), ('\u{1ee05}', '\u{1ee1f}', Script::Arabic), ('\u{1ee21}',
+ '\u{1ee22}', Script::Arabic), ('\u{1ee24}', '\u{1ee24}', Script::Arabic), ('\u{1ee27}',
+ '\u{1ee27}', Script::Arabic), ('\u{1ee29}', '\u{1ee32}', Script::Arabic), ('\u{1ee34}',
+ '\u{1ee37}', Script::Arabic), ('\u{1ee39}', '\u{1ee39}', Script::Arabic), ('\u{1ee3b}',
+ '\u{1ee3b}', Script::Arabic), ('\u{1ee42}', '\u{1ee42}', Script::Arabic), ('\u{1ee47}',
+ '\u{1ee47}', Script::Arabic), ('\u{1ee49}', '\u{1ee49}', Script::Arabic), ('\u{1ee4b}',
+ '\u{1ee4b}', Script::Arabic), ('\u{1ee4d}', '\u{1ee4f}', Script::Arabic), ('\u{1ee51}',
+ '\u{1ee52}', Script::Arabic), ('\u{1ee54}', '\u{1ee54}', Script::Arabic), ('\u{1ee57}',
+ '\u{1ee57}', Script::Arabic), ('\u{1ee59}', '\u{1ee59}', Script::Arabic), ('\u{1ee5b}',
+ '\u{1ee5b}', Script::Arabic), ('\u{1ee5d}', '\u{1ee5d}', Script::Arabic), ('\u{1ee5f}',
+ '\u{1ee5f}', Script::Arabic), ('\u{1ee61}', '\u{1ee62}', Script::Arabic), ('\u{1ee64}',
+ '\u{1ee64}', Script::Arabic), ('\u{1ee67}', '\u{1ee6a}', Script::Arabic), ('\u{1ee6c}',
+ '\u{1ee72}', Script::Arabic), ('\u{1ee74}', '\u{1ee77}', Script::Arabic), ('\u{1ee79}',
+ '\u{1ee7c}', Script::Arabic), ('\u{1ee7e}', '\u{1ee7e}', Script::Arabic), ('\u{1ee80}',
+ '\u{1ee89}', Script::Arabic), ('\u{1ee8b}', '\u{1ee9b}', Script::Arabic), ('\u{1eea1}',
+ '\u{1eea3}', Script::Arabic), ('\u{1eea5}', '\u{1eea9}', Script::Arabic), ('\u{1eeab}',
+ '\u{1eebb}', Script::Arabic), ('\u{1eef0}', '\u{1eef1}', Script::Arabic), ('\u{1f000}',
+ '\u{1f02b}', Script::Common), ('\u{1f030}', '\u{1f093}', Script::Common), ('\u{1f0a0}',
+ '\u{1f0ae}', Script::Common), ('\u{1f0b1}', '\u{1f0bf}', Script::Common), ('\u{1f0c1}',
+ '\u{1f0cf}', Script::Common), ('\u{1f0d1}', '\u{1f0f5}', Script::Common), ('\u{1f100}',
+ '\u{1f10c}', Script::Common), ('\u{1f10d}', '\u{1f1ad}', Script::Common), ('\u{1f1e6}',
+ '\u{1f1ff}', Script::Common), ('\u{1f200}', '\u{1f200}', Script::Hiragana), ('\u{1f201}',
+ '\u{1f202}', Script::Common), ('\u{1f210}', '\u{1f23b}', Script::Common), ('\u{1f240}',
+ '\u{1f248}', Script::Common), ('\u{1f250}', '\u{1f251}', Script::Common), ('\u{1f260}',
+ '\u{1f265}', Script::Common), ('\u{1f300}', '\u{1f3fa}', Script::Common), ('\u{1f3fb}',
+ '\u{1f3ff}', Script::Common), ('\u{1f400}', '\u{1f6d7}', Script::Common), ('\u{1f6e0}',
+ '\u{1f6ec}', Script::Common), ('\u{1f6f0}', '\u{1f6fc}', Script::Common), ('\u{1f700}',
+ '\u{1f773}', Script::Common), ('\u{1f780}', '\u{1f7d8}', Script::Common), ('\u{1f7e0}',
+ '\u{1f7eb}', Script::Common), ('\u{1f800}', '\u{1f80b}', Script::Common), ('\u{1f810}',
+ '\u{1f847}', Script::Common), ('\u{1f850}', '\u{1f859}', Script::Common), ('\u{1f860}',
+ '\u{1f887}', Script::Common), ('\u{1f890}', '\u{1f8ad}', Script::Common), ('\u{1f8b0}',
+ '\u{1f8b1}', Script::Common), ('\u{1f900}', '\u{1f978}', Script::Common), ('\u{1f97a}',
+ '\u{1f9cb}', Script::Common), ('\u{1f9cd}', '\u{1fa53}', Script::Common), ('\u{1fa60}',
+ '\u{1fa6d}', Script::Common), ('\u{1fa70}', '\u{1fa74}', Script::Common), ('\u{1fa78}',
+ '\u{1fa7a}', Script::Common), ('\u{1fa80}', '\u{1fa86}', Script::Common), ('\u{1fa90}',
+ '\u{1faa8}', Script::Common), ('\u{1fab0}', '\u{1fab6}', Script::Common), ('\u{1fac0}',
+ '\u{1fac2}', Script::Common), ('\u{1fad0}', '\u{1fad6}', Script::Common), ('\u{1fb00}',
+ '\u{1fb92}', Script::Common), ('\u{1fb94}', '\u{1fbca}', Script::Common), ('\u{1fbf0}',
+ '\u{1fbf9}', Script::Common), ('\u{20000}', '\u{2a6dd}', Script::Han), ('\u{2a700}',
+ '\u{2b734}', Script::Han), ('\u{2b740}', '\u{2b81d}', Script::Han), ('\u{2b820}',
+ '\u{2cea1}', Script::Han), ('\u{2ceb0}', '\u{2ebe0}', Script::Han), ('\u{2f800}',
+ '\u{2fa1d}', Script::Han), ('\u{30000}', '\u{3134a}', Script::Han), ('\u{e0001}',
+ '\u{e0001}', Script::Common), ('\u{e0020}', '\u{e007f}', Script::Common), ('\u{e0100}',
+ '\u{e01ef}', Script::Inherited)
+ ];
+
+ const SCRIPT_EXTENSIONS: &'static [(char, char, ScriptExtension)] = &[
+ ('\u{342}', '\u{342}', script_extensions::GREK), ('\u{345}', '\u{345}',
+ script_extensions::GREK), ('\u{363}', '\u{36f}', script_extensions::LATN), ('\u{483}',
+ '\u{483}', script_extensions::CYRL_PERM), ('\u{484}', '\u{484}',
+ script_extensions::CYRL_GLAG), ('\u{485}', '\u{486}', script_extensions::CYRL_LATN),
+ ('\u{487}', '\u{487}', script_extensions::CYRL_GLAG), ('\u{60c}', '\u{60c}',
+ script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{61b}', '\u{61b}',
+ script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{61c}', '\u{61c}',
+ script_extensions::ARAB_SYRC_THAA), ('\u{61f}', '\u{61f}',
+ script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{640}', '\u{640}',
+ script_extensions::ADLM_ARAB_MAND_MANI_PHLP_ROHG_SOGD_SYRC), ('\u{64b}', '\u{655}',
+ script_extensions::ARAB_SYRC), ('\u{660}', '\u{669}', script_extensions::ARAB_THAA_YEZI),
+ ('\u{670}', '\u{670}', script_extensions::ARAB_SYRC), ('\u{6d4}', '\u{6d4}',
+ script_extensions::ARAB_ROHG), ('\u{951}', '\u{951}',
+ script_extensions::BENG_DEVA_GRAN_GUJR_GURU_KNDA_LATN_MLYM_ORYA_SHRD_TAML_TELU_TIRH),
+ ('\u{952}', '\u{952}',
+ script_extensions::BENG_DEVA_GRAN_GUJR_GURU_KNDA_LATN_MLYM_ORYA_TAML_TELU_TIRH), ('\u{964}',
+ '\u{964}',
+ script_extensions::BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH),
+ ('\u{965}', '\u{965}',
+ script_extensions::BENG_DEVA_DOGR_GONG_GONM_GRAN_GUJR_GURU_KNDA_LIMB_MAHJ_MLYM_NAND_ORYA_SIND_SINH_SYLO_TAKR_TAML_TELU_TIRH),
+ ('\u{966}', '\u{96f}', script_extensions::DEVA_DOGR_KTHI_MAHJ), ('\u{9e6}', '\u{9ef}',
+ script_extensions::BENG_CAKM_SYLO), ('\u{a66}', '\u{a6f}', script_extensions::GURU_MULT),
+ ('\u{ae6}', '\u{aef}', script_extensions::GUJR_KHOJ), ('\u{be6}', '\u{bef}',
+ script_extensions::GRAN_TAML), ('\u{bf0}', '\u{bf2}', script_extensions::GRAN_TAML),
+ ('\u{bf3}', '\u{bf3}', script_extensions::GRAN_TAML), ('\u{ce6}', '\u{cef}',
+ script_extensions::KNDA_NAND), ('\u{1040}', '\u{1049}', script_extensions::CAKM_MYMR_TALE),
+ ('\u{10fb}', '\u{10fb}', script_extensions::GEOR_LATN), ('\u{1735}', '\u{1736}',
+ script_extensions::BUHD_HANO_TAGB_TGLG), ('\u{1802}', '\u{1803}',
+ script_extensions::MONG_PHAG), ('\u{1805}', '\u{1805}', script_extensions::MONG_PHAG),
+ ('\u{1cd0}', '\u{1cd0}', script_extensions::BENG_DEVA_GRAN_KNDA), ('\u{1cd1}', '\u{1cd1}',
+ script_extensions::DEVA), ('\u{1cd2}', '\u{1cd2}', script_extensions::BENG_DEVA_GRAN_KNDA),
+ ('\u{1cd3}', '\u{1cd3}', script_extensions::DEVA_GRAN), ('\u{1cd4}', '\u{1cd4}',
+ script_extensions::DEVA), ('\u{1cd5}', '\u{1cd6}', script_extensions::BENG_DEVA),
+ ('\u{1cd7}', '\u{1cd7}', script_extensions::DEVA_SHRD), ('\u{1cd8}', '\u{1cd8}',
+ script_extensions::BENG_DEVA), ('\u{1cd9}', '\u{1cd9}', script_extensions::DEVA_SHRD),
+ ('\u{1cda}', '\u{1cda}', script_extensions::DEVA_KNDA_MLYM_ORYA_TAML_TELU), ('\u{1cdb}',
+ '\u{1cdb}', script_extensions::DEVA), ('\u{1cdc}', '\u{1cdd}',
+ script_extensions::DEVA_SHRD), ('\u{1cde}', '\u{1cdf}', script_extensions::DEVA),
+ ('\u{1ce0}', '\u{1ce0}', script_extensions::DEVA_SHRD), ('\u{1ce1}', '\u{1ce1}',
+ script_extensions::BENG_DEVA), ('\u{1ce2}', '\u{1ce8}', script_extensions::DEVA),
+ ('\u{1ce9}', '\u{1ce9}', script_extensions::DEVA_NAND), ('\u{1cea}', '\u{1cea}',
+ script_extensions::BENG_DEVA), ('\u{1ceb}', '\u{1cec}', script_extensions::DEVA),
+ ('\u{1ced}', '\u{1ced}', script_extensions::BENG_DEVA), ('\u{1cee}', '\u{1cf1}',
+ script_extensions::DEVA), ('\u{1cf2}', '\u{1cf2}',
+ script_extensions::BENG_DEVA_GRAN_KNDA_NAND_ORYA_TELU_TIRH), ('\u{1cf3}', '\u{1cf3}',
+ script_extensions::DEVA_GRAN), ('\u{1cf4}', '\u{1cf4}', script_extensions::DEVA_GRAN_KNDA),
+ ('\u{1cf5}', '\u{1cf6}', script_extensions::BENG_DEVA), ('\u{1cf7}', '\u{1cf7}',
+ script_extensions::BENG), ('\u{1cf8}', '\u{1cf9}', script_extensions::DEVA_GRAN),
+ ('\u{1cfa}', '\u{1cfa}', script_extensions::NAND), ('\u{1dc0}', '\u{1dc1}',
+ script_extensions::GREK), ('\u{1df8}', '\u{1df8}', script_extensions::CYRL_SYRC),
+ ('\u{202f}', '\u{202f}', script_extensions::LATN_MONG), ('\u{20f0}', '\u{20f0}',
+ script_extensions::DEVA_GRAN_LATN), ('\u{2e43}', '\u{2e43}', script_extensions::CYRL_GLAG),
+ ('\u{3001}', '\u{3002}', script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3003}',
+ '\u{3003}', script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{3006}', '\u{3006}',
+ script_extensions::HANI), ('\u{3008}', '\u{3008}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3009}', '\u{3009}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300a}', '\u{300a}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300b}', '\u{300b}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300c}', '\u{300c}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300d}', '\u{300d}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300e}', '\u{300e}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300f}', '\u{300f}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3010}', '\u{3010}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3011}', '\u{3011}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3013}', '\u{3013}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{3014}', '\u{3014}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3015}', '\u{3015}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3016}', '\u{3016}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3017}', '\u{3017}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3018}', '\u{3018}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3019}', '\u{3019}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{301a}', '\u{301a}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{301b}', '\u{301b}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{301c}', '\u{301c}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{301d}', '\u{301d}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{301e}', '\u{301f}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{302a}', '\u{302d}',
+ script_extensions::BOPO_HANI), ('\u{3030}', '\u{3030}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{3031}', '\u{3035}',
+ script_extensions::HIRA_KANA), ('\u{3037}', '\u{3037}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{303c}', '\u{303c}',
+ script_extensions::HANI_HIRA_KANA), ('\u{303d}', '\u{303d}',
+ script_extensions::HANI_HIRA_KANA), ('\u{303e}', '\u{303f}', script_extensions::HANI),
+ ('\u{3099}', '\u{309a}', script_extensions::HIRA_KANA), ('\u{309b}', '\u{309c}',
+ script_extensions::HIRA_KANA), ('\u{30a0}', '\u{30a0}', script_extensions::HIRA_KANA),
+ ('\u{30fb}', '\u{30fb}', script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{30fc}',
+ '\u{30fc}', script_extensions::HIRA_KANA), ('\u{3190}', '\u{3191}',
+ script_extensions::HANI), ('\u{3192}', '\u{3195}', script_extensions::HANI), ('\u{3196}',
+ '\u{319f}', script_extensions::HANI), ('\u{31c0}', '\u{31e3}', script_extensions::HANI),
+ ('\u{3220}', '\u{3229}', script_extensions::HANI), ('\u{322a}', '\u{3247}',
+ script_extensions::HANI), ('\u{3280}', '\u{3289}', script_extensions::HANI), ('\u{328a}',
+ '\u{32b0}', script_extensions::HANI), ('\u{32c0}', '\u{32cb}', script_extensions::HANI),
+ ('\u{32ff}', '\u{32ff}', script_extensions::HANI), ('\u{3358}', '\u{3370}',
+ script_extensions::HANI), ('\u{337b}', '\u{337f}', script_extensions::HANI), ('\u{33e0}',
+ '\u{33fe}', script_extensions::HANI), ('\u{a66f}', '\u{a66f}',
+ script_extensions::CYRL_GLAG), ('\u{a700}', '\u{a707}', script_extensions::HANI_LATN),
+ ('\u{a830}', '\u{a832}',
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KNDA_KTHI_MAHJ_MLYM_MODI_NAND_SIND_TAKR_TIRH),
+ ('\u{a833}', '\u{a835}',
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KNDA_KTHI_MAHJ_MODI_NAND_SIND_TAKR_TIRH),
+ ('\u{a836}', '\u{a837}',
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH), ('\u{a838}',
+ '\u{a838}', script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH),
+ ('\u{a839}', '\u{a839}',
+ script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH), ('\u{a8f1}',
+ '\u{a8f1}', script_extensions::BENG_DEVA), ('\u{a8f3}', '\u{a8f3}',
+ script_extensions::DEVA_TAML), ('\u{a92e}', '\u{a92e}', script_extensions::KALI_LATN_MYMR),
+ ('\u{a9cf}', '\u{a9cf}', script_extensions::BUGI_JAVA), ('\u{fdf2}', '\u{fdf2}',
+ script_extensions::ARAB_THAA), ('\u{fdfd}', '\u{fdfd}', script_extensions::ARAB_THAA),
+ ('\u{fe45}', '\u{fe46}', script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{ff61}',
+ '\u{ff61}', script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff62}', '\u{ff62}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff63}', '\u{ff63}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff64}', '\u{ff65}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff70}', '\u{ff70}',
+ script_extensions::HIRA_KANA), ('\u{ff9e}', '\u{ff9f}', script_extensions::HIRA_KANA),
+ ('\u{10100}', '\u{10102}', script_extensions::CPRT_LINB), ('\u{10107}', '\u{10133}',
+ script_extensions::CPRT_LINA_LINB), ('\u{10137}', '\u{1013f}',
+ script_extensions::CPRT_LINB), ('\u{102e0}', '\u{102e0}', script_extensions::ARAB_COPT),
+ ('\u{102e1}', '\u{102fb}', script_extensions::ARAB_COPT), ('\u{11301}', '\u{11301}',
+ script_extensions::GRAN_TAML), ('\u{11303}', '\u{11303}', script_extensions::GRAN_TAML),
+ ('\u{1133b}', '\u{1133c}', script_extensions::GRAN_TAML), ('\u{11fd0}', '\u{11fd1}',
+ script_extensions::GRAN_TAML), ('\u{11fd3}', '\u{11fd3}', script_extensions::GRAN_TAML),
+ ('\u{1bca0}', '\u{1bca3}', script_extensions::DUPL), ('\u{1d360}', '\u{1d371}',
+ script_extensions::HANI), ('\u{1f250}', '\u{1f251}', script_extensions::HANI)
+ ];
+
+
+}