Index: stable/12/lib/libc/locale/collate.c =================================================================== --- stable/12/lib/libc/locale/collate.c (revision 341626) +++ stable/12/lib/libc/locale/collate.c (revision 341627) @@ -1,709 +1,711 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright 2014 Garrett D'Amore * Copyright 2010 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 1995 Alex Tatmanjants * at Electronni Visti IA, Kiev, Ukraine. * All rights reserved. * * Copyright (c) 2011 The FreeBSD Foundation * All rights reserved. * Portions of this software were developed by David Chisnall * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Adapted to xlocale by John Marino */ #include __FBSDID("$FreeBSD$"); #include "namespace.h" #include #include #include #include #include #include #include #include #include #include #include #include "un-namespace.h" #include "collate.h" #include "setlocale.h" #include "ldpart.h" #include "libc_private.h" struct xlocale_collate __xlocale_global_collate = { {{0}, "C"}, 1, 0, 0, 0 }; struct xlocale_collate __xlocale_C_collate = { {{0}, "C"}, 1, 0, 0, 0 }; static int __collate_load_tables_l(const char *encoding, struct xlocale_collate *table); static void destruct_collate(void *t) { struct xlocale_collate *table = t; if (table->map && (table->maplen > 0)) { (void) munmap(table->map, table->maplen); } free(t); } void * __collate_load(const char *encoding, __unused locale_t unused) { - if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) { + if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0 || + strncmp(encoding, "C.", 2) == 0) { return &__xlocale_C_collate; } struct xlocale_collate *table = calloc(sizeof(struct xlocale_collate), 1); table->header.header.destructor = destruct_collate; // FIXME: Make sure that _LDP_CACHE is never returned. We should be doing // the caching outside of this section if (__collate_load_tables_l(encoding, table) != _LDP_LOADED) { xlocale_release(table); return NULL; } return table; } /** * Load the collation tables for the specified encoding into the global table. */ int __collate_load_tables(const char *encoding) { return (__collate_load_tables_l(encoding, &__xlocale_global_collate)); } int __collate_load_tables_l(const char *encoding, struct xlocale_collate *table) { int i, chains, z; char *buf; char *TMP; char *map; collate_info_t *info; struct stat sbuf; int fd; table->__collate_load_error = 1; /* 'encoding' must be already checked. */ - if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) { + if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0 || + strncmp(encoding, "C.", 2) == 0) { return (_LDP_CACHE); } if (asprintf(&buf, "%s/%s/LC_COLLATE", _PathLocale, encoding) == -1) return (_LDP_ERROR); if ((fd = _open(buf, O_RDONLY)) < 0) { free(buf); return (_LDP_ERROR); } free(buf); if (_fstat(fd, &sbuf) < 0) { (void) _close(fd); return (_LDP_ERROR); } if (sbuf.st_size < (COLLATE_STR_LEN + sizeof (info))) { (void) _close(fd); errno = EINVAL; return (_LDP_ERROR); } map = mmap(NULL, sbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0); (void) _close(fd); if ((TMP = map) == NULL) { return (_LDP_ERROR); } if (strncmp(TMP, COLLATE_VERSION, COLLATE_STR_LEN) != 0) { (void) munmap(map, sbuf.st_size); errno = EINVAL; return (_LDP_ERROR); } TMP += COLLATE_STR_LEN; info = (void *)TMP; TMP += sizeof (*info); if ((info->directive_count < 1) || (info->directive_count >= COLL_WEIGHTS_MAX) || ((chains = info->chain_count) < 0)) { (void) munmap(map, sbuf.st_size); errno = EINVAL; return (_LDP_ERROR); } i = (sizeof (collate_char_t) * (UCHAR_MAX + 1)) + (sizeof (collate_chain_t) * chains) + (sizeof (collate_large_t) * info->large_count); for (z = 0; z < info->directive_count; z++) { i += sizeof (collate_subst_t) * info->subst_count[z]; } if (i != (sbuf.st_size - (TMP - map))) { (void) munmap(map, sbuf.st_size); errno = EINVAL; return (_LDP_ERROR); } table->info = info; table->char_pri_table = (void *)TMP; TMP += sizeof (collate_char_t) * (UCHAR_MAX + 1); for (z = 0; z < info->directive_count; z++) { if (info->subst_count[z] > 0) { table->subst_table[z] = (void *)TMP; TMP += info->subst_count[z] * sizeof (collate_subst_t); } else { table->subst_table[z] = NULL; } } if (chains > 0) { table->chain_pri_table = (void *)TMP; TMP += chains * sizeof (collate_chain_t); } else table->chain_pri_table = NULL; if (info->large_count > 0) table->large_pri_table = (void *)TMP; else table->large_pri_table = NULL; table->__collate_load_error = 0; return (_LDP_LOADED); } static const int32_t * substsearch(struct xlocale_collate *table, const wchar_t key, int pass) { const collate_subst_t *p; int n = table->info->subst_count[pass]; if (n == 0) return (NULL); if (pass >= table->info->directive_count) return (NULL); if (!(key & COLLATE_SUBST_PRIORITY)) return (NULL); p = table->subst_table[pass] + (key & ~COLLATE_SUBST_PRIORITY); assert(p->key == key); return (p->pri); } static collate_chain_t * chainsearch(struct xlocale_collate *table, const wchar_t *key, int *len) { int low = 0; int high = table->info->chain_count - 1; int next, compar, l; collate_chain_t *p; collate_chain_t *tab = table->chain_pri_table; if (high < 0) return (NULL); while (low <= high) { next = (low + high) / 2; p = tab + next; compar = *key - *p->str; if (compar == 0) { l = wcsnlen(p->str, COLLATE_STR_LEN); compar = wcsncmp(key, p->str, l); if (compar == 0) { *len = l; return (p); } } if (compar > 0) low = next + 1; else high = next - 1; } return (NULL); } static collate_large_t * largesearch(struct xlocale_collate *table, const wchar_t key) { int low = 0; int high = table->info->large_count - 1; int next, compar; collate_large_t *p; collate_large_t *tab = table->large_pri_table; if (high < 0) return (NULL); while (low <= high) { next = (low + high) / 2; p = tab + next; compar = key - p->val; if (compar == 0) return (p); if (compar > 0) low = next + 1; else high = next - 1; } return (NULL); } void _collate_lookup(struct xlocale_collate *table, const wchar_t *t, int *len, int *pri, int which, const int **state) { collate_chain_t *p2; collate_large_t *match; int p, l; const int *sptr; /* * If this is the "last" pass for the UNDEFINED, then * we just return the priority itself. */ if (which >= table->info->directive_count) { *pri = *t; *len = 1; *state = NULL; return; } /* * If we have remaining substitution data from a previous * call, consume it first. */ if ((sptr = *state) != NULL) { *pri = *sptr; sptr++; if ((sptr == *state) || (sptr == NULL)) *state = NULL; else *state = sptr; *len = 0; return; } /* No active substitutions */ *len = 1; /* * Check for composites such as diphthongs that collate as a * single element (aka chains or collating-elements). */ if (((p2 = chainsearch(table, t, &l)) != NULL) && ((p = p2->pri[which]) >= 0)) { *len = l; *pri = p; } else if (*t <= UCHAR_MAX) { /* * Character is a small (8-bit) character. * We just look these up directly for speed. */ *pri = table->char_pri_table[*t].pri[which]; } else if ((table->info->large_count > 0) && ((match = largesearch(table, *t)) != NULL)) { /* * Character was found in the extended table. */ *pri = match->pri.pri[which]; } else { /* * Character lacks a specific definition. */ if (table->info->directive[which] & DIRECTIVE_UNDEFINED) { /* Mask off sign bit to prevent ordering confusion. */ *pri = (*t & COLLATE_MAX_PRIORITY); } else { *pri = table->info->undef_pri[which]; } /* No substitutions for undefined characters! */ return; } /* * Try substituting (expanding) the character. We are * currently doing this *after* the chain compression. I * think it should not matter, but this way might be slightly * faster. * * We do this after the priority search, as this will help us * to identify a single key value. In order for this to work, * its important that the priority assigned to a given element * to be substituted be unique for that level. The localedef * code ensures this for us. */ if ((sptr = substsearch(table, *pri, which)) != NULL) { if ((*pri = *sptr) > 0) { sptr++; *state = *sptr ? sptr : NULL; } } } /* * This is the meaty part of wcsxfrm & strxfrm. Note that it does * NOT NULL terminate. That is left to the caller. */ size_t _collate_wxfrm(struct xlocale_collate *table, const wchar_t *src, wchar_t *xf, size_t room) { int pri; int len; const wchar_t *t; wchar_t *tr = NULL; int direc; int pass; const int32_t *state; size_t want = 0; size_t need = 0; int ndir = table->info->directive_count; assert(src); for (pass = 0; pass <= ndir; pass++) { state = NULL; if (pass != 0) { /* insert level separator from the previous pass */ if (room) { *xf++ = 1; room--; } want++; } /* special pass for undefined */ if (pass == ndir) { direc = DIRECTIVE_FORWARD | DIRECTIVE_UNDEFINED; } else { direc = table->info->directive[pass]; } t = src; if (direc & DIRECTIVE_BACKWARD) { wchar_t *bp, *fp, c; free(tr); if ((tr = wcsdup(t)) == NULL) { errno = ENOMEM; goto fail; } bp = tr; fp = tr + wcslen(tr) - 1; while (bp < fp) { c = *bp; *bp++ = *fp; *fp-- = c; } t = (const wchar_t *)tr; } if (direc & DIRECTIVE_POSITION) { while (*t || state) { _collate_lookup(table, t, &len, &pri, pass, &state); t += len; if (pri <= 0) { if (pri < 0) { errno = EINVAL; goto fail; } state = NULL; pri = COLLATE_MAX_PRIORITY; } if (room) { *xf++ = pri; room--; } want++; need = want; } } else { while (*t || state) { _collate_lookup(table, t, &len, &pri, pass, &state); t += len; if (pri <= 0) { if (pri < 0) { errno = EINVAL; goto fail; } state = NULL; continue; } if (room) { *xf++ = pri; room--; } want++; need = want; } } } free(tr); return (need); fail: free(tr); return ((size_t)(-1)); } /* * In the non-POSIX case, we transform each character into a string of * characters representing the character's priority. Since char is usually * signed, we are limited by 7 bits per byte. To avoid zero, we need to add * XFRM_OFFSET, so we can't use a full 7 bits. For simplicity, we choose 6 * bits per byte. * * It turns out that we sometimes have real priorities that are * 31-bits wide. (But: be careful using priorities where the high * order bit is set -- i.e. the priority is negative. The sort order * may be surprising!) * * TODO: This would be a good area to optimize somewhat. It turns out * that real prioririties *except for the last UNDEFINED pass* are generally * very small. We need the localedef code to precalculate the max * priority for us, and ideally also give us a mask, and then we could * severely limit what we expand to. */ #define XFRM_BYTES 6 #define XFRM_OFFSET ('0') /* make all printable characters */ #define XFRM_SHIFT 6 #define XFRM_MASK ((1 << XFRM_SHIFT) - 1) #define XFRM_SEP ('.') /* chosen to be less than XFRM_OFFSET */ static int xfrm(struct xlocale_collate *table, unsigned char *p, int pri, int pass) { /* we use unsigned to ensure zero fill on right shift */ uint32_t val = (uint32_t)table->info->pri_count[pass]; int nc = 0; while (val) { *p = (pri & XFRM_MASK) + XFRM_OFFSET; pri >>= XFRM_SHIFT; val >>= XFRM_SHIFT; p++; nc++; } return (nc); } size_t _collate_sxfrm(struct xlocale_collate *table, const wchar_t *src, char *xf, size_t room) { int pri; int len; const wchar_t *t; wchar_t *tr = NULL; int direc; int pass; const int32_t *state; size_t want = 0; size_t need = 0; int b; uint8_t buf[XFRM_BYTES]; int ndir = table->info->directive_count; assert(src); for (pass = 0; pass <= ndir; pass++) { state = NULL; if (pass != 0) { /* insert level separator from the previous pass */ if (room) { *xf++ = XFRM_SEP; room--; } want++; } /* special pass for undefined */ if (pass == ndir) { direc = DIRECTIVE_FORWARD | DIRECTIVE_UNDEFINED; } else { direc = table->info->directive[pass]; } t = src; if (direc & DIRECTIVE_BACKWARD) { wchar_t *bp, *fp, c; free(tr); if ((tr = wcsdup(t)) == NULL) { errno = ENOMEM; goto fail; } bp = tr; fp = tr + wcslen(tr) - 1; while (bp < fp) { c = *bp; *bp++ = *fp; *fp-- = c; } t = (const wchar_t *)tr; } if (direc & DIRECTIVE_POSITION) { while (*t || state) { _collate_lookup(table, t, &len, &pri, pass, &state); t += len; if (pri <= 0) { if (pri < 0) { errno = EINVAL; goto fail; } state = NULL; pri = COLLATE_MAX_PRIORITY; } b = xfrm(table, buf, pri, pass); want += b; if (room) { while (b) { b--; if (room) { *xf++ = buf[b]; room--; } } } need = want; } } else { while (*t || state) { _collate_lookup(table, t, &len, &pri, pass, &state); t += len; if (pri <= 0) { if (pri < 0) { errno = EINVAL; goto fail; } state = NULL; continue; } b = xfrm(table, buf, pri, pass); want += b; if (room) { while (b) { b--; if (room) { *xf++ = buf[b]; room--; } } } need = want; } } } free(tr); return (need); fail: free(tr); return ((size_t)(-1)); } /* * __collate_equiv_value returns the primary collation value for the given * collating symbol specified by str and len. Zero or negative is returned * if the collating symbol was not found. This function is used by bracket * code in the TRE regex library. */ int __collate_equiv_value(locale_t locale, const wchar_t *str, size_t len) { int32_t e; if (len < 1 || len >= COLLATE_STR_LEN) return (-1); FIX_LOCALE(locale); struct xlocale_collate *table = (struct xlocale_collate*)locale->components[XLC_COLLATE]; if (table->__collate_load_error) return ((len == 1 && *str <= UCHAR_MAX) ? *str : -1); if (len == 1) { e = -1; if (*str <= UCHAR_MAX) e = table->char_pri_table[*str].pri[0]; else if (table->info->large_count > 0) { collate_large_t *match_large; match_large = largesearch(table, *str); if (match_large) e = match_large->pri.pri[0]; } if (e == 0) return (1); return (e > 0 ? e : 0); } if (table->info->chain_count > 0) { wchar_t name[COLLATE_STR_LEN]; collate_chain_t *match_chain; int clen; wcsncpy (name, str, len); name[len] = 0; match_chain = chainsearch(table, name, &clen); if (match_chain) { e = match_chain->pri[0]; if (e == 0) return (1); return (e < 0 ? -e : e); } } return (0); } Index: stable/12/lib/libc/locale/ldpart.c =================================================================== --- stable/12/lib/libc/locale/ldpart.c (revision 341626) +++ stable/12/lib/libc/locale/ldpart.c (revision 341627) @@ -1,168 +1,169 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2000, 2001 Alexey Zelkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD$"); #include "namespace.h" #include #include #include #include #include #include #include #include #include "un-namespace.h" #include "ldpart.h" #include "setlocale.h" static int split_lines(char *, const char *); int __part_load_locale(const char *name, int *using_locale, char **locale_buf, const char *category_filename, int locale_buf_size_max, int locale_buf_size_min, const char **dst_localebuf) { int saverr, fd, i, num_lines; char *lbuf, *p; const char *plim; char filename[PATH_MAX]; struct stat st; size_t namesize, bufsize; /* 'name' must be already checked. */ - if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0) { + if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0 || + strncmp(name, "C.", 2) == 0) { *using_locale = 0; return (_LDP_CACHE); } /* * If the locale name is the same as our cache, use the cache. */ if (*locale_buf != NULL && strcmp(name, *locale_buf) == 0) { *using_locale = 1; return (_LDP_CACHE); } /* * Slurp the locale file into the cache. */ namesize = strlen(name) + 1; /* 'PathLocale' must be already set & checked. */ /* Range checking not needed, 'name' size is limited */ strcpy(filename, _PathLocale); strcat(filename, "/"); strcat(filename, name); strcat(filename, "/"); strcat(filename, category_filename); if ((fd = _open(filename, O_RDONLY | O_CLOEXEC)) < 0) return (_LDP_ERROR); if (_fstat(fd, &st) != 0) goto bad_locale; if (st.st_size <= 0) { errno = EFTYPE; goto bad_locale; } bufsize = namesize + st.st_size; if ((lbuf = malloc(bufsize)) == NULL) { errno = ENOMEM; goto bad_locale; } (void)strcpy(lbuf, name); p = lbuf + namesize; plim = p + st.st_size; if (_read(fd, p, (size_t) st.st_size) != st.st_size) goto bad_lbuf; /* * Parse the locale file into localebuf. */ if (plim[-1] != '\n') { errno = EFTYPE; goto bad_lbuf; } num_lines = split_lines(p, plim); if (num_lines >= locale_buf_size_max) num_lines = locale_buf_size_max; else if (num_lines >= locale_buf_size_min) num_lines = locale_buf_size_min; else { errno = EFTYPE; goto bad_lbuf; } (void)_close(fd); /* * Record the successful parse in the cache. */ if (*locale_buf != NULL) free(*locale_buf); *locale_buf = lbuf; for (p = *locale_buf, i = 0; i < num_lines; i++) dst_localebuf[i] = (p += strlen(p) + 1); for (i = num_lines; i < locale_buf_size_max; i++) dst_localebuf[i] = NULL; *using_locale = 1; return (_LDP_LOADED); bad_lbuf: saverr = errno; free(lbuf); errno = saverr; bad_locale: saverr = errno; (void)_close(fd); errno = saverr; return (_LDP_ERROR); } static int split_lines(char *p, const char *plim) { int i; i = 0; while (p < plim) { if (*p == '\n') { *p = '\0'; i++; } p++; } return (i); } Index: stable/12/share/ctypedef/en_US.UTF-8.src =================================================================== --- stable/12/share/ctypedef/en_US.UTF-8.src (revision 341626) +++ stable/12/share/ctypedef/en_US.UTF-8.src (nonexistent) @@ -1,6372 +0,0 @@ -# Warning: Do not edit. This file is automatically generated from the -# tools in /usr/src/tools/tools/locale. The data is obtained from the -# CLDR project, obtained from http://cldr.unicode.org/ -# ----------------------------------------------------------------------------- - -comment_char * -escape_char / - -LC_CTYPE - -********************************************************************** -* 0x0000 - 0x007F Basic Latin -* 0x0080 - 0x00FF Latin-1 Supplement -* 0x0100 - 0x017F Latin Extended-A -* 0x0180 - 0x024F Latin Extended-B -* 0x0250 - 0x02AF IPA Extensions -* 0x1D00 - 0x1D7F Phonetic Extensions -* 0x1D80 - 0x1DBF Phonetic Extensions Supplement -* 0x1E00 - 0x1EFF Latin Extended Additional -* 0x2150 - 0x218F Number Forms (partial - Roman Numerals) -* 0x2C60 - 0x2C7F Latin Extended-C -* 0xA720 - 0xA7FF Latin Extended-D -* 0xAB30 - 0xAB6F Latin Extended-E -* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) -* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) -********************************************************************** -upper ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...; -lower ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -alpha ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...; -space ;...;;/ - -cntrl ;...;;/ - -graph ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - -digit ;...; -xdigit ;...;;/ - ;...;;/ - ;...; -blank ;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (

