From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- support/utf2any/Changes | 16 + support/utf2any/Makefile | 27 + support/utf2any/README | 109 ++ support/utf2any/extra/README | 5 + support/utf2any/extra/utf7.l | 261 +++ support/utf2any/extra/utf8.l | 297 +++ support/utf2any/maps/html-extended.map | 154 ++ support/utf2any/maps/html-extra.map | 104 + support/utf2any/maps/html.map | 77 + support/utf2any/maps/iso-8859-1.map | 104 + support/utf2any/maps/iso-8859-15.map | 19 + support/utf2any/maps/iso-8859-mixed.map | 2 + support/utf2any/maps/latex-controls.map | 11 + support/utf2any/maps/latex.map | 536 ++++++ support/utf2any/maps/rfc-1345-16-obsolete.map | 1643 ++++++++++++++++ support/utf2any/maps/rfc-1345-16.map | 1744 +++++++++++++++++ support/utf2any/maps/rfc-1345-7.map | 50 + support/utf2any/maps/rfc-1345-8.map | 131 ++ support/utf2any/test/maketest | 70 + support/utf2any/test/tst-latex.utf7 | 2074 ++++++++++++++++++++ support/utf2any/test/tst-latex.utf8 | 2074 ++++++++++++++++++++ support/utf2any/test/tst.utf7 | 1185 ++++++++++++ support/utf2any/test/tst.utf8 | Bin 0 -> 15484 bytes support/utf2any/utf2any.c | 2557 +++++++++++++++++++++++++ support/utf2any/utf2any.l | 1005 ++++++++++ support/utf2any/utfcode.c | 305 +++ 26 files changed, 14560 insertions(+) create mode 100644 support/utf2any/Changes create mode 100644 support/utf2any/Makefile create mode 100644 support/utf2any/README create mode 100644 support/utf2any/extra/README create mode 100644 support/utf2any/extra/utf7.l create mode 100644 support/utf2any/extra/utf8.l create mode 100644 support/utf2any/maps/html-extended.map create mode 100644 support/utf2any/maps/html-extra.map create mode 100644 support/utf2any/maps/html.map create mode 100644 support/utf2any/maps/iso-8859-1.map create mode 100644 support/utf2any/maps/iso-8859-15.map create mode 100644 support/utf2any/maps/iso-8859-mixed.map create mode 100644 support/utf2any/maps/latex-controls.map create mode 100644 support/utf2any/maps/latex.map create mode 100644 support/utf2any/maps/rfc-1345-16-obsolete.map create mode 100644 support/utf2any/maps/rfc-1345-16.map create mode 100644 support/utf2any/maps/rfc-1345-7.map create mode 100644 support/utf2any/maps/rfc-1345-8.map create mode 100755 support/utf2any/test/maketest create mode 100644 support/utf2any/test/tst-latex.utf7 create mode 100644 support/utf2any/test/tst-latex.utf8 create mode 100644 support/utf2any/test/tst.utf7 create mode 100644 support/utf2any/test/tst.utf8 create mode 100644 support/utf2any/utf2any.c create mode 100644 support/utf2any/utf2any.l create mode 100644 support/utf2any/utfcode.c (limited to 'support/utf2any') diff --git a/support/utf2any/Changes b/support/utf2any/Changes new file mode 100644 index 0000000000..dfadfeb5ab --- /dev/null +++ b/support/utf2any/Changes @@ -0,0 +1,16 @@ +CHANGES + +2000/06/21: + + Makefile: simplified because of errors with some versions of Make. + Makefile: corrected filename: utf -> utfcode. + utf2any: added cast (unsigned char) in calls to isspace(). + utf2any, README: added option [-w] to usage-message. + utf2any, utfcode: added version number 1.0 in usage-message. + utf2any, utfcode: observe U+7FFFFFFF as upper limit for UTF-8. + maps/html.map, maps/latex.map: upper boundary for default range set to + U+7FFFFFFF. + +2000/03/02: + + Added maps for rfc-1345. diff --git a/support/utf2any/Makefile b/support/utf2any/Makefile new file mode 100644 index 0000000000..a7267fa418 --- /dev/null +++ b/support/utf2any/Makefile @@ -0,0 +1,27 @@ + +.SUFFIXES: + +# MAPDIR defines the place were utf2any will search for symbol maps +# This should be a directory, within double quotes, ending with a slash +# Or it can be NULL + +MAPDIR = \"/usr/local/lib/utf/\" +#MAPDIR = NULL + +mapdir: + @echo + @echo Edit Makefile to specify were utf2any should look for symbol maps + @echo Current value is: ${MAPDIR} + @echo When done, run: make all + @echo + @exit 1 + +all: utf2any utfcode + +utf2any: utf2any.l + flex -B -8 utf2any.l + gcc -s -Wall -DMAPDIR=${MAPDIR} -o utf2any lex.yy.c -lfl + rm lex.yy.c + +utfcode: utfcode.c + gcc -s -Wall -o utfcode utfcode.c diff --git a/support/utf2any/README b/support/utf2any/README new file mode 100644 index 0000000000..d8b700227d --- /dev/null +++ b/support/utf2any/README @@ -0,0 +1,109 @@ + ++===========+ +| utf2any | ++===========+ + +utf2any translates a file encoded in UTF-7 or UTF-8 (Unicode) into any +7- or 8-bit text format. Currently, mapping tables are supplied for +LaTeX, HTML, iso-8859-1, iso-8859-15 and rfc-1345. These tables don't +provide a complete mapping, but they can be easily extended to personal +needs. + +Usage: utf2any -7|-8 [-f mapfile] [-v] [-w] [infile] + + -7 : Input is UTF-7 + -8 : Input is UTF-8 + -f : File with definitions of the symbol mappings + -v : Verbose + -w : Warning messages + +If multiple -f options are given, the files are processed in turn. +If name of mapfile has no path, it will be search for in: + 1. current directory + 2. compiled-in default directory +If no -f option is given, a default mapping will be used. + +If no infile is given, the program will read from stdin. + + +Syntax of symbol map file: +-------------------------- + +Empty lines, and lines starting with a hash (#) are ignored. + + +Another mapfile can be included: + + I filename + +If filename does not contain a path, it will be searched for in the +following directories: + 1. current directory + 2. the same directory as the file this map was included from + + +A default mapping for a range of characters can be defined as follows: + + D first last size format + D first last action + +first: Unicode number of first symbol in default range +last: Unicode number of last symbol in default range +size: this should be one of: uchar unsigned ulong +format: a format given to the C printf function to display the symbol. + The format receives one argument: the code number. This number will be + cast to one of: + (unsigned char) if size equals uchar + (unsigned) if size equals unsigned + (long unsigned) if size equals ulong +action: one of: + #ECHO# : print the character as is, only possible for codes up to 255 + #SKIP# : don't print anything + #SPACE# : print a space + +Numbers can be given as: + + Unicode type number: hexadecimal number with prefix U+ + decimal + octal: number with prefix 0 + hexadecimal: number with prefix 0x + + +Default ranges take lower precedence than explicit codes (see below), +accept in the range 0 to 255, where they overwrite explicit definitions. +To be safe, define all default mappings before explicit mappings. + + +Explicit mapping, a number followed by a string: + + number action + number string + +number: a Unicode number, in the same format as with default ranges +action: the same as with default ranges +string: a literal string + + ++===========+ +| utfcode | ++===========+ + +utfcode translates one or more Unicode numbers into UTF-7 and/or UTF-8. + +Usage: utfcode [-7|-8] [number...] + + -7 : utf-7 only + -8 : utf-8 only + +Numbers can be given in the same format as in the mapfiles for utf2any. + + +==================================== + +(c) Peter Kleiweg 2000 +http://www.let.rug.nl/~kleiweg/ + +This is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. diff --git a/support/utf2any/extra/README b/support/utf2any/extra/README new file mode 100644 index 0000000000..15ef8045ec --- /dev/null +++ b/support/utf2any/extra/README @@ -0,0 +1,5 @@ + +Here are just two predecessors to utf2any. These programs are very +simple and can be used by hackers who wish to write their own UTF +application. + diff --git a/support/utf2any/extra/utf7.l b/support/utf2any/extra/utf7.l new file mode 100644 index 0000000000..204d8afc70 --- /dev/null +++ b/support/utf2any/extra/utf7.l @@ -0,0 +1,261 @@ +/* file: utf7.l */ + +%{ + +#ifdef __MSDOS__ +# include +# include +# include +#else +# include +#endif +#include +#include +#include +#include + +int + printcode = 0; + +unsigned int + outcode [2], + instep, + outstep; + +char + *programname; + +void + get_programname (char const *argv0), + syntax (void), + errit (char const *format, ...), + utf (void), + nextout (void), + outchar (long unsigned); + +#ifdef __MSDOS__ +#define strcasecmp(s1, s2) (stricmp(s1, s2)) +#endif + +#define YY_NO_UNPUT +#define YY_SKIP_YYWRAP +#ifdef yywrap +# undef yywrap +#endif +int yywrap() +{ + return 1; +} + +%} + +%Start _utf + +%% + +"+-" { fputc ('+', stdout); } +"+" { instep = outstep = 0; + BEGIN _utf; } + +<_utf>[A-Za-z0-9+/] { utf (); } +<_utf>"-" { BEGIN INITIAL; } +<_utf>.|\n { fputc (yytext [0], stdout); + BEGIN INITIAL; } + +%% + +void utf () +{ + unsigned + i, + c; + + i = yytext [0]; + if (i >= 'A' && i <= 'Z') + c = i - 'A'; + else if (i >= 'a' && i <= 'z') + c = i + 26 - 'a'; + else if (i >= '0' && i <= '9') + c = i + 52 - '0'; + else if (i == '+') + c = 62; + else if (i == '/') + c = 63; + + switch (instep) { + case 0: + outcode [outstep] = (c << 2); + break; + case 1: + outcode [outstep] |= (c >> 4); + nextout (); + outcode [outstep] = (c << 4); + break; + case 2: + outcode [outstep] |= (c >> 2); + nextout (); + outcode [outstep] = (c << 6); + break; + case 3: + outcode [outstep] |= c; + nextout (); + break; + } + if (++instep == 4) + instep = 0; +} + +void nextout () +{ + unsigned + c; + + if (outstep == 0) { + outstep = 1; + } else { + outstep = 0; + c = ((outcode [0] & 0xFF) << 8) | (outcode [1] & 0xFF); + outchar (c); + } +} + +void outchar (long unsigned c) +{ + int + i; + char + *s; + + /* + * iso-8859-1 + */ + if (c < 256) { + fputc (c, stdout); + return; + } + + /* + * iso-8859-15 + */ + i = 0; + switch (c) { + case 0x20Ac: i = 0xA4; break; /* euro */ + case 0x0160: i = 0xA6; break; /* S caron */ + case 0x0161: i = 0xA8; break; /* s caron */ + case 0x017D: i = 0xB4; break; /* Z caron */ + case 0x017E: i = 0xB8; break; /* z caron */ + case 0x0152: i = 0xBC; break; /* OE ligature */ + case 0x0153: i = 0xBD; break; /* oe ligature */ + case 0x0178: i = 0xBE; break; /* Y diaeresis */ + } + if (i) { + fputc (i, stdout); + return; + } + + /* + * substitutions + */ + s = NULL; + switch (c) { + case 0x0132: s = "IJ"; break; + case 0x0133: s = "ij"; break; + } + if (s) { + fputs (s, stdout); + return; + } + + if (printcode) { + if (c < 0x10000) + printf ("U+%04X", (unsigned) c); + else + printf ("U+%08lX", c); + } else + fputc (191, stdout); +} + +int main (int argc, char *argv []) +{ + get_programname (argv [0]); + + while (argc > 1) + if (! strcmp (argv [1], "-c")) { + printcode = 1; + argv++; + argc--; + } else + break; + + switch (argc) { + case 1: + if (isatty (fileno (stdin))) + syntax (); + yyin = stdin; + break; + case 2: + yyin = fopen (argv [1], "r"); + if (! yyin) + errit ("Opening file \"%s\": %s", argv [1], strerror (errno)); + break; + default: + syntax (); + } + + yylex (); + + if (yyin != stdin) + fclose (yyin); + + return 0; +} + +void get_programname (char const *argv0) +{ +#ifdef __MSDOS__ + char + name [MAXFILE]; + fnsplit (argv0, NULL, NULL, name, NULL); + programname = strdup (name); +#else /* unix */ + char + *p; + p = strrchr (argv0, '/'); + if (p) + programname = strdup (p + 1); + else + programname = strdup (argv0); +#endif +} + +void errit (char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: ", programname); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void syntax () +{ + fprintf ( + stderr, + "\n" + "Syntax: %s [-c] [utf-7 encoded file]\n" + "\n" + "The file will be translated to iso-8859-1 *and* iso-8859-15\n" + "\n" + " -c : print U+code for characters not in iso-8859-1/15\n" + "\n", + programname + ); + + exit (1); +} diff --git a/support/utf2any/extra/utf8.l b/support/utf2any/extra/utf8.l new file mode 100644 index 0000000000..49134feab4 --- /dev/null +++ b/support/utf2any/extra/utf8.l @@ -0,0 +1,297 @@ +/* + * file: utf8.l + * + * required flex option: + * + * -8 (generate 8bit scanner) + */ + +%{ + +#ifdef __MSDOS__ +# include +# include +# include +#else +# include +#endif +#include +#include +#include +#include + +int + printcode = 0; + +char + *programname; + +void + get_programname (char const *argv0), + syntax (void), + errit (char const *format, ...), + bytes2 (void), + bytes3 (void), + bytes4 (void), + bytes5 (void), + bytes6 (void), + outchar (long unsigned); + +#define YY_NO_UNPUT +#define YY_SKIP_YYWRAP +#ifdef yywrap +# undef yywrap +#endif +int yywrap() +{ + return 1; +} + +%} + +%% + +[\300-\337]. { bytes2 (); } +[\340-\357].. { bytes3 (); } +[\360-\367]... { bytes4 (); } +[\370-\373].... { bytes5 (); } +[\374-\375]..... { bytes6 (); } + +%% + +void bytes2 () +{ + unsigned + u [2], + c; + int + i; + + for (i = 0; i < 2; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [1] & 0x3F) + | ((u [0] & 0x1F) << 6); + + outchar (c); +} + + +void bytes3 () +{ + unsigned + u [3], + c; + int + i; + + for (i = 0; i < 3; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [2] & 0x3F) + | ((u [1] & 0x3F) << 6) + | ((u [0] & 0x0F) << 12); + + outchar (c); +} + +void bytes4 () +{ + long unsigned + u [4], + c; + int + i; + + for (i = 0; i < 4; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [3] & 0x3F) + | ((u [2] & 0x3F) << 6) + | ((u [1] & 0x3F) << 12) + | ((u [0] & 0x07) << 18); + + outchar (c); +} + +void bytes5 () +{ + long unsigned + u [5], + c; + int + i; + + for (i = 0; i < 5; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [4] & 0x3F) + | ((u [3] & 0x3F) << 6) + | ((u [2] & 0x3F) << 12) + | ((u [1] & 0x3F) << 18) + | ((u [0] & 0x03) << 24); + + outchar (c); +} + +void bytes6 () +{ + long unsigned + u [6], + c; + int + i; + + for (i = 0; i < 6; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [5] & 0x3F) + | ((u [4] & 0x3F) << 6) + | ((u [3] & 0x3F) << 12) + | ((u [2] & 0x3F) << 18) + | ((u [1] & 0x3F) << 24) + | ((u [0] & 0x01) << 30); + + outchar (c); +} + +void outchar (long unsigned c) +{ + int + i; + char + *s; + + /* + * iso-8859-1 + */ + if (c < 256) { + fputc (c, stdout); + return; + } + + /* + * iso-8859-15 + */ + i = 0; + switch (c) { + case 0x20Ac: i = 0xA4; break; /* euro */ + case 0x0160: i = 0xA6; break; /* S caron */ + case 0x0161: i = 0xA8; break; /* s caron */ + case 0x017D: i = 0xB4; break; /* Z caron */ + case 0x017E: i = 0xB8; break; /* z caron */ + case 0x0152: i = 0xBC; break; /* OE ligature */ + case 0x0153: i = 0xBD; break; /* oe ligature */ + case 0x0178: i = 0xBE; break; /* Y diaeresis */ + } + if (i) { + fputc (i, stdout); + return; + } + + /* + * substitutions + */ + s = NULL; + switch (c) { + case 0x0132: s = "IJ"; break; + case 0x0133: s = "ij"; break; + } + if (s) { + fputs (s, stdout); + return; + } + + if (printcode) { + if (c < 0x10000) + printf ("U+%04X", (unsigned) c); + else + printf ("U+%08lX", c); + } else + fputc (191, stdout); +} + +int main (int argc, char *argv []) +{ + get_programname (argv [0]); + + while (argc > 1) + if (! strcmp (argv [1], "-c")) { + printcode = 1; + argv++; + argc--; + } else + break; + + switch (argc) { + case 1: + if (isatty (fileno (stdin))) + syntax (); + yyin = stdin; + break; + case 2: + yyin = fopen (argv [1], "r"); + if (! yyin) + errit ("Opening file \"%s\": %s", argv [1], strerror (errno)); + break; + default: + syntax (); + } + + yylex (); + + if (yyin != stdin) + fclose (yyin); + + return 0; +} + +void get_programname (char const *argv0) +{ +#ifdef __MSDOS__ + char + name [MAXFILE]; + fnsplit (argv0, NULL, NULL, name, NULL); + programname = strdup (name); +#else /* unix */ + char + *p; + p = strrchr (argv0, '/'); + if (p) + programname = strdup (p + 1); + else + programname = strdup (argv0); +#endif +} + +void errit (char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: ", programname); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void syntax () +{ + fprintf ( + stderr, + "\n" + "Syntax: %s [-c] [utf-8 encoded file]\n" + "\n" + "The file will be translated to iso-8859-1 *and* iso-8859-15\n" + "\n" + " -c : print U+code for characters not in iso-8859-1/15\n" + "\n", + programname + ); + + exit (1); +} diff --git a/support/utf2any/maps/html-extended.map b/support/utf2any/maps/html-extended.map new file mode 100644 index 0000000000..52aaf55e89 --- /dev/null +++ b/support/utf2any/maps/html-extended.map @@ -0,0 +1,154 @@ +I html.map + +U+0152 Œ +U+0153 œ +U+0160 Š +U+0161 š +U+0178 Ÿ +U+02C6 ˆ +U+02DC ˜ +U+2002   +U+2003   +U+2009   +U+200C ‌ +U+200D ‍ +U+200E ‎ +U+200F ‏ +U+2013 – +U+2014 — +U+2018 ‘ +U+2019 ’ +U+201A ‚ +U+201C “ +U+201D ” +U+201E „ +U+2020 † +U+2021 ‡ +U+2030 ‰ +U+2039 ‹ +U+203A › +U+20AC € + +U+0192 ƒ +U+0391 Α +U+0392 Β +U+0393 Γ +U+0394 Δ +U+0395 Ε +U+0396 Ζ +U+0397 Η +U+0398 Θ +U+0399 Ι +U+039A Κ +U+039B Λ +U+039C Μ +U+039D Ν +U+039E Ξ +U+039F Ο +U+03A0 Π +U+03A1 Ρ +U+03A3 Σ +U+03A4 Τ +U+03A5 Υ +U+03A6 Φ +U+03A7 Χ +U+03A8 Ψ +U+03A9 Ω +U+03B2 β +U+03B3 γ +U+03B4 δ +U+03B5 ε +U+03B6 ζ +U+03B7 η +U+03B8 θ +U+03B9 ι +U+03BA κ +U+03BB λ +U+03BC μ +U+03BD ν +U+03BE ξ +U+03BF ο +U+03C0 π +U+03C1 ρ +U+03C2 ς +U+03C3 σ +U+03C4 τ +U+03C5 υ +U+03C6 φ +U+03C7 χ +U+03C8 ψ +U+03C9 ω +U+03D1 ϑ +U+03D2 ϒ +U+03D6 ϖ +U+2022 • +U+2026 … +U+2032 ′ +U+2033 ″ +U+203E ‾ +U+2044 ⁄ +U+2118 ℘ +U+2111 ℑ +U+211C ℜ +U+2122 ™ +U+2135 ℵ +U+2190 ← +U+2191 ↑ +U+2192 → +U+2193 ↓ +U+2194 ↔ +U+21B5 ↵ +U+21D0 ⇐ +U+21D1 ⇑ +U+21D2 ⇒ +U+21D3 ⇓ +U+21D4 ⇔ +U+2200 ∀ +U+2202 ∂ +U+2203 ∃ +U+2205 ∅ +U+2207 ∇ +U+2208 ∈ +U+2209 ∉ +U+220B ∋ +U+220F ∏ +U+2211 ∑ +U+2212 − +U+2217 ∗ +U+221A √ +U+221D ∝ +U+221E ∞ +U+2220 ∠ +U+2227 ∧ +U+2228 ∨ +U+2229 ∩ +U+222A ∪ +U+222B ∫ +U+2234 ∴ +U+223C ∼ +U+2245 ≅ +U+2248 ≈ +U+2260 ≠ +U+2261 ≡ +U+2264 ≤ +U+2265 ≥ +U+2282 ⊂ +U+2283 ⊃ +U+2284 ⊄ +U+2286 ⊆ +U+2287 ⊇ +U+2295 ⊕ +U+2297 ⊗ +U+22A5 ⊥ +U+22C5 ⋅ +U+2308 ⌈ +U+2309 ⌉ +U+230A ⌊ +U+230B ⌋ +U+2329 ⟨ +U+232A ⟩ +U+25CA ◊ +U+2660 ♠ +U+2663 ♣ +U+2665 ♥ +U+2666 ♦ diff --git a/support/utf2any/maps/html-extra.map b/support/utf2any/maps/html-extra.map new file mode 100644 index 0000000000..ab6cee08bd --- /dev/null +++ b/support/utf2any/maps/html-extra.map @@ -0,0 +1,104 @@ +U+0132 IJ +U+0133 ij +U+0152 OE +U+0153 oe + +# Dutch florin +U+0192 f + +U+01C7 LJ +U+01C8 Lj +U+01C9 lj +U+01CA NJ +U+01CB Nj +U+01CC nj +U+01F1 DZ +U+01F2 Dz +U+01F3 dz + +U+2010 - +U+2011 - +U+2012 - +U+2013 - +U+2014 -- +U+2018 ` +U+2019 ' +U+201A , +U+201B ` +U+201C `` +U+201D '' +U+201E ,, +U+201F `` +U+2024 . +U+2025 .. +U+2026 ... +U+2027 · +U+2032 ' +U+2033 '' +U+2034 ''' +U+2035 ` +U+2036 `` +U+2037 ``` +U+2039 < +U+203A > + +U+2100 a/c +U+2101 a/s +U+2105 c/o +U+2106 c/u +U+2116 Nº +U+2120 [SM] +U+2121 [TEL] +U+2122 [TM] + +U+2153 1/3 +U+2154 2/3 +U+2155 1/5 +U+2156 2/5 +U+2157 3/5 +U+2158 4/5 +U+2159 1/6 +U+215A 5/6 +U+215B 1/8 +U+215C 3/8 +U+215D 5/8 +U+215E 7/8 +U+215F 1/ +U+2160 I +U+2161 II +U+2162 III +U+2163 IV +U+2164 V +U+2165 VI +U+2166 VII +U+2167 VIII +U+2168 IX +U+2169 X +U+216A XI +U+216B XII +U+216C L +U+216D C +U+216E D +U+216F M +U+2170 i +U+2171 ii +U+2172 iii +U+2173 iv +U+2174 v +U+2175 vi +U+2176 vii +U+2177 viii +U+2178 ix +U+2179 x +U+217A xi +U+217B xii +U+217C l +U+217D c +U+217E d +U+217F m + +U+FB00 ff +U+FB01 fi +U+FB02 fl +U+FB03 ffi +U+FB04 ffl diff --git a/support/utf2any/maps/html.map b/support/utf2any/maps/html.map new file mode 100644 index 0000000000..b17cc0d947 --- /dev/null +++ b/support/utf2any/maps/html.map @@ -0,0 +1,77 @@ +D 127 191 unsigned &#%u; +D U+0100 U+FFFF unsigned &#%u; +D U+00010000 U+7FFFFFFF ulong &#%lu; + +U+0022 " +U+0026 & +U+003C < +U+003E > + +U+00A0   +U+00A9 © +U+00AE ® + +U+00C0 À +U+00C1 Á +U+00C2  +U+00C3 à +U+00C4 Ä +U+00C5 Å +U+00C6 Æ +U+00C7 Ç +U+00C8 È +U+00C9 É +U+00CA Ê +U+00CB Ë +U+00CC Ì +U+00CD Í +U+00CE Î +U+00CF Ï +U+00D0 Ð +U+00D1 Ñ +U+00D2 Ò +U+00D3 Ó +U+00D4 Ô +U+00D5 Õ +U+00D6 Ö +U+00D7 × +U+00D8 Ø +U+00D9 Ù +U+00DA Ú +U+00DB Û +U+00DC Ü +U+00DD Ý +U+00DE Þ +U+00DF ß +U+00E0 à +U+00E1 á +U+00E2 â +U+00E3 ã +U+00E4 ä +U+00E5 å +U+00E6 æ +U+00E7 ç +U+00E8 è +U+00E9 é +U+00EA ê +U+00EB ë +U+00EC ì +U+00ED í +U+00EE î +U+00EF ï +U+00F0 ð +U+00F1 ñ +U+00F2 ò +U+00F3 ó +U+00F4 ô +U+00F5 õ +U+00F6 ö +U+00F7 ÷ +U+00F8 ø +U+00F9 ù +U+00FA ú +U+00FB û +U+00FC ü +U+00FD ý +U+00FE þ +U+00FF ÿ diff --git a/support/utf2any/maps/iso-8859-1.map b/support/utf2any/maps/iso-8859-1.map new file mode 100644 index 0000000000..1abc9bfbee --- /dev/null +++ b/support/utf2any/maps/iso-8859-1.map @@ -0,0 +1,104 @@ +U+0132 IJ +U+0133 ij +U+0152 OE +U+0153 oe + +# Dutch florin +U+0192 fl + +U+01C7 LJ +U+01C8 Lj +U+01C9 lj +U+01CA NJ +U+01CB Nj +U+01CC nj +U+01F1 DZ +U+01F2 Dz +U+01F3 dz + +U+2010 - +U+2011 - +U+2012 - +U+2013 - +U+2014 -- +U+2018 ` +U+2019 ' +U+201A , +U+201B ` +U+201C `` +U+201D '' +U+201E ,, +U+201F `` +U+2024 . +U+2025 .. +U+2026 ... +U+2027 · +U+2032 ' +U+2033 '' +U+2034 ''' +U+2035 ` +U+2036 `` +U+2037 ``` +U+2039 < +U+203A > + +U+2100 a/c +U+2101 a/s +U+2105 c/o +U+2106 c/u +U+2116 Nº +U+2120 [SM] +U+2121 [TEL] +U+2122 [TM] + +U+2153 1/3 +U+2154 2/3 +U+2155 1/5 +U+2156 2/5 +U+2157 3/5 +U+2158 4/5 +U+2159 1/6 +U+215A 5/6 +U+215B 1/8 +U+215C 3/8 +U+215D 5/8 +U+215E 7/8 +U+215F 1/ +U+2160 I +U+2161 II +U+2162 III +U+2163 IV +U+2164 V +U+2165 VI +U+2166 VII +U+2167 VIII +U+2168 IX +U+2169 X +U+216A XI +U+216B XII +U+216C L +U+216D C +U+216E D +U+216F M +U+2170 i +U+2171 ii +U+2172 iii +U+2173 iv +U+2174 v +U+2175 vi +U+2176 vii +U+2177 viii +U+2178 ix +U+2179 x +U+217A xi +U+217B xii +U+217C l +U+217D c +U+217E d +U+217F m + +U+FB00 ff +U+FB01 fi +U+FB02 fl +U+FB03 ffi +U+FB04 ffl diff --git a/support/utf2any/maps/iso-8859-15.map b/support/utf2any/maps/iso-8859-15.map new file mode 100644 index 0000000000..9d61fab2c6 --- /dev/null +++ b/support/utf2any/maps/iso-8859-15.map @@ -0,0 +1,19 @@ +I iso-8859-1.map + +U+00A4 [U+00A4] +U+00A6 [U+00A6] +U+00A8 [U+00A8] +U+00B4 [U+00B4] +U+00B8 [U+00B8] +U+00BC [U+00BC] +U+00BD [U+00BD] +U+00BE [U+00BE] + +U+20AC ¤ +U+0160 ¦ +U+0161 ¨ +U+017D ´ +U+017E ¸ +U+0152 ¼ +U+0153 ½ +U+0178 ¾ diff --git a/support/utf2any/maps/iso-8859-mixed.map b/support/utf2any/maps/iso-8859-mixed.map new file mode 100644 index 0000000000..4135b6b520 --- /dev/null +++ b/support/utf2any/maps/iso-8859-mixed.map @@ -0,0 +1,2 @@ +I iso-8859-15.map +D 160 191 #ECHO# diff --git a/support/utf2any/maps/latex-controls.map b/support/utf2any/maps/latex-controls.map new file mode 100644 index 0000000000..c8a51e1939 --- /dev/null +++ b/support/utf2any/maps/latex-controls.map @@ -0,0 +1,11 @@ +U+000C \newpage{} +U+0023 \# +U+0024 \$ +U+0025 \% +U+0026 \& +U+005C \verb!\! +U+005E \^{ } +U+005F \_ +U+007B \{ +U+007D \} +U+007E \~{ } diff --git a/support/utf2any/maps/latex.map b/support/utf2any/maps/latex.map new file mode 100644 index 0000000000..04d03ab9a4 --- /dev/null +++ b/support/utf2any/maps/latex.map @@ -0,0 +1,536 @@ +# Currently, to be able to use all codes defined here, the following +# packages need to be included: +# +# \usepackage{textcomp} +# \usepackage{eurofont} +# \usepackage[T1,tone,safe]{tipa} +# +# If you don't use phonetic symbols, the last package can be replaced by: +# +# \usepackage[T1]{fontenc} + +D U+0080 U+FFFF unsigned \emph{[U+%04X]} +D U+00010000 U+7FFFFFFF ulong \emph{[U+%08lX]} + +U+00A0 ~ +U+00A1 !` +U+00A2 \textcent{} +U+00A3 \pounds{} +U+00A4 \textcurrency{} +U+00A5 \textyen{} +U+00A6 \textbrokenbar{} +U+00A7 \S{} +U+00A8 \textasciidieresis{} +U+00A9 \copyright{} +U+00AA \textordfeminine{} +U+00AB \guillemotleft{} +U+00AC \textlnot{} +U+00AD - +U+00AE \textregistered{} +U+00AF \textmacron{} +U+00B0 \textdegree{} +U+00B1 \textpm{} +U+00B2 \texttwosuperior{} +U+00B3 \textthreesuperior{} +U+00B4 \textasciiacute{} +U+00B5 \textmu{} +U+00B6 \P{} +U+00B7 \textperiodcentered{} +U+00B8 \c{ } +U+00B9 \textonesuperior{} +U+00BA \textordmasculine{} +U+00BB \guillemotright{} +U+00BC \ensuremath{{}^1\!/\!_4} +U+00BD \ensuremath{{}^1\!/\!_2} +U+00BE \ensuremath{{}^3\!/\!_4} +U+00BF ?` +U+00C0 \`A +U+00C1 \'A +U+00C2 \^A +U+00C3 \~A +U+00C4 \"A +U+00C5 \AA{} +U+00C6 \AE{} +U+00C7 \c{C} +U+00C8 \`E +U+00C9 \'E +U+00CA \^E +U+00CB \"E +U+00CC \`I +U+00CD \'I +U+00CE \^I +U+00CF \"I +U+00D0 \DH{} +U+00D1 \~N +U+00D2 \`O +U+00D3 \'O +U+00D4 \^O +U+00D5 \~O +U+00D6 \"O +U+00D7 \texttimes{} +U+00D8 \O{} +U+00D9 \`U +U+00DA \'U +U+00DB \^U +U+00DC \"U +U+00DD \'Y +U+00DE \TH{} +U+00DF \ss{} +U+00E0 \`a +U+00E1 \'a +U+00E2 \^a +U+00E3 \~a +U+00E4 \"a +U+00E5 \aa{} +U+00E6 \ae{} +U+00E7 \c{c} +U+00E8 \`e +U+00E9 \'e +U+00EA \^e +U+00EB \"e +U+00EC \`{\i} +U+00ED \'{\i} +U+00EE \^{\i} +U+00EF \"{\i} +U+00F0 \dh{} +U+00F1 \~n +U+00F2 \`o +U+00F3 \'o +U+00F4 \^o +U+00F5 \~o +U+00F6 \"o +U+00F7 \textdiv{} +U+00F8 \o{} +U+00F9 \`u +U+00FA \'u +U+00FB \^u +U+00FC \"u +U+00FD \'y +U+00FE \th{} +U+00FF \"y + +U+0100 \=A +U+0101 \=a +U+0102 \u{A} +U+0103 \u{a} +U+0104 \textpolhook{A} +U+0105 \textpolhook{a} +U+0106 \'C +U+0107 \'c +U+0108 \^C +U+0109 \^c +U+010A \.C +U+010B \.c +U+010C \v{C} +U+010D \v{c} +U+010E \v{D} +U+010F \v{d} +U+0110 \DJ{} +U+0111 \dj{} +U+0112 \=E +U+0113 \=e +U+0114 \u{E} +U+0115 \u{e} +U+0116 \.E +U+0117 \.e +U+0118 \textpolhook{E} +U+0119 \textpolhook{e} +U+011A \v{E} +U+011B \v{e} +U+011C \^G +U+011D \^g +U+011E \u{G} +U+011F \u{g} +U+0120 \.G +U+0121 \.g +U+0122 \c{G} +U+0123 \c{g} +U+0124 \^H +U+0125 \^h +# U+0126 +U+0127 \textcrh{} +U+0128 \~I +U+0129 \~{\i} +U+012A \=I +U+012B \={\i} +U+012C \u{I} +U+012D \u{\i} +U+012E \textpolhook{I} +U+012F \textpolhook{\i} +U+0130 \.I +U+0131 \i{} +U+0132 IJ +U+0133 ij +U+0134 \^J +U+0135 \^{\j} +U+0136 \c{K} +U+0137 \c{k} +# U+0138 +U+0139 \'L +U+013A \'l +U+013B \c{L} +U+013C \c{l} +U+013D \v{L} +U+013E \v{l} +U+013F L\ensuremath{\cdot} +U+0140 l\ensuremath{\cdot} +U+0141 \L{} +U+0142 \l{} +U+0143 \'N +U+0144 \'n +U+0145 \c{N} +U+0146 \c{n} +U+0147 \v{N} +U+0148 \v{n} +U+0149 'n +U+014A \NG{} +U+014B \ng{} +U+014C \=O +U+014D \=o +U+014E \u{O} +U+014F \u{o} +U+0150 \H{O} +U+0151 \H{o} +U+0152 \OE{} +U+0153 \oe{} +U+0154 \'R +U+0155 \'r +U+0156 \c{R} +U+0157 \c{r} +U+0158 \v{R} +U+0159 \v{r} +U+015A \'S +U+015B \'s +U+015C \^S +U+015D \^s +U+015E \c{S} +U+015F \c{s} +U+0160 \v{S} +U+0161 \v{s} +U+0162 \c{T} +U+0163 \c{t} +U+0164 \v{T} +U+0165 \v{t} +# U+0166 +# U+0167 +U+0168 \~U +U+0169 \~u +U+016A \=U +U+016B \=u +U+016C \u{U} +U+016D \u{u} +U+016E \r{U} +U+016F \r{u} +U+0170 \H{U} +U+0171 \H{u} +U+0172 \textpolhook{U} +U+0173 \textpolhook{u} +U+0174 \^W +U+0175 \^w +U+0176 \^Y +U+0177 \^y +U+0178 \"Y +U+0179 \'Z +U+017A \'z +U+017B \.Z +U+017C \.z +U+017D \v{Z} +U+017E \v{z} +# U+017F + +U+0180 \textcrb{} +U+0192 \textit{f} +U+0194 \textgamma{} +U+0195 \texthvlig{} +U+0197 \ipabar{I}{.6ex}{1.1}{}{} +U+019A \textbarl{} +U+019B \textcrlambda{} +U+01B5 \ipabar{Z}{.7ex}{1.1}{}{} +U+01B6 \ipabar{z}{.5ex}{1.1}{}{} +U+01B9 \textrevyogh{} +U+01BE \textcrinvglotstop{} +U+01C0 \textpipe{} +U+01C1 \textdoublepipe{} +U+01C2 \textdoublebarpipe{} +U+01C3 ! +U+01C4 D\v{Z} +U+01C5 D\v{z} +U+01C6 d\v{z} +U+01C7 LJ +U+01C8 Lj +U+01C9 lj +U+01CA NJ +U+01CB Nj +U+01CC nj +U+01CD \v{A} +U+01CE \v{a} +U+01CF \v{I} +U+01D0 \v{\i} +U+01D1 \v{O} +U+01D2 \v{o} +U+01D3 \v{U} +U+01D4 \v{u} +U+01D5 \={\"U} +U+01D6 \={\"u} +U+01D7 \'{\"U} +U+01D8 \'{\"u} +U+01D9 \v{\"U} +U+01DA \v{\"u} +U+01DB \`{\"U} +U+01DC \`{\"u} +U+01DD \textschwa{} +U+01DE \={\"A} +U+01DF \={\"a} +U+01E0 \={\.A} +U+01E1 \={\.a} +U+01E2 \={\AE} +U+01E3 \={\ae} +U+01E6 \v{G} +U+01E7 \v{g} +U+01E8 \v{K} +U+01E9 \v{k} +U+01EA \textpolhook{O} +U+01EB \textpolhook{o} +U+01EC \={\textpolhook{O}} +U+01ED \={\textpolhook{o}} +U+01EF \v{\textyogh} +U+01F0 \v{\j} +U+01F1 DZ +U+01F2 Dz +U+01F3 dz +U+01F4 \'G +U+01F5 \'g +U+01FA \'{\AA} +U+01FB \'{\aa} +U+01FC \'{\AE} +U+01FD \'{\ae} +U+01FE \'{\O} +U+01FF \'{\o} + +U+0200 \textdoublegrave{A} +U+0201 \textdoublegrave{a} +U+0202 \textroundcap{A} +U+0203 \textroundcap{a} +U+0204 \textdoublegrave{E} +U+0205 \textdoublegrave{e} +U+0206 \textroundcap{E} +U+0207 \textroundcap{e} +U+0208 \textdoublegrave{I} +U+0209 \textdoublegrave{\i} +U+020A \textroundcap{I} +U+020B \textroundcap{\i} +U+020C \textdoublegrave{O} +U+020D \textdoublegrave{o} +U+020E \textroundcap{O} +U+020F \textroundcap{o} +U+0210 \textdoublegrave{R} +U+0211 \textdoublegrave{r} +U+0212 \textroundcap{R} +U+0213 \textroundcap{r} +U+0214 \textdoublegrave{U} +U+0215 \textdoublegrave{u} +U+0216 \textroundcap{U} +U+0217 \textroundcap{u} + +U+0250 \textturna{} +U+0251 \textscripta{} +U+0252 \textturnscripta{} +U+0253 \texthtb{} +U+0254 \textopeno{} +U+0255 \textctc{} +U+0256 \textrtaild{} +U+0257 \texthtd{} +U+0258 \textreve{} +U+0259 \textschwa{} +U+025A \textrhookschwa{} +U+025B \textepsilon{} +U+025C \textrevepsilon{} +U+025D \textrhookrevepsilon{} +U+025E \textcloserevepsilon{} +U+025F \textObardotlessj{} +U+0260 \texthtg{} +U+0261 \textipa{g} +U+0262 \textscg{} +U+0263 \textgamma{} +U+0264 \textbabygamma{} +U+0265 \textturnh{} +U+0266 \texthth{} +U+0267 \texththeng{} +U+0268 \textbari{} +U+0269 \textiota{} +U+026A \textsci{} +U+026B \textltilde{} +U+026C \textbeltl{} +U+026D \textrtaill{} +# U+026E +U+026F \textturnm{} +U+0270 \textturnmrleg{} +U+0271 \textltailm{} +U+0272 \textltailn{} +U+0273 \textrtailn{} +U+0274 \textscn{} +U+0275 \textbaro{} +U+0276 \textscoelig{} +U+0277 \textcloseomega{} +U+0278 \textphi{} +U+0279 \textturnr{} +U+027A \textturnlonglegr{} +U+027B \textturnrrtail{} +U+027C \textlonglegr{} +U+027D \textrtailr{} +U+027E \textfishhookr{} +# U+027F +U+0280 \textscr{} +U+0281 \textinvscr{} +U+0282 \textrtails{} +U+0283 \textesh{} +U+0284 \textdoublebaresh{} +# U+0285 +U+0286 \textctesh{} +U+0287 \textturnt{} +U+0288 \textrtailt{} +U+0289 \textbaru{} +U+028A \textupsilon{} +U+028B \textscriptv{} +U+028C \textturnv{} +U+028D \textturnw{} +U+028E \textturny{} +U+028F \textscy{} +U+0290 \textrtailz{} +U+0291 \textctz{} +U+0292 \textyogh{} +U+0293 \textctyogh{} +U+0294 \textglotstop{} +U+0295 \textrevglotstop{} +U+0296 \textinvglotstop{} +U+0297 \textstretchc{} +U+0298 \textbullseye{} +U+0299 \textscb{} +U+029A \textcloseepsilon{} +U+029B \texthtscg{} +U+029C \textsch{} +U+029D \textctj{} +U+029E \textturnk{} +U+029F \textscl{} +U+02A0 \texthtq{} +U+02A1 \textbarglotstop{} +U+02A2 \textbarrevglotstop{} +U+02A3 \textdzlig{} +U+02A4 \textdyoghlig{} +U+02A5 \textdctzlig{} +U+02A6 \texttslig{} +U+02A7 \textteshlig{} +U+02A8 \texttctclig{} + +U+02B0 \textsuperscript{h} +U+02B1 \textsuperscript{\texthth} +U+02B2 \textsuperscript{j} +U+02B3 \textsuperscript{r} +U+02B4 \textsuperscript{\textturnr} +U+02B5 \textsuperscript{\textturnrrtail} +U+02B6 \textsuperscript{\textinvscr} +U+02B7 \textsuperscript{w} +U+02B8 \textsuperscript{y} +U+02B9 \textceltpal{} +U+02BA \textceltpal\textceltpal{} +U+02E5 \tone{55} +U+02E6 \tone{44} +U+02E7 \tone{33} +U+02E8 \tone{22} +U+02E9 \tone{11} + +U+2010 - +U+2011 - +U+2012 -- +U+2013 -- +U+2014 --- +U+2018 ` +U+2019 ' +U+201A \quotesinglbase{} +U+201C `` +U+201D '' +U+201E \quotedblbase{} +U+2020 \dag{} +U+2021 \ddag{} +U+2022 \textbullet{} +U+2024 . +U+2025 .. +U+2026 \ldots{} +U+2027 \textperiodcentered{} +U+2030 \textperthousand{} +U+2031 \textpertenthousand{} +U+2032 \ensuremath{\prime} +U+2033 \ensuremath{\prime\prime} +U+2034 \ensuremath{\prime\prime\prime} +U+2039 \guilsinglleft{} +U+203A \guilsinglright{} +U+203B \textreferencemark{} +U+203C !! +U+203D \textinterrobang{} +U+203E \textmacron{} +U+2045 \textlquill{} +U+2046 \textrquill{} + +U+20AC \euro{} + +U+2100 \ensuremath{{}^a\!/\!_c} +U+2101 \ensuremath{{}^a\!/\!_s} +U+2105 \ensuremath{{}^c\!/\!_o} +U+2106 \ensuremath{{}^c\!/\!_u} +U+2116 N\textordmasculine{} +U+2120 \textservicemark{} +U+2121 \ensuremath{{}^\mathrm{TEL}} +U+2122 \texttrademark{} +U+2135 \ensuremath{\aleph} + +U+2153 \ensuremath{{}^1\!/\!_3} +U+2154 \ensuremath{{}^2\!/\!_3} +U+2155 \ensuremath{{}^1\!/\!_5} +U+2156 \ensuremath{{}^2\!/\!_5} +U+2157 \ensuremath{{}^3\!/\!_5} +U+2158 \ensuremath{{}^4\!/\!_5} +U+2159 \ensuremath{{}^1\!/\!_6} +U+215A \ensuremath{{}^5\!/\!_6} +U+215B \ensuremath{{}^1\!/\!_8} +U+215C \ensuremath{{}^3\!/\!_8} +U+215D \ensuremath{{}^5\!/\!_8} +U+215E \ensuremath{{}^7\!/\!_8} +U+215F \ensuremath{{}^1\!/} +U+2160 I +U+2161 II +U+2162 III +U+2163 IV +U+2164 V +U+2165 VI +U+2166 VII +U+2167 VIII +U+2168 IX +U+2169 X +U+216A XI +U+216B XII +U+216C L +U+216D C +U+216E D +U+216F M +U+2170 i +U+2171 ii +U+2172 iii +U+2173 iv +U+2174 v +U+2175 vi +U+2176 vii +U+2177 viii +U+2178 ix +U+2179 x +U+217A xi +U+217B xii +U+217C l +U+217D c +U+217E d +U+217F m + +U+FB00 ff +U+FB01 fi +U+FB02 fl +U+FB03 ffi +U+FB04 ffl diff --git a/support/utf2any/maps/rfc-1345-16-obsolete.map b/support/utf2any/maps/rfc-1345-16-obsolete.map new file mode 100644 index 0000000000..623a582d9a --- /dev/null +++ b/support/utf2any/maps/rfc-1345-16-obsolete.map @@ -0,0 +1,1643 @@ +# RFC-1345 +# range: U+0100 - U+FFFF +# +# RFC-1345 seems to contain quite a lot of errors. +# You should probably use the file rfc-1345-16.map instead. + +U+0100 &A- +U+0101 &a- +U+0102 &A( +U+0103 &a( +U+0104 &A; +U+0105 &a; +U+0106 &C' +U+0107 &c' +U+0108 &C> +U+0109 &c> +U+010A &C. +U+010B &c. +U+010C &C< +U+010D &c< +U+010E &D< +U+010F &d< +U+0110 &D/ +U+0111 &d/ +U+0112 &E- +U+0113 &e- +U+0114 &E( +U+0115 &e( +U+0116 &E. +U+0117 &e. +U+0118 &E; +U+0119 &e; +U+011A &E< +U+011B &e< +U+011C &G> +U+011D &g> +U+011E &G( +U+011F &g( +U+0120 &G. +U+0121 &g. +U+0122 &G, +U+0123 &g, +U+0124 &H> +U+0125 &h> +U+0126 &H/ +U+0127 &h/ +U+0128 &I? +U+0129 &i? +U+012A &I- +U+012B &i- +U+012C &I( +U+012D &i( +U+012E &I; +U+012F &i; +U+0130 &I. +U+0131 &i. +U+0132 &IJ +U+0133 &ij +U+0134 &J> +U+0135 &j> +U+0136 &K, +U+0137 &k, +U+0138 &kk +U+0139 &L' +U+013A &l' +U+013B &L, +U+013C &l, +U+013D &L< +U+013E &l< +U+013F &L. +U+0140 &l. +U+0141 &L/ +U+0142 &l/ +U+0143 &N' +U+0144 &n' +U+0145 &N, +U+0146 &n, +U+0147 &N< +U+0148 &n< +U+0149 &'n +U+014A &NG +U+014B &ng +U+014C &O- +U+014D &o- +U+014E &O( +U+014F &o( +U+0150 &O" +U+0151 &o" +U+0152 &OE +U+0153 &oe +U+0154 &R' +U+0155 &r' +U+0156 &R, +U+0157 &r, +U+0158 &R< +U+0159 &r< +U+015A &S' +U+015B &s' +U+015C &S> +U+015D &s> +U+015E &S, +U+015F &s, +U+0160 &S< +U+0161 &s< +U+0162 &T, +U+0163 &t, +U+0164 &T< +U+0165 &t< +U+0166 &T/ +U+0167 &t/ +U+0168 &U? +U+0169 &u? +U+016A &U- +U+016B &u- +U+016C &U( +U+016D &u( +U+016E &U0 +U+016F &u0 +U+0170 &U" +U+0171 &u" +U+0172 &U; +U+0173 &u; +U+0174 &W> +U+0175 &w> +U+0176 &Y> +U+0177 &y> +U+0178 &Y: +U+0179 &Z' +U+017A &z' +U+017B &Z. +U+017C &z. +U+017D &Z< +U+017E &z< +U+01A0 &O9 +U+01A1 &o9 +U+01A2 &OI +U+01A3 &oi +U+01A6 &yr +U+01AF &U9 +U+01B0 &u9 +U+01B5 &Z/ +U+01B6 &z/ +U+01B7 &ED +U+01CD &A< +U+01CE &a< +U+01CF &I< +U+01D0 &i< +U+01D1 &O< +U+01D2 &o< +U+01D3 &U< +U+01D4 &u< +U+01D5 &_U:-_ +U+01D6 &_u:-_ +U+01D7 &_U:'_ +U+01D8 &_u:'_ +U+01D9 &_U:<_ +U+01DA &_u:<_ +U+01DB &_U:!_ +U+01DC &_u:!_ +U+01DE &A1 +U+01DF &a1 +U+01E0 &A7 +U+01E1 &a7 +U+01E2 &A3 +U+01E3 &a3 +U+01E4 &G/ +U+01E5 &g/ +U+01E6 &G< +U+01E7 &g< +U+01E8 &K< +U+01E9 &k< +U+01EA &O; +U+01EB &o; +U+01EC &O1 +U+01ED &o1 +U+01EE &EZ +U+01EF &ez +U+01F0 &j< +U+01F4 &G' +U+01F5 &g' +U+01FA &_AA'_ +U+01FB &_aa'_ +U+01FC &_AE'_ +U+01FD &_ae'_ +U+01FE &_O/'_ +U+01FF &_o/'_ +U+02BF &;S +U+02C7 &'< +U+02D8 &'( +U+02D9 &'. +U+02DA &'0 +U+02DB &'; +U+02DD &'" +U+0386 &A% +U+0388 &E% +U+0389 &Y% +U+038A &I% +U+038C &O% +U+038E &U% +U+038F &W% +U+0390 &i3 +U+0391 &A* +U+0392 &B* +U+0393 &G* +U+0394 &D* +U+0395 &E* +U+0396 &Z* +U+0397 &Y* +U+0398 &H* +U+0399 &I* +U+039A &K* +U+039B &L* +U+039C &M* +U+039D &N* +U+039E &C* +U+039F &O* +U+03A0 &P* +U+03A1 &R* +U+03A3 &S* +U+03A4 &T* +U+03A5 &U* +U+03A6 &F* +U+03A7 &X* +U+03A8 &Q* +U+03A9 &W* +U+03AA &J* +U+03AB &V* +U+03AC &a% +U+03AD &e% +U+03AE &y% +U+03AF &i% +U+03B0 &u3 +U+03B1 &a* +U+03B2 &b* +U+03B3 &g* +U+03B4 &d* +U+03B5 &e* +U+03B6 &z* +U+03B7 &y* +U+03B8 &h* +U+03B9 &i* +U+03BA &k* +U+03BB &l* +U+03BC &m* +U+03BD &n* +U+03BE &c* +U+03BF &o* +U+03C0 &p* +U+03C1 &r* +U+03C2 &*s +U+03C3 &s* +U+03C4 &t* +U+03C5 &u* +U+03C6 &f* +U+03C7 &x* +U+03C8 &q* +U+03C9 &w* +U+03CA &j* +U+03CB &v* +U+03CC &o% +U+03CD &u% +U+03CE &w% +U+03D8 &'G +U+03D9 &,G +U+03DA &T3 +U+03DB &t3 +U+03DC &M3 +U+03DD &m3 +U+03DE &K3 +U+03DF &k3 +U+03E0 &P3 +U+03E1 &p3 +U+03F4 &'% +U+03F5 &j3 +U+0401 &IO +U+0402 &D% +U+0403 &G% +U+0404 &IE +U+0405 &DS +U+0406 &II +U+0407 &YI +U+0408 &J% +U+0409 &LJ +U+040A &NJ +U+040B &Ts +U+040C &KJ +U+040E &V% +U+040F &DZ +U+0410 &A= +U+0411 &B= +U+0412 &V= +U+0413 &G= +U+0414 &D= +U+0415 &E= +U+0416 &Z% +U+0417 &Z= +U+0418 &I= +U+0419 &J= +U+041A &K= +U+041B &L= +U+041C &M= +U+041D &N= +U+041E &O= +U+041F &P= +U+0420 &R= +U+0421 &S= +U+0422 &T= +U+0423 &U= +U+0424 &F= +U+0425 &H= +U+0426 &C= +U+0427 &C% +U+0428 &S% +U+0429 &Sc +U+042A &=" +U+042B &Y= +U+042C &%" +U+042D &JE +U+042E &JU +U+042F &JA +U+0430 &a= +U+0431 &b= +U+0432 &v= +U+0433 &g= +U+0434 &d= +U+0435 &e= +U+0436 &z% +U+0437 &z= +U+0438 &i= +U+0439 &j= +U+043A &k= +U+043B &l= +U+043C &m= +U+043D &n= +U+043E &o= +U+043F &p= +U+0440 &r= +U+0441 &s= +U+0442 &t= +U+0443 &u= +U+0444 &f= +U+0445 &h= +U+0446 &c= +U+0447 &c% +U+0448 &s% +U+0449 &sc +U+044A &=' +U+044B &y= +U+044C &%' +U+044D &je +U+044E &ju +U+044F &ja +U+0451 &io +U+0452 &d% +U+0453 &g% +U+0454 &ie +U+0455 &ds +U+0456 &ii +U+0457 &yi +U+0458 &j% +U+0459 &lj +U+045A &nj +U+045B &ts +U+045C &kj +U+045E &v% +U+045F &dz +U+0462 &Y3 +U+0463 &y3 +U+046A &O3 +U+046B &o3 +U+0472 &F3 +U+0473 &f3 +U+0474 &V3 +U+0475 &v3 +U+0480 &C3 +U+0481 &c3 +U+0490 &G3 +U+0491 &g3 +U+05D0 &A+ +U+05D1 &B+ +U+05D2 &G+ +U+05D3 &D+ +U+05D4 &H+ +U+05D5 &W+ +U+05D6 &Z+ +U+05D7 &X+ +U+05D8 &Tj +U+05D9 &J+ +U+05DA &K% +U+05DB &K+ +U+05DC &L+ +U+05DD &M% +U+05DE &M+ +U+05DF &N% +U+05E0 &N+ +U+05E1 &S+ +U+05E2 &E+ +U+05E3 &P% +U+05E4 &P+ +U+05E5 &Zj +U+05E6 &ZJ +U+05E7 &Q+ +U+05E8 &R+ +U+05E9 &Sh +U+05EA &T+ +U+060C &,+ +U+061B &;+ +U+061F &?+ +U+0621 &H' +U+0622 &aM +U+0623 &aH +U+0624 &wH +U+0625 &ah +U+0626 &yH +U+0627 &a+ +U+0628 &b+ +U+0629 &tm +U+062A &t+ +U+062B &tk +U+062C &g+ +U+062D &hk +U+062E &x+ +U+062F &d+ +U+0630 &dk +U+0631 &r+ +U+0632 &z+ +U+0633 &s+ +U+0634 &sn +U+0635 &c+ +U+0636 &dd +U+0637 &tj +U+0638 &zH +U+0639 &e+ +U+063A &i+ +U+0640 &++ +U+0641 &f+ +U+0642 &q+ +U+0643 &k+ +U+0644 &l+ +U+0645 &m+ +U+0646 &n+ +U+0647 &h+ +U+0648 &w+ +U+0649 &j+ +U+064A &y+ +U+064B &:+ +U+064C &"+ +U+064D &=+ +U+064E &/+ +U+064F &'+ +U+0650 &1+ +U+0651 &3+ +U+0652 &0+ +U+0670 &aS +U+067E &p+ +U+06A4 &v+ +U+06AF &gf +U+06F0 &0a +U+06F1 &1a +U+06F2 &2a +U+06F3 &3a +U+06F4 &4a +U+06F5 &5a +U+06F6 &6a +U+06F7 &7a +U+06F8 &8a +U+06F9 &9a +U+1E00 &_A-0_ +U+1E01 &_a-0_ +U+1E02 &B. +U+1E03 &b. +U+1E04 &_B-._ +U+1E05 &_b-._ +U+1E06 &B_ +U+1E07 &b_ +U+1E08 &_C,'_ +U+1E09 &_c,'_ +U+1E0A &D. +U+1E0B &d. +U+1E0C &_D-._ +U+1E0D &_d-._ +U+1E0E &D_ +U+1E0F &d_ +U+1E10 &D, +U+1E11 &d, +U+1E12 &_D->_ +U+1E13 &_d->_ +U+1E14 &_E-!_ +U+1E15 &_e-!_ +U+1E16 &_E-'_ +U+1E17 &_e-'_ +U+1E18 &_E->_ +U+1E19 &_e->_ +U+1E1A &_E-?_ +U+1E1B &_e-?_ +U+1E1C &_E,(_ +U+1E1D &_e,(_ +U+1E1E &F. +U+1E1F &f. +U+1E20 &G- +U+1E21 &g- +U+1E22 &H. +U+1E23 &h. +U+1E24 &_H-._ +U+1E25 &_h-._ +U+1E26 &H: +U+1E27 &h: +U+1E28 &H, +U+1E29 &h, +U+1E2A &_H-(_ +U+1E2B &_h-(_ +U+1E2C &_I-?_ +U+1E2D &_i-?_ +U+1E2E &_I:'_ +U+1E2F &_i:'_ +U+1E30 &K' +U+1E31 &k' +U+1E32 &_K-._ +U+1E33 &_k-._ +U+1E34 &K_ +U+1E35 &k_ +U+1E36 &_L-._ +U+1E37 &_l-._ +U+1E38 &_L--._ +U+1E39 &_l--._ +U+1E3A &L_ +U+1E3B &l_ +U+1E3C &_L->_ +U+1E3D &_l->_ +U+1E3E &M' +U+1E3F &m' +U+1E40 &M. +U+1E41 &m. +U+1E42 &_M-._ +U+1E43 &_m-._ +U+1E44 &N. +U+1E45 &n. +U+1E46 &_N-._ +U+1E47 &_n-._ +U+1E48 &N_ +U+1E49 &n_ +U+1E4A &_N->_ +U+1E4B &_N->_ +U+1E4C &_O?'_ +U+1E4D &_o?'_ +U+1E4E &_O?:_ +U+1E4F &_o?:_ +U+1E50 &_O-!_ +U+1E51 &_o-!_ +U+1E52 &_O-'_ +U+1E53 &_o-'_ +U+1E54 &P' +U+1E55 &p' +U+1E56 &P. +U+1E57 &p. +U+1E58 &R. +U+1E59 &r. +U+1E5A &_R-._ +U+1E5B &_r-._ +U+1E5C &_R--._ +U+1E5D &_r--._ +U+1E5E &R_ +U+1E5F &r_ +U+1E60 &S. +U+1E61 &s. +U+1E62 &_S-._ +U+1E63 &_s-._ +U+1E64 &_S'._ +U+1E65 &_s'._ +U+1E66 &_S<._ +U+1E67 &_s<._ +U+1E68 &_S.-._ +U+1E69 &_S.-._ +U+1E6A &T. +U+1E6B &t. +U+1E6C &_T-._ +U+1E6D &_t-._ +U+1E6E &T_ +U+1E6F &t_ +U+1E70 &_T->_ +U+1E71 &_t->_ +U+1E72 &_U--:_ +U+1E73 &_u--:_ +U+1E74 &_U-?_ +U+1E75 &_u-?_ +U+1E76 &_U->_ +U+1E77 &_u->_ +U+1E78 &_U?'_ +U+1E79 &_u?'_ +U+1E7A &_U-:_ +U+1E7B &_u-:_ +U+1E7C &V? +U+1E7D &v? +U+1E7E &_V-._ +U+1E7F &_v-._ +U+1E80 &W! +U+1E81 &w! +U+1E82 &W' +U+1E83 &w' +U+1E84 &W: +U+1E85 &w: +U+1E86 &W. +U+1E87 &w. +U+1E88 &_W-._ +U+1E89 &_w-._ +U+1E8A &X. +U+1E8B &x. +U+1E8C &X: +U+1E8D &x: +U+1E8E &Y. +U+1E8F &y. +U+1E90 &Z> +U+1E91 &z> +U+1E92 &_Z-._ +U+1E93 &_z-._ +U+1E94 &Z_ +U+1E95 &z_ +U+1E96 &h_ +U+1E97 &t: +U+1E98 &w0 +U+1E99 &y0 +U+1EA0 &_A-._ +U+1EA1 &_a-._ +U+1EA2 &A2 +U+1EA3 &a2 +U+1EA4 &_A>'_ +U+1EA5 &_a>'_ +U+1EA6 &_A>!_ +U+1EA7 &_a>!_ +U+1EA8 &_A>2_ +U+1EA9 &_a>2_ +U+1EAA &_A>?_ +U+1EAB &_a>?_ +U+1EAC &_A>-._ +U+1EAD &_a>-._ +U+1EAE &_A('_ +U+1EAF &_a('_ +U+1EB0 &_A(!_ +U+1EB1 &_a(!_ +U+1EB2 &_A(2_ +U+1EB3 &_a(2_ +U+1EB4 &_A(?_ +U+1EB5 &_a(?_ +U+1EB6 &_A(-._ +U+1EB7 &_a(-._ +U+1EB8 &_E-._ +U+1EB9 &_e-._ +U+1EBA &E2 +U+1EBB &e2 +U+1EBC &E? +U+1EBD &e? +U+1EBE &_E>'_ +U+1EBF &_e>'_ +U+1EC0 &_E>!_ +U+1EC1 &_e>!_ +U+1EC2 &_E>2_ +U+1EC3 &_e>2_ +U+1EC4 &_E>?_ +U+1EC5 &_e>?_ +U+1EC6 &_E>-._ +U+1EC7 &_e>-._ +U+1EC8 &I2 +U+1EC9 &i2 +U+1ECA &_I-._ +U+1ECB &_i-._ +U+1ECC &_O-._ +U+1ECD &_o-._ +U+1ECE &O2 +U+1ECF &o2 +U+1ED0 &_O>'_ +U+1ED1 &_o>'_ +U+1ED2 &_O>!_ +U+1ED3 &_o>!_ +U+1ED4 &_O>2_ +U+1ED5 &_o>2_ +U+1ED6 &_O>?_ +U+1ED7 &_o>?_ +U+1ED8 &_O>-._ +U+1ED9 &_o>-._ +U+1EDA &_O9'_ +U+1EDB &_o9'_ +U+1EDC &_O9!_ +U+1EDD &_o9!_ +U+1EDE &_O92_ +U+1EDF &_o92_ +U+1EE0 &_O9?_ +U+1EE1 &_o9?_ +U+1EE2 &_O9-._ +U+1EE3 &_o9-._ +U+1EE4 &_U-._ +U+1EE5 &_u-._ +U+1EE6 &U2 +U+1EE7 &u2 +U+1EE8 &_U9'_ +U+1EE9 &_u9'_ +U+1EEA &_U9!_ +U+1EEB &_u9!_ +U+1EEC &_U92_ +U+1EED &_u92_ +U+1EEE &_U9?_ +U+1EEF &_u9?_ +U+1EF0 &_U9-._ +U+1EF1 &_u9-._ +U+1EF2 &Y! +U+1EF3 &y! +U+1EF4 &_Y-._ +U+1EF5 &_y-._ +U+1EF6 &Y2 +U+1EF7 &y2 +U+1EF8 &Y? +U+1EF9 &y? +U+1F00 &;' +U+1F01 &,' +U+1F02 &;! +U+1F03 &,! +U+1F04 &?; +U+1F05 &?, +U+1F06 &!: +U+1F07 &?: +U+2002 &1N +U+2003 &1M +U+2004 &3M +U+2005 &4M +U+2006 &6M +U+2009 &1T +U+200A &1H +U+2010 &-1 +U+2013 &-N +U+2014 &-M +U+2015 &-3 +U+2016 &!2 +U+2017 &=2 +U+2018 &'6 +U+2019 &'9 +U+201A &.9 +U+201B &9' +U+201C &"6 +U+201D &"9 +U+201E &:9 +U+201F &9" +U+2020 &/- +U+2021 &/= +U+2025 &.. +U+2030 &%0 +U+2032 &1' +U+2033 &2' +U+2034 &3' +U+2035 &1" +U+2036 &2" +U+2037 &3" +U+2038 &Ca +U+2039 &<1 +U+203A &>1 +U+203B &:X +U+203C &_!*2_ +U+203E &'- +U+2044 &/f +U+2070 &0S +U+2074 &4S +U+2075 &5S +U+2076 &6S +U+2077 &7S +U+2078 &8S +U+2079 &9S +U+207A &+S +U+207B &-S +U+207C &=S +U+207D &(S +U+207E &)S +U+207F &nS +U+2080 &0s +U+2081 &1s +U+2082 &2s +U+2083 &3s +U+2084 &4s +U+2085 &5s +U+2086 &6s +U+2087 &7s +U+2088 &8s +U+2089 &9s +U+208A &+s +U+208B &-s +U+208C &=s +U+208D &(s +U+208E &)s +U+20A4 &Li +U+20A7 &Pt +U+20A9 &W= +U+2103 &oC +U+2105 &co +U+2109 &oF +U+2116 &N0 +U+2117 &PO +U+211E &Rx +U+2120 &SM +U+2122 &TM +U+2126 &Om +U+212B &AO +U+2153 &13 +U+2154 &23 +U+2155 &15 +U+2156 &25 +U+2157 &35 +U+2158 &45 +U+2159 &16 +U+215A &56 +U+215B &18 +U+215C &38 +U+215D &58 +U+215E &78 +U+2160 &1R +U+2161 &2R +U+2162 &3R +U+2163 &4R +U+2164 &5R +U+2165 &6R +U+2166 &7R +U+2167 &8R +U+2168 &9R +U+2169 &aR +U+216A &bR +U+216B &cR +U+216C &_50R_ +U+216D &_100R_ +U+216E &_500R_ +U+216F &_1000R_ +U+2170 &1r +U+2171 &2r +U+2172 &3r +U+2173 &4r +U+2174 &5r +U+2175 &6r +U+2176 &7r +U+2177 &8r +U+2178 &9r +U+2179 &ar +U+217A &br +U+217B &cr +U+217C &_50r_ +U+217D &_100r_ +U+217E &_500r_ +U+217F &_1000r_ +U+2180 &_1000RCD_ +U+2181 &_5000R_ +U+2182 &_10000R_ +U+2190 &<- +U+2191 &-! +U+2192 &-> +U+2193 &-v +U+2194 &<> +U+2195 &UD +U+2196 &__ +U+2198 &_!!>_ +U+2199 &_ +U+21D4 &== +U+2200 &FA +U+2202 &dP +U+2203 &TE +U+2205 &/0 +U+2206 &DE +U+2207 &NB +U+2208 &(- +U+220B &-) +U+220F &*P +U+2211 &+Z +U+2212 &-2 +U+2213 &-+ +U+2217 &*- +U+2218 &Ob +U+2219 &Sb +U+221A &RT +U+221D &0( +U+221E &00 +U+221F &-L +U+2220 &-V +U+2225 &PP +U+2227 &AN +U+2228 &OR +U+2229 &(U +U+222A &)U +U+222B &In +U+222C &DI +U+222E &Io +U+2234 &.: +U+2235 &:. +U+2236 &:R +U+2237 &:: +U+223C &?1 +U+223E &CG +U+2243 &?- +U+2245 &?= +U+2248 &?2 +U+224C &=? +U+2253 &HI +U+2260 &!= +U+2261 &=3 +U+2264 &=< +U+2265 &>= +U+226A &<* +U+226B &*> +U+226E &!< +U+226F &!> +U+2282 &(C +U+2283 &)C +U+2286 &(_ +U+2287 &)_ +U+2299 &0. +U+229A &02 +U+22A5 &-T +U+22C5 &.P +U+22EE &:3 +U+22EF &.3 +U+2302 &Eh +U+2308 &<7 +U+2309 &>7 +U+230A &7< +U+230B &7> +U+2310 &NI +U+2312 &(A +U+2315 &TR +U+2320 &Iu +U+2321 &Il +U+2329 & +U+2423 &Vs +U+2440 &1h +U+2441 &3h +U+2442 &2h +U+2443 &4h +U+2446 &1j +U+2447 &2j +U+2448 &3j +U+2449 &4j +U+2460 &_1-o_ +U+2461 &_2-o_ +U+2462 &_3-o_ +U+2463 &_4-o_ +U+2464 &_5-o_ +U+2465 &_6-o_ +U+2466 &_7-o_ +U+2467 &_8-o_ +U+2468 &_9-o_ +U+2469 &_10-o_ +U+246A &_11-o_ +U+246B &_12-o_ +U+246C &_13-o_ +U+246D &_14-o_ +U+246E &_15-o_ +U+246F &_16-o_ +U+2470 &_17-o_ +U+2471 &_18-o_ +U+2472 &_19-o_ +U+2473 &_20-o_ +U+2474 &_(1)_ +U+2475 &_(2)_ +U+2476 &_(3)_ +U+2477 &_(4)_ +U+2478 &_(5)_ +U+2479 &_(6)_ +U+247A &_(7)_ +U+247B &_(8)_ +U+247C &_(9)_ +U+247D &_(10)_ +U+247E &_(11)_ +U+247F &_(12)_ +U+2480 &_(13)_ +U+2481 &_(14)_ +U+2482 &_(15)_ +U+2483 &_(16)_ +U+2484 &_(17)_ +U+2485 &_(18)_ +U+2486 &_(19)_ +U+2487 &_(20)_ +U+2488 &1. +U+2489 &2. +U+248A &3. +U+248B &4. +U+248C &5. +U+248D &6. +U+248E &7. +U+248F &8. +U+2490 &9. +U+2491 &_10._ +U+2492 &_11._ +U+2493 &_12._ +U+2494 &_13._ +U+2495 &_14._ +U+2496 &_15._ +U+2497 &_16._ +U+2498 &_17._ +U+2499 &_18._ +U+249A &_19._ +U+249B &_20._ +U+249C &_(a)_ +U+249D &_(b)_ +U+249E &_(c)_ +U+249F &_(d)_ +U+24A0 &_(e)_ +U+24A1 &_(f)_ +U+24A2 &_(g)_ +U+24A3 &_(h)_ +U+24A4 &_(i)_ +U+24A5 &_(j)_ +U+24A6 &_(k)_ +U+24A7 &_(l)_ +U+24A8 &_(m)_ +U+24A9 &_(n)_ +U+24AA &_(o)_ +U+24AB &_(p)_ +U+24AC &_(q)_ +U+24AD &_(r)_ +U+24AE &_(s)_ +U+24AF &_(t)_ +U+24B0 &_(u)_ +U+24B1 &_(v)_ +U+24B2 &_(w)_ +U+24B3 &_(x)_ +U+24B4 &_(y)_ +U+24B5 &_(z)_ +U+24B6 &_A-o_ +U+24B7 &_B-o_ +U+24B8 &_C-o_ +U+24B9 &_D-o_ +U+24BA &_E-o_ +U+24BB &_F-o_ +U+24BC &_G-o_ +U+24BD &_H-o_ +U+24BE &_I-o_ +U+24BF &_J-o_ +U+24C0 &_K-o_ +U+24C1 &_L-o_ +U+24C2 &_M-o_ +U+24C3 &_N-o_ +U+24C4 &_O-o_ +U+24C5 &_P-o_ +U+24C6 &_Q-o_ +U+24C7 &_R-o_ +U+24C8 &_S-o_ +U+24C9 &_T-o_ +U+24CA &_U-o_ +U+24CB &_V-o_ +U+24CC &_W-o_ +U+24CD &_X-o_ +U+24CE &_Y-o_ +U+24CF &_Z-o_ +U+24D0 &_a-o_ +U+24D1 &_b-o_ +U+24D2 &_c-o_ +U+24D3 &_d-o_ +U+24D4 &_e-o_ +U+24D5 &_f-o_ +U+24D6 &_g-o_ +U+24D7 &_h-o_ +U+24D8 &_i-o_ +U+24D9 &_j-o_ +U+24DA &_k-o_ +U+24DB &_l-o_ +U+24DC &_m-o_ +U+24DD &_n-o_ +U+24DE &_o-o_ +U+24DF &_p-o_ +U+24E0 &_q-o_ +U+24E1 &_r-o_ +U+24E2 &_s-o_ +U+24E3 &_t-o_ +U+24E4 &_u-o_ +U+24E5 &_v-o_ +U+24E6 &_w-o_ +U+24E7 &_x-o_ +U+24E8 &_y-o_ +U+24E9 &_z-o_ +U+24EA &_0-o_ +U+2500 &hh +U+2501 &HH +U+2502 &vv +U+2503 &VV +U+2504 &3- +U+2505 &3_ +U+2506 &3! +U+2507 &3/ +U+2508 &4- +U+2509 &4_ +U+250A &4! +U+250B &4/ +U+250C &dr +U+250D &dR +U+250E &Dr +U+250F &DR +U+2510 &dl +U+2511 &dL +U+2512 &Dl +U+2513 &LD +U+2514 &ur +U+2515 &uR +U+2516 &Ur +U+2517 &UR +U+2518 &ul +U+2519 &uL +U+251A &Ul +U+251B &UL +U+251C &vr +U+251D &vR +U+251E &_Udr_ +U+251F &_uDr_ +U+2520 &Vr +U+2521 &_UdR_ +U+2522 &_uDR_ +U+2523 &VR +U+2524 &vl +U+2525 &vL +U+2526 &_Udl_ +U+2527 &_uDl_ +U+2528 &Vl +U+2529 &_UdL_ +U+252A &_uDL_ +U+252B &VL +U+252C &dh +U+252D &_dLr_ +U+252E &_dlR_ +U+252F &dH +U+2530 &Dh +U+2531 &_DLr_ +U+2532 &_DlR_ +U+2533 &DH +U+2534 &uh +U+2535 &_uLr_ +U+2536 &_ulR_ +U+2537 &uH +U+2538 &Uh +U+2539 &_ULr_ +U+253A &_UlR_ +U+253B &UH +U+253C &vh +U+253D &_vLr_ +U+253E &_vlR_ +U+253F &vH +U+2540 &_Udh_ +U+2541 &_uDh_ +U+2542 &Vh +U+2543 &_UdLr_ +U+2544 &_UdlR_ +U+2545 &_uDLr_ +U+2546 &_uDlR_ +U+2547 &_UdH_ +U+2548 &_uDH_ +U+2549 &_VLr_ +U+254A &_VlR_ +U+254B &VH +U+2571 &FD +U+2572 &BD +U+2580 &TB +U+2584 &LB +U+2588 &FB +U+258C &lB +U+2590 &RB +U+2591 &.S +U+2592 &:S +U+2593 &?S +U+25A0 &fS +U+25A1 &OS +U+25A2 &RO +U+25A3 &Rr +U+25A4 &RF +U+25A5 &RY +U+25A6 &RH +U+25A7 &RZ +U+25A8 &RK +U+25A9 &RX +U+25AA &sB +U+25AC &SR +U+25AD &Or +U+25B2 &UT +U+25B3 &uT +U+25B6 &PR +U+25B7 &Tr +U+25BC &Dt +U+25BD &dT +U+25C0 &PL +U+25C1 &Tl +U+25C6 &Db +U+25C7 &Dw +U+25CA &LZ +U+25CB &0m +U+25CE &0o +U+25CF &0M +U+25D0 &0L +U+25D1 &0R +U+25D8 &Sn +U+25D9 &Ic +U+25E2 &Fd +U+25E3 &Bd +U+2605 &*2 +U+2606 &*1 +U+260E &_TEL_ +U+260F &_tel_ +U+261C &H +U+263A &0u +U+263B &0U +U+263C &SU +U+2640 &Fm +U+2642 &Ml +U+2660 &cS +U+2661 &cH +U+2662 &cD +U+2663 &cC +U+2664 &_cS-_ +U+2665 &_cH-_ +U+2666 &_cD-_ +U+2667 &_cC-_ +U+2669 &Md +U+266A &M8 +U+266B &M2 +U+266C &_M16_ +U+266D &Mb +U+266E &Mx +U+266F &MX +U+2713 &OK +U+2717 &XX +U+2720 &-X +U+3000 &IS +U+3001 &,_ +U+3002 &._ +U+3003 &+" +U+3004 &+_ +U+3005 &*_ +U+3006 &;_ +U+3007 &0_ +U+300A &<+ +U+300B &>+ +U+300C &<' +U+300D &>' +U+300E &<" +U+300F &>" +U+3010 &(" +U+3011 &)" +U+3012 &=T +U+3013 &=_ +U+3014 &(' +U+3015 &)' +U+3016 &(I +U+3017 &)I +U+301C &-? +U+3020 &_=T:)_ +U+3041 &A5 +U+3042 &a5 +U+3043 &I5 +U+3044 &i5 +U+3045 &U5 +U+3046 &u5 +U+3047 &E5 +U+3048 &e5 +U+3049 &O5 +U+304A &o5 +U+304B &ka +U+304C &ga +U+304D &ki +U+304E &gi +U+304F &ku +U+3050 &gu +U+3051 &ke +U+3052 &ge +U+3053 &ko +U+3054 &go +U+3055 &sa +U+3056 &za +U+3057 &si +U+3058 &zi +U+3059 &su +U+305A &zu +U+305B &se +U+305C &ze +U+305D &so +U+305E &zo +U+305F &ta +U+3060 &da +U+3061 &ti +U+3062 &di +U+3063 &tU +U+3064 &tu +U+3065 &du +U+3066 &te +U+3067 &de +U+3068 &to +U+3069 &do +U+306A &na +U+306B &ni +U+306C &nu +U+306D &ne +U+306E &no +U+306F &ha +U+3070 &ba +U+3071 &pa +U+3072 &hi +U+3073 &bi +U+3074 &pi +U+3075 &hu +U+3076 &bu +U+3077 &pu +U+3078 &he +U+3079 &be +U+307A &pe +U+307B &ho +U+307C &bo +U+307D &po +U+307E &ma +U+307F &mi +U+3080 &mu +U+3081 &me +U+3082 &mo +U+3083 &yA +U+3084 &ya +U+3085 &yU +U+3086 &yu +U+3087 &yO +U+3088 &yo +U+3089 &ra +U+308A &ri +U+308B &ru +U+308C &re +U+308D &ro +U+308E &wA +U+308F &wa +U+3090 &wi +U+3091 &we +U+3092 &wo +U+3093 &n5 +U+3094 &vu +U+309B &"5 +U+309C &05 +U+309D &*5 +U+309E &+5 +U+30A1 &a6 +U+30A2 &A6 +U+30A3 &i6 +U+30A4 &I6 +U+30A5 &u6 +U+30A6 &U6 +U+30A7 &e6 +U+30A8 &E6 +U+30A9 &o6 +U+30AA &O6 +U+30AB &Ka +U+30AC &Ga +U+30AD &Ki +U+30AE &Gi +U+30AF &Ku +U+30B0 &Gu +U+30B1 &Ke +U+30B2 &Ge +U+30B3 &Ko +U+30B4 &Go +U+30B5 &Sa +U+30B6 &Za +U+30B7 &Si +U+30B8 &Zi +U+30B9 &Su +U+30BA &Zu +U+30BB &Se +U+30BC &Ze +U+30BD &So +U+30BE &Zo +U+30BF &Ta +U+30C0 &Da +U+30C1 &Ti +U+30C2 &Di +U+30C3 &TU +U+30C4 &Tu +U+30C5 &Du +U+30C6 &Te +U+30C7 &De +U+30C8 &To +U+30C9 &Do +U+30CA &Na +U+30CB &Ni +U+30CC &Nu +U+30CD &Ne +U+30CE &No +U+30CF &Ha +U+30D0 &Ba +U+30D1 &Pa +U+30D2 &Hi +U+30D3 &Bi +U+30D4 &Pi +U+30D5 &Hu +U+30D6 &Bu +U+30D7 &Pu +U+30D8 &He +U+30D9 &Be +U+30DA &Pe +U+30DB &Ho +U+30DC &Bo +U+30DD &Po +U+30DE &Ma +U+30DF &Mi +U+30E0 &Mu +U+30E1 &Me +U+30E2 &Mo +U+30E3 &YA +U+30E4 &Ya +U+30E5 &YU +U+30E6 &Yu +U+30E7 &YO +U+30E8 &Yo +U+30E9 &Ra +U+30EA &Ri +U+30EB &Ru +U+30EC &Re +U+30ED &Ro +U+30EE &WA +U+30EF &Wa +U+30F0 &Wi +U+30F1 &We +U+30F2 &Wo +U+30F3 &N6 +U+30F4 &Vu +U+30F5 &KA +U+30F6 &KE +U+30F7 &Va +U+30F8 &Vi +U+30F9 &Ve +U+30FA &Vo +U+30FB &.6 +U+30FC &-6 +U+30FD &*6 +U+30FE &+6 +U+3105 &b4 +U+3106 &p4 +U+3107 &m4 +U+3108 &f4 +U+3109 &d4 +U+310A &t4 +U+310B &n4 +U+310C &l4 +U+310D &g4 +U+310E &k4 +U+310F &h4 +U+3110 &j4 +U+3111 &q4 +U+3112 &x4 +U+3113 &zh +U+3114 &ch +U+3115 &sh +U+3116 &r4 +U+3117 &z4 +U+3118 &c4 +U+3119 &s4 +U+311A &a4 +U+311B &o4 +U+311C &e4 +U+311D &_eh4_ +U+311E &ai +U+311F &ei +U+3120 &au +U+3121 &ou +U+3122 &an +U+3123 &en +U+3124 &aN +U+3125 &eN +U+3126 &er +U+3127 &i4 +U+3128 &u4 +U+3129 &iu +U+312A &v4 +U+312B &nG +U+312C &gn +U+321C &_(JU)_ +U+3220 &1c +U+3221 &2c +U+3222 &3c +U+3223 &4c +U+3224 &5c +U+3225 &6c +U+3226 &7c +U+3227 &8c +U+3228 &9c +U+3229 &_10c_ +U+327F &_KSC_ +U+E001 &/c +U+E002 &UA +U+E003 &UB +U+E004 &"3 +U+E005 &"1 +U+E006 &"! +U+E007 &"' +U+E008 &"> +U+E009 &"? +U+E00A &"- +U+E00B &"( +U+E00C &". +U+E00D &": +U+E00E &"0 +U+E00F &"" +U+E010 &"< +U+E011 &", +U+E012 &"; +U+E013 &"_ +U+E014 &"= +U+E015 &"/ +U+E016 &"i +U+E017 &"d +U+E018 &"p +U+E019 &;; +U+E01A &,, +U+E01B &b3 +U+E01C &Ci +U+E01D &f( +U+E01E &ed +U+E01F &am +U+E020 &pm +U+E021 &_Tel_ +U+E022 &_a+:_ +U+E023 &Fl +U+E024 &GF +U+E025 &>V +U+E026 &!* +U+E027 &?* +U+E028 &J< +U+FB00 &ff +U+FB01 &fi +U+FB02 &fl +U+FB03 &_ffi_ +U+FB04 &_ffl_ +U+FB05 &ft +U+FB06 &st +U+FE7D &_3+;_ +U+FE82 &_aM._ +U+FE84 &_aH._ +U+FE8D &_a+-_ +U+FE8E &_a+._ +U+FE8F &_b+-_ +U+FE90 &_b+,_ +U+FE91 &_b+;_ +U+FE92 &_b+._ +U+FE93 &_tm-_ +U+FE94 &_tm._ +U+FE95 &_t+-_ +U+FE96 &_t+,_ +U+FE97 &_t+;_ +U+FE98 &_t+._ +U+FE99 &_tk-_ +U+FE9A &_tk,_ +U+FE9B &_tk;_ +U+FE9C &_tk._ +U+FE9D &_g+-_ +U+FE9E &_g+,_ +U+FE9F &_g+;_ +U+FEA0 &_g+._ +U+FEA1 &_hk-_ +U+FEA2 &_hk,_ +U+FEA3 &_hk;_ +U+FEA4 &_hk._ +U+FEA5 &_x+-_ +U+FEA6 &_x+,_ +U+FEA7 &_x+;_ +U+FEA8 &_x+._ +U+FEA9 &_d+-_ +U+FEAA &_d+._ +U+FEAB &_dk-_ +U+FEAC &_dk._ +U+FEAD &_r+-_ +U+FEAE &_r+._ +U+FEAF &_z+-_ +U+FEB0 &_z+._ +U+FEB1 &_s+-_ +U+FEB2 &_s+,_ +U+FEB3 &_s+;_ +U+FEB4 &_s+._ +U+FEB5 &_sn-_ +U+FEB6 &_sn,_ +U+FEB7 &_sn;_ +U+FEB8 &_sn._ +U+FEB9 &_c+-_ +U+FEBA &_c+,_ +U+FEBB &_c+;_ +U+FEBC &_c+._ +U+FEBD &_dd-_ +U+FEBE &_dd,_ +U+FEBF &_dd;_ +U+FEC0 &_dd._ +U+FEC1 &_tj-_ +U+FEC2 &_tj,_ +U+FEC3 &_tj;_ +U+FEC4 &_tj._ +U+FEC5 &_zH-_ +U+FEC6 &_zH,_ +U+FEC7 &_zH;_ +U+FEC8 &_zH._ +U+FEC9 &_e+-_ +U+FECA &_e+,_ +U+FECB &_e+;_ +U+FECC &_e+._ +U+FECD &_i+-_ +U+FECE &_i+,_ +U+FECF &_i+;_ +U+FED0 &_i+._ +U+FED1 &_f+-_ +U+FED2 &_f+,_ +U+FED3 &_f+;_ +U+FED4 &_f+._ +U+FED5 &_q+-_ +U+FED6 &_q+,_ +U+FED7 &_q+;_ +U+FED8 &_q+._ +U+FED9 &_k+-_ +U+FEDA &_k+,_ +U+FEDB &_k+;_ +U+FEDC &_k+._ +U+FEDD &_l+-_ +U+FEDE &_l+,_ +U+FEDF &_l+;_ +U+FEE0 &_l+._ +U+FEE1 &_m+-_ +U+FEE2 &_m+,_ +U+FEE3 &_m+;_ +U+FEE4 &_m+._ +U+FEE5 &_n+-_ +U+FEE6 &_n+,_ +U+FEE7 &_n+;_ +U+FEE8 &_n+._ +U+FEE9 &_h+-_ +U+FEEA &_h+,_ +U+FEEB &_h+;_ +U+FEEC &_h+._ +U+FEED &_w+-_ +U+FEEE &_w+._ +U+FEEF &_j+-_ +U+FEF0 &_j+._ +U+FEF1 &_y+-_ +U+FEF2 &_y+,_ +U+FEF3 &_y+;_ +U+FEF4 &_y+._ +U+FEF5 &_lM-_ +U+FEF6 &_lM._ +U+FEF7 &_lH-_ +U+FEF8 &_lH._ +U+FEF9 &_lh-_ +U+FEFA &_lh._ +U+FEFB &_la-_ +U+FEFC &_la._ diff --git a/support/utf2any/maps/rfc-1345-16.map b/support/utf2any/maps/rfc-1345-16.map new file mode 100644 index 0000000000..611fdf579a --- /dev/null +++ b/support/utf2any/maps/rfc-1345-16.map @@ -0,0 +1,1744 @@ +# RFC-1345 +# range: U+0100 - U+FFFF +# +# RFC-1345 seems to contain quite a lot of errors. +# This isn't the exact RFC-1345, but a modified version (hopefully +# without the errors) based on a file from recode, version 3.5: +# http://www.iro.umontreal.ca/contrib/recode/charsets/ucs/iso10646.cm +# The uncorrected version is in rfc-1345-16-obsolete.map + +U+0100 &A- +U+0101 &a- +U+0102 &A( +U+0103 &a( +U+0104 &A; +U+0105 &a; +U+0106 &C' +U+0107 &c' +U+0108 &C> +U+0109 &c> +U+010A &C. +U+010B &c. +U+010C &C< +U+010D &c< +U+010E &D< +U+010F &d< +U+0110 &D/ +U+0111 &d/ +U+0112 &E- +U+0113 &e- +U+0114 &E( +U+0115 &e( +U+0116 &E. +U+0117 &e. +U+0118 &E; +U+0119 &e; +U+011A &E< +U+011B &e< +U+011C &G> +U+011D &g> +U+011E &G( +U+011F &g( +U+0120 &G. +U+0121 &g. +U+0122 &G, +U+0123 &g, +U+0124 &H> +U+0125 &h> +U+0126 &H/ +U+0127 &h/ +U+0128 &I? +U+0129 &i? +U+012A &I- +U+012B &i- +U+012C &I( +U+012D &i( +U+012E &I; +U+012F &i; +U+0130 &I. +U+0131 &i. +U+0132 &IJ +U+0133 &ij +U+0134 &J> +U+0135 &j> +U+0136 &K, +U+0137 &k, +U+0138 &kk +U+0139 &L' +U+013A &l' +U+013B &L, +U+013C &l, +U+013D &L< +U+013E &l< +U+013F &L. +U+0140 &l. +U+0141 &L/ +U+0142 &l/ +U+0143 &N' +U+0144 &n' +U+0145 &N, +U+0146 &n, +U+0147 &N< +U+0148 &n< +U+0149 &'n +U+014A &NG +U+014B &ng +U+014C &O- +U+014D &o- +U+014E &O( +U+014F &o( +U+0150 &O" +U+0151 &o" +U+0152 &OE +U+0153 &oe +U+0154 &R' +U+0155 &r' +U+0156 &R, +U+0157 &r, +U+0158 &R< +U+0159 &r< +U+015A &S' +U+015B &s' +U+015C &S> +U+015D &s> +U+015E &S, +U+015F &s, +U+0160 &S< +U+0161 &s< +U+0162 &T, +U+0163 &t, +U+0164 &T< +U+0165 &t< +U+0166 &T/ +U+0167 &t/ +U+0168 &U? +U+0169 &u? +U+016A &U- +U+016B &u- +U+016C &U( +U+016D &u( +U+016E &U0 +U+016F &u0 +U+0170 &U" +U+0171 &u" +U+0172 &U; +U+0173 &u; +U+0174 &W> +U+0175 &w> +U+0176 &Y> +U+0177 &y> +U+0178 &Y: +U+0179 &Z' +U+017A &z' +U+017B &Z. +U+017C &z. +U+017D &Z< +U+017E &z< +U+017F &s1 +U+0187 &C2 +U+0188 &c2 +U+0191 &F2 +U+0192 &f2 +U+0198 &K2 +U+0199 &k2 +U+01A0 &O9 +U+01A1 &o9 +U+01A2 &OI +U+01A3 &oi +U+01A6 &yr +U+01AF &U9 +U+01B0 &u9 +U+01B5 &Z/ +U+01B6 &z/ +U+01B7 &ED +U+01CD &A< +U+01CE &a< +U+01CF &I< +U+01D0 &i< +U+01D1 &O< +U+01D2 &o< +U+01D3 &U< +U+01D4 &u< +U+01D5 &_U:-_ +U+01D6 &_u:-_ +U+01D7 &_U:'_ +U+01D8 &_u:'_ +U+01D9 &_U:<_ +U+01DA &_u:<_ +U+01DB &_U:!_ +U+01DC &_u:!_ +U+01DE &A1 +U+01DF &a1 +U+01E0 &A7 +U+01E1 &a7 +U+01E2 &A3 +U+01E3 &a3 +U+01E4 &G/ +U+01E5 &g/ +U+01E6 &G< +U+01E7 &g< +U+01E8 &K< +U+01E9 &k< +U+01EA &O; +U+01EB &o; +U+01EC &O1 +U+01ED &o1 +U+01EE &EZ +U+01EF &ez +U+01F4 &G' +U+01F5 &g' +U+01FA &_AA'_ +U+01FB &_aa'_ +U+01FC &_AE'_ +U+01FD &_ae'_ +U+01FE &_O/'_ +U+01FF &_o/'_ +U+0200 &_A!!_ +U+0201 &_a!!_ +U+0202 &A) +U+0203 &a) +U+0204 &_E!!_ +U+0205 &_e!!_ +U+0206 &E) +U+0207 &e) +U+0208 &_I!!_ +U+0209 &_i!!_ +U+020A &I) +U+020B &i) +U+020C &_O!!_ +U+020D &_o!!_ +U+020E &O) +U+020F &o) +U+0210 &_R!!_ +U+0211 &_r!!_ +U+0212 &R) +U+0213 &r) +U+0214 &_U!!_ +U+0215 &_u!!_ +U+0216 &U) +U+0217 &u) +U+0292 &ed +U+02BB &;S +U+02C6 &1> +U+02C7 &'< +U+02C9 &1- +U+02CB &1! +U+02D8 &'( +U+02D9 &'. +U+02DA &'0 +U+02DB &'; +U+02DC &1? +U+02DD &'" +U+0374 &'G +U+0375 &,G +U+037A &j3 +U+037E &?% +U+0384 &'* +U+0385 &'% +U+0386 &A% +U+0387 &.* +U+0388 &E% +U+0389 &Y% +U+038A &I% +U+038C &O% +U+038E &U% +U+038F &W% +U+0390 &i3 +U+0391 &A* +U+0392 &B* +U+0393 &G* +U+0394 &D* +U+0395 &E* +U+0396 &Z* +U+0397 &Y* +U+0398 &H* +U+0399 &I* +U+039A &K* +U+039B &L* +U+039C &M* +U+039D &N* +U+039E &C* +U+039F &O* +U+03A0 &P* +U+03A1 &R* +U+03A3 &S* +U+03A4 &T* +U+03A5 &U* +U+03A6 &F* +U+03A7 &X* +U+03A8 &Q* +U+03A9 &W* +U+03AA &J* +U+03AB &V* +U+03AC &a% +U+03AD &e% +U+03AE &y% +U+03AF &i% +U+03B0 &u3 +U+03B1 &a* +U+03B2 &b* +U+03B3 &g* +U+03B4 &d* +U+03B5 &e* +U+03B6 &z* +U+03B7 &y* +U+03B8 &h* +U+03B9 &i* +U+03BA &k* +U+03BB &l* +U+03BC &m* +U+03BD &n* +U+03BE &c* +U+03BF &o* +U+03C0 &p* +U+03C1 &r* +U+03C2 &*s +U+03C3 &s* +U+03C4 &t* +U+03C5 &u* +U+03C6 &f* +U+03C7 &x* +U+03C8 &q* +U+03C9 &w* +U+03CA &j* +U+03CB &v* +U+03CC &o% +U+03CD &u% +U+03CE &w% +U+03D0 &b3 +U+03DA &T3 +U+03DC &M3 +U+03DE &K3 +U+03E0 &P3 +U+0401 &IO +U+0402 &D% +U+0403 &G% +U+0404 &IE +U+0405 &DS +U+0406 &II +U+0407 &YI +U+0408 &J% +U+0409 &LJ +U+040A &NJ +U+040B &Ts +U+040C &KJ +U+040E &V% +U+040F &DZ +U+0410 &A= +U+0411 &B= +U+0412 &V= +U+0413 &G= +U+0414 &D= +U+0415 &E= +U+0416 &Z% +U+0417 &Z= +U+0418 &I= +U+0419 &J= +U+041A &K= +U+041B &L= +U+041C &M= +U+041D &N= +U+041E &O= +U+041F &P= +U+0420 &R= +U+0421 &S= +U+0422 &T= +U+0423 &U= +U+0424 &F= +U+0425 &H= +U+0426 &C= +U+0427 &C% +U+0428 &S% +U+0429 &Sc +U+042A &=" +U+042B &Y= +U+042C &%" +U+042D &JE +U+042E &JU +U+042F &JA +U+0430 &a= +U+0431 &b= +U+0432 &v= +U+0433 &g= +U+0434 &d= +U+0435 &e= +U+0436 &z% +U+0437 &z= +U+0438 &i= +U+0439 &j= +U+043A &k= +U+043B &l= +U+043C &m= +U+043D &n= +U+043E &o= +U+043F &p= +U+0440 &r= +U+0441 &s= +U+0442 &t= +U+0443 &u= +U+0444 &f= +U+0445 &h= +U+0446 &c= +U+0447 &c% +U+0448 &s% +U+0449 &sc +U+044A &=' +U+044B &y= +U+044C &%' +U+044D &je +U+044E &ju +U+044F &ja +U+0451 &io +U+0452 &d% +U+0453 &g% +U+0454 &ie +U+0455 &ds +U+0456 &ii +U+0457 &yi +U+0458 &j% +U+0459 &lj +U+045A &nj +U+045B &ts +U+045C &kj +U+045E &v% +U+045F &dz +U+0462 &Y3 +U+0463 &y3 +U+046A &O3 +U+046B &o3 +U+0472 &F3 +U+0473 &f3 +U+0474 &V3 +U+0475 &v3 +U+0480 &C3 +U+0481 &c3 +U+0490 &G3 +U+0491 &g3 +U+05D0 &A+ +U+05D1 &B+ +U+05D2 &G+ +U+05D3 &D+ +U+05D4 &H+ +U+05D5 &W+ +U+05D6 &Z+ +U+05D7 &X+ +U+05D8 &Tj +U+05D9 &J+ +U+05DA &K% +U+05DB &K+ +U+05DC &L+ +U+05DD &M% +U+05DE &M+ +U+05DF &N% +U+05E0 &N+ +U+05E1 &S+ +U+05E2 &E+ +U+05E3 &P% +U+05E4 &P+ +U+05E5 &Zj +U+05E6 &ZJ +U+05E7 &Q+ +U+05E8 &R+ +U+05E9 &Sh +U+05EA &T+ +U+060C &,+ +U+061B &;+ +U+061F &?+ +U+0621 &H' +U+0622 &aM +U+0623 &aH +U+0624 &wH +U+0625 &ah +U+0626 &yH +U+0627 &a+ +U+0628 &b+ +U+0629 &tm +U+062A &t+ +U+062B &tk +U+062C &g+ +U+062D &hk +U+062E &x+ +U+062F &d+ +U+0630 &dk +U+0631 &r+ +U+0632 &z+ +U+0633 &s+ +U+0634 &sn +U+0635 &c+ +U+0636 &dd +U+0637 &tj +U+0638 &zH +U+0639 &e+ +U+063A &i+ +U+0640 &++ +U+0641 &f+ +U+0642 &q+ +U+0643 &k+ +U+0644 &l+ +U+0645 &m+ +U+0646 &n+ +U+0647 &h+ +U+0648 &w+ +U+0649 &j+ +U+064A &y+ +U+064B &:+ +U+064C &"+ +U+064D &=+ +U+064E &/+ +U+064F &'+ +U+0650 &1+ +U+0651 &3+ +U+0652 &0+ +U+0660 &0a +U+0661 &1a +U+0662 &2a +U+0663 &3a +U+0664 &4a +U+0665 &5a +U+0666 &6a +U+0667 &7a +U+0668 &8a +U+0669 &9a +U+0670 &aS +U+067E &p+ +U+0681 &hH +U+0686 &tc +U+0698 &zj +U+06A4 &v+ +U+06AF &gf +U+1E00 &_A-0_ +U+1E01 &_a-0_ +U+1E02 &B. +U+1E03 &b. +U+1E04 &_B-._ +U+1E05 &_b-._ +U+1E06 &B_ +U+1E07 &b_ +U+1E08 &_C,'_ +U+1E09 &_c,'_ +U+1E0A &D. +U+1E0B &d. +U+1E0C &_D-._ +U+1E0D &_d-._ +U+1E0E &D_ +U+1E0F &d_ +U+1E10 &D, +U+1E11 &d, +U+1E12 &_D->_ +U+1E13 &_d->_ +U+1E14 &_E-!_ +U+1E15 &_e-!_ +U+1E16 &_E-'_ +U+1E17 &_e-'_ +U+1E18 &_E->_ +U+1E19 &_e->_ +U+1E1A &_E-?_ +U+1E1B &_e-?_ +U+1E1C &_E,(_ +U+1E1D &_e,(_ +U+1E1E &F. +U+1E1F &f. +U+1E20 &G- +U+1E21 &g- +U+1E22 &H. +U+1E23 &h. +U+1E24 &_H-._ +U+1E25 &_h-._ +U+1E26 &H: +U+1E27 &h: +U+1E28 &H, +U+1E29 &h, +U+1E2A &_H-(_ +U+1E2B &_h-(_ +U+1E2C &_I-?_ +U+1E2D &_i-?_ +U+1E2E &_I:'_ +U+1E2F &_i:'_ +U+1E30 &K' +U+1E31 &k' +U+1E32 &_K-._ +U+1E33 &_k-._ +U+1E34 &K_ +U+1E35 &k_ +U+1E36 &_L-._ +U+1E37 &_l-._ +U+1E38 &_L--._ +U+1E39 &_l--._ +U+1E3A &L_ +U+1E3B &l_ +U+1E3C &_L->_ +U+1E3D &_l->_ +U+1E3E &M' +U+1E3F &m' +U+1E40 &M. +U+1E41 &m. +U+1E42 &_M-._ +U+1E43 &_m-._ +U+1E44 &N. +U+1E45 &n. +U+1E46 &_N-._ +U+1E47 &_n-._ +U+1E48 &N_ +U+1E49 &n_ +U+1E4A &_N->_ +U+1E4B &_n->_ +U+1E4C &_O?'_ +U+1E4D &_o?'_ +U+1E4E &_O?:_ +U+1E4F &_o?:_ +U+1E50 &_O-!_ +U+1E51 &_o-!_ +U+1E52 &_O-'_ +U+1E53 &_o-'_ +U+1E54 &P' +U+1E55 &p' +U+1E56 &P. +U+1E57 &p. +U+1E58 &R. +U+1E59 &r. +U+1E5A &_R-._ +U+1E5B &_r-._ +U+1E5C &_R--._ +U+1E5D &_r--._ +U+1E5E &R_ +U+1E5F &r_ +U+1E60 &S. +U+1E61 &s. +U+1E62 &_S-._ +U+1E63 &_s-._ +U+1E64 &_S'._ +U+1E65 &_s'._ +U+1E66 &_S<._ +U+1E67 &_s<._ +U+1E68 &_S.-._ +U+1E69 &_s.-._ +U+1E6A &T. +U+1E6B &t. +U+1E6C &_T-._ +U+1E6D &_t-._ +U+1E6E &T_ +U+1E6F &t_ +U+1E70 &_T->_ +U+1E71 &_t->_ +U+1E72 &_U--:_ +U+1E73 &_u--:_ +U+1E74 &_U-?_ +U+1E75 &_u-?_ +U+1E76 &_U->_ +U+1E77 &_u->_ +U+1E78 &_U?'_ +U+1E79 &_u?'_ +U+1E7A &_U-:_ +U+1E7B &_u-:_ +U+1E7C &V? +U+1E7D &v? +U+1E7E &_V-._ +U+1E7F &_v-._ +U+1E80 &W! +U+1E81 &w! +U+1E82 &W' +U+1E83 &w' +U+1E84 &W: +U+1E85 &w: +U+1E86 &W. +U+1E87 &w. +U+1E88 &_W-._ +U+1E89 &_w-._ +U+1E8A &X. +U+1E8B &x. +U+1E8C &X: +U+1E8D &x: +U+1E8E &Y. +U+1E8F &y. +U+1E90 &Z> +U+1E91 &z> +U+1E92 &_Z-._ +U+1E93 &_z-._ +U+1E94 &Z_ +U+1E95 &z_ +U+1EA0 &_A-._ +U+1EA1 &_a-._ +U+1EA2 &A2 +U+1EA3 &a2 +U+1EA4 &_A>'_ +U+1EA5 &_a>'_ +U+1EA6 &_A>!_ +U+1EA7 &_a>!_ +U+1EA8 &_A>2_ +U+1EA9 &_a>2_ +U+1EAA &_A>?_ +U+1EAB &_a>?_ +U+1EAC &_A>-._ +U+1EAD &_a>-._ +U+1EAE &_A('_ +U+1EAF &_a('_ +U+1EB0 &_A(!_ +U+1EB1 &_a(!_ +U+1EB2 &_A(2_ +U+1EB3 &_a(2_ +U+1EB4 &_A(?_ +U+1EB5 &_a(?_ +U+1EB6 &_A(-._ +U+1EB7 &_a(-._ +U+1EB8 &_E-._ +U+1EB9 &_e-._ +U+1EBA &E2 +U+1EBB &e2 +U+1EBC &E? +U+1EBD &e? +U+1EBE &_E>'_ +U+1EBF &_e>'_ +U+1EC0 &_E>!_ +U+1EC1 &_e>!_ +U+1EC2 &_E>2_ +U+1EC3 &_e>2_ +U+1EC4 &_E>?_ +U+1EC5 &_e>?_ +U+1EC6 &_E>-._ +U+1EC7 &_e>-._ +U+1EC8 &I2 +U+1EC9 &i2 +U+1ECA &_I-._ +U+1ECB &_i-._ +U+1ECC &_O-._ +U+1ECD &_o-._ +U+1ECE &O2 +U+1ECF &o2 +U+1ED0 &_O>'_ +U+1ED1 &_o>'_ +U+1ED2 &_O>!_ +U+1ED3 &_o>!_ +U+1ED4 &_O>2_ +U+1ED5 &_o>2_ +U+1ED6 &_O>?_ +U+1ED7 &_o>?_ +U+1ED8 &_O>-._ +U+1ED9 &_o>-._ +U+1EDA &_O9'_ +U+1EDB &_o9'_ +U+1EDC &_O9!_ +U+1EDD &_o9!_ +U+1EDE &_O92_ +U+1EDF &_o92_ +U+1EE0 &_O9?_ +U+1EE1 &_o9?_ +U+1EE2 &_O9-._ +U+1EE3 &_o9-._ +U+1EE4 &_U-._ +U+1EE5 &_u-._ +U+1EE6 &U2 +U+1EE7 &u2 +U+1EE8 &_U9'_ +U+1EE9 &_u9'_ +U+1EEA &_U9!_ +U+1EEB &_u9!_ +U+1EEC &_U92_ +U+1EED &_u92_ +U+1EEE &_U9?_ +U+1EEF &_u9?_ +U+1EF0 &_U9-._ +U+1EF1 &_u9-._ +U+1EF2 &Y! +U+1EF3 &y! +U+1EF4 &_Y-._ +U+1EF5 &_y-._ +U+1EF6 &Y2 +U+1EF7 &y2 +U+1EF8 &Y? +U+1EF9 &y? +U+1FBF &,, +U+1FC0 &?* +U+1FC1 &?: +U+1FCD &,! +U+1FCE &,' +U+1FCF &?, +U+1FDD &;! +U+1FDE &;' +U+1FDF &?; +U+1FED &!: +U+1FEF &!* +U+1FFE &;; +U+2002 &1N +U+2003 &1M +U+2004 &3M +U+2005 &4M +U+2006 &6M +U+2009 &1T +U+200A &1H +U+200E &LR +U+200F &RL +U+2010 &-1 +U+2013 &-N +U+2014 &-M +U+2015 &-3 +U+2016 &!2 +U+2017 &=2 +U+2018 &'6 +U+2019 &'9 +U+201A &.9 +U+201B &9' +U+201C &"6 +U+201D &"9 +U+201E &:9 +U+201F &9" +U+2020 &/- +U+2021 &/= +U+2022 &Sb +U+2025 &.. +U+2026 &.3 +U+2030 &%0 +U+2032 &1' +U+2033 &2' +U+2034 &3' +U+2035 &1" +U+2036 &2" +U+2037 &3" +U+2038 &Ca +U+2039 &<1 +U+203A &>1 +U+203B &:X +U+203C &_!*2_ +U+203E &'- +U+2070 &0S +U+2074 &4S +U+2075 &5S +U+2076 &6S +U+2077 &7S +U+2078 &8S +U+2079 &9S +U+207A &+S +U+207B &-S +U+207C &=S +U+207D &(S +U+207E &)S +U+207F &nS +U+2080 &0s +U+2081 &1s +U+2082 &2s +U+2083 &3s +U+2084 &4s +U+2085 &5s +U+2086 &6s +U+2087 &7s +U+2088 &8s +U+2089 &9s +U+208A &+s +U+208B &-s +U+208C &=s +U+208D &(s +U+208E &)s +U+20A3 &Ff +U+20A4 &Li +U+20A7 &Pt +U+20A9 &W= +U+2103 &oC +U+2105 &co +U+2109 &oF +U+2116 &N0 +U+2117 &PO +U+211E &Rx +U+2120 &SM +U+2122 &TM +U+2126 &Om +U+212B &AO +U+2153 &13 +U+2154 &23 +U+2155 &15 +U+2156 &25 +U+2157 &35 +U+2158 &45 +U+2159 &16 +U+215A &56 +U+215B &18 +U+215C &38 +U+215D &58 +U+215E &78 +U+2160 &1R +U+2161 &2R +U+2162 &3R +U+2163 &4R +U+2164 &5R +U+2165 &6R +U+2166 &7R +U+2167 &8R +U+2168 &9R +U+2169 &aR +U+216A &bR +U+216B &cR +U+216C &_50R_ +U+216D &_100R_ +U+216E &_500R_ +U+216F &_1000R_ +U+2170 &1r +U+2171 &2r +U+2172 &3r +U+2173 &4r +U+2174 &5r +U+2175 &6r +U+2176 &7r +U+2177 &8r +U+2178 &9r +U+2179 &ar +U+217A &br +U+217B &cr +U+217C &_50r_ +U+217D &_100r_ +U+217E &_500r_ +U+217F &_1000r_ +U+2180 &_1000RCD_ +U+2181 &_5000R_ +U+2182 &_10000R_ +U+2190 &<- +U+2191 &-! +U+2192 &-> +U+2193 &-v +U+2194 &<> +U+2195 &UD +U+2196 &__ +U+2198 &_!!>_ +U+2199 &_V +U+21D0 &<= +U+21D2 &=> +U+21D4 &== +U+2200 &FA +U+2202 &dP +U+2203 &TE +U+2205 &/0 +U+2206 &DE +U+2207 &NB +U+2208 &(- +U+220B &-) +U+220F &*P +U+2211 &+Z +U+2212 &-2 +U+2213 &-+ +U+2214 &.+ +U+2215 &/f +U+2217 &*- +U+2218 &Ob +U+2219 &sb +U+221A &RT +U+221D &0( +U+221E &00 +U+221F &-L +U+2220 &-V +U+2225 &PP +U+2227 &AN +U+2228 &OR +U+2229 &(U +U+222A &)U +U+222B &In +U+222C &DI +U+222E &Io +U+2234 &.: +U+2235 &:. +U+2236 &:R +U+2237 &:: +U+223C &?1 +U+223E &CG +U+2243 &?- +U+2245 &?= +U+2248 &?2 +U+224C &=? +U+2253 &HI +U+2260 &!= +U+2261 &=3 +U+2264 &=< +U+2265 &>= +U+226A &<* +U+226B &*> +U+226E &!< +U+226F &!> +U+2282 &(C +U+2283 &)C +U+2286 &(_ +U+2287 &)_ +U+2299 &0. +U+229A &02 +U+22A5 &-T +U+22C5 &.P +U+22EE &:3 +U+2302 &Eh +U+2308 &<7 +U+2309 &>7 +U+230A &7< +U+230B &7> +U+2310 &NI +U+2312 &(A +U+2315 &TR +U+2318 &88 +U+2320 &Iu +U+2321 &Il +U+2329 & +U+2423 &Vs +U+2440 &1h +U+2441 &3h +U+2442 &2h +U+2443 &4h +U+2446 &1j +U+2447 &2j +U+2448 &3j +U+2449 &4j +U+2460 &_1-o_ +U+2461 &_2-o_ +U+2462 &_3-o_ +U+2463 &_4-o_ +U+2464 &_5-o_ +U+2465 &_6-o_ +U+2466 &_7-o_ +U+2467 &_8-o_ +U+2468 &_9-o_ +U+2469 &_10-o_ +U+246A &_11-o_ +U+246B &_12-o_ +U+246C &_13-o_ +U+246D &_14-o_ +U+246E &_15-o_ +U+246F &_16-o_ +U+2470 &_17-o_ +U+2471 &_18-o_ +U+2472 &_19-o_ +U+2473 &_20-o_ +U+2474 &_(1)_ +U+2475 &_(2)_ +U+2476 &_(3)_ +U+2477 &_(4)_ +U+2478 &_(5)_ +U+2479 &_(6)_ +U+247A &_(7)_ +U+247B &_(8)_ +U+247C &_(9)_ +U+247D &_(10)_ +U+247E &_(11)_ +U+247F &_(12)_ +U+2480 &_(13)_ +U+2481 &_(14)_ +U+2482 &_(15)_ +U+2483 &_(16)_ +U+2484 &_(17)_ +U+2485 &_(18)_ +U+2486 &_(19)_ +U+2487 &_(20)_ +U+2488 &1. +U+2489 &2. +U+248A &3. +U+248B &4. +U+248C &5. +U+248D &6. +U+248E &7. +U+248F &8. +U+2490 &9. +U+2491 &_10._ +U+2492 &_11._ +U+2493 &_12._ +U+2494 &_13._ +U+2495 &_14._ +U+2496 &_15._ +U+2497 &_16._ +U+2498 &_17._ +U+2499 &_18._ +U+249A &_19._ +U+249B &_20._ +U+249C &_(a)_ +U+249D &_(b)_ +U+249E &_(c)_ +U+249F &_(d)_ +U+24A0 &_(e)_ +U+24A1 &_(f)_ +U+24A2 &_(g)_ +U+24A3 &_(h)_ +U+24A4 &_(i)_ +U+24A5 &_(j)_ +U+24A6 &_(k)_ +U+24A7 &_(l)_ +U+24A8 &_(m)_ +U+24A9 &_(n)_ +U+24AA &_(o)_ +U+24AB &_(p)_ +U+24AC &_(q)_ +U+24AD &_(r)_ +U+24AE &_(s)_ +U+24AF &_(t)_ +U+24B0 &_(u)_ +U+24B1 &_(v)_ +U+24B2 &_(w)_ +U+24B3 &_(x)_ +U+24B4 &_(y)_ +U+24B5 &_(z)_ +U+24B6 &_A-o_ +U+24B7 &_B-o_ +U+24B8 &_C-o_ +U+24B9 &_D-o_ +U+24BA &_E-o_ +U+24BB &_F-o_ +U+24BC &_G-o_ +U+24BD &_H-o_ +U+24BE &_I-o_ +U+24BF &_J-o_ +U+24C0 &_K-o_ +U+24C1 &_L-o_ +U+24C2 &_M-o_ +U+24C3 &_N-o_ +U+24C4 &_O-o_ +U+24C5 &_P-o_ +U+24C6 &_Q-o_ +U+24C7 &_R-o_ +U+24C8 &_S-o_ +U+24C9 &_T-o_ +U+24CA &_U-o_ +U+24CB &_V-o_ +U+24CC &_W-o_ +U+24CD &_X-o_ +U+24CE &_Y-o_ +U+24CF &_Z-o_ +U+24D0 &_a-o_ +U+24D1 &_b-o_ +U+24D2 &_c-o_ +U+24D3 &_d-o_ +U+24D4 &_e-o_ +U+24D5 &_f-o_ +U+24D6 &_g-o_ +U+24D7 &_h-o_ +U+24D8 &_i-o_ +U+24D9 &_j-o_ +U+24DA &_k-o_ +U+24DB &_l-o_ +U+24DC &_m-o_ +U+24DD &_n-o_ +U+24DE &_o-o_ +U+24DF &_p-o_ +U+24E0 &_q-o_ +U+24E1 &_r-o_ +U+24E2 &_s-o_ +U+24E3 &_t-o_ +U+24E4 &_u-o_ +U+24E5 &_v-o_ +U+24E6 &_w-o_ +U+24E7 &_x-o_ +U+24E8 &_y-o_ +U+24E9 &_z-o_ +U+24EA &_0-o_ +U+2500 &hh +U+2501 &_HH-_ +U+2502 &vv +U+2503 &_VV-_ +U+2504 &3- +U+2505 &3_ +U+2506 &3! +U+2507 &3/ +U+2508 &4- +U+2509 &4_ +U+250A &4! +U+250B &4/ +U+250C &dr +U+250D &_dR-_ +U+250E &_Dr-_ +U+250F &_DR-_ +U+2510 &dl +U+2511 &_dL-_ +U+2512 &_Dl-_ +U+2513 &_LD-_ +U+2514 &ur +U+2515 &_uR-_ +U+2516 &_Ur-_ +U+2517 &_UR-_ +U+2518 &ul +U+2519 &_uL-_ +U+251A &_Ul-_ +U+251B &_UL-_ +U+251C &vr +U+251D &_vR-_ +U+251E &_Udr_ +U+251F &_uDr_ +U+2520 &_Vr-_ +U+2521 &_UdR_ +U+2522 &_uDR_ +U+2523 &_VR-_ +U+2524 &vl +U+2525 &_vL-_ +U+2526 &_Udl_ +U+2527 &_uDl_ +U+2528 &_Vl-_ +U+2529 &_UdL_ +U+252A &_uDL_ +U+252B &_VL-_ +U+252C &dh +U+252D &_dLr_ +U+252E &_dlR_ +U+252F &_dH-_ +U+2530 &_Dh-_ +U+2531 &_DLr_ +U+2532 &_DlR_ +U+2533 &_DH-_ +U+2534 &uh +U+2535 &_uLr_ +U+2536 &_ulR_ +U+2537 &_uH-_ +U+2538 &_Uh-_ +U+2539 &_ULr_ +U+253A &_UlR_ +U+253B &_UH-_ +U+253C &vh +U+253D &_vLr_ +U+253E &_vlR_ +U+253F &_vH-_ +U+2540 &_Udh_ +U+2541 &_uDh_ +U+2542 &_Vh-_ +U+2543 &_UdLr_ +U+2544 &_UdlR_ +U+2545 &_uDLr_ +U+2546 &_uDlR_ +U+2547 &_UdH_ +U+2548 &_uDH_ +U+2549 &_VLr_ +U+254A &_VlR_ +U+254B &_VH-_ +U+2550 &HH +U+2551 &VV +U+2552 &dR +U+2553 &Dr +U+2554 &DR +U+2555 &dL +U+2556 &Dl +U+2557 &LD +U+2558 &uR +U+2559 &Ur +U+255A &UR +U+255B &uL +U+255C &Ul +U+255D &UL +U+255E &vR +U+255F &Vr +U+2560 &VR +U+2561 &vL +U+2562 &Vl +U+2563 &VL +U+2564 &dH +U+2565 &Dh +U+2566 &DH +U+2567 &uH +U+2568 &Uh +U+2569 &UH +U+256A &vH +U+256B &Vh +U+256C &VH +U+2571 &FD +U+2572 &BD +U+2580 &TB +U+2584 &LB +U+2588 &FB +U+258C &lB +U+2590 &RB +U+2591 &.S +U+2592 &:S +U+2593 &?S +U+25A0 &fS +U+25A1 &OS +U+25A2 &RO +U+25A3 &Rr +U+25A4 &RF +U+25A5 &RY +U+25A6 &RH +U+25A7 &RZ +U+25A8 &RK +U+25A9 &RX +U+25AA &sB +U+25AC &SR +U+25AD &Or +U+25B2 &UT +U+25B3 &uT +U+25B7 &Tr +U+25BA &PR +U+25BC &Dt +U+25BD &dT +U+25C1 &Tl +U+25C4 &PL +U+25C6 &Db +U+25C7 &Dw +U+25CA &LZ +U+25CB &0m +U+25CE &0o +U+25CF &0M +U+25D0 &0L +U+25D1 &0R +U+25D8 &Sn +U+25D9 &Ic +U+25E2 &Fd +U+25E3 &Bd +U+25EF &Ci +U+2605 &*2 +U+2606 &*1 +U+260E &_TEL_ +U+260F &_tel_ +U+261C &H +U+263A &0u +U+263B &0U +U+263C &SU +U+2640 &Fm +U+2642 &Ml +U+2660 &cS +U+2661 &cH +U+2662 &cD +U+2663 &cC +U+2664 &_cS-_ +U+2665 &_cH-_ +U+2666 &_cD-_ +U+2667 &_cC-_ +U+2669 &Md +U+266A &M8 +U+266B &M2 +U+266C &_M16_ +U+266D &Mb +U+266E &Mx +U+266F &MX +U+2713 &OK +U+2717 &XX +U+2720 &-X +U+3000 &IS +U+3001 &,_ +U+3002 &._ +U+3003 &+" +U+3004 &_JIS_ +U+3005 &*_ +U+3006 &;_ +U+3007 &0_ +U+300A &<+ +U+300B &>+ +U+300C &<' +U+300D &>' +U+300E &<" +U+300F &>" +U+3010 &(" +U+3011 &)" +U+3012 &=T +U+3013 &=_ +U+3014 &(' +U+3015 &)' +U+3016 &(I +U+3017 &)I +U+301C &-? +U+3020 &_=T:)_ +U+3041 &A5 +U+3042 &a5 +U+3043 &I5 +U+3044 &i5 +U+3045 &U5 +U+3046 &u5 +U+3047 &E5 +U+3048 &e5 +U+3049 &O5 +U+304A &o5 +U+304B &ka +U+304C &ga +U+304D &ki +U+304E &gi +U+304F &ku +U+3050 &gu +U+3051 &ke +U+3052 &ge +U+3053 &ko +U+3054 &go +U+3055 &sa +U+3056 &za +U+3057 &si +U+3058 &zi +U+3059 &su +U+305A &zu +U+305B &se +U+305C &ze +U+305D &so +U+305E &zo +U+305F &ta +U+3060 &da +U+3061 &ti +U+3062 &di +U+3063 &tU +U+3064 &tu +U+3065 &du +U+3066 &te +U+3067 &de +U+3068 &to +U+3069 &do +U+306A &na +U+306B &ni +U+306C &nu +U+306D &ne +U+306E &no +U+306F &ha +U+3070 &ba +U+3071 &pa +U+3072 &hi +U+3073 &bi +U+3074 &pi +U+3075 &hu +U+3076 &bu +U+3077 &pu +U+3078 &he +U+3079 &be +U+307A &pe +U+307B &ho +U+307C &bo +U+307D &po +U+307E &ma +U+307F &mi +U+3080 &mu +U+3081 &me +U+3082 &mo +U+3083 &yA +U+3084 &ya +U+3085 &yU +U+3086 &yu +U+3087 &yO +U+3088 &yo +U+3089 &ra +U+308A &ri +U+308B &ru +U+308C &re +U+308D &ro +U+308E &wA +U+308F &wa +U+3090 &wi +U+3091 &we +U+3092 &wo +U+3093 &n5 +U+3094 &vu +U+309B &"5 +U+309C &05 +U+309D &*5 +U+309E &+5 +U+30A1 &a6 +U+30A2 &A6 +U+30A3 &i6 +U+30A4 &I6 +U+30A5 &u6 +U+30A6 &U6 +U+30A7 &e6 +U+30A8 &E6 +U+30A9 &o6 +U+30AA &O6 +U+30AB &Ka +U+30AC &Ga +U+30AD &Ki +U+30AE &Gi +U+30AF &Ku +U+30B0 &Gu +U+30B1 &Ke +U+30B2 &Ge +U+30B3 &Ko +U+30B4 &Go +U+30B5 &Sa +U+30B6 &Za +U+30B7 &Si +U+30B8 &Zi +U+30B9 &Su +U+30BA &Zu +U+30BB &Se +U+30BC &Ze +U+30BD &So +U+30BE &Zo +U+30BF &Ta +U+30C0 &Da +U+30C1 &Ti +U+30C2 &Di +U+30C3 &TU +U+30C4 &Tu +U+30C5 &Du +U+30C6 &Te +U+30C7 &De +U+30C8 &To +U+30C9 &Do +U+30CA &Na +U+30CB &Ni +U+30CC &Nu +U+30CD &Ne +U+30CE &No +U+30CF &Ha +U+30D0 &Ba +U+30D1 &Pa +U+30D2 &Hi +U+30D3 &Bi +U+30D4 &Pi +U+30D5 &Hu +U+30D6 &Bu +U+30D7 &Pu +U+30D8 &He +U+30D9 &Be +U+30DA &Pe +U+30DB &Ho +U+30DC &Bo +U+30DD &Po +U+30DE &Ma +U+30DF &Mi +U+30E0 &Mu +U+30E1 &Me +U+30E2 &Mo +U+30E3 &YA +U+30E4 &Ya +U+30E5 &YU +U+30E6 &Yu +U+30E7 &YO +U+30E8 &Yo +U+30E9 &Ra +U+30EA &Ri +U+30EB &Ru +U+30EC &Re +U+30ED &Ro +U+30EE &WA +U+30EF &Wa +U+30F0 &Wi +U+30F1 &We +U+30F2 &Wo +U+30F3 &N6 +U+30F4 &Vu +U+30F5 &KA +U+30F6 &KE +U+30F7 &Va +U+30F8 &Vi +U+30F9 &Ve +U+30FA &Vo +U+30FB &.6 +U+30FC &-6 +U+30FD &*6 +U+30FE &+6 +U+3105 &b4 +U+3106 &p4 +U+3107 &m4 +U+3108 &f4 +U+3109 &d4 +U+310A &t4 +U+310B &n4 +U+310C &l4 +U+310D &g4 +U+310E &k4 +U+310F &h4 +U+3110 &j4 +U+3111 &q4 +U+3112 &x4 +U+3113 &zh +U+3114 &ch +U+3115 &sh +U+3116 &r4 +U+3117 &z4 +U+3118 &c4 +U+3119 &s4 +U+311A &a4 +U+311B &o4 +U+311C &e4 +U+311D &_eh4_ +U+311E &ai +U+311F &ei +U+3120 &au +U+3121 &ou +U+3122 &an +U+3123 &en +U+3124 &aN +U+3125 &eN +U+3126 &er +U+3127 &i4 +U+3128 &u4 +U+3129 &iu +U+312A &v4 +U+312B &nG +U+312C &gn +U+321C &_(JU)_ +U+3220 &1c +U+3221 &2c +U+3222 &3c +U+3223 &4c +U+3224 &5c +U+3225 &6c +U+3226 &7c +U+3227 &8c +U+3228 &9c +U+3229 &_10c_ +U+327F &_KSC_ +U+33C2 &am +U+33D8 &pm +U+E000 &"3 +U+E001 &"1 +U+E002 &"! +U+E003 &"' +U+E004 &"> +U+E005 &"? +U+E006 &"- +U+E007 &"( +U+E008 &". +U+E009 &": +U+E00A &"0 +U+E00B &", +U+E00C &"_ +U+E00D &"" +U+E00E &"; +U+E00F &"< +U+E010 &"= +U+E011 &"/ +U+E012 &"p +U+E013 &"d +U+E014 &"i +U+E015 &+_ +U+E016 &_a+:_ +U+E017 &_Tel_ +U+E018 &UA +U+E019 &UB +U+E01A &t3 +U+E01B &m3 +U+E01C &k3 +U+E01D &p3 +U+E01E &Mc +U+E01F &a8 +U+E020 &b8 +U+E021 &c8 +U+E022 &d8 +U+E023 &e8 +U+E024 &f8 +U+E025 &g8 +U+E026 &h8 +U+E027 &i8 +U+E028 &j8 +U+E029 &k8 +U+E02A &l8 +U+E02B &m8 +U+E02C &n8 +U+E02D &o8 +U+E02E &p8 +U+E02F &q8 +U+E030 &r8 +U+E031 &s8 +U+E032 &t8 +U+E033 &u8 +U+E034 &v8 +U+E035 &w8 +U+E036 &x8 +U+E037 &y8 +U+E038 &z8 +U+E039 &__ +U+E03A &/c +U+FB00 &ff +U+FB01 &fi +U+FB02 &fl +U+FB03 &_ffi_ +U+FB04 &_ffl_ +U+FB05 &ft +U+FB06 &st +U+FE7D &_3+;_ +U+FE82 &_aM._ +U+FE84 &_aH._ +U+FE88 &_ah._ +U+FE8D &_a+-_ +U+FE8E &_a+._ +U+FE8F &_b+-_ +U+FE90 &_b+._ +U+FE91 &_b+,_ +U+FE92 &_b+;_ +U+FE93 &_tm-_ +U+FE94 &_tm._ +U+FE95 &_t+-_ +U+FE96 &_t+._ +U+FE97 &_t+,_ +U+FE98 &_t+;_ +U+FE99 &_tk-_ +U+FE9A &_tk._ +U+FE9B &_tk,_ +U+FE9C &_tk;_ +U+FE9D &_g+-_ +U+FE9E &_g+._ +U+FE9F &_g+,_ +U+FEA0 &_g+;_ +U+FEA1 &_hk-_ +U+FEA2 &_hk._ +U+FEA3 &_hk,_ +U+FEA4 &_hk;_ +U+FEA5 &_x+-_ +U+FEA6 &_x+._ +U+FEA7 &_x+,_ +U+FEA8 &_x+;_ +U+FEA9 &_d+-_ +U+FEAA &_d+._ +U+FEAB &_dk-_ +U+FEAC &_dk._ +U+FEAD &_r+-_ +U+FEAE &_r+._ +U+FEAF &_z+-_ +U+FEB0 &_z+._ +U+FEB1 &_s+-_ +U+FEB2 &_s+._ +U+FEB3 &_s+,_ +U+FEB4 &_s+;_ +U+FEB5 &_sn-_ +U+FEB6 &_sn._ +U+FEB7 &_sn,_ +U+FEB8 &_sn;_ +U+FEB9 &_c+-_ +U+FEBA &_c+._ +U+FEBB &_c+,_ +U+FEBC &_c+;_ +U+FEBD &_dd-_ +U+FEBE &_dd._ +U+FEBF &_dd,_ +U+FEC0 &_dd;_ +U+FEC1 &_tj-_ +U+FEC2 &_tj._ +U+FEC3 &_tj,_ +U+FEC4 &_tj;_ +U+FEC5 &_zH-_ +U+FEC6 &_zH._ +U+FEC7 &_zH,_ +U+FEC8 &_zH;_ +U+FEC9 &_e+-_ +U+FECA &_e+._ +U+FECB &_e+,_ +U+FECC &_e+;_ +U+FECD &_i+-_ +U+FECE &_i+._ +U+FECF &_i+,_ +U+FED0 &_i+;_ +U+FED1 &_f+-_ +U+FED2 &_f+._ +U+FED3 &_f+,_ +U+FED4 &_f+;_ +U+FED5 &_q+-_ +U+FED6 &_q+._ +U+FED7 &_q+,_ +U+FED8 &_q+;_ +U+FED9 &_k+-_ +U+FEDA &_k+._ +U+FEDB &_k+,_ +U+FEDC &_k+;_ +U+FEDD &_l+-_ +U+FEDE &_l+._ +U+FEDF &_l+,_ +U+FEE0 &_l+;_ +U+FEE1 &_m+-_ +U+FEE2 &_m+._ +U+FEE3 &_m+,_ +U+FEE4 &_m+;_ +U+FEE5 &_n+-_ +U+FEE6 &_n+._ +U+FEE7 &_n+,_ +U+FEE8 &_n+;_ +U+FEE9 &_h+-_ +U+FEEA &_h+._ +U+FEEB &_h+,_ +U+FEEC &_h+;_ +U+FEED &_w+-_ +U+FEEE &_w+._ +U+FEEF &_j+-_ +U+FEF0 &_j+._ +U+FEF1 &_y+-_ +U+FEF2 &_y+._ +U+FEF3 &_y+,_ +U+FEF4 &_y+;_ +U+FEF5 &_lM-_ +U+FEF6 &_lM._ +U+FEF7 &_lH-_ +U+FEF8 &_lH._ +U+FEF9 &_lh-_ +U+FEFA &_lh._ +U+FEFB &_la-_ +U+FEFC &_la._ diff --git a/support/utf2any/maps/rfc-1345-7.map b/support/utf2any/maps/rfc-1345-7.map new file mode 100644 index 0000000000..006355b46d --- /dev/null +++ b/support/utf2any/maps/rfc-1345-7.map @@ -0,0 +1,50 @@ +# RFC-1345 +# range: U+0000 - U+007F + +# U+0009 &HT +# U+000A &LF +# U+000C &FF +# U+000D &CR +# U+0020 &SP +U+0000 &NU +U+0001 &SH +U+0002 &SX +U+0003 &EX +U+0004 &ET +U+0005 &EQ +U+0006 &AK +U+0007 &BL +U+0008 &BS +U+000B &VT +U+000E &SO +U+000F &SI +U+0010 &DL +U+0011 &D1 +U+0012 &D2 +U+0013 &D3 +U+0014 &D4 +U+0015 &NK +U+0016 &SY +U+0017 &EB +U+0018 &CN +U+0019 &EM +U+001A &SB +U+001B &EC +U+001C &FS +U+001D &GS +U+001E &RS +U+001F &US +U+0023 &Nb +U+0024 &DO +U+0026 && +U+0040 &At +U+005B &<( +U+005C &// +U+005D &)> +U+005E &'> +U+0060 &'! +U+007B &(! +U+007C &!! +U+007D &!) +U+007E &'? +U+007F &DT diff --git a/support/utf2any/maps/rfc-1345-8.map b/support/utf2any/maps/rfc-1345-8.map new file mode 100644 index 0000000000..3479d6536f --- /dev/null +++ b/support/utf2any/maps/rfc-1345-8.map @@ -0,0 +1,131 @@ +# RFC-1345 +# range: U+0080 - U+00FF + +U+0080 &PA +U+0081 &HO +U+0082 &BH +U+0083 &NH +U+0084 &IN +U+0085 &NL +U+0086 &SA +U+0087 &ES +U+0088 &HS +U+0089 &HJ +U+008A &VS +U+008B &PD +U+008C &PU +U+008D &RI +U+008E &S2 +U+008F &S3 +U+0090 &DC +U+0091 &P1 +U+0092 &P2 +U+0093 &TS +U+0094 &CC +U+0095 &MW +U+0096 &SG +U+0097 &EG +U+0098 &SS +U+0099 &GC +U+009A &SC +U+009B &CI +U+009C &ST +U+009D &OC +U+009E &PM +U+009F &AC +U+00A0 &NS +U+00A1 &!I +U+00A2 &Ct +U+00A3 &Pd +U+00A4 &Cu +U+00A5 &Ye +U+00A6 &BB +U+00A7 &SE +U+00A8 &': +U+00A9 &Co +U+00AA &-a +U+00AB &<< +U+00AC &NO +U+00AD &-- +U+00AE &Rg +U+00AF &'m +U+00B0 &DG +U+00B1 &+- +U+00B2 &2S +U+00B3 &3S +U+00B4 &'' +U+00B5 &My +U+00B6 &PI +U+00B7 &.M +U+00B8 &', +U+00B9 &1S +U+00BA &-o +U+00BB &>> +U+00BC &14 +U+00BD &12 +U+00BE &34 +U+00BF &?I +U+00C0 &A! +U+00C1 &A' +U+00C2 &A> +U+00C3 &A? +U+00C4 &A: +U+00C5 &AA +U+00C6 &AE +U+00C7 &C, +U+00C8 &E! +U+00C9 &E' +U+00CA &E> +U+00CB &E: +U+00CC &I! +U+00CD &I' +U+00CE &I> +U+00CF &I: +U+00D0 &D- +U+00D1 &N? +U+00D2 &O! +U+00D3 &O' +U+00D4 &O> +U+00D5 &O? +U+00D6 &O: +U+00D7 &*X +U+00D8 &O/ +U+00D9 &U! +U+00DA &U' +U+00DB &U> +U+00DC &U: +U+00DD &Y' +U+00DE &TH +U+00DF &ss +U+00E0 &a! +U+00E1 &a' +U+00E2 &a> +U+00E3 &a? +U+00E4 &a: +U+00E5 &aa +U+00E6 &ae +U+00E7 &c, +U+00E8 &e! +U+00E9 &e' +U+00EA &e> +U+00EB &e: +U+00EC &i! +U+00ED &i' +U+00EE &i> +U+00EF &i: +U+00F0 &d- +U+00F1 &n? +U+00F2 &o! +U+00F3 &o' +U+00F4 &o> +U+00F5 &o? +U+00F6 &o: +U+00F7 &-: +U+00F8 &o/ +U+00F9 &u! +U+00FA &u' +U+00FB &u> +U+00FC &u: +U+00FD &y' +U+00FE &th +U+00FF &y: diff --git a/support/utf2any/test/maketest b/support/utf2any/test/maketest new file mode 100755 index 0000000000..5e9434184a --- /dev/null +++ b/support/utf2any/test/maketest @@ -0,0 +1,70 @@ +#!/usr/local/bin/perl + +use vars qw($opt_7 $opt_8 $opt_L); +use Getopt::Std; + +@range = ( +# [ 0, 127, 'Controls and Basic Latin' ], + [ 128, 255, 'Controls and Latin-1 Supplement' ], + [ 0x100, 0x17F, 'Latin Extended-A' ], + [ 0x180, 0x24F, 'Latin Extended-B' ], + [ 0x250, 0x2AF, 'IPA Extensions' ], + [ 0x2B0, 0x2FF, 'Spacing Modifier Letters' ], + [ 0x2000, 0x206F, 'General Punctuation' ], + [ 0x20A0, 0x20CF, 'Currency Symbols' ], + [ 0x2100, 0x214F, 'Letterlike Symbols' ], + [ 0x2150, 0x218F, 'Number Forms' ], + [ 0xFB00, 0xFB4F, 'Alphabetic Presentation Forms' ], +); + +$progname = $0; +$progname =~ s!.*/!!; + +getopts('78L'); + +$enc = '-7' if ($opt_7); +$enc = '-8' if ($opt_8); + +if ($enc eq '') { + die <<"EOT"; + +Usage: $progname -7|-8 [-L] + + -7 : Use UTF-7 encoding + -8 : Use UTF-8 encoding + -L : Generate LaTeX file + +EOT +} + +if ($opt_L) { + $format = "\\noindent U+%04X: %s\n"; +} else { + $format = "U+%04X: %s"; +} +$format =~ s/\+/+-/ if ($opt_7); + +if ($opt_L) { + print <<'EOT'; +\documentclass[a4paper,12pt,twocolumn]{article} +\usepackage{textcomp} +\usepackage{eurofont} +\usepackage[T1,tone,safe]{tipa} +\begin{document} +EOT +} + +for $ref (@range) { + $from = $ref->[0]; + $to = $ref->[1]; + $txt = $ref->[2]; + $txt =~ s/\+/+-/g if ($opt_7); + print ($opt_L ? "\\subsubsection*{$txt}\n\n" : "$txt\n\n"); + for ($i = $from; $i <= $to; $i++) { + $utf = `utfcode $enc 120 $i 120`; + printf ($format, $i, $utf); + } + print "\n" unless ($opt_L); +} + +print "\\end{document}\n" if ($opt_L); diff --git a/support/utf2any/test/tst-latex.utf7 b/support/utf2any/test/tst-latex.utf7 new file mode 100644 index 0000000000..bb0b1fef73 --- /dev/null +++ b/support/utf2any/test/tst-latex.utf7 @@ -0,0 +1,2074 @@ +\documentclass[a4paper,12pt,twocolumn]{article} +\usepackage{textcomp} +\usepackage{eurofont} +\usepackage[T1,tone,safe]{tipa} +\begin{document} +\subsubsection*{Controls and Latin-1 Supplement} + +\noindent U+-0080: +AHgAgAB4- + +\noindent U+-0081: +AHgAgQB4- + +\noindent U+-0082: +AHgAggB4- + +\noindent U+-0083: +AHgAgwB4- + +\noindent U+-0084: +AHgAhAB4- + +\noindent U+-0085: +AHgAhQB4- + +\noindent U+-0086: +AHgAhgB4- + +\noindent U+-0087: +AHgAhwB4- + +\noindent U+-0088: +AHgAiAB4- + +\noindent U+-0089: +AHgAiQB4- + +\noindent U+-008A: +AHgAigB4- + +\noindent U+-008B: +AHgAiwB4- + +\noindent U+-008C: +AHgAjAB4- + +\noindent U+-008D: +AHgAjQB4- + +\noindent U+-008E: +AHgAjgB4- + +\noindent U+-008F: +AHgAjwB4- + +\noindent U+-0090: +AHgAkAB4- + +\noindent U+-0091: +AHgAkQB4- + +\noindent U+-0092: +AHgAkgB4- + +\noindent U+-0093: +AHgAkwB4- + +\noindent U+-0094: +AHgAlAB4- + +\noindent U+-0095: +AHgAlQB4- + +\noindent U+-0096: +AHgAlgB4- + +\noindent U+-0097: +AHgAlwB4- + +\noindent U+-0098: +AHgAmAB4- + +\noindent U+-0099: +AHgAmQB4- + +\noindent U+-009A: +AHgAmgB4- + +\noindent U+-009B: +AHgAmwB4- + +\noindent U+-009C: +AHgAnAB4- + +\noindent U+-009D: +AHgAnQB4- + +\noindent U+-009E: +AHgAngB4- + +\noindent U+-009F: +AHgAnwB4- + +\noindent U+-00A0: +AHgAoAB4- + +\noindent U+-00A1: +AHgAoQB4- + +\noindent U+-00A2: +AHgAogB4- + +\noindent U+-00A3: +AHgAowB4- + +\noindent U+-00A4: +AHgApAB4- + +\noindent U+-00A5: +AHgApQB4- + +\noindent U+-00A6: +AHgApgB4- + +\noindent U+-00A7: +AHgApwB4- + +\noindent U+-00A8: +AHgAqAB4- + +\noindent U+-00A9: +AHgAqQB4- + +\noindent U+-00AA: +AHgAqgB4- + +\noindent U+-00AB: +AHgAqwB4- + +\noindent U+-00AC: +AHgArAB4- + +\noindent U+-00AD: +AHgArQB4- + +\noindent U+-00AE: +AHgArgB4- + +\noindent U+-00AF: +AHgArwB4- + +\noindent U+-00B0: +AHgAsAB4- + +\noindent U+-00B1: +AHgAsQB4- + +\noindent U+-00B2: +AHgAsgB4- + +\noindent U+-00B3: +AHgAswB4- + +\noindent U+-00B4: +AHgAtAB4- + +\noindent U+-00B5: +AHgAtQB4- + +\noindent U+-00B6: +AHgAtgB4- + +\noindent U+-00B7: +AHgAtwB4- + +\noindent U+-00B8: +AHgAuAB4- + +\noindent U+-00B9: +AHgAuQB4- + +\noindent U+-00BA: +AHgAugB4- + +\noindent U+-00BB: +AHgAuwB4- + +\noindent U+-00BC: +AHgAvAB4- + +\noindent U+-00BD: +AHgAvQB4- + +\noindent U+-00BE: +AHgAvgB4- + +\noindent U+-00BF: +AHgAvwB4- + +\noindent U+-00C0: +AHgAwAB4- + +\noindent U+-00C1: +AHgAwQB4- + +\noindent U+-00C2: +AHgAwgB4- + +\noindent U+-00C3: +AHgAwwB4- + +\noindent U+-00C4: +AHgAxAB4- + +\noindent U+-00C5: +AHgAxQB4- + +\noindent U+-00C6: +AHgAxgB4- + +\noindent U+-00C7: +AHgAxwB4- + +\noindent U+-00C8: +AHgAyAB4- + +\noindent U+-00C9: +AHgAyQB4- + +\noindent U+-00CA: +AHgAygB4- + +\noindent U+-00CB: +AHgAywB4- + +\noindent U+-00CC: +AHgAzAB4- + +\noindent U+-00CD: +AHgAzQB4- + +\noindent U+-00CE: +AHgAzgB4- + +\noindent U+-00CF: +AHgAzwB4- + +\noindent U+-00D0: +AHgA0AB4- + +\noindent U+-00D1: +AHgA0QB4- + +\noindent U+-00D2: +AHgA0gB4- + +\noindent U+-00D3: +AHgA0wB4- + +\noindent U+-00D4: +AHgA1AB4- + +\noindent U+-00D5: +AHgA1QB4- + +\noindent U+-00D6: +AHgA1gB4- + +\noindent U+-00D7: +AHgA1wB4- + +\noindent U+-00D8: +AHgA2AB4- + +\noindent U+-00D9: +AHgA2QB4- + +\noindent U+-00DA: +AHgA2gB4- + +\noindent U+-00DB: +AHgA2wB4- + +\noindent U+-00DC: +AHgA3AB4- + +\noindent U+-00DD: +AHgA3QB4- + +\noindent U+-00DE: +AHgA3gB4- + +\noindent U+-00DF: +AHgA3wB4- + +\noindent U+-00E0: +AHgA4AB4- + +\noindent U+-00E1: +AHgA4QB4- + +\noindent U+-00E2: +AHgA4gB4- + +\noindent U+-00E3: +AHgA4wB4- + +\noindent U+-00E4: +AHgA5AB4- + +\noindent U+-00E5: +AHgA5QB4- + +\noindent U+-00E6: +AHgA5gB4- + +\noindent U+-00E7: +AHgA5wB4- + +\noindent U+-00E8: +AHgA6AB4- + +\noindent U+-00E9: +AHgA6QB4- + +\noindent U+-00EA: +AHgA6gB4- + +\noindent U+-00EB: +AHgA6wB4- + +\noindent U+-00EC: +AHgA7AB4- + +\noindent U+-00ED: +AHgA7QB4- + +\noindent U+-00EE: +AHgA7gB4- + +\noindent U+-00EF: +AHgA7wB4- + +\noindent U+-00F0: +AHgA8AB4- + +\noindent U+-00F1: +AHgA8QB4- + +\noindent U+-00F2: +AHgA8gB4- + +\noindent U+-00F3: +AHgA8wB4- + +\noindent U+-00F4: +AHgA9AB4- + +\noindent U+-00F5: +AHgA9QB4- + +\noindent U+-00F6: +AHgA9gB4- + +\noindent U+-00F7: +AHgA9wB4- + +\noindent U+-00F8: +AHgA+AB4- + +\noindent U+-00F9: +AHgA+QB4- + +\noindent U+-00FA: +AHgA+gB4- + +\noindent U+-00FB: +AHgA+wB4- + +\noindent U+-00FC: +AHgA/AB4- + +\noindent U+-00FD: +AHgA/QB4- + +\noindent U+-00FE: +AHgA/gB4- + +\noindent U+-00FF: +AHgA/wB4- + +\subsubsection*{Latin Extended-A} + +\noindent U+-0100: +AHgBAAB4- + +\noindent U+-0101: +AHgBAQB4- + +\noindent U+-0102: +AHgBAgB4- + +\noindent U+-0103: +AHgBAwB4- + +\noindent U+-0104: +AHgBBAB4- + +\noindent U+-0105: +AHgBBQB4- + +\noindent U+-0106: +AHgBBgB4- + +\noindent U+-0107: +AHgBBwB4- + +\noindent U+-0108: +AHgBCAB4- + +\noindent U+-0109: +AHgBCQB4- + +\noindent U+-010A: +AHgBCgB4- + +\noindent U+-010B: +AHgBCwB4- + +\noindent U+-010C: +AHgBDAB4- + +\noindent U+-010D: +AHgBDQB4- + +\noindent U+-010E: +AHgBDgB4- + +\noindent U+-010F: +AHgBDwB4- + +\noindent U+-0110: +AHgBEAB4- + +\noindent U+-0111: +AHgBEQB4- + +\noindent U+-0112: +AHgBEgB4- + +\noindent U+-0113: +AHgBEwB4- + +\noindent U+-0114: +AHgBFAB4- + +\noindent U+-0115: +AHgBFQB4- + +\noindent U+-0116: +AHgBFgB4- + +\noindent U+-0117: +AHgBFwB4- + +\noindent U+-0118: +AHgBGAB4- + +\noindent U+-0119: +AHgBGQB4- + +\noindent U+-011A: +AHgBGgB4- + +\noindent U+-011B: +AHgBGwB4- + +\noindent U+-011C: +AHgBHAB4- + +\noindent U+-011D: +AHgBHQB4- + +\noindent U+-011E: +AHgBHgB4- + +\noindent U+-011F: +AHgBHwB4- + +\noindent U+-0120: +AHgBIAB4- + +\noindent U+-0121: +AHgBIQB4- + +\noindent U+-0122: +AHgBIgB4- + +\noindent U+-0123: +AHgBIwB4- + +\noindent U+-0124: +AHgBJAB4- + +\noindent U+-0125: +AHgBJQB4- + +\noindent U+-0126: +AHgBJgB4- + +\noindent U+-0127: +AHgBJwB4- + +\noindent U+-0128: +AHgBKAB4- + +\noindent U+-0129: +AHgBKQB4- + +\noindent U+-012A: +AHgBKgB4- + +\noindent U+-012B: +AHgBKwB4- + +\noindent U+-012C: +AHgBLAB4- + +\noindent U+-012D: +AHgBLQB4- + +\noindent U+-012E: +AHgBLgB4- + +\noindent U+-012F: +AHgBLwB4- + +\noindent U+-0130: +AHgBMAB4- + +\noindent U+-0131: +AHgBMQB4- + +\noindent U+-0132: +AHgBMgB4- + +\noindent U+-0133: +AHgBMwB4- + +\noindent U+-0134: +AHgBNAB4- + +\noindent U+-0135: +AHgBNQB4- + +\noindent U+-0136: +AHgBNgB4- + +\noindent U+-0137: +AHgBNwB4- + +\noindent U+-0138: +AHgBOAB4- + +\noindent U+-0139: +AHgBOQB4- + +\noindent U+-013A: +AHgBOgB4- + +\noindent U+-013B: +AHgBOwB4- + +\noindent U+-013C: +AHgBPAB4- + +\noindent U+-013D: +AHgBPQB4- + +\noindent U+-013E: +AHgBPgB4- + +\noindent U+-013F: +AHgBPwB4- + +\noindent U+-0140: +AHgBQAB4- + +\noindent U+-0141: +AHgBQQB4- + +\noindent U+-0142: +AHgBQgB4- + +\noindent U+-0143: +AHgBQwB4- + +\noindent U+-0144: +AHgBRAB4- + +\noindent U+-0145: +AHgBRQB4- + +\noindent U+-0146: +AHgBRgB4- + +\noindent U+-0147: +AHgBRwB4- + +\noindent U+-0148: +AHgBSAB4- + +\noindent U+-0149: +AHgBSQB4- + +\noindent U+-014A: +AHgBSgB4- + +\noindent U+-014B: +AHgBSwB4- + +\noindent U+-014C: +AHgBTAB4- + +\noindent U+-014D: +AHgBTQB4- + +\noindent U+-014E: +AHgBTgB4- + +\noindent U+-014F: +AHgBTwB4- + +\noindent U+-0150: +AHgBUAB4- + +\noindent U+-0151: +AHgBUQB4- + +\noindent U+-0152: +AHgBUgB4- + +\noindent U+-0153: +AHgBUwB4- + +\noindent U+-0154: +AHgBVAB4- + +\noindent U+-0155: +AHgBVQB4- + +\noindent U+-0156: +AHgBVgB4- + +\noindent U+-0157: +AHgBVwB4- + +\noindent U+-0158: +AHgBWAB4- + +\noindent U+-0159: +AHgBWQB4- + +\noindent U+-015A: +AHgBWgB4- + +\noindent U+-015B: +AHgBWwB4- + +\noindent U+-015C: +AHgBXAB4- + +\noindent U+-015D: +AHgBXQB4- + +\noindent U+-015E: +AHgBXgB4- + +\noindent U+-015F: +AHgBXwB4- + +\noindent U+-0160: +AHgBYAB4- + +\noindent U+-0161: +AHgBYQB4- + +\noindent U+-0162: +AHgBYgB4- + +\noindent U+-0163: +AHgBYwB4- + +\noindent U+-0164: +AHgBZAB4- + +\noindent U+-0165: +AHgBZQB4- + +\noindent U+-0166: +AHgBZgB4- + +\noindent U+-0167: +AHgBZwB4- + +\noindent U+-0168: +AHgBaAB4- + +\noindent U+-0169: +AHgBaQB4- + +\noindent U+-016A: +AHgBagB4- + +\noindent U+-016B: +AHgBawB4- + +\noindent U+-016C: +AHgBbAB4- + +\noindent U+-016D: +AHgBbQB4- + +\noindent U+-016E: +AHgBbgB4- + +\noindent U+-016F: +AHgBbwB4- + +\noindent U+-0170: +AHgBcAB4- + +\noindent U+-0171: +AHgBcQB4- + +\noindent U+-0172: +AHgBcgB4- + +\noindent U+-0173: +AHgBcwB4- + +\noindent U+-0174: +AHgBdAB4- + +\noindent U+-0175: +AHgBdQB4- + +\noindent U+-0176: +AHgBdgB4- + +\noindent U+-0177: +AHgBdwB4- + +\noindent U+-0178: +AHgBeAB4- + +\noindent U+-0179: +AHgBeQB4- + +\noindent U+-017A: +AHgBegB4- + +\noindent U+-017B: +AHgBewB4- + +\noindent U+-017C: +AHgBfAB4- + +\noindent U+-017D: +AHgBfQB4- + +\noindent U+-017E: +AHgBfgB4- + +\noindent U+-017F: +AHgBfwB4- + +\subsubsection*{Latin Extended-B} + +\noindent U+-0180: +AHgBgAB4- + +\noindent U+-0181: +AHgBgQB4- + +\noindent U+-0182: +AHgBggB4- + +\noindent U+-0183: +AHgBgwB4- + +\noindent U+-0184: +AHgBhAB4- + +\noindent U+-0185: +AHgBhQB4- + +\noindent U+-0186: +AHgBhgB4- + +\noindent U+-0187: +AHgBhwB4- + +\noindent U+-0188: +AHgBiAB4- + +\noindent U+-0189: +AHgBiQB4- + +\noindent U+-018A: +AHgBigB4- + +\noindent U+-018B: +AHgBiwB4- + +\noindent U+-018C: +AHgBjAB4- + +\noindent U+-018D: +AHgBjQB4- + +\noindent U+-018E: +AHgBjgB4- + +\noindent U+-018F: +AHgBjwB4- + +\noindent U+-0190: +AHgBkAB4- + +\noindent U+-0191: +AHgBkQB4- + +\noindent U+-0192: +AHgBkgB4- + +\noindent U+-0193: +AHgBkwB4- + +\noindent U+-0194: +AHgBlAB4- + +\noindent U+-0195: +AHgBlQB4- + +\noindent U+-0196: +AHgBlgB4- + +\noindent U+-0197: +AHgBlwB4- + +\noindent U+-0198: +AHgBmAB4- + +\noindent U+-0199: +AHgBmQB4- + +\noindent U+-019A: +AHgBmgB4- + +\noindent U+-019B: +AHgBmwB4- + +\noindent U+-019C: +AHgBnAB4- + +\noindent U+-019D: +AHgBnQB4- + +\noindent U+-019E: +AHgBngB4- + +\noindent U+-019F: +AHgBnwB4- + +\noindent U+-01A0: +AHgBoAB4- + +\noindent U+-01A1: +AHgBoQB4- + +\noindent U+-01A2: +AHgBogB4- + +\noindent U+-01A3: +AHgBowB4- + +\noindent U+-01A4: +AHgBpAB4- + +\noindent U+-01A5: +AHgBpQB4- + +\noindent U+-01A6: +AHgBpgB4- + +\noindent U+-01A7: +AHgBpwB4- + +\noindent U+-01A8: +AHgBqAB4- + +\noindent U+-01A9: +AHgBqQB4- + +\noindent U+-01AA: +AHgBqgB4- + +\noindent U+-01AB: +AHgBqwB4- + +\noindent U+-01AC: +AHgBrAB4- + +\noindent U+-01AD: +AHgBrQB4- + +\noindent U+-01AE: +AHgBrgB4- + +\noindent U+-01AF: +AHgBrwB4- + +\noindent U+-01B0: +AHgBsAB4- + +\noindent U+-01B1: +AHgBsQB4- + +\noindent U+-01B2: +AHgBsgB4- + +\noindent U+-01B3: +AHgBswB4- + +\noindent U+-01B4: +AHgBtAB4- + +\noindent U+-01B5: +AHgBtQB4- + +\noindent U+-01B6: +AHgBtgB4- + +\noindent U+-01B7: +AHgBtwB4- + +\noindent U+-01B8: +AHgBuAB4- + +\noindent U+-01B9: +AHgBuQB4- + +\noindent U+-01BA: +AHgBugB4- + +\noindent U+-01BB: +AHgBuwB4- + +\noindent U+-01BC: +AHgBvAB4- + +\noindent U+-01BD: +AHgBvQB4- + +\noindent U+-01BE: +AHgBvgB4- + +\noindent U+-01BF: +AHgBvwB4- + +\noindent U+-01C0: +AHgBwAB4- + +\noindent U+-01C1: +AHgBwQB4- + +\noindent U+-01C2: +AHgBwgB4- + +\noindent U+-01C3: +AHgBwwB4- + +\noindent U+-01C4: +AHgBxAB4- + +\noindent U+-01C5: +AHgBxQB4- + +\noindent U+-01C6: +AHgBxgB4- + +\noindent U+-01C7: +AHgBxwB4- + +\noindent U+-01C8: +AHgByAB4- + +\noindent U+-01C9: +AHgByQB4- + +\noindent U+-01CA: +AHgBygB4- + +\noindent U+-01CB: +AHgBywB4- + +\noindent U+-01CC: +AHgBzAB4- + +\noindent U+-01CD: +AHgBzQB4- + +\noindent U+-01CE: +AHgBzgB4- + +\noindent U+-01CF: +AHgBzwB4- + +\noindent U+-01D0: +AHgB0AB4- + +\noindent U+-01D1: +AHgB0QB4- + +\noindent U+-01D2: +AHgB0gB4- + +\noindent U+-01D3: +AHgB0wB4- + +\noindent U+-01D4: +AHgB1AB4- + +\noindent U+-01D5: +AHgB1QB4- + +\noindent U+-01D6: +AHgB1gB4- + +\noindent U+-01D7: +AHgB1wB4- + +\noindent U+-01D8: +AHgB2AB4- + +\noindent U+-01D9: +AHgB2QB4- + +\noindent U+-01DA: +AHgB2gB4- + +\noindent U+-01DB: +AHgB2wB4- + +\noindent U+-01DC: +AHgB3AB4- + +\noindent U+-01DD: +AHgB3QB4- + +\noindent U+-01DE: +AHgB3gB4- + +\noindent U+-01DF: +AHgB3wB4- + +\noindent U+-01E0: +AHgB4AB4- + +\noindent U+-01E1: +AHgB4QB4- + +\noindent U+-01E2: +AHgB4gB4- + +\noindent U+-01E3: +AHgB4wB4- + +\noindent U+-01E4: +AHgB5AB4- + +\noindent U+-01E5: +AHgB5QB4- + +\noindent U+-01E6: +AHgB5gB4- + +\noindent U+-01E7: +AHgB5wB4- + +\noindent U+-01E8: +AHgB6AB4- + +\noindent U+-01E9: +AHgB6QB4- + +\noindent U+-01EA: +AHgB6gB4- + +\noindent U+-01EB: +AHgB6wB4- + +\noindent U+-01EC: +AHgB7AB4- + +\noindent U+-01ED: +AHgB7QB4- + +\noindent U+-01EE: +AHgB7gB4- + +\noindent U+-01EF: +AHgB7wB4- + +\noindent U+-01F0: +AHgB8AB4- + +\noindent U+-01F1: +AHgB8QB4- + +\noindent U+-01F2: +AHgB8gB4- + +\noindent U+-01F3: +AHgB8wB4- + +\noindent U+-01F4: +AHgB9AB4- + +\noindent U+-01F5: +AHgB9QB4- + +\noindent U+-01F6: +AHgB9gB4- + +\noindent U+-01F7: +AHgB9wB4- + +\noindent U+-01F8: +AHgB+AB4- + +\noindent U+-01F9: +AHgB+QB4- + +\noindent U+-01FA: +AHgB+gB4- + +\noindent U+-01FB: +AHgB+wB4- + +\noindent U+-01FC: +AHgB/AB4- + +\noindent U+-01FD: +AHgB/QB4- + +\noindent U+-01FE: +AHgB/gB4- + +\noindent U+-01FF: +AHgB/wB4- + +\noindent U+-0200: +AHgCAAB4- + +\noindent U+-0201: +AHgCAQB4- + +\noindent U+-0202: +AHgCAgB4- + +\noindent U+-0203: +AHgCAwB4- + +\noindent U+-0204: +AHgCBAB4- + +\noindent U+-0205: +AHgCBQB4- + +\noindent U+-0206: +AHgCBgB4- + +\noindent U+-0207: +AHgCBwB4- + +\noindent U+-0208: +AHgCCAB4- + +\noindent U+-0209: +AHgCCQB4- + +\noindent U+-020A: +AHgCCgB4- + +\noindent U+-020B: +AHgCCwB4- + +\noindent U+-020C: +AHgCDAB4- + +\noindent U+-020D: +AHgCDQB4- + +\noindent U+-020E: +AHgCDgB4- + +\noindent U+-020F: +AHgCDwB4- + +\noindent U+-0210: +AHgCEAB4- + +\noindent U+-0211: +AHgCEQB4- + +\noindent U+-0212: +AHgCEgB4- + +\noindent U+-0213: +AHgCEwB4- + +\noindent U+-0214: +AHgCFAB4- + +\noindent U+-0215: +AHgCFQB4- + +\noindent U+-0216: +AHgCFgB4- + +\noindent U+-0217: +AHgCFwB4- + +\noindent U+-0218: +AHgCGAB4- + +\noindent U+-0219: +AHgCGQB4- + +\noindent U+-021A: +AHgCGgB4- + +\noindent U+-021B: +AHgCGwB4- + +\noindent U+-021C: +AHgCHAB4- + +\noindent U+-021D: +AHgCHQB4- + +\noindent U+-021E: +AHgCHgB4- + +\noindent U+-021F: +AHgCHwB4- + +\noindent U+-0220: +AHgCIAB4- + +\noindent U+-0221: +AHgCIQB4- + +\noindent U+-0222: +AHgCIgB4- + +\noindent U+-0223: +AHgCIwB4- + +\noindent U+-0224: +AHgCJAB4- + +\noindent U+-0225: +AHgCJQB4- + +\noindent U+-0226: +AHgCJgB4- + +\noindent U+-0227: +AHgCJwB4- + +\noindent U+-0228: +AHgCKAB4- + +\noindent U+-0229: +AHgCKQB4- + +\noindent U+-022A: +AHgCKgB4- + +\noindent U+-022B: +AHgCKwB4- + +\noindent U+-022C: +AHgCLAB4- + +\noindent U+-022D: +AHgCLQB4- + +\noindent U+-022E: +AHgCLgB4- + +\noindent U+-022F: +AHgCLwB4- + +\noindent U+-0230: +AHgCMAB4- + +\noindent U+-0231: +AHgCMQB4- + +\noindent U+-0232: +AHgCMgB4- + +\noindent U+-0233: +AHgCMwB4- + +\noindent U+-0234: +AHgCNAB4- + +\noindent U+-0235: +AHgCNQB4- + +\noindent U+-0236: +AHgCNgB4- + +\noindent U+-0237: +AHgCNwB4- + +\noindent U+-0238: +AHgCOAB4- + +\noindent U+-0239: +AHgCOQB4- + +\noindent U+-023A: +AHgCOgB4- + +\noindent U+-023B: +AHgCOwB4- + +\noindent U+-023C: +AHgCPAB4- + +\noindent U+-023D: +AHgCPQB4- + +\noindent U+-023E: +AHgCPgB4- + +\noindent U+-023F: +AHgCPwB4- + +\noindent U+-0240: +AHgCQAB4- + +\noindent U+-0241: +AHgCQQB4- + +\noindent U+-0242: +AHgCQgB4- + +\noindent U+-0243: +AHgCQwB4- + +\noindent U+-0244: +AHgCRAB4- + +\noindent U+-0245: +AHgCRQB4- + +\noindent U+-0246: +AHgCRgB4- + +\noindent U+-0247: +AHgCRwB4- + +\noindent U+-0248: +AHgCSAB4- + +\noindent U+-0249: +AHgCSQB4- + +\noindent U+-024A: +AHgCSgB4- + +\noindent U+-024B: +AHgCSwB4- + +\noindent U+-024C: +AHgCTAB4- + +\noindent U+-024D: +AHgCTQB4- + +\noindent U+-024E: +AHgCTgB4- + +\noindent U+-024F: +AHgCTwB4- + +\subsubsection*{IPA Extensions} + +\noindent U+-0250: +AHgCUAB4- + +\noindent U+-0251: +AHgCUQB4- + +\noindent U+-0252: +AHgCUgB4- + +\noindent U+-0253: +AHgCUwB4- + +\noindent U+-0254: +AHgCVAB4- + +\noindent U+-0255: +AHgCVQB4- + +\noindent U+-0256: +AHgCVgB4- + +\noindent U+-0257: +AHgCVwB4- + +\noindent U+-0258: +AHgCWAB4- + +\noindent U+-0259: +AHgCWQB4- + +\noindent U+-025A: +AHgCWgB4- + +\noindent U+-025B: +AHgCWwB4- + +\noindent U+-025C: +AHgCXAB4- + +\noindent U+-025D: +AHgCXQB4- + +\noindent U+-025E: +AHgCXgB4- + +\noindent U+-025F: +AHgCXwB4- + +\noindent U+-0260: +AHgCYAB4- + +\noindent U+-0261: +AHgCYQB4- + +\noindent U+-0262: +AHgCYgB4- + +\noindent U+-0263: +AHgCYwB4- + +\noindent U+-0264: +AHgCZAB4- + +\noindent U+-0265: +AHgCZQB4- + +\noindent U+-0266: +AHgCZgB4- + +\noindent U+-0267: +AHgCZwB4- + +\noindent U+-0268: +AHgCaAB4- + +\noindent U+-0269: +AHgCaQB4- + +\noindent U+-026A: +AHgCagB4- + +\noindent U+-026B: +AHgCawB4- + +\noindent U+-026C: +AHgCbAB4- + +\noindent U+-026D: +AHgCbQB4- + +\noindent U+-026E: +AHgCbgB4- + +\noindent U+-026F: +AHgCbwB4- + +\noindent U+-0270: +AHgCcAB4- + +\noindent U+-0271: +AHgCcQB4- + +\noindent U+-0272: +AHgCcgB4- + +\noindent U+-0273: +AHgCcwB4- + +\noindent U+-0274: +AHgCdAB4- + +\noindent U+-0275: +AHgCdQB4- + +\noindent U+-0276: +AHgCdgB4- + +\noindent U+-0277: +AHgCdwB4- + +\noindent U+-0278: +AHgCeAB4- + +\noindent U+-0279: +AHgCeQB4- + +\noindent U+-027A: +AHgCegB4- + +\noindent U+-027B: +AHgCewB4- + +\noindent U+-027C: +AHgCfAB4- + +\noindent U+-027D: +AHgCfQB4- + +\noindent U+-027E: +AHgCfgB4- + +\noindent U+-027F: +AHgCfwB4- + +\noindent U+-0280: +AHgCgAB4- + +\noindent U+-0281: +AHgCgQB4- + +\noindent U+-0282: +AHgCggB4- + +\noindent U+-0283: +AHgCgwB4- + +\noindent U+-0284: +AHgChAB4- + +\noindent U+-0285: +AHgChQB4- + +\noindent U+-0286: +AHgChgB4- + +\noindent U+-0287: +AHgChwB4- + +\noindent U+-0288: +AHgCiAB4- + +\noindent U+-0289: +AHgCiQB4- + +\noindent U+-028A: +AHgCigB4- + +\noindent U+-028B: +AHgCiwB4- + +\noindent U+-028C: +AHgCjAB4- + +\noindent U+-028D: +AHgCjQB4- + +\noindent U+-028E: +AHgCjgB4- + +\noindent U+-028F: +AHgCjwB4- + +\noindent U+-0290: +AHgCkAB4- + +\noindent U+-0291: +AHgCkQB4- + +\noindent U+-0292: +AHgCkgB4- + +\noindent U+-0293: +AHgCkwB4- + +\noindent U+-0294: +AHgClAB4- + +\noindent U+-0295: +AHgClQB4- + +\noindent U+-0296: +AHgClgB4- + +\noindent U+-0297: +AHgClwB4- + +\noindent U+-0298: +AHgCmAB4- + +\noindent U+-0299: +AHgCmQB4- + +\noindent U+-029A: +AHgCmgB4- + +\noindent U+-029B: +AHgCmwB4- + +\noindent U+-029C: +AHgCnAB4- + +\noindent U+-029D: +AHgCnQB4- + +\noindent U+-029E: +AHgCngB4- + +\noindent U+-029F: +AHgCnwB4- + +\noindent U+-02A0: +AHgCoAB4- + +\noindent U+-02A1: +AHgCoQB4- + +\noindent U+-02A2: +AHgCogB4- + +\noindent U+-02A3: +AHgCowB4- + +\noindent U+-02A4: +AHgCpAB4- + +\noindent U+-02A5: +AHgCpQB4- + +\noindent U+-02A6: +AHgCpgB4- + +\noindent U+-02A7: +AHgCpwB4- + +\noindent U+-02A8: +AHgCqAB4- + +\noindent U+-02A9: +AHgCqQB4- + +\noindent U+-02AA: +AHgCqgB4- + +\noindent U+-02AB: +AHgCqwB4- + +\noindent U+-02AC: +AHgCrAB4- + +\noindent U+-02AD: +AHgCrQB4- + +\noindent U+-02AE: +AHgCrgB4- + +\noindent U+-02AF: +AHgCrwB4- + +\subsubsection*{Spacing Modifier Letters} + +\noindent U+-02B0: +AHgCsAB4- + +\noindent U+-02B1: +AHgCsQB4- + +\noindent U+-02B2: +AHgCsgB4- + +\noindent U+-02B3: +AHgCswB4- + +\noindent U+-02B4: +AHgCtAB4- + +\noindent U+-02B5: +AHgCtQB4- + +\noindent U+-02B6: +AHgCtgB4- + +\noindent U+-02B7: +AHgCtwB4- + +\noindent U+-02B8: +AHgCuAB4- + +\noindent U+-02B9: +AHgCuQB4- + +\noindent U+-02BA: +AHgCugB4- + +\noindent U+-02BB: +AHgCuwB4- + +\noindent U+-02BC: +AHgCvAB4- + +\noindent U+-02BD: +AHgCvQB4- + +\noindent U+-02BE: +AHgCvgB4- + +\noindent U+-02BF: +AHgCvwB4- + +\noindent U+-02C0: +AHgCwAB4- + +\noindent U+-02C1: +AHgCwQB4- + +\noindent U+-02C2: +AHgCwgB4- + +\noindent U+-02C3: +AHgCwwB4- + +\noindent U+-02C4: +AHgCxAB4- + +\noindent U+-02C5: +AHgCxQB4- + +\noindent U+-02C6: +AHgCxgB4- + +\noindent U+-02C7: +AHgCxwB4- + +\noindent U+-02C8: +AHgCyAB4- + +\noindent U+-02C9: +AHgCyQB4- + +\noindent U+-02CA: +AHgCygB4- + +\noindent U+-02CB: +AHgCywB4- + +\noindent U+-02CC: +AHgCzAB4- + +\noindent U+-02CD: +AHgCzQB4- + +\noindent U+-02CE: +AHgCzgB4- + +\noindent U+-02CF: +AHgCzwB4- + +\noindent U+-02D0: +AHgC0AB4- + +\noindent U+-02D1: +AHgC0QB4- + +\noindent U+-02D2: +AHgC0gB4- + +\noindent U+-02D3: +AHgC0wB4- + +\noindent U+-02D4: +AHgC1AB4- + +\noindent U+-02D5: +AHgC1QB4- + +\noindent U+-02D6: +AHgC1gB4- + +\noindent U+-02D7: +AHgC1wB4- + +\noindent U+-02D8: +AHgC2AB4- + +\noindent U+-02D9: +AHgC2QB4- + +\noindent U+-02DA: +AHgC2gB4- + +\noindent U+-02DB: +AHgC2wB4- + +\noindent U+-02DC: +AHgC3AB4- + +\noindent U+-02DD: +AHgC3QB4- + +\noindent U+-02DE: +AHgC3gB4- + +\noindent U+-02DF: +AHgC3wB4- + +\noindent U+-02E0: +AHgC4AB4- + +\noindent U+-02E1: +AHgC4QB4- + +\noindent U+-02E2: +AHgC4gB4- + +\noindent U+-02E3: +AHgC4wB4- + +\noindent U+-02E4: +AHgC5AB4- + +\noindent U+-02E5: +AHgC5QB4- + +\noindent U+-02E6: +AHgC5gB4- + +\noindent U+-02E7: +AHgC5wB4- + +\noindent U+-02E8: +AHgC6AB4- + +\noindent U+-02E9: +AHgC6QB4- + +\noindent U+-02EA: +AHgC6gB4- + +\noindent U+-02EB: +AHgC6wB4- + +\noindent U+-02EC: +AHgC7AB4- + +\noindent U+-02ED: +AHgC7QB4- + +\noindent U+-02EE: +AHgC7gB4- + +\noindent U+-02EF: +AHgC7wB4- + +\noindent U+-02F0: +AHgC8AB4- + +\noindent U+-02F1: +AHgC8QB4- + +\noindent U+-02F2: +AHgC8gB4- + +\noindent U+-02F3: +AHgC8wB4- + +\noindent U+-02F4: +AHgC9AB4- + +\noindent U+-02F5: +AHgC9QB4- + +\noindent U+-02F6: +AHgC9gB4- + +\noindent U+-02F7: +AHgC9wB4- + +\noindent U+-02F8: +AHgC+AB4- + +\noindent U+-02F9: +AHgC+QB4- + +\noindent U+-02FA: +AHgC+gB4- + +\noindent U+-02FB: +AHgC+wB4- + +\noindent U+-02FC: +AHgC/AB4- + +\noindent U+-02FD: +AHgC/QB4- + +\noindent U+-02FE: +AHgC/gB4- + +\noindent U+-02FF: +AHgC/wB4- + +\subsubsection*{General Punctuation} + +\noindent U+-2000: +AHggAAB4- + +\noindent U+-2001: +AHggAQB4- + +\noindent U+-2002: +AHggAgB4- + +\noindent U+-2003: +AHggAwB4- + +\noindent U+-2004: +AHggBAB4- + +\noindent U+-2005: +AHggBQB4- + +\noindent U+-2006: +AHggBgB4- + +\noindent U+-2007: +AHggBwB4- + +\noindent U+-2008: +AHggCAB4- + +\noindent U+-2009: +AHggCQB4- + +\noindent U+-200A: +AHggCgB4- + +\noindent U+-200B: +AHggCwB4- + +\noindent U+-200C: +AHggDAB4- + +\noindent U+-200D: +AHggDQB4- + +\noindent U+-200E: +AHggDgB4- + +\noindent U+-200F: +AHggDwB4- + +\noindent U+-2010: +AHggEAB4- + +\noindent U+-2011: +AHggEQB4- + +\noindent U+-2012: +AHggEgB4- + +\noindent U+-2013: +AHggEwB4- + +\noindent U+-2014: +AHggFAB4- + +\noindent U+-2015: +AHggFQB4- + +\noindent U+-2016: +AHggFgB4- + +\noindent U+-2017: +AHggFwB4- + +\noindent U+-2018: +AHggGAB4- + +\noindent U+-2019: +AHggGQB4- + +\noindent U+-201A: +AHggGgB4- + +\noindent U+-201B: +AHggGwB4- + +\noindent U+-201C: +AHggHAB4- + +\noindent U+-201D: +AHggHQB4- + +\noindent U+-201E: +AHggHgB4- + +\noindent U+-201F: +AHggHwB4- + +\noindent U+-2020: +AHggIAB4- + +\noindent U+-2021: +AHggIQB4- + +\noindent U+-2022: +AHggIgB4- + +\noindent U+-2023: +AHggIwB4- + +\noindent U+-2024: +AHggJAB4- + +\noindent U+-2025: +AHggJQB4- + +\noindent U+-2026: +AHggJgB4- + +\noindent U+-2027: +AHggJwB4- + +\noindent U+-2028: +AHggKAB4- + +\noindent U+-2029: +AHggKQB4- + +\noindent U+-202A: +AHggKgB4- + +\noindent U+-202B: +AHggKwB4- + +\noindent U+-202C: +AHggLAB4- + +\noindent U+-202D: +AHggLQB4- + +\noindent U+-202E: +AHggLgB4- + +\noindent U+-202F: +AHggLwB4- + +\noindent U+-2030: +AHggMAB4- + +\noindent U+-2031: +AHggMQB4- + +\noindent U+-2032: +AHggMgB4- + +\noindent U+-2033: +AHggMwB4- + +\noindent U+-2034: +AHggNAB4- + +\noindent U+-2035: +AHggNQB4- + +\noindent U+-2036: +AHggNgB4- + +\noindent U+-2037: +AHggNwB4- + +\noindent U+-2038: +AHggOAB4- + +\noindent U+-2039: +AHggOQB4- + +\noindent U+-203A: +AHggOgB4- + +\noindent U+-203B: +AHggOwB4- + +\noindent U+-203C: +AHggPAB4- + +\noindent U+-203D: +AHggPQB4- + +\noindent U+-203E: +AHggPgB4- + +\noindent U+-203F: +AHggPwB4- + +\noindent U+-2040: +AHggQAB4- + +\noindent U+-2041: +AHggQQB4- + +\noindent U+-2042: +AHggQgB4- + +\noindent U+-2043: +AHggQwB4- + +\noindent U+-2044: +AHggRAB4- + +\noindent U+-2045: +AHggRQB4- + +\noindent U+-2046: +AHggRgB4- + +\noindent U+-2047: +AHggRwB4- + +\noindent U+-2048: +AHggSAB4- + +\noindent U+-2049: +AHggSQB4- + +\noindent U+-204A: +AHggSgB4- + +\noindent U+-204B: +AHggSwB4- + +\noindent U+-204C: +AHggTAB4- + +\noindent U+-204D: +AHggTQB4- + +\noindent U+-204E: +AHggTgB4- + +\noindent U+-204F: +AHggTwB4- + +\noindent U+-2050: +AHggUAB4- + +\noindent U+-2051: +AHggUQB4- + +\noindent U+-2052: +AHggUgB4- + +\noindent U+-2053: +AHggUwB4- + +\noindent U+-2054: +AHggVAB4- + +\noindent U+-2055: +AHggVQB4- + +\noindent U+-2056: +AHggVgB4- + +\noindent U+-2057: +AHggVwB4- + +\noindent U+-2058: +AHggWAB4- + +\noindent U+-2059: +AHggWQB4- + +\noindent U+-205A: +AHggWgB4- + +\noindent U+-205B: +AHggWwB4- + +\noindent U+-205C: +AHggXAB4- + +\noindent U+-205D: +AHggXQB4- + +\noindent U+-205E: +AHggXgB4- + +\noindent U+-205F: +AHggXwB4- + +\noindent U+-2060: +AHggYAB4- + +\noindent U+-2061: +AHggYQB4- + +\noindent U+-2062: +AHggYgB4- + +\noindent U+-2063: +AHggYwB4- + +\noindent U+-2064: +AHggZAB4- + +\noindent U+-2065: +AHggZQB4- + +\noindent U+-2066: +AHggZgB4- + +\noindent U+-2067: +AHggZwB4- + +\noindent U+-2068: +AHggaAB4- + +\noindent U+-2069: +AHggaQB4- + +\noindent U+-206A: +AHggagB4- + +\noindent U+-206B: +AHggawB4- + +\noindent U+-206C: +AHggbAB4- + +\noindent U+-206D: +AHggbQB4- + +\noindent U+-206E: +AHggbgB4- + +\noindent U+-206F: +AHggbwB4- + +\subsubsection*{Currency Symbols} + +\noindent U+-20A0: +AHggoAB4- + +\noindent U+-20A1: +AHggoQB4- + +\noindent U+-20A2: +AHggogB4- + +\noindent U+-20A3: +AHggowB4- + +\noindent U+-20A4: +AHggpAB4- + +\noindent U+-20A5: +AHggpQB4- + +\noindent U+-20A6: +AHggpgB4- + +\noindent U+-20A7: +AHggpwB4- + +\noindent U+-20A8: +AHggqAB4- + +\noindent U+-20A9: +AHggqQB4- + +\noindent U+-20AA: +AHggqgB4- + +\noindent U+-20AB: +AHggqwB4- + +\noindent U+-20AC: +AHggrAB4- + +\noindent U+-20AD: +AHggrQB4- + +\noindent U+-20AE: +AHggrgB4- + +\noindent U+-20AF: +AHggrwB4- + +\noindent U+-20B0: +AHggsAB4- + +\noindent U+-20B1: +AHggsQB4- + +\noindent U+-20B2: +AHggsgB4- + +\noindent U+-20B3: +AHggswB4- + +\noindent U+-20B4: +AHggtAB4- + +\noindent U+-20B5: +AHggtQB4- + +\noindent U+-20B6: +AHggtgB4- + +\noindent U+-20B7: +AHggtwB4- + +\noindent U+-20B8: +AHgguAB4- + +\noindent U+-20B9: +AHgguQB4- + +\noindent U+-20BA: +AHggugB4- + +\noindent U+-20BB: +AHgguwB4- + +\noindent U+-20BC: +AHggvAB4- + +\noindent U+-20BD: +AHggvQB4- + +\noindent U+-20BE: +AHggvgB4- + +\noindent U+-20BF: +AHggvwB4- + +\noindent U+-20C0: +AHggwAB4- + +\noindent U+-20C1: +AHggwQB4- + +\noindent U+-20C2: +AHggwgB4- + +\noindent U+-20C3: +AHggwwB4- + +\noindent U+-20C4: +AHggxAB4- + +\noindent U+-20C5: +AHggxQB4- + +\noindent U+-20C6: +AHggxgB4- + +\noindent U+-20C7: +AHggxwB4- + +\noindent U+-20C8: +AHggyAB4- + +\noindent U+-20C9: +AHggyQB4- + +\noindent U+-20CA: +AHggygB4- + +\noindent U+-20CB: +AHggywB4- + +\noindent U+-20CC: +AHggzAB4- + +\noindent U+-20CD: +AHggzQB4- + +\noindent U+-20CE: +AHggzgB4- + +\noindent U+-20CF: +AHggzwB4- + +\subsubsection*{Letterlike Symbols} + +\noindent U+-2100: +AHghAAB4- + +\noindent U+-2101: +AHghAQB4- + +\noindent U+-2102: +AHghAgB4- + +\noindent U+-2103: +AHghAwB4- + +\noindent U+-2104: +AHghBAB4- + +\noindent U+-2105: +AHghBQB4- + +\noindent U+-2106: +AHghBgB4- + +\noindent U+-2107: +AHghBwB4- + +\noindent U+-2108: +AHghCAB4- + +\noindent U+-2109: +AHghCQB4- + +\noindent U+-210A: +AHghCgB4- + +\noindent U+-210B: +AHghCwB4- + +\noindent U+-210C: +AHghDAB4- + +\noindent U+-210D: +AHghDQB4- + +\noindent U+-210E: +AHghDgB4- + +\noindent U+-210F: +AHghDwB4- + +\noindent U+-2110: +AHghEAB4- + +\noindent U+-2111: +AHghEQB4- + +\noindent U+-2112: +AHghEgB4- + +\noindent U+-2113: +AHghEwB4- + +\noindent U+-2114: +AHghFAB4- + +\noindent U+-2115: +AHghFQB4- + +\noindent U+-2116: +AHghFgB4- + +\noindent U+-2117: +AHghFwB4- + +\noindent U+-2118: +AHghGAB4- + +\noindent U+-2119: +AHghGQB4- + +\noindent U+-211A: +AHghGgB4- + +\noindent U+-211B: +AHghGwB4- + +\noindent U+-211C: +AHghHAB4- + +\noindent U+-211D: +AHghHQB4- + +\noindent U+-211E: +AHghHgB4- + +\noindent U+-211F: +AHghHwB4- + +\noindent U+-2120: +AHghIAB4- + +\noindent U+-2121: +AHghIQB4- + +\noindent U+-2122: +AHghIgB4- + +\noindent U+-2123: +AHghIwB4- + +\noindent U+-2124: +AHghJAB4- + +\noindent U+-2125: +AHghJQB4- + +\noindent U+-2126: +AHghJgB4- + +\noindent U+-2127: +AHghJwB4- + +\noindent U+-2128: +AHghKAB4- + +\noindent U+-2129: +AHghKQB4- + +\noindent U+-212A: +AHghKgB4- + +\noindent U+-212B: +AHghKwB4- + +\noindent U+-212C: +AHghLAB4- + +\noindent U+-212D: +AHghLQB4- + +\noindent U+-212E: +AHghLgB4- + +\noindent U+-212F: +AHghLwB4- + +\noindent U+-2130: +AHghMAB4- + +\noindent U+-2131: +AHghMQB4- + +\noindent U+-2132: +AHghMgB4- + +\noindent U+-2133: +AHghMwB4- + +\noindent U+-2134: +AHghNAB4- + +\noindent U+-2135: +AHghNQB4- + +\noindent U+-2136: +AHghNgB4- + +\noindent U+-2137: +AHghNwB4- + +\noindent U+-2138: +AHghOAB4- + +\noindent U+-2139: +AHghOQB4- + +\noindent U+-213A: +AHghOgB4- + +\noindent U+-213B: +AHghOwB4- + +\noindent U+-213C: +AHghPAB4- + +\noindent U+-213D: +AHghPQB4- + +\noindent U+-213E: +AHghPgB4- + +\noindent U+-213F: +AHghPwB4- + +\noindent U+-2140: +AHghQAB4- + +\noindent U+-2141: +AHghQQB4- + +\noindent U+-2142: +AHghQgB4- + +\noindent U+-2143: +AHghQwB4- + +\noindent U+-2144: +AHghRAB4- + +\noindent U+-2145: +AHghRQB4- + +\noindent U+-2146: +AHghRgB4- + +\noindent U+-2147: +AHghRwB4- + +\noindent U+-2148: +AHghSAB4- + +\noindent U+-2149: +AHghSQB4- + +\noindent U+-214A: +AHghSgB4- + +\noindent U+-214B: +AHghSwB4- + +\noindent U+-214C: +AHghTAB4- + +\noindent U+-214D: +AHghTQB4- + +\noindent U+-214E: +AHghTgB4- + +\noindent U+-214F: +AHghTwB4- + +\subsubsection*{Number Forms} + +\noindent U+-2150: +AHghUAB4- + +\noindent U+-2151: +AHghUQB4- + +\noindent U+-2152: +AHghUgB4- + +\noindent U+-2153: +AHghUwB4- + +\noindent U+-2154: +AHghVAB4- + +\noindent U+-2155: +AHghVQB4- + +\noindent U+-2156: +AHghVgB4- + +\noindent U+-2157: +AHghVwB4- + +\noindent U+-2158: +AHghWAB4- + +\noindent U+-2159: +AHghWQB4- + +\noindent U+-215A: +AHghWgB4- + +\noindent U+-215B: +AHghWwB4- + +\noindent U+-215C: +AHghXAB4- + +\noindent U+-215D: +AHghXQB4- + +\noindent U+-215E: +AHghXgB4- + +\noindent U+-215F: +AHghXwB4- + +\noindent U+-2160: +AHghYAB4- + +\noindent U+-2161: +AHghYQB4- + +\noindent U+-2162: +AHghYgB4- + +\noindent U+-2163: +AHghYwB4- + +\noindent U+-2164: +AHghZAB4- + +\noindent U+-2165: +AHghZQB4- + +\noindent U+-2166: +AHghZgB4- + +\noindent U+-2167: +AHghZwB4- + +\noindent U+-2168: +AHghaAB4- + +\noindent U+-2169: +AHghaQB4- + +\noindent U+-216A: +AHghagB4- + +\noindent U+-216B: +AHghawB4- + +\noindent U+-216C: +AHghbAB4- + +\noindent U+-216D: +AHghbQB4- + +\noindent U+-216E: +AHghbgB4- + +\noindent U+-216F: +AHghbwB4- + +\noindent U+-2170: +AHghcAB4- + +\noindent U+-2171: +AHghcQB4- + +\noindent U+-2172: +AHghcgB4- + +\noindent U+-2173: +AHghcwB4- + +\noindent U+-2174: +AHghdAB4- + +\noindent U+-2175: +AHghdQB4- + +\noindent U+-2176: +AHghdgB4- + +\noindent U+-2177: +AHghdwB4- + +\noindent U+-2178: +AHgheAB4- + +\noindent U+-2179: +AHgheQB4- + +\noindent U+-217A: +AHghegB4- + +\noindent U+-217B: +AHghewB4- + +\noindent U+-217C: +AHghfAB4- + +\noindent U+-217D: +AHghfQB4- + +\noindent U+-217E: +AHghfgB4- + +\noindent U+-217F: +AHghfwB4- + +\noindent U+-2180: +AHghgAB4- + +\noindent U+-2181: +AHghgQB4- + +\noindent U+-2182: +AHghggB4- + +\noindent U+-2183: +AHghgwB4- + +\noindent U+-2184: +AHghhAB4- + +\noindent U+-2185: +AHghhQB4- + +\noindent U+-2186: +AHghhgB4- + +\noindent U+-2187: +AHghhwB4- + +\noindent U+-2188: +AHghiAB4- + +\noindent U+-2189: +AHghiQB4- + +\noindent U+-218A: +AHghigB4- + +\noindent U+-218B: +AHghiwB4- + +\noindent U+-218C: +AHghjAB4- + +\noindent U+-218D: +AHghjQB4- + +\noindent U+-218E: +AHghjgB4- + +\noindent U+-218F: +AHghjwB4- + +\subsubsection*{Alphabetic Presentation Forms} + +\noindent U+-FB00: +AHj7AAB4- + +\noindent U+-FB01: +AHj7AQB4- + +\noindent U+-FB02: +AHj7AgB4- + +\noindent U+-FB03: +AHj7AwB4- + +\noindent U+-FB04: +AHj7BAB4- + +\noindent U+-FB05: +AHj7BQB4- + +\noindent U+-FB06: +AHj7BgB4- + +\noindent U+-FB07: +AHj7BwB4- + +\noindent U+-FB08: +AHj7CAB4- + +\noindent U+-FB09: +AHj7CQB4- + +\noindent U+-FB0A: +AHj7CgB4- + +\noindent U+-FB0B: +AHj7CwB4- + +\noindent U+-FB0C: +AHj7DAB4- + +\noindent U+-FB0D: +AHj7DQB4- + +\noindent U+-FB0E: +AHj7DgB4- + +\noindent U+-FB0F: +AHj7DwB4- + +\noindent U+-FB10: +AHj7EAB4- + +\noindent U+-FB11: +AHj7EQB4- + +\noindent U+-FB12: +AHj7EgB4- + +\noindent U+-FB13: +AHj7EwB4- + +\noindent U+-FB14: +AHj7FAB4- + +\noindent U+-FB15: +AHj7FQB4- + +\noindent U+-FB16: +AHj7FgB4- + +\noindent U+-FB17: +AHj7FwB4- + +\noindent U+-FB18: +AHj7GAB4- + +\noindent U+-FB19: +AHj7GQB4- + +\noindent U+-FB1A: +AHj7GgB4- + +\noindent U+-FB1B: +AHj7GwB4- + +\noindent U+-FB1C: +AHj7HAB4- + +\noindent U+-FB1D: +AHj7HQB4- + +\noindent U+-FB1E: +AHj7HgB4- + +\noindent U+-FB1F: +AHj7HwB4- + +\noindent U+-FB20: +AHj7IAB4- + +\noindent U+-FB21: +AHj7IQB4- + +\noindent U+-FB22: +AHj7IgB4- + +\noindent U+-FB23: +AHj7IwB4- + +\noindent U+-FB24: +AHj7JAB4- + +\noindent U+-FB25: +AHj7JQB4- + +\noindent U+-FB26: +AHj7JgB4- + +\noindent U+-FB27: +AHj7JwB4- + +\noindent U+-FB28: +AHj7KAB4- + +\noindent U+-FB29: +AHj7KQB4- + +\noindent U+-FB2A: +AHj7KgB4- + +\noindent U+-FB2B: +AHj7KwB4- + +\noindent U+-FB2C: +AHj7LAB4- + +\noindent U+-FB2D: +AHj7LQB4- + +\noindent U+-FB2E: +AHj7LgB4- + +\noindent U+-FB2F: +AHj7LwB4- + +\noindent U+-FB30: +AHj7MAB4- + +\noindent U+-FB31: +AHj7MQB4- + +\noindent U+-FB32: +AHj7MgB4- + +\noindent U+-FB33: +AHj7MwB4- + +\noindent U+-FB34: +AHj7NAB4- + +\noindent U+-FB35: +AHj7NQB4- + +\noindent U+-FB36: +AHj7NgB4- + +\noindent U+-FB37: +AHj7NwB4- + +\noindent U+-FB38: +AHj7OAB4- + +\noindent U+-FB39: +AHj7OQB4- + +\noindent U+-FB3A: +AHj7OgB4- + +\noindent U+-FB3B: +AHj7OwB4- + +\noindent U+-FB3C: +AHj7PAB4- + +\noindent U+-FB3D: +AHj7PQB4- + +\noindent U+-FB3E: +AHj7PgB4- + +\noindent U+-FB3F: +AHj7PwB4- + +\noindent U+-FB40: +AHj7QAB4- + +\noindent U+-FB41: +AHj7QQB4- + +\noindent U+-FB42: +AHj7QgB4- + +\noindent U+-FB43: +AHj7QwB4- + +\noindent U+-FB44: +AHj7RAB4- + +\noindent U+-FB45: +AHj7RQB4- + +\noindent U+-FB46: +AHj7RgB4- + +\noindent U+-FB47: +AHj7RwB4- + +\noindent U+-FB48: +AHj7SAB4- + +\noindent U+-FB49: +AHj7SQB4- + +\noindent U+-FB4A: +AHj7SgB4- + +\noindent U+-FB4B: +AHj7SwB4- + +\noindent U+-FB4C: +AHj7TAB4- + +\noindent U+-FB4D: +AHj7TQB4- + +\noindent U+-FB4E: +AHj7TgB4- + +\noindent U+-FB4F: +AHj7TwB4- + +\end{document} diff --git a/support/utf2any/test/tst-latex.utf8 b/support/utf2any/test/tst-latex.utf8 new file mode 100644 index 0000000000..e37d649c08 --- /dev/null +++ b/support/utf2any/test/tst-latex.utf8 @@ -0,0 +1,2074 @@ +\documentclass[a4paper,12pt,twocolumn]{article} +\usepackage{textcomp} +\usepackage{eurofont} +\usepackage[T1,tone,safe]{tipa} +\begin{document} +\subsubsection*{Controls and Latin-1 Supplement} + +\noindent U+0080: x€x + +\noindent U+0081: xÂx + +\noindent U+0082: x‚x + +\noindent U+0083: xƒx + +\noindent U+0084: x„x + +\noindent U+0085: xÂ…x + +\noindent U+0086: x†x + +\noindent U+0087: x‡x + +\noindent U+0088: xˆx + +\noindent U+0089: x‰x + +\noindent U+008A: xŠx + +\noindent U+008B: x‹x + +\noindent U+008C: xÂŒx + +\noindent U+008D: xÂx + +\noindent U+008E: xÂŽx + +\noindent U+008F: xÂx + +\noindent U+0090: xÂx + +\noindent U+0091: x‘x + +\noindent U+0092: xÂ’x + +\noindent U+0093: x“x + +\noindent U+0094: x”x + +\noindent U+0095: x•x + +\noindent U+0096: x–x + +\noindent U+0097: x—x + +\noindent U+0098: x˜x + +\noindent U+0099: x™x + +\noindent U+009A: xšx + +\noindent U+009B: x›x + +\noindent U+009C: xÂœx + +\noindent U+009D: xÂx + +\noindent U+009E: xžx + +\noindent U+009F: xŸx + +\noindent U+00A0: x x + +\noindent U+00A1: x¡x + +\noindent U+00A2: x¢x + +\noindent U+00A3: x£x + +\noindent U+00A4: x¤x + +\noindent U+00A5: xÂ¥x + +\noindent U+00A6: x¦x + +\noindent U+00A7: x§x + +\noindent U+00A8: x¨x + +\noindent U+00A9: x©x + +\noindent U+00AA: xªx + +\noindent U+00AB: x«x + +\noindent U+00AC: x¬x + +\noindent U+00AD: x­x + +\noindent U+00AE: x®x + +\noindent U+00AF: x¯x + +\noindent U+00B0: x°x + +\noindent U+00B1: x±x + +\noindent U+00B2: x²x + +\noindent U+00B3: x³x + +\noindent U+00B4: x´x + +\noindent U+00B5: xµx + +\noindent U+00B6: x¶x + +\noindent U+00B7: x·x + +\noindent U+00B8: x¸x + +\noindent U+00B9: x¹x + +\noindent U+00BA: xºx + +\noindent U+00BB: x»x + +\noindent U+00BC: x¼x + +\noindent U+00BD: x½x + +\noindent U+00BE: x¾x + +\noindent U+00BF: x¿x + +\noindent U+00C0: xÀx + +\noindent U+00C1: xÃx + +\noindent U+00C2: xÂx + +\noindent U+00C3: xÃx + +\noindent U+00C4: xÄx + +\noindent U+00C5: xÃ…x + +\noindent U+00C6: xÆx + +\noindent U+00C7: xÇx + +\noindent U+00C8: xÈx + +\noindent U+00C9: xÉx + +\noindent U+00CA: xÊx + +\noindent U+00CB: xËx + +\noindent U+00CC: xÃŒx + +\noindent U+00CD: xÃx + +\noindent U+00CE: xÃŽx + +\noindent U+00CF: xÃx + +\noindent U+00D0: xÃx + +\noindent U+00D1: xÑx + +\noindent U+00D2: xÃ’x + +\noindent U+00D3: xÓx + +\noindent U+00D4: xÔx + +\noindent U+00D5: xÕx + +\noindent U+00D6: xÖx + +\noindent U+00D7: x×x + +\noindent U+00D8: xØx + +\noindent U+00D9: xÙx + +\noindent U+00DA: xÚx + +\noindent U+00DB: xÛx + +\noindent U+00DC: xÃœx + +\noindent U+00DD: xÃx + +\noindent U+00DE: xÞx + +\noindent U+00DF: xßx + +\noindent U+00E0: xàx + +\noindent U+00E1: xáx + +\noindent U+00E2: xâx + +\noindent U+00E3: xãx + +\noindent U+00E4: xäx + +\noindent U+00E5: xÃ¥x + +\noindent U+00E6: xæx + +\noindent U+00E7: xçx + +\noindent U+00E8: xèx + +\noindent U+00E9: xéx + +\noindent U+00EA: xêx + +\noindent U+00EB: xëx + +\noindent U+00EC: xìx + +\noindent U+00ED: xíx + +\noindent U+00EE: xîx + +\noindent U+00EF: xïx + +\noindent U+00F0: xðx + +\noindent U+00F1: xñx + +\noindent U+00F2: xòx + +\noindent U+00F3: xóx + +\noindent U+00F4: xôx + +\noindent U+00F5: xõx + +\noindent U+00F6: xöx + +\noindent U+00F7: x÷x + +\noindent U+00F8: xøx + +\noindent U+00F9: xùx + +\noindent U+00FA: xúx + +\noindent U+00FB: xûx + +\noindent U+00FC: xüx + +\noindent U+00FD: xýx + +\noindent U+00FE: xþx + +\noindent U+00FF: xÿx + +\subsubsection*{Latin Extended-A} + +\noindent U+0100: xÄ€x + +\noindent U+0101: xÄx + +\noindent U+0102: xÄ‚x + +\noindent U+0103: xăx + +\noindent U+0104: xÄ„x + +\noindent U+0105: xÄ…x + +\noindent U+0106: xĆx + +\noindent U+0107: xćx + +\noindent U+0108: xĈx + +\noindent U+0109: xĉx + +\noindent U+010A: xÄŠx + +\noindent U+010B: xÄ‹x + +\noindent U+010C: xÄŒx + +\noindent U+010D: xÄx + +\noindent U+010E: xÄŽx + +\noindent U+010F: xÄx + +\noindent U+0110: xÄx + +\noindent U+0111: xÄ‘x + +\noindent U+0112: xÄ’x + +\noindent U+0113: xÄ“x + +\noindent U+0114: xÄ”x + +\noindent U+0115: xÄ•x + +\noindent U+0116: xÄ–x + +\noindent U+0117: xÄ—x + +\noindent U+0118: xĘx + +\noindent U+0119: xÄ™x + +\noindent U+011A: xÄšx + +\noindent U+011B: xÄ›x + +\noindent U+011C: xÄœx + +\noindent U+011D: xÄx + +\noindent U+011E: xÄžx + +\noindent U+011F: xÄŸx + +\noindent U+0120: xÄ x + +\noindent U+0121: xÄ¡x + +\noindent U+0122: xÄ¢x + +\noindent U+0123: xÄ£x + +\noindent U+0124: xĤx + +\noindent U+0125: xÄ¥x + +\noindent U+0126: xĦx + +\noindent U+0127: xħx + +\noindent U+0128: xĨx + +\noindent U+0129: xÄ©x + +\noindent U+012A: xĪx + +\noindent U+012B: xÄ«x + +\noindent U+012C: xĬx + +\noindent U+012D: xÄ­x + +\noindent U+012E: xÄ®x + +\noindent U+012F: xįx + +\noindent U+0130: xÄ°x + +\noindent U+0131: xıx + +\noindent U+0132: xIJx + +\noindent U+0133: xijx + +\noindent U+0134: xÄ´x + +\noindent U+0135: xĵx + +\noindent U+0136: xĶx + +\noindent U+0137: xÄ·x + +\noindent U+0138: xĸx + +\noindent U+0139: xĹx + +\noindent U+013A: xĺx + +\noindent U+013B: xÄ»x + +\noindent U+013C: xļx + +\noindent U+013D: xĽx + +\noindent U+013E: xľx + +\noindent U+013F: xÄ¿x + +\noindent U+0140: xÅ€x + +\noindent U+0141: xÅx + +\noindent U+0142: xÅ‚x + +\noindent U+0143: xŃx + +\noindent U+0144: xÅ„x + +\noindent U+0145: xÅ…x + +\noindent U+0146: xņx + +\noindent U+0147: xŇx + +\noindent U+0148: xňx + +\noindent U+0149: xʼnx + +\noindent U+014A: xÅŠx + +\noindent U+014B: xÅ‹x + +\noindent U+014C: xÅŒx + +\noindent U+014D: xÅx + +\noindent U+014E: xÅŽx + +\noindent U+014F: xÅx + +\noindent U+0150: xÅx + +\noindent U+0151: xÅ‘x + +\noindent U+0152: xÅ’x + +\noindent U+0153: xÅ“x + +\noindent U+0154: xÅ”x + +\noindent U+0155: xÅ•x + +\noindent U+0156: xÅ–x + +\noindent U+0157: xÅ—x + +\noindent U+0158: xŘx + +\noindent U+0159: xÅ™x + +\noindent U+015A: xÅšx + +\noindent U+015B: xÅ›x + +\noindent U+015C: xÅœx + +\noindent U+015D: xÅx + +\noindent U+015E: xÅžx + +\noindent U+015F: xÅŸx + +\noindent U+0160: xÅ x + +\noindent U+0161: xÅ¡x + +\noindent U+0162: xÅ¢x + +\noindent U+0163: xÅ£x + +\noindent U+0164: xŤx + +\noindent U+0165: xÅ¥x + +\noindent U+0166: xŦx + +\noindent U+0167: xŧx + +\noindent U+0168: xŨx + +\noindent U+0169: xÅ©x + +\noindent U+016A: xŪx + +\noindent U+016B: xÅ«x + +\noindent U+016C: xŬx + +\noindent U+016D: xÅ­x + +\noindent U+016E: xÅ®x + +\noindent U+016F: xůx + +\noindent U+0170: xÅ°x + +\noindent U+0171: xűx + +\noindent U+0172: xŲx + +\noindent U+0173: xųx + +\noindent U+0174: xÅ´x + +\noindent U+0175: xŵx + +\noindent U+0176: xŶx + +\noindent U+0177: xÅ·x + +\noindent U+0178: xŸx + +\noindent U+0179: xŹx + +\noindent U+017A: xźx + +\noindent U+017B: xÅ»x + +\noindent U+017C: xżx + +\noindent U+017D: xŽx + +\noindent U+017E: xžx + +\noindent U+017F: xÅ¿x + +\subsubsection*{Latin Extended-B} + +\noindent U+0180: xÆ€x + +\noindent U+0181: xÆx + +\noindent U+0182: xÆ‚x + +\noindent U+0183: xƃx + +\noindent U+0184: xÆ„x + +\noindent U+0185: xÆ…x + +\noindent U+0186: xƆx + +\noindent U+0187: xƇx + +\noindent U+0188: xƈx + +\noindent U+0189: xƉx + +\noindent U+018A: xÆŠx + +\noindent U+018B: xÆ‹x + +\noindent U+018C: xÆŒx + +\noindent U+018D: xÆx + +\noindent U+018E: xÆŽx + +\noindent U+018F: xÆx + +\noindent U+0190: xÆx + +\noindent U+0191: xÆ‘x + +\noindent U+0192: xÆ’x + +\noindent U+0193: xÆ“x + +\noindent U+0194: xÆ”x + +\noindent U+0195: xÆ•x + +\noindent U+0196: xÆ–x + +\noindent U+0197: xÆ—x + +\noindent U+0198: xƘx + +\noindent U+0199: xÆ™x + +\noindent U+019A: xÆšx + +\noindent U+019B: xÆ›x + +\noindent U+019C: xÆœx + +\noindent U+019D: xÆx + +\noindent U+019E: xÆžx + +\noindent U+019F: xÆŸx + +\noindent U+01A0: xÆ x + +\noindent U+01A1: xÆ¡x + +\noindent U+01A2: xÆ¢x + +\noindent U+01A3: xÆ£x + +\noindent U+01A4: xƤx + +\noindent U+01A5: xÆ¥x + +\noindent U+01A6: xƦx + +\noindent U+01A7: xƧx + +\noindent U+01A8: xƨx + +\noindent U+01A9: xÆ©x + +\noindent U+01AA: xƪx + +\noindent U+01AB: xÆ«x + +\noindent U+01AC: xƬx + +\noindent U+01AD: xÆ­x + +\noindent U+01AE: xÆ®x + +\noindent U+01AF: xƯx + +\noindent U+01B0: xÆ°x + +\noindent U+01B1: xƱx + +\noindent U+01B2: xƲx + +\noindent U+01B3: xƳx + +\noindent U+01B4: xÆ´x + +\noindent U+01B5: xƵx + +\noindent U+01B6: xƶx + +\noindent U+01B7: xÆ·x + +\noindent U+01B8: xƸx + +\noindent U+01B9: xƹx + +\noindent U+01BA: xƺx + +\noindent U+01BB: xÆ»x + +\noindent U+01BC: xƼx + +\noindent U+01BD: xƽx + +\noindent U+01BE: xƾx + +\noindent U+01BF: xÆ¿x + +\noindent U+01C0: xÇ€x + +\noindent U+01C1: xÇx + +\noindent U+01C2: xÇ‚x + +\noindent U+01C3: xǃx + +\noindent U+01C4: xÇ„x + +\noindent U+01C5: xÇ…x + +\noindent U+01C6: xdžx + +\noindent U+01C7: xLJx + +\noindent U+01C8: xLjx + +\noindent U+01C9: xljx + +\noindent U+01CA: xÇŠx + +\noindent U+01CB: xÇ‹x + +\noindent U+01CC: xÇŒx + +\noindent U+01CD: xÇx + +\noindent U+01CE: xÇŽx + +\noindent U+01CF: xÇx + +\noindent U+01D0: xÇx + +\noindent U+01D1: xÇ‘x + +\noindent U+01D2: xÇ’x + +\noindent U+01D3: xÇ“x + +\noindent U+01D4: xÇ”x + +\noindent U+01D5: xÇ•x + +\noindent U+01D6: xÇ–x + +\noindent U+01D7: xÇ—x + +\noindent U+01D8: xǘx + +\noindent U+01D9: xÇ™x + +\noindent U+01DA: xÇšx + +\noindent U+01DB: xÇ›x + +\noindent U+01DC: xÇœx + +\noindent U+01DD: xÇx + +\noindent U+01DE: xÇžx + +\noindent U+01DF: xÇŸx + +\noindent U+01E0: xÇ x + +\noindent U+01E1: xÇ¡x + +\noindent U+01E2: xÇ¢x + +\noindent U+01E3: xÇ£x + +\noindent U+01E4: xǤx + +\noindent U+01E5: xÇ¥x + +\noindent U+01E6: xǦx + +\noindent U+01E7: xǧx + +\noindent U+01E8: xǨx + +\noindent U+01E9: xÇ©x + +\noindent U+01EA: xǪx + +\noindent U+01EB: xÇ«x + +\noindent U+01EC: xǬx + +\noindent U+01ED: xÇ­x + +\noindent U+01EE: xÇ®x + +\noindent U+01EF: xǯx + +\noindent U+01F0: xÇ°x + +\noindent U+01F1: xDZx + +\noindent U+01F2: xDzx + +\noindent U+01F3: xdzx + +\noindent U+01F4: xÇ´x + +\noindent U+01F5: xǵx + +\noindent U+01F6: xǶx + +\noindent U+01F7: xÇ·x + +\noindent U+01F8: xǸx + +\noindent U+01F9: xǹx + +\noindent U+01FA: xǺx + +\noindent U+01FB: xÇ»x + +\noindent U+01FC: xǼx + +\noindent U+01FD: xǽx + +\noindent U+01FE: xǾx + +\noindent U+01FF: xÇ¿x + +\noindent U+0200: xÈ€x + +\noindent U+0201: xÈx + +\noindent U+0202: xÈ‚x + +\noindent U+0203: xȃx + +\noindent U+0204: xÈ„x + +\noindent U+0205: xÈ…x + +\noindent U+0206: xȆx + +\noindent U+0207: xȇx + +\noindent U+0208: xȈx + +\noindent U+0209: xȉx + +\noindent U+020A: xÈŠx + +\noindent U+020B: xÈ‹x + +\noindent U+020C: xÈŒx + +\noindent U+020D: xÈx + +\noindent U+020E: xÈŽx + +\noindent U+020F: xÈx + +\noindent U+0210: xÈx + +\noindent U+0211: xÈ‘x + +\noindent U+0212: xÈ’x + +\noindent U+0213: xÈ“x + +\noindent U+0214: xÈ”x + +\noindent U+0215: xÈ•x + +\noindent U+0216: xÈ–x + +\noindent U+0217: xÈ—x + +\noindent U+0218: xȘx + +\noindent U+0219: xÈ™x + +\noindent U+021A: xÈšx + +\noindent U+021B: xÈ›x + +\noindent U+021C: xÈœx + +\noindent U+021D: xÈx + +\noindent U+021E: xÈžx + +\noindent U+021F: xÈŸx + +\noindent U+0220: xÈ x + +\noindent U+0221: xÈ¡x + +\noindent U+0222: xÈ¢x + +\noindent U+0223: xÈ£x + +\noindent U+0224: xȤx + +\noindent U+0225: xÈ¥x + +\noindent U+0226: xȦx + +\noindent U+0227: xȧx + +\noindent U+0228: xȨx + +\noindent U+0229: xÈ©x + +\noindent U+022A: xȪx + +\noindent U+022B: xÈ«x + +\noindent U+022C: xȬx + +\noindent U+022D: xÈ­x + +\noindent U+022E: xÈ®x + +\noindent U+022F: xȯx + +\noindent U+0230: xÈ°x + +\noindent U+0231: xȱx + +\noindent U+0232: xȲx + +\noindent U+0233: xȳx + +\noindent U+0234: xÈ´x + +\noindent U+0235: xȵx + +\noindent U+0236: xȶx + +\noindent U+0237: xÈ·x + +\noindent U+0238: xȸx + +\noindent U+0239: xȹx + +\noindent U+023A: xȺx + +\noindent U+023B: xÈ»x + +\noindent U+023C: xȼx + +\noindent U+023D: xȽx + +\noindent U+023E: xȾx + +\noindent U+023F: xÈ¿x + +\noindent U+0240: xÉ€x + +\noindent U+0241: xÉx + +\noindent U+0242: xÉ‚x + +\noindent U+0243: xɃx + +\noindent U+0244: xÉ„x + +\noindent U+0245: xÉ…x + +\noindent U+0246: xɆx + +\noindent U+0247: xɇx + +\noindent U+0248: xɈx + +\noindent U+0249: xɉx + +\noindent U+024A: xÉŠx + +\noindent U+024B: xÉ‹x + +\noindent U+024C: xÉŒx + +\noindent U+024D: xÉx + +\noindent U+024E: xÉŽx + +\noindent U+024F: xÉx + +\subsubsection*{IPA Extensions} + +\noindent U+0250: xÉx + +\noindent U+0251: xÉ‘x + +\noindent U+0252: xÉ’x + +\noindent U+0253: xÉ“x + +\noindent U+0254: xÉ”x + +\noindent U+0255: xÉ•x + +\noindent U+0256: xÉ–x + +\noindent U+0257: xÉ—x + +\noindent U+0258: xɘx + +\noindent U+0259: xÉ™x + +\noindent U+025A: xÉšx + +\noindent U+025B: xÉ›x + +\noindent U+025C: xÉœx + +\noindent U+025D: xÉx + +\noindent U+025E: xÉžx + +\noindent U+025F: xÉŸx + +\noindent U+0260: xÉ x + +\noindent U+0261: xÉ¡x + +\noindent U+0262: xÉ¢x + +\noindent U+0263: xÉ£x + +\noindent U+0264: xɤx + +\noindent U+0265: xÉ¥x + +\noindent U+0266: xɦx + +\noindent U+0267: xɧx + +\noindent U+0268: xɨx + +\noindent U+0269: xÉ©x + +\noindent U+026A: xɪx + +\noindent U+026B: xÉ«x + +\noindent U+026C: xɬx + +\noindent U+026D: xÉ­x + +\noindent U+026E: xÉ®x + +\noindent U+026F: xɯx + +\noindent U+0270: xÉ°x + +\noindent U+0271: xɱx + +\noindent U+0272: xɲx + +\noindent U+0273: xɳx + +\noindent U+0274: xÉ´x + +\noindent U+0275: xɵx + +\noindent U+0276: xɶx + +\noindent U+0277: xÉ·x + +\noindent U+0278: xɸx + +\noindent U+0279: xɹx + +\noindent U+027A: xɺx + +\noindent U+027B: xÉ»x + +\noindent U+027C: xɼx + +\noindent U+027D: xɽx + +\noindent U+027E: xɾx + +\noindent U+027F: xÉ¿x + +\noindent U+0280: xÊ€x + +\noindent U+0281: xÊx + +\noindent U+0282: xÊ‚x + +\noindent U+0283: xʃx + +\noindent U+0284: xÊ„x + +\noindent U+0285: xÊ…x + +\noindent U+0286: xʆx + +\noindent U+0287: xʇx + +\noindent U+0288: xʈx + +\noindent U+0289: xʉx + +\noindent U+028A: xÊŠx + +\noindent U+028B: xÊ‹x + +\noindent U+028C: xÊŒx + +\noindent U+028D: xÊx + +\noindent U+028E: xÊŽx + +\noindent U+028F: xÊx + +\noindent U+0290: xÊx + +\noindent U+0291: xÊ‘x + +\noindent U+0292: xÊ’x + +\noindent U+0293: xÊ“x + +\noindent U+0294: xÊ”x + +\noindent U+0295: xÊ•x + +\noindent U+0296: xÊ–x + +\noindent U+0297: xÊ—x + +\noindent U+0298: xʘx + +\noindent U+0299: xÊ™x + +\noindent U+029A: xÊšx + +\noindent U+029B: xÊ›x + +\noindent U+029C: xÊœx + +\noindent U+029D: xÊx + +\noindent U+029E: xÊžx + +\noindent U+029F: xÊŸx + +\noindent U+02A0: xÊ x + +\noindent U+02A1: xÊ¡x + +\noindent U+02A2: xÊ¢x + +\noindent U+02A3: xÊ£x + +\noindent U+02A4: xʤx + +\noindent U+02A5: xÊ¥x + +\noindent U+02A6: xʦx + +\noindent U+02A7: xʧx + +\noindent U+02A8: xʨx + +\noindent U+02A9: xÊ©x + +\noindent U+02AA: xʪx + +\noindent U+02AB: xÊ«x + +\noindent U+02AC: xʬx + +\noindent U+02AD: xÊ­x + +\noindent U+02AE: xÊ®x + +\noindent U+02AF: xʯx + +\subsubsection*{Spacing Modifier Letters} + +\noindent U+02B0: xÊ°x + +\noindent U+02B1: xʱx + +\noindent U+02B2: xʲx + +\noindent U+02B3: xʳx + +\noindent U+02B4: xÊ´x + +\noindent U+02B5: xʵx + +\noindent U+02B6: xʶx + +\noindent U+02B7: xÊ·x + +\noindent U+02B8: xʸx + +\noindent U+02B9: xʹx + +\noindent U+02BA: xʺx + +\noindent U+02BB: xÊ»x + +\noindent U+02BC: xʼx + +\noindent U+02BD: xʽx + +\noindent U+02BE: xʾx + +\noindent U+02BF: xÊ¿x + +\noindent U+02C0: xË€x + +\noindent U+02C1: xËx + +\noindent U+02C2: xË‚x + +\noindent U+02C3: x˃x + +\noindent U+02C4: xË„x + +\noindent U+02C5: xË…x + +\noindent U+02C6: xˆx + +\noindent U+02C7: xˇx + +\noindent U+02C8: xˈx + +\noindent U+02C9: xˉx + +\noindent U+02CA: xËŠx + +\noindent U+02CB: xË‹x + +\noindent U+02CC: xËŒx + +\noindent U+02CD: xËx + +\noindent U+02CE: xËŽx + +\noindent U+02CF: xËx + +\noindent U+02D0: xËx + +\noindent U+02D1: xË‘x + +\noindent U+02D2: xË’x + +\noindent U+02D3: xË“x + +\noindent U+02D4: xË”x + +\noindent U+02D5: xË•x + +\noindent U+02D6: xË–x + +\noindent U+02D7: xË—x + +\noindent U+02D8: x˘x + +\noindent U+02D9: xË™x + +\noindent U+02DA: xËšx + +\noindent U+02DB: xË›x + +\noindent U+02DC: xËœx + +\noindent U+02DD: xËx + +\noindent U+02DE: xËžx + +\noindent U+02DF: xËŸx + +\noindent U+02E0: xË x + +\noindent U+02E1: xË¡x + +\noindent U+02E2: xË¢x + +\noindent U+02E3: xË£x + +\noindent U+02E4: xˤx + +\noindent U+02E5: xË¥x + +\noindent U+02E6: x˦x + +\noindent U+02E7: x˧x + +\noindent U+02E8: x˨x + +\noindent U+02E9: xË©x + +\noindent U+02EA: x˪x + +\noindent U+02EB: xË«x + +\noindent U+02EC: xˬx + +\noindent U+02ED: xË­x + +\noindent U+02EE: xË®x + +\noindent U+02EF: x˯x + +\noindent U+02F0: xË°x + +\noindent U+02F1: x˱x + +\noindent U+02F2: x˲x + +\noindent U+02F3: x˳x + +\noindent U+02F4: xË´x + +\noindent U+02F5: x˵x + +\noindent U+02F6: x˶x + +\noindent U+02F7: xË·x + +\noindent U+02F8: x˸x + +\noindent U+02F9: x˹x + +\noindent U+02FA: x˺x + +\noindent U+02FB: xË»x + +\noindent U+02FC: x˼x + +\noindent U+02FD: x˽x + +\noindent U+02FE: x˾x + +\noindent U+02FF: xË¿x + +\subsubsection*{General Punctuation} + +\noindent U+2000: x x + +\noindent U+2001: xâ€x + +\noindent U+2002: x x + +\noindent U+2003: x x + +\noindent U+2004: x x + +\noindent U+2005: x x + +\noindent U+2006: x x + +\noindent U+2007: x x + +\noindent U+2008: x x + +\noindent U+2009: x x + +\noindent U+200A: x x + +\noindent U+200B: x​x + +\noindent U+200C: x‌x + +\noindent U+200D: xâ€x + +\noindent U+200E: x‎x + +\noindent U+200F: xâ€x + +\noindent U+2010: xâ€x + +\noindent U+2011: x‑x + +\noindent U+2012: x‒x + +\noindent U+2013: x–x + +\noindent U+2014: x—x + +\noindent U+2015: x―x + +\noindent U+2016: x‖x + +\noindent U+2017: x‗x + +\noindent U+2018: x‘x + +\noindent U+2019: x’x + +\noindent U+201A: x‚x + +\noindent U+201B: x‛x + +\noindent U+201C: x“x + +\noindent U+201D: xâ€x + +\noindent U+201E: x„x + +\noindent U+201F: x‟x + +\noindent U+2020: x†x + +\noindent U+2021: x‡x + +\noindent U+2022: x•x + +\noindent U+2023: x‣x + +\noindent U+2024: x․x + +\noindent U+2025: x‥x + +\noindent U+2026: x…x + +\noindent U+2027: x‧x + +\noindent U+2028: x
x + +\noindent U+2029: x
x + +\noindent U+202A: x‪x + +\noindent U+202B: x‫x + +\noindent U+202C: x‬x + +\noindent U+202D: x‭x + +\noindent U+202E: x‮x + +\noindent U+202F: x x + +\noindent U+2030: x‰x + +\noindent U+2031: x‱x + +\noindent U+2032: x′x + +\noindent U+2033: x″x + +\noindent U+2034: x‴x + +\noindent U+2035: x‵x + +\noindent U+2036: x‶x + +\noindent U+2037: x‷x + +\noindent U+2038: x‸x + +\noindent U+2039: x‹x + +\noindent U+203A: x›x + +\noindent U+203B: x※x + +\noindent U+203C: x‼x + +\noindent U+203D: x‽x + +\noindent U+203E: x‾x + +\noindent U+203F: x‿x + +\noindent U+2040: xâ€x + +\noindent U+2041: xâx + +\noindent U+2042: xâ‚x + +\noindent U+2043: xâƒx + +\noindent U+2044: xâ„x + +\noindent U+2045: xâ…x + +\noindent U+2046: xâ†x + +\noindent U+2047: xâ‡x + +\noindent U+2048: xâˆx + +\noindent U+2049: xâ‰x + +\noindent U+204A: xâŠx + +\noindent U+204B: xâ‹x + +\noindent U+204C: xâŒx + +\noindent U+204D: xâx + +\noindent U+204E: xâŽx + +\noindent U+204F: xâx + +\noindent U+2050: xâx + +\noindent U+2051: xâ‘x + +\noindent U+2052: xâ’x + +\noindent U+2053: xâ“x + +\noindent U+2054: xâ”x + +\noindent U+2055: xâ•x + +\noindent U+2056: xâ–x + +\noindent U+2057: xâ—x + +\noindent U+2058: xâ˜x + +\noindent U+2059: xâ™x + +\noindent U+205A: xâšx + +\noindent U+205B: xâ›x + +\noindent U+205C: xâœx + +\noindent U+205D: xâx + +\noindent U+205E: xâžx + +\noindent U+205F: xâŸx + +\noindent U+2060: xâ x + +\noindent U+2061: xâ¡x + +\noindent U+2062: xâ¢x + +\noindent U+2063: xâ£x + +\noindent U+2064: xâ¤x + +\noindent U+2065: xâ¥x + +\noindent U+2066: xâ¦x + +\noindent U+2067: xâ§x + +\noindent U+2068: xâ¨x + +\noindent U+2069: xâ©x + +\noindent U+206A: xâªx + +\noindent U+206B: xâ«x + +\noindent U+206C: xâ¬x + +\noindent U+206D: xâ­x + +\noindent U+206E: xâ®x + +\noindent U+206F: xâ¯x + +\subsubsection*{Currency Symbols} + +\noindent U+20A0: xâ‚ x + +\noindent U+20A1: xâ‚¡x + +\noindent U+20A2: xâ‚¢x + +\noindent U+20A3: xâ‚£x + +\noindent U+20A4: x₤x + +\noindent U+20A5: xâ‚¥x + +\noindent U+20A6: x₦x + +\noindent U+20A7: x₧x + +\noindent U+20A8: x₨x + +\noindent U+20A9: xâ‚©x + +\noindent U+20AA: x₪x + +\noindent U+20AB: xâ‚«x + +\noindent U+20AC: x€x + +\noindent U+20AD: xâ‚­x + +\noindent U+20AE: xâ‚®x + +\noindent U+20AF: x₯x + +\noindent U+20B0: xâ‚°x + +\noindent U+20B1: x₱x + +\noindent U+20B2: x₲x + +\noindent U+20B3: x₳x + +\noindent U+20B4: xâ‚´x + +\noindent U+20B5: x₵x + +\noindent U+20B6: x₶x + +\noindent U+20B7: xâ‚·x + +\noindent U+20B8: x₸x + +\noindent U+20B9: x₹x + +\noindent U+20BA: x₺x + +\noindent U+20BB: xâ‚»x + +\noindent U+20BC: x₼x + +\noindent U+20BD: x₽x + +\noindent U+20BE: x₾x + +\noindent U+20BF: xâ‚¿x + +\noindent U+20C0: x⃀x + +\noindent U+20C1: xâƒx + +\noindent U+20C2: x⃂x + +\noindent U+20C3: x⃃x + +\noindent U+20C4: x⃄x + +\noindent U+20C5: x⃅x + +\noindent U+20C6: x⃆x + +\noindent U+20C7: x⃇x + +\noindent U+20C8: x⃈x + +\noindent U+20C9: x⃉x + +\noindent U+20CA: x⃊x + +\noindent U+20CB: x⃋x + +\noindent U+20CC: x⃌x + +\noindent U+20CD: xâƒx + +\noindent U+20CE: x⃎x + +\noindent U+20CF: xâƒx + +\subsubsection*{Letterlike Symbols} + +\noindent U+2100: xâ„€x + +\noindent U+2101: xâ„x + +\noindent U+2102: xâ„‚x + +\noindent U+2103: x℃x + +\noindent U+2104: xâ„„x + +\noindent U+2105: xâ„…x + +\noindent U+2106: x℆x + +\noindent U+2107: xℇx + +\noindent U+2108: x℈x + +\noindent U+2109: x℉x + +\noindent U+210A: xâ„Šx + +\noindent U+210B: xâ„‹x + +\noindent U+210C: xâ„Œx + +\noindent U+210D: xâ„x + +\noindent U+210E: xâ„Žx + +\noindent U+210F: xâ„x + +\noindent U+2110: xâ„x + +\noindent U+2111: xâ„‘x + +\noindent U+2112: xâ„’x + +\noindent U+2113: xâ„“x + +\noindent U+2114: xâ„”x + +\noindent U+2115: xâ„•x + +\noindent U+2116: xâ„–x + +\noindent U+2117: xâ„—x + +\noindent U+2118: x℘x + +\noindent U+2119: xâ„™x + +\noindent U+211A: xâ„šx + +\noindent U+211B: xâ„›x + +\noindent U+211C: xâ„œx + +\noindent U+211D: xâ„x + +\noindent U+211E: xâ„žx + +\noindent U+211F: xâ„Ÿx + +\noindent U+2120: xâ„ x + +\noindent U+2121: xâ„¡x + +\noindent U+2122: xâ„¢x + +\noindent U+2123: xâ„£x + +\noindent U+2124: xℤx + +\noindent U+2125: xâ„¥x + +\noindent U+2126: xΩx + +\noindent U+2127: x℧x + +\noindent U+2128: xℨx + +\noindent U+2129: xâ„©x + +\noindent U+212A: xKx + +\noindent U+212B: xâ„«x + +\noindent U+212C: xℬx + +\noindent U+212D: xâ„­x + +\noindent U+212E: xâ„®x + +\noindent U+212F: xℯx + +\noindent U+2130: xâ„°x + +\noindent U+2131: xℱx + +\noindent U+2132: xℲx + +\noindent U+2133: xℳx + +\noindent U+2134: xâ„´x + +\noindent U+2135: xℵx + +\noindent U+2136: xℶx + +\noindent U+2137: xâ„·x + +\noindent U+2138: xℸx + +\noindent U+2139: xℹx + +\noindent U+213A: x℺x + +\noindent U+213B: xâ„»x + +\noindent U+213C: xℼx + +\noindent U+213D: xℽx + +\noindent U+213E: xℾx + +\noindent U+213F: xâ„¿x + +\noindent U+2140: xâ…€x + +\noindent U+2141: xâ…x + +\noindent U+2142: xâ…‚x + +\noindent U+2143: xâ…ƒx + +\noindent U+2144: xâ…„x + +\noindent U+2145: xâ……x + +\noindent U+2146: xâ…†x + +\noindent U+2147: xâ…‡x + +\noindent U+2148: xâ…ˆx + +\noindent U+2149: xâ…‰x + +\noindent U+214A: xâ…Šx + +\noindent U+214B: xâ…‹x + +\noindent U+214C: xâ…Œx + +\noindent U+214D: xâ…x + +\noindent U+214E: xâ…Žx + +\noindent U+214F: xâ…x + +\subsubsection*{Number Forms} + +\noindent U+2150: xâ…x + +\noindent U+2151: xâ…‘x + +\noindent U+2152: xâ…’x + +\noindent U+2153: xâ…“x + +\noindent U+2154: xâ…”x + +\noindent U+2155: xâ…•x + +\noindent U+2156: xâ…–x + +\noindent U+2157: xâ…—x + +\noindent U+2158: xâ…˜x + +\noindent U+2159: xâ…™x + +\noindent U+215A: xâ…šx + +\noindent U+215B: xâ…›x + +\noindent U+215C: xâ…œx + +\noindent U+215D: xâ…x + +\noindent U+215E: xâ…žx + +\noindent U+215F: xâ…Ÿx + +\noindent U+2160: xâ… x + +\noindent U+2161: xâ…¡x + +\noindent U+2162: xâ…¢x + +\noindent U+2163: xâ…£x + +\noindent U+2164: xâ…¤x + +\noindent U+2165: xâ…¥x + +\noindent U+2166: xâ…¦x + +\noindent U+2167: xâ…§x + +\noindent U+2168: xâ…¨x + +\noindent U+2169: xâ…©x + +\noindent U+216A: xâ…ªx + +\noindent U+216B: xâ…«x + +\noindent U+216C: xâ…¬x + +\noindent U+216D: xâ…­x + +\noindent U+216E: xâ…®x + +\noindent U+216F: xâ…¯x + +\noindent U+2170: xâ…°x + +\noindent U+2171: xâ…±x + +\noindent U+2172: xâ…²x + +\noindent U+2173: xâ…³x + +\noindent U+2174: xâ…´x + +\noindent U+2175: xâ…µx + +\noindent U+2176: xâ…¶x + +\noindent U+2177: xâ…·x + +\noindent U+2178: xâ…¸x + +\noindent U+2179: xâ…¹x + +\noindent U+217A: xâ…ºx + +\noindent U+217B: xâ…»x + +\noindent U+217C: xâ…¼x + +\noindent U+217D: xâ…½x + +\noindent U+217E: xâ…¾x + +\noindent U+217F: xâ…¿x + +\noindent U+2180: xↀx + +\noindent U+2181: xâ†x + +\noindent U+2182: xↂx + +\noindent U+2183: xↃx + +\noindent U+2184: xↄx + +\noindent U+2185: xↅx + +\noindent U+2186: xↆx + +\noindent U+2187: xↇx + +\noindent U+2188: xↈx + +\noindent U+2189: x↉x + +\noindent U+218A: x↊x + +\noindent U+218B: x↋x + +\noindent U+218C: x↌x + +\noindent U+218D: xâ†x + +\noindent U+218E: x↎x + +\noindent U+218F: xâ†x + +\subsubsection*{Alphabetic Presentation Forms} + +\noindent U+FB00: xffx + +\noindent U+FB01: xï¬x + +\noindent U+FB02: xflx + +\noindent U+FB03: xffix + +\noindent U+FB04: xfflx + +\noindent U+FB05: xſtx + +\noindent U+FB06: xstx + +\noindent U+FB07: x﬇x + +\noindent U+FB08: x﬈x + +\noindent U+FB09: x﬉x + +\noindent U+FB0A: x﬊x + +\noindent U+FB0B: x﬋x + +\noindent U+FB0C: x﬌x + +\noindent U+FB0D: xï¬x + +\noindent U+FB0E: x﬎x + +\noindent U+FB0F: xï¬x + +\noindent U+FB10: xï¬x + +\noindent U+FB11: x﬑x + +\noindent U+FB12: x﬒x + +\noindent U+FB13: xﬓx + +\noindent U+FB14: xﬔx + +\noindent U+FB15: xﬕx + +\noindent U+FB16: xﬖx + +\noindent U+FB17: xﬗx + +\noindent U+FB18: x﬘x + +\noindent U+FB19: x﬙x + +\noindent U+FB1A: x﬚x + +\noindent U+FB1B: x﬛x + +\noindent U+FB1C: x﬜x + +\noindent U+FB1D: xï¬x + +\noindent U+FB1E: xﬞx + +\noindent U+FB1F: xײַx + +\noindent U+FB20: xﬠx + +\noindent U+FB21: xﬡx + +\noindent U+FB22: xﬢx + +\noindent U+FB23: xﬣx + +\noindent U+FB24: xﬤx + +\noindent U+FB25: xﬥx + +\noindent U+FB26: xﬦx + +\noindent U+FB27: xﬧx + +\noindent U+FB28: xﬨx + +\noindent U+FB29: x﬩x + +\noindent U+FB2A: xשׁx + +\noindent U+FB2B: xשׂx + +\noindent U+FB2C: xשּׁx + +\noindent U+FB2D: xשּׂx + +\noindent U+FB2E: xאַx + +\noindent U+FB2F: xאָx + +\noindent U+FB30: xאּx + +\noindent U+FB31: xבּx + +\noindent U+FB32: xגּx + +\noindent U+FB33: xדּx + +\noindent U+FB34: xהּx + +\noindent U+FB35: xוּx + +\noindent U+FB36: xזּx + +\noindent U+FB37: x﬷x + +\noindent U+FB38: xטּx + +\noindent U+FB39: xיּx + +\noindent U+FB3A: xךּx + +\noindent U+FB3B: xכּx + +\noindent U+FB3C: xלּx + +\noindent U+FB3D: x﬽x + +\noindent U+FB3E: xמּx + +\noindent U+FB3F: x﬿x + +\noindent U+FB40: xï­€x + +\noindent U+FB41: xï­x + +\noindent U+FB42: xï­‚x + +\noindent U+FB43: xï­ƒx + +\noindent U+FB44: xï­„x + +\noindent U+FB45: xï­…x + +\noindent U+FB46: xï­†x + +\noindent U+FB47: xï­‡x + +\noindent U+FB48: xï­ˆx + +\noindent U+FB49: xï­‰x + +\noindent U+FB4A: xï­Šx + +\noindent U+FB4B: xï­‹x + +\noindent U+FB4C: xï­Œx + +\noindent U+FB4D: xï­x + +\noindent U+FB4E: xï­Žx + +\noindent U+FB4F: xï­x + +\end{document} diff --git a/support/utf2any/test/tst.utf7 b/support/utf2any/test/tst.utf7 new file mode 100644 index 0000000000..f18b9eecea --- /dev/null +++ b/support/utf2any/test/tst.utf7 @@ -0,0 +1,1185 @@ +Controls and Basic Latin + +U+-0000: +AHgAAAB4- +U+-0001: +AHgAAQB4- +U+-0002: +AHgAAgB4- +U+-0003: +AHgAAwB4- +U+-0004: +AHgABAB4- +U+-0005: +AHgABQB4- +U+-0006: +AHgABgB4- +U+-0007: +AHgABwB4- +U+-0008: +AHgACAB4- +U+-0009: +AHgACQB4- +U+-000A: +AHgACgB4- +U+-000B: +AHgACwB4- +U+-000C: +AHgADAB4- +U+-000D: +AHgADQB4- +U+-000E: +AHgADgB4- +U+-000F: +AHgADwB4- +U+-0010: +AHgAEAB4- +U+-0011: +AHgAEQB4- +U+-0012: +AHgAEgB4- +U+-0013: +AHgAEwB4- +U+-0014: +AHgAFAB4- +U+-0015: +AHgAFQB4- +U+-0016: +AHgAFgB4- +U+-0017: +AHgAFwB4- +U+-0018: +AHgAGAB4- +U+-0019: +AHgAGQB4- +U+-001A: +AHgAGgB4- +U+-001B: +AHgAGwB4- +U+-001C: +AHgAHAB4- +U+-001D: +AHgAHQB4- +U+-001E: +AHgAHgB4- +U+-001F: +AHgAHwB4- +U+-0020: +AHgAIAB4- +U+-0021: +AHgAIQB4- +U+-0022: +AHgAIgB4- +U+-0023: +AHgAIwB4- +U+-0024: +AHgAJAB4- +U+-0025: +AHgAJQB4- +U+-0026: +AHgAJgB4- +U+-0027: +AHgAJwB4- +U+-0028: +AHgAKAB4- +U+-0029: +AHgAKQB4- +U+-002A: +AHgAKgB4- +U+-002B: +AHgAKwB4- +U+-002C: +AHgALAB4- +U+-002D: +AHgALQB4- +U+-002E: +AHgALgB4- +U+-002F: +AHgALwB4- +U+-0030: +AHgAMAB4- +U+-0031: +AHgAMQB4- +U+-0032: +AHgAMgB4- +U+-0033: +AHgAMwB4- +U+-0034: +AHgANAB4- +U+-0035: +AHgANQB4- +U+-0036: +AHgANgB4- +U+-0037: +AHgANwB4- +U+-0038: +AHgAOAB4- +U+-0039: +AHgAOQB4- +U+-003A: +AHgAOgB4- +U+-003B: +AHgAOwB4- +U+-003C: +AHgAPAB4- +U+-003D: +AHgAPQB4- +U+-003E: +AHgAPgB4- +U+-003F: +AHgAPwB4- +U+-0040: +AHgAQAB4- +U+-0041: +AHgAQQB4- +U+-0042: +AHgAQgB4- +U+-0043: +AHgAQwB4- +U+-0044: +AHgARAB4- +U+-0045: +AHgARQB4- +U+-0046: +AHgARgB4- +U+-0047: +AHgARwB4- +U+-0048: +AHgASAB4- +U+-0049: +AHgASQB4- +U+-004A: +AHgASgB4- +U+-004B: +AHgASwB4- +U+-004C: +AHgATAB4- +U+-004D: +AHgATQB4- +U+-004E: +AHgATgB4- +U+-004F: +AHgATwB4- +U+-0050: +AHgAUAB4- +U+-0051: +AHgAUQB4- +U+-0052: +AHgAUgB4- +U+-0053: +AHgAUwB4- +U+-0054: +AHgAVAB4- +U+-0055: +AHgAVQB4- +U+-0056: +AHgAVgB4- +U+-0057: +AHgAVwB4- +U+-0058: +AHgAWAB4- +U+-0059: +AHgAWQB4- +U+-005A: +AHgAWgB4- +U+-005B: +AHgAWwB4- +U+-005C: +AHgAXAB4- +U+-005D: +AHgAXQB4- +U+-005E: +AHgAXgB4- +U+-005F: +AHgAXwB4- +U+-0060: +AHgAYAB4- +U+-0061: +AHgAYQB4- +U+-0062: +AHgAYgB4- +U+-0063: +AHgAYwB4- +U+-0064: +AHgAZAB4- +U+-0065: +AHgAZQB4- +U+-0066: +AHgAZgB4- +U+-0067: +AHgAZwB4- +U+-0068: +AHgAaAB4- +U+-0069: +AHgAaQB4- +U+-006A: +AHgAagB4- +U+-006B: +AHgAawB4- +U+-006C: +AHgAbAB4- +U+-006D: +AHgAbQB4- +U+-006E: +AHgAbgB4- +U+-006F: +AHgAbwB4- +U+-0070: +AHgAcAB4- +U+-0071: +AHgAcQB4- +U+-0072: +AHgAcgB4- +U+-0073: +AHgAcwB4- +U+-0074: +AHgAdAB4- +U+-0075: +AHgAdQB4- +U+-0076: +AHgAdgB4- +U+-0077: +AHgAdwB4- +U+-0078: +AHgAeAB4- +U+-0079: +AHgAeQB4- +U+-007A: +AHgAegB4- +U+-007B: +AHgAewB4- +U+-007C: +AHgAfAB4- +U+-007D: +AHgAfQB4- +U+-007E: +AHgAfgB4- +U+-007F: +AHgAfwB4- + +Controls and Latin-1 Supplement + +U+-0080: +AHgAgAB4- +U+-0081: +AHgAgQB4- +U+-0082: +AHgAggB4- +U+-0083: +AHgAgwB4- +U+-0084: +AHgAhAB4- +U+-0085: +AHgAhQB4- +U+-0086: +AHgAhgB4- +U+-0087: +AHgAhwB4- +U+-0088: +AHgAiAB4- +U+-0089: +AHgAiQB4- +U+-008A: +AHgAigB4- +U+-008B: +AHgAiwB4- +U+-008C: +AHgAjAB4- +U+-008D: +AHgAjQB4- +U+-008E: +AHgAjgB4- +U+-008F: +AHgAjwB4- +U+-0090: +AHgAkAB4- +U+-0091: +AHgAkQB4- +U+-0092: +AHgAkgB4- +U+-0093: +AHgAkwB4- +U+-0094: +AHgAlAB4- +U+-0095: +AHgAlQB4- +U+-0096: +AHgAlgB4- +U+-0097: +AHgAlwB4- +U+-0098: +AHgAmAB4- +U+-0099: +AHgAmQB4- +U+-009A: +AHgAmgB4- +U+-009B: +AHgAmwB4- +U+-009C: +AHgAnAB4- +U+-009D: +AHgAnQB4- +U+-009E: +AHgAngB4- +U+-009F: +AHgAnwB4- +U+-00A0: +AHgAoAB4- +U+-00A1: +AHgAoQB4- +U+-00A2: +AHgAogB4- +U+-00A3: +AHgAowB4- +U+-00A4: +AHgApAB4- +U+-00A5: +AHgApQB4- +U+-00A6: +AHgApgB4- +U+-00A7: +AHgApwB4- +U+-00A8: +AHgAqAB4- +U+-00A9: +AHgAqQB4- +U+-00AA: +AHgAqgB4- +U+-00AB: +AHgAqwB4- +U+-00AC: +AHgArAB4- +U+-00AD: +AHgArQB4- +U+-00AE: +AHgArgB4- +U+-00AF: +AHgArwB4- +U+-00B0: +AHgAsAB4- +U+-00B1: +AHgAsQB4- +U+-00B2: +AHgAsgB4- +U+-00B3: +AHgAswB4- +U+-00B4: +AHgAtAB4- +U+-00B5: +AHgAtQB4- +U+-00B6: +AHgAtgB4- +U+-00B7: +AHgAtwB4- +U+-00B8: +AHgAuAB4- +U+-00B9: +AHgAuQB4- +U+-00BA: +AHgAugB4- +U+-00BB: +AHgAuwB4- +U+-00BC: +AHgAvAB4- +U+-00BD: +AHgAvQB4- +U+-00BE: +AHgAvgB4- +U+-00BF: +AHgAvwB4- +U+-00C0: +AHgAwAB4- +U+-00C1: +AHgAwQB4- +U+-00C2: +AHgAwgB4- +U+-00C3: +AHgAwwB4- +U+-00C4: +AHgAxAB4- +U+-00C5: +AHgAxQB4- +U+-00C6: +AHgAxgB4- +U+-00C7: +AHgAxwB4- +U+-00C8: +AHgAyAB4- +U+-00C9: +AHgAyQB4- +U+-00CA: +AHgAygB4- +U+-00CB: +AHgAywB4- +U+-00CC: +AHgAzAB4- +U+-00CD: +AHgAzQB4- +U+-00CE: +AHgAzgB4- +U+-00CF: +AHgAzwB4- +U+-00D0: +AHgA0AB4- +U+-00D1: +AHgA0QB4- +U+-00D2: +AHgA0gB4- +U+-00D3: +AHgA0wB4- +U+-00D4: +AHgA1AB4- +U+-00D5: +AHgA1QB4- +U+-00D6: +AHgA1gB4- +U+-00D7: +AHgA1wB4- +U+-00D8: +AHgA2AB4- +U+-00D9: +AHgA2QB4- +U+-00DA: +AHgA2gB4- +U+-00DB: +AHgA2wB4- +U+-00DC: +AHgA3AB4- +U+-00DD: +AHgA3QB4- +U+-00DE: +AHgA3gB4- +U+-00DF: +AHgA3wB4- +U+-00E0: +AHgA4AB4- +U+-00E1: +AHgA4QB4- +U+-00E2: +AHgA4gB4- +U+-00E3: +AHgA4wB4- +U+-00E4: +AHgA5AB4- +U+-00E5: +AHgA5QB4- +U+-00E6: +AHgA5gB4- +U+-00E7: +AHgA5wB4- +U+-00E8: +AHgA6AB4- +U+-00E9: +AHgA6QB4- +U+-00EA: +AHgA6gB4- +U+-00EB: +AHgA6wB4- +U+-00EC: +AHgA7AB4- +U+-00ED: +AHgA7QB4- +U+-00EE: +AHgA7gB4- +U+-00EF: +AHgA7wB4- +U+-00F0: +AHgA8AB4- +U+-00F1: +AHgA8QB4- +U+-00F2: +AHgA8gB4- +U+-00F3: +AHgA8wB4- +U+-00F4: +AHgA9AB4- +U+-00F5: +AHgA9QB4- +U+-00F6: +AHgA9gB4- +U+-00F7: +AHgA9wB4- +U+-00F8: +AHgA+AB4- +U+-00F9: +AHgA+QB4- +U+-00FA: +AHgA+gB4- +U+-00FB: +AHgA+wB4- +U+-00FC: +AHgA/AB4- +U+-00FD: +AHgA/QB4- +U+-00FE: +AHgA/gB4- +U+-00FF: +AHgA/wB4- + +Latin Extended-A + +U+-0100: +AHgBAAB4- +U+-0101: +AHgBAQB4- +U+-0102: +AHgBAgB4- +U+-0103: +AHgBAwB4- +U+-0104: +AHgBBAB4- +U+-0105: +AHgBBQB4- +U+-0106: +AHgBBgB4- +U+-0107: +AHgBBwB4- +U+-0108: +AHgBCAB4- +U+-0109: +AHgBCQB4- +U+-010A: +AHgBCgB4- +U+-010B: +AHgBCwB4- +U+-010C: +AHgBDAB4- +U+-010D: +AHgBDQB4- +U+-010E: +AHgBDgB4- +U+-010F: +AHgBDwB4- +U+-0110: +AHgBEAB4- +U+-0111: +AHgBEQB4- +U+-0112: +AHgBEgB4- +U+-0113: +AHgBEwB4- +U+-0114: +AHgBFAB4- +U+-0115: +AHgBFQB4- +U+-0116: +AHgBFgB4- +U+-0117: +AHgBFwB4- +U+-0118: +AHgBGAB4- +U+-0119: +AHgBGQB4- +U+-011A: +AHgBGgB4- +U+-011B: +AHgBGwB4- +U+-011C: +AHgBHAB4- +U+-011D: +AHgBHQB4- +U+-011E: +AHgBHgB4- +U+-011F: +AHgBHwB4- +U+-0120: +AHgBIAB4- +U+-0121: +AHgBIQB4- +U+-0122: +AHgBIgB4- +U+-0123: +AHgBIwB4- +U+-0124: +AHgBJAB4- +U+-0125: +AHgBJQB4- +U+-0126: +AHgBJgB4- +U+-0127: +AHgBJwB4- +U+-0128: +AHgBKAB4- +U+-0129: +AHgBKQB4- +U+-012A: +AHgBKgB4- +U+-012B: +AHgBKwB4- +U+-012C: +AHgBLAB4- +U+-012D: +AHgBLQB4- +U+-012E: +AHgBLgB4- +U+-012F: +AHgBLwB4- +U+-0130: +AHgBMAB4- +U+-0131: +AHgBMQB4- +U+-0132: +AHgBMgB4- +U+-0133: +AHgBMwB4- +U+-0134: +AHgBNAB4- +U+-0135: +AHgBNQB4- +U+-0136: +AHgBNgB4- +U+-0137: +AHgBNwB4- +U+-0138: +AHgBOAB4- +U+-0139: +AHgBOQB4- +U+-013A: +AHgBOgB4- +U+-013B: +AHgBOwB4- +U+-013C: +AHgBPAB4- +U+-013D: +AHgBPQB4- +U+-013E: +AHgBPgB4- +U+-013F: +AHgBPwB4- +U+-0140: +AHgBQAB4- +U+-0141: +AHgBQQB4- +U+-0142: +AHgBQgB4- +U+-0143: +AHgBQwB4- +U+-0144: +AHgBRAB4- +U+-0145: +AHgBRQB4- +U+-0146: +AHgBRgB4- +U+-0147: +AHgBRwB4- +U+-0148: +AHgBSAB4- +U+-0149: +AHgBSQB4- +U+-014A: +AHgBSgB4- +U+-014B: +AHgBSwB4- +U+-014C: +AHgBTAB4- +U+-014D: +AHgBTQB4- +U+-014E: +AHgBTgB4- +U+-014F: +AHgBTwB4- +U+-0150: +AHgBUAB4- +U+-0151: +AHgBUQB4- +U+-0152: +AHgBUgB4- +U+-0153: +AHgBUwB4- +U+-0154: +AHgBVAB4- +U+-0155: +AHgBVQB4- +U+-0156: +AHgBVgB4- +U+-0157: +AHgBVwB4- +U+-0158: +AHgBWAB4- +U+-0159: +AHgBWQB4- +U+-015A: +AHgBWgB4- +U+-015B: +AHgBWwB4- +U+-015C: +AHgBXAB4- +U+-015D: +AHgBXQB4- +U+-015E: +AHgBXgB4- +U+-015F: +AHgBXwB4- +U+-0160: +AHgBYAB4- +U+-0161: +AHgBYQB4- +U+-0162: +AHgBYgB4- +U+-0163: +AHgBYwB4- +U+-0164: +AHgBZAB4- +U+-0165: +AHgBZQB4- +U+-0166: +AHgBZgB4- +U+-0167: +AHgBZwB4- +U+-0168: +AHgBaAB4- +U+-0169: +AHgBaQB4- +U+-016A: +AHgBagB4- +U+-016B: +AHgBawB4- +U+-016C: +AHgBbAB4- +U+-016D: +AHgBbQB4- +U+-016E: +AHgBbgB4- +U+-016F: +AHgBbwB4- +U+-0170: +AHgBcAB4- +U+-0171: +AHgBcQB4- +U+-0172: +AHgBcgB4- +U+-0173: +AHgBcwB4- +U+-0174: +AHgBdAB4- +U+-0175: +AHgBdQB4- +U+-0176: +AHgBdgB4- +U+-0177: +AHgBdwB4- +U+-0178: +AHgBeAB4- +U+-0179: +AHgBeQB4- +U+-017A: +AHgBegB4- +U+-017B: +AHgBewB4- +U+-017C: +AHgBfAB4- +U+-017D: +AHgBfQB4- +U+-017E: +AHgBfgB4- +U+-017F: +AHgBfwB4- + +Latin Extended-B + +U+-0180: +AHgBgAB4- +U+-0181: +AHgBgQB4- +U+-0182: +AHgBggB4- +U+-0183: +AHgBgwB4- +U+-0184: +AHgBhAB4- +U+-0185: +AHgBhQB4- +U+-0186: +AHgBhgB4- +U+-0187: +AHgBhwB4- +U+-0188: +AHgBiAB4- +U+-0189: +AHgBiQB4- +U+-018A: +AHgBigB4- +U+-018B: +AHgBiwB4- +U+-018C: +AHgBjAB4- +U+-018D: +AHgBjQB4- +U+-018E: +AHgBjgB4- +U+-018F: +AHgBjwB4- +U+-0190: +AHgBkAB4- +U+-0191: +AHgBkQB4- +U+-0192: +AHgBkgB4- +U+-0193: +AHgBkwB4- +U+-0194: +AHgBlAB4- +U+-0195: +AHgBlQB4- +U+-0196: +AHgBlgB4- +U+-0197: +AHgBlwB4- +U+-0198: +AHgBmAB4- +U+-0199: +AHgBmQB4- +U+-019A: +AHgBmgB4- +U+-019B: +AHgBmwB4- +U+-019C: +AHgBnAB4- +U+-019D: +AHgBnQB4- +U+-019E: +AHgBngB4- +U+-019F: +AHgBnwB4- +U+-01A0: +AHgBoAB4- +U+-01A1: +AHgBoQB4- +U+-01A2: +AHgBogB4- +U+-01A3: +AHgBowB4- +U+-01A4: +AHgBpAB4- +U+-01A5: +AHgBpQB4- +U+-01A6: +AHgBpgB4- +U+-01A7: +AHgBpwB4- +U+-01A8: +AHgBqAB4- +U+-01A9: +AHgBqQB4- +U+-01AA: +AHgBqgB4- +U+-01AB: +AHgBqwB4- +U+-01AC: +AHgBrAB4- +U+-01AD: +AHgBrQB4- +U+-01AE: +AHgBrgB4- +U+-01AF: +AHgBrwB4- +U+-01B0: +AHgBsAB4- +U+-01B1: +AHgBsQB4- +U+-01B2: +AHgBsgB4- +U+-01B3: +AHgBswB4- +U+-01B4: +AHgBtAB4- +U+-01B5: +AHgBtQB4- +U+-01B6: +AHgBtgB4- +U+-01B7: +AHgBtwB4- +U+-01B8: +AHgBuAB4- +U+-01B9: +AHgBuQB4- +U+-01BA: +AHgBugB4- +U+-01BB: +AHgBuwB4- +U+-01BC: +AHgBvAB4- +U+-01BD: +AHgBvQB4- +U+-01BE: +AHgBvgB4- +U+-01BF: +AHgBvwB4- +U+-01C0: +AHgBwAB4- +U+-01C1: +AHgBwQB4- +U+-01C2: +AHgBwgB4- +U+-01C3: +AHgBwwB4- +U+-01C4: +AHgBxAB4- +U+-01C5: +AHgBxQB4- +U+-01C6: +AHgBxgB4- +U+-01C7: +AHgBxwB4- +U+-01C8: +AHgByAB4- +U+-01C9: +AHgByQB4- +U+-01CA: +AHgBygB4- +U+-01CB: +AHgBywB4- +U+-01CC: +AHgBzAB4- +U+-01CD: +AHgBzQB4- +U+-01CE: +AHgBzgB4- +U+-01CF: +AHgBzwB4- +U+-01D0: +AHgB0AB4- +U+-01D1: +AHgB0QB4- +U+-01D2: +AHgB0gB4- +U+-01D3: +AHgB0wB4- +U+-01D4: +AHgB1AB4- +U+-01D5: +AHgB1QB4- +U+-01D6: +AHgB1gB4- +U+-01D7: +AHgB1wB4- +U+-01D8: +AHgB2AB4- +U+-01D9: +AHgB2QB4- +U+-01DA: +AHgB2gB4- +U+-01DB: +AHgB2wB4- +U+-01DC: +AHgB3AB4- +U+-01DD: +AHgB3QB4- +U+-01DE: +AHgB3gB4- +U+-01DF: +AHgB3wB4- +U+-01E0: +AHgB4AB4- +U+-01E1: +AHgB4QB4- +U+-01E2: +AHgB4gB4- +U+-01E3: +AHgB4wB4- +U+-01E4: +AHgB5AB4- +U+-01E5: +AHgB5QB4- +U+-01E6: +AHgB5gB4- +U+-01E7: +AHgB5wB4- +U+-01E8: +AHgB6AB4- +U+-01E9: +AHgB6QB4- +U+-01EA: +AHgB6gB4- +U+-01EB: +AHgB6wB4- +U+-01EC: +AHgB7AB4- +U+-01ED: +AHgB7QB4- +U+-01EE: +AHgB7gB4- +U+-01EF: +AHgB7wB4- +U+-01F0: +AHgB8AB4- +U+-01F1: +AHgB8QB4- +U+-01F2: +AHgB8gB4- +U+-01F3: +AHgB8wB4- +U+-01F4: +AHgB9AB4- +U+-01F5: +AHgB9QB4- +U+-01F6: +AHgB9gB4- +U+-01F7: +AHgB9wB4- +U+-01F8: +AHgB+AB4- +U+-01F9: +AHgB+QB4- +U+-01FA: +AHgB+gB4- +U+-01FB: +AHgB+wB4- +U+-01FC: +AHgB/AB4- +U+-01FD: +AHgB/QB4- +U+-01FE: +AHgB/gB4- +U+-01FF: +AHgB/wB4- +U+-0200: +AHgCAAB4- +U+-0201: +AHgCAQB4- +U+-0202: +AHgCAgB4- +U+-0203: +AHgCAwB4- +U+-0204: +AHgCBAB4- +U+-0205: +AHgCBQB4- +U+-0206: +AHgCBgB4- +U+-0207: +AHgCBwB4- +U+-0208: +AHgCCAB4- +U+-0209: +AHgCCQB4- +U+-020A: +AHgCCgB4- +U+-020B: +AHgCCwB4- +U+-020C: +AHgCDAB4- +U+-020D: +AHgCDQB4- +U+-020E: +AHgCDgB4- +U+-020F: +AHgCDwB4- +U+-0210: +AHgCEAB4- +U+-0211: +AHgCEQB4- +U+-0212: +AHgCEgB4- +U+-0213: +AHgCEwB4- +U+-0214: +AHgCFAB4- +U+-0215: +AHgCFQB4- +U+-0216: +AHgCFgB4- +U+-0217: +AHgCFwB4- +U+-0218: +AHgCGAB4- +U+-0219: +AHgCGQB4- +U+-021A: +AHgCGgB4- +U+-021B: +AHgCGwB4- +U+-021C: +AHgCHAB4- +U+-021D: +AHgCHQB4- +U+-021E: +AHgCHgB4- +U+-021F: +AHgCHwB4- +U+-0220: +AHgCIAB4- +U+-0221: +AHgCIQB4- +U+-0222: +AHgCIgB4- +U+-0223: +AHgCIwB4- +U+-0224: +AHgCJAB4- +U+-0225: +AHgCJQB4- +U+-0226: +AHgCJgB4- +U+-0227: +AHgCJwB4- +U+-0228: +AHgCKAB4- +U+-0229: +AHgCKQB4- +U+-022A: +AHgCKgB4- +U+-022B: +AHgCKwB4- +U+-022C: +AHgCLAB4- +U+-022D: +AHgCLQB4- +U+-022E: +AHgCLgB4- +U+-022F: +AHgCLwB4- +U+-0230: +AHgCMAB4- +U+-0231: +AHgCMQB4- +U+-0232: +AHgCMgB4- +U+-0233: +AHgCMwB4- +U+-0234: +AHgCNAB4- +U+-0235: +AHgCNQB4- +U+-0236: +AHgCNgB4- +U+-0237: +AHgCNwB4- +U+-0238: +AHgCOAB4- +U+-0239: +AHgCOQB4- +U+-023A: +AHgCOgB4- +U+-023B: +AHgCOwB4- +U+-023C: +AHgCPAB4- +U+-023D: +AHgCPQB4- +U+-023E: +AHgCPgB4- +U+-023F: +AHgCPwB4- +U+-0240: +AHgCQAB4- +U+-0241: +AHgCQQB4- +U+-0242: +AHgCQgB4- +U+-0243: +AHgCQwB4- +U+-0244: +AHgCRAB4- +U+-0245: +AHgCRQB4- +U+-0246: +AHgCRgB4- +U+-0247: +AHgCRwB4- +U+-0248: +AHgCSAB4- +U+-0249: +AHgCSQB4- +U+-024A: +AHgCSgB4- +U+-024B: +AHgCSwB4- +U+-024C: +AHgCTAB4- +U+-024D: +AHgCTQB4- +U+-024E: +AHgCTgB4- +U+-024F: +AHgCTwB4- + +IPA Extensions + +U+-0250: +AHgCUAB4- +U+-0251: +AHgCUQB4- +U+-0252: +AHgCUgB4- +U+-0253: +AHgCUwB4- +U+-0254: +AHgCVAB4- +U+-0255: +AHgCVQB4- +U+-0256: +AHgCVgB4- +U+-0257: +AHgCVwB4- +U+-0258: +AHgCWAB4- +U+-0259: +AHgCWQB4- +U+-025A: +AHgCWgB4- +U+-025B: +AHgCWwB4- +U+-025C: +AHgCXAB4- +U+-025D: +AHgCXQB4- +U+-025E: +AHgCXgB4- +U+-025F: +AHgCXwB4- +U+-0260: +AHgCYAB4- +U+-0261: +AHgCYQB4- +U+-0262: +AHgCYgB4- +U+-0263: +AHgCYwB4- +U+-0264: +AHgCZAB4- +U+-0265: +AHgCZQB4- +U+-0266: +AHgCZgB4- +U+-0267: +AHgCZwB4- +U+-0268: +AHgCaAB4- +U+-0269: +AHgCaQB4- +U+-026A: +AHgCagB4- +U+-026B: +AHgCawB4- +U+-026C: +AHgCbAB4- +U+-026D: +AHgCbQB4- +U+-026E: +AHgCbgB4- +U+-026F: +AHgCbwB4- +U+-0270: +AHgCcAB4- +U+-0271: +AHgCcQB4- +U+-0272: +AHgCcgB4- +U+-0273: +AHgCcwB4- +U+-0274: +AHgCdAB4- +U+-0275: +AHgCdQB4- +U+-0276: +AHgCdgB4- +U+-0277: +AHgCdwB4- +U+-0278: +AHgCeAB4- +U+-0279: +AHgCeQB4- +U+-027A: +AHgCegB4- +U+-027B: +AHgCewB4- +U+-027C: +AHgCfAB4- +U+-027D: +AHgCfQB4- +U+-027E: +AHgCfgB4- +U+-027F: +AHgCfwB4- +U+-0280: +AHgCgAB4- +U+-0281: +AHgCgQB4- +U+-0282: +AHgCggB4- +U+-0283: +AHgCgwB4- +U+-0284: +AHgChAB4- +U+-0285: +AHgChQB4- +U+-0286: +AHgChgB4- +U+-0287: +AHgChwB4- +U+-0288: +AHgCiAB4- +U+-0289: +AHgCiQB4- +U+-028A: +AHgCigB4- +U+-028B: +AHgCiwB4- +U+-028C: +AHgCjAB4- +U+-028D: +AHgCjQB4- +U+-028E: +AHgCjgB4- +U+-028F: +AHgCjwB4- +U+-0290: +AHgCkAB4- +U+-0291: +AHgCkQB4- +U+-0292: +AHgCkgB4- +U+-0293: +AHgCkwB4- +U+-0294: +AHgClAB4- +U+-0295: +AHgClQB4- +U+-0296: +AHgClgB4- +U+-0297: +AHgClwB4- +U+-0298: +AHgCmAB4- +U+-0299: +AHgCmQB4- +U+-029A: +AHgCmgB4- +U+-029B: +AHgCmwB4- +U+-029C: +AHgCnAB4- +U+-029D: +AHgCnQB4- +U+-029E: +AHgCngB4- +U+-029F: +AHgCnwB4- +U+-02A0: +AHgCoAB4- +U+-02A1: +AHgCoQB4- +U+-02A2: +AHgCogB4- +U+-02A3: +AHgCowB4- +U+-02A4: +AHgCpAB4- +U+-02A5: +AHgCpQB4- +U+-02A6: +AHgCpgB4- +U+-02A7: +AHgCpwB4- +U+-02A8: +AHgCqAB4- +U+-02A9: +AHgCqQB4- +U+-02AA: +AHgCqgB4- +U+-02AB: +AHgCqwB4- +U+-02AC: +AHgCrAB4- +U+-02AD: +AHgCrQB4- +U+-02AE: +AHgCrgB4- +U+-02AF: +AHgCrwB4- + +Spacing Modifier Letters + +U+-02B0: +AHgCsAB4- +U+-02B1: +AHgCsQB4- +U+-02B2: +AHgCsgB4- +U+-02B3: +AHgCswB4- +U+-02B4: +AHgCtAB4- +U+-02B5: +AHgCtQB4- +U+-02B6: +AHgCtgB4- +U+-02B7: +AHgCtwB4- +U+-02B8: +AHgCuAB4- +U+-02B9: +AHgCuQB4- +U+-02BA: +AHgCugB4- +U+-02BB: +AHgCuwB4- +U+-02BC: +AHgCvAB4- +U+-02BD: +AHgCvQB4- +U+-02BE: +AHgCvgB4- +U+-02BF: +AHgCvwB4- +U+-02C0: +AHgCwAB4- +U+-02C1: +AHgCwQB4- +U+-02C2: +AHgCwgB4- +U+-02C3: +AHgCwwB4- +U+-02C4: +AHgCxAB4- +U+-02C5: +AHgCxQB4- +U+-02C6: +AHgCxgB4- +U+-02C7: +AHgCxwB4- +U+-02C8: +AHgCyAB4- +U+-02C9: +AHgCyQB4- +U+-02CA: +AHgCygB4- +U+-02CB: +AHgCywB4- +U+-02CC: +AHgCzAB4- +U+-02CD: +AHgCzQB4- +U+-02CE: +AHgCzgB4- +U+-02CF: +AHgCzwB4- +U+-02D0: +AHgC0AB4- +U+-02D1: +AHgC0QB4- +U+-02D2: +AHgC0gB4- +U+-02D3: +AHgC0wB4- +U+-02D4: +AHgC1AB4- +U+-02D5: +AHgC1QB4- +U+-02D6: +AHgC1gB4- +U+-02D7: +AHgC1wB4- +U+-02D8: +AHgC2AB4- +U+-02D9: +AHgC2QB4- +U+-02DA: +AHgC2gB4- +U+-02DB: +AHgC2wB4- +U+-02DC: +AHgC3AB4- +U+-02DD: +AHgC3QB4- +U+-02DE: +AHgC3gB4- +U+-02DF: +AHgC3wB4- +U+-02E0: +AHgC4AB4- +U+-02E1: +AHgC4QB4- +U+-02E2: +AHgC4gB4- +U+-02E3: +AHgC4wB4- +U+-02E4: +AHgC5AB4- +U+-02E5: +AHgC5QB4- +U+-02E6: +AHgC5gB4- +U+-02E7: +AHgC5wB4- +U+-02E8: +AHgC6AB4- +U+-02E9: +AHgC6QB4- +U+-02EA: +AHgC6gB4- +U+-02EB: +AHgC6wB4- +U+-02EC: +AHgC7AB4- +U+-02ED: +AHgC7QB4- +U+-02EE: +AHgC7gB4- +U+-02EF: +AHgC7wB4- +U+-02F0: +AHgC8AB4- +U+-02F1: +AHgC8QB4- +U+-02F2: +AHgC8gB4- +U+-02F3: +AHgC8wB4- +U+-02F4: +AHgC9AB4- +U+-02F5: +AHgC9QB4- +U+-02F6: +AHgC9gB4- +U+-02F7: +AHgC9wB4- +U+-02F8: +AHgC+AB4- +U+-02F9: +AHgC+QB4- +U+-02FA: +AHgC+gB4- +U+-02FB: +AHgC+wB4- +U+-02FC: +AHgC/AB4- +U+-02FD: +AHgC/QB4- +U+-02FE: +AHgC/gB4- +U+-02FF: +AHgC/wB4- + +General Punctuation + +U+-2000: +AHggAAB4- +U+-2001: +AHggAQB4- +U+-2002: +AHggAgB4- +U+-2003: +AHggAwB4- +U+-2004: +AHggBAB4- +U+-2005: +AHggBQB4- +U+-2006: +AHggBgB4- +U+-2007: +AHggBwB4- +U+-2008: +AHggCAB4- +U+-2009: +AHggCQB4- +U+-200A: +AHggCgB4- +U+-200B: +AHggCwB4- +U+-200C: +AHggDAB4- +U+-200D: +AHggDQB4- +U+-200E: +AHggDgB4- +U+-200F: +AHggDwB4- +U+-2010: +AHggEAB4- +U+-2011: +AHggEQB4- +U+-2012: +AHggEgB4- +U+-2013: +AHggEwB4- +U+-2014: +AHggFAB4- +U+-2015: +AHggFQB4- +U+-2016: +AHggFgB4- +U+-2017: +AHggFwB4- +U+-2018: +AHggGAB4- +U+-2019: +AHggGQB4- +U+-201A: +AHggGgB4- +U+-201B: +AHggGwB4- +U+-201C: +AHggHAB4- +U+-201D: +AHggHQB4- +U+-201E: +AHggHgB4- +U+-201F: +AHggHwB4- +U+-2020: +AHggIAB4- +U+-2021: +AHggIQB4- +U+-2022: +AHggIgB4- +U+-2023: +AHggIwB4- +U+-2024: +AHggJAB4- +U+-2025: +AHggJQB4- +U+-2026: +AHggJgB4- +U+-2027: +AHggJwB4- +U+-2028: +AHggKAB4- +U+-2029: +AHggKQB4- +U+-202A: +AHggKgB4- +U+-202B: +AHggKwB4- +U+-202C: +AHggLAB4- +U+-202D: +AHggLQB4- +U+-202E: +AHggLgB4- +U+-202F: +AHggLwB4- +U+-2030: +AHggMAB4- +U+-2031: +AHggMQB4- +U+-2032: +AHggMgB4- +U+-2033: +AHggMwB4- +U+-2034: +AHggNAB4- +U+-2035: +AHggNQB4- +U+-2036: +AHggNgB4- +U+-2037: +AHggNwB4- +U+-2038: +AHggOAB4- +U+-2039: +AHggOQB4- +U+-203A: +AHggOgB4- +U+-203B: +AHggOwB4- +U+-203C: +AHggPAB4- +U+-203D: +AHggPQB4- +U+-203E: +AHggPgB4- +U+-203F: +AHggPwB4- +U+-2040: +AHggQAB4- +U+-2041: +AHggQQB4- +U+-2042: +AHggQgB4- +U+-2043: +AHggQwB4- +U+-2044: +AHggRAB4- +U+-2045: +AHggRQB4- +U+-2046: +AHggRgB4- +U+-2047: +AHggRwB4- +U+-2048: +AHggSAB4- +U+-2049: +AHggSQB4- +U+-204A: +AHggSgB4- +U+-204B: +AHggSwB4- +U+-204C: +AHggTAB4- +U+-204D: +AHggTQB4- +U+-204E: +AHggTgB4- +U+-204F: +AHggTwB4- +U+-2050: +AHggUAB4- +U+-2051: +AHggUQB4- +U+-2052: +AHggUgB4- +U+-2053: +AHggUwB4- +U+-2054: +AHggVAB4- +U+-2055: +AHggVQB4- +U+-2056: +AHggVgB4- +U+-2057: +AHggVwB4- +U+-2058: +AHggWAB4- +U+-2059: +AHggWQB4- +U+-205A: +AHggWgB4- +U+-205B: +AHggWwB4- +U+-205C: +AHggXAB4- +U+-205D: +AHggXQB4- +U+-205E: +AHggXgB4- +U+-205F: +AHggXwB4- +U+-2060: +AHggYAB4- +U+-2061: +AHggYQB4- +U+-2062: +AHggYgB4- +U+-2063: +AHggYwB4- +U+-2064: +AHggZAB4- +U+-2065: +AHggZQB4- +U+-2066: +AHggZgB4- +U+-2067: +AHggZwB4- +U+-2068: +AHggaAB4- +U+-2069: +AHggaQB4- +U+-206A: +AHggagB4- +U+-206B: +AHggawB4- +U+-206C: +AHggbAB4- +U+-206D: +AHggbQB4- +U+-206E: +AHggbgB4- +U+-206F: +AHggbwB4- + +Currency Symbols + +U+-20A0: +AHggoAB4- +U+-20A1: +AHggoQB4- +U+-20A2: +AHggogB4- +U+-20A3: +AHggowB4- +U+-20A4: +AHggpAB4- +U+-20A5: +AHggpQB4- +U+-20A6: +AHggpgB4- +U+-20A7: +AHggpwB4- +U+-20A8: +AHggqAB4- +U+-20A9: +AHggqQB4- +U+-20AA: +AHggqgB4- +U+-20AB: +AHggqwB4- +U+-20AC: +AHggrAB4- +U+-20AD: +AHggrQB4- +U+-20AE: +AHggrgB4- +U+-20AF: +AHggrwB4- +U+-20B0: +AHggsAB4- +U+-20B1: +AHggsQB4- +U+-20B2: +AHggsgB4- +U+-20B3: +AHggswB4- +U+-20B4: +AHggtAB4- +U+-20B5: +AHggtQB4- +U+-20B6: +AHggtgB4- +U+-20B7: +AHggtwB4- +U+-20B8: +AHgguAB4- +U+-20B9: +AHgguQB4- +U+-20BA: +AHggugB4- +U+-20BB: +AHgguwB4- +U+-20BC: +AHggvAB4- +U+-20BD: +AHggvQB4- +U+-20BE: +AHggvgB4- +U+-20BF: +AHggvwB4- +U+-20C0: +AHggwAB4- +U+-20C1: +AHggwQB4- +U+-20C2: +AHggwgB4- +U+-20C3: +AHggwwB4- +U+-20C4: +AHggxAB4- +U+-20C5: +AHggxQB4- +U+-20C6: +AHggxgB4- +U+-20C7: +AHggxwB4- +U+-20C8: +AHggyAB4- +U+-20C9: +AHggyQB4- +U+-20CA: +AHggygB4- +U+-20CB: +AHggywB4- +U+-20CC: +AHggzAB4- +U+-20CD: +AHggzQB4- +U+-20CE: +AHggzgB4- +U+-20CF: +AHggzwB4- + +Letterlike Symbols + +U+-2100: +AHghAAB4- +U+-2101: +AHghAQB4- +U+-2102: +AHghAgB4- +U+-2103: +AHghAwB4- +U+-2104: +AHghBAB4- +U+-2105: +AHghBQB4- +U+-2106: +AHghBgB4- +U+-2107: +AHghBwB4- +U+-2108: +AHghCAB4- +U+-2109: +AHghCQB4- +U+-210A: +AHghCgB4- +U+-210B: +AHghCwB4- +U+-210C: +AHghDAB4- +U+-210D: +AHghDQB4- +U+-210E: +AHghDgB4- +U+-210F: +AHghDwB4- +U+-2110: +AHghEAB4- +U+-2111: +AHghEQB4- +U+-2112: +AHghEgB4- +U+-2113: +AHghEwB4- +U+-2114: +AHghFAB4- +U+-2115: +AHghFQB4- +U+-2116: +AHghFgB4- +U+-2117: +AHghFwB4- +U+-2118: +AHghGAB4- +U+-2119: +AHghGQB4- +U+-211A: +AHghGgB4- +U+-211B: +AHghGwB4- +U+-211C: +AHghHAB4- +U+-211D: +AHghHQB4- +U+-211E: +AHghHgB4- +U+-211F: +AHghHwB4- +U+-2120: +AHghIAB4- +U+-2121: +AHghIQB4- +U+-2122: +AHghIgB4- +U+-2123: +AHghIwB4- +U+-2124: +AHghJAB4- +U+-2125: +AHghJQB4- +U+-2126: +AHghJgB4- +U+-2127: +AHghJwB4- +U+-2128: +AHghKAB4- +U+-2129: +AHghKQB4- +U+-212A: +AHghKgB4- +U+-212B: +AHghKwB4- +U+-212C: +AHghLAB4- +U+-212D: +AHghLQB4- +U+-212E: +AHghLgB4- +U+-212F: +AHghLwB4- +U+-2130: +AHghMAB4- +U+-2131: +AHghMQB4- +U+-2132: +AHghMgB4- +U+-2133: +AHghMwB4- +U+-2134: +AHghNAB4- +U+-2135: +AHghNQB4- +U+-2136: +AHghNgB4- +U+-2137: +AHghNwB4- +U+-2138: +AHghOAB4- +U+-2139: +AHghOQB4- +U+-213A: +AHghOgB4- +U+-213B: +AHghOwB4- +U+-213C: +AHghPAB4- +U+-213D: +AHghPQB4- +U+-213E: +AHghPgB4- +U+-213F: +AHghPwB4- +U+-2140: +AHghQAB4- +U+-2141: +AHghQQB4- +U+-2142: +AHghQgB4- +U+-2143: +AHghQwB4- +U+-2144: +AHghRAB4- +U+-2145: +AHghRQB4- +U+-2146: +AHghRgB4- +U+-2147: +AHghRwB4- +U+-2148: +AHghSAB4- +U+-2149: +AHghSQB4- +U+-214A: +AHghSgB4- +U+-214B: +AHghSwB4- +U+-214C: +AHghTAB4- +U+-214D: +AHghTQB4- +U+-214E: +AHghTgB4- +U+-214F: +AHghTwB4- + +Number Forms + +U+-2150: +AHghUAB4- +U+-2151: +AHghUQB4- +U+-2152: +AHghUgB4- +U+-2153: +AHghUwB4- +U+-2154: +AHghVAB4- +U+-2155: +AHghVQB4- +U+-2156: +AHghVgB4- +U+-2157: +AHghVwB4- +U+-2158: +AHghWAB4- +U+-2159: +AHghWQB4- +U+-215A: +AHghWgB4- +U+-215B: +AHghWwB4- +U+-215C: +AHghXAB4- +U+-215D: +AHghXQB4- +U+-215E: +AHghXgB4- +U+-215F: +AHghXwB4- +U+-2160: +AHghYAB4- +U+-2161: +AHghYQB4- +U+-2162: +AHghYgB4- +U+-2163: +AHghYwB4- +U+-2164: +AHghZAB4- +U+-2165: +AHghZQB4- +U+-2166: +AHghZgB4- +U+-2167: +AHghZwB4- +U+-2168: +AHghaAB4- +U+-2169: +AHghaQB4- +U+-216A: +AHghagB4- +U+-216B: +AHghawB4- +U+-216C: +AHghbAB4- +U+-216D: +AHghbQB4- +U+-216E: +AHghbgB4- +U+-216F: +AHghbwB4- +U+-2170: +AHghcAB4- +U+-2171: +AHghcQB4- +U+-2172: +AHghcgB4- +U+-2173: +AHghcwB4- +U+-2174: +AHghdAB4- +U+-2175: +AHghdQB4- +U+-2176: +AHghdgB4- +U+-2177: +AHghdwB4- +U+-2178: +AHgheAB4- +U+-2179: +AHgheQB4- +U+-217A: +AHghegB4- +U+-217B: +AHghewB4- +U+-217C: +AHghfAB4- +U+-217D: +AHghfQB4- +U+-217E: +AHghfgB4- +U+-217F: +AHghfwB4- +U+-2180: +AHghgAB4- +U+-2181: +AHghgQB4- +U+-2182: +AHghggB4- +U+-2183: +AHghgwB4- +U+-2184: +AHghhAB4- +U+-2185: +AHghhQB4- +U+-2186: +AHghhgB4- +U+-2187: +AHghhwB4- +U+-2188: +AHghiAB4- +U+-2189: +AHghiQB4- +U+-218A: +AHghigB4- +U+-218B: +AHghiwB4- +U+-218C: +AHghjAB4- +U+-218D: +AHghjQB4- +U+-218E: +AHghjgB4- +U+-218F: +AHghjwB4- + +Alphabetic Presentation Forms + +U+-FB00: +AHj7AAB4- +U+-FB01: +AHj7AQB4- +U+-FB02: +AHj7AgB4- +U+-FB03: +AHj7AwB4- +U+-FB04: +AHj7BAB4- +U+-FB05: +AHj7BQB4- +U+-FB06: +AHj7BgB4- +U+-FB07: +AHj7BwB4- +U+-FB08: +AHj7CAB4- +U+-FB09: +AHj7CQB4- +U+-FB0A: +AHj7CgB4- +U+-FB0B: +AHj7CwB4- +U+-FB0C: +AHj7DAB4- +U+-FB0D: +AHj7DQB4- +U+-FB0E: +AHj7DgB4- +U+-FB0F: +AHj7DwB4- +U+-FB10: +AHj7EAB4- +U+-FB11: +AHj7EQB4- +U+-FB12: +AHj7EgB4- +U+-FB13: +AHj7EwB4- +U+-FB14: +AHj7FAB4- +U+-FB15: +AHj7FQB4- +U+-FB16: +AHj7FgB4- +U+-FB17: +AHj7FwB4- +U+-FB18: +AHj7GAB4- +U+-FB19: +AHj7GQB4- +U+-FB1A: +AHj7GgB4- +U+-FB1B: +AHj7GwB4- +U+-FB1C: +AHj7HAB4- +U+-FB1D: +AHj7HQB4- +U+-FB1E: +AHj7HgB4- +U+-FB1F: +AHj7HwB4- +U+-FB20: +AHj7IAB4- +U+-FB21: +AHj7IQB4- +U+-FB22: +AHj7IgB4- +U+-FB23: +AHj7IwB4- +U+-FB24: +AHj7JAB4- +U+-FB25: +AHj7JQB4- +U+-FB26: +AHj7JgB4- +U+-FB27: +AHj7JwB4- +U+-FB28: +AHj7KAB4- +U+-FB29: +AHj7KQB4- +U+-FB2A: +AHj7KgB4- +U+-FB2B: +AHj7KwB4- +U+-FB2C: +AHj7LAB4- +U+-FB2D: +AHj7LQB4- +U+-FB2E: +AHj7LgB4- +U+-FB2F: +AHj7LwB4- +U+-FB30: +AHj7MAB4- +U+-FB31: +AHj7MQB4- +U+-FB32: +AHj7MgB4- +U+-FB33: +AHj7MwB4- +U+-FB34: +AHj7NAB4- +U+-FB35: +AHj7NQB4- +U+-FB36: +AHj7NgB4- +U+-FB37: +AHj7NwB4- +U+-FB38: +AHj7OAB4- +U+-FB39: +AHj7OQB4- +U+-FB3A: +AHj7OgB4- +U+-FB3B: +AHj7OwB4- +U+-FB3C: +AHj7PAB4- +U+-FB3D: +AHj7PQB4- +U+-FB3E: +AHj7PgB4- +U+-FB3F: +AHj7PwB4- +U+-FB40: +AHj7QAB4- +U+-FB41: +AHj7QQB4- +U+-FB42: +AHj7QgB4- +U+-FB43: +AHj7QwB4- +U+-FB44: +AHj7RAB4- +U+-FB45: +AHj7RQB4- +U+-FB46: +AHj7RgB4- +U+-FB47: +AHj7RwB4- +U+-FB48: +AHj7SAB4- +U+-FB49: +AHj7SQB4- +U+-FB4A: +AHj7SgB4- +U+-FB4B: +AHj7SwB4- +U+-FB4C: +AHj7TAB4- +U+-FB4D: +AHj7TQB4- +U+-FB4E: +AHj7TgB4- +U+-FB4F: +AHj7TwB4- + diff --git a/support/utf2any/test/tst.utf8 b/support/utf2any/test/tst.utf8 new file mode 100644 index 0000000000..970470127b Binary files /dev/null and b/support/utf2any/test/tst.utf8 differ diff --git a/support/utf2any/utf2any.c b/support/utf2any/utf2any.c new file mode 100644 index 0000000000..f00892dbad --- /dev/null +++ b/support/utf2any/utf2any.c @@ -0,0 +1,2557 @@ +#line 2 "utf2any.c" +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +#include + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +static YY_BUFFER_STATE yy_current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + +typedef unsigned char YY_CHAR; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +typedef int yy_state_type; +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 13 +#define YY_END_OF_BUFFER 14 +static yyconst short int yy_accept[38] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 1, + 12, 3, 6, 4, 5, 12, 12, 12, 12, 12, + 2, 7, 0, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 10, 0, 11, 0 + } ; + +static yyconst int yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 4, 1, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, + 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, + + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, + 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, + 9, 10, 10, 1, 1 + } ; + +static yyconst int yy_meta[11] = + { 0, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1 + } ; + +static yyconst short int yy_base[56] = + { 0, + 0, 0, 33, 32, 0, 3, 3, 0, 34, 37, + 37, 29, 37, 37, 37, 0, 0, 0, 0, 0, + 37, 37, 0, 0, 0, 0, 37, 0, 0, 0, + 37, 0, 0, 37, 0, 37, 37, 13, 15, 17, + 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, + 21, 20, 19, 1, 0 + } ; + +static yyconst short int yy_def[56] = + { 0, + 38, 38, 39, 39, 40, 40, 39, 7, 37, 37, + 37, 37, 37, 37, 37, 41, 42, 43, 44, 45, + 37, 37, 46, 47, 48, 49, 37, 50, 51, 52, + 37, 53, 54, 37, 55, 37, 0, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37 + } ; + +static yyconst short int yy_nxt[48] = + { 0, + 36, 35, 14, 15, 14, 14, 15, 14, 16, 17, + 18, 19, 20, 10, 10, 11, 11, 13, 13, 34, + 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, + 23, 22, 21, 37, 12, 12, 9, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37 + } ; + +static yyconst short int yy_chk[48] = + { 0, + 55, 54, 5, 5, 5, 6, 6, 6, 7, 7, + 7, 7, 7, 38, 38, 39, 39, 40, 40, 53, + 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, + 42, 41, 12, 9, 4, 3, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "utf2any.l" +#define INITIAL 0 +/* + * File: utf2any.l + * + * (c) Peter Kleiweg 2000 + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, + * or (at your option) any later version. + * + * Compile: + * flex -B -8 utf2any.l + * gcc -s -Wall -o utf2any lex.yy.c -lfl + * rm lex.yy.c + * + */ +#line 19 "utf2any.l" + +#define UTFanyVERSION "1.0" + +/* + * MAPDIR is the directory were symbol maps are searched. + * This should be a path, ending with a slash, surrounded by double quotes, + * or it should be NULL. + */ + +#ifndef MAPDIR +# ifdef __MSDOS__ +# define MAPDIR "c:\\utf\\" +# else +# define MAPDIR "/usr/local/lib/utf/" +# endif +#endif + +#ifdef __MSDOS__ +# ifndef __COMPACT__ +# error Memory model COMPACT required +# endif +# include +# include +#else +# include +#endif +#include +#include +#include +#include +#include +#include + +#ifdef __MSDOS__ +#define strcasecmp(A, B) (stricmp((A), (B))) +#endif + +#define BUFSIZE 2048 + +typedef enum { FALSE = 0, TRUE } BOOL_; + +typedef enum { uUNDEF = 0, uUTF7, uUTF8 } UTF_; + +typedef enum { aECHO, aSPACE, aSKIP, aFORMAT } ACTION_; + +typedef enum { cUCHAR, cUNSIGNED, cULONG, cNONE } CAST_; + +typedef struct { + unsigned long + ul, + order; + char + *s; +} TRANS_; + +typedef struct { + long unsigned + from, + to; + ACTION_ + action; + CAST_ + cast; + char + *format; +} RANGE_; + +BOOL_ + verbose = FALSE, + warnings = FALSE; + +UTF_ + utf_type = uUNDEF; + +TRANS_ + *trans = NULL; + +RANGE_ + *range = NULL; + +char + buf2 [BUFSIZE + 1], + buffer [BUFSIZE + 1], + bufword [BUFSIZE + 1], + f_unsigned [] = "[U+%04X]", + f_ulong [] = "[U+%08lX]", + *infile, + *lower [256], + *no_mem_buffer, + out_of_memory [] = "Out of memory", + *programname, + s_echo [] = "#ECHO#", + s_skip [] = "#SKIP#", + s_space [] = "#SPACE#"; + +int + bufp, + max_range = 0, + max_trans = 0, + n_range = 0, + n_trans = 0, + wtable [256]; + +unsigned int + instep, + outcode [2], + outstep; + +unsigned long + order = 0, + incount = 1; + +void + addchar (char *filename, int lineno, unsigned long ul, char *s), + addaction ( + char *filename, + int lineno, + long unsigned from, + long unsigned to, + ACTION_ action, + CAST_ cast, + char *format + ), + bytes2 (void), + bytes3 (void), + bytes4 (void), + bytes5 (void), + bytes6 (void), + codewarn (unsigned long ul), + errit (char const *format, ...), + ferrit (char *filename, int lineno, char const *format, ...), + get_programname (char const *argv0), + nextout (void), + outchar (unsigned char i), + outsymbol (unsigned long ul), + readtrans (char *file, char *dir, int level), + *s_malloc (size_t size), + *s_realloc (void *block, size_t size), + syntax (void), + utf7 (void); + +char + *getbasename (char *s), + *getdirname (char *s), + *getword (char *filename, int lineno), + *s_strdup (char const *s); + +int + getline (FILE *fp, int *lineno), + nlcount (void), + searchcmp (const void *p1, const void *p2), + srtcmp (const void *p1, const void *p2); + +long unsigned + getvalue (char *filename, int lineno); + +#define YY_NO_UNPUT +#define YY_SKIP_YYWRAP +#ifdef yywrap +# undef yywrap +#endif +int yywrap() +{ + return 1; +} + +#define _utf7 1 +#define _utf7b 2 +#define _utf8 3 + +#line 572 "utf2any.c" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( yy_current_buffer->yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yylex YY_PROTO(( void )) +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 189 "utf2any.l" + + +#line 726 "utf2any.c" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 38 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_current_state != 37 ); + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + +do_action: /* This label is used only to access EOF actions. */ + + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yy_hold_char; + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 191 "utf2any.l" +{ yyless (0); + BEGIN ((utf_type == uUTF7) ? _utf7 : _utf8); + } + YY_BREAK + +case 2: +YY_RULE_SETUP +#line 196 "utf2any.l" +{ outchar ('+'); } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 197 "utf2any.l" +{ instep = outstep = 0; + BEGIN _utf7b; } + YY_BREAK + + +case 4: +YY_RULE_SETUP +#line 202 "utf2any.l" +{ utf7 (); } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 203 "utf2any.l" +{ BEGIN _utf7; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 204 "utf2any.l" +{ if (yytext [0] == '\n') + incount++; + outchar (yytext [0]); + BEGIN _utf7; } + YY_BREAK + + +case 7: +YY_RULE_SETUP +#line 211 "utf2any.l" +{ incount += nlcount (); bytes2 (); } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 212 "utf2any.l" +{ incount += nlcount (); bytes3 (); } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 213 "utf2any.l" +{ incount += nlcount (); bytes4 (); } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 214 "utf2any.l" +{ incount += nlcount (); bytes5 (); } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 215 "utf2any.l" +{ incount += nlcount (); bytes6 (); } + YY_BREAK + +case 12: +YY_RULE_SETUP +#line 218 "utf2any.l" +{ if (yytext [0] == '\n') + incount++; + outchar (yytext [0]); + } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 223 "utf2any.l" +ECHO; + YY_BREAK +#line 885 "utf2any.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(_utf7): +case YY_STATE_EOF(_utf7b): +case YY_STATE_EOF(_utf8): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type yy_get_previous_state() + { + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = yy_start; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 38 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { + register int yy_is_jam; + register char *yy_cp = yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 38 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 37); + + return yy_is_jam ? 0 : yy_current_state; + } + + +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register char *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ + + +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + + return c; + } + + +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } + + +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +#endif + + +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +#endif + + +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 223 "utf2any.l" + + +/* + * Helper functions for UTF-7 parser + */ + +void utf7 () +{ + unsigned + i, + c; + + i = yytext [0]; + if (i >= 'A' && i <= 'Z') + c = i - 'A'; + else if (i >= 'a' && i <= 'z') + c = i + 26 - 'a'; + else if (i >= '0' && i <= '9') + c = i + 52 - '0'; + else if (i == '+') + c = 62; + else if (i == '/') + c = 63; + + switch (instep) { + case 0: + outcode [outstep] = (c << 2); + break; + case 1: + outcode [outstep] |= (c >> 4); + nextout (); + outcode [outstep] = (c << 4); + break; + case 2: + outcode [outstep] |= (c >> 2); + nextout (); + outcode [outstep] = (c << 6); + break; + case 3: + outcode [outstep] |= c; + nextout (); + break; + } + if (++instep == 4) + instep = 0; +} + +void nextout () +{ + unsigned + c; + + if (outstep == 0) { + outstep = 1; + } else { + outstep = 0; + c = ((outcode [0] & 0xFF) << 8) | (outcode [1] & 0xFF); + outsymbol (c); + } +} + +/* + * Helper functions for UTF-8 parser + */ + +void bytes2 () +{ + unsigned + u [2], + c; + int + i; + + for (i = 0; i < 2; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [1] & 0x3F) + | ((u [0] & 0x1F) << 6); + + outsymbol (c); +} + + +void bytes3 () +{ + unsigned + u [3], + c; + int + i; + + for (i = 0; i < 3; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [2] & 0x3F) + | ((u [1] & 0x3F) << 6) + | ((u [0] & 0x0F) << 12); + + outsymbol (c); +} + +void bytes4 () +{ + long unsigned + u [4], + c; + int + i; + + for (i = 0; i < 4; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [3] & 0x3F) + | ((u [2] & 0x3F) << 6) + | ((u [1] & 0x3F) << 12) + | ((u [0] & 0x07) << 18); + + outsymbol (c); +} + +void bytes5 () +{ + long unsigned + u [5], + c; + int + i; + + for (i = 0; i < 5; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [4] & 0x3F) + | ((u [3] & 0x3F) << 6) + | ((u [2] & 0x3F) << 12) + | ((u [1] & 0x3F) << 18) + | ((u [0] & 0x03) << 24); + + outsymbol (c); +} + +void bytes6 () +{ + long unsigned + u [6], + c; + int + i; + + for (i = 0; i < 6; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [5] & 0x3F) + | ((u [4] & 0x3F) << 6) + | ((u [3] & 0x3F) << 12) + | ((u [2] & 0x3F) << 18) + | ((u [1] & 0x3F) << 24) + | ((u [0] & 0x01) << 30); + + outsymbol (c); +} + +/* + * General helper functions for parser + */ + +void outchar (unsigned char c) +{ + if (wtable [c]) + codewarn (c); + + if (! lower [c]) + fputc (c, yyout); + else + fputs (lower [c], yyout); +} + +void outsymbol (unsigned long ul) +{ + int + i; + TRANS_ + *p; + + if (ul < 256) { + if (wtable [ul]) + codewarn (ul); + if (! lower [ul]) + fputc ((unsigned int) ul, yyout); + else + fputs (lower [ul], yyout); + return; + } + + p = (TRANS_ *) bsearch (&ul, trans, n_trans, sizeof (TRANS_), searchcmp); + if (p) { + fputs (p->s, yyout); + return; + } + + codewarn (ul); + + for (i = n_range - 1; i >= 0; i--) + if (ul >= range [i].from && ul <= range [i].to) + break; + switch (range [i].action) { + case aSPACE: + fputc (' ', yyout); + break; + case aFORMAT: + if (range [i].cast == cUCHAR) + fprintf (yyout, range [i].format, (unsigned char) ul); + else if (range [i].cast == cUNSIGNED) + fprintf (yyout, range [i].format, (unsigned) ul); + else + fprintf (yyout, range [i].format, (unsigned long) ul); + break; + case aECHO: + /* won't happen beyond 255 */ + case aSKIP: + break; + } +} + +void codewarn (unsigned long ul) +{ + if (! warnings) + return; + + if (ul < 0x10000) + fprintf (stderr, "%s:%lu: U+%04X %5u\n", infile, incount, (unsigned) ul, (unsigned) ul); + else + fprintf (stderr, "%s:%lu: U+%08lX %10lu\n", infile, incount, ul, ul); +} + +int nlcount () +{ + int + i, + sum; + + sum = 0; + for (i = 0; yytext [i]; i++) + if (yytext [i] == '\n') + sum++; + return sum; +} + + +int main (int argc, char *argv []) +{ + int + i; + + no_mem_buffer = (char *) malloc (1024); + + get_programname (argv [0]); + + /* pre-defined actions */ + for (i = 0; i < 256; i++) { + lower [i] = NULL; + wtable [i] = 0; + } + addaction (NULL, 0, 0x10000, 0x7FFFFFFF, aFORMAT, cULONG, f_ulong); + addaction (NULL, 0, 0x100, 0xFFFF, aFORMAT, cUNSIGNED, f_unsigned); + addaction (NULL, 0, 0x7F, 0x9F, aFORMAT, cUNSIGNED, f_unsigned); + addaction (NULL, 0, 0, 0x1F, aFORMAT, cUNSIGNED, f_unsigned); + addchar (NULL, 0, '\t', s_echo); + addchar (NULL, 0, '\n', s_echo); + addchar (NULL, 0, '\r', s_echo); + addchar (NULL, 0, '\f', s_echo); + + while (argc > 1 && argv [1][0] == '-') { + if (! strcmp (argv [1], "-7")) + utf_type = uUTF7; + else if (! strcmp (argv [1], "-8")) + utf_type = uUTF8; + else if (argv [1][1] == 'f') { + if (argv [1][2]) + readtrans (argv [1] + 2, MAPDIR, 0); + else { + if (argc == 2) + errit ("Missing argument for option '-f'"); + argv++; + argc--; + readtrans (argv [1], MAPDIR, 0); + } + } else if (! strcmp (argv [1], "-v")) + verbose = TRUE; + else if (! strcmp (argv [1], "-w")) + warnings = TRUE; + else + syntax (); + argv++; + argc--; + } + + if (n_trans) { + qsort (trans, n_trans, sizeof (TRANS_), srtcmp); + i = 0; + while (i < n_trans - 1) + if (trans [i].ul == trans [i + 1].ul) { + memmove (trans + i, trans + i + 1, (n_trans - i - 1) * sizeof (TRANS_)); + n_trans--; + } else + i++; + } + + switch (argc) { + case 1: + if (isatty (fileno (stdin))) + syntax (); + yyin = stdin; + infile = "(stdin)"; + break; + case 2: + yyin = fopen (argv [1], "r"); + if (! yyin) + errit ("Opening file \"%s\": %s", argv [1], strerror (errno)); + infile = argv [1]; + break; + default: + syntax (); + } + + if (! utf_type) + errit ("Missing option '-7' or '-8'"); + + yyout = stdout; + +#ifdef __MSDOS__ + setmode (fileno (yyin ), O_BINARY); + setmode (fileno (yyout), O_BINARY); +#endif + + yylex (); + + if (yyin != stdin) + fclose (yyin); + if (yyout != stdout) + fclose (yyin); + + return 0; +} + +int srtcmp (const void *p1, const void *p2) +{ + unsigned long + ul1, + ul2; + + + ul1 = ((TRANS_ *)p1)->ul; + ul2 = ((TRANS_ *)p2)->ul; + if (ul1 < ul2) + return -1; + else if (ul1 > ul2) + return 1; + + ul1 = ((TRANS_ *)p1)->order; + ul2 = ((TRANS_ *)p2)->order; + if (ul1 < ul2) + return -1; + else + return 1; +} + +int searchcmp (const void *p1, const void *p2) +{ + unsigned long + ul1, + ul2; + + ul1 = *((unsigned long *)p1); + ul2 = ((TRANS_ *)p2)->ul; + + if (ul1 < ul2) + return -1; + else if (ul1 > ul2) + return 1; + else + return 0; +} + +void readtrans (char *file, char *dir, int level) +{ + int + lineno; + long unsigned + from, + to, + ul; + char + *s, + *filename, + *basename, + *dirname; + FILE + *fp; + CAST_ + cast; + + if (level > 10) + errit ("File \"%s\": nesting too deep", file); + + /* + * Try opening file + * If failure and filename has no directory part, then try in dir + */ + filename = file; + fp = fopen (filename, "r"); + if ((! fp) && dir) { + basename = getbasename (filename); + if (! strcmp (basename, filename)) { + filename = (char *) s_malloc ( + (strlen (basename) + strlen (dir) + 1) * sizeof (char) + ); + strcpy (filename, dir); + strcat (filename, basename); + fp = fopen (filename, "r"); + } + } + if (! fp) + errit ("Opening file \"%s\": %s", filename, strerror (errno)); + if (verbose) + fprintf (stderr, "Begin %s\n", filename); + + dirname = getdirname (filename); + if (! dirname) + dirname = dir; + + lineno = 0; + while (getline (fp, &lineno)) { + switch (buffer [bufp]) { + /* translation for range of characters */ + case 'd': + case 'D': + bufp++; + from = getvalue (filename, lineno); + to = getvalue (filename, lineno); + s = getword (filename, lineno); + if (! strcasecmp (s, s_skip)) + addaction (filename, lineno, from, to, aSKIP, cNONE, NULL); + else if (! strcasecmp (s, s_echo)) + addaction (filename, lineno, from, to, aECHO, cNONE, NULL); + else if (! strcasecmp (s, s_space)) + addaction (filename, lineno, from, to, aSPACE, cNONE, NULL); + else { + if (! strcmp (s, "uchar")) + cast = cUCHAR; + else if (! strcmp (s, "unsigned")) + cast = cUNSIGNED; + else if (! strcmp (s, "ulong")) + cast = cULONG; + else + ferrit (filename, lineno, "Illegal action \"%s\"", s); + addaction (filename, lineno, from, to, aFORMAT, cast, buffer + bufp); + } + break; + /* include file */ + case 'i': + case 'I': + bufp++; + readtrans (s_strdup (getword (filename, lineno)), dirname, level + 1); + break; + /* single character translation */ + default: + ul = getvalue (filename, lineno); + addchar (filename, lineno, ul, buffer + bufp); + } + } + fclose (fp); + if (verbose) + fprintf (stderr, "End %s\n", filename); +} + +void addchar (char *filename, int lineno, unsigned long ul, char *s) +{ + BOOL_ + echo; + + if (ul > 0x7fffffff) + ferrit (filename, lineno, "%s out of range: 0x%lX", s, ul); + + echo = FALSE; + + if (! strcasecmp (s, s_skip)) + s = ""; + else if (! strcasecmp (s, s_space)) + s = " "; + else if (! strcasecmp (s, s_echo)) + echo = TRUE; + + if (ul < 256) { + lower [ul] = echo ? NULL : s_strdup (s); + wtable [ul] = 0; + } else { + if (echo) + ferrit (filename, lineno, "%s out of range: 0x%lX", s_echo, ul); + if (n_trans == max_trans) { + max_trans += 1024; + trans = (TRANS_ *) s_realloc (trans, max_trans * sizeof (TRANS_)); + } + trans [n_trans].ul = ul; + trans [n_trans].order = order++; + trans [n_trans++].s = s_strdup (s); + } +} + +void addaction (char *filename, + int lineno, + long unsigned from, + long unsigned to, + ACTION_ action, + CAST_ cast, + char *format) +{ + long unsigned + u; + + if (from > to) + ferrit (filename, lineno, "Illegal range"); + + if (from > 0x7fffffff) + ferrit (filename, lineno, "Begin of range to large: 0x%lX", from); + + if (to > 0x7fffffff) + ferrit (filename, lineno, "End of range to large: 0x%lX", to); + + for (u = from; u <= to && u < 256; u++) { + wtable [u] = 1; + if (action == aSKIP) + lower [u] = ""; + else if (action == aSPACE) + lower [u] = " "; + else if (action == aECHO) + lower [u] = NULL; + else { + if (cast == cUCHAR) + sprintf (buf2, format, (unsigned char) u); + else if (cast == cUNSIGNED) + sprintf (buf2, format, (unsigned) u); + else + sprintf (buf2, format, (long unsigned) u); + lower [u] = s_strdup (buf2); + } + } + + if (from < 256) + from = 256; + if (from > to) + return; + + if (action == aECHO) + ferrit (filename, lineno, "Out of range for %s", s_echo); + + if (n_range == max_range) { + max_range += 256; + range = (RANGE_ *) s_realloc (range, max_range * sizeof (RANGE_)); + } + range [n_range].from = from; + range [n_range].to = to; + range [n_range].action = action; + if (action == aFORMAT) { + range [n_range].cast = cast; + range [n_range].format = s_strdup (format); + } + n_range++; +} + +long unsigned getvalue (char *filename, int lineno) +{ + long unsigned + ulong; + int + n; + char + *format; + + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (((buffer [bufp] == 'u' || buffer [bufp] == 'U') && buffer [bufp + 1] == '+') || + (buffer [bufp] == '0' && (buffer [bufp + 1] == 'x' || buffer [bufp + 1] == 'X'))) { + bufp += 2; + format = "%lx%n"; + } else if (buffer [bufp] == '0') + format = "%lo%n"; + else + format = "%lu%n"; + if (sscanf (buffer + bufp, format, &ulong, &n) != 1) + errit ("Missing value in \"%s\", line %i", filename, lineno); + bufp += n; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + return ulong; +} + +char *getword (char *filename, int lineno) +{ + int + n; + + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (sscanf (buffer + bufp, "%s%n", bufword, &n) != 1) + errit ("Missing word in \"%s\", line %i", filename, lineno); + bufp += n; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + return bufword; +} + +char *getbasename (char *filename) +{ + char + *p; + +#ifdef __MSDOS__ + p = strrchr (filename, '\\'); +#else /* unix */ + p = strrchr (filename, '/'); +#endif + if (p) + return p + 1; + else + return filename; +} + +char *getdirname (char *filename) +{ + char + c, + *p, + *dir; + +#ifdef __MSDOS__ + p = strrchr (filename, '\\'); +#else /* unix */ + p = strrchr (filename, '/'); +#endif + if (p) { + c = p [1]; + p [1] = '\0'; + dir = s_strdup (filename); + p [1] = c; + return dir; + } else + return NULL; +} + +int getline (FILE *fp, int *lineno) +{ + int + i; + + for (;;) { + if (fgets (buffer, BUFSIZE, fp) == NULL) + return 0; + (*lineno)++; + i = strlen (buffer); + while (i) + if (isspace ((unsigned char) buffer [i - 1])) + buffer [--i] = '\0'; + else + break; + bufp = 0; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (buffer [bufp] == '#') + continue; + if (buffer [bufp]) + return 1; + } +} + +void ferrit (char *filename, int lineno, char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: in file \"%s\", line %i: ", programname, filename, lineno); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void errit (char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: ", programname); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void get_programname (char const *argv0) +{ +#ifdef __MSDOS__ + char + name [MAXFILE]; + fnsplit (argv0, NULL, NULL, name, NULL); + programname = strdup (name); +#else /* unix */ + char + *p; + p = strrchr (argv0, '/'); + if (p) + programname = strdup (p + 1); + else + programname = strdup (argv0); +#endif +} + +void *s_malloc (size_t size) +{ + void + *p; + + p = malloc (size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +void *s_realloc (void *block, size_t size) +{ + void + *p; + + p = realloc (block, size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +char *s_strdup (char const *s) +{ + char + *s1; + + if (s) { + s1 = (char *) s_malloc (strlen (s) + 1); + strcpy (s1, s); + } else { + s1 = (char *) s_malloc (1); + s1 [0] = '\0'; + } + return s1; +} + +void syntax () +{ + fprintf ( + stderr, + "\n" + "This is utf2any, version " UTFanyVERSION "\n" + "\n" + "Usage: %s -7|-8 [-f mapfile] [-v] [-w] [infile]\n" + "\n" + " -7 : Input is UTF-7\n" + " -8 : Input is UTF-8\n" + " -f : File with definitions of the symbol mappings\n" + " If multiple -f options are given, the files are processed in turn\n" + " -v : Verbose\n" + " -w : Warning messages\n" + "\n", + programname + ); + exit (1); +} diff --git a/support/utf2any/utf2any.l b/support/utf2any/utf2any.l new file mode 100644 index 0000000000..b7396ca3f7 --- /dev/null +++ b/support/utf2any/utf2any.l @@ -0,0 +1,1005 @@ +/* + * File: utf2any.l + * + * (c) Peter Kleiweg 2000 + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, + * or (at your option) any later version. + * + * Compile: + * flex -B -8 utf2any.l + * gcc -s -Wall -o utf2any lex.yy.c -lfl + * rm lex.yy.c + * + */ + +%{ + +#define UTFanyVERSION "1.0" + +/* + * MAPDIR is the directory were symbol maps are searched. + * This should be a path, ending with a slash, surrounded by double quotes, + * or it should be NULL. + */ + +#ifndef MAPDIR +# ifdef __MSDOS__ +# define MAPDIR "c:\\utf\\" +# else +# define MAPDIR "/usr/local/lib/utf/" +# endif +#endif + +#ifdef __MSDOS__ +# ifndef __COMPACT__ +# error Memory model COMPACT required +# endif +# include +# include +#else +# include +#endif +#include +#include +#include +#include +#include +#include + +#ifdef __MSDOS__ +#define strcasecmp(A, B) (stricmp((A), (B))) +#endif + +#define BUFSIZE 2048 + +typedef enum { FALSE = 0, TRUE } BOOL_; + +typedef enum { uUNDEF = 0, uUTF7, uUTF8 } UTF_; + +typedef enum { aECHO, aSPACE, aSKIP, aFORMAT } ACTION_; + +typedef enum { cUCHAR, cUNSIGNED, cULONG, cNONE } CAST_; + +typedef struct { + unsigned long + ul, + order; + char + *s; +} TRANS_; + +typedef struct { + long unsigned + from, + to; + ACTION_ + action; + CAST_ + cast; + char + *format; +} RANGE_; + +BOOL_ + verbose = FALSE, + warnings = FALSE; + +UTF_ + utf_type = uUNDEF; + +TRANS_ + *trans = NULL; + +RANGE_ + *range = NULL; + +char + buf2 [BUFSIZE + 1], + buffer [BUFSIZE + 1], + bufword [BUFSIZE + 1], + f_unsigned [] = "[U+%04X]", + f_ulong [] = "[U+%08lX]", + *infile, + *lower [256], + *no_mem_buffer, + out_of_memory [] = "Out of memory", + *programname, + s_echo [] = "#ECHO#", + s_skip [] = "#SKIP#", + s_space [] = "#SPACE#"; + +int + bufp, + max_range = 0, + max_trans = 0, + n_range = 0, + n_trans = 0, + wtable [256]; + +unsigned int + instep, + outcode [2], + outstep; + +unsigned long + order = 0, + incount = 1; + +void + addchar (char *filename, int lineno, unsigned long ul, char *s), + addaction ( + char *filename, + int lineno, + long unsigned from, + long unsigned to, + ACTION_ action, + CAST_ cast, + char *format + ), + bytes2 (void), + bytes3 (void), + bytes4 (void), + bytes5 (void), + bytes6 (void), + codewarn (unsigned long ul), + errit (char const *format, ...), + ferrit (char *filename, int lineno, char const *format, ...), + get_programname (char const *argv0), + nextout (void), + outchar (unsigned char i), + outsymbol (unsigned long ul), + readtrans (char *file, char *dir, int level), + *s_malloc (size_t size), + *s_realloc (void *block, size_t size), + syntax (void), + utf7 (void); + +char + *getbasename (char *s), + *getdirname (char *s), + *getword (char *filename, int lineno), + *s_strdup (char const *s); + +int + getline (FILE *fp, int *lineno), + nlcount (void), + searchcmp (const void *p1, const void *p2), + srtcmp (const void *p1, const void *p2); + +long unsigned + getvalue (char *filename, int lineno); + +#define YY_NO_UNPUT +#define YY_SKIP_YYWRAP +#ifdef yywrap +# undef yywrap +#endif +int yywrap() +{ + return 1; +} + +%} + +%Start _utf7 _utf7b _utf8 + +%% + +.|\n { yyless (0); + BEGIN ((utf_type == uUTF7) ? _utf7 : _utf8); + } + +<_utf7>{ +"+-" { outchar ('+'); } +"+" { instep = outstep = 0; + BEGIN _utf7b; } +} + +<_utf7b>{ +[A-Za-z0-9+/] { utf7 (); } +"-" { BEGIN _utf7; } +.|\n { if (yytext [0] == '\n') + incount++; + outchar (yytext [0]); + BEGIN _utf7; } +} + +<_utf8>{ +[\300-\337]. { incount += nlcount (); bytes2 (); } +[\340-\357].. { incount += nlcount (); bytes3 (); } +[\360-\367]... { incount += nlcount (); bytes4 (); } +[\370-\373].... { incount += nlcount (); bytes5 (); } +[\374-\375]..... { incount += nlcount (); bytes6 (); } +} + +<_utf7,_utf8>.|\n { if (yytext [0] == '\n') + incount++; + outchar (yytext [0]); + } + +%% + +/* + * Helper functions for UTF-7 parser + */ + +void utf7 () +{ + unsigned + i, + c; + + i = yytext [0]; + if (i >= 'A' && i <= 'Z') + c = i - 'A'; + else if (i >= 'a' && i <= 'z') + c = i + 26 - 'a'; + else if (i >= '0' && i <= '9') + c = i + 52 - '0'; + else if (i == '+') + c = 62; + else if (i == '/') + c = 63; + + switch (instep) { + case 0: + outcode [outstep] = (c << 2); + break; + case 1: + outcode [outstep] |= (c >> 4); + nextout (); + outcode [outstep] = (c << 4); + break; + case 2: + outcode [outstep] |= (c >> 2); + nextout (); + outcode [outstep] = (c << 6); + break; + case 3: + outcode [outstep] |= c; + nextout (); + break; + } + if (++instep == 4) + instep = 0; +} + +void nextout () +{ + unsigned + c; + + if (outstep == 0) { + outstep = 1; + } else { + outstep = 0; + c = ((outcode [0] & 0xFF) << 8) | (outcode [1] & 0xFF); + outsymbol (c); + } +} + +/* + * Helper functions for UTF-8 parser + */ + +void bytes2 () +{ + unsigned + u [2], + c; + int + i; + + for (i = 0; i < 2; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [1] & 0x3F) + | ((u [0] & 0x1F) << 6); + + outsymbol (c); +} + + +void bytes3 () +{ + unsigned + u [3], + c; + int + i; + + for (i = 0; i < 3; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [2] & 0x3F) + | ((u [1] & 0x3F) << 6) + | ((u [0] & 0x0F) << 12); + + outsymbol (c); +} + +void bytes4 () +{ + long unsigned + u [4], + c; + int + i; + + for (i = 0; i < 4; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [3] & 0x3F) + | ((u [2] & 0x3F) << 6) + | ((u [1] & 0x3F) << 12) + | ((u [0] & 0x07) << 18); + + outsymbol (c); +} + +void bytes5 () +{ + long unsigned + u [5], + c; + int + i; + + for (i = 0; i < 5; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [4] & 0x3F) + | ((u [3] & 0x3F) << 6) + | ((u [2] & 0x3F) << 12) + | ((u [1] & 0x3F) << 18) + | ((u [0] & 0x03) << 24); + + outsymbol (c); +} + +void bytes6 () +{ + long unsigned + u [6], + c; + int + i; + + for (i = 0; i < 6; i++) + u [i] = (unsigned char) yytext [i]; + + c = ( u [5] & 0x3F) + | ((u [4] & 0x3F) << 6) + | ((u [3] & 0x3F) << 12) + | ((u [2] & 0x3F) << 18) + | ((u [1] & 0x3F) << 24) + | ((u [0] & 0x01) << 30); + + outsymbol (c); +} + +/* + * General helper functions for parser + */ + +void outchar (unsigned char c) +{ + if (wtable [c]) + codewarn (c); + + if (! lower [c]) + fputc (c, yyout); + else + fputs (lower [c], yyout); +} + +void outsymbol (unsigned long ul) +{ + int + i; + TRANS_ + *p; + + if (ul < 256) { + if (wtable [ul]) + codewarn (ul); + if (! lower [ul]) + fputc ((unsigned int) ul, yyout); + else + fputs (lower [ul], yyout); + return; + } + + p = (TRANS_ *) bsearch (&ul, trans, n_trans, sizeof (TRANS_), searchcmp); + if (p) { + fputs (p->s, yyout); + return; + } + + codewarn (ul); + + for (i = n_range - 1; i >= 0; i--) + if (ul >= range [i].from && ul <= range [i].to) + break; + switch (range [i].action) { + case aSPACE: + fputc (' ', yyout); + break; + case aFORMAT: + if (range [i].cast == cUCHAR) + fprintf (yyout, range [i].format, (unsigned char) ul); + else if (range [i].cast == cUNSIGNED) + fprintf (yyout, range [i].format, (unsigned) ul); + else + fprintf (yyout, range [i].format, (unsigned long) ul); + break; + case aECHO: + /* won't happen beyond 255 */ + case aSKIP: + break; + } +} + +void codewarn (unsigned long ul) +{ + if (! warnings) + return; + + if (ul < 0x10000) + fprintf (stderr, "%s:%lu: U+%04X %5u\n", infile, incount, (unsigned) ul, (unsigned) ul); + else + fprintf (stderr, "%s:%lu: U+%08lX %10lu\n", infile, incount, ul, ul); +} + +int nlcount () +{ + int + i, + sum; + + sum = 0; + for (i = 0; yytext [i]; i++) + if (yytext [i] == '\n') + sum++; + return sum; +} + + +int main (int argc, char *argv []) +{ + int + i; + + no_mem_buffer = (char *) malloc (1024); + + get_programname (argv [0]); + + /* pre-defined actions */ + for (i = 0; i < 256; i++) { + lower [i] = NULL; + wtable [i] = 0; + } + addaction (NULL, 0, 0x10000, 0x7FFFFFFF, aFORMAT, cULONG, f_ulong); + addaction (NULL, 0, 0x100, 0xFFFF, aFORMAT, cUNSIGNED, f_unsigned); + addaction (NULL, 0, 0x7F, 0x9F, aFORMAT, cUNSIGNED, f_unsigned); + addaction (NULL, 0, 0, 0x1F, aFORMAT, cUNSIGNED, f_unsigned); + addchar (NULL, 0, '\t', s_echo); + addchar (NULL, 0, '\n', s_echo); + addchar (NULL, 0, '\r', s_echo); + addchar (NULL, 0, '\f', s_echo); + + while (argc > 1 && argv [1][0] == '-') { + if (! strcmp (argv [1], "-7")) + utf_type = uUTF7; + else if (! strcmp (argv [1], "-8")) + utf_type = uUTF8; + else if (argv [1][1] == 'f') { + if (argv [1][2]) + readtrans (argv [1] + 2, MAPDIR, 0); + else { + if (argc == 2) + errit ("Missing argument for option '-f'"); + argv++; + argc--; + readtrans (argv [1], MAPDIR, 0); + } + } else if (! strcmp (argv [1], "-v")) + verbose = TRUE; + else if (! strcmp (argv [1], "-w")) + warnings = TRUE; + else + syntax (); + argv++; + argc--; + } + + if (n_trans) { + qsort (trans, n_trans, sizeof (TRANS_), srtcmp); + i = 0; + while (i < n_trans - 1) + if (trans [i].ul == trans [i + 1].ul) { + memmove (trans + i, trans + i + 1, (n_trans - i - 1) * sizeof (TRANS_)); + n_trans--; + } else + i++; + } + + switch (argc) { + case 1: + if (isatty (fileno (stdin))) + syntax (); + yyin = stdin; + infile = "(stdin)"; + break; + case 2: + yyin = fopen (argv [1], "r"); + if (! yyin) + errit ("Opening file \"%s\": %s", argv [1], strerror (errno)); + infile = argv [1]; + break; + default: + syntax (); + } + + if (! utf_type) + errit ("Missing option '-7' or '-8'"); + + yyout = stdout; + +#ifdef __MSDOS__ + setmode (fileno (yyin ), O_BINARY); + setmode (fileno (yyout), O_BINARY); +#endif + + yylex (); + + if (yyin != stdin) + fclose (yyin); + if (yyout != stdout) + fclose (yyin); + + return 0; +} + +int srtcmp (const void *p1, const void *p2) +{ + unsigned long + ul1, + ul2; + + + ul1 = ((TRANS_ *)p1)->ul; + ul2 = ((TRANS_ *)p2)->ul; + if (ul1 < ul2) + return -1; + else if (ul1 > ul2) + return 1; + + ul1 = ((TRANS_ *)p1)->order; + ul2 = ((TRANS_ *)p2)->order; + if (ul1 < ul2) + return -1; + else + return 1; +} + +int searchcmp (const void *p1, const void *p2) +{ + unsigned long + ul1, + ul2; + + ul1 = *((unsigned long *)p1); + ul2 = ((TRANS_ *)p2)->ul; + + if (ul1 < ul2) + return -1; + else if (ul1 > ul2) + return 1; + else + return 0; +} + +void readtrans (char *file, char *dir, int level) +{ + int + lineno; + long unsigned + from, + to, + ul; + char + *s, + *filename, + *basename, + *dirname; + FILE + *fp; + CAST_ + cast; + + if (level > 10) + errit ("File \"%s\": nesting too deep", file); + + /* + * Try opening file + * If failure and filename has no directory part, then try in dir + */ + filename = file; + fp = fopen (filename, "r"); + if ((! fp) && dir) { + basename = getbasename (filename); + if (! strcmp (basename, filename)) { + filename = (char *) s_malloc ( + (strlen (basename) + strlen (dir) + 1) * sizeof (char) + ); + strcpy (filename, dir); + strcat (filename, basename); + fp = fopen (filename, "r"); + } + } + if (! fp) + errit ("Opening file \"%s\": %s", filename, strerror (errno)); + if (verbose) + fprintf (stderr, "Begin %s\n", filename); + + dirname = getdirname (filename); + if (! dirname) + dirname = dir; + + lineno = 0; + while (getline (fp, &lineno)) { + switch (buffer [bufp]) { + /* translation for range of characters */ + case 'd': + case 'D': + bufp++; + from = getvalue (filename, lineno); + to = getvalue (filename, lineno); + s = getword (filename, lineno); + if (! strcasecmp (s, s_skip)) + addaction (filename, lineno, from, to, aSKIP, cNONE, NULL); + else if (! strcasecmp (s, s_echo)) + addaction (filename, lineno, from, to, aECHO, cNONE, NULL); + else if (! strcasecmp (s, s_space)) + addaction (filename, lineno, from, to, aSPACE, cNONE, NULL); + else { + if (! strcmp (s, "uchar")) + cast = cUCHAR; + else if (! strcmp (s, "unsigned")) + cast = cUNSIGNED; + else if (! strcmp (s, "ulong")) + cast = cULONG; + else + ferrit (filename, lineno, "Illegal action \"%s\"", s); + addaction (filename, lineno, from, to, aFORMAT, cast, buffer + bufp); + } + break; + /* include file */ + case 'i': + case 'I': + bufp++; + readtrans (s_strdup (getword (filename, lineno)), dirname, level + 1); + break; + /* single character translation */ + default: + ul = getvalue (filename, lineno); + addchar (filename, lineno, ul, buffer + bufp); + } + } + fclose (fp); + if (verbose) + fprintf (stderr, "End %s\n", filename); +} + +void addchar (char *filename, int lineno, unsigned long ul, char *s) +{ + BOOL_ + echo; + + if (ul > 0x7fffffff) + ferrit (filename, lineno, "%s out of range: 0x%lX", s, ul); + + echo = FALSE; + + if (! strcasecmp (s, s_skip)) + s = ""; + else if (! strcasecmp (s, s_space)) + s = " "; + else if (! strcasecmp (s, s_echo)) + echo = TRUE; + + if (ul < 256) { + lower [ul] = echo ? NULL : s_strdup (s); + wtable [ul] = 0; + } else { + if (echo) + ferrit (filename, lineno, "%s out of range: 0x%lX", s_echo, ul); + if (n_trans == max_trans) { + max_trans += 1024; + trans = (TRANS_ *) s_realloc (trans, max_trans * sizeof (TRANS_)); + } + trans [n_trans].ul = ul; + trans [n_trans].order = order++; + trans [n_trans++].s = s_strdup (s); + } +} + +void addaction (char *filename, + int lineno, + long unsigned from, + long unsigned to, + ACTION_ action, + CAST_ cast, + char *format) +{ + long unsigned + u; + + if (from > to) + ferrit (filename, lineno, "Illegal range"); + + if (from > 0x7fffffff) + ferrit (filename, lineno, "Begin of range to large: 0x%lX", from); + + if (to > 0x7fffffff) + ferrit (filename, lineno, "End of range to large: 0x%lX", to); + + for (u = from; u <= to && u < 256; u++) { + wtable [u] = 1; + if (action == aSKIP) + lower [u] = ""; + else if (action == aSPACE) + lower [u] = " "; + else if (action == aECHO) + lower [u] = NULL; + else { + if (cast == cUCHAR) + sprintf (buf2, format, (unsigned char) u); + else if (cast == cUNSIGNED) + sprintf (buf2, format, (unsigned) u); + else + sprintf (buf2, format, (long unsigned) u); + lower [u] = s_strdup (buf2); + } + } + + if (from < 256) + from = 256; + if (from > to) + return; + + if (action == aECHO) + ferrit (filename, lineno, "Out of range for %s", s_echo); + + if (n_range == max_range) { + max_range += 256; + range = (RANGE_ *) s_realloc (range, max_range * sizeof (RANGE_)); + } + range [n_range].from = from; + range [n_range].to = to; + range [n_range].action = action; + if (action == aFORMAT) { + range [n_range].cast = cast; + range [n_range].format = s_strdup (format); + } + n_range++; +} + +long unsigned getvalue (char *filename, int lineno) +{ + long unsigned + ulong; + int + n; + char + *format; + + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (((buffer [bufp] == 'u' || buffer [bufp] == 'U') && buffer [bufp + 1] == '+') || + (buffer [bufp] == '0' && (buffer [bufp + 1] == 'x' || buffer [bufp + 1] == 'X'))) { + bufp += 2; + format = "%lx%n"; + } else if (buffer [bufp] == '0') + format = "%lo%n"; + else + format = "%lu%n"; + if (sscanf (buffer + bufp, format, &ulong, &n) != 1) + errit ("Missing value in \"%s\", line %i", filename, lineno); + bufp += n; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + return ulong; +} + +char *getword (char *filename, int lineno) +{ + int + n; + + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (sscanf (buffer + bufp, "%s%n", bufword, &n) != 1) + errit ("Missing word in \"%s\", line %i", filename, lineno); + bufp += n; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + return bufword; +} + +char *getbasename (char *filename) +{ + char + *p; + +#ifdef __MSDOS__ + p = strrchr (filename, '\\'); +#else /* unix */ + p = strrchr (filename, '/'); +#endif + if (p) + return p + 1; + else + return filename; +} + +char *getdirname (char *filename) +{ + char + c, + *p, + *dir; + +#ifdef __MSDOS__ + p = strrchr (filename, '\\'); +#else /* unix */ + p = strrchr (filename, '/'); +#endif + if (p) { + c = p [1]; + p [1] = '\0'; + dir = s_strdup (filename); + p [1] = c; + return dir; + } else + return NULL; +} + +int getline (FILE *fp, int *lineno) +{ + int + i; + + for (;;) { + if (fgets (buffer, BUFSIZE, fp) == NULL) + return 0; + (*lineno)++; + i = strlen (buffer); + while (i) + if (isspace ((unsigned char) buffer [i - 1])) + buffer [--i] = '\0'; + else + break; + bufp = 0; + while (buffer [bufp] && isspace ((unsigned char) buffer [bufp])) + bufp++; + if (buffer [bufp] == '#') + continue; + if (buffer [bufp]) + return 1; + } +} + +void ferrit (char *filename, int lineno, char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: in file \"%s\", line %i: ", programname, filename, lineno); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void errit (char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: ", programname); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void get_programname (char const *argv0) +{ +#ifdef __MSDOS__ + char + name [MAXFILE]; + fnsplit (argv0, NULL, NULL, name, NULL); + programname = strdup (name); +#else /* unix */ + char + *p; + p = strrchr (argv0, '/'); + if (p) + programname = strdup (p + 1); + else + programname = strdup (argv0); +#endif +} + +void *s_malloc (size_t size) +{ + void + *p; + + p = malloc (size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +void *s_realloc (void *block, size_t size) +{ + void + *p; + + p = realloc (block, size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +char *s_strdup (char const *s) +{ + char + *s1; + + if (s) { + s1 = (char *) s_malloc (strlen (s) + 1); + strcpy (s1, s); + } else { + s1 = (char *) s_malloc (1); + s1 [0] = '\0'; + } + return s1; +} + +void syntax () +{ + fprintf ( + stderr, + "\n" + "This is utf2any, version " UTFanyVERSION "\n" + "\n" + "Usage: %s -7|-8 [-f mapfile] [-v] [-w] [infile]\n" + "\n" + " -7 : Input is UTF-7\n" + " -8 : Input is UTF-8\n" + " -f : File with definitions of the symbol mappings\n" + " If multiple -f options are given, the files are processed in turn\n" + " -v : Verbose\n" + " -w : Warning messages\n" + "\n", + programname + ); + exit (1); +} diff --git a/support/utf2any/utfcode.c b/support/utf2any/utfcode.c new file mode 100644 index 0000000000..62c68a3b31 --- /dev/null +++ b/support/utf2any/utfcode.c @@ -0,0 +1,305 @@ +/* + * file: utfcode.c + * + * (c) Peter Kleiweg 2000 + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, + * or (at your option) any later version. + */ + +#define UTFcodeVERSION "1.0" + +#ifdef __MSDOS__ +#ifndef __COMPACT__ +#error Memory model COMPACT required +#endif /* __COMPACT__ */ +#include +#endif /* __MSDOS__ */ +#include +#include +#include +#include + +int + obits = 0, + utf7 = 1, + utf8 = 1, + nr; + +unsigned + octal; + +long unsigned + *lu; + +char + *programname, + *no_mem_buffer, + out_of_memory [] = "Out of memory"; + +void + utf_7 (void), + utf_8 (void), + outbyte (unsigned i), + outoct (void), + get_programname (char const *argv0), + errit (char const *format, ...), + syntax (void), + *s_malloc (size_t size), + *s_realloc (void *block, size_t size); +char + *s_strdup (char const *s); + +int main (int argc, char *argv []) +{ + int + i; + + no_mem_buffer = (char *) malloc (1024); + + get_programname (argv [0]); + + while (argc > 1) { + if (! strcmp (argv [1], "-7")) { + utf7 = 1; + utf8 = 0; + } else if (! strcmp (argv [1], "-8")) { + utf7 = 0; + utf8 = 1; + } else + break; + argv++; + argc--; + } + + if (argc == 1) + syntax (); + + nr = argc - 1; + + lu = (long unsigned *) s_malloc (nr * sizeof (long unsigned)); + for (i = 0; i < nr; i++) { + if ((argv [i + 1][0] == 'U' || argv [i + 1][0] == 'u') && argv [i + 1][1] == '+') { + argv [i + 1][0] = '0'; + argv [i + 1][1] = 'x'; + } + lu [i] = strtoul (argv [i + 1], NULL, 0); + } + + if (utf7) + utf_7 (); + + if (utf8) + utf_8 (); + + return 0; +} + +void utf_7 () +{ + int + i; + + fputc ('+', stdout); + for (i = 0; i < nr; i++) + if (lu [i] < 0x10000) { + outbyte (lu [i] >> 8); + outbyte (lu [i] & 0xFF); + } else + errit ("Too large for UTF-7: 0x%lX", lu [i]); + + if (obits) + outoct (); + + fputs ("-\n", stdout); +} + +void outbyte (unsigned u) +{ + switch (obits) { + case 0: + octal = (u >> 2); + outoct (); + octal = ((u & 0x03) << 4); + obits = 2; + break; + case 2: + octal |= (u >> 4); + outoct (); + octal = ((u & 0x0F) << 2); + obits = 4; + break; + case 4: + octal |= (u >> 6); + outoct (); + octal = (u & 0x3F); + outoct (); + obits = 0; + break; + } +} + +void outoct () +{ + char + c; + + if (octal < 26) + c = octal + 'A'; + else if (octal < 52) + c = octal - 26 + 'a'; + else if (octal < 62) + c = octal - 52 + '0'; + else if (octal == 62) + c = '+'; + else + c = '/'; + fputc (c, stdout); +} + +void utf_8 () +{ + int + i; + + for (i = 0; i < nr; i++) { + /* 1 byte */ + if (lu [i] < 0x80) + fputc (lu [i], stdout); + + /* 2 bytes */ + else if (lu [i] < 0x800) { + fputc (0xC0 | (lu [i] >> 6), stdout); + fputc (0x80 | (lu [i] & 0x3F), stdout); + } + + /* 3 bytes */ + else if (lu [i] < 0x10000) { + fputc (0xE0 | (lu [i] >> 12), stdout); + fputc (0x80 | ((lu [i] >> 6) & 0x3F), stdout); + fputc (0x80 | (lu [i] & 0x3F), stdout); + } + + /* 4 bytes */ + else if (lu [i] < 0x200000) { + fputc (0xF0 | (lu [i] >> 18), stdout); + fputc (0x80 | ((lu [i] >> 12) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 6) & 0x3F), stdout); + fputc (0x80 | (lu [i] & 0x3F), stdout); + } + + /* 5 bytes */ + else if (lu [i] < 0x4000000) { + fputc (0xF8 | (lu [i] >> 24), stdout); + fputc (0x80 | ((lu [i] >> 18) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 12) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 6) & 0x3F), stdout); + fputc (0x80 | (lu [i] & 0x3F), stdout); + } + + /* 6 bytes */ + else if (lu [i] < 0x80000000) { + fputc (0xFC | (lu [i] >> 30), stdout); + fputc (0x80 | ((lu [i] >> 24) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 18) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 12) & 0x3F), stdout); + fputc (0x80 | ((lu [i] >> 6) & 0x3F), stdout); + fputc (0x80 | (lu [i] & 0x3F), stdout); + } else + errit ("Too large for UTF-8: 0x%lX", lu [i]); + } + fputc ('\n', stdout); +} + +void errit (char const *format, ...) +{ + va_list + list; + + fprintf (stderr, "\nError %s: ", programname); + + va_start (list, format); + vfprintf (stderr, format, list); + + fprintf (stderr, "\n\n"); + + exit (1); +} + +void get_programname (char const *argv0) +{ +#ifdef __MSDOS__ + char + name [MAXFILE]; + fnsplit (argv0, NULL, NULL, name, NULL); + programname = strdup (name); +#else /* unix */ + char + *p; + p = strrchr (argv0, '/'); + if (p) + programname = strdup (p + 1); + else + programname = strdup (argv0); +#endif +} + +void *s_malloc (size_t size) +{ + void + *p; + + p = malloc (size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +void *s_realloc (void *block, size_t size) +{ + void + *p; + + p = realloc (block, size); + if (! p) { + free (no_mem_buffer); + errit (out_of_memory); + } + return p; +} + +char *s_strdup (char const *s) +{ + char + *s1; + + if (s) { + s1 = (char *) s_malloc (strlen (s) + 1); + strcpy (s1, s); + } else { + s1 = (char *) s_malloc (1); + s1 [0] = '\0'; + } + return s1; +} + +void syntax () +{ + fprintf ( + stderr, + "\n" + "This is utfcode, version " UTFcodeVERSION "\n" + "\n" + "Usage: %s [-7|-8] [number...]\n" + "\n" + " -7: utf-7 only\n" + " -8: utf-8 only\n" + "\n", + programname + ); + exit (1); +} -- cgit v1.2.3