diff options
| author | Ulrich Drepper <drepper@redhat.com> | 1998-04-13 09:17:55 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 1998-04-13 09:17:55 +0000 |
| commit | 40b4c81d4ec13a7a5acdeb1288f1d897b511b36c (patch) | |
| tree | 749983afdca46082e5edb506b00c72917f76ea18 /iconvdata | |
| parent | 8acdf4fd69b5362bca57b9136b7d243333774484 (diff) | |
| download | glibc-40b4c81d4ec13a7a5acdeb1288f1d897b511b36c.tar.xz glibc-40b4c81d4ec13a7a5acdeb1288f1d897b511b36c.zip | |
Update.
1998-04-13 09:11 Ulrich Drepper <drepper@cygnus.com>
* iconvdata/eucjp.c: New file.
* iconvdata/euccn.c: New file.
* iconvdata/gb2312.h: New file.
* iconvdata/gb2312.c: New file.
* iconvdata/Makefile: Add rules for EUC-JP and EUC-CN.
* iconvdata/gconv-modules: Likewise.
* iconvdata/euckr.c: Use stdint.h instead of inttypes.h.
Diffstat (limited to 'iconvdata')
| -rw-r--r-- | iconvdata/Makefile | 13 | ||||
| -rw-r--r-- | iconvdata/euccn.c | 304 | ||||
| -rw-r--r-- | iconvdata/euckr.c | 4 | ||||
| -rw-r--r-- | iconvdata/gb2312.c | 4560 | ||||
| -rw-r--r-- | iconvdata/gb2312.h | 185 | ||||
| -rw-r--r-- | iconvdata/gconv-modules | 10 |
6 files changed, 5072 insertions, 4 deletions
diff --git a/iconvdata/Makefile b/iconvdata/Makefile index caa34d921c..6ac99ba3fe 100644 --- a/iconvdata/Makefile +++ b/iconvdata/Makefile @@ -26,7 +26,8 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \ ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10 \ T.61 ISO_6937 SJIS KOI-8 KOI8-R LATIN-GREEK LATIN-GREEK-1 \ HP-ROMAN8 EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR \ - EUC-KR UHC JOHAB libJIS libKSC ISO646 BIG5 + EUC-KR UHC JOHAB libJIS libKSC ISO646 BIG5 EUC-JP libGB \ + EUC-CN modules.so := $(addsuffix .so, $(modules)) @@ -58,8 +59,11 @@ EUC-KR-routines := euckr JOHAB-routines := johab UHC-routines := uhc BIG5-routines := big5 +EUC-JP-routines := eucjp +EUC-CN-routines := euccn libJIS-routines := jis0201 jis0208 jis0212 libKSC-routines := ksc5601 +libGB-routines := gb2312 LDFLAGS-EUC-KR.so = -Wl,-rpath,$(gconvdir) $(objpfx)EUC-KR.so: $(objpfx)libKSC.so @@ -67,9 +71,14 @@ LDFLAGS-JOHAB.so = -Wl,-rpath,$(gconvdir) $(objpfx)JOHAB.so: $(objpfx)libKSC.so LDFLAGS-UHC.so = -Wl,-rpath,$(gconvdir) $(objpfx)UHC.so: $(objpfx)libKSC.so +LDFLAGS-EUC-JP.so = -Wl,-rpath,$(gconvdir) +$(objpfx)EUC-JP.so: $(objpfx)libJIS.so +LDFLAGS-EUC-CN.so = -Wl,-rpath,$(gconvdir) +$(objpfx)EUC-CN.so: $(objpfx)libGB.so LDFLAGS-libJIS.so = -Wl,-soname,$(@F) LDFLAGS-libKSC.so = -Wl,-soname,$(@F) +LDFLAGS-libGB.so = -Wl,-soname,$(@F) distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl gconv-modules \ iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c \ @@ -79,7 +88,7 @@ distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl gconv-modules \ latin-greek.h latin-greek-1.c latin-greek-1.h ebcdic-at-de.c \ ebcdic-at-de-a.c ebcdic-ca-fr.c jis0201.c jis0208.c jis0212.c \ extra-module.mk euckr.c johab.c uhc.c ksc5601.c ksc5601.h \ - iso646.c big5.c + iso646.c big5.c eucjp.c gb2312.c gb2312.h euccn.c # We build the transformation modules only when we build shared libs. ifeq (yes,$(build-shared)) diff --git a/iconvdata/euccn.c b/iconvdata/euccn.c new file mode 100644 index 0000000000..108974a972 --- /dev/null +++ b/iconvdata/euccn.c @@ -0,0 +1,304 @@ +/* Mapping tables for EUC-CN handling. + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <gconv.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <gb2312.h> + +/* Direction of the transformation. */ +enum direction +{ + illegal, + to_euccn, + from_euccn +}; + +struct euccn_data +{ + enum direction dir; +}; + + +int +gconv_init (struct gconv_step *step) +{ + /* Determine which direction. */ + struct euccn_data *new_data; + enum direction dir; + int result; + + if (strcasestr (step->from_name, "EUC-CN") != NULL) + dir = from_euccn; + else if (strcasestr (step->to_name, "EUC-CN") != NULL) + dir = to_euccn; + else + dir = illegal; + + result = GCONV_NOCONV; + if (dir != illegal + && ((new_data + = (struct euccn_data *) malloc (sizeof (struct euccn_data))) + != NULL)) + { + new_data->dir = dir; + step->data = new_data; + result = GCONV_OK; + } + + return result; +} + + +void +gconv_end (struct gconv_step *data) +{ + free (data->data); +} + + +int +gconv (struct gconv_step *step, struct gconv_step_data *data, + const char *inbuf, size_t *inbufsize, size_t *written, int do_flush) +{ + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + gconv_fct fct = next_step->fct; + size_t do_write; + int result; + + /* If the function is called with no input this means we have to reset + to the initial state. The possibly partly converted input is + dropped. */ + if (do_flush) + { + do_write = 0; + + /* Call the steps down the chain if there are any. */ + if (data->is_last) + result = GCONV_OK; + else + { + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + + result = (*fct) (next_step, next_data, NULL, 0, written, 1); + + /* Clear output buffer. */ + data->outbufavail = 0; + } + } + else + { + enum direction dir = ((struct euccn_data *) step->data)->dir; + + do_write = 0; + + do + { + result = GCONV_OK; + + if (dir == from_euccn) + { + size_t inchars = *inbufsize; + size_t outwchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (cnt < inchars + && (outwchars + sizeof (wchar_t) <= data->outbufsize)) + { + int inchar = (unsigned char) inbuf[cnt]; + wchar_t ch; + + if (inchar <= 0x7f) + ch = (wchar_t) inchar; + else if ((inchar <= 0xa0 || inchar > 0xfe) + && inchar != 0x8e && inchar != 0x8f) + /* This is illegal. */ + ch = L'\0'; + else + { + /* Two or more byte character. First test whether the + next character is also available. */ + const char *endp; + int inchar2; + + if (cnt + 1 >= inchars) + { + /* The second character is not available. Store + the intermediate result. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + + inchar2 = (unsigned char) inbuf[++cnt]; + + /* All second bytes of a multibyte character must be + >= 0xa1. */ + if (inchar2 < 0xa1) + { + /* This is an illegal character. */ + --cnt; + result = GCONV_ILLEGAL_INPUT; + break; + } + + /* This is code set 1: GB 2312-80. */ + endp = &inbuf[cnt - 1]; + + ch = gb2312_to_ucs4 (&endp, 2, 0x80); + if (ch != L'\0') + ++cnt; + + if (ch == UNKNOWN_10646_CHAR) + ch = L'\0'; + + if (ch == L'\0') + --cnt; + } + + if (ch == L'\0' && inbuf[cnt] != '\0') + { + /* This is an illegal character. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + + *((wchar_t *) (outbuf + outwchars)) = ch; + ++do_write; + outwchars += sizeof (wchar_t); + ++cnt; + } + *inbufsize -= cnt; + data->outbufavail = outwchars; + } + else + { + size_t inwchars = *inbufsize; + size_t outchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + int extra = 0; + + while (inwchars >= cnt + sizeof (wchar_t) + && outchars < data->outbufsize) + { + wchar_t ch = *((wchar_t *) (inbuf + cnt)); + + if (ch <= L'\x7f') + /* It's plain ASCII. */ + outbuf[outchars] = ch; + else + { + /* Try the JIS character sets. */ + size_t found; + + found = ucs4_to_gb2312 (ch, &outbuf[outchars], + (data->outbufsize + - outchars)); + if (found > 0) + { + /* It's a GB 2312 character, adjust it for + EUC-CN. */ + outbuf[outchars++] += 0x80; + outbuf[outchars] += 0x80; + } + else if (found == 0) + { + /* We ran out of space. */ + extra = 2; + break; + } + else + /* Illegal character. */ + break; + } + + ++do_write; + ++outchars; + cnt += sizeof (wchar_t); + } + *inbufsize -= cnt; + data->outbufavail = outchars; + + if (outchars + extra < data->outbufsize) + { + /* If there is still room in the output buffer something + is wrong with the input. */ + if (inwchars >= cnt + sizeof (wchar_t)) + { + /* An error occurred. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + if (inwchars != cnt) + { + /* There are some unprocessed bytes at the end of the + input buffer. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + } + } + + if (result != GCONV_OK) + break; + + if (data->is_last) + { + /* This is the last step. */ + result = (*inbufsize > (dir == from_euccn + ? 0 : sizeof (wchar_t) - 1) + ? GCONV_FULL_OUTPUT : GCONV_EMPTY_INPUT); + break; + } + + /* Status so far. */ + result = GCONV_EMPTY_INPUT; + + if (data->outbufavail > 0) + { + /* Call the functions below in the chain. */ + size_t newavail = data->outbufavail; + + result = (*fct) (next_step, next_data, data->outbuf, &newavail, + written, 0); + + /* Correct the output buffer. */ + if (newavail != data->outbufavail && newavail > 0) + { + memmove (data->outbuf, + &data->outbuf[data->outbufavail - newavail], + newavail); + data->outbufavail = newavail; + } + } + } + while (*inbufsize > 0 && result == GCONV_EMPTY_INPUT); + } + + if (written != NULL && data->is_last) + *written = do_write; + + return result; +} diff --git a/iconvdata/euckr.c b/iconvdata/euckr.c index 9789e883e9..62dd2c47bf 100644 --- a/iconvdata/euckr.c +++ b/iconvdata/euckr.c @@ -19,7 +19,7 @@ Boston, MA 02111-1307, USA. */ #include <gconv.h> -#include <inttypes.h> +#include <stdint.h> #include <stdlib.h> #include <string.h> #include <wchar.h> @@ -168,7 +168,7 @@ gconv (struct gconv_step *step, struct gconv_step_data *data, /* 0xfe(->0x7e : row 94) and 0xc9(->0x59 : row 41) are user-defined areas */ - else if ( inchar <= 0xa0 || inchar >= 0xfe || inchar == 0xc9) + else if ( inchar <= 0xa0 || inchar > 0xfe || inchar == 0xc9) /* This is illegal. */ ch = L'\0'; else diff --git a/iconvdata/gb2312.c b/iconvdata/gb2312.c new file mode 100644 index 0000000000..89d716196f --- /dev/null +++ b/iconvdata/gb2312.c @@ -0,0 +1,4560 @@ +/* GB 2312 conversion tables. + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <stdint.h> + +/* The conversion table to UCS4 has almost no holes. It can be generated with: + + egrep '^0x' /mnt/cdrom/unix/mappings/eastasia/gb/gb2312.txt | + perl tab.pl + + where tab.pl is: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + $n=0; + while (<>) { + local($gb, $ucs4, %rest) = split; + local($u)=hex($ucs4); + local($g)=hex($gb); + printf ("\n ") if ($n % 4 eq 0); + ++$n; + printf (" [0x%04x] = 0x%04x,", + int(($g - 0x2121) / 256) * 94 + (($g - 0x2121) & 0xff), $u); + } + printf ("\n"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ +const uint16_t gb2312_to_ucs[] = +{ + [0x0000] = 0x3000, [0x0001] = 0x3001, [0x0002] = 0x3002, [0x0003] = 0x30fb, + [0x0004] = 0x02c9, [0x0005] = 0x02c7, [0x0006] = 0x00a8, [0x0007] = 0x3003, + [0x0008] = 0x3005, [0x0009] = 0x2015, [0x000a] = 0xff5e, [0x000b] = 0x2225, + [0x000c] = 0x2026, [0x000d] = 0x2018, [0x000e] = 0x2019, [0x000f] = 0x201c, + [0x0010] = 0x201d, [0x0011] = 0x3014, [0x0012] = 0x3015, [0x0013] = 0x3008, + [0x0014] = 0x3009, [0x0015] = 0x300a, [0x0016] = 0x300b, [0x0017] = 0x300c, + [0x0018] = 0x300d, [0x0019] = 0x300e, [0x001a] = 0x300f, [0x001b] = 0x3016, + [0x001c] = 0x3017, [0x001d] = 0x3010, [0x001e] = 0x3011, [0x001f] = 0x00b1, + [0x0020] = 0x00d7, [0x0021] = 0x00f7, [0x0022] = 0x2236, [0x0023] = 0x2227, + [0x0024] = 0x2228, [0x0025] = 0x2211, [0x0026] = 0x220f, [0x0027] = 0x222a, + [0x0028] = 0x2229, [0x0029] = 0x2208, [0x002a] = 0x2237, [0x002b] = 0x221a, + [0x002c] = 0x22a5, [0x002d] = 0x2225, [0x002e] = 0x2220, [0x002f] = 0x2312, + [0x0030] = 0x2299, [0x0031] = 0x222b, [0x0032] = 0x222e, [0x0033] = 0x2261, + [0x0034] = 0x224c, [0x0035] = 0x2248, [0x0036] = 0x223d, [0x0037] = 0x221d, + [0x0038] = 0x2260, [0x0039] = 0x226e, [0x003a] = 0x226f, [0x003b] = 0x2264, + [0x003c] = 0x2265, [0x003d] = 0x221e, [0x003e] = 0x2235, [0x003f] = 0x2234, + [0x0040] = 0x2642, [0x0041] = 0x2640, [0x0042] = 0x00b0, [0x0043] = 0x2032, + [0x0044] = 0x2033, [0x0045] = 0x2103, [0x0046] = 0xff04, [0x0047] = 0x00a4, + [0x0048] = 0xffe0, [0x0049] = 0xffe1, [0x004a] = 0x2030, [0x004b] = 0x00a7, + [0x004c] = 0x2116, [0x004d] = 0x2606, [0x004e] = 0x2605, [0x004f] = 0x25cb, + [0x0050] = 0x25cf, [0x0051] = 0x25ce, [0x0052] = 0x25c7, [0x0053] = 0x25c6, + [0x0054] = 0x25a1, [0x0055] = 0x25a0, [0x0056] = 0x25b3, [0x0057] = 0x25b2, + [0x0058] = 0x203b, [0x0059] = 0x2192, [0x005a] = 0x2190, [0x005b] = 0x2191, + [0x005c] = 0x2193, [0x005d] = 0x3013, [0x006e] = 0x2488, [0x006f] = 0x2489, + [0x0070] = 0x248a, [0x0071] = 0x248b, [0x0072] = 0x248c, [0x0073] = 0x248d, + [0x0074] = 0x248e, [0x0075] = 0x248f, [0x0076] = 0x2490, [0x0077] = 0x2491, + [0x0078] = 0x2492, [0x0079] = 0x2493, [0x007a] = 0x2494, [0x007b] = 0x2495, + [0x007c] = 0x2496, [0x007d] = 0x2497, [0x007e] = 0x2498, [0x007f] = 0x2499, + [0x0080] = 0x249a, [0x0081] = 0x249b, [0x0082] = 0x2474, [0x0083] = 0x2475, + [0x0084] = 0x2476, [0x0085] = 0x2477, [0x0086] = 0x2478, [0x0087] = 0x2479, + [0x0088] = 0x247a, [0x0089] = 0x247b, [0x008a] = 0x247c, [0x008b] = 0x247d, + [0x008c] = 0x247e, [0x008d] = 0x247f, [0x008e] = 0x2480, [0x008f] = 0x2481, + [0x0090] = 0x2482, [0x0091] = 0x2483, [0x0092] = 0x2484, [0x0093] = 0x2485, + [0x0094] = 0x2486, [0x0095] = 0x2487, [0x0096] = 0x2460, [0x0097] = 0x2461, + [0x0098] = 0x2462, [0x0099] = 0x2463, [0x009a] = 0x2464, [0x009b] = 0x2465, + [0x009c] = 0x2466, [0x009d] = 0x2467, [0x009e] = 0x2468, [0x009f] = 0x2469, + [0x00a2] = 0x3220, [0x00a3] = 0x3221, [0x00a4] = 0x3222, [0x00a5] = 0x3223, + [0x00a6] = 0x3224, [0x00a7] = 0x3225, [0x00a8] = 0x3226, [0x00a9] = 0x3227, + [0x00aa] = 0x3228, [0x00ab] = 0x3229, [0x00ae] = 0x2160, [0x00af] = 0x2161, + [0x00b0] = 0x2162, [0x00b1] = 0x2163, [0x00b2] = 0x2164, [0x00b3] = 0x2165, + [0x00b4] = 0x2166, [0x00b5] = 0x2167, [0x00b6] = 0x2168, [0x00b7] = 0x2169, + [0x00b8] = 0x216a, [0x00b9] = 0x216b, [0x00bc] = 0xff01, [0x00bd] = 0xff02, + [0x00be] = 0xff03, [0x00bf] = 0xffe5, [0x00c0] = 0xff05, [0x00c1] = 0xff06, + [0x00c2] = 0xff07, [0x00c3] = 0xff08, [0x00c4] = 0xff09, [0x00c5] = 0xff0a, + [0x00c6] = 0xff0b, [0x00c7] = 0xff0c, [0x00c8] = 0xff0d, [0x00c9] = 0xff0e, + [0x00ca] = 0xff0f, [0x00cb] = 0xff10, [0x00cc] = 0xff11, [0x00cd] = 0xff12, + [0x00ce] = 0xff13, [0x00cf] = 0xff14, [0x00d0] = 0xff15, [0x00d1] = 0xff16, + [0x00d2] = 0xff17, [0x00d3] = 0xff18, [0x00d4] = 0xff19, [0x00d5] = 0xff1a, + [0x00d6] = 0xff1b, [0x00d7] = 0xff1c, [0x00d8] = 0xff1d, [0x00d9] = 0xff1e, + [0x00da] = 0xff1f, [0x00db] = 0xff20, [0x00dc] = 0xff21, [0x00dd] = 0xff22, + [0x00de] = 0xff23, [0x00df] = 0xff24, [0x00e0] = 0xff25, [0x00e1] = 0xff26, + [0x00e2] = 0xff27, [0x00e3] = 0xff28, [0x00e4] = 0xff29, [0x00e5] = 0xff2a, + [0x00e6] = 0xff2b, [0x00e7] = 0xff2c, [0x00e8] = 0xff2d, [0x00e9] = 0xff2e, + [0x00ea] = 0xff2f, [0x00eb] = 0xff30, [0x00ec] = 0xff31, [0x00ed] = 0xff32, + [0x00ee] = 0xff33, [0x00ef] = 0xff34, [0x00f0] = 0xff35, [0x00f1] = 0xff36, + [0x00f2] = 0xff37, [0x00f3] = 0xff38, [0x00f4] = 0xff39, [0x00f5] = 0xff3a, + [0x00f6] = 0xff3b, [0x00f7] = 0xff3c, [0x00f8] = 0xff3d, [0x00f9] = 0xff3e, + [0x00fa] = 0xff3f, [0x00fb] = 0xff40, [0x00fc] = 0xff41, [0x00fd] = 0xff42, + [0x00fe] = 0xff43, [0x00ff] = 0xff44, [0x0100] = 0xff45, [0x0101] = 0xff46, + [0x0102] = 0xff47, [0x0103] = 0xff48, [0x0104] = 0xff49, [0x0105] = 0xff4a, + [0x0106] = 0xff4b, [0x0107] = 0xff4c, [0x0108] = 0xff4d, [0x0109] = 0xff4e, + [0x010a] = 0xff4f, [0x010b] = 0xff50, [0x010c] = 0xff51, [0x010d] = 0xff52, + [0x010e] = 0xff53, [0x010f] = 0xff54, [0x0110] = 0xff55, [0x0111] = 0xff56, + [0x0112] = 0xff57, [0x0113] = 0xff58, [0x0114] = 0xff59, [0x0115] = 0xff5a, + [0x0116] = 0xff5b, [0x0117] = 0xff5c, [0x0118] = 0xff5d, [0x0119] = 0xffe3, + [0x011a] = 0x3041, [0x011b] = 0x3042, [0x011c] = 0x3043, [0x011d] = 0x3044, + [0x011e] = 0x3045, [0x011f] = 0x3046, [0x0120] = 0x3047, [0x0121] = 0x3048, + [0x0122] = 0x3049, [0x0123] = 0x304a, [0x0124] = 0x304b, [0x0125] = 0x304c, + [0x0126] = 0x304d, [0x0127] = 0x304e, [0x0128] = 0x304f, [0x0129] = 0x3050, + [0x012a] = 0x3051, [0x012b] = 0x3052, [0x012c] = 0x3053, [0x012d] = 0x3054, + [0x012e] = 0x3055, [0x012f] = 0x3056, [0x0130] = 0x3057, [0x0131] = 0x3058, + [0x0132] = 0x3059, [0x0133] = 0x305a, [0x0134] = 0x305b, [0x0135] = 0x305c, + [0x0136] = 0x305d, [0x0137] = 0x305e, [0x0138] = 0x305f, [0x0139] = 0x3060, + [0x013a] = 0x3061, [0x013b] = 0x3062, [0x013c] = 0x3063, [0x013d] = 0x3064, + [0x013e] = 0x3065, [0x013f] = 0x3066, [0x0140] = 0x3067, [0x0141] = 0x3068, + [0x0142] = 0x3069, [0x0143] = 0x306a, [0x0144] = 0x306b, [0x0145] = 0x306c, + [0x0146] = 0x306d, [0x0147] = 0x306e, [0x0148] = 0x306f, [0x0149] = 0x3070, + [0x014a] = 0x3071, [0x014b] = 0x3072, [0x014c] = 0x3073, [0x014d] = 0x3074, + [0x014e] = 0x3075, [0x014f] = 0x3076, [0x0150] = 0x3077, [0x0151] = 0x3078, + [0x0152] = 0x3079, [0x0153] = 0x307a, [0x0154] = 0x307b, [0x0155] = 0x307c, + [0x0156] = 0x307d, [0x0157] = 0x307e, [0x0158] = 0x307f, [0x0159] = 0x3080, + [0x015a] = 0x3081, [0x015b] = 0x3082, [0x015c] = 0x3083, [0x015d] = 0x3084, + [0x015e] = 0x3085, [0x015f] = 0x3086, [0x0160] = 0x3087, [0x0161] = 0x3088, + [0x0162] = 0x3089, [0x0163] = 0x308a, [0x0164] = 0x308b, [0x0165] = 0x308c, + [0x0166] = 0x308d, [0x0167] = 0x308e, [0x0168] = 0x308f, [0x0169] = 0x3090, + [0x016a] = 0x3091, [0x016b] = 0x3092, [0x016c] = 0x3093, [0x0178] = 0x30a1, + [0x0179] = 0x30a2, [0x017a] = 0x30a3, [0x017b] = 0x30a4, [0x017c] = 0x30a5, + [0x017d] = 0x30a6, [0x017e] = 0x30a7, [0x017f] = 0x30a8, [0x0180] = 0x30a9, + [0x0181] = 0x30aa, [0x0182] = 0x30ab, [0x0183] = 0x30ac, [0x0184] = 0x30ad, + [0x0185] = 0x30ae, [0x0186] = 0x30af, [0x0187] = 0x30b0, [0x0188] = 0x30b1, + [0x0189] = 0x30b2, [0x018a] = 0x30b3, [0x018b] = 0x30b4, [0x018c] = 0x30b5, + [0x018d] = 0x30b6, [0x018e] = 0x30b7, [0x018f] = 0x30b8, [0x0190] = 0x30b9, + [0x0191] = 0x30ba, [0x0192] = 0x30bb, [0x0193] = 0x30bc, [0x0194] = 0x30bd, + [0x0195] = 0x30be, [0x0196] = 0x30bf, [0x0197] = 0x30c0, [0x0198] = 0x30c1, + [0x0199] = 0x30c2, [0x019a] = 0x30c3, [0x019b] = 0x30c4, [0x019c] = 0x30c5, + [0x019d] = 0x30c6, [0x019e] = 0x30c7, [0x019f] = 0x30c8, [0x01a0] = 0x30c9, + [0x01a1] = 0x30ca, [0x01a2] = 0x30cb, [0x01a3] = 0x30cc, [0x01a4] = 0x30cd, + [0x01a5] = 0x30ce, [0x01a6] = 0x30cf, [0x01a7] = 0x30d0, [0x01a8] = 0x30d1, + [0x01a9] = 0x30d2, [0x01aa] = 0x30d3, [0x01ab] = 0x30d4, [0x01ac] = 0x30d5, + [0x01ad] = 0x30d6, [0x01ae] = 0x30d7, [0x01af] = 0x30d8, [0x01b0] = 0x30d9, + [0x01b1] = 0x30da, [0x01b2] = 0x30db, [0x01b3] = 0x30dc, [0x01b4] = 0x30dd, + [0x01b5] = 0x30de, [0x01b6] = 0x30df, [0x01b7] = 0x30e0, [0x01b8] = 0x30e1, + [0x01b9] = 0x30e2, [0x01ba] = 0x30e3, [0x01bb] = 0x30e4, [0x01bc] = 0x30e5, + [0x01bd] = 0x30e6, [0x01be] = 0x30e7, [0x01bf] = 0x30e8, [0x01c0] = 0x30e9, + [0x01c1] = 0x30ea, [0x01c2] = 0x30eb, [0x01c3] = 0x30ec, [0x01c4] = 0x30ed, + [0x01c5] = 0x30ee, [0x01c6] = 0x30ef, [0x01c7] = 0x30f0, [0x01c8] = 0x30f1, + [0x01c9] = 0x30f2, [0x01ca] = 0x30f3, [0x01cb] = 0x30f4, [0x01cc] = 0x30f5, + [0x01cd] = 0x30f6, [0x01d6] = 0x0391, [0x01d7] = 0x0392, [0x01d8] = 0x0393, + [0x01d9] = 0x0394, [0x01da] = 0x0395, [0x01db] = 0x0396, [0x01dc] = 0x0397, + [0x01dd] = 0x0398, [0x01de] = 0x0399, [0x01df] = 0x039a, [0x01e0] = 0x039b, + [0x01e1] = 0x039c, [0x01e2] = 0x039d, [0x01e3] = 0x039e, [0x01e4] = 0x039f, + [0x01e5] = 0x03a0, [0x01e6] = 0x03a1, [0x01e7] = 0x03a3, [0x01e8] = 0x03a4, + [0x01e9] = 0x03a5, [0x01ea] = 0x03a6, [0x01eb] = 0x03a7, [0x01ec] = 0x03a8, + [0x01ed] = 0x03a9, [0x01f6] = 0x03b1, [0x01f7] = 0x03b2, [0x01f8] = 0x03b3, + [0x01f9] = 0x03b4, [0x01fa] = 0x03b5, [0x01fb] = 0x03b6, [0x01fc] = 0x03b7, + [0x01fd] = 0x03b8, [0x01fe] = 0x03b9, [0x01ff] = 0x03ba, [0x0200] = 0x03bb, + [0x0201] = 0x03bc, [0x0202] = 0x03bd, [0x0203] = 0x03be, [0x0204] = 0x03bf, + [0x0205] = 0x03c0, [0x0206] = 0x03c1, [0x0207] = 0x03c3, [0x0208] = 0x03c4, + [0x0209] = 0x03c5, [0x020a] = 0x03c6, [0x020b] = 0x03c7, [0x020c] = 0x03c8, + [0x020d] = 0x03c9, [0x0234] = 0x0410, [0x0235] = 0x0411, [0x0236] = 0x0412, + [0x0237] = 0x0413, [0x0238] = 0x0414, [0x0239] = 0x0415, [0x023a] = 0x0401, + [0x023b] = 0x0416, [0x023c] = 0x0417, [0x023d] = 0x0418, [0x023e] = 0x0419, + [0x023f] = 0x041a, [0x0240] = 0x041b, [0x0241] = 0x041c, [0x0242] = 0x041d, + [0x0243] = 0x041e, [0x0244] = 0x041f, [0x0245] = 0x0420, [0x0246] = 0x0421, + [0x0247] = 0x0422, [0x0248] = 0x0423, [0x0249] = 0x0424, [0x024a] = 0x0425, + [0x024b] = 0x0426, [0x024c] = 0x0427, [0x024d] = 0x0428, [0x024e] = 0x0429, + [0x024f] = 0x042a, [0x0250] = 0x042b, [0x0251] = 0x042c, [0x0252] = 0x042d, + [0x0253] = 0x042e, [0x0254] = 0x042f, [0x0264] = 0x0430, [0x0265] = 0x0431, + [0x0266] = 0x0432, [0x0267] = 0x0433, [0x0268] = 0x0434, [0x0269] = 0x0435, + [0x026a] = 0x0451, [0x026b] = 0x0436, [0x026c] = 0x0437, [0x026d] = 0x0438, + [0x026e] = 0x0439, [0x026f] = 0x043a, [0x0270] = 0x043b, [0x0271] = 0x043c, + [0x0272] = 0x043d, [0x0273] = 0x043e, [0x0274] = 0x043f, [0x0275] = 0x0440, + [0x0276] = 0x0441, [0x0277] = 0x0442, [0x0278] = 0x0443, [0x0279] = 0x0444, + [0x027a] = 0x0445, [0x027b] = 0x0446, [0x027c] = 0x0447, [0x027d] = 0x0448, + [0x027e] = 0x0449, [0x027f] = 0x044a, [0x0280] = 0x044b, [0x0281] = 0x044c, + [0x0282] = 0x044d, [0x0283] = 0x044e, [0x0284] = 0x044f, [0x0292] = 0x0101, + [0x0293] = 0x00e1, [0x0294] = 0x01ce, [0x0295] = 0x00e0, [0x0296] = 0x0113, + [0x0297] = 0x00e9, [0x0298] = 0x011b, [0x0299] = 0x00e8, [0x029a] = 0x012b, + [0x029b] = 0x00ed, [0x029c] = 0x01d0, [0x029d] = 0x00ec, [0x029e] = 0x014d, + [0x029f] = 0x00f3, [0x02a0] = 0x01d2, [0x02a1] = 0x00f2, [0x02a2] = 0x016b, + [0x02a3] = 0x00fa, [0x02a4] = 0x01d4, [0x02a5] = 0x00f9, [0x02a6] = 0x01d6, + [0x02a7] = 0x01d8, [0x02a8] = 0x01da, [0x02a9] = 0x01dc, [0x02aa] = 0x00fc, + [0x02ab] = 0x00ea, [0x02b6] = 0x3105, [0x02b7] = 0x3106 |