,

,

);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x0370 - 0x03FF Greek (No Coptic!) -* 0x1F00 - 0x1FFF Greek Extended -********************************************************************** -upper ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - -lower ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - -graph ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x0400 - 0x04FF Cyrillic -* 0x0500 - 0x052F Cyrillic Supplementary -* 0x2DE0 - 0x2DFF Cyrillic Extended-A -* 0xA640 - 0xA69F Cyrillic Extended-B -********************************************************************** -upper ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -lower ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...; -alpha ;...;;/ - ;/ - ;...;;/ - ;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -punct ;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x0530 - 0x058F Armenian -* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) -********************************************************************** -upper ;...;;/ - ;...; -lower ;...;;/ - ;...;;/ - ;...; -alpha -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...; -punct ;...;;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x0590 - 0x05FF Hebrew -* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) -********************************************************************** -alpha ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...; -punct ;/ - ;/ - ;/ - ;/ - ;/ - - -********************************************************************** -* 0x0600 - 0x06FF Arabic -* 0x0750 - 0x074F Arabic Supplement -* 0x08A0 - 0x08FF Arabic Extended-A -* 0xFB50 - 0xFDFF Arabic Presentation Forms (partial) -* 0xFE70 - 0xFEFF Arabic Presentation Forms-B (partial) -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;/ - ;/ - ;/ - ;/ - ;...;;/ - - -********************************************************************** -* 0x0900 - 0x097F Devanagari -* 0xA8E0 - 0xA8FF Devanagari Extended -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;/ - ;...;;/ - - -********************************************************************** -* 0x0900 - 0x097F Bengali -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...; -punct - -********************************************************************** -* 0x0A00 - 0x0A7F Gurmukhi -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...; -graph ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;...; - -********************************************************************** -* 0x0A80 - 0x0AFF Gujarati -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...; -punct - -********************************************************************** -* 0x0B00 - 0x0B7F Oriya -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - -graph ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x0B80 - 0x0BFF Tamil -********************************************************************** -alpha ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -graph ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...; - -********************************************************************** -* 0x0C00 - 0x0C7F Telugu -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x0C80 - 0x0CFF Kannada -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - - -********************************************************************** -* 0x0D00 - 0x0D7F Malayalam -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x0D80 - 0x0DFF Sinhala -********************************************************************** -alpha ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - -graph ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...; -punct - -********************************************************************** -* 0x0E00 - 0x0E7F Thai -********************************************************************** -alpha ;...;;/ - ;...;;/ - -graph ;...;;/ - ;...; -punct ;/ - ;/ - - -********************************************************************** -* 0x0E80 - 0x0EFF Lao -********************************************************************** -alpha ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...; -graph ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x0F00 - 0x0FFF Tibetan -********************************************************************** -alpha ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - -punct ;...;;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - - -********************************************************************** -* 0x1000 - 0x109F Myanmar -* 0xA9E0 - 0xA9FF Myanmar Extended-B -* 0xAA60 - 0xAA7F Myanmar Extended-A -********************************************************************** -alpha ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;...; - -********************************************************************** -* 0x10A0 - 0x10FF Georgia -* 0x2D00 - 0x2D2F Georgian Supplement -********************************************************************** -upper ;...;;/ - ;...;;/ - ;/ - -lower ;...;;/ - ;/ - -alpha ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x1100 - 0x11FF Hangul Jamo -* 0x3000 - 0x30FF CJK Symbols and Punctuation (partial) -* 0x3040 - 0x309F Hiragana -* 0x30A0 - 0x30FF Katakana -* 0x31F0 - 0x31FF Katakana Phonetic Extensions -* 0x3130 - 0x318F Hangul Compatibility Jamo (partial) -* 0x3200 - 0x32FF Enclosed CJK Letters and Months (partial) -* 0x3300 - 0x33FF CJK Compatibility -* 0x3400 - 0x4DB5 CJK Unified Ideographs Extension-A (added) -* 0x4E00 - 0x9FCC CJK Unified Ideographs (overridden) -* 0xAC00 - 0xA7A3 Hangul Syllables (partial) -* 0xD7B0 - 0xD7FF Hangul Jamo Extended-B -* 0xF900 - 0xFAFF CJK Compatibility Ideographs (partial) -* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) -********************************************************************** -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x1200 - 0x137F Ethiopic -* 0x1380 - 0x139F Ethiopic Supplement -* 0x2D80 - 0x2DDF Ethiopic Extended -* 0xAB00 - 0xAB2F Ethiopic Extended-A -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;...; - -********************************************************************** -* 0x13A0 - 0x13FF Cherokee -********************************************************************** -upper ;...;;/ - ;...; -lower ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x1780 - 0x17FF Khmer -* 0x19E0 - 0x19FF Khmer Symbols -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;...;;/ - ;...; - -********************************************************************** -* 0x2D30 - 0x2D2F Tifinagh -********************************************************************** -alpha ;...;;/ - ;...;;/ - -graph ;...;;/ - ;...;;/ - ;/ - ;/ - -punct - -********************************************************************** -* 0xA000 - 0xA48F Yi Syllables -* 0xA490 - 0xA4CF Yi Radicals -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0xA500 - 0xA63F Vai -********************************************************************** -alpha ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; -punct ;...; - -********************************************************************** -* 0x3130 - 0x318F Hangul Compatibility Jamo (partial) -* 0xA960 - 0xA97F Hangul Jamo Extended-A -* 0xAC00 - 0xA7A3 Hangul Syllables (partial) -* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) -********************************************************************** - -******* REMAINING DEFINITIONS ARE MANUALLY ASSEMBLED ******* - -blank -digit ;; -punct ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...; -number ;...; -cntrl ;...; -graph ;...; - -punct ; -graph ; - -********************************************************************** -* Complete set of "special" characters -********************************************************************** - -special ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;...;;/ - ;...; - -********************************************************************** -* Supplement generated sections with "number" classification -********************************************************************** - -digit ;...; -digit ;...; -digit ;...; -digit ;...; -number ;...; -digit ;...; -digit ;...; -digit ;...; -digit ;...; -number ;...; -digit ;...; -number ;...; -digit ;...; -digit ;...; -number ;...; -digit ;...; -digit ;...; -digit ;...; -number ;...; -digit ;...; -digit ;...; -digit ;...; -number ;...; -digit ;...; -number ;...; -digit ;...; -number ;...; -number ;...; -number ;...; -number ;...; -number ;...; -number ;...; -number ;...; -number ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -number ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -digit ;...; - -********************************************************************** -* 0x02B0 - 0x02FF Spacing Modification Letters -********************************************************************** - -graph ;...; -punct ;...;;/ - ;...;;/ - ;...;/ - -lower ;...;;/ - ;/ - ;/ - ;...;/ - - -********************************************************************** -* 0x0300 - 0x036F Combining Diacritical Marks -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x0300 - 0x0370 Coptic (Automatic section skips it) -********************************************************************** - -graph ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -upper ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -lower ;/ - ;/ - ;/ - ;/ - ;/ - ;/ - -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x0700 - 0x074F Syriac -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x0780 - 0x07BF Thaana -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x07C0 - 0x07FF Nko -********************************************************************** - -digit ;...; -graph ;...; - -********************************************************************** -* 0x0800 - 0x083F Samaritan -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x0840 - 0x085F Mandaic -********************************************************************** - -graph ;...;;/ - - -********************************************************************** -* 0x1400 - 0x167F Unified Canadian Aboriginal Syllabics -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1680 - 0x169F Ogham -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x16A0 - 0x16FF Runic -********************************************************************** - -graph ;...; -number ;...; - -********************************************************************** -* 0x1700 - 0x171F Tagalog -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1720 - 0x173F Hanunoo -********************************************************************** - -graph ;...; - -*********************************************************************** -* 0x1740 - 0x175F Buhid -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1760 - 0x177F Tagbanwa -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1800 - 0x18AF Mongolian -********************************************************************** - -graph ;...;;/ - ;...;;/ - ;...;/ - -digit ;...; - -********************************************************************** -* 0x18B0 - 0x18FF Unified CA Aboriginal Syllabics Extended -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1900 - 0x194F Limbu -********************************************************************** - -graph ;...;;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - -digit ;...; - -********************************************************************** -* 0x1950 - 0x197F Tai Le -********************************************************************** - -graph ;...;;/ - ;...; - -********************************************************************** -* 0x1980 - 0x19DF New Tai Le -********************************************************************** - -graph ;...;;/ - ;...;/ - ;/ - ;/ - -digit ;...; - -********************************************************************** -* 0x1A00 - 0x1A1F Buginese -********************************************************************** - -graph ;...;;/ - ;/ - - -********************************************************************** -* 0x1A20 - 0x1AAF Tai Tham -********************************************************************** - -graph ;...;;/ - ;...;;/ - ;/ - ;...; -digit ;...;;/ - ;...; - -********************************************************************** -* 0x1AB0 - 0x1AFF Combining Diacritical Marks Extended -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1B00 - 0x1B7F Balinese -********************************************************************** - -graph ;...;;/ - ;...; -digit ;...; - -********************************************************************** -* 0x1B80 - 0x1BBF Sundanese -********************************************************************** - -graph ;...; -digit ;...; - -********************************************************************** -* 0x1BC0 - 0x1BFF Batak -********************************************************************** - -graph ;...;;/ - ;...; - -********************************************************************** -* 0x1C00 - 0x1C4F Lepcha -********************************************************************** - -graph ;...;;/ - ;...;;/ - ;...; -digit ;...; - -********************************************************************** -* 0x1C50 - 0x1C7F Ol Chiki -********************************************************************** - -graph ;...; -digit ;...; - -********************************************************************** -* 0x1CC0 - 0x1CCF Sundanese Supplement -********************************************************************** - -graph ;...;/ - - -********************************************************************** -* 0x1CD0 - 0x1CFF Vedic Extensions -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1DC0 - 0x1DFF Combining Diacritical Marks Supplement -********************************************************************** - -graph ;...;;/ - ;...;/ - - -********************************************************************** -* 0x2000 - 0x206F General Punctuation -********************************************************************** - -space ;...;;/ - ;...; -punct ;...;;/ - ;...; - -********************************************************************** -* 0x2070 - 0x209F Superscripts and Subscripts -********************************************************************** - -graph ;...; -digit -digit ;...; -digit ;...; -punct ;...; -punct ;...; -lower ;/ - ;/ - ;...; - -********************************************************************** -* 0x20A0 - 0x20CF Currency Symbols -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x20D0 - 0x20FF Combining Diacritical Marks for Symbols -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x2100 - 0x214F Letterlike Symbols -********************************************************************** - -graph ;...; -punct ;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - -upper ;; -lower -alpha ;/ - ;/ - ;...;;/ - ;/ - ;...;;/ - ;/ - ;/ - ;/ - ;...;;/ - ;...;;/ - ;/ - ;...;;/ - ;...; -tolower (,);/ - (,);/ - (,) -toupper (,) - -********************************************************************** -* 0x2150 - 0x218F Number Forms (differential) -********************************************************************** - -number ;...;;/ - - -********************************************************************** -* 0x2190 - 0x21FF Arrows -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2200 - 0x22FF Mathematical Operators -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2300 - 0x23FF Miscellaneous Technical -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2400 - 0x243F Control Pictures -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2440 - 0x245F Optical Character Recognition -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2460 - 0x24FF Enclosed Alphanumerics -********************************************************************** - -graph ;...; -digit ;...; -digit ;...; -digit ;...; -digit -digit ;...; -digit -xdigit ;...; -xdigit ;...; -number ;...; -number ;...; -number ;...; -number ;...; -number -lower ;...; -upper ;...; -lower ;...; -toupper (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) - -********************************************************************** -* 0x2500 - 0x257F Box Drawing -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2580 - 0x259F Block Elements -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x25A0 - 0x25FF Geometric Shapes -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2600 - 0x26FF Miscellaneous symbols -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2700 - 0x27BF Dingbats -********************************************************************** - -graph ;...; -digit ;...; -number -digit ;...; -number -digit ;...; -number -punct ;...;;/ - ;...; - -********************************************************************** -* 0x27C0 - 0x27EF Miscellaneous Mathematical Symbols-A -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x27F0 - 0x27FF Supplemental Arrows-A -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2800 - 0x28FF Braille Patterns -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2900 - 0x297F Supplemental Arrows-B -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2980 - 0x29FF Miscellaneouis Mathematical Symbols-B -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2A00 - 0x2AFF Supplemental Mathematical Operators -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2B00 - 0x2BFF Miscellaneous Symbols and Arrows -********************************************************************** - -graph ;...;;/ - ;...;/ - ;/ - ;...;/ - ;/ - ;...; -punct ;...;;/ - ;...;/ - ;/ - ;...;/ - ;/ - ;...; - -********************************************************************** -* 0x2C00 - 0x2C5F Glagolitic -********************************************************************** - -graph ;...;/ - ;/ - ;...;/ - - -********************************************************************** -* 0x2C80 - 0x2CFF Coptic -********************************************************************** - -graph ;...;;/ - ;...; -number - -********************************************************************** -* 0x2E00 - 0x2E7F Supplemental Punctuation -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2E80 - 0x2EFF CJK Radicals Supplement -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2F00 - 0x2FDF Kangxi Radicals -********************************************************************** - -punct ;...; - -********************************************************************** -* 0x2FF0 - 0x2FFF Ideographic Description Characters -********************************************************************** - -punct ;...;/ - - -********************************************************************** -* 0x3000 - 0x30FF CJK Symbols and Punctuation -********************************************************************** - -space -graph ;...; -number ;/ - ;...;;/ - ;...; -alpha ;/ - ;/ - -punct ;...;;/ - ;...;;/ - ;...;/ - ;/ - ;...; - -********************************************************************** -* 0x3100 - 0x312F Bopomofo -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x3190 - 0x319F Kanbun -********************************************************************** - -graph ;...;/ - -number ;...;/ - -punct ;/ - ;/ - ;...;/ - - -********************************************************************** -* 0x31A0 - 0x31BF : Bopomofo Extended -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x31C0 - 0x31EF : CJK Strokes -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x4DC0 - 0x4DFF Yijing Hexagram Symbols -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xA4D0 - 0xA4FF Lisu -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xA6A0 - 0xA6FF Bamum -********************************************************************** - -graph ;...; -number ;...; - -********************************************************************** -* 0xA700 - 0xA71F Modifier Tone Letters -********************************************************************** - -graph ;...;/ - - -********************************************************************** -* 0xA800 - 0xA82F Syloti Nagri -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xA830 - 0x083F Common Indic Number Forms -********************************************************************** - -number ;...; -graph ;...; - -********************************************************************** -* 0xA840 - 0xA87F Phags-pa -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xA880 - 0xA8DF Saurashra -********************************************************************** - -graph ;...;;/ - ;/ - -digit ;...; - -********************************************************************** -* 0xA900 - 0xA92F Kayah Li -********************************************************************** - -digit ;...; -graph ;...; - -********************************************************************** -* 0xA930 - 0xA95F Rejang -********************************************************************** - -graph ;...;;/ - - -********************************************************************** -* 0xA980 - 0xA9DF Javanese -********************************************************************** - -graph ;...;;/ - ;/ - ;/ - -digit ;...; - -********************************************************************** -* 0xAA00 - 0xAA5F Cham -********************************************************************** - -graph ;...;;/ - ;...;;/ - ;...; -digit ;...; - -********************************************************************** -* 0xAA80 - 0xAADF Tal Viet -********************************************************************** - -graph ;...;;/ - ;...; - -********************************************************************** -* 0xAAE0 - 0xAAFF Meetei Mayek Extensions -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xABC0 - 0xABFF Meetei Mayek -********************************************************************** - -graph ;...; -digit ;...; - -********************************************************************** -* 0xE000 - 0xF8FF Private Use Area (from pre-CLDR data) -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xFB50 - 0xFDFF Arabic Presentation Forms (differential) -********************************************************************** - -punct ;/ - - -********************************************************************** -* 0xFE10 - 0xFE1F Vertical Forms -********************************************************************** - -graph ;...;/ - - -********************************************************************** -* 0xFE20 - 0xFE2F Combining Half Marks -********************************************************************** - -graph ;...; - -********************************************************************** -* 0xFE30 - 0xFE4F CJK Compatibility Forms -********************************************************************** - -punct ;...; - -********************************************************************** -* 0xFE50 - 0xFE6F Small Form Variants -********************************************************************** - -punct ;...; - -********************************************************************** -* 0xFE70 - 0xFEFF Arabic Presentation Forms-B (differential) -********************************************************************** - -blank - -********************************************************************** -* 0xFF00 - 0xFFFF Half- and Fullwidth Punctuation (from pre-CLDR data) -********************************************************************** - -punct ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...;;/ - ;...; - -********************************************************************** -* 0x10300 - 0x1032F Old Italic -********************************************************************** - -graph ;...; -number ;...; - -********************************************************************** -* 0x10330 - 0x1034F Gothic -********************************************************************** - -graph ;...; -number - -********************************************************************** -* 0x1D100 - 0x1D1FF Musical Symbols -********************************************************************** - -punct ;...;;/ - ;...;;/ - -cntrl ;...; -graph ;...; - -********************************************************************** -* 0x1D400 - 0x1D7FF Mathematical Alphanumeric Symbols -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1F600 - 0x1F64F Emoticons (Emoji) -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1F680 - 0x1F6FF Transport and Map Symbols -********************************************************************** - -graph ;...; - -********************************************************************** -* 0x1F700 - 0x1F77F Alchemical Symbols -********************************************************************** - -graph ;...;/ - - -********************************************************************** -* 0x1F800 - 0x1F8FF Supplemental Arrows-C -********************************************************************** - -graph ;...;/ - - -********************************************************************** -* 0x20000 - 0x2A6D6 CJK Unified Ideographs Extension B -********************************************************************** - -alpha ;...; - -********************************************************************** -* 0x2A700 - 0x2B734 CJK Unified Ideographs Extension C -********************************************************************** - -alpha ;...; - -********************************************************************** -* 0x2B740 - 0x2B81D CJK Unified Ideographs Extension D -********************************************************************** - -alpha ;...; - -END LC_CTYPE Property changes on: stable/12/share/ctypedef/en_US.UTF-8.src ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Index: stable/12/share/ctypedef/C.UTF-8.src =================================================================== --- stable/12/share/ctypedef/C.UTF-8.src (nonexistent) +++ stable/12/share/ctypedef/C.UTF-8.src (revision 341627) @@ -0,0 +1,6372 @@ +# Warning: Do not edit. This file is automatically generated from the +# tools in /usr/src/tools/tools/locale. The data is obtained from the +# CLDR project, obtained from http://cldr.unicode.org/ +# ----------------------------------------------------------------------------- + +comment_char * +escape_char / + +LC_CTYPE + +********************************************************************** +* 0x0000 - 0x007F Basic Latin +* 0x0080 - 0x00FF Latin-1 Supplement +* 0x0100 - 0x017F Latin Extended-A +* 0x0180 - 0x024F Latin Extended-B +* 0x0250 - 0x02AF IPA Extensions +* 0x1D00 - 0x1D7F Phonetic Extensions +* 0x1D80 - 0x1DBF Phonetic Extensions Supplement +* 0x1E00 - 0x1EFF Latin Extended Additional +* 0x2150 - 0x218F Number Forms (partial - Roman Numerals) +* 0x2C60 - 0x2C7F Latin Extended-C +* 0xA720 - 0xA7FF Latin Extended-D +* 0xAB30 - 0xAB6F Latin Extended-E +* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) +* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) +********************************************************************** +upper ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...; +lower ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +alpha ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...; +space ;...;;/ + +cntrl ;...;;/ + +graph ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + +digit ;...; +xdigit ;...;;/ + ;...;;/ + ;...; +blank ;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (

,

);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (

,

);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x0370 - 0x03FF Greek (No Coptic!) +* 0x1F00 - 0x1FFF Greek Extended +********************************************************************** +upper ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + +lower ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + +graph ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x0400 - 0x04FF Cyrillic +* 0x0500 - 0x052F Cyrillic Supplementary +* 0x2DE0 - 0x2DFF Cyrillic Extended-A +* 0xA640 - 0xA69F Cyrillic Extended-B +********************************************************************** +upper ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +lower ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...; +alpha ;...;;/ + ;/ + ;...;;/ + ;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +punct ;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x0530 - 0x058F Armenian +* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) +********************************************************************** +upper ;...;;/ + ;...; +lower ;...;;/ + ;...;;/ + ;...; +alpha +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...; +punct ;...;;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x0590 - 0x05FF Hebrew +* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial) +********************************************************************** +alpha ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...; +punct ;/ + ;/ + ;/ + ;/ + ;/ + + +********************************************************************** +* 0x0600 - 0x06FF Arabic +* 0x0750 - 0x074F Arabic Supplement +* 0x08A0 - 0x08FF Arabic Extended-A +* 0xFB50 - 0xFDFF Arabic Presentation Forms (partial) +* 0xFE70 - 0xFEFF Arabic Presentation Forms-B (partial) +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;/ + ;/ + ;/ + ;/ + ;...;;/ + + +********************************************************************** +* 0x0900 - 0x097F Devanagari +* 0xA8E0 - 0xA8FF Devanagari Extended +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;/ + ;...;;/ + + +********************************************************************** +* 0x0900 - 0x097F Bengali +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...; +punct + +********************************************************************** +* 0x0A00 - 0x0A7F Gurmukhi +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...; +graph ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;...; + +********************************************************************** +* 0x0A80 - 0x0AFF Gujarati +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...; +punct + +********************************************************************** +* 0x0B00 - 0x0B7F Oriya +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + +graph ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x0B80 - 0x0BFF Tamil +********************************************************************** +alpha ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +graph ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...; + +********************************************************************** +* 0x0C00 - 0x0C7F Telugu +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x0C80 - 0x0CFF Kannada +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + + +********************************************************************** +* 0x0D00 - 0x0D7F Malayalam +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x0D80 - 0x0DFF Sinhala +********************************************************************** +alpha ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + +graph ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...; +punct + +********************************************************************** +* 0x0E00 - 0x0E7F Thai +********************************************************************** +alpha ;...;;/ + ;...;;/ + +graph ;...;;/ + ;...; +punct ;/ + ;/ + + +********************************************************************** +* 0x0E80 - 0x0EFF Lao +********************************************************************** +alpha ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...; +graph ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x0F00 - 0x0FFF Tibetan +********************************************************************** +alpha ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + +punct ;...;;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + + +********************************************************************** +* 0x1000 - 0x109F Myanmar +* 0xA9E0 - 0xA9FF Myanmar Extended-B +* 0xAA60 - 0xAA7F Myanmar Extended-A +********************************************************************** +alpha ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;...; + +********************************************************************** +* 0x10A0 - 0x10FF Georgia +* 0x2D00 - 0x2D2F Georgian Supplement +********************************************************************** +upper ;...;;/ + ;...;;/ + ;/ + +lower ;...;;/ + ;/ + +alpha ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x1100 - 0x11FF Hangul Jamo +* 0x3000 - 0x30FF CJK Symbols and Punctuation (partial) +* 0x3040 - 0x309F Hiragana +* 0x30A0 - 0x30FF Katakana +* 0x31F0 - 0x31FF Katakana Phonetic Extensions +* 0x3130 - 0x318F Hangul Compatibility Jamo (partial) +* 0x3200 - 0x32FF Enclosed CJK Letters and Months (partial) +* 0x3300 - 0x33FF CJK Compatibility +* 0x3400 - 0x4DB5 CJK Unified Ideographs Extension-A (added) +* 0x4E00 - 0x9FCC CJK Unified Ideographs (overridden) +* 0xAC00 - 0xA7A3 Hangul Syllables (partial) +* 0xD7B0 - 0xD7FF Hangul Jamo Extended-B +* 0xF900 - 0xFAFF CJK Compatibility Ideographs (partial) +* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) +********************************************************************** +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x1200 - 0x137F Ethiopic +* 0x1380 - 0x139F Ethiopic Supplement +* 0x2D80 - 0x2DDF Ethiopic Extended +* 0xAB00 - 0xAB2F Ethiopic Extended-A +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;...; + +********************************************************************** +* 0x13A0 - 0x13FF Cherokee +********************************************************************** +upper ;...;;/ + ;...; +lower ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x1780 - 0x17FF Khmer +* 0x19E0 - 0x19FF Khmer Symbols +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;...;;/ + ;...; + +********************************************************************** +* 0x2D30 - 0x2D2F Tifinagh +********************************************************************** +alpha ;...;;/ + ;...;;/ + +graph ;...;;/ + ;...;;/ + ;/ + ;/ + +punct + +********************************************************************** +* 0xA000 - 0xA48F Yi Syllables +* 0xA490 - 0xA4CF Yi Radicals +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0xA500 - 0xA63F Vai +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +punct ;...; + +********************************************************************** +* 0x3130 - 0x318F Hangul Compatibility Jamo (partial) +* 0xA960 - 0xA97F Hangul Jamo Extended-A +* 0xAC00 - 0xA7A3 Hangul Syllables (partial) +* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial) +********************************************************************** + +******* REMAINING DEFINITIONS ARE MANUALLY ASSEMBLED ******* + +blank +digit ;; +punct ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...; +number ;...; +cntrl ;...; +graph ;...; + +punct ; +graph ; + +********************************************************************** +* Complete set of "special" characters +********************************************************************** + +special ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...; + +********************************************************************** +* Supplement generated sections with "number" classification +********************************************************************** + +digit ;...; +digit ;...; +digit ;...; +digit ;...; +number ;...; +digit ;...; +digit ;...; +digit ;...; +digit ;...; +number ;...; +digit ;...; +number ;...; +digit ;...; +digit ;...; +number ;...; +digit ;...; +digit ;...; +digit ;...; +number ;...; +digit ;...; +digit ;...; +digit ;...; +number ;...; +digit ;...; +number ;...; +digit ;...; +number ;...; +number ;...; +number ;...; +number ;...; +number ;...; +number ;...; +number ;...; +number ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +number ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +digit ;...; + +********************************************************************** +* 0x02B0 - 0x02FF Spacing Modification Letters +********************************************************************** + +graph ;...; +punct ;...;;/ + ;...;;/ + ;...;/ + +lower ;...;;/ + ;/ + ;/ + ;...;/ + + +********************************************************************** +* 0x0300 - 0x036F Combining Diacritical Marks +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x0300 - 0x0370 Coptic (Automatic section skips it) +********************************************************************** + +graph ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +upper ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +lower ;/ + ;/ + ;/ + ;/ + ;/ + ;/ + +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x0700 - 0x074F Syriac +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x0780 - 0x07BF Thaana +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x07C0 - 0x07FF Nko +********************************************************************** + +digit ;...; +graph ;...; + +********************************************************************** +* 0x0800 - 0x083F Samaritan +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x0840 - 0x085F Mandaic +********************************************************************** + +graph ;...;;/ + + +********************************************************************** +* 0x1400 - 0x167F Unified Canadian Aboriginal Syllabics +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1680 - 0x169F Ogham +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x16A0 - 0x16FF Runic +********************************************************************** + +graph ;...; +number ;...; + +********************************************************************** +* 0x1700 - 0x171F Tagalog +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1720 - 0x173F Hanunoo +********************************************************************** + +graph ;...; + +*********************************************************************** +* 0x1740 - 0x175F Buhid +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1760 - 0x177F Tagbanwa +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1800 - 0x18AF Mongolian +********************************************************************** + +graph ;...;;/ + ;...;;/ + ;...;/ + +digit ;...; + +********************************************************************** +* 0x18B0 - 0x18FF Unified CA Aboriginal Syllabics Extended +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1900 - 0x194F Limbu +********************************************************************** + +graph ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + +digit ;...; + +********************************************************************** +* 0x1950 - 0x197F Tai Le +********************************************************************** + +graph ;...;;/ + ;...; + +********************************************************************** +* 0x1980 - 0x19DF New Tai Le +********************************************************************** + +graph ;...;;/ + ;...;/ + ;/ + ;/ + +digit ;...; + +********************************************************************** +* 0x1A00 - 0x1A1F Buginese +********************************************************************** + +graph ;...;;/ + ;/ + + +********************************************************************** +* 0x1A20 - 0x1AAF Tai Tham +********************************************************************** + +graph ;...;;/ + ;...;;/ + ;/ + ;...; +digit ;...;;/ + ;...; + +********************************************************************** +* 0x1AB0 - 0x1AFF Combining Diacritical Marks Extended +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1B00 - 0x1B7F Balinese +********************************************************************** + +graph ;...;;/ + ;...; +digit ;...; + +********************************************************************** +* 0x1B80 - 0x1BBF Sundanese +********************************************************************** + +graph ;...; +digit ;...; + +********************************************************************** +* 0x1BC0 - 0x1BFF Batak +********************************************************************** + +graph ;...;;/ + ;...; + +********************************************************************** +* 0x1C00 - 0x1C4F Lepcha +********************************************************************** + +graph ;...;;/ + ;...;;/ + ;...; +digit ;...; + +********************************************************************** +* 0x1C50 - 0x1C7F Ol Chiki +********************************************************************** + +graph ;...; +digit ;...; + +********************************************************************** +* 0x1CC0 - 0x1CCF Sundanese Supplement +********************************************************************** + +graph ;...;/ + + +********************************************************************** +* 0x1CD0 - 0x1CFF Vedic Extensions +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1DC0 - 0x1DFF Combining Diacritical Marks Supplement +********************************************************************** + +graph ;...;;/ + ;...;/ + + +********************************************************************** +* 0x2000 - 0x206F General Punctuation +********************************************************************** + +space ;...;;/ + ;...; +punct ;...;;/ + ;...; + +********************************************************************** +* 0x2070 - 0x209F Superscripts and Subscripts +********************************************************************** + +graph ;...; +digit +digit ;...; +digit ;...; +punct ;...; +punct ;...; +lower ;/ + ;/ + ;...; + +********************************************************************** +* 0x20A0 - 0x20CF Currency Symbols +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x20D0 - 0x20FF Combining Diacritical Marks for Symbols +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x2100 - 0x214F Letterlike Symbols +********************************************************************** + +graph ;...; +punct ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + +upper ;; +lower +alpha ;/ + ;/ + ;...;;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...; +tolower (,);/ + (,);/ + (,) +toupper (,) + +********************************************************************** +* 0x2150 - 0x218F Number Forms (differential) +********************************************************************** + +number ;...;;/ + + +********************************************************************** +* 0x2190 - 0x21FF Arrows +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2200 - 0x22FF Mathematical Operators +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2300 - 0x23FF Miscellaneous Technical +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2400 - 0x243F Control Pictures +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2440 - 0x245F Optical Character Recognition +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2460 - 0x24FF Enclosed Alphanumerics +********************************************************************** + +graph ;...; +digit ;...; +digit ;...; +digit ;...; +digit +digit ;...; +digit +xdigit ;...; +xdigit ;...; +number ;...; +number ;...; +number ;...; +number ;...; +number +lower ;...; +upper ;...; +lower ;...; +toupper (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) +tolower (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,);/ + (,) + +********************************************************************** +* 0x2500 - 0x257F Box Drawing +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2580 - 0x259F Block Elements +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x25A0 - 0x25FF Geometric Shapes +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2600 - 0x26FF Miscellaneous symbols +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2700 - 0x27BF Dingbats +********************************************************************** + +graph ;...; +digit ;...; +number +digit ;...; +number +digit ;...; +number +punct ;...;;/ + ;...; + +********************************************************************** +* 0x27C0 - 0x27EF Miscellaneous Mathematical Symbols-A +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x27F0 - 0x27FF Supplemental Arrows-A +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2800 - 0x28FF Braille Patterns +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2900 - 0x297F Supplemental Arrows-B +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2980 - 0x29FF Miscellaneouis Mathematical Symbols-B +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2A00 - 0x2AFF Supplemental Mathematical Operators +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2B00 - 0x2BFF Miscellaneous Symbols and Arrows +********************************************************************** + +graph ;...;;/ + ;...;/ + ;/ + ;...;/ + ;/ + ;...; +punct ;...;;/ + ;...;/ + ;/ + ;...;/ + ;/ + ;...; + +********************************************************************** +* 0x2C00 - 0x2C5F Glagolitic +********************************************************************** + +graph ;...;/ + ;/ + ;...;/ + + +********************************************************************** +* 0x2C80 - 0x2CFF Coptic +********************************************************************** + +graph ;...;;/ + ;...; +number + +********************************************************************** +* 0x2E00 - 0x2E7F Supplemental Punctuation +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2E80 - 0x2EFF CJK Radicals Supplement +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2F00 - 0x2FDF Kangxi Radicals +********************************************************************** + +punct ;...; + +********************************************************************** +* 0x2FF0 - 0x2FFF Ideographic Description Characters +********************************************************************** + +punct ;...;/ + + +********************************************************************** +* 0x3000 - 0x30FF CJK Symbols and Punctuation +********************************************************************** + +space +graph ;...; +number ;/ + ;...;;/ + ;...; +alpha ;/ + ;/ + +punct ;...;;/ + ;...;;/ + ;...;/ + ;/ + ;...; + +********************************************************************** +* 0x3100 - 0x312F Bopomofo +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x3190 - 0x319F Kanbun +********************************************************************** + +graph ;...;/ + +number ;...;/ + +punct ;/ + ;/ + ;...;/ + + +********************************************************************** +* 0x31A0 - 0x31BF : Bopomofo Extended +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x31C0 - 0x31EF : CJK Strokes +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x4DC0 - 0x4DFF Yijing Hexagram Symbols +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xA4D0 - 0xA4FF Lisu +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xA6A0 - 0xA6FF Bamum +********************************************************************** + +graph ;...; +number ;...; + +********************************************************************** +* 0xA700 - 0xA71F Modifier Tone Letters +********************************************************************** + +graph ;...;/ + + +********************************************************************** +* 0xA800 - 0xA82F Syloti Nagri +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xA830 - 0x083F Common Indic Number Forms +********************************************************************** + +number ;...; +graph ;...; + +********************************************************************** +* 0xA840 - 0xA87F Phags-pa +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xA880 - 0xA8DF Saurashra +********************************************************************** + +graph ;...;;/ + ;/ + +digit ;...; + +********************************************************************** +* 0xA900 - 0xA92F Kayah Li +********************************************************************** + +digit ;...; +graph ;...; + +********************************************************************** +* 0xA930 - 0xA95F Rejang +********************************************************************** + +graph ;...;;/ + + +********************************************************************** +* 0xA980 - 0xA9DF Javanese +********************************************************************** + +graph ;...;;/ + ;/ + ;/ + +digit ;...; + +********************************************************************** +* 0xAA00 - 0xAA5F Cham +********************************************************************** + +graph ;...;;/ + ;...;;/ + ;...; +digit ;...; + +********************************************************************** +* 0xAA80 - 0xAADF Tal Viet +********************************************************************** + +graph ;...;;/ + ;...; + +********************************************************************** +* 0xAAE0 - 0xAAFF Meetei Mayek Extensions +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xABC0 - 0xABFF Meetei Mayek +********************************************************************** + +graph ;...; +digit ;...; + +********************************************************************** +* 0xE000 - 0xF8FF Private Use Area (from pre-CLDR data) +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xFB50 - 0xFDFF Arabic Presentation Forms (differential) +********************************************************************** + +punct ;/ + + +********************************************************************** +* 0xFE10 - 0xFE1F Vertical Forms +********************************************************************** + +graph ;...;/ + + +********************************************************************** +* 0xFE20 - 0xFE2F Combining Half Marks +********************************************************************** + +graph ;...; + +********************************************************************** +* 0xFE30 - 0xFE4F CJK Compatibility Forms +********************************************************************** + +punct ;...; + +********************************************************************** +* 0xFE50 - 0xFE6F Small Form Variants +********************************************************************** + +punct ;...; + +********************************************************************** +* 0xFE70 - 0xFEFF Arabic Presentation Forms-B (differential) +********************************************************************** + +blank + +********************************************************************** +* 0xFF00 - 0xFFFF Half- and Fullwidth Punctuation (from pre-CLDR data) +********************************************************************** + +punct ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +********************************************************************** +* 0x10300 - 0x1032F Old Italic +********************************************************************** + +graph ;...; +number ;...; + +********************************************************************** +* 0x10330 - 0x1034F Gothic +********************************************************************** + +graph ;...; +number + +********************************************************************** +* 0x1D100 - 0x1D1FF Musical Symbols +********************************************************************** + +punct ;...;;/ + ;...;;/ + +cntrl ;...; +graph ;...; + +********************************************************************** +* 0x1D400 - 0x1D7FF Mathematical Alphanumeric Symbols +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1F600 - 0x1F64F Emoticons (Emoji) +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1F680 - 0x1F6FF Transport and Map Symbols +********************************************************************** + +graph ;...; + +********************************************************************** +* 0x1F700 - 0x1F77F Alchemical Symbols +********************************************************************** + +graph ;...;/ + + +********************************************************************** +* 0x1F800 - 0x1F8FF Supplemental Arrows-C +********************************************************************** + +graph ;...;/ + + +********************************************************************** +* 0x20000 - 0x2A6D6 CJK Unified Ideographs Extension B +********************************************************************** + +alpha ;...; + +********************************************************************** +* 0x2A700 - 0x2B734 CJK Unified Ideographs Extension C +********************************************************************** + +alpha ;...; + +********************************************************************** +* 0x2B740 - 0x2B81D CJK Unified Ideographs Extension D +********************************************************************** + +alpha ;...; + +END LC_CTYPE Property changes on: stable/12/share/ctypedef/C.UTF-8.src ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Index: stable/12/share/ctypedef/Makefile =================================================================== --- stable/12/share/ctypedef/Makefile (revision 341626) +++ stable/12/share/ctypedef/Makefile (revision 341627) @@ -1,248 +1,249 @@ # $FreeBSD$ # Warning: Do not edit. This file is automatically generated from the # tools in /usr/src/tools/tools/locale. LOCALEDIR= ${SHAREDIR}/locale FILESNAME= LC_CTYPE .SUFFIXES: .src .LC_CTYPE MAPLOC= ${.CURDIR}/../../tools/tools/locale/etc/final-maps .include .src.LC_CTYPE: localedef ${LOCALEDEF_ENDIAN} -D -U -c -w ${MAPLOC}/widths.txt \ -f ${MAPLOC}/map.${.IMPSRC:T:R:E} \ -i ${.IMPSRC} ${.OBJDIR}/${.IMPSRC:T:R} || true +LOCALES+= C.UTF-8 LOCALES+= be_BY.CP1131 LOCALES+= ca_IT.ISO8859-1 LOCALES+= ca_IT.ISO8859-15 LOCALES+= el_GR.ISO8859-7 LOCALES+= en_US.ISO8859-1 LOCALES+= en_US.ISO8859-15 LOCALES+= en_US.US-ASCII -LOCALES+= en_US.UTF-8 LOCALES+= hi_IN.ISCII-DEV LOCALES+= hy_AM.ARMSCII-8 LOCALES+= ja_JP.SJIS LOCALES+= ja_JP.eucJP LOCALES+= ko_KR.eucKR LOCALES+= lv_LV.ISO8859-13 LOCALES+= ru_RU.CP1251 LOCALES+= ru_RU.CP866 LOCALES+= ru_RU.ISO8859-5 LOCALES+= ru_RU.KOI8-R LOCALES+= sr_RS.ISO8859-2 LOCALES+= tr_TR.ISO8859-9 LOCALES+= uk_UA.CP1251 LOCALES+= uk_UA.ISO8859-5 LOCALES+= uk_UA.KOI8-U LOCALES+= zh_CN.GB18030 LOCALES+= zh_CN.GB2312 LOCALES+= zh_CN.GBK LOCALES+= zh_CN.eucCN LOCALES+= zh_TW.Big5 -SAME+= en_US.UTF-8 ru_RU.UTF-8 -SAME+= en_US.UTF-8 zh_TW.UTF-8 -SAME+= en_US.UTF-8 zh_HK.UTF-8 -SAME+= en_US.UTF-8 zh_CN.UTF-8 -SAME+= en_US.UTF-8 uk_UA.UTF-8 -SAME+= en_US.UTF-8 tr_TR.UTF-8 -SAME+= en_US.UTF-8 sv_SE.UTF-8 -SAME+= en_US.UTF-8 sv_FI.UTF-8 -SAME+= en_US.UTF-8 sr_RS.UTF-8@latin -SAME+= en_US.UTF-8 sr_RS.UTF-8 -SAME+= en_US.UTF-8 sl_SI.UTF-8 -SAME+= en_US.UTF-8 sk_SK.UTF-8 -SAME+= en_US.UTF-8 se_NO.UTF-8 -SAME+= en_US.UTF-8 se_FI.UTF-8 -SAME+= en_US.UTF-8 ro_RO.UTF-8 -SAME+= en_US.UTF-8 pt_PT.UTF-8 -SAME+= en_US.UTF-8 pt_BR.UTF-8 -SAME+= en_US.UTF-8 pl_PL.UTF-8 -SAME+= en_US.UTF-8 nn_NO.UTF-8 -SAME+= en_US.UTF-8 nl_NL.UTF-8 -SAME+= en_US.UTF-8 nl_BE.UTF-8 -SAME+= en_US.UTF-8 nb_NO.UTF-8 -SAME+= en_US.UTF-8 mn_MN.UTF-8 -SAME+= en_US.UTF-8 lv_LV.UTF-8 -SAME+= en_US.UTF-8 lt_LT.UTF-8 -SAME+= en_US.UTF-8 ko_KR.UTF-8 -SAME+= en_US.UTF-8 kk_KZ.UTF-8 -SAME+= en_US.UTF-8 ja_JP.UTF-8 -SAME+= en_US.UTF-8 it_IT.UTF-8 -SAME+= en_US.UTF-8 it_CH.UTF-8 -SAME+= en_US.UTF-8 is_IS.UTF-8 -SAME+= en_US.UTF-8 hy_AM.UTF-8 -SAME+= en_US.UTF-8 hu_HU.UTF-8 -SAME+= en_US.UTF-8 hr_HR.UTF-8 -SAME+= en_US.UTF-8 hi_IN.UTF-8 -SAME+= en_US.UTF-8 he_IL.UTF-8 -SAME+= en_US.UTF-8 fr_FR.UTF-8 -SAME+= en_US.UTF-8 fr_CH.UTF-8 -SAME+= en_US.UTF-8 fr_CA.UTF-8 -SAME+= en_US.UTF-8 fr_BE.UTF-8 -SAME+= en_US.UTF-8 fi_FI.UTF-8 -SAME+= en_US.UTF-8 eu_ES.UTF-8 -SAME+= en_US.UTF-8 et_EE.UTF-8 -SAME+= en_US.UTF-8 es_MX.UTF-8 -SAME+= en_US.UTF-8 es_ES.UTF-8 -SAME+= en_US.UTF-8 es_CR.UTF-8 -SAME+= en_US.UTF-8 es_AR.UTF-8 -SAME+= en_US.UTF-8 en_ZA.UTF-8 -SAME+= en_US.UTF-8 en_SG.UTF-8 -SAME+= en_US.UTF-8 en_PH.UTF-8 -SAME+= en_US.UTF-8 en_NZ.UTF-8 -SAME+= en_US.UTF-8 en_IE.UTF-8 -SAME+= en_US.UTF-8 en_HK.UTF-8 -SAME+= en_US.UTF-8 en_GB.UTF-8 -SAME+= en_US.UTF-8 en_CA.UTF-8 -SAME+= en_US.UTF-8 en_AU.UTF-8 -SAME+= en_US.UTF-8 el_GR.UTF-8 -SAME+= en_US.UTF-8 de_DE.UTF-8 -SAME+= en_US.UTF-8 de_CH.UTF-8 -SAME+= en_US.UTF-8 de_AT.UTF-8 -SAME+= en_US.UTF-8 da_DK.UTF-8 -SAME+= en_US.UTF-8 cs_CZ.UTF-8 -SAME+= en_US.UTF-8 ca_IT.UTF-8 -SAME+= en_US.UTF-8 ca_FR.UTF-8 -SAME+= en_US.UTF-8 ca_ES.UTF-8 -SAME+= en_US.UTF-8 ca_AD.UTF-8 -SAME+= en_US.UTF-8 bg_BG.UTF-8 -SAME+= en_US.UTF-8 be_BY.UTF-8 -SAME+= en_US.UTF-8 ar_SA.UTF-8 -SAME+= en_US.UTF-8 ar_QA.UTF-8 -SAME+= en_US.UTF-8 ar_MA.UTF-8 -SAME+= en_US.UTF-8 ar_JO.UTF-8 -SAME+= en_US.UTF-8 ar_EG.UTF-8 -SAME+= en_US.UTF-8 ar_AE.UTF-8 -SAME+= en_US.UTF-8 am_ET.UTF-8 -SAME+= en_US.UTF-8 af_ZA.UTF-8 +SAME+= C.UTF-8 en_US.UTF-8 +SAME+= C.UTF-8 ru_RU.UTF-8 +SAME+= C.UTF-8 zh_TW.UTF-8 +SAME+= C.UTF-8 zh_HK.UTF-8 +SAME+= C.UTF-8 zh_CN.UTF-8 +SAME+= C.UTF-8 uk_UA.UTF-8 +SAME+= C.UTF-8 tr_TR.UTF-8 +SAME+= C.UTF-8 sv_SE.UTF-8 +SAME+= C.UTF-8 sv_FI.UTF-8 +SAME+= C.UTF-8 sr_RS.UTF-8@latin +SAME+= C.UTF-8 sr_RS.UTF-8 +SAME+= C.UTF-8 sl_SI.UTF-8 +SAME+= C.UTF-8 sk_SK.UTF-8 +SAME+= C.UTF-8 se_NO.UTF-8 +SAME+= C.UTF-8 se_FI.UTF-8 +SAME+= C.UTF-8 ro_RO.UTF-8 +SAME+= C.UTF-8 pt_PT.UTF-8 +SAME+= C.UTF-8 pt_BR.UTF-8 +SAME+= C.UTF-8 pl_PL.UTF-8 +SAME+= C.UTF-8 nn_NO.UTF-8 +SAME+= C.UTF-8 nl_NL.UTF-8 +SAME+= C.UTF-8 nl_BE.UTF-8 +SAME+= C.UTF-8 nb_NO.UTF-8 +SAME+= C.UTF-8 mn_MN.UTF-8 +SAME+= C.UTF-8 lv_LV.UTF-8 +SAME+= C.UTF-8 lt_LT.UTF-8 +SAME+= C.UTF-8 ko_KR.UTF-8 +SAME+= C.UTF-8 kk_KZ.UTF-8 +SAME+= C.UTF-8 ja_JP.UTF-8 +SAME+= C.UTF-8 it_IT.UTF-8 +SAME+= C.UTF-8 it_CH.UTF-8 +SAME+= C.UTF-8 is_IS.UTF-8 +SAME+= C.UTF-8 hy_AM.UTF-8 +SAME+= C.UTF-8 hu_HU.UTF-8 +SAME+= C.UTF-8 hr_HR.UTF-8 +SAME+= C.UTF-8 hi_IN.UTF-8 +SAME+= C.UTF-8 he_IL.UTF-8 +SAME+= C.UTF-8 fr_FR.UTF-8 +SAME+= C.UTF-8 fr_CH.UTF-8 +SAME+= C.UTF-8 fr_CA.UTF-8 +SAME+= C.UTF-8 fr_BE.UTF-8 +SAME+= C.UTF-8 fi_FI.UTF-8 +SAME+= C.UTF-8 eu_ES.UTF-8 +SAME+= C.UTF-8 et_EE.UTF-8 +SAME+= C.UTF-8 es_MX.UTF-8 +SAME+= C.UTF-8 es_ES.UTF-8 +SAME+= C.UTF-8 es_CR.UTF-8 +SAME+= C.UTF-8 es_AR.UTF-8 +SAME+= C.UTF-8 en_ZA.UTF-8 +SAME+= C.UTF-8 en_SG.UTF-8 +SAME+= C.UTF-8 en_PH.UTF-8 +SAME+= C.UTF-8 en_NZ.UTF-8 +SAME+= C.UTF-8 en_IE.UTF-8 +SAME+= C.UTF-8 en_HK.UTF-8 +SAME+= C.UTF-8 en_GB.UTF-8 +SAME+= C.UTF-8 en_CA.UTF-8 +SAME+= C.UTF-8 en_AU.UTF-8 +SAME+= C.UTF-8 el_GR.UTF-8 +SAME+= C.UTF-8 de_DE.UTF-8 +SAME+= C.UTF-8 de_CH.UTF-8 +SAME+= C.UTF-8 de_AT.UTF-8 +SAME+= C.UTF-8 da_DK.UTF-8 +SAME+= C.UTF-8 cs_CZ.UTF-8 +SAME+= C.UTF-8 ca_IT.UTF-8 +SAME+= C.UTF-8 ca_FR.UTF-8 +SAME+= C.UTF-8 ca_ES.UTF-8 +SAME+= C.UTF-8 ca_AD.UTF-8 +SAME+= C.UTF-8 bg_BG.UTF-8 +SAME+= C.UTF-8 be_BY.UTF-8 +SAME+= C.UTF-8 ar_SA.UTF-8 +SAME+= C.UTF-8 ar_QA.UTF-8 +SAME+= C.UTF-8 ar_MA.UTF-8 +SAME+= C.UTF-8 ar_JO.UTF-8 +SAME+= C.UTF-8 ar_EG.UTF-8 +SAME+= C.UTF-8 ar_AE.UTF-8 +SAME+= C.UTF-8 am_ET.UTF-8 +SAME+= C.UTF-8 af_ZA.UTF-8 SAME+= en_US.ISO8859-1 sv_SE.ISO8859-1 SAME+= en_US.ISO8859-1 sv_FI.ISO8859-1 SAME+= en_US.ISO8859-1 pt_PT.ISO8859-1 SAME+= en_US.ISO8859-1 pt_BR.ISO8859-1 SAME+= en_US.ISO8859-1 nn_NO.ISO8859-1 SAME+= en_US.ISO8859-1 nl_NL.ISO8859-1 SAME+= en_US.ISO8859-1 nl_BE.ISO8859-1 SAME+= en_US.ISO8859-1 nb_NO.ISO8859-1 SAME+= en_US.ISO8859-1 it_IT.ISO8859-1 SAME+= en_US.ISO8859-1 it_CH.ISO8859-1 SAME+= en_US.ISO8859-1 is_IS.ISO8859-1 SAME+= en_US.ISO8859-1 fr_FR.ISO8859-1 SAME+= en_US.ISO8859-1 fr_CH.ISO8859-1 SAME+= en_US.ISO8859-1 fr_CA.ISO8859-1 SAME+= en_US.ISO8859-1 fr_BE.ISO8859-1 SAME+= en_US.ISO8859-1 fi_FI.ISO8859-1 SAME+= en_US.ISO8859-1 eu_ES.ISO8859-1 SAME+= en_US.ISO8859-1 et_EE.ISO8859-1 SAME+= en_US.ISO8859-1 es_MX.ISO8859-1 SAME+= en_US.ISO8859-1 es_ES.ISO8859-1 SAME+= en_US.ISO8859-1 es_AR.ISO8859-1 SAME+= en_US.ISO8859-1 en_ZA.ISO8859-1 SAME+= en_US.ISO8859-1 en_SG.ISO8859-1 SAME+= en_US.ISO8859-1 en_NZ.ISO8859-1 SAME+= en_US.ISO8859-1 en_IE.ISO8859-1 SAME+= en_US.ISO8859-1 en_HK.ISO8859-1 SAME+= en_US.ISO8859-1 en_GB.ISO8859-1 SAME+= en_US.ISO8859-1 en_CA.ISO8859-1 SAME+= en_US.ISO8859-1 en_AU.ISO8859-1 SAME+= en_US.ISO8859-1 de_DE.ISO8859-1 SAME+= en_US.ISO8859-1 de_CH.ISO8859-1 SAME+= en_US.ISO8859-1 de_AT.ISO8859-1 SAME+= en_US.ISO8859-1 da_DK.ISO8859-1 SAME+= en_US.ISO8859-1 af_ZA.ISO8859-1 SAME+= en_US.ISO8859-15 en_GB.ISO8859-15 SAME+= en_US.ISO8859-15 sv_SE.ISO8859-15 SAME+= en_US.ISO8859-15 sv_FI.ISO8859-15 SAME+= en_US.ISO8859-15 pt_PT.ISO8859-15 SAME+= en_US.ISO8859-15 nn_NO.ISO8859-15 SAME+= en_US.ISO8859-15 nl_NL.ISO8859-15 SAME+= en_US.ISO8859-15 nl_BE.ISO8859-15 SAME+= en_US.ISO8859-15 nb_NO.ISO8859-15 SAME+= en_US.ISO8859-15 it_IT.ISO8859-15 SAME+= en_US.ISO8859-15 it_CH.ISO8859-15 SAME+= en_US.ISO8859-15 is_IS.ISO8859-15 SAME+= en_US.ISO8859-15 fr_FR.ISO8859-15 SAME+= en_US.ISO8859-15 fr_CH.ISO8859-15 SAME+= en_US.ISO8859-15 fr_CA.ISO8859-15 SAME+= en_US.ISO8859-15 fr_BE.ISO8859-15 SAME+= en_US.ISO8859-15 fi_FI.ISO8859-15 SAME+= en_US.ISO8859-15 eu_ES.ISO8859-15 SAME+= en_US.ISO8859-15 et_EE.ISO8859-15 SAME+= en_US.ISO8859-15 es_ES.ISO8859-15 SAME+= en_US.ISO8859-15 en_ZA.ISO8859-15 SAME+= en_US.ISO8859-15 en_NZ.ISO8859-15 SAME+= en_US.ISO8859-15 en_IE.ISO8859-15 SAME+= en_US.ISO8859-15 en_CA.ISO8859-15 SAME+= en_US.ISO8859-15 en_AU.ISO8859-15 SAME+= en_US.ISO8859-15 de_DE.ISO8859-15 SAME+= en_US.ISO8859-15 de_CH.ISO8859-15 SAME+= en_US.ISO8859-15 de_AT.ISO8859-15 SAME+= en_US.ISO8859-15 da_DK.ISO8859-15 SAME+= en_US.ISO8859-15 af_ZA.ISO8859-15 SAME+= ru_RU.CP1251 bg_BG.CP1251 SAME+= ru_RU.CP1251 be_BY.CP1251 SAME+= ru_RU.ISO8859-5 sr_RS.ISO8859-5 SAME+= ru_RU.ISO8859-5 be_BY.ISO8859-5 SAME+= ca_IT.ISO8859-1 ca_FR.ISO8859-1 SAME+= ca_IT.ISO8859-1 ca_ES.ISO8859-1 SAME+= ca_IT.ISO8859-1 ca_AD.ISO8859-1 SAME+= ca_IT.ISO8859-15 ca_FR.ISO8859-15 SAME+= ca_IT.ISO8859-15 ca_ES.ISO8859-15 SAME+= ca_IT.ISO8859-15 ca_AD.ISO8859-15 SAME+= sr_RS.ISO8859-2 sl_SI.ISO8859-2 SAME+= sr_RS.ISO8859-2 sk_SK.ISO8859-2 SAME+= sr_RS.ISO8859-2 ro_RO.ISO8859-2 SAME+= sr_RS.ISO8859-2 pl_PL.ISO8859-2 SAME+= sr_RS.ISO8859-2 hu_HU.ISO8859-2 SAME+= sr_RS.ISO8859-2 hr_HR.ISO8859-2 SAME+= sr_RS.ISO8859-2 cs_CZ.ISO8859-2 SAME+= en_US.US-ASCII en_ZA.US-ASCII SAME+= en_US.US-ASCII en_NZ.US-ASCII SAME+= en_US.US-ASCII en_GB.US-ASCII SAME+= en_US.US-ASCII en_CA.US-ASCII SAME+= en_US.US-ASCII en_AU.US-ASCII SAME+= lv_LV.ISO8859-13 lt_LT.ISO8859-13 SAME+= ko_KR.eucKR ko_KR.CP949 # legacy (same charset) FILES= ${LOCALES:S/$/.LC_CTYPE/} CLEANFILES= ${FILES} .for f t in ${SAME} SYMLINKS+= ../$f/${FILESNAME} \ ${LOCALEDIR}/$t/${FILESNAME} .endfor .for f in ${LOCALES} FILESDIR_${f}.LC_CTYPE= ${LOCALEDIR}/${f} .endfor SYMPAIRS+= zh_CN.eucCN.src zh_CN.GB18030.src SYMPAIRS+= zh_CN.eucCN.src zh_CN.GB2312.src SYMPAIRS+= zh_CN.eucCN.src zh_CN.GBK.src SYMPAIRS+= en_US.ISO8859-1.src en_US.ISO8859-15.src SYMPAIRS+= en_US.ISO8859-1.src en_US.US-ASCII.src SYMPAIRS+= en_US.ISO8859-1.src lv_LV.ISO8859-13.src SYMPAIRS+= en_US.ISO8859-1.src sr_RS.ISO8859-2.src SYMPAIRS+= en_US.ISO8859-1.src tr_TR.ISO8859-9.src SYMPAIRS+= ca_IT.ISO8859-1.src ca_IT.ISO8859-15.src SYMPAIRS+= uk_UA.CP1251.src uk_UA.ISO8859-5.src SYMPAIRS+= uk_UA.CP1251.src uk_UA.KOI8-U.src SYMPAIRS+= ja_JP.eucJP.src ja_JP.SJIS.src SYMPAIRS+= be_BY.CP1131.src ru_RU.CP1251.src SYMPAIRS+= be_BY.CP1131.src ru_RU.CP866.src SYMPAIRS+= be_BY.CP1131.src ru_RU.ISO8859-5.src SYMPAIRS+= be_BY.CP1131.src ru_RU.KOI8-R.src .for s t in ${SYMPAIRS} ${t:S/src$/LC_CTYPE/}: $s localedef ${LOCALEDEF_ENDIAN} -D -U -c -w ${MAPLOC}/widths.txt \ -f ${MAPLOC}/map.${.TARGET:T:R:C/^.*\.//} \ -i ${.ALLSRC} ${.OBJDIR}/${.TARGET:T:R} || true .endfor .include Index: stable/12/tools/tools/locale/Makefile =================================================================== --- stable/12/tools/tools/locale/Makefile (revision 341626) +++ stable/12/tools/tools/locale/Makefile (revision 341627) @@ -1,191 +1,191 @@ # $FreeBSD$ # See https://wiki.freebsd.org/LocaleNewApproach # Taken from FreeBSD svn [base]/user/edwin/locale/cldr # # needs: # devel/p5-Tie-IxHash # # Modified by John Marino to suit DragonFly needs # .OBJDIR: . .if !defined(CLDRDIR) CLDRDIR!= grep ^cldr etc/unicode.conf | cut -f 2 -d " " .endif .if !defined(UNIDATADIR) UNIDATADIR!= grep ^unidata etc/unicode.conf | cut -f 2 -d " " .endif PASSON= CLDRDIR="${CLDRDIR}" UNIDATADIR="${UNIDATADIR}" ETCDIR= ${.CURDIR}/etc KNOWN= monetdef numericdef msgdef colldef ctypedef # timedef TYPES?= ${KNOWN} LOCALE_DESTDIR?= /tmp/generated-locales/ COLLATION_SPECIAL?= \ cs_CZ ISO8859-2 \ da_DK ISO8859-1 \ da_DK ISO8859-15 \ hr_HR ISO8859-2 \ hu_HU ISO8859-2 \ nb_NO ISO8859-1 \ nb_NO ISO8859-15 \ sk_SK ISO8859-2 \ sr_Latn_RS ISO8859-2 \ sr_Cyrl_RS ISO8859-5 \ zh_Hans_CN GB2312 \ zh_Hans_CN eucCN \ zh_Hant_TW Big5 \ zh_Hans_CN GB18030 \ zh_Hans_CN GBK \ ja_JP eucJP \ nn_NO ISO8859-15 \ nn_NO ISO8859-1 .for area enc in ${COLLATION_SPECIAL} COLLATIONS_SPECIAL_ENV+= ${area}.${enc} .endfor PASSON+= COLLATIONS_SPECIAL="${COLLATIONS_SPECIAL_ENV}" .if defined(LC) LC:= --lc=${LC} .endif all: - cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.UTF-8.src + cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_C.UTF-8.src .for t in ${TYPES} . if ${KNOWN:M${t}} test -d ${t} || mkdir ${t} make build-${t} . endif .endfor @echo "" @find . -name *failed .for t in ${TYPES} install: install-${t} install-${t}: . if ${KNOWN:M${t}} rm -rf ${.CURDIR}/${t}.draft rm -rf ${.CURDIR}/../../../share/${t} mv ${.CURDIR}/${t} ${.CURDIR}/../../../share/${t} . endif .endfor post-install: .for t in ${TYPES} . if ${KNOWN:M${t}} (cd ${.CURDIR}/../../../share/${t} && \ make && make install && make clean) . endif .endfor .for t in ${TYPES} gen-${t}: mkdir -p ${t} ${t}.draft perl -I tools tools/cldr2def.pl \ --cldr=$$(realpath ${CLDRDIR}) \ --unidata=$$(realpath ${UNIDATADIR}) \ --etc=$$(realpath ${ETCDIR}) \ --type=${t} ${LC} build-${t}: gen-${t} env ${PASSON} tools/finalize ${t} .endfor gen-ctypedef: transfer-rollup static-colldef: gen-colldef build-colldef: static-colldef static-colldef: .for area enc in ${COLLATION_SPECIAL} awk -f tools/extract-colldef.awk ${CLDRDIR}/posix/${area}.${enc}.src > colldef.draft/${area}.${enc}.src .endfor transfer-rollup: - cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.UTF-8.src + cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_C.UTF-8.src rollup: perl -I tools tools/utf8-rollup.pl \ --cldr=$$(realpath ${CLDRDIR}) \ --etc=$$(realpath ${ETCDIR}) clean: .for t in ${TYPES} rm -rf ${t} ${t}.draft .endfor BASE_LOCALES_OF_INTEREST?= \ af_ZA am_ET ar_AE ar_EG ar_JO ar_MA ar_QA ar_SA \ be_BY bg_BG ca_AD ca_ES ca_FR ca_IT \ cs_CZ da_DK de_AT de_CH de_DE el_GR en_AU en_CA \ en_GB en_HK en_IE en_NZ en_PH en_SG en_US en_ZA \ es_AR es_CR es_ES es_MX et_EE eu_ES fi_FI fr_BE \ fr_CA fr_CH fr_FR he_IL hi_IN hr_HR hu_HU hy_AM \ is_IS it_CH it_IT ja_JP ko_KR lt_LT lv_LV \ nb_NO nl_BE nl_NL nn_NO pl_PL pt_BR pt_PT ro_RO \ ru_RU se_FI se_NO sk_SK sl_SI sv_FI sv_SE tr_TR \ uk_UA \ kk_KZ mn_MN sr_Cyrl_RS sr_Latn_RS \ zh_Hans_CN zh_Hant_HK zh_Hant_TW \ bn_IN gu_IN or_IN ta_IN te_IN kn_IN ml_IN si_LK \ th_TH lo_LA bo_IN my_MM pa_Guru_IN ka_GE chr_US \ km_KH shi_Tfng_MA ii_CN vai_Vaii_LR vi_VN ENCODINGS= Big5 \ CP1251 \ CP866 \ CP949 \ eucCN \ eucJP \ eucKR \ GB18030 \ GB2312 \ GBK \ ISO8859-1 \ ISO8859-13 \ ISO8859-15 \ ISO8859-2 \ ISO8859-5 \ ISO8859-7 \ ISO8859-9 \ KOI8-R \ KOI8-U \ SJIS \ US-ASCII \ UTF-8 \ POSIX: .if exists (${CLDRDIR}/tools/java/cldr.jar) mkdir -p ${CLDRDIR}/posix . for area in ${BASE_LOCALES_OF_INTEREST} . if !exists(${CLDRDIR}/posix/${area}.UTF-8.src) java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \ org.unicode.cldr.posix.GeneratePOSIX \ -d ${CLDRDIR}/posix -m ${area} -c UTF-8 . endif . endfor . for area encoding in ${COLLATION_SPECIAL} . if !exists(${CLDRDIR}/posix/${area}.${encoding}.src) java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \ org.unicode.cldr.posix.GeneratePOSIX \ -d ${CLDRDIR}/posix -m ${area} -c ${encoding} . endif . endfor . for enc in ${ENCODINGS} . if !exists(${CLDRDIR}/posix/${enc}.cm) java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \ org.unicode.cldr.posix.GenerateCharmap \ -d ${CLDRDIR}/posix -c ${enc} . endif . endfor .else @echo "Please install CLDR toolset for the desired release" @echo "It should go at ${CLDRDIR}/tools" .endif clean-POSIX: rm -f ${CLDRDIR}/posix/* Index: stable/12/tools/tools/locale/tools/cldr2def.pl =================================================================== --- stable/12/tools/tools/locale/tools/cldr2def.pl (revision 341626) +++ stable/12/tools/tools/locale/tools/cldr2def.pl (revision 341627) @@ -1,1038 +1,1041 @@ #!/usr/local/bin/perl -wC # $FreeBSD$ use strict; use File::Copy; use XML::Parser; use Tie::IxHash; use Text::Iconv; use Data::Dumper; use Getopt::Long; use Digest::SHA qw(sha1_hex); require "charmaps.pm"; if ($#ARGV < 2) { print "Usage: $0 --cldr= --unidata= --etc= --type= [--lc=]\n"; exit(1); } my $DEFENCODING = "UTF-8"; my @filter = (); my $CLDRDIR = undef; my $UNIDATADIR = undef; my $ETCDIR = undef; my $TYPE = undef; my $doonly = undef; my $result = GetOptions ( "cldr=s" => \$CLDRDIR, "unidata=s" => \$UNIDATADIR, "etc=s" => \$ETCDIR, "type=s" => \$TYPE, "lc=s" => \$doonly ); my %convertors = (); my %ucd = (); my %values = (); my %hashtable = (); my %languages = (); my %translations = (); my %encodings = (); my %alternativemonths = (); get_languages(); my %utf8map = (); my %utf8aliases = (); get_unidata($UNIDATADIR); get_utf8map("$CLDRDIR/posix/$DEFENCODING.cm"); get_encodings("$ETCDIR/charmaps"); my %keys = (); tie(%keys, "Tie::IxHash"); tie(%hashtable, "Tie::IxHash"); my %FILESNAMES = ( "monetdef" => "LC_MONETARY", "timedef" => "LC_TIME", "msgdef" => "LC_MESSAGES", "numericdef" => "LC_NUMERIC", "colldef" => "LC_COLLATE", "ctypedef" => "LC_CTYPE" ); my %callback = ( mdorder => \&callback_mdorder, altmon => \&callback_altmon, cformat => \&callback_cformat, dformat => \&callback_dformat, dtformat => \&callback_dtformat, cbabmon => \&callback_abmon, cbampm => \&callback_ampm, data => undef, ); my %DESC = ( # numericdef "decimal_point" => "decimal_point", "thousands_sep" => "thousands_sep", "grouping" => "grouping", # monetdef "int_curr_symbol" => "int_curr_symbol (last character always " . "SPACE)", "currency_symbol" => "currency_symbol", "mon_decimal_point" => "mon_decimal_point", "mon_thousands_sep" => "mon_thousands_sep", "mon_grouping" => "mon_grouping", "positive_sign" => "positive_sign", "negative_sign" => "negative_sign", "int_frac_digits" => "int_frac_digits", "frac_digits" => "frac_digits", "p_cs_precedes" => "p_cs_precedes", "p_sep_by_space" => "p_sep_by_space", "n_cs_precedes" => "n_cs_precedes", "n_sep_by_space" => "n_sep_by_space", "p_sign_posn" => "p_sign_posn", "n_sign_posn" => "n_sign_posn", # msgdef "yesexpr" => "yesexpr", "noexpr" => "noexpr", "yesstr" => "yesstr", "nostr" => "nostr", # timedef "abmon" => "Short month names", "mon" => "Long month names (as in a date)", "abday" => "Short weekday names", "day" => "Long weekday names", "t_fmt" => "X_fmt", "d_fmt" => "x_fmt", "c_fmt" => "c_fmt", "am_pm" => "AM/PM", "d_t_fmt" => "date_fmt", "altmon" => "Long month names (without case ending)", "md_order" => "md_order", "t_fmt_ampm" => "ampm_fmt", ); if ($TYPE eq "colldef") { transform_collation(); make_makefile(); } if ($TYPE eq "ctypedef") { transform_ctypes(); make_makefile(); } if ($TYPE eq "numericdef") { %keys = ( "decimal_point" => "s", "thousands_sep" => "s", "grouping" => "ai", ); get_fields(); print_fields(); make_makefile(); } if ($TYPE eq "monetdef") { %keys = ( "int_curr_symbol" => "s", "currency_symbol" => "s", "mon_decimal_point" => "s", "mon_thousands_sep" => "s", "mon_grouping" => "ai", "positive_sign" => "s", "negative_sign" => "s", "int_frac_digits" => "i", "frac_digits" => "i", "p_cs_precedes" => "i", "p_sep_by_space" => "i", "n_cs_precedes" => "i", "n_sep_by_space" => "i", "p_sign_posn" => "i", "n_sign_posn" => "i" ); get_fields(); print_fields(); make_makefile(); } if ($TYPE eq "msgdef") { %keys = ( "yesexpr" => "s", "noexpr" => "s", "yesstr" => "s", "nostr" => "s" ); get_fields(); print_fields(); make_makefile(); } if ($TYPE eq "timedef") { %keys = ( "abmon" => " "as", "abday" => "as", "day" => "as", "t_fmt" => "s", "d_fmt" => " " " " " " "s", ); get_fields(); print_fields(); make_makefile(); } sub callback_ampm { my $s = shift; my $nl = $callback{data}{l} . "_" . $callback{data}{c}; my $enc = $callback{data}{e}; if ($nl eq 'ru_RU') { if ($enc eq 'UTF-8') { $s = 'дп;пп'; } else { my $converter = Text::Iconv->new("utf-8", "$enc"); $s = $converter->convert("дп;пп"); } } return $s; } sub callback_cformat { my $s = shift; my $nl = $callback{data}{l} . "_" . $callback{data}{c}; if ($nl eq 'ko_KR') { $s =~ s/(> )(%p)/$1%A $2/; } $s =~ s/\.,/\./; $s =~ s/ %Z//; $s =~ s/ %z//; $s =~ s/^"%e\./%A %e/; $s =~ s/^"(%B %e, )/"%A, $1/; $s =~ s/^"(%e %B )/"%A $1/; return $s; }; sub callback_dformat { my $s = shift; $s =~ s/(%m(|[-.]))%e/$1%d/; $s =~ s/%e((|[-.])%m)/%d$1/; return $s; }; sub callback_dtformat { my $s = shift; my $nl = $callback{data}{l} . "_" . $callback{data}{c}; if ($nl eq 'ja_JP') { $s =~ s/(> )(%H)/$1%A $2/; } elsif ($nl eq 'ko_KR' || $nl eq 'zh_CN' || $nl eq 'zh_TW') { if ($nl ne 'ko_KR') { $s =~ s/%m/%_m/; } $s =~ s/(> )(%p)/$1%A $2/; } $s =~ s/\.,/\./; $s =~ s/^"%e\./%A %e/; $s =~ s/^"(%B %e, )/"%A, $1/; $s =~ s/^"(%e %B )/"%A $1/; return $s; }; sub callback_mdorder { my $s = shift; return undef if (!defined $s); $s =~ s/[^dem]//g; $s =~ s/e/d/g; return $s; }; sub callback_altmon { # if the language/country is known in %alternative months then # return that, otherwise repeat mon my $s = shift; if (defined $alternativemonths{$callback{data}{l}}{$callback{data}{c}}) { my @altnames = split(";",$alternativemonths{$callback{data}{l}}{$callback{data}{c}}); my @cleaned; foreach (@altnames) { $_ =~ s/^\s+//; $_ =~ s/\s+$//; push @cleaned, $_; } return join(";",@cleaned); } return $s; } sub callback_abmon { # for specified CJK locales, pad result with a space to enable # columns to line up (style established in FreeBSD in 2001) my $s = shift; my $nl = $callback{data}{l} . "_" . $callback{data}{c}; if ($nl eq 'ja_JP' || $nl eq 'ko_KR' || $nl eq 'zh_CN' || $nl eq 'zh_HK' || $nl eq 'zh_TW') { my @monthnames = split(";", $s); my @cleaned; foreach (@monthnames) { if ($_ =~ /^"<(two|three|four|five|six|seven|eight|nine)>/ || ($_ =~ /^"/ && $_ !~ /^"(||)/)) { $_ =~ s/^"/"/; } push @cleaned, $_; } return join(";",@cleaned); } return $s; } ############################ sub get_unidata { my $directory = shift; open(FIN, "$directory/UnicodeData.txt") or die("Cannot open $directory/UnicodeData.txt");; my @lines = ; chomp(@lines); close(FIN); foreach my $l (@lines) { my @a = split(/;/, $l); $ucd{code2name}{"$a[0]"} = $a[1]; # Unicode name $ucd{name2code}{"$a[1]"} = $a[0]; # Unicode code } } sub get_utf8map { my $file = shift; open(FIN, $file); my @lines = ; close(FIN); chomp(@lines); my $prev_k = undef; my $prev_v = ""; my $incharmap = 0; foreach my $l (@lines) { $l =~ s/\r//; next if ($l =~ /^\#/); next if ($l eq ""); if ($l eq "CHARMAP") { $incharmap = 1; next; } next if (!$incharmap); last if ($l eq "END CHARMAP"); $l =~ /^<([^\s]+)>\s+(.*)/; my $k = $1; my $v = $2; $k =~ s/_/ /g; # unicode char string $v =~ s/\\x//g; # UTF-8 char code $utf8map{$k} = $v; $utf8aliases{$k} = $prev_k if ($prev_v eq $v); $prev_v = $v; $prev_k = $k; } } sub get_encodings { my $dir = shift; foreach my $e (sort(keys(%encodings))) { if (!open(FIN, "$dir/$e.TXT")) { print "Cannot open charmap for $e\n"; next; } $encodings{$e} = 1; my @lines = ; close(FIN); chomp(@lines); foreach my $l (@lines) { $l =~ s/\r//; next if ($l =~ /^\#/); next if ($l eq ""); my @a = split(" ", $l); next if ($#a < 1); $a[0] =~ s/^0[xX]//; # local char code $a[1] =~ s/^0[xX]//; # unicode char code $convertors{$e}{uc($a[1])} = uc($a[0]); } } } sub get_languages { my %data = get_xmldata($ETCDIR); %languages = %{$data{L}}; %translations = %{$data{T}}; %alternativemonths = %{$data{AM}}; %encodings = %{$data{E}}; return if (!defined $doonly); my @a = split(/_/, $doonly); if ($#a == 1) { $filter[0] = $a[0]; $filter[1] = "x"; $filter[2] = $a[1]; } elsif ($#a == 2) { $filter[0] = $a[0]; $filter[1] = $a[1]; $filter[2] = $a[2]; } print Dumper(@filter); return; } sub transform_ctypes { + # Add the C.UTF-8 + $languages{"C"}{"x"}{data}{"x"}{$DEFENCODING} = undef; + foreach my $l (sort keys(%languages)) { foreach my $f (sort keys(%{$languages{$l}})) { foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) { next if ($#filter == 2 && ($filter[0] ne $l || $filter[1] ne $f || $filter[2] ne $c)); next if (defined $languages{$l}{$f}{definitions} && $languages{$l}{$f}{definitions} !~ /$TYPE/); $languages{$l}{$f}{data}{$c}{$DEFENCODING} = 0; # unread - my $file; - $file = $l . "_"; - $file .= $f . "_" if ($f ne "x"); - $file .= $c; + my $file = $l; + $file .= "_" . $f if ($f ne "x"); + $file .= "_" . $c if ($c ne "x"); my $actfile = $file; - my $filename = "$CLDRDIR/posix/xx_Comm_US.UTF-8.src"; + my $filename = "$CLDRDIR/posix/xx_Comm_C.UTF-8.src"; if (! -f $filename) { print STDERR "Cannot open $filename\n"; next; } open(FIN, "$filename"); print "Reading from $filename for ${l}_${f}_${c}\n"; $languages{$l}{$f}{data}{$c}{$DEFENCODING} = 1; # read my @lines; my $shex; my $uhex; while () { push @lines, $_; } close(FIN); $shex = sha1_hex(join("\n", @lines)); $languages{$l}{$f}{data}{$c}{$DEFENCODING} = $shex; $hashtable{$shex}{"${l}_${f}_${c}.$DEFENCODING"} = 1; open(FOUT, ">$TYPE.draft/$actfile.$DEFENCODING.src"); print FOUT @lines; close(FOUT); foreach my $enc (sort keys(%{$languages{$l}{$f}{data}{$c}})) { next if ($enc eq $DEFENCODING); $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src"; if (! -f $filename) { print STDERR "Cannot open $filename\n"; next; } @lines = (); open(FIN, "$filename"); while () { if ((/^comment_char\s/) || (/^escape_char\s/)){ push @lines, $_; } if (/^LC_CTYPE/../^END LC_CTYPE/) { push @lines, $_; } } close(FIN); $uhex = sha1_hex(join("\n", @lines) . $enc); $languages{$l}{$f}{data}{$c}{$enc} = $uhex; $hashtable{$uhex}{"${l}_${f}_${c}.$enc"} = 1; open(FOUT, ">$TYPE.draft/$actfile.$enc.src"); print FOUT <) { if ((/^comment_char\s/) || (/^escape_char\s/)){ push @lines, $_; } if (/^LC_COLLATE/../^END LC_COLLATE/) { $_ =~ s/[ ]+/ /g; push @lines, $_; } } close(FIN); $shex = sha1_hex(join("\n", @lines)); $languages{$l}{$f}{data}{$c}{$DEFENCODING} = $shex; $hashtable{$shex}{"${l}_${f}_${c}.$DEFENCODING"} = 1; open(FOUT, ">$TYPE.draft/$actfile.$DEFENCODING.src"); print FOUT <; chomp(@lines); close(FIN); my $continue = 0; foreach my $k (keys(%keys)) { foreach my $line (@lines) { $line =~ s/\r//; next if (!$continue && $line !~ /^$k\s/); if ($continue) { $line =~ s/^\s+//; } else { $line =~ s/^$k\s+//; } $values{$l}{$f}{$c}{$k} = "" if (!defined $values{$l}{$f}{$c}{$k}); $continue = ($line =~ /\/$/); $line =~ s/\/$// if ($continue); while ($line =~ /_/) { $line =~ s/\<([^>_]+)_([^>]+)\>/<$1 $2>/; } die "_ in data - $line" if ($line =~ /_/); $values{$l}{$f}{$c}{$k} .= $line; last if (!$continue); } } } } } } sub decodecldr { my $e = shift; my $s = shift; my $v = undef; if ($e eq "UTF-8") { # # Conversion to UTF-8 can be done from the Unicode name to # the UTF-8 character code. # $v = $utf8map{$s}; die "Cannot convert $s in $e (charmap)" if (!defined $v); } else { # # Conversion to these encodings can be done from the Unicode # name to Unicode code to the encodings code. # my $ucc = undef; $ucc = $ucd{name2code}{$s} if (defined $ucd{name2code}{$s}); $ucc = $ucd{name2code}{$utf8aliases{$s}} if (!defined $ucc && $utf8aliases{$s} && defined $ucd{name2code}{$utf8aliases{$s}}); if (!defined $ucc) { if (defined $translations{$e}{$s}{hex}) { $v = $translations{$e}{$s}{hex}; $ucc = 0; } elsif (defined $translations{$e}{$s}{ucc}) { $ucc = $translations{$e}{$s}{ucc}; } } die "Cannot convert $s in $e (ucd string)" if (!defined $ucc); $v = $convertors{$e}{$ucc} if (!defined $v); $v = $translations{$e}{$s}{hex} if (!defined $v && defined $translations{$e}{$s}{hex}); if (!defined $v && defined $translations{$e}{$s}{unicode}) { my $ucn = $translations{$e}{$s}{unicode}; $ucc = $ucd{name2code}{$ucn} if (defined $ucd{name2code}{$ucn}); $ucc = $ucd{name2code}{$utf8aliases{$ucn}} if (!defined $ucc && defined $ucd{name2code}{$utf8aliases{$ucn}}); $v = $convertors{$e}{$ucc}; } die "Cannot convert $s in $e (charmap)" if (!defined $v); } return pack("C", hex($v)) if (length($v) == 2); return pack("CC", hex(substr($v, 0, 2)), hex(substr($v, 2, 2))) if (length($v) == 4); return pack("CCC", hex(substr($v, 0, 2)), hex(substr($v, 2, 2)), hex(substr($v, 4, 2))) if (length($v) == 6); print STDERR "Cannot convert $e $s\n"; return "length = " . length($v); } sub translate { my $enc = shift; my $v = shift; return $translations{$enc}{$v} if (defined $translations{$enc}{$v}); return undef; } sub print_fields { foreach my $l (sort keys(%languages)) { foreach my $f (sort keys(%{$languages{$l}})) { foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) { next if ($#filter == 2 && ($filter[0] ne $l || $filter[1] ne $f || $filter[2] ne $c)); next if (defined $languages{$l}{$f}{definitions} && $languages{$l}{$f}{definitions} !~ /$TYPE/); foreach my $enc (sort keys(%{$languages{$l}{$f}{data}{$c}})) { if ($languages{$l}{$f}{data}{$c}{$DEFENCODING} eq "0") { print "Skipping ${l}_" . ($f eq "x" ? "" : "${f}_") . "${c} - not read\n"; next; } my $file = $l; $file .= "_" . $f if ($f ne "x"); $file .= "_" . $c; print "Writing to $file in $enc\n"; if ($enc ne $DEFENCODING && !defined $convertors{$enc}) { print "Failed! Cannot convert to $enc.\n"; next; }; open(FOUT, ">$TYPE.draft/$file.$enc.new"); my $okay = 1; my $output = ""; print FOUT </) { $k = substr($g, 1); $g = $keys{$k}; } # Callback function if ($g =~ /^\(.*)/) { my $p1 = $1; $cm = $2; my $p3 = $3; my $rv = decodecldr($enc, $cm); # $rv = translate($enc, $cm) # if (!defined $rv); if (!defined $rv) { print STDERR "Could not convert $k ($cm) from $DEFENCODING to $enc\n"; $okay = 0; next; } $v = $p1 . $rv . $p3; } $output .= "$v\n"; next; } if ($g eq "as") { foreach my $v (split(/;/, $v)) { $v =~ s/^"//; $v =~ s/"$//; my $cm = ""; while ($v =~ /^(.*?)<(.*?)>(.*)/) { my $p1 = $1; $cm = $2; my $p3 = $3; my $rv = decodecldr($enc, $cm); # $rv = translate($enc, # $cm) # if (!defined $rv); if (!defined $rv) { print STDERR "Could not convert $k ($cm) from $DEFENCODING to $enc\n"; $okay = 0; next; } $v = $1 . $rv . $3; } $output .= "$v\n"; } next; } die("$k is '$g'"); } $languages{$l}{$f}{data}{$c}{$enc} = sha1_hex($output); $hashtable{sha1_hex($output)}{"${l}_${f}_${c}.$enc"} = 1; print FOUT "$output# EOF\n"; close(FOUT); if ($okay) { rename("$TYPE.draft/$file.$enc.new", "$TYPE.draft/$file.$enc.src"); } else { rename("$TYPE.draft/$file.$enc.new", "$TYPE.draft/$file.$enc.failed"); } } } } } } sub make_makefile { return if ($#filter > -1); print "Creating Makefile for $TYPE\n"; my $SRCOUT; my $SRCOUT2; my $SRCOUT3 = ""; my $SRCOUT4 = ""; my $MAPLOC; if ($TYPE eq "colldef") { $SRCOUT = "localedef \${LOCALEDEF_ENDIAN} -D -U " . "-i \${.IMPSRC} \\\n" . "\t-f \${MAPLOC}/map.\${.TARGET:T:R:E:C/@.*//} " . "\${.OBJDIR}/\${.IMPSRC:T:R}"; $MAPLOC = "MAPLOC=\t\t\${.CURDIR}/../../tools/tools/" . "locale/etc/final-maps\n"; $SRCOUT2 = "LC_COLLATE"; $SRCOUT3 = "" . ".for f t in \${LOCALES_MAPPED}\n" . "FILES+=\t\$t.LC_COLLATE\n" . "FILESDIR_\$t.LC_COLLATE=\t\${LOCALEDIR}/\$t\n" . "\$t.LC_COLLATE: \${.CURDIR}/\$f.src\n" . "\tlocaledef \${LOCALEDEF_ENDIAN} -D -U " . "-i \${.ALLSRC} \\\n" . "\t\t-f \${MAPLOC}/map.\${.TARGET:T:R:E:C/@.*//} \\\n" . "\t\t\${.OBJDIR}/\${.TARGET:T:R}\n" . ".endfor\n\n"; $SRCOUT4 = "## LOCALES_MAPPED\n"; } elsif ($TYPE eq "ctypedef") { $SRCOUT = "localedef \${LOCALEDEF_ENDIAN} -D -U -c " . "-w \${MAPLOC}/widths.txt \\\n" . "\t-f \${MAPLOC}/map.\${.IMPSRC:T:R:E} " . "\\\n\t-i \${.IMPSRC} \${.OBJDIR}/\${.IMPSRC:T:R} " . " || true"; $SRCOUT2 = "LC_CTYPE"; $MAPLOC = "MAPLOC=\t\t\${.CURDIR}/../../tools/tools/" . "locale/etc/final-maps\n"; $SRCOUT3 = "## SYMPAIRS\n\n" . ".for s t in \${SYMPAIRS}\n" . "\${t:S/src\$/LC_CTYPE/}: " . "\$s\n" . "\tlocaledef \${LOCALEDEF_ENDIAN} -D -U -c " . "-w \${MAPLOC}/widths.txt \\\n" . "\t-f \${MAPLOC}/map.\${.TARGET:T:R:C/^.*\\.//} " . "\\\n\t-i \${.ALLSRC} \${.OBJDIR}/\${.TARGET:T:R} " . " || true\n" . ".endfor\n\n"; } else { $SRCOUT = "grep -v -E '^(\#\$\$|\#[ ])' < \${.IMPSRC} > \${.TARGET}"; $SRCOUT2 = "out"; $MAPLOC = ""; } open(FOUT, ">$TYPE.draft/Makefile"); print FOUT < .src.${SRCOUT2}: $SRCOUT ## PLACEHOLDER ${SRCOUT4} EOF foreach my $hash (keys(%hashtable)) { # For colldef, weight LOCALES to UTF-8 # Sort as upper-case and reverse to achieve it # Make en_US, ru_RU, and ca_AD preferred my @files; if ($TYPE eq "colldef") { @files = sort { if ($a eq 'en_x_US.UTF-8' || $a eq 'ru_x_RU.UTF-8' || $a eq 'ca_x_AD.UTF-8') { return -1; } elsif ($b eq 'en_x_US.UTF-8' || $b eq 'ru_x_RU.UTF-8' || $b eq 'ca_x_AD.UTF-8') { return 1; } else { return uc($b) cmp uc($a); } } keys(%{$hashtable{$hash}}); } elsif ($TYPE eq "ctypedef") { @files = sort { - if ($a eq 'en_x_US.UTF-8') { return -1; } - elsif ($b eq 'en_x_US.UTF-8') { return 1; } + if ($a eq 'C_x_x.UTF-8') { return -1; } + elsif ($b eq 'C_x_x.UTF-8') { return 1; } if ($a =~ /^en_x_US/) { return -1; } elsif ($b =~ /^en_x_US/) { return 1; } if ($a =~ /^en_x_GB.ISO8859-15/ || $a =~ /^ru_x_RU/) { return -1; } elsif ($b =~ /^en_x_GB.ISO8859-15/ || $b =~ /ru_x_RU/) { return 1; } else { return uc($b) cmp uc($a); } } keys(%{$hashtable{$hash}}); } else { @files = sort { if ($a =~ /_Comm_/ || $b eq 'en_x_US.UTF-8') { return 1; } elsif ($b =~ /_Comm_/ || $a eq 'en_x_US.UTF-8') { return -1; } else { return uc($b) cmp uc($a); } } keys(%{$hashtable{$hash}}); } if ($#files > 0) { my $link = shift(@files); + $link =~ s/_x_x//; # special case for C $link =~ s/_x_/_/; # strip family if none there foreach my $file (@files) { my @a = split(/_/, $file); my @b = split(/\./, $a[-1]); $file =~ s/_x_/_/; print FOUT "SAME+=\t\t$link $file\n"; undef($languages{$a[0]}{$a[1]}{data}{$b[0]}{$b[1]}); } } } foreach my $l (sort keys(%languages)) { foreach my $f (sort keys(%{$languages{$l}})) { foreach my $c (sort keys(%{$languages{$l}{$f}{data}})) { next if ($#filter == 2 && ($filter[0] ne $l || $filter[1] ne $f || $filter[2] ne $c)); next if (defined $languages{$l}{$f}{definitions} && $languages{$l}{$f}{definitions} !~ /$TYPE/); if (defined $languages{$l}{$f}{data}{$c}{$DEFENCODING} && $languages{$l}{$f}{data}{$c}{$DEFENCODING} eq "0") { print "Skipping ${l}_" . ($f eq "x" ? "" : "${f}_") . "${c} - not read\n"; next; } foreach my $e (sort keys(%{$languages{$l}{$f}{data}{$c}})) { - my $file = $l . "_"; - $file .= $f . "_" if ($f ne "x"); - $file .= $c; + my $file = $l; + $file .= "_" . $f if ($f ne "x"); + $file .= "_" . $c if ($c ne "x"); next if (!defined $languages{$l}{$f}{data}{$c}{$e}); print FOUT "LOCALES+=\t$file.$e\n"; } if (defined $languages{$l}{$f}{nc_link}) { foreach my $e (sort keys(%{$languages{$l}{$f}{data}{$c}})) { my $file = $l . "_"; $file .= $f . "_" if ($f ne "x"); $file .= $c; print FOUT "SAME+=\t\t$file.$e $languages{$l}{$f}{nc_link}.$e\t# legacy (lang/country change)\n"; } } if (defined $languages{$l}{$f}{e_link}) { foreach my $el (split(" ", $languages{$l}{$f}{e_link})) { my @a = split(/:/, $el); my $file = $l . "_"; $file .= $f . "_" if ($f ne "x"); $file .= $c; print FOUT "SAME+=\t\t$file.$a[0] $file.$a[1]\t# legacy (same charset)\n"; } } } } } print FOUT < EOF close(FOUT); } Index: stable/12 =================================================================== --- stable/12 (revision 341626) +++ stable/12 (revision 341627) Property changes on: stable/12 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r340144

);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,) -tolower (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (,);/ - (