mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 10:44:36 +08:00
unicodedata: resolve name aliases and named sequences (#8676)
* unicodedata: resolve name aliases and named sequences
Vendor Unicode 17 NameAliases.txt and NamedSequences.txt into
rustpython-unicode so unicodedata.lookup matches CPython: formal
aliases and named sequences on the modern view, none on ucd_3_2_0.
Tangut derived-name lookup is case-insensitive. \N{} still rejects
named sequences because they are not a single character.
Assisted-by: Claude
* test_ucn: drop expectedFailure on test_aliases
The name-alias tables make the test pass; leaving the marker
fails CI as an unexpected success.
Assisted-by: Claude
* unicode: reject whitespace in Tangut derived names
parse_hex_code does not skip spaces around the hex digits.
Assisted-by: Claude
This commit is contained in:
1 parent
979576e2e4
commit
3fe3f37dac
9 files changed
+1417
-12
No files matched your search
Vendored
-3
@@ -149,7 +149,6 @@ class UnicodeNamesTest(unittest.TestCase):
|
||||
self.checkletter("HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK", "\uFF9F")
|
||||
self.checkletter("FULLWIDTH LATIN SMALL LETTER A", "\uFF41")
|
||||
|
||||
@unittest.expectedFailure # TODO: RUSTPYTHON
|
||||
def test_aliases(self):
|
||||
# Check that the aliases defined in the NameAliases.txt file work.
|
||||
# This should be updated when new aliases are added or the file
|
||||
@@ -190,7 +189,6 @@ class UnicodeNamesTest(unittest.TestCase):
|
||||
unicodedata.name(chr(cp))
|
||||
self.assertEqual(str(cm.exception), 'no such name')
|
||||
|
||||
@unittest.expectedFailure # TODO: RUSTPYTHON
|
||||
def test_named_sequences_sample(self):
|
||||
# Check a few named sequences. See #12753.
|
||||
sequences = [
|
||||
@@ -207,7 +205,6 @@ class UnicodeNamesTest(unittest.TestCase):
|
||||
with self.assertRaises(KeyError):
|
||||
unicodedata.ucd_3_2_0.lookup(seqname)
|
||||
|
||||
@unittest.expectedFailure # TODO: RUSTPYTHON
|
||||
def test_named_sequences_full(self):
|
||||
# Check all the named sequences
|
||||
def check_version(testfile):
|
||||
|
||||
@@ -101,10 +101,12 @@ mod unicodedata {
|
||||
#[pymethod]
|
||||
fn lookup(&self, name: PyStrRef, vm: &VirtualMachine) -> PyResult<String> {
|
||||
if let Some(name_str) = name.to_str()
|
||||
&& let Some(character) = unicode_core::lookup_character(name_str)
|
||||
&& self.inner.membership(character)
|
||||
&& let Some(found) = self.inner.lookup(name_str)
|
||||
{
|
||||
return Ok(character.to_string());
|
||||
return Ok(match found {
|
||||
unicode_core::LookupResult::Character(ch) => ch.to_string(),
|
||||
unicode_core::LookupResult::Sequence(seq) => seq.to_string(),
|
||||
});
|
||||
}
|
||||
Err(vm.new_key_error(
|
||||
vm.ctx
|
||||
|
||||
@@ -221,6 +221,7 @@ fn full_data_parsers_latest() {
|
||||
|
||||
generate_decomp(decomp_lines);
|
||||
generate_algo_names(algo_names);
|
||||
generate_name_lookups();
|
||||
}
|
||||
|
||||
fn generate_decomp(decomp_lines: Vec<(u32, String)>) {
|
||||
@@ -340,6 +341,78 @@ fn generate_algo_names(names: Vec<(u32, Box<str>)>) {
|
||||
);
|
||||
}
|
||||
|
||||
/// Formal name aliases (`NameAliases.txt`) and named sequences
|
||||
/// (`NamedSequences.txt`). `unicodedata.lookup` consults both; `\N{}`
|
||||
/// accepts only a single character, so named sequences stay out of
|
||||
/// `lookup_character`.
|
||||
fn generate_name_lookups() {
|
||||
let mut aliases: Vec<(String, u32)> = Vec::new();
|
||||
for line in UnicodeLineReader::from_file_name("NameAliases.txt", true) {
|
||||
let name = line
|
||||
.field(
|
||||
NonZeroUsize::new(1).unwrap(),
|
||||
Some(&format!(
|
||||
"field 1 (alias) missing from NameAliases.txt: {}",
|
||||
line.line
|
||||
)),
|
||||
)
|
||||
.to_ascii_uppercase();
|
||||
aliases.push((name, line.start));
|
||||
}
|
||||
aliases.sort_unstable_by(|a, b| a.0.cmp(&b.0));
|
||||
aliases.dedup_by(|a, b| a.0 == b.0);
|
||||
|
||||
let mut sequences: Vec<(String, String)> = Vec::new();
|
||||
let path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.join("unicode")
|
||||
.join("latest")
|
||||
.join("NamedSequences.txt");
|
||||
let file = File::open(&path).unwrap_or_else(|e| {
|
||||
panic!(
|
||||
"{e}: vendored Unicode data file should exist: {}",
|
||||
path.display()
|
||||
)
|
||||
});
|
||||
for raw in BufReader::new(file).lines() {
|
||||
let raw = raw.unwrap();
|
||||
let line = raw.trim();
|
||||
if line.is_empty() || line.starts_with('#') {
|
||||
continue;
|
||||
}
|
||||
let (name, codes) = line
|
||||
.split_once(';')
|
||||
.unwrap_or_else(|| panic!("NamedSequences.txt line should be `NAME; HEX HEX`: {line}"));
|
||||
let name = name.trim().to_ascii_uppercase();
|
||||
let mut escaped = String::new();
|
||||
for hex in codes.split_whitespace() {
|
||||
let cp = u32::from_str_radix(hex, 16).unwrap_or_else(|e| {
|
||||
panic!("NamedSequences.txt code point should be hex: {hex} ({e})")
|
||||
});
|
||||
escaped.push_str("\\u{");
|
||||
escaped.push_str(&format!("{cp:X}"));
|
||||
escaped.push('}');
|
||||
}
|
||||
sequences.push((name, escaped));
|
||||
}
|
||||
sequences.sort_unstable_by(|a, b| a.0.cmp(&b.0));
|
||||
sequences.dedup_by(|a, b| a.0 == b.0);
|
||||
|
||||
let mut writer = open_writer("name_lookups.rs");
|
||||
writeln!(writer, "static NAME_ALIASES: &[(&str, char)] = &[").unwrap();
|
||||
for (name, code) in &aliases {
|
||||
let ch = char::from_u32(*code)
|
||||
.unwrap_or_else(|| panic!("NameAliases.txt code point should be a scalar: {code:04X}"));
|
||||
writeln!(writer, " (\"{name}\", '\\u{{{:X}}}'),", ch as u32).unwrap();
|
||||
}
|
||||
writeln!(writer, "];").unwrap();
|
||||
|
||||
writeln!(writer, "static NAMED_SEQUENCES: &[(&str, &str)] = &[").unwrap();
|
||||
for (name, escaped) in &sequences {
|
||||
writeln!(writer, " (\"{name}\", \"{escaped}\"),").unwrap();
|
||||
}
|
||||
writeln!(writer, "];").unwrap();
|
||||
}
|
||||
|
||||
/// Drive parsers that require the full 3.2.0 data.
|
||||
///
|
||||
/// As the full data set is HUGE, it's more efficient to parse it once then delegate to subparsers.
|
||||
|
||||
+134
-5
@@ -20,6 +20,7 @@ use icu_properties::props::{
|
||||
use rustpython_wtf8::CodePoint;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/generated/algo_names.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/generated/name_lookups.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/generated/bidi_class_3_2.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/generated/binary_props_3_2.rs"));
|
||||
include!(concat!(
|
||||
@@ -95,8 +96,20 @@ impl AlgorithmicName {
|
||||
}
|
||||
|
||||
fn check_name(search_name: &str) -> Option<char> {
|
||||
if let Some(without_base) = search_name.strip_prefix(Self::TangutIdeograph.name_base()) {
|
||||
let cp = u32::from_str_radix(without_base.strip_prefix('-')?.trim(), 16).ok()?;
|
||||
// CPython compares derived-name prefixes case-insensitively
|
||||
// (`PyOS_strnicmp` in `_getcode`).
|
||||
let folded: String = search_name
|
||||
.chars()
|
||||
.map(|c| c.to_ascii_uppercase())
|
||||
.collect();
|
||||
if let Some(without_base) = folded.strip_prefix(Self::TangutIdeograph.name_base()) {
|
||||
// `parse_hex_code` does not skip spaces around the digits.
|
||||
let hex = without_base.strip_prefix('-')?;
|
||||
// `_getcode` / `parse_hex_code`: 4–6 digits, no leading zero.
|
||||
if hex.len() < 4 || hex.len() > 6 || hex.starts_with('0') {
|
||||
return None;
|
||||
}
|
||||
let cp = u32::from_str_radix(hex, 16).ok()?;
|
||||
let ch = char::from_u32(cp)?;
|
||||
if lookup_table(ALGO_NAMES, ch)? == Self::TangutIdeograph {
|
||||
return Some(ch);
|
||||
@@ -107,6 +120,36 @@ impl AlgorithmicName {
|
||||
}
|
||||
}
|
||||
|
||||
/// Result of `unicodedata.lookup`.
|
||||
///
|
||||
/// A named sequence is several characters; `\N{...}` only accepts a
|
||||
/// single character, so `lookup_character` drops `Sequence`.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum LookupResult {
|
||||
Character(char),
|
||||
Sequence(&'static str),
|
||||
}
|
||||
|
||||
fn fold_lookup_name(name: &str) -> String {
|
||||
name.chars().map(|c| c.to_ascii_uppercase()).collect()
|
||||
}
|
||||
|
||||
fn lookup_alias(name: &str) -> Option<char> {
|
||||
let key = fold_lookup_name(name);
|
||||
NAME_ALIASES
|
||||
.binary_search_by_key(&key.as_str(), |(n, _)| *n)
|
||||
.ok()
|
||||
.map(|i| NAME_ALIASES[i].1)
|
||||
}
|
||||
|
||||
fn lookup_named_sequence(name: &str) -> Option<&'static str> {
|
||||
let key = fold_lookup_name(name);
|
||||
NAMED_SEQUENCES
|
||||
.binary_search_by_key(&key.as_str(), |(n, _)| *n)
|
||||
.ok()
|
||||
.map(|i| NAMED_SEQUENCES[i].1)
|
||||
}
|
||||
|
||||
fn lookup_table<T: Copy>(table: &[(u32, u32, T)], ch: char) -> Option<T> {
|
||||
let ch = ch as u32;
|
||||
table
|
||||
@@ -170,10 +213,24 @@ pub fn unicode_version() -> String {
|
||||
)
|
||||
}
|
||||
|
||||
/// Look up a character by its Unicode name (`unicodedata.lookup`).
|
||||
/// Look up a name in the latest UCD (`unicodedata.lookup`).
|
||||
///
|
||||
/// Named sequences are included; `\N{...}` should use [`lookup_character`]
|
||||
/// so a sequence is reported as unknown.
|
||||
#[must_use]
|
||||
pub fn lookup_name(search_name: &str) -> Option<LookupResult> {
|
||||
Ucd::new(true).lookup(search_name)
|
||||
}
|
||||
|
||||
/// Look up a single character by its Unicode name (`\N{...}`).
|
||||
///
|
||||
/// Named sequences are not characters and so do not resolve.
|
||||
#[must_use]
|
||||
pub fn lookup_character(search_name: &str) -> Option<char> {
|
||||
unicode_names2::character(search_name).or_else(|| AlgorithmicName::check_name(search_name))
|
||||
match lookup_name(search_name) {
|
||||
Some(LookupResult::Character(ch)) => Some(ch),
|
||||
Some(LookupResult::Sequence(_)) | None => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// The Unicode name of `ch` (`unicodedata.name`), if any.
|
||||
@@ -210,6 +267,26 @@ impl Ucd {
|
||||
}
|
||||
}
|
||||
|
||||
/// Look up `name` in this UCD view.
|
||||
///
|
||||
/// Unicode 3.2.0 has no name aliases and no named sequences
|
||||
/// (`unicodedata.ucd_3_2_0.lookup`).
|
||||
#[must_use]
|
||||
pub fn lookup(self, search_name: &str) -> Option<LookupResult> {
|
||||
if let Some(ch) = unicode_names2::character(search_name)
|
||||
.or_else(|| AlgorithmicName::check_name(search_name))
|
||||
{
|
||||
return self.membership(ch).then_some(LookupResult::Character(ch));
|
||||
}
|
||||
if !self.modern {
|
||||
return None;
|
||||
}
|
||||
if let Some(ch) = lookup_alias(search_name) {
|
||||
return Some(LookupResult::Character(ch));
|
||||
}
|
||||
lookup_named_sequence(search_name).map(LookupResult::Sequence)
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn category(&self, c: CodePoint) -> &'static str {
|
||||
let Some(c) = c.to_char() else {
|
||||
@@ -414,7 +491,7 @@ impl Ucd {
|
||||
mod tests {
|
||||
use rustpython_wtf8::CodePoint;
|
||||
|
||||
use super::{Ucd, character_name, lookup_character};
|
||||
use super::{LookupResult, Ucd, character_name, lookup_character, lookup_name};
|
||||
|
||||
fn cp(ch: char) -> CodePoint {
|
||||
CodePoint::from(ch)
|
||||
@@ -438,4 +515,56 @@ mod tests {
|
||||
let legacy = Ucd::new(false);
|
||||
assert_eq!(legacy.unidata_version(), "3.2.0");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn name_aliases_resolve_and_do_not_replace_the_official_name() {
|
||||
assert_eq!(
|
||||
lookup_character("LATIN CAPITAL LETTER GHA"),
|
||||
Some('\u{01A2}')
|
||||
);
|
||||
assert_eq!(
|
||||
lookup_character("latin capital letter gha"),
|
||||
Some('\u{01A2}')
|
||||
);
|
||||
assert_eq!(
|
||||
character_name('\u{01A2}').as_deref(),
|
||||
Some("LATIN CAPITAL LETTER OI")
|
||||
);
|
||||
assert_eq!(Ucd::new(false).lookup("LATIN CAPITAL LETTER GHA"), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn named_sequences_resolve_only_on_the_modern_view() {
|
||||
assert_eq!(
|
||||
lookup_name("LATIN SMALL LETTER R WITH TILDE"),
|
||||
Some(LookupResult::Sequence("r\u{0303}"))
|
||||
);
|
||||
assert_eq!(
|
||||
lookup_name("KEYCAP NUMBER SIGN"),
|
||||
Some(LookupResult::Sequence("#\u{FE0F}\u{20E3}"))
|
||||
);
|
||||
assert_eq!(lookup_character("LATIN SMALL LETTER R WITH TILDE"), None);
|
||||
assert_eq!(
|
||||
Ucd::new(false).lookup("LATIN SMALL LETTER R WITH TILDE"),
|
||||
None
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tangut_derived_names_are_case_insensitive() {
|
||||
assert_eq!(
|
||||
lookup_character("TANGUT IDEOGRAPH-17000"),
|
||||
Some('\u{17000}')
|
||||
);
|
||||
assert_eq!(
|
||||
lookup_character("tangut ideograph-18d08"),
|
||||
Some('\u{18D08}')
|
||||
);
|
||||
assert_eq!(
|
||||
character_name('\u{17000}').as_deref(),
|
||||
Some("TANGUT IDEOGRAPH-17000")
|
||||
);
|
||||
assert_eq!(lookup_character("TANGUT IDEOGRAPH- 17000"), None);
|
||||
assert_eq!(lookup_character("TANGUT IDEOGRAPH-17000 "), None);
|
||||
}
|
||||
}
|
||||
@@ -15,5 +15,5 @@ pub mod data;
|
||||
pub mod identifier;
|
||||
pub mod normalize;
|
||||
|
||||
pub use data::{Ucd, character_name, lookup_character, unicode_version};
|
||||
pub use data::{LookupResult, Ucd, character_name, lookup_character, lookup_name, unicode_version};
|
||||
pub use normalize::{NormalizeForm, is_normalized, normalize};
|
||||
@@ -4,4 +4,6 @@ The vendored data files come directly from the official [Unicode site](https://w
|
||||
|
||||
The files in `latest` need to be periodically bumped to match `icu4x` and Rust. These files may be found at the [Unicode Character Database](https://www.unicode.org/ucd/).
|
||||
|
||||
`NameAliases.txt` and `NamedSequences.txt` feed `unicodedata.lookup` (formal aliases and named sequences). They are not used by `unicodedata.name`, which still reports the official character name.
|
||||
|
||||
RustPython vendors [Unicode 3.2.0](https://www.unicode.org/reports/tr28/tr28-3.html) to match CPython. CPython uses 3.2.0 to ensure backwards compatibility with a few older modules. Unicode 3.2.0 was released in 2002 and does not need periodic refreshes.
|
||||
@@ -0,0 +1,579 @@
|
||||
# NameAliases-17.0.0.txt
|
||||
# Date: 2025-04-23
|
||||
# © 2025 Unicode®, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use and license, see https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# This file is a normative contributory data file in the
|
||||
# Unicode Character Database.
|
||||
#
|
||||
# This file defines the formal name aliases for Unicode characters.
|
||||
#
|
||||
# For informative aliases, see NamesList.txt
|
||||
#
|
||||
# The formal name aliases are divided into five types, each with a distinct label.
|
||||
#
|
||||
# Type Labels:
|
||||
#
|
||||
# 1. correction
|
||||
# Corrections for serious problems in the character names
|
||||
# 2. control
|
||||
# ISO 6429 names for C0 and C1 control functions, and other
|
||||
# commonly occurring names for control codes
|
||||
# 3. alternate
|
||||
# A few widely used alternate names for format characters
|
||||
# 4. figment
|
||||
# Several documented labels for C1 control code points which
|
||||
# were never actually approved in any standard
|
||||
# 5. abbreviation
|
||||
# Commonly occurring abbreviations (or acronyms) for control codes,
|
||||
# format characters, spaces, and variation selectors
|
||||
#
|
||||
# The formal name aliases are part of the Unicode character namespace, which
|
||||
# includes the character names and the names of named character sequences.
|
||||
# The inclusion of ISO 6429 names and other commonly occurring names and
|
||||
# abbreviations for control codes and format characters as formal name aliases
|
||||
# is to help avoid name collisions between Unicode character names and the
|
||||
# labels which commonly appear in text and/or in implementations such as regex, for
|
||||
# control codes (which for historical reasons have no Unicode character name)
|
||||
# or for format characters.
|
||||
#
|
||||
# For documentation, see NamesList.html and https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# FORMAT
|
||||
#
|
||||
# Each line has three fields, as described here:
|
||||
#
|
||||
# First field: Code point
|
||||
# Second field: Alias
|
||||
# Third field: Type
|
||||
#
|
||||
# The type labels used are defined above. As for property values, comparisons
|
||||
# of type labels should ignore case.
|
||||
#
|
||||
# The type labels can be mapped to other strings for display, if desired.
|
||||
#
|
||||
# In case multiple aliases are assigned, additional aliases
|
||||
# are provided on separate lines. Parsers of this data file should
|
||||
# take note that the same code point can (and does) occur more than once.
|
||||
#
|
||||
# Note that currently the only instances of multiple aliases of the same
|
||||
# type for a single code point are either of type "control" or "abbreviation".
|
||||
# An alias of type "abbreviation" can, in principle, be added for any code
|
||||
# point, although currently aliases of type "correction" do not have
|
||||
# any additional aliases of type "abbreviation". Such relationships
|
||||
# are not enforced by stability policies.
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
|
||||
0000;NULL;control
|
||||
0000;NUL;abbreviation
|
||||
0001;START OF HEADING;control
|
||||
0001;SOH;abbreviation
|
||||
0002;START OF TEXT;control
|
||||
0002;STX;abbreviation
|
||||
0003;END OF TEXT;control
|
||||
0003;ETX;abbreviation
|
||||
0004;END OF TRANSMISSION;control
|
||||
0004;EOT;abbreviation
|
||||
0005;ENQUIRY;control
|
||||
0005;ENQ;abbreviation
|
||||
0006;ACKNOWLEDGE;control
|
||||
0006;ACK;abbreviation
|
||||
|
||||
# Note that no formal name alias for the ISO 6429 "BELL" is
|
||||
# provided for U+0007, because of the existing name collision
|
||||
# with U+1F514 BELL.
|
||||
|
||||
0007;ALERT;control
|
||||
0007;BEL;abbreviation
|
||||
|
||||
0008;BACKSPACE;control
|
||||
0008;BS;abbreviation
|
||||
0009;CHARACTER TABULATION;control
|
||||
0009;HORIZONTAL TABULATION;control
|
||||
0009;HT;abbreviation
|
||||
0009;TAB;abbreviation
|
||||
000A;LINE FEED;control
|
||||
000A;NEW LINE;control
|
||||
000A;END OF LINE;control
|
||||
000A;LF;abbreviation
|
||||
000A;NL;abbreviation
|
||||
000A;EOL;abbreviation
|
||||
000B;LINE TABULATION;control
|
||||
000B;VERTICAL TABULATION;control
|
||||
000B;VT;abbreviation
|
||||
000C;FORM FEED;control
|
||||
000C;FF;abbreviation
|
||||
000D;CARRIAGE RETURN;control
|
||||
000D;CR;abbreviation
|
||||
000E;SHIFT OUT;control
|
||||
000E;LOCKING-SHIFT ONE;control
|
||||
000E;SO;abbreviation
|
||||
000F;SHIFT IN;control
|
||||
000F;LOCKING-SHIFT ZERO;control
|
||||
000F;SI;abbreviation
|
||||
0010;DATA LINK ESCAPE;control
|
||||
0010;DLE;abbreviation
|
||||
0011;DEVICE CONTROL ONE;control
|
||||
0011;DC1;abbreviation
|
||||
0012;DEVICE CONTROL TWO;control
|
||||
0012;DC2;abbreviation
|
||||
0013;DEVICE CONTROL THREE;control
|
||||
0013;DC3;abbreviation
|
||||
0014;DEVICE CONTROL FOUR;control
|
||||
0014;DC4;abbreviation
|
||||
0015;NEGATIVE ACKNOWLEDGE;control
|
||||
0015;NAK;abbreviation
|
||||
0016;SYNCHRONOUS IDLE;control
|
||||
0016;SYN;abbreviation
|
||||
0017;END OF TRANSMISSION BLOCK;control
|
||||
0017;ETB;abbreviation
|
||||
0018;CANCEL;control
|
||||
0018;CAN;abbreviation
|
||||
0019;END OF MEDIUM;control
|
||||
0019;EOM;abbreviation
|
||||
0019;EM;abbreviation
|
||||
001A;SUBSTITUTE;control
|
||||
001A;SUB;abbreviation
|
||||
001B;ESCAPE;control
|
||||
001B;ESC;abbreviation
|
||||
001C;INFORMATION SEPARATOR FOUR;control
|
||||
001C;FILE SEPARATOR;control
|
||||
001C;FS;abbreviation
|
||||
001D;INFORMATION SEPARATOR THREE;control
|
||||
001D;GROUP SEPARATOR;control
|
||||
001D;GS;abbreviation
|
||||
001E;INFORMATION SEPARATOR TWO;control
|
||||
001E;RECORD SEPARATOR;control
|
||||
001E;RS;abbreviation
|
||||
001F;INFORMATION SEPARATOR ONE;control
|
||||
001F;UNIT SEPARATOR;control
|
||||
001F;US;abbreviation
|
||||
0020;SP;abbreviation
|
||||
007F;DELETE;control
|
||||
007F;DEL;abbreviation
|
||||
|
||||
# PADDING CHARACTER and HIGH OCTET PRESET represent
|
||||
# architectural concepts initially proposed for early
|
||||
# drafts of ISO/IEC 10646-1. They were never actually
|
||||
# approved or standardized: hence their designation
|
||||
# here as the "figment" type. Formal name aliases
|
||||
# (and corresponding abbreviations) for these code
|
||||
# points are included here because these names leaked
|
||||
# out from the draft documents and were published in
|
||||
# at least one RFC whose names for code points were
|
||||
# implemented in Perl regex expressions.
|
||||
|
||||
0080;PADDING CHARACTER;figment
|
||||
0080;PAD;abbreviation
|
||||
0081;HIGH OCTET PRESET;figment
|
||||
0081;HOP;abbreviation
|
||||
|
||||
0082;BREAK PERMITTED HERE;control
|
||||
0082;BPH;abbreviation
|
||||
0083;NO BREAK HERE;control
|
||||
0083;NBH;abbreviation
|
||||
0084;INDEX;control
|
||||
0084;IND;abbreviation
|
||||
0085;NEXT LINE;control
|
||||
0085;NEL;abbreviation
|
||||
0086;START OF SELECTED AREA;control
|
||||
0086;SSA;abbreviation
|
||||
0087;END OF SELECTED AREA;control
|
||||
0087;ESA;abbreviation
|
||||
0088;CHARACTER TABULATION SET;control
|
||||
0088;HORIZONTAL TABULATION SET;control
|
||||
0088;HTS;abbreviation
|
||||
0089;CHARACTER TABULATION WITH JUSTIFICATION;control
|
||||
0089;HORIZONTAL TABULATION WITH JUSTIFICATION;control
|
||||
0089;HTJ;abbreviation
|
||||
008A;LINE TABULATION SET;control
|
||||
008A;VERTICAL TABULATION SET;control
|
||||
008A;VTS;abbreviation
|
||||
008B;PARTIAL LINE FORWARD;control
|
||||
008B;PARTIAL LINE DOWN;control
|
||||
008B;PLD;abbreviation
|
||||
008C;PARTIAL LINE BACKWARD;control
|
||||
008C;PARTIAL LINE UP;control
|
||||
008C;PLU;abbreviation
|
||||
008D;REVERSE LINE FEED;control
|
||||
008D;REVERSE INDEX;control
|
||||
008D;RI;abbreviation
|
||||
008E;SINGLE SHIFT TWO;control
|
||||
008E;SINGLE-SHIFT-2;control
|
||||
008E;SS2;abbreviation
|
||||
008F;SINGLE SHIFT THREE;control
|
||||
008F;SINGLE-SHIFT-3;control
|
||||
008F;SS3;abbreviation
|
||||
0090;DEVICE CONTROL STRING;control
|
||||
0090;DCS;abbreviation
|
||||
0091;PRIVATE USE ONE;control
|
||||
0091;PRIVATE USE-1;control
|
||||
0091;PU1;abbreviation
|
||||
0092;PRIVATE USE TWO;control
|
||||
0092;PRIVATE USE-2;control
|
||||
0092;PU2;abbreviation
|
||||
0093;SET TRANSMIT STATE;control
|
||||
0093;STS;abbreviation
|
||||
0094;CANCEL CHARACTER;control
|
||||
0094;CCH;abbreviation
|
||||
0095;MESSAGE WAITING;control
|
||||
0095;MW;abbreviation
|
||||
0096;START OF GUARDED AREA;control
|
||||
0096;START OF PROTECTED AREA;control
|
||||
0096;SPA;abbreviation
|
||||
0097;END OF GUARDED AREA;control
|
||||
0097;END OF PROTECTED AREA;control
|
||||
0097;EPA;abbreviation
|
||||
0098;START OF STRING;control
|
||||
0098;SOS;abbreviation
|
||||
|
||||
# SINGLE GRAPHIC CHARACTER INTRODUCER is another
|
||||
# architectural concept from early drafts of ISO/IEC 10646-1
|
||||
# which was never approved and standardized.
|
||||
|
||||
0099;SINGLE GRAPHIC CHARACTER INTRODUCER;figment
|
||||
0099;SGC;abbreviation
|
||||
|
||||
009A;SINGLE CHARACTER INTRODUCER;control
|
||||
009A;SCI;abbreviation
|
||||
009B;CONTROL SEQUENCE INTRODUCER;control
|
||||
009B;CSI;abbreviation
|
||||
009C;STRING TERMINATOR;control
|
||||
009C;ST;abbreviation
|
||||
009D;OPERATING SYSTEM COMMAND;control
|
||||
009D;OSC;abbreviation
|
||||
009E;PRIVACY MESSAGE;control
|
||||
009E;PM;abbreviation
|
||||
009F;APPLICATION PROGRAM COMMAND;control
|
||||
009F;APC;abbreviation
|
||||
00A0;NBSP;abbreviation
|
||||
00AD;SHY;abbreviation
|
||||
01A2;LATIN CAPITAL LETTER GHA;correction
|
||||
01A3;LATIN SMALL LETTER GHA;correction
|
||||
034F;CGJ;abbreviation
|
||||
0616;ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;correction
|
||||
061C;ALM;abbreviation
|
||||
0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction
|
||||
0CDE;KANNADA LETTER LLLA;correction
|
||||
0E9D;LAO LETTER FO FON;correction
|
||||
0E9F;LAO LETTER FO FAY;correction
|
||||
0EA3;LAO LETTER RO;correction
|
||||
0EA5;LAO LETTER LO;correction
|
||||
0FD0;TIBETAN MARK BKA- SHOG GI MGO RGYAN;correction
|
||||
11EC;HANGUL JONGSEONG YESIEUNG-KIYEOK;correction
|
||||
11ED;HANGUL JONGSEONG YESIEUNG-SSANGKIYEOK;correction
|
||||
11EE;HANGUL JONGSEONG SSANGYESIEUNG;correction
|
||||
11EF;HANGUL JONGSEONG YESIEUNG-KHIEUKH;correction
|
||||
180B;FVS1;abbreviation
|
||||
180C;FVS2;abbreviation
|
||||
180D;FVS3;abbreviation
|
||||
180E;MVS;abbreviation
|
||||
180F;FVS4;abbreviation
|
||||
1BBD;SUNDANESE LETTER ARCHAIC I;correction
|
||||
200B;ZWSP;abbreviation
|
||||
200C;ZWNJ;abbreviation
|
||||
200D;ZWJ;abbreviation
|
||||
200E;LRM;abbreviation
|
||||
200F;RLM;abbreviation
|
||||
202A;LRE;abbreviation
|
||||
202B;RLE;abbreviation
|
||||
202C;PDF;abbreviation
|
||||
202D;LRO;abbreviation
|
||||
202E;RLO;abbreviation
|
||||
202F;NNBSP;abbreviation
|
||||
205F;MMSP;abbreviation
|
||||
2060;WJ;abbreviation
|
||||
2066;LRI;abbreviation
|
||||
2067;RLI;abbreviation
|
||||
2068;FSI;abbreviation
|
||||
2069;PDI;abbreviation
|
||||
2118;WEIERSTRASS ELLIPTIC FUNCTION;correction
|
||||
2448;MICR ON US SYMBOL;correction
|
||||
2449;MICR DASH SYMBOL;correction
|
||||
2B7A;LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
|
||||
2B7C;RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
|
||||
A015;YI SYLLABLE ITERATION MARK;correction
|
||||
AA6E;MYANMAR LETTER KHAMTI LLA;correction
|
||||
FE00;VS1;abbreviation
|
||||
FE01;VS2;abbreviation
|
||||
FE02;VS3;abbreviation
|
||||
FE03;VS4;abbreviation
|
||||
FE04;VS5;abbreviation
|
||||
FE05;VS6;abbreviation
|
||||
FE06;VS7;abbreviation
|
||||
FE07;VS8;abbreviation
|
||||
FE08;VS9;abbreviation
|
||||
FE09;VS10;abbreviation
|
||||
FE0A;VS11;abbreviation
|
||||
FE0B;VS12;abbreviation
|
||||
FE0C;VS13;abbreviation
|
||||
FE0D;VS14;abbreviation
|
||||
FE0E;VS15;abbreviation
|
||||
FE0F;VS16;abbreviation
|
||||
FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;correction
|
||||
FEFF;BYTE ORDER MARK;alternate
|
||||
FEFF;BOM;abbreviation
|
||||
FEFF;ZWNBSP;abbreviation
|
||||
122D4;CUNEIFORM SIGN NU11 TENU;correction
|
||||
122D5;CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR;correction
|
||||
12327;CUNEIFORM SIGN KALAM;correction
|
||||
1680B;BAMUM LETTER PHASE-A MAEMGBIEE;correction
|
||||
16881;BAMUM LETTER PHASE-B PUNGGAAM;correction
|
||||
1688E;BAMUM LETTER PHASE-B NGGOM;correction
|
||||
168DC;BAMUM LETTER PHASE-C SHETFON;correction
|
||||
1697D;BAMUM LETTER PHASE-E NGGOP;correction
|
||||
16E56;MEDEFAIDRIN CAPITAL LETTER H;correction
|
||||
16E57;MEDEFAIDRIN CAPITAL LETTER NG;correction
|
||||
16E76;MEDEFAIDRIN SMALL LETTER H;correction
|
||||
16E77;MEDEFAIDRIN SMALL LETTER NG;correction
|
||||
1B001;HENTAIGANA LETTER E-1;correction
|
||||
1D0C5;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS;correction
|
||||
1E899;MENDE KIKAKUI SYLLABLE M172 MBO;correction
|
||||
1E89A;MENDE KIKAKUI SYLLABLE M174 MBOO;correction
|
||||
E0100;VS17;abbreviation
|
||||
E0101;VS18;abbreviation
|
||||
E0102;VS19;abbreviation
|
||||
E0103;VS20;abbreviation
|
||||
E0104;VS21;abbreviation
|
||||
E0105;VS22;abbreviation
|
||||
E0106;VS23;abbreviation
|
||||
E0107;VS24;abbreviation
|
||||
E0108;VS25;abbreviation
|
||||
E0109;VS26;abbreviation
|
||||
E010A;VS27;abbreviation
|
||||
E010B;VS28;abbreviation
|
||||
E010C;VS29;abbreviation
|
||||
E010D;VS30;abbreviation
|
||||
E010E;VS31;abbreviation
|
||||
E010F;VS32;abbreviation
|
||||
E0110;VS33;abbreviation
|
||||
E0111;VS34;abbreviation
|
||||
E0112;VS35;abbreviation
|
||||
E0113;VS36;abbreviation
|
||||
E0114;VS37;abbreviation
|
||||
E0115;VS38;abbreviation
|
||||
E0116;VS39;abbreviation
|
||||
E0117;VS40;abbreviation
|
||||
E0118;VS41;abbreviation
|
||||
E0119;VS42;abbreviation
|
||||
E011A;VS43;abbreviation
|
||||
E011B;VS44;abbreviation
|
||||
E011C;VS45;abbreviation
|
||||
E011D;VS46;abbreviation
|
||||
E011E;VS47;abbreviation
|
||||
E011F;VS48;abbreviation
|
||||
E0120;VS49;abbreviation
|
||||
E0121;VS50;abbreviation
|
||||
E0122;VS51;abbreviation
|
||||
E0123;VS52;abbreviation
|
||||
E0124;VS53;abbreviation
|
||||
E0125;VS54;abbreviation
|
||||
E0126;VS55;abbreviation
|
||||
E0127;VS56;abbreviation
|
||||
E0128;VS57;abbreviation
|
||||
E0129;VS58;abbreviation
|
||||
E012A;VS59;abbreviation
|
||||
E012B;VS60;abbreviation
|
||||
E012C;VS61;abbreviation
|
||||
E012D;VS62;abbreviation
|
||||
E012E;VS63;abbreviation
|
||||
E012F;VS64;abbreviation
|
||||
E0130;VS65;abbreviation
|
||||
E0131;VS66;abbreviation
|
||||
E0132;VS67;abbreviation
|
||||
E0133;VS68;abbreviation
|
||||
E0134;VS69;abbreviation
|
||||
E0135;VS70;abbreviation
|
||||
E0136;VS71;abbreviation
|
||||
E0137;VS72;abbreviation
|
||||
E0138;VS73;abbreviation
|
||||
E0139;VS74;abbreviation
|
||||
E013A;VS75;abbreviation
|
||||
E013B;VS76;abbreviation
|
||||
E013C;VS77;abbreviation
|
||||
E013D;VS78;abbreviation
|
||||
E013E;VS79;abbreviation
|
||||
E013F;VS80;abbreviation
|
||||
E0140;VS81;abbreviation
|
||||
E0141;VS82;abbreviation
|
||||
E0142;VS83;abbreviation
|
||||
E0143;VS84;abbreviation
|
||||
E0144;VS85;abbreviation
|
||||
E0145;VS86;abbreviation
|
||||
E0146;VS87;abbreviation
|
||||
E0147;VS88;abbreviation
|
||||
E0148;VS89;abbreviation
|
||||
E0149;VS90;abbreviation
|
||||
E014A;VS91;abbreviation
|
||||
E014B;VS92;abbreviation
|
||||
E014C;VS93;abbreviation
|
||||
E014D;VS94;abbreviation
|
||||
E014E;VS95;abbreviation
|
||||
E014F;VS96;abbreviation
|
||||
E0150;VS97;abbreviation
|
||||
E0151;VS98;abbreviation
|
||||
E0152;VS99;abbreviation
|
||||
E0153;VS100;abbreviation
|
||||
E0154;VS101;abbreviation
|
||||
E0155;VS102;abbreviation
|
||||
E0156;VS103;abbreviation
|
||||
E0157;VS104;abbreviation
|
||||
E0158;VS105;abbreviation
|
||||
E0159;VS106;abbreviation
|
||||
E015A;VS107;abbreviation
|
||||
E015B;VS108;abbreviation
|
||||
E015C;VS109;abbreviation
|
||||
E015D;VS110;abbreviation
|
||||
E015E;VS111;abbreviation
|
||||
E015F;VS112;abbreviation
|
||||
E0160;VS113;abbreviation
|
||||
E0161;VS114;abbreviation
|
||||
E0162;VS115;abbreviation
|
||||
E0163;VS116;abbreviation
|
||||
E0164;VS117;abbreviation
|
||||
E0165;VS118;abbreviation
|
||||
E0166;VS119;abbreviation
|
||||
E0167;VS120;abbreviation
|
||||
E0168;VS121;abbreviation
|
||||
E0169;VS122;abbreviation
|
||||
E016A;VS123;abbreviation
|
||||
E016B;VS124;abbreviation
|
||||
E016C;VS125;abbreviation
|
||||
E016D;VS126;abbreviation
|
||||
E016E;VS127;abbreviation
|
||||
E016F;VS128;abbreviation
|
||||
E0170;VS129;abbreviation
|
||||
E0171;VS130;abbreviation
|
||||
E0172;VS131;abbreviation
|
||||
E0173;VS132;abbreviation
|
||||
E0174;VS133;abbreviation
|
||||
E0175;VS134;abbreviation
|
||||
E0176;VS135;abbreviation
|
||||
E0177;VS136;abbreviation
|
||||
E0178;VS137;abbreviation
|
||||
E0179;VS138;abbreviation
|
||||
E017A;VS139;abbreviation
|
||||
E017B;VS140;abbreviation
|
||||
E017C;VS141;abbreviation
|
||||
E017D;VS142;abbreviation
|
||||
E017E;VS143;abbreviation
|
||||
E017F;VS144;abbreviation
|
||||
E0180;VS145;abbreviation
|
||||
E0181;VS146;abbreviation
|
||||
E0182;VS147;abbreviation
|
||||
E0183;VS148;abbreviation
|
||||
E0184;VS149;abbreviation
|
||||
E0185;VS150;abbreviation
|
||||
E0186;VS151;abbreviation
|
||||
E0187;VS152;abbreviation
|
||||
E0188;VS153;abbreviation
|
||||
E0189;VS154;abbreviation
|
||||
E018A;VS155;abbreviation
|
||||
E018B;VS156;abbreviation
|
||||
E018C;VS157;abbreviation
|
||||
E018D;VS158;abbreviation
|
||||
E018E;VS159;abbreviation
|
||||
E018F;VS160;abbreviation
|
||||
E0190;VS161;abbreviation
|
||||
E0191;VS162;abbreviation
|
||||
E0192;VS163;abbreviation
|
||||
E0193;VS164;abbreviation
|
||||
E0194;VS165;abbreviation
|
||||
E0195;VS166;abbreviation
|
||||
E0196;VS167;abbreviation
|
||||
E0197;VS168;abbreviation
|
||||
E0198;VS169;abbreviation
|
||||
E0199;VS170;abbreviation
|
||||
E019A;VS171;abbreviation
|
||||
E019B;VS172;abbreviation
|
||||
E019C;VS173;abbreviation
|
||||
E019D;VS174;abbreviation
|
||||
E019E;VS175;abbreviation
|
||||
E019F;VS176;abbreviation
|
||||
E01A0;VS177;abbreviation
|
||||
E01A1;VS178;abbreviation
|
||||
E01A2;VS179;abbreviation
|
||||
E01A3;VS180;abbreviation
|
||||
E01A4;VS181;abbreviation
|
||||
E01A5;VS182;abbreviation
|
||||
E01A6;VS183;abbreviation
|
||||
E01A7;VS184;abbreviation
|
||||
E01A8;VS185;abbreviation
|
||||
E01A9;VS186;abbreviation
|
||||
E01AA;VS187;abbreviation
|
||||
E01AB;VS188;abbreviation
|
||||
E01AC;VS189;abbreviation
|
||||
E01AD;VS190;abbreviation
|
||||
E01AE;VS191;abbreviation
|
||||
E01AF;VS192;abbreviation
|
||||
E01B0;VS193;abbreviation
|
||||
E01B1;VS194;abbreviation
|
||||
E01B2;VS195;abbreviation
|
||||
E01B3;VS196;abbreviation
|
||||
E01B4;VS197;abbreviation
|
||||
E01B5;VS198;abbreviation
|
||||
E01B6;VS199;abbreviation
|
||||
E01B7;VS200;abbreviation
|
||||
E01B8;VS201;abbreviation
|
||||
E01B9;VS202;abbreviation
|
||||
E01BA;VS203;abbreviation
|
||||
E01BB;VS204;abbreviation
|
||||
E01BC;VS205;abbreviation
|
||||
E01BD;VS206;abbreviation
|
||||
E01BE;VS207;abbreviation
|
||||
E01BF;VS208;abbreviation
|
||||
E01C0;VS209;abbreviation
|
||||
E01C1;VS210;abbreviation
|
||||
E01C2;VS211;abbreviation
|
||||
E01C3;VS212;abbreviation
|
||||
E01C4;VS213;abbreviation
|
||||
E01C5;VS214;abbreviation
|
||||
E01C6;VS215;abbreviation
|
||||
E01C7;VS216;abbreviation
|
||||
E01C8;VS217;abbreviation
|
||||
E01C9;VS218;abbreviation
|
||||
E01CA;VS219;abbreviation
|
||||
E01CB;VS220;abbreviation
|
||||
E01CC;VS221;abbreviation
|
||||
E01CD;VS222;abbreviation
|
||||
E01CE;VS223;abbreviation
|
||||
E01CF;VS224;abbreviation
|
||||
E01D0;VS225;abbreviation
|
||||
E01D1;VS226;abbreviation
|
||||
E01D2;VS227;abbreviation
|
||||
E01D3;VS228;abbreviation
|
||||
E01D4;VS229;abbreviation
|
||||
E01D5;VS230;abbreviation
|
||||
E01D6;VS231;abbreviation
|
||||
E01D7;VS232;abbreviation
|
||||
E01D8;VS233;abbreviation
|
||||
E01D9;VS234;abbreviation
|
||||
E01DA;VS235;abbreviation
|
||||
E01DB;VS236;abbreviation
|
||||
E01DC;VS237;abbreviation
|
||||
E01DD;VS238;abbreviation
|
||||
E01DE;VS239;abbreviation
|
||||
E01DF;VS240;abbreviation
|
||||
E01E0;VS241;abbreviation
|
||||
E01E1;VS242;abbreviation
|
||||
E01E2;VS243;abbreviation
|
||||
E01E3;VS244;abbreviation
|
||||
E01E4;VS245;abbreviation
|
||||
E01E5;VS246;abbreviation
|
||||
E01E6;VS247;abbreviation
|
||||
E01E7;VS248;abbreviation
|
||||
E01E8;VS249;abbreviation
|
||||
E01E9;VS250;abbreviation
|
||||
E01EA;VS251;abbreviation
|
||||
E01EB;VS252;abbreviation
|
||||
E01EC;VS253;abbreviation
|
||||
E01ED;VS254;abbreviation
|
||||
E01EE;VS255;abbreviation
|
||||
E01EF;VS256;abbreviation
|
||||
|
||||
# EOF
|
||||
@@ -0,0 +1,613 @@
|
||||
# NamedSequences-17.0.0.txt
|
||||
# Date: 2025-07-30
|
||||
# © 2025 Unicode®, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use and license, see https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Unicode Named Character Sequences
|
||||
#
|
||||
# This file is a normative contributory data file in the Unicode
|
||||
# Character Database.
|
||||
#
|
||||
# Format:
|
||||
# Name of Sequence; Code Point Sequence for USI
|
||||
#
|
||||
# Code point sequences in the Unicode Character Database
|
||||
# use spaces as delimiters. The corresponding format for a
|
||||
# UCS Sequence Identifier (USI) in ISO/IEC 10646 uses
|
||||
# comma delimitation and angle brackets. Thus, a Unicode
|
||||
# named character sequence of the form:
|
||||
#
|
||||
# EXAMPLE NAME;1000 1001 1002
|
||||
#
|
||||
# in this data file, would correspond to an ISO/IEC 10646 USI
|
||||
# as follows:
|
||||
#
|
||||
# <1000, 1001, 1002>
|
||||
#
|
||||
# For more information, see UAX #34: Unicode Named Character
|
||||
# Sequences, at https://www.unicode.org/reports/tr34/
|
||||
#
|
||||
# Note: The order of entries in this file is not significant.
|
||||
# However, entries are generally in script order corresponding
|
||||
# to block order in the Unicode Standard, to make it easier
|
||||
# to find entries in the list.
|
||||
|
||||
# ================================================
|
||||
|
||||
# Named keycap sequences for telephone keypad (used for emoji)
|
||||
# Provisional, 2015-05-05
|
||||
# FE0F added to the sequences, 2016-05-11
|
||||
# Approved 2017-05-12
|
||||
|
||||
KEYCAP NUMBER SIGN;0023 FE0F 20E3
|
||||
KEYCAP ASTERISK;002A FE0F 20E3
|
||||
KEYCAP DIGIT ZERO;0030 FE0F 20E3
|
||||
KEYCAP DIGIT ONE;0031 FE0F 20E3
|
||||
KEYCAP DIGIT TWO;0032 FE0F 20E3
|
||||
KEYCAP DIGIT THREE;0033 FE0F 20E3
|
||||
KEYCAP DIGIT FOUR;0034 FE0F 20E3
|
||||
KEYCAP DIGIT FIVE;0035 FE0F 20E3
|
||||
KEYCAP DIGIT SIX;0036 FE0F 20E3
|
||||
KEYCAP DIGIT SEVEN;0037 FE0F 20E3
|
||||
KEYCAP DIGIT EIGHT;0038 FE0F 20E3
|
||||
KEYCAP DIGIT NINE;0039 FE0F 20E3
|
||||
|
||||
# Latin letter plus accent combinations.
|
||||
# These are part of the original set of approved named sequences
|
||||
# for Unicode 4.1. 2005.
|
||||
# Subgroupings of this original set are identified here by
|
||||
# purpose and source.
|
||||
|
||||
# Subset 1: Originally requested for a Latin orthography
|
||||
# of Hausa. See WG2 N1143 and UTC/1996-005. (6 total)
|
||||
|
||||
LATIN CAPITAL LETTER A WITH MACRON AND GRAVE;0100 0300
|
||||
LATIN SMALL LETTER A WITH MACRON AND GRAVE;0101 0300
|
||||
LATIN CAPITAL LETTER I WITH MACRON AND GRAVE;012A 0300
|
||||
LATIN SMALL LETTER I WITH MACRON AND GRAVE;012B 0300
|
||||
LATIN CAPITAL LETTER U WITH MACRON AND GRAVE;016A 0300
|
||||
LATIN SMALL LETTER U WITH MACRON AND GRAVE;016B 0300
|
||||
|
||||
# Subset 2: Originally requested for a Latin orthography
|
||||
# of Yoruba. See WG2 N1143 and UTC/1996-005. (14 total)
|
||||
|
||||
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW;0045 0329
|
||||
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW;0065 0329
|
||||
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00C8 0329
|
||||
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00E8 0329
|
||||
LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00C9 0329
|
||||
LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00E9 0329
|
||||
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW;004F 0329
|
||||
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW;006F 0329
|
||||
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00D2 0329
|
||||
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00F2 0329
|
||||
LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00D3 0329
|
||||
LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00F3 0329
|
||||
LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW;0053 0329
|
||||
LATIN SMALL LETTER S WITH VERTICAL LINE BELOW;0073 0329
|
||||
|
||||
# Subset 3: Originally requested for Pinyin forms noted
|
||||
# in HKSCS. See L2/02-423 and WG2 N2513. (4 total)
|
||||
|
||||
LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON;00CA 0304
|
||||
LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON;00EA 0304
|
||||
LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON;00CA 030C
|
||||
LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON;00EA 030C
|
||||
|
||||
# Subset 4: Prominent use cases pulled from examples
|
||||
# for Lithuanian and Tagalog in
|
||||
# Unicode 4.0 and early drafts of UAX #34. (2 total)
|
||||
|
||||
LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE;0069 0307 0301
|
||||
LATIN SMALL LETTER NG WITH TILDE ABOVE;006E 0360 0067
|
||||
|
||||
# Additions for Lithuanian.
|
||||
# Provisional 2006-05-18, Approved 2007-10-19
|
||||
|
||||
LATIN CAPITAL LETTER A WITH OGONEK AND ACUTE;0104 0301
|
||||
LATIN SMALL LETTER A WITH OGONEK AND ACUTE;0105 0301
|
||||
LATIN CAPITAL LETTER A WITH OGONEK AND TILDE;0104 0303
|
||||
LATIN SMALL LETTER A WITH OGONEK AND TILDE;0105 0303
|
||||
LATIN CAPITAL LETTER E WITH OGONEK AND ACUTE;0118 0301
|
||||
LATIN SMALL LETTER E WITH OGONEK AND ACUTE;0119 0301
|
||||
LATIN CAPITAL LETTER E WITH OGONEK AND TILDE;0118 0303
|
||||
LATIN SMALL LETTER E WITH OGONEK AND TILDE;0119 0303
|
||||
LATIN CAPITAL LETTER E WITH DOT ABOVE AND ACUTE;0116 0301
|
||||
LATIN SMALL LETTER E WITH DOT ABOVE AND ACUTE;0117 0301
|
||||
LATIN CAPITAL LETTER E WITH DOT ABOVE AND TILDE;0116 0303
|
||||
LATIN SMALL LETTER E WITH DOT ABOVE AND TILDE;0117 0303
|
||||
LATIN SMALL LETTER I WITH DOT ABOVE AND GRAVE;0069 0307 0300
|
||||
LATIN SMALL LETTER I WITH DOT ABOVE AND TILDE;0069 0307 0303
|
||||
LATIN CAPITAL LETTER I WITH OGONEK AND ACUTE;012E 0301
|
||||
LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND ACUTE;012F 0307 0301
|
||||
LATIN CAPITAL LETTER I WITH OGONEK AND TILDE;012E 0303
|
||||
LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND TILDE;012F 0307 0303
|
||||
LATIN CAPITAL LETTER J WITH TILDE;004A 0303
|
||||
LATIN SMALL LETTER J WITH DOT ABOVE AND TILDE;006A 0307 0303
|
||||
LATIN CAPITAL LETTER L WITH TILDE;004C 0303
|
||||
LATIN SMALL LETTER L WITH TILDE;006C 0303
|
||||
LATIN CAPITAL LETTER M WITH TILDE;004D 0303
|
||||
LATIN SMALL LETTER M WITH TILDE;006D 0303
|
||||
LATIN CAPITAL LETTER R WITH TILDE;0052 0303
|
||||
LATIN SMALL LETTER R WITH TILDE;0072 0303
|
||||
LATIN CAPITAL LETTER U WITH OGONEK AND ACUTE;0172 0301
|
||||
LATIN SMALL LETTER U WITH OGONEK AND ACUTE;0173 0301
|
||||
LATIN CAPITAL LETTER U WITH OGONEK AND TILDE;0172 0303
|
||||
LATIN SMALL LETTER U WITH OGONEK AND TILDE;0173 0303
|
||||
LATIN CAPITAL LETTER U WITH MACRON AND ACUTE;016A 0301
|
||||
LATIN SMALL LETTER U WITH MACRON AND ACUTE;016B 0301
|
||||
LATIN CAPITAL LETTER U WITH MACRON AND TILDE;016A 0303
|
||||
LATIN SMALL LETTER U WITH MACRON AND TILDE;016B 0303
|
||||
|
||||
# Entries for JIS X 0213 compatibility mapping.
|
||||
# Provisional 2008-11-07, Approved 2010-05-14
|
||||
|
||||
LATIN SMALL LETTER AE WITH GRAVE;00E6 0300
|
||||
LATIN SMALL LETTER OPEN O WITH GRAVE;0254 0300
|
||||
LATIN SMALL LETTER OPEN O WITH ACUTE;0254 0301
|
||||
LATIN SMALL LETTER TURNED V WITH GRAVE;028C 0300
|
||||
LATIN SMALL LETTER TURNED V WITH ACUTE;028C 0301
|
||||
LATIN SMALL LETTER SCHWA WITH GRAVE;0259 0300
|
||||
LATIN SMALL LETTER SCHWA WITH ACUTE;0259 0301
|
||||
LATIN SMALL LETTER HOOKED SCHWA WITH GRAVE;025A 0300
|
||||
LATIN SMALL LETTER HOOKED SCHWA WITH ACUTE;025A 0301
|
||||
|
||||
# Entries for Uyghur and Chagatai.
|
||||
# Provisional N/A, Approved 2012-11-08
|
||||
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF;0626 0627
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH WAW;0626 0648
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA;0626 0649
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH OE;0626 06C6
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH U;0626 06C7
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH YU;0626 06C8
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH E;0626 06D0
|
||||
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE;0626 06D5
|
||||
ARABIC SEQUENCE NOON WITH KEHEH;0646 06A9
|
||||
|
||||
# Entries that correspond to Indic characters with nuktas
|
||||
# that are also listed in CompositionExclusions.txt.
|
||||
# These characters decompose for normalized text, even
|
||||
# in NFC. Having named sequences for these helps in
|
||||
# certain specifications, including Label Generation Rules (LGR)
|
||||
# for Internationalized Domain Names (IDN).
|
||||
#
|
||||
# Provisional 2020-01-16, Approved 2021-07-27
|
||||
|
||||
DEVANAGARI SEQUENCE FOR LETTER QA; 0915 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER KHHA; 0916 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER GHHA; 0917 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER ZA; 091C 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER DDDHA; 0921 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER RHA; 0922 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER FA; 092B 093C
|
||||
DEVANAGARI SEQUENCE FOR LETTER YYA; 092F 093C
|
||||
BENGALI SEQUENCE FOR LETTER RRA; 09A1 09BC
|
||||
BENGALI SEQUENCE FOR LETTER RHA; 09A2 09BC
|
||||
BENGALI SEQUENCE FOR LETTER YYA; 09AF 09BC
|
||||
GURMUKHI SEQUENCE FOR LETTER LLA; 0A32 0A3C
|
||||
GURMUKHI SEQUENCE FOR LETTER SHA; 0A38 0A3C
|
||||
GURMUKHI SEQUENCE FOR LETTER KHHA; 0A16 0A3C
|
||||
GURMUKHI SEQUENCE FOR LETTER GHHA; 0A17 0A3C
|
||||
GURMUKHI SEQUENCE FOR LETTER ZA; 0A1C 0A3C
|
||||
GURMUKHI SEQUENCE FOR LETTER FA; 0A2B 0A3C
|
||||
ORIYA SEQUENCE FOR LETTER RRA; 0B21 0B3C
|
||||
ORIYA SEQUENCE FOR LETTER RHA; 0B22 0B3C
|
||||
|
||||
# Entry for a Bangla entity.
|
||||
# Provisional 2009-08-10, Approved 2010-05-14
|
||||
#
|
||||
# Note that this same sequence is also used for the ASSAMESE LETTER KSSA.
|
||||
|
||||
BENGALI LETTER KHINYA;0995 09CD 09B7
|
||||
|
||||
# Additions for Tamil.
|
||||
# Provisional 2008-02-08, Approved 2009-08-14
|
||||
#
|
||||
# A visual display of the Tamil named character sequences is available
|
||||
# in the documentation for the Unicode Standard.
|
||||
# See the "Tamil" section in the core specification.
|
||||
|
||||
TAMIL CONSONANT K; 0B95 0BCD
|
||||
TAMIL CONSONANT NG; 0B99 0BCD
|
||||
TAMIL CONSONANT C; 0B9A 0BCD
|
||||
TAMIL CONSONANT NY; 0B9E 0BCD
|
||||
TAMIL CONSONANT TT; 0B9F 0BCD
|
||||
TAMIL CONSONANT NN; 0BA3 0BCD
|
||||
TAMIL CONSONANT T; 0BA4 0BCD
|
||||
TAMIL CONSONANT N; 0BA8 0BCD
|
||||
TAMIL CONSONANT P; 0BAA 0BCD
|
||||
TAMIL CONSONANT M; 0BAE 0BCD
|
||||
TAMIL CONSONANT Y; 0BAF 0BCD
|
||||
TAMIL CONSONANT R; 0BB0 0BCD
|
||||
TAMIL CONSONANT L; 0BB2 0BCD
|
||||
TAMIL CONSONANT V; 0BB5 0BCD
|
||||
TAMIL CONSONANT LLL;0BB4 0BCD
|
||||
TAMIL CONSONANT LL; 0BB3 0BCD
|
||||
TAMIL CONSONANT RR; 0BB1 0BCD
|
||||
TAMIL CONSONANT NNN;0BA9 0BCD
|
||||
TAMIL CONSONANT J; 0B9C 0BCD
|
||||
TAMIL CONSONANT SH; 0BB6 0BCD
|
||||
TAMIL CONSONANT SS; 0BB7 0BCD
|
||||
TAMIL CONSONANT S; 0BB8 0BCD
|
||||
TAMIL CONSONANT H; 0BB9 0BCD
|
||||
TAMIL CONSONANT KSS;0B95 0BCD 0BB7 0BCD
|
||||
|
||||
TAMIL SYLLABLE KAA; 0B95 0BBE
|
||||
TAMIL SYLLABLE KI; 0B95 0BBF
|
||||
TAMIL SYLLABLE KII; 0B95 0BC0
|
||||
TAMIL SYLLABLE KU; 0B95 0BC1
|
||||
TAMIL SYLLABLE KUU; 0B95 0BC2
|
||||
TAMIL SYLLABLE KE; 0B95 0BC6
|
||||
TAMIL SYLLABLE KEE; 0B95 0BC7
|
||||
TAMIL SYLLABLE KAI; 0B95 0BC8
|
||||
TAMIL SYLLABLE KO; 0B95 0BCA
|
||||
TAMIL SYLLABLE KOO; 0B95 0BCB
|
||||
TAMIL SYLLABLE KAU; 0B95 0BCC
|
||||
|
||||
TAMIL SYLLABLE NGAA; 0B99 0BBE
|
||||
TAMIL SYLLABLE NGI; 0B99 0BBF
|
||||
TAMIL SYLLABLE NGII; 0B99 0BC0
|
||||
TAMIL SYLLABLE NGU; 0B99 0BC1
|
||||
TAMIL SYLLABLE NGUU; 0B99 0BC2
|
||||
TAMIL SYLLABLE NGE; 0B99 0BC6
|
||||
TAMIL SYLLABLE NGEE; 0B99 0BC7
|
||||
TAMIL SYLLABLE NGAI; 0B99 0BC8
|
||||
TAMIL SYLLABLE NGO; 0B99 0BCA
|
||||
TAMIL SYLLABLE NGOO; 0B99 0BCB
|
||||
TAMIL SYLLABLE NGAU; 0B99 0BCC
|
||||
|
||||
TAMIL SYLLABLE CAA; 0B9A 0BBE
|
||||
TAMIL SYLLABLE CI; 0B9A 0BBF
|
||||
TAMIL SYLLABLE CII; 0B9A 0BC0
|
||||
TAMIL SYLLABLE CU; 0B9A 0BC1
|
||||
TAMIL SYLLABLE CUU; 0B9A 0BC2
|
||||
TAMIL SYLLABLE CE; 0B9A 0BC6
|
||||
TAMIL SYLLABLE CEE; 0B9A 0BC7
|
||||
TAMIL SYLLABLE CAI; 0B9A 0BC8
|
||||
TAMIL SYLLABLE CO; 0B9A 0BCA
|
||||
TAMIL SYLLABLE COO; 0B9A 0BCB
|
||||
TAMIL SYLLABLE CAU; 0B9A 0BCC
|
||||
|
||||
TAMIL SYLLABLE NYAA; 0B9E 0BBE
|
||||
TAMIL SYLLABLE NYI; 0B9E 0BBF
|
||||
TAMIL SYLLABLE NYII; 0B9E 0BC0
|
||||
TAMIL SYLLABLE NYU; 0B9E 0BC1
|
||||
TAMIL SYLLABLE NYUU; 0B9E 0BC2
|
||||
TAMIL SYLLABLE NYE; 0B9E 0BC6
|
||||
TAMIL SYLLABLE NYEE; 0B9E 0BC7
|
||||
TAMIL SYLLABLE NYAI; 0B9E 0BC8
|
||||
TAMIL SYLLABLE NYO; 0B9E 0BCA
|
||||
TAMIL SYLLABLE NYOO; 0B9E 0BCB
|
||||
TAMIL SYLLABLE NYAU; 0B9E 0BCC
|
||||
|
||||
TAMIL SYLLABLE TTAA; 0B9F 0BBE
|
||||
TAMIL SYLLABLE TTI; 0B9F 0BBF
|
||||
TAMIL SYLLABLE TTII; 0B9F 0BC0
|
||||
TAMIL SYLLABLE TTU; 0B9F 0BC1
|
||||
TAMIL SYLLABLE TTUU; 0B9F 0BC2
|
||||
TAMIL SYLLABLE TTE; 0B9F 0BC6
|
||||
TAMIL SYLLABLE TTEE; 0B9F 0BC7
|
||||
TAMIL SYLLABLE TTAI; 0B9F 0BC8
|
||||
TAMIL SYLLABLE TTO; 0B9F 0BCA
|
||||
TAMIL SYLLABLE TTOO; 0B9F 0BCB
|
||||
TAMIL SYLLABLE TTAU; 0B9F 0BCC
|
||||
|
||||
TAMIL SYLLABLE NNAA; 0BA3 0BBE
|
||||
TAMIL SYLLABLE NNI; 0BA3 0BBF
|
||||
TAMIL SYLLABLE NNII; 0BA3 0BC0
|
||||
TAMIL SYLLABLE NNU; 0BA3 0BC1
|
||||
TAMIL SYLLABLE NNUU; 0BA3 0BC2
|
||||
TAMIL SYLLABLE NNE; 0BA3 0BC6
|
||||
TAMIL SYLLABLE NNEE; 0BA3 0BC7
|
||||
TAMIL SYLLABLE NNAI; 0BA3 0BC8
|
||||
TAMIL SYLLABLE NNO; 0BA3 0BCA
|
||||
TAMIL SYLLABLE NNOO; 0BA3 0BCB
|
||||
TAMIL SYLLABLE NNAU; 0BA3 0BCC
|
||||
|
||||
TAMIL SYLLABLE TAA; 0BA4 0BBE
|
||||
TAMIL SYLLABLE TI; 0BA4 0BBF
|
||||
TAMIL SYLLABLE TII; 0BA4 0BC0
|
||||
TAMIL SYLLABLE TU; 0BA4 0BC1
|
||||
TAMIL SYLLABLE TUU; 0BA4 0BC2
|
||||
TAMIL SYLLABLE TE; 0BA4 0BC6
|
||||
TAMIL SYLLABLE TEE; 0BA4 0BC7
|
||||
TAMIL SYLLABLE TAI; 0BA4 0BC8
|
||||
TAMIL SYLLABLE TO; 0BA4 0BCA
|
||||
TAMIL SYLLABLE TOO; 0BA4 0BCB
|
||||
TAMIL SYLLABLE TAU; 0BA4 0BCC
|
||||
|
||||
TAMIL SYLLABLE NAA; 0BA8 0BBE
|
||||
TAMIL SYLLABLE NI; 0BA8 0BBF
|
||||
TAMIL SYLLABLE NII; 0BA8 0BC0
|
||||
TAMIL SYLLABLE NU; 0BA8 0BC1
|
||||
TAMIL SYLLABLE NUU; 0BA8 0BC2
|
||||
TAMIL SYLLABLE NE; 0BA8 0BC6
|
||||
TAMIL SYLLABLE NEE; 0BA8 0BC7
|
||||
TAMIL SYLLABLE NAI; 0BA8 0BC8
|
||||
TAMIL SYLLABLE NO; 0BA8 0BCA
|
||||
TAMIL SYLLABLE NOO; 0BA8 0BCB
|
||||
TAMIL SYLLABLE NAU; 0BA8 0BCC
|
||||
|
||||
TAMIL SYLLABLE PAA; 0BAA 0BBE
|
||||
TAMIL SYLLABLE PI; 0BAA 0BBF
|
||||
TAMIL SYLLABLE PII; 0BAA 0BC0
|
||||
TAMIL SYLLABLE PU; 0BAA 0BC1
|
||||
TAMIL SYLLABLE PUU; 0BAA 0BC2
|
||||
TAMIL SYLLABLE PE; 0BAA 0BC6
|
||||
TAMIL SYLLABLE PEE; 0BAA 0BC7
|
||||
TAMIL SYLLABLE PAI; 0BAA 0BC8
|
||||
TAMIL SYLLABLE PO; 0BAA 0BCA
|
||||
TAMIL SYLLABLE POO; 0BAA 0BCB
|
||||
TAMIL SYLLABLE PAU; 0BAA 0BCC
|
||||
|
||||
TAMIL SYLLABLE MAA; 0BAE 0BBE
|
||||
TAMIL SYLLABLE MI; 0BAE 0BBF
|
||||
TAMIL SYLLABLE MII; 0BAE 0BC0
|
||||
TAMIL SYLLABLE MU; 0BAE 0BC1
|
||||
TAMIL SYLLABLE MUU; 0BAE 0BC2
|
||||
TAMIL SYLLABLE ME; 0BAE 0BC6
|
||||
TAMIL SYLLABLE MEE; 0BAE 0BC7
|
||||
TAMIL SYLLABLE MAI; 0BAE 0BC8
|
||||
TAMIL SYLLABLE MO; 0BAE 0BCA
|
||||
TAMIL SYLLABLE MOO; 0BAE 0BCB
|
||||
TAMIL SYLLABLE MAU; 0BAE 0BCC
|
||||
|
||||
TAMIL SYLLABLE YAA; 0BAF 0BBE
|
||||
TAMIL SYLLABLE YI; 0BAF 0BBF
|
||||
TAMIL SYLLABLE YII; 0BAF 0BC0
|
||||
TAMIL SYLLABLE YU; 0BAF 0BC1
|
||||
TAMIL SYLLABLE YUU; 0BAF 0BC2
|
||||
TAMIL SYLLABLE YE; 0BAF 0BC6
|
||||
TAMIL SYLLABLE YEE; 0BAF 0BC7
|
||||
TAMIL SYLLABLE YAI; 0BAF 0BC8
|
||||
TAMIL SYLLABLE YO; 0BAF 0BCA
|
||||
TAMIL SYLLABLE YOO; 0BAF 0BCB
|
||||
TAMIL SYLLABLE YAU; 0BAF 0BCC
|
||||
|
||||
TAMIL SYLLABLE RAA; 0BB0 0BBE
|
||||
TAMIL SYLLABLE RI; 0BB0 0BBF
|
||||
TAMIL SYLLABLE RII; 0BB0 0BC0
|
||||
TAMIL SYLLABLE RU; 0BB0 0BC1
|
||||
TAMIL SYLLABLE RUU; 0BB0 0BC2
|
||||
TAMIL SYLLABLE RE; 0BB0 0BC6
|
||||
TAMIL SYLLABLE REE; 0BB0 0BC7
|
||||
TAMIL SYLLABLE RAI; 0BB0 0BC8
|
||||
TAMIL SYLLABLE RO; 0BB0 0BCA
|
||||
TAMIL SYLLABLE ROO; 0BB0 0BCB
|
||||
TAMIL SYLLABLE RAU; 0BB0 0BCC
|
||||
|
||||
TAMIL SYLLABLE LAA; 0BB2 0BBE
|
||||
TAMIL SYLLABLE LI; 0BB2 0BBF
|
||||
TAMIL SYLLABLE LII; 0BB2 0BC0
|
||||
TAMIL SYLLABLE LU; 0BB2 0BC1
|
||||
TAMIL SYLLABLE LUU; 0BB2 0BC2
|
||||
TAMIL SYLLABLE LE; 0BB2 0BC6
|
||||
TAMIL SYLLABLE LEE; 0BB2 0BC7
|
||||
TAMIL SYLLABLE LAI; 0BB2 0BC8
|
||||
TAMIL SYLLABLE LO; 0BB2 0BCA
|
||||
TAMIL SYLLABLE LOO; 0BB2 0BCB
|
||||
TAMIL SYLLABLE LAU; 0BB2 0BCC
|
||||
|
||||
TAMIL SYLLABLE VAA; 0BB5 0BBE
|
||||
TAMIL SYLLABLE VI; 0BB5 0BBF
|
||||
TAMIL SYLLABLE VII; 0BB5 0BC0
|
||||
TAMIL SYLLABLE VU; 0BB5 0BC1
|
||||
TAMIL SYLLABLE VUU; 0BB5 0BC2
|
||||
TAMIL SYLLABLE VE; 0BB5 0BC6
|
||||
TAMIL SYLLABLE VEE; 0BB5 0BC7
|
||||
TAMIL SYLLABLE VAI; 0BB5 0BC8
|
||||
TAMIL SYLLABLE VO; 0BB5 0BCA
|
||||
TAMIL SYLLABLE VOO; 0BB5 0BCB
|
||||
TAMIL SYLLABLE VAU; 0BB5 0BCC
|
||||
|
||||
TAMIL SYLLABLE LLLAA; 0BB4 0BBE
|
||||
TAMIL SYLLABLE LLLI; 0BB4 0BBF
|
||||
TAMIL SYLLABLE LLLII; 0BB4 0BC0
|
||||
TAMIL SYLLABLE LLLU; 0BB4 0BC1
|
||||
TAMIL SYLLABLE LLLUU; 0BB4 0BC2
|
||||
TAMIL SYLLABLE LLLE; 0BB4 0BC6
|
||||
TAMIL SYLLABLE LLLEE; 0BB4 0BC7
|
||||
TAMIL SYLLABLE LLLAI; 0BB4 0BC8
|
||||
TAMIL SYLLABLE LLLO; 0BB4 0BCA
|
||||
TAMIL SYLLABLE LLLOO; 0BB4 0BCB
|
||||
TAMIL SYLLABLE LLLAU; 0BB4 0BCC
|
||||
|
||||
TAMIL SYLLABLE LLAA; 0BB3 0BBE
|
||||
TAMIL SYLLABLE LLI; 0BB3 0BBF
|
||||
TAMIL SYLLABLE LLII; 0BB3 0BC0
|
||||
TAMIL SYLLABLE LLU; 0BB3 0BC1
|
||||
TAMIL SYLLABLE LLUU; 0BB3 0BC2
|
||||
TAMIL SYLLABLE LLE; 0BB3 0BC6
|
||||
TAMIL SYLLABLE LLEE; 0BB3 0BC7
|
||||
TAMIL SYLLABLE LLAI; 0BB3 0BC8
|
||||
TAMIL SYLLABLE LLO; 0BB3 0BCA
|
||||
TAMIL SYLLABLE LLOO; 0BB3 0BCB
|
||||
TAMIL SYLLABLE LLAU; 0BB3 0BCC
|
||||
|
||||
TAMIL SYLLABLE RRAA; 0BB1 0BBE
|
||||
TAMIL SYLLABLE RRI; 0BB1 0BBF
|
||||
TAMIL SYLLABLE RRII; 0BB1 0BC0
|
||||
TAMIL SYLLABLE RRU; 0BB1 0BC1
|
||||
TAMIL SYLLABLE RRUU; 0BB1 0BC2
|
||||
TAMIL SYLLABLE RRE; 0BB1 0BC6
|
||||
TAMIL SYLLABLE RREE; 0BB1 0BC7
|
||||
TAMIL SYLLABLE RRAI; 0BB1 0BC8
|
||||
TAMIL SYLLABLE RRO; 0BB1 0BCA
|
||||
TAMIL SYLLABLE RROO; 0BB1 0BCB
|
||||
TAMIL SYLLABLE RRAU; 0BB1 0BCC
|
||||
|
||||
TAMIL SYLLABLE NNNAA; 0BA9 0BBE
|
||||
TAMIL SYLLABLE NNNI; 0BA9 0BBF
|
||||
TAMIL SYLLABLE NNNII; 0BA9 0BC0
|
||||
TAMIL SYLLABLE NNNU; 0BA9 0BC1
|
||||
TAMIL SYLLABLE NNNUU; 0BA9 0BC2
|
||||
TAMIL SYLLABLE NNNE; 0BA9 0BC6
|
||||
TAMIL SYLLABLE NNNEE; 0BA9 0BC7
|
||||
TAMIL SYLLABLE NNNAI; 0BA9 0BC8
|
||||
TAMIL SYLLABLE NNNO; 0BA9 0BCA
|
||||
TAMIL SYLLABLE NNNOO; 0BA9 0BCB
|
||||
TAMIL SYLLABLE NNNAU; 0BA9 0BCC
|
||||
|
||||
TAMIL SYLLABLE JAA; 0B9C 0BBE
|
||||
TAMIL SYLLABLE JI; 0B9C 0BBF
|
||||
TAMIL SYLLABLE JII; 0B9C 0BC0
|
||||
TAMIL SYLLABLE JU; 0B9C 0BC1
|
||||
TAMIL SYLLABLE JUU; 0B9C 0BC2
|
||||
TAMIL SYLLABLE JE; 0B9C 0BC6
|
||||
TAMIL SYLLABLE JEE; 0B9C 0BC7
|
||||
TAMIL SYLLABLE JAI; 0B9C 0BC8
|
||||
TAMIL SYLLABLE JO; 0B9C 0BCA
|
||||
TAMIL SYLLABLE JOO; 0B9C 0BCB
|
||||
TAMIL SYLLABLE JAU; 0B9C 0BCC
|
||||
|
||||
TAMIL SYLLABLE SHAA; 0BB6 0BBE
|
||||
TAMIL SYLLABLE SHI; 0BB6 0BBF
|
||||
TAMIL SYLLABLE SHII; 0BB6 0BC0
|
||||
TAMIL SYLLABLE SHU; 0BB6 0BC1
|
||||
TAMIL SYLLABLE SHUU; 0BB6 0BC2
|
||||
TAMIL SYLLABLE SHE; 0BB6 0BC6
|
||||
TAMIL SYLLABLE SHEE; 0BB6 0BC7
|
||||
TAMIL SYLLABLE SHAI; 0BB6 0BC8
|
||||
TAMIL SYLLABLE SHO; 0BB6 0BCA
|
||||
TAMIL SYLLABLE SHOO; 0BB6 0BCB
|
||||
TAMIL SYLLABLE SHAU; 0BB6 0BCC
|
||||
|
||||
TAMIL SYLLABLE SSAA; 0BB7 0BBE
|
||||
TAMIL SYLLABLE SSI; 0BB7 0BBF
|
||||
TAMIL SYLLABLE SSII; 0BB7 0BC0
|
||||
TAMIL SYLLABLE SSU; 0BB7 0BC1
|
||||
TAMIL SYLLABLE SSUU; 0BB7 0BC2
|
||||
TAMIL SYLLABLE SSE; 0BB7 0BC6
|
||||
TAMIL SYLLABLE SSEE; 0BB7 0BC7
|
||||
TAMIL SYLLABLE SSAI; 0BB7 0BC8
|
||||
TAMIL SYLLABLE SSO; 0BB7 0BCA
|
||||
TAMIL SYLLABLE SSOO; 0BB7 0BCB
|
||||
TAMIL SYLLABLE SSAU; 0BB7 0BCC
|
||||
|
||||
TAMIL SYLLABLE SAA; 0BB8 0BBE
|
||||
TAMIL SYLLABLE SI; 0BB8 0BBF
|
||||
TAMIL SYLLABLE SII; 0BB8 0BC0
|
||||
TAMIL SYLLABLE SU; 0BB8 0BC1
|
||||
TAMIL SYLLABLE SUU; 0BB8 0BC2
|
||||
TAMIL SYLLABLE SE; 0BB8 0BC6
|
||||
TAMIL SYLLABLE SEE; 0BB8 0BC7
|
||||
TAMIL SYLLABLE SAI; 0BB8 0BC8
|
||||
TAMIL SYLLABLE SO; 0BB8 0BCA
|
||||
TAMIL SYLLABLE SOO; 0BB8 0BCB
|
||||
TAMIL SYLLABLE SAU; 0BB8 0BCC
|
||||
|
||||
TAMIL SYLLABLE HAA; 0BB9 0BBE
|
||||
TAMIL SYLLABLE HI; 0BB9 0BBF
|
||||
TAMIL SYLLABLE HII; 0BB9 0BC0
|
||||
TAMIL SYLLABLE HU; 0BB9 0BC1
|
||||
TAMIL SYLLABLE HUU; 0BB9 0BC2
|
||||
TAMIL SYLLABLE HE; 0BB9 0BC6
|
||||
TAMIL SYLLABLE HEE; 0BB9 0BC7
|
||||
TAMIL SYLLABLE HAI; 0BB9 0BC8
|
||||
TAMIL SYLLABLE HO; 0BB9 0BCA
|
||||
TAMIL SYLLABLE HOO; 0BB9 0BCB
|
||||
TAMIL SYLLABLE HAU; 0BB9 0BCC
|
||||
|
||||
TAMIL SYLLABLE KSSA; 0B95 0BCD 0BB7
|
||||
TAMIL SYLLABLE KSSAA; 0B95 0BCD 0BB7 0BBE
|
||||
TAMIL SYLLABLE KSSI; 0B95 0BCD 0BB7 0BBF
|
||||
TAMIL SYLLABLE KSSII; 0B95 0BCD 0BB7 0BC0
|
||||
TAMIL SYLLABLE KSSU; 0B95 0BCD 0BB7 0BC1
|
||||
TAMIL SYLLABLE KSSUU; 0B95 0BCD 0BB7 0BC2
|
||||
TAMIL SYLLABLE KSSE; 0B95 0BCD 0BB7 0BC6
|
||||
TAMIL SYLLABLE KSSEE; 0B95 0BCD 0BB7 0BC7
|
||||
TAMIL SYLLABLE KSSAI; 0B95 0BCD 0BB7 0BC8
|
||||
TAMIL SYLLABLE KSSO; 0B95 0BCD 0BB7 0BCA
|
||||
TAMIL SYLLABLE KSSOO; 0B95 0BCD 0BB7 0BCB
|
||||
TAMIL SYLLABLE KSSAU; 0B95 0BCD 0BB7 0BCC
|
||||
|
||||
TAMIL SYLLABLE SHRII; 0BB6 0BCD 0BB0 0BC0
|
||||
|
||||
# Sinhala medial consonants and "reph" form.
|
||||
# Provisional 2010-05-13, Approved 2011-08-05
|
||||
|
||||
SINHALA CONSONANT SIGN YANSAYA;0DCA 200D 0DBA
|
||||
SINHALA CONSONANT SIGN RAKAARAANSAYA;0DCA 200D 0DBB
|
||||
SINHALA CONSONANT SIGN REPAYA;0DBB 0DCA 200D
|
||||
|
||||
# Georgian letter plus accent sequence.
|
||||
# This is part of the original set of approved named sequences
|
||||
# for Unicode 4.1. 2005.
|
||||
|
||||
GEORGIAN LETTER U-BRJGU;10E3 0302
|
||||
|
||||
# Khmer subjoined forms and other sequences.
|
||||
# These are part of the original set of approved named sequences
|
||||
# for Unicode 4.1. 2005.
|
||||
|
||||
KHMER CONSONANT SIGN COENG KA;17D2 1780
|
||||
KHMER CONSONANT SIGN COENG KHA;17D2 1781
|
||||
KHMER CONSONANT SIGN COENG KO;17D2 1782
|
||||
KHMER CONSONANT SIGN COENG KHO;17D2 1783
|
||||
KHMER CONSONANT SIGN COENG NGO;17D2 1784
|
||||
KHMER CONSONANT SIGN COENG CA;17D2 1785
|
||||
KHMER CONSONANT SIGN COENG CHA;17D2 1786
|
||||
KHMER CONSONANT SIGN COENG CO;17D2 1787
|
||||
KHMER CONSONANT SIGN COENG CHO;17D2 1788
|
||||
KHMER CONSONANT SIGN COENG NYO;17D2 1789
|
||||
KHMER CONSONANT SIGN COENG DA;17D2 178A
|
||||
KHMER CONSONANT SIGN COENG TTHA;17D2 178B
|
||||
KHMER CONSONANT SIGN COENG DO;17D2 178C
|
||||
KHMER CONSONANT SIGN COENG TTHO;17D2 178D
|
||||
KHMER CONSONANT SIGN COENG NA;17D2 178E
|
||||
KHMER CONSONANT SIGN COENG TA;17D2 178F
|
||||
KHMER CONSONANT SIGN COENG THA;17D2 1790
|
||||
KHMER CONSONANT SIGN COENG TO;17D2 1791
|
||||
KHMER CONSONANT SIGN COENG THO;17D2 1792
|
||||
KHMER CONSONANT SIGN COENG NO;17D2 1793
|
||||
KHMER CONSONANT SIGN COENG BA;17D2 1794
|
||||
KHMER CONSONANT SIGN COENG PHA;17D2 1795
|
||||
KHMER CONSONANT SIGN COENG PO;17D2 1796
|
||||
KHMER CONSONANT SIGN COENG PHO;17D2 1797
|
||||
KHMER CONSONANT SIGN COENG MO;17D2 1798
|
||||
KHMER CONSONANT SIGN COENG YO;17D2 1799
|
||||
KHMER CONSONANT SIGN COENG RO;17D2 179A
|
||||
KHMER CONSONANT SIGN COENG LO;17D2 179B
|
||||
KHMER CONSONANT SIGN COENG VO;17D2 179C
|
||||
KHMER CONSONANT SIGN COENG SHA;17D2 179D
|
||||
KHMER CONSONANT SIGN COENG SSA;17D2 179E
|
||||
KHMER CONSONANT SIGN COENG SA;17D2 179F
|
||||
KHMER CONSONANT SIGN COENG HA;17D2 17A0
|
||||
KHMER CONSONANT SIGN COENG LA;17D2 17A1
|
||||
KHMER VOWEL SIGN COENG QA;17D2 17A2
|
||||
KHMER INDEPENDENT VOWEL SIGN COENG QU;17D2 17A7
|
||||
KHMER INDEPENDENT VOWEL SIGN COENG RY;17D2 17AB
|
||||
KHMER INDEPENDENT VOWEL SIGN COENG RYY;17D2 17AC
|
||||
KHMER INDEPENDENT VOWEL SIGN COENG QE;17D2 17AF
|
||||
KHMER VOWEL SIGN OM;17BB 17C6
|
||||
KHMER VOWEL SIGN AAM;17B6 17C6
|
||||
|
||||
# Entries for JIS X 0213 compatibility mapping.
|
||||
# Provisional 2008-11-07, Approved 2010-05-14
|
||||
#
|
||||
# Two of these were part of the original set of approved named sequences
|
||||
# for Unicode 4.1. 2005.
|
||||
|
||||
HIRAGANA LETTER BIDAKUON NGA;304B 309A
|
||||
HIRAGANA LETTER BIDAKUON NGI;304D 309A
|
||||
HIRAGANA LETTER BIDAKUON NGU;304F 309A
|
||||
HIRAGANA LETTER BIDAKUON NGE;3051 309A
|
||||
HIRAGANA LETTER BIDAKUON NGO;3053 309A
|
||||
KATAKANA LETTER BIDAKUON NGA;30AB 309A
|
||||
KATAKANA LETTER BIDAKUON NGI;30AD 309A
|
||||
KATAKANA LETTER BIDAKUON NGU;30AF 309A
|
||||
KATAKANA LETTER BIDAKUON NGE;30B1 309A
|
||||
KATAKANA LETTER BIDAKUON NGO;30B3 309A
|
||||
KATAKANA LETTER AINU CE;30BB 309A
|
||||
KATAKANA LETTER AINU TU;30C4 309A
|
||||
KATAKANA LETTER AINU TO;30C8 309A
|
||||
KATAKANA LETTER AINU P;31F7 309A
|
||||
MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR;02E5 02E9
|
||||
MODIFIER LETTER EXTRA-LOW EXTRA-HIGH CONTOUR TONE BAR;02E9 02E5
|
||||
|
||||
# EOF
|
||||
@@ -54,6 +54,16 @@ assert unicodedata.digit("²") == 2
|
||||
assert abs(unicodedata.numeric("⅓") - (1 / 3)) < 1e-6
|
||||
assert unicodedata.name("☃") == "SNOWMAN"
|
||||
assert unicodedata.lookup("SNOWMAN") == "☃"
|
||||
assert unicodedata.lookup("LATIN CAPITAL LETTER GHA") == "\u01a2"
|
||||
assert unicodedata.lookup("LATIN SMALL LETTER R WITH TILDE") == "r\u0303"
|
||||
assert unicodedata.lookup("TANGUT IDEOGRAPH-17000") == "\U00017000"
|
||||
assert unicodedata.ucd_3_2_0.lookup("SNOWMAN") == "☃"
|
||||
try:
|
||||
unicodedata.ucd_3_2_0.lookup("LATIN CAPITAL LETTER GHA")
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
raise AssertionError("3.2.0 has no name aliases")
|
||||
assert unicodedata.combining("́") == 230 # COMBINING ACUTE ACCENT
|
||||
assert unicodedata.mirrored("(") == 1
|
||||
assert unicodedata.east_asian_width("あ") == "W"
|
||||
|
||||
Reference in new issue
Block a user