Index: projects/collation/tools/tools/locale/Makefile =================================================================== --- projects/collation/tools/tools/locale/Makefile (revision 289259) +++ projects/collation/tools/tools/locale/Makefile (revision 289260) @@ -1,106 +1,123 @@ # $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 # .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 timedef colldef ctypedef TYPES?= ${KNOWN} LOCALE_DESTDIR?= /tmp/generated-locales/ .if defined(LC) LC:= --lc=${LC} .endif all: + cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.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 install: .for t in ${TYPES} . if ${KNOWN:M${t}} rm -rf ${.CURDIR}/${t}.draft rm -rf ${DESTDIR}/usr/src/share/${t} mv ${.CURDIR}/${t} ${DESTDIR}/usr/src/share/ . endif .endfor post-install: .for t in ${TYPES} . if ${KNOWN:M${t}} (cd ${DESTDIR}/usr/src/share/${t} && \ make && make install && make clean) . endif .endfor .for t in ${TYPES} build-${t}: mkdir -p ${t} ${t}.draft perl -I tools tools/cldr2def.pl \ --cldr=$$(realpath ${CLDRDIR}) \ --unidata=$$(realpath ${UNIDATADIR}) \ --etc=$$(realpath ${ETCDIR}) \ --type=${t} ${LC} env ${PASSON} tools/finalize ${t} .endfor +build-ctypedef: transfer-rollup + +transfer-rollup: + cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.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 be_BY bg_BG ca_AD ca_ES ca_FR ca_IT \ + 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_Cyrl_KZ mn_Cyrl_MN sr_Cyrl_RS sr_Latn_RS \ - zh_Hans_CN zh_Hant_HK zh_Hant_TW + 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 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 . if !exists(${CLDRDIR}/posix/UTF-8.cm) java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \ org.unicode.cldr.posix.GenerateCharmap \ -d ${CLDRDIR}/posix . endif .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: projects/collation/tools/tools/locale/etc/charmaps.xml =================================================================== --- projects/collation/tools/tools/locale/etc/charmaps.xml (revision 289259) +++ projects/collation/tools/tools/locale/etc/charmaps.xml (revision 289260) @@ -1,728 +1,744 @@ + + encoding="ISO8859-15 US-ASCII" + countries="GB" /> + + countries="HK SG" /> + + + countries="AR MX" /> + encoding="ISO8859-15" + countries="BE CH FR" /> + + encoding="ISO8859-15" + countries="PT" /> + "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> "; ""; ""; ""; ""; ""; ""; "

"; ""; ""; "

"; "

" ]]> "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> "; ""; ""; ""; ""; ""; "

"; "

"; ""; "

"; "

"; "" ]]> "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> "; ""; ""; ""; ""; ""; "

"; "

"; ""; "

"; "

"; "" ]]> "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> "; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; "" ]]> Index: projects/collation/tools/tools/locale/etc/common.UTF-8.src =================================================================== --- projects/collation/tools/tools/locale/etc/common.UTF-8.src (nonexistent) +++ projects/collation/tools/tools/locale/etc/common.UTF-8.src (revision 289260) @@ -0,0 +1,6151 @@ +# 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 ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;/ + ;/ + ;/ + ;...;;/ + ;...; + +********************************************************************** +* 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 +********************************************************************** +alpha ;...;;/ + ;...; +graph ;...;;/ + ;...; + +********************************************************************** +* 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) +********************************************************************** +alpha ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; +graph ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;/ + ;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...;;/ + ;...; + +******* 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 ;...; + +********************************************************************** +* 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 + +********************************************************************** +* 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 Index: projects/collation/tools/tools/locale/etc/manual-input.UTF-8 =================================================================== --- projects/collation/tools/tools/locale/etc/manual-input.UTF-8 (nonexistent) +++ projects/collation/tools/tools/locale/etc/manual-input.UTF-8 (revision 289260) @@ -0,0 +1,989 @@ + +******* 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 ;...; + +********************************************************************** +* 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 + +********************************************************************** +* 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 ;...; Index: projects/collation/tools/tools/locale/tools/cldr2def.pl =================================================================== --- projects/collation/tools/tools/locale/tools/cldr2def.pl (revision 289259) +++ projects/collation/tools/tools/locale/tools/cldr2def.pl (revision 289260) @@ -1,916 +1,934 @@ #!/usr/local/bin/perl -wC use strict; use File::Copy; use XML::Parser; use Tie::IxHash; 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", + "colldef" => "LC_COLLATE", "ctypedef" => "LC_CTYPE" ); my %callback = ( mdorder => \&callback_mdorder, altmon => \&callback_altmon, cformat => \&callback_cformat, 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", "mon" => "as", "abday" => "as", "day" => "as", "t_fmt" => "s", "d_fmt" => "s", "c_fmt" => " "as", "d_fmt" => "s", "d_t_fmt" => "s", "altmon" => " " "s", ); get_fields(); print_fields(); make_makefile(); } sub callback_cformat { my $s = shift; $s =~ s/ %Z//; $s =~ s/ %z//; return $s; }; sub callback_mdorder { my $s = shift; return undef if (!defined $s); $s =~ s/[^dm]//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 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 { 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 $actfile = $file; - my $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src"; - $filename = "$ETCDIR/$file.$DEFENCODING.src" - if (! -f $filename); - if (! -f $filename - && defined $languages{$l}{$f}{fallback}) { - $file = $languages{$l}{$f}{fallback}; - $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src"; - } - $filename = "$CLDRDIR/posix/$file.$DEFENCODING.src" - if (! -f $filename); + my $filename = "$CLDRDIR/posix/xx_Comm_US.UTF-8.src"; if (! -f $filename) { - print STDERR - "Cannot open $file.$DEFENCODING.src or fallback\n"; + 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 () { - if ((/^comment_char\s/) || (/^escape_char\s/)){ - push @lines, $_; - } - if (/^LC_CTYPE/../^END LC_CTYPE/) { - push @lines, $_; - } + 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 <) { + 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}{$c}{$k} = "" if (!defined $values{$l}{$c}{$k}); $continue = ($line =~ /\/$/); $line =~ s/\/$// if ($continue); while ($line =~ /_/) { $line =~ s/\<([^>_]+)_([^>]+)\>/<$1 $2>/; } die "_ in data - $line" if ($line =~ /_/); $values{$l}{$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($f, 1); $f = $keys{$k}; } # Callback function if ($f =~ /^\(.*)/) { 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 ($f 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 '$f'"); } $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 $MAPLOC; if ($TYPE eq "colldef") { $SRCOUT = "localedef -D -U -i \${.IMPSRC} \\\n" . "\t-f \${MAPLOC}/map.UTF-8 " . "\${.OBJDIR}/\${.IMPSRC:T:R}"; $MAPLOC = "MAPLOC=\t\t\${.CURDIR}/../../tools/tools/" . "locale/etc/final-maps\n"; $SRCOUT2 = "LC_COLLATE"; } elsif ($TYPE eq "ctypedef") { $SRCOUT = "localedef -D -U -c -w \${MAPLOC}/widths.txt \\\n" . "\t-f \${MAPLOC}/map.\${.IMPSRC:T:R:C/^.*\\.//} " . "\\\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 PAIR in \${SYMPAIRS}\n" . + "\${PAIR:C/^.*://:S/src\$/LC_CTYPE/}: " . + "\${PAIR:C/:.*//}\n" . + "\tlocaledef -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 < 0) { my $link = shift(@files); $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; 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 < +${SRCOUT3}.include EOF close(FOUT); } Index: projects/collation/tools/tools/locale/tools/finalize =================================================================== --- projects/collation/tools/tools/locale/tools/finalize (revision 289259) +++ projects/collation/tools/tools/locale/tools/finalize (revision 289260) @@ -1,87 +1,86 @@ #!/bin/sh # # This is a helper script for the Makefile in the parent directory. # When the localization definitions are generated in the draft area, # this script will copy base ones that others symlink to, and rearrange # the generate makefile to pull the LOCALES first. # usage () { echo "finalize ' to package standard localization" echo "type must be one of { monetdef, msgdef, numericdef, timedef, colldef, ctypedef }" exit 1 } [ $# -ne 1 ] && usage [ $1 = "monetdef" -o $1 = "msgdef" -o $1 = "colldef" -o \ $1 = "numericdef" -o $1 = "timedef" -o $1 = "ctypedef" ] || usage self=$(realpath $0) base=$(dirname ${self}) old=${base}/../${1}.draft new=${base}/../${1} TEMP=/tmp/${1}.locales TEMP2=/tmp/${1}.hashes +TEMP3=/tmp/${1}.symlinks FULLMAP=/tmp/utf8-map FULLEXTRACT=/tmp/extracted-names AWKCMD="/## PLACEHOLDER/ { \ while ( getline line < \"${TEMP}\" ) {print line} } \ - !/## PLACEHOLDER/ { print \$0 }" + /## SYMPAIRS/ { \ + while ( getline line < \"${TEMP3}\" ) {print line} } \ + !/## / { print \$0 }" grep '^LOCALES+' ${old}/Makefile > ${TEMP} if [ $1 = "ctypedef" ] then -keep=$(cat ${TEMP} | awk '/UTF-8/ { print $2 }') -else -keep=$(cat ${TEMP} | awk '{ print $2 }') -fi - -for original in ${keep} -do - cp ${old}/${original}.src ${new}/ -done - -if [ $1 = "ctypedef" ] -then keep=$(cat ${TEMP} | awk '{ print $2 ".src" }') (cd ${old} && md5 -r ${keep} | sort) > ${TEMP2} -linx=$(cat ${TEMP2} | awk '!/UTF-8/ { print $2 }') -for original in ${linx} +keep=$(awk '{ if ($1 != last1) print $2; last1 = $1; }' ${TEMP2}) +for original in ${keep} do -linkhash=$(fgrep "${original}" ${TEMP2} | awk '{ print $1 }') -utf8file=$(fgrep "${linkhash}" ${TEMP2} | fgrep 'UTF-8' | awk '{ print $2 }') -ln -s ${utf8file} ${new}/${original} + cp ${old}/${original} ${new}/ done +awk '{ if ($1 == last1) { print "SYMPAIRS+=\t" last2 ":" $2 } \ +else {last1 = $1; last2 = $2}}' ${TEMP2} > ${TEMP3} rm -f ${TEMP2} /usr/bin/sed -E -e 's/[ ]+/ /g' \ ${CLDRDIR}/posix/UTF-8.cm \ > ${base}/../etc/final-maps/map.UTF-8 CHARMAPS="ARMSCII-8 Big5 Big5HKSCS CP1131 CP1251 \ CP866 GB2312 GBK ISCII-DEV ISO8859-1 \ ISO8859-13 ISO8859-15 ISO8859-2 ISO8859-4 \ ISO8859-5 ISO8859-7 ISO8859-9 KOI8-R KOI8-U \ PT154 SJIS US-ASCII eucCN eucJP eucKR" # GB18030 blows up, use pre-generate Illumos version for map in ${CHARMAPS} do encoding=${map} if [ ${map} = "Big5HKSCS" ] then encoding="Big5" fi /usr/local/bin/perl ${base}/convert_map.pl \ ${base}/../etc/charmaps/${map}.TXT ${encoding} \ | /usr/bin/sed -E -e 's/ +/ /g' \ > ${base}/../etc/final-maps/map.${map} echo map ${map} converted. done +else # below is everything but ctypedef + +keep=$(cat ${TEMP} | awk '{ print $2 }') +for original in ${keep} +do + cp ${old}/${original}.src ${new}/ +done + fi grep -v '^LOCALES+' ${old}/Makefile | awk "${AWKCMD}" > ${new}/Makefile -rm -f ${TEMP} +rm -f ${TEMP} ${TEMP3} Index: projects/collation/tools/tools/locale/tools/utf8-rollup.pl =================================================================== --- projects/collation/tools/tools/locale/tools/utf8-rollup.pl (nonexistent) +++ projects/collation/tools/tools/locale/tools/utf8-rollup.pl (revision 289260) @@ -0,0 +1,373 @@ +#!/usr/local/bin/perl -wC + +use strict; +#use File::Copy; +#use XML::Parser; +use Tie::IxHash; +#use Data::Dumper; +use Getopt::Long; +#use Digest::SHA qw(sha1_hex); +#require "charmaps.pm"; + + +if ($#ARGV != 1) { + print "Usage: $0 --cldr= --etc=\n"; + exit(1); +} + +my $CLDRDIR = undef; +my $ETCDIR = undef; + +my $result = GetOptions ( + "cldr=s" => \$CLDRDIR, + "etc=s" => \$ETCDIR, + ); + +my @SECTIONS = ( + ["en_US", "* 0x0000 - 0x007F Basic Latin\n" . + "* 0x0080 - 0x00FF Latin-1 Supplement\n" . + "* 0x0100 - 0x017F Latin Extended-A\n" . + "* 0x0180 - 0x024F Latin Extended-B\n" . + "* 0x0250 - 0x02AF IPA Extensions\n" . + "* 0x1D00 - 0x1D7F Phonetic Extensions\n" . + "* 0x1D80 - 0x1DBF Phonetic Extensions Supplement\n" . + "* 0x1E00 - 0x1EFF Latin Extended Additional\n" . + "* 0x2150 - 0x218F Number Forms (partial - Roman Numerals)\n". + "* 0x2C60 - 0x2C7F Latin Extended-C\n" . + "* 0xA720 - 0xA7FF Latin Extended-D\n" . + "* 0xAB30 - 0xAB6F Latin Extended-E\n" . + "* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial)\n". + "* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial)\n"], + ["el_GR", "* 0x0370 - 0x03FF Greek (No Coptic!)\n" . + "* 0x1F00 - 0x1FFF Greek Extended\n"], + ["ru_RU", "* 0x0400 - 0x04FF Cyrillic\n" . + "* 0x0500 - 0x052F Cyrillic Supplementary\n" . + "* 0x2DE0 - 0x2DFF Cyrillic Extended-A\n" . + "* 0xA640 - 0xA69F Cyrillic Extended-B\n"], + ["hy_AM", "* 0x0530 - 0x058F Armenian\n" . + "* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial)\n"], + ["he_IL", "* 0x0590 - 0x05FF Hebrew\n" . + "* 0xFB00 - 0xFF4F Alphabetic Presentation Forms (partial)\n"], + ["ar_SA", "* 0x0600 - 0x06FF Arabic\n" . + "* 0x0750 - 0x074F Arabic Supplement\n" . + "* 0x08A0 - 0x08FF Arabic Extended-A\n" . + "* 0xFB50 - 0xFDFF Arabic Presentation Forms (partial)\n" . + "* 0xFE70 - 0xFEFF Arabic Presentation Forms-B (partial)\n"], + ["hi_IN", "* 0x0900 - 0x097F Devanagari\n" . + "* 0xA8E0 - 0xA8FF Devanagari Extended\n"], + ["bn_IN", "* 0x0900 - 0x097F Bengali\n"], + ["pa_Guru_IN", "* 0x0A00 - 0x0A7F Gurmukhi\n"], + ["gu_IN", "* 0x0A80 - 0x0AFF Gujarati\n"], + ["or_IN", "* 0x0B00 - 0x0B7F Oriya\n"], + ["ta_IN", "* 0x0B80 - 0x0BFF Tamil\n"], + ["te_IN", "* 0x0C00 - 0x0C7F Telugu\n"], + ["kn_IN", "* 0x0C80 - 0x0CFF Kannada\n"], + ["ml_IN", "* 0x0D00 - 0x0D7F Malayalam\n"], + ["si_LK", "* 0x0D80 - 0x0DFF Sinhala\n"], + ["th_TH", "* 0x0E00 - 0x0E7F Thai\n"], + ["lo_LA", "* 0x0E80 - 0x0EFF Lao\n"], + ["bo_IN", "* 0x0F00 - 0x0FFF Tibetan\n"], + ["my_MM", "* 0x1000 - 0x109F Myanmar\n" . + "* 0xA9E0 - 0xA9FF Myanmar Extended-B\n" . + "* 0xAA60 - 0xAA7F Myanmar Extended-A\n"], + ["ka_GE", "* 0x10A0 - 0x10FF Georgia\n" . + "* 0x2D00 - 0x2D2F Georgian Supplement\n"], + ["ja_JP", "* 0x1100 - 0x11FF Hangul Jamo\n" . + "* 0x3000 - 0x30FF CJK Symbols and Punctuation (partial)\n" . + "* 0x3040 - 0x309F Hiragana\n" . + "* 0x30A0 - 0x30FF Katakana\n" . + "* 0x31F0 - 0x31FF Katakana Phonetic Extensions\n" . + "* 0x3130 - 0x318F Hangul Compatibility Jamo (partial)\n" . + "* 0x3200 - 0x32FF Enclosed CJK Letters and Months (partial)\n" . + "* 0x3300 - 0x33FF CJK Compatibility\n" . + "* 0x3400 - 0x4DB5 CJK Unified Ideographs Extension-A (added)\n" . + "* 0x4E00 - 0x9FCC CJK Unified Ideographs (overridden)\n" . + "* 0xAC00 - 0xA7A3 Hangul Syllables (partial)\n" . + "* 0xD7B0 - 0xD7FF Hangul Jamo Extended-B\n" . + "* 0xF900 - 0xFAFF CJK Compatibility Ideographs (partial)\n" . + "* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial)\n"], + ["am_ET", "* 0x1200 - 0x137F Ethiopic\n" . + "* 0x1380 - 0x139F Ethiopic Supplement\n" . + "* 0x2D80 - 0x2DDF Ethiopic Extended\n" . + "* 0xAB00 - 0xAB2F Ethiopic Extended-A\n"], + ["chr_US", "* 0x13A0 - 0x13FF Cherokee\n"], + ["km_KH", "* 0x1780 - 0x17FF Khmer\n" . + "* 0x19E0 - 0x19FF Khmer Symbols\n"], + ["shi_Tfng_MA", "* 0x2D30 - 0x2D2F Tifinagh\n"], + ["ii_CN", "* 0xA000 - 0xA48F Yi Syllables\n" . + "* 0xA490 - 0xA4CF Yi Radicals\n"], + ["vai_Vaii_LR", "* 0xA500 - 0xA63F Vai\n"], + ["ko_KR", "* 0x3130 - 0x318F Hangul Compatibility Jamo (partial)\n" . + "* 0xA960 - 0xA97F Hangul Jamo Extended-A\n" . + "* 0xAC00 - 0xA7A3 Hangul Syllables (partial)\n" . + "* 0xFF00 - 0xFFEF Halfwidth and Fullwidth Forms (partial)\n"], +); + +# ["zh_Hans_CN", "* 0x2E80 - 0x2EFF CJK Radicals Supplement\n" . +# "* 0x2F00 - 0x2FDF Rangxi Radicales\n" . +# "* 0x3000 - 0x30FF CJK Symbols and Punctuation (partial)\n" . +# "* 0x3200 - 0x32FF Enclosed CJK Letters and Months (partial)\n" . +# "* 0x3400 - 0x4DB5 CJK Unified Ideographs Extension A\n" . +# "* 0xF900 - 0xFAFF CJK Compatibility Ideographs (partial)\n"], + +my %seen = (); +my %pending_seen = (); +my %utf8map = (); +my %utf8aliases = (); +my $outfilename = "$ETCDIR/common.UTF-8.src"; +my $manual_file = "$ETCDIR/manual-input.UTF-8"; +my $stars = "**********************************************************************\n"; + +get_utf8map("$CLDRDIR/posix/UTF-8.cm"); +generate_header (); +generate_sections (); +generate_footer (); + +############################ + +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 generate_header { + open(FOUT, ">", "$outfilename") + or die ("can't write to $outfilename\n"); + print FOUT <;/\n"; + for ($n = hex("3401"); $n <= hex("4DB4"); $n++) { + $back2hex=sprintf("%X", $n); + push @result, "\t;/\n"; + } + push @result, "\t\n"; + push @result, "$T\t;/\n"; + for ($n = hex("4E01"); $n <= hex("9FCB"); $n++) { + $back2hex=sprintf("%X", $n); + push @result, "\t;/\n"; + } + push @result, "\t\n"; + } + push @result, "merge\tnow\n"; + } + return @result; +} + +sub compress_ctype { + my $territory = shift; + my $term; + my $active = 0; + my $cat_loaded = 0; + my $lock_ID; + my $prev_ID; + my $curr_ID; + my $lock_name; + my $prev_name; + my $curr_name; + my $key_name; + my $category = ''; + + my @lines = initialize_lines ($territory); + + my $filename = "$CLDRDIR/posix/$territory.UTF-8.src"; + if (! -f $filename) { + print STDERR "Cannot open $filename\n"; + return; + } + open(FIN, "$filename"); + print "Reading from $filename\n"; + while () { + if (/^LC_CTYPE/../^END LC_CTYPE/) { + if ($_ ne "LC_CTYPE\n" && $_ ne "END LC_CTYPE\n" && + $_ ne "*************\n" && $_ ne "\n") { + push @lines, $_; + } + } + } + close(FIN); + foreach my $line (@lines) { + if ($line =~ m/^([a-z]{3,})\t/) { + $category = $1; + if ($category eq 'merge') { + merge_seen; + next; + } + if ($category ne 'print') { + $cat_loaded = 1; + } + } + next if ($category eq 'print'); + if ($category eq 'toupper' || $category eq 'tolower') { + if ($line =~ m/<([-_A-Za-z0-9]+)>,/) { + $key_name = $1; + $key_name =~ s/_/ /g; + if (already_seen_RO (hex($utf8map{$key_name}))) { + next; + } + if ($cat_loaded) { print FOUT $category; } + $cat_loaded = 0; + $line =~ s/^[a-z]{3,}\t/\t/; + print FOUT $line; + } + next; + } + if ($line =~ m/<([-_A-Za-z0-9]+)>(;.|)$/) { + $term = ($2 eq '') ? 1 : 0; + $curr_name = $1; + $key_name = $1; + $key_name =~ s/_/ /g; + $curr_ID = hex($utf8map{$key_name}); + if (already_seen ($curr_ID)) { + next; + } + if ($active) { + if ($curr_ID == $prev_ID + 1) { + $prev_ID = $curr_ID; + $prev_name = $curr_name; + } else { + if ($cat_loaded) { print FOUT $category; } + $cat_loaded = 0; + if ($prev_ID == $lock_ID) { + print FOUT "\t<" . $prev_name . ">;/\n"; + } elsif ($prev_ID - 1 == $lock_ID) { + print FOUT "\t<" . $lock_name . ">;/\n"; + print FOUT "\t<" . $prev_name . ">;/\n"; + } else { + print FOUT "\t<" . $lock_name . + ">;...;<" . $prev_name . ">;/\n"; + } + $lock_ID = $curr_ID; + $prev_ID = $curr_ID; + $lock_name = $curr_name; + $prev_name = $curr_name; + } + } else { + $active = 1; + $lock_ID = $curr_ID; + $prev_ID = $curr_ID; + $lock_name = $curr_name; + $prev_name = $curr_name; + } + if ($term) { + if ($cat_loaded) { print FOUT $category; } + $cat_loaded = 0; + if ($curr_ID == $lock_ID) { + print FOUT "\t<" . $curr_name . ">\n"; + } elsif ($curr_ID == $lock_ID + 1) { + print FOUT "\t<" . $lock_name . ">;/\n"; + print FOUT "\t<" . $curr_name . ">\n"; + } else { + print FOUT "\t<" . $lock_name . + ">;...;<" . $curr_name . ">\n"; + } + $active = 0; + } + } else { + print FOUT $line; + } + } +} + +sub generate_sections { + foreach my $section (@SECTIONS ) { + print FOUT "\n"; + print FOUT $stars; + print FOUT @$section[1]; + print FOUT $stars; + compress_ctype (@$section[0]); + merge_seen; + } + my @lines = (); + open(FIN, "$manual_file"); + print "Reading from $manual_file\n"; + while () { + push @lines, $_; + } + close(FIN); + foreach my $line (@lines) { + print FOUT $line; + } +} Property changes on: projects/collation/tools/tools/locale/tools/utf8-rollup.pl ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property