diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
commit | f4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch) | |
tree | 2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/programs/xterm/unicode | |
parent | a840692edc9c6d19cd7c057f68e39c7d95eb767d (diff) | |
download | nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2 nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip |
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz
Keywords:
Imported nx-X11-3.1.0-1.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/programs/xterm/unicode')
-rw-r--r-- | nx-X11/programs/xterm/unicode/README | 24 | ||||
-rw-r--r-- | nx-X11/programs/xterm/unicode/convmap.pl | 177 | ||||
-rw-r--r-- | nx-X11/programs/xterm/unicode/keysym.map | 1062 | ||||
-rw-r--r-- | nx-X11/programs/xterm/unicode/make-precompose.sh | 8 | ||||
-rw-r--r-- | nx-X11/programs/xterm/unicode/precompose.c.head | 16 | ||||
-rw-r--r-- | nx-X11/programs/xterm/unicode/precompose.c.tail | 23 |
6 files changed, 1310 insertions, 0 deletions
diff --git a/nx-X11/programs/xterm/unicode/README b/nx-X11/programs/xterm/unicode/README new file mode 100644 index 000000000..a6b4fb1db --- /dev/null +++ b/nx-X11/programs/xterm/unicode/README @@ -0,0 +1,24 @@ +-- $XTermId: README,v 1.10 2004/12/01 01:27:49 tom Exp $ +-- $XFree86: xc/programs/xterm/unicode/README,v 1.5 2004/12/01 01:27:49 dickey Exp $ +-- Thomas E. Dickey + +These are some scripts and datafiles used for generating tables used in the +experimental UTF-8 implementation in xterm. + +To run the convmap.pl script, you will need a copy of UnicodeData-Latest.txt +which is currently available as + + ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt + +It is a large file (~877kb), so it is not included in this distribution. + +convmap.pl is used to generate ../keysym2ucs.c, e.g., + + ./convmap.pl >../keysym2ucs.c + +keysym.map is input data for convmap.pl + + +The make-precompose.sh script makes the precompose.c file, which is used to +handle canonical composition. This also needs UnicodeData-Latest.txt. It uses +precompose.c.head and precompose.c.tail as templates. diff --git a/nx-X11/programs/xterm/unicode/convmap.pl b/nx-X11/programs/xterm/unicode/convmap.pl new file mode 100644 index 000000000..aa85b6fb7 --- /dev/null +++ b/nx-X11/programs/xterm/unicode/convmap.pl @@ -0,0 +1,177 @@ +#!/usr/bin/perl +# Generate keysym2ucs.c file +# +# $XFree86: xc/programs/xterm/unicode/convmap.pl,v 1.5 2000/01/24 22:22:05 dawes Exp $ + +sub utf8 ($) { + my $c = shift(@_); + + if ($c < 0x80) { + return sprintf("%c", $c); + } elsif ($c < 0x800) { + return sprintf("%c%c", 0xc0 | ($c >> 6), 0x80 | ($c & 0x3f)); + } elsif ($c < 0x10000) { + return sprintf("%c%c%c", + 0xe0 | ($c >> 12), + 0x80 | (($c >> 6) & 0x3f), + 0x80 | ( $c & 0x3f)); + } elsif ($c < 0x200000) { + return sprintf("%c%c%c%c", + 0xf0 | ($c >> 18), + 0x80 | (($c >> 12) & 0x3f), + 0x80 | (($c >> 6) & 0x3f), + 0x80 | ( $c & 0x3f)); + } elsif ($c < 0x4000000) { + return sprintf("%c%c%c%c%c", + 0xf8 | ($c >> 24), + 0x80 | (($c >> 18) & 0x3f), + 0x80 | (($c >> 12) & 0x3f), + 0x80 | (($c >> 6) & 0x3f), + 0x80 | ( $c & 0x3f)); + + } elsif ($c < 0x80000000) { + return sprintf("%c%c%c%c%c%c", + 0xfe | ($c >> 30), + 0x80 | (($c >> 24) & 0x3f), + 0x80 | (($c >> 18) & 0x3f), + 0x80 | (($c >> 12) & 0x3f), + 0x80 | (($c >> 6) & 0x3f), + 0x80 | ( $c & 0x3f)); + } else { + return utf8(0xfffd); + } +} + +$unicodedata = "UnicodeData-Latest.txt"; + +# read list of all Unicode names +if (!open(UDATA, $unicodedata) && !open(UDATA, "$unicodedata")) { + die ("Can't open Unicode database '$unicodedata':\n$!\n\n" . + "Please make sure that you have downloaded the file\n" . + "ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt\n"); +} +while (<UDATA>) { + if (/^([0-9,A-F]{4});([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*)$/) { + $name{hex($1)} = $2; + } else { + die("Syntax error in line '$_' in file '$unicodedata'"); + } +} +close(UDATA); + +# read mapping (from http://wsinwp07.win.tue.nl:1234/unicode/keysym.map) +open(LIST, "<keysym.map") || die ("Can't open map file:\n$!\n"); +while (<LIST>) { + if (/^0x([0-9a-f]{4})\s+U([0-9a-f]{4})\s*(\#.*)?$/){ + $keysym = hex($1); + $ucs = hex($2); + $keysym_to_ucs{$keysym} = $ucs; + } elsif (/^\s*\#/ || /^\s*$/) { + } else { + die("Syntax error in 'list' in line\n$_\n"); + } +} +close(LIST); + +# read entries in keysymdef.h +open(LIST, "</usr/include/X11/keysymdef.h") || die ("Can't open keysymdef.h:\n$!\n"); +while (<LIST>) { + if (/^\#define\s+XK_([A-Za-z_0-9]+)\s+0x([0-9a-fA-F]+)\s*(\/.*)?$/) { + next if /\/\* deprecated \*\//; + $keysymname = $1; + $keysym = hex($2); + $keysym_to_keysymname{$keysym} = $keysymname; + } +} +close(LIST); + +print <<EOT; +/* \$XFree86\$ + * This module converts keysym values into the corresponding ISO 10646-1 + * (UCS, Unicode) values. + * + * The array keysymtab[] contains pairs of X11 keysym values for graphical + * characters and the corresponding Unicode value. The function + * keysym2ucs() maps a keysym onto a Unicode value using a binary search, + * therefore keysymtab[] must remain SORTED by keysym value. + * + * The keysym -> UTF-8 conversion will hopefully one day be provided + * by Xlib via XmbLookupString() and should ideally not have to be + * done in X applications. But we are not there yet. + * + * We allow to represent any UCS character in the range U+00000000 to + * U+00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff. + * This admittedly does not cover the entire 31-bit space of UCS, but + * it does cover all of the characters up to U+10FFFF, which can be + * represented by UTF-16, and more, and it is very unlikely that higher + * UCS codes will ever be assigned by ISO. So to get Unicode character + * U+ABCD you can directly use keysym 0x1000abcd. + * + * NOTE: The comments in the table below contain the actual character + * encoded in UTF-8, so for viewing and editing best use an editor in + * UTF-8 mode. + * + * Author: Markus G. Kuhn <mkuhn\@acm.org>, University of Cambridge, June 1999 + * + * Special thanks to Richard Verhoeven <river\@win.tue.nl> for preparing + * an initial draft of the mapping table. + * + * This software is in the public domain. Share and enjoy! + */ + +#include <keysym2ucs.h> + +struct codepair { + unsigned short keysym; + unsigned short ucs; +} keysymtab[] = { +EOT + +for $keysym (sort {$a <=> $b} keys(%keysym_to_keysymname)) { + $ucs = $keysym_to_ucs{$keysym}; + next if $keysym >= 0xf000 || $keysym < 0x100; + if ($ucs) { + printf(" { 0x%04x, 0x%04x }, /*%28s %s %s */\n", + $keysym, $ucs, $keysym_to_keysymname{$keysym}, utf8($ucs), + defined($name{$ucs}) ? $name{$ucs} : "???" ); + } else { + printf("/* 0x%04x %39s ? ??? */\n", + $keysym, $keysym_to_keysymname{$keysym}); + } +} + +print <<EOT; +}; + +long keysym2ucs(KeySym keysym) +{ + int min = 0; + int max = sizeof(keysymtab) / sizeof(struct codepair) - 1; + int mid; + + /* first check for Latin-1 characters (1:1 mapping) */ + if ((keysym >= 0x0020 && keysym <= 0x007e) || + (keysym >= 0x00a0 && keysym <= 0x00ff)) + return keysym; + + /* also check for directly encoded 24-bit UCS characters */ + if ((keysym & 0xff000000) == 0x01000000) + return keysym & 0x00ffffff; + + /* binary search in table */ + while (max >= min) { + mid = (min + max) / 2; + if (keysymtab[mid].keysym < keysym) + min = mid + 1; + else if (keysymtab[mid].keysym > keysym) + max = mid - 1; + else { + /* found it */ + return keysymtab[mid].ucs; + } + } + + /* no matching Unicode value found */ + return -1; +} +EOT diff --git a/nx-X11/programs/xterm/unicode/keysym.map b/nx-X11/programs/xterm/unicode/keysym.map new file mode 100644 index 000000000..6e587bdc0 --- /dev/null +++ b/nx-X11/programs/xterm/unicode/keysym.map @@ -0,0 +1,1062 @@ +# This list can be used to convert X11 Keysyms to Unicode 2.1 character. +# The list is not checked for correctness by Unicode officials. Use it +# at your own risk and the creator is not responsable for any damage that +# occured due to using this list. +# +# The list is created by looking at the Keysym names and the Unicode data +# file. Other mapping tables were used as a reference where needed. +# Due to a lack of knowledge of the Hebrew, Thai and Hangul symbols, +# expect errors in these sections. The mapping of the keypad keys +# might also require some adjustments. +# +# The following fields are used: +# 1 The X11 keysym numbers from the include file keysymdef.h +# 2 The Unicode (2.1) position (U0000 means unknown Unicode position) +# # +# 3 the name of the X11 keysym (without XK_) +# +# Authors: Richard Verhoeven, TUE, <river@win.tue.nl> +# Markus Kuhn, University of Cambridge, <mkuhn@acm.org> +# +# You are free to use and modify this table. If you introduce errors +# in the table, please remove the copyright line. If you remove errors, +# please let me know, so I can update my version. +# +# $XFree86: xc/programs/xterm/unicode/keysym.map,v 1.1 1999/06/12 15:37:24 dawes Exp $ +# +0x0020 U0020 # space +0x0021 U0021 # exclam +0x0022 U0022 # quotedbl +0x0023 U0023 # numbersign +0x0024 U0024 # dollar +0x0025 U0025 # percent +0x0026 U0026 # ampersand +0x0027 U0027 # apostrophe +0x0027 U0027 # quoteright /* deprecated */ +0x0028 U0028 # parenleft +0x0029 U0029 # parenright +0x002a U002a # asterisk +0x002b U002b # plus +0x002c U002c # comma +0x002d U002d # minus +0x002e U002e # period +0x002f U002f # slash +0x0030 U0030 # 0 +0x0031 U0031 # 1 +0x0032 U0032 # 2 +0x0033 U0033 # 3 +0x0034 U0034 # 4 +0x0035 U0035 # 5 +0x0036 U0036 # 6 +0x0037 U0037 # 7 +0x0038 U0038 # 8 +0x0039 U0039 # 9 +0x003a U003a # colon +0x003b U003b # semicolon +0x003c U003c # less +0x003d U003d # equal +0x003e U003e # greater +0x003f U003f # question +0x0040 U0040 # at +0x0041 U0041 # A +0x0042 U0042 # B +0x0043 U0043 # C +0x0044 U0044 # D +0x0045 U0045 # E +0x0046 U0046 # F +0x0047 U0047 # G +0x0048 U0048 # H +0x0049 U0049 # I +0x004a U004a # J +0x004b U004b # K +0x004c U004c # L +0x004d U004d # M +0x004e U004e # N +0x004f U004f # O +0x0050 U0050 # P +0x0051 U0051 # Q +0x0052 U0052 # R +0x0053 U0053 # S +0x0054 U0054 # T +0x0055 U0055 # U +0x0056 U0056 # V +0x0057 U0057 # W +0x0058 U0058 # X +0x0059 U0059 # Y +0x005a U005a # Z +0x005b U005b # bracketleft +0x005c U005c # backslash +0x005d U005d # bracketright +0x005e U005e # asciicircum +0x005f U005f # underscore +0x0060 U0060 # grave +0x0060 U0060 # quoteleft /* deprecated */ +0x0061 U0061 # a +0x0062 U0062 # b +0x0063 U0063 # c +0x0064 U0064 # d +0x0065 U0065 # e +0x0066 U0066 # f +0x0067 U0067 # g +0x0068 U0068 # h +0x0069 U0069 # i +0x006a U006a # j +0x006b U006b # k +0x006c U006c # l +0x006d U006d # m +0x006e U006e # n +0x006f U006f # o +0x0070 U0070 # p +0x0071 U0071 # q +0x0072 U0072 # r +0x0073 U0073 # s +0x0074 U0074 # t +0x0075 U0075 # u +0x0076 U0076 # v +0x0077 U0077 # w +0x0078 U0078 # x +0x0079 U0079 # y +0x007a U007a # z +0x007b U007b # braceleft +0x007c U007c # bar +0x007d U007d # braceright +0x007e U007e # asciitilde +0x00a0 U00a0 # nobreakspace +0x00a1 U00a1 # exclamdown +0x00a2 U00a2 # cent +0x00a3 U00a3 # sterling +0x00a4 U00a4 # currency +0x00a5 U00a5 # yen +0x00a6 U00a6 # brokenbar +0x00a7 U00a7 # section +0x00a8 U00a8 # diaeresis +0x00a9 U00a9 # copyright +0x00aa U00aa # ordfeminine +0x00ab U00ab # guillemotleft /* left angle quotation mark */ +0x00ac U00ac # notsign +0x00ad U00ad # hyphen +0x00ae U00ae # registered +0x00af U00af # macron +0x00b0 U00b0 # degree +0x00b1 U00b1 # plusminus +0x00b2 U00b2 # twosuperior +0x00b3 U00b3 # threesuperior +0x00b4 U00b4 # acute +0x00b5 U00b5 # mu +0x00b6 U00b6 # paragraph +0x00b7 U00b7 # periodcentered +0x00b8 U00b8 # cedilla +0x00b9 U00b9 # onesuperior +0x00ba U00ba # masculine +0x00bb U00bb # guillemotright /* right angle quotation mark */ +0x00bc U00bc # onequarter +0x00bd U00bd # onehalf +0x00be U00be # threequarters +0x00bf U00bf # questiondown +0x00c0 U00c0 # Agrave +0x00c1 U00c1 # Aacute +0x00c2 U00c2 # Acircumflex +0x00c3 U00c3 # Atilde +0x00c4 U00c4 # Adiaeresis +0x00c5 U00c5 # Aring +0x00c6 U00c6 # AE +0x00c7 U00c7 # Ccedilla +0x00c8 U00c8 # Egrave +0x00c9 U00c9 # Eacute +0x00ca U00ca # Ecircumflex +0x00cb U00cb # Ediaeresis +0x00cc U00cc # Igrave +0x00cd U00cd # Iacute +0x00ce U00ce # Icircumflex +0x00cf U00cf # Idiaeresis +0x00d0 U00d0 # ETH +0x00d0 U00d0 # Eth /* deprecated */ +0x00d1 U00d1 # Ntilde +0x00d2 U00d2 # Ograve +0x00d3 U00d3 # Oacute +0x00d4 U00d4 # Ocircumflex +0x00d5 U00d5 # Otilde +0x00d6 U00d6 # Odiaeresis +0x00d7 U00d7 # multiply +0x00d8 U00d8 # Ooblique +0x00d9 U00d9 # Ugrave +0x00da U00da # Uacute +0x00db U00db # Ucircumflex +0x00dc U00dc # Udiaeresis +0x00dd U00dd # Yacute +0x00de U00de # THORN +0x00de U00de # Thorn /* deprecated */ +0x00df U00df # ssharp +0x00e0 U00e0 # agrave +0x00e1 U00e1 # aacute +0x00e2 U00e2 # acircumflex +0x00e3 U00e3 # atilde +0x00e4 U00e4 # adiaeresis +0x00e5 U00e5 # aring +0x00e6 U00e6 # ae +0x00e7 U00e7 # ccedilla +0x00e8 U00e8 # egrave +0x00e9 U00e9 # eacute +0x00ea U00ea # ecircumflex +0x00eb U00eb # ediaeresis +0x00ec U00ec # igrave +0x00ed U00ed # iacute +0x00ee U00ee # icircumflex +0x00ef U00ef # idiaeresis +0x00f0 U00f0 # eth +0x00f1 U00f1 # ntilde +0x00f2 U00f2 # ograve +0x00f3 U00f3 # oacute +0x00f4 U00f4 # ocircumflex +0x00f5 U00f5 # otilde +0x00f6 U00f6 # odiaeresis +0x00f7 U00f7 # division +0x00f8 U00f8 # oslash +0x00f9 U00f9 # ugrave +0x00fa U00fa # uacute +0x00fb U00fb # ucircumflex +0x00fc U00fc # udiaeresis +0x00fd U00fd # yacute +0x00fe U00fe # thorn +0x00ff U00ff # ydiaeresis +0x01a1 U0104 # Aogonek +0x01a2 U02d8 # breve +0x01a3 U0141 # Lstroke +0x01a5 U013d # Lcaron +0x01a6 U015a # Sacute +0x01a9 U0160 # Scaron +0x01aa U015e # Scedilla +0x01ab U0164 # Tcaron +0x01ac U0179 # Zacute +0x01ae U017d # Zcaron +0x01af U017b # Zabovedot +0x01b1 U0105 # aogonek +0x01b2 U02db # ogonek +0x01b3 U0142 # lstroke +0x01b5 U013e # lcaron +0x01b6 U015b # sacute +0x01b7 U02c7 # caron +0x01b9 U0161 # scaron +0x01ba U015f # scedilla +0x01bb U0165 # tcaron +0x01bc U017a # zacute +0x01bd U02dd # doubleacute +0x01be U017e # zcaron +0x01bf U017c # zabovedot +0x01c0 U0154 # Racute +0x01c3 U0102 # Abreve +0x01c5 U0139 # Lacute +0x01c6 U0106 # Cacute +0x01c8 U010c # Ccaron +0x01ca U0118 # Eogonek +0x01cc U011a # Ecaron +0x01cf U010e # Dcaron +0x01d0 U0110 # Dstroke +0x01d1 U0143 # Nacute +0x01d2 U0147 # Ncaron +0x01d5 U0150 # Odoubleacute +0x01d8 U0158 # Rcaron +0x01d9 U016e # Uring +0x01db U0170 # Udoubleacute +0x01de U0162 # Tcedilla +0x01e0 U0155 # racute +0x01e3 U0103 # abreve +0x01e5 U013a # lacute +0x01e6 U0107 # cacute +0x01e8 U010d # ccaron +0x01ea U0119 # eogonek +0x01ec U011b # ecaron +0x01ef U010f # dcaron +0x01f0 U0111 # dstroke +0x01f1 U0144 # nacute +0x01f2 U0148 # ncaron +0x01f5 U0151 # odoubleacute +0x01f8 U0159 # rcaron +0x01f9 U016f # uring +0x01fb U0171 # udoubleacute +0x01fe U0163 # tcedilla +0x01ff U02d9 # abovedot +0x02a1 U0126 # Hstroke +0x02a6 U0124 # Hcircumflex +0x02a9 U0130 # Iabovedot +0x02ab U011e # Gbreve +0x02ac U0134 # Jcircumflex +0x02b1 U0127 # hstroke +0x02b6 U0125 # hcircumflex +0x02b9 U0131 # idotless +0x02bb U011f # gbreve +0x02bc U0135 # jcircumflex +0x02c5 U010a # Cabovedot +0x02c6 U0108 # Ccircumflex +0x02d5 U0120 # Gabovedot +0x02d8 U011c # Gcircumflex +0x02dd U016c # Ubreve +0x02de U015c # Scircumflex +0x02e5 U010b # cabovedot +0x02e6 U0109 # ccircumflex +0x02f5 U0121 # gabovedot +0x02f8 U011d # gcircumflex +0x02fd U016d # ubreve +0x02fe U015d # scircumflex +0x03a2 U0138 # kra +0x03a3 U0156 # Rcedilla +0x03a5 U0128 # Itilde +0x03a6 U013b # Lcedilla +0x03aa U0112 # Emacron +0x03ab U0122 # Gcedilla +0x03ac U0166 # Tslash +0x03b3 U0157 # rcedilla +0x03b5 U0129 # itilde +0x03b6 U013c # lcedilla +0x03ba U0113 # emacron +0x03bb U0123 # gcedilla +0x03bc U0167 # tslash +0x03bd U014a # ENG +0x03bf U014b # eng +0x03c0 U0100 # Amacron +0x03c7 U012e # Iogonek +0x03cc U0116 # Eabovedot +0x03cf U012a # Imacron +0x03d1 U0145 # Ncedilla +0x03d2 U014c # Omacron +0x03d3 U0136 # Kcedilla +0x03d9 U0172 # Uogonek +0x03dd U0168 # Utilde +0x03de U016a # Umacron +0x03e0 U0101 # amacron +0x03e7 U012f # iogonek +0x03ec U0117 # eabovedot +0x03ef U012b # imacron +0x03f1 U0146 # ncedilla +0x03f2 U014d # omacron +0x03f3 U0137 # kcedilla +0x03f9 U0173 # uogonek +0x03fd U0169 # utilde +0x03fe U016b # umacron +0x13bc U0152 # OE +0x13bd U0153 # oe +0x13be U0178 # Ydiaeresis +0x047e U203e # overline +0x04a1 U3002 # kana_fullstop +0x04a2 U300c # kana_openingbracket +0x04a3 U300d # kana_closingbracket +0x04a4 U3001 # kana_comma +0x04a5 U30fb # kana_conjunctive +0x04a6 U30f2 # kana_WO +0x04a7 U30a1 # kana_a +0x04a8 U30a3 # kana_i +0x04a9 U30a5 # kana_u +0x04aa U30a7 # kana_e +0x04ab U30a9 # kana_o +0x04ac U30e3 # kana_ya +0x04ad U30e5 # kana_yu +0x04ae U30e7 # kana_yo +0x04af U30c3 # kana_tsu +0x04b0 U30fc # prolongedsound +0x04b1 U30a2 # kana_A +0x04b2 U30a4 # kana_I +0x04b3 U30a6 # kana_U +0x04b4 U30a8 # kana_E +0x04b5 U30aa # kana_O +0x04b6 U30ab # kana_KA +0x04b7 U30ad # kana_KI +0x04b8 U30af # kana_KU +0x04b9 U30b1 # kana_KE +0x04ba U30b3 # kana_KO +0x04bb U30b5 # kana_SA +0x04bc U30b7 # kana_SHI +0x04bd U30b9 # kana_SU +0x04be U30bb # kana_SE +0x04bf U30bd # kana_SO +0x04c0 U30bf # kana_TA +0x04c1 U30c1 # kana_CHI +0x04c2 U30c4 # kana_TSU +0x04c3 U30c6 # kana_TE +0x04c4 U30c8 # kana_TO +0x04c5 U30ca # kana_NA +0x04c6 U30cb # kana_NI +0x04c7 U30cc # kana_NU +0x04c8 U30cd # kana_NE +0x04c9 U30ce # kana_NO +0x04ca U30cf # kana_HA +0x04cb U30d2 # kana_HI +0x04cc U30d5 # kana_FU +0x04cd U30d8 # kana_HE +0x04ce U30db # kana_HO +0x04cf U30de # kana_MA +0x04d0 U30df # kana_MI +0x04d1 U30e0 # kana_MU +0x04d2 U30e1 # kana_ME +0x04d3 U30e2 # kana_MO +0x04d4 U30e4 # kana_YA +0x04d5 U30e6 # kana_YU +0x04d6 U30e8 # kana_YO +0x04d7 U30e9 # kana_RA +0x04d8 U30ea # kana_RI +0x04d9 U30eb # kana_RU +0x04da U30ec # kana_RE +0x04db U30ed # kana_RO +0x04dc U30ef # kana_WA +0x04dd U30f3 # kana_N +0x04de U309b # voicedsound +0x04df U309c # semivoicedsound +0x05ac U060c # Arabic_comma +0x05bb U061b # Arabic_semicolon +0x05bf U061f # Arabic_question_mark +0x05c1 U0621 # Arabic_hamza +0x05c2 U0622 # Arabic_maddaonalef +0x05c3 U0623 # Arabic_hamzaonalef +0x05c4 U0624 # Arabic_hamzaonwaw +0x05c5 U0625 # Arabic_hamzaunderalef +0x05c6 U0626 # Arabic_hamzaonyeh +0x05c7 U0627 # Arabic_alef +0x05c8 U0628 # Arabic_beh +0x05c9 U0629 # Arabic_tehmarbuta +0x05ca U062a # Arabic_teh +0x05cb U062b # Arabic_theh +0x05cc U062c # Arabic_jeem +0x05cd U062d # Arabic_hah +0x05ce U062e # Arabic_khah +0x05cf U062f # Arabic_dal +0x05d0 U0630 # Arabic_thal +0x05d1 U0631 # Arabic_ra +0x05d2 U0632 # Arabic_zain +0x05d3 U0633 # Arabic_seen +0x05d4 U0634 # Arabic_sheen +0x05d5 U0635 # Arabic_sad +0x05d6 U0636 # Arabic_dad +0x05d7 U0637 # Arabic_tah +0x05d8 U0638 # Arabic_zah +0x05d9 U0639 # Arabic_ain +0x05da U063a # Arabic_ghain +0x05e0 U0640 # Arabic_tatweel +0x05e1 U0641 # Arabic_feh +0x05e2 U0642 # Arabic_qaf +0x05e3 U0643 # Arabic_kaf +0x05e4 U0644 # Arabic_lam +0x05e5 U0645 # Arabic_meem +0x05e6 U0646 # Arabic_noon +0x05e7 U0647 # Arabic_ha +0x05e8 U0648 # Arabic_waw +0x05e9 U0649 # Arabic_alefmaksura +0x05ea U064a # Arabic_yeh +0x05eb U064b # Arabic_fathatan +0x05ec U064c # Arabic_dammatan +0x05ed U064d # Arabic_kasratan +0x05ee U064e # Arabic_fatha +0x05ef U064f # Arabic_damma +0x05f0 U0650 # Arabic_kasra +0x05f1 U0651 # Arabic_shadda +0x05f2 U0652 # Arabic_sukun +0x06a1 U0452 # Serbian_dje +0x06a2 U0453 # Macedonia_gje +0x06a3 U0451 # Cyrillic_io +0x06a4 U0454 # Ukrainian_ie +0x06a5 U0455 # Macedonia_dse +0x06a6 U0456 # Ukrainian_i +0x06a7 U0457 # Ukrainian_yi +0x06a8 U0458 # Cyrillic_je +0x06a9 U0459 # Cyrillic_lje +0x06aa U045a # Cyrillic_nje +0x06ab U045b # Serbian_tshe +0x06ac U045c # Macedonia_kje +0x06ae U045e # Byelorussian_shortu +0x06af U045f # Cyrillic_dzhe +0x06b0 U2116 # numerosign +0x06b1 U0402 # Serbian_DJE +0x06b2 U0403 # Macedonia_GJE +0x06b3 U0401 # Cyrillic_IO +0x06b4 U0404 # Ukrainian_IE +0x06b5 U0405 # Macedonia_DSE +0x06b6 U0406 # Ukrainian_I +0x06b7 U0407 # Ukrainian_YI +0x06b8 U0408 # Cyrillic_JE +0x06b9 U0409 # Cyrillic_LJE +0x06ba U040a # Cyrillic_NJE +0x06bb U040b # Serbian_TSHE +0x06bc U040c # Macedonia_KJE +0x06be U040e # Byelorussian_SHORTU +0x06bf U040f # Cyrillic_DZHE +0x06c0 U044e # Cyrillic_yu +0x06c1 U0430 # Cyrillic_a +0x06c2 U0431 # Cyrillic_be +0x06c3 U0446 # Cyrillic_tse +0x06c4 U0434 # Cyrillic_de +0x06c5 U0435 # Cyrillic_ie +0x06c6 U0444 # Cyrillic_ef +0x06c7 U0433 # Cyrillic_ghe +0x06c8 U0445 # Cyrillic_ha +0x06c9 U0438 # Cyrillic_i +0x06ca U0439 # Cyrillic_shorti +0x06cb U043a # Cyrillic_ka +0x06cc U043b # Cyrillic_el +0x06cd U043c # Cyrillic_em +0x06ce U043d # Cyrillic_en +0x06cf U043e # Cyrillic_o +0x06d0 U043f # Cyrillic_pe +0x06d1 U044f # Cyrillic_ya +0x06d2 U0440 # Cyrillic_er +0x06d3 U0441 # Cyrillic_es +0x06d4 U0442 # Cyrillic_te +0x06d5 U0443 # Cyrillic_u +0x06d6 U0436 # Cyrillic_zhe +0x06d7 U0432 # Cyrillic_ve +0x06d8 U044c # Cyrillic_softsign +0x06d9 U044b # Cyrillic_yeru +0x06da U0437 # Cyrillic_ze +0x06db U0448 # Cyrillic_sha +0x06dc U044d # Cyrillic_e +0x06dd U0449 # Cyrillic_shcha +0x06de U0447 # Cyrillic_che +0x06df U044a # Cyrillic_hardsign +0x06e0 U042e # Cyrillic_YU +0x06e1 U0410 # Cyrillic_A +0x06e2 U0411 # Cyrillic_BE +0x06e3 U0426 # Cyrillic_TSE +0x06e4 U0414 # Cyrillic_DE +0x06e5 U0415 # Cyrillic_IE +0x06e6 U0424 # Cyrillic_EF +0x06e7 U0413 # Cyrillic_GHE +0x06e8 U0425 # Cyrillic_HA +0x06e9 U0418 # Cyrillic_I +0x06ea U0419 # Cyrillic_SHORTI +0x06eb U041a # Cyrillic_KA +0x06ec U041b # Cyrillic_EL +0x06ed U041c # Cyrillic_EM +0x06ee U041d # Cyrillic_EN +0x06ef U041e # Cyrillic_O +0x06f0 U041f # Cyrillic_PE +0x06f1 U042f # Cyrillic_YA +0x06f2 U0420 # Cyrillic_ER +0x06f3 U0421 # Cyrillic_ES +0x06f4 U0422 # Cyrillic_TE +0x06f5 U0423 # Cyrillic_U +0x06f6 U0416 # Cyrillic_ZHE +0x06f7 U0412 # Cyrillic_VE +0x06f8 U042c # Cyrillic_SOFTSIGN +0x06f9 U042b # Cyrillic_YERU +0x06fa U0417 # Cyrillic_ZE +0x06fb U0428 # Cyrillic_SHA +0x06fc U042d # Cyrillic_E +0x06fd U0429 # Cyrillic_SHCHA +0x06fe U0427 # Cyrillic_CHE +0x06ff U042a # Cyrillic_HARDSIGN +0x07a1 U0386 # Greek_ALPHAaccent +0x07a2 U0388 # Greek_EPSILONaccent +0x07a3 U0389 # Greek_ETAaccent +0x07a4 U038a # Greek_IOTAaccent +0x07a5 U03aa # Greek_IOTAdiaeresis +0x07a7 U038c # Greek_OMICRONaccent +0x07a8 U038e # Greek_UPSILONaccent +0x07a9 U03ab # Greek_UPSILONdieresis +0x07ab U038f # Greek_OMEGAaccent +0x07ae U0385 # Greek_accentdieresis +0x07af U2015 # Greek_horizbar +0x07b1 U03ac # Greek_alphaaccent +0x07b2 U03ad # Greek_epsilonaccent +0x07b3 U03ae # Greek_etaaccent +0x07b4 U03af # Greek_iotaaccent +0x07b5 U03ca # Greek_iotadieresis +0x07b6 U0390 # Greek_iotaaccentdieresis +0x07b7 U03cc # Greek_omicronaccent +0x07b8 U03cd # Greek_upsilonaccent +0x07b9 U03cb # Greek_upsilondieresis +0x07ba U03b0 # Greek_upsilonaccentdieresis +0x07bb U03ce # Greek_omegaaccent +0x07c1 U0391 # Greek_ALPHA +0x07c2 U0392 # Greek_BETA +0x07c3 U0393 # Greek_GAMMA +0x07c4 U0394 # Greek_DELTA +0x07c5 U0395 # Greek_EPSILON +0x07c6 U0396 # Greek_ZETA +0x07c7 U0397 # Greek_ETA +0x07c8 U0398 # Greek_THETA +0x07c9 U0399 # Greek_IOTA +0x07ca U039a # Greek_KAPPA +0x07cb U039b # Greek_LAMBDA +0x07cb U039b # Greek_LAMDA +0x07cc U039c # Greek_MU +0x07cd U039d # Greek_NU +0x07ce U039e # Greek_XI +0x07cf U039f # Greek_OMICRON +0x07d0 U03a0 # Greek_PI +0x07d1 U03a1 # Greek_RHO +0x07d2 U03a3 # Greek_SIGMA +0x07d4 U03a4 # Greek_TAU +0x07d5 U03a5 # Greek_UPSILON +0x07d6 U03a6 # Greek_PHI +0x07d7 U03a7 # Greek_CHI +0x07d8 U03a8 # Greek_PSI +0x07d9 U03a9 # Greek_OMEGA +0x07e1 U03b1 # Greek_alpha +0x07e2 U03b2 # Greek_beta +0x07e3 U03b3 # Greek_gamma +0x07e4 U03b4 # Greek_delta +0x07e5 U03b5 # Greek_epsilon +0x07e6 U03b6 # Greek_zeta +0x07e7 U03b7 # Greek_eta +0x07e8 U03b8 # Greek_theta +0x07e9 U03b9 # Greek_iota +0x07ea U03ba # Greek_kappa +0x07eb U03bb # Greek_lambda +0x07ec U03bc # Greek_mu +0x07ed U03bd # Greek_nu +0x07ee U03be # Greek_xi +0x07ef U03bf # Greek_omicron +0x07f0 U03c0 # Greek_pi +0x07f1 U03c1 # Greek_rho +0x07f2 U03c3 # Greek_sigma +0x07f3 U03c2 # Greek_finalsmallsigma +0x07f4 U03c4 # Greek_tau +0x07f5 U03c5 # Greek_upsilon +0x07f6 U03c6 # Greek_phi +0x07f7 U03c7 # Greek_chi +0x07f8 U03c8 # Greek_psi +0x07f9 U03c9 # Greek_omega +0x08a1 U0000 # leftradical +0x08a2 U0000 # topleftradical +0x08a3 U0000 # horizconnector +0x08a4 U2320 # topintegral +0x08a5 U2321 # botintegral +0x08a6 U2502 # vertconnector +0x08a7 U0000 # topleftsqbracket +0x08a8 U0000 # botleftsqbracket +0x08a9 U0000 # toprightsqbracket +0x08aa U0000 # botrightsqbracket +0x08ab U0000 # topleftparens +0x08ac U0000 # botleftparens +0x08ad U0000 # toprightparens +0x08ae U0000 # botrightparens +0x08af U0000 # leftmiddlecurlybrace +0x08b0 U0000 # rightmiddlecurlybrace +0x08b1 U0000 # topleftsummation +0x08b2 U0000 # botleftsummation +0x08b3 U0000 # topvertsummationconnector +0x08b4 U0000 # botvertsummationconnector +0x08b5 U0000 # toprightsummation +0x08b6 U0000 # botrightsummation +0x08b7 U0000 # rightmiddlesummation +0x08bc U2264 # lessthanequal +0x08bd U2260 # notequal +0x08be U2265 # greaterthanequal +0x08bf U222b # integral +0x08c0 U2234 # therefore +0x08c1 U221d # variation +0x08c2 U221e # infinity +0x08c5 U2207 # nabla +0x08c8 U2245 # approximate +0x08c9 U0000 # similarequal +0x08cd U21d4 # ifonlyif +0x08ce U21d2 # implies +0x08cf U2261 # identical +0x08d6 U221a # radical +0x08da U2282 # includedin +0x08db U2283 # includes +0x08dc U2229 # intersection +0x08dd U222a # union +0x08de U2227 # logicaland +0x08df U2228 # logicalor +0x08ef U2202 # partialderivative +0x08f6 U0192 # function +0x08fb U2190 # leftarrow +0x08fc U2191 # uparrow +0x08fd U2192 # rightarrow +0x08fe U2193 # downarrow +0x09df U2422 # blank +0x09e0 U25c6 # soliddiamond +0x09e1 U2592 # checkerboard +0x09e2 U2409 # ht +0x09e3 U240c # ff +0x09e4 U240d # cr +0x09e5 U240a # lf +0x09e8 U2424 # nl +0x09e9 U240b # vt +0x09ea U2518 # lowrightcorner +0x09eb U2510 # uprightcorner +0x09ec U250c # upleftcorner +0x09ed U2514 # lowleftcorner +0x09ee U253c # crossinglines +0x09ef U0000 # horizlinescan1 +0x09f0 U0000 # horizlinescan3 +0x09f1 U2500 # horizlinescan5 +0x09f2 U0000 # horizlinescan7 +0x09f3 U0000 # horizlinescan9 +0x09f4 U251c # leftt +0x09f5 U2524 # rightt +0x09f6 U2534 # bott +0x09f7 U252c # topt +0x09f8 U2502 # vertbar +0xfe50 U0300 # dead_grave +0xfe51 U0301 # dead_acute +0xfe52 U0302 # dead_circumflex +0xfe53 U0303 # dead_tilde +0xfe54 U0304 # dead_macron +0xfe55 U0306 # dead_breve +0xfe56 U0307 # dead_abovedot +0xfe57 U0308 # dead_diaeresis +0xfe58 U030a # dead_abovering +0xfe59 U030b # dead_doubleacute +0xfe5a U030c # dead_caron +0xfe5b U0327 # dead_cedilla +0xfe5c U0328 # dead_ogonek +0xfe5d U0345 # dead_iota +0xfe5e U3099 # dead_voiced_sound +0xfe5f U309a # dead_semivoiced_sound +0xff08 U0008 # BackSpace /* back space, back char */ +0xff09 U0009 # Tab +0xff0a U000a # Linefeed /* Linefeed, LF */ +0xff0b U000b # Clear +0xff0d U000d # Return /* Return, enter */ +0xff13 U0013 # Pause /* Pause, hold */ +0xff14 U0014 # Scroll_Lock +0xff15 U0015 # Sys_Req +0xff1b U001b # Escape +0xff80 U0032 # KP_Space /* space */ +0xff89 U0009 # KP_Tab +0xff8d U000d # KP_Enter /* enter */ +0xffaa U002a # KP_Multiply +0xffab U002b # KP_Add +0xffac U002c # KP_Separator /* separator, often comma */ +0xffad U002d # KP_Subtract +0xffae U002e # KP_Decimal +0xffaf U002f # KP_Divide +0xffb0 U0030 # KP_0 +0xffb1 U0031 # KP_1 +0xffb2 U0032 # KP_2 +0xffb3 U0033 # KP_3 +0xffb4 U0034 # KP_4 +0xffb5 U0035 # KP_5 +0xffb6 U0036 # KP_6 +0xffb7 U0037 # KP_7 +0xffb8 U0038 # KP_8 +0xffb9 U0039 # KP_9 +0xffbd U003d # KP_Equal /* equals */ +0x0aa1 U2003 # emspace +0x0aa2 U2002 # enspace +0x0aa3 U2004 # em3space +0x0aa4 U2005 # em4space +0x0aa5 U2007 # digitspace +0x0aa6 U2008 # punctspace +0x0aa7 U2009 # thinspace +0x0aa8 U200a # hairspace +0x0aa9 U2014 # emdash +0x0aaa U2013 # endash +0x0aac U0000 # signifblank +0x0aae U2026 # ellipsis +0x0aaf U0000 # doubbaselinedot +0x0ab0 U2153 # onethird +0x0ab1 U2154 # twothirds +0x0ab2 U2155 # onefifth +0x0ab3 U2156 # twofifths +0x0ab4 U2157 # threefifths +0x0ab5 U2158 # fourfifths +0x0ab6 U2159 # onesixth +0x0ab7 U215a # fivesixths +0x0ab8 U2105 # careof +0x0abb U2012 # figdash +0x0abc U2329 # leftanglebracket +0x0abd U002e # decimalpoint +0x0abe U232a # rightanglebracket +0x0abf U0000 # marker +0x0ac3 U215b # oneeighth +0x0ac4 U215c # threeeighths +0x0ac5 U215d # fiveeighths +0x0ac6 U215e # seveneighths +0x0ac9 U2122 # trademark +0x0aca U2613 # signaturemark +0x0acb U0000 # trademarkincircle +0x0acc U25c1 # leftopentriangle +0x0acd U25b7 # rightopentriangle +0x0ace U25cb # emopencircle +0x0acf U25a1 # emopenrectangle +0x0ad0 U2018 # leftsinglequotemark +0x0ad1 U2019 # rightsinglequotemark +0x0ad2 U201c # leftdoublequotemark +0x0ad3 U201d # rightdoublequotemark +0x0ad4 U211e # prescription +0x0ad6 U2032 # minutes +0x0ad7 U2033 # seconds +0x0ad9 U271d # latincross +0x0ada U0000 # hexagram +0x0adb U25ac # filledrectbullet +0x0adc U25c0 # filledlefttribullet +0x0add U25b6 # filledrighttribullet +0x0ade U25cf # emfilledcircle +0x0adf U25a0 # emfilledrect +0x0ae0 U25e6 # enopencircbullet +0x0ae1 U25ab # enopensquarebullet +0x0ae2 U25ad # openrectbullet +0x0ae3 U25b3 # opentribulletup +0x0ae4 U25bd # opentribulletdown +0x0ae5 U2606 # openstar +0x0ae6 U2022 # enfilledcircbullet +0x0ae7 U25aa # enfilledsqbullet +0x0ae8 U25b2 # filledtribulletup +0x0ae9 U25bc # filledtribulletdown +0x0aea U261c # leftpointer +0x0aeb U261e # rightpointer +0x0aec U2663 # club +0x0aed U2666 # diamond +0x0aee U2665 # heart +0x0af0 U2720 # maltesecross +0x0af1 U2020 # dagger +0x0af2 U2021 # doubledagger +0x0af3 U2713 # checkmark +0x0af4 U2717 # ballotcross +0x0af5 U266f # musicalsharp +0x0af6 U266d # musicalflat +0x0af7 U2642 # malesymbol +0x0af8 U2640 # femalesymbol +0x0af9 U260e # telephone +0x0afa U2315 # telephonerecorder +0x0afb U2117 # phonographcopyright +0x0afc U2038 # caret +0x0afd U201a # singlelowquotemark +0x0afe U201e # doublelowquotemark +0x0aff U0000 # cursor +0x0ba3 U003c # leftcaret +0x0ba6 U003e # rightcaret +0x0ba8 U2228 # downcaret +0x0ba9 U2227 # upcaret +0x0bc0 U00af # overbar +0x0bc2 U22a4 # downtack +0x0bc3 U2229 # upshoe +0x0bc4 U230a # downstile +0x0bc6 U005f # underbar +0x0bca U2218 # jot +0x0bcc U2395 # quad +0x0bce U22a5 # uptack +0x0bcf U25cb # circle +0x0bd3 U2308 # upstile +0x0bd6 U222a # downshoe +0x0bd8 U2283 # rightshoe +0x0bda U2282 # leftshoe +0x0bdc U22a3 # lefttack +0x0bfc U22a2 # righttack +0x0cdf U2017 # hebrew_doublelowline +0x0ce0 U05d0 # hebrew_aleph +0x0ce1 U05d1 # hebrew_bet +0x0ce1 U05d1 # hebrew_beth /* deprecated */ +0x0ce2 U05d2 # hebrew_gimel +0x0ce2 U05d2 # hebrew_gimmel /* deprecated */ +0x0ce3 U05d3 # hebrew_dalet +0x0ce3 U05d3 # hebrew_daleth /* deprecated */ +0x0ce4 U05d4 # hebrew_he +0x0ce5 U05d5 # hebrew_waw +0x0ce6 U05d6 # hebrew_zain +0x0ce6 U05d6 # hebrew_zayin /* deprecated */ +0x0ce7 U05d7 # hebrew_chet +0x0ce7 U05d7 # hebrew_het /* deprecated */ +0x0ce8 U05d8 # hebrew_tet +0x0ce8 U05d8 # hebrew_teth /* deprecated */ +0x0ce9 U05d9 # hebrew_yod +0x0cea U05da # hebrew_finalkaph +0x0ceb U05db # hebrew_kaph +0x0cec U05dc # hebrew_lamed +0x0ced U05dd # hebrew_finalmem +0x0cee U05de # hebrew_mem +0x0cef U05df # hebrew_finalnun +0x0cf0 U05e0 # hebrew_nun +0x0cf1 U05e1 # hebrew_samech +0x0cf1 U05e1 # hebrew_samekh /* deprecated */ +0x0cf2 U05e2 # hebrew_ayin +0x0cf3 U05e3 # hebrew_finalpe +0x0cf4 U05e4 # hebrew_pe +0x0cf5 U05e5 # hebrew_finalzade +0x0cf5 U05e5 # hebrew_finalzadi /* deprecated */ +0x0cf6 U05e6 # hebrew_zade +0x0cf6 U05e6 # hebrew_zadi /* deprecated */ +0x0cf7 U05e7 # hebrew_kuf /* deprecated */ +0x0cf7 U05e7 # hebrew_qoph +0x0cf8 U05e8 # hebrew_resh +0x0cf9 U05e9 # hebrew_shin +0x0cfa U05ea # hebrew_taf /* deprecated */ +0x0cfa U05ea # hebrew_taw +0x0da1 U0e01 # Thai_kokai +0x0da2 U0e02 # Thai_khokhai +0x0da3 U0e03 # Thai_khokhuat +0x0da4 U0e04 # Thai_khokhwai +0x0da5 U0e05 # Thai_khokhon +0x0da6 U0e06 # Thai_khorakhang +0x0da7 U0e07 # Thai_ngongu +0x0da8 U0e08 # Thai_chochan +0x0da9 U0e09 # Thai_choching +0x0daa U0e0a # Thai_chochang +0x0dab U0e0b # Thai_soso +0x0dac U0e0c # Thai_chochoe +0x0dad U0e0d # Thai_yoying +0x0dae U0e0e # Thai_dochada +0x0daf U0e0f # Thai_topatak +0x0db0 U0e10 # Thai_thothan +0x0db1 U0e11 # Thai_thonangmontho +0x0db2 U0e12 # Thai_thophuthao +0x0db3 U0e13 # Thai_nonen +0x0db4 U0e14 # Thai_dodek +0x0db5 U0e15 # Thai_totao +0x0db6 U0e16 # Thai_thothung +0x0db7 U0e17 # Thai_thothahan +0x0db8 U0e18 # Thai_thothong +0x0db9 U0e19 # Thai_nonu +0x0dba U0e1a # Thai_bobaimai +0x0dbb U0e1b # Thai_popla +0x0dbc U0e1c # Thai_phophung +0x0dbd U0e1d # Thai_fofa +0x0dbe U0e1e # Thai_phophan +0x0dbf U0e1f # Thai_fofan +0x0dc0 U0e20 # Thai_phosamphao +0x0dc1 U0e21 # Thai_moma +0x0dc2 U0e22 # Thai_yoyak +0x0dc3 U0e23 # Thai_rorua +0x0dc4 U0e24 # Thai_ru +0x0dc5 U0e25 # Thai_loling +0x0dc6 U0e26 # Thai_lu +0x0dc7 U0e27 # Thai_wowaen +0x0dc8 U0e28 # Thai_sosala +0x0dc9 U0e29 # Thai_sorusi +0x0dca U0e2a # Thai_sosua +0x0dcb U0e2b # Thai_hohip +0x0dcc U0e2c # Thai_lochula +0x0dcd U0e2d # Thai_oang +0x0dce U0e2e # Thai_honokhuk +0x0dcf U0e2f # Thai_paiyannoi +0x0dd0 U0e30 # Thai_saraa +0x0dd1 U0e31 # Thai_maihanakat +0x0dd2 U0e32 # Thai_saraaa +0x0dd3 U0e33 # Thai_saraam +0x0dd4 U0e34 # Thai_sarai +0x0dd5 U0e35 # Thai_saraii +0x0dd6 U0e36 # Thai_saraue +0x0dd7 U0e37 # Thai_sarauee +0x0dd8 U0e38 # Thai_sarau +0x0dd9 U0e39 # Thai_sarauu +0x0dda U0e3a # Thai_phinthu +0x0dde U0e3e # Thai_maihanakat_maitho +0x0ddf U0e3f # Thai_baht +0x0de0 U0e40 # Thai_sarae +0x0de1 U0e41 # Thai_saraae +0x0de2 U0e42 # Thai_sarao +0x0de3 U0e43 # Thai_saraaimaimuan +0x0de4 U0e44 # Thai_saraaimaimalai +0x0de5 U0e45 # Thai_lakkhangyao +0x0de6 U0e46 # Thai_maiyamok +0x0de7 U0e47 # Thai_maitaikhu +0x0de8 U0e48 # Thai_maiek +0x0de9 U0e49 # Thai_maitho +0x0dea U0e4a # Thai_maitri +0x0deb U0e4b # Thai_maichattawa +0x0dec U0e4c # Thai_thanthakhat +0x0ded U0e4d # Thai_nikhahit +0x0df0 U0e50 # Thai_leksun +0x0df1 U0e51 # Thai_leknung +0x0df2 U0e52 # Thai_leksong +0x0df3 U0e53 # Thai_leksam +0x0df4 U0e54 # Thai_leksi +0x0df5 U0e55 # Thai_lekha +0x0df6 U0e56 # Thai_lekhok +0x0df7 U0e57 # Thai_lekchet +0x0df8 U0e58 # Thai_lekpaet +0x0df9 U0e59 # Thai_lekkao +0x0ea1 U3131 # Hangul_Kiyeog +0x0ea2 U3132 # Hangul_SsangKiyeog +0x0ea3 U3133 # Hangul_KiyeogSios +0x0ea4 U3134 # Hangul_Nieun +0x0ea5 U3135 # Hangul_NieunJieuj +0x0ea6 U3136 # Hangul_NieunHieuh +0x0ea7 U3137 # Hangul_Dikeud +0x0ea8 U3138 # Hangul_SsangDikeud +0x0ea9 U3139 # Hangul_Rieul +0x0eaa U313a # Hangul_RieulKiyeog +0x0eab U313b # Hangul_RieulMieum +0x0eac U313c # Hangul_RieulPieub +0x0ead U313d # Hangul_RieulSios +0x0eae U313e # Hangul_RieulTieut +0x0eaf U313f # Hangul_RieulPhieuf +0x0eb0 U3140 # Hangul_RieulHieuh +0x0eb1 U3141 # Hangul_Mieum +0x0eb2 U3142 # Hangul_Pieub +0x0eb3 U3143 # Hangul_SsangPieub +0x0eb4 U3144 # Hangul_PieubSios +0x0eb5 U3145 # Hangul_Sios +0x0eb6 U3146 # Hangul_SsangSios +0x0eb7 U3147 # Hangul_Ieung +0x0eb8 U3148 # Hangul_Jieuj +0x0eb9 U3149 # Hangul_SsangJieuj +0x0eba U314a # Hangul_Cieuc +0x0ebb U314b # Hangul_Khieuq +0x0ebc U314c # Hangul_Tieut +0x0ebd U314d # Hangul_Phieuf +0x0ebe U314e # Hangul_Hieuh +0x0ebf U314f # Hangul_A +0x0ec0 U3150 # Hangul_AE +0x0ec1 U3151 # Hangul_YA +0x0ec2 U3152 # Hangul_YAE +0x0ec3 U3153 # Hangul_EO +0x0ec4 U3154 # Hangul_E +0x0ec5 U3155 # Hangul_YEO +0x0ec6 U3156 # Hangul_YE +0x0ec7 U3157 # Hangul_O +0x0ec8 U3158 # Hangul_WA +0x0ec9 U3159 # Hangul_WAE +0x0eca U315a # Hangul_OE +0x0ecb U315b # Hangul_YO +0x0ecc U315c # Hangul_U +0x0ecd U315d # Hangul_WEO +0x0ece U315e # Hangul_WE +0x0ecf U315f # Hangul_WI +0x0ed0 U3160 # Hangul_YU +0x0ed1 U3161 # Hangul_EU +0x0ed2 U3162 # Hangul_YI +0x0ed3 U3163 # Hangul_I +0x0ed4 U11a8 # Hangul_J_Kiyeog +0x0ed5 U11a9 # Hangul_J_SsangKiyeog +0x0ed6 U11aa # Hangul_J_KiyeogSios +0x0ed7 U11ab # Hangul_J_Nieun +0x0ed8 U11ac # Hangul_J_NieunJieuj +0x0ed9 U11ad # Hangul_J_NieunHieuh +0x0eda U11ae # Hangul_J_Dikeud +0x0edb U11af # Hangul_J_Rieul +0x0edc U11b0 # Hangul_J_RieulKiyeog +0x0edd U11b1 # Hangul_J_RieulMieum +0x0ede U11b2 # Hangul_J_RieulPieub +0x0edf U11b3 # Hangul_J_RieulSios +0x0ee0 U11b4 # Hangul_J_RieulTieut +0x0ee1 U11b5 # Hangul_J_RieulPhieuf +0x0ee2 U11b6 # Hangul_J_RieulHieuh +0x0ee3 U11b7 # Hangul_J_Mieum +0x0ee4 U11b8 # Hangul_J_Pieub +0x0ee5 U11b9 # Hangul_J_PieubSios +0x0ee6 U11ba # Hangul_J_Sios +0x0ee7 U11bb # Hangul_J_SsangSios +0x0ee8 U11bc # Hangul_J_Ieung +0x0ee9 U11bd # Hangul_J_Jieuj +0x0eea U11be # Hangul_J_Cieuc +0x0eeb U11bf # Hangul_J_Khieuq +0x0eec U11c0 # Hangul_J_Tieut +0x0eed U11c1 # Hangul_J_Phieuf +0x0eee U11c2 # Hangul_J_Hieuh +0x0eef U316d # Hangul_RieulYeorinHieuh +0x0ef0 U3171 # Hangul_SunkyeongeumMieum +0x0ef1 U3178 # Hangul_SunkyeongeumPieub +0x0ef2 U317f # Hangul_PanSios +0x0ef3 U0000 # Hangul_KkogjiDalrinIeung +0x0ef4 U3184 # Hangul_SunkyeongeumPhieuf +0x0ef5 U3186 # Hangul_YeorinHieuh +0x0ef6 U318d # Hangul_AraeA +0x0ef7 U318e # Hangul_AraeAE +0x0ef8 U11eb # Hangul_J_PanSios +0x0ef9 U0000 # Hangul_J_KkogjiDalrinIeung +0x0efa U11f9 # Hangul_J_YeorinHieuh +0x0eff U20a9 # Korean_Won +0x20a0 U20a0 # EcuSign +0x20a1 U20a1 # ColonSign +0x20a2 U20a2 # CruzeiroSign +0x20a3 U20a3 # FFrancSign +0x20a4 U20a4 # LiraSign +0x20a5 U20a5 # MillSign +0x20a6 U20a6 # NairaSign +0x20a7 U20a7 # PesetaSign +0x20a8 U20a8 # RupeeSign +0x20a9 U20a9 # WonSign +0x20aa U20aa # NewSheqelSign +0x20ab U20ab # DongSign +0x20ac U20ac # EuroSign diff --git a/nx-X11/programs/xterm/unicode/make-precompose.sh b/nx-X11/programs/xterm/unicode/make-precompose.sh new file mode 100644 index 000000000..747866c4d --- /dev/null +++ b/nx-X11/programs/xterm/unicode/make-precompose.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $XTermId: make-precompose.sh,v 1.5 2005/04/03 16:58:30 tom Exp $ +# $XFree86: xc/programs/xterm/unicode/make-precompose.sh,v 1.4 2005/03/29 04:00:32 tsi Exp $ +cat precompose.c.head | sed -e's/@/$/g' +cut UnicodeData.txt -d ";" -f 1,6 | \ + grep ";[0-9,A-F]" | grep " " | \ + sed -e "s/ /, 0x/;s/^/{ 0x/;s/;/, 0x/;s/$/},/" | (sort -k 3 || sort +2) +cat precompose.c.tail diff --git a/nx-X11/programs/xterm/unicode/precompose.c.head b/nx-X11/programs/xterm/unicode/precompose.c.head new file mode 100644 index 000000000..c51f752d7 --- /dev/null +++ b/nx-X11/programs/xterm/unicode/precompose.c.head @@ -0,0 +1,16 @@ +/* + * Canonical Compositions + * + * DO NOT EDIT BY HAND! This is generated by the script + * unicode/make-precompose.sh + */ +/* @XTermId@ */ +/* @XFree86@ */ + +#include <precompose.h> + +static struct { + int replacement; + int base; + int comb; +} precompositions[] = { diff --git a/nx-X11/programs/xterm/unicode/precompose.c.tail b/nx-X11/programs/xterm/unicode/precompose.c.tail new file mode 100644 index 000000000..0ceca9b6c --- /dev/null +++ b/nx-X11/programs/xterm/unicode/precompose.c.tail @@ -0,0 +1,23 @@ +}; + +int do_precomposition(int base, int comb) { + int min = 0; + int max = sizeof(precompositions) / sizeof(precompositions[0]) - 1; + int mid; + unsigned int sought = ((unsigned)base << 16) | (unsigned)comb, that; + + /* binary search */ + while (max >= min) { + mid = (min + max) / 2; + that = ((unsigned)precompositions[mid].base << 16) | ((unsigned)precompositions[mid].comb); + if (that < sought) { + min = mid + 1; + } else if (that > sought) { + max = mid - 1; + } else { + return precompositions[mid].replacement; + } + } + /* no match */ + return -1; +} |