/*
Copyright 2021 Gabriel Jensen
This file is part of u8c.
u8c is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
u8c is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with u8c.
If not, see .
*/
# include
# include
# include
# include
# include
struct u8c_uninm_tuple u8c_uninm(char32_t const _chr) {
struct u8c_uninm_tuple ret;
if(_chr > u8c_unimax) {
u8c_seterr(u8c_errtyp_stroor,U"u8c_uninm: Character out of range.");
ret.stat = true;
return ret;
}
char32_t const * nm = U"";
switch(_chr) {
default:
nm = U"UNDEFINED IN UNICODE";
break;
/* BASIC LATIN: */
case U'\x0':
nm = U"NULL";
break;
case U'\x1':
nm = U"START OF HEADING";
break;
case U'\x2':
nm = U"START OF TEXT";
break;
case U'\x3':
nm = U"END OF TEXT";
break;
case U'\x4':
nm = U"END OF TRANSMISSION";
break;
case U'\x5':
nm = U"ENQUIRY";
break;
case U'\x6':
nm = U"ACKNOWLEDGE";
break;
case U'\a':
nm = U"BELL";
break;
case U'\b':
nm = U"BACKSPACE";
break;
case U'\t':
nm = U"HORIZONTAL TABULATION";
break;
case U'\n':
nm = U"NEW LINE";
break;
case U'\v':
nm = U"VERTICAL TABULATION";
break;
case U'\f':
nm = U"FORM FEED";
break;
case U'\r':
nm = U"CARRIAGE RETURN";
break;
case U'\xE':
nm = U"SHIFT OUT";
break;
case U'\xF':
nm = U"SHIFT IN";
break;
case U'\x10':
nm = U"DATA LINK ESCAPE";
break;
case U'\x11':
nm = U"DEVICE CONTROL ONE";
break;
case U'\x12':
nm = U"DEVICE CONTROL TWO";
break;
case U'\x13':
nm = U"DEVICE CONTROL THREE";
break;
case U'\x14':
nm = U"DEVICE CONTROL FOUR";
break;
case U'\x15':
nm = U"NEGATIVE ACKNOWLEDGE";
break;
case U'\x16':
nm = U"SYNCHRONOUS IDLE";
break;
case U'\x17':
nm = U"END OF TRANSMISSION BLOCk";
break;
case U'\x18':
nm = U"CANCEL";
break;
case U'\x19':
nm = U"END OF MEDIUM";
break;
case U'\x1A':
nm = U"SUBSTITUTE";
break;
case U'\x1B':
nm = U"ESCAPE";
break;
case U'\x1C':
nm = U"FILE SEPERATOR";
break;
case U'\x1D':
nm = U"GROUP SEPERATOR";
break;
case U'\x1E':
nm = U"RECORD SEPERATOR";
break;
case U'\x1F':
nm = U"UNIT SEPERATOR";
break;
case U' ':
nm = U"SPACE";
break;
case U'!':
nm = U"EXCLAMATION MARK";
break;
case U'\"':
nm = U"QUOTATION MARK";
break;
case U'#':
nm = U"NUMBER SIGN";
break;
case U'\u0024':
nm = U"DOLLAR SIGN";
break;
case U'%':
nm = U"PERCENT SIGN";
break;
case U'&':
nm = U"AMPERSAND";
break;
case U'\'':
nm = U"APOSTROPHE";
break;
case U'(':
nm = U"LEFT PARANTHESIS";
break;
case U')':
nm = U"RIGHT PARANTHESIS";
break;
case U'*':
nm = U"ASTERISK";
break;
case U'+':
nm = U"PLUS SIGN";
break;
case U',':
nm = U"COMMA";
break;
case U'-':
nm = U"HYPHEN-MINUS";
break;
case U'.':
nm = U"FULL STOP";
break;
case U'/':
nm = U"SOLIDUS";
break;
case U'0':
nm = U"DIGIT ZERO";
break;
case U'1':
nm = U"DIGIT ONE";
break;
case U'2':
nm = U"DIGIT TWO";
break;
case U'3':
nm = U"DIGIT THREE";
break;
case U'4':
nm = U"DIGIT FOUR";
break;
case U'5':
nm = U"DIGIT FIVE";
break;
case U'6':
nm = U"DIGIT SIX";
break;
case U'7':
nm = U"DIGIT SEVEN";
break;
case U'8':
nm = U"DIGIT EIGHT";
break;
case U'9':
nm = U"DIGIT NINE";
break;
case U':':
nm = U"COLON";
break;
case U';':
nm = U"SEMICOLON";
break;
case U'<':
nm = U"LESS-THAN SIGN";
break;
case U'=':
nm = U"EQUALS SIGN";
break;
case U'>':
nm = U"GREATER-THAN SIGN";
break;
case U'?':
nm = U"QUESTION MARK";
break;
case U'\u0040':
nm = U"COMMERCIAL AT";
break;
case U'A':
nm = U"LATIN CAPITAL LETTER A";
break;
case U'B':
nm = U"LATIN CAPITAL LETTER B";
break;
case U'C':
nm = U"LATIN CAPITAL LETTER C";
break;
case U'D':
nm = U"LATIN CAPITAL LETTER D";
break;
case U'E':
nm = U"LATIN CAPITAL LETTER E";
break;
case U'F':
nm = U"LATIN CAPITAL LETTER F";
break;
case U'G':
nm = U"LATIN CAPITAL LETTER G";
break;
case U'H':
nm = U"LATIN CAPITAL LETTER H";
break;
case U'I':
nm = U"LATIN CAPITAL LETTER I";
break;
case U'J':
nm = U"LATIN CAPITAL LETTER J";
break;
case U'K':
nm = U"LATIN CAPITAL LETTER K";
break;
case U'L':
nm = U"LATIN CAPITAL LETTER L";
break;
case U'M':
nm = U"LATIN CAPITAL LETTER M";
break;
case U'N':
nm = U"LATIN CAPITAL LETTER N";
break;
case U'O':
nm = U"LATIN CAPITAL LETTER O";
break;
case U'P':
nm = U"LATIN CAPITAL LETTER P";
break;
case U'Q':
nm = U"LATIN CAPITAL LETTER Q";
break;
case U'R':
nm = U"LATIN CAPITAL LETTER R";
break;
case U'S':
nm = U"LATIN CAPITAL LETTER S";
break;
case U'T':
nm = U"LATIN CAPITAL LETTER T";
break;
case U'U':
nm = U"LATIN CAPITAL LETTER U";
break;
case U'V':
nm = U"LATIN CAPITAL LETTER V";
break;
case U'W':
nm = U"LATIN CAPITAL LETTER W";
break;
case U'X':
nm = U"LATIN CAPITAL LETTER X";
break;
case U'Y':
nm = U"LATIN CAPITAL LETTER Y";
break;
case U'Z':
nm = U"LATIN CAPITAL LETTER Z";
break;
case U'[':
nm = U"LEFT SQUARE BRACKET";
break;
case U'\\':
nm = U"REVERSE SOLIDUS";
break;
case U']':
nm = U"RIGHT SQUARE BRACKET";
break;
case U'^':
nm = U"CIRCUMFLEX ACCENT";
break;
case U'_':
nm = U"LOW LINE";
break;
case U'\u0060':
nm = U"GRAVE ACCENT";
break;
case U'a':
nm = U"LATIN SMALL LETTER A";
break;
case U'b':
nm = U"LATIN SMALL LETTER B";
break;
case U'c':
nm = U"LATIN SMALL LETTER C";
break;
case U'd':
nm = U"LATIN SMALL LETTER D";
break;
case U'e':
nm = U"LATIN SMALL LETTER E";
break;
case U'f':
nm = U"LATIN SMALL LETTER F";
break;
case U'g':
nm = U"LATIN SMALL LETTER G";
break;
case U'h':
nm = U"LATIN SMALL LETTER H";
break;
case U'i':
nm = U"LATIN SMALL LETTER I";
break;
case U'j':
nm = U"LATIN SMALL LETTER J";
break;
case U'k':
nm = U"LATIN SMALL LETTER K";
break;
case U'l':
nm = U"LATIN SMALL LETTER L";
break;
case U'm':
nm = U"LATIN SMALL LETTER M";
break;
case U'n':
nm = U"LATIN SMALL LETTER N";
break;
case U'o':
nm = U"LATIN SMALL LETTER O";
break;
case U'p':
nm = U"LATIN SMALL LETTER P";
break;
case U'q':
nm = U"LATIN SMALL LETTER Q";
break;
case U'r':
nm = U"LATIN SMALL LETTER R";
break;
case U's':
nm = U"LATIN SMALL LETTER S";
break;
case U't':
nm = U"LATIN SMALL LETTER T";
break;
case U'u':
nm = U"LATIN SMALL LETTER U";
break;
case U'v':
nm = U"LATIN SMALL LETTER V";
break;
case U'w':
nm = U"LATIN SMALL LETTER W";
break;
case U'x':
nm = U"LATIN SMALL LETTER X";
break;
case U'y':
nm = U"LATIN SMALL LETTER Y";
break;
case U'z':
nm = U"LATIN SMALL LETTER Z";
break;
case U'{':
nm = U"LEFT CURLY BRACKET";
break;
case U'|':
nm = U"VERTICAL LINE";
break;
case U'}':
nm = U"RIGHT CURLY BRACKET";
break;
case U'~':
nm = U"TILDE";
break;
case U'\x7F':
nm = U"DELETE";
break;
/* LATIN-1 SUPPLEMENT: */
case U'\x80':
nm = U"";
break;
case U'\x81':
nm = U"";
break;
case U'\x82':
nm = U"BREAK PERMITTED HERE";
break;
case U'\x83':
nm = U"NO BREAK HERE";
break;
case U'\x84':
nm = U"";
break;
case U'\x85':
nm = U"NEXT LINE";
break;
case U'\x86':
nm = U"START OF SELECTED AREA";
break;
case U'\x87':
nm = U"END OF SELECTED AREA";
break;
case U'\x88':
nm = U"CHARACTER TABULATION SET";
break;
case U'\x89':
nm = U"CHARACTER TABULATION WITH JUSTIFICATION";
break;
case U'\x8A':
nm = U"LINE TABULATION SET";
break;
case U'\x8B':
nm = U"PARTIAL LINE FORWARD";
break;
case U'\x8C':
nm = U"PARTIAL LINE BACKWARD";
break;
case U'\x8D':
nm = U"REVERSE LINE FEED";
break;
case U'\x8E':
nm = U"SINGLE SHIFT TWO";
break;
case U'\x8F':
nm = U"SINGLE SHIFT THREE";
break;
case U'\x90':
nm = U"DEVICE CONTROL STRING";
break;
case U'\x91':
nm = U"PRIVATE USE ONE";
break;
case U'\x92':
nm = U"PRIVATE USE TWO";
break;
case U'\x93':
nm = U"SET TRANSMIT STATE";
break;
case U'\x94':
nm = U"CANCEL CHARACTER";
break;
case U'\x95':
nm = U"MESSAGE WAITING";
break;
case U'\x96':
nm = U"START OF GUARDED AREA";
break;
case U'\x97':
nm = U"END OF GUARDED AREA";
break;
case U'\x98':
nm = U"START OF STRING";
break;
case U'\x99':
nm = U"";
break;
case U'\x9A':
nm = U"SINGLE CHARACTER INTRODUCER";
break;
case U'\x9B':
nm = U"CONTROL SEQUENCE INTRODUCER";
break;
case U'\x9C':
nm = U"STRING TERMINATOR";
break;
case U'\x9D':
nm = U"OPERATING SYSTEM COMMAND";
break;
case U'\x9E':
nm = U"PRIVACY MESSAGE";
break;
case U'\x9F':
nm = U"APPLICATION PROGRAM COMMAND";
break;
case U'\xA0':
nm = U"NO-BREAK SPACE";
break;
case U'\u00A1':
nm = U"INVERTED EXCLAMATION MARK";
break;
case U'\u00A2':
nm = U"CENT SIGN";
break;
case U'\u00A3':
nm = U"POUND SIGN";
break;
case U'\u00A4':
nm = U"CURRENCY SIGN";
break;
case U'\u00A5':
nm = U"YEN SIGN";
break;
case U'\u00A6':
nm = U"BROKEN BAR";
break;
case U'\u00A7':
nm = U"SECTION SIGN";
break;
case U'\u00A8':
nm = U"DIAERESIS";
break;
case U'\u00A9':
nm = U"COPYRIGHT SIGN";
break;
case U'\u00AA':
nm = U"FEMININE ORDINAL INDICATOR";
break;
case U'\u00AB':
nm = U"LEFT-POINTING DOUBLE ANGLE QUOTATION MARK";
break;
case U'\u00AC':
nm = U"NOT SIGN";
break;
case U'\u00AD':
nm = U"SOFT HYPHEN";
break;
case U'\u00AE':
nm = U"REGISTERED SIGN";
break;
case U'\u00AF':
nm = U"MACRON";
break;
case U'\u00B0':
nm = U"DEGREE SIGN";
break;
case U'\u00B1':
nm = U"PLUS MINUS SYMBOL";
break;
case U'\u00B2':
nm = U"SUPERSCRIPT TWO";
break;
case U'\u00B3':
nm = U"SUPERSCRIPT THREE";
break;
case U'\u00B4':
nm = U"ACUTE ACCENT";
break;
case U'\u00B5':
nm = U"MICRO SIGN";
break;
case U'\u00B6':
nm = U"PILCROW SIGN";
break;
case U'\u00B7':
nm = U"MIDDLE DOT";
break;
case U'\u00B8':
nm = U"CEDILLA";
break;
case U'\u00B9':
nm = U"SUPERSCRIPT ONE";
break;
case U'\u00BA':
nm = U"MASCULINE ORDINAL INDICATOR";
break;
case U'\u00BB':
nm = U"RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK";
break;
case U'\u00BC':
nm = U"VULGAR FRACTION ONE QUARTER";
break;
case U'\u00BD':
nm = U"VULGAR FRACTION ONE HALF";
break;
case U'\u00BE':
nm = U"VULGAR FRACTION THREE QUARTERS";
break;
case U'\u00BF':
nm = U"INVERTED QUESTION MARK";
break;
case U'\u00C0':
nm = U"LATIN CAPITAL LETTER A WITH GRAVE";
break;
case U'\u00C1':
nm = U"LATIN CAPITAL LETTER A WITH ACUTE";
break;
case U'\u00C2':
nm = U"LATIN CAPITAL LETTER A WITH CIRCUMFLEX";
break;
case U'\u00C3':
nm = U"LATIN CAPITAL LETTER A WITH TILDE";
break;
case U'\u00C4':
nm = U"LATIN CAPITAL LETTER A WITH DIAERESIS";
break;
case U'\u00C5':
nm = U"LATIN CAPITAL LETTER A WITH RING ABOVE";
break;
case U'\u00C6':
nm = U"LATIN CAPITAL LETTER AE";
break;
case U'\u00C7':
nm = U"LATIN CAPITAL LETTER C WITH CEDILLA";
break;
case U'\u00C8':
nm = U"LATIN CAPITAL LETTER E WITH GRAVE";
break;
case U'\u00C9':
nm = U"LATIN CAPITAL LETTER E WITH ACUTE";
break;
case U'\u00CA':
nm = U"LATIN CAPITAL LETTER E WITH CIRCUMFLEX";
break;
case U'\u00CB':
nm = U"LATIN CAPITAL LETTER E WITH DIAERESIS";
break;
case U'\u00CC':
nm = U"LATIN CAPITAL LETTER I WITH GRAVE";
break;
case U'\u00CD':
nm = U"LATIN CAPITAL LETTER I WITH ACUTE";
break;
case U'\u00CE':
nm = U"LATIN CAPITAL LETTER I WITH CIRCUMFLEX";
break;
case U'\u00CF':
nm = U"LATIN CAPITAL LETTER I WITH DIAERESIS";
break;
case U'\u00D0':
nm = U"LATIN CAPITAL LETTER ETH";
break;
case U'\u00D1':
nm = U"LATIN CAPITAL LETTER N WITH TILDE";
break;
case U'\u00D2':
nm = U"LATIN CAPITAL LETTER O WITH GRAVE";
break;
case U'\u00D3':
nm = U"LATIN CAPITAL LETTER O WITH ACUTE";
break;
case U'\u00D4':
nm = U"LATIN CAPITAL LETTER O WITH CIRCUMFLEX";
break;
case U'\u00D5':
nm = U"LATIN CAPITAL LETTER O WITH TILDE";
break;
case U'\u00D6':
nm = U"LATIN CAPITAL LETTER O WITH DIAERESIS";
break;
case U'\u00D7':
nm = U"MULTIPLICATION SIGN";
break;
case U'\u00D8':
nm = U"LATIN CAPITAL LETTER O WITH STROKE";
break;
case U'\u00D9':
nm = U"LATIN CAPITAL LETTER U WITH GRAVE";
break;
case U'\u00DA':
nm = U"LATIN CAPITAL LETTER U WITH ACUTE";
break;
case U'\u00DB':
nm = U"LATIN CAPITAL LETTER U WITH CIRCUMFLEX";
break;
case U'\u00DC':
nm = U"LATIN CAPITAL LETTER U WITH DIAERESIS";
break;
case U'\u00DD':
nm = U"LATIN CAPITAL LETTER Y WITH ACUTE";
break;
case U'\u00DE':
nm = U"LATIN CAPITAL LETTER THORN";
break;
case U'\u00DF':
nm = U"LATIN SMALL LETTER SHARP S";
break;
case U'\u00E0':
nm = U"LATIN SMALL LETTER A WITH GRAVE";
break;
case U'\u00E1':
nm = U"LATIN SMALL LETTER A WITH ACUTE";
break;
case U'\u00E2':
nm = U"LATIN SMALL LETTER A WITH CIRCUMFLEX";
break;
case U'\u00E3':
nm = U"LATIN SMALL LETTER A WITH TILDE";
break;
case U'\u00E4':
nm = U"LATIN SMALL LETTER A WITH DIAERESIS";
break;
case U'\u00E5':
nm = U"LATIN SMALL LETTER A WITH RING ABOVE";
break;
case U'\u00E6':
nm = U"LATIN SMALL LETTER AE";
break;
case U'\u00E7':
nm = U"LATIN SMALL LETTER C WITH CEDILLA";
break;
case U'\u00E8':
nm = U"LATIN SMALL LETTER E WITH GRAVE";
break;
case U'\u00E9':
nm = U"LATIN SMALL LETTER E WITH ACUTE";
break;
case U'\u00EA':
nm = U"LATIN SMALL LETTER E WITH CIRCUMFLEX";
break;
case U'\u00EB':
nm = U"LATIN SMALL LETTER E WITH DIAERESIS";
break;
case U'\u00EC':
nm = U"LATIN SMALL LETTER I WITH GRAVE";
break;
case U'\u00ED':
nm = U"LATIN SMALL LETTER I WITH ACUTE";
break;
case U'\u00EE':
nm = U"LATIN SMALL LETTER I WITH CIRCUMFLEX";
break;
case U'\u00EF':
nm = U"LATIN SMALL LETTER I WITH DIAERESIS";
break;
case U'\u00F0':
nm = U"LATIN SMALL LETTER ETH";
break;
case U'\u00F1':
nm = U"LATIN SMALL LETTER N WITH TILDE";
break;
case U'\u00F2':
nm = U"LATIN SMALL LETTER O WITH GRAVE";
break;
case U'\u00F3':
nm = U"LATIN SMALL LETTER O WITH ACUTE";
break;
case U'\u00F4':
nm = U"LATIN SMALL LETTER O WITH CIRCUMFLEX";
break;
case U'\u00F5':
nm = U"LATIN SMALL LETTER O WITH TILDE";
break;
case U'\u00F6':
nm = U"LATIN SMALL LETTER O WITH DIAERESIS";
break;
case U'\u00F7':
nm = U"DIVISION SIGN";
break;
case U'\u00F8':
nm = U"LATIN SMALL LETTER O WITH STROKE";
break;
case U'\u00F9':
nm = U"LATIN SMALL LETTER U WITH GRAVE";
break;
case U'\u00FA':
nm = U"LATIN SMALL LETTER U WITH ACUTE";
break;
case U'\u00FB':
nm = U"LATIN SMALL LETTER U WITH CIRCUMFLEX";
break;
case U'\u00FC':
nm = U"U WITH TWO DOTS";
break;
case U'\u00FD':
nm = U"LATIN SMALL LETTER Y WITH ACUTE";
break;
case U'\u00FE':
nm = U"LATIN SMALL LETTER THORN";
break;
case U'\u00FF':
nm = U"LATIN SMALL LETTER Y WITH DIAERESIS";
break;
/* LATIN EXTENDED-A: */
case U'\u0100':
nm = U"LATIN CAPITAL LETTER A WITH MACRON";
break;
case U'\u0101':
nm = U"LATIN SMALL LETTER A WITH MACRON";
break;
case U'\u0102':
nm = U"LATIN CAPITAL LETTER A WITH BREVE";
break;
case U'\u0103':
nm = U"LATIN SMALL LETTER A WITH BREVE";
break;
case U'\u0104':
nm = U"LATIN CAPITAL LETTER A WITH OGONEK";
break;
case U'\u0105':
nm = U"LATIN SMALL LETTER A WITH OGONEK";
break;
case U'\u0106':
nm = U"LATIN CAPITAL LETTER C WITH ACUTE";
break;
case U'\u0107':
nm = U"LATIN SMALL LETTER C WITH ACUTE";
break;
case U'\u0108':
nm = U"LATIN CAPITAL LETTER C WITH CIRCUMFLEX";
break;
case U'\u0109':
nm = U"LATIN SMALL LETTER C WITH CIRCUMFLEX";
break;
case U'\u010A':
nm = U"LATIN CAPITAL LETTER C WITH DOT ABOVE";
break;
case U'\u010B':
nm = U"LATIN SMALL LETTER C WITH DOT ABOVE";
break;
case U'\u010C':
nm = U"LATIN CAPITAL LETTER C WITH CARON";
break;
case U'\u010D':
nm = U"LATIN SMALL LETTER C WITH CARON";
break;
case U'\u010E':
nm = U"LATIN CAPITAL LETTER D WITH CARON";
break;
case U'\u010F':
nm = U"LATIN SMALL LETTER D WITH CARON";
break;
case U'\u0110':
nm = U"LATIN CAPITAL LETTER D WITH STROKE";
break;
case U'\u0120':
nm = U"LATIN CAPITAL LETTER G WITH DOT ABOVE";
break;
case U'\u0130':
nm = U"LATIN CAPITAL LETTER I WITH DOT ABOVE";
break;
case U'\u0140':
nm = U"LATIN SMALL LETTER L WITH MIDDLE DOT";
break;
case U'\u0150':
nm = U"LATIN CAPITAL LETTER O WITH DOUBLE ACUTE";
break;
case U'\u0160':
nm = U"LATIN CAPITAL LETTER S WITH CARON";
break;
case U'\u0170':
nm = U"LATIN CAPITAL LETTER U WITH DOUBLE ACUTE";
break;
/* LATIN EXTENDED-B: */
case U'\u0180':
nm = U"LATIN SMALL LETTER B WITH STROKE";
break;
case U'\u0190':
nm = U"LATIN CAPITAL LETTER OPEN E";
break;
case U'\u01A0':
nm = U"LATIN CAPITAL LETTER O WITH HORN";
break;
case U'\u01B0':
nm = U"LATIN SMALL LETTER U WITH HORN";
break;
case U'\u01C0':
nm = U"LATIN LETTER DENTAL CLICK";
break;
case U'\u01D0':
nm = U"LATIN SMALL LETTER I WITH CARON";
break;
case U'\u01E0':
nm = U"LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON";
break;
case U'\u01F0':
nm = U"LATIN SMALL LETTER J WITH CARON";
break;
case U'\u0200':
nm = U"LATIN CAPITAL LETTER A WITH DOUBLE GRAVE";
break;
case U'\u0210':
nm = U"LATIN CAPITAL LETTER R WITH DOUBLE GRAVE";
break;
case U'\u0220':
nm = U"LATIN CAPITAL LETTER N WITH LONG RIGHT LEG";
break;
case U'\u0230':
nm = U"LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON";
break;
case U'\u0240':
nm = U"LATIN SMALL LETTER Z WITH SWASH TAIL";
break;
/* IPA EXTENSIONS: */
case U'\u0250':
nm = U"LATIN SMALL LETTER TURNED A";
break;
case U'\u0251':
nm = U"LATIN SMALL LETTER ALPHA";
break;
case U'\u0252':
nm = U"LATIN SMALL LETTER TURNED ALPHA";
break;
case U'\u0253':
nm = U"LATIN SMALL LETTER B WITH HOOK";
break;
case U'\u0254':
nm = U"LATIN SMALL LETTER OPEN O";
break;
case U'\u0255':
nm = U"LATIN SMALL LETTER C WITH CURL";
break;
case U'\u0256':
nm = U"LATIN SMALL LETTER D WITH TAIL";
break;
case U'\u0257':
nm = U"LATIN SMALL LETTER D WITH HOOK";
break;
case U'\u0258':
nm = U"LATIN SMALL LETTER REVERSED E";
break;
case U'\u0259':
nm = U"LATIN SMALL LETTER SCHWA";
break;
case U'\u025A':
nm = U"LATIN SMALL LETTER SCHWA WITH HOOK";
break;
case U'\u025B':
nm = U"LATIN SMALL LETTER OPEN E";
break;
case U'\u025C':
nm = U"LATIN SMALL LETTER REVERSED OPEN E";
break;
case U'\u025D':
nm = U"LATIN SMALL LETTER REVERSED OPEN E WITH HOOK";
break;
case U'\u025E':
nm = U"LATIN SMALL LETTER CLOSED REVERSED OPEN E";
break;
case U'\u025F':
nm = U"LATIN SMALL LETTER DOTLESS J WITH STROKE";
break;
case U'\u0260':
nm = U"LATIN SMALL LETTER G WITH HOOK";
break;
case U'\u0261':
nm = U"LATIN SMALL LETTER SCRIPT G";
break;
case U'\u0262':
nm = U"LATIN LETTER SMALL CAPITAL G";
break;
case U'\u0263':
nm = U"LATIN SMALL LETTER GAMMA";
break;
case U'\u0264':
nm = U"LATIN SMALL LETTER RAMS HORN";
break;
case U'\u0265':
nm = U"LATIN SMALL LETTER TURNED H";
break;
case U'\u0266':
nm = U"LATIN SMALL LETTER H WITH HOOK";
break;
case U'\u0267':
nm = U"LATIN SMALL LETTER HENG WITH HOOK";
break;
case U'\u0268':
nm = U"LATIN SMALL LETTER I WITH STROKE";
break;
case U'\u0269':
nm = U"LATIN SMALL LETTER IOTA";
break;
case U'\u026A':
nm = U"LATIN LETTER SMALL CAPITAL I";
break;
case U'\u026B':
nm = U"LATIN SMALL LETTER L WITH MIDDLE TILDE";
break;
case U'\u026C':
nm = U"LATIN SMALL LETTER L WITH BELT";
break;
case U'\u026D':
nm = U"LATIN SMALL LETTER L WITH RETROFLEX HOOK";
break;
case U'\u026E':
nm = U"LATIN SMALL LETTER LEZH";
break;
case U'\u026F':
nm = U"LATIN SMALL LETTER TURNED M";
break;
case U'\u0270':
nm = U"LATIN SMALL LETTER TURNED M WITH LONG LEG";
break;
case U'\u0271':
nm = U"LATIN SMALL LETTER M WITH HOOK";
break;
case U'\u0272':
nm = U"LATIN SMALL LETTER N WITH LEFT HOOK";
break;
case U'\u0273':
nm = U"LATIN SMALL LETTER N WITH RETROFLEX HOOK";
break;
case U'\u0274':
nm = U"LATIN LETTER SMALL CAPITAL N";
break;
case U'\u0275':
nm = U"LATIN SMALL LETTER BARRED O";
break;
case U'\u0276':
nm = U"LATIN LETTER SMALL CAPITAL OE";
break;
case U'\u0277':
nm = U"LATIN SMALL LETTER CLOSED OMEGA";
break;
case U'\u0278':
nm = U"LATIN SMALL LETTER PHI";
break;
case U'\u0279':
nm = U"LATIN SMALL LETTER TURNED R";
break;
case U'\u027A':
nm = U"LATIN SMALL LETTER TURNED R WITH LONG LEG";
break;
case U'\u027B':
nm = U"LATIN SMALL LETTER TURNED R WITH HOOK";
break;
case U'\u027C':
nm = U"LATIN SMALL LETTER R WITH LONG LEG";
break;
case U'\u027D':
nm = U"LATIN SMALL LETTER R WITH TAIL";
break;
case U'\u027E':
nm = U"LATIN SMALL LETTER R WITH FISHHOOK";
break;
case U'\u027F':
nm = U"LATIN SMALL LETTER REVERSED R WITH FISHHOOK";
break;
case U'\u0280':
nm = U"LATIN LETTER SMALL CAPITAL R";
break;
/* GREEK AND COPTIC: */
case U'\u0370':
nm = U"GREEK CAPITAL LETTER HETA";
break;
case U'\u0371':
nm = U"GREEK SMALL LETTER HETA";
break;
case U'\u0372':
nm = U"GREEK CAPITAL LETTER ARCHAIC SAMPI";
break;
case U'\u0373':
nm = U"GREEK SMALL LETTER ARCHAIC SAMPI";
break;
case U'\u0374':
nm = U"GREEK NUMERAL SIGN";
break;
case U'\u0375':
nm = U"GREEK LOWER NUMERAL SIGN";
break;
case U'\u0376':
nm = U"GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA";
break;
case U'\u0377':
nm = U"GREEK SMALL LETTER PAMPHYLIAN DIGAMMA";
break;
case U'\u037A':
nm = U"GREEK YPOGEGRAMMENI";
break;
case U'\u037B':
nm = U"GREEK SMALL REVERSED LUNATE SIGMA SYMBOL";
break;
case U'\u037C':
nm = U"GREEK SMALL DOTTED LUNATE SIGMA SYMBOL";
break;
case U'\u037D':
nm = U"GREEK SMALL REVERSED DOTTED LUNATE SIGMAL SYMBOL";
break;
case U'\u037E':
nm = U"GREEK QUESTION MARK";
break;
case U'\u037F':
nm = U"GREEK CAPITAL LETTER YOT";
break;
case U'\u0384':
nm = U"GREEK TONOS";
break;
case U'\u0385':
nm = U"GREEK DIALYTIKA TONOS";
break;
case U'\u0386':
nm = U"GREEK CAPITAL LETTER ALPHA WITH TONOS";
break;
case U'\u0387':
nm = U"GREEK ANO TELEIA";
break;
case U'\u0388':
nm = U"GREEK CAPITAL LETTER EPSILON WITH TONOS";
break;
case U'\u0389':
nm = U"GREEK CAPITAL LETTER ETA WITH TONOS";
break;
case U'\u038A':
nm = U"GREEK CAPITAL LETTER IOTA WITH TONOS";
break;
case U'\u038C':
nm = U"GREEK CAPITAL LETTER OMICRON WITH TONOS";
break;
case U'\u038E':
nm = U"GREEK CAPITAL LETTER USPILON WITH TONOS";
break;
case U'\u038F':
nm = U"GREEK CAPITAL LETTER OMEGA WITH TONOS";
break;
case U'\u0390':
nm = U"GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS";
break;
case U'\u0391':
nm = U"GREEK CAPITAL LETTER ALPHA";
break;
case U'\u0392':
nm = U"GREEK CAPITAL LETTER BETA";
break;
case U'\u0393':
nm = U"GREEK CAPITAL LETTER GAMMA";
break;
case U'\u0394':
nm = U"GREEK CAPITAL LETTER DELTA";
break;
case U'\u0395':
nm = U"GREEK CAPITAL LETTER EPSILON";
break;
case U'\u0396':
nm = U"GREEK CAPITAL LETTER ZETA";
break;
case U'\u0397':
nm = U"GREEK CAPITAL LETTER ETA";
break;
case U'\u0398':
nm = U"GREEK CAPITAL LETTER THETA";
break;
case U'\u0399':
nm = U"GREEK CAPITAL LETTER IOTA";
break;
case U'\u039A':
nm = U"GREEK CAPITAL LETTER KAPPA";
break;
case U'\u039B':
nm = U"GREEK CAPITAL LETTER LAMBDA";
break;
case U'\u039C':
nm = U"GREEK CAPITAL LETTER MU";
break;
case U'\u039D':
nm = U"GREEK CAPITAL LETTER NU";
break;
case U'\u039E':
nm = U"GREEK CAPITAL LETTER XI";
break;
case U'\u039F':
nm = U"GREEK CAPITAL LETTER OMICRON";
break;
case U'\u03A0':
nm = U"GREEK CAPITAL LETTER PI";
break;
case U'\u03A1':
nm = U"GREEK CAPITAL LETTER RHO";
break;
case U'\u03A3':
nm = U"GREEK CAPITAL LETTER SIGMA";
break;
case U'\u03A4':
nm = U"GREEK CAPITAL LETTER TAU";
break;
case U'\u03A5':
nm = U"GREEK CAPITAL LETTER UPSILON";
break;
case U'\u03A6':
nm = U"GREEK CAPITAL LETTER PHI";
break;
case U'\u03A7':
nm = U"GREEK CAPITAL LETTER CHI";
break;
case U'\u03A8':
nm = U"GREEK CAPITAL LETTER PSI";
break;
case U'\u03A9':
nm = U"GREEK CAPITAL LETTER OMEGA";
break;
case U'\u03AA':
nm = U"GREEK CAPITAL LETTER IOTA WITH DIALYTIKA";
break;
case U'\u03AB':
nm = U"GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA";
break;
case U'\u03AC':
nm = U"GREEK SMALL LETTER ALPHA WITH TONOS";
break;
case U'\u03AD':
nm = U"GREEK SMALL LETTER EPSILON WITH TONOS";
break;
case U'\u03AE':
nm = U"GREEK SMALL LETTER ETA WITH TONOS";
break;
case U'\u03AF':
nm = U"GREEK SMALL LETTER IOTA WITH TONOS";
break;
case U'\u03B0':
nm = U"GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS";
break;
case U'\u03B1':
nm = U"GREEK SMALL LETTER ALPHA";
break;
case U'\u03B2':
nm = U"GREEK SMALL LETTER BETA";
break;
case U'\u03B3':
nm = U"GREEK SMALL LETTER GAMMA";
break;
case U'\u03B4':
nm = U"GREEK SMALL LETTER DELTA";
break;
case U'\u03B5':
nm = U"GREEK SMALL LETTER EPSILON";
break;
case U'\u03B6':
nm = U"GREEK SMALL LETTER ZETA";
break;
case U'\u03B7':
nm = U"GREEK SMALL LETTER ETA";
break;
case U'\u03B8':
nm = U"GREEK SMALL LETTER THETA";
break;
case U'\u03B9':
nm = U"GREEK SMALL LETTER IOTA";
break;
case U'\u03BA':
nm = U"GREEK SMALL LETTER KAPPA";
break;
case U'\u03BB':
nm = U"GREEK SMALL LETTER LAMBDA";
break;
case U'\u03BC':
nm = U"GREEK SMALL LETTER MU";
break;
case U'\u03BD':
nm = U"GREEK SMALL LETTER NU";
break;
case U'\u03BE':
nm = U"GREEK SMALL LETTER XI";
break;
case U'\u03BF':
nm = U"GREEK SMALL LETTER OMICRON";
break;
case U'\u03C0':
nm = U"GREEK SMALL LETTER PI";
break;
case U'\u03C1':
nm = U"GREEK SMALL LETTER RHO";
break;
case U'\u03C2':
nm = U"GREEK SMALL LETTER FINAL SIGMA";
break;
case U'\u03C3':
nm = U"GREEK SMALL LETTER SIGMA";
break;
case U'\u03C4':
nm = U"GREEK SMALL LETTER TAU";
break;
case U'\u03C5':
nm = U"GREEK SMALL LETTER UPSILON";
break;
case U'\u03C6':
nm = U"GREEK SMALL LETTER PHI";
break;
case U'\u03C7':
nm = U"GREEK SMALL LETTER CHI";
break;
case U'\u03C8':
nm = U"GREEK SMALL LETTER PSI";
break;
case U'\u03C9':
nm = U"GREEK SMALL LETTER OMEGA";
break;
case U'\u03CA':
nm = U"GREEK SMALL LETTER IOTA WITH DIALYTIKA";
break;
case U'\u03CB':
nm = U"GREEK SMALL LETTER UPSILON WITH DIALYTIKA";
break;
case U'\u03CC':
nm = U"GREEK SMALL LETTER OMICRON WITH TONOS";
break;
case U'\u03CD':
nm = U"GREEK SMALL LETTER UPSILON WITH TONOS";
break;
case U'\u03CE':
nm = U"GREEK SMALL LETTER OMEGA WITH TONOS";
break;
case U'\u03CF':
nm = U"GREEK CAPITAL KAI SYMBOL";
break;
case U'\u03D0':
nm = U"GREEK BETA SYMBOL";
break;
case U'\u03D1':
nm = U"GREEK THETA SYMBOL";
break;
case U'\u03D2':
nm = U"GREEK UPSILON WITH HOOK SYMBOL";
break;
case U'\u03D3':
nm = U"GREEK UPSILON WITH ACUTE AND HOOK SYMBOL";
break;
case U'\u03D4':
nm = U"GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL";
break;
case U'\u03D5':
nm = U"GREEK PHI SYMBOL";
break;
case U'\u03D6':
nm = U"GREEK PI SYMBOL";
break;
case U'\u03D7':
nm = U"GREEK KAI SYMBOL";
break;
case U'\u03D8':
nm = U"GREEK LETTER ARCHAIC KOPPA";
break;
case U'\u03D9':
nm = U"GREEK SMALL LETTER ARCHAIC KOPPA";
break;
case U'\u03DA':
nm = U"GREEK LETTER STIGMA";
break;
case U'\u03DB':
nm = U"GREEK SMALL LETTER STIGMA";
break;
case U'\u03DC':
nm = U"GREEK LETTER DIGAMMA";
break;
case U'\u03DD':
nm = U"GREEK SMALL LETTER DIGAMMA";
break;
case U'\u03DE':
nm = U"GREEK LETTER KOPPA";
break;
case U'\u03DF':
nm = U"GREEK SMALL LETTER KOPPA";
break;
case U'\u03E0':
nm = U"GREEK LETTER SAMPI";
break;
case U'\u03F0':
nm = U"GREEK KAPPA SYMBOL";
break;
/* HEBREW: */
case U'\u05D0':
nm = U"HEBREW LETTER ALEF";
break;
case U'\u05D1':
nm = U"HEBREW LETTER BET";
break;
case U'\u05D2':
nm = U"HEBREW LETTER GIMEL";
break;
case U'\u05D3':
nm = U"HEBREW LETTER DALET";
break;
case U'\u05D4':
nm = U"HEBREW LETTER HE";
break;
case U'\u05D5':
nm = U"HEBREW LETTER VAV";
break;
case U'\u05D6':
nm = U"HEBREW LETTER ZAYIN";
break;
case U'\u05D7':
nm = U"HEBREW LETTER HET";
break;
case U'\u05D8':
nm = U"HEBREW LETTER TET";
break;
case U'\u05D9':
nm = U"HEBREW LETTER YOD";
break;
case U'\u05DA':
nm = U"HEBREW LETTER FINAL KAF";
break;
case U'\u05DB':
nm = U"HEBREW LETTER KAF";
break;
case U'\u05DC':
nm = U"HEBREW LETTER LAMED";
break;
case U'\u05DD':
nm = U"HEBREW LETTER FINAL MEM";
break;
case U'\u05DE':
nm = U"HEBREW LETTER MEM";
break;
case U'\u05DF':
nm = U"HEBREW LETTER FINAL NUN";
break;
case U'\u05E0':
nm = U"HEBREW LETTER NUN";
break;
case U'\u05E1':
nm = U"HEBREW LETTER SAMEKH";
break;
case U'\u05E2':
nm = U"HEBREW LETTER AYIN";
break;
case U'\u05E3':
nm = U"HEBREW LETTER FINAL PE";
break;
case U'\u05E4':
nm = U"HEBREW LETTER PE";
break;
case U'\u05E5':
nm = U"HEBREW LETTER FINAL TSADI";
break;
case U'\u05E6':
nm = U"HEBREW LETTER TSADI";
break;
case U'\u05E7':
nm = U"HEBREW LETTER QOF";
break;
case U'\u05E8':
nm = U"HEBREW LETTER RESH";
break;
case U'\u05E9':
nm = U"HEBREW LETTER SHIN";
break;
case U'\u05EA':
nm = U"HEBREW LETTER TAV";
break;
case U'\u05EF':
nm = U"HEBREW YOD TRIANGLE";
break;
/* CYRILLIC: */
case U'\u0400':
nm = U"CYRILLIC CAPITAL LETTER LE WITH GRAVE";
break;
case U'\u0401':
nm = U"CYRILLIC CAPITAL LETTER LO";
break;
case U'\u0402':
nm = U"CYRILLIC CAPITAL LETTER DJE";
break;
case U'\u0403':
nm = U"CYRILLIC CAPITAL LETTER GJE";
break;
case U'\u0404':
nm = U"CYRILLIC CAPITAL LETTER UKRAINIAN LE";
break;
case U'\u0405':
nm = U"CYRILLIC CAPITAL LETTER DZE";
break;
case U'\u0406':
nm = U"CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I";
break;
case U'\u0407':
nm = U"CYRILLIC CAPITAL LETTER YI";
break;
case U'\u0408':
nm = U"CYRILLIC CAPITAL LETTER JE";
break;
case U'\u0409':
nm = U"CYRILLIC CAPITAL LETTER LJE";
break;
case U'\u040A':
nm = U"CYRILLIC CAPITAL LETTER NJE";
break;
case U'\u040B':
nm = U"CYRILLIC CAPITAL LETTER TSHE";
break;
case U'\u040C':
nm = U"CYRILLIC CAPITAL LETTER KJE";
break;
case U'\u040D':
nm = U"CYRILLIC CAPITAL LETTER I WITH GRAVE";
break;
case U'\u040E':
nm = U"CYRILLIC CAPITAL LETTER SHORT U";
break;
case U'\u040F':
nm = U"CYRILLIC CAPITAL LETTER DZHE";
break;
case U'\u0410':
nm = U"CYRILLIC CAPITAL LETTER A";
break;
case U'\u0420':
nm = U"CYRILLIC CAPITAL LETTER ER";
break;
case U'\u0430':
nm = U"CYRILLIC SMALL LETTER A";
break;
case U'\u0440':
nm = U"CYRILLIC SMALL LETTER ER";
break;
case U'\u0450':
nm = U"CYRILLIC SMALL LETTER LE WITH GRAVE";
break;
case U'\u0460':
nm = U"CYRILLIC CAPITAL LETTER OMEGA";
break;
case U'\u0470':
nm = U"CYRILLIC CAPITAL LETTER PSI";
break;
case U'\u0480':
nm = U"CYRILLIC CAPITAL LETTER KOPPA";
break;
case U'\u0490':
nm = U"CYRILLIC CAPITAL LETTER GHE WITH UPTURN";
break;
case U'\u04A0':
nm = U"CYRILLIC CAPITAL LETTER BASHKIR KA";
break;
case U'\u04B0':
nm = U"CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE";
break;
case U'\u04C0':
nm = U"CYRILLIC LETTER PALOCHKA";
break;
case U'\u04D0':
nm = U"CYRILLIC CAPITAL LETTER A WITH BREVE";
break;
case U'\u04E0':
nm = U"CYRILLIC CAPITAL LETTER ABKHASIAN DZE";
break;
case U'\u04F0':
nm = U"CYRILLIC CAPITAL LETTER U WITH DIAERESIS";
break;
/* SYRIAC SUPPLEMENT: */
case U'\u0860':
nm = U"SYRIAC LETTER MALAYALAM NGA";
break;
case U'\u0861':
nm = U"SYRIAC LETTER MALAYALAM JA";
break;
case U'\u0862':
nm = U"SYRIAC LETTER MALAYALAM NYA";
break;
case U'\u0863':
nm = U"SYRIAC LETTER MALAYALAM TTA";
break;
case U'\u0864':
nm = U"SYRIAC LETTER MALAYALAM NNA";
break;
case U'\u0865':
nm = U"SYRIAC LETTER MALAYALAM NNNA";
break;
case U'\u0866':
nm = U"SYRIAC LETTER MALAYALAM BHA";
break;
case U'\u0867':
nm = U"SYRIAC LETTER MALAYALAM RA";
break;
case U'\u0868':
nm = U"SYRIAC LETTER MALAYALAM LLA";
break;
case U'\u0869':
nm = U"SYRIAC LETTER MALAYALAM LLLA";
break;
case U'\u086A':
nm = U"SYRIAC LETTER MALAYALAM SSA";
break;
/* RUNIC: */
case U'\u16A0':
nm = U"RUNIC LETTER FEHU FEOH FE F";
break;
case U'\u16A1':
nm = U"RUNIC LETTER V";
break;
case U'\u16A2':
nm = U"RUNIC LETTER URUZ UR U";
break;
case U'\u16A3':
nm = U"RUNIC LETTER YR";
break;
case U'\u16A4':
nm = U"RUNIC LETTER Y";
break;
case U'\u16A5':
nm = U"RUNIC LETTER W";
break;
case U'\u16A6':
nm = U"RUNIC LETTER THURISAZ THURS THORN";
break;
case U'\u16A7':
nm = U"RUNIC LETTER ETH";
break;
case U'\u16A8':
nm = U"RUNIC LETTER ANSUZ A";
break;
case U'\u16A9':
nm = U"RUNIC LETTER OS O";
break;
case U'\u16AA':
nm = U"RUNIC LETTER AC A";
break;
case U'\u16AB':
nm = U"RUNIC LETTER AESC";
break;
case U'\u16AC':
nm = U"RUNIC LETTER LONG-BRANCHED-OSS O";
break;
case U'\u16AD':
nm = U"RUNIC LETTER SHORT-TWIG-OSS O";
break;
case U'\u16AE':
nm = U"RUNIC LETTER O";
break;
case U'\u16AF':
nm = U"RUNIC LETTER OE";
break;
case U'\u16B0':
nm = U"RUNIC LETTER ON";
break;
case U'\u16C0':
nm = U"RUNIC LETTER DOTTED-N";
break;
case U'\u16D0':
nm = U"RUNIC LETTER SHORT-TWIG-TYR T";
break;
case U'\u16E0':
nm = U"RUNIC LETTER EAR";
break;
case U'\u16F0':
nm = U"RUNIC BELGTHOR SYMBOL";
break;
/* CYRILLIC EXTENDED C: */
case U'\u1C80':
nm = U"CYRILLIC SMALL LETTER ROUNDED VE";
break;
case U'\u1C81':
nm = U"CYRILLIC SMALL LETTER LONG-LEGGED DE";
break;
case U'\u1C82':
nm = U"CYRILLIC SMALL LETTER NARROW O";
break;
case U'\u1C83':
nm = U"CYRILLIC SMALL LETTER WIDE ES";
break;
case U'\u1C84':
nm = U"CYRILLIC SMALL LETTER TALL TE";
break;
case U'\u1C85':
nm = U"CYRILLIC SMALL LETTER THREE-LEGGED TE";
break;
case U'\u1C86':
nm = U"CYRILLIC SMALL LETTER TALL HARD SIGN";
break;
case U'\u1C87':
nm = U"CYRILLIC SMALL LETTER TALL YAT";
break;
case U'\u1C88':
nm = U"CYRILLIC SMALL LETTER UNBLENDED UK";
break;
/* GENERAL PUNCTUATION: */
case U'\u2000':
nm = U"EN QUAD";
break;
case U'\u2001':
nm = U"EM QUAD";
break;
case U'\u2002':
nm = U"EN SPACE";
break;
case U'\u2003':
nm = U"EM SPACE";
break;
case U'\u2004':
nm = U"THREE-PER-EM SPACE";
break;
case U'\u2005':
nm = U"FOUR-PER-EM SPACE";
break;
case U'\u2006':
nm = U"SIX-PER-EM SPACE";
break;
case U'\u2007':
nm = U"FIGURE SPACE";
break;
case U'\u2008':
nm = U"PUNCTUATION SPACE";
break;
case U'\u2009':
nm = U"THIN SPACE";
break;
case U'\u200A':
nm = U"HAIR SPACE";
break;
case U'\u203C':
nm = U"DOUBLE EXCLAMATION MARK";
break;
case U'\u2047':
nm = U"DOUBLE QUOTATION MARK";
break;
case U'\u2048':
nm = U"QUESTION EXCLAMATION MARK";
break;
case U'\u2049':
nm = U"EXCLAMATION QUESTION MARK";
break;
/* CURRENCY SYMBOLS: */
case U'\u20A0':
nm = U"EURO-CURRENCY SIGN";
break;
case U'\u20A1':
nm = U"COLON SIGN";
break;
case U'\u20A2':
nm = U"CRUZEIRO SIGN";
break;
case U'\u20A3':
nm = U"FRENCH FRANC SIGN";
break;
case U'\u20A4':
nm = U"LIRA SIGN";
break;
case U'\u20A5':
nm = U"MILL SIGN";
break;
case U'\u20A6':
nm = U"NAIRA SIGN";
break;
case U'\u20A7':
nm = U"PESETA SIGN";
break;
case U'\u20A8':
nm = U"RUPEE SIGN";
break;
case U'\u20A9':
nm = U"WON SIGN";
break;
case U'\u20AA':
nm = U"NEW SHEQEL SIGN";
break;
case U'\u20AB':
nm = U"DONG SIGN";
break;
case U'\u20AC':
nm = U"EURO SIGN";
break;
case U'\u20AD':
nm = U"KIP SIGN";
break;
case U'\u20AE':
nm = U"TUGRIK SIGN";
break;
case U'\u20AF':
nm = U"DRACHMA SIGN";
break;
case U'\u20B0':
nm = U"GERMAN PENNY SIGN";
break;
case U'\u20B1':
nm = U"PESO SIGN";
break;
case U'\u20B2':
nm = U"GUARANI SIGN";
break;
case U'\u20B3':
nm = U"AUSTRAL SIGN";
break;
case U'\u20B4':
nm = U"HRYVNIA SIGN";
break;
case U'\u20B5':
nm = U"CEDI SIGN";
break;
case U'\u20B6':
nm = U"LIVRE TOURNOIS SIGN";
break;
case U'\u20B7':
nm = U"SPESMILO SIGN";
break;
case U'\u20B8':
nm = U"TENGE SIGN";
break;
case U'\u20BA':
nm = U"TURKISH LIRA SIGN";
break;
case U'\u20BB':
nm = U"NORDIC MARK SIGN";
break;
case U'\u20BC':
nm = U"MANAT SIGN";
break;
case U'\u20BD':
nm = U"RUBLE SYMBOL";
break;
case U'\u20BE':
nm = U"LARI SIGN";
break;
case U'\u20BF':
nm = U"BITCOIN SIGN";
break;
/* LETTERLIKE SYMBOLS: */
case U'\u2100':
nm = U"ACCOUNT OF";
break;
case U'\u2101':
nm = U"ADRESSED TO THE SUBJECT";
break;
case U'\u2102':
nm = U"DOUBLE-STRUCK CAPITAL C";
break;
case U'\u2103':
nm = U"DEGREE CELSIUS";
break;
case U'\u2104':
nm = U"CENTRE LINE SYMBOL";
break;
case U'\u2105':
nm = U"CARE OF";
break;
case U'\u2106':
nm = U"CADA UNA";
break;
case U'\u2107':
nm = U"EULER CONSTANT";
break;
case U'\u2108':
nm = U"SCRUPLE";
break;
case U'\u2109':
nm = U"DEGREE FAHRENHEIT";
break;
case U'\u210A':
nm = U"SCRIPT SMALL G";
break;
case U'\u210B':
nm = U"SCRIPT CAPITAL H";
break;
case U'\u210C':
nm = U"BLACK-LETTER CAPITAL H";
break;
case U'\u210D':
nm = U"DOUBLE-STRUCK CAPITAL H";
break;
case U'\u210E':
nm = U"PLANCK CONSTANT";
break;
case U'\u210F':
nm = U"PLANCK CONSTANT OVER TWO PI";
break;
case U'\u2110':
nm = U"SCRIPT CAPITAL I";
break;
case U'\u2111':
nm = U"BLACK-LETTER CAPITAL I";
break;
case U'\u2112':
nm = U"SCRIPT CAPITAL L";
break;
case U'\u2113':
nm = U"SCRIPT SMALL L";
break;
case U'\u2114':
nm = U"L B BAR SYMBOL";
break;
case U'\u2115':
nm = U"DOUBLE-STRUCK CAPITAL N";
break;
case U'\u2116':
nm = U"NUMERO SIGN";
break;
case U'\u2117':
nm = U"SOUND RECORDING COPYRIGHT";
break;
case U'\u2118':
nm = U"SCRIPT CAPITAL P";
break;
case U'\u2119':
nm = U"DOUBLE-STRUCK CAPITAL P";
break;
case U'\u211A':
nm = U"DOUBLE-STRUCK CAPITAL Q";
break;
case U'\u211B':
nm = U"SCRIPT CAPITAL R";
break;
case U'\u211C':
nm = U"BLACK-LETTER CAPITAL R";
break;
case U'\u211D':
nm = U"DOUBLE-STRUCK CAPITAL R";
break;
case U'\u211E':
nm = U"PRESCRIPTION TAKE";
break;
case U'\u211F':
nm = U"RESPONSE";
break;
case U'\u2120':
nm = U"SERVICE MARK";
break;
case U'\u2121':
nm = U"TELEPHONE SIGN";
break;
case U'\u2122':
nm = U"TRADE MARK SIGN";
break;
case U'\u2123':
nm = U"VERSICLE";
break;
case U'\u2124':
nm = U"DOUBLE-STRUCK CAPITAL Z";
break;
case U'\u2125':
nm = U"OUNCE SIGN";
break;
case U'\u2126':
nm = U"OHM SIGN";
break;
case U'\u2127':
nm = U"INVERTED OHM SIGN";
break;
case U'\u2128':
nm = U"BLACK-LETTER CAPITAL Z";
break;
case U'\u2129':
nm = U"TURNED GREEK SMALL LETTER IOTA";
break;
case U'\u212A':
nm = U"KELVIN SIGN";
break;
case U'\u212B':
nm = U"ANGSTROM SIGN";
break;
case U'\u212C':
nm = U"SCRIPT CAPITAL B";
break;
case U'\u212D':
nm = U"BLACK-LETTER CAPITAL C";
break;
case U'\u212E':
nm = U"ESTIMATED SYMBOL";
break;
case U'\u212F':
nm = U"SCRIPT SMALL E";
break;
case U'\u2130':
nm = U"SCRIPT CAPITAL E";
break;
case U'\u2131':
nm = U"SCRIPT CAPITAL F";
break;
case U'\u2132':
nm = U"TURNED CAPITAL F";
break;
case U'\u2133':
nm = U"SCRIPT CAPITAL M";
break;
case U'\u2134':
nm = U"SCRIPT SMALL O";
break;
case U'\u2135':
nm = U"ALEF SYMBOL";
break;
case U'\u2136':
nm = U"BET SYMBOL";
break;
case U'\u2137':
nm = U"GIMEL SYMBOL";
break;
case U'\u2138':
nm = U"DALET SYMBOL";
break;
case U'\u2139':
nm = U"INFORMATION SOURCE";
break;
case U'\u213A':
nm = U"ROTATED CAPITAL Q";
break;
case U'\u213B':
nm = U"FACSIMILE SIGN";
break;
case U'\u213C':
nm = U"DOUBLE-STRUCK SMALL PI";
break;
case U'\u213D':
nm = U"DOUBLE-STRUCK SMALL GAMMA";
break;
case U'\u213E':
nm = U"DOUBLE-STRUCK CAPITAL GAMMA";
break;
case U'\u213F':
nm = U"DOUBLE-STRUCK CAPITAL PI";
break;
case U'\u2140':
nm = U"DOUBLE-STRUCK N-ARY SUMMATION";
break;
case U'\u2141':
nm = U"TURNED SANS-SERIF CAPITAL G";
break;
case U'\u2142':
nm = U"TURNED SANS-SERIF CAPITAL L";
break;
case U'\u2143':
nm = U"REVERSED SANS-SERIF CAPITAL L";
break;
case U'\u2144':
nm = U"TURNED SANS-SERIF CAPITAL Y";
break;
case U'\u2145':
nm = U"DOUBLE-STRUCK ITALIC CAPITAL D";
break;
case U'\u2146':
nm = U"DOUBLE-STRUCK ITALIC SMALL D";
break;
case U'\u2147':
nm = U"DOUBLE-STRUCK ITALIC SMALL E";
break;
case U'\u2148':
nm = U"DOUBLE-STRUCK ITALIC SMALL I";
break;
case U'\u2149':
nm = U"DOUBLE-STRUCK ITALIC SMALL J";
break;
case U'\u214A':
nm = U"PROPERTY LINE";
break;
case U'\u214B':
nm = U"TURNED AMPERSAND";
break;
case U'\u214C':
nm = U"PER SIGN";
break;
case U'\u214D':
nm = U"AKTIESELSKAB";
break;
case U'\u214E':
nm = U"TURNED SMALL F";
break;
case U'\u214F':
nm = U"SYMBOL FOR SAMARITAN SOURCE";
break;
/* NUMBER FORMS: */
case U'\u2150':
nm = U"VULGAR FRACTION ONE SEVENTH";
break;
case U'\u2151':
nm = U"VULGAR FRACTION ONE NINTH";
break;
case U'\u2152':
nm = U"VULGAR FRACTION ONE TENTH";
break;
case U'\u2153':
nm = U"VULGAR FRACTION ONE THIRD";
break;
case U'\u2154':
nm = U"VULGAR FRACTION TWO THIRDS";
break;
case U'\u2155':
nm = U"VULGAR FRACTION ONE FIFTH";
break;
case U'\u2156':
nm = U"VULGAR FRACTION TWO FIFTHS";
break;
case U'\u2157':
nm = U"VULGAR FRACTION THREE FIFTHS";
break;
case U'\u2158':
nm = U"VULGAR FRACTION FOUR FIFTHS";
break;
case U'\u2159':
nm = U"VULGAR FRACTION ONE SIXTH";
break;
case U'\u215A':
nm = U"VULGAR FRACTION FIVE SIXTHS";
break;
case U'\u215B':
nm = U"VULGAR FRACTION ONE EIGTH";
break;
case U'\u215C':
nm = U"VULGAR FRACTION THREE EIGTHS";
break;
case U'\u215D':
nm = U"VULGAR FRACTION FIVE EIGHTS";
break;
case U'\u215E':
nm = U"VULGAR FRACTION SEVEN EIGTHS";
break;
case U'\u215F':
nm = U"FRACTION NUMERATOR ONE";
break;
case U'\u2160':
nm = U"ROMAN NUMERAL ONE";
break;
case U'\u2161':
nm = U"ROMAN NUMERAL TWO";
break;
case U'\u2162':
nm = U"ROMAN NUMERAL THREE";
break;
case U'\u2163':
nm = U"ROMAN NUMERAL FOUR";
break;
case U'\u2164':
nm = U"ROMAN NUMERAL FIVE";
break;
case U'\u2165':
nm = U"ROMAN NUMERAL SIX";
break;
case U'\u2166':
nm = U"ROMAN NUMERAL SEVEN";
break;
case U'\u2167':
nm = U"ROMAN NUMERAL EIGHT";
break;
case U'\u2168':
nm = U"ROMAN NUMERAL NINE";
break;
case U'\u2169':
nm = U"ROMAN NUMERAL TEN";
break;
case U'\u216A':
nm = U"ROMAN NUMERAL ELEVEN";
break;
case U'\u216B':
nm = U"ROMAN NUMERAL TWELVE";
break;
case U'\u216C':
nm = U"ROMAN NUMERAL FIFTY";
break;
case U'\u216D':
nm = U"ROMAN NUMERAL ONE HUNDRED";
break;
case U'\u216E':
nm = U"ROMAN NUMERAL FIVE HUNDRED";
break;
case U'\u216F':
nm = U"ROMAN NUMERAL ONE THOUSAND";
break;
case U'\u2170':
nm = U"SMALL ROMAN NUMERAL ONE";
break;
case U'\u2171':
nm = U"SMALL ROMAN NUMERAL TWO";
break;
case U'\u2172':
nm = U"SMALL ROMAN NUMERAL THREE";
break;
case U'\u2173':
nm = U"SMALL ROMAN NUMERAL FOUR";
break;
case U'\u2174':
nm = U"SMALL ROMAN NUMERAL FIVE";
break;
case U'\u2175':
nm = U"SMALL ROMAN NUMERAL SIX";
break;
case U'\u2176':
nm = U"SMALL ROMAN NUMERAL SEVEN";
break;
case U'\u2177':
nm = U"SMALL ROMAN NUMERAL EIGHT";
break;
case U'\u2178':
nm = U"SMALL ROMAN NUMERAL NINE";
break;
case U'\u2179':
nm = U"SMALL ROMAN NUMERAL TEN";
break;
case U'\u217A':
nm = U"SMALL ROMAN NUMERAL ELEVEN";
break;
case U'\u217B':
nm = U"SMALL ROMAN NUMERAL TWELVE";
break;
case U'\u217C':
nm = U"SMALL ROMAN NUMERAL FIFTY";
break;
case U'\u217D':
nm = U"SMALL ROMAN NUMERAL ONE HUNDRED";
break;
case U'\u217E':
nm = U"SMALL ROMAN NUMERAL FIVE HUNDRED";
break;
case U'\u217F':
nm = U"SMALL ROMAN NUMERAL ONE THOUSAND";
break;
case U'\u2180':
nm = U"ROMAN NUMERAL ONE THOUSAND C D";
break;
case U'\u2181':
nm = U"ROMAN NUMERAL FIVE THOUSAND";
break;
case U'\u2182':
nm = U"ROMAN NUMERAL TEN THOUSAND";
break;
case U'\u2183':
nm = U"ROMAN NUMERAL REVERSED ONE HUNDRED";
break;
case U'\u2184':
nm = U"LATIN SMALL LETTER REVERSED C";
break;
case U'\u2185':
nm = U"ROMAN NUMERAL SIX LATE FORM";
break;
case U'\u2186':
nm = U"ROMAN NUMERAL FIFTY EARLY FORM";
break;
case U'\u2187':
nm = U"ROMAN NUMERAL FIFTY THOUSAND";
break;
case U'\u2188':
nm = U"ROMAN NUMERAL ONE HUNDRED THOUSAND";
break;
case U'\u2189':
nm = U"VULGAR FRACTION ZERO THIRDS";
break;
case U'\u218A':
nm = U"TURNED DIGIT TWO";
break;
case U'\u218B':
nm = U"TURNED DIGIT THREE";
break;
/* MISCELLANEOUS SYMBOLS: */
case U'\u26B9':
nm = U"SEXTILE";
break;
/* DINGBATS: */
case U'\u271D':
nm = U"LATIN CROSS";
break;
case U'\u2721':
nm = U"STAR OF DAVID";
break;
/* SUPPLEMENTAL PUNCTUATION: */
case U'\u2E3B':
nm = U"THREE-EM DASH";
break;
/* ARABIC PRESENTATION FORMS-A: */
case U'\uFDFD':
nm = U"ARABIC LIGATURE BISMILLAH AL-RAHMAN AR-RAHEEM";
break;
/* ANCIENT SYMBOLS: */
case U'\U00010190':
nm = U"ROMAN SEXTANS SIGN";
break;
case U'\U00010191':
nm = U"ROMAN UNCIA SIGN";
break;
case U'\U00010192':
nm = U"ROMAN SEMUNCIA SIGN";
break;
case U'\U00010193':
nm = U"ROMAN SEXTULA SIGN";
break;
case U'\U00010194':
nm = U"ROMAN DIMIDIA SEXTULA SIGN";
break;
case U'\U00010195':
nm = U"ROMAN SILIQUA SIGN";
break;
case U'\U00010196':
nm = U"ROMAN DENARIUS SIGN";
break;
case U'\U00010197':
nm = U"ROMAN QUINARIUS SIGN";
break;
case U'\U00010198':
nm = U"ROMAN SESTERTIUS SIGN";
break;
case U'\U00010199':
nm = U"ROMAN DUPONDIUS SIGN";
break;
case U'\U0001019A':
nm = U"ROMAN AS SIGN";
break;
case U'\U0001019B':
nm = U"ROMAN CENTURIAL SIGN";
break;
case U'\U0001019C':
nm = U"ASCIA SIGN";
break;
/* BRAHMI: */
case U'\U00011066':
nm = U"BRAHMI DIGIT ZERO";
break;
case U'\U00011067':
nm = U"BRAHMI DIGIT ONE";
break;
case U'\U00011068':
nm = U"BRAHMI DIGIT TWO";
break;
case U'\U00011069':
nm = U"BRAHMI DIGIT THREE";
break;
case U'\U0001106A':
nm = U"BRAHMI DIGIT FOUR";
break;
case U'\U0001106B':
nm = U"BRAHMI DIGIT FIVE";
break;
case U'\U0001106C':
nm = U"BRAHMI DIGIT SIX";
break;
case U'\U0001106D':
nm = U"BRAHMI DIGIT SEVEN";
break;
case U'\U0001106E':
nm = U"BRAHMI DIGIT EIGHT";
break;
case U'\U0001106F':
nm = U"BRAHMI DIGIT NINE";
break;
/* CUNEIFORM: */
case U'\U00012031':
nm = U"CUNEIFORM SIGN AN PLUS NAGA SQUARED";
break;
/* CUNEIFORM NUMBERS AND PUNCTUATION: */
case U'\U0001242B':
nm = U"CUNEIFORM NUMERIC SIGN NINE SHAR2";
break;
/* EGYPTIAN HIEROGLYPHS: */
case U'\U000130B8':
nm = U"EGYPTIAN HIEROGLYPH D052";
break;
/* COUNTING ROD NUMERALS: */
case U'\U0001D372':
nm = U"IDEOGRAPHIC TALLY MARK ONE";
break;
case U'\U0001D373':
nm = U"IDEOGRAPHIC TALLY MARK TWO";
break;
case U'\U0001D374':
nm = U"IDEOGRAPHIC TALLY MARK THREE";
break;
case U'\U0001D375':
nm = U"IDEOGRAPHIC TALLY MARK FOUR";
break;
case U'\U0001D376':
nm = U"IDEOGRAPHIC TALLY MARK FIVE";
break;
case U'\U0001D377':
nm = U"TALLY MARK ONE";
break;
case U'\U0001D378':
nm = U"TALLY MARK FIVE";
break;
/* ENCLOSED ALPHANUMERIC SUPPLEMENT: */
case U'\U0001F10D':
nm = U"CIRCLED ZERO WITH SLASH";
break;
case U'\U0001F10E':
nm = U"CIRCLED ANTICKLOCKWISE ARROW";
break;
case U'\U0001F10F':
nm = U"CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH";
break;
case U'\U0001F12F':
nm = U"COPYLEFT SYMBOL";
break;
case U'\U0001F16D':
nm = U"CIRCLED CC";
break;
case U'\U0001F16E':
nm = U"CIRCLED C WITH OVERLAID BACKSLASH";
break;
case U'\U0001F16F':
nm = U"CIRCLED HUMAN FIGURE";
break;
/* EMOTICONS: */
case U'\U0001F600':
nm = U"GRINNING FACE";
break;
case U'\U0001F601':
nm = U"GRINNING FACE WITH SMIRKING EYES";
break;
case U'\U0001F602':
nm = U"FACE WITH TEARS OF JOY";
break;
case U'\U0001F603':
nm = U"SMILING FACE WITH OPEN MOUTH";
break;
case U'\U0001F604':
nm = U"SMILING FACE WITH OPEN MOUTH AND SMILING EYES";
break;
case U'\U0001F605':
nm = U"SMILING FACE WITH OPEN MOUTH AND COULD SWEAT";
break;
case U'\U0001F606':
nm = U"SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES";
break;
case U'\U0001F607':
nm = U"SMILING FACE WITH HALO";
break;
case U'\U0001F608':
nm = U"SMILING FACE WITH HORNS";
break;
case U'\U0001F609':
nm = U"WINKING FACE";
break;
case U'\U0001F60A':
nm = U"SMILING FACE WITH SMILING EYES";
break;
case U'\U0001F60B':
nm = U"FACE SAVOURING DELICIOUS FOOD";
break;
case U'\U0001F60C':
nm = U"RELIEVED FACE";
break;
case U'\U0001F60D':
nm = U"SMILLING FACE HEART-SHAPED EYES";
break;
case U'\U0001F60E':
nm = U"SMILLING FACE WITH SUNGLASSES";
break;
case U'\U0001F60F':
nm = U"SMIRKING FACE";
break;
case U'\U0001F610':
nm = U"NEUTRAL FACE";
break;
case U'\U0001F611':
nm = U"EXPRESSIONLESS FACE";
break;
case U'\U0001F612':
nm = U"UNAMUSED FACE";
break;
case U'\U0001F613':
nm = U"FACE WITH COLD SWEAT";
break;
case U'\U0001F614':
nm = U"PENSIVE FACE";
break;
case U'\U0001F615':
nm = U"CONFUSED FACE";
break;
case U'\U0001F616':
nm = U"CONFOUNDED FACE";
break;
case U'\U0001F617':
nm = U"KISSING FACE";
break;
case U'\U0001F618':
nm = U"FACE THROWING A KISS";
break;
case U'\U0001F619':
nm = U"KISSING FACE WITH SMILLING EYES";
break;
case U'\U0001F61A':
nm = U"KISSING FACE WITH CLOSED EYES";
break;
case U'\U0001F61B':
nm = U"FACE WITH STUCK-OUT TONGUE";
break;
case U'\U0001F61C':
nm = U"FACE WITH STUCK-OUT TONGUE AND WINKING EYE";
break;
case U'\U0001F61D':
nm = U"FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES";
break;
case U'\U0001F61E':
nm = U"DISSAPOINTED FACE";
break;
case U'\U0001F61F':
nm = U"WORRIED FACE";
break;
case U'\U0001F620':
nm = U"ANGRY FACE";
break;
case U'\U0001F621':
nm = U"POUTING FACE";
break;
case U'\U0001F622':
nm = U"CRYING FACE";
break;
case U'\U0001F623':
nm = U"PERSEVERING FACE";
break;
case U'\U0001F624':
nm = U"FACE WITH LOOK OF TRIUMPH";
break;
case U'\U0001F625':
nm = U"DISSAPOINTED BUT RELIEVED FACE";
break;
case U'\U0001F626':
nm = U"FROWNING FACE WITH OPEN MOUTH";
break;
case U'\U0001F627':
nm = U"ANGUISHED FACE";
break;
case U'\U0001F628':
nm = U"FEARFUL FACE";
break;
case U'\U0001F629':
nm = U"WEARY FACE";
break;
case U'\U0001F62A':
nm = U"SLEEPY FACE";
break;
case U'\U0001F62B':
nm = U"TIRED FACE";
break;
case U'\U0001F62C':
nm = U"GRIMACING FACE";
break;
case U'\U0001F62D':
nm = U"LOUDLY CRYING FACE";
break;
case U'\U0001F62E':
nm = U"FACE WITH OPEN MOUTH";
break;
case U'\U0001F62F':
nm = U"HUSHED FACE";
break;
case U'\U0001F630':
nm = U"FACE WITH OPEN MOUTH AND COLD SWEAT";
break;
case U'\U0001F631':
nm = U"FACE SCREAMING IN FEAR";
break;
case U'\U0001F632':
nm = U"ASTONISHED FACE";
break;
case U'\U0001F633':
nm = U"FLUSHED FACE";
break;
case U'\U0001F634':
nm = U"SLEEPING FACE";
break;
case U'\U0001F635':
nm = U"DIZZY FACE";
break;
case U'\U0001F636':
nm = U"FACE WITHOUT MOUTH";
break;
case U'\U0001F637':
nm = U"FACE WITH MEDICAL MASK";
break;
case U'\U0001F641':
nm = U"SLIGHTLY FROWNING FACE";
break;
case U'\U0001F642':
nm = U"SLIGHTLY SMILING FACE";
break;
case U'\U0001F643':
nm = U"UPSIDE-DOWN FACE";
break;
case U'\U0001F644':
nm = U"FACE WITH ROLLING EYES";
break;
/* CJK UNIFIED IDEOGRAPHS EXTENSION G: */
case U'\U0003106C':
nm = U"CJK UNIFIED IDEOGRAPH-3106C";
break;
}
{
struct u8c_strcp_tuple const tuple = u8c_strcp(nm);
ret.nm = tuple.str;
ret.nmsz = tuple.strsz;
}
return ret;
}