diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /vendor/unicode-script | |
parent | Initial commit. (diff) | |
download | rustc-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.json | 1 | ||||
-rw-r--r-- | vendor/unicode-script/Cargo.toml | 42 | ||||
-rw-r--r-- | vendor/unicode-script/README.md | 7 | ||||
-rw-r--r-- | vendor/unicode-script/scripts/unicode.py | 402 | ||||
-rw-r--r-- | vendor/unicode-script/src/lib.rs | 560 | ||||
-rw-r--r-- | vendor/unicode-script/src/tables.rs | 3111 |
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) + ]; + + +} |