 | 
|
|
|
{ }
{ Unicode character functions v3.04 }
{ }
{ This unit is copyright © 2002-2004 by David J Butler }
{ }
{ This unit is part of Delphi Fundamentals. }
{ Its original file name is cUnicodeChar.pas }
{ The latest version is available from the Fundamentals home page }
{ http://fundementals.sourceforge.net/ }
{ }
{ I invite you to use this unit, free of charge. }
{ I invite you to distibute this unit, but it must be for free. }
{ I also invite you to contribute to its development, }
{ but do not distribute a modified copy of this file. }
{ }
{ A forum is available on SourceForge for general discussion }
{ http://sourceforge.net/forum/forum.php?forum_id=2117 }
{ }
{ }
{ Description: }
{ Unicode character constants. }
{ Functions for checking unicode character properties. }
{ Functions to interpret unicode characters. }
{ Unicode character case functions. }
{ }
{ }
{ Notes: }
{ Most functions in this unit work from tables in source code form. }
{ All tables were generated from the Unicode 3.2 data. }
{ }
{ The source code is deceptively big, for example, the upper-lower case }
{ table is about 128K in the source code, but only 7K when compiled. }
{ }
{ This unit has no dependancies on any other unit. }
{ }
{ Revision history: }
{ 19/04/2002 0.01 Initial version }
{ 21/04/2002 0.02 Added case and decomposition functions }
{ 28/10/2002 3.03 Refactored for Fundamentals 3. }
{ 10/01/2004 3.04 Changes to allow smart-linking by the compiler. }
{ Typically this saves 100-200K on the executable size. }
{ }
{$INCLUDE ..\cDefines.inc}
unit cUnicodeChar;
interface
const
UnitName = 'cUnicodeChar';
UnitVersion = '3.04';
UnitCopyright = 'Copyright (c) 2002-2004 David J Butler';
{ }
{ Unicode character constants }
{ }
const
WideNULL = WideChar(#0);
WideSOH = WideChar(#1);
WideSTX = WideChar(#2);
WideETX = WideChar(#3);
WideEOT = WideChar(#4);
WideENQ = WideChar(#5);
WideACK = WideChar(#6);
WideBEL = WideChar(#7);
WideBS = WideChar(#8);
WideHT = WideChar(#9);
WideLF = WideChar(#10);
WideVT = WideChar(#11);
WideFF = WideChar(#12);
WideCR = WideChar(#13);
WideNAK = WideChar(#21);
WideSYN = WideChar(#22);
WideCAN = WideChar(#24);
WideEOF = WideChar(#26);
WideESC = WideChar(#27);
WideSP = WideChar(#32);
WideCRLF : WideString = #13#10;
WideSingleQuote = WideChar('''');
WideDoubleQuote = WideChar('"');
WideNoBreakSpace = WideChar(#$00A0);
WideLineSeparator = WideChar(#$2028);
WideParagraphSeparator = WideChar(#$2029);
WideBOM_MSB_First = WideChar(#$FFFE);
WideBOM_LSB_First = WideChar(#$FEFF);
WideObjectReplacement = WideChar(#$FFFC);
WideCharReplacement = WideChar(#$FFFD);
WideInvalid = WideChar(#$FFFF);
WideCopyrightSign = WideChar(#$00A9);
WideRegisteredSign = WideChar(#$00AE);
WideHighSurrogateFirst = WideChar(#$D800);
WideHighSurrogateLast = WideChar(#$DB7F);
WideLowSurrogateFirst = WideChar(#$DC00);
WideLowSurrogateLast = WideChar(#$DFFF);
WidePrivateHighSurrogateFirst = WideChar(#$DB80);
WidePrivateHighSurrogateLast = WideChar(#$DBFF);
{ }
{ Unicode character functions }
{ }
{$IFDEF DELPHI5}
type
UCS4Char = LongWord;
{$ENDIF}
type
WideCharMatchFunction = function (const Ch: WideChar): Boolean;
function IsASCIIChar(const Ch: WideChar): Boolean;
function IsWhiteSpace(const Ch: WideChar): Boolean;
function IsControl(const Ch: WideChar): Boolean;
function IsControlOrWhiteSpace(const Ch: WideChar): Boolean;
function IsIgnorable(const Ch: UCS4Char): Boolean;
function IsDash(const Ch: WideChar): Boolean;
function IsHyphen(const Ch: WideChar): Boolean;
function IsFullStop(const Ch: WideChar): Boolean;
function IsComma(const Ch: WideChar): Boolean;
function IsExclamationMark(const Ch: WideChar): Boolean;
function IsQuestionMark(const Ch: WideChar): Boolean;
function IsLeftParenthesis(const Ch: WideChar): Boolean;
function IsLeftBracket(const Ch: WideChar): Boolean;
function GetRightParenthesis(const LeftParenthesis: WideChar): WideChar;
function GetRightBracket(const LeftBracket: WideChar): WideChar;
function IsSingularQuotationMark(const Ch: WideChar): Boolean;
function IsOpeningQuotationMark(const Ch: WideChar): Boolean;
function IsClosingQuotationMark(const Ch: WideChar): Boolean;
function GetClosingQuotationMark(const OpeningQuote: WideChar): WideChar;
function GetOpeningQuotationMark(const ClosingQuote: WideChar): WideChar;
function IsPunctuation(const Ch: WideChar): Boolean;
function IsDecimalDigit(const Ch: UCS4Char): Boolean; overload;
function IsDecimalDigit(const Ch: WideChar): Boolean; overload;
function DecimalDigitValue(const Ch: UCS4Char): Integer; overload;
function DecimalDigitValue(const Ch: WideChar): Integer; overload;
function FractionCharacterValue(const Ch: WideChar; var A, B: Integer): Boolean;
function RomanNumeralValue(const Ch: WideChar): Integer;
function IsHexDigit(const Ch: UCS4Char): Boolean; overload;
function IsHexDigit(const Ch: WideChar): Boolean; overload;
function HexDigitValue(const Ch: UCS4Char): Integer; overload;
function HexDigitValue(const Ch: WideChar): Integer; overload;
function IsUpperCase(const Ch: WideChar): Boolean;
function IsLowerCase(const Ch: WideChar): Boolean;
function IsTitleCase(const Ch: WideChar): Boolean;
function WideUpCase(const Ch: WideChar): WideChar;
function WideLowCase(const Ch: WideChar): WideChar;
function WideUpCaseFolding(const Ch: WideChar): WideString;
function WideLowCaseFolding(const Ch: WideChar): WideString;
function WideTitleCaseFolding(const Ch: WideChar): WideString;
function WideIsEqualNoCase(const A, B: WideChar): Boolean;
function IsLetter(const Ch: WideChar): Boolean;
function IsAlphabetic(const Ch: WideChar): Boolean;
function GetCombiningClass(const Ch: WideChar): Byte;
function GetCharacterDecomposition(const Ch: UCS4Char): WideString; overload;
function GetCharacterDecomposition(const Ch: WideChar): WideString; overload;
implementation
{ }
{ Character functions }
{ }
function IsASCIIChar(const Ch: WideChar): Boolean;
begin
Result := Ord(Ch) <= $7F;
end;
function IsWhiteSpace(const Ch: WideChar): Boolean;
begin
Case Ch of
#$0009..#$000D, // ASCII CONTROL
#$0020, // SPACE
#$0085, // <control>
#$00A0, // NO-BREAK SPACE
#$1680, // OGHAM SPACE MARK
#$2000..#$200A, // EN QUAD..HAIR SPACE
#$2028, // LINE SEPARATOR
#$2029, // PARAGRAPH SEPARATOR
#$202F, // NARROW NO-BREAK SPACE
#$3000 : // IDEOGRAPHIC SPACE
Result := True;
else
Result := False;
end;
end;
function IsControl(const Ch: WideChar): Boolean;
begin
Case Ch of
#$0000..#$001F,
#$007F..#$009F :
Result := True;
else
Result := False;
end;
end;
function IsControlOrWhiteSpace(const Ch: WideChar): Boolean;
begin
Result := IsControl(Ch) or IsWhiteSpace(Ch);
end;
// Derived from 'Cf' + 'Cc' + 'Cs' - White_Space
function IsIgnorable(const Ch: UCS4Char): Boolean;
begin
Case Ch of
$0000..$0008, // # Cc [9] <control>..<control>
$000E..$001F, // # Cc [18] <control>..<control>
$007F..$0084, // # Cc [6] <control>..<control>
$0086..$009F, // # Cc [26] <control>..<control>
$06DD, // # Cf ARABIC END OF AYAH
$070F, // # Cf SYRIAC ABBREVIATION MARK
$180B..$180D, // # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
$180E, // # Cf MONGOLIAN VOWEL SEPARATOR
$200C..$200F, // # Cf [4] ZERO WIDTH NON-JOINER..RIGHT-TO-LEFT MARK
$202A..$202E, // # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
$2060..$2063, // # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
$2064..$2069, // # Cn [6]
$206A..$206F, // # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
$D800..$DFFF, // # Cs [2048]
$FE00..$FE0F, // # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
$FEFF, // # Cf ZERO WIDTH NO-BREAK SPACE
$FFF0..$FFF8, // # Cn [9]
$FFF9..$FFFB, // # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
$1D173..$1D17A, // # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
$E0000, // # Cn
$E0001, // # Cf LANGUAGE TAG
$E0002..$E001F, // # Cn [30]
$E0020..$E007F, // # Cf [96] TAG SPACE..CANCEL TAG
$E0080..$E0FFF : // # Cn [3968]
Result := True;
else
Result := False;
end;
end;
function IsDash(const Ch: WideChar): Boolean;
begin
Case Ch of
#$002D, // HYPHEN-MINUS
#$00AD, // SOFT HYPHEN
#$058A, // ARMENIAN HYPHEN
#$1806, // MONGOLIAN TODO SOFT HYPHEN
#$2010..#$2015, // HYPHEN..HORIZONTAL BAR
#$207B, // SUPERSCRIPT MINUS
#$208B, // SUBSCRIPT MINUS
#$2212, // MINUS SIGN
#$301C, // WAVE DASH
#$3030, // WAVY DASH
#$FE31..#$FE32, // PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
#$FE58, // SMALL EM DASH
#$FE63, // SMALL HYPHEN-MINUS
#$FF0D : // FULLWIDTH HYPHEN-MINUS
Result := True;
else
Result := False;
end;
end;
function IsHyphen(const Ch: WideChar): Boolean;
begin
Case Ch of
#$002D, // HYPHEN-MINUS
#$00AD, // SOFT HYPHEN
#$058A, // ARMENIAN HYPHEN
#$1806, // MONGOLIAN TODO SOFT HYPHEN
#$2010..#$2011, // HYPHEN..NON-BREAKING HYPHEN
#$30FB, // KATAKANA MIDDLE DOT
#$FE63, // SMALL HYPHEN-MINUS
#$FF0D, // FULLWIDTH HYPHEN-MINUS
#$FF65 : // HALFWIDTH KATAKANA MIDDLE DOT
Result := True;
else
Result := False;
end;
end;
function IsFullStop(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$002E, // FULL STOP
$0589, // ARMENIAN FULL STOP
$06D4, // ARABIC FULL STOP
$0701, // SYRIAC SUPRALINEAR FULL STOP
$0702, // SYRIAC SUBLINEAR FULL STOP
$1362, // ETHIOPIC FULL STOP
$166E, // CANADIAN SYLLABICS FULL STOP
$1803, // MONGOLIAN FULL STOP
$1809, // MONGOLIAN MANCHU FULL STOP
$3002, // IDEOGRAPHIC FULL STOP
$FE52, // SMALL FULL STOP
$FF0E, // FULLWIDTH FULL STOP
$FF61 : // HALFWIDTH IDEOGRAPHIC FULL STOP
Result := True;
else
Result := False;
end;
end;
function IsComma(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$002C, // COMMA
$055D, // ARMENIAN COMMA
$060C, // ARABIC COMMA
$0F14, // TIBETAN MARK GTER TSHEG
$1363, // ETHIOPIC COMMA
$1802, // MONGOLIAN COMMA
$1808, // MONGOLIAN MANCHU COMMA
$3001, // IDEOGRAPHIC COMMA
$FE50, // SMALL COMMA
$FE51, // SMALL IDEOGRAPHIC COMMA
$FF0C, // FULLWIDTH COMMA
$FF64 : // HALFWIDTH IDEOGRAPHIC COMMA
Result := True;
else
Result := False;
end;
end;
function IsExclamationMark(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$0021, // EXCLAMATION MARK
$00A1, // INVERTED EXCLAMATION MARK
$055C, // ARMENIAN EXCLAMATION MARK
$203C, // DOUBLE EXCLAMATION MARK
$203D, // INTERROBANG
$2048, // QUESTION EXCLAMATION MARK
$2049, // EXCLAMATION QUESTION MARK
$FE57, // SMALL EXCLAMATION MARK
$FF01 : // FULLWIDTH EXCLAMATION MARK
Result := True;
else
Result := False;
end;
end;
function IsQuestionMark(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$003F, // QUESTION MARK
$00BF, // INVERTED QUESTION MARK
$037E, // GREEK QUESTION MARK
$055E, // ARMENIAN QUESTION MARK
$061F, // ARABIC QUESTION MARK
$1367, // ETHIOPIC QUESTION MARK
$2049, // EXCLAMATION QUESTION MARK
$FE56, // SMALL QUESTION MARK
$FF1F : // FULLWIDTH QUESTION MARK
Result := True;
else
Result := False;
end;
end;
function GetRightParenthesis(const LeftParenthesis: WideChar): WideChar;
begin
Case Ord(LeftParenthesis) of
$0028 : Result := #$0029; // PARENTHESIS
$207D : Result := #$207E; // SUPERSCRIPT PARENTHESIS
$208D : Result := #$208E; // SUBSCRIPT PARENTHESIS
$FD3E : Result := #$FD3F; // ORNATE PARENTHESIS
$FE35 : Result := #$FE36; // PRESENTATION FORM FOR VERTICAL PARENTHESIS
$FE59 : Result := #$FE5A; // SMALL PARENTHESIS
$FF08 : Result := #$FF09; // FULLWIDTH PARENTHESIS
else
Result := #$0000;
end;
end;
function IsLeftParenthesis(const Ch: WideChar): Boolean;
begin
Result := GetRightParenthesis(Ch) <> #$0000;
end;
function GetRightBracket(const LeftBracket: WideChar): WideChar;
begin
Case Ord(LeftBracket) of
$005B : Result := #$005D; // SQUARE BRACKET
$007B : Result := #$007D; // CURLY BRACKET
$2045 : Result := #$2046; // SQUARE BRACKET WITH QUILL
$2329 : Result := #$232A; // POINTING ANGLE BRACKET
$3008 : Result := #$3009; // ANGLE BRACKET
$300A : Result := #$300B; // DOUBLE ANGLE BRACKET
$300C : Result := #$300D; // CORNER BRACKET
$300E : Result := #$300F; // WHITE CORNER BRACKET
$3010 : Result := #$3011; // BLACK LENTICULAR BRACKET
$3014 : Result := #$3015; // TORTOISE SHELL BRACKET
$3016 : Result := #$3017; // WHITE LENTICULAR BRACKET
$3018 : Result := #$3019; // WHITE TORTOISE SHELL BRACKET
$301A : Result := #$301B; // WHITE SQUARE BRACKET
$FE37 : Result := #$FE38; // PRESENTATION FORM FOR VERTICAL CURLY BRACKET
$FE39 : Result := #$FE3A; // PRESENTATION FORM FOR VERTICAL TORTOISE SHELL BRACKET
$FE3B : Result := #$FE3C; // PRESENTATION FORM FOR VERTICAL BLACK LENTICULAR BRACKET
$FE3D : Result := #$FE3E; // PRESENTATION FORM FOR VERTICAL DOUBLE ANGLE BRACKET
$FE3F : Result := #$FE40; // PRESENTATION FORM FOR VERTICAL ANGLE BRACKET
$FE41 : Result := #$FE42; // PRESENTATION FORM FOR VERTICAL CORNER BRACKET
$FE43 : Result := #$FE44; // PRESENTATION FORM FOR VERTICAL WHITE CORNER BRACKET
$FE5B : Result := #$FE5C; // SMALL CURLY BRACKET
$FE5D : Result := #$FE5E; // SMALL TORTOISE SHELL BRACKET
$FF3B : Result := #$FF3D; // FULLWIDTH SQUARE BRACKET
$FF5B : Result := #$FF5D; // FULLWIDTH CURLY BRACKET
$FF62 : Result := #$FF63; // HALFWIDTH CORNER BRACKET
else
Result := #$0000;
end;
end;
function IsLeftBracket(const Ch: WideChar): Boolean;
begin
Result := GetRightBracket(Ch) <> #$0000;
end;
function IsSingularQuotationMark(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$0022, // QUOTATION MARK
$0027, // APOSTROPHE
$FF02, // FULLWIDTH QUOTATION MARK
$FF07 : // FULLWIDTH APOSTROPHE
Result := True;
else
Result := False;
end;
end;
function GetClosingQuotationMark(const OpeningQuote: WideChar): WideChar;
begin
Case Ord(OpeningQuote) of
$00AB : Result := #$00BB; // LEFT/RIGHT -POINTING DOUBLE ANGLE QUOTATION MARK
$2018 : Result := #$2019; // LEFT/RIGHT SINGLE QUOTATION MARK
$201A : Result := #$201B; // SINGLE LOW-9 QUOTATION MARK / SINGLE HIGH-REVERSED-9 QUOTATION MARK
$201C : Result := #$201D; // LEFT/RIGHT DOUBLE QUOTATION MARK
$201E : Result := #$201F; // DOUBLE LOW-9 QUOTATION MARK / DOUBLE HIGH-REVERSED-9 QUOTATION MARK
$2039 : Result := #$203A; // SINGLE LEFT/RIGHT -POINTING ANGLE QUOTATION MARK
$301D : Result := #$301E; // REVERSED DOUBLE PRIME QUOTATION MARK / DOUBLE PRIME QUOTATION MARK (also $301F)
else
Result := #$0000;
end;
end;
function IsOpeningQuotationMark(const Ch: WideChar): Boolean;
begin
Result := GetClosingQuotationMark(Ch) <> #$0000;
end;
function GetOpeningQuotationMark(const ClosingQuote: WideChar): WideChar;
begin
Case Ord(ClosingQuote) of
$00BB : Result := #$00AB; // LEFT/RIGHT -POINTING DOUBLE ANGLE QUOTATION MARK
$2019 : Result := #$2018; // LEFT/RIGHT SINGLE QUOTATION MARK
$201B : Result := #$201A; // SINGLE LOW-9 QUOTATION MARK / SINGLE HIGH-REVERSED-9 QUOTATION MARK
$201D : Result := #$201C; // LEFT/RIGHT DOUBLE QUOTATION MARK
$201F : Result := #$201E; // DOUBLE LOW-9 QUOTATION MARK / DOUBLE HIGH-REVERSED-9 QUOTATION MARK
$203A : Result := #$2039; // SINGLE LEFT/RIGHT -POINTING ANGLE QUOTATION MARK
$301E : Result := #$301D; // REVERSED DOUBLE PRIME QUOTATION MARK / DOUBLE PRIME QUOTATION MARK
$301F : Result := #$301D; // REVERSED DOUBLE PRIME QUOTATION MARK / LOW DOUBLE PRIME QUOTATION MARK
else
Result := #$0000;
end;
end;
function IsClosingQuotationMark(const Ch: WideChar): Boolean;
begin
Result := GetOpeningQuotationMark(Ch) <> #$0000;
end;
function IsPunctuation(const Ch: WideChar): Boolean;
begin
Case Ord(Ch) of
$0021, // EXCLAMATION MARK
$0022, // QUOTATION MARK
$0023, // NUMBER SIGN
$0025, // PERCENT SIGN
$0026, // AMPERSAND
$0027, // APOSTROPHE
$0028, // LEFT PARENTHESIS
$0029, // RIGHT PARENTHESIS
$002A, // ASTERISK
$002C, // COMMA
$002D, // HYPHEN-MINUS
$002E, // FULL STOP
$002F, // SOLIDUS
$003A, // COLON
$003B, // SEMICOLON
$003F, // QUESTION MARK
$0040, // COMMERCIAL AT
$005B, // LEFT SQUARE BRACKET
$005C, // REVERSE SOLIDUS
$005D, // RIGHT SQUARE BRACKET
$005F, // LOW LINE
$007B, // LEFT CURLY BRACKET
$007D, // RIGHT CURLY BRACKET
$00A1, // INVERTED EXCLAMATION MARK
$00AB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
$00AD, // SOFT HYPHEN
$00B7, // MIDDLE DOT
$00BB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
$00BF, // INVERTED QUESTION MARK
$037E, // GREEK QUESTION MARK
$0387, // GREEK ANO TELEIA
$055A, // ARMENIAN APOSTROPHE
$055B, // ARMENIAN EMPHASIS MARK
$055C, // ARMENIAN EXCLAMATION MARK
$055D, // ARMENIAN COMMA
$055E, // ARMENIAN QUESTION MARK
$055F, // ARMENIAN ABBREVIATION MARK
$0589, // ARMENIAN FULL STOP
$058A, // ARMENIAN HYPHEN
$05BE, // HEBREW PUNCTUATION MAQAF
$05C0, // HEBREW PUNCTUATION PASEQ
$05C3, // HEBREW PUNCTUATION SOF PASUQ
$05F3, // HEBREW PUNCTUATION GERESH
$05F4, // HEBREW PUNCTUATION GERSHAYIM
$060C, // ARABIC COMMA
$061B, // ARABIC SEMICOLON
$061F, // ARABIC QUESTION MARK
$066A, // ARABIC PERCENT SIGN
$066B, // ARABIC DECIMAL SEPARATOR
$066C, // ARABIC THOUSANDS SEPARATOR
$066D, // ARABIC FIVE POINTED STAR
$06D4, // ARABIC FULL STOP
$0700, // SYRIAC END OF PARAGRAPH
$0701, // SYRIAC SUPRALINEAR FULL STOP
$0702, // SYRIAC SUBLINEAR FULL STOP
$0703, // SYRIAC SUPRALINEAR COLON
$0704, // SYRIAC SUBLINEAR COLON
$0705, // SYRIAC HORIZONTAL COLON
$0706, // SYRIAC COLON SKEWED LEFT
$0707, // SYRIAC COLON SKEWED RIGHT
$0708, // SYRIAC SUPRALINEAR COLON SKEWED LEFT
$0709, // SYRIAC SUBLINEAR COLON SKEWED RIGHT
$070A, // SYRIAC CONTRACTION
$070B, // SYRIAC HARKLEAN OBELUS
$070C, // SYRIAC HARKLEAN METOBELUS
$070D, // SYRIAC HARKLEAN ASTERISCUS
$0964, // DEVANAGARI DANDA
$0965, // DEVANAGARI DOUBLE DANDA
$0970, // DEVANAGARI ABBREVIATION SIGN
$0DF4, // SINHALA PUNCTUATION KUNDDALIYA
$0E4F, // THAI CHARACTER FONGMAN
$0E5A, // THAI CHARACTER ANGKHANKHU
$0E5B, // THAI CHARACTER KHOMUT
$0F04, // TIBETAN MARK INITIAL YIG MGO MDUN MA
$0F05, // TIBETAN MARK CLOSING YIG MGO SGAB MA
$0F06, // TIBETAN MARK CARET YIG MGO PHUR SHAD MA
$0F07, // TIBETAN MARK YIG MGO TSHEG SHAD MA
$0F08, // TIBETAN MARK SBRUL SHAD
$0F09, // TIBETAN MARK BSKUR YIG MGO
$0F0A, // TIBETAN MARK BKA- SHOG YIG MGO
$0F0B, // TIBETAN MARK INTERSYLLABIC TSHEG
$0F0C, // TIBETAN MARK DELIMITER TSHEG BSTAR
$0F0D, // TIBETAN MARK SHAD
$0F0E, // TIBETAN MARK NYIS SHAD
$0F0F, // TIBETAN MARK TSHEG SHAD
$0F10, // TIBETAN MARK NYIS TSHEG SHAD
$0F11, // TIBETAN MARK RIN CHEN SPUNGS SHAD
$0F12, // TIBETAN MARK RGYA GRAM SHAD
$0F3A, // TIBETAN MARK GUG RTAGS GYON
$0F3B, // TIBETAN MARK GUG RTAGS GYAS
$0F3C, // TIBETAN MARK ANG KHANG GYON
$0F3D, // TIBETAN MARK ANG KHANG GYAS
$0F85, // TIBETAN MARK PALUTA
$104A, // MYANMAR SIGN LITTLE SECTION
$104B, // MYANMAR SIGN SECTION
$104C, // MYANMAR SYMBOL LOCATIVE
$104D, // MYANMAR SYMBOL COMPLETED
$104E, // MYANMAR SYMBOL AFOREMENTIONED
$104F, // MYANMAR SYMBOL GENITIVE
$10FB, // GEORGIAN PARAGRAPH SEPARATOR
$1361, // ETHIOPIC WORDSPACE
$1362, // ETHIOPIC FULL STOP
$1363, // ETHIOPIC COMMA
$1364, // ETHIOPIC SEMICOLON
$1365, // ETHIOPIC COLON
$1366, // ETHIOPIC PREFACE COLON
$1367, // ETHIOPIC QUESTION MARK
$1368, // ETHIOPIC PARAGRAPH SEPARATOR
$166D, // CANADIAN SYLLABICS CHI SIGN
$166E, // CANADIAN SYLLABICS FULL STOP
$169B, // OGHAM FEATHER MARK
$169C, // OGHAM REVERSED FEATHER MARK
$16EB, // RUNIC SINGLE PUNCTUATION
$16EC, // RUNIC MULTIPLE PUNCTUATION
$16ED, // RUNIC CROSS PUNCTUATION
$17D4, // KHMER SIGN KHAN
$17D5, // KHMER SIGN BARIYOOSAN
$17D6, // KHMER SIGN CAMNUC PII KUUH
$17D7, // KHMER SIGN LEK TOO
$17D8, // KHMER SIGN BEYYAL
$17D9, // KHMER SIGN PHNAEK MUAN
$17DA, // KHMER SIGN KOOMUUT
$17DC, // KHMER SIGN AVAKRAHASANYA
$1800, // MONGOLIAN BIRGA
$1801, // MONGOLIAN ELLIPSIS
$1802, // MONGOLIAN COMMA
$1803, // MONGOLIAN FULL STOP
$1804, // MONGOLIAN COLON
$1805, // MONGOLIAN FOUR DOTS
$1806, // MONGOLIAN TODO SOFT HYPHEN
$1807, // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
$1808, // MONGOLIAN MANCHU COMMA
$1809, // MONGOLIAN MANCHU FULL STOP
$180A, // MONGOLIAN NIRUGU
$2010, // HYPHEN
$2011, // NON-BREAKING HYPHEN
$2012, // FIGURE DASH
$2013, // EN DASH
$2014, // EM DASH
$2015, // HORIZONTAL BAR
$2016, // DOUBLE VERTICAL LINE
$2017, // DOUBLE LOW LINE
$2018, // LEFT SINGLE QUOTATION MARK
$2019, // RIGHT SINGLE QUOTATION MARK
$201A, // SINGLE LOW-9 QUOTATION MARK
$201B, // SINGLE HIGH-REVERSED-9 QUOTATION MARK
$201C, // LEFT DOUBLE QUOTATION MARK
$201D, // RIGHT DOUBLE QUOTATION MARK
$201E, // DOUBLE LOW-9 QUOTATION MARK
$201F, // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
$2020, // DAGGER
$2021, // DOUBLE DAGGER
$2022, // BULLET
$2023, // TRIANGULAR BULLET
$2024, // ONE DOT LEADER
$2025, // TWO DOT LEADER
$2026, // HORIZONTAL ELLIPSIS
$2027, // HYPHENATION POINT
$2030, // PER MILLE SIGN
$2031, // PER TEN THOUSAND SIGN
$2032, // PRIME
$2033, // DOUBLE PRIME
$2034, // TRIPLE PRIME
$2035, // REVERSED PRIME
$2036, // REVERSED DOUBLE PRIME
$2037, // REVERSED TRIPLE PRIME
$2038, // CARET
$2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
$203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
$203B, // REFERENCE MARK
$203C, // DOUBLE EXCLAMATION MARK
$203D, // INTERROBANG
$203E, // OVERLINE
$203F, // UNDERTIE
$2040, // CHARACTER TIE
$2041, // CARET INSERTION POINT
$2042, // ASTERISM
$2043, // HYPHEN BULLET
$2045, // LEFT SQUARE BRACKET WITH QUILL
$2046, // RIGHT SQUARE BRACKET WITH QUILL
$2048, // QUESTION EXCLAMATION MARK
$2049, // EXCLAMATION QUESTION MARK
$204A, // TIRONIAN SIGN ET
$204B, // REVERSED PILCROW SIGN
$204C, // BLACK LEFTWARDS BULLET
$204D, // BLACK RIGHTWARDS BULLET
$207D, // SUPERSCRIPT LEFT PARENTHESIS
$207E, // SUPERSCRIPT RIGHT PARENTHESIS
$208D, // SUBSCRIPT LEFT PARENTHESIS
$208E, // SUBSCRIPT RIGHT PARENTHESIS
$2329, // LEFT-POINTING ANGLE BRACKET
$232A, // RIGHT-POINTING ANGLE BRACKET
$3001, // IDEOGRAPHIC COMMA
$3002, // IDEOGRAPHIC FULL STOP
$3003, // DITTO MARK
$3008, // LEFT ANGLE BRACKET
$3009, // RIGHT ANGLE BRACKET
$300A, // LEFT DOUBLE ANGLE BRACKET
$300B, // RIGHT DOUBLE ANGLE BRACKET
$300C, // LEFT CORNER BRACKET
$300D, // RIGHT CORNER BRACKET
$300E, // LEFT WHITE CORNER BRACKET
$300F, // RIGHT WHITE CORNER BRACKET
$3010, // LEFT BLACK LENTICULAR BRACKET
$3011, // RIGHT BLACK LENTICULAR BRACKET
$3014, // LEFT TORTOISE SHELL BRACKET
$3015, // RIGHT TORTOISE SHELL BRACKET
$3016, // LEFT WHITE LENTICULAR BRACKET
$3017, // RIGHT WHITE LENTICULAR BRACKET
$3018, // LEFT WHITE TORTOISE SHELL BRACKET
$3019, // RIGHT WHITE TORTOISE SHELL BRACKET
$301A, // LEFT WHITE SQUARE BRACKET
$301B, // RIGHT WHITE SQUARE BRACKET
$301C, // WAVE DASH
$301D, // REVERSED DOUBLE PRIME QUOTATION MARK
$301E, // DOUBLE PRIME QUOTATION MARK
$301F, // LOW DOUBLE PRIME QUOTATION MARK
$3030, // WAVY DASH
$30FB, // KATAKANA MIDDLE DOT
$FD3E, // ORNATE LEFT PARENTHESIS
$FD3F, // ORNATE RIGHT PARENTHESIS
$FE30, // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
$FE31, // PRESENTATION FORM FOR VERTICAL EM DASH
$FE32, // PRESENTATION FORM FOR VERTICAL EN DASH
$FE33, // PRESENTATION FORM FOR VERTICAL LOW LINE
$FE34, // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
$FE35, // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
$FE36, // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
$FE37, // PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
$FE38, // PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
$FE39, // PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
$FE3A, // PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
$FE3B, // PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
$FE3C, // PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
$FE3D, // PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
$FE3E, // PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
$FE3F, // PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
$FE40, // PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
$FE41, // PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
$FE42, // PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
$FE43, // PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
$FE44, // PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
$FE49, // DASHED OVERLINE
$FE4A, // CENTRELINE OVERLINE
$FE4B, // WAVY OVERLINE
$FE4C, // DOUBLE WAVY OVERLINE
$FE4D, // DASHED LOW LINE
$FE4E, // CENTRELINE LOW LINE
$FE4F, // WAVY LOW LINE
$FE50, // SMALL COMMA
$FE51, // SMALL IDEOGRAPHIC COMMA
$FE52, // SMALL FULL STOP
$FE54, // SMALL SEMICOLON
$FE55, // SMALL COLON
$FE56, // SMALL QUESTION MARK
$FE57, // SMALL EXCLAMATION MARK
$FE58, // SMALL EM DASH
$FE59, // SMALL LEFT PARENTHESIS
$FE5A, // SMALL RIGHT PARENTHESIS
$FE5B, // SMALL LEFT CURLY BRACKET
$FE5C, // SMALL RIGHT CURLY BRACKET
$FE5D, // SMALL LEFT TORTOISE SHELL BRACKET
$FE5E, // SMALL RIGHT TORTOISE SHELL BRACKET
$FE5F, // SMALL NUMBER SIGN
$FE60, // SMALL AMPERSAND
$FE61, // SMALL ASTERISK
$FE63, // SMALL HYPHEN-MINUS
$FE68, // SMALL REVERSE SOLIDUS
$FE6A, // SMALL PERCENT SIGN
$FE6B, // SMALL COMMERCIAL AT
$FF01, // FULLWIDTH EXCLAMATION MARK
$FF02, // FULLWIDTH QUOTATION MARK
$FF03, // FULLWIDTH NUMBER SIGN
$FF05, // FULLWIDTH PERCENT SIGN
$FF06, // FULLWIDTH AMPERSAND
$FF07, // FULLWIDTH APOSTROPHE
$FF08, // FULLWIDTH LEFT PARENTHESIS
$FF09, // FULLWIDTH RIGHT PARENTHESIS
$FF0A, // FULLWIDTH ASTERISK
$FF0C, // FULLWIDTH COMMA
$FF0D, // FULLWIDTH HYPHEN-MINUS
$FF0E, // FULLWIDTH FULL STOP
$FF0F, // FULLWIDTH SOLIDUS
$FF1A, // FULLWIDTH COLON
$FF1B, // FULLWIDTH SEMICOLON
$FF1F, // FULLWIDTH QUESTION MARK
$FF20, // FULLWIDTH COMMERCIAL AT
$FF3B, // FULLWIDTH LEFT SQUARE BRACKET
$FF3C, // FULLWIDTH REVERSE SOLIDUS
$FF3D, // FULLWIDTH RIGHT SQUARE BRACKET
$FF3F, // FULLWIDTH LOW LINE
$FF5B, // FULLWIDTH LEFT CURLY BRACKET
$FF5D, // FULLWIDTH RIGHT CURLY BRACKET
$FF61, // HALFWIDTH IDEOGRAPHIC FULL STOP
$FF62, // HALFWIDTH LEFT CORNER BRACKET
$FF63, // HALFWIDTH RIGHT CORNER BRACKET
$FF64, // HALFWIDTH IDEOGRAPHIC COMMA
$FF65 : // HALFWIDTH KATAKANA MIDDLE DOT
Result := True;
else
Result := False;
end;
end;
function DecimalDigitBase(const Ch: UCS4Char): UCS4Char;
begin
Case Ch of
$0030..$0039 : Result := $0030; // DIGIT
$0660..$0669 : Result := $0660; // ARABIC-INDIC DIGIT
$06F0..$06F9 : Result := $06F0; // EXTENDED ARABIC-INDIC DIGIT
$0966..$096F : Result := $0966; // DEVANAGARI DIGIT
$09E6..$09EF : Result := $09E6; // BENGALI DIGIT
$0A66..$0A6F : Result := $0A66; // GURMUKHI DIGIT
$0AE6..$0AEF : Result := $0AE6; // GUJARATI DIGIT
$0B66..$0B6F : Result := $0B66; // ORIYA DIGIT
$0C66..$0C6F : Result := $0C66; // TELUGU DIGIT
$0CE6..$0CEF : Result := $0CE6; // KANNADA DIGIT
$0D66..$0D6F : Result := $0D66; // MALAYALAM DIGIT
$0E50..$0E59 : Result := $0E50; // THAI DIGIT
$0ED0..$0ED9 : Result := $0ED0; // LAO DIGIT
$0F20..$0F29 : Result := $0F20; // TIBETAN DIGIT
$1040..$1049 : Result := $1040; // MYANMAR DIGIT
$17E0..$17E9 : Result := $17E0; // KHMER DIGIT
$1810..$1819 : Result := $1810; // MONGOLIAN DIGIT
$2070..$2079 : Result := $2070; // SUPERSCRIPT DIGIT
$2080..$2089 : Result := $2080; // SUBSCRIPT DIGIT
$FF10..$FF19 : Result := $FF10; // FULLWIDTH DIGIT
$1D7CE..$1D7D7 : Result := $1D7CE; // MATHEMATICAL BOLD DIGIT
$1D7D8..$1D7E1 : Result := $1D7D8; // MATHEMATICAL DOUBLE-STRUCK DIGIT
$1D7E2..$1D7EB : Result := $1D7E2; // MATHEMATICAL SANS-SERIF DIGIT
$1D7EC..$1D7F5 : Result := $1D7EC; // MATHEMATICAL SANS-SERIF BOLD DIGIT
$1D7F6..$1D7FF : Result := $1D7F6; // MATHEMATICAL MONOSPACE DIGIT
else
Result := 0;
end;
end;
function DecimalDigitValue(const Ch: UCS4Char): Integer;
var I : LongWord;
begin
I := DecimalDigitBase(Ch);
if I = 0 then
Result := -1
else
Result := Ch - I;
end;
function DecimalDigitValue(const Ch: WideChar): Integer;
begin
Result := DecimalDigitValue(Ord(Ch));
end;
function IsDecimalDigit(const Ch: UCS4Char): Boolean;
begin
Result := DecimalDigitBase(Ch) <> 0;
end;
function IsDecimalDigit(const Ch: WideChar): Boolean;
begin
Result := DecimalDigitBase(Ord(Ch)) <> 0;
end;
function FractionCharacterValue(const Ch: WideChar; var A, B : Integer): Boolean;
begin
Case Ord(Ch) of
$00BC : begin A := 1; B := 4; end; // # No VULGAR FRACTION ONE QUARTER
$00BD : begin A := 1; B := 2; end; // # No VULGAR FRACTION ONE HALF
$00BE : begin A := 3; B := 4; end; // # No VULGAR FRACTION THREE QUARTERS
$0F2A : begin A := 1; B := 2; end; // # No TIBETAN DIGIT HALF ONE
$2153 : begin A := 1; B := 3; end; // # No VULGAR FRACTION ONE THIRD
$2154 : begin A := 2; B := 3; end; // # No VULGAR FRACTION TWO THIRDS
$2155 : begin A := 1; B := 5; end; // # No VULGAR FRACTION ONE FIFTH
$2156 : begin A := 2; B := 5; end; // # No VULGAR FRACTION TWO FIFTHS
$2157 : begin A := 3; B := 5; end; // # No VULGAR FRACTION THREE FIFTHS
$2158 : begin A := 4; B := 5; end; // # No VULGAR FRACTION FOUR FIFTHS
$2159 : begin A := 1; B := 6; end; // # No VULGAR FRACTION ONE SIXTH
$215A : begin A := 5; B := 6; end; // # No VULGAR FRACTION FIVE SIXTHS
$215B : begin A := 1; B := 8; end; // # No VULGAR FRACTION ONE EIGHTH
$215C : begin A := 3; B := 8; end; // # No VULGAR FRACTION THREE EIGHTHS
$215D : begin A := 5; B := 8; end; // # No VULGAR FRACTION FIVE EIGHTHS
$215E : begin A := 7; B := 8; end; // # No VULGAR FRACTION SEVEN EIGHTHS
else
begin A := 0; B := 0; end;
end;
Result := B <> 0;
end;
function RomanNumeralValue(const Ch: WideChar): Integer;
begin
Case Ord(Ch) of
$2160 : Result := 1; // Nl ROMAN NUMERAL ONE
$2161 : Result := 2; // Nl ROMAN NUMERAL TWO
$2162 : Result := 3; // Nl ROMAN NUMERAL THREE
$2163 : Result := 4; // Nl ROMAN NUMERAL FOUR
$2164 : Result := 5; // Nl ROMAN NUMERAL FIVE
$2165 : Result := 6; // Nl ROMAN NUMERAL SIX
$2166 : Result := 7; // Nl ROMAN NUMERAL SEVEN
$2167 : Result := 8; // Nl ROMAN NUMERAL EIGHT
$2168 : Result := 9; // Nl ROMAN NUMERAL NINE
$2169 : Result := 10; // Nl ROMAN NUMERAL TEN
$216A : Result := 11; // Nl ROMAN NUMERAL ELEVEN
$216B : Result := 12; // Nl ROMAN NUMERAL TWELVE
$216C : Result := 50; // Nl ROMAN NUMERAL FIFTY
$216D : Result := 100; // Nl ROMAN NUMERAL ONE HUNDRED
$216E : Result := 500; // Nl ROMAN NUMERAL FIVE HUNDRED
$216F : Result := 1000; // Nl ROMAN NUMERAL ONE THOUSAND
$2170 : Result := 1; // Nl SMALL ROMAN NUMERAL ONE
$2171 : Result := 2; // Nl SMALL ROMAN NUMERAL TWO
$2172 : Result := 3; // Nl SMALL ROMAN NUMERAL THREE
$2173 : Result := 4; // Nl SMALL ROMAN NUMERAL FOUR
$2174 : Result := 5; // Nl SMALL ROMAN NUMERAL FIVE
$2175 : Result := 6; // Nl SMALL ROMAN NUMERAL SIX
$2176 : Result := 7; // Nl SMALL ROMAN NUMERAL SEVEN
$2177 : Result := 8; // Nl SMALL ROMAN NUMERAL EIGHT
$2178 : Result := 9; // Nl SMALL ROMAN NUMERAL NINE
$2179 : Result := 10; // Nl SMALL ROMAN NUMERAL TEN
$217A : Result := 11; // Nl SMALL ROMAN NUMERAL ELEVEN
$217B : Result := 12; // Nl SMALL ROMAN NUMERAL TWELVE
$217C : Result := 50; // Nl SMALL ROMAN NUMERAL FIFTY
$217D : Result := 100; // Nl SMALL ROMAN NUMERAL ONE HUNDRED
$217E : Result := 500; // Nl SMALL ROMAN NUMERAL FIVE HUNDRED
$217F..$2180 : Result := 1000; // Nl [2] SMALL ROMAN NUMERAL ONE THOUSAND..ROMAN NUMERAL ONE THOUSAND C D
$2181 : Result := 5000; // Nl ROMAN NUMERAL FIVE THOUSAND
$2182 : Result := 10000; // Nl ROMAN NUMERAL TEN THOUSAND
else
Result := 0;
end;
end;
function LatinAlphaCharBase(const Ch: WideChar): UCS4Char;
begin
Case Ord(Ch) of
$0041..$005A : Result := $0041; // LATIN CAPITAL LETTER
$0061..$007A : Result := $0061; // LATIN SMALL LETTER
$FF21..$FF3A : Result := $FF21; // FULLWIDTH LATIN CAPITAL LETTER
$FF41..$FF5A : Result := $FF41; // FULLWIDTH LATIN SMALL LETTER
else
Result := 0;
end;
end;
function HexAlphaDigitBase(const Ch: WideChar): UCS4Char; overload;
begin
Result := LatinAlphaCharBase(Ch);
if Result = 0 then
exit;
if Ord(Ch) - Result > 5 then
Result := 0;
end;
function HexAlphaDigitBase(const Ch: UCS4Char): UCS4Char; overload;
begin
if Ch <= $FFFF then
Result := HexAlphaDigitBase(WideChar(Ch))
else
Case Ch of
$1D400..$1D405 : Result := $1D400; // MATHEMATICAL BOLD CAPITAL
$1D41A..$1D41F : Result := $1D41A; // MATHEMATICAL BOLD SMALL
$1D434..$1D439 : Result := $1D434; // MATHEMATICAL ITALIC CAPITAL
$1D44E..$1D453 : Result := $1D44E; // MATHEMATICAL ITALIC SMALL
$1D468..$1D46D : Result := $1D468; // MATHEMATICAL BOLD ITALIC CAPITAL
$1D482..$1D487 : Result := $1D482; // MATHEMATICAL BOLD ITALIC SMALL
$1D49C..$1D4A1 : Result := $1D49C; // MATHEMATICAL SCRIPT CAPITAL
$1D4B6..$1D4BB : Result := $1D4B6; // MATHEMATICAL SCRIPT SMALL
$1D4D0..$1D4D5 : Result := $1D4D0; // MATHEMATICAL BOLD SCRIPT CAPITAL
$1D4EA..$1D4EF : Result := $1D4EA; // MATHEMATICAL BOLD SCRIPT SMALL
$1D504..$1D509 : Result := $1D504; // MATHEMATICAL FRAKTUR CAPITAL
$1D51E..$1D523 : Result := $1D51E; // MATHEMATICAL FRAKTUR SMALL
$1D538..$1D53D : Result := $1D538; // MATHEMATICAL DOUBLE-STRUCK CAPITAL
$1D552..$1D557 : Result := $1D552; // MATHEMATICAL DOUBLE-STRUCK SMALL
$1D56C..$1D571 : Result := $1D56C; // MATHEMATICAL BOLD FRAKTUR CAPITAL
$1D586..$1D58B : Result := $1D586; // MATHEMATICAL BOLD FRAKTUR SMALL
$1D5A0..$1D5A5 : Result := $1D5A0; // MATHEMATICAL SANS-SERIF CAPITAL
$1D5BA..$1D5BF : Result := $1D5BA; // MATHEMATICAL SANS-SERIF SMALL
$1D5D4..$1D5D9 : Result := $1D5D4; // MATHEMATICAL SANS-SERIF BOLD CAPITAL
$1D5EE..$1D5F3 : Result := $1D5EE; // MATHEMATICAL SANS-SERIF BOLD SMALL
$1D608..$1D60D : Result := $1D608; // MATHEMATICAL SANS-SERIF ITALIC CAPITAL
$1D622..$1D627 : Result := $1D622; // MATHEMATICAL SANS-SERIF ITALIC SMALL
$1D63C..$1D641 : Result := $1D63C; // MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL
$1D656..$1D65B : Result := $1D656; // MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL
$1D670..$1D675 : Result := $1D670; // MATHEMATICAL MONOSPACE CAPITAL
$1D68A..$1D68F : Result := $1D68A; // MATHEMATICAL MONOSPACE SMALL
$E0041..$E0046 : Result := $E0041; // TAG LATIN CAPITAL LETTER
else
Result := 0;
end;
end;
function HexDigitValue(const Ch: UCS4Char): Integer;
var I : UCS4Char;
begin
Result := DecimalDigitValue(Ch);
if Result >= 0 then
exit;
I := HexAlphaDigitBase(Ch);
if I > 0 then
Result := Ch - I + 10;
end;
function HexDigitValue(const Ch: WideChar): Integer;
var I : UCS4Char;
begin
Result := DecimalDigitValue(Ch);
if Result >= 0 then
exit;
I := HexAlphaDigitBase(Ch);
if I > 0 then
Result := Ord(Ch) - I + 10;
end;
function IsHexDigit(const Ch: UCS4Char): Boolean;
begin
Result := HexDigitValue(Ch) >= 0;
end;
function IsHexDigit(const Ch: WideChar): Boolean;
begin
Result := HexDigitValue(Ch) >= 0;
end;
{ Unicode letter table }
type
TUnicodeLetterAttr = (laUpper, laLower);
TUnicodeLetterInfo = packed record
Unicode : WideChar;
Attr : TUnicodeLetterAttr;
CaseCode : WideChar;
end;
PUnicodeLetterInfo = ^TUnicodeLetterInfo;
const
// Derived from 'Lu' and 'Ll' class
UnicodeLetterEntries = 1492; // ~7K table
UnicodeLetterInfo : Array[0..UnicodeLetterEntries - 1] of TUnicodeLetterInfo = (
(Unicode:#$0041; Attr:laUpper; CaseCode:#$0061), // LATIN CAPITAL LETTER A
(Unicode:#$0042; Attr:laUpper; CaseCode:#$0062), // LATIN CAPITAL LETTER B
(Unicode:#$0043; Attr:laUpper; CaseCode:#$0063), // LATIN CAPITAL LETTER C
(Unicode:#$0044; Attr:laUpper; CaseCode:#$0064), // LATIN CAPITAL LETTER D
(Unicode:#$0045; Attr:laUpper; CaseCode:#$0065), // LATIN CAPITAL LETTER E
(Unicode:#$0046; Attr:laUpper; CaseCode:#$0066), // LATIN CAPITAL LETTER F
(Unicode:#$0047; Attr:laUpper; CaseCode:#$0067), // LATIN CAPITAL LETTER G
(Unicode:#$0048; Attr:laUpper; CaseCode:#$0068), // LATIN CAPITAL LETTER H
(Unicode:#$0049; Attr:laUpper; CaseCode:#$0069), // LATIN CAPITAL LETTER I
(Unicode:#$004A; Attr:laUpper; CaseCode:#$006A), // LATIN CAPITAL LETTER J
(Unicode:#$004B; Attr:laUpper; CaseCode:#$006B), // LATIN CAPITAL LETTER K
(Unicode:#$004C; Attr:laUpper; CaseCode:#$006C), // LATIN CAPITAL LETTER L
(Unicode:#$004D; Attr:laUpper; CaseCode:#$006D), // LATIN CAPITAL LETTER M
(Unicode:#$004E; Attr:laUpper; CaseCode:#$006E), // LATIN CAPITAL LETTER N
(Unicode:#$004F; Attr:laUpper; CaseCode:#$006F), // LATIN CAPITAL LETTER O
(Unicode:#$0050; Attr:laUpper; CaseCode:#$0070), // LATIN CAPITAL LETTER P
(Unicode:#$0051; Attr:laUpper; CaseCode:#$0071), // LATIN CAPITAL LETTER Q
(Unicode:#$0052; Attr:laUpper; CaseCode:#$0072), // LATIN CAPITAL LETTER R
(Unicode:#$0053; Attr:laUpper; CaseCode:#$0073), // LATIN CAPITAL LETTER S
(Unicode:#$0054; Attr:laUpper; CaseCode:#$0074), // LATIN CAPITAL LETTER T
(Unicode:#$0055; Attr:laUpper; CaseCode:#$0075), // LATIN CAPITAL LETTER U
(Unicode:#$0056; Attr:laUpper; CaseCode:#$0076), // LATIN CAPITAL LETTER V
(Unicode:#$0057; Attr:laUpper; CaseCode:#$0077), // LATIN CAPITAL LETTER W
(Unicode:#$0058; Attr:laUpper; CaseCode:#$0078), // LATIN CAPITAL LETTER X
(Unicode:#$0059; Attr:laUpper; CaseCode:#$0079), // LATIN CAPITAL LETTER Y
(Unicode:#$005A; Attr:laUpper; CaseCode:#$007A), // LATIN CAPITAL LETTER Z
(Unicode:#$0061; Attr:laLower; CaseCode:#$0041), // LATIN SMALL LETTER A
(Unicode:#$0062; Attr:laLower; CaseCode:#$0042), // LATIN SMALL LETTER B
(Unicode:#$0063; Attr:laLower; CaseCode:#$0043), // LATIN SMALL LETTER C
(Unicode:#$0064; Attr:laLower; CaseCode:#$0044), // LATIN SMALL LETTER D
(Unicode:#$0065; Attr:laLower; CaseCode:#$0045), // LATIN SMALL LETTER E
(Unicode:#$0066; Attr:laLower; CaseCode:#$0046), // LATIN SMALL LETTER F
(Unicode:#$0067; Attr:laLower; CaseCode:#$0047), // LATIN SMALL LETTER G
(Unicode:#$0068; Attr:laLower; CaseCode:#$0048), // LATIN SMALL LETTER H
(Unicode:#$0069; Attr:laLower; CaseCode:#$0049), // LATIN SMALL LETTER I
(Unicode:#$006A; Attr:laLower; CaseCode:#$004A), // LATIN SMALL LETTER J
(Unicode:#$006B; Attr:laLower; CaseCode:#$004B), // LATIN SMALL LETTER K
(Unicode:#$006C; Attr:laLower; CaseCode:#$004C), // LATIN SMALL LETTER L
(Unicode:#$006D; Attr:laLower; CaseCode:#$004D), // LATIN SMALL LETTER M
(Unicode:#$006E; Attr:laLower; CaseCode:#$004E), // LATIN SMALL LETTER N
(Unicode:#$006F; Attr:laLower; CaseCode:#$004F), // LATIN SMALL LETTER O
(Unicode:#$0070; Attr:laLower; CaseCode:#$0050), // LATIN SMALL LETTER P
(Unicode:#$0071; Attr:laLower; CaseCode:#$0051), // LATIN SMALL LETTER Q
(Unicode:#$0072; Attr:laLower; CaseCode:#$0052), // LATIN SMALL LETTER R
(Unicode:#$0073; Attr:laLower; CaseCode:#$0053), // LATIN SMALL LETTER S
(Unicode:#$0074; Attr:laLower; CaseCode:#$0054), // LATIN SMALL LETTER T
(Unicode:#$0075; Attr:laLower; CaseCode:#$0055), // LATIN SMALL LETTER U
(Unicode:#$0076; Attr:laLower; CaseCode:#$0056), // LATIN SMALL LETTER V
(Unicode:#$0077; Attr:laLower; CaseCode:#$0057), // LATIN SMALL LETTER W
(Unicode:#$0078; Attr:laLower; CaseCode:#$0058), // LATIN SMALL LETTER X
(Unicode:#$0079; Attr:laLower; CaseCode:#$0059), // LATIN SMALL LETTER Y
(Unicode:#$007A; Attr:laLower; CaseCode:#$005A), // LATIN SMALL LETTER Z
(Unicode:#$00AA; Attr:laLower; CaseCode:#$FFFF), // FEMININE ORDINAL INDICATOR
(Unicode:#$00B5; Attr:laLower; CaseCode:#$039C), // MICRO SIGN
(Unicode:#$00BA; Attr:laLower; CaseCode:#$FFFF), // MASCULINE ORDINAL INDICATOR
(Unicode:#$00C0; Attr:laUpper; CaseCode:#$00E0), // LATIN CAPITAL LETTER A WITH GRAVE
(Unicode:#$00C1; Attr:laUpper; CaseCode:#$00E1), // LATIN CAPITAL LETTER A WITH ACUTE
(Unicode:#$00C2; Attr:laUpper; CaseCode:#$00E2), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
(Unicode:#$00C3; Attr:laUpper; CaseCode:#$00E3), // LATIN CAPITAL LETTER A WITH TILDE
(Unicode:#$00C4; Attr:laUpper; CaseCode:#$00E4), // LATIN CAPITAL LETTER A WITH DIAERESIS
(Unicode:#$00C5; Attr:laUpper; CaseCode:#$00E5), // LATIN CAPITAL LETTER A WITH RING ABOVE
(Unicode:#$00C6; Attr:laUpper; CaseCode:#$00E6), // LATIN CAPITAL LETTER AE
(Unicode:#$00C7; Attr:laUpper; CaseCode:#$00E7), // LATIN CAPITAL LETTER C WITH CEDILLA
(Unicode:#$00C8; Attr:laUpper; CaseCode:#$00E8), // LATIN CAPITAL LETTER E WITH GRAVE
(Unicode:#$00C9; Attr:laUpper; CaseCode:#$00E9), // LATIN CAPITAL LETTER E WITH ACUTE
(Unicode:#$00CA; Attr:laUpper; CaseCode:#$00EA), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
(Unicode:#$00CB; Attr:laUpper; CaseCode:#$00EB), // LATIN CAPITAL LETTER E WITH DIAERESIS
(Unicode:#$00CC; Attr:laUpper; CaseCode:#$00EC), // LATIN CAPITAL LETTER I WITH GRAVE
(Unicode:#$00CD; Attr:laUpper; CaseCode:#$00ED), // LATIN CAPITAL LETTER I WITH ACUTE
(Unicode:#$00CE; Attr:laUpper; CaseCode:#$00EE), // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
(Unicode:#$00CF; Attr:laUpper; CaseCode:#$00EF), // LATIN CAPITAL LETTER I WITH DIAERESIS
(Unicode:#$00D0; Attr:laUpper; CaseCode:#$00F0), // LATIN CAPITAL LETTER ETH
(Unicode:#$00D1; Attr:laUpper; CaseCode:#$00F1), // LATIN CAPITAL LETTER N WITH TILDE
(Unicode:#$00D2; Attr:laUpper; CaseCode:#$00F2), // LATIN CAPITAL LETTER O WITH GRAVE
(Unicode:#$00D3; Attr:laUpper; CaseCode:#$00F3), // LATIN CAPITAL LETTER O WITH ACUTE
(Unicode:#$00D4; Attr:laUpper; CaseCode:#$00F4), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
(Unicode:#$00D5; Attr:laUpper; CaseCode:#$00F5), // LATIN CAPITAL LETTER O WITH TILDE
(Unicode:#$00D6; Attr:laUpper; CaseCode:#$00F6), // LATIN CAPITAL LETTER O WITH DIAERESIS
(Unicode:#$00D8; Attr:laUpper; CaseCode:#$00F8), // LATIN CAPITAL LETTER O WITH STROKE
(Unicode:#$00D9; Attr:laUpper; CaseCode:#$00F9), // LATIN CAPITAL LETTER U WITH GRAVE
(Unicode:#$00DA; Attr:laUpper; CaseCode:#$00FA), // LATIN CAPITAL LETTER U WITH ACUTE
(Unicode:#$00DB; Attr:laUpper; CaseCode:#$00FB), // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
(Unicode:#$00DC; Attr:laUpper; CaseCode:#$00FC), // LATIN CAPITAL LETTER U WITH DIAERESIS
(Unicode:#$00DD; Attr:laUpper; CaseCode:#$00FD), // LATIN CAPITAL LETTER Y WITH ACUTE
(Unicode:#$00DE; Attr:laUpper; CaseCode:#$00FE), // LATIN CAPITAL LETTER THORN
(Unicode:#$00DF; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER SHARP S
(Unicode:#$00E0; Attr:laLower; CaseCode:#$00C0), // LATIN SMALL LETTER A WITH GRAVE
(Unicode:#$00E1; Attr:laLower; CaseCode:#$00C1), // LATIN SMALL LETTER A WITH ACUTE
(Unicode:#$00E2; Attr:laLower; CaseCode:#$00C2), // LATIN SMALL LETTER A WITH CIRCUMFLEX
(Unicode:#$00E3; Attr:laLower; CaseCode:#$00C3), // LATIN SMALL LETTER A WITH TILDE
(Unicode:#$00E4; Attr:laLower; CaseCode:#$00C4), // LATIN SMALL LETTER A WITH DIAERESIS
(Unicode:#$00E5; Attr:laLower; CaseCode:#$00C5), // LATIN SMALL LETTER A WITH RING ABOVE
(Unicode:#$00E6; Attr:laLower; CaseCode:#$00C6), // LATIN SMALL LETTER AE
(Unicode:#$00E7; Attr:laLower; CaseCode:#$00C7), // LATIN SMALL LETTER C WITH CEDILLA
(Unicode:#$00E8; Attr:laLower; CaseCode:#$00C8), // LATIN SMALL LETTER E WITH GRAVE
(Unicode:#$00E9; Attr:laLower; CaseCode:#$00C9), // LATIN SMALL LETTER E WITH ACUTE
(Unicode:#$00EA; Attr:laLower; CaseCode:#$00CA), // LATIN SMALL LETTER E WITH CIRCUMFLEX
(Unicode:#$00EB; Attr:laLower; CaseCode:#$00CB), // LATIN SMALL LETTER E WITH DIAERESIS
(Unicode:#$00EC; Attr:laLower; CaseCode:#$00CC), // LATIN SMALL LETTER I WITH GRAVE
(Unicode:#$00ED; Attr:laLower; CaseCode:#$00CD), // LATIN SMALL LETTER I WITH ACUTE
(Unicode:#$00EE; Attr:laLower; CaseCode:#$00CE), // LATIN SMALL LETTER I WITH CIRCUMFLEX
(Unicode:#$00EF; Attr:laLower; CaseCode:#$00CF), // LATIN SMALL LETTER I WITH DIAERESIS
(Unicode:#$00F0; Attr:laLower; CaseCode:#$00D0), // LATIN SMALL LETTER ETH
(Unicode:#$00F1; Attr:laLower; CaseCode:#$00D1), // LATIN SMALL LETTER N WITH TILDE
(Unicode:#$00F2; Attr:laLower; CaseCode:#$00D2), // LATIN SMALL LETTER O WITH GRAVE
(Unicode:#$00F3; Attr:laLower; CaseCode:#$00D3), // LATIN SMALL LETTER O WITH ACUTE
(Unicode:#$00F4; Attr:laLower; CaseCode:#$00D4), // LATIN SMALL LETTER O WITH CIRCUMFLEX
(Unicode:#$00F5; Attr:laLower; CaseCode:#$00D5), // LATIN SMALL LETTER O WITH TILDE
(Unicode:#$00F6; Attr:laLower; CaseCode:#$00D6), // LATIN SMALL LETTER O WITH DIAERESIS
(Unicode:#$00F8; Attr:laLower; CaseCode:#$00D8), // LATIN SMALL LETTER O WITH STROKE
(Unicode:#$00F9; Attr:laLower; CaseCode:#$00D9), // LATIN SMALL LETTER U WITH GRAVE
(Unicode:#$00FA; Attr:laLower; CaseCode:#$00DA), // LATIN SMALL LETTER U WITH ACUTE
(Unicode:#$00FB; Attr:laLower; CaseCode:#$00DB), // LATIN SMALL LETTER U WITH CIRCUMFLEX
(Unicode:#$00FC; Attr:laLower; CaseCode:#$00DC), // LATIN SMALL LETTER U WITH DIAERESIS
(Unicode:#$00FD; Attr:laLower; CaseCode:#$00DD), // LATIN SMALL LETTER Y WITH ACUTE
(Unicode:#$00FE; Attr:laLower; CaseCode:#$00DE), // LATIN SMALL LETTER THORN
(Unicode:#$00FF; Attr:laLower; CaseCode:#$0178), // LATIN SMALL LETTER Y WITH DIAERESIS
(Unicode:#$0100; Attr:laUpper; CaseCode:#$0101), // LATIN CAPITAL LETTER A WITH MACRON
(Unicode:#$0101; Attr:laLower; CaseCode:#$0100), // LATIN SMALL LETTER A WITH MACRON
(Unicode:#$0102; Attr:laUpper; CaseCode:#$0103), // LATIN CAPITAL LETTER A WITH BREVE
(Unicode:#$0103; Attr:laLower; CaseCode:#$0102), // LATIN SMALL LETTER A WITH BREVE
(Unicode:#$0104; Attr:laUpper; CaseCode:#$0105), // LATIN CAPITAL LETTER A WITH OGONEK
(Unicode:#$0105; Attr:laLower; CaseCode:#$0104), // LATIN SMALL LETTER A WITH OGONEK
(Unicode:#$0106; Attr:laUpper; CaseCode:#$0107), // LATIN CAPITAL LETTER C WITH ACUTE
(Unicode:#$0107; Attr:laLower; CaseCode:#$0106), // LATIN SMALL LETTER C WITH ACUTE
(Unicode:#$0108; Attr:laUpper; CaseCode:#$0109), // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
(Unicode:#$0109; Attr:laLower; CaseCode:#$0108), // LATIN SMALL LETTER C WITH CIRCUMFLEX
(Unicode:#$010A; Attr:laUpper; CaseCode:#$010B), // LATIN CAPITAL LETTER C WITH DOT ABOVE
(Unicode:#$010B; Attr:laLower; CaseCode:#$010A), // LATIN SMALL LETTER C WITH DOT ABOVE
(Unicode:#$010C; Attr:laUpper; CaseCode:#$010D), // LATIN CAPITAL LETTER C WITH CARON
(Unicode:#$010D; Attr:laLower; CaseCode:#$010C), // LATIN SMALL LETTER C WITH CARON
(Unicode:#$010E; Attr:laUpper; CaseCode:#$010F), // LATIN CAPITAL LETTER D WITH CARON
(Unicode:#$010F; Attr:laLower; CaseCode:#$010E), // LATIN SMALL LETTER D WITH CARON
(Unicode:#$0110; Attr:laUpper; CaseCode:#$0111), // LATIN CAPITAL LETTER D WITH STROKE
(Unicode:#$0111; Attr:laLower; CaseCode:#$0110), // LATIN SMALL LETTER D WITH STROKE
(Unicode:#$0112; Attr:laUpper; CaseCode:#$0113), // LATIN CAPITAL LETTER E WITH MACRON
(Unicode:#$0113; Attr:laLower; CaseCode:#$0112), // LATIN SMALL LETTER E WITH MACRON
(Unicode:#$0114; Attr:laUpper; CaseCode:#$0115), // LATIN CAPITAL LETTER E WITH BREVE
(Unicode:#$0115; Attr:laLower; CaseCode:#$0114), // LATIN SMALL LETTER E WITH BREVE
(Unicode:#$0116; Attr:laUpper; CaseCode:#$0117), // LATIN CAPITAL LETTER E WITH DOT ABOVE
(Unicode:#$0117; Attr:laLower; CaseCode:#$0116), // LATIN SMALL LETTER E WITH DOT ABOVE
(Unicode:#$0118; Attr:laUpper; CaseCode:#$0119), // LATIN CAPITAL LETTER E WITH OGONEK
(Unicode:#$0119; Attr:laLower; CaseCode:#$0118), // LATIN SMALL LETTER E WITH OGONEK
(Unicode:#$011A; Attr:laUpper; CaseCode:#$011B), // LATIN CAPITAL LETTER E WITH CARON
(Unicode:#$011B; Attr:laLower; CaseCode:#$011A), // LATIN SMALL LETTER E WITH CARON
(Unicode:#$011C; Attr:laUpper; CaseCode:#$011D), // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
(Unicode:#$011D; Attr:laLower; CaseCode:#$011C), // LATIN SMALL LETTER G WITH CIRCUMFLEX
(Unicode:#$011E; Attr:laUpper; CaseCode:#$011F), // LATIN CAPITAL LETTER G WITH BREVE
(Unicode:#$011F; Attr:laLower; CaseCode:#$011E), // LATIN SMALL LETTER G WITH BREVE
(Unicode:#$0120; Attr:laUpper; CaseCode:#$0121), // LATIN CAPITAL LETTER G WITH DOT ABOVE
(Unicode:#$0121; Attr:laLower; CaseCode:#$0120), // LATIN SMALL LETTER G WITH DOT ABOVE
(Unicode:#$0122; Attr:laUpper; CaseCode:#$0123), // LATIN CAPITAL LETTER G WITH CEDILLA
(Unicode:#$0123; Attr:laLower; CaseCode:#$0122), // LATIN SMALL LETTER G WITH CEDILLA
(Unicode:#$0124; Attr:laUpper; CaseCode:#$0125), // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
(Unicode:#$0125; Attr:laLower; CaseCode:#$0124), // LATIN SMALL LETTER H WITH CIRCUMFLEX
(Unicode:#$0126; Attr:laUpper; CaseCode:#$0127), // LATIN CAPITAL LETTER H WITH STROKE
(Unicode:#$0127; Attr:laLower; CaseCode:#$0126), // LATIN SMALL LETTER H WITH STROKE
(Unicode:#$0128; Attr:laUpper; CaseCode:#$0129), // LATIN CAPITAL LETTER I WITH TILDE
(Unicode:#$0129; Attr:laLower; CaseCode:#$0128), // LATIN SMALL LETTER I WITH TILDE
(Unicode:#$012A; Attr:laUpper; CaseCode:#$012B), // LATIN CAPITAL LETTER I WITH MACRON
(Unicode:#$012B; Attr:laLower; CaseCode:#$012A), // LATIN SMALL LETTER I WITH MACRON
(Unicode:#$012C; Attr:laUpper; CaseCode:#$012D), // LATIN CAPITAL LETTER I WITH BREVE
(Unicode:#$012D; Attr:laLower; CaseCode:#$012C), // LATIN SMALL LETTER I WITH BREVE
(Unicode:#$012E; Attr:laUpper; CaseCode:#$012F), // LATIN CAPITAL LETTER I WITH OGONEK
(Unicode:#$012F; Attr:laLower; CaseCode:#$012E), // LATIN SMALL LETTER I WITH OGONEK
(Unicode:#$0130; Attr:laUpper; CaseCode:#$0069), // LATIN CAPITAL LETTER I WITH DOT ABOVE
(Unicode:#$0131; Attr:laLower; CaseCode:#$0049), // LATIN SMALL LETTER DOTLESS I
(Unicode:#$0132; Attr:laUpper; CaseCode:#$0133), // LATIN CAPITAL LIGATURE IJ
(Unicode:#$0133; Attr:laLower; CaseCode:#$0132), // LATIN SMALL LIGATURE IJ
(Unicode:#$0134; Attr:laUpper; CaseCode:#$0135), // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
(Unicode:#$0135; Attr:laLower; CaseCode:#$0134), // LATIN SMALL LETTER J WITH CIRCUMFLEX
(Unicode:#$0136; Attr:laUpper; CaseCode:#$0137), // LATIN CAPITAL LETTER K WITH CEDILLA
(Unicode:#$0137; Attr:laLower; CaseCode:#$0136), // LATIN SMALL LETTER K WITH CEDILLA
(Unicode:#$0138; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER KRA
(Unicode:#$0139; Attr:laUpper; CaseCode:#$013A), // LATIN CAPITAL LETTER L WITH ACUTE
(Unicode:#$013A; Attr:laLower; CaseCode:#$0139), // LATIN SMALL LETTER L WITH ACUTE
(Unicode:#$013B; Attr:laUpper; CaseCode:#$013C), // LATIN CAPITAL LETTER L WITH CEDILLA
(Unicode:#$013C; Attr:laLower; CaseCode:#$013B), // LATIN SMALL LETTER L WITH CEDILLA
(Unicode:#$013D; Attr:laUpper; CaseCode:#$013E), // LATIN CAPITAL LETTER L WITH CARON
(Unicode:#$013E; Attr:laLower; CaseCode:#$013D), // LATIN SMALL LETTER L WITH CARON
(Unicode:#$013F; Attr:laUpper; CaseCode:#$0140), // LATIN CAPITAL LETTER L WITH MIDDLE DOT
(Unicode:#$0140; Attr:laLower; CaseCode:#$013F), // LATIN SMALL LETTER L WITH MIDDLE DOT
(Unicode:#$0141; Attr:laUpper; CaseCode:#$0142), // LATIN CAPITAL LETTER L WITH STROKE
(Unicode:#$0142; Attr:laLower; CaseCode:#$0141), // LATIN SMALL LETTER L WITH STROKE
(Unicode:#$0143; Attr:laUpper; CaseCode:#$0144), // LATIN CAPITAL LETTER N WITH ACUTE
(Unicode:#$0144; Attr:laLower; CaseCode:#$0143), // LATIN SMALL LETTER N WITH ACUTE
(Unicode:#$0145; Attr:laUpper; CaseCode:#$0146), // LATIN CAPITAL LETTER N WITH CEDILLA
(Unicode:#$0146; Attr:laLower; CaseCode:#$0145), // LATIN SMALL LETTER N WITH CEDILLA
(Unicode:#$0147; Attr:laUpper; CaseCode:#$0148), // LATIN CAPITAL LETTER N WITH CARON
(Unicode:#$0148; Attr:laLower; CaseCode:#$0147), // LATIN SMALL LETTER N WITH CARON
(Unicode:#$0149; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
(Unicode:#$014A; Attr:laUpper; CaseCode:#$014B), // LATIN CAPITAL LETTER ENG
(Unicode:#$014B; Attr:laLower; CaseCode:#$014A), // LATIN SMALL LETTER ENG
(Unicode:#$014C; Attr:laUpper; CaseCode:#$014D), // LATIN CAPITAL LETTER O WITH MACRON
(Unicode:#$014D; Attr:laLower; CaseCode:#$014C), // LATIN SMALL LETTER O WITH MACRON
(Unicode:#$014E; Attr:laUpper; CaseCode:#$014F), // LATIN CAPITAL LETTER O WITH BREVE
(Unicode:#$014F; Attr:laLower; CaseCode:#$014E), // LATIN SMALL LETTER O WITH BREVE
(Unicode:#$0150; Attr:laUpper; CaseCode:#$0151), // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
(Unicode:#$0151; Attr:laLower; CaseCode:#$0150), // LATIN SMALL LETTER O WITH DOUBLE ACUTE
(Unicode:#$0152; Attr:laUpper; CaseCode:#$0153), // LATIN CAPITAL LIGATURE OE
(Unicode:#$0153; Attr:laLower; CaseCode:#$0152), // LATIN SMALL LIGATURE OE
(Unicode:#$0154; Attr:laUpper; CaseCode:#$0155), // LATIN CAPITAL LETTER R WITH ACUTE
(Unicode:#$0155; Attr:laLower; CaseCode:#$0154), // LATIN SMALL LETTER R WITH ACUTE
(Unicode:#$0156; Attr:laUpper; CaseCode:#$0157), // LATIN CAPITAL LETTER R WITH CEDILLA
(Unicode:#$0157; Attr:laLower; CaseCode:#$0156), // LATIN SMALL LETTER R WITH CEDILLA
(Unicode:#$0158; Attr:laUpper; CaseCode:#$0159), // LATIN CAPITAL LETTER R WITH CARON
(Unicode:#$0159; Attr:laLower; CaseCode:#$0158), // LATIN SMALL LETTER R WITH CARON
(Unicode:#$015A; Attr:laUpper; CaseCode:#$015B), // LATIN CAPITAL LETTER S WITH ACUTE
(Unicode:#$015B; Attr:laLower; CaseCode:#$015A), // LATIN SMALL LETTER S WITH ACUTE
(Unicode:#$015C; Attr:laUpper; CaseCode:#$015D), // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
(Unicode:#$015D; Attr:laLower; CaseCode:#$015C), // LATIN SMALL LETTER S WITH CIRCUMFLEX
(Unicode:#$015E; Attr:laUpper; CaseCode:#$015F), // LATIN CAPITAL LETTER S WITH CEDILLA
(Unicode:#$015F; Attr:laLower; CaseCode:#$015E), // LATIN SMALL LETTER S WITH CEDILLA
(Unicode:#$0160; Attr:laUpper; CaseCode:#$0161), // LATIN CAPITAL LETTER S WITH CARON
(Unicode:#$0161; Attr:laLower; CaseCode:#$0160), // LATIN SMALL LETTER S WITH CARON
(Unicode:#$0162; Attr:laUpper; CaseCode:#$0163), // LATIN CAPITAL LETTER T WITH CEDILLA
(Unicode:#$0163; Attr:laLower; CaseCode:#$0162), // LATIN SMALL LETTER T WITH CEDILLA
(Unicode:#$0164; Attr:laUpper; CaseCode:#$0165), // LATIN CAPITAL LETTER T WITH CARON
(Unicode:#$0165; Attr:laLower; CaseCode:#$0164), // LATIN SMALL LETTER T WITH CARON
(Unicode:#$0166; Attr:laUpper; CaseCode:#$0167), // LATIN CAPITAL LETTER T WITH STROKE
(Unicode:#$0167; Attr:laLower; CaseCode:#$0166), // LATIN SMALL LETTER T WITH STROKE
(Unicode:#$0168; Attr:laUpper; CaseCode:#$0169), // LATIN CAPITAL LETTER U WITH TILDE
(Unicode:#$0169; Attr:laLower; CaseCode:#$0168), // LATIN SMALL LETTER U WITH TILDE
(Unicode:#$016A; Attr:laUpper; CaseCode:#$016B), // LATIN CAPITAL LETTER U WITH MACRON
(Unicode:#$016B; Attr:laLower; CaseCode:#$016A), // LATIN SMALL LETTER U WITH MACRON
(Unicode:#$016C; Attr:laUpper; CaseCode:#$016D), // LATIN CAPITAL LETTER U WITH BREVE
(Unicode:#$016D; Attr:laLower; CaseCode:#$016C), // LATIN SMALL LETTER U WITH BREVE
(Unicode:#$016E; Attr:laUpper; CaseCode:#$016F), // LATIN CAPITAL LETTER U WITH RING ABOVE
(Unicode:#$016F; Attr:laLower; CaseCode:#$016E), // LATIN SMALL LETTER U WITH RING ABOVE
(Unicode:#$0170; Attr:laUpper; CaseCode:#$0171), // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
(Unicode:#$0171; Attr:laLower; CaseCode:#$0170), // LATIN SMALL LETTER U WITH DOUBLE ACUTE
(Unicode:#$0172; Attr:laUpper; CaseCode:#$0173), // LATIN CAPITAL LETTER U WITH OGONEK
(Unicode:#$0173; Attr:laLower; CaseCode:#$0172), // LATIN SMALL LETTER U WITH OGONEK
(Unicode:#$0174; Attr:laUpper; CaseCode:#$0175), // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
(Unicode:#$0175; Attr:laLower; CaseCode:#$0174), // LATIN SMALL LETTER W WITH CIRCUMFLEX
(Unicode:#$0176; Attr:laUpper; CaseCode:#$0177), // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
(Unicode:#$0177; Attr:laLower; CaseCode:#$0176), // LATIN SMALL LETTER Y WITH CIRCUMFLEX
(Unicode:#$0178; Attr:laUpper; CaseCode:#$00FF), // LATIN CAPITAL LETTER Y WITH DIAERESIS
(Unicode:#$0179; Attr:laUpper; CaseCode:#$017A), // LATIN CAPITAL LETTER Z WITH ACUTE
(Unicode:#$017A; Attr:laLower; CaseCode:#$0179), // LATIN SMALL LETTER Z WITH ACUTE
(Unicode:#$017B; Attr:laUpper; CaseCode:#$017C), // LATIN CAPITAL LETTER Z WITH DOT ABOVE
(Unicode:#$017C; Attr:laLower; CaseCode:#$017B), // LATIN SMALL LETTER Z WITH DOT ABOVE
(Unicode:#$017D; Attr:laUpper; CaseCode:#$017E), // LATIN CAPITAL LETTER Z WITH CARON
(Unicode:#$017E; Attr:laLower; CaseCode:#$017D), // LATIN SMALL LETTER Z WITH CARON
(Unicode:#$017F; Attr:laLower; CaseCode:#$0053), // LATIN SMALL LETTER LONG S
(Unicode:#$0180; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER B WITH STROKE
(Unicode:#$0181; Attr:laUpper; CaseCode:#$0253), // LATIN CAPITAL LETTER B WITH HOOK
(Unicode:#$0182; Attr:laUpper; CaseCode:#$0183), // LATIN CAPITAL LETTER B WITH TOPBAR
(Unicode:#$0183; Attr:laLower; CaseCode:#$0182), // LATIN SMALL LETTER B WITH TOPBAR
(Unicode:#$0184; Attr:laUpper; CaseCode:#$0185), // LATIN CAPITAL LETTER TONE SIX
(Unicode:#$0185; Attr:laLower; CaseCode:#$0184), // LATIN SMALL LETTER TONE SIX
(Unicode:#$0186; Attr:laUpper; CaseCode:#$0254), // LATIN CAPITAL LETTER OPEN O
(Unicode:#$0187; Attr:laUpper; CaseCode:#$0188), // LATIN CAPITAL LETTER C WITH HOOK
(Unicode:#$0188; Attr:laLower; CaseCode:#$0187), // LATIN SMALL LETTER C WITH HOOK
(Unicode:#$0189; Attr:laUpper; CaseCode:#$0256), // LATIN CAPITAL LETTER AFRICAN D
(Unicode:#$018A; Attr:laUpper; CaseCode:#$0257), // LATIN CAPITAL LETTER D WITH HOOK
(Unicode:#$018B; Attr:laUpper; CaseCode:#$018C), // LATIN CAPITAL LETTER D WITH TOPBAR
(Unicode:#$018C; Attr:laLower; CaseCode:#$018B), // LATIN SMALL LETTER D WITH TOPBAR
(Unicode:#$018D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED DELTA
(Unicode:#$018E; Attr:laUpper; CaseCode:#$01DD), // LATIN CAPITAL LETTER REVERSED E
(Unicode:#$018F; Attr:laUpper; CaseCode:#$0259), // LATIN CAPITAL LETTER SCHWA
(Unicode:#$0190; Attr:laUpper; CaseCode:#$025B), // LATIN CAPITAL LETTER OPEN E
(Unicode:#$0191; Attr:laUpper; CaseCode:#$0192), // LATIN CAPITAL LETTER F WITH HOOK
(Unicode:#$0192; Attr:laLower; CaseCode:#$0191), // LATIN SMALL LETTER F WITH HOOK
(Unicode:#$0193; Attr:laUpper; CaseCode:#$0260), // LATIN CAPITAL LETTER G WITH HOOK
(Unicode:#$0194; Attr:laUpper; CaseCode:#$0263), // LATIN CAPITAL LETTER GAMMA
(Unicode:#$0195; Attr:laLower; CaseCode:#$01F6), // LATIN SMALL LETTER HV
(Unicode:#$0196; Attr:laUpper; CaseCode:#$0269), // LATIN CAPITAL LETTER IOTA
(Unicode:#$0197; Attr:laUpper; CaseCode:#$0268), // LATIN CAPITAL LETTER I WITH STROKE
(Unicode:#$0198; Attr:laUpper; CaseCode:#$0199), // LATIN CAPITAL LETTER K WITH HOOK
(Unicode:#$0199; Attr:laLower; CaseCode:#$0198), // LATIN SMALL LETTER K WITH HOOK
(Unicode:#$019A; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER L WITH BAR
(Unicode:#$019B; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER LAMBDA WITH STROKE
(Unicode:#$019C; Attr:laUpper; CaseCode:#$026F), // LATIN CAPITAL LETTER TURNED M
(Unicode:#$019D; Attr:laUpper; CaseCode:#$0272), // LATIN CAPITAL LETTER N WITH LEFT HOOK
(Unicode:#$019E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER N WITH LONG RIGHT LEG
(Unicode:#$019F; Attr:laUpper; CaseCode:#$0275), // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
(Unicode:#$01A0; Attr:laUpper; CaseCode:#$01A1), // LATIN CAPITAL LETTER O WITH HORN
(Unicode:#$01A1; Attr:laLower; CaseCode:#$01A0), // LATIN SMALL LETTER O WITH HORN
(Unicode:#$01A2; Attr:laUpper; CaseCode:#$01A3), // LATIN CAPITAL LETTER OI
(Unicode:#$01A3; Attr:laLower; CaseCode:#$01A2), // LATIN SMALL LETTER OI
(Unicode:#$01A4; Attr:laUpper; CaseCode:#$01A5), // LATIN CAPITAL LETTER P WITH HOOK
(Unicode:#$01A5; Attr:laLower; CaseCode:#$01A4), // LATIN SMALL LETTER P WITH HOOK
(Unicode:#$01A6; Attr:laUpper; CaseCode:#$0280), // LATIN LETTER YR
(Unicode:#$01A7; Attr:laUpper; CaseCode:#$01A8), // LATIN CAPITAL LETTER TONE TWO
(Unicode:#$01A8; Attr:laLower; CaseCode:#$01A7), // LATIN SMALL LETTER TONE TWO
(Unicode:#$01A9; Attr:laUpper; CaseCode:#$0283), // LATIN CAPITAL LETTER ESH
(Unicode:#$01AA; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER REVERSED ESH LOOP
(Unicode:#$01AB; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER T WITH PALATAL HOOK
(Unicode:#$01AC; Attr:laUpper; CaseCode:#$01AD), // LATIN CAPITAL LETTER T WITH HOOK
(Unicode:#$01AD; Attr:laLower; CaseCode:#$01AC), // LATIN SMALL LETTER T WITH HOOK
(Unicode:#$01AE; Attr:laUpper; CaseCode:#$0288), // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
(Unicode:#$01AF; Attr:laUpper; CaseCode:#$01B0), // LATIN CAPITAL LETTER U WITH HORN
(Unicode:#$01B0; Attr:laLower; CaseCode:#$01AF), // LATIN SMALL LETTER U WITH HORN
(Unicode:#$01B1; Attr:laUpper; CaseCode:#$028A), // LATIN CAPITAL LETTER UPSILON
(Unicode:#$01B2; Attr:laUpper; CaseCode:#$028B), // LATIN CAPITAL LETTER V WITH HOOK
(Unicode:#$01B3; Attr:laUpper; CaseCode:#$01B4), // LATIN CAPITAL LETTER Y WITH HOOK
(Unicode:#$01B4; Attr:laLower; CaseCode:#$01B3), // LATIN SMALL LETTER Y WITH HOOK
(Unicode:#$01B5; Attr:laUpper; CaseCode:#$01B6), // LATIN CAPITAL LETTER Z WITH STROKE
(Unicode:#$01B6; Attr:laLower; CaseCode:#$01B5), // LATIN SMALL LETTER Z WITH STROKE
(Unicode:#$01B7; Attr:laUpper; CaseCode:#$0292), // LATIN CAPITAL LETTER EZH
(Unicode:#$01B8; Attr:laUpper; CaseCode:#$01B9), // LATIN CAPITAL LETTER EZH REVERSED
(Unicode:#$01B9; Attr:laLower; CaseCode:#$01B8), // LATIN SMALL LETTER EZH REVERSED
(Unicode:#$01BA; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER EZH WITH TAIL
(Unicode:#$01BC; Attr:laUpper; CaseCode:#$01BD), // LATIN CAPITAL LETTER TONE FIVE
(Unicode:#$01BD; Attr:laLower; CaseCode:#$01BC), // LATIN SMALL LETTER TONE FIVE
(Unicode:#$01BE; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
(Unicode:#$01BF; Attr:laLower; CaseCode:#$01F7), // LATIN LETTER WYNN
(Unicode:#$01C4; Attr:laUpper; CaseCode:#$01C6), // LATIN CAPITAL LETTER DZ WITH CARON
(Unicode:#$01C6; Attr:laLower; CaseCode:#$01C4), // LATIN SMALL LETTER DZ WITH CARON
(Unicode:#$01C7; Attr:laUpper; CaseCode:#$01C9), // LATIN CAPITAL LETTER LJ
(Unicode:#$01C9; Attr:laLower; CaseCode:#$01C7), // LATIN SMALL LETTER LJ
(Unicode:#$01CA; Attr:laUpper; CaseCode:#$01CC), // LATIN CAPITAL LETTER NJ
(Unicode:#$01CC; Attr:laLower; CaseCode:#$01CA), // LATIN SMALL LETTER NJ
(Unicode:#$01CD; Attr:laUpper; CaseCode:#$01CE), // LATIN CAPITAL LETTER A WITH CARON
(Unicode:#$01CE; Attr:laLower; CaseCode:#$01CD), // LATIN SMALL LETTER A WITH CARON
(Unicode:#$01CF; Attr:laUpper; CaseCode:#$01D0), // LATIN CAPITAL LETTER I WITH CARON
(Unicode:#$01D0; Attr:laLower; CaseCode:#$01CF), // LATIN SMALL LETTER I WITH CARON
(Unicode:#$01D1; Attr:laUpper; CaseCode:#$01D2), // LATIN CAPITAL LETTER O WITH CARON
(Unicode:#$01D2; Attr:laLower; CaseCode:#$01D1), // LATIN SMALL LETTER O WITH CARON
(Unicode:#$01D3; Attr:laUpper; CaseCode:#$01D4), // LATIN CAPITAL LETTER U WITH CARON
(Unicode:#$01D4; Attr:laLower; CaseCode:#$01D3), // LATIN SMALL LETTER U WITH CARON
(Unicode:#$01D5; Attr:laUpper; CaseCode:#$01D6), // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
(Unicode:#$01D6; Attr:laLower; CaseCode:#$01D5), // LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
(Unicode:#$01D7; Attr:laUpper; CaseCode:#$01D8), // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
(Unicode:#$01D8; Attr:laLower; CaseCode:#$01D7), // LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
(Unicode:#$01D9; Attr:laUpper; CaseCode:#$01DA), // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
(Unicode:#$01DA; Attr:laLower; CaseCode:#$01D9), // LATIN SMALL LETTER U WITH DIAERESIS AND CARON
(Unicode:#$01DB; Attr:laUpper; CaseCode:#$01DC), // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
(Unicode:#$01DC; Attr:laLower; CaseCode:#$01DB), // LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
(Unicode:#$01DD; Attr:laLower; CaseCode:#$018E), // LATIN SMALL LETTER TURNED E
(Unicode:#$01DE; Attr:laUpper; CaseCode:#$01DF), // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
(Unicode:#$01DF; Attr:laLower; CaseCode:#$01DE), // LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
(Unicode:#$01E0; Attr:laUpper; CaseCode:#$01E1), // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
(Unicode:#$01E1; Attr:laLower; CaseCode:#$01E0), // LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
(Unicode:#$01E2; Attr:laUpper; CaseCode:#$01E3), // LATIN CAPITAL LETTER AE WITH MACRON
(Unicode:#$01E3; Attr:laLower; CaseCode:#$01E2), // LATIN SMALL LETTER AE WITH MACRON
(Unicode:#$01E4; Attr:laUpper; CaseCode:#$01E5), // LATIN CAPITAL LETTER G WITH STROKE
(Unicode:#$01E5; Attr:laLower; CaseCode:#$01E4), // LATIN SMALL LETTER G WITH STROKE
(Unicode:#$01E6; Attr:laUpper; CaseCode:#$01E7), // LATIN CAPITAL LETTER G WITH CARON
(Unicode:#$01E7; Attr:laLower; CaseCode:#$01E6), // LATIN SMALL LETTER G WITH CARON
(Unicode:#$01E8; Attr:laUpper; CaseCode:#$01E9), // LATIN CAPITAL LETTER K WITH CARON
(Unicode:#$01E9; Attr:laLower; CaseCode:#$01E8), // LATIN SMALL LETTER K WITH CARON
(Unicode:#$01EA; Attr:laUpper; CaseCode:#$01EB), // LATIN CAPITAL LETTER O WITH OGONEK
(Unicode:#$01EB; Attr:laLower; CaseCode:#$01EA), // LATIN SMALL LETTER O WITH OGONEK
(Unicode:#$01EC; Attr:laUpper; CaseCode:#$01ED), // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
(Unicode:#$01ED; Attr:laLower; CaseCode:#$01EC), // LATIN SMALL LETTER O WITH OGONEK AND MACRON
(Unicode:#$01EE; Attr:laUpper; CaseCode:#$01EF), // LATIN CAPITAL LETTER EZH WITH CARON
(Unicode:#$01EF; Attr:laLower; CaseCode:#$01EE), // LATIN SMALL LETTER EZH WITH CARON
(Unicode:#$01F0; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER J WITH CARON
(Unicode:#$01F1; Attr:laUpper; CaseCode:#$01F3), // LATIN CAPITAL LETTER DZ
(Unicode:#$01F3; Attr:laLower; CaseCode:#$01F1), // LATIN SMALL LETTER DZ
(Unicode:#$01F4; Attr:laUpper; CaseCode:#$01F5), // LATIN CAPITAL LETTER G WITH ACUTE
(Unicode:#$01F5; Attr:laLower; CaseCode:#$01F4), // LATIN SMALL LETTER G WITH ACUTE
(Unicode:#$01F6; Attr:laUpper; CaseCode:#$0195), // LATIN CAPITAL LETTER HWAIR
(Unicode:#$01F7; Attr:laUpper; CaseCode:#$01BF), // LATIN CAPITAL LETTER WYNN
(Unicode:#$01F8; Attr:laUpper; CaseCode:#$01F9), // LATIN CAPITAL LETTER N WITH GRAVE
(Unicode:#$01F9; Attr:laLower; CaseCode:#$01F8), // LATIN SMALL LETTER N WITH GRAVE
(Unicode:#$01FA; Attr:laUpper; CaseCode:#$01FB), // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
(Unicode:#$01FB; Attr:laLower; CaseCode:#$01FA), // LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
(Unicode:#$01FC; Attr:laUpper; CaseCode:#$01FD), // LATIN CAPITAL LETTER AE WITH ACUTE
(Unicode:#$01FD; Attr:laLower; CaseCode:#$01FC), // LATIN SMALL LETTER AE WITH ACUTE
(Unicode:#$01FE; Attr:laUpper; CaseCode:#$01FF), // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
(Unicode:#$01FF; Attr:laLower; CaseCode:#$01FE), // LATIN SMALL LETTER O WITH STROKE AND ACUTE
(Unicode:#$0200; Attr:laUpper; CaseCode:#$0201), // LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
(Unicode:#$0201; Attr:laLower; CaseCode:#$0200), // LATIN SMALL LETTER A WITH DOUBLE GRAVE
(Unicode:#$0202; Attr:laUpper; CaseCode:#$0203), // LATIN CAPITAL LETTER A WITH INVERTED BREVE
(Unicode:#$0203; Attr:laLower; CaseCode:#$0202), // LATIN SMALL LETTER A WITH INVERTED BREVE
(Unicode:#$0204; Attr:laUpper; CaseCode:#$0205), // LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
(Unicode:#$0205; Attr:laLower; CaseCode:#$0204), // LATIN SMALL LETTER E WITH DOUBLE GRAVE
(Unicode:#$0206; Attr:laUpper; CaseCode:#$0207), // LATIN CAPITAL LETTER E WITH INVERTED BREVE
(Unicode:#$0207; Attr:laLower; CaseCode:#$0206), // LATIN SMALL LETTER E WITH INVERTED BREVE
(Unicode:#$0208; Attr:laUpper; CaseCode:#$0209), // LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
(Unicode:#$0209; Attr:laLower; CaseCode:#$0208), // LATIN SMALL LETTER I WITH DOUBLE GRAVE
(Unicode:#$020A; Attr:laUpper; CaseCode:#$020B), // LATIN CAPITAL LETTER I WITH INVERTED BREVE
(Unicode:#$020B; Attr:laLower; CaseCode:#$020A), // LATIN SMALL LETTER I WITH INVERTED BREVE
(Unicode:#$020C; Attr:laUpper; CaseCode:#$020D), // LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
(Unicode:#$020D; Attr:laLower; CaseCode:#$020C), // LATIN SMALL LETTER O WITH DOUBLE GRAVE
(Unicode:#$020E; Attr:laUpper; CaseCode:#$020F), // LATIN CAPITAL LETTER O WITH INVERTED BREVE
(Unicode:#$020F; Attr:laLower; CaseCode:#$020E), // LATIN SMALL LETTER O WITH INVERTED BREVE
(Unicode:#$0210; Attr:laUpper; CaseCode:#$0211), // LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
(Unicode:#$0211; Attr:laLower; CaseCode:#$0210), // LATIN SMALL LETTER R WITH DOUBLE GRAVE
(Unicode:#$0212; Attr:laUpper; CaseCode:#$0213), // LATIN CAPITAL LETTER R WITH INVERTED BREVE
(Unicode:#$0213; Attr:laLower; CaseCode:#$0212), // LATIN SMALL LETTER R WITH INVERTED BREVE
(Unicode:#$0214; Attr:laUpper; CaseCode:#$0215), // LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
(Unicode:#$0215; Attr:laLower; CaseCode:#$0214), // LATIN SMALL LETTER U WITH DOUBLE GRAVE
(Unicode:#$0216; Attr:laUpper; CaseCode:#$0217), // LATIN CAPITAL LETTER U WITH INVERTED BREVE
(Unicode:#$0217; Attr:laLower; CaseCode:#$0216), // LATIN SMALL LETTER U WITH INVERTED BREVE
(Unicode:#$0218; Attr:laUpper; CaseCode:#$0219), // LATIN CAPITAL LETTER S WITH COMMA BELOW
(Unicode:#$0219; Attr:laLower; CaseCode:#$0218), // LATIN SMALL LETTER S WITH COMMA BELOW
(Unicode:#$021A; Attr:laUpper; CaseCode:#$021B), // LATIN CAPITAL LETTER T WITH COMMA BELOW
(Unicode:#$021B; Attr:laLower; CaseCode:#$021A), // LATIN SMALL LETTER T WITH COMMA BELOW
(Unicode:#$021C; Attr:laUpper; CaseCode:#$021D), // LATIN CAPITAL LETTER YOGH
(Unicode:#$021D; Attr:laLower; CaseCode:#$021C), // LATIN SMALL LETTER YOGH
(Unicode:#$021E; Attr:laUpper; CaseCode:#$021F), // LATIN CAPITAL LETTER H WITH CARON
(Unicode:#$021F; Attr:laLower; CaseCode:#$021E), // LATIN SMALL LETTER H WITH CARON
(Unicode:#$0222; Attr:laUpper; CaseCode:#$0223), // LATIN CAPITAL LETTER OU
(Unicode:#$0223; Attr:laLower; CaseCode:#$0222), // LATIN SMALL LETTER OU
(Unicode:#$0224; Attr:laUpper; CaseCode:#$0225), // LATIN CAPITAL LETTER Z WITH HOOK
(Unicode:#$0225; Attr:laLower; CaseCode:#$0224), // LATIN SMALL LETTER Z WITH HOOK
(Unicode:#$0226; Attr:laUpper; CaseCode:#$0227), // LATIN CAPITAL LETTER A WITH DOT ABOVE
(Unicode:#$0227; Attr:laLower; CaseCode:#$0226), // LATIN SMALL LETTER A WITH DOT ABOVE
(Unicode:#$0228; Attr:laUpper; CaseCode:#$0229), // LATIN CAPITAL LETTER E WITH CEDILLA
(Unicode:#$0229; Attr:laLower; CaseCode:#$0228), // LATIN SMALL LETTER E WITH CEDILLA
(Unicode:#$022A; Attr:laUpper; CaseCode:#$022B), // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
(Unicode:#$022B; Attr:laLower; CaseCode:#$022A), // LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
(Unicode:#$022C; Attr:laUpper; CaseCode:#$022D), // LATIN CAPITAL LETTER O WITH TILDE AND MACRON
(Unicode:#$022D; Attr:laLower; CaseCode:#$022C), // LATIN SMALL LETTER O WITH TILDE AND MACRON
(Unicode:#$022E; Attr:laUpper; CaseCode:#$022F), // LATIN CAPITAL LETTER O WITH DOT ABOVE
(Unicode:#$022F; Attr:laLower; CaseCode:#$022E), // LATIN SMALL LETTER O WITH DOT ABOVE
(Unicode:#$0230; Attr:laUpper; CaseCode:#$0231), // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
(Unicode:#$0231; Attr:laLower; CaseCode:#$0230), // LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
(Unicode:#$0232; Attr:laUpper; CaseCode:#$0233), // LATIN CAPITAL LETTER Y WITH MACRON
(Unicode:#$0233; Attr:laLower; CaseCode:#$0232), // LATIN SMALL LETTER Y WITH MACRON
(Unicode:#$0250; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED A
(Unicode:#$0251; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER ALPHA
(Unicode:#$0252; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED ALPHA
(Unicode:#$0253; Attr:laLower; CaseCode:#$0181), // LATIN SMALL LETTER B WITH HOOK
(Unicode:#$0254; Attr:laLower; CaseCode:#$0186), // LATIN SMALL LETTER OPEN O
(Unicode:#$0255; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER C WITH CURL
(Unicode:#$0256; Attr:laLower; CaseCode:#$0189), // LATIN SMALL LETTER D WITH TAIL
(Unicode:#$0257; Attr:laLower; CaseCode:#$018A), // LATIN SMALL LETTER D WITH HOOK
(Unicode:#$0258; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER REVERSED E
(Unicode:#$0259; Attr:laLower; CaseCode:#$018F), // LATIN SMALL LETTER SCHWA
(Unicode:#$025A; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER SCHWA WITH HOOK
(Unicode:#$025B; Attr:laLower; CaseCode:#$0190), // LATIN SMALL LETTER OPEN E
(Unicode:#$025C; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER REVERSED OPEN E
(Unicode:#$025D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
(Unicode:#$025E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER CLOSED REVERSED OPEN E
(Unicode:#$025F; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER DOTLESS J WITH STROKE
(Unicode:#$0260; Attr:laLower; CaseCode:#$0193), // LATIN SMALL LETTER G WITH HOOK
(Unicode:#$0261; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER SCRIPT G
(Unicode:#$0262; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL G
(Unicode:#$0263; Attr:laLower; CaseCode:#$0194), // LATIN SMALL LETTER GAMMA
(Unicode:#$0264; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER RAMS HORN
(Unicode:#$0265; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED H
(Unicode:#$0266; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER H WITH HOOK
(Unicode:#$0267; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER HENG WITH HOOK
(Unicode:#$0268; Attr:laLower; CaseCode:#$0197), // LATIN SMALL LETTER I WITH STROKE
(Unicode:#$0269; Attr:laLower; CaseCode:#$0196), // LATIN SMALL LETTER IOTA
(Unicode:#$026A; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL I
(Unicode:#$026B; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER L WITH MIDDLE TILDE
(Unicode:#$026C; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER L WITH BELT
(Unicode:#$026D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER L WITH RETROFLEX HOOK
(Unicode:#$026E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER LEZH
(Unicode:#$026F; Attr:laLower; CaseCode:#$019C), // LATIN SMALL LETTER TURNED M
(Unicode:#$0270; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED M WITH LONG LEG
(Unicode:#$0271; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER M WITH HOOK
(Unicode:#$0272; Attr:laLower; CaseCode:#$019D), // LATIN SMALL LETTER N WITH LEFT HOOK
(Unicode:#$0273; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER N WITH RETROFLEX HOOK
(Unicode:#$0274; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL N
(Unicode:#$0275; Attr:laLower; CaseCode:#$019F), // LATIN SMALL LETTER BARRED O
(Unicode:#$0276; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL OE
(Unicode:#$0277; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER CLOSED OMEGA
(Unicode:#$0278; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER PHI
(Unicode:#$0279; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED R
(Unicode:#$027A; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED R WITH LONG LEG
(Unicode:#$027B; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED R WITH HOOK
(Unicode:#$027C; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER R WITH LONG LEG
(Unicode:#$027D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER R WITH TAIL
(Unicode:#$027E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER R WITH FISHHOOK
(Unicode:#$027F; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER REVERSED R WITH FISHHOOK
(Unicode:#$0280; Attr:laLower; CaseCode:#$01A6), // LATIN LETTER SMALL CAPITAL R
(Unicode:#$0281; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL INVERTED R
(Unicode:#$0282; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER S WITH HOOK
(Unicode:#$0283; Attr:laLower; CaseCode:#$01A9), // LATIN SMALL LETTER ESH
(Unicode:#$0284; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
(Unicode:#$0285; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER SQUAT REVERSED ESH
(Unicode:#$0286; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER ESH WITH CURL
(Unicode:#$0287; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED T
(Unicode:#$0288; Attr:laLower; CaseCode:#$01AE), // LATIN SMALL LETTER T WITH RETROFLEX HOOK
(Unicode:#$0289; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER U BAR
(Unicode:#$028A; Attr:laLower; CaseCode:#$01B1), // LATIN SMALL LETTER UPSILON
(Unicode:#$028B; Attr:laLower; CaseCode:#$01B2), // LATIN SMALL LETTER V WITH HOOK
(Unicode:#$028C; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED V
(Unicode:#$028D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED W
(Unicode:#$028E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED Y
(Unicode:#$028F; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL Y
(Unicode:#$0290; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER Z WITH RETROFLEX HOOK
(Unicode:#$0291; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER Z WITH CURL
(Unicode:#$0292; Attr:laLower; CaseCode:#$01B7), // LATIN SMALL LETTER EZH
(Unicode:#$0293; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER EZH WITH CURL
(Unicode:#$0294; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER GLOTTAL STOP
(Unicode:#$0295; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER PHARYNGEAL VOICED FRICATIVE
(Unicode:#$0296; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER INVERTED GLOTTAL STOP
(Unicode:#$0297; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER STRETCHED C
(Unicode:#$0298; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER BILABIAL CLICK
(Unicode:#$0299; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL B
(Unicode:#$029A; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER CLOSED OPEN E
(Unicode:#$029B; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL G WITH HOOK
(Unicode:#$029C; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL H
(Unicode:#$029D; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER J WITH CROSSED-TAIL
(Unicode:#$029E; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TURNED K
(Unicode:#$029F; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER SMALL CAPITAL L
(Unicode:#$02A0; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER Q WITH HOOK
(Unicode:#$02A1; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER GLOTTAL STOP WITH STROKE
(Unicode:#$02A2; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
(Unicode:#$02A3; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER DZ DIGRAPH
(Unicode:#$02A4; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER DEZH DIGRAPH
(Unicode:#$02A5; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER DZ DIGRAPH WITH CURL
(Unicode:#$02A6; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TS DIGRAPH
(Unicode:#$02A7; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TESH DIGRAPH
(Unicode:#$02A8; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER TC DIGRAPH WITH CURL
(Unicode:#$02A9; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER FENG DIGRAPH
(Unicode:#$02AA; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER LS DIGRAPH
(Unicode:#$02AB; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER LZ DIGRAPH
(Unicode:#$02AC; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER BILABIAL PERCUSSIVE
(Unicode:#$02AD; Attr:laLower; CaseCode:#$FFFF), // LATIN LETTER BIDENTAL PERCUSSIVE
(Unicode:#$0386; Attr:laUpper; CaseCode:#$03AC), // GREEK CAPITAL LETTER ALPHA WITH TONOS
(Unicode:#$0388; Attr:laUpper; CaseCode:#$03AD), // GREEK CAPITAL LETTER EPSILON WITH TONOS
(Unicode:#$0389; Attr:laUpper; CaseCode:#$03AE), // GREEK CAPITAL LETTER ETA WITH TONOS
(Unicode:#$038A; Attr:laUpper; CaseCode:#$03AF), // GREEK CAPITAL LETTER IOTA WITH TONOS
(Unicode:#$038C; Attr:laUpper; CaseCode:#$03CC), // GREEK CAPITAL LETTER OMICRON WITH TONOS
(Unicode:#$038E; Attr:laUpper; CaseCode:#$03CD), // GREEK CAPITAL LETTER UPSILON WITH TONOS
(Unicode:#$038F; Attr:laUpper; CaseCode:#$03CE), // GREEK CAPITAL LETTER OMEGA WITH TONOS
(Unicode:#$0390; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
(Unicode:#$0391; Attr:laUpper; CaseCode:#$03B1), // GREEK CAPITAL LETTER ALPHA
(Unicode:#$0392; Attr:laUpper; CaseCode:#$03B2), // GREEK CAPITAL LETTER BETA
(Unicode:#$0393; Attr:laUpper; CaseCode:#$03B3), // GREEK CAPITAL LETTER GAMMA
(Unicode:#$0394; Attr:laUpper; CaseCode:#$03B4), // GREEK CAPITAL LETTER DELTA
(Unicode:#$0395; Attr:laUpper; CaseCode:#$03B5), // GREEK CAPITAL LETTER EPSILON
(Unicode:#$0396; Attr:laUpper; CaseCode:#$03B6), // GREEK CAPITAL LETTER ZETA
(Unicode:#$0397; Attr:laUpper; CaseCode:#$03B7), // GREEK CAPITAL LETTER ETA
(Unicode:#$0398; Attr:laUpper; CaseCode:#$03B8), // GREEK CAPITAL LETTER THETA
(Unicode:#$0399; Attr:laUpper; CaseCode:#$03B9), // GREEK CAPITAL LETTER IOTA
(Unicode:#$039A; Attr:laUpper; CaseCode:#$03BA), // GREEK CAPITAL LETTER KAPPA
(Unicode:#$039B; Attr:laUpper; CaseCode:#$03BB), // GREEK CAPITAL LETTER LAMDA
(Unicode:#$039C; Attr:laUpper; CaseCode:#$03BC), // GREEK CAPITAL LETTER MU
(Unicode:#$039D; Attr:laUpper; CaseCode:#$03BD), // GREEK CAPITAL LETTER NU
(Unicode:#$039E; Attr:laUpper; CaseCode:#$03BE), // GREEK CAPITAL LETTER XI
(Unicode:#$039F; Attr:laUpper; CaseCode:#$03BF), // GREEK CAPITAL LETTER OMICRON
(Unicode:#$03A0; Attr:laUpper; CaseCode:#$03C0), // GREEK CAPITAL LETTER PI
(Unicode:#$03A1; Attr:laUpper; CaseCode:#$03C1), // GREEK CAPITAL LETTER RHO
(Unicode:#$03A3; Attr:laUpper; CaseCode:#$03C3), // GREEK CAPITAL LETTER SIGMA
(Unicode:#$03A4; Attr:laUpper; CaseCode:#$03C4), // GREEK CAPITAL LETTER TAU
(Unicode:#$03A5; Attr:laUpper; CaseCode:#$03C5), // GREEK CAPITAL LETTER UPSILON
(Unicode:#$03A6; Attr:laUpper; CaseCode:#$03C6), // GREEK CAPITAL LETTER PHI
(Unicode:#$03A7; Attr:laUpper; CaseCode:#$03C7), // GREEK CAPITAL LETTER CHI
(Unicode:#$03A8; Attr:laUpper; CaseCode:#$03C8), // GREEK CAPITAL LETTER PSI
(Unicode:#$03A9; Attr:laUpper; CaseCode:#$03C9), // GREEK CAPITAL LETTER OMEGA
(Unicode:#$03AA; Attr:laUpper; CaseCode:#$03CA), // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
(Unicode:#$03AB; Attr:laUpper; CaseCode:#$03CB), // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
(Unicode:#$03AC; Attr:laLower; CaseCode:#$0386), // GREEK SMALL LETTER ALPHA WITH TONOS
(Unicode:#$03AD; Attr:laLower; CaseCode:#$0388), // GREEK SMALL LETTER EPSILON WITH TONOS
(Unicode:#$03AE; Attr:laLower; CaseCode:#$0389), // GREEK SMALL LETTER ETA WITH TONOS
(Unicode:#$03AF; Attr:laLower; CaseCode:#$038A), // GREEK SMALL LETTER IOTA WITH TONOS
(Unicode:#$03B0; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
(Unicode:#$03B1; Attr:laLower; CaseCode:#$0391), // GREEK SMALL LETTER ALPHA
(Unicode:#$03B2; Attr:laLower; CaseCode:#$0392), // GREEK SMALL LETTER BETA
(Unicode:#$03B3; Attr:laLower; CaseCode:#$0393), // GREEK SMALL LETTER GAMMA
(Unicode:#$03B4; Attr:laLower; CaseCode:#$0394), // GREEK SMALL LETTER DELTA
(Unicode:#$03B5; Attr:laLower; CaseCode:#$0395), // GREEK SMALL LETTER EPSILON
(Unicode:#$03B6; Attr:laLower; CaseCode:#$0396), // GREEK SMALL LETTER ZETA
(Unicode:#$03B7; Attr:laLower; CaseCode:#$0397), // GREEK SMALL LETTER ETA
(Unicode:#$03B8; Attr:laLower; CaseCode:#$0398), // GREEK SMALL LETTER THETA
(Unicode:#$03B9; Attr:laLower; CaseCode:#$0399), // GREEK SMALL LETTER IOTA
(Unicode:#$03BA; Attr:laLower; CaseCode:#$039A), // GREEK SMALL LETTER KAPPA
(Unicode:#$03BB; Attr:laLower; CaseCode:#$039B), // GREEK SMALL LETTER LAMDA
(Unicode:#$03BC; Attr:laLower; CaseCode:#$039C), // GREEK SMALL LETTER MU
(Unicode:#$03BD; Attr:laLower; CaseCode:#$039D), // GREEK SMALL LETTER NU
(Unicode:#$03BE; Attr:laLower; CaseCode:#$039E), // GREEK SMALL LETTER XI
(Unicode:#$03BF; Attr:laLower; CaseCode:#$039F), // GREEK SMALL LETTER OMICRON
(Unicode:#$03C0; Attr:laLower; CaseCode:#$03A0), // GREEK SMALL LETTER PI
(Unicode:#$03C1; Attr:laLower; CaseCode:#$03A1), // GREEK SMALL LETTER RHO
(Unicode:#$03C2; Attr:laLower; CaseCode:#$03A3), // GREEK SMALL LETTER FINAL SIGMA
(Unicode:#$03C3; Attr:laLower; CaseCode:#$03A3), // GREEK SMALL LETTER SIGMA
(Unicode:#$03C4; Attr:laLower; CaseCode:#$03A4), // GREEK SMALL LETTER TAU
(Unicode:#$03C5; Attr:laLower; CaseCode:#$03A5), // GREEK SMALL LETTER UPSILON
(Unicode:#$03C6; Attr:laLower; CaseCode:#$03A6), // GREEK SMALL LETTER PHI
(Unicode:#$03C7; Attr:laLower; CaseCode:#$03A7), // GREEK SMALL LETTER CHI
(Unicode:#$03C8; Attr:laLower; CaseCode:#$03A8), // GREEK SMALL LETTER PSI
(Unicode:#$03C9; Attr:laLower; CaseCode:#$03A9), // GREEK SMALL LETTER OMEGA
(Unicode:#$03CA; Attr:laLower; CaseCode:#$03AA), // GREEK SMALL LETTER IOTA WITH DIALYTIKA
(Unicode:#$03CB; Attr:laLower; CaseCode:#$03AB), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA
(Unicode:#$03CC; Attr:laLower; CaseCode:#$038C), // GREEK SMALL LETTER OMICRON WITH TONOS
(Unicode:#$03CD; Attr:laLower; CaseCode:#$038E), // GREEK SMALL LETTER UPSILON WITH TONOS
(Unicode:#$03CE; Attr:laLower; CaseCode:#$038F), // GREEK SMALL LETTER OMEGA WITH TONOS
(Unicode:#$03D0; Attr:laLower; CaseCode:#$0392), // GREEK BETA SYMBOL
(Unicode:#$03D1; Attr:laLower; CaseCode:#$0398), // GREEK THETA SYMBOL
(Unicode:#$03D2; Attr:laUpper; CaseCode:#$FFFF), // GREEK UPSILON WITH HOOK SYMBOL
(Unicode:#$03D3; Attr:laUpper; CaseCode:#$FFFF), // GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
(Unicode:#$03D4; Attr:laUpper; CaseCode:#$FFFF), // GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
(Unicode:#$03D5; Attr:laLower; CaseCode:#$03A6), // GREEK PHI SYMBOL
(Unicode:#$03D6; Attr:laLower; CaseCode:#$03A0), // GREEK PI SYMBOL
(Unicode:#$03D7; Attr:laLower; CaseCode:#$FFFF), // GREEK KAI SYMBOL
(Unicode:#$03DA; Attr:laUpper; CaseCode:#$03DB), // GREEK LETTER STIGMA
(Unicode:#$03DB; Attr:laLower; CaseCode:#$03DA), // GREEK SMALL LETTER STIGMA
(Unicode:#$03DC; Attr:laUpper; CaseCode:#$03DD), // GREEK LETTER DIGAMMA
(Unicode:#$03DD; Attr:laLower; CaseCode:#$03DC), // GREEK SMALL LETTER DIGAMMA
(Unicode:#$03DE; Attr:laUpper; CaseCode:#$03DF), // GREEK LETTER KOPPA
(Unicode:#$03DF; Attr:laLower; CaseCode:#$03DE), // GREEK SMALL LETTER KOPPA
(Unicode:#$03E0; Attr:laUpper; CaseCode:#$03E1), // GREEK LETTER SAMPI
(Unicode:#$03E1; Attr:laLower; CaseCode:#$03E0), // GREEK SMALL LETTER SAMPI
(Unicode:#$03E2; Attr:laUpper; CaseCode:#$03E3), // COPTIC CAPITAL LETTER SHEI
(Unicode:#$03E3; Attr:laLower; CaseCode:#$03E2), // COPTIC SMALL LETTER SHEI
(Unicode:#$03E4; Attr:laUpper; CaseCode:#$03E5), // COPTIC CAPITAL LETTER FEI
(Unicode:#$03E5; Attr:laLower; CaseCode:#$03E4), // COPTIC SMALL LETTER FEI
(Unicode:#$03E6; Attr:laUpper; CaseCode:#$03E7), // COPTIC CAPITAL LETTER KHEI
(Unicode:#$03E7; Attr:laLower; CaseCode:#$03E6), // COPTIC SMALL LETTER KHEI
(Unicode:#$03E8; Attr:laUpper; CaseCode:#$03E9), // COPTIC CAPITAL LETTER HORI
(Unicode:#$03E9; Attr:laLower; CaseCode:#$03E8), // COPTIC SMALL LETTER HORI
(Unicode:#$03EA; Attr:laUpper; CaseCode:#$03EB), // COPTIC CAPITAL LETTER GANGIA
(Unicode:#$03EB; Attr:laLower; CaseCode:#$03EA), // COPTIC SMALL LETTER GANGIA
(Unicode:#$03EC; Attr:laUpper; CaseCode:#$03ED), // COPTIC CAPITAL LETTER SHIMA
(Unicode:#$03ED; Attr:laLower; CaseCode:#$03EC), // COPTIC SMALL LETTER SHIMA
(Unicode:#$03EE; Attr:laUpper; CaseCode:#$03EF), // COPTIC CAPITAL LETTER DEI
(Unicode:#$03EF; Attr:laLower; CaseCode:#$03EE), // COPTIC SMALL LETTER DEI
(Unicode:#$03F0; Attr:laLower; CaseCode:#$039A), // GREEK KAPPA SYMBOL
(Unicode:#$03F1; Attr:laLower; CaseCode:#$03A1), // GREEK RHO SYMBOL
(Unicode:#$03F2; Attr:laLower; CaseCode:#$03A3), // GREEK LUNATE SIGMA SYMBOL
(Unicode:#$03F3; Attr:laLower; CaseCode:#$FFFF), // GREEK LETTER YOT
(Unicode:#$03F4; Attr:laUpper; CaseCode:#$03B8), // GREEK CAPITAL THETA SYMBOL
(Unicode:#$03F5; Attr:laLower; CaseCode:#$0395), // GREEK LUNATE EPSILON SYMBOL
(Unicode:#$0400; Attr:laUpper; CaseCode:#$0450), // CYRILLIC CAPITAL LETTER IE WITH GRAVE
(Unicode:#$0401; Attr:laUpper; CaseCode:#$0451), // CYRILLIC CAPITAL LETTER IO
(Unicode:#$0402; Attr:laUpper; CaseCode:#$0452), // CYRILLIC CAPITAL LETTER DJE
(Unicode:#$0403; Attr:laUpper; CaseCode:#$0453), // CYRILLIC CAPITAL LETTER GJE
(Unicode:#$0404; Attr:laUpper; CaseCode:#$0454), // CYRILLIC CAPITAL LETTER UKRAINIAN IE
(Unicode:#$0405; Attr:laUpper; CaseCode:#$0455), // CYRILLIC CAPITAL LETTER DZE
(Unicode:#$0406; Attr:laUpper; CaseCode:#$0456), // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
(Unicode:#$0407; Attr:laUpper; CaseCode:#$0457), // CYRILLIC CAPITAL LETTER YI
(Unicode:#$0408; Attr:laUpper; CaseCode:#$0458), // CYRILLIC CAPITAL LETTER JE
(Unicode:#$0409; Attr:laUpper; CaseCode:#$0459), // CYRILLIC CAPITAL LETTER LJE
(Unicode:#$040A; Attr:laUpper; CaseCode:#$045A), // CYRILLIC CAPITAL LETTER NJE
(Unicode:#$040B; Attr:laUpper; CaseCode:#$045B), // CYRILLIC CAPITAL LETTER TSHE
(Unicode:#$040C; Attr:laUpper; CaseCode:#$045C), // CYRILLIC CAPITAL LETTER KJE
(Unicode:#$040D; Attr:laUpper; CaseCode:#$045D), // CYRILLIC CAPITAL LETTER I WITH GRAVE
(Unicode:#$040E; Attr:laUpper; CaseCode:#$045E), // CYRILLIC CAPITAL LETTER SHORT U
(Unicode:#$040F; Attr:laUpper; CaseCode:#$045F), // CYRILLIC CAPITAL LETTER DZHE
(Unicode:#$0410; Attr:laUpper; CaseCode:#$0430), // CYRILLIC CAPITAL LETTER A
(Unicode:#$0411; Attr:laUpper; CaseCode:#$0431), // CYRILLIC CAPITAL LETTER BE
(Unicode:#$0412; Attr:laUpper; CaseCode:#$0432), // CYRILLIC CAPITAL LETTER VE
(Unicode:#$0413; Attr:laUpper; CaseCode:#$0433), // CYRILLIC CAPITAL LETTER GHE
(Unicode:#$0414; Attr:laUpper; CaseCode:#$0434), // CYRILLIC CAPITAL LETTER DE
(Unicode:#$0415; Attr:laUpper; CaseCode:#$0435), // CYRILLIC CAPITAL LETTER IE
(Unicode:#$0416; Attr:laUpper; CaseCode:#$0436), // CYRILLIC CAPITAL LETTER ZHE
(Unicode:#$0417; Attr:laUpper; CaseCode:#$0437), // CYRILLIC CAPITAL LETTER ZE
(Unicode:#$0418; Attr:laUpper; CaseCode:#$0438), // CYRILLIC CAPITAL LETTER I
(Unicode:#$0419; Attr:laUpper; CaseCode:#$0439), // CYRILLIC CAPITAL LETTER SHORT I
(Unicode:#$041A; Attr:laUpper; CaseCode:#$043A), // CYRILLIC CAPITAL LETTER KA
(Unicode:#$041B; Attr:laUpper; CaseCode:#$043B), // CYRILLIC CAPITAL LETTER EL
(Unicode:#$041C; Attr:laUpper; CaseCode:#$043C), // CYRILLIC CAPITAL LETTER EM
(Unicode:#$041D; Attr:laUpper; CaseCode:#$043D), // CYRILLIC CAPITAL LETTER EN
(Unicode:#$041E; Attr:laUpper; CaseCode:#$043E), // CYRILLIC CAPITAL LETTER O
(Unicode:#$041F; Attr:laUpper; CaseCode:#$043F), // CYRILLIC CAPITAL LETTER PE
(Unicode:#$0420; Attr:laUpper; CaseCode:#$0440), // CYRILLIC CAPITAL LETTER ER
(Unicode:#$0421; Attr:laUpper; CaseCode:#$0441), // CYRILLIC CAPITAL LETTER ES
(Unicode:#$0422; Attr:laUpper; CaseCode:#$0442), // CYRILLIC CAPITAL LETTER TE
(Unicode:#$0423; Attr:laUpper; CaseCode:#$0443), // CYRILLIC CAPITAL LETTER U
(Unicode:#$0424; Attr:laUpper; CaseCode:#$0444), // CYRILLIC CAPITAL LETTER EF
(Unicode:#$0425; Attr:laUpper; CaseCode:#$0445), // CYRILLIC CAPITAL LETTER HA
(Unicode:#$0426; Attr:laUpper; CaseCode:#$0446), // CYRILLIC CAPITAL LETTER TSE
(Unicode:#$0427; Attr:laUpper; CaseCode:#$0447), // CYRILLIC CAPITAL LETTER CHE
(Unicode:#$0428; Attr:laUpper; CaseCode:#$0448), // CYRILLIC CAPITAL LETTER SHA
(Unicode:#$0429; Attr:laUpper; CaseCode:#$0449), // CYRILLIC CAPITAL LETTER SHCHA
(Unicode:#$042A; Attr:laUpper; CaseCode:#$044A), // CYRILLIC CAPITAL LETTER HARD SIGN
(Unicode:#$042B; Attr:laUpper; CaseCode:#$044B), // CYRILLIC CAPITAL LETTER YERU
(Unicode:#$042C; Attr:laUpper; CaseCode:#$044C), // CYRILLIC CAPITAL LETTER SOFT SIGN
(Unicode:#$042D; Attr:laUpper; CaseCode:#$044D), // CYRILLIC CAPITAL LETTER E
(Unicode:#$042E; Attr:laUpper; CaseCode:#$044E), // CYRILLIC CAPITAL LETTER YU
(Unicode:#$042F; Attr:laUpper; CaseCode:#$044F), // CYRILLIC CAPITAL LETTER YA
(Unicode:#$0430; Attr:laLower; CaseCode:#$0410), // CYRILLIC SMALL LETTER A
(Unicode:#$0431; Attr:laLower; CaseCode:#$0411), // CYRILLIC SMALL LETTER BE
(Unicode:#$0432; Attr:laLower; CaseCode:#$0412), // CYRILLIC SMALL LETTER VE
(Unicode:#$0433; Attr:laLower; CaseCode:#$0413), // CYRILLIC SMALL LETTER GHE
(Unicode:#$0434; Attr:laLower; CaseCode:#$0414), // CYRILLIC SMALL LETTER DE
(Unicode:#$0435; Attr:laLower; CaseCode:#$0415), // CYRILLIC SMALL LETTER IE
(Unicode:#$0436; Attr:laLower; CaseCode:#$0416), // CYRILLIC SMALL LETTER ZHE
(Unicode:#$0437; Attr:laLower; CaseCode:#$0417), // CYRILLIC SMALL LETTER ZE
(Unicode:#$0438; Attr:laLower; CaseCode:#$0418), // CYRILLIC SMALL LETTER I
(Unicode:#$0439; Attr:laLower; CaseCode:#$0419), // CYRILLIC SMALL LETTER SHORT I
(Unicode:#$043A; Attr:laLower; CaseCode:#$041A), // CYRILLIC SMALL LETTER KA
(Unicode:#$043B; Attr:laLower; CaseCode:#$041B), // CYRILLIC SMALL LETTER EL
(Unicode:#$043C; Attr:laLower; CaseCode:#$041C), // CYRILLIC SMALL LETTER EM
(Unicode:#$043D; Attr:laLower; CaseCode:#$041D), // CYRILLIC SMALL LETTER EN
(Unicode:#$043E; Attr:laLower; CaseCode:#$041E), // CYRILLIC SMALL LETTER O
(Unicode:#$043F; Attr:laLower; CaseCode:#$041F), // CYRILLIC SMALL LETTER PE
(Unicode:#$0440; Attr:laLower; CaseCode:#$0420), // CYRILLIC SMALL LETTER ER
(Unicode:#$0441; Attr:laLower; CaseCode:#$0421), // CYRILLIC SMALL LETTER ES
(Unicode:#$0442; Attr:laLower; CaseCode:#$0422), // CYRILLIC SMALL LETTER TE
(Unicode:#$0443; Attr:laLower; CaseCode:#$0423), // CYRILLIC SMALL LETTER U
(Unicode:#$0444; Attr:laLower; CaseCode:#$0424), // CYRILLIC SMALL LETTER EF
(Unicode:#$0445; Attr:laLower; CaseCode:#$0425), // CYRILLIC SMALL LETTER HA
(Unicode:#$0446; Attr:laLower; CaseCode:#$0426), // CYRILLIC SMALL LETTER TSE
(Unicode:#$0447; Attr:laLower; CaseCode:#$0427), // CYRILLIC SMALL LETTER CHE
(Unicode:#$0448; Attr:laLower; CaseCode:#$0428), // CYRILLIC SMALL LETTER SHA
(Unicode:#$0449; Attr:laLower; CaseCode:#$0429), // CYRILLIC SMALL LETTER SHCHA
(Unicode:#$044A; Attr:laLower; CaseCode:#$042A), // CYRILLIC SMALL LETTER HARD SIGN
(Unicode:#$044B; Attr:laLower; CaseCode:#$042B), // CYRILLIC SMALL LETTER YERU
(Unicode:#$044C; Attr:laLower; CaseCode:#$042C), // CYRILLIC SMALL LETTER SOFT SIGN
(Unicode:#$044D; Attr:laLower; CaseCode:#$042D), // CYRILLIC SMALL LETTER E
(Unicode:#$044E; Attr:laLower; CaseCode:#$042E), // CYRILLIC SMALL LETTER YU
(Unicode:#$044F; Attr:laLower; CaseCode:#$042F), // CYRILLIC SMALL LETTER YA
(Unicode:#$0450; Attr:laLower; CaseCode:#$0400), // CYRILLIC SMALL LETTER IE WITH GRAVE
(Unicode:#$0451; Attr:laLower; CaseCode:#$0401), // CYRILLIC SMALL LETTER IO
(Unicode:#$0452; Attr:laLower; CaseCode:#$0402), // CYRILLIC SMALL LETTER DJE
(Unicode:#$0453; Attr:laLower; CaseCode:#$0403), // CYRILLIC SMALL LETTER GJE
(Unicode:#$0454; Attr:laLower; CaseCode:#$0404), // CYRILLIC SMALL LETTER UKRAINIAN IE
(Unicode:#$0455; Attr:laLower; CaseCode:#$0405), // CYRILLIC SMALL LETTER DZE
(Unicode:#$0456; Attr:laLower; CaseCode:#$0406), // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
(Unicode:#$0457; Attr:laLower; CaseCode:#$0407), // CYRILLIC SMALL LETTER YI
(Unicode:#$0458; Attr:laLower; CaseCode:#$0408), // CYRILLIC SMALL LETTER JE
(Unicode:#$0459; Attr:laLower; CaseCode:#$0409), // CYRILLIC SMALL LETTER LJE
(Unicode:#$045A; Attr:laLower; CaseCode:#$040A), // CYRILLIC SMALL LETTER NJE
(Unicode:#$045B; Attr:laLower; CaseCode:#$040B), // CYRILLIC SMALL LETTER TSHE
(Unicode:#$045C; Attr:laLower; CaseCode:#$040C), // CYRILLIC SMALL LETTER KJE
(Unicode:#$045D; Attr:laLower; CaseCode:#$040D), // CYRILLIC SMALL LETTER I WITH GRAVE
(Unicode:#$045E; Attr:laLower; CaseCode:#$040E), // CYRILLIC SMALL LETTER SHORT U
(Unicode:#$045F; Attr:laLower; CaseCode:#$040F), // CYRILLIC SMALL LETTER DZHE
(Unicode:#$0460; Attr:laUpper; CaseCode:#$0461), // CYRILLIC CAPITAL LETTER OMEGA
(Unicode:#$0461; Attr:laLower; CaseCode:#$0460), // CYRILLIC SMALL LETTER OMEGA
(Unicode:#$0462; Attr:laUpper; CaseCode:#$0463), // CYRILLIC CAPITAL LETTER YAT
(Unicode:#$0463; Attr:laLower; CaseCode:#$0462), // CYRILLIC SMALL LETTER YAT
(Unicode:#$0464; Attr:laUpper; CaseCode:#$0465), // CYRILLIC CAPITAL LETTER IOTIFIED E
(Unicode:#$0465; Attr:laLower; CaseCode:#$0464), // CYRILLIC SMALL LETTER IOTIFIED E
(Unicode:#$0466; Attr:laUpper; CaseCode:#$0467), // CYRILLIC CAPITAL LETTER LITTLE YUS
(Unicode:#$0467; Attr:laLower; CaseCode:#$0466), // CYRILLIC SMALL LETTER LITTLE YUS
(Unicode:#$0468; Attr:laUpper; CaseCode:#$0469), // CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
(Unicode:#$0469; Attr:laLower; CaseCode:#$0468), // CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
(Unicode:#$046A; Attr:laUpper; CaseCode:#$046B), // CYRILLIC CAPITAL LETTER BIG YUS
(Unicode:#$046B; Attr:laLower; CaseCode:#$046A), // CYRILLIC SMALL LETTER BIG YUS
(Unicode:#$046C; Attr:laUpper; CaseCode:#$046D), // CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
(Unicode:#$046D; Attr:laLower; CaseCode:#$046C), // CYRILLIC SMALL LETTER IOTIFIED BIG YUS
(Unicode:#$046E; Attr:laUpper; CaseCode:#$046F), // CYRILLIC CAPITAL LETTER KSI
(Unicode:#$046F; Attr:laLower; CaseCode:#$046E), // CYRILLIC SMALL LETTER KSI
(Unicode:#$0470; Attr:laUpper; CaseCode:#$0471), // CYRILLIC CAPITAL LETTER PSI
(Unicode:#$0471; Attr:laLower; CaseCode:#$0470), // CYRILLIC SMALL LETTER PSI
(Unicode:#$0472; Attr:laUpper; CaseCode:#$0473), // CYRILLIC CAPITAL LETTER FITA
(Unicode:#$0473; Attr:laLower; CaseCode:#$0472), // CYRILLIC SMALL LETTER FITA
(Unicode:#$0474; Attr:laUpper; CaseCode:#$0475), // CYRILLIC CAPITAL LETTER IZHITSA
(Unicode:#$0475; Attr:laLower; CaseCode:#$0474), // CYRILLIC SMALL LETTER IZHITSA
(Unicode:#$0476; Attr:laUpper; CaseCode:#$0477), // CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
(Unicode:#$0477; Attr:laLower; CaseCode:#$0476), // CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
(Unicode:#$0478; Attr:laUpper; CaseCode:#$0479), // CYRILLIC CAPITAL LETTER UK
(Unicode:#$0479; Attr:laLower; CaseCode:#$0478), // CYRILLIC SMALL LETTER UK
(Unicode:#$047A; Attr:laUpper; CaseCode:#$047B), // CYRILLIC CAPITAL LETTER ROUND OMEGA
(Unicode:#$047B; Attr:laLower; CaseCode:#$047A), // CYRILLIC SMALL LETTER ROUND OMEGA
(Unicode:#$047C; Attr:laUpper; CaseCode:#$047D), // CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
(Unicode:#$047D; Attr:laLower; CaseCode:#$047C), // CYRILLIC SMALL LETTER OMEGA WITH TITLO
(Unicode:#$047E; Attr:laUpper; CaseCode:#$047F), // CYRILLIC CAPITAL LETTER OT
(Unicode:#$047F; Attr:laLower; CaseCode:#$047E), // CYRILLIC SMALL LETTER OT
(Unicode:#$0480; Attr:laUpper; CaseCode:#$0481), // CYRILLIC CAPITAL LETTER KOPPA
(Unicode:#$0481; Attr:laLower; CaseCode:#$0480), // CYRILLIC SMALL LETTER KOPPA
(Unicode:#$048C; Attr:laUpper; CaseCode:#$048D), // CYRILLIC CAPITAL LETTER SEMISOFT SIGN
(Unicode:#$048D; Attr:laLower; CaseCode:#$048C), // CYRILLIC SMALL LETTER SEMISOFT SIGN
(Unicode:#$048E; Attr:laUpper; CaseCode:#$048F), // CYRILLIC CAPITAL LETTER ER WITH TICK
(Unicode:#$048F; Attr:laLower; CaseCode:#$048E), // CYRILLIC SMALL LETTER ER WITH TICK
(Unicode:#$0490; Attr:laUpper; CaseCode:#$0491), // CYRILLIC CAPITAL LETTER GHE WITH UPTURN
(Unicode:#$0491; Attr:laLower; CaseCode:#$0490), // CYRILLIC SMALL LETTER GHE WITH UPTURN
(Unicode:#$0492; Attr:laUpper; CaseCode:#$0493), // CYRILLIC CAPITAL LETTER GHE WITH STROKE
(Unicode:#$0493; Attr:laLower; CaseCode:#$0492), // CYRILLIC SMALL LETTER GHE WITH STROKE
(Unicode:#$0494; Attr:laUpper; CaseCode:#$0495), // CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
(Unicode:#$0495; Attr:laLower; CaseCode:#$0494), // CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
(Unicode:#$0496; Attr:laUpper; CaseCode:#$0497), // CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
(Unicode:#$0497; Attr:laLower; CaseCode:#$0496), // CYRILLIC SMALL LETTER ZHE WITH DESCENDER
(Unicode:#$0498; Attr:laUpper; CaseCode:#$0499), // CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
(Unicode:#$0499; Attr:laLower; CaseCode:#$0498), // CYRILLIC SMALL LETTER ZE WITH DESCENDER
(Unicode:#$049A; Attr:laUpper; CaseCode:#$049B), // CYRILLIC CAPITAL LETTER KA WITH DESCENDER
(Unicode:#$049B; Attr:laLower; CaseCode:#$049A), // CYRILLIC SMALL LETTER KA WITH DESCENDER
(Unicode:#$049C; Attr:laUpper; CaseCode:#$049D), // CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
(Unicode:#$049D; Attr:laLower; CaseCode:#$049C), // CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
(Unicode:#$049E; Attr:laUpper; CaseCode:#$049F), // CYRILLIC CAPITAL LETTER KA WITH STROKE
(Unicode:#$049F; Attr:laLower; CaseCode:#$049E), // CYRILLIC SMALL LETTER KA WITH STROKE
(Unicode:#$04A0; Attr:laUpper; CaseCode:#$04A1), // CYRILLIC CAPITAL LETTER BASHKIR KA
(Unicode:#$04A1; Attr:laLower; CaseCode:#$04A0), // CYRILLIC SMALL LETTER BASHKIR KA
(Unicode:#$04A2; Attr:laUpper; CaseCode:#$04A3), // CYRILLIC CAPITAL LETTER EN WITH DESCENDER
(Unicode:#$04A3; Attr:laLower; CaseCode:#$04A2), // CYRILLIC SMALL LETTER EN WITH DESCENDER
(Unicode:#$04A4; Attr:laUpper; CaseCode:#$04A5), // CYRILLIC CAPITAL LIGATURE EN GHE
(Unicode:#$04A5; Attr:laLower; CaseCode:#$04A4), // CYRILLIC SMALL LIGATURE EN GHE
(Unicode:#$04A6; Attr:laUpper; CaseCode:#$04A7), // CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
(Unicode:#$04A7; Attr:laLower; CaseCode:#$04A6), // CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
(Unicode:#$04A8; Attr:laUpper; CaseCode:#$04A9), // CYRILLIC CAPITAL LETTER ABKHASIAN HA
(Unicode:#$04A9; Attr:laLower; CaseCode:#$04A8), // CYRILLIC SMALL LETTER ABKHASIAN HA
(Unicode:#$04AA; Attr:laUpper; CaseCode:#$04AB), // CYRILLIC CAPITAL LETTER ES WITH DESCENDER
(Unicode:#$04AB; Attr:laLower; CaseCode:#$04AA), // CYRILLIC SMALL LETTER ES WITH DESCENDER
(Unicode:#$04AC; Attr:laUpper; CaseCode:#$04AD), // CYRILLIC CAPITAL LETTER TE WITH DESCENDER
(Unicode:#$04AD; Attr:laLower; CaseCode:#$04AC), // CYRILLIC SMALL LETTER TE WITH DESCENDER
(Unicode:#$04AE; Attr:laUpper; CaseCode:#$04AF), // CYRILLIC CAPITAL LETTER STRAIGHT U
(Unicode:#$04AF; Attr:laLower; CaseCode:#$04AE), // CYRILLIC SMALL LETTER STRAIGHT U
(Unicode:#$04B0; Attr:laUpper; CaseCode:#$04B1), // CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
(Unicode:#$04B1; Attr:laLower; CaseCode:#$04B0), // CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
(Unicode:#$04B2; Attr:laUpper; CaseCode:#$04B3), // CYRILLIC CAPITAL LETTER HA WITH DESCENDER
(Unicode:#$04B3; Attr:laLower; CaseCode:#$04B2), // CYRILLIC SMALL LETTER HA WITH DESCENDER
(Unicode:#$04B4; Attr:laUpper; CaseCode:#$04B5), // CYRILLIC CAPITAL LIGATURE TE TSE
(Unicode:#$04B5; Attr:laLower; CaseCode:#$04B4), // CYRILLIC SMALL LIGATURE TE TSE
(Unicode:#$04B6; Attr:laUpper; CaseCode:#$04B7), // CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
(Unicode:#$04B7; Attr:laLower; CaseCode:#$04B6), // CYRILLIC SMALL LETTER CHE WITH DESCENDER
(Unicode:#$04B8; Attr:laUpper; CaseCode:#$04B9), // CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
(Unicode:#$04B9; Attr:laLower; CaseCode:#$04B8), // CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
(Unicode:#$04BA; Attr:laUpper; CaseCode:#$04BB), // CYRILLIC CAPITAL LETTER SHHA
(Unicode:#$04BB; Attr:laLower; CaseCode:#$04BA), // CYRILLIC SMALL LETTER SHHA
(Unicode:#$04BC; Attr:laUpper; CaseCode:#$04BD), // CYRILLIC CAPITAL LETTER ABKHASIAN CHE
(Unicode:#$04BD; Attr:laLower; CaseCode:#$04BC), // CYRILLIC SMALL LETTER ABKHASIAN CHE
(Unicode:#$04BE; Attr:laUpper; CaseCode:#$04BF), // CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
(Unicode:#$04BF; Attr:laLower; CaseCode:#$04BE), // CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
(Unicode:#$04C0; Attr:laUpper; CaseCode:#$FFFF), // CYRILLIC LETTER PALOCHKA
(Unicode:#$04C1; Attr:laUpper; CaseCode:#$04C2), // CYRILLIC CAPITAL LETTER ZHE WITH BREVE
(Unicode:#$04C2; Attr:laLower; CaseCode:#$04C1), // CYRILLIC SMALL LETTER ZHE WITH BREVE
(Unicode:#$04C3; Attr:laUpper; CaseCode:#$04C4), // CYRILLIC CAPITAL LETTER KA WITH HOOK
(Unicode:#$04C4; Attr:laLower; CaseCode:#$04C3), // CYRILLIC SMALL LETTER KA WITH HOOK
(Unicode:#$04C7; Attr:laUpper; CaseCode:#$04C8), // CYRILLIC CAPITAL LETTER EN WITH HOOK
(Unicode:#$04C8; Attr:laLower; CaseCode:#$04C7), // CYRILLIC SMALL LETTER EN WITH HOOK
(Unicode:#$04CB; Attr:laUpper; CaseCode:#$04CC), // CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
(Unicode:#$04CC; Attr:laLower; CaseCode:#$04CB), // CYRILLIC SMALL LETTER KHAKASSIAN CHE
(Unicode:#$04D0; Attr:laUpper; CaseCode:#$04D1), // CYRILLIC CAPITAL LETTER A WITH BREVE
(Unicode:#$04D1; Attr:laLower; CaseCode:#$04D0), // CYRILLIC SMALL LETTER A WITH BREVE
(Unicode:#$04D2; Attr:laUpper; CaseCode:#$04D3), // CYRILLIC CAPITAL LETTER A WITH DIAERESIS
(Unicode:#$04D3; Attr:laLower; CaseCode:#$04D2), // CYRILLIC SMALL LETTER A WITH DIAERESIS
(Unicode:#$04D4; Attr:laUpper; CaseCode:#$04D5), // CYRILLIC CAPITAL LIGATURE A IE
(Unicode:#$04D5; Attr:laLower; CaseCode:#$04D4), // CYRILLIC SMALL LIGATURE A IE
(Unicode:#$04D6; Attr:laUpper; CaseCode:#$04D7), // CYRILLIC CAPITAL LETTER IE WITH BREVE
(Unicode:#$04D7; Attr:laLower; CaseCode:#$04D6), // CYRILLIC SMALL LETTER IE WITH BREVE
(Unicode:#$04D8; Attr:laUpper; CaseCode:#$04D9), // CYRILLIC CAPITAL LETTER SCHWA
(Unicode:#$04D9; Attr:laLower; CaseCode:#$04D8), // CYRILLIC SMALL LETTER SCHWA
(Unicode:#$04DA; Attr:laUpper; CaseCode:#$04DB), // CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
(Unicode:#$04DB; Attr:laLower; CaseCode:#$04DA), // CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
(Unicode:#$04DC; Attr:laUpper; CaseCode:#$04DD), // CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
(Unicode:#$04DD; Attr:laLower; CaseCode:#$04DC), // CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
(Unicode:#$04DE; Attr:laUpper; CaseCode:#$04DF), // CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
(Unicode:#$04DF; Attr:laLower; CaseCode:#$04DE), // CYRILLIC SMALL LETTER ZE WITH DIAERESIS
(Unicode:#$04E0; Attr:laUpper; CaseCode:#$04E1), // CYRILLIC CAPITAL LETTER ABKHASIAN DZE
(Unicode:#$04E1; Attr:laLower; CaseCode:#$04E0), // CYRILLIC SMALL LETTER ABKHASIAN DZE
(Unicode:#$04E2; Attr:laUpper; CaseCode:#$04E3), // CYRILLIC CAPITAL LETTER I WITH MACRON
(Unicode:#$04E3; Attr:laLower; CaseCode:#$04E2), // CYRILLIC SMALL LETTER I WITH MACRON
(Unicode:#$04E4; Attr:laUpper; CaseCode:#$04E5), // CYRILLIC CAPITAL LETTER I WITH DIAERESIS
(Unicode:#$04E5; Attr:laLower; CaseCode:#$04E4), // CYRILLIC SMALL LETTER I WITH DIAERESIS
(Unicode:#$04E6; Attr:laUpper; CaseCode:#$04E7), // CYRILLIC CAPITAL LETTER O WITH DIAERESIS
(Unicode:#$04E7; Attr:laLower; CaseCode:#$04E6), // CYRILLIC SMALL LETTER O WITH DIAERESIS
(Unicode:#$04E8; Attr:laUpper; CaseCode:#$04E9), // CYRILLIC CAPITAL LETTER BARRED O
(Unicode:#$04E9; Attr:laLower; CaseCode:#$04E8), // CYRILLIC SMALL LETTER BARRED O
(Unicode:#$04EA; Attr:laUpper; CaseCode:#$04EB), // CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
(Unicode:#$04EB; Attr:laLower; CaseCode:#$04EA), // CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
(Unicode:#$04EC; Attr:laUpper; CaseCode:#$04ED), // CYRILLIC CAPITAL LETTER E WITH DIAERESIS
(Unicode:#$04ED; Attr:laLower; CaseCode:#$04EC), // CYRILLIC SMALL LETTER E WITH DIAERESIS
(Unicode:#$04EE; Attr:laUpper; CaseCode:#$04EF), // CYRILLIC CAPITAL LETTER U WITH MACRON
(Unicode:#$04EF; Attr:laLower; CaseCode:#$04EE), // CYRILLIC SMALL LETTER U WITH MACRON
(Unicode:#$04F0; Attr:laUpper; CaseCode:#$04F1), // CYRILLIC CAPITAL LETTER U WITH DIAERESIS
(Unicode:#$04F1; Attr:laLower; CaseCode:#$04F0), // CYRILLIC SMALL LETTER U WITH DIAERESIS
(Unicode:#$04F2; Attr:laUpper; CaseCode:#$04F3), // CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
(Unicode:#$04F3; Attr:laLower; CaseCode:#$04F2), // CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
(Unicode:#$04F4; Attr:laUpper; CaseCode:#$04F5), // CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
(Unicode:#$04F5; Attr:laLower; CaseCode:#$04F4), // CYRILLIC SMALL LETTER CHE WITH DIAERESIS
(Unicode:#$04F8; Attr:laUpper; CaseCode:#$04F9), // CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
(Unicode:#$04F9; Attr:laLower; CaseCode:#$04F8), // CYRILLIC SMALL LETTER YERU WITH DIAERESIS
(Unicode:#$0531; Attr:laUpper; CaseCode:#$0561), // ARMENIAN CAPITAL LETTER AYB
(Unicode:#$0532; Attr:laUpper; CaseCode:#$0562), // ARMENIAN CAPITAL LETTER BEN
(Unicode:#$0533; Attr:laUpper; CaseCode:#$0563), // ARMENIAN CAPITAL LETTER GIM
(Unicode:#$0534; Attr:laUpper; CaseCode:#$0564), // ARMENIAN CAPITAL LETTER DA
(Unicode:#$0535; Attr:laUpper; CaseCode:#$0565), // ARMENIAN CAPITAL LETTER ECH
(Unicode:#$0536; Attr:laUpper; CaseCode:#$0566), // ARMENIAN CAPITAL LETTER ZA
(Unicode:#$0537; Attr:laUpper; CaseCode:#$0567), // ARMENIAN CAPITAL LETTER EH
(Unicode:#$0538; Attr:laUpper; CaseCode:#$0568), // ARMENIAN CAPITAL LETTER ET
(Unicode:#$0539; Attr:laUpper; CaseCode:#$0569), // ARMENIAN CAPITAL LETTER TO
(Unicode:#$053A; Attr:laUpper; CaseCode:#$056A), // ARMENIAN CAPITAL LETTER ZHE
(Unicode:#$053B; Attr:laUpper; CaseCode:#$056B), // ARMENIAN CAPITAL LETTER INI
(Unicode:#$053C; Attr:laUpper; CaseCode:#$056C), // ARMENIAN CAPITAL LETTER LIWN
(Unicode:#$053D; Attr:laUpper; CaseCode:#$056D), // ARMENIAN CAPITAL LETTER XEH
(Unicode:#$053E; Attr:laUpper; CaseCode:#$056E), // ARMENIAN CAPITAL LETTER CA
(Unicode:#$053F; Attr:laUpper; CaseCode:#$056F), // ARMENIAN CAPITAL LETTER KEN
(Unicode:#$0540; Attr:laUpper; CaseCode:#$0570), // ARMENIAN CAPITAL LETTER HO
(Unicode:#$0541; Attr:laUpper; CaseCode:#$0571), // ARMENIAN CAPITAL LETTER JA
(Unicode:#$0542; Attr:laUpper; CaseCode:#$0572), // ARMENIAN CAPITAL LETTER GHAD
(Unicode:#$0543; Attr:laUpper; CaseCode:#$0573), // ARMENIAN CAPITAL LETTER CHEH
(Unicode:#$0544; Attr:laUpper; CaseCode:#$0574), // ARMENIAN CAPITAL LETTER MEN
(Unicode:#$0545; Attr:laUpper; CaseCode:#$0575), // ARMENIAN CAPITAL LETTER YI
(Unicode:#$0546; Attr:laUpper; CaseCode:#$0576), // ARMENIAN CAPITAL LETTER NOW
(Unicode:#$0547; Attr:laUpper; CaseCode:#$0577), // ARMENIAN CAPITAL LETTER SHA
(Unicode:#$0548; Attr:laUpper; CaseCode:#$0578), // ARMENIAN CAPITAL LETTER VO
(Unicode:#$0549; Attr:laUpper; CaseCode:#$0579), // ARMENIAN CAPITAL LETTER CHA
(Unicode:#$054A; Attr:laUpper; CaseCode:#$057A), // ARMENIAN CAPITAL LETTER PEH
(Unicode:#$054B; Attr:laUpper; CaseCode:#$057B), // ARMENIAN CAPITAL LETTER JHEH
(Unicode:#$054C; Attr:laUpper; CaseCode:#$057C), // ARMENIAN CAPITAL LETTER RA
(Unicode:#$054D; Attr:laUpper; CaseCode:#$057D), // ARMENIAN CAPITAL LETTER SEH
(Unicode:#$054E; Attr:laUpper; CaseCode:#$057E), // ARMENIAN CAPITAL LETTER VEW
(Unicode:#$054F; Attr:laUpper; CaseCode:#$057F), // ARMENIAN CAPITAL LETTER TIWN
(Unicode:#$0550; Attr:laUpper; CaseCode:#$0580), // ARMENIAN CAPITAL LETTER REH
(Unicode:#$0551; Attr:laUpper; CaseCode:#$0581), // ARMENIAN CAPITAL LETTER CO
(Unicode:#$0552; Attr:laUpper; CaseCode:#$0582), // ARMENIAN CAPITAL LETTER YIWN
(Unicode:#$0553; Attr:laUpper; CaseCode:#$0583), // ARMENIAN CAPITAL LETTER PIWR
(Unicode:#$0554; Attr:laUpper; CaseCode:#$0584), // ARMENIAN CAPITAL LETTER KEH
(Unicode:#$0555; Attr:laUpper; CaseCode:#$0585), // ARMENIAN CAPITAL LETTER OH
(Unicode:#$0556; Attr:laUpper; CaseCode:#$0586), // ARMENIAN CAPITAL LETTER FEH
(Unicode:#$0561; Attr:laLower; CaseCode:#$0531), // ARMENIAN SMALL LETTER AYB
(Unicode:#$0562; Attr:laLower; CaseCode:#$0532), // ARMENIAN SMALL LETTER BEN
(Unicode:#$0563; Attr:laLower; CaseCode:#$0533), // ARMENIAN SMALL LETTER GIM
(Unicode:#$0564; Attr:laLower; CaseCode:#$0534), // ARMENIAN SMALL LETTER DA
(Unicode:#$0565; Attr:laLower; CaseCode:#$0535), // ARMENIAN SMALL LETTER ECH
(Unicode:#$0566; Attr:laLower; CaseCode:#$0536), // ARMENIAN SMALL LETTER ZA
(Unicode:#$0567; Attr:laLower; CaseCode:#$0537), // ARMENIAN SMALL LETTER EH
(Unicode:#$0568; Attr:laLower; CaseCode:#$0538), // ARMENIAN SMALL LETTER ET
(Unicode:#$0569; Attr:laLower; CaseCode:#$0539), // ARMENIAN SMALL LETTER TO
(Unicode:#$056A; Attr:laLower; CaseCode:#$053A), // ARMENIAN SMALL LETTER ZHE
(Unicode:#$056B; Attr:laLower; CaseCode:#$053B), // ARMENIAN SMALL LETTER INI
(Unicode:#$056C; Attr:laLower; CaseCode:#$053C), // ARMENIAN SMALL LETTER LIWN
(Unicode:#$056D; Attr:laLower; CaseCode:#$053D), // ARMENIAN SMALL LETTER XEH
(Unicode:#$056E; Attr:laLower; CaseCode:#$053E), // ARMENIAN SMALL LETTER CA
(Unicode:#$056F; Attr:laLower; CaseCode:#$053F), // ARMENIAN SMALL LETTER KEN
(Unicode:#$0570; Attr:laLower; CaseCode:#$0540), // ARMENIAN SMALL LETTER HO
(Unicode:#$0571; Attr:laLower; CaseCode:#$0541), // ARMENIAN SMALL LETTER JA
(Unicode:#$0572; Attr:laLower; CaseCode:#$0542), // ARMENIAN SMALL LETTER GHAD
(Unicode:#$0573; Attr:laLower; CaseCode:#$0543), // ARMENIAN SMALL LETTER CHEH
(Unicode:#$0574; Attr:laLower; CaseCode:#$0544), // ARMENIAN SMALL LETTER MEN
(Unicode:#$0575; Attr:laLower; CaseCode:#$0545), // ARMENIAN SMALL LETTER YI
(Unicode:#$0576; Attr:laLower; CaseCode:#$0546), // ARMENIAN SMALL LETTER NOW
(Unicode:#$0577; Attr:laLower; CaseCode:#$0547), // ARMENIAN SMALL LETTER SHA
(Unicode:#$0578; Attr:laLower; CaseCode:#$0548), // ARMENIAN SMALL LETTER VO
(Unicode:#$0579; Attr:laLower; CaseCode:#$0549), // ARMENIAN SMALL LETTER CHA
(Unicode:#$057A; Attr:laLower; CaseCode:#$054A), // ARMENIAN SMALL LETTER PEH
(Unicode:#$057B; Attr:laLower; CaseCode:#$054B), // ARMENIAN SMALL LETTER JHEH
(Unicode:#$057C; Attr:laLower; CaseCode:#$054C), // ARMENIAN SMALL LETTER RA
(Unicode:#$057D; Attr:laLower; CaseCode:#$054D), // ARMENIAN SMALL LETTER SEH
(Unicode:#$057E; Attr:laLower; CaseCode:#$054E), // ARMENIAN SMALL LETTER VEW
(Unicode:#$057F; Attr:laLower; CaseCode:#$054F), // ARMENIAN SMALL LETTER TIWN
(Unicode:#$0580; Attr:laLower; CaseCode:#$0550), // ARMENIAN SMALL LETTER REH
(Unicode:#$0581; Attr:laLower; CaseCode:#$0551), // ARMENIAN SMALL LETTER CO
(Unicode:#$0582; Attr:laLower; CaseCode:#$0552), // ARMENIAN SMALL LETTER YIWN
(Unicode:#$0583; Attr:laLower; CaseCode:#$0553), // ARMENIAN SMALL LETTER PIWR
(Unicode:#$0584; Attr:laLower; CaseCode:#$0554), // ARMENIAN SMALL LETTER KEH
(Unicode:#$0585; Attr:laLower; CaseCode:#$0555), // ARMENIAN SMALL LETTER OH
(Unicode:#$0586; Attr:laLower; CaseCode:#$0556), // ARMENIAN SMALL LETTER FEH
(Unicode:#$0587; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE ECH YIWN
(Unicode:#$10A0; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER AN
(Unicode:#$10A1; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER BAN
(Unicode:#$10A2; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER GAN
(Unicode:#$10A3; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER DON
(Unicode:#$10A4; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER EN
(Unicode:#$10A5; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER VIN
(Unicode:#$10A6; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER ZEN
(Unicode:#$10A7; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER TAN
(Unicode:#$10A8; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER IN
(Unicode:#$10A9; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER KAN
(Unicode:#$10AA; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER LAS
(Unicode:#$10AB; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER MAN
(Unicode:#$10AC; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER NAR
(Unicode:#$10AD; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER ON
(Unicode:#$10AE; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER PAR
(Unicode:#$10AF; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER ZHAR
(Unicode:#$10B0; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER RAE
(Unicode:#$10B1; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER SAN
(Unicode:#$10B2; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER TAR
(Unicode:#$10B3; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER UN
(Unicode:#$10B4; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER PHAR
(Unicode:#$10B5; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER KHAR
(Unicode:#$10B6; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER GHAN
(Unicode:#$10B7; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER QAR
(Unicode:#$10B8; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER SHIN
(Unicode:#$10B9; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER CHIN
(Unicode:#$10BA; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER CAN
(Unicode:#$10BB; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER JIL
(Unicode:#$10BC; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER CIL
(Unicode:#$10BD; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER CHAR
(Unicode:#$10BE; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER XAN
(Unicode:#$10BF; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER JHAN
(Unicode:#$10C0; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER HAE
(Unicode:#$10C1; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER HE
(Unicode:#$10C2; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER HIE
(Unicode:#$10C3; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER WE
(Unicode:#$10C4; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER HAR
(Unicode:#$10C5; Attr:laUpper; CaseCode:#$FFFF), // GEORGIAN CAPITAL LETTER HOE
(Unicode:#$1E00; Attr:laUpper; CaseCode:#$1E01), // LATIN CAPITAL LETTER A WITH RING BELOW
(Unicode:#$1E01; Attr:laLower; CaseCode:#$1E00), // LATIN SMALL LETTER A WITH RING BELOW
(Unicode:#$1E02; Attr:laUpper; CaseCode:#$1E03), // LATIN CAPITAL LETTER B WITH DOT ABOVE
(Unicode:#$1E03; Attr:laLower; CaseCode:#$1E02), // LATIN SMALL LETTER B WITH DOT ABOVE
(Unicode:#$1E04; Attr:laUpper; CaseCode:#$1E05), // LATIN CAPITAL LETTER B WITH DOT BELOW
(Unicode:#$1E05; Attr:laLower; CaseCode:#$1E04), // LATIN SMALL LETTER B WITH DOT BELOW
(Unicode:#$1E06; Attr:laUpper; CaseCode:#$1E07), // LATIN CAPITAL LETTER B WITH LINE BELOW
(Unicode:#$1E07; Attr:laLower; CaseCode:#$1E06), // LATIN SMALL LETTER B WITH LINE BELOW
(Unicode:#$1E08; Attr:laUpper; CaseCode:#$1E09), // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
(Unicode:#$1E09; Attr:laLower; CaseCode:#$1E08), // LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
(Unicode:#$1E0A; Attr:laUpper; CaseCode:#$1E0B), // LATIN CAPITAL LETTER D WITH DOT ABOVE
(Unicode:#$1E0B; Attr:laLower; CaseCode:#$1E0A), // LATIN SMALL LETTER D WITH DOT ABOVE
(Unicode:#$1E0C; Attr:laUpper; CaseCode:#$1E0D), // LATIN CAPITAL LETTER D WITH DOT BELOW
(Unicode:#$1E0D; Attr:laLower; CaseCode:#$1E0C), // LATIN SMALL LETTER D WITH DOT BELOW
(Unicode:#$1E0E; Attr:laUpper; CaseCode:#$1E0F), // LATIN CAPITAL LETTER D WITH LINE BELOW
(Unicode:#$1E0F; Attr:laLower; CaseCode:#$1E0E), // LATIN SMALL LETTER D WITH LINE BELOW
(Unicode:#$1E10; Attr:laUpper; CaseCode:#$1E11), // LATIN CAPITAL LETTER D WITH CEDILLA
(Unicode:#$1E11; Attr:laLower; CaseCode:#$1E10), // LATIN SMALL LETTER D WITH CEDILLA
(Unicode:#$1E12; Attr:laUpper; CaseCode:#$1E13), // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
(Unicode:#$1E13; Attr:laLower; CaseCode:#$1E12), // LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
(Unicode:#$1E14; Attr:laUpper; CaseCode:#$1E15), // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
(Unicode:#$1E15; Attr:laLower; CaseCode:#$1E14), // LATIN SMALL LETTER E WITH MACRON AND GRAVE
(Unicode:#$1E16; Attr:laUpper; CaseCode:#$1E17), // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
(Unicode:#$1E17; Attr:laLower; CaseCode:#$1E16), // LATIN SMALL LETTER E WITH MACRON AND ACUTE
(Unicode:#$1E18; Attr:laUpper; CaseCode:#$1E19), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
(Unicode:#$1E19; Attr:laLower; CaseCode:#$1E18), // LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
(Unicode:#$1E1A; Attr:laUpper; CaseCode:#$1E1B), // LATIN CAPITAL LETTER E WITH TILDE BELOW
(Unicode:#$1E1B; Attr:laLower; CaseCode:#$1E1A), // LATIN SMALL LETTER E WITH TILDE BELOW
(Unicode:#$1E1C; Attr:laUpper; CaseCode:#$1E1D), // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
(Unicode:#$1E1D; Attr:laLower; CaseCode:#$1E1C), // LATIN SMALL LETTER E WITH CEDILLA AND BREVE
(Unicode:#$1E1E; Attr:laUpper; CaseCode:#$1E1F), // LATIN CAPITAL LETTER F WITH DOT ABOVE
(Unicode:#$1E1F; Attr:laLower; CaseCode:#$1E1E), // LATIN SMALL LETTER F WITH DOT ABOVE
(Unicode:#$1E20; Attr:laUpper; CaseCode:#$1E21), // LATIN CAPITAL LETTER G WITH MACRON
(Unicode:#$1E21; Attr:laLower; CaseCode:#$1E20), // LATIN SMALL LETTER G WITH MACRON
(Unicode:#$1E22; Attr:laUpper; CaseCode:#$1E23), // LATIN CAPITAL LETTER H WITH DOT ABOVE
(Unicode:#$1E23; Attr:laLower; CaseCode:#$1E22), // LATIN SMALL LETTER H WITH DOT ABOVE
(Unicode:#$1E24; Attr:laUpper; CaseCode:#$1E25), // LATIN CAPITAL LETTER H WITH DOT BELOW
(Unicode:#$1E25; Attr:laLower; CaseCode:#$1E24), // LATIN SMALL LETTER H WITH DOT BELOW
(Unicode:#$1E26; Attr:laUpper; CaseCode:#$1E27), // LATIN CAPITAL LETTER H WITH DIAERESIS
(Unicode:#$1E27; Attr:laLower; CaseCode:#$1E26), // LATIN SMALL LETTER H WITH DIAERESIS
(Unicode:#$1E28; Attr:laUpper; CaseCode:#$1E29), // LATIN CAPITAL LETTER H WITH CEDILLA
(Unicode:#$1E29; Attr:laLower; CaseCode:#$1E28), // LATIN SMALL LETTER H WITH CEDILLA
(Unicode:#$1E2A; Attr:laUpper; CaseCode:#$1E2B), // LATIN CAPITAL LETTER H WITH BREVE BELOW
(Unicode:#$1E2B; Attr:laLower; CaseCode:#$1E2A), // LATIN SMALL LETTER H WITH BREVE BELOW
(Unicode:#$1E2C; Attr:laUpper; CaseCode:#$1E2D), // LATIN CAPITAL LETTER I WITH TILDE BELOW
(Unicode:#$1E2D; Attr:laLower; CaseCode:#$1E2C), // LATIN SMALL LETTER I WITH TILDE BELOW
(Unicode:#$1E2E; Attr:laUpper; CaseCode:#$1E2F), // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
(Unicode:#$1E2F; Attr:laLower; CaseCode:#$1E2E), // LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
(Unicode:#$1E30; Attr:laUpper; CaseCode:#$1E31), // LATIN CAPITAL LETTER K WITH ACUTE
(Unicode:#$1E31; Attr:laLower; CaseCode:#$1E30), // LATIN SMALL LETTER K WITH ACUTE
(Unicode:#$1E32; Attr:laUpper; CaseCode:#$1E33), // LATIN CAPITAL LETTER K WITH DOT BELOW
(Unicode:#$1E33; Attr:laLower; CaseCode:#$1E32), // LATIN SMALL LETTER K WITH DOT BELOW
(Unicode:#$1E34; Attr:laUpper; CaseCode:#$1E35), // LATIN CAPITAL LETTER K WITH LINE BELOW
(Unicode:#$1E35; Attr:laLower; CaseCode:#$1E34), // LATIN SMALL LETTER K WITH LINE BELOW
(Unicode:#$1E36; Attr:laUpper; CaseCode:#$1E37), // LATIN CAPITAL LETTER L WITH DOT BELOW
(Unicode:#$1E37; Attr:laLower; CaseCode:#$1E36), // LATIN SMALL LETTER L WITH DOT BELOW
(Unicode:#$1E38; Attr:laUpper; CaseCode:#$1E39), // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
(Unicode:#$1E39; Attr:laLower; CaseCode:#$1E38), // LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
(Unicode:#$1E3A; Attr:laUpper; CaseCode:#$1E3B), // LATIN CAPITAL LETTER L WITH LINE BELOW
(Unicode:#$1E3B; Attr:laLower; CaseCode:#$1E3A), // LATIN SMALL LETTER L WITH LINE BELOW
(Unicode:#$1E3C; Attr:laUpper; CaseCode:#$1E3D), // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
(Unicode:#$1E3D; Attr:laLower; CaseCode:#$1E3C), // LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
(Unicode:#$1E3E; Attr:laUpper; CaseCode:#$1E3F), // LATIN CAPITAL LETTER M WITH ACUTE
(Unicode:#$1E3F; Attr:laLower; CaseCode:#$1E3E), // LATIN SMALL LETTER M WITH ACUTE
(Unicode:#$1E40; Attr:laUpper; CaseCode:#$1E41), // LATIN CAPITAL LETTER M WITH DOT ABOVE
(Unicode:#$1E41; Attr:laLower; CaseCode:#$1E40), // LATIN SMALL LETTER M WITH DOT ABOVE
(Unicode:#$1E42; Attr:laUpper; CaseCode:#$1E43), // LATIN CAPITAL LETTER M WITH DOT BELOW
(Unicode:#$1E43; Attr:laLower; CaseCode:#$1E42), // LATIN SMALL LETTER M WITH DOT BELOW
(Unicode:#$1E44; Attr:laUpper; CaseCode:#$1E45), // LATIN CAPITAL LETTER N WITH DOT ABOVE
(Unicode:#$1E45; Attr:laLower; CaseCode:#$1E44), // LATIN SMALL LETTER N WITH DOT ABOVE
(Unicode:#$1E46; Attr:laUpper; CaseCode:#$1E47), // LATIN CAPITAL LETTER N WITH DOT BELOW
(Unicode:#$1E47; Attr:laLower; CaseCode:#$1E46), // LATIN SMALL LETTER N WITH DOT BELOW
(Unicode:#$1E48; Attr:laUpper; CaseCode:#$1E49), // LATIN CAPITAL LETTER N WITH LINE BELOW
(Unicode:#$1E49; Attr:laLower; CaseCode:#$1E48), // LATIN SMALL LETTER N WITH LINE BELOW
(Unicode:#$1E4A; Attr:laUpper; CaseCode:#$1E4B), // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
(Unicode:#$1E4B; Attr:laLower; CaseCode:#$1E4A), // LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
(Unicode:#$1E4C; Attr:laUpper; CaseCode:#$1E4D), // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
(Unicode:#$1E4D; Attr:laLower; CaseCode:#$1E4C), // LATIN SMALL LETTER O WITH TILDE AND ACUTE
(Unicode:#$1E4E; Attr:laUpper; CaseCode:#$1E4F), // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
(Unicode:#$1E4F; Attr:laLower; CaseCode:#$1E4E), // LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
(Unicode:#$1E50; Attr:laUpper; CaseCode:#$1E51), // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
(Unicode:#$1E51; Attr:laLower; CaseCode:#$1E50), // LATIN SMALL LETTER O WITH MACRON AND GRAVE
(Unicode:#$1E52; Attr:laUpper; CaseCode:#$1E53), // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
(Unicode:#$1E53; Attr:laLower; CaseCode:#$1E52), // LATIN SMALL LETTER O WITH MACRON AND ACUTE
(Unicode:#$1E54; Attr:laUpper; CaseCode:#$1E55), // LATIN CAPITAL LETTER P WITH ACUTE
(Unicode:#$1E55; Attr:laLower; CaseCode:#$1E54), // LATIN SMALL LETTER P WITH ACUTE
(Unicode:#$1E56; Attr:laUpper; CaseCode:#$1E57), // LATIN CAPITAL LETTER P WITH DOT ABOVE
(Unicode:#$1E57; Attr:laLower; CaseCode:#$1E56), // LATIN SMALL LETTER P WITH DOT ABOVE
(Unicode:#$1E58; Attr:laUpper; CaseCode:#$1E59), // LATIN CAPITAL LETTER R WITH DOT ABOVE
(Unicode:#$1E59; Attr:laLower; CaseCode:#$1E58), // LATIN SMALL LETTER R WITH DOT ABOVE
(Unicode:#$1E5A; Attr:laUpper; CaseCode:#$1E5B), // LATIN CAPITAL LETTER R WITH DOT BELOW
(Unicode:#$1E5B; Attr:laLower; CaseCode:#$1E5A), // LATIN SMALL LETTER R WITH DOT BELOW
(Unicode:#$1E5C; Attr:laUpper; CaseCode:#$1E5D), // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
(Unicode:#$1E5D; Attr:laLower; CaseCode:#$1E5C), // LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
(Unicode:#$1E5E; Attr:laUpper; CaseCode:#$1E5F), // LATIN CAPITAL LETTER R WITH LINE BELOW
(Unicode:#$1E5F; Attr:laLower; CaseCode:#$1E5E), // LATIN SMALL LETTER R WITH LINE BELOW
(Unicode:#$1E60; Attr:laUpper; CaseCode:#$1E61), // LATIN CAPITAL LETTER S WITH DOT ABOVE
(Unicode:#$1E61; Attr:laLower; CaseCode:#$1E60), // LATIN SMALL LETTER S WITH DOT ABOVE
(Unicode:#$1E62; Attr:laUpper; CaseCode:#$1E63), // LATIN CAPITAL LETTER S WITH DOT BELOW
(Unicode:#$1E63; Attr:laLower; CaseCode:#$1E62), // LATIN SMALL LETTER S WITH DOT BELOW
(Unicode:#$1E64; Attr:laUpper; CaseCode:#$1E65), // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
(Unicode:#$1E65; Attr:laLower; CaseCode:#$1E64), // LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
(Unicode:#$1E66; Attr:laUpper; CaseCode:#$1E67), // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
(Unicode:#$1E67; Attr:laLower; CaseCode:#$1E66), // LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
(Unicode:#$1E68; Attr:laUpper; CaseCode:#$1E69), // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
(Unicode:#$1E69; Attr:laLower; CaseCode:#$1E68), // LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
(Unicode:#$1E6A; Attr:laUpper; CaseCode:#$1E6B), // LATIN CAPITAL LETTER T WITH DOT ABOVE
(Unicode:#$1E6B; Attr:laLower; CaseCode:#$1E6A), // LATIN SMALL LETTER T WITH DOT ABOVE
(Unicode:#$1E6C; Attr:laUpper; CaseCode:#$1E6D), // LATIN CAPITAL LETTER T WITH DOT BELOW
(Unicode:#$1E6D; Attr:laLower; CaseCode:#$1E6C), // LATIN SMALL LETTER T WITH DOT BELOW
(Unicode:#$1E6E; Attr:laUpper; CaseCode:#$1E6F), // LATIN CAPITAL LETTER T WITH LINE BELOW
(Unicode:#$1E6F; Attr:laLower; CaseCode:#$1E6E), // LATIN SMALL LETTER T WITH LINE BELOW
(Unicode:#$1E70; Attr:laUpper; CaseCode:#$1E71), // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
(Unicode:#$1E71; Attr:laLower; CaseCode:#$1E70), // LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
(Unicode:#$1E72; Attr:laUpper; CaseCode:#$1E73), // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
(Unicode:#$1E73; Attr:laLower; CaseCode:#$1E72), // LATIN SMALL LETTER U WITH DIAERESIS BELOW
(Unicode:#$1E74; Attr:laUpper; CaseCode:#$1E75), // LATIN CAPITAL LETTER U WITH TILDE BELOW
(Unicode:#$1E75; Attr:laLower; CaseCode:#$1E74), // LATIN SMALL LETTER U WITH TILDE BELOW
(Unicode:#$1E76; Attr:laUpper; CaseCode:#$1E77), // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
(Unicode:#$1E77; Attr:laLower; CaseCode:#$1E76), // LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
(Unicode:#$1E78; Attr:laUpper; CaseCode:#$1E79), // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
(Unicode:#$1E79; Attr:laLower; CaseCode:#$1E78), // LATIN SMALL LETTER U WITH TILDE AND ACUTE
(Unicode:#$1E7A; Attr:laUpper; CaseCode:#$1E7B), // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
(Unicode:#$1E7B; Attr:laLower; CaseCode:#$1E7A), // LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
(Unicode:#$1E7C; Attr:laUpper; CaseCode:#$1E7D), // LATIN CAPITAL LETTER V WITH TILDE
(Unicode:#$1E7D; Attr:laLower; CaseCode:#$1E7C), // LATIN SMALL LETTER V WITH TILDE
(Unicode:#$1E7E; Attr:laUpper; CaseCode:#$1E7F), // LATIN CAPITAL LETTER V WITH DOT BELOW
(Unicode:#$1E7F; Attr:laLower; CaseCode:#$1E7E), // LATIN SMALL LETTER V WITH DOT BELOW
(Unicode:#$1E80; Attr:laUpper; CaseCode:#$1E81), // LATIN CAPITAL LETTER W WITH GRAVE
(Unicode:#$1E81; Attr:laLower; CaseCode:#$1E80), // LATIN SMALL LETTER W WITH GRAVE
(Unicode:#$1E82; Attr:laUpper; CaseCode:#$1E83), // LATIN CAPITAL LETTER W WITH ACUTE
(Unicode:#$1E83; Attr:laLower; CaseCode:#$1E82), // LATIN SMALL LETTER W WITH ACUTE
(Unicode:#$1E84; Attr:laUpper; CaseCode:#$1E85), // LATIN CAPITAL LETTER W WITH DIAERESIS
(Unicode:#$1E85; Attr:laLower; CaseCode:#$1E84), // LATIN SMALL LETTER W WITH DIAERESIS
(Unicode:#$1E86; Attr:laUpper; CaseCode:#$1E87), // LATIN CAPITAL LETTER W WITH DOT ABOVE
(Unicode:#$1E87; Attr:laLower; CaseCode:#$1E86), // LATIN SMALL LETTER W WITH DOT ABOVE
(Unicode:#$1E88; Attr:laUpper; CaseCode:#$1E89), // LATIN CAPITAL LETTER W WITH DOT BELOW
(Unicode:#$1E89; Attr:laLower; CaseCode:#$1E88), // LATIN SMALL LETTER W WITH DOT BELOW
(Unicode:#$1E8A; Attr:laUpper; CaseCode:#$1E8B), // LATIN CAPITAL LETTER X WITH DOT ABOVE
(Unicode:#$1E8B; Attr:laLower; CaseCode:#$1E8A), // LATIN SMALL LETTER X WITH DOT ABOVE
(Unicode:#$1E8C; Attr:laUpper; CaseCode:#$1E8D), // LATIN CAPITAL LETTER X WITH DIAERESIS
(Unicode:#$1E8D; Attr:laLower; CaseCode:#$1E8C), // LATIN SMALL LETTER X WITH DIAERESIS
(Unicode:#$1E8E; Attr:laUpper; CaseCode:#$1E8F), // LATIN CAPITAL LETTER Y WITH DOT ABOVE
(Unicode:#$1E8F; Attr:laLower; CaseCode:#$1E8E), // LATIN SMALL LETTER Y WITH DOT ABOVE
(Unicode:#$1E90; Attr:laUpper; CaseCode:#$1E91), // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
(Unicode:#$1E91; Attr:laLower; CaseCode:#$1E90), // LATIN SMALL LETTER Z WITH CIRCUMFLEX
(Unicode:#$1E92; Attr:laUpper; CaseCode:#$1E93), // LATIN CAPITAL LETTER Z WITH DOT BELOW
(Unicode:#$1E93; Attr:laLower; CaseCode:#$1E92), // LATIN SMALL LETTER Z WITH DOT BELOW
(Unicode:#$1E94; Attr:laUpper; CaseCode:#$1E95), // LATIN CAPITAL LETTER Z WITH LINE BELOW
(Unicode:#$1E95; Attr:laLower; CaseCode:#$1E94), // LATIN SMALL LETTER Z WITH LINE BELOW
(Unicode:#$1E96; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER H WITH LINE BELOW
(Unicode:#$1E97; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER T WITH DIAERESIS
(Unicode:#$1E98; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER W WITH RING ABOVE
(Unicode:#$1E99; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER Y WITH RING ABOVE
(Unicode:#$1E9A; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LETTER A WITH RIGHT HALF RING
(Unicode:#$1E9B; Attr:laLower; CaseCode:#$1E60), // LATIN SMALL LETTER LONG S WITH DOT ABOVE
(Unicode:#$1EA0; Attr:laUpper; CaseCode:#$1EA1), // LATIN CAPITAL LETTER A WITH DOT BELOW
(Unicode:#$1EA1; Attr:laLower; CaseCode:#$1EA0), // LATIN SMALL LETTER A WITH DOT BELOW
(Unicode:#$1EA2; Attr:laUpper; CaseCode:#$1EA3), // LATIN CAPITAL LETTER A WITH HOOK ABOVE
(Unicode:#$1EA3; Attr:laLower; CaseCode:#$1EA2), // LATIN SMALL LETTER A WITH HOOK ABOVE
(Unicode:#$1EA4; Attr:laUpper; CaseCode:#$1EA5), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1EA5; Attr:laLower; CaseCode:#$1EA4), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1EA6; Attr:laUpper; CaseCode:#$1EA7), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1EA7; Attr:laLower; CaseCode:#$1EA6), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1EA8; Attr:laUpper; CaseCode:#$1EA9), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1EA9; Attr:laLower; CaseCode:#$1EA8), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1EAA; Attr:laUpper; CaseCode:#$1EAB), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
(Unicode:#$1EAB; Attr:laLower; CaseCode:#$1EAA), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
(Unicode:#$1EAC; Attr:laUpper; CaseCode:#$1EAD), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1EAD; Attr:laLower; CaseCode:#$1EAC), // LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1EAE; Attr:laUpper; CaseCode:#$1EAF), // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
(Unicode:#$1EAF; Attr:laLower; CaseCode:#$1EAE), // LATIN SMALL LETTER A WITH BREVE AND ACUTE
(Unicode:#$1EB0; Attr:laUpper; CaseCode:#$1EB1), // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
(Unicode:#$1EB1; Attr:laLower; CaseCode:#$1EB0), // LATIN SMALL LETTER A WITH BREVE AND GRAVE
(Unicode:#$1EB2; Attr:laUpper; CaseCode:#$1EB3), // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
(Unicode:#$1EB3; Attr:laLower; CaseCode:#$1EB2), // LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
(Unicode:#$1EB4; Attr:laUpper; CaseCode:#$1EB5), // LATIN CAPITAL LETTER A WITH BREVE AND TILDE
(Unicode:#$1EB5; Attr:laLower; CaseCode:#$1EB4), // LATIN SMALL LETTER A WITH BREVE AND TILDE
(Unicode:#$1EB6; Attr:laUpper; CaseCode:#$1EB7), // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
(Unicode:#$1EB7; Attr:laLower; CaseCode:#$1EB6), // LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
(Unicode:#$1EB8; Attr:laUpper; CaseCode:#$1EB9), // LATIN CAPITAL LETTER E WITH DOT BELOW
(Unicode:#$1EB9; Attr:laLower; CaseCode:#$1EB8), // LATIN SMALL LETTER E WITH DOT BELOW
(Unicode:#$1EBA; Attr:laUpper; CaseCode:#$1EBB), // LATIN CAPITAL LETTER E WITH HOOK ABOVE
(Unicode:#$1EBB; Attr:laLower; CaseCode:#$1EBA), // LATIN SMALL LETTER E WITH HOOK ABOVE
(Unicode:#$1EBC; Attr:laUpper; CaseCode:#$1EBD), // LATIN CAPITAL LETTER E WITH TILDE
(Unicode:#$1EBD; Attr:laLower; CaseCode:#$1EBC), // LATIN SMALL LETTER E WITH TILDE
(Unicode:#$1EBE; Attr:laUpper; CaseCode:#$1EBF), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1EBF; Attr:laLower; CaseCode:#$1EBE), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1EC0; Attr:laUpper; CaseCode:#$1EC1), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1EC1; Attr:laLower; CaseCode:#$1EC0), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1EC2; Attr:laUpper; CaseCode:#$1EC3), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1EC3; Attr:laLower; CaseCode:#$1EC2), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1EC4; Attr:laUpper; CaseCode:#$1EC5), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
(Unicode:#$1EC5; Attr:laLower; CaseCode:#$1EC4), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
(Unicode:#$1EC6; Attr:laUpper; CaseCode:#$1EC7), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1EC7; Attr:laLower; CaseCode:#$1EC6), // LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1EC8; Attr:laUpper; CaseCode:#$1EC9), // LATIN CAPITAL LETTER I WITH HOOK ABOVE
(Unicode:#$1EC9; Attr:laLower; CaseCode:#$1EC8), // LATIN SMALL LETTER I WITH HOOK ABOVE
(Unicode:#$1ECA; Attr:laUpper; CaseCode:#$1ECB), // LATIN CAPITAL LETTER I WITH DOT BELOW
(Unicode:#$1ECB; Attr:laLower; CaseCode:#$1ECA), // LATIN SMALL LETTER I WITH DOT BELOW
(Unicode:#$1ECC; Attr:laUpper; CaseCode:#$1ECD), // LATIN CAPITAL LETTER O WITH DOT BELOW
(Unicode:#$1ECD; Attr:laLower; CaseCode:#$1ECC), // LATIN SMALL LETTER O WITH DOT BELOW
(Unicode:#$1ECE; Attr:laUpper; CaseCode:#$1ECF), // LATIN CAPITAL LETTER O WITH HOOK ABOVE
(Unicode:#$1ECF; Attr:laLower; CaseCode:#$1ECE), // LATIN SMALL LETTER O WITH HOOK ABOVE
(Unicode:#$1ED0; Attr:laUpper; CaseCode:#$1ED1), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1ED1; Attr:laLower; CaseCode:#$1ED0), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
(Unicode:#$1ED2; Attr:laUpper; CaseCode:#$1ED3), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1ED3; Attr:laLower; CaseCode:#$1ED2), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
(Unicode:#$1ED4; Attr:laUpper; CaseCode:#$1ED5), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1ED5; Attr:laLower; CaseCode:#$1ED4), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
(Unicode:#$1ED6; Attr:laUpper; CaseCode:#$1ED7), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
(Unicode:#$1ED7; Attr:laLower; CaseCode:#$1ED6), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
(Unicode:#$1ED8; Attr:laUpper; CaseCode:#$1ED9), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1ED9; Attr:laLower; CaseCode:#$1ED8), // LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
(Unicode:#$1EDA; Attr:laUpper; CaseCode:#$1EDB), // LATIN CAPITAL LETTER O WITH HORN AND ACUTE
(Unicode:#$1EDB; Attr:laLower; CaseCode:#$1EDA), // LATIN SMALL LETTER O WITH HORN AND ACUTE
(Unicode:#$1EDC; Attr:laUpper; CaseCode:#$1EDD), // LATIN CAPITAL LETTER O WITH HORN AND GRAVE
(Unicode:#$1EDD; Attr:laLower; CaseCode:#$1EDC), // LATIN SMALL LETTER O WITH HORN AND GRAVE
(Unicode:#$1EDE; Attr:laUpper; CaseCode:#$1EDF), // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
(Unicode:#$1EDF; Attr:laLower; CaseCode:#$1EDE), // LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
(Unicode:#$1EE0; Attr:laUpper; CaseCode:#$1EE1), // LATIN CAPITAL LETTER O WITH HORN AND TILDE
(Unicode:#$1EE1; Attr:laLower; CaseCode:#$1EE0), // LATIN SMALL LETTER O WITH HORN AND TILDE
(Unicode:#$1EE2; Attr:laUpper; CaseCode:#$1EE3), // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
(Unicode:#$1EE3; Attr:laLower; CaseCode:#$1EE2), // LATIN SMALL LETTER O WITH HORN AND DOT BELOW
(Unicode:#$1EE4; Attr:laUpper; CaseCode:#$1EE5), // LATIN CAPITAL LETTER U WITH DOT BELOW
(Unicode:#$1EE5; Attr:laLower; CaseCode:#$1EE4), // LATIN SMALL LETTER U WITH DOT BELOW
(Unicode:#$1EE6; Attr:laUpper; CaseCode:#$1EE7), // LATIN CAPITAL LETTER U WITH HOOK ABOVE
(Unicode:#$1EE7; Attr:laLower; CaseCode:#$1EE6), // LATIN SMALL LETTER U WITH HOOK ABOVE
(Unicode:#$1EE8; Attr:laUpper; CaseCode:#$1EE9), // LATIN CAPITAL LETTER U WITH HORN AND ACUTE
(Unicode:#$1EE9; Attr:laLower; CaseCode:#$1EE8), // LATIN SMALL LETTER U WITH HORN AND ACUTE
(Unicode:#$1EEA; Attr:laUpper; CaseCode:#$1EEB), // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
(Unicode:#$1EEB; Attr:laLower; CaseCode:#$1EEA), // LATIN SMALL LETTER U WITH HORN AND GRAVE
(Unicode:#$1EEC; Attr:laUpper; CaseCode:#$1EED), // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
(Unicode:#$1EED; Attr:laLower; CaseCode:#$1EEC), // LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
(Unicode:#$1EEE; Attr:laUpper; CaseCode:#$1EEF), // LATIN CAPITAL LETTER U WITH HORN AND TILDE
(Unicode:#$1EEF; Attr:laLower; CaseCode:#$1EEE), // LATIN SMALL LETTER U WITH HORN AND TILDE
(Unicode:#$1EF0; Attr:laUpper; CaseCode:#$1EF1), // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
(Unicode:#$1EF1; Attr:laLower; CaseCode:#$1EF0), // LATIN SMALL LETTER U WITH HORN AND DOT BELOW
(Unicode:#$1EF2; Attr:laUpper; CaseCode:#$1EF3), // LATIN CAPITAL LETTER Y WITH GRAVE
(Unicode:#$1EF3; Attr:laLower; CaseCode:#$1EF2), // LATIN SMALL LETTER Y WITH GRAVE
(Unicode:#$1EF4; Attr:laUpper; CaseCode:#$1EF5), // LATIN CAPITAL LETTER Y WITH DOT BELOW
(Unicode:#$1EF5; Attr:laLower; CaseCode:#$1EF4), // LATIN SMALL LETTER Y WITH DOT BELOW
(Unicode:#$1EF6; Attr:laUpper; CaseCode:#$1EF7), // LATIN CAPITAL LETTER Y WITH HOOK ABOVE
(Unicode:#$1EF7; Attr:laLower; CaseCode:#$1EF6), // LATIN SMALL LETTER Y WITH HOOK ABOVE
(Unicode:#$1EF8; Attr:laUpper; CaseCode:#$1EF9), // LATIN CAPITAL LETTER Y WITH TILDE
(Unicode:#$1EF9; Attr:laLower; CaseCode:#$1EF8), // LATIN SMALL LETTER Y WITH TILDE
(Unicode:#$1F00; Attr:laLower; CaseCode:#$1F08), // GREEK SMALL LETTER ALPHA WITH PSILI
(Unicode:#$1F01; Attr:laLower; CaseCode:#$1F09), // GREEK SMALL LETTER ALPHA WITH DASIA
(Unicode:#$1F02; Attr:laLower; CaseCode:#$1F0A), // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
(Unicode:#$1F03; Attr:laLower; CaseCode:#$1F0B), // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
(Unicode:#$1F04; Attr:laLower; CaseCode:#$1F0C), // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
(Unicode:#$1F05; Attr:laLower; CaseCode:#$1F0D), // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
(Unicode:#$1F06; Attr:laLower; CaseCode:#$1F0E), // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
(Unicode:#$1F07; Attr:laLower; CaseCode:#$1F0F), // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
(Unicode:#$1F08; Attr:laUpper; CaseCode:#$1F00), // GREEK CAPITAL LETTER ALPHA WITH PSILI
(Unicode:#$1F09; Attr:laUpper; CaseCode:#$1F01), // GREEK CAPITAL LETTER ALPHA WITH DASIA
(Unicode:#$1F0A; Attr:laUpper; CaseCode:#$1F02), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
(Unicode:#$1F0B; Attr:laUpper; CaseCode:#$1F03), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
(Unicode:#$1F0C; Attr:laUpper; CaseCode:#$1F04), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
(Unicode:#$1F0D; Attr:laUpper; CaseCode:#$1F05), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
(Unicode:#$1F0E; Attr:laUpper; CaseCode:#$1F06), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
(Unicode:#$1F0F; Attr:laUpper; CaseCode:#$1F07), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
(Unicode:#$1F10; Attr:laLower; CaseCode:#$1F18), // GREEK SMALL LETTER EPSILON WITH PSILI
(Unicode:#$1F11; Attr:laLower; CaseCode:#$1F19), // GREEK SMALL LETTER EPSILON WITH DASIA
(Unicode:#$1F12; Attr:laLower; CaseCode:#$1F1A), // GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
(Unicode:#$1F13; Attr:laLower; CaseCode:#$1F1B), // GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
(Unicode:#$1F14; Attr:laLower; CaseCode:#$1F1C), // GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
(Unicode:#$1F15; Attr:laLower; CaseCode:#$1F1D), // GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
(Unicode:#$1F18; Attr:laUpper; CaseCode:#$1F10), // GREEK CAPITAL LETTER EPSILON WITH PSILI
(Unicode:#$1F19; Attr:laUpper; CaseCode:#$1F11), // GREEK CAPITAL LETTER EPSILON WITH DASIA
(Unicode:#$1F1A; Attr:laUpper; CaseCode:#$1F12), // GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
(Unicode:#$1F1B; Attr:laUpper; CaseCode:#$1F13), // GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
(Unicode:#$1F1C; Attr:laUpper; CaseCode:#$1F14), // GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
(Unicode:#$1F1D; Attr:laUpper; CaseCode:#$1F15), // GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
(Unicode:#$1F20; Attr:laLower; CaseCode:#$1F28), // GREEK SMALL LETTER ETA WITH PSILI
(Unicode:#$1F21; Attr:laLower; CaseCode:#$1F29), // GREEK SMALL LETTER ETA WITH DASIA
(Unicode:#$1F22; Attr:laLower; CaseCode:#$1F2A), // GREEK SMALL LETTER ETA WITH PSILI AND VARIA
(Unicode:#$1F23; Attr:laLower; CaseCode:#$1F2B), // GREEK SMALL LETTER ETA WITH DASIA AND VARIA
(Unicode:#$1F24; Attr:laLower; CaseCode:#$1F2C), // GREEK SMALL LETTER ETA WITH PSILI AND OXIA
(Unicode:#$1F25; Attr:laLower; CaseCode:#$1F2D), // GREEK SMALL LETTER ETA WITH DASIA AND OXIA
(Unicode:#$1F26; Attr:laLower; CaseCode:#$1F2E), // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
(Unicode:#$1F27; Attr:laLower; CaseCode:#$1F2F), // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
(Unicode:#$1F28; Attr:laUpper; CaseCode:#$1F20), // GREEK CAPITAL LETTER ETA WITH PSILI
(Unicode:#$1F29; Attr:laUpper; CaseCode:#$1F21), // GREEK CAPITAL LETTER ETA WITH DASIA
(Unicode:#$1F2A; Attr:laUpper; CaseCode:#$1F22), // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
(Unicode:#$1F2B; Attr:laUpper; CaseCode:#$1F23), // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
(Unicode:#$1F2C; Attr:laUpper; CaseCode:#$1F24), // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
(Unicode:#$1F2D; Attr:laUpper; CaseCode:#$1F25), // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
(Unicode:#$1F2E; Attr:laUpper; CaseCode:#$1F26), // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
(Unicode:#$1F2F; Attr:laUpper; CaseCode:#$1F27), // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
(Unicode:#$1F30; Attr:laLower; CaseCode:#$1F38), // GREEK SMALL LETTER IOTA WITH PSILI
(Unicode:#$1F31; Attr:laLower; CaseCode:#$1F39), // GREEK SMALL LETTER IOTA WITH DASIA
(Unicode:#$1F32; Attr:laLower; CaseCode:#$1F3A), // GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
(Unicode:#$1F33; Attr:laLower; CaseCode:#$1F3B), // GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
(Unicode:#$1F34; Attr:laLower; CaseCode:#$1F3C), // GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
(Unicode:#$1F35; Attr:laLower; CaseCode:#$1F3D), // GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
(Unicode:#$1F36; Attr:laLower; CaseCode:#$1F3E), // GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
(Unicode:#$1F37; Attr:laLower; CaseCode:#$1F3F), // GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
(Unicode:#$1F38; Attr:laUpper; CaseCode:#$1F30), // GREEK CAPITAL LETTER IOTA WITH PSILI
(Unicode:#$1F39; Attr:laUpper; CaseCode:#$1F31), // GREEK CAPITAL LETTER IOTA WITH DASIA
(Unicode:#$1F3A; Attr:laUpper; CaseCode:#$1F32), // GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
(Unicode:#$1F3B; Attr:laUpper; CaseCode:#$1F33), // GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
(Unicode:#$1F3C; Attr:laUpper; CaseCode:#$1F34), // GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
(Unicode:#$1F3D; Attr:laUpper; CaseCode:#$1F35), // GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
(Unicode:#$1F3E; Attr:laUpper; CaseCode:#$1F36), // GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
(Unicode:#$1F3F; Attr:laUpper; CaseCode:#$1F37), // GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
(Unicode:#$1F40; Attr:laLower; CaseCode:#$1F48), // GREEK SMALL LETTER OMICRON WITH PSILI
(Unicode:#$1F41; Attr:laLower; CaseCode:#$1F49), // GREEK SMALL LETTER OMICRON WITH DASIA
(Unicode:#$1F42; Attr:laLower; CaseCode:#$1F4A), // GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
(Unicode:#$1F43; Attr:laLower; CaseCode:#$1F4B), // GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
(Unicode:#$1F44; Attr:laLower; CaseCode:#$1F4C), // GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
(Unicode:#$1F45; Attr:laLower; CaseCode:#$1F4D), // GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
(Unicode:#$1F48; Attr:laUpper; CaseCode:#$1F40), // GREEK CAPITAL LETTER OMICRON WITH PSILI
(Unicode:#$1F49; Attr:laUpper; CaseCode:#$1F41), // GREEK CAPITAL LETTER OMICRON WITH DASIA
(Unicode:#$1F4A; Attr:laUpper; CaseCode:#$1F42), // GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
(Unicode:#$1F4B; Attr:laUpper; CaseCode:#$1F43), // GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
(Unicode:#$1F4C; Attr:laUpper; CaseCode:#$1F44), // GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
(Unicode:#$1F4D; Attr:laUpper; CaseCode:#$1F45), // GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
(Unicode:#$1F50; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH PSILI
(Unicode:#$1F51; Attr:laLower; CaseCode:#$1F59), // GREEK SMALL LETTER UPSILON WITH DASIA
(Unicode:#$1F52; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
(Unicode:#$1F53; Attr:laLower; CaseCode:#$1F5B), // GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
(Unicode:#$1F54; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
(Unicode:#$1F55; Attr:laLower; CaseCode:#$1F5D), // GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
(Unicode:#$1F56; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
(Unicode:#$1F57; Attr:laLower; CaseCode:#$1F5F), // GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
(Unicode:#$1F59; Attr:laUpper; CaseCode:#$1F51), // GREEK CAPITAL LETTER UPSILON WITH DASIA
(Unicode:#$1F5B; Attr:laUpper; CaseCode:#$1F53), // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
(Unicode:#$1F5D; Attr:laUpper; CaseCode:#$1F55), // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
(Unicode:#$1F5F; Attr:laUpper; CaseCode:#$1F57), // GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
(Unicode:#$1F60; Attr:laLower; CaseCode:#$1F68), // GREEK SMALL LETTER OMEGA WITH PSILI
(Unicode:#$1F61; Attr:laLower; CaseCode:#$1F69), // GREEK SMALL LETTER OMEGA WITH DASIA
(Unicode:#$1F62; Attr:laLower; CaseCode:#$1F6A), // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
(Unicode:#$1F63; Attr:laLower; CaseCode:#$1F6B), // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
(Unicode:#$1F64; Attr:laLower; CaseCode:#$1F6C), // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
(Unicode:#$1F65; Attr:laLower; CaseCode:#$1F6D), // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
(Unicode:#$1F66; Attr:laLower; CaseCode:#$1F6E), // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
(Unicode:#$1F67; Attr:laLower; CaseCode:#$1F6F), // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
(Unicode:#$1F68; Attr:laUpper; CaseCode:#$1F60), // GREEK CAPITAL LETTER OMEGA WITH PSILI
(Unicode:#$1F69; Attr:laUpper; CaseCode:#$1F61), // GREEK CAPITAL LETTER OMEGA WITH DASIA
(Unicode:#$1F6A; Attr:laUpper; CaseCode:#$1F62), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
(Unicode:#$1F6B; Attr:laUpper; CaseCode:#$1F63), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
(Unicode:#$1F6C; Attr:laUpper; CaseCode:#$1F64), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
(Unicode:#$1F6D; Attr:laUpper; CaseCode:#$1F65), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
(Unicode:#$1F6E; Attr:laUpper; CaseCode:#$1F66), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
(Unicode:#$1F6F; Attr:laUpper; CaseCode:#$1F67), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
(Unicode:#$1F70; Attr:laLower; CaseCode:#$1FBA), // GREEK SMALL LETTER ALPHA WITH VARIA
(Unicode:#$1F71; Attr:laLower; CaseCode:#$1FBB), // GREEK SMALL LETTER ALPHA WITH OXIA
(Unicode:#$1F72; Attr:laLower; CaseCode:#$1FC8), // GREEK SMALL LETTER EPSILON WITH VARIA
(Unicode:#$1F73; Attr:laLower; CaseCode:#$1FC9), // GREEK SMALL LETTER EPSILON WITH OXIA
(Unicode:#$1F74; Attr:laLower; CaseCode:#$1FCA), // GREEK SMALL LETTER ETA WITH VARIA
(Unicode:#$1F75; Attr:laLower; CaseCode:#$1FCB), // GREEK SMALL LETTER ETA WITH OXIA
(Unicode:#$1F76; Attr:laLower; CaseCode:#$1FDA), // GREEK SMALL LETTER IOTA WITH VARIA
(Unicode:#$1F77; Attr:laLower; CaseCode:#$1FDB), // GREEK SMALL LETTER IOTA WITH OXIA
(Unicode:#$1F78; Attr:laLower; CaseCode:#$1FF8), // GREEK SMALL LETTER OMICRON WITH VARIA
(Unicode:#$1F79; Attr:laLower; CaseCode:#$1FF9), // GREEK SMALL LETTER OMICRON WITH OXIA
(Unicode:#$1F7A; Attr:laLower; CaseCode:#$1FEA), // GREEK SMALL LETTER UPSILON WITH VARIA
(Unicode:#$1F7B; Attr:laLower; CaseCode:#$1FEB), // GREEK SMALL LETTER UPSILON WITH OXIA
(Unicode:#$1F7C; Attr:laLower; CaseCode:#$1FFA), // GREEK SMALL LETTER OMEGA WITH VARIA
(Unicode:#$1F7D; Attr:laLower; CaseCode:#$1FFB), // GREEK SMALL LETTER OMEGA WITH OXIA
(Unicode:#$1F80; Attr:laLower; CaseCode:#$1F88), // GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
(Unicode:#$1F81; Attr:laLower; CaseCode:#$1F89), // GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
(Unicode:#$1F82; Attr:laLower; CaseCode:#$1F8A), // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1F83; Attr:laLower; CaseCode:#$1F8B), // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1F84; Attr:laLower; CaseCode:#$1F8C), // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1F85; Attr:laLower; CaseCode:#$1F8D), // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1F86; Attr:laLower; CaseCode:#$1F8E), // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1F87; Attr:laLower; CaseCode:#$1F8F), // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1F90; Attr:laLower; CaseCode:#$1F98), // GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
(Unicode:#$1F91; Attr:laLower; CaseCode:#$1F99), // GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
(Unicode:#$1F92; Attr:laLower; CaseCode:#$1F9A), // GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1F93; Attr:laLower; CaseCode:#$1F9B), // GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1F94; Attr:laLower; CaseCode:#$1F9C), // GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1F95; Attr:laLower; CaseCode:#$1F9D), // GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1F96; Attr:laLower; CaseCode:#$1F9E), // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1F97; Attr:laLower; CaseCode:#$1F9F), // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FA0; Attr:laLower; CaseCode:#$1FA8), // GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
(Unicode:#$1FA1; Attr:laLower; CaseCode:#$1FA9), // GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
(Unicode:#$1FA2; Attr:laLower; CaseCode:#$1FAA), // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1FA3; Attr:laLower; CaseCode:#$1FAB), // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
(Unicode:#$1FA4; Attr:laLower; CaseCode:#$1FAC), // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1FA5; Attr:laLower; CaseCode:#$1FAD), // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
(Unicode:#$1FA6; Attr:laLower; CaseCode:#$1FAE), // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FA7; Attr:laLower; CaseCode:#$1FAF), // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FB0; Attr:laLower; CaseCode:#$1FB8), // GREEK SMALL LETTER ALPHA WITH VRACHY
(Unicode:#$1FB1; Attr:laLower; CaseCode:#$1FB9), // GREEK SMALL LETTER ALPHA WITH MACRON
(Unicode:#$1FB2; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
(Unicode:#$1FB3; Attr:laLower; CaseCode:#$1FBC), // GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
(Unicode:#$1FB4; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
(Unicode:#$1FB6; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ALPHA WITH PERISPOMENI
(Unicode:#$1FB7; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FB8; Attr:laUpper; CaseCode:#$1FB0), // GREEK CAPITAL LETTER ALPHA WITH VRACHY
(Unicode:#$1FB9; Attr:laUpper; CaseCode:#$1FB1), // GREEK CAPITAL LETTER ALPHA WITH MACRON
(Unicode:#$1FBA; Attr:laUpper; CaseCode:#$1F70), // GREEK CAPITAL LETTER ALPHA WITH VARIA
(Unicode:#$1FBB; Attr:laUpper; CaseCode:#$1F71), // GREEK CAPITAL LETTER ALPHA WITH OXIA
(Unicode:#$1FBE; Attr:laLower; CaseCode:#$0399), // GREEK PROSGEGRAMMENI
(Unicode:#$1FC2; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
(Unicode:#$1FC3; Attr:laLower; CaseCode:#$1FCC), // GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
(Unicode:#$1FC4; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
(Unicode:#$1FC6; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ETA WITH PERISPOMENI
(Unicode:#$1FC7; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FC8; Attr:laUpper; CaseCode:#$1F72), // GREEK CAPITAL LETTER EPSILON WITH VARIA
(Unicode:#$1FC9; Attr:laUpper; CaseCode:#$1F73), // GREEK CAPITAL LETTER EPSILON WITH OXIA
(Unicode:#$1FCA; Attr:laUpper; CaseCode:#$1F74), // GREEK CAPITAL LETTER ETA WITH VARIA
(Unicode:#$1FCB; Attr:laUpper; CaseCode:#$1F75), // GREEK CAPITAL LETTER ETA WITH OXIA
(Unicode:#$1FD0; Attr:laLower; CaseCode:#$1FD8), // GREEK SMALL LETTER IOTA WITH VRACHY
(Unicode:#$1FD1; Attr:laLower; CaseCode:#$1FD9), // GREEK SMALL LETTER IOTA WITH MACRON
(Unicode:#$1FD2; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
(Unicode:#$1FD3; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
(Unicode:#$1FD6; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER IOTA WITH PERISPOMENI
(Unicode:#$1FD7; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
(Unicode:#$1FD8; Attr:laUpper; CaseCode:#$1FD0), // GREEK CAPITAL LETTER IOTA WITH VRACHY
(Unicode:#$1FD9; Attr:laUpper; CaseCode:#$1FD1), // GREEK CAPITAL LETTER IOTA WITH MACRON
(Unicode:#$1FDA; Attr:laUpper; CaseCode:#$1F76), // GREEK CAPITAL LETTER IOTA WITH VARIA
(Unicode:#$1FDB; Attr:laUpper; CaseCode:#$1F77), // GREEK CAPITAL LETTER IOTA WITH OXIA
(Unicode:#$1FE0; Attr:laLower; CaseCode:#$1FE8), // GREEK SMALL LETTER UPSILON WITH VRACHY
(Unicode:#$1FE1; Attr:laLower; CaseCode:#$1FE9), // GREEK SMALL LETTER UPSILON WITH MACRON
(Unicode:#$1FE2; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
(Unicode:#$1FE3; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
(Unicode:#$1FE4; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER RHO WITH PSILI
(Unicode:#$1FE5; Attr:laLower; CaseCode:#$1FEC), // GREEK SMALL LETTER RHO WITH DASIA
(Unicode:#$1FE6; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH PERISPOMENI
(Unicode:#$1FE7; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
(Unicode:#$1FE8; Attr:laUpper; CaseCode:#$1FE0), // GREEK CAPITAL LETTER UPSILON WITH VRACHY
(Unicode:#$1FE9; Attr:laUpper; CaseCode:#$1FE1), // GREEK CAPITAL LETTER UPSILON WITH MACRON
(Unicode:#$1FEA; Attr:laUpper; CaseCode:#$1F7A), // GREEK CAPITAL LETTER UPSILON WITH VARIA
(Unicode:#$1FEB; Attr:laUpper; CaseCode:#$1F7B), // GREEK CAPITAL LETTER UPSILON WITH OXIA
(Unicode:#$1FEC; Attr:laUpper; CaseCode:#$1FE5), // GREEK CAPITAL LETTER RHO WITH DASIA
(Unicode:#$1FF2; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
(Unicode:#$1FF3; Attr:laLower; CaseCode:#$1FFC), // GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
(Unicode:#$1FF4; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
(Unicode:#$1FF6; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER OMEGA WITH PERISPOMENI
(Unicode:#$1FF7; Attr:laLower; CaseCode:#$FFFF), // GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
(Unicode:#$1FF8; Attr:laUpper; CaseCode:#$1F78), // GREEK CAPITAL LETTER OMICRON WITH VARIA
(Unicode:#$1FF9; Attr:laUpper; CaseCode:#$1F79), // GREEK CAPITAL LETTER OMICRON WITH OXIA
(Unicode:#$1FFA; Attr:laUpper; CaseCode:#$1F7C), // GREEK CAPITAL LETTER OMEGA WITH VARIA
(Unicode:#$1FFB; Attr:laUpper; CaseCode:#$1F7D), // GREEK CAPITAL LETTER OMEGA WITH OXIA
(Unicode:#$207F; Attr:laLower; CaseCode:#$FFFF), // SUPERSCRIPT LATIN SMALL LETTER N
(Unicode:#$2102; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL C
(Unicode:#$2107; Attr:laUpper; CaseCode:#$FFFF), // EULER CONSTANT
(Unicode:#$210A; Attr:laLower; CaseCode:#$FFFF), // SCRIPT SMALL G
(Unicode:#$210B; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL H
(Unicode:#$210C; Attr:laUpper; CaseCode:#$FFFF), // BLACK-LETTER CAPITAL H
(Unicode:#$210D; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL H
(Unicode:#$210E; Attr:laLower; CaseCode:#$FFFF), // PLANCK CONSTANT
(Unicode:#$210F; Attr:laLower; CaseCode:#$FFFF), // PLANCK CONSTANT OVER TWO PI
(Unicode:#$2110; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL I
(Unicode:#$2111; Attr:laUpper; CaseCode:#$FFFF), // BLACK-LETTER CAPITAL I
(Unicode:#$2112; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL L
(Unicode:#$2113; Attr:laLower; CaseCode:#$FFFF), // SCRIPT SMALL L
(Unicode:#$2115; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL N
(Unicode:#$2119; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL P
(Unicode:#$211A; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL Q
(Unicode:#$211B; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL R
(Unicode:#$211C; Attr:laUpper; CaseCode:#$FFFF), // BLACK-LETTER CAPITAL R
(Unicode:#$211D; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL R
(Unicode:#$2124; Attr:laUpper; CaseCode:#$FFFF), // DOUBLE-STRUCK CAPITAL Z
(Unicode:#$2126; Attr:laUpper; CaseCode:#$03C9), // OHM SIGN
(Unicode:#$2128; Attr:laUpper; CaseCode:#$FFFF), // BLACK-LETTER CAPITAL Z
(Unicode:#$212A; Attr:laUpper; CaseCode:#$006B), // KELVIN SIGN
(Unicode:#$212B; Attr:laUpper; CaseCode:#$00E5), // ANGSTROM SIGN
(Unicode:#$212C; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL B
(Unicode:#$212D; Attr:laUpper; CaseCode:#$FFFF), // BLACK-LETTER CAPITAL C
(Unicode:#$212F; Attr:laLower; CaseCode:#$FFFF), // SCRIPT SMALL E
(Unicode:#$2130; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL E
(Unicode:#$2131; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL F
(Unicode:#$2133; Attr:laUpper; CaseCode:#$FFFF), // SCRIPT CAPITAL M
(Unicode:#$2134; Attr:laLower; CaseCode:#$FFFF), // SCRIPT SMALL O
(Unicode:#$2139; Attr:laLower; CaseCode:#$FFFF), // INFORMATION SOURCE
(Unicode:#$FB00; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE FF
(Unicode:#$FB01; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE FI
(Unicode:#$FB02; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE FL
(Unicode:#$FB03; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE FFI
(Unicode:#$FB04; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE FFL
(Unicode:#$FB05; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE LONG S T
(Unicode:#$FB06; Attr:laLower; CaseCode:#$FFFF), // LATIN SMALL LIGATURE ST
(Unicode:#$FB13; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE MEN NOW
(Unicode:#$FB14; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE MEN ECH
(Unicode:#$FB15; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE MEN INI
(Unicode:#$FB16; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE VEW NOW
(Unicode:#$FB17; Attr:laLower; CaseCode:#$FFFF), // ARMENIAN SMALL LIGATURE MEN XEH
(Unicode:#$FF21; Attr:laUpper; CaseCode:#$FF41), // FULLWIDTH LATIN CAPITAL LETTER A
(Unicode:#$FF22; Attr:laUpper; CaseCode:#$FF42), // FULLWIDTH LATIN CAPITAL LETTER B
(Unicode:#$FF23; Attr:laUpper; CaseCode:#$FF43), // FULLWIDTH LATIN CAPITAL LETTER C
(Unicode:#$FF24; Attr:laUpper; CaseCode:#$FF44), // FULLWIDTH LATIN CAPITAL LETTER D
(Unicode:#$FF25; Attr:laUpper; CaseCode:#$FF45), // FULLWIDTH LATIN CAPITAL LETTER E
(Unicode:#$FF26; Attr:laUpper; CaseCode:#$FF46), // FULLWIDTH LATIN CAPITAL LETTER F
(Unicode:#$FF27; Attr:laUpper; CaseCode:#$FF47), // FULLWIDTH LATIN CAPITAL LETTER G
(Unicode:#$FF28; Attr:laUpper; CaseCode:#$FF48), // FULLWIDTH LATIN CAPITAL LETTER H
(Unicode:#$FF29; Attr:laUpper; CaseCode:#$FF49), // FULLWIDTH LATIN CAPITAL LETTER I
(Unicode:#$FF2A; Attr:laUpper; CaseCode:#$FF4A), // FULLWIDTH LATIN CAPITAL LETTER J
(Unicode:#$FF2B; Attr:laUpper; CaseCode:#$FF4B), // FULLWIDTH LATIN CAPITAL LETTER K
(Unicode:#$FF2C; Attr:laUpper; CaseCode:#$FF4C), // FULLWIDTH LATIN CAPITAL LETTER L
(Unicode:#$FF2D; Attr:laUpper; CaseCode:#$FF4D), // FULLWIDTH LATIN CAPITAL LETTER M
(Unicode:#$FF2E; Attr:laUpper; CaseCode:#$FF4E), // FULLWIDTH LATIN CAPITAL LETTER N
(Unicode:#$FF2F; Attr:laUpper; CaseCode:#$FF4F), // FULLWIDTH LATIN CAPITAL LETTER O
(Unicode:#$FF30; Attr:laUpper; CaseCode:#$FF50), // FULLWIDTH LATIN CAPITAL LETTER P
(Unicode:#$FF31; Attr:laUpper; CaseCode:#$FF51), // FULLWIDTH LATIN CAPITAL LETTER Q
(Unicode:#$FF32; Attr:laUpper; CaseCode:#$FF52), // FULLWIDTH LATIN CAPITAL LETTER R
(Unicode:#$FF33; Attr:laUpper; CaseCode:#$FF53), // FULLWIDTH LATIN CAPITAL LETTER S
(Unicode:#$FF34; Attr:laUpper; CaseCode:#$FF54), // FULLWIDTH LATIN CAPITAL LETTER T
(Unicode:#$FF35; Attr:laUpper; CaseCode:#$FF55), // FULLWIDTH LATIN CAPITAL LETTER U
(Unicode:#$FF36; Attr:laUpper; CaseCode:#$FF56), // FULLWIDTH LATIN CAPITAL LETTER V
(Unicode:#$FF37; Attr:laUpper; CaseCode:#$FF57), // FULLWIDTH LATIN CAPITAL LETTER W
(Unicode:#$FF38; Attr:laUpper; CaseCode:#$FF58), // FULLWIDTH LATIN CAPITAL LETTER X
(Unicode:#$FF39; Attr:laUpper; CaseCode:#$FF59), // FULLWIDTH LATIN CAPITAL LETTER Y
(Unicode:#$FF3A; Attr:laUpper; CaseCode:#$FF5A), // FULLWIDTH LATIN CAPITAL LETTER Z
(Unicode:#$FF41; Attr:laLower; CaseCode:#$FF21), // FULLWIDTH LATIN SMALL LETTER A
(Unicode:#$FF42; Attr:laLower; CaseCode:#$FF22), // FULLWIDTH LATIN SMALL LETTER B
(Unicode:#$FF43; Attr:laLower; CaseCode:#$FF23), // FULLWIDTH LATIN SMALL LETTER C
(Unicode:#$FF44; Attr:laLower; CaseCode:#$FF24), // FULLWIDTH LATIN SMALL LETTER D
(Unicode:#$FF45; Attr:laLower; CaseCode:#$FF25), // FULLWIDTH LATIN SMALL LETTER E
(Unicode:#$FF46; Attr:laLower; CaseCode:#$FF26), // FULLWIDTH LATIN SMALL LETTER F
(Unicode:#$FF47; Attr:laLower; CaseCode:#$FF27), // FULLWIDTH LATIN SMALL LETTER G
(Unicode:#$FF48; Attr:laLower; CaseCode:#$FF28), // FULLWIDTH LATIN SMALL LETTER H
(Unicode:#$FF49; Attr:laLower; CaseCode:#$FF29), // FULLWIDTH LATIN SMALL LETTER I
(Unicode:#$FF4A; Attr:laLower; CaseCode:#$FF2A), // FULLWIDTH LATIN SMALL LETTER J
(Unicode:#$FF4B; Attr:laLower; CaseCode:#$FF2B), // FULLWIDTH LATIN SMALL LETTER K
(Unicode:#$FF4C; Attr:laLower; CaseCode:#$FF2C), // FULLWIDTH LATIN SMALL LETTER L
(Unicode:#$FF4D; Attr:laLower; CaseCode:#$FF2D), // FULLWIDTH LATIN SMALL LETTER M
(Unicode:#$FF4E; Attr:laLower; CaseCode:#$FF2E), // FULLWIDTH LATIN SMALL LETTER N
(Unicode:#$FF4F; Attr:laLower; CaseCode:#$FF2F), // FULLWIDTH LATIN SMALL LETTER O
(Unicode:#$FF50; Attr:laLower; CaseCode:#$FF30), // FULLWIDTH LATIN SMALL LETTER P
(Unicode:#$FF51; Attr:laLower; CaseCode:#$FF31), // FULLWIDTH LATIN SMALL LETTER Q
(Unicode:#$FF52; Attr:laLower; CaseCode:#$FF32), // FULLWIDTH LATIN SMALL LETTER R
(Unicode:#$FF53; Attr:laLower; CaseCode:#$FF33), // FULLWIDTH LATIN SMALL LETTER S
(Unicode:#$FF54; Attr:laLower; CaseCode:#$FF34), // FULLWIDTH LATIN SMALL LETTER T
(Unicode:#$FF55; Attr:laLower; CaseCode:#$FF35), // FULLWIDTH LATIN SMALL LETTER U
(Unicode:#$FF56; Attr:laLower; CaseCode:#$FF36), // FULLWIDTH LATIN SMALL LETTER V
(Unicode:#$FF57; Attr:laLower; CaseCode:#$FF37), // FULLWIDTH LATIN SMALL LETTER W
(Unicode:#$FF58; Attr:laLower; CaseCode:#$FF38), // FULLWIDTH LATIN SMALL LETTER X
(Unicode:#$FF59; Attr:laLower; CaseCode:#$FF39), // FULLWIDTH LATIN SMALL LETTER Y
(Unicode:#$FF5A; Attr:laLower; CaseCode:#$FF3A) // FULLWIDTH LATIN SMALL LETTER Z
);
function LocateLetterInfo(const Ch: WideChar): Integer;
var L, H, I : Integer;
D : WideChar;
begin
// Binary search [Avg number of comparisons = Log2(UnicodeLetterEntries) = 10]
L := 0;
H := UnicodeLetterEntries - 1;
Repeat
I := (L + H) div 2;
D := UnicodeLetterInfo[I].Unicode;
if D = Ch then
begin
Result := I;
exit;
end else
if D > Ch then
H := I - 1
else
L := I + 1;
Until L > H;
Result := -1;
end;
function LocateOtherLowerCase(const Ch: WideChar): WideChar;
begin
Case Ord(Ch) of
$2170..$217F : Result := WideChar(Ord(Ch) - $2170 + $2160); // # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
$24D0..$24E9 : Result := WideChar(Ord(Ch) - $24D0 + $24B6); // # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
else
Result := #$0000;
end;
end;
function LocateOtherUpperCase(const Ch: WideChar): WideChar;
begin
Case Ord(Ch) of
$2160..$216F : Result := WideChar(Ord(Ch) - $2160 + $2170); // # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
$24B6..$24CF : Result := WideChar(Ord(Ch) - $24B6 + $24D0); // # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
else
Result := #$0000;
end;
end;
function LocateFoldingTitleCase(const Ch: WideChar): WideString;
begin
if Ord(Ch) < $00DF then
Result := '' else
if Ord(Ch) <= $0587 then
Case Ord(Ch) of
$00DF : Result := #$0053#$0073; // # LATIN SMALL LETTER SHARP S
$0149 : Result := #$02BC#$004E; // # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
$01F0 : Result := #$004A#$030C; // # LATIN SMALL LETTER J WITH CARON
$0390 : Result := #$0399#$0308#$0301; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
$03B0 : Result := #$03A5#$0308#$0301; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
$0587 : Result := #$0535#$0582; // # ARMENIAN SMALL LIGATURE ECH YIWN
else
Result := '';
end else
if Ord(Ch) < $1E96 then
Result := '' else
if Ord(Ch) <= $1FF7 then
Case Ord(Ch) of
$1E96 : Result := #$0048#$0331; // # LATIN SMALL LETTER H WITH LINE BELOW
$1E97 : Result := #$0054#$0308; // # LATIN SMALL LETTER T WITH DIAERESIS
$1E98 : Result := #$0057#$030A; // # LATIN SMALL LETTER W WITH RING ABOVE
$1E99 : Result := #$0059#$030A; // # LATIN SMALL LETTER Y WITH RING ABOVE
$1E9A : Result := #$0041#$02BE; // # LATIN SMALL LETTER A WITH RIGHT HALF RING
$1F50 : Result := #$03A5#$0313; // # GREEK SMALL LETTER UPSILON WITH PSILI
$1F52 : Result := #$03A5#$0313#$0300; // # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
$1F54 : Result := #$03A5#$0313#$0301; // # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
$1F56 : Result := #$03A5#$0313#$0342; // # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
$1FB2 : Result := #$1FBA#$0345; // # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
$1FB4 : Result := #$0386#$0345; // # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
$1FB6 : Result := #$0391#$0342; // # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
$1FB7 : Result := #$0391#$0342#$0345; // # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
$1FC2 : Result := #$1FCA#$0345; // # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
$1FC4 : Result := #$0389#$0345; // # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
$1FC6 : Result := #$0397#$0342; // # GREEK SMALL LETTER ETA WITH PERISPOMENI
$1FC7 : Result := #$0397#$0342#$0345; // # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
$1FD2 : Result := #$0399#$0308#$0300; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
$1FD3 : Result := #$0399#$0308#$0301; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
$1FD6 : Result := #$0399#$0342; // # GREEK SMALL LETTER IOTA WITH PERISPOMENI
$1FD7 : Result := #$0399#$0308#$0342; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
$1FE2 : Result := #$03A5#$0308#$0300; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
$1FE3 : Result := #$03A5#$0308#$0301; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
$1FE4 : Result := #$03A1#$0313; // # GREEK SMALL LETTER RHO WITH PSILI
$1FE6 : Result := #$03A5#$0342; // # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
$1FE7 : Result := #$03A5#$0308#$0342; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
$1FF2 : Result := #$1FFA#$0345; // # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
$1FF4 : Result := #$038F#$0345; // # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
$1FF6 : Result := #$03A9#$0342; // # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
$1FF7 : Result := #$03A9#$0342#$0345; // # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
else
Result := '';
end else
if Ord(Ch) < $FB00 then
Result := '' else
if Ord(Ch) <= $FB17 then
Case Ord(Ch) of
$FB00 : Result := #$0046#$0066; // # LATIN SMALL LIGATURE FF
$FB01 : Result := #$0046#$0069; // # LATIN SMALL LIGATURE FI
$FB02 : Result := #$0046#$006C; // # LATIN SMALL LIGATURE FL
$FB03 : Result := #$0046#$0066#$0069; // # LATIN SMALL LIGATURE FFI
$FB04 : Result := #$0046#$0066#$006C; // # LATIN SMALL LIGATURE FFL
$FB05 : Result := #$0053#$0074; // # LATIN SMALL LIGATURE LONG S T
$FB06 : Result := #$0053#$0074; // # LATIN SMALL LIGATURE ST
$FB13 : Result := #$0544#$0576; // # ARMENIAN SMALL LIGATURE MEN NOW
$FB14 : Result := #$0544#$0565; // # ARMENIAN SMALL LIGATURE MEN ECH
$FB15 : Result := #$0544#$056B; // # ARMENIAN SMALL LIGATURE MEN INI
$FB16 : Result := #$054E#$0576; // # ARMENIAN SMALL LIGATURE VEW NOW
$FB17 : Result := #$0544#$056D; // # ARMENIAN SMALL LIGATURE MEN XEH
else
Result := '';
end
else
Result := '';
end;
function LocateFoldingUpperCase(const Ch: WideChar): WideString;
begin
if Ord(Ch) < $00DF then
Result := '' else
if Ord(Ch) <= $0587 then
Case Ord(Ch) of
$00DF : Result := #$0053#$0053; // # LATIN SMALL LETTER SHARP S
$0149 : Result := #$02BC#$004E; // # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
$01F0 : Result := #$004A#$030C; // # LATIN SMALL LETTER J WITH CARON
$0390 : Result := #$0399#$0308#$0301; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
$03B0 : Result := #$03A5#$0308#$0301; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
$0587 : Result := #$0535#$0552; // # ARMENIAN SMALL LIGATURE ECH YIWN
else
Result := '';
end else
if Ord(Ch) < $1E96 then
Result := '' else
if Ord(Ch) <= $1FFC then
Case Ord(Ch) of
$1E96 : Result := #$0048#$0331; // # LATIN SMALL LETTER H WITH LINE BELOW
$1E97 : Result := #$0054#$0308; // # LATIN SMALL LETTER T WITH DIAERESIS
$1E98 : Result := #$0057#$030A; // # LATIN SMALL LETTER W WITH RING ABOVE
$1E99 : Result := #$0059#$030A; // # LATIN SMALL LETTER Y WITH RING ABOVE
$1E9A : Result := #$0041#$02BE; // # LATIN SMALL LETTER A WITH RIGHT HALF RING
$1F50 : Result := #$03A5#$0313; // # GREEK SMALL LETTER UPSILON WITH PSILI
$1F52 : Result := #$03A5#$0313#$0300; // # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
$1F54 : Result := #$03A5#$0313#$0301; // # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
$1F56 : Result := #$03A5#$0313#$0342; // # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
$1F80 : Result := #$1F08#$0399; // # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
$1F81 : Result := #$1F09#$0399; // # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
$1F82 : Result := #$1F0A#$0399; // # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
$1F83 : Result := #$1F0B#$0399; // # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
$1F84 : Result := #$1F0C#$0399; // # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
$1F85 : Result := #$1F0D#$0399; // # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
$1F86 : Result := #$1F0E#$0399; // # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
$1F87 : Result := #$1F0F#$0399; // # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
$1F88 : Result := #$1F08#$0399; // # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
$1F89 : Result := #$1F09#$0399; // # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
$1F8A : Result := #$1F0A#$0399; // # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
$1F8B : Result := #$1F0B#$0399; // # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
$1F8C : Result := #$1F0C#$0399; // # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
$1F8D : Result := #$1F0D#$0399; // # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
$1F8E : Result := #$1F0E#$0399; // # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
$1F8F : Result := #$1F0F#$0399; // # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
$1F90 : Result := #$1F28#$0399; // # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
$1F91 : Result := #$1F29#$0399; // # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
$1F92 : Result := #$1F2A#$0399; // # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
$1F93 : Result := #$1F2B#$0399; // # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
$1F94 : Result := #$1F2C#$0399; // # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
$1F95 : Result := #$1F2D#$0399; // # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
$1F96 : Result := #$1F2E#$0399; // # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
$1F97 : Result := #$1F2F#$0399; // # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
$1F98 : Result := #$1F28#$0399; // # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
$1F99 : Result := #$1F29#$0399; // # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
$1F9A : Result := #$1F2A#$0399; // # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
$1F9B : Result := #$1F2B#$0399; // # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
$1F9C : Result := #$1F2C#$0399; // # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
$1F9D : Result := #$1F2D#$0399; // # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
$1F9E : Result := #$1F2E#$0399; // # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
$1F9F : Result := #$1F2F#$0399; // # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
$1FA0 : Result := #$1F68#$0399; // # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
$1FA1 : Result := #$1F69#$0399; // # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
$1FA2 : Result := #$1F6A#$0399; // # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
$1FA3 : Result := #$1F6B#$0399; // # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
$1FA4 : Result := #$1F6C#$0399; // # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
$1FA5 : Result := #$1F6D#$0399; // # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
$1FA6 : Result := #$1F6E#$0399; // # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
$1FA7 : Result := #$1F6F#$0399; // # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
$1FA8 : Result := #$1F68#$0399; // # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
$1FA9 : Result := #$1F69#$0399; // # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
$1FAA : Result := #$1F6A#$0399; // # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
$1FAB : Result := #$1F6B#$0399; // # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
$1FAC : Result := #$1F6C#$0399; // # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
$1FAD : Result := #$1F6D#$0399; // # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
$1FAE : Result := #$1F6E#$0399; // # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
$1FAF : Result := #$1F6F#$0399; // # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
$1FB2 : Result := #$1FBA#$0399; // # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
$1FB3 : Result := #$0391#$0399; // # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
$1FB4 : Result := #$0386#$0399; // # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
$1FB6 : Result := #$0391#$0342; // # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
$1FB7 : Result := #$0391#$0342#$0399; // # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
$1FBC : Result := #$0391#$0399; // # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
$1FC2 : Result := #$1FCA#$0399; // # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
$1FC3 : Result := #$0397#$0399; // # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
$1FC4 : Result := #$0389#$0399; // # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
$1FC6 : Result := #$0397#$0342; // # GREEK SMALL LETTER ETA WITH PERISPOMENI
$1FC7 : Result := #$0397#$0342#$0399; // # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
$1FCC : Result := #$0397#$0399; // # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
$1FD2 : Result := #$0399#$0308#$0300; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
$1FD3 : Result := #$0399#$0308#$0301; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
$1FD6 : Result := #$0399#$0342; // # GREEK SMALL LETTER IOTA WITH PERISPOMENI
$1FD7 : Result := #$0399#$0308#$0342; // # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
$1FE2 : Result := #$03A5#$0308#$0300; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
$1FE3 : Result := #$03A5#$0308#$0301; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
$1FE4 : Result := #$03A1#$0313; // # GREEK SMALL LETTER RHO WITH PSILI
$1FE6 : Result := #$03A5#$0342; // # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
$1FE7 : Result := #$03A5#$0308#$0342; // # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
$1FF2 : Result := #$1FFA#$0399; // # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
$1FF3 : Result := #$03A9#$0399; // # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
$1FF4 : Result := #$038F#$0399; // # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
$1FF6 : Result := #$03A9#$0342; // # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
$1FF7 : Result := #$03A9#$0342#$0399; // # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
$1FFC : Result := #$03A9#$0399; // # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
else
Result := '';
end else
if Ord(Ch) < $FB00 then
Result := '' else
if Ord(Ch) <= $FB17 then
Case Ord(Ch) of
$FB00 : Result := #$0046#$0046; // # LATIN SMALL LIGATURE FF
$FB01 : Result := #$0046#$0049; // # LATIN SMALL LIGATURE FI
$FB02 : Result := #$0046#$004C; // # LATIN SMALL LIGATURE FL
$FB03 : Result := #$0046#$0046#$0049; // # LATIN SMALL LIGATURE FFI
$FB04 : Result := #$0046#$0046#$004C; // # LATIN SMALL LIGATURE FFL
$FB05 : Result := #$0053#$0054; // # LATIN SMALL LIGATURE LONG S T
$FB06 : Result := #$0053#$0054; // # LATIN SMALL LIGATURE ST
$FB13 : Result := #$0544#$0546; // # ARMENIAN SMALL LIGATURE MEN NOW
$FB14 : Result := #$0544#$0535; // # ARMENIAN SMALL LIGATURE MEN ECH
$FB15 : Result := #$0544#$053B; // # ARMENIAN SMALL LIGATURE MEN INI
$FB16 : Result := #$054E#$0546; // # ARMENIAN SMALL LIGATURE VEW NOW
$FB17 : Result := #$0544#$053D; // # ARMENIAN SMALL LIGATURE MEN XEH
else
Result := '';
end
else
Result := '';
end;
function LocateFoldingLowerCase(const Ch: WideChar): WideString;
begin
if Ch = #$0130 then
Result := #$0069#$0307
else
Result := '';
end;
function IsUpperCase(const Ch: WideChar): Boolean;
var I : Integer;
begin
I := LocateLetterInfo(Ch);
if I >= 0 then
Result := UnicodeLetterInfo[I].Attr = laUpper
else
Result := LocateOtherUpperCase(Ch) <> #$0000;
end;
function IsLowerCase(const Ch: WideChar): Boolean;
var I : Integer;
begin
I := LocateLetterInfo(Ch);
if I >= 0 then
Result := UnicodeLetterInfo[I].Attr = laLower
else
Result := LocateOtherLowerCase(Ch) <> #$0000;
end;
type
TUnicodeTitleCaseLetterInfo = packed record
Unicode : WideChar;
Upper : WideChar;
Lower : WideChar;
end;
PUnicodeTitleCaseLetterInfo = ^TUnicodeTitleCaseLetterInfo;
const
// Derived from 'Lt' class
UnicodeTitleCaseLetterEntries = 31;
UnicodeTitleCaseLetterInfo : Array[0..UnicodeTitleCaseLetterEntries - 1] of TUnicodeTitleCaseLetterInfo = (
(Unicode:#$01C5; Upper:#$01C4; Lower:#$01C6), // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
(Unicode:#$01C8; Upper:#$01C7; Lower:#$01C9), // LATIN CAPITAL LETTER L WITH SMALL LETTER J
(Unicode:#$01CB; Upper:#$01CA; Lower:#$01CC), // LATIN CAPITAL LETTER N WITH SMALL LETTER J
(Unicode:#$01F2; Upper:#$01F1; Lower:#$01F3), // LATIN CAPITAL LETTER D WITH SMALL LETTER Z
(Unicode:#$1F88; Upper:#$FFFF; Lower:#$1F80), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
(Unicode:#$1F89; Upper:#$FFFF; Lower:#$1F81), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
(Unicode:#$1F8A; Upper:#$FFFF; Lower:#$1F82), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1F8B; Upper:#$FFFF; Lower:#$1F83), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1F8C; Upper:#$FFFF; Lower:#$1F84), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1F8D; Upper:#$FFFF; Lower:#$1F85), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1F8E; Upper:#$FFFF; Lower:#$1F86), // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1F8F; Upper:#$FFFF; Lower:#$1F87), // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1F98; Upper:#$FFFF; Lower:#$1F90), // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
(Unicode:#$1F99; Upper:#$FFFF; Lower:#$1F91), // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
(Unicode:#$1F9A; Upper:#$FFFF; Lower:#$1F92), // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1F9B; Upper:#$FFFF; Lower:#$1F93), // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1F9C; Upper:#$FFFF; Lower:#$1F94), // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1F9D; Upper:#$FFFF; Lower:#$1F95), // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1F9E; Upper:#$FFFF; Lower:#$1F96), // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1F9F; Upper:#$FFFF; Lower:#$1F97), // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1FA8; Upper:#$FFFF; Lower:#$1FA0), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
(Unicode:#$1FA9; Upper:#$FFFF; Lower:#$1FA1), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
(Unicode:#$1FAA; Upper:#$FFFF; Lower:#$1FA2), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1FAB; Upper:#$FFFF; Lower:#$1FA3), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
(Unicode:#$1FAC; Upper:#$FFFF; Lower:#$1FA4), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1FAD; Upper:#$FFFF; Lower:#$1FA5), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
(Unicode:#$1FAE; Upper:#$FFFF; Lower:#$1FA6), // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1FAF; Upper:#$FFFF; Lower:#$1FA7), // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
(Unicode:#$1FBC; Upper:#$FFFF; Lower:#$1FB3), // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
(Unicode:#$1FCC; Upper:#$FFFF; Lower:#$1FC3), // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
(Unicode:#$1FFC; Upper:#$FFFF; Lower:#$1FF3) // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
);
function LocateTitleCaseLetterInfo(const Ch: WideChar): Integer;
var I : Integer;
begin
if (Ord(Ch) < $01C5) or (Ord(Ch) > $1FFC) then
Result := -1 else
if (Ord(Ch) > $01F2) and (Ord(Ch) < $1F88) then
Result := -1 else
begin
For I := 0 to UnicodeTitleCaseLetterEntries - 1 do
if UnicodeTitleCaseLetterInfo[I].Unicode = Ch then
begin
Result := I;
exit;
end;
Result := -1;
end;
end;
function IsTitleCase(const Ch: WideChar): Boolean;
begin
Result := LocateTitleCaseLetterInfo(Ch) >= 0;
end;
function WideUpCase(const Ch: WideChar): WideChar;
var I : Integer;
J : Integer;
C : WideChar;
P : PUnicodeLetterInfo;
begin
if Ord(Ch) < $80 then // ASCII short-cut
begin
if Char(Ord(Ch)) in ['a'..'z'] then
Result := WideChar(Ord(Ch) - (Ord('a') - Ord('A'))) else
Result := Ch;
end else
begin
I := LocateLetterInfo(Ch);
if I >= 0 then
begin
P := @UnicodeLetterInfo[I];
if P^.Attr = laUpper then
Result := Ch else
begin
C := P^.CaseCode;
if C = #$FFFF then
Result := Ch else
Result := C;
end;
end else
begin
J := LocateTitleCaseLetterInfo(Ch);
if J >= 0 then
begin
C := UnicodeTitleCaseLetterInfo[J].Upper;
if C = #$FFFF then
Result := Ch else
Result := C;
end else
begin
C := LocateOtherLowerCase(Ch);
if C = #$0000 then
Result := Ch else
Result := C;
end;
end;
end;
end;
function WideUpCaseFolding(const Ch: WideChar): WideString;
var R : WideChar;
begin
R := WideUpCase(Ch);
if R = Ch then
begin
Result := LocateFoldingUpperCase(Ch);
if Result = '' then
Result := Ch;
end
else
Result := R;
end;
function WideLowCase(const Ch: WideChar): WideChar;
var I : Integer;
J : Integer;
C : WideChar;
P : PUnicodeLetterInfo;
begin
if Ord(Ch) < $80 then // ASCII short-cut
begin
if Char(Ord(Ch)) in ['A'..'Z'] then
Result := WideChar(Ord(Ch) + (Ord('a') - Ord('A'))) else
Result := Ch;
end else
begin
I := LocateLetterInfo(Ch);
if I >= 0 then
begin
P := @UnicodeLetterInfo[I];
if P^.Attr = laLower then
Result := Ch else
begin
C := P^.CaseCode;
if C = #$FFFF then
Result := Ch else
Result := C;
end;
end else
begin
J := LocateTitleCaseLetterInfo(Ch);
if J >= 0 then
begin
C := UnicodeTitleCaseLetterInfo[J].Lower;
if C = #$FFFF then
Result := Ch else
Result := C;
end else
begin
C := LocateOtherUpperCase(Ch);
if C = #$0000 then
Result := Ch else
Result := C;
end;
end;
end;
end;
function WideLowCaseFolding(const Ch: WideChar): WideString;
var R : WideChar;
begin
R := WideLowCase(Ch);
if R = Ch then
begin
Result := LocateFoldingLowerCase(Ch);
if Result = '' then
Result := Ch;
end else
Result := R;
end;
function WideTitleCaseFolding(const Ch: WideChar): WideString;
begin
Result := LocateFoldingTitleCase(Ch);
if Result = '' then
Result := Ch;
end;
function WideIsEqualNoCase(const A, B: WideChar): Boolean;
var I : Integer;
J : Integer;
C, D : Char;
E, F : WideChar;
P : PUnicodeTitleCaseLetterInfo;
begin
Result := A = B;
if Result then
exit;
if (Ord(A) < $80) and (Ord(B) < $80) then // ASCII short-cut
begin
if Char(Ord(A)) in ['A'..'Z'] then
C := Char(Byte(Ord(A)) + (Ord('a') - Ord('A'))) else
C := Char(Ord(A));
if Char(Ord(B)) in ['A'..'Z'] then
D := Char(Byte (Ord(B)) + (Ord('a') - Ord('A'))) else
D := Char(Ord(B));
Result := C = D;
exit;
end;
I := LocateLetterInfo(A);
if I >= 0 then
begin
E := UnicodeLetterInfo[I].CaseCode;
if E = #$FFFF then
Result := False else
Result := E = B;
exit;
end;
J := LocateTitleCaseLetterInfo(A);
if J >= 0 then
begin
P := @UnicodeTitleCaseLetterInfo[J];
E := P^.Upper;
F := P^.Lower;
Result := ((E <> #$FFFF) and (E = B)) or
((F <> #$FFFF) and (F = B));
exit;
end;
E := LocateOtherLowerCase(A);
if E <> #$0000 then
Result := E = B else
Result := False;
end;
// Derived from 'Lo' class
function IsOtherLetter(const Ch: UCS4Char): Boolean;
begin
Case Ch of
$01BB, // LATIN LETTER TWO WITH STROKE
$01C0..$01C3, // [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
$05D0..$05EA, // [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
$05F0..$05F2, // [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
$0621..$063A, // [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
$0641..$064A, // [10] ARABIC LETTER FEH..ARABIC LETTER YEH
$066E..$066F, // [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
$0671..$06D3, // [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
$06D5, // ARABIC LETTER AE
$06FA..$06FC, // [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
$0710, // SYRIAC LETTER ALAPH
$0712..$072C, // [27] SYRIAC LETTER BETH..SYRIAC LETTER TAW
$0780..$07A5, // [38] THAANA LETTER HAA..THAANA LETTER WAAVU
$07B1, // THAANA LETTER NAA
$0905..$0939, // [53] DEVANAGARI LETTER A..DEVANAGARI LETTER HA
$093D, // DEVANAGARI SIGN AVAGRAHA
$0950, // DEVANAGARI OM
$0958..$0961, // [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
$0985..$098C, // [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
$098F..$0990, // [2] BENGALI LETTER E..BENGALI LETTER AI
$0993..$09A8, // [22] BENGALI LETTER O..BENGALI LETTER NA
$09AA..$09B0, // [7] BENGALI LETTER PA..BENGALI LETTER RA
$09B2, // BENGALI LETTER LA
$09B6..$09B9, // [4] BENGALI LETTER SHA..BENGALI LETTER HA
$09DC..$09DD, // [2] BENGALI LETTER RRA..BENGALI LETTER RHA
$09DF..$09E1, // [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
$09F0..$09F1, // [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
$0A05..$0A0A, // [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
$0A0F..$0A10, // [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
$0A13..$0A28, // [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
$0A2A..$0A30, // [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
$0A32..$0A33, // [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
$0A35..$0A36, // [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
$0A38..$0A39, // [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
$0A59..$0A5C, // [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
$0A5E, // GURMUKHI LETTER FA
$0A72..$0A74, // [3] GURMUKHI IRI..GURMUKHI EK ONKAR
$0A85..$0A8B, // [7] GUJARATI LETTER A..GUJARATI LETTER VOCALIC R
$0A8D, // GUJARATI VOWEL CANDRA E
$0A8F..$0A91, // [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
$0A93..$0AA8, // [22] GUJARATI LETTER O..GUJARATI LETTER NA
$0AAA..$0AB0, // [7] GUJARATI LETTER PA..GUJARATI LETTER RA
$0AB2..$0AB3, // [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
$0AB5..$0AB9, // [5] GUJARATI LETTER VA..GUJARATI LETTER HA
$0ABD, // GUJARATI SIGN AVAGRAHA
$0AD0, // GUJARATI OM
$0AE0, // GUJARATI LETTER VOCALIC RR
$0B05..$0B0C, // [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
$0B0F..$0B10, // [2] ORIYA LETTER E..ORIYA LETTER AI
$0B13..$0B28, // [22] ORIYA LETTER O..ORIYA LETTER NA
$0B2A..$0B30, // [7] ORIYA LETTER PA..ORIYA LETTER RA
$0B32..$0B33, // [2] ORIYA LETTER LA..ORIYA LETTER LLA
$0B36..$0B39, // [4] ORIYA LETTER SHA..ORIYA LETTER HA
$0B3D, // ORIYA SIGN AVAGRAHA
$0B5C..$0B5D, // [2] ORIYA LETTER RRA..ORIYA LETTER RHA
$0B5F..$0B61, // [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
$0B83, // TAMIL SIGN VISARGA
$0B85..$0B8A, // [6] TAMIL LETTER A..TAMIL LETTER UU
$0B8E..$0B90, // [3] TAMIL LETTER E..TAMIL LETTER AI
$0B92..$0B95, // [4] TAMIL LETTER O..TAMIL LETTER KA
$0B99..$0B9A, // [2] TAMIL LETTER NGA..TAMIL LETTER CA
$0B9C, // TAMIL LETTER JA
$0B9E..$0B9F, // [2] TAMIL LETTER NYA..TAMIL LETTER TTA
$0BA3..$0BA4, // [2] TAMIL LETTER NNA..TAMIL LETTER TA
$0BA8..$0BAA, // [3] TAMIL LETTER NA..TAMIL LETTER PA
$0BAE..$0BB5, // [8] TAMIL LETTER MA..TAMIL LETTER VA
$0BB7..$0BB9, // [3] TAMIL LETTER SSA..TAMIL LETTER HA
$0C05..$0C0C, // [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
$0C0E..$0C10, // [3] TELUGU LETTER E..TELUGU LETTER AI
$0C12..$0C28, // [23] TELUGU LETTER O..TELUGU LETTER NA
$0C2A..$0C33, // [10] TELUGU LETTER PA..TELUGU LETTER LLA
$0C35..$0C39, // [5] TELUGU LETTER VA..TELUGU LETTER HA
$0C60..$0C61, // [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
$0C85..$0C8C, // [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
$0C8E..$0C90, // [3] KANNADA LETTER E..KANNADA LETTER AI
$0C92..$0CA8, // [23] KANNADA LETTER O..KANNADA LETTER NA
$0CAA..$0CB3, // [10] KANNADA LETTER PA..KANNADA LETTER LLA
$0CB5..$0CB9, // [5] KANNADA LETTER VA..KANNADA LETTER HA
$0CDE, // KANNADA LETTER FA
$0CE0..$0CE1, // [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
$0D05..$0D0C, // [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
$0D0E..$0D10, // [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
$0D12..$0D28, // [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
$0D2A..$0D39, // [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
$0D60..$0D61, // [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
$0D85..$0D96, // [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
$0D9A..$0DB1, // [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
$0DB3..$0DBB, // [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
$0DBD, // SINHALA LETTER DANTAJA LAYANNA
$0DC0..$0DC6, // [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
$0E01..$0E30, // [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
$0E32..$0E33, // [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
$0E40..$0E45, // [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
$0E81..$0E82, // [2] LAO LETTER KO..LAO LETTER KHO SUNG
$0E84, // LAO LETTER KHO TAM
$0E87..$0E88, // [2] LAO LETTER NGO..LAO LETTER CO
$0E8A, // LAO LETTER SO TAM
$0E8D, // LAO LETTER NYO
$0E94..$0E97, // [4] LAO LETTER DO..LAO LETTER THO TAM
$0E99..$0E9F, // [7] LAO LETTER NO..LAO LETTER FO SUNG
$0EA1..$0EA3, // [3] LAO LETTER MO..LAO LETTER LO LING
$0EA5, // LAO LETTER LO LOOT
$0EA7, // LAO LETTER WO
$0EAA..$0EAB, // [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
$0EAD..$0EB0, // [4] LAO LETTER O..LAO VOWEL SIGN A
$0EB2..$0EB3, // [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
$0EBD, // LAO SEMIVOWEL SIGN NYO
$0EC0..$0EC4, // [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
$0EDC..$0EDD, // [2] LAO HO NO..LAO HO MO
$0F00, // TIBETAN SYLLABLE OM
$0F40..$0F47, // [8] TIBETAN LETTER KA..TIBETAN LETTER JA
$0F49..$0F6A, // [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
$0F88..$0F8B, // [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
$1000..$1021, // [34] MYANMAR LETTER KA..MYANMAR LETTER A
$1023..$1027, // [5] MYANMAR LETTER I..MYANMAR LETTER E
$1029..$102A, // [2] MYANMAR LETTER O..MYANMAR LETTER AU
$1050..$1055, // [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
$10D0..$10F8, // [41] GEORGIAN LETTER AN..GEORGIAN LETTER ELIFI
$1100..$1159, // [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
$115F..$11A2, // [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
$11A8..$11F9, // [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
$1200..$1206, // [7] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO
$1208..$1246, // [63] ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO
$1248, // ETHIOPIC SYLLABLE QWA
$124A..$124D, // [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
$1250..$1256, // [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
$1258, // ETHIOPIC SYLLABLE QHWA
$125A..$125D, // [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
$1260..$1286, // [39] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO
$1288, // ETHIOPIC SYLLABLE XWA
$128A..$128D, // [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
$1290..$12AE, // [31] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO
$12B0, // ETHIOPIC SYLLABLE KWA
$12B2..$12B5, // [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
$12B8..$12BE, // [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
$12C0, // ETHIOPIC SYLLABLE KXWA
$12C2..$12C5, // [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
$12C8..$12CE, // [7] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO
$12D0..$12D6, // [7] ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O
$12D8..$12EE, // [23] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO
$12F0..$130E, // [31] ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO
$1310, // ETHIOPIC SYLLABLE GWA
$1312..$1315, // [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
$1318..$131E, // [7] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO
$1320..$1346, // [39] ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO
$1348..$135A, // [19] ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA
$13A0..$13F4, // [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
$1401..$166C, // [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
$166F..$1676, // [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
$1681..$169A, // [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
$16A0..$16EA, // [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
$1700..$170C, // [13] TAGALOG LETTER A..TAGALOG LETTER YA
$170E..$1711, // [4] TAGALOG LETTER LA..TAGALOG LETTER HA
$1720..$1731, // [18] HANUNOO LETTER A..HANUNOO LETTER HA
$1740..$1751, // [18] BUHID LETTER A..BUHID LETTER HA
$1760..$176C, // [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
$176E..$1770, // [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
$1780..$17B3, // [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
$17DC, // KHMER SIGN AVAKRAHASANYA
$1820..$1842, // [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
$1844..$1877, // [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
$1880..$18A8, // [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
$2135..$2138, // [4] ALEF SYMBOL..DALET SYMBOL
$3006, // IDEOGRAPHIC CLOSING MARK
$303C, // MASU MARK
$3041..$3096, // [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
$309F, // HIRAGANA DIGRAPH YORI
$30A1..$30FA, // [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
$30FF, // KATAKANA DIGRAPH KOTO
$3105..$312C, // [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
$3131..$318E, // [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
$31A0..$31B7, // [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
$31F0..$31FF, // [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
$3400..$4DB5, // [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
$4E00..$9FA5, // [20902] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5
$A000..$A48C, // [1165] YI SYLLABLE IT..YI SYLLABLE YYR
$AC00..$D7A3, // [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
$F900..$FA2D, // [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
$FA30..$FA6A, // [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
$FB1D, // HEBREW LETTER YOD WITH HIRIQ
$FB1F..$FB28, // [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
$FB2A..$FB36, // [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
$FB38..$FB3C, // [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
$FB3E, // HEBREW LETTER MEM WITH DAGESH
$FB40..$FB41, // [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
$FB43..$FB44, // [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
$FB46..$FBB1, // [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
$FBD3..$FD3D, // [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
$FD50..$FD8F, // [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
$FD92..$FDC7, // [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
$FDF0..$FDFB, // [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
$FE70..$FE74, // [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
$FE76..$FEFC, // [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
$FF66..$FF6F, // [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
$FF71..$FF9D, // [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
$FFA0..$FFBE, // [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
$FFC2..$FFC7, // [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
$FFCA..$FFCF, // [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
$FFD2..$FFD7, // [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
$FFDA..$FFDC, // [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
$10300..$1031E, // [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
$10330..$10349, // [26] GOTHIC LETTER AHSA..GOTHIC LETTER OTHAL
$20000..$2A6D6, // [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
$2F800..$2FA1D : // [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
Result := True;
else
Result := False;
end;
end;
function IsLetter(const Ch: WideChar): Boolean;
begin
if Ord(Ch) < $80 then // ASCII short-cut
Result := Char(Ord(Ch)) in ['A'..'Z', 'a'..'z']
else
begin
Result := LocateLetterInfo(Ch) >= 0;
if Result then
exit;
Result := LocateTitleCaseLetterInfo(Ch) >= 0;
if Result then
exit;
Result := IsOtherLetter(Ord(Ch));
end;
end;
function IsAlphabetic(const Ch: WideChar): Boolean;
begin
Result := IsLetter(Ch);
if Result then
exit;
Case Ord(Ch) of
$02B0..$02B8, // # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
$02BB..$02C1, // # Lm [7] MODIFIER LETTER TURNED COMMA..MODIFIER LETTER REVERSED GLOTTAL STOP
$02D0..$02D1, // # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON
$02E0..$02E4, // # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
$02EE, // # Lm MODIFIER LETTER DOUBLE APOSTROPHE
$0345, // # Mn COMBINING GREEK YPOGEGRAMMENI
$037A, // # Lm GREEK YPOGEGRAMMENI
$0559, // # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
$05B0..$05B9, // # Mn [10] HEBREW POINT SHEVA..HEBREW POINT HOLAM
$05BB..$05BD, // # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG
$05BF, // # Mn HEBREW POINT RAFE
$05C1..$05C2, // # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
$05C4, // # Mn HEBREW MARK UPPER DOT
$0640, // # Lm ARABIC TATWEEL
$064B..$0655, // # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
$0670, // # Mn ARABIC LETTER SUPERSCRIPT ALEF
$06D6..$06DC, // # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
$06E1..$06E4, // # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA
$06E5..$06E6, // # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
$06E7..$06E8, // # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
$06ED, // # Mn ARABIC SMALL LOW MEEM
$0711, // # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
$0730..$073F, // # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA
$07A6..$07B0, // # Mn [11] THAANA ABAFILI..THAANA SUKUN
$0901..$0902, // # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
$0903, // # Mc DEVANAGARI SIGN VISARGA
$093E..$0940, // # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
$0941..$0948, // # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
$0949..$094C, // # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
$0962..$0963, // # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
$0981, // # Mn BENGALI SIGN CANDRABINDU
$0982..$0983, // # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
$09BE..$09C0, // # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
$09C1..$09C4, // # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
$09C7..$09C8, // # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
$09CB..$09CC, // # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
$09D7, // # Mc BENGALI AU LENGTH MARK
$09E2..$09E3, // # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
$0A02, // # Mn GURMUKHI SIGN BINDI
$0A3E..$0A40, // # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
$0A41..$0A42, // # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
$0A47..$0A48, // # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
$0A4B..$0A4C, // # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
$0A70..$0A71, // # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
$0A81..$0A82, // # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
$0A83, // # Mc GUJARATI SIGN VISARGA
$0ABE..$0AC0, // # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
$0AC1..$0AC5, // # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
$0AC7..$0AC8, // # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
$0AC9, // # Mc GUJARATI VOWEL SIGN CANDRA O
$0ACB..$0ACC, // # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
$0B01, // # Mn ORIYA SIGN CANDRABINDU
$0B02..$0B03, // # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
$0B3E, // # Mc ORIYA VOWEL SIGN AA
$0B3F, // # Mn ORIYA VOWEL SIGN I
$0B40, // # Mc ORIYA VOWEL SIGN II
$0B41..$0B43, // # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
$0B47..$0B48, // # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
$0B4B..$0B4C, // # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
$0B56, // # Mn ORIYA AI LENGTH MARK
$0B57, // # Mc ORIYA AU LENGTH MARK
$0B82, // # Mn TAMIL SIGN ANUSVARA
$0BBE..$0BBF, // # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
$0BC0, // # Mn TAMIL VOWEL SIGN II
$0BC1..$0BC2, // # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
$0BC6..$0BC8, // # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
$0BCA..$0BCC, // # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
$0BD7, // # Mc TAMIL AU LENGTH MARK
$0C01..$0C03, // # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
$0C3E..$0C40, // # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
$0C41..$0C44, // # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
$0C46..$0C48, // # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
$0C4A..$0C4C, // # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
$0C55..$0C56, // # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
$0C82..$0C83, // # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
$0CBE, // # Mc KANNADA VOWEL SIGN AA
$0CBF, // # Mn KANNADA VOWEL SIGN I
$0CC0..$0CC4, // # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
$0CC6, // # Mn KANNADA VOWEL SIGN E
$0CC7..$0CC8, // # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
$0CCA..$0CCB, // # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
$0CCC, // # Mn KANNADA VOWEL SIGN AU
$0CD5..$0CD6, // # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
$0D02..$0D03, // # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
$0D3E..$0D40, // # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
$0D41..$0D43, // # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
$0D46..$0D48, // # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
$0D4A..$0D4C, // # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
$0D57, // # Mc MALAYALAM AU LENGTH MARK
$0D82..$0D83, // # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
$0DCF..$0DD1, // # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
$0DD2..$0DD4, // # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
$0DD6, // # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
$0DD8..$0DDF, // # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
$0DF2..$0DF3, // # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
$0E31, // # Mn THAI CHARACTER MAI HAN-AKAT
$0E34..$0E3A, // # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
$0E46, // # Lm THAI CHARACTER MAIYAMOK
$0E4D, // # Mn THAI CHARACTER NIKHAHIT
$0EB1, // # Mn LAO VOWEL SIGN MAI KAN
$0EB4..$0EB9, // # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
$0EBB..$0EBC, // # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
$0EC6, // # Lm LAO KO LA
$0ECD, // # Mn LAO NIGGAHITA
$0F71..$0F7E, // # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
$0F7F, // # Mc TIBETAN SIGN RNAM BCAD
$0F80..$0F81, // # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II
$0F90..$0F97, // # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
$0F99..$0FBC, // # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
$102C, // # Mc MYANMAR VOWEL SIGN AA
$102D..$1030, // # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
$1031, // # Mc MYANMAR VOWEL SIGN E
$1032, // # Mn MYANMAR VOWEL SIGN AI
$1036, // # Mn MYANMAR SIGN ANUSVARA
$1038, // # Mc MYANMAR SIGN VISARGA
$1056..$1057, // # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
$1058..$1059, // # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
$16EE..$16F0, // # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
$1712..$1713, // # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
$1732..$1733, // # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
$1752..$1753, // # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
$1772..$1773, // # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
$17B4..$17B6, // # Mc [3] KHMER VOWEL INHERENT AQ..KHMER VOWEL SIGN AA
$17B7..$17BD, // # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
$17BE..$17C5, // # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
$17C6, // # Mn KHMER SIGN NIKAHIT
$17C7..$17C8, // # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
$17D7, // # Lm KHMER SIGN LEK TOO
$1843, // # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
$18A9, // # Mn MONGOLIAN LETTER ALI GALI DAGALGA
$2160..$2183, // # Nl [36] ROMAN NUMERAL ONE..ROMAN NUMERAL REVERSED ONE HUNDRED
$3005, // # Lm IDEOGRAPHIC ITERATION MARK
$3007, // # Nl IDEOGRAPHIC NUMBER ZERO
$3021..$3029, // # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
$3031..$3035, // # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
$3038..$303A, // # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
$303B, // # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
$309D..$309E, // # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
$30FC..$30FE, // # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
$FB1E, // # Mn HEBREW POINT JUDEO-SPANISH VARIKA
$FF70, // # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
$FF9E..$FF9F : // # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
Result := True;
else
Result := False;
end;
end;
function GetCombiningClass(const Ch: WideChar): Byte;
begin
if Ord(Ch) < $0300 then
Result := 0 else
Case Ord(Ch) of
$0300..$0319 : Result := 230;
$031A : Result := 232;
$031B : Result := 216;
$031C..$0320 : Result := 220;
$0321..$0322 : Result := 202;
$0323..$0326 : Result := 220;
$0327..$0328 : Result := 202;
$0329..$0333 : Result := 220;
$0334..$0338 : Result := 1;
$0339..$033C : Result := 220;
$033D..$0344 : Result := 230;
$0345 : Result := 240;
$0346 : Result := 230;
$0347..$0349 : Result := 220;
$034A..$034C : Result := 230;
$034D..$034E : Result := 220;
$0360..$0361 : Result := 234;
$0362 : Result := 233;
$0483..$0486 : Result := 230;
$0591 : Result := 220;
$0592..$0595 : Result := 230;
$0596 : Result := 220;
$0597..$0599 : Result := 230;
$059A : Result := 222;
$059B : Result := 220;
$059C..$05A1 : Result := 230;
$05A3..$05A4 : Result := 220;
$05A8..$05A9 : Result := 230;
$05AA : Result := 220;
$05AB..$05AC : Result := 230;
$05AD : Result := 222;
$05AE : Result := 228;
$05AF : Result := 230;
$05B0..$05B9 : Result := Ord(Ch) - $05B0 + 10;
$05BB : Result := 20;
$05BC : Result := 21;
$05BD : Result := 22;
$05BF : Result := 23;
$05C1 : Result := 24;
$05C2 : Result := 25;
$05C4 : Result := 230;
$064B..$0652 : Result := Ord(Ch) - $064B + 27;
$0653..$0654 : Result := 230;
$0655 : Result := 220;
$0670 : Result := 35;
$06D6..$06DC : Result := 230;
$06DF..$06E2 : Result := 230;
$06E3 : Result := 220;
$06E4 : Result := 230;
$06E7..$06E8 : Result := 230;
$06EA : Result := 220;
$06EB..$06EC : Result := 230;
$06ED : Result := 220;
$0711 : Result := 36;
$0730 : Result := 230;
$0731 : Result := 220;
$0732..$0733 : Result := 230;
$0734 : Result := 220;
$0735..$0736 : Result := 230;
$0737..$0739 : Result := 220;
$073A : Result := 230;
$073B..$073C : Result := 220;
$073D : Result := 230;
$073E : Result := 220;
$073F..$0741 : Result := 230;
$0742 : Result := 220;
$0743 : Result := 230;
$0744 : Result := 220;
$0745 : Result := 230;
$0746 : Result := 220;
$0747 : Result := 230;
$0748 : Result := 220;
$0749..$074A : Result := 230;
$093C : Result := 7;
$094D : Result := 9;
$0951 : Result := 230;
$0952 : Result := 220;
$0953..$0954 : Result := 230;
$09BC : Result := 7;
$09CD : Result := 9;
$0A3C : Result := 7;
$0A4D : Result := 9;
$0ABC : Result := 7;
$0ACD : Result := 9;
$0B3C : Result := 7;
$0B4D : Result := 9;
$0BCD : Result := 9;
$0C4D : Result := 9;
$0C55 : Result := 84;
$0C56 : Result := 91;
$0CCD : Result := 9;
$0D4D : Result := 9;
$0DCA : Result := 9;
$0E38..$0E39 : Result := 103;
$0E3A : Result := 9;
$0E48..$0E4B : Result := 107;
$0EB8..$0EB9 : Result := 118;
$0EC8..$0ECB : Result := 122;
$0F18..$0F19 : Result := 220;
$0F35 : Result := 220;
$0F37 : Result := 220;
$0F39 : Result := 216;
$0F71 : Result := 129;
$0F72 : Result := 130;
$0F74 : Result := 132;
$0F7A..$0F7D : Result := 130;
$0F80 : Result := 130;
$0F82..$0F83 : Result := 230;
$0F84 : Result := 9;
$0F86..$0F87 : Result := 230;
$0FC6 : Result := 220;
$1037 : Result := 7;
$1039 : Result := 9;
$17D2 : Result := 9;
$18A9 : Result := 228;
$20D0..$20D1 : Result := 230;
$20D2..$20D3 : Result := 1;
$20D4..$20D7 : Result := 230;
$20D8..$20DA : Result := 1;
$20DB..$20DC : Result := 230;
$20E1 : Result := 230;
$302A : Result := 218;
$302B : Result := 228;
$302C : Result := 232;
$302D : Result := 222;
$302E..$302F : Result := 224;
$3099 : Result := 8;
$309A : Result := 8;
$FB1E : Result := 26;
$FE20..$FE23 : Result := 230;
else
Result := 0;
end;
end;
type
TUnicodeDecompositionAttr = (daNone, daNoBreak, daCompat, daSuper,
daFraction, daSub, daFont, daCircle, daWide, daSquare, daIsolated,
daInitial, daFinal, daMedial, daVertical, daSmall, daNarrow);
TUnicodeDecompositionInfo = packed record
Unicode : WideChar;
Attr : TUnicodeDecompositionAttr;
Ch1 : WideChar;
Ch2 : WideChar;
Ch3 : WideChar;
Ch4 : WideChar;
Ch5 : WideChar;
end;
PUnicodeDecompositionInfo = ^TUnicodeDecompositionInfo;
const
UnicodeDecompositionEntries = 3481; // ~ 45K
UnicodeDecompositionInfo : Array[0..UnicodeDecompositionEntries - 1] of TUnicodeDecompositionInfo = (
(Unicode:#$00A0; Attr:daNoBreak; Ch1:#$0020; Ch2:#$FFFF), // NO-BREAK SPACE
(Unicode:#$00A8; Attr:daCompat; Ch1:#$0020; Ch2:#$0308; Ch3:#$FFFF), // DIAERESIS
(Unicode:#$00AA; Attr:daSuper; Ch1:#$0061; Ch2:#$FFFF), // FEMININE ORDINAL INDICATOR
(Unicode:#$00AF; Attr:daCompat; Ch1:#$0020; Ch2:#$0304; Ch3:#$FFFF), // MACRON
(Unicode:#$00B2; Attr:daSuper; Ch1:#$0032; Ch2:#$FFFF), // SUPERSCRIPT TWO
(Unicode:#$00B3; Attr:daSuper; Ch1:#$0033; Ch2:#$FFFF), // SUPERSCRIPT THREE
(Unicode:#$00B4; Attr:daCompat; Ch1:#$0020; Ch2:#$0301; Ch3:#$FFFF), // ACUTE ACCENT
(Unicode:#$00B5; Attr:daCompat; Ch1:#$03BC; Ch2:#$FFFF), // MICRO SIGN
(Unicode:#$00B8; Attr:daCompat; Ch1:#$0020; Ch2:#$0327; Ch3:#$FFFF), // CEDILLA
(Unicode:#$00B9; Attr:daSuper; Ch1:#$0031; Ch2:#$FFFF), // SUPERSCRIPT ONE
(Unicode:#$00BA; Attr:daSuper; Ch1:#$006F; Ch2:#$FFFF), // MASCULINE ORDINAL INDICATOR
(Unicode:#$00BC; Attr:daFraction; Ch1:#$0031; Ch2:#$2044; Ch3:#$0034; Ch4:#$FFFF), // VULGAR FRACTION ONE QUARTER
(Unicode:#$00BD; Attr:daFraction; Ch1:#$0031; Ch2:#$2044; Ch3:#$0032; Ch4:#$FFFF), // VULGAR FRACTION ONE HALF
(Unicode:#$00BE; Attr:daFraction; Ch1:#$0033; Ch2:#$2044; Ch3:#$0034; Ch4:#$FFFF), // VULGAR FRACTION THREE QUARTERS
(Unicode:#$00C0; Attr:daNone; Ch1:#$0041; Ch2:#$0300; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH GRAVE
(Unicode:#$00C1; Attr:daNone; Ch1:#$0041; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH ACUTE
(Unicode:#$00C2; Attr:daNone; Ch1:#$0041; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
(Unicode:#$00C3; Attr:daNone; Ch1:#$0041; Ch2:#$0303; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH TILDE
(Unicode:#$00C4; Attr:daNone; Ch1:#$0041; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH DIAERESIS
(Unicode:#$00C5; Attr:daNone; Ch1:#$0041; Ch2:#$030A; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH RING ABOVE
(Unicode:#$00C7; Attr:daNone; Ch1:#$0043; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER C WITH CEDILLA
(Unicode:#$00C8; Attr:daNone; Ch1:#$0045; Ch2:#$0300; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH GRAVE
(Unicode:#$00C9; Attr:daNone; Ch1:#$0045; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH ACUTE
(Unicode:#$00CA; Attr:daNone; Ch1:#$0045; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
(Unicode:#$00CB; Attr:daNone; Ch1:#$0045; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH DIAERESIS
(Unicode:#$00CC; Attr:daNone; Ch1:#$0049; Ch2:#$0300; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH GRAVE
(Unicode:#$00CD; Attr:daNone; Ch1:#$0049; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH ACUTE
(Unicode:#$00CE; Attr:daNone; Ch1:#$0049; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
(Unicode:#$00CF; Attr:daNone; Ch1:#$0049; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH DIAERESIS
(Unicode:#$00D1; Attr:daNone; Ch1:#$004E; Ch2:#$0303; Ch3:#$FFFF), // LATIN CAPITAL LETTER N WITH TILDE
(Unicode:#$00D2; Attr:daNone; Ch1:#$004F; Ch2:#$0300; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH GRAVE
(Unicode:#$00D3; Attr:daNone; Ch1:#$004F; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH ACUTE
(Unicode:#$00D4; Attr:daNone; Ch1:#$004F; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
(Unicode:#$00D5; Attr:daNone; Ch1:#$004F; Ch2:#$0303; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH TILDE
(Unicode:#$00D6; Attr:daNone; Ch1:#$004F; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH DIAERESIS
(Unicode:#$00D9; Attr:daNone; Ch1:#$0055; Ch2:#$0300; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH GRAVE
(Unicode:#$00DA; Attr:daNone; Ch1:#$0055; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH ACUTE
(Unicode:#$00DB; Attr:daNone; Ch1:#$0055; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
(Unicode:#$00DC; Attr:daNone; Ch1:#$0055; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH DIAERESIS
(Unicode:#$00DD; Attr:daNone; Ch1:#$0059; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER Y WITH ACUTE
(Unicode:#$00E0; Attr:daNone; Ch1:#$0061; Ch2:#$0300; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH GRAVE
(Unicode:#$00E1; Attr:daNone; Ch1:#$0061; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH ACUTE
(Unicode:#$00E2; Attr:daNone; Ch1:#$0061; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH CIRCUMFLEX
(Unicode:#$00E3; Attr:daNone; Ch1:#$0061; Ch2:#$0303; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH TILDE
(Unicode:#$00E4; Attr:daNone; Ch1:#$0061; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH DIAERESIS
(Unicode:#$00E5; Attr:daNone; Ch1:#$0061; Ch2:#$030A; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH RING ABOVE
(Unicode:#$00E7; Attr:daNone; Ch1:#$0063; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER C WITH CEDILLA
(Unicode:#$00E8; Attr:daNone; Ch1:#$0065; Ch2:#$0300; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH GRAVE
(Unicode:#$00E9; Attr:daNone; Ch1:#$0065; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH ACUTE
(Unicode:#$00EA; Attr:daNone; Ch1:#$0065; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH CIRCUMFLEX
(Unicode:#$00EB; Attr:daNone; Ch1:#$0065; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH DIAERESIS
(Unicode:#$00EC; Attr:daNone; Ch1:#$0069; Ch2:#$0300; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH GRAVE
(Unicode:#$00ED; Attr:daNone; Ch1:#$0069; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH ACUTE
(Unicode:#$00EE; Attr:daNone; Ch1:#$0069; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH CIRCUMFLEX
(Unicode:#$00EF; Attr:daNone; Ch1:#$0069; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH DIAERESIS
(Unicode:#$00F1; Attr:daNone; Ch1:#$006E; Ch2:#$0303; Ch3:#$FFFF), // LATIN SMALL LETTER N WITH TILDE
(Unicode:#$00F2; Attr:daNone; Ch1:#$006F; Ch2:#$0300; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH GRAVE
(Unicode:#$00F3; Attr:daNone; Ch1:#$006F; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH ACUTE
(Unicode:#$00F4; Attr:daNone; Ch1:#$006F; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH CIRCUMFLEX
(Unicode:#$00F5; Attr:daNone; Ch1:#$006F; Ch2:#$0303; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH TILDE
(Unicode:#$00F6; Attr:daNone; Ch1:#$006F; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH DIAERESIS
(Unicode:#$00F9; Attr:daNone; Ch1:#$0075; Ch2:#$0300; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH GRAVE
(Unicode:#$00FA; Attr:daNone; Ch1:#$0075; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH ACUTE
(Unicode:#$00FB; Attr:daNone; Ch1:#$0075; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH CIRCUMFLEX
(Unicode:#$00FC; Attr:daNone; Ch1:#$0075; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH DIAERESIS
(Unicode:#$00FD; Attr:daNone; Ch1:#$0079; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER Y WITH ACUTE
(Unicode:#$00FF; Attr:daNone; Ch1:#$0079; Ch2:#$0308; Ch3:#$FFFF), // LATIN SMALL LETTER Y WITH DIAERESIS
(Unicode:#$0100; Attr:daNone; Ch1:#$0041; Ch2:#$0304; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH MACRON
(Unicode:#$0101; Attr:daNone; Ch1:#$0061; Ch2:#$0304; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH MACRON
(Unicode:#$0102; Attr:daNone; Ch1:#$0041; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH BREVE
(Unicode:#$0103; Attr:daNone; Ch1:#$0061; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH BREVE
(Unicode:#$0104; Attr:daNone; Ch1:#$0041; Ch2:#$0328; Ch3:#$FFFF), // LATIN CAPITAL LETTER A WITH OGONEK
(Unicode:#$0105; Attr:daNone; Ch1:#$0061; Ch2:#$0328; Ch3:#$FFFF), // LATIN SMALL LETTER A WITH OGONEK
(Unicode:#$0106; Attr:daNone; Ch1:#$0043; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER C WITH ACUTE
(Unicode:#$0107; Attr:daNone; Ch1:#$0063; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER C WITH ACUTE
(Unicode:#$0108; Attr:daNone; Ch1:#$0043; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
(Unicode:#$0109; Attr:daNone; Ch1:#$0063; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER C WITH CIRCUMFLEX
(Unicode:#$010A; Attr:daNone; Ch1:#$0043; Ch2:#$0307; Ch3:#$FFFF), // LATIN CAPITAL LETTER C WITH DOT ABOVE
(Unicode:#$010B; Attr:daNone; Ch1:#$0063; Ch2:#$0307; Ch3:#$FFFF), // LATIN SMALL LETTER C WITH DOT ABOVE
(Unicode:#$010C; Attr:daNone; Ch1:#$0043; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER C WITH CARON
(Unicode:#$010D; Attr:daNone; Ch1:#$0063; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER C WITH CARON
(Unicode:#$010E; Attr:daNone; Ch1:#$0044; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER D WITH CARON
(Unicode:#$010F; Attr:daNone; Ch1:#$0064; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER D WITH CARON
(Unicode:#$0112; Attr:daNone; Ch1:#$0045; Ch2:#$0304; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH MACRON
(Unicode:#$0113; Attr:daNone; Ch1:#$0065; Ch2:#$0304; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH MACRON
(Unicode:#$0114; Attr:daNone; Ch1:#$0045; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH BREVE
(Unicode:#$0115; Attr:daNone; Ch1:#$0065; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH BREVE
(Unicode:#$0116; Attr:daNone; Ch1:#$0045; Ch2:#$0307; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH DOT ABOVE
(Unicode:#$0117; Attr:daNone; Ch1:#$0065; Ch2:#$0307; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH DOT ABOVE
(Unicode:#$0118; Attr:daNone; Ch1:#$0045; Ch2:#$0328; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH OGONEK
(Unicode:#$0119; Attr:daNone; Ch1:#$0065; Ch2:#$0328; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH OGONEK
(Unicode:#$011A; Attr:daNone; Ch1:#$0045; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER E WITH CARON
(Unicode:#$011B; Attr:daNone; Ch1:#$0065; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER E WITH CARON
(Unicode:#$011C; Attr:daNone; Ch1:#$0047; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
(Unicode:#$011D; Attr:daNone; Ch1:#$0067; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER G WITH CIRCUMFLEX
(Unicode:#$011E; Attr:daNone; Ch1:#$0047; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER G WITH BREVE
(Unicode:#$011F; Attr:daNone; Ch1:#$0067; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER G WITH BREVE
(Unicode:#$0120; Attr:daNone; Ch1:#$0047; Ch2:#$0307; Ch3:#$FFFF), // LATIN CAPITAL LETTER G WITH DOT ABOVE
(Unicode:#$0121; Attr:daNone; Ch1:#$0067; Ch2:#$0307; Ch3:#$FFFF), // LATIN SMALL LETTER G WITH DOT ABOVE
(Unicode:#$0122; Attr:daNone; Ch1:#$0047; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER G WITH CEDILLA
(Unicode:#$0123; Attr:daNone; Ch1:#$0067; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER G WITH CEDILLA
(Unicode:#$0124; Attr:daNone; Ch1:#$0048; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
(Unicode:#$0125; Attr:daNone; Ch1:#$0068; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER H WITH CIRCUMFLEX
(Unicode:#$0128; Attr:daNone; Ch1:#$0049; Ch2:#$0303; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH TILDE
(Unicode:#$0129; Attr:daNone; Ch1:#$0069; Ch2:#$0303; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH TILDE
(Unicode:#$012A; Attr:daNone; Ch1:#$0049; Ch2:#$0304; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH MACRON
(Unicode:#$012B; Attr:daNone; Ch1:#$0069; Ch2:#$0304; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH MACRON
(Unicode:#$012C; Attr:daNone; Ch1:#$0049; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH BREVE
(Unicode:#$012D; Attr:daNone; Ch1:#$0069; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH BREVE
(Unicode:#$012E; Attr:daNone; Ch1:#$0049; Ch2:#$0328; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH OGONEK
(Unicode:#$012F; Attr:daNone; Ch1:#$0069; Ch2:#$0328; Ch3:#$FFFF), // LATIN SMALL LETTER I WITH OGONEK
(Unicode:#$0130; Attr:daNone; Ch1:#$0049; Ch2:#$0307; Ch3:#$FFFF), // LATIN CAPITAL LETTER I WITH DOT ABOVE
(Unicode:#$0132; Attr:daCompat; Ch1:#$0049; Ch2:#$004A; Ch3:#$FFFF), // LATIN CAPITAL LIGATURE IJ
(Unicode:#$0133; Attr:daCompat; Ch1:#$0069; Ch2:#$006A; Ch3:#$FFFF), // LATIN SMALL LIGATURE IJ
(Unicode:#$0134; Attr:daNone; Ch1:#$004A; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
(Unicode:#$0135; Attr:daNone; Ch1:#$006A; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER J WITH CIRCUMFLEX
(Unicode:#$0136; Attr:daNone; Ch1:#$004B; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER K WITH CEDILLA
(Unicode:#$0137; Attr:daNone; Ch1:#$006B; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER K WITH CEDILLA
(Unicode:#$0139; Attr:daNone; Ch1:#$004C; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER L WITH ACUTE
(Unicode:#$013A; Attr:daNone; Ch1:#$006C; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER L WITH ACUTE
(Unicode:#$013B; Attr:daNone; Ch1:#$004C; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER L WITH CEDILLA
(Unicode:#$013C; Attr:daNone; Ch1:#$006C; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER L WITH CEDILLA
(Unicode:#$013D; Attr:daNone; Ch1:#$004C; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER L WITH CARON
(Unicode:#$013E; Attr:daNone; Ch1:#$006C; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER L WITH CARON
(Unicode:#$013F; Attr:daCompat; Ch1:#$004C; Ch2:#$00B7; Ch3:#$FFFF), // LATIN CAPITAL LETTER L WITH MIDDLE DOT
(Unicode:#$0140; Attr:daCompat; Ch1:#$006C; Ch2:#$00B7; Ch3:#$FFFF), // LATIN SMALL LETTER L WITH MIDDLE DOT
(Unicode:#$0143; Attr:daNone; Ch1:#$004E; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER N WITH ACUTE
(Unicode:#$0144; Attr:daNone; Ch1:#$006E; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER N WITH ACUTE
(Unicode:#$0145; Attr:daNone; Ch1:#$004E; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER N WITH CEDILLA
(Unicode:#$0146; Attr:daNone; Ch1:#$006E; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER N WITH CEDILLA
(Unicode:#$0147; Attr:daNone; Ch1:#$004E; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER N WITH CARON
(Unicode:#$0148; Attr:daNone; Ch1:#$006E; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER N WITH CARON
(Unicode:#$0149; Attr:daCompat; Ch1:#$02BC; Ch2:#$006E; Ch3:#$FFFF), // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
(Unicode:#$014C; Attr:daNone; Ch1:#$004F; Ch2:#$0304; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH MACRON
(Unicode:#$014D; Attr:daNone; Ch1:#$006F; Ch2:#$0304; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH MACRON
(Unicode:#$014E; Attr:daNone; Ch1:#$004F; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH BREVE
(Unicode:#$014F; Attr:daNone; Ch1:#$006F; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH BREVE
(Unicode:#$0150; Attr:daNone; Ch1:#$004F; Ch2:#$030B; Ch3:#$FFFF), // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
(Unicode:#$0151; Attr:daNone; Ch1:#$006F; Ch2:#$030B; Ch3:#$FFFF), // LATIN SMALL LETTER O WITH DOUBLE ACUTE
(Unicode:#$0154; Attr:daNone; Ch1:#$0052; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER R WITH ACUTE
(Unicode:#$0155; Attr:daNone; Ch1:#$0072; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER R WITH ACUTE
(Unicode:#$0156; Attr:daNone; Ch1:#$0052; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER R WITH CEDILLA
(Unicode:#$0157; Attr:daNone; Ch1:#$0072; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER R WITH CEDILLA
(Unicode:#$0158; Attr:daNone; Ch1:#$0052; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER R WITH CARON
(Unicode:#$0159; Attr:daNone; Ch1:#$0072; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER R WITH CARON
(Unicode:#$015A; Attr:daNone; Ch1:#$0053; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER S WITH ACUTE
(Unicode:#$015B; Attr:daNone; Ch1:#$0073; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER S WITH ACUTE
(Unicode:#$015C; Attr:daNone; Ch1:#$0053; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
(Unicode:#$015D; Attr:daNone; Ch1:#$0073; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER S WITH CIRCUMFLEX
(Unicode:#$015E; Attr:daNone; Ch1:#$0053; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER S WITH CEDILLA
(Unicode:#$015F; Attr:daNone; Ch1:#$0073; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER S WITH CEDILLA
(Unicode:#$0160; Attr:daNone; Ch1:#$0053; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER S WITH CARON
(Unicode:#$0161; Attr:daNone; Ch1:#$0073; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER S WITH CARON
(Unicode:#$0162; Attr:daNone; Ch1:#$0054; Ch2:#$0327; Ch3:#$FFFF), // LATIN CAPITAL LETTER T WITH CEDILLA
(Unicode:#$0163; Attr:daNone; Ch1:#$0074; Ch2:#$0327; Ch3:#$FFFF), // LATIN SMALL LETTER T WITH CEDILLA
(Unicode:#$0164; Attr:daNone; Ch1:#$0054; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER T WITH CARON
(Unicode:#$0165; Attr:daNone; Ch1:#$0074; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER T WITH CARON
(Unicode:#$0168; Attr:daNone; Ch1:#$0055; Ch2:#$0303; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH TILDE
(Unicode:#$0169; Attr:daNone; Ch1:#$0075; Ch2:#$0303; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH TILDE
(Unicode:#$016A; Attr:daNone; Ch1:#$0055; Ch2:#$0304; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH MACRON
(Unicode:#$016B; Attr:daNone; Ch1:#$0075; Ch2:#$0304; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH MACRON
(Unicode:#$016C; Attr:daNone; Ch1:#$0055; Ch2:#$0306; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH BREVE
(Unicode:#$016D; Attr:daNone; Ch1:#$0075; Ch2:#$0306; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH BREVE
(Unicode:#$016E; Attr:daNone; Ch1:#$0055; Ch2:#$030A; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH RING ABOVE
(Unicode:#$016F; Attr:daNone; Ch1:#$0075; Ch2:#$030A; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH RING ABOVE
(Unicode:#$0170; Attr:daNone; Ch1:#$0055; Ch2:#$030B; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
(Unicode:#$0171; Attr:daNone; Ch1:#$0075; Ch2:#$030B; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH DOUBLE ACUTE
(Unicode:#$0172; Attr:daNone; Ch1:#$0055; Ch2:#$0328; Ch3:#$FFFF), // LATIN CAPITAL LETTER U WITH OGONEK
(Unicode:#$0173; Attr:daNone; Ch1:#$0075; Ch2:#$0328; Ch3:#$FFFF), // LATIN SMALL LETTER U WITH OGONEK
(Unicode:#$0174; Attr:daNone; Ch1:#$0057; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
(Unicode:#$0175; Attr:daNone; Ch1:#$0077; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER W WITH CIRCUMFLEX
(Unicode:#$0176; Attr:daNone; Ch1:#$0059; Ch2:#$0302; Ch3:#$FFFF), // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
(Unicode:#$0177; Attr:daNone; Ch1:#$0079; Ch2:#$0302; Ch3:#$FFFF), // LATIN SMALL LETTER Y WITH CIRCUMFLEX
(Unicode:#$0178; Attr:daNone; Ch1:#$0059; Ch2:#$0308; Ch3:#$FFFF), // LATIN CAPITAL LETTER Y WITH DIAERESIS
(Unicode:#$0179; Attr:daNone; Ch1:#$005A; Ch2:#$0301; Ch3:#$FFFF), // LATIN CAPITAL LETTER Z WITH ACUTE
(Unicode:#$017A; Attr:daNone; Ch1:#$007A; Ch2:#$0301; Ch3:#$FFFF), // LATIN SMALL LETTER Z WITH ACUTE
(Unicode:#$017B; Attr:daNone; Ch1:#$005A; Ch2:#$0307; Ch3:#$FFFF), // LATIN CAPITAL LETTER Z WITH DOT ABOVE
(Unicode:#$017C; Attr:daNone; Ch1:#$007A; Ch2:#$0307; Ch3:#$FFFF), // LATIN SMALL LETTER Z WITH DOT ABOVE
(Unicode:#$017D; Attr:daNone; Ch1:#$005A; Ch2:#$030C; Ch3:#$FFFF), // LATIN CAPITAL LETTER Z WITH CARON
(Unicode:#$017E; Attr:daNone; Ch1:#$007A; Ch2:#$030C; Ch3:#$FFFF), // LATIN SMALL LETTER Z WITH CARON
(Unicode:#$017F; Attr:daCompat; Ch1:#