From f112d05a3f0f45b4c1f66b54f63797ff85886ba7 Mon Sep 17 00:00:00 2001 From: samiljan Date: Sun, 9 Sep 2012 21:11:10 +0200 Subject: [PATCH] first commit --- .classpath | 8 + .cproject | 61 + .gitignore | 3 + .project | 49 + AndroidManifest.xml | 37 + LICENSE | 339 +++ aspellchecker_logo.png | Bin 0 -> 36625 bytes assets/data/cp1250.cmap | 1991 +++++++++++++ assets/data/cp1250.cset | 262 ++ assets/data/cp1251.cmap | 1903 +++++++++++++ assets/data/cp1251.cset | 262 ++ assets/data/cp1252.cmap | 1943 +++++++++++++ assets/data/cp1252.cset | 262 ++ assets/data/cp1253.cmap | 2148 ++++++++++++++ assets/data/cp1253.cset | 262 ++ assets/data/cp1254.cmap | 1944 +++++++++++++ assets/data/cp1254.cset | 262 ++ assets/data/cp1255.cmap | 2251 +++++++++++++++ assets/data/cp1255.cset | 262 ++ assets/data/cp1256.cmap | 2476 +++++++++++++++++ assets/data/cp1256.cset | 262 ++ assets/data/cp1257.cmap | 1962 +++++++++++++ assets/data/cp1257.cset | 262 ++ assets/data/cp1258.cmap | 2403 ++++++++++++++++ assets/data/cp1258.cset | 262 ++ assets/data/dvorak.kbd | 25 + assets/data/iso-8859-1.cmap | 1922 +++++++++++++ assets/data/iso-8859-1.cset | 262 ++ assets/data/iso-8859-10.cmap | 1971 +++++++++++++ assets/data/iso-8859-10.cset | 262 ++ assets/data/iso-8859-11.cmap | 1508 ++++++++++ assets/data/iso-8859-11.cset | 262 ++ assets/data/iso-8859-13.cmap | 1961 +++++++++++++ assets/data/iso-8859-13.cset | 262 ++ assets/data/iso-8859-14.cmap | 2010 +++++++++++++ assets/data/iso-8859-14.cset | 262 ++ assets/data/iso-8859-15.cmap | 1934 +++++++++++++ assets/data/iso-8859-15.cset | 262 ++ assets/data/iso-8859-16.cmap | 1951 +++++++++++++ assets/data/iso-8859-16.cset | 262 ++ assets/data/iso-8859-2.cmap | 1983 +++++++++++++ assets/data/iso-8859-2.cset | 262 ++ assets/data/iso-8859-3.cmap | 1935 +++++++++++++ assets/data/iso-8859-3.cset | 262 ++ assets/data/iso-8859-4.cmap | 1970 +++++++++++++ assets/data/iso-8859-4.cset | 262 ++ assets/data/iso-8859-5.cmap | 1895 +++++++++++++ assets/data/iso-8859-5.cset | 262 ++ assets/data/iso-8859-6.cmap | 2201 +++++++++++++++ assets/data/iso-8859-6.cset | 262 ++ assets/data/iso-8859-7.cmap | 2145 ++++++++++++++ assets/data/iso-8859-7.cset | 262 ++ assets/data/iso-8859-8.cmap | 1483 ++++++++++ assets/data/iso-8859-8.cset | 262 ++ assets/data/iso-8859-9.cmap | 1937 +++++++++++++ assets/data/iso-8859-9.cset | 262 ++ assets/data/koi8-r.cmap | 1857 +++++++++++++ assets/data/koi8-r.cset | 262 ++ assets/data/koi8-u.cmap | 1869 +++++++++++++ assets/data/koi8-u.cset | 262 ++ assets/data/split.kbd | 23 + assets/data/standard.kbd | 25 + assets/data/sv.dat | 6 + assets/data/sv.multi | 2 + assets/data/sv.rws | Bin 0 -> 3516736 bytes assets/data/sv_phonet.dat | 171 ++ assets/data/svenska.alias | 2 + assets/data/swedish.alias | 2 + gen/gr/padeler/aspellchecker/BuildConfig.java | 6 + gen/gr/padeler/aspellchecker/R.java | 31 + jni/Android.mk | 67 + jni/Application.mk | 3 + jni/aspell.cpp | 1 + jni/aspell.h | 734 +++++ jni/common/.deps/.dirstamp | 0 jni/common/.deps/cache.Plo | 228 ++ jni/common/.deps/can_have_error.Plo | 13 + jni/common/.deps/config.Plo | 347 +++ jni/common/.deps/convert.Plo | 343 +++ jni/common/.deps/document_checker.Plo | 292 ++ jni/common/.deps/error.Plo | 72 + jni/common/.deps/errors.Plo | 27 + jni/common/.deps/file_data_util.Plo | 247 ++ jni/common/.deps/file_util.Plo | 314 +++ jni/common/.deps/filter.Plo | 292 ++ jni/common/.deps/fstream.Plo | 231 ++ jni/common/.deps/getdata.Plo | 230 ++ jni/common/.deps/gettext_init.Plo | 3 + jni/common/.deps/info.Plo | 339 +++ jni/common/.deps/iostream.Plo | 227 ++ jni/common/.deps/itemize.Plo | 230 ++ jni/common/.deps/objstack.Plo | 101 + jni/common/.deps/posib_err.Plo | 226 ++ jni/common/.deps/speller.Plo | 294 ++ jni/common/.deps/string.Plo | 215 ++ jni/common/.deps/string_list.Plo | 237 ++ jni/common/.deps/string_map.Plo | 242 ++ jni/common/.deps/strtonum.Plo | 71 + jni/common/.deps/tokenizer.Plo | 280 ++ jni/common/.dirstamp | 0 jni/common/Makefile | 4 + jni/common/Makefile.in | 4 + jni/common/asc_ctype.hpp | 44 + jni/common/basic_list.hpp | 68 + jni/common/block_slist-t.hpp | 55 + jni/common/block_slist.hpp | 76 + jni/common/cache-t.hpp | 101 + jni/common/cache.cpp | 122 + jni/common/cache.hpp | 86 + jni/common/cache.lo | 12 + jni/common/can_have_error.cpp | 30 + jni/common/can_have_error.hpp | 29 + jni/common/can_have_error.lo | 12 + jni/common/char_vector.hpp | 18 + jni/common/clone_ptr-t.hpp | 45 + jni/common/clone_ptr.hpp | 54 + jni/common/config.cpp | 1525 ++++++++++ jni/common/config.hpp | 281 ++ jni/common/config.lo | 12 + jni/common/convert.cpp | 1095 ++++++++ jni/common/convert.hpp | 417 +++ jni/common/convert.lo | 12 + jni/common/copy_ptr.hpp | 58 + jni/common/document_checker.cpp | 77 + jni/common/document_checker.hpp | 62 + jni/common/document_checker.lo | 12 + jni/common/enumeration.hpp | 123 + jni/common/error.cpp | 52 + jni/common/error.hpp | 37 + jni/common/error.lo | 12 + jni/common/errors.cpp | 700 +++++ jni/common/errors.hpp | 193 ++ jni/common/errors.lo | 12 + jni/common/file_data_util.cpp | 75 + jni/common/file_data_util.hpp | 20 + jni/common/file_data_util.lo | 12 + jni/common/file_util.cpp | 235 ++ jni/common/file_util.hpp | 63 + jni/common/file_util.lo | 12 + jni/common/filter.cpp | 139 + jni/common/filter.hpp | 67 + jni/common/filter.lo | 12 + jni/common/filter_char.hpp | 50 + jni/common/filter_char_vector.hpp | 41 + jni/common/filter_debug.hpp | 41 + jni/common/fstream.cpp | 149 + jni/common/fstream.hpp | 101 + jni/common/fstream.lo | 12 + jni/common/generic_copy_ptr-t.hpp | 63 + jni/common/generic_copy_ptr.hpp | 63 + jni/common/getdata.cpp | 193 ++ jni/common/getdata.hpp | 68 + jni/common/getdata.lo | 12 + jni/common/gettext.h | 100 + jni/common/gettext_init.cpp | 28 + jni/common/gettext_init.lo | 12 + jni/common/hash-t.hpp | 234 ++ jni/common/hash.hpp | 337 +++ jni/common/hash_fun.hpp | 53 + jni/common/indiv_filter.hpp | 100 + jni/common/info.cpp | 781 ++++++ jni/common/info.hpp | 147 + jni/common/info.lo | 12 + jni/common/iostream.cpp | 13 + jni/common/iostream.hpp | 24 + jni/common/iostream.lo | 12 + jni/common/istream.hpp | 35 + jni/common/itemize.cpp | 106 + jni/common/itemize.hpp | 20 + jni/common/itemize.lo | 12 + jni/common/key_info.hpp | 30 + jni/common/lock.hpp | 68 + jni/common/lsort.hpp | 164 ++ jni/common/mutable_container.hpp | 30 + jni/common/mutable_string.hpp | 76 + jni/common/ndebug.hpp | 8 + jni/common/objstack.cpp | 80 + jni/common/objstack.hpp | 171 ++ jni/common/objstack.lo | 12 + jni/common/ostream.hpp | 67 + jni/common/parm_string.hpp | 116 + jni/common/posib_err.cpp | 128 + jni/common/posib_err.hpp | 249 ++ jni/common/posib_err.lo | 12 + jni/common/simple_string.hpp | 65 + jni/common/speller.cpp | 18 + jni/common/speller.hpp | 131 + jni/common/speller.lo | 12 + jni/common/stack_ptr.hpp | 54 + jni/common/string.cpp | 86 + jni/common/string.hpp | 498 ++++ jni/common/string.lo | 12 + jni/common/string_enumeration.hpp | 39 + jni/common/string_list.cpp | 120 + jni/common/string_list.hpp | 100 + jni/common/string_list.lo | 12 + jni/common/string_map.cpp | 89 + jni/common/string_map.hpp | 125 + jni/common/string_map.lo | 12 + jni/common/string_pair.hpp | 25 + jni/common/string_pair_enumeration.hpp | 31 + jni/common/strtonum.cpp | 95 + jni/common/strtonum.hpp | 19 + jni/common/strtonum.lo | 12 + jni/common/tokenizer.cpp | 31 + jni/common/tokenizer.hpp | 72 + jni/common/tokenizer.lo | 12 + jni/common/type_id.hpp | 27 + jni/common/vararray.hpp | 54 + jni/common/vector.hpp | 61 + jni/common/word_list.hpp | 30 + jni/dirs.h | 4 + jni/lib/.deps/.dirstamp | 0 jni/lib/.deps/can_have_error-c.Plo | 16 + jni/lib/.deps/config-c.Plo | 249 ++ jni/lib/.deps/document_checker-c.Plo | 273 ++ jni/lib/.deps/dummy.Plo | 1 + jni/lib/.deps/error-c.Plo | 3 + jni/lib/.deps/filter-c.Plo | 266 ++ jni/lib/.deps/find_speller.Plo | 358 +++ jni/lib/.deps/info-c.Plo | 210 ++ jni/lib/.deps/mutable_container-c.Plo | 208 ++ jni/lib/.deps/new_checker.Plo | 291 ++ jni/lib/.deps/new_config.Plo | 271 ++ jni/lib/.deps/new_filter.Plo | 376 +++ jni/lib/.deps/new_fmode.Plo | 346 +++ jni/lib/.deps/speller-c.Plo | 292 ++ jni/lib/.deps/string_enumeration-c.Plo | 283 ++ jni/lib/.deps/string_list-c.Plo | 239 ++ jni/lib/.deps/string_map-c.Plo | 234 ++ jni/lib/.deps/string_pair_enumeration-c.Plo | 9 + jni/lib/.deps/word_list-c.Plo | 205 ++ jni/lib/.dirstamp | 0 jni/lib/Makefile | 4 + jni/lib/Makefile.in | 4 + jni/lib/can_have_error-c.cpp | 40 + jni/lib/can_have_error-c.lo | 12 + jni/lib/config-c.cpp | 172 ++ jni/lib/config-c.lo | 12 + jni/lib/document_checker-c.cpp | 78 + jni/lib/document_checker-c.lo | 12 + jni/lib/dummy.cpp | 1 + jni/lib/dummy.lo | 12 + jni/lib/error-c.cpp | 24 + jni/lib/error-c.lo | 12 + jni/lib/filter-c.cpp | 46 + jni/lib/filter-c.lo | 12 + jni/lib/filter_entry.hpp | 19 + jni/lib/find_speller.cpp | 494 ++++ jni/lib/find_speller.lo | 12 + jni/lib/info-c.cpp | 112 + jni/lib/info-c.lo | 12 + jni/lib/mutable_container-c.cpp | 39 + jni/lib/mutable_container-c.lo | 12 + jni/lib/new_checker.cpp | 26 + jni/lib/new_checker.lo | 12 + jni/lib/new_config.cpp | 24 + jni/lib/new_config.lo | 12 + jni/lib/new_filter.cpp | 544 ++++ jni/lib/new_filter.lo | 12 + jni/lib/new_fmode.cpp | 783 ++++++ jni/lib/new_fmode.lo | 12 + jni/lib/speller-c.cpp | 173 ++ jni/lib/speller-c.lo | 12 + jni/lib/string_enumeration-c.cpp | 52 + jni/lib/string_enumeration-c.lo | 12 + jni/lib/string_list-c.cpp | 76 + jni/lib/string_list-c.lo | 12 + jni/lib/string_map-c.cpp | 91 + jni/lib/string_map-c.lo | 12 + jni/lib/string_pair_enumeration-c.cpp | 44 + jni/lib/string_pair_enumeration-c.lo | 12 + jni/lib/word_list-c.cpp | 37 + jni/lib/word_list-c.lo | 12 + jni/modules/Makefile | 4 + jni/modules/Makefile.in | 4 + jni/modules/filter/.deps/.dirstamp | 0 jni/modules/filter/.deps/context.Plo | 302 ++ jni/modules/filter/.deps/email.Plo | 289 ++ jni/modules/filter/.deps/nroff.Plo | 303 ++ jni/modules/filter/.deps/sgml.Plo | 303 ++ jni/modules/filter/.deps/tex.Plo | 345 +++ jni/modules/filter/.deps/texinfo.Plo | 280 ++ jni/modules/filter/.deps/url.Plo | 219 ++ jni/modules/filter/.dirstamp | 0 jni/modules/filter/Makefile | 4 + jni/modules/filter/Makefile.in | 4 + jni/modules/filter/context-filter.info | 23 + jni/modules/filter/context.cpp | 267 ++ jni/modules/filter/context.lo | 12 + jni/modules/filter/email-filter.info | 23 + jni/modules/filter/email.cpp | 115 + jni/modules/filter/email.lo | 12 + jni/modules/filter/html-filter.info | 26 + jni/modules/filter/modes/ccpp.amf | 18 + jni/modules/filter/modes/comment.amf | 12 + jni/modules/filter/modes/email.amf | 8 + jni/modules/filter/modes/html.amf | 13 + jni/modules/filter/modes/none.amf | 5 + jni/modules/filter/modes/nroff.amf | 10 + jni/modules/filter/modes/perl.amf | 16 + jni/modules/filter/modes/sgml.amf | 12 + jni/modules/filter/modes/tex.amf | 10 + jni/modules/filter/modes/texinfo.amf | 10 + jni/modules/filter/modes/url.amf | 7 + jni/modules/filter/nroff-filter.info | 10 + jni/modules/filter/nroff.cpp | 312 +++ jni/modules/filter/nroff.lo | 12 + jni/modules/filter/sgml-filter.info | 23 + jni/modules/filter/sgml.cpp | 604 ++++ jni/modules/filter/sgml.lo | 12 + jni/modules/filter/tex-filter.info | 105 + jni/modules/filter/tex.cpp | 767 +++++ jni/modules/filter/tex.lo | 12 + jni/modules/filter/texinfo-filter.info | 52 + jni/modules/filter/texinfo.cpp | 231 ++ jni/modules/filter/texinfo.lo | 12 + jni/modules/filter/url-filter.info | 9 + jni/modules/filter/url.cpp | 66 + jni/modules/filter/url.lo | 12 + jni/modules/speller/Makefile | 4 + jni/modules/speller/Makefile.in | 4 + jni/modules/speller/default/.deps/.dirstamp | 0 jni/modules/speller/default/.deps/affix.Plo | 396 +++ jni/modules/speller/default/.deps/data.Plo | 389 +++ .../speller/default/.deps/editdist.Plo | 147 + .../speller/default/.deps/language.Plo | 375 +++ .../speller/default/.deps/leditdist.Plo | 8 + .../speller/default/.deps/multi_ws.Plo | 355 +++ jni/modules/speller/default/.deps/phonet.Plo | 335 +++ .../speller/default/.deps/phonetic.Plo | 338 +++ jni/modules/speller/default/.deps/primes.Plo | 136 + .../speller/default/.deps/readonly_ws.Plo | 437 +++ .../speller/default/.deps/speller_impl.Plo | 388 +++ jni/modules/speller/default/.deps/suggest.Plo | 433 +++ .../speller/default/.deps/typo_editdist.Plo | 360 +++ .../speller/default/.deps/writable.Plo | 381 +++ jni/modules/speller/default/.dirstamp | 0 jni/modules/speller/default/Makefile | 4 + jni/modules/speller/default/Makefile.in | 4 + jni/modules/speller/default/affix.cpp | 1439 ++++++++++ jni/modules/speller/default/affix.hpp | 130 + jni/modules/speller/default/affix.lo | 12 + jni/modules/speller/default/asuggest.hpp | 58 + jni/modules/speller/default/block_vector.hpp | 54 + jni/modules/speller/default/check_list.hpp | 47 + jni/modules/speller/default/data.cpp | 468 ++++ jni/modules/speller/default/data.hpp | 223 ++ jni/modules/speller/default/data.lo | 12 + jni/modules/speller/default/data_id.hpp | 29 + jni/modules/speller/default/data_util.hpp | 46 + jni/modules/speller/default/editdist.cpp | 56 + jni/modules/speller/default/editdist.hpp | 30 + jni/modules/speller/default/editdist.lo | 12 + jni/modules/speller/default/editdist2.hpp | 28 + jni/modules/speller/default/language.cpp | 742 +++++ jni/modules/speller/default/language.hpp | 476 ++++ jni/modules/speller/default/language.lo | 12 + jni/modules/speller/default/leditdist.cpp | 308 ++ jni/modules/speller/default/leditdist.hpp | 68 + jni/modules/speller/default/leditdist.lo | 12 + jni/modules/speller/default/matrix.hpp | 22 + jni/modules/speller/default/multi_ws.cpp | 88 + jni/modules/speller/default/multi_ws.lo | 12 + jni/modules/speller/default/phonet.cpp | 472 ++++ jni/modules/speller/default/phonet.hpp | 70 + jni/modules/speller/default/phonet.lo | 12 + jni/modules/speller/default/phonetic.cpp | 208 ++ jni/modules/speller/default/phonetic.hpp | 32 + jni/modules/speller/default/phonetic.lo | 12 + jni/modules/speller/default/primes.cpp | 51 + jni/modules/speller/default/primes.hpp | 129 + jni/modules/speller/default/primes.lo | 12 + jni/modules/speller/default/readonly_ws.cpp | 1191 ++++++++ jni/modules/speller/default/readonly_ws.lo | 12 + jni/modules/speller/default/speller_impl.cpp | 742 +++++ jni/modules/speller/default/speller_impl.hpp | 262 ++ jni/modules/speller/default/speller_impl.lo | 12 + jni/modules/speller/default/suggest.cpp | 1430 ++++++++++ jni/modules/speller/default/suggest.hpp | 44 + jni/modules/speller/default/suggest.lo | 12 + jni/modules/speller/default/typo_editdist.cpp | 196 ++ jni/modules/speller/default/typo_editdist.hpp | 78 + jni/modules/speller/default/typo_editdist.lo | 12 + jni/modules/speller/default/vector_hash-t.hpp | 191 ++ jni/modules/speller/default/vector_hash.hpp | 291 ++ jni/modules/speller/default/weights.hpp | 23 + jni/modules/speller/default/wordinfo.hpp | 60 + jni/modules/speller/default/writable.cpp | 940 +++++++ jni/modules/speller/default/writable.lo | 12 + jni/modules/tokenizer/.deps/.dirstamp | 0 jni/modules/tokenizer/.deps/basic.Plo | 286 ++ jni/modules/tokenizer/.dirstamp | 0 jni/modules/tokenizer/Makefile | 4 + jni/modules/tokenizer/Makefile.in | 4 + jni/modules/tokenizer/basic.cpp | 80 + jni/modules/tokenizer/basic.lo | 12 + jni/native.cpp | 193 ++ jni/settings.h | 162 ++ proguard.cfg | 40 + project.properties | 11 + readme.rst | 1 + res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4147 bytes res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1723 bytes res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2574 bytes res/values/dictionaries.xml | 194 ++ res/values/strings.xml | 7 + res/xml/prefs.xml | 26 + res/xml/spellchecker.xml | 12 + src/gr/padeler/aspellchecker/ASpell.java | 42 + .../aspellchecker/ASpellCheckerActivity.java | 14 + .../aspellchecker/ASpellCheckerService.java | 215 ++ .../ASpellCheckerSettingsFragment.java | 27 + 413 files changed, 105862 insertions(+) create mode 100644 .classpath create mode 100644 .cproject create mode 100644 .gitignore create mode 100644 .project create mode 100644 AndroidManifest.xml create mode 100644 LICENSE create mode 100644 aspellchecker_logo.png create mode 100644 assets/data/cp1250.cmap create mode 100644 assets/data/cp1250.cset create mode 100644 assets/data/cp1251.cmap create mode 100644 assets/data/cp1251.cset create mode 100644 assets/data/cp1252.cmap create mode 100644 assets/data/cp1252.cset create mode 100644 assets/data/cp1253.cmap create mode 100644 assets/data/cp1253.cset create mode 100644 assets/data/cp1254.cmap create mode 100644 assets/data/cp1254.cset create mode 100644 assets/data/cp1255.cmap create mode 100644 assets/data/cp1255.cset create mode 100644 assets/data/cp1256.cmap create mode 100644 assets/data/cp1256.cset create mode 100644 assets/data/cp1257.cmap create mode 100644 assets/data/cp1257.cset create mode 100644 assets/data/cp1258.cmap create mode 100644 assets/data/cp1258.cset create mode 100644 assets/data/dvorak.kbd create mode 100644 assets/data/iso-8859-1.cmap create mode 100644 assets/data/iso-8859-1.cset create mode 100644 assets/data/iso-8859-10.cmap create mode 100644 assets/data/iso-8859-10.cset create mode 100644 assets/data/iso-8859-11.cmap create mode 100644 assets/data/iso-8859-11.cset create mode 100644 assets/data/iso-8859-13.cmap create mode 100644 assets/data/iso-8859-13.cset create mode 100644 assets/data/iso-8859-14.cmap create mode 100644 assets/data/iso-8859-14.cset create mode 100644 assets/data/iso-8859-15.cmap create mode 100644 assets/data/iso-8859-15.cset create mode 100644 assets/data/iso-8859-16.cmap create mode 100644 assets/data/iso-8859-16.cset create mode 100644 assets/data/iso-8859-2.cmap create mode 100644 assets/data/iso-8859-2.cset create mode 100644 assets/data/iso-8859-3.cmap create mode 100644 assets/data/iso-8859-3.cset create mode 100644 assets/data/iso-8859-4.cmap create mode 100644 assets/data/iso-8859-4.cset create mode 100644 assets/data/iso-8859-5.cmap create mode 100644 assets/data/iso-8859-5.cset create mode 100644 assets/data/iso-8859-6.cmap create mode 100644 assets/data/iso-8859-6.cset create mode 100644 assets/data/iso-8859-7.cmap create mode 100644 assets/data/iso-8859-7.cset create mode 100644 assets/data/iso-8859-8.cmap create mode 100644 assets/data/iso-8859-8.cset create mode 100644 assets/data/iso-8859-9.cmap create mode 100644 assets/data/iso-8859-9.cset create mode 100644 assets/data/koi8-r.cmap create mode 100644 assets/data/koi8-r.cset create mode 100644 assets/data/koi8-u.cmap create mode 100644 assets/data/koi8-u.cset create mode 100644 assets/data/split.kbd create mode 100644 assets/data/standard.kbd create mode 100644 assets/data/sv.dat create mode 100644 assets/data/sv.multi create mode 100644 assets/data/sv.rws create mode 100644 assets/data/sv_phonet.dat create mode 100644 assets/data/svenska.alias create mode 100644 assets/data/swedish.alias create mode 100644 gen/gr/padeler/aspellchecker/BuildConfig.java create mode 100644 gen/gr/padeler/aspellchecker/R.java create mode 100644 jni/Android.mk create mode 100644 jni/Application.mk create mode 100644 jni/aspell.cpp create mode 100644 jni/aspell.h create mode 100644 jni/common/.deps/.dirstamp create mode 100644 jni/common/.deps/cache.Plo create mode 100644 jni/common/.deps/can_have_error.Plo create mode 100644 jni/common/.deps/config.Plo create mode 100644 jni/common/.deps/convert.Plo create mode 100644 jni/common/.deps/document_checker.Plo create mode 100644 jni/common/.deps/error.Plo create mode 100644 jni/common/.deps/errors.Plo create mode 100644 jni/common/.deps/file_data_util.Plo create mode 100644 jni/common/.deps/file_util.Plo create mode 100644 jni/common/.deps/filter.Plo create mode 100644 jni/common/.deps/fstream.Plo create mode 100644 jni/common/.deps/getdata.Plo create mode 100644 jni/common/.deps/gettext_init.Plo create mode 100644 jni/common/.deps/info.Plo create mode 100644 jni/common/.deps/iostream.Plo create mode 100644 jni/common/.deps/itemize.Plo create mode 100644 jni/common/.deps/objstack.Plo create mode 100644 jni/common/.deps/posib_err.Plo create mode 100644 jni/common/.deps/speller.Plo create mode 100644 jni/common/.deps/string.Plo create mode 100644 jni/common/.deps/string_list.Plo create mode 100644 jni/common/.deps/string_map.Plo create mode 100644 jni/common/.deps/strtonum.Plo create mode 100644 jni/common/.deps/tokenizer.Plo create mode 100644 jni/common/.dirstamp create mode 100644 jni/common/Makefile create mode 100644 jni/common/Makefile.in create mode 100644 jni/common/asc_ctype.hpp create mode 100644 jni/common/basic_list.hpp create mode 100644 jni/common/block_slist-t.hpp create mode 100644 jni/common/block_slist.hpp create mode 100644 jni/common/cache-t.hpp create mode 100644 jni/common/cache.cpp create mode 100644 jni/common/cache.hpp create mode 100644 jni/common/cache.lo create mode 100644 jni/common/can_have_error.cpp create mode 100644 jni/common/can_have_error.hpp create mode 100644 jni/common/can_have_error.lo create mode 100644 jni/common/char_vector.hpp create mode 100644 jni/common/clone_ptr-t.hpp create mode 100644 jni/common/clone_ptr.hpp create mode 100644 jni/common/config.cpp create mode 100644 jni/common/config.hpp create mode 100644 jni/common/config.lo create mode 100644 jni/common/convert.cpp create mode 100644 jni/common/convert.hpp create mode 100644 jni/common/convert.lo create mode 100644 jni/common/copy_ptr.hpp create mode 100644 jni/common/document_checker.cpp create mode 100644 jni/common/document_checker.hpp create mode 100644 jni/common/document_checker.lo create mode 100644 jni/common/enumeration.hpp create mode 100644 jni/common/error.cpp create mode 100644 jni/common/error.hpp create mode 100644 jni/common/error.lo create mode 100644 jni/common/errors.cpp create mode 100644 jni/common/errors.hpp create mode 100644 jni/common/errors.lo create mode 100644 jni/common/file_data_util.cpp create mode 100644 jni/common/file_data_util.hpp create mode 100644 jni/common/file_data_util.lo create mode 100644 jni/common/file_util.cpp create mode 100644 jni/common/file_util.hpp create mode 100644 jni/common/file_util.lo create mode 100644 jni/common/filter.cpp create mode 100644 jni/common/filter.hpp create mode 100644 jni/common/filter.lo create mode 100644 jni/common/filter_char.hpp create mode 100644 jni/common/filter_char_vector.hpp create mode 100644 jni/common/filter_debug.hpp create mode 100644 jni/common/fstream.cpp create mode 100644 jni/common/fstream.hpp create mode 100644 jni/common/fstream.lo create mode 100644 jni/common/generic_copy_ptr-t.hpp create mode 100644 jni/common/generic_copy_ptr.hpp create mode 100644 jni/common/getdata.cpp create mode 100644 jni/common/getdata.hpp create mode 100644 jni/common/getdata.lo create mode 100644 jni/common/gettext.h create mode 100644 jni/common/gettext_init.cpp create mode 100644 jni/common/gettext_init.lo create mode 100644 jni/common/hash-t.hpp create mode 100644 jni/common/hash.hpp create mode 100644 jni/common/hash_fun.hpp create mode 100644 jni/common/indiv_filter.hpp create mode 100644 jni/common/info.cpp create mode 100644 jni/common/info.hpp create mode 100644 jni/common/info.lo create mode 100644 jni/common/iostream.cpp create mode 100644 jni/common/iostream.hpp create mode 100644 jni/common/iostream.lo create mode 100644 jni/common/istream.hpp create mode 100644 jni/common/itemize.cpp create mode 100644 jni/common/itemize.hpp create mode 100644 jni/common/itemize.lo create mode 100644 jni/common/key_info.hpp create mode 100644 jni/common/lock.hpp create mode 100644 jni/common/lsort.hpp create mode 100644 jni/common/mutable_container.hpp create mode 100644 jni/common/mutable_string.hpp create mode 100644 jni/common/ndebug.hpp create mode 100644 jni/common/objstack.cpp create mode 100644 jni/common/objstack.hpp create mode 100644 jni/common/objstack.lo create mode 100644 jni/common/ostream.hpp create mode 100644 jni/common/parm_string.hpp create mode 100644 jni/common/posib_err.cpp create mode 100644 jni/common/posib_err.hpp create mode 100644 jni/common/posib_err.lo create mode 100644 jni/common/simple_string.hpp create mode 100644 jni/common/speller.cpp create mode 100644 jni/common/speller.hpp create mode 100644 jni/common/speller.lo create mode 100644 jni/common/stack_ptr.hpp create mode 100644 jni/common/string.cpp create mode 100644 jni/common/string.hpp create mode 100644 jni/common/string.lo create mode 100644 jni/common/string_enumeration.hpp create mode 100644 jni/common/string_list.cpp create mode 100644 jni/common/string_list.hpp create mode 100644 jni/common/string_list.lo create mode 100644 jni/common/string_map.cpp create mode 100644 jni/common/string_map.hpp create mode 100644 jni/common/string_map.lo create mode 100644 jni/common/string_pair.hpp create mode 100644 jni/common/string_pair_enumeration.hpp create mode 100644 jni/common/strtonum.cpp create mode 100644 jni/common/strtonum.hpp create mode 100644 jni/common/strtonum.lo create mode 100644 jni/common/tokenizer.cpp create mode 100644 jni/common/tokenizer.hpp create mode 100644 jni/common/tokenizer.lo create mode 100644 jni/common/type_id.hpp create mode 100644 jni/common/vararray.hpp create mode 100644 jni/common/vector.hpp create mode 100644 jni/common/word_list.hpp create mode 100644 jni/dirs.h create mode 100644 jni/lib/.deps/.dirstamp create mode 100644 jni/lib/.deps/can_have_error-c.Plo create mode 100644 jni/lib/.deps/config-c.Plo create mode 100644 jni/lib/.deps/document_checker-c.Plo create mode 100644 jni/lib/.deps/dummy.Plo create mode 100644 jni/lib/.deps/error-c.Plo create mode 100644 jni/lib/.deps/filter-c.Plo create mode 100644 jni/lib/.deps/find_speller.Plo create mode 100644 jni/lib/.deps/info-c.Plo create mode 100644 jni/lib/.deps/mutable_container-c.Plo create mode 100644 jni/lib/.deps/new_checker.Plo create mode 100644 jni/lib/.deps/new_config.Plo create mode 100644 jni/lib/.deps/new_filter.Plo create mode 100644 jni/lib/.deps/new_fmode.Plo create mode 100644 jni/lib/.deps/speller-c.Plo create mode 100644 jni/lib/.deps/string_enumeration-c.Plo create mode 100644 jni/lib/.deps/string_list-c.Plo create mode 100644 jni/lib/.deps/string_map-c.Plo create mode 100644 jni/lib/.deps/string_pair_enumeration-c.Plo create mode 100644 jni/lib/.deps/word_list-c.Plo create mode 100644 jni/lib/.dirstamp create mode 100644 jni/lib/Makefile create mode 100644 jni/lib/Makefile.in create mode 100644 jni/lib/can_have_error-c.cpp create mode 100644 jni/lib/can_have_error-c.lo create mode 100644 jni/lib/config-c.cpp create mode 100644 jni/lib/config-c.lo create mode 100644 jni/lib/document_checker-c.cpp create mode 100644 jni/lib/document_checker-c.lo create mode 100644 jni/lib/dummy.cpp create mode 100644 jni/lib/dummy.lo create mode 100644 jni/lib/error-c.cpp create mode 100644 jni/lib/error-c.lo create mode 100644 jni/lib/filter-c.cpp create mode 100644 jni/lib/filter-c.lo create mode 100644 jni/lib/filter_entry.hpp create mode 100644 jni/lib/find_speller.cpp create mode 100644 jni/lib/find_speller.lo create mode 100644 jni/lib/info-c.cpp create mode 100644 jni/lib/info-c.lo create mode 100644 jni/lib/mutable_container-c.cpp create mode 100644 jni/lib/mutable_container-c.lo create mode 100644 jni/lib/new_checker.cpp create mode 100644 jni/lib/new_checker.lo create mode 100644 jni/lib/new_config.cpp create mode 100644 jni/lib/new_config.lo create mode 100644 jni/lib/new_filter.cpp create mode 100644 jni/lib/new_filter.lo create mode 100644 jni/lib/new_fmode.cpp create mode 100644 jni/lib/new_fmode.lo create mode 100644 jni/lib/speller-c.cpp create mode 100644 jni/lib/speller-c.lo create mode 100644 jni/lib/string_enumeration-c.cpp create mode 100644 jni/lib/string_enumeration-c.lo create mode 100644 jni/lib/string_list-c.cpp create mode 100644 jni/lib/string_list-c.lo create mode 100644 jni/lib/string_map-c.cpp create mode 100644 jni/lib/string_map-c.lo create mode 100644 jni/lib/string_pair_enumeration-c.cpp create mode 100644 jni/lib/string_pair_enumeration-c.lo create mode 100644 jni/lib/word_list-c.cpp create mode 100644 jni/lib/word_list-c.lo create mode 100644 jni/modules/Makefile create mode 100644 jni/modules/Makefile.in create mode 100644 jni/modules/filter/.deps/.dirstamp create mode 100644 jni/modules/filter/.deps/context.Plo create mode 100644 jni/modules/filter/.deps/email.Plo create mode 100644 jni/modules/filter/.deps/nroff.Plo create mode 100644 jni/modules/filter/.deps/sgml.Plo create mode 100644 jni/modules/filter/.deps/tex.Plo create mode 100644 jni/modules/filter/.deps/texinfo.Plo create mode 100644 jni/modules/filter/.deps/url.Plo create mode 100644 jni/modules/filter/.dirstamp create mode 100644 jni/modules/filter/Makefile create mode 100644 jni/modules/filter/Makefile.in create mode 100644 jni/modules/filter/context-filter.info create mode 100644 jni/modules/filter/context.cpp create mode 100644 jni/modules/filter/context.lo create mode 100644 jni/modules/filter/email-filter.info create mode 100644 jni/modules/filter/email.cpp create mode 100644 jni/modules/filter/email.lo create mode 100644 jni/modules/filter/html-filter.info create mode 100644 jni/modules/filter/modes/ccpp.amf create mode 100644 jni/modules/filter/modes/comment.amf create mode 100644 jni/modules/filter/modes/email.amf create mode 100644 jni/modules/filter/modes/html.amf create mode 100644 jni/modules/filter/modes/none.amf create mode 100644 jni/modules/filter/modes/nroff.amf create mode 100644 jni/modules/filter/modes/perl.amf create mode 100644 jni/modules/filter/modes/sgml.amf create mode 100644 jni/modules/filter/modes/tex.amf create mode 100644 jni/modules/filter/modes/texinfo.amf create mode 100644 jni/modules/filter/modes/url.amf create mode 100644 jni/modules/filter/nroff-filter.info create mode 100644 jni/modules/filter/nroff.cpp create mode 100644 jni/modules/filter/nroff.lo create mode 100644 jni/modules/filter/sgml-filter.info create mode 100644 jni/modules/filter/sgml.cpp create mode 100644 jni/modules/filter/sgml.lo create mode 100644 jni/modules/filter/tex-filter.info create mode 100644 jni/modules/filter/tex.cpp create mode 100644 jni/modules/filter/tex.lo create mode 100644 jni/modules/filter/texinfo-filter.info create mode 100644 jni/modules/filter/texinfo.cpp create mode 100644 jni/modules/filter/texinfo.lo create mode 100644 jni/modules/filter/url-filter.info create mode 100644 jni/modules/filter/url.cpp create mode 100644 jni/modules/filter/url.lo create mode 100644 jni/modules/speller/Makefile create mode 100644 jni/modules/speller/Makefile.in create mode 100644 jni/modules/speller/default/.deps/.dirstamp create mode 100644 jni/modules/speller/default/.deps/affix.Plo create mode 100644 jni/modules/speller/default/.deps/data.Plo create mode 100644 jni/modules/speller/default/.deps/editdist.Plo create mode 100644 jni/modules/speller/default/.deps/language.Plo create mode 100644 jni/modules/speller/default/.deps/leditdist.Plo create mode 100644 jni/modules/speller/default/.deps/multi_ws.Plo create mode 100644 jni/modules/speller/default/.deps/phonet.Plo create mode 100644 jni/modules/speller/default/.deps/phonetic.Plo create mode 100644 jni/modules/speller/default/.deps/primes.Plo create mode 100644 jni/modules/speller/default/.deps/readonly_ws.Plo create mode 100644 jni/modules/speller/default/.deps/speller_impl.Plo create mode 100644 jni/modules/speller/default/.deps/suggest.Plo create mode 100644 jni/modules/speller/default/.deps/typo_editdist.Plo create mode 100644 jni/modules/speller/default/.deps/writable.Plo create mode 100644 jni/modules/speller/default/.dirstamp create mode 100644 jni/modules/speller/default/Makefile create mode 100644 jni/modules/speller/default/Makefile.in create mode 100644 jni/modules/speller/default/affix.cpp create mode 100644 jni/modules/speller/default/affix.hpp create mode 100644 jni/modules/speller/default/affix.lo create mode 100644 jni/modules/speller/default/asuggest.hpp create mode 100644 jni/modules/speller/default/block_vector.hpp create mode 100644 jni/modules/speller/default/check_list.hpp create mode 100644 jni/modules/speller/default/data.cpp create mode 100644 jni/modules/speller/default/data.hpp create mode 100644 jni/modules/speller/default/data.lo create mode 100644 jni/modules/speller/default/data_id.hpp create mode 100644 jni/modules/speller/default/data_util.hpp create mode 100644 jni/modules/speller/default/editdist.cpp create mode 100644 jni/modules/speller/default/editdist.hpp create mode 100644 jni/modules/speller/default/editdist.lo create mode 100644 jni/modules/speller/default/editdist2.hpp create mode 100644 jni/modules/speller/default/language.cpp create mode 100644 jni/modules/speller/default/language.hpp create mode 100644 jni/modules/speller/default/language.lo create mode 100644 jni/modules/speller/default/leditdist.cpp create mode 100644 jni/modules/speller/default/leditdist.hpp create mode 100644 jni/modules/speller/default/leditdist.lo create mode 100644 jni/modules/speller/default/matrix.hpp create mode 100644 jni/modules/speller/default/multi_ws.cpp create mode 100644 jni/modules/speller/default/multi_ws.lo create mode 100644 jni/modules/speller/default/phonet.cpp create mode 100644 jni/modules/speller/default/phonet.hpp create mode 100644 jni/modules/speller/default/phonet.lo create mode 100644 jni/modules/speller/default/phonetic.cpp create mode 100644 jni/modules/speller/default/phonetic.hpp create mode 100644 jni/modules/speller/default/phonetic.lo create mode 100644 jni/modules/speller/default/primes.cpp create mode 100644 jni/modules/speller/default/primes.hpp create mode 100644 jni/modules/speller/default/primes.lo create mode 100644 jni/modules/speller/default/readonly_ws.cpp create mode 100644 jni/modules/speller/default/readonly_ws.lo create mode 100644 jni/modules/speller/default/speller_impl.cpp create mode 100644 jni/modules/speller/default/speller_impl.hpp create mode 100644 jni/modules/speller/default/speller_impl.lo create mode 100644 jni/modules/speller/default/suggest.cpp create mode 100644 jni/modules/speller/default/suggest.hpp create mode 100644 jni/modules/speller/default/suggest.lo create mode 100644 jni/modules/speller/default/typo_editdist.cpp create mode 100644 jni/modules/speller/default/typo_editdist.hpp create mode 100644 jni/modules/speller/default/typo_editdist.lo create mode 100644 jni/modules/speller/default/vector_hash-t.hpp create mode 100644 jni/modules/speller/default/vector_hash.hpp create mode 100644 jni/modules/speller/default/weights.hpp create mode 100644 jni/modules/speller/default/wordinfo.hpp create mode 100644 jni/modules/speller/default/writable.cpp create mode 100644 jni/modules/speller/default/writable.lo create mode 100644 jni/modules/tokenizer/.deps/.dirstamp create mode 100644 jni/modules/tokenizer/.deps/basic.Plo create mode 100644 jni/modules/tokenizer/.dirstamp create mode 100644 jni/modules/tokenizer/Makefile create mode 100644 jni/modules/tokenizer/Makefile.in create mode 100644 jni/modules/tokenizer/basic.cpp create mode 100644 jni/modules/tokenizer/basic.lo create mode 100644 jni/native.cpp create mode 100644 jni/settings.h create mode 100644 proguard.cfg create mode 100644 project.properties create mode 100644 readme.rst create mode 100644 res/drawable-hdpi/ic_launcher.png create mode 100644 res/drawable-ldpi/ic_launcher.png create mode 100644 res/drawable-mdpi/ic_launcher.png create mode 100644 res/values/dictionaries.xml create mode 100644 res/values/strings.xml create mode 100644 res/xml/prefs.xml create mode 100644 res/xml/spellchecker.xml create mode 100644 src/gr/padeler/aspellchecker/ASpell.java create mode 100644 src/gr/padeler/aspellchecker/ASpellCheckerActivity.java create mode 100644 src/gr/padeler/aspellchecker/ASpellCheckerService.java create mode 100644 src/gr/padeler/aspellchecker/ASpellCheckerSettingsFragment.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..a4763d1 --- /dev/null +++ b/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..d313d12 --- /dev/null +++ b/.cproject @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6db0486 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/libs/ +/obj/ diff --git a/.project b/.project new file mode 100644 index 0000000..a1333d6 --- /dev/null +++ b/.project @@ -0,0 +1,49 @@ + + + ASpellChecker + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/AndroidManifest.xml b/AndroidManifest.xml new file mode 100644 index 0000000..1696b14 --- /dev/null +++ b/AndroidManifest.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/aspellchecker_logo.png b/aspellchecker_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0badda48b74b33fee6cff9e09ea3ebd11b48e3 GIT binary patch literal 36625 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

4m~Y3=V-W6|u6UA4!IsZJYrk#L|g70)9bH(^H}` z?S5=Dw&<&sod#_U9?O?TJDDiAL(Luf{)zE?wT1K_sX+>KL%>;_EoBiC90|BZsa42= zqs>XstKW}>k`Co~91dF{O`-0-K2RZafZ~QRyeu1d*>oCS?T_ay>?u4)sp-t-ow8D; z+)X9-8V>;ZWWgAdhARK9&%{f2gXYKf6@b$q(|D8WD)28El@~hFo|U;4d35-`%^0=J z3 z{Y$pz?w{?)C?-?@r?)h>{3Ic|@~_D(hIn>s^V7_E#yGEpN%l!STEbD0(X~Tpu{9D= zuVyV?s8XL?oJCrKmWmV)Wy(Hz(AL8s?87z>__}u$JUfMdkm68DPB=dl%_p(r1#jA- z|Eb|{2J(a=N{u2mSM9tGDY~Sb&f|u5&!L%r~}kw zJT%;lYvCpPiN(7jlXlH(+U51riqNfscD0MAAETFS4V+!a08;%=*&y6HelcYJb!bAG z@#nC^OhulDs?HgEJ$ul!H8%WG*mH*|LL$RNyXvxRe^*e1aGv^~oj{D(Y#aZY#zx`w z7-jDZcDg}XiT=f-v2KKxSWZ~?0_UVjyOm_-9};{~Y~KMQDKy1@09+-}qoZbA3Lyiu zwXNe&SS@b@Du4_*_!uI#_}z32zue?>w-D}{_#s)R46eIBlZ6dTpI)jueFozc5nH;= zdVB7!H_xFuo__6PynXQ!!qLebvbpt$OxnAN8bxDCPx9)AJMU07~W|)!w)}| z$nV<^PT6@`5kHmn&dLBqn~+qMcPvGG6V;4kDfRxN?;XkU!gM|AQ{1#-yj6x`K8UxiQ5&a0I( zti%TCn+j~?H@s8{zDU>D>L+ZjEy@9M=4f7V>XL$|%wnAinyfJi)w--a{}ArvClTSh ze%phd+l0~*CzZ1?{_Sieh4ebj_K3T`nrs?J#tx7dz{?HW7%TF0XHTnr^yoM-Twc1o z{NakDe9??r^g2=?P>_S4i`c;c=~}NggHtfp&(1vkNO1RVRy!2XRVn~=*5kE%4qf%H zl{5R2&wVRnu^)1^k}qjScZbU*#a+8=H z?w{B*ifg~hT*|HC_&U#Z<94|G+KT2Xo-oRfk#fE()2{C5+3TJ0@M`DnWXlqu!(*f(ut6`1>cPOxo}AM0q-&XU>Mrb?*l5KacKcA^orn6W z)AC2GMS)4?2S(dk9ci`VF*k~GP;3kPTQw$zhX<IdJ(zvkFGhIwk#&#W`+tVAn zs7BDBoAh0G!o+E>NXdED#aV2x?0?b-N!$99&iqF1vhDBykx5N01L;rf~Ru3Tkc3SO~<_=OP(uqzhVJ)Ff~ClWc%WVf3{6NbNUsDwT~~tqWbfx2 z9uOssC^MLqC)5>3lmys%Lrr|oJ7Xu#_?0Gx7DAC$QCZ{yIqnR}CNg=BD7#pk=*2^y z>2EW?0e%FiEPQglQ5|F0K$NC0pgRA}(yc!~uC_;#2^&`>nX8`cb-eZR5_BXo@ zms9pAysJ|)kZ`l5YX7CsA$-{Q^cufdc8{WB1u*I~yyKL=(5i}Yjjf*(2jh-YDK==R z*U%TIS#Nk#DB9Natl(S=Se@jKHu$IOO$gmprGlRPJ<>GWONduhq|c6oc7xnkIVj2m z86-#ZXoK4#lc34kp9(NBuPQX5<>6e#flv$TdJXRSr_+t}Z6Hw*Up%Gl{uzJ$0#sSd zZf%Ia`>&CwW`CG$;EOG}Q*3bz#(hExlB!hs0=zF-I?^sL;MwdpeJEfP{yMm5k(xN5 zBAytbS0O5mnrlNH+$PSM&Iss2r)`LTcNvOfDvk6N- zt4odh=hWl-?BH|2pvZb)R9%Xa-C~urum3}6H7T|O18$tILOyHvIkXkJzx4u)gOn;lPNWH?wwD51R=$h~<$JKNjYNbry6j&; z1_>5lgKAeCirCy@EVpySU6Egl7zZp#YkeoOvxZ6T=Gz4eG{+tX=!(nnjF`FAwM#<- ziOSmFxk%wFO0DAzIX;N}{!duvu0EjhFI6ZjYTkj~%z4mT6iKZ8_`dKuRqHY%_2eJ2e--bV&<1r zM?2TLLWCuvI3sN;_7kWK_Y_V*+kwG3g+jjlnRC#M>uk;%khMg6lJ!=)BjA3GKz zU2aL|?5ne1euD+Dyl!ms;<+W{RY@OsAGmP;%cLn}u3zGCs%L_0{0KO16fd+vP? z+H_kd9*P56Hz>9z(RO5e$3!ooG;ibvP z$XQ^0VB$3p#L!q!d`>ue-=ave-MQ_iYyN}AC}-oM*0!;%038ON zNFvo3+wT)f)Y>g<)@Azg=8{C7tpow@wFYCJ*l4g!dMHGj(e*j1?82#$zkT~xjIfx; zA;Q6ouamTJQ&?BT(yz|F-aF}NbU}uKB;2Ew>#gy~njj#$Bt3b|dlTI*xcdgkI?V#HV<{Z-ukw62R@1lgZ*RtW64e_txi}yL8t^wLGvVhn5&F%7AoY86gL}oDM zV-22>R{;U(XDX&~BHPVcSgL)t<&oINZ#hFFOobA8vomX-Ge^QZtySK)d035qs{NN` ztIdox|8f1vWsWU+btp zB*aE1v%R*S&SAbRG0L;JCi?@J>rc);+o2~h7F;aociM}J|Fq;>KUh{lk_>N3xBP2*2#vPq9I=d)6gqWjDqpI2W`l=!G>GA)-o8@D1V{_Q=%imACiwKxZ`&qgzB*aeyIB%DZ?hj3a992Qgbb7$CH@9BTu(%aiYrGXVE6@Jrz-g95Fww-Kg;}f6^8RgI>8N`d z@Ly3!|7{8udTVmEhpxYf^g3Ppf$}_@H$|K!56^&J!Rz_zbd&n+-|XmA<~L57-~;No zuQ12>aGIogu(`J9e@;mC0$h;`Fh09r^iQfO=jg>`O0*2hG@HulEoSyz4{}%{R#t$U z=GE^_&l;Fm*mP9Alh$=P;NYi&Vs<@{YUA9M`*l{fi$msMG&|elbNvuoe=pT?{j~F3 zxI8V6o@+DvHaaQqyzJ)Ib{o6maX3!o^ISUW2_D38?B=RpN{KxAE3^4zX5Or&=^e=1 z`h(-x+0ZK|VQ^m4|5$wW?_yr0S6Mt>$Bi%ZU2LSZYke#4B`a_ znwsPe^q@Gkr!+x(-bN7*7nrm_18tqM`z=(ISV5T$;_UiY)Ts8OQ41o$(wI-=z`95M zmw}`ocAP6SwYz>&+#!ZW}T(F^oM|zy766CsD(sHX^oC#C}osFq=gVEzy%G?6sSF>P0_m!tAkd4_v@N@ z8&jqMie9ZPYKOChcALDwayTan6UV6=?|f@);snh!8aLRY=Q}J}E82Jj1yi^hGZ`6t zB z`l(XdHt~BNT}iudT!{G0dDU08kxwSH`|Tm%LTDV^k?dQLL!0LMJDP_CJ2ZVe{k9ImX?DGhfhRNfUy3gG#g7A;?SvBO&gO8}wDIqX`7yL19|f0N4dejM{HZsrNQK} z3fNf~mPf+g4hi5hzSq`tZgBNdi>HD=l<-Z5S3o9CV>s((4|c(xY`04ZM;K47WsO9WC7q= z*_Cr3*okEJQtGON1}_cHj34-4S40qE?%{Msu)OkOXoe8#W9M!I_OB^EsHf~1e{;za zj^jb_GXa!j0%3FNvwA!~+SE7drLulQWY@9CS1FLykhr)>K3uZ! zBw%o%_N5tZC3RrvP>;B2mzAW=oUQjg_V5VaTo5+5RQZbh6*TVTz3_uvv~E{c_$8M( zv@ZhmT3p+YkiBXC5Cnputq(9(U1RVjbH&D-=dp6PK=m7MVJ`_|6iqZHKgXp zVF7iAel+!N;_O~cw8b*|;yx0v(xOLGecKCOHvIOaIvOkls1+W zp;Q`WFfp*il&OWvnG1Gu#x8{NAyb@lyWfyRaZG>Eg|E^cZW_p!?aae7w^n3Joge>l zBuWL0hlre)EmpwLX}g$XO{exar@`6bjnFdrD8myZ5H4COqgsHo+jN`1OEEXy8+FNs zg_7?0DYNaJ$8EbR9D2tm`yX0EowkQAXrYWjq-C0qQrOY1+VGI>+(97mZ8W?xsr^&X zWvjHKv9;>JP1^IyStCd9eAmk-J6=0#+TQ}Q=<8j5%q|N=xuFPteE__9AZgms;Ays} zz1hnZvnhRc2A=%TKwbkU9{C~C7zOR9;|OeC@3?9&*K3hmxy z{l){*CseM-m5uDzWhPCw1c9wm0hQ)>`yYnq9l<~nX>%1oNS!NA9Hzk(!jV+~JiPhp zoH}=}OKk^uinZ)gQeXTIZJO(Wq}P!SuMv4|5LLayP5byJ=!Klm<~QYwuNOqqXH^;s zNI&2)1~wZ2#5yDXKRs-;>QkWGI0>`Nsv@Wrd9fbgJ$F?5Vl6blV^lF)D~%F-F%pJX zL`irl8x*bEJm@b=hYM=NC2BZ6iULFkv5D>YR&O9Z!!c*cHf8GcYV)n>a1*uWAQQpB z$3AGF0dBk4Qix`X&EQ}aX2ml|O{E=kaR>8?K(= z`y{=*@4Py1k1S~a7h!}p#sawNTs3H=jTq; z>*UU*iGxiPV=PR_Qzfhtt)7&^+^KL$!M7eE5Nn=RqPNMKp25F#7AWMTfRa!?<#JH7 z=-SQVjF1LzPp^P*c>pPnEUvRLm^ zOnD~kf1ztu-XY5U({~sknEHrhQ*6<+MQHs~6w)QRNj*-4go6W4wz2Zz&2G^KzF$8G zgW16H`T07qyo*o!GMOt_>8VR0^18_U*n0g&LMAusf=K|H3Mf=~1a5K8 zYf*kRLTS%0{mM4((<4klUEdL`(nS~Dt{$LA=HWB2q|wNTOY*jo26z5OxaGQ_ zWxtg>X6sHVXV@n9QIf~>hg#ugKj5FySR(c|x39JDXPq8B4A-sV60Q!nXKapFY_!VG z3`!K64_qn&T9$A0n|16LuGnnT9zvMPZ%o%}edgetq&V zS|#DoIQpe55E_!bg|iC51T2)5&JXjIDAb+uKr+o8hMjPT72t#`v#+`!J0Jpa=g;)E zo!G$z0(jN~)m((S>?zei%h8h}4~{AFWL~zAMn}MN;m2**pTDcHhBFRov;C)=O_*0R zuvf#gKo+#MC~~rY#WU{$09#-lWC%z*_9$20EJ;?Dngc1}_~I|ZhooEqcFnUH=v>PJ zKj2ecG_|Emlz3?iS)+N=ql|Fm*8;;S<)s;7myGohXH}eX&(G|EtX}p87|WLC#Cui$ zXRPyi3Yax>b=Rg9xg^@W5{Zy!a@YGc2DTBx2VALWNlE#7ydKUZ@%=}zy(g-8^EwqJ zvx7v~FHa{pGC)RZpFFul0h}f&jt$Oe)3T{vUlyM*Q2Za?GfVX{4o9XOiURU8DkmG5 zBVx}4AaY}>!(0f2rejZ^F*}!DX`--NUgjY{CGVH)-b;mtUUzpR?F~SBUsd$*Ld6yc zfacU}>!A4$HJ*>Bau)qJ*gOPqzpyZ`dNFO0Igmn##o$aFKP_-b^US*BHy% z%55(p1RY{`n21NLrAhr(wf=b`G9~+c>@5*ur<(Tm&1fF(bkl%RPX8+r-oJE;AaeYe zGb-DR4ec;q=ENtD24`4>_ls`vVl;pZjli5@_lfIooW#htfO<{+?(El`rwtI|It2LY zNm~a@twYaDiD#XmAt2j)6J>7#>G}!GfG3~35khg|<+%}?o1fx)B~|1~h5x#BRclWl zITFjW5Mryv){kV>;1w&H8n=2SeR?D*@ZK9v0Mnt_-#ltBT;(J`KHwgPPD&$F210!6@cKt{hy#(PsL97%hD-c(g^ z*J3?r3=tM=25VI4yiUTA{nsg6#9PGY0J&#i;stg(inqlg--cR@mT zW&VCQC!J^$Z;IGAYUo6tg@GxIxkV-k8f^{4GBP)8G9mQ@7%M=~0}@+5-(DWY;Sob( z3ELV8+t~6#;mj0P>`~MTj5OjK#N-ahKsy;)e!o`+1q_ynPY}}{<1$uwzBkTy-k=MW z-)7A~@hxS1bpHNi_PGsjyr7o-VjNi?x^`~MOfq;x^>Pnvu@C$WoETi^N-)`H3 z{^A*sNK~#(Db|k6mBbq+GU9Da4dh@)%vhlYWOAXj8+P&EK!y;-Y^fKRQLCv1|LJJm z1^-X9L|g5;<$r2zoc)ixhOc)d8-YwrlzdA32rM@FalfmS!V6fG8P)2COb@LJV2bYY;ScdIKu_vrbL6$UX zG|tP~mtgR57@u{?&9x|A>+~jb`MDc5ePsOy4TUC(;?YtChI`WCZ3f-J07azNI7& zx)Bv5@y3Y#RyAA{v+PZ_Dj2!4q3Tg66F^q16Z87OK(L8-dS&q=`iw`B0mYg=ES(FG zXv0;#p1JEFcmP`I7Ne)AD`YYKJa6-L_`GQN(}^yGGHs7t>VN(|Tvt33w^@>ug0r)A zch;nJqW>Hzf*Isbi@L>Ob!fBr(^;5%6tt^-^{$zMm^I8Q!>I-pDE4qk0XVC+L{ufR zc^4J=l=DId=NpAMy9JRsIG&$0s(thC8NWJuPJ)@=uZ1nfUUECedV}^(nuO(FAv-VV zh$VUj1Y#{{1?bX+aZS>hJNsU~PHvfP5=&^DJOLv#Q|p{=$&ukBAvFe8fDS03;4^Mb zrFZD+Q&U#9re6Iu&tkm|uk(X?C7tI27#Pgd(()arYkuViT>hPOoA)8gAzGVvXgj$@ zs{aJwDG$HK;s8l9n&dSV zD_X2C#=i?bIKzYr>si7OW)&;Ts13w%!;Pl9^3ftDQ8_WaZ~WA+q#k63E`hyAtCEUo z3p?5XFDWLOU`tjV5wv!Z&CvD}Y8}ZKm+b06P{S`tX^0$shOJCiz7@e1-X3c0w15GX z+bB3JBRb57>CTGFZP?9L>y}?*&cN^vaoi>2L5|Zn8#}PR4)hVoWHXft|I$gg#`gKh zCN&TB^&{6Mm#x)P?J}8YxxXy=n%9V3@gkQ$uMxI6f_S9!Mqp=l@s<<)R@q(bbb1G6 z+S-HbJ;r~szYAW9n5q7CC@|La|56`-GY*pG5tX{N;k6tm(5}B1Ot3&)hDv<4$_!hO zkS?WWj7&|Trko9`19Y0`5_J!KY)}wG1H*t~azul9?kAQK7D4;tg->F?Gx*8G#c9K9 z$T7btl-a_mhoLXnz@5x*D3*tWX~;=jzcLjpDh)}{?jboh6Cxlg%(A&+)vfR ziCLqTYjkoFtu&{r<;BaIqT%0OD_s~w z=k|M;9sY4t-%i3P20AMuwl9dP5O)NgfnZ~Jd;1SB`<1*lu@bQ(Bu3?Z%YMa`wPoABhq=vP9udf7vH=?nS&*7+DvdO1_ zbQ~-@l4YGwT2A|g@aF0`CQ9x86!?$%DWFr3u6Ojt)ic`oG1%8eM@EK7Kt&jf<~qJ} z#D)6!Fl{Q}XpWs*mq)bR-_JZz(ZfNtJKu`EOW9^cB!!OB@0c7j*Hb{BvE1}nuQrSV z!;I}I7DTP{f#@@W%&3GvtVd8swcU+nc8|*Yr4PX>=zJjKg0Fku_P*BmwDQLMRDv#q zd1DuJ*erVD>~(3MZfTw6Yt|KY+MFoet~XTHR6NOmXdHT{*QIH#ii2~55`p1pa3mxq zE}Pzgik1>MVF1b9t|dN@Ly!AKHe|Kg^*9yo*hST5W6DIYWlw{6{dN(+gZphd-XYk# z&%yrUrvFa2%DE@wVwku8PWbQOtcvtF+E2Evd@Z+XiU*o09JNz6#oL1AfB<{Apzw

Ry1gX}2a!LBJ`<1+MgNvX4i$z`65oB{CtN)AhnmZvx!_5sm=4j!894hY2;*9zY zwfyelOO=Vf6KOf4926x*1Q9M=f*_?Rx=0^f+`H+>_|T=#%zK|dC*iW1z&H_~zVl=^ zqWEDZhd?N)feBmv+gsCnxRtVhpKx72ITXYcqKz-DScbVfX&3IN&f3fMV z;dNk*GUbgLL~~w?-hrck@{biCh2{|rka6zDbs8Pi{#lE^i3r#GX|o`pT_{<|E>vOl z%Ss39p>fmz51Gz~r9PT)Xj$WE!O)AeKGwwc^Y&4DVhml2Z{O=(aZu0vL&TKU(a$Zt zZp^T8VW0BagN>pT&t6B0eqn1O{kiX7?xa3MwX+fsByv0lRaR9#nr+^+Z$BFlZ$R9y zBFkfugSd!SAo81-8DkImK3;b$`?0r75^qP$`1H)UB3qnin{TWUNv-+LM<;GjqL$wms51=ahgY*yPkg1Z}hbQD4>d%vPZ zQ_5IzX9xwf>JKp?zR-U($t#w`l>E`-K^8%%Jo=k956-@Hf+sEKpfZICRnB#As^no zLlKmb_^h^B^TO^Rv6akMeLX7Zd~t$w;6Ch7D~yxQo|FB;0K)Z0C?6}bJKWo%@x0mM zDNZ(LXes~l-xW`cJY=2Xd7l;uf?HENCYys(_t%o9)>)7h7?O4avqe|0ePKr|0u~<% zI1X!{>ZH2W$My?7)5rOp2r(q#2SzJPh=@NxcZT&yF`(Lz#hBV=#!<@LDR+(BnRgrV zWy*!^VlO~5iAGeAqHrNZ4TM6Wn^iyc2SUa9|ir?=13 zcsyS;E@}Eg7jl}|T)1{!5*hAP3qU+)^-+bgc9-rpcLUn}zf6#%kSt(RFADR8I%v9o zefgN(!6&Kbe*?-f)h9nZup7J4H2vwyOZ=Q)7fea1U0Jcj)YMZUh#W_g~G~9 zalblFj?EGlztC4^`i0E8h%8k#1X-jlU(zgVzO04J>wa=RJ8677bnJ!hJhrCu&eOo# z{{@1bUfMZ)a@aY3dVjdL)}}z03UZmp!EYOM&wdiuyC6RPZoKZchVrw9c;y#km~L5& zDA(+_qY1^*%#)7`Iz9sOZM?&lAc*Ogw)ds>;)!y4w$D79-p7i{+mlmCRonxpx_vT1 z4ezaS7su^CxDx#|kk9D~rqvW3g!*z=6`%Lp(&Ii+5ko1S_?LBmWM;N^wmZv785TPfEz@&wDKyk z7BaLPOcK8|z=VLTdRpn5y`C&}=}IdSw3_*LB0ILT{m3R2iK1b&tIdkHqX6mW#1I`s z+Cxj#(bfDh1T8+573L<3S-U|s?2+nHW~GB|D3tw~ZkyzKTR!jk1#x%(%ZU{i%;atX zd)dnnKkPK}+2lld&9CS*ZeJ%myN;U=o9k})5u@F!nOjOKMLx|Hr^K)u@XG?1p<@59 zffrPN<@9ZTSI<6s{}vH4LO}AoI=J!CoK>Xv=1BY$-!m=1v8^(8a;S?DeD;7*7R}dr zkMQTvZ|LcorE1EBb1rMJM{$3u z4Yr?H{OT5_g@J|_NQfjD3ft(s9g;xTbL3e27Y|~HbsH;@n{@gH@?>tDaBTLB@p9cxSA|3~E5QxW!k8lA+*RA$kbOaT zYVi60nmX^OCXgqN3nEC@lOnyJh|(n>MIoVg3`Gba1|r2!G#~`z=+Z$rs-gGZi*%5t z6zNS!1T=;KA%H*-;m76Pf&TXIeKWf|-H%|?TRBf`)(G^t@)F&;){YF0;?^J0$; z$@Lq~*LnKpv9xYV#NUdw2JTr*v>kiURlF+G*Rr_A$Aj-fHm@UV{00=XRE`1*XYZz1 zu}j%z0gVfnE#yx)38=#BhSrEob2#cwUUb7MnbUCs{H{Am(?6I((n>E?ey5L3xYdcv zDC8KMiot2aqq~!6NBKJ~USGWNmHcya&1(esqX8|NFBw@+Xf`#<@!}-h7QH0w{ML-1 zN?0?*0q_ycW|m5vViLJc@RBq1 z>Z+<6`X;O@+;L896ZUj}wTH$~js#Dt(kB@y7Pf1obheTDH>e$OA@!Ea2lZEpGgA)n zPvd>cSqbYeb8mQhYqr)0knWX$gH%#5qQCgZ@^Kqf^A!uajYoDaPyay&Af zv9>r4(;F4zq>NQ0mpJ6u&xn2kxqiJ4 zVehTeFs6Y1rJHcSH{O0jO<)E6roxAcla)GkuJ5dz?JV};ibqz#0rc%*@GdEoxt2HE z2HiuPaapq4DJ*1*69H2S%039ERHWnqX3(V4>`ro>v5}$C`1%#IXfs0Tr$14G7%*dd zu@$m4Gi@MGQDdZHs0>w3rQv%q8UntApeajdHP8b!xYCedLbI4CFH92-6m;2B77|`n zPqHhJr~41b*~d18)2X%*=T32*!1~S^SGNa@bt#37_|67aM{Xdq3LxqPmuhsnZ57@P zJd2qfsd7S{li?~=-A9`XQfchHu7O;CwwUQVw$;TS<=DZ-%?*L)cs97&$^GIM@aqa5 zs9$;Ll;vkM&rH*Bm(iH-hTNr}7=S|%L1ek4 zAvOnV%aX$xIubz$`>>@mS3vDG+vb5I^#qY@F8-)LVrZ|6vN!`!!aBhZFuTU|!{t#I z>G;B!KMwlbU0u_(T3xB2zWE`wXQch#8iF=~<+8I#s zGA)`5Z5?LB4Z8BRCNkf)I=@lvY3%G9&%IXfPo&*atO?7PjDe}Ui3%sgH;`Q5s`d(s z0-h)JXTgM1&VJN#g*labaqVnw64~li>PsHfWAr;Wb=+Cb)JeAf;q_Ru69C$dFG1oQx8tYas?)llc4BymA$B*pr>)IxF^!*#XKca+n4e`_zV-FUZ0sBdu1#(l zGl2hA`hbm67Y|3g;lI4o?m4~KasZjMSm;tZvAxa^_&rjn-@%nSHUK1^o-wa8P3h>L zmjca^ia^XkQZvoxCGVl_j}kxd4pHLOkg=Q%qun7f#-4ztTxpQp-7H58Gz zWkMAMDd{A##(Su&C^2@@h3q_!VVEnKDO$D<-CD^N%VLTU3Mb;U6E_>Dhg|TjIFF|+ zymWk@xpDxVv30y1E8CLiS^<(;jYW4yYU~Fk$WIVedvSG>7;|cr^@h0DMUQgUYlp~# z%`Di%vDK>>V~8f*)QCP&h@FiBG_4yUF`zG+-sc&uBu95NjkEZ-%Qne8LR#Ak zUcH3N^SxE;kAW&dk!20{xI;@q>nQ9@`kdgciHpujvZ5Q;q>YWn%w{d}gG0PNme2$FI;2t_bZ3mwXT=%Xl z(lO^ri&Emlerx$V?VhlbW_BK6mzqAB9ZB3|MxHLA=7lM7CbyF~csU(Ut8Uz+0?QNm z*9D%ucp02fE2va-BORjL+k(KQWk2f9B~Qu+-0L4-R#?=F*R8(xD+T>oI%nL(3Z2CY z?YS2=jJdX(?!aDsr+JSJFJ 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 5 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A5 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C6 + 030C > C8 + 0327 > C7 + . +0044 > 44 / + N 1 + 030C > CF + . +0045 > 45 / + N 4 + 0301 > C9 + 0308 > CB + 030C > CC + 0328 > CA + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 2 + 0301 > CD + 0302 > CE + . +004A > 4A +004B > 4B +004C > 4C / + N 2 + 0301 > C5 + 030C > BC + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 030C > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 2 + 0301 > C0 + 030C > D8 + . +0053 > 53 / + N 3 + 0301 > 8C + 030C > 8A + 0327 > AA + . +0054 > 54 / + N 2 + 030C > 8D + 0327 > DE + . +0055 > 55 / + N 4 + 0301 > DA + 0308 > DC + 030A > D9 + 030B > DB + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 3 + 0301 > 8F + 0307 > AF + 030C > 8E + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 5 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > B9 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E6 + 030C > E8 + 0327 > E7 + . +0064 > 64 / + N 1 + 030C > EF + . +0065 > 65 / + N 4 + 0301 > E9 + 0308 > EB + 030C > EC + 0328 > EA + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0301 > ED + 0302 > EE + . +006A > 6A +006B > 6B +006C > 6C / + N 2 + 0301 > E5 + 030C > BE + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 030C > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 2 + 0301 > E0 + 030C > F8 + . +0073 > 73 / + N 3 + 0301 > 9C + 030C > 9A + 0327 > BA + . +0074 > 74 / + N 2 + 030C > 9D + 0327 > FE + . +0075 > 75 / + N 4 + 0301 > FA + 0308 > FC + 030A > F9 + 030B > FB + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 3 + 0301 > 9F + 0307 > BF + 030C > 9E + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0083 > 83 +0088 > 88 +0090 > 90 +0098 > 98 +00A0 > A0 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00BB > BB +00C0 > 41 # unsup: 0041 0300 +00C1 > C1 +00C2 > C2 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > C7 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > CB +00CC > 49 # unsup: 0049 0300 +00CD > CD +00CE > CE +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > D3 +00D4 > D4 +00D5 > 4F # unsup: 004F 0303 +00D6 > D6 +00D7 > D7 +00D9 > 55 # unsup: 0055 0300 +00DA > DA +00DB > 55 # unsup: 0055 0302 +00DC > DC +00DD > DD +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > E1 +00E2 > E2 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > E7 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > EB +00EC > 69 # unsup: 0069 0300 +00ED > ED +00EE > EE +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > F3 +00F4 > F4 +00F5 > 6F # unsup: 006F 0303 +00F6 > F6 +00F7 > F7 +00F9 > 75 # unsup: 0075 0300 +00FA > FA +00FB > 75 # unsup: 0075 0302 +00FC > FC +00FD > FD +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > C3 +0103 > E3 +0104 > A5 +0105 > B9 +0106 > C6 +0107 > E6 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > CF +010F > EF +0110 > D0 +0111 > F0 +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > CA +0119 > EA +011A > CC +011B > EC +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > C5 +013A > E5 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > BC +013E > BE +013F > 4C B7 # compat +0140 > 6C B7 # compat +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > D2 +0148 > F2 +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > D5 +0151 > F5 +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > C0 +0155 > E0 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > D8 +0159 > F8 +015A > 8C +015B > 9C +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > AA +015F > BA +0160 > 8A +0161 > 9A +0162 > DE +0163 > FE +0164 > 8D +0165 > 9D +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > D9 +016F > F9 +0170 > DB +0171 > FB +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 8F +017A > 9F +017B > AF +017C > BF +017D > 8E +017E > 9E +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 8E # compat +01C5 > 44 9E # compat +01C6 > 64 9E # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C7 > A1 +02D8 > A2 +02D9 > FF +02DB > B2 +02DD > BD +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 8C # unsup: 015A 0307 +1E65 > 9C # unsup: 015B 0307 +1E66 > 8A # unsup: 0160 0307 +1E67 > 9A # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > C3 # unsup: 0102 0301 +1EAF > E3 # unsup: 0103 0301 +1EB0 > C3 # unsup: 0102 0300 +1EB1 > E3 # unsup: 0103 0300 +1EB2 > C3 # unsup: 0102 0309 +1EB3 > E3 # unsup: 0103 0309 +1EB4 > C3 # unsup: 0102 0303 +1EB5 > E3 # unsup: 0103 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE2 > AC # compat +FFE4 > A6 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 5 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A5 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C6 + 030C > C8 + 0327 > C7 + . +0044 > 44 / + N 1 + 030C > CF + . +0045 > 45 / + N 4 + 0301 > C9 + 0308 > CB + 030C > CC + 0328 > CA + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 2 + 0301 > CD + 0302 > CE + . +004A > 4A +004B > 4B +004C > 4C / + N 2 + 0301 > C5 + 030C > BC + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 030C > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 2 + 0301 > C0 + 030C > D8 + . +0053 > 53 / + N 3 + 0301 > 8C + 030C > 8A + 0327 > AA + . +0054 > 54 / + N 2 + 030C > 8D + 0327 > DE + . +0055 > 55 / + N 4 + 0301 > DA + 0308 > DC + 030A > D9 + 030B > DB + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 3 + 0301 > 8F + 0307 > AF + 030C > 8E + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 5 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > B9 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E6 + 030C > E8 + 0327 > E7 + . +0064 > 64 / + N 1 + 030C > EF + . +0065 > 65 / + N 4 + 0301 > E9 + 0308 > EB + 030C > EC + 0328 > EA + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0301 > ED + 0302 > EE + . +006A > 6A +006B > 6B +006C > 6C / + N 2 + 0301 > E5 + 030C > BE + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 030C > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 2 + 0301 > E0 + 030C > F8 + . +0073 > 73 / + N 3 + 0301 > 9C + 030C > 9A + 0327 > BA + . +0074 > 74 / + N 2 + 030C > 9D + 0327 > FE + . +0075 > 75 / + N 4 + 0301 > FA + 0308 > FC + 030A > F9 + 030B > FB + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 3 + 0301 > 9F + 0307 > BF + 030C > 9E + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0083 > 83 +0088 > 88 +0090 > 90 +0098 > 98 +00A0 > A0 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00BB > BB +00C1 > C1 +00C2 > C2 +00C4 > C4 +00C7 > C7 +00C9 > C9 +00CB > CB +00CD > CD +00CE > CE +00D3 > D3 +00D4 > D4 +00D6 > D6 +00D7 > D7 +00DA > DA +00DC > DC +00DD > DD +00DF > DF +00E1 > E1 +00E2 > E2 +00E4 > E4 +00E7 > E7 +00E9 > E9 +00EB > EB +00ED > ED +00EE > EE +00F3 > F3 +00F4 > F4 +00F6 > F6 +00F7 > F7 +00FA > FA +00FC > FC +00FD > FD +0102 > C3 +0103 > E3 +0104 > A5 +0105 > B9 +0106 > C6 +0107 > E6 +010C > C8 +010D > E8 +010E > CF +010F > EF +0110 > D0 +0111 > F0 +0118 > CA +0119 > EA +011A > CC +011B > EC +0139 > C5 +013A > E5 +013D > BC +013E > BE +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0147 > D2 +0148 > F2 +0150 > D5 +0151 > F5 +0154 > C0 +0155 > E0 +0158 > D8 +0159 > F8 +015A > 8C +015B > 9C +015E > AA +015F > BA +0160 > 8A +0161 > 9A +0162 > DE +0163 > FE +0164 > 8D +0165 > 9D +016E > D9 +016F > F9 +0170 > DB +0171 > FB +0179 > 8F +017A > 9F +017B > AF +017C > BF +017D > 8E +017E > 9E +02C7 > A1 +02D8 > A2 +02D9 > FF +02DB > B2 +02DD > BD +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0083 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 0053 030C +8B > 2039 +8C > 0053 0301 +8D > 0054 030C +8E > 005A 030C +8F > 005A 0301 +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 0073 030C +9B > 203A +9C > 0073 0301 +9D > 0074 030C +9E > 007A 030C +9F > 007A 0301 +A0 > 00A0 +A1 > 02C7 +A2 > 02D8 +A3 > 0141 +A4 > 00A4 +A5 > 0041 0328 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 0053 0327 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 005A 0307 +B0 > 00B0 +B1 > 00B1 +B2 > 02DB +B3 > 0142 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 0061 0328 +BA > 0073 0327 +BB > 00BB +BC > 004C 030C +BD > 02DD +BE > 006C 030C +BF > 007A 0307 +C0 > 0052 0301 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0306 +C4 > 0041 0308 +C5 > 004C 0301 +C6 > 0043 0301 +C7 > 0043 0327 +C8 > 0043 030C +C9 > 0045 0301 +CA > 0045 0328 +CB > 0045 0308 +CC > 0045 030C +CD > 0049 0301 +CE > 0049 0302 +CF > 0044 030C +D0 > 0110 +D1 > 004E 0301 +D2 > 004E 030C +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 030B +D6 > 004F 0308 +D7 > 00D7 +D8 > 0052 030C +D9 > 0055 030A +DA > 0055 0301 +DB > 0055 030B +DC > 0055 0308 +DD > 0059 0301 +DE > 0054 0327 +DF > 00DF +E0 > 0072 0301 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0306 +E4 > 0061 0308 +E5 > 006C 0301 +E6 > 0063 0301 +E7 > 0063 0327 +E8 > 0063 030C +E9 > 0065 0301 +EA > 0065 0328 +EB > 0065 0308 +EC > 0065 030C +ED > 0069 0301 +EE > 0069 0302 +EF > 0064 030C +F0 > 0111 +F1 > 006E 0301 +F2 > 006E 030C +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 030B +F6 > 006F 0308 +F7 > 00F7 +F8 > 0072 030C +F9 > 0075 030A +FA > 0075 0301 +FB > 0075 030B +FC > 0075 0308 +FD > 0079 0301 +FE > 0074 0327 +FF > 02D9 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0083 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 0160 +8B > 2039 +8C > 015A +8D > 0164 +8E > 017D +8F > 0179 +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 0161 +9B > 203A +9C > 015B +9D > 0165 +9E > 017E +9F > 017A +A0 > 00A0 +A1 > 02C7 +A2 > 02D8 +A3 > 0141 +A4 > 00A4 +A5 > 0104 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 015E +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 017B +B0 > 00B0 +B1 > 00B1 +B2 > 02DB +B3 > 0142 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 0105 +BA > 015F +BB > 00BB +BC > 013D +BD > 02DD +BE > 013E +BF > 017C +C0 > 0154 +C1 > 00C1 +C2 > 00C2 +C3 > 0102 +C4 > 00C4 +C5 > 0139 +C6 > 0106 +C7 > 00C7 +C8 > 010C +C9 > 00C9 +CA > 0118 +CB > 00CB +CC > 011A +CD > 00CD +CE > 00CE +CF > 010E +D0 > 0110 +D1 > 0143 +D2 > 0147 +D3 > 00D3 +D4 > 00D4 +D5 > 0150 +D6 > 00D6 +D7 > 00D7 +D8 > 0158 +D9 > 016E +DA > 00DA +DB > 0170 +DC > 00DC +DD > 00DD +DE > 0162 +DF > 00DF +E0 > 0155 +E1 > 00E1 +E2 > 00E2 +E3 > 0103 +E4 > 00E4 +E5 > 013A +E6 > 0107 +E7 > 00E7 +E8 > 010D +E9 > 00E9 +EA > 0119 +EB > 00EB +EC > 011B +ED > 00ED +EE > 00EE +EF > 010F +F0 > 0111 +F1 > 0144 +F2 > 0148 +F3 > 00F3 +F4 > 00F4 +F5 > 0151 +F6 > 00F6 +F7 > 00F7 +F8 > 0159 +F9 > 016F +FA > 00FA +FB > 0171 +FC > 00FC +FD > 00FD +FE > 0163 +FF > 02D9 +. + +COMP += NFC +. diff --git a/assets/data/cp1250.cset b/assets/data/cp1250.cset new file mode 100644 index 0000000..291db28 --- /dev/null +++ b/assets/data/cp1250.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1250 +> ascii +/ +# <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 0160 L Y 8A 9A 8A 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 015A L Y 8C 9C 8C 53 73 73 # LATIN CAPITAL LETTER S WITH ACUTE +8D 0164 L Y 8D 9D 8D 54 74 74 # LATIN CAPITAL LETTER T WITH CARON +8E 017D L Y 8E 9E 8E 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +8F 0179 L Y 8F 9F 8F 5A 7A 7A # LATIN CAPITAL LETTER Z WITH ACUTE +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 0161 L Y 8A 9A 8A 73 73 73 # LATIN SMALL LETTER S WITH CARON +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 015B L Y 8C 9C 8C 73 73 73 # LATIN SMALL LETTER S WITH ACUTE +9D 0165 L Y 8D 9D 8D 74 74 74 # LATIN SMALL LETTER T WITH CARON +9E 017E L Y 8E 9E 8E 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +9F 017A L Y 8F 9F 8F 7A 7A 7A # LATIN SMALL LETTER Z WITH ACUTE +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 02C7 M Y A1 A1 A1 00 00 00 # CARON +A2 02D8 - Y A2 A2 A2 00 00 00 # BREVE +A3 0141 L Y A3 B3 A3 A3 B3 B3 # LATIN CAPITAL LETTER L WITH STROKE +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 0104 L Y A5 B9 A5 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 015E L Y AA BA AA 53 73 73 # LATIN CAPITAL LETTER S WITH CEDILLA +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 017B L Y AF BF AF 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 02DB - Y B2 B2 B2 00 00 00 # OGONEK +B3 0142 L Y A3 B3 A3 B3 B3 B3 # LATIN SMALL LETTER L WITH STROKE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 0105 L Y A5 B9 A5 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +BA 015F L Y AA BA AA 73 73 73 # LATIN SMALL LETTER S WITH CEDILLA +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 013D L Y BC BE BC 4C 6C 6C # LATIN CAPITAL LETTER L WITH CARON +BD 02DD - Y BD BD BD 00 00 00 # DOUBLE ACUTE ACCENT +BE 013E L Y BC BE BC 6C 6C 6C # LATIN SMALL LETTER L WITH CARON +BF 017C L Y AF BF AF 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +C0 0154 L Y C0 E0 C0 52 72 72 # LATIN CAPITAL LETTER R WITH ACUTE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 0102 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH BREVE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 0139 L Y C5 E5 C5 4C 6C 6C # LATIN CAPITAL LETTER L WITH ACUTE +C6 0106 L Y C6 E6 C6 43 63 63 # LATIN CAPITAL LETTER C WITH ACUTE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0118 L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 011A L Y CC EC CC 45 2A 00 # LATIN CAPITAL LETTER E WITH CARON +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 010E L Y CF EF CF 44 64 64 # LATIN CAPITAL LETTER D WITH CARON +D0 0110 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER D WITH STROKE +D1 0143 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH ACUTE +D2 0147 L Y D2 F2 D2 4E 6E 6E # LATIN CAPITAL LETTER N WITH CARON +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 0150 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 0158 L Y D8 F8 D8 52 72 72 # LATIN CAPITAL LETTER R WITH CARON +D9 016E L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH RING ABOVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 0170 L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 0162 L Y DE FE DE 54 74 74 # LATIN CAPITAL LETTER T WITH CEDILLA +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0155 L Y C0 E0 C0 72 72 72 # LATIN SMALL LETTER R WITH ACUTE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 0103 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH BREVE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 013A L Y C5 E5 C5 6C 6C 6C # LATIN SMALL LETTER L WITH ACUTE +E6 0107 L Y C6 E6 C6 63 63 63 # LATIN SMALL LETTER C WITH ACUTE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 0119 L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 011B L Y CC EC CC 65 2A 00 # LATIN SMALL LETTER E WITH CARON +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 010F L Y CF EF CF 64 64 64 # LATIN SMALL LETTER D WITH CARON +F0 0111 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER D WITH STROKE +F1 0144 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH ACUTE +F2 0148 L Y D2 F2 D2 6E 6E 6E # LATIN SMALL LETTER N WITH CARON +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 0151 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 0159 L Y D8 F8 D8 72 72 72 # LATIN SMALL LETTER R WITH CARON +F9 016F L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH RING ABOVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 0171 L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 0163 L Y DE FE DE 74 74 74 # LATIN SMALL LETTER T WITH CEDILLA +FF 02D9 - Y FF FF FF 00 00 00 # DOT ABOVE diff --git a/assets/data/cp1251.cmap b/assets/data/cp1251.cmap new file mode 100644 index 0000000..c38c640 --- /dev/null +++ b/assets/data/cp1251.cmap @@ -0,0 +1,1903 @@ +INTERNAL +/ +N 1037 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0098 > 98 +00A0 > A0 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00BB > BB +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > B7 +0400 > C5 # unsup: 0415 0300 +0401 > A8 +0402 > 80 +0403 > 81 +0404 > AA +0405 > BD +0406 > B2 / + N 1 + 0308 > AF + . +0407 > AF +0408 > A3 +0409 > 8A +040A > 8C +040B > 8E +040C > 8D +040D > C8 # unsup: 0418 0300 +040E > A1 +040F > 8F +0410 > C0 +0411 > C1 +0412 > C2 +0413 > C3 / + N 1 + 0301 > 81 + . +0414 > C4 +0415 > C5 / + N 1 + 0308 > A8 + . +0416 > C6 +0417 > C7 +0418 > C8 / + N 1 + 0306 > C9 + . +0419 > C9 +041A > CA / + N 1 + 0301 > 8D + . +041B > CB +041C > CC +041D > CD +041E > CE +041F > CF +0420 > D0 +0421 > D1 +0422 > D2 +0423 > D3 / + N 1 + 0306 > A1 + . +0424 > D4 +0425 > D5 +0426 > D6 +0427 > D7 +0428 > D8 +0429 > D9 +042A > DA +042B > DB +042C > DC +042D > DD +042E > DE +042F > DF +0430 > E0 +0431 > E1 +0432 > E2 +0433 > E3 / + N 1 + 0301 > 83 + . +0434 > E4 +0435 > E5 / + N 1 + 0308 > B8 + . +0436 > E6 +0437 > E7 +0438 > E8 / + N 1 + 0306 > E9 + . +0439 > E9 +043A > EA / + N 1 + 0301 > 9D + . +043B > EB +043C > EC +043D > ED +043E > EE +043F > EF +0440 > F0 +0441 > F1 +0442 > F2 +0443 > F3 / + N 1 + 0306 > A2 + . +0444 > F4 +0445 > F5 +0446 > F6 +0447 > F7 +0448 > F8 +0449 > F9 +044A > FA +044B > FB +044C > FC +044D > FD +044E > FE +044F > FF +0450 > E5 # unsup: 0435 0300 +0451 > B8 +0452 > 90 +0453 > 83 +0454 > BA +0455 > BE +0456 > B3 / + N 1 + 0308 > BF + . +0457 > BF +0458 > BC +0459 > 9A +045A > 9C +045B > 9E +045C > 9D +045D > E8 # unsup: 0438 0300 +045E > A2 +045F > 9F +0490 > A5 +0491 > B4 +04C1 > C6 # unsup: 0416 0306 +04C2 > E6 # unsup: 0436 0306 +04D0 > C0 # unsup: 0410 0306 +04D1 > E0 # unsup: 0430 0306 +04D2 > C0 # unsup: 0410 0308 +04D3 > E0 # unsup: 0430 0308 +04D6 > C5 # unsup: 0415 0306 +04D7 > E5 # unsup: 0435 0306 +04DC > C6 # unsup: 0416 0308 +04DD > E6 # unsup: 0436 0308 +04DE > C7 # unsup: 0417 0308 +04DF > E7 # unsup: 0437 0308 +04E2 > C8 # unsup: 0418 0304 +04E3 > E8 # unsup: 0438 0304 +04E4 > C8 # unsup: 0418 0308 +04E5 > E8 # unsup: 0438 0308 +04E6 > CE # unsup: 041E 0308 +04E7 > EE # unsup: 043E 0308 +04EC > DD # unsup: 042D 0308 +04ED > FD # unsup: 044D 0308 +04EE > D3 # unsup: 0423 0304 +04EF > F3 # unsup: 0443 0304 +04F0 > D3 # unsup: 0423 0308 +04F1 > F3 # unsup: 0443 0308 +04F2 > D3 # unsup: 0423 030B +04F3 > F3 # unsup: 0443 030B +04F4 > D7 # unsup: 0427 0308 +04F5 > F7 # unsup: 0447 0308 +04F8 > DB # unsup: 042B 0308 +04F9 > FB # unsup: 044B 0308 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 88 +2116 > B9 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE2 > AC # compat +FFE4 > A6 # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0098 > 98 +00A0 > A0 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00BB > BB +037E > 3B +0387 > B7 +0401 > A8 +0402 > 80 +0403 > 81 +0404 > AA +0405 > BD +0406 > B2 / + N 1 + 0308 > AF + . +0407 > AF +0408 > A3 +0409 > 8A +040A > 8C +040B > 8E +040C > 8D +040E > A1 +040F > 8F +0410 > C0 +0411 > C1 +0412 > C2 +0413 > C3 / + N 1 + 0301 > 81 + . +0414 > C4 +0415 > C5 / + N 1 + 0308 > A8 + . +0416 > C6 +0417 > C7 +0418 > C8 / + N 1 + 0306 > C9 + . +0419 > C9 +041A > CA / + N 1 + 0301 > 8D + . +041B > CB +041C > CC +041D > CD +041E > CE +041F > CF +0420 > D0 +0421 > D1 +0422 > D2 +0423 > D3 / + N 1 + 0306 > A1 + . +0424 > D4 +0425 > D5 +0426 > D6 +0427 > D7 +0428 > D8 +0429 > D9 +042A > DA +042B > DB +042C > DC +042D > DD +042E > DE +042F > DF +0430 > E0 +0431 > E1 +0432 > E2 +0433 > E3 / + N 1 + 0301 > 83 + . +0434 > E4 +0435 > E5 / + N 1 + 0308 > B8 + . +0436 > E6 +0437 > E7 +0438 > E8 / + N 1 + 0306 > E9 + . +0439 > E9 +043A > EA / + N 1 + 0301 > 9D + . +043B > EB +043C > EC +043D > ED +043E > EE +043F > EF +0440 > F0 +0441 > F1 +0442 > F2 +0443 > F3 / + N 1 + 0306 > A2 + . +0444 > F4 +0445 > F5 +0446 > F6 +0447 > F7 +0448 > F8 +0449 > F9 +044A > FA +044B > FB +044C > FC +044D > FD +044E > FE +044F > FF +0451 > B8 +0452 > 90 +0453 > 83 +0454 > BA +0455 > BE +0456 > B3 / + N 1 + 0308 > BF + . +0457 > BF +0458 > BC +0459 > 9A +045A > 9C +045B > 9E +045C > 9D +045E > A2 +045F > 9F +0490 > A5 +0491 > B4 +1FEF > 60 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 88 +2116 > B9 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0402 +81 > 0413 0301 +82 > 201A +83 > 0433 0301 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 20AC +89 > 2030 +8A > 0409 +8B > 2039 +8C > 040A +8D > 041A 0301 +8E > 040B +8F > 040F +90 > 0452 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 0459 +9B > 203A +9C > 045A +9D > 043A 0301 +9E > 045B +9F > 045F +A0 > 00A0 +A1 > 0423 0306 +A2 > 0443 0306 +A3 > 0408 +A4 > 00A4 +A5 > 0490 +A6 > 00A6 +A7 > 00A7 +A8 > 0415 0308 +A9 > 00A9 +AA > 0404 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 0406 0308 +B0 > 00B0 +B1 > 00B1 +B2 > 0406 +B3 > 0456 +B4 > 0491 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 0435 0308 +B9 > 2116 +BA > 0454 +BB > 00BB +BC > 0458 +BD > 0405 +BE > 0455 +BF > 0456 0308 +C0 > 0410 +C1 > 0411 +C2 > 0412 +C3 > 0413 +C4 > 0414 +C5 > 0415 +C6 > 0416 +C7 > 0417 +C8 > 0418 +C9 > 0418 0306 +CA > 041A +CB > 041B +CC > 041C +CD > 041D +CE > 041E +CF > 041F +D0 > 0420 +D1 > 0421 +D2 > 0422 +D3 > 0423 +D4 > 0424 +D5 > 0425 +D6 > 0426 +D7 > 0427 +D8 > 0428 +D9 > 0429 +DA > 042A +DB > 042B +DC > 042C +DD > 042D +DE > 042E +DF > 042F +E0 > 0430 +E1 > 0431 +E2 > 0432 +E3 > 0433 +E4 > 0434 +E5 > 0435 +E6 > 0436 +E7 > 0437 +E8 > 0438 +E9 > 0438 0306 +EA > 043A +EB > 043B +EC > 043C +ED > 043D +EE > 043E +EF > 043F +F0 > 0440 +F1 > 0441 +F2 > 0442 +F3 > 0443 +F4 > 0444 +F5 > 0445 +F6 > 0446 +F7 > 0447 +F8 > 0448 +F9 > 0449 +FA > 044A +FB > 044B +FC > 044C +FD > 044D +FE > 044E +FF > 044F +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0402 +81 > 0403 +82 > 201A +83 > 0453 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 20AC +89 > 2030 +8A > 0409 +8B > 2039 +8C > 040A +8D > 040C +8E > 040B +8F > 040F +90 > 0452 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 0459 +9B > 203A +9C > 045A +9D > 045C +9E > 045B +9F > 045F +A0 > 00A0 +A1 > 040E +A2 > 045E +A3 > 0408 +A4 > 00A4 +A5 > 0490 +A6 > 00A6 +A7 > 00A7 +A8 > 0401 +A9 > 00A9 +AA > 0404 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 0407 +B0 > 00B0 +B1 > 00B1 +B2 > 0406 +B3 > 0456 +B4 > 0491 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 0451 +B9 > 2116 +BA > 0454 +BB > 00BB +BC > 0458 +BD > 0405 +BE > 0455 +BF > 0457 +C0 > 0410 +C1 > 0411 +C2 > 0412 +C3 > 0413 +C4 > 0414 +C5 > 0415 +C6 > 0416 +C7 > 0417 +C8 > 0418 +C9 > 0419 +CA > 041A +CB > 041B +CC > 041C +CD > 041D +CE > 041E +CF > 041F +D0 > 0420 +D1 > 0421 +D2 > 0422 +D3 > 0423 +D4 > 0424 +D5 > 0425 +D6 > 0426 +D7 > 0427 +D8 > 0428 +D9 > 0429 +DA > 042A +DB > 042B +DC > 042C +DD > 042D +DE > 042E +DF > 042F +E0 > 0430 +E1 > 0431 +E2 > 0432 +E3 > 0433 +E4 > 0434 +E5 > 0435 +E6 > 0436 +E7 > 0437 +E8 > 0438 +E9 > 0439 +EA > 043A +EB > 043B +EC > 043C +ED > 043D +EE > 043E +EF > 043F +F0 > 0440 +F1 > 0441 +F2 > 0442 +F3 > 0443 +F4 > 0444 +F5 > 0445 +F6 > 0446 +F7 > 0447 +F8 > 0448 +F9 > 0449 +FA > 044A +FB > 044B +FC > 044C +FD > 044D +FE > 044E +FF > 044F +. + +COMP += NFC +. diff --git a/assets/data/cp1251.cset b/assets/data/cp1251.cset new file mode 100644 index 0000000..3940efa --- /dev/null +++ b/assets/data/cp1251.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1251 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0402 L Y 80 90 80 80 90 90 # CYRILLIC CAPITAL LETTER DJE +81 0403 L Y 81 83 81 81 83 83 # CYRILLIC CAPITAL LETTER GJE +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0453 L Y 81 83 81 83 83 83 # CYRILLIC SMALL LETTER GJE +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 20AC - Y 88 88 88 00 00 00 # EURO SIGN +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 0409 L Y 8A 9A 8A 8A 9A 9A # CYRILLIC CAPITAL LETTER LJE +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 040A L Y 8C 9C 8C 8C 9C 9C # CYRILLIC CAPITAL LETTER NJE +8D 040C L Y 8D 9D 8D 8D 9D 9D # CYRILLIC CAPITAL LETTER KJE +8E 040B L Y 8E 9E 8E 8E 9E 9E # CYRILLIC CAPITAL LETTER TSHE +8F 040F L Y 8F 9F 8F 8F 9F 9F # CYRILLIC CAPITAL LETTER DZHE +90 0452 L Y 80 90 80 90 90 90 # CYRILLIC SMALL LETTER DJE +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 0459 L Y 8A 9A 8A 9A 9A 9A # CYRILLIC SMALL LETTER LJE +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 045A L Y 8C 9C 8C 9C 9C 9C # CYRILLIC SMALL LETTER NJE +9D 045C L Y 8D 9D 8D 9D 9D 9D # CYRILLIC SMALL LETTER KJE +9E 045B L Y 8E 9E 8E 9E 9E 9E # CYRILLIC SMALL LETTER TSHE +9F 045F L Y 8F 9F 8F 9F 9F 9F # CYRILLIC SMALL LETTER DZHE +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 040E L Y A1 A2 A1 A1 A2 A2 # CYRILLIC CAPITAL LETTER SHORT U +A2 045E L Y A1 A2 A1 A2 A2 A2 # CYRILLIC SMALL LETTER SHORT U +A3 0408 L Y A3 BC A3 A3 BC BC # CYRILLIC CAPITAL LETTER JE +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 0490 L Y A5 B4 A5 A5 B4 B4 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 0401 L Y A8 B8 A8 A8 B8 B8 # CYRILLIC CAPITAL LETTER IO +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 0404 L Y AA BA AA AA BA BA # CYRILLIC CAPITAL LETTER UKRAINIAN IE +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 0407 L Y AF BF AF AF BF BF # CYRILLIC CAPITAL LETTER YI +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 0406 L Y B2 B3 B2 B2 B3 B3 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +B3 0456 L Y B2 B3 B2 B3 B3 B3 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +B4 0491 L Y A5 B4 A5 B4 B4 B4 # CYRILLIC SMALL LETTER GHE WITH UPTURN +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 0451 L Y A8 B8 A8 B8 B8 B8 # CYRILLIC SMALL LETTER IO +B9 2116 . N B9 B9 B9 00 00 00 # <unused special> +BA 0454 L Y AA BA AA BA BA BA # CYRILLIC SMALL LETTER UKRAINIAN IE +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 0458 L Y A3 BC A3 BC BC BC # CYRILLIC SMALL LETTER JE +BD 0405 L Y BD BE BD BD BE BE # CYRILLIC CAPITAL LETTER DZE +BE 0455 L Y BD BE BD BE BE BE # CYRILLIC SMALL LETTER DZE +BF 0457 L Y AF BF AF BF BF BF # CYRILLIC SMALL LETTER YI +C0 0410 L Y C0 E0 C0 C0 2A 00 # CYRILLIC CAPITAL LETTER A +C1 0411 L Y C1 E1 C1 C1 E1 E1 # CYRILLIC CAPITAL LETTER BE +C2 0412 L Y C2 E2 C2 C2 E2 E2 # CYRILLIC CAPITAL LETTER VE +C3 0413 L Y C3 E3 C3 C3 E3 E3 # CYRILLIC CAPITAL LETTER GHE +C4 0414 L Y C4 E4 C4 C4 E4 E4 # CYRILLIC CAPITAL LETTER DE +C5 0415 L Y C5 E5 C5 C5 2A 00 # CYRILLIC CAPITAL LETTER IE +C6 0416 L Y C6 E6 C6 C6 E6 E6 # CYRILLIC CAPITAL LETTER ZHE +C7 0417 L Y C7 E7 C7 C7 E7 E7 # CYRILLIC CAPITAL LETTER ZE +C8 0418 L Y C8 E8 C8 C8 2A 00 # CYRILLIC CAPITAL LETTER I +C9 0419 L Y C9 E9 C9 C9 E9 E9 # CYRILLIC CAPITAL LETTER SHORT I +CA 041A L Y CA EA CA CA EA EA # CYRILLIC CAPITAL LETTER KA +CB 041B L Y CB EB CB CB EB EB # CYRILLIC CAPITAL LETTER EL +CC 041C L Y CC EC CC CC EC EC # CYRILLIC CAPITAL LETTER EM +CD 041D L Y CD ED CD CD ED ED # CYRILLIC CAPITAL LETTER EN +CE 041E L Y CE EE CE CE 2A 00 # CYRILLIC CAPITAL LETTER O +CF 041F L Y CF EF CF CF EF EF # CYRILLIC CAPITAL LETTER PE +D0 0420 L Y D0 F0 D0 D0 F0 F0 # CYRILLIC CAPITAL LETTER ER +D1 0421 L Y D1 F1 D1 D1 F1 F1 # CYRILLIC CAPITAL LETTER ES +D2 0422 L Y D2 F2 D2 D2 F2 F2 # CYRILLIC CAPITAL LETTER TE +D3 0423 L Y D3 F3 D3 D3 2A 00 # CYRILLIC CAPITAL LETTER U +D4 0424 L Y D4 F4 D4 D4 F4 F4 # CYRILLIC CAPITAL LETTER EF +D5 0425 L Y D5 F5 D5 D5 F5 F5 # CYRILLIC CAPITAL LETTER HA +D6 0426 L Y D6 F6 D6 D6 F6 F6 # CYRILLIC CAPITAL LETTER TSE +D7 0427 L Y D7 F7 D7 D7 F7 F7 # CYRILLIC CAPITAL LETTER CHE +D8 0428 L Y D8 F8 D8 D8 F8 F8 # CYRILLIC CAPITAL LETTER SHA +D9 0429 L Y D9 F9 D9 D9 F9 F9 # CYRILLIC CAPITAL LETTER SHCHA +DA 042A L Y DA FA DA DA FA FA # CYRILLIC CAPITAL LETTER HARD SIGN +DB 042B L Y DB FB DB DB 2A 00 # CYRILLIC CAPITAL LETTER YERU +DC 042C L Y DC FC DC DC FC FC # CYRILLIC CAPITAL LETTER SOFT SIGN +DD 042D L Y DD FD DD DD 2A 00 # CYRILLIC CAPITAL LETTER E +DE 042E L Y DE FE DE DE 2A 00 # CYRILLIC CAPITAL LETTER YU +DF 042F L Y DF FF DF DF 2A 00 # CYRILLIC CAPITAL LETTER YA +E0 0430 L Y C0 E0 C0 E0 2A 00 # CYRILLIC SMALL LETTER A +E1 0431 L Y C1 E1 C1 E1 E1 E1 # CYRILLIC SMALL LETTER BE +E2 0432 L Y C2 E2 C2 E2 E2 E2 # CYRILLIC SMALL LETTER VE +E3 0433 L Y C3 E3 C3 E3 E3 E3 # CYRILLIC SMALL LETTER GHE +E4 0434 L Y C4 E4 C4 E4 E4 E4 # CYRILLIC SMALL LETTER DE +E5 0435 L Y C5 E5 C5 E5 2A 00 # CYRILLIC SMALL LETTER IE +E6 0436 L Y C6 E6 C6 E6 E6 E6 # CYRILLIC SMALL LETTER ZHE +E7 0437 L Y C7 E7 C7 E7 E7 E7 # CYRILLIC SMALL LETTER ZE +E8 0438 L Y C8 E8 C8 E8 2A 00 # CYRILLIC SMALL LETTER I +E9 0439 L Y C9 E9 C9 E9 E9 E9 # CYRILLIC SMALL LETTER SHORT I +EA 043A L Y CA EA CA EA EA EA # CYRILLIC SMALL LETTER KA +EB 043B L Y CB EB CB EB EB EB # CYRILLIC SMALL LETTER EL +EC 043C L Y CC EC CC EC EC EC # CYRILLIC SMALL LETTER EM +ED 043D L Y CD ED CD ED ED ED # CYRILLIC SMALL LETTER EN +EE 043E L Y CE EE CE EE 2A 00 # CYRILLIC SMALL LETTER O +EF 043F L Y CF EF CF EF EF EF # CYRILLIC SMALL LETTER PE +F0 0440 L Y D0 F0 D0 F0 F0 F0 # CYRILLIC SMALL LETTER ER +F1 0441 L Y D1 F1 D1 F1 F1 F1 # CYRILLIC SMALL LETTER ES +F2 0442 L Y D2 F2 D2 F2 F2 F2 # CYRILLIC SMALL LETTER TE +F3 0443 L Y D3 F3 D3 F3 2A 00 # CYRILLIC SMALL LETTER U +F4 0444 L Y D4 F4 D4 F4 F4 F4 # CYRILLIC SMALL LETTER EF +F5 0445 L Y D5 F5 D5 F5 F5 F5 # CYRILLIC SMALL LETTER HA +F6 0446 L Y D6 F6 D6 F6 F6 F6 # CYRILLIC SMALL LETTER TSE +F7 0447 L Y D7 F7 D7 F7 F7 F7 # CYRILLIC SMALL LETTER CHE +F8 0448 L Y D8 F8 D8 F8 F8 F8 # CYRILLIC SMALL LETTER SHA +F9 0449 L Y D9 F9 D9 F9 F9 F9 # CYRILLIC SMALL LETTER SHCHA +FA 044A L Y DA FA DA FA FA FA # CYRILLIC SMALL LETTER HARD SIGN +FB 044B L Y DB FB DB FB 2A 00 # CYRILLIC SMALL LETTER YERU +FC 044C L Y DC FC DC FC FC FC # CYRILLIC SMALL LETTER SOFT SIGN +FD 044D L Y DD FD DD FD 2A 00 # CYRILLIC SMALL LETTER E +FE 044E L Y DE FE DE FE 2A 00 # CYRILLIC SMALL LETTER YU +FF 044F L Y DF FF DF FF 2A 00 # CYRILLIC SMALL LETTER YA diff --git a/assets/data/cp1252.cmap b/assets/data/cp1252.cmap new file mode 100644 index 0000000..91c33c7 --- /dev/null +++ b/assets/data/cp1252.cmap @@ -0,0 +1,1943 @@ +INTERNAL +/ +N 952 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > 8A + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 2 + 0301 > DD + 0308 > 9F + . +005A > 5A / + N 1 + 030C > 8E + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > 9A + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A / + N 1 + 030C > 9E + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008D > 8D +008F > 8F +0090 > 90 +009D > 9D +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 8C +0153 > 9C +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 8A +0161 > 9A +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 9F +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 8E +017E > 9E +017F > 73 # compat +0192 > 83 +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 8E # compat +01C5 > 44 9E # compat +01C6 > 64 9E # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C6 > 88 +02DC > 98 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 8A # unsup: 0160 0307 +1E67 > 9A # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > 8A + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 2 + 0301 > DD + 0308 > 9F + . +005A > 5A / + N 1 + 030C > 8E + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > 9A + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A / + N 1 + 030C > 9E + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008D > 8D +008F > 8F +0090 > 90 +009D > 9D +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +0152 > 8C +0153 > 9C +0160 > 8A +0161 > 9A +0178 > 9F +017D > 8E +017E > 9E +0192 > 83 +02C6 > 88 +02DC > 98 +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0053 030C +8B > 2039 +8C > 0152 +8D > 008D +8E > 005A 030C +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 0073 030C +9B > 203A +9C > 0153 +9D > 009D +9E > 007A 030C +9F > 0059 0308 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 00D0 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0059 0301 +DE > 00DE +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 00F0 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0079 0301 +FE > 00FE +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0160 +8B > 2039 +8C > 0152 +8D > 008D +8E > 017D +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 0161 +9B > 203A +9C > 0153 +9D > 009D +9E > 017E +9F > 0178 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 00D0 +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 00DD +DE > 00DE +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 00F0 +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 00FD +FE > 00FE +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/cp1252.cset b/assets/data/cp1252.cset new file mode 100644 index 0000000..2d1fb1f --- /dev/null +++ b/assets/data/cp1252.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1252 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 02C6 M Y 88 88 88 00 00 00 # MODIFIER LETTER CIRCUMFLEX ACCENT +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 0160 L Y 8A 9A 8A 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 0152 L Y 8C 9C 8C 8C 2A 00 # LATIN CAPITAL LIGATURE OE +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 017D L Y 8E 9E 8E 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 02DC - Y 98 98 98 00 00 00 # SMALL TILDE +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 0161 L Y 8A 9A 8A 73 73 73 # LATIN SMALL LETTER S WITH CARON +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 0153 L Y 8C 9C 8C 9C 2A 00 # LATIN SMALL LIGATURE OE +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 017E L Y 8E 9E 8E 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +9F 0178 L Y 9F FF 9F 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 00D0 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER ETH +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 00DE L Y DE FE DE DE FE FE # LATIN CAPITAL LETTER THORN +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 00F0 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER ETH +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 00FE L Y DE FE DE FE FE FE # LATIN SMALL LETTER THORN +FF 00FF L Y 9F FF 9F 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/cp1253.cmap b/assets/data/cp1253.cmap new file mode 100644 index 0000000..1efbba9 --- /dev/null +++ b/assets/data/cp1253.cmap @@ -0,0 +1,2148 @@ +INTERNAL +/ +N 1223 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0088 > 88 +008A > 8A +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0098 > 98 +009A > 9A +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 / + N 1 + 0301 > A1 + . +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00BB > BB +00BD > BD +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +0192 > 83 +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0384 > B4 +0385 > A1 +0386 > A2 +0387 > B7 +0388 > B8 +0389 > B9 +038A > BA +038C > BC +038E > BE +038F > BF +0390 > C0 +0391 > C1 / + N 1 + 0301 > A2 + . +0392 > C2 +0393 > C3 +0394 > C4 +0395 > C5 / + N 1 + 0301 > B8 + . +0396 > C6 +0397 > C7 / + N 1 + 0301 > B9 + . +0398 > C8 +0399 > C9 / + N 2 + 0301 > BA + 0308 > DA + . +039A > CA +039B > CB +039C > CC +039D > CD +039E > CE +039F > CF / + N 1 + 0301 > BC + . +03A0 > D0 +03A1 > D1 +03A3 > D3 +03A4 > D4 +03A5 > D5 / + N 2 + 0301 > BE + 0308 > DB + . +03A6 > D6 +03A7 > D7 +03A8 > D8 +03A9 > D9 / + N 1 + 0301 > BF + . +03AA > DA +03AB > DB +03AC > DC +03AD > DD +03AE > DE +03AF > DF +03B0 > E0 +03B1 > E1 / + N 1 + 0301 > DC + . +03B2 > E2 +03B3 > E3 +03B4 > E4 +03B5 > E5 / + N 1 + 0301 > DD + . +03B6 > E6 +03B7 > E7 / + N 1 + 0301 > DE + . +03B8 > E8 +03B9 > E9 / + N 2 + 0301 > DF + 0308 > FA / + N 1 + 0301 > C0 + . + . +03BA > EA +03BB > EB +03BC > EC +03BD > ED +03BE > EE +03BF > EF / + N 1 + 0301 > FC + . +03C0 > F0 +03C1 > F1 +03C2 > F2 +03C3 > F3 +03C4 > F4 +03C5 > F5 / + N 2 + 0301 > FD + 0308 > FB / + N 1 + 0301 > E0 + . + . +03C6 > F6 +03C7 > F7 +03C8 > F8 +03C9 > F9 / + N 1 + 0301 > FE + . +03CA > FA / + N 1 + 0301 > C0 + . +03CB > FB / + N 1 + 0301 > E0 + . +03CC > FC +03CD > FD +03CE > FE +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1F00 > E1 # unsup: 03B1 0313 +1F01 > E1 # unsup: 03B1 0314 +1F02 > E1 # unsup: 03B1 0313 0300 +1F03 > E1 # unsup: 03B1 0314 0300 +1F04 > E1 # unsup: 03B1 0313 0301 +1F05 > E1 # unsup: 03B1 0314 0301 +1F06 > E1 # unsup: 03B1 0313 0342 +1F07 > E1 # unsup: 03B1 0314 0342 +1F08 > C1 # unsup: 0391 0313 +1F09 > C1 # unsup: 0391 0314 +1F0A > C1 # unsup: 0391 0313 0300 +1F0B > C1 # unsup: 0391 0314 0300 +1F0C > C1 # unsup: 0391 0313 0301 +1F0D > C1 # unsup: 0391 0314 0301 +1F0E > C1 # unsup: 0391 0313 0342 +1F0F > C1 # unsup: 0391 0314 0342 +1F10 > E5 # unsup: 03B5 0313 +1F11 > E5 # unsup: 03B5 0314 +1F12 > E5 # unsup: 03B5 0313 0300 +1F13 > E5 # unsup: 03B5 0314 0300 +1F14 > E5 # unsup: 03B5 0313 0301 +1F15 > E5 # unsup: 03B5 0314 0301 +1F18 > C5 # unsup: 0395 0313 +1F19 > C5 # unsup: 0395 0314 +1F1A > C5 # unsup: 0395 0313 0300 +1F1B > C5 # unsup: 0395 0314 0300 +1F1C > C5 # unsup: 0395 0313 0301 +1F1D > C5 # unsup: 0395 0314 0301 +1F20 > E7 # unsup: 03B7 0313 +1F21 > E7 # unsup: 03B7 0314 +1F22 > E7 # unsup: 03B7 0313 0300 +1F23 > E7 # unsup: 03B7 0314 0300 +1F24 > E7 # unsup: 03B7 0313 0301 +1F25 > E7 # unsup: 03B7 0314 0301 +1F26 > E7 # unsup: 03B7 0313 0342 +1F27 > E7 # unsup: 03B7 0314 0342 +1F28 > C7 # unsup: 0397 0313 +1F29 > C7 # unsup: 0397 0314 +1F2A > C7 # unsup: 0397 0313 0300 +1F2B > C7 # unsup: 0397 0314 0300 +1F2C > C7 # unsup: 0397 0313 0301 +1F2D > C7 # unsup: 0397 0314 0301 +1F2E > C7 # unsup: 0397 0313 0342 +1F2F > C7 # unsup: 0397 0314 0342 +1F30 > E9 # unsup: 03B9 0313 +1F31 > E9 # unsup: 03B9 0314 +1F32 > E9 # unsup: 03B9 0313 0300 +1F33 > E9 # unsup: 03B9 0314 0300 +1F34 > E9 # unsup: 03B9 0313 0301 +1F35 > E9 # unsup: 03B9 0314 0301 +1F36 > E9 # unsup: 03B9 0313 0342 +1F37 > E9 # unsup: 03B9 0314 0342 +1F38 > C9 # unsup: 0399 0313 +1F39 > C9 # unsup: 0399 0314 +1F3A > C9 # unsup: 0399 0313 0300 +1F3B > C9 # unsup: 0399 0314 0300 +1F3C > C9 # unsup: 0399 0313 0301 +1F3D > C9 # unsup: 0399 0314 0301 +1F3E > C9 # unsup: 0399 0313 0342 +1F3F > C9 # unsup: 0399 0314 0342 +1F40 > EF # unsup: 03BF 0313 +1F41 > EF # unsup: 03BF 0314 +1F42 > EF # unsup: 03BF 0313 0300 +1F43 > EF # unsup: 03BF 0314 0300 +1F44 > EF # unsup: 03BF 0313 0301 +1F45 > EF # unsup: 03BF 0314 0301 +1F48 > CF # unsup: 039F 0313 +1F49 > CF # unsup: 039F 0314 +1F4A > CF # unsup: 039F 0313 0300 +1F4B > CF # unsup: 039F 0314 0300 +1F4C > CF # unsup: 039F 0313 0301 +1F4D > CF # unsup: 039F 0314 0301 +1F50 > F5 # unsup: 03C5 0313 +1F51 > F5 # unsup: 03C5 0314 +1F52 > F5 # unsup: 03C5 0313 0300 +1F53 > F5 # unsup: 03C5 0314 0300 +1F54 > F5 # unsup: 03C5 0313 0301 +1F55 > F5 # unsup: 03C5 0314 0301 +1F56 > F5 # unsup: 03C5 0313 0342 +1F57 > F5 # unsup: 03C5 0314 0342 +1F59 > D5 # unsup: 03A5 0314 +1F5B > D5 # unsup: 03A5 0314 0300 +1F5D > D5 # unsup: 03A5 0314 0301 +1F5F > D5 # unsup: 03A5 0314 0342 +1F60 > F9 # unsup: 03C9 0313 +1F61 > F9 # unsup: 03C9 0314 +1F62 > F9 # unsup: 03C9 0313 0300 +1F63 > F9 # unsup: 03C9 0314 0300 +1F64 > F9 # unsup: 03C9 0313 0301 +1F65 > F9 # unsup: 03C9 0314 0301 +1F66 > F9 # unsup: 03C9 0313 0342 +1F67 > F9 # unsup: 03C9 0314 0342 +1F68 > D9 # unsup: 03A9 0313 +1F69 > D9 # unsup: 03A9 0314 +1F6A > D9 # unsup: 03A9 0313 0300 +1F6B > D9 # unsup: 03A9 0314 0300 +1F6C > D9 # unsup: 03A9 0313 0301 +1F6D > D9 # unsup: 03A9 0314 0301 +1F6E > D9 # unsup: 03A9 0313 0342 +1F6F > D9 # unsup: 03A9 0314 0342 +1F70 > E1 # unsup: 03B1 0300 +1F71 > DC +1F72 > E5 # unsup: 03B5 0300 +1F73 > DD +1F74 > E7 # unsup: 03B7 0300 +1F75 > DE +1F76 > E9 # unsup: 03B9 0300 +1F77 > DF +1F78 > EF # unsup: 03BF 0300 +1F79 > FC +1F7A > F5 # unsup: 03C5 0300 +1F7B > FD +1F7C > F9 # unsup: 03C9 0300 +1F7D > FE +1F80 > E1 # unsup: 03B1 0313 0345 +1F81 > E1 # unsup: 03B1 0314 0345 +1F82 > E1 # unsup: 03B1 0313 0300 0345 +1F83 > E1 # unsup: 03B1 0314 0300 0345 +1F84 > E1 # unsup: 03B1 0313 0301 0345 +1F85 > E1 # unsup: 03B1 0314 0301 0345 +1F86 > E1 # unsup: 03B1 0313 0342 0345 +1F87 > E1 # unsup: 03B1 0314 0342 0345 +1F88 > C1 # unsup: 0391 0313 0345 +1F89 > C1 # unsup: 0391 0314 0345 +1F8A > C1 # unsup: 0391 0313 0300 0345 +1F8B > C1 # unsup: 0391 0314 0300 0345 +1F8C > C1 # unsup: 0391 0313 0301 0345 +1F8D > C1 # unsup: 0391 0314 0301 0345 +1F8E > C1 # unsup: 0391 0313 0342 0345 +1F8F > C1 # unsup: 0391 0314 0342 0345 +1F90 > E7 # unsup: 03B7 0313 0345 +1F91 > E7 # unsup: 03B7 0314 0345 +1F92 > E7 # unsup: 03B7 0313 0300 0345 +1F93 > E7 # unsup: 03B7 0314 0300 0345 +1F94 > E7 # unsup: 03B7 0313 0301 0345 +1F95 > E7 # unsup: 03B7 0314 0301 0345 +1F96 > E7 # unsup: 03B7 0313 0342 0345 +1F97 > E7 # unsup: 03B7 0314 0342 0345 +1F98 > C7 # unsup: 0397 0313 0345 +1F99 > C7 # unsup: 0397 0314 0345 +1F9A > C7 # unsup: 0397 0313 0300 0345 +1F9B > C7 # unsup: 0397 0314 0300 0345 +1F9C > C7 # unsup: 0397 0313 0301 0345 +1F9D > C7 # unsup: 0397 0314 0301 0345 +1F9E > C7 # unsup: 0397 0313 0342 0345 +1F9F > C7 # unsup: 0397 0314 0342 0345 +1FA0 > F9 # unsup: 03C9 0313 0345 +1FA1 > F9 # unsup: 03C9 0314 0345 +1FA2 > F9 # unsup: 03C9 0313 0300 0345 +1FA3 > F9 # unsup: 03C9 0314 0300 0345 +1FA4 > F9 # unsup: 03C9 0313 0301 0345 +1FA5 > F9 # unsup: 03C9 0314 0301 0345 +1FA6 > F9 # unsup: 03C9 0313 0342 0345 +1FA7 > F9 # unsup: 03C9 0314 0342 0345 +1FA8 > D9 # unsup: 03A9 0313 0345 +1FA9 > D9 # unsup: 03A9 0314 0345 +1FAA > D9 # unsup: 03A9 0313 0300 0345 +1FAB > D9 # unsup: 03A9 0314 0300 0345 +1FAC > D9 # unsup: 03A9 0313 0301 0345 +1FAD > D9 # unsup: 03A9 0314 0301 0345 +1FAE > D9 # unsup: 03A9 0313 0342 0345 +1FAF > D9 # unsup: 03A9 0314 0342 0345 +1FB0 > E1 # unsup: 03B1 0306 +1FB1 > E1 # unsup: 03B1 0304 +1FB2 > E1 # unsup: 03B1 0300 0345 +1FB3 > E1 # unsup: 03B1 0345 +1FB4 > DC # unsup: 03AC 0345 +1FB6 > E1 # unsup: 03B1 0342 +1FB7 > E1 # unsup: 03B1 0342 0345 +1FB8 > C1 # unsup: 0391 0306 +1FB9 > C1 # unsup: 0391 0304 +1FBA > C1 # unsup: 0391 0300 +1FBB > A2 +1FBC > C1 # unsup: 0391 0345 +1FBE > E9 +1FC1 > A8 # unsup: 00A8 0342 +1FC2 > E7 # unsup: 03B7 0300 0345 +1FC3 > E7 # unsup: 03B7 0345 +1FC4 > DE # unsup: 03AE 0345 +1FC6 > E7 # unsup: 03B7 0342 +1FC7 > E7 # unsup: 03B7 0342 0345 +1FC8 > C5 # unsup: 0395 0300 +1FC9 > B8 +1FCA > C7 # unsup: 0397 0300 +1FCB > B9 +1FCC > C7 # unsup: 0397 0345 +1FD0 > E9 # unsup: 03B9 0306 +1FD1 > E9 # unsup: 03B9 0304 +1FD2 > FA # unsup: 03CA 0300 +1FD3 > C0 +1FD6 > E9 # unsup: 03B9 0342 +1FD7 > FA # unsup: 03CA 0342 +1FD8 > C9 # unsup: 0399 0306 +1FD9 > C9 # unsup: 0399 0304 +1FDA > C9 # unsup: 0399 0300 +1FDB > BA +1FE0 > F5 # unsup: 03C5 0306 +1FE1 > F5 # unsup: 03C5 0304 +1FE2 > FB # unsup: 03CB 0300 +1FE3 > E0 +1FE4 > F1 # unsup: 03C1 0313 +1FE5 > F1 # unsup: 03C1 0314 +1FE6 > F5 # unsup: 03C5 0342 +1FE7 > FB # unsup: 03CB 0342 +1FE8 > D5 # unsup: 03A5 0306 +1FE9 > D5 # unsup: 03A5 0304 +1FEA > D5 # unsup: 03A5 0300 +1FEB > BE +1FEC > D1 # unsup: 03A1 0314 +1FED > A8 # unsup: 00A8 0300 +1FEE > A1 +1FEF > 60 +1FF2 > F9 # unsup: 03C9 0300 0345 +1FF3 > F9 # unsup: 03C9 0345 +1FF4 > FE # unsup: 03CE 0345 +1FF6 > F9 # unsup: 03C9 0342 +1FF7 > F9 # unsup: 03C9 0342 0345 +1FF8 > CF # unsup: 039F 0300 +1FF9 > BC +1FFA > D9 # unsup: 03A9 0300 +1FFB > BF +1FFC > D9 # unsup: 03A9 0345 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2015 > AF +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 274 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0088 > 88 +008A > 8A +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0098 > 98 +009A > 9A +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 / + N 1 + 0301 > A1 + . +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00BB > BB +00BD > BD +0192 > 83 +037E > 3B +0384 > B4 +0385 > A1 +0386 > A2 +0387 > B7 +0388 > B8 +0389 > B9 +038A > BA +038C > BC +038E > BE +038F > BF +0390 > C0 +0391 > C1 / + N 1 + 0301 > A2 + . +0392 > C2 +0393 > C3 +0394 > C4 +0395 > C5 / + N 1 + 0301 > B8 + . +0396 > C6 +0397 > C7 / + N 1 + 0301 > B9 + . +0398 > C8 +0399 > C9 / + N 2 + 0301 > BA + 0308 > DA + . +039A > CA +039B > CB +039C > CC +039D > CD +039E > CE +039F > CF / + N 1 + 0301 > BC + . +03A0 > D0 +03A1 > D1 +03A3 > D3 +03A4 > D4 +03A5 > D5 / + N 2 + 0301 > BE + 0308 > DB + . +03A6 > D6 +03A7 > D7 +03A8 > D8 +03A9 > D9 / + N 1 + 0301 > BF + . +03AA > DA +03AB > DB +03AC > DC +03AD > DD +03AE > DE +03AF > DF +03B0 > E0 +03B1 > E1 / + N 1 + 0301 > DC + . +03B2 > E2 +03B3 > E3 +03B4 > E4 +03B5 > E5 / + N 1 + 0301 > DD + . +03B6 > E6 +03B7 > E7 / + N 1 + 0301 > DE + . +03B8 > E8 +03B9 > E9 / + N 2 + 0301 > DF + 0308 > FA / + N 1 + 0301 > C0 + . + . +03BA > EA +03BB > EB +03BC > EC +03BD > ED +03BE > EE +03BF > EF / + N 1 + 0301 > FC + . +03C0 > F0 +03C1 > F1 +03C2 > F2 +03C3 > F3 +03C4 > F4 +03C5 > F5 / + N 2 + 0301 > FD + 0308 > FB / + N 1 + 0301 > E0 + . + . +03C6 > F6 +03C7 > F7 +03C8 > F8 +03C9 > F9 / + N 1 + 0301 > FE + . +03CA > FA / + N 1 + 0301 > C0 + . +03CB > FB / + N 1 + 0301 > E0 + . +03CC > FC +03CD > FD +03CE > FE +1F71 > DC +1F73 > DD +1F75 > DE +1F77 > DF +1F79 > FC +1F7B > FD +1F7D > FE +1FBB > A2 +1FBE > E9 +1FC9 > B8 +1FCB > B9 +1FD3 > C0 +1FDB > BA +1FE3 > E0 +1FEB > BE +1FEE > A1 +1FEF > 60 +1FF9 > BC +1FFB > BF +2013 > 96 +2014 > 97 +2015 > AF +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 253 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A8 0301 +A2 > 0391 0301 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 2015 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 0384 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 0395 0301 +B9 > 0397 0301 +BA > 0399 0301 +BB > 00BB +BC > 039F 0301 +BD > 00BD +BE > 03A5 0301 +BF > 03A9 0301 +C0 > 03B9 0308 0301 +C1 > 0391 +C2 > 0392 +C3 > 0393 +C4 > 0394 +C5 > 0395 +C6 > 0396 +C7 > 0397 +C8 > 0398 +C9 > 0399 +CA > 039A +CB > 039B +CC > 039C +CD > 039D +CE > 039E +CF > 039F +D0 > 03A0 +D1 > 03A1 +D3 > 03A3 +D4 > 03A4 +D5 > 03A5 +D6 > 03A6 +D7 > 03A7 +D8 > 03A8 +D9 > 03A9 +DA > 0399 0308 +DB > 03A5 0308 +DC > 03B1 0301 +DD > 03B5 0301 +DE > 03B7 0301 +DF > 03B9 0301 +E0 > 03C5 0308 0301 +E1 > 03B1 +E2 > 03B2 +E3 > 03B3 +E4 > 03B4 +E5 > 03B5 +E6 > 03B6 +E7 > 03B7 +E8 > 03B8 +E9 > 03B9 +EA > 03BA +EB > 03BB +EC > 03BC +ED > 03BD +EE > 03BE +EF > 03BF +F0 > 03C0 +F1 > 03C1 +F2 > 03C2 +F3 > 03C3 +F4 > 03C4 +F5 > 03C5 +F6 > 03C6 +F7 > 03C7 +F8 > 03C8 +F9 > 03C9 +FA > 03B9 0308 +FB > 03C5 0308 +FC > 03BF 0301 +FD > 03C5 0301 +FE > 03C9 0301 +. + +NFC +/ +N 253 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0385 +A2 > 0386 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 2015 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 0384 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 0388 +B9 > 0389 +BA > 038A +BB > 00BB +BC > 038C +BD > 00BD +BE > 038E +BF > 038F +C0 > 0390 +C1 > 0391 +C2 > 0392 +C3 > 0393 +C4 > 0394 +C5 > 0395 +C6 > 0396 +C7 > 0397 +C8 > 0398 +C9 > 0399 +CA > 039A +CB > 039B +CC > 039C +CD > 039D +CE > 039E +CF > 039F +D0 > 03A0 +D1 > 03A1 +D3 > 03A3 +D4 > 03A4 +D5 > 03A5 +D6 > 03A6 +D7 > 03A7 +D8 > 03A8 +D9 > 03A9 +DA > 03AA +DB > 03AB +DC > 03AC +DD > 03AD +DE > 03AE +DF > 03AF +E0 > 03B0 +E1 > 03B1 +E2 > 03B2 +E3 > 03B3 +E4 > 03B4 +E5 > 03B5 +E6 > 03B6 +E7 > 03B7 +E8 > 03B8 +E9 > 03B9 +EA > 03BA +EB > 03BB +EC > 03BC +ED > 03BD +EE > 03BE +EF > 03BF +F0 > 03C0 +F1 > 03C1 +F2 > 03C2 +F3 > 03C3 +F4 > 03C4 +F5 > 03C5 +F6 > 03C6 +F7 > 03C7 +F8 > 03C8 +F9 > 03C9 +FA > 03CA +FB > 03CB +FC > 03CC +FD > 03CD +FE > 03CE +. + +COMP += NFC +. diff --git a/assets/data/cp1253.cset b/assets/data/cp1253.cset new file mode 100644 index 0000000..9d8d3cd --- /dev/null +++ b/assets/data/cp1253.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1253 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0385 - Y A1 A1 A1 00 00 00 # GREEK DIALYTIKA TONOS +A2 0386 L Y A2 DC A2 C1 2A 00 # GREEK CAPITAL LETTER ALPHA WITH TONOS +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA E0AA . N AA AA AA 00 00 00 # <unused> +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 2015 - Y AF AF AF 00 00 00 # HORIZONTAL BAR +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 0384 - Y B4 B4 B4 00 00 00 # GREEK TONOS +B5 00B5 A Y CC B5 CC 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 0388 L Y B8 DD B8 C5 2A 00 # GREEK CAPITAL LETTER EPSILON WITH TONOS +B9 0389 L Y B9 DE B9 C7 2A 00 # GREEK CAPITAL LETTER ETA WITH TONOS +BA 038A L Y BA DF BA C9 2A 00 # GREEK CAPITAL LETTER IOTA WITH TONOS +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 038C L Y BC FC BC CF 2A 00 # GREEK CAPITAL LETTER OMICRON WITH TONOS +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 038E L Y BE FD BE D5 2A 00 # GREEK CAPITAL LETTER UPSILON WITH TONOS +BF 038F L Y BF FE BF D9 2A 00 # GREEK CAPITAL LETTER OMEGA WITH TONOS +C0 0390 L Y C0 C0 C0 E9 2A 00 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +C1 0391 L Y C1 E1 C1 C1 2A 00 # GREEK CAPITAL LETTER ALPHA +C2 0392 L Y C2 E2 C2 C2 E2 E2 # GREEK CAPITAL LETTER BETA +C3 0393 L Y C3 E3 C3 C3 E3 E3 # GREEK CAPITAL LETTER GAMMA +C4 0394 L Y C4 E4 C4 C4 E4 E4 # GREEK CAPITAL LETTER DELTA +C5 0395 L Y C5 E5 C5 C5 2A 00 # GREEK CAPITAL LETTER EPSILON +C6 0396 L Y C6 E6 C6 C6 E6 E6 # GREEK CAPITAL LETTER ZETA +C7 0397 L Y C7 E7 C7 C7 2A 00 # GREEK CAPITAL LETTER ETA +C8 0398 L Y C8 E8 C8 C8 E8 E8 # GREEK CAPITAL LETTER THETA +C9 0399 L Y C9 E9 C9 C9 2A 00 # GREEK CAPITAL LETTER IOTA +CA 039A L Y CA EA CA CA EA EA # GREEK CAPITAL LETTER KAPPA +CB 039B L Y CB EB CB CB EB EB # GREEK CAPITAL LETTER LAMDA +CC 039C L Y CC EC CC CC EC EC # GREEK CAPITAL LETTER MU +CD 039D L Y CD ED CD CD ED ED # GREEK CAPITAL LETTER NU +CE 039E L Y CE EE CE CE EE EE # GREEK CAPITAL LETTER XI +CF 039F L Y CF EF CF CF 2A 00 # GREEK CAPITAL LETTER OMICRON +D0 03A0 L Y D0 F0 D0 D0 F0 F0 # GREEK CAPITAL LETTER PI +D1 03A1 L Y D1 F1 D1 D1 F1 F1 # GREEK CAPITAL LETTER RHO +D2 E0D2 . N D2 D2 D2 00 00 00 # <unused> +D3 03A3 L Y D3 F3 D3 D3 F3 F3 # GREEK CAPITAL LETTER SIGMA +D4 03A4 L Y D4 F4 D4 D4 F4 F4 # GREEK CAPITAL LETTER TAU +D5 03A5 L Y D5 F5 D5 D5 2A 00 # GREEK CAPITAL LETTER UPSILON +D6 03A6 L Y D6 F6 D6 D6 F6 F6 # GREEK CAPITAL LETTER PHI +D7 03A7 L Y D7 F7 D7 D7 F7 F7 # GREEK CAPITAL LETTER CHI +D8 03A8 L Y D8 F8 D8 D8 F8 F8 # GREEK CAPITAL LETTER PSI +D9 03A9 L Y D9 F9 D9 D9 2A 00 # GREEK CAPITAL LETTER OMEGA +DA 03AA L Y DA FA DA C9 2A 00 # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +DB 03AB L Y DB FB DB D5 2A 00 # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +DC 03AC L Y A2 DC A2 E1 2A 00 # GREEK SMALL LETTER ALPHA WITH TONOS +DD 03AD L Y B8 DD B8 E5 2A 00 # GREEK SMALL LETTER EPSILON WITH TONOS +DE 03AE L Y B9 DE B9 E7 2A 00 # GREEK SMALL LETTER ETA WITH TONOS +DF 03AF L Y BA DF BA E9 2A 00 # GREEK SMALL LETTER IOTA WITH TONOS +E0 03B0 L Y E0 E0 E0 F5 2A 00 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +E1 03B1 L Y C1 E1 C1 E1 2A 00 # GREEK SMALL LETTER ALPHA +E2 03B2 L Y C2 E2 C2 E2 E2 E2 # GREEK SMALL LETTER BETA +E3 03B3 L Y C3 E3 C3 E3 E3 E3 # GREEK SMALL LETTER GAMMA +E4 03B4 L Y C4 E4 C4 E4 E4 E4 # GREEK SMALL LETTER DELTA +E5 03B5 L Y C5 E5 C5 E5 2A 00 # GREEK SMALL LETTER EPSILON +E6 03B6 L Y C6 E6 C6 E6 E6 E6 # GREEK SMALL LETTER ZETA +E7 03B7 L Y C7 E7 C7 E7 2A 00 # GREEK SMALL LETTER ETA +E8 03B8 L Y C8 E8 C8 E8 E8 E8 # GREEK SMALL LETTER THETA +E9 03B9 L Y C9 E9 C9 E9 2A 00 # GREEK SMALL LETTER IOTA +EA 03BA L Y CA EA CA EA EA EA # GREEK SMALL LETTER KAPPA +EB 03BB L Y CB EB CB EB EB EB # GREEK SMALL LETTER LAMDA +EC 03BC L Y CC EC CC EC EC EC # GREEK SMALL LETTER MU +ED 03BD L Y CD ED CD ED ED ED # GREEK SMALL LETTER NU +EE 03BE L Y CE EE CE EE EE EE # GREEK SMALL LETTER XI +EF 03BF L Y CF EF CF EF 2A 00 # GREEK SMALL LETTER OMICRON +F0 03C0 L Y D0 F0 D0 F0 F0 F0 # GREEK SMALL LETTER PI +F1 03C1 L Y D1 F1 D1 F1 F1 F1 # GREEK SMALL LETTER RHO +F2 03C2 L Y D3 F2 D3 F2 F2 F2 # GREEK SMALL LETTER FINAL SIGMA +F3 03C3 L Y D3 F3 D3 F3 F3 F3 # GREEK SMALL LETTER SIGMA +F4 03C4 L Y D4 F4 D4 F4 F4 F4 # GREEK SMALL LETTER TAU +F5 03C5 L Y D5 F5 D5 F5 2A 00 # GREEK SMALL LETTER UPSILON +F6 03C6 L Y D6 F6 D6 F6 F6 F6 # GREEK SMALL LETTER PHI +F7 03C7 L Y D7 F7 D7 F7 F7 F7 # GREEK SMALL LETTER CHI +F8 03C8 L Y D8 F8 D8 F8 F8 F8 # GREEK SMALL LETTER PSI +F9 03C9 L Y D9 F9 D9 F9 2A 00 # GREEK SMALL LETTER OMEGA +FA 03CA L Y DA FA DA E9 2A 00 # GREEK SMALL LETTER IOTA WITH DIALYTIKA +FB 03CB L Y DB FB DB F5 2A 00 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +FC 03CC L Y BC FC BC EF 2A 00 # GREEK SMALL LETTER OMICRON WITH TONOS +FD 03CD L Y BE FD BE F5 2A 00 # GREEK SMALL LETTER UPSILON WITH TONOS +FE 03CE L Y BF FE BF F9 2A 00 # GREEK SMALL LETTER OMEGA WITH TONOS +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/cp1254.cmap b/assets/data/cp1254.cmap new file mode 100644 index 0000000..4f2821d --- /dev/null +++ b/assets/data/cp1254.cmap @@ -0,0 +1,1944 @@ +INTERNAL +/ +N 951 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 1 + 0306 > D0 + . +0048 > 48 +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > DD + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 2 + 030C > 8A + 0327 > DE + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > 9F + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 1 + 0306 > F0 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 2 + 030C > 9A + 0327 > FE + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009D > 9D +009E > 9E +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > D0 +011F > F0 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > DD +0131 > FD +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 8C +0153 > 9C +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > DE +015F > FE +0160 > 8A +0161 > 9A +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 9F +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +0192 > 83 +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C6 > 88 +02DC > 98 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 8A # unsup: 0160 0307 +1E67 > 9A # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 1 + 0306 > D0 + . +0048 > 48 +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > DD + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 2 + 030C > 8A + 0327 > DE + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > 9F + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 1 + 0306 > F0 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 2 + 030C > 9A + 0327 > FE + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009D > 9D +009E > 9E +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FF > FF +011E > D0 +011F > F0 +0130 > DD +0131 > FD +0152 > 8C +0153 > 9C +015E > DE +015F > FE +0160 > 8A +0161 > 9A +0178 > 9F +0192 > 83 +02C6 > 88 +02DC > 98 +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0053 030C +8B > 2039 +8C > 0152 +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 0073 030C +9B > 203A +9C > 0153 +9D > 009D +9E > 009E +9F > 0059 0308 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 0047 0306 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0049 0307 +DE > 0053 0327 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 0067 0306 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0131 +FE > 0073 0327 +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0160 +8B > 2039 +8C > 0152 +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 0161 +9B > 203A +9C > 0153 +9D > 009D +9E > 009E +9F > 0178 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 011E +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 0130 +DE > 015E +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 011F +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 0131 +FE > 015F +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/cp1254.cset b/assets/data/cp1254.cset new file mode 100644 index 0000000..c30b93b --- /dev/null +++ b/assets/data/cp1254.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1254 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 02C6 M Y 88 88 88 00 00 00 # MODIFIER LETTER CIRCUMFLEX ACCENT +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 0160 L Y 8A 9A 8A 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 0152 L Y 8C 9C 8C 8C 2A 00 # LATIN CAPITAL LIGATURE OE +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 02DC - Y 98 98 98 00 00 00 # SMALL TILDE +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 0161 L Y 8A 9A 8A 73 73 73 # LATIN SMALL LETTER S WITH CARON +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 0153 L Y 8C 9C 8C 9C 2A 00 # LATIN SMALL LIGATURE OE +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 0178 L Y 9F FF 9F 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 011E L Y D0 F0 D0 47 67 67 # LATIN CAPITAL LETTER G WITH BREVE +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 0130 L Y DD 69 DD 49 2A 00 # LATIN CAPITAL LETTER I WITH DOT ABOVE +DE 015E L Y DE FE DE 53 73 73 # LATIN CAPITAL LETTER S WITH CEDILLA +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 011F L Y D0 F0 D0 67 67 67 # LATIN SMALL LETTER G WITH BREVE +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 0131 L Y 49 FD 49 FD FD FD # LATIN SMALL LETTER DOTLESS I +FE 015F L Y DE FE DE 73 73 73 # LATIN SMALL LETTER S WITH CEDILLA +FF 00FF L Y 9F FF 9F 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/cp1255.cmap b/assets/data/cp1255.cmap new file mode 100644 index 0000000..189588d --- /dev/null +++ b/assets/data/cp1255.cmap @@ -0,0 +1,2251 @@ +INTERNAL +/ +N 1045 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008A > 8A +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009A > 9A +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D7 > AA +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F7 > BA +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +0192 > 83 +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C6 > 88 +02DC > 98 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +05B0 > C0 +05B1 > C1 +05B2 > C2 +05B3 > C3 +05B4 > C4 +05B5 > C5 +05B6 > C6 +05B7 > C7 +05B8 > C8 +05B9 > C9 +05BB > CB +05BC > CC +05BD > CD +05BE > CE +05BF > CF +05C0 > D0 +05C1 > D1 +05C2 > D2 +05C3 > D3 +05D0 > E0 +05D1 > E1 +05D2 > E2 +05D3 > E3 +05D4 > E4 +05D5 > E5 +05D6 > E6 +05D7 > E7 +05D8 > E8 +05D9 > E9 +05DA > EA +05DB > EB +05DC > EC +05DD > ED +05DE > EE +05DF > EF +05E0 > F0 +05E1 > F1 +05E2 > F2 +05E3 > F3 +05E4 > F4 +05E5 > F5 +05E6 > F6 +05E7 > F7 +05E8 > F8 +05E9 > F9 +05EA > FA +05F0 > D4 +05F1 > D5 +05F2 > D6 +05F3 > D7 +05F4 > D8 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +200E > FD +200F > FE +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AA > A4 +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB1D > E9 C4 +FB1F > D6 C7 +FB20 > F2 # compat +FB21 > E0 # compat +FB22 > E3 # compat +FB23 > E4 # compat +FB24 > EB # compat +FB25 > EC # compat +FB26 > ED # compat +FB27 > F8 # compat +FB28 > FA # compat +FB29 > 2B # compat +FB2A > F9 D1 +FB2B > F9 D2 +FB2C > F9 CC D1 +FB2D > F9 CC D2 +FB2E > E0 C7 +FB2F > E0 C8 +FB30 > E0 CC +FB31 > E1 CC +FB32 > E2 CC +FB33 > E3 CC +FB34 > E4 CC +FB35 > E5 CC +FB36 > E6 CC +FB38 > E8 CC +FB39 > E9 CC +FB3A > EA CC +FB3B > EB CC +FB3C > EC CC +FB3E > EE CC +FB40 > F0 CC +FB41 > F1 CC +FB43 > F3 CC +FB44 > F4 CC +FB46 > F6 CC +FB47 > F7 CC +FB48 > F8 CC +FB49 > F9 CC +FB4A > FA CC +FB4B > E5 C9 +FB4C > E1 CF +FB4D > EB CF +FB4E > F4 CF +FB4F > E0 EC # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 283 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008A > 8A +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009A > 9A +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00D7 > AA +00F7 > BA +0192 > 83 +02C6 > 88 +02DC > 98 +037E > 3B +0387 > B7 +05B0 > C0 +05B1 > C1 +05B2 > C2 +05B3 > C3 +05B4 > C4 +05B5 > C5 +05B6 > C6 +05B7 > C7 +05B8 > C8 +05B9 > C9 +05BB > CB +05BC > CC +05BD > CD +05BE > CE +05BF > CF +05C0 > D0 +05C1 > D1 +05C2 > D2 +05C3 > D3 +05D0 > E0 +05D1 > E1 +05D2 > E2 +05D3 > E3 +05D4 > E4 +05D5 > E5 +05D6 > E6 +05D7 > E7 +05D8 > E8 +05D9 > E9 +05DA > EA +05DB > EB +05DC > EC +05DD > ED +05DE > EE +05DF > EF +05E0 > F0 +05E1 > F1 +05E2 > F2 +05E3 > F3 +05E4 > F4 +05E5 > F5 +05E6 > F6 +05E7 > F7 +05E8 > F8 +05E9 > F9 +05EA > FA +05F0 > D4 +05F1 > D5 +05F2 > D6 +05F3 > D7 +05F4 > D8 +1FEF > 60 +1FFD > B4 +200E > FD +200F > FE +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AA > A4 +20AC > 80 +2122 > 99 +FB1D > E9 C4 +FB1F > D6 C7 +FB2A > F9 D1 +FB2B > F9 D2 +FB2C > F9 CC D1 +FB2D > F9 CC D2 +FB2E > E0 C7 +FB2F > E0 C8 +FB30 > E0 CC +FB31 > E1 CC +FB32 > E2 CC +FB33 > E3 CC +FB34 > E4 CC +FB35 > E5 CC +FB36 > E6 CC +FB38 > E8 CC +FB39 > E9 CC +FB3A > EA CC +FB3B > EB CC +FB3C > EC CC +FB3E > EE CC +FB40 > F0 CC +FB41 > F1 CC +FB43 > F3 CC +FB44 > F4 CC +FB46 > F6 CC +FB47 > F7 CC +FB48 > F8 CC +FB49 > F9 CC +FB4A > FA CC +FB4B > E5 C9 +FB4C > E1 CF +FB4D > EB CF +FB4E > F4 CF +. + +NFD +/ +N 245 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 20AA +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00D7 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00F7 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 05B0 +C1 > 05B1 +C2 > 05B2 +C3 > 05B3 +C4 > 05B4 +C5 > 05B5 +C6 > 05B6 +C7 > 05B7 +C8 > 05B8 +C9 > 05B9 +CB > 05BB +CC > 05BC +CD > 05BD +CE > 05BE +CF > 05BF +D0 > 05C0 +D1 > 05C1 +D2 > 05C2 +D3 > 05C3 +D4 > 05F0 +D5 > 05F1 +D6 > 05F2 +D7 > 05F3 +D8 > 05F4 +E0 > 05D0 +E1 > 05D1 +E2 > 05D2 +E3 > 05D3 +E4 > 05D4 +E5 > 05D5 +E6 > 05D6 +E7 > 05D7 +E8 > 05D8 +E9 > 05D9 +EA > 05DA +EB > 05DB +EC > 05DC +ED > 05DD +EE > 05DE +EF > 05DF +F0 > 05E0 +F1 > 05E1 +F2 > 05E2 +F3 > 05E3 +F4 > 05E4 +F5 > 05E5 +F6 > 05E6 +F7 > 05E7 +F8 > 05E8 +F9 > 05E9 +FA > 05EA +FD > 200E +FE > 200F +. + +NFC +/ +N 245 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 20AA +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00D7 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00F7 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 05B0 +C1 > 05B1 +C2 > 05B2 +C3 > 05B3 +C4 > 05B4 +C5 > 05B5 +C6 > 05B6 +C7 > 05B7 +C8 > 05B8 +C9 > 05B9 +CB > 05BB +CC > 05BC +CD > 05BD +CE > 05BE +CF > 05BF +D0 > 05C0 +D1 > 05C1 +D2 > 05C2 +D3 > 05C3 +D4 > 05F0 +D5 > 05F1 +D6 > 05F2 / + N 1 + C7 > 05F2 05B7 + . +D7 > 05F3 +D8 > 05F4 +E0 > 05D0 / + N 3 + C7 > 05D0 05B7 + C8 > 05D0 05B8 + CC > 05D0 05BC + . +E1 > 05D1 / + N 2 + CC > 05D1 05BC + CF > 05D1 05BF + . +E2 > 05D2 / + N 1 + CC > 05D2 05BC + . +E3 > 05D3 / + N 1 + CC > 05D3 05BC + . +E4 > 05D4 / + N 1 + CC > 05D4 05BC + . +E5 > 05D5 / + N 2 + C9 > 05D5 05B9 + CC > 05D5 05BC + . +E6 > 05D6 / + N 1 + CC > 05D6 05BC + . +E7 > 05D7 +E8 > 05D8 / + N 1 + CC > 05D8 05BC + . +E9 > 05D9 / + N 2 + C4 > 05D9 05B4 + CC > 05D9 05BC + . +EA > 05DA / + N 1 + CC > 05DA 05BC + . +EB > 05DB / + N 2 + CC > 05DB 05BC + CF > 05DB 05BF + . +EC > 05DC / + N 1 + CC > 05DC 05BC + . +ED > 05DD +EE > 05DE / + N 1 + CC > 05DE 05BC + . +EF > 05DF +F0 > 05E0 / + N 1 + CC > 05E0 05BC + . +F1 > 05E1 / + N 1 + CC > 05E1 05BC + . +F2 > 05E2 +F3 > 05E3 / + N 1 + CC > 05E3 05BC + . +F4 > 05E4 / + N 2 + CC > 05E4 05BC + CF > 05E4 05BF + . +F5 > 05E5 +F6 > 05E6 / + N 1 + CC > 05E6 05BC + . +F7 > 05E7 / + N 1 + CC > 05E7 05BC + . +F8 > 05E8 / + N 1 + CC > 05E8 05BC + . +F9 > 05E9 / + N 3 + CC > 05E9 05BC / + N 2 + D1 > 05E9 05BC 05C1 + D2 > 05E9 05BC 05C2 + . + D1 > 05E9 05C1 + D2 > 05E9 05C2 + . +FA > 05EA / + N 1 + CC > 05EA 05BC + . +FD > 200E +FE > 200F +. + +COMP +/ +N 245 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 20AA +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00D7 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00F7 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 05B0 +C1 > 05B1 +C2 > 05B2 +C3 > 05B3 +C4 > 05B4 +C5 > 05B5 +C6 > 05B6 +C7 > 05B7 +C8 > 05B8 +C9 > 05B9 +CB > 05BB +CC > 05BC +CD > 05BD +CE > 05BE +CF > 05BF +D0 > 05C0 +D1 > 05C1 +D2 > 05C2 +D3 > 05C3 +D4 > 05F0 +D5 > 05F1 +D6 > 05F2 / + N 1 + C7 > FB1F + . +D7 > 05F3 +D8 > 05F4 +E0 > 05D0 / + N 3 + C7 > FB2E + C8 > FB2F + CC > FB30 + . +E1 > 05D1 / + N 2 + CC > FB31 + CF > FB4C + . +E2 > 05D2 / + N 1 + CC > FB32 + . +E3 > 05D3 / + N 1 + CC > FB33 + . +E4 > 05D4 / + N 1 + CC > FB34 + . +E5 > 05D5 / + N 2 + C9 > FB4B + CC > FB35 + . +E6 > 05D6 / + N 1 + CC > FB36 + . +E7 > 05D7 +E8 > 05D8 / + N 1 + CC > FB38 + . +E9 > 05D9 / + N 2 + C4 > FB1D + CC > FB39 + . +EA > 05DA / + N 1 + CC > FB3A + . +EB > 05DB / + N 2 + CC > FB3B + CF > FB4D + . +EC > 05DC / + N 1 + CC > FB3C + . +ED > 05DD +EE > 05DE / + N 1 + CC > FB3E + . +EF > 05DF +F0 > 05E0 / + N 1 + CC > FB40 + . +F1 > 05E1 / + N 1 + CC > FB41 + . +F2 > 05E2 +F3 > 05E3 / + N 1 + CC > FB43 + . +F4 > 05E4 / + N 2 + CC > FB44 + CF > FB4E + . +F5 > 05E5 +F6 > 05E6 / + N 1 + CC > FB46 + . +F7 > 05E7 / + N 1 + CC > FB47 + . +F8 > 05E8 / + N 1 + CC > FB48 + . +F9 > 05E9 / + N 3 + CC > FB49 / + N 2 + D1 > FB2C + D2 > FB2D + . + D1 > FB2A + D2 > FB2B + . +FA > 05EA / + N 1 + CC > FB4A + . +FD > 200E +FE > 200F +. diff --git a/assets/data/cp1255.cset b/assets/data/cp1255.cset new file mode 100644 index 0000000..e1a8e96 --- /dev/null +++ b/assets/data/cp1255.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1255 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 02C6 M Y 88 88 88 00 00 00 # MODIFIER LETTER CIRCUMFLEX ACCENT +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 02DC - Y 98 98 98 00 00 00 # SMALL TILDE +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 20AA - Y A4 A4 A4 00 00 00 # NEW SHEQEL SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00D7 - Y AA AA AA 00 00 00 # MULTIPLICATION SIGN +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00F7 - Y BA BA BA 00 00 00 # DIVISION SIGN +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 05B0 M M C0 C0 C0 00 00 00 # HEBREW POINT SHEVA +C1 05B1 M M C1 C1 C1 00 00 00 # HEBREW POINT HATAF SEGOL +C2 05B2 M M C2 C2 C2 00 00 00 # HEBREW POINT HATAF PATAH +C3 05B3 M M C3 C3 C3 00 00 00 # HEBREW POINT HATAF QAMATS +C4 05B4 M M C4 C4 C4 00 00 00 # HEBREW POINT HIRIQ +C5 05B5 M M C5 C5 C5 00 00 00 # HEBREW POINT TSERE +C6 05B6 M M C6 C6 C6 00 00 00 # HEBREW POINT SEGOL +C7 05B7 M M C7 C7 C7 00 00 00 # HEBREW POINT PATAH +C8 05B8 M M C8 C8 C8 00 00 00 # HEBREW POINT QAMATS +C9 05B9 M M C9 C9 C9 00 00 00 # HEBREW POINT HOLAM +CA E0CA . N CA CA CA 00 00 00 # <unused> +CB 05BB M M CB CB CB 00 00 00 # HEBREW POINT QUBUTS +CC 05BC M M CC CC CC 00 00 00 # HEBREW POINT DAGESH OR MAPIQ +CD 05BD M M CD CD CD 00 00 00 # HEBREW POINT METEG +CE 05BE - Y CE CE CE 00 00 00 # HEBREW PUNCTUATION MAQAF +CF 05BF M M CF CF CF 00 00 00 # HEBREW POINT RAFE +D0 05C0 - Y D0 D0 D0 00 00 00 # HEBREW PUNCTUATION PASEQ +D1 05C1 M M D1 D1 D1 00 00 00 # HEBREW POINT SHIN DOT +D2 05C2 M M D2 D2 D2 00 00 00 # HEBREW POINT SIN DOT +D3 05C3 - Y D3 D3 D3 00 00 00 # HEBREW PUNCTUATION SOF PASUQ +D4 05F0 L Y D4 D4 D4 D4 D4 D4 # HEBREW LIGATURE YIDDISH DOUBLE VAV +D5 05F1 L Y D5 D5 D5 D5 D5 D5 # HEBREW LIGATURE YIDDISH VAV YOD +D6 05F2 L Y D6 D6 D6 D6 D6 D6 # HEBREW LIGATURE YIDDISH DOUBLE YOD +D7 05F3 - Y D7 D7 D7 00 00 00 # HEBREW PUNCTUATION GERESH +D8 05F4 - Y D8 D8 D8 00 00 00 # HEBREW PUNCTUATION GERSHAYIM +D9 E0D9 . N D9 D9 D9 00 00 00 # <unused> +DA E0DA . N DA DA DA 00 00 00 # <unused> +DB E0DB . N DB DB DB 00 00 00 # <unused> +DC E0DC . N DC DC DC 00 00 00 # <unused> +DD E0DD . N DD DD DD 00 00 00 # <unused> +DE E0DE . N DE DE DE 00 00 00 # <unused> +DF E0DF . N DF DF DF 00 00 00 # <unused> +E0 05D0 L Y E0 E0 E0 E0 E0 E0 # HEBREW LETTER ALEF +E1 05D1 L Y E1 E1 E1 E1 E1 E1 # HEBREW LETTER BET +E2 05D2 L Y E2 E2 E2 E2 E2 E2 # HEBREW LETTER GIMEL +E3 05D3 L Y E3 E3 E3 E3 E3 E3 # HEBREW LETTER DALET +E4 05D4 L Y E4 E4 E4 E4 E4 E4 # HEBREW LETTER HE +E5 05D5 L Y E5 E5 E5 E5 E5 E5 # HEBREW LETTER VAV +E6 05D6 L Y E6 E6 E6 E6 E6 E6 # HEBREW LETTER ZAYIN +E7 05D7 L Y E7 E7 E7 E7 E7 E7 # HEBREW LETTER HET +E8 05D8 L Y E8 E8 E8 E8 E8 E8 # HEBREW LETTER TET +E9 05D9 L Y E9 E9 E9 E9 E9 E9 # HEBREW LETTER YOD +EA 05DA L Y EA EA EA EA EA EA # HEBREW LETTER FINAL KAF +EB 05DB L Y EB EB EB EB EB EB # HEBREW LETTER KAF +EC 05DC L Y EC EC EC EC EC EC # HEBREW LETTER LAMED +ED 05DD L Y ED ED ED ED ED ED # HEBREW LETTER FINAL MEM +EE 05DE L Y EE EE EE EE EE EE # HEBREW LETTER MEM +EF 05DF L Y EF EF EF EF EF EF # HEBREW LETTER FINAL NUN +F0 05E0 L Y F0 F0 F0 F0 F0 F0 # HEBREW LETTER NUN +F1 05E1 L Y F1 F1 F1 F1 F1 F1 # HEBREW LETTER SAMEKH +F2 05E2 L Y F2 F2 F2 F2 F2 F2 # HEBREW LETTER AYIN +F3 05E3 L Y F3 F3 F3 F3 F3 F3 # HEBREW LETTER FINAL PE +F4 05E4 L Y F4 F4 F4 F4 F4 F4 # HEBREW LETTER PE +F5 05E5 L Y F5 F5 F5 F5 F5 F5 # HEBREW LETTER FINAL TSADI +F6 05E6 L Y F6 F6 F6 F6 F6 F6 # HEBREW LETTER TSADI +F7 05E7 L Y F7 F7 F7 F7 F7 F7 # HEBREW LETTER QOF +F8 05E8 L Y F8 F8 F8 F8 F8 F8 # HEBREW LETTER RESH +F9 05E9 L Y F9 F9 F9 F9 F9 F9 # HEBREW LETTER SHIN +FA 05EA L Y FA FA FA FA FA FA # HEBREW LETTER TAV +FB E0FB . N FB FB FB 00 00 00 # <unused> +FC E0FC . N FC FC FC 00 00 00 # <unused> +FD 200E - N FD FD FD 00 00 00 # LEFT-TO-RIGHT MARK +FE 200F - N FE FE FE 00 00 00 # RIGHT-TO-LEFT MARK +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/cp1256.cmap b/assets/data/cp1256.cmap new file mode 100644 index 0000000..951fabe --- /dev/null +++ b/assets/data/cp1256.cmap @@ -0,0 +1,2476 @@ +INTERNAL +/ +N 1609 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 2 + 0300 > E0 + 0302 > E2 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F / + N 1 + 0302 > F4 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 3 + 0300 > F9 + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D7 > D7 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > E0 +00E1 > 61 # unsup: 0061 0301 +00E2 > E2 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > EE +00EF > EF +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > F4 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F7 > F7 +00F9 > F9 +00FA > 75 # unsup: 0075 0301 +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 8C +0153 > 9C +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +0192 > 83 +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > FC # unsup: 00FC 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > FC # unsup: 00FC 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C6 > 88 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +060C > A1 +061B > BA +061F > BF +0621 > C1 +0622 > C2 +0623 > C3 +0624 > C4 +0625 > C5 +0626 > C6 +0627 > C7 / + N 3 + 0653 > C2 + 0654 > C3 + 0655 > C5 + . +0628 > C8 +0629 > C9 +062A > CA +062B > CB +062C > CC +062D > CD +062E > CE +062F > CF +0630 > D0 +0631 > D1 +0632 > D2 +0633 > D3 +0634 > D4 +0635 > D5 +0636 > D6 +0637 > D8 +0638 > D9 +0639 > DA +063A > DB +0640 > DC +0641 > DD +0642 > DE +0643 > DF +0644 > E1 +0645 > E3 +0646 > E4 +0647 > E5 +0648 > E6 / + N 1 + 0654 > C4 + . +0649 > EC +064A > ED / + N 1 + 0654 > C6 + . +064B > F0 +064C > F1 +064D > F2 +064E > F3 +064F > F5 +0650 > F6 +0651 > F8 +0652 > FA +0679 > 8A +067E > 81 +0686 > 8D +0688 > 8F +0691 > 9A +0698 > 8E +06A9 > 98 +06AF > 90 +06BA > 9F +06BE > AA +06C1 > C0 +06C2 > C0 # unsup: 06C1 0654 +06D2 > FF +06D3 > FF # unsup: 06D2 0654 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +200C > 9D +200D > 9E +200E > FD +200F > FE +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FB56 > 81 # compat +FB57 > 81 # compat +FB58 > 81 # compat +FB59 > 81 # compat +FB66 > 8A # compat +FB67 > 8A # compat +FB68 > 8A # compat +FB69 > 8A # compat +FB7A > 8D # compat +FB7B > 8D # compat +FB7C > 8D # compat +FB7D > 8D # compat +FB88 > 8F # compat +FB89 > 8F # compat +FB8A > 8E # compat +FB8B > 8E # compat +FB8C > 9A # compat +FB8D > 9A # compat +FB8E > 98 # compat +FB8F > 98 # compat +FB90 > 98 # compat +FB91 > 98 # compat +FB92 > 90 # compat +FB93 > 90 # compat +FB94 > 90 # compat +FB95 > 90 # compat +FB9E > 9F # compat +FB9F > 9F # compat +FBA6 > C0 # compat +FBA7 > C0 # compat +FBA8 > C0 # compat +FBA9 > C0 # compat +FBAA > AA # compat +FBAB > AA # compat +FBAC > AA # compat +FBAD > AA # compat +FBAE > FF # compat +FBAF > FF # compat +FBB0 > FF # unsup: 06D2 0654 +FBB1 > FF # unsup: 06D2 0654 +FBE8 > EC # compat +FBE9 > EC # compat +FBEA > C6 C7 # compat +FBEB > C6 C7 # compat +FBEE > C6 E6 # compat +FBEF > C6 E6 # compat +FBF9 > C6 EC # compat +FBFA > C6 EC # compat +FBFB > C6 EC # compat +FC00 > C6 CC # compat +FC01 > C6 CD # compat +FC02 > C6 E3 # compat +FC03 > C6 EC # compat +FC04 > C6 ED # compat +FC05 > C8 CC # compat +FC06 > C8 CD # compat +FC07 > C8 CE # compat +FC08 > C8 E3 # compat +FC09 > C8 EC # compat +FC0A > C8 ED # compat +FC0B > CA CC # compat +FC0C > CA CD # compat +FC0D > CA CE # compat +FC0E > CA E3 # compat +FC0F > CA EC # compat +FC10 > CA ED # compat +FC11 > CB CC # compat +FC12 > CB E3 # compat +FC13 > CB EC # compat +FC14 > CB ED # compat +FC15 > CC CD # compat +FC16 > CC E3 # compat +FC17 > CD CC # compat +FC18 > CD E3 # compat +FC19 > CE CC # compat +FC1A > CE CD # compat +FC1B > CE E3 # compat +FC1C > D3 CC # compat +FC1D > D3 CD # compat +FC1E > D3 CE # compat +FC1F > D3 E3 # compat +FC20 > D5 CD # compat +FC21 > D5 E3 # compat +FC22 > D6 CC # compat +FC23 > D6 CD # compat +FC24 > D6 CE # compat +FC25 > D6 E3 # compat +FC26 > D8 CD # compat +FC27 > D8 E3 # compat +FC28 > D9 E3 # compat +FC29 > DA CC # compat +FC2A > DA E3 # compat +FC2B > DB CC # compat +FC2C > DB E3 # compat +FC2D > DD CC # compat +FC2E > DD CD # compat +FC2F > DD CE # compat +FC30 > DD E3 # compat +FC31 > DD EC # compat +FC32 > DD ED # compat +FC33 > DE CD # compat +FC34 > DE E3 # compat +FC35 > DE EC # compat +FC36 > DE ED # compat +FC37 > DF C7 # compat +FC38 > DF CC # compat +FC39 > DF CD # compat +FC3A > DF CE # compat +FC3B > DF E1 # compat +FC3C > DF E3 # compat +FC3D > DF EC # compat +FC3E > DF ED # compat +FC3F > E1 CC # compat +FC40 > E1 CD # compat +FC41 > E1 CE # compat +FC42 > E1 E3 # compat +FC43 > E1 EC # compat +FC44 > E1 ED # compat +FC45 > E3 CC # compat +FC46 > E3 CD # compat +FC47 > E3 CE # compat +FC48 > E3 E3 # compat +FC49 > E3 EC # compat +FC4A > E3 ED # compat +FC4B > E4 CC # compat +FC4C > E4 CD # compat +FC4D > E4 CE # compat +FC4E > E4 E3 # compat +FC4F > E4 EC # compat +FC50 > E4 ED # compat +FC51 > E5 CC # compat +FC52 > E5 E3 # compat +FC53 > E5 EC # compat +FC54 > E5 ED # compat +FC55 > ED CC # compat +FC56 > ED CD # compat +FC57 > ED CE # compat +FC58 > ED E3 # compat +FC59 > ED EC # compat +FC5A > ED ED # compat +FC5B > D0 # unsup: 0630 0670 +FC5C > D1 # unsup: 0631 0670 +FC5D > EC # unsup: 0649 0670 +FC64 > C6 D1 # compat +FC65 > C6 D2 # compat +FC66 > C6 E3 # compat +FC67 > C6 E4 # compat +FC68 > C6 EC # compat +FC69 > C6 ED # compat +FC6A > C8 D1 # compat +FC6B > C8 D2 # compat +FC6C > C8 E3 # compat +FC6D > C8 E4 # compat +FC6E > C8 EC # compat +FC6F > C8 ED # compat +FC70 > CA D1 # compat +FC71 > CA D2 # compat +FC72 > CA E3 # compat +FC73 > CA E4 # compat +FC74 > CA EC # compat +FC75 > CA ED # compat +FC76 > CB D1 # compat +FC77 > CB D2 # compat +FC78 > CB E3 # compat +FC79 > CB E4 # compat +FC7A > CB EC # compat +FC7B > CB ED # compat +FC7C > DD EC # compat +FC7D > DD ED # compat +FC7E > DE EC # compat +FC7F > DE ED # compat +FC80 > DF C7 # compat +FC81 > DF E1 # compat +FC82 > DF E3 # compat +FC83 > DF EC # compat +FC84 > DF ED # compat +FC85 > E1 E3 # compat +FC86 > E1 EC # compat +FC87 > E1 ED # compat +FC88 > E3 C7 # compat +FC89 > E3 E3 # compat +FC8A > E4 D1 # compat +FC8B > E4 D2 # compat +FC8C > E4 E3 # compat +FC8D > E4 E4 # compat +FC8E > E4 EC # compat +FC8F > E4 ED # compat +FC90 > EC # unsup: 0649 0670 +FC91 > ED D1 # compat +FC92 > ED D2 # compat +FC93 > ED E3 # compat +FC94 > ED E4 # compat +FC95 > ED EC # compat +FC96 > ED ED # compat +FC97 > C6 CC # compat +FC98 > C6 CD # compat +FC99 > C6 CE # compat +FC9A > C6 E3 # compat +FC9B > C6 E5 # compat +FC9C > C8 CC # compat +FC9D > C8 CD # compat +FC9E > C8 CE # compat +FC9F > C8 E3 # compat +FCA0 > C8 E5 # compat +FCA1 > CA CC # compat +FCA2 > CA CD # compat +FCA3 > CA CE # compat +FCA4 > CA E3 # compat +FCA5 > CA E5 # compat +FCA6 > CB E3 # compat +FCA7 > CC CD # compat +FCA8 > CC E3 # compat +FCA9 > CD CC # compat +FCAA > CD E3 # compat +FCAB > CE CC # compat +FCAC > CE E3 # compat +FCAD > D3 CC # compat +FCAE > D3 CD # compat +FCAF > D3 CE # compat +FCB0 > D3 E3 # compat +FCB1 > D5 CD # compat +FCB2 > D5 CE # compat +FCB3 > D5 E3 # compat +FCB4 > D6 CC # compat +FCB5 > D6 CD # compat +FCB6 > D6 CE # compat +FCB7 > D6 E3 # compat +FCB8 > D8 CD # compat +FCB9 > D9 E3 # compat +FCBA > DA CC # compat +FCBB > DA E3 # compat +FCBC > DB CC # compat +FCBD > DB E3 # compat +FCBE > DD CC # compat +FCBF > DD CD # compat +FCC0 > DD CE # compat +FCC1 > DD E3 # compat +FCC2 > DE CD # compat +FCC3 > DE E3 # compat +FCC4 > DF CC # compat +FCC5 > DF CD # compat +FCC6 > DF CE # compat +FCC7 > DF E1 # compat +FCC8 > DF E3 # compat +FCC9 > E1 CC # compat +FCCA > E1 CD # compat +FCCB > E1 CE # compat +FCCC > E1 E3 # compat +FCCD > E1 E5 # compat +FCCE > E3 CC # compat +FCCF > E3 CD # compat +FCD0 > E3 CE # compat +FCD1 > E3 E3 # compat +FCD2 > E4 CC # compat +FCD3 > E4 CD # compat +FCD4 > E4 CE # compat +FCD5 > E4 E3 # compat +FCD6 > E4 E5 # compat +FCD7 > E5 CC # compat +FCD8 > E5 E3 # compat +FCD9 > E5 # unsup: 0647 0670 +FCDA > ED CC # compat +FCDB > ED CD # compat +FCDC > ED CE # compat +FCDD > ED E3 # compat +FCDE > ED E5 # compat +FCDF > C6 E3 # compat +FCE0 > C6 E5 # compat +FCE1 > C8 E3 # compat +FCE2 > C8 E5 # compat +FCE3 > CA E3 # compat +FCE4 > CA E5 # compat +FCE5 > CB E3 # compat +FCE6 > CB E5 # compat +FCE7 > D3 E3 # compat +FCE8 > D3 E5 # compat +FCE9 > D4 E3 # compat +FCEA > D4 E5 # compat +FCEB > DF E1 # compat +FCEC > DF E3 # compat +FCED > E1 E3 # compat +FCEE > E4 E3 # compat +FCEF > E4 E5 # compat +FCF0 > ED E3 # compat +FCF1 > ED E5 # compat +FCF2 > DC F3 F8 # compat +FCF3 > DC F5 F8 # compat +FCF4 > DC F6 F8 # compat +FCF5 > D8 EC # compat +FCF6 > D8 ED # compat +FCF7 > DA EC # compat +FCF8 > DA ED # compat +FCF9 > DB EC # compat +FCFA > DB ED # compat +FCFB > D3 EC # compat +FCFC > D3 ED # compat +FCFD > D4 EC # compat +FCFE > D4 ED # compat +FCFF > CD EC # compat +FD00 > CD ED # compat +FD01 > CC EC # compat +FD02 > CC ED # compat +FD03 > CE EC # compat +FD04 > CE ED # compat +FD05 > D5 EC # compat +FD06 > D5 ED # compat +FD07 > D6 EC # compat +FD08 > D6 ED # compat +FD09 > D4 CC # compat +FD0A > D4 CD # compat +FD0B > D4 CE # compat +FD0C > D4 E3 # compat +FD0D > D4 D1 # compat +FD0E > D3 D1 # compat +FD0F > D5 D1 # compat +FD10 > D6 D1 # compat +FD11 > D8 EC # compat +FD12 > D8 ED # compat +FD13 > DA EC # compat +FD14 > DA ED # compat +FD15 > DB EC # compat +FD16 > DB ED # compat +FD17 > D3 EC # compat +FD18 > D3 ED # compat +FD19 > D4 EC # compat +FD1A > D4 ED # compat +FD1B > CD EC # compat +FD1C > CD ED # compat +FD1D > CC EC # compat +FD1E > CC ED # compat +FD1F > CE EC # compat +FD20 > CE ED # compat +FD21 > D5 EC # compat +FD22 > D5 ED # compat +FD23 > D6 EC # compat +FD24 > D6 ED # compat +FD25 > D4 CC # compat +FD26 > D4 CD # compat +FD27 > D4 CE # compat +FD28 > D4 E3 # compat +FD29 > D4 D1 # compat +FD2A > D3 D1 # compat +FD2B > D5 D1 # compat +FD2C > D6 D1 # compat +FD2D > D4 CC # compat +FD2E > D4 CD # compat +FD2F > D4 CE # compat +FD30 > D4 E3 # compat +FD31 > D3 E5 # compat +FD32 > D4 E5 # compat +FD33 > D8 E3 # compat +FD34 > D3 CC # compat +FD35 > D3 CD # compat +FD36 > D3 CE # compat +FD37 > D4 CC # compat +FD38 > D4 CD # compat +FD39 > D4 CE # compat +FD3A > D8 E3 # compat +FD3B > D9 E3 # compat +FD3C > C7 F0 # compat +FD3D > C7 F0 # compat +FD50 > CA CC E3 # compat +FD51 > CA CD CC # compat +FD52 > CA CD CC # compat +FD53 > CA CD E3 # compat +FD54 > CA CE E3 # compat +FD55 > CA E3 CC # compat +FD56 > CA E3 CD # compat +FD57 > CA E3 CE # compat +FD58 > CC E3 CD # compat +FD59 > CC E3 CD # compat +FD5A > CD E3 ED # compat +FD5B > CD E3 EC # compat +FD5C > D3 CD CC # compat +FD5D > D3 CC CD # compat +FD5E > D3 CC EC # compat +FD5F > D3 E3 CD # compat +FD60 > D3 E3 CD # compat +FD61 > D3 E3 CC # compat +FD62 > D3 E3 E3 # compat +FD63 > D3 E3 E3 # compat +FD64 > D5 CD CD # compat +FD65 > D5 CD CD # compat +FD66 > D5 E3 E3 # compat +FD67 > D4 CD E3 # compat +FD68 > D4 CD E3 # compat +FD69 > D4 CC ED # compat +FD6A > D4 E3 CE # compat +FD6B > D4 E3 CE # compat +FD6C > D4 E3 E3 # compat +FD6D > D4 E3 E3 # compat +FD6E > D6 CD EC # compat +FD6F > D6 CE E3 # compat +FD70 > D6 CE E3 # compat +FD71 > D8 E3 CD # compat +FD72 > D8 E3 CD # compat +FD73 > D8 E3 E3 # compat +FD74 > D8 E3 ED # compat +FD75 > DA CC E3 # compat +FD76 > DA E3 E3 # compat +FD77 > DA E3 E3 # compat +FD78 > DA E3 EC # compat +FD79 > DB E3 E3 # compat +FD7A > DB E3 ED # compat +FD7B > DB E3 EC # compat +FD7C > DD CE E3 # compat +FD7D > DD CE E3 # compat +FD7E > DE E3 CD # compat +FD7F > DE E3 E3 # compat +FD80 > E1 CD E3 # compat +FD81 > E1 CD ED # compat +FD82 > E1 CD EC # compat +FD83 > E1 CC CC # compat +FD84 > E1 CC CC # compat +FD85 > E1 CE E3 # compat +FD86 > E1 CE E3 # compat +FD87 > E1 E3 CD # compat +FD88 > E1 E3 CD # compat +FD89 > E3 CD CC # compat +FD8A > E3 CD E3 # compat +FD8B > E3 CD ED # compat +FD8C > E3 CC CD # compat +FD8D > E3 CC E3 # compat +FD8E > E3 CE CC # compat +FD8F > E3 CE E3 # compat +FD92 > E3 CC CE # compat +FD93 > E5 E3 CC # compat +FD94 > E5 E3 E3 # compat +FD95 > E4 CD E3 # compat +FD96 > E4 CD EC # compat +FD97 > E4 CC E3 # compat +FD98 > E4 CC E3 # compat +FD99 > E4 CC EC # compat +FD9A > E4 E3 ED # compat +FD9B > E4 E3 EC # compat +FD9C > ED E3 E3 # compat +FD9D > ED E3 E3 # compat +FD9E > C8 CE ED # compat +FD9F > CA CC ED # compat +FDA0 > CA CC EC # compat +FDA1 > CA CE ED # compat +FDA2 > CA CE EC # compat +FDA3 > CA E3 ED # compat +FDA4 > CA E3 EC # compat +FDA5 > CC E3 ED # compat +FDA6 > CC CD EC # compat +FDA7 > CC E3 EC # compat +FDA8 > D3 CE EC # compat +FDA9 > D5 CD ED # compat +FDAA > D4 CD ED # compat +FDAB > D6 CD ED # compat +FDAC > E1 CC ED # compat +FDAD > E1 E3 ED # compat +FDAE > ED CD ED # compat +FDAF > ED CC ED # compat +FDB0 > ED E3 ED # compat +FDB1 > E3 E3 ED # compat +FDB2 > DE E3 ED # compat +FDB3 > E4 CD ED # compat +FDB4 > DE E3 CD # compat +FDB5 > E1 CD E3 # compat +FDB6 > DA E3 ED # compat +FDB7 > DF E3 ED # compat +FDB8 > E4 CC CD # compat +FDB9 > E3 CE ED # compat +FDBA > E1 CC E3 # compat +FDBB > DF E3 E3 # compat +FDBC > E1 CC E3 # compat +FDBD > E4 CC CD # compat +FDBE > CC CD ED # compat +FDBF > CD CC ED # compat +FDC0 > E3 CC ED # compat +FDC1 > DD E3 ED # compat +FDC2 > C8 CD ED # compat +FDC3 > DF E3 E3 # compat +FDC4 > DA CC E3 # compat +FDC5 > D5 E3 E3 # compat +FDC6 > D3 CE ED # compat +FDC7 > E4 CC ED # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FE71 > DC F0 # compat +FE77 > DC F3 # compat +FE79 > DC F5 # compat +FE7B > DC F6 # compat +FE7D > DC F8 # compat +FE7F > DC FA # compat +FE80 > C1 # compat +FE81 > C2 # compat +FE82 > C2 # compat +FE83 > C3 # compat +FE84 > C3 # compat +FE85 > C4 # compat +FE86 > C4 # compat +FE87 > C5 # compat +FE88 > C5 # compat +FE89 > C6 # compat +FE8A > C6 # compat +FE8B > C6 # compat +FE8C > C6 # compat +FE8D > C7 # compat +FE8E > C7 # compat +FE8F > C8 # compat +FE90 > C8 # compat +FE91 > C8 # compat +FE92 > C8 # compat +FE93 > C9 # compat +FE94 > C9 # compat +FE95 > CA # compat +FE96 > CA # compat +FE97 > CA # compat +FE98 > CA # compat +FE99 > CB # compat +FE9A > CB # compat +FE9B > CB # compat +FE9C > CB # compat +FE9D > CC # compat +FE9E > CC # compat +FE9F > CC # compat +FEA0 > CC # compat +FEA1 > CD # compat +FEA2 > CD # compat +FEA3 > CD # compat +FEA4 > CD # compat +FEA5 > CE # compat +FEA6 > CE # compat +FEA7 > CE # compat +FEA8 > CE # compat +FEA9 > CF # compat +FEAA > CF # compat +FEAB > D0 # compat +FEAC > D0 # compat +FEAD > D1 # compat +FEAE > D1 # compat +FEAF > D2 # compat +FEB0 > D2 # compat +FEB1 > D3 # compat +FEB2 > D3 # compat +FEB3 > D3 # compat +FEB4 > D3 # compat +FEB5 > D4 # compat +FEB6 > D4 # compat +FEB7 > D4 # compat +FEB8 > D4 # compat +FEB9 > D5 # compat +FEBA > D5 # compat +FEBB > D5 # compat +FEBC > D5 # compat +FEBD > D6 # compat +FEBE > D6 # compat +FEBF > D6 # compat +FEC0 > D6 # compat +FEC1 > D8 # compat +FEC2 > D8 # compat +FEC3 > D8 # compat +FEC4 > D8 # compat +FEC5 > D9 # compat +FEC6 > D9 # compat +FEC7 > D9 # compat +FEC8 > D9 # compat +FEC9 > DA # compat +FECA > DA # compat +FECB > DA # compat +FECC > DA # compat +FECD > DB # compat +FECE > DB # compat +FECF > DB # compat +FED0 > DB # compat +FED1 > DD # compat +FED2 > DD # compat +FED3 > DD # compat +FED4 > DD # compat +FED5 > DE # compat +FED6 > DE # compat +FED7 > DE # compat +FED8 > DE # compat +FED9 > DF # compat +FEDA > DF # compat +FEDB > DF # compat +FEDC > DF # compat +FEDD > E1 # compat +FEDE > E1 # compat +FEDF > E1 # compat +FEE0 > E1 # compat +FEE1 > E3 # compat +FEE2 > E3 # compat +FEE3 > E3 # compat +FEE4 > E3 # compat +FEE5 > E4 # compat +FEE6 > E4 # compat +FEE7 > E4 # compat +FEE8 > E4 # compat +FEE9 > E5 # compat +FEEA > E5 # compat +FEEB > E5 # compat +FEEC > E5 # compat +FEED > E6 # compat +FEEE > E6 # compat +FEEF > EC # compat +FEF0 > EC # compat +FEF1 > ED # compat +FEF2 > ED # compat +FEF3 > ED # compat +FEF4 > ED # compat +FEF5 > E1 C2 # compat +FEF6 > E1 C2 # compat +FEF7 > E1 C3 # compat +FEF8 > E1 C3 # compat +FEF9 > E1 C5 # compat +FEFA > E1 C5 # compat +FEFB > E1 C7 # compat +FEFC > E1 C7 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 2 + 0300 > E0 + 0302 > E2 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F / + N 1 + 0302 > F4 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 3 + 0300 > F9 + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00D7 > D7 +00E0 > E0 +00E2 > E2 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EE > EE +00EF > EF +00F4 > F4 +00F7 > F7 +00F9 > F9 +00FB > FB +00FC > FC +0152 > 8C +0153 > 9C +0192 > 83 +02C6 > 88 +037E > 3B +0387 > B7 +060C > A1 +061B > BA +061F > BF +0621 > C1 +0622 > C2 +0623 > C3 +0624 > C4 +0625 > C5 +0626 > C6 +0627 > C7 / + N 3 + 0653 > C2 + 0654 > C3 + 0655 > C5 + . +0628 > C8 +0629 > C9 +062A > CA +062B > CB +062C > CC +062D > CD +062E > CE +062F > CF +0630 > D0 +0631 > D1 +0632 > D2 +0633 > D3 +0634 > D4 +0635 > D5 +0636 > D6 +0637 > D8 +0638 > D9 +0639 > DA +063A > DB +0640 > DC +0641 > DD +0642 > DE +0643 > DF +0644 > E1 +0645 > E3 +0646 > E4 +0647 > E5 +0648 > E6 / + N 1 + 0654 > C4 + . +0649 > EC +064A > ED / + N 1 + 0654 > C6 + . +064B > F0 +064C > F1 +064D > F2 +064E > F3 +064F > F5 +0650 > F6 +0651 > F8 +0652 > FA +0679 > 8A +067E > 81 +0686 > 8D +0688 > 8F +0691 > 9A +0698 > 8E +06A9 > 98 +06AF > 90 +06BA > 9F +06BE > AA +06C1 > C0 +06D2 > FF +1FEF > 60 +1FFD > B4 +200C > 9D +200D > 9E +200E > FD +200F > FE +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 067E +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0679 +8B > 2039 +8C > 0152 +8D > 0686 +8E > 0698 +8F > 0688 +90 > 06AF +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 06A9 +99 > 2122 +9A > 0691 +9B > 203A +9C > 0153 +9D > 200C +9E > 200D +9F > 06BA +A0 > 00A0 +A1 > 060C +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 06BE +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 061B +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 061F +C0 > 06C1 +C1 > 0621 +C2 > 0627 0653 +C3 > 0627 0654 +C4 > 0648 0654 +C5 > 0627 0655 +C6 > 064A 0654 +C7 > 0627 +C8 > 0628 +C9 > 0629 +CA > 062A +CB > 062B +CC > 062C +CD > 062D +CE > 062E +CF > 062F +D0 > 0630 +D1 > 0631 +D2 > 0632 +D3 > 0633 +D4 > 0634 +D5 > 0635 +D6 > 0636 +D7 > 00D7 +D8 > 0637 +D9 > 0638 +DA > 0639 +DB > 063A +DC > 0640 +DD > 0641 +DE > 0642 +DF > 0643 +E0 > 0061 0300 +E1 > 0644 +E2 > 0061 0302 +E3 > 0645 +E4 > 0646 +E5 > 0647 +E6 > 0648 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0649 +ED > 064A +EE > 0069 0302 +EF > 0069 0308 +F0 > 064B +F1 > 064C +F2 > 064D +F3 > 064E +F4 > 006F 0302 +F5 > 064F +F6 > 0650 +F7 > 00F7 +F8 > 0651 +F9 > 0075 0300 +FA > 0652 +FB > 0075 0302 +FC > 0075 0308 +FD > 200E +FE > 200F +FF > 06D2 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 067E +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 0679 +8B > 2039 +8C > 0152 +8D > 0686 +8E > 0698 +8F > 0688 +90 > 06AF +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 06A9 +99 > 2122 +9A > 0691 +9B > 203A +9C > 0153 +9D > 200C +9E > 200D +9F > 06BA +A0 > 00A0 +A1 > 060C +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 06BE +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 061B +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 061F +C0 > 06C1 +C1 > 0621 +C2 > 0622 +C3 > 0623 +C4 > 0624 +C5 > 0625 +C6 > 0626 +C7 > 0627 +C8 > 0628 +C9 > 0629 +CA > 062A +CB > 062B +CC > 062C +CD > 062D +CE > 062E +CF > 062F +D0 > 0630 +D1 > 0631 +D2 > 0632 +D3 > 0633 +D4 > 0634 +D5 > 0635 +D6 > 0636 +D7 > 00D7 +D8 > 0637 +D9 > 0638 +DA > 0639 +DB > 063A +DC > 0640 +DD > 0641 +DE > 0642 +DF > 0643 +E0 > 00E0 +E1 > 0644 +E2 > 00E2 +E3 > 0645 +E4 > 0646 +E5 > 0647 +E6 > 0648 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 0649 +ED > 064A +EE > 00EE +EF > 00EF +F0 > 064B +F1 > 064C +F2 > 064D +F3 > 064E +F4 > 00F4 +F5 > 064F +F6 > 0650 +F7 > 00F7 +F8 > 0651 +F9 > 00F9 +FA > 0652 +FB > 00FB +FC > 00FC +FD > 200E +FE > 200F +FF > 06D2 +. + +COMP += NFC +. diff --git a/assets/data/cp1256.cset b/assets/data/cp1256.cset new file mode 100644 index 0000000..fb3de64 --- /dev/null +++ b/assets/data/cp1256.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1256 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 067E L Y 81 81 81 81 81 81 # ARABIC LETTER PEH +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 02C6 M Y 88 88 88 00 00 00 # MODIFIER LETTER CIRCUMFLEX ACCENT +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 0679 L Y 8A 8A 8A 8A 8A 8A # ARABIC LETTER TTEH +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 0152 L Y 8C 9C 8C 8C 2A 00 # LATIN CAPITAL LIGATURE OE +8D 0686 L Y 8D 8D 8D 8D 8D 8D # ARABIC LETTER TCHEH +8E 0698 L Y 8E 8E 8E 8E 8E 8E # ARABIC LETTER JEH +8F 0688 L Y 8F 8F 8F 8F 8F 8F # ARABIC LETTER DDAL +90 06AF L Y 90 90 90 90 90 90 # ARABIC LETTER GAF +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 06A9 L Y 98 98 98 98 98 98 # ARABIC LETTER KEHEH +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 0691 L Y 9A 9A 9A 9A 9A 9A # ARABIC LETTER RREH +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 0153 L Y 8C 9C 8C 9C 2A 00 # LATIN SMALL LIGATURE OE +9D 200C - N 9D 9D 9D 00 00 00 # ZERO WIDTH NON-JOINER +9E 200D - N 9E 9E 9E 00 00 00 # ZERO WIDTH JOINER +9F 06BA L Y 9F 9F 9F 9F 9F 9F # ARABIC LETTER NOON GHUNNA +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 060C - Y A1 A1 A1 00 00 00 # ARABIC COMMA +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 06BE L Y AA AA AA AA AA AA # ARABIC LETTER HEH DOACHASHMEE +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 061B - Y BA BA BA 00 00 00 # ARABIC SEMICOLON +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 061F - Y BF BF BF 00 00 00 # ARABIC QUESTION MARK +C0 06C1 L Y C0 C0 C0 C0 C0 C0 # ARABIC LETTER HEH GOAL +C1 0621 L Y C1 C1 C1 C1 C1 C1 # ARABIC LETTER HAMZA +C2 0622 L Y C2 C2 C2 C7 C7 C7 # ARABIC LETTER ALEF WITH MADDA ABOVE +C3 0623 L Y C3 C3 C3 C7 C7 C7 # ARABIC LETTER ALEF WITH HAMZA ABOVE +C4 0624 L Y C4 C4 C4 E6 E6 E6 # ARABIC LETTER WAW WITH HAMZA ABOVE +C5 0625 L Y C5 C5 C5 C7 C7 C7 # ARABIC LETTER ALEF WITH HAMZA BELOW +C6 0626 L Y C6 C6 C6 ED ED ED # ARABIC LETTER YEH WITH HAMZA ABOVE +C7 0627 L Y C7 C7 C7 C7 C7 C7 # ARABIC LETTER ALEF +C8 0628 L Y C8 C8 C8 C8 C8 C8 # ARABIC LETTER BEH +C9 0629 L Y C9 C9 C9 C9 C9 C9 # ARABIC LETTER TEH MARBUTA +CA 062A L Y CA CA CA CA CA CA # ARABIC LETTER TEH +CB 062B L Y CB CB CB CB CB CB # ARABIC LETTER THEH +CC 062C L Y CC CC CC CC CC CC # ARABIC LETTER JEEM +CD 062D L Y CD CD CD CD CD CD # ARABIC LETTER HAH +CE 062E L Y CE CE CE CE CE CE # ARABIC LETTER KHAH +CF 062F L Y CF CF CF CF CF CF # ARABIC LETTER DAL +D0 0630 L Y D0 D0 D0 D0 D0 D0 # ARABIC LETTER THAL +D1 0631 L Y D1 D1 D1 D1 D1 D1 # ARABIC LETTER REH +D2 0632 L Y D2 D2 D2 D2 D2 D2 # ARABIC LETTER ZAIN +D3 0633 L Y D3 D3 D3 D3 D3 D3 # ARABIC LETTER SEEN +D4 0634 L Y D4 D4 D4 D4 D4 D4 # ARABIC LETTER SHEEN +D5 0635 L Y D5 D5 D5 D5 D5 D5 # ARABIC LETTER SAD +D6 0636 L Y D6 D6 D6 D6 D6 D6 # ARABIC LETTER DAD +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 0637 L Y D8 D8 D8 D8 D8 D8 # ARABIC LETTER TAH +D9 0638 L Y D9 D9 D9 D9 D9 D9 # ARABIC LETTER ZAH +DA 0639 L Y DA DA DA DA DA DA # ARABIC LETTER AIN +DB 063A L Y DB DB DB DB DB DB # ARABIC LETTER GHAIN +DC 0640 l Y DC DC DC DC DC DC # ARABIC TATWEEL +DD 0641 L Y DD DD DD DD DD DD # ARABIC LETTER FEH +DE 0642 L Y DE DE DE DE DE DE # ARABIC LETTER QAF +DF 0643 L Y DF DF DF DF DF DF # ARABIC LETTER KAF +E0 00E0 L Y E0 E0 E0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 0644 L Y E1 E1 E1 E1 E1 E1 # ARABIC LETTER LAM +E2 00E2 L Y E2 E2 E2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 0645 L Y E3 E3 E3 E3 E3 E3 # ARABIC LETTER MEEM +E4 0646 L Y E4 E4 E4 E4 E4 E4 # ARABIC LETTER NOON +E5 0647 L Y E5 E5 E5 E5 E5 E5 # ARABIC LETTER HEH +E6 0648 L Y E6 E6 E6 E6 E6 E6 # ARABIC LETTER WAW +E7 00E7 L Y E7 E7 E7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y E8 E8 E8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y E9 E9 E9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y EA EA EA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y EB EB EB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 0649 L Y EC EC EC EC EC EC # ARABIC LETTER ALEF MAKSURA +ED 064A L Y ED ED ED ED ED ED # ARABIC LETTER YEH +EE 00EE L Y EE EE EE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y EF EF EF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 064B M M F0 F0 F0 00 00 00 # ARABIC FATHATAN +F1 064C M M F1 F1 F1 00 00 00 # ARABIC DAMMATAN +F2 064D M M F2 F2 F2 00 00 00 # ARABIC KASRATAN +F3 064E M M F3 F3 F3 00 00 00 # ARABIC FATHA +F4 00F4 L Y F4 F4 F4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 064F M M F5 F5 F5 00 00 00 # ARABIC DAMMA +F6 0650 M M F6 F6 F6 00 00 00 # ARABIC KASRA +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 0651 M M F8 F8 F8 00 00 00 # ARABIC SHADDA +F9 00F9 L Y F9 F9 F9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 0652 M M FA FA FA 00 00 00 # ARABIC SUKUN +FB 00FB L Y FB FB FB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y FC FC FC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 200E - N FD FD FD 00 00 00 # LEFT-TO-RIGHT MARK +FE 200F - N FE FE FE 00 00 00 # RIGHT-TO-LEFT MARK +FF 06D2 L Y FF FF FF FF FF FF # ARABIC LETTER YEH BARREE diff --git a/assets/data/cp1257.cmap b/assets/data/cp1257.cmap new file mode 100644 index 0000000..232d97e --- /dev/null +++ b/assets/data/cp1257.cmap @@ -0,0 +1,1962 @@ +INTERNAL +/ +N 949 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0304 > C2 + 0308 > C4 + 030A > C5 + 0328 > C0 + . +0042 > 42 +0043 > 43 / + N 2 + 0301 > C3 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 4 + 0301 > C9 + 0304 > C7 + 0307 > CB + 0328 > C6 + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > CC + . +0048 > 48 +0049 > 49 / + N 2 + 0304 > CE + 0328 > C1 + . +004A > 4A +004B > 4B / + N 1 + 0327 > CD + . +004C > 4C / + N 1 + 0327 > CF + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 0327 > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0303 > D5 + 0304 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > AA + . +0053 > 53 / + N 2 + 0301 > DA + 030C > D0 + . +0054 > 54 +0055 > 55 / + N 3 + 0304 > DB + 0308 > DC + 0328 > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 3 + 0301 > CA + 0307 > DD + 030C > DE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0304 > E2 + 0308 > E4 + 030A > E5 + 0328 > E0 + . +0062 > 62 +0063 > 63 / + N 2 + 0301 > E3 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 4 + 0301 > E9 + 0304 > E7 + 0307 > EB + 0328 > E6 + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > EC + . +0068 > 68 +0069 > 69 / + N 2 + 0304 > EE + 0328 > E1 + . +006A > 6A +006B > 6B / + N 1 + 0327 > ED + . +006C > 6C / + N 1 + 0327 > EF + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 0327 > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0303 > F5 + 0304 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > BA + . +0073 > 73 / + N 2 + 0301 > FA + 030C > F0 + . +0074 > 74 +0075 > 75 / + N 3 + 0304 > FB + 0308 > FC + 0328 > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 3 + 0301 > EA + 0307 > FD + 030C > FE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0083 > 83 +0088 > 88 +008A > 8A +008C > 8C +0090 > 90 +0098 > 98 +009A > 9A +009C > 9C +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A8 > 8D +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > 9D +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > 8F +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > C5 +00C6 > AF +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > D3 +00D4 > 4F # unsup: 004F 0302 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > A8 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > E5 +00E6 > BF +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > F3 +00F4 > 6F # unsup: 006F 0302 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > B8 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > C2 +0101 > E2 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > C0 +0105 > E0 +0106 > C3 +0107 > E3 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > C7 +0113 > E7 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > CB +0117 > EB +0118 > C6 +0119 > E6 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > CC +0123 > EC +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > CE +012B > EE +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > C1 +012F > E1 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > CD +0137 > ED +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > CF +013C > EF +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0141 > D9 +0142 > F9 +0143 > D1 +0144 > F1 +0145 > D2 +0146 > F2 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > D4 +014D > F4 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > AA +0157 > BA +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > DA +015B > FA +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > D0 +0161 > F0 +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > DB +016B > FB +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > D8 +0173 > F8 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > CA +017A > EA +017B > DD +017C > FD +017D > DE +017E > FE +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 DE # compat +01C5 > 44 FE # compat +01C6 > 64 FE # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > AF # unsup: 00C6 0304 +01E3 > BF # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > AF # unsup: 00C6 0301 +01FD > BF # unsup: 00E6 0301 +01FE > A8 # unsup: 00D8 0301 +01FF > B8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C7 > 8E +02D9 > FF +02DB > 9E +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > 8D # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > C7 # unsup: 0112 0300 +1E15 > E7 # unsup: 0113 0300 +1E16 > C7 # unsup: 0112 0301 +1E17 > E7 # unsup: 0113 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > D4 # unsup: 014C 0300 +1E51 > F4 # unsup: 014D 0300 +1E52 > D4 # unsup: 014C 0301 +1E53 > F4 # unsup: 014D 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > DA # unsup: 015A 0307 +1E65 > FA # unsup: 015B 0307 +1E66 > D0 # unsup: 0160 0307 +1E67 > F0 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > DB # unsup: 016A 0308 +1E7B > FB # unsup: 016B 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > 8D # unsup: 00A8 0342 +1FED > 8D # unsup: 00A8 0300 +1FEE > 8D # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > 9D # compat +FFE4 > A6 # compat +. + +STRICT +/ +N 258 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0304 > C2 + 0308 > C4 + 030A > C5 + 0328 > C0 + . +0042 > 42 +0043 > 43 / + N 2 + 0301 > C3 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 4 + 0301 > C9 + 0304 > C7 + 0307 > CB + 0328 > C6 + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > CC + . +0048 > 48 +0049 > 49 / + N 2 + 0304 > CE + 0328 > C1 + . +004A > 4A +004B > 4B / + N 1 + 0327 > CD + . +004C > 4C / + N 1 + 0327 > CF + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 0327 > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0303 > D5 + 0304 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > AA + . +0053 > 53 / + N 2 + 0301 > DA + 030C > D0 + . +0054 > 54 +0055 > 55 / + N 3 + 0304 > DB + 0308 > DC + 0328 > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 3 + 0301 > CA + 0307 > DD + 030C > DE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0304 > E2 + 0308 > E4 + 030A > E5 + 0328 > E0 + . +0062 > 62 +0063 > 63 / + N 2 + 0301 > E3 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 4 + 0301 > E9 + 0304 > E7 + 0307 > EB + 0328 > E6 + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > EC + . +0068 > 68 +0069 > 69 / + N 2 + 0304 > EE + 0328 > E1 + . +006A > 6A +006B > 6B / + N 1 + 0327 > ED + . +006C > 6C / + N 1 + 0327 > EF + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 0327 > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0303 > F5 + 0304 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > BA + . +0073 > 73 / + N 2 + 0301 > FA + 030C > F0 + . +0074 > 74 +0075 > 75 / + N 3 + 0304 > FB + 0308 > FC + 0328 > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 3 + 0301 > EA + 0307 > FD + 030C > FE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +0083 > 83 +0088 > 88 +008A > 8A +008C > 8C +0090 > 90 +0098 > 98 +009A > 9A +009C > 9C +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A8 > 8D +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > 9D +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > 8F +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C4 > C4 +00C5 > C5 +00C6 > AF +00C9 > C9 +00D3 > D3 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > A8 +00DC > DC +00DF > DF +00E4 > E4 +00E5 > E5 +00E6 > BF +00E9 > E9 +00F3 > F3 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > B8 +00FC > FC +0100 > C2 +0101 > E2 +0104 > C0 +0105 > E0 +0106 > C3 +0107 > E3 +010C > C8 +010D > E8 +0112 > C7 +0113 > E7 +0116 > CB +0117 > EB +0118 > C6 +0119 > E6 +0122 > CC +0123 > EC +012A > CE +012B > EE +012E > C1 +012F > E1 +0136 > CD +0137 > ED +013B > CF +013C > EF +0141 > D9 +0142 > F9 +0143 > D1 +0144 > F1 +0145 > D2 +0146 > F2 +014C > D4 +014D > F4 +0156 > AA +0157 > BA +015A > DA +015B > FA +0160 > D0 +0161 > F0 +016A > DB +016B > FB +0172 > D8 +0173 > F8 +0179 > CA +017A > EA +017B > DD +017C > FD +017D > DE +017E > FE +02C7 > 8E +02D9 > FF +02DB > 9E +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AC > 80 +2122 > 99 +. + +NFD +/ +N 254 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0083 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 00A8 +8E > 02C7 +8F > 00B8 +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 00AF +9E > 02DB +9F > 009F +A0 > 00A0 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A6 > 00A6 +A7 > 00A7 +A8 > 00D8 +A9 > 00A9 +AA > 0052 0327 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00C6 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00F8 +B9 > 00B9 +BA > 0072 0327 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00E6 +C0 > 0041 0328 +C1 > 0049 0328 +C2 > 0041 0304 +C3 > 0043 0301 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 0045 0328 +C7 > 0045 0304 +C8 > 0043 030C +C9 > 0045 0301 +CA > 005A 0301 +CB > 0045 0307 +CC > 0047 0327 +CD > 004B 0327 +CE > 0049 0304 +CF > 004C 0327 +D0 > 0053 030C +D1 > 004E 0301 +D2 > 004E 0327 +D3 > 004F 0301 +D4 > 004F 0304 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 0055 0328 +D9 > 0141 +DA > 0053 0301 +DB > 0055 0304 +DC > 0055 0308 +DD > 005A 0307 +DE > 005A 030C +DF > 00DF +E0 > 0061 0328 +E1 > 0069 0328 +E2 > 0061 0304 +E3 > 0063 0301 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 0065 0328 +E7 > 0065 0304 +E8 > 0063 030C +E9 > 0065 0301 +EA > 007A 0301 +EB > 0065 0307 +EC > 0067 0327 +ED > 006B 0327 +EE > 0069 0304 +EF > 006C 0327 +F0 > 0073 030C +F1 > 006E 0301 +F2 > 006E 0327 +F3 > 006F 0301 +F4 > 006F 0304 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 0075 0328 +F9 > 0142 +FA > 0073 0301 +FB > 0075 0304 +FC > 0075 0308 +FD > 007A 0307 +FE > 007A 030C +FF > 02D9 +. + +NFC +/ +N 254 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0083 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 0088 +89 > 2030 +8A > 008A +8B > 2039 +8C > 008C +8D > 00A8 +8E > 02C7 +8F > 00B8 +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 0098 +99 > 2122 +9A > 009A +9B > 203A +9C > 009C +9D > 00AF +9E > 02DB +9F > 009F +A0 > 00A0 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A6 > 00A6 +A7 > 00A7 +A8 > 00D8 +A9 > 00A9 +AA > 0156 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00C6 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00F8 +B9 > 00B9 +BA > 0157 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00E6 +C0 > 0104 +C1 > 012E +C2 > 0100 +C3 > 0106 +C4 > 00C4 +C5 > 00C5 +C6 > 0118 +C7 > 0112 +C8 > 010C +C9 > 00C9 +CA > 0179 +CB > 0116 +CC > 0122 +CD > 0136 +CE > 012A +CF > 013B +D0 > 0160 +D1 > 0143 +D2 > 0145 +D3 > 00D3 +D4 > 014C +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 0172 +D9 > 0141 +DA > 015A +DB > 016A +DC > 00DC +DD > 017B +DE > 017D +DF > 00DF +E0 > 0105 +E1 > 012F +E2 > 0101 +E3 > 0107 +E4 > 00E4 +E5 > 00E5 +E6 > 0119 +E7 > 0113 +E8 > 010D +E9 > 00E9 +EA > 017A +EB > 0117 +EC > 0123 +ED > 0137 +EE > 012B +EF > 013C +F0 > 0161 +F1 > 0144 +F2 > 0146 +F3 > 00F3 +F4 > 014D +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 0173 +F9 > 0142 +FA > 015B +FB > 016B +FC > 00FC +FD > 017C +FE > 017E +FF > 02D9 +. + +COMP += NFC +. diff --git a/assets/data/cp1257.cset b/assets/data/cp1257.cset new file mode 100644 index 0000000..696c15a --- /dev/null +++ b/assets/data/cp1257.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1257 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 00A8 - Y 8D 8D 8D 00 00 00 # DIAERESIS +8E 02C7 M Y 8E 8E 8E 00 00 00 # CARON +8F 00B8 - Y 8F 8F 8F 00 00 00 # CEDILLA +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 00AF - Y 9D 9D 9D 00 00 00 # MACRON +9E 02DB - Y 9E 9E 9E 00 00 00 # OGONEK +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 E0A1 . N A1 A1 A1 00 00 00 # <unused> +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 E0A5 . N A5 A5 A5 00 00 00 # <unused> +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00D8 L Y A8 B8 A8 A8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 0156 L Y AA BA AA 52 72 72 # LATIN CAPITAL LETTER R WITH CEDILLA +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00C6 L Y AF BF AF AF 2A 00 # LATIN CAPITAL LETTER AE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00F8 L Y A8 B8 A8 B8 2A 00 # LATIN SMALL LETTER O WITH STROKE +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 0157 L Y AA BA AA 72 72 72 # LATIN SMALL LETTER R WITH CEDILLA +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00E6 L Y AF BF AF BF 2A 00 # LATIN SMALL LETTER AE +C0 0104 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +C1 012E L Y C1 E1 C1 49 2A 00 # LATIN CAPITAL LETTER I WITH OGONEK +C2 0100 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH MACRON +C3 0106 L Y C3 E3 C3 43 63 63 # LATIN CAPITAL LETTER C WITH ACUTE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 0118 L Y C6 E6 C6 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +C7 0112 L Y C7 E7 C7 45 2A 00 # LATIN CAPITAL LETTER E WITH MACRON +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0179 L Y CA EA CA 5A 7A 7A # LATIN CAPITAL LETTER Z WITH ACUTE +CB 0116 L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DOT ABOVE +CC 0122 L Y CC EC CC 47 67 67 # LATIN CAPITAL LETTER G WITH CEDILLA +CD 0136 L Y CD ED CD 4B 6B 6B # LATIN CAPITAL LETTER K WITH CEDILLA +CE 012A L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH MACRON +CF 013B L Y CF EF CF 4C 6C 6C # LATIN CAPITAL LETTER L WITH CEDILLA +D0 0160 L Y D0 F0 D0 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +D1 0143 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH ACUTE +D2 0145 L Y D2 F2 D2 4E 6E 6E # LATIN CAPITAL LETTER N WITH CEDILLA +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 014C L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH MACRON +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 0172 L Y D8 F8 D8 55 2A 00 # LATIN CAPITAL LETTER U WITH OGONEK +D9 0141 L Y D9 F9 D9 D9 F9 F9 # LATIN CAPITAL LETTER L WITH STROKE +DA 015A L Y DA FA DA 53 73 73 # LATIN CAPITAL LETTER S WITH ACUTE +DB 016A L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH MACRON +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 017B L Y DD FD DD 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +DE 017D L Y DE FE DE 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0105 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +E1 012F L Y C1 E1 C1 69 2A 00 # LATIN SMALL LETTER I WITH OGONEK +E2 0101 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH MACRON +E3 0107 L Y C3 E3 C3 63 63 63 # LATIN SMALL LETTER C WITH ACUTE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 0119 L Y C6 E6 C6 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +E7 0113 L Y C7 E7 C7 65 2A 00 # LATIN SMALL LETTER E WITH MACRON +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 017A L Y CA EA CA 7A 7A 7A # LATIN SMALL LETTER Z WITH ACUTE +EB 0117 L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DOT ABOVE +EC 0123 L Y CC EC CC 67 67 67 # LATIN SMALL LETTER G WITH CEDILLA +ED 0137 L Y CD ED CD 6B 6B 6B # LATIN SMALL LETTER K WITH CEDILLA +EE 012B L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH MACRON +EF 013C L Y CF EF CF 6C 6C 6C # LATIN SMALL LETTER L WITH CEDILLA +F0 0161 L Y D0 F0 D0 73 73 73 # LATIN SMALL LETTER S WITH CARON +F1 0144 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH ACUTE +F2 0146 L Y D2 F2 D2 6E 6E 6E # LATIN SMALL LETTER N WITH CEDILLA +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 014D L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH MACRON +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 0173 L Y D8 F8 D8 75 2A 00 # LATIN SMALL LETTER U WITH OGONEK +F9 0142 L Y D9 F9 D9 F9 F9 F9 # LATIN SMALL LETTER L WITH STROKE +FA 015B L Y DA FA DA 73 73 73 # LATIN SMALL LETTER S WITH ACUTE +FB 016B L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH MACRON +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 017C L Y DD FD DD 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +FE 017E L Y DE FE DE 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +FF 02D9 - Y FF FF FF 00 00 00 # DOT ABOVE diff --git a/assets/data/cp1258.cmap b/assets/data/cp1258.cmap new file mode 100644 index 0000000..859d742 --- /dev/null +++ b/assets/data/cp1258.cmap @@ -0,0 +1,2403 @@ +INTERNAL +/ +N 955 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 3 + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 031B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + 031B > DD + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > 9F + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 3 + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 031B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + 031B > FD + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008A > 8A +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009A > 9A +009D > 9D +009E > 9E +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > 41 DE +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > 49 CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > 4F CC +00D3 > D3 +00D4 > D4 +00D5 > 4F DE +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 EC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > 61 DE +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > 69 CC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > 6F CC +00F3 > F3 +00F4 > F4 +00F5 > 6F DE +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 EC +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > C3 +0103 > E3 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 EC +0107 > 63 EC +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0110 > D0 +0111 > F0 +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 DE +0129 > 69 DE +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C EC +013A > 6C EC +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E EC +0144 > 6E EC +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 8C +0153 > 9C +0154 > 52 EC +0155 > 72 EC +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 EC +015B > 73 EC +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 DE +0169 > 75 DE +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 9F +0179 > 5A EC +017A > 7A EC +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +0192 > 83 +01A0 > D5 +01A1 > F5 +01AF > DD +01B0 > FD +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC EC +01D8 > FC EC +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC CC +01DC > FC CC +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 EC +01F5 > 67 EC +01F8 > 4E CC +01F9 > 6E CC +01FA > C5 EC +01FB > E5 EC +01FC > C6 EC +01FD > E6 EC +01FE > D8 EC +01FF > F8 EC +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > 4F DE # unsup: 004F 0303 0304 +022D > 6F DE # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C6 > 88 +02DC > 98 +0300 > CC +0301 > EC +0302 > 0 # unsup +0303 > DE +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > D2 +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > F2 +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > CC +0341 > EC +0342 > 0 # unsup +0343 > 0 # unsup +0344 > EC # unsup: 0308 0301 +0345 > 0 # unsup +037E > 3B +0385 > A8 EC +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 F2 +1E05 > 62 F2 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 EC +1E09 > E7 EC +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 F2 +1E0D > 64 F2 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 CC # unsup: 0045 0304 0300 +1E15 > 65 CC # unsup: 0065 0304 0300 +1E16 > 45 EC # unsup: 0045 0304 0301 +1E17 > 65 EC # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 F2 +1E25 > 68 F2 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF EC +1E2F > EF EC +1E30 > 4B EC +1E31 > 6B EC +1E32 > 4B F2 +1E33 > 6B F2 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C F2 +1E37 > 6C F2 +1E38 > 4C F2 # unsup: 004C 0323 0304 +1E39 > 6C F2 # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D EC +1E3F > 6D EC +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D F2 +1E43 > 6D F2 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E F2 +1E47 > 6E F2 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F DE EC +1E4D > 6F DE EC +1E4E > 4F DE # unsup: 004F 0303 0308 +1E4F > 6F DE # unsup: 006F 0303 0308 +1E50 > 4F CC # unsup: 004F 0304 0300 +1E51 > 6F CC # unsup: 006F 0304 0300 +1E52 > 4F EC # unsup: 004F 0304 0301 +1E53 > 6F EC # unsup: 006F 0304 0301 +1E54 > 50 EC +1E55 > 70 EC +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 F2 +1E5B > 72 F2 +1E5C > 52 F2 # unsup: 0052 0323 0304 +1E5D > 72 F2 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 F2 +1E63 > 73 F2 +1E64 > 53 EC # unsup: 0053 0301 0307 +1E65 > 73 EC # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 F2 # unsup: 0053 0323 0307 +1E69 > 73 F2 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 F2 +1E6D > 74 F2 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 DE EC +1E79 > 75 DE EC +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 DE +1E7D > 76 DE +1E7E > 56 F2 +1E7F > 76 F2 +1E80 > 57 CC +1E81 > 77 CC +1E82 > 57 EC +1E83 > 77 EC +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 F2 +1E89 > 77 F2 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A F2 +1E93 > 7A F2 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 F2 +1EA1 > 61 F2 +1EA2 > 41 D2 +1EA3 > 61 D2 +1EA4 > C2 EC +1EA5 > E2 EC +1EA6 > C2 CC +1EA7 > E2 CC +1EA8 > C2 D2 +1EA9 > E2 D2 +1EAA > C2 DE +1EAB > E2 DE +1EAC > 41 F2 # unsup: 0041 0323 0302 +1EAD > 61 F2 # unsup: 0061 0323 0302 +1EAE > C3 EC +1EAF > E3 EC +1EB0 > C3 CC +1EB1 > E3 CC +1EB2 > C3 D2 +1EB3 > E3 D2 +1EB4 > C3 DE +1EB5 > E3 DE +1EB6 > 41 F2 # unsup: 0041 0323 0306 +1EB7 > 61 F2 # unsup: 0061 0323 0306 +1EB8 > 45 F2 +1EB9 > 65 F2 +1EBA > 45 D2 +1EBB > 65 D2 +1EBC > 45 DE +1EBD > 65 DE +1EBE > CA EC +1EBF > EA EC +1EC0 > CA CC +1EC1 > EA CC +1EC2 > CA D2 +1EC3 > EA D2 +1EC4 > CA DE +1EC5 > EA DE +1EC6 > 45 F2 # unsup: 0045 0323 0302 +1EC7 > 65 F2 # unsup: 0065 0323 0302 +1EC8 > 49 D2 +1EC9 > 69 D2 +1ECA > 49 F2 +1ECB > 69 F2 +1ECC > 4F F2 +1ECD > 6F F2 +1ECE > 4F D2 +1ECF > 6F D2 +1ED0 > D4 EC +1ED1 > F4 EC +1ED2 > D4 CC +1ED3 > F4 CC +1ED4 > D4 D2 +1ED5 > F4 D2 +1ED6 > D4 DE +1ED7 > F4 DE +1ED8 > 4F F2 # unsup: 004F 0323 0302 +1ED9 > 6F F2 # unsup: 006F 0323 0302 +1EDA > D5 EC +1EDB > F5 EC +1EDC > D5 CC +1EDD > F5 CC +1EDE > D5 D2 +1EDF > F5 D2 +1EE0 > D5 DE +1EE1 > F5 DE +1EE2 > D5 F2 +1EE3 > F5 F2 +1EE4 > 55 F2 +1EE5 > 75 F2 +1EE6 > 55 D2 +1EE7 > 75 D2 +1EE8 > DD EC +1EE9 > FD EC +1EEA > DD CC +1EEB > FD CC +1EEC > DD D2 +1EED > FD D2 +1EEE > DD DE +1EEF > FD DE +1EF0 > DD F2 +1EF1 > FD F2 +1EF2 > 59 CC +1EF3 > 79 CC +1EF4 > 59 F2 +1EF5 > 79 F2 +1EF6 > 59 D2 +1EF7 > 79 D2 +1EF8 > 59 DE +1EF9 > 79 DE +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 CC +1FEE > A8 EC +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 85 +202F > 20 # compat +2030 > 89 +2039 > 8B +203A > 9B +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AB > FE +20AC > 80 +2122 > 99 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE31 > 97 # compat +FE32 > 96 # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE58 > 97 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 433 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 3 + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 031B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + 031B > DD + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > 9F + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 3 + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 031B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + 031B > FD + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0081 > 81 +008A > 8A +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +009A > 9A +009D > 9D +009E > 9E +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > 41 DE +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > 49 CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > 4F CC +00D3 > D3 +00D4 > D4 +00D5 > 4F DE +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 EC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > 61 DE +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > 69 CC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > 6F CC +00F3 > F3 +00F4 > F4 +00F5 > 6F DE +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 EC +00FF > FF +0102 > C3 +0103 > E3 +0106 > 43 EC +0107 > 63 EC +0110 > D0 +0111 > F0 +0128 > 49 DE +0129 > 69 DE +0139 > 4C EC +013A > 6C EC +0143 > 4E EC +0144 > 6E EC +0152 > 8C +0153 > 9C +0154 > 52 EC +0155 > 72 EC +015A > 53 EC +015B > 73 EC +0168 > 55 DE +0169 > 75 DE +0178 > 9F +0179 > 5A EC +017A > 7A EC +0192 > 83 +01A0 > D5 +01A1 > F5 +01AF > DD +01B0 > FD +01D7 > DC EC +01D8 > FC EC +01DB > DC CC +01DC > FC CC +01F4 > 47 EC +01F5 > 67 EC +01F8 > 4E CC +01F9 > 6E CC +01FA > C5 EC +01FB > E5 EC +01FC > C6 EC +01FD > E6 EC +01FE > D8 EC +01FF > F8 EC +02C6 > 88 +02DC > 98 +0300 > CC +0301 > EC +0303 > DE +0309 > D2 +0323 > F2 +0340 > CC +0341 > EC +037E > 3B +0385 > A8 EC +0387 > B7 +1E04 > 42 F2 +1E05 > 62 F2 +1E08 > C7 EC +1E09 > E7 EC +1E0C > 44 F2 +1E0D > 64 F2 +1E24 > 48 F2 +1E25 > 68 F2 +1E2E > CF EC +1E2F > EF EC +1E30 > 4B EC +1E31 > 6B EC +1E32 > 4B F2 +1E33 > 6B F2 +1E36 > 4C F2 +1E37 > 6C F2 +1E3E > 4D EC +1E3F > 6D EC +1E42 > 4D F2 +1E43 > 6D F2 +1E46 > 4E F2 +1E47 > 6E F2 +1E4C > 4F DE EC +1E4D > 6F DE EC +1E54 > 50 EC +1E55 > 70 EC +1E5A > 52 F2 +1E5B > 72 F2 +1E62 > 53 F2 +1E63 > 73 F2 +1E6C > 54 F2 +1E6D > 74 F2 +1E78 > 55 DE EC +1E79 > 75 DE EC +1E7C > 56 DE +1E7D > 76 DE +1E7E > 56 F2 +1E7F > 76 F2 +1E80 > 57 CC +1E81 > 77 CC +1E82 > 57 EC +1E83 > 77 EC +1E88 > 57 F2 +1E89 > 77 F2 +1E92 > 5A F2 +1E93 > 7A F2 +1EA0 > 41 F2 +1EA1 > 61 F2 +1EA2 > 41 D2 +1EA3 > 61 D2 +1EA4 > C2 EC +1EA5 > E2 EC +1EA6 > C2 CC +1EA7 > E2 CC +1EA8 > C2 D2 +1EA9 > E2 D2 +1EAA > C2 DE +1EAB > E2 DE +1EAE > C3 EC +1EAF > E3 EC +1EB0 > C3 CC +1EB1 > E3 CC +1EB2 > C3 D2 +1EB3 > E3 D2 +1EB4 > C3 DE +1EB5 > E3 DE +1EB8 > 45 F2 +1EB9 > 65 F2 +1EBA > 45 D2 +1EBB > 65 D2 +1EBC > 45 DE +1EBD > 65 DE +1EBE > CA EC +1EBF > EA EC +1EC0 > CA CC +1EC1 > EA CC +1EC2 > CA D2 +1EC3 > EA D2 +1EC4 > CA DE +1EC5 > EA DE +1EC8 > 49 D2 +1EC9 > 69 D2 +1ECA > 49 F2 +1ECB > 69 F2 +1ECC > 4F F2 +1ECD > 6F F2 +1ECE > 4F D2 +1ECF > 6F D2 +1ED0 > D4 EC +1ED1 > F4 EC +1ED2 > D4 CC +1ED3 > F4 CC +1ED4 > D4 D2 +1ED5 > F4 D2 +1ED6 > D4 DE +1ED7 > F4 DE +1EDA > D5 EC +1EDB > F5 EC +1EDC > D5 CC +1EDD > F5 CC +1EDE > D5 D2 +1EDF > F5 D2 +1EE0 > D5 DE +1EE1 > F5 DE +1EE2 > D5 F2 +1EE3 > F5 F2 +1EE4 > 55 F2 +1EE5 > 75 F2 +1EE6 > 55 D2 +1EE7 > 75 D2 +1EE8 > DD EC +1EE9 > FD EC +1EEA > DD CC +1EEB > FD CC +1EEC > DD D2 +1EED > FD D2 +1EEE > DD DE +1EEF > FD DE +1EF0 > DD F2 +1EF1 > FD F2 +1EF2 > 59 CC +1EF3 > 79 CC +1EF4 > 59 F2 +1EF5 > 79 F2 +1EF6 > 59 D2 +1EF7 > 79 D2 +1EF8 > 59 DE +1EF9 > 79 DE +1FED > A8 CC +1FEE > A8 EC +1FEF > 60 +1FFD > B4 +2013 > 96 +2014 > 97 +2018 > 91 +2019 > 92 +201A > 82 +201C > 93 +201D > 94 +201E > 84 +2020 > 86 +2021 > 87 +2022 > 95 +2026 > 85 +2030 > 89 +2039 > 8B +203A > 9B +20AB > FE +20AC > 80 +2122 > 99 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 008A +8B > 2039 +8C > 0152 +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 009A +9B > 203A +9C > 0153 +9D > 009D +9E > 009E +9F > 0059 0308 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0306 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 0110 +D1 > 004E 0303 +D2 > 0309 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 031B +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0055 031B +DE > 0303 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0306 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0301 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 0111 +F1 > 006E 0303 +F2 > 0323 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 031B +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0075 031B +FE > 20AB +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 / + N 3 + D2 > 1EA2 + DE > 00C3 + F2 > 1EA0 + . +42 > 0042 / + N 1 + F2 > 1E04 + . +43 > 0043 / + N 1 + EC > 0106 + . +44 > 0044 / + N 1 + F2 > 1E0C + . +45 > 0045 / + N 3 + D2 > 1EBA + DE > 1EBC + F2 > 1EB8 + . +46 > 0046 +47 > 0047 / + N 1 + EC > 01F4 + . +48 > 0048 / + N 1 + F2 > 1E24 + . +49 > 0049 / + N 4 + CC > 00CC + D2 > 1EC8 + DE > 0128 + F2 > 1ECA + . +4A > 004A +4B > 004B / + N 2 + EC > 1E30 + F2 > 1E32 + . +4C > 004C / + N 2 + EC > 0139 + F2 > 1E36 + . +4D > 004D / + N 2 + EC > 1E3E + F2 > 1E42 + . +4E > 004E / + N 3 + CC > 01F8 + EC > 0143 + F2 > 1E46 + . +4F > 004F / + N 4 + CC > 00D2 + D2 > 1ECE + DE > 00D5 / + N 1 + EC > 1E4C + . + F2 > 1ECC + . +50 > 0050 / + N 1 + EC > 1E54 + . +51 > 0051 +52 > 0052 / + N 2 + EC > 0154 + F2 > 1E5A + . +53 > 0053 / + N 2 + EC > 015A + F2 > 1E62 + . +54 > 0054 / + N 1 + F2 > 1E6C + . +55 > 0055 / + N 3 + D2 > 1EE6 + DE > 0168 / + N 1 + EC > 1E78 + . + F2 > 1EE4 + . +56 > 0056 / + N 2 + DE > 1E7C + F2 > 1E7E + . +57 > 0057 / + N 3 + CC > 1E80 + EC > 1E82 + F2 > 1E88 + . +58 > 0058 +59 > 0059 / + N 5 + CC > 1EF2 + D2 > 1EF6 + DE > 1EF8 + EC > 00DD + F2 > 1EF4 + . +5A > 005A / + N 2 + EC > 0179 + F2 > 1E92 + . +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 / + N 3 + D2 > 1EA3 + DE > 00E3 + F2 > 1EA1 + . +62 > 0062 / + N 1 + F2 > 1E05 + . +63 > 0063 / + N 1 + EC > 0107 + . +64 > 0064 / + N 1 + F2 > 1E0D + . +65 > 0065 / + N 3 + D2 > 1EBB + DE > 1EBD + F2 > 1EB9 + . +66 > 0066 +67 > 0067 / + N 1 + EC > 01F5 + . +68 > 0068 / + N 1 + F2 > 1E25 + . +69 > 0069 / + N 4 + CC > 00EC + D2 > 1EC9 + DE > 0129 + F2 > 1ECB + . +6A > 006A +6B > 006B / + N 2 + EC > 1E31 + F2 > 1E33 + . +6C > 006C / + N 2 + EC > 013A + F2 > 1E37 + . +6D > 006D / + N 2 + EC > 1E3F + F2 > 1E43 + . +6E > 006E / + N 3 + CC > 01F9 + EC > 0144 + F2 > 1E47 + . +6F > 006F / + N 4 + CC > 00F2 + D2 > 1ECF + DE > 00F5 / + N 1 + EC > 1E4D + . + F2 > 1ECD + . +70 > 0070 / + N 1 + EC > 1E55 + . +71 > 0071 +72 > 0072 / + N 2 + EC > 0155 + F2 > 1E5B + . +73 > 0073 / + N 2 + EC > 015B + F2 > 1E63 + . +74 > 0074 / + N 1 + F2 > 1E6D + . +75 > 0075 / + N 3 + D2 > 1EE7 + DE > 0169 / + N 1 + EC > 1E79 + . + F2 > 1EE5 + . +76 > 0076 / + N 2 + DE > 1E7D + F2 > 1E7F + . +77 > 0077 / + N 3 + CC > 1E81 + EC > 1E83 + F2 > 1E89 + . +78 > 0078 +79 > 0079 / + N 5 + CC > 1EF3 + D2 > 1EF7 + DE > 1EF9 + EC > 00FD + F2 > 1EF5 + . +7A > 007A / + N 2 + EC > 017A + F2 > 1E93 + . +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 20AC +81 > 0081 +82 > 201A +83 > 0192 +84 > 201E +85 > 2026 +86 > 2020 +87 > 2021 +88 > 02C6 +89 > 2030 +8A > 008A +8B > 2039 +8C > 0152 +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 2018 +92 > 2019 +93 > 201C +94 > 201D +95 > 2022 +96 > 2013 +97 > 2014 +98 > 02DC +99 > 2122 +9A > 009A +9B > 203A +9C > 0153 +9D > 009D +9E > 009E +9F > 0178 +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 / + N 2 + CC > 1FED + EC > 0385 + . +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 / + N 4 + CC > 1EA6 + D2 > 1EA8 + DE > 1EAA + EC > 1EA4 + . +C3 > 0102 / + N 4 + CC > 1EB0 + D2 > 1EB2 + DE > 1EB4 + EC > 1EAE + . +C4 > 00C4 +C5 > 00C5 / + N 1 + EC > 01FA + . +C6 > 00C6 / + N 1 + EC > 01FC + . +C7 > 00C7 / + N 1 + EC > 1E08 + . +C8 > 00C8 +C9 > 00C9 +CA > 00CA / + N 4 + CC > 1EC0 + D2 > 1EC2 + DE > 1EC4 + EC > 1EBE + . +CB > 00CB +CC > 0300 +CD > 00CD +CE > 00CE +CF > 00CF / + N 1 + EC > 1E2E + . +D0 > 0110 +D1 > 00D1 +D2 > 0309 +D3 > 00D3 +D4 > 00D4 / + N 4 + CC > 1ED2 + D2 > 1ED4 + DE > 1ED6 + EC > 1ED0 + . +D5 > 01A0 / + N 5 + CC > 1EDC + D2 > 1EDE + DE > 1EE0 + EC > 1EDA + F2 > 1EE2 + . +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 / + N 1 + EC > 01FE + . +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC / + N 2 + CC > 01DB + EC > 01D7 + . +DD > 01AF / + N 5 + CC > 1EEA + D2 > 1EEC + DE > 1EEE + EC > 1EE8 + F2 > 1EF0 + . +DE > 0303 +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 / + N 4 + CC > 1EA7 + D2 > 1EA9 + DE > 1EAB + EC > 1EA5 + . +E3 > 0103 / + N 4 + CC > 1EB1 + D2 > 1EB3 + DE > 1EB5 + EC > 1EAF + . +E4 > 00E4 +E5 > 00E5 / + N 1 + EC > 01FB + . +E6 > 00E6 / + N 1 + EC > 01FD + . +E7 > 00E7 / + N 1 + EC > 1E09 + . +E8 > 00E8 +E9 > 00E9 +EA > 00EA / + N 4 + CC > 1EC1 + D2 > 1EC3 + DE > 1EC5 + EC > 1EBF + . +EB > 00EB +EC > 0301 +ED > 00ED +EE > 00EE +EF > 00EF / + N 1 + EC > 1E2F + . +F0 > 0111 +F1 > 00F1 +F2 > 0323 +F3 > 00F3 +F4 > 00F4 / + N 4 + CC > 1ED3 + D2 > 1ED5 + DE > 1ED7 + EC > 1ED1 + . +F5 > 01A1 / + N 5 + CC > 1EDD + D2 > 1EDF + DE > 1EE1 + EC > 1EDB + F2 > 1EE3 + . +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 / + N 1 + EC > 01FF + . +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC / + N 2 + CC > 01DC + EC > 01D8 + . +FD > 01B0 / + N 5 + CC > 1EEB + D2 > 1EED + DE > 1EEF + EC > 1EE9 + F2 > 1EF1 + . +FE > 20AB +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/cp1258.cset b/assets/data/cp1258.cset new file mode 100644 index 0000000..cb93de8 --- /dev/null +++ b/assets/data/cp1258.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += cp1258 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 20AC - Y 80 80 80 00 00 00 # EURO SIGN +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 201A - Y 82 82 82 00 00 00 # SINGLE LOW-9 QUOTATION MARK +83 0192 L Y 83 83 83 83 83 83 # LATIN SMALL LETTER F WITH HOOK +84 201E - Y 84 84 84 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +85 2026 - Y 85 85 85 00 00 00 # HORIZONTAL ELLIPSIS +86 2020 - Y 86 86 86 00 00 00 # DAGGER +87 2021 - Y 87 87 87 00 00 00 # DOUBLE DAGGER +88 02C6 M Y 88 88 88 00 00 00 # MODIFIER LETTER CIRCUMFLEX ACCENT +89 2030 - Y 89 89 89 00 00 00 # PER MILLE SIGN +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 2039 - Y 8B 8B 8B 00 00 00 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C 0152 L Y 8C 9C 8C 8C 2A 00 # LATIN CAPITAL LIGATURE OE +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 2018 - Y 91 91 91 00 00 00 # LEFT SINGLE QUOTATION MARK +92 2019 - Y 92 92 92 00 00 00 # RIGHT SINGLE QUOTATION MARK +93 201C - Y 93 93 93 00 00 00 # LEFT DOUBLE QUOTATION MARK +94 201D - Y 94 94 94 00 00 00 # RIGHT DOUBLE QUOTATION MARK +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 2013 - Y 96 96 96 00 00 00 # EN DASH +97 2014 - Y 97 97 97 00 00 00 # EM DASH +98 02DC - Y 98 98 98 00 00 00 # SMALL TILDE +99 2122 . N 99 99 99 00 00 00 # <unused special> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 203A - Y 9B 9B 9B 00 00 00 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C 0153 L Y 8C 9C 8C 9C 2A 00 # LATIN SMALL LIGATURE OE +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 0178 L Y 9F FF 9F 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 0102 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH BREVE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 0300 M M CC CC CC 00 00 00 # COMBINING GRAVE ACCENT +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 0110 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER D WITH STROKE +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 0309 M M D2 D2 D2 00 00 00 # COMBINING HOOK ABOVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 01A0 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH HORN +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 01AF L Y DD FD DD 55 2A 00 # LATIN CAPITAL LETTER U WITH HORN +DE 0303 M M DE DE DE 00 00 00 # COMBINING TILDE +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 0103 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH BREVE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 0301 M M EC EC EC 00 00 00 # COMBINING ACUTE ACCENT +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 0111 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER D WITH STROKE +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 0323 M M F2 F2 F2 00 00 00 # COMBINING DOT BELOW +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 01A1 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH HORN +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 01B0 L Y DD FD DD 75 2A 00 # LATIN SMALL LETTER U WITH HORN +FE 20AB - Y FE FE FE 00 00 00 # DONG SIGN +FF 00FF L Y 9F FF 9F 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/dvorak.kbd b/assets/data/dvorak.kbd new file mode 100644 index 0000000..c2707d0 --- /dev/null +++ b/assets/data/dvorak.kbd @@ -0,0 +1,25 @@ +# Dvorak keyboard data file + +py +yf +fg +gc +cr +rl +ao +oe +eu +ui +id +dh +ht +tn +ns +qj +jk +kx +xb +bm +mw +wv +vz diff --git a/assets/data/iso-8859-1.cmap b/assets/data/iso-8859-1.cmap new file mode 100644 index 0000000..ed87552 --- /dev/null +++ b/assets/data/iso-8859-1.cmap @@ -0,0 +1,1922 @@ +INTERNAL +/ +N 957 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 00D0 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0059 0301 +DE > 00DE +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 00F0 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0079 0301 +FE > 00FE +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 00D0 +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 00DD +DE > 00DE +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 00F0 +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 00FD +FE > 00FE +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-1.cset b/assets/data/iso-8859-1.cset new file mode 100644 index 0000000..6526987 --- /dev/null +++ b/assets/data/iso-8859-1.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-1 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 00D0 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER ETH +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 00DE L Y DE FE DE DE FE FE # LATIN CAPITAL LETTER THORN +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 00F0 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER ETH +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 00FE L Y DE FE DE FE FE FE # LATIN SMALL LETTER THORN +FF 00FF L Y FF FF FF 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/iso-8859-10.cmap b/assets/data/iso-8859-10.cmap new file mode 100644 index 0000000..b3e2364 --- /dev/null +++ b/assets/data/iso-8859-10.cmap @@ -0,0 +1,1971 @@ +INTERNAL +/ +N 925 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 7 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0304 > C0 + 0308 > C4 + 030A > C5 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 1 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 5 + 0301 > C9 + 0304 > A2 + 0307 > CC + 0308 > CB + 0328 > CA + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > A3 + . +0048 > 48 +0049 > 49 / + N 6 + 0301 > CD + 0302 > CE + 0303 > A5 + 0304 > A4 + 0308 > CF + 0328 > C7 + . +004A > 4A +004B > 4B / + N 1 + 0327 > A6 + . +004C > 4C / + N 1 + 0327 > A8 + . +004D > 4D +004E > 4E / + N 1 + 0327 > D1 + . +004F > 4F / + N 5 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0304 > D2 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > AA + . +0054 > 54 +0055 > 55 / + N 6 + 0301 > DA + 0302 > DB + 0303 > D7 + 0304 > AE + 0308 > DC + 0328 > D9 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 1 + 030C > AC + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 7 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0304 > E0 + 0308 > E4 + 030A > E5 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 1 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 5 + 0301 > E9 + 0304 > B2 + 0307 > EC + 0308 > EB + 0328 > EA + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > B3 + . +0068 > 68 +0069 > 69 / + N 6 + 0301 > ED + 0302 > EE + 0303 > B5 + 0304 > B4 + 0308 > EF + 0328 > E7 + . +006A > 6A +006B > 6B / + N 1 + 0327 > B6 + . +006C > 6C / + N 1 + 0327 > B8 + . +006D > 6D +006E > 6E / + N 1 + 0327 > F1 + . +006F > 6F / + N 5 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0304 > F2 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > BA + . +0074 > 74 +0075 > 75 / + N 6 + 0301 > FA + 0302 > FB + 0303 > F7 + 0304 > BE + 0308 > FC + 0328 > F9 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 1 + 030C > BC + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > A7 +00AD > AD +00B0 > B0 +00B7 > B7 +00C0 > 41 # unsup: 0041 0300 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > CB +00CC > 49 # unsup: 0049 0300 +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D8 > D8 +00D9 > 55 # unsup: 0055 0300 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > EB +00EC > 69 # unsup: 0069 0300 +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F8 > F8 +00F9 > 75 # unsup: 0075 0300 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > 79 # unsup: 0079 0308 +0100 > C0 +0101 > E0 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > A1 +0105 > B1 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0110 > A9 +0111 > B9 +0112 > A2 +0113 > B2 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > CC +0117 > EC +0118 > CA +0119 > EA +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > A3 +0123 > B3 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > A5 +0129 > B5 +012A > A4 +012B > B4 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > C7 +012F > E7 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > A6 +0137 > B6 +0138 > FF +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > A8 +013C > B8 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > D1 +0146 > F1 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014A > AF +014B > BF +014C > D2 +014D > F2 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > AA +0161 > BA +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0166 > AB +0167 > BB +0168 > D7 +0169 > F7 +016A > AE +016B > BE +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > D9 +0173 > F9 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > AC +017E > BC +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 AC # compat +01C5 > 44 BC # compat +01C6 > 64 BC # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > A2 # unsup: 0112 0300 +1E15 > B2 # unsup: 0113 0300 +1E16 > A2 # unsup: 0112 0301 +1E17 > B2 # unsup: 0113 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > D2 # unsup: 014C 0300 +1E51 > F2 # unsup: 014D 0300 +1E52 > D2 # unsup: 014C 0301 +1E53 > F2 # unsup: 014D 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > AA # unsup: 0160 0307 +1E67 > BA # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > D7 # unsup: 0168 0301 +1E79 > F7 # unsup: 0169 0301 +1E7A > AE # unsup: 016A 0308 +1E7B > BE # unsup: 016B 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2015 > BD +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 7 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0304 > C0 + 0308 > C4 + 030A > C5 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 1 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 5 + 0301 > C9 + 0304 > A2 + 0307 > CC + 0308 > CB + 0328 > CA + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > A3 + . +0048 > 48 +0049 > 49 / + N 6 + 0301 > CD + 0302 > CE + 0303 > A5 + 0304 > A4 + 0308 > CF + 0328 > C7 + . +004A > 4A +004B > 4B / + N 1 + 0327 > A6 + . +004C > 4C / + N 1 + 0327 > A8 + . +004D > 4D +004E > 4E / + N 1 + 0327 > D1 + . +004F > 4F / + N 5 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0304 > D2 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > AA + . +0054 > 54 +0055 > 55 / + N 6 + 0301 > DA + 0302 > DB + 0303 > D7 + 0304 > AE + 0308 > DC + 0328 > D9 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 1 + 030C > AC + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 7 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0304 > E0 + 0308 > E4 + 030A > E5 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 1 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 5 + 0301 > E9 + 0304 > B2 + 0307 > EC + 0308 > EB + 0328 > EA + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > B3 + . +0068 > 68 +0069 > 69 / + N 6 + 0301 > ED + 0302 > EE + 0303 > B5 + 0304 > B4 + 0308 > EF + 0328 > E7 + . +006A > 6A +006B > 6B / + N 1 + 0327 > B6 + . +006C > 6C / + N 1 + 0327 > B8 + . +006D > 6D +006E > 6E / + N 1 + 0327 > F1 + . +006F > 6F / + N 5 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0304 > F2 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > BA + . +0074 > 74 +0075 > 75 / + N 6 + 0301 > FA + 0302 > FB + 0303 > F7 + 0304 > BE + 0308 > FC + 0328 > F9 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 1 + 030C > BC + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > A7 +00AD > AD +00B0 > B0 +00B7 > B7 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C9 > C9 +00CB > CB +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D8 > D8 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E9 > E9 +00EB > EB +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F8 > F8 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +0100 > C0 +0101 > E0 +0104 > A1 +0105 > B1 +010C > C8 +010D > E8 +0110 > A9 +0111 > B9 +0112 > A2 +0113 > B2 +0116 > CC +0117 > EC +0118 > CA +0119 > EA +0122 > A3 +0123 > B3 +0128 > A5 +0129 > B5 +012A > A4 +012B > B4 +012E > C7 +012F > E7 +0136 > A6 +0137 > B6 +0138 > FF +013B > A8 +013C > B8 +0145 > D1 +0146 > F1 +014A > AF +014B > BF +014C > D2 +014D > F2 +0160 > AA +0161 > BA +0166 > AB +0167 > BB +0168 > D7 +0169 > F7 +016A > AE +016B > BE +0172 > D9 +0173 > F9 +017D > AC +017E > BC +037E > 3B +0387 > B7 +1FEF > 60 +2015 > BD +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0041 0328 +A2 > 0045 0304 +A3 > 0047 0327 +A4 > 0049 0304 +A5 > 0049 0303 +A6 > 004B 0327 +A7 > 00A7 +A8 > 004C 0327 +A9 > 0110 +AA > 0053 030C +AB > 0166 +AC > 005A 030C +AD > 00AD +AE > 0055 0304 +AF > 014A +B0 > 00B0 +B1 > 0061 0328 +B2 > 0065 0304 +B3 > 0067 0327 +B4 > 0069 0304 +B5 > 0069 0303 +B6 > 006B 0327 +B7 > 00B7 +B8 > 006C 0327 +B9 > 0111 +BA > 0073 030C +BB > 0167 +BC > 007A 030C +BD > 2015 +BE > 0075 0304 +BF > 014B +C0 > 0041 0304 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0049 0328 +C8 > 0043 030C +C9 > 0045 0301 +CA > 0045 0328 +CB > 0045 0308 +CC > 0045 0307 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 00D0 +D1 > 004E 0327 +D2 > 004F 0304 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 0055 0303 +D8 > 00D8 +D9 > 0055 0328 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0059 0301 +DE > 00DE +DF > 00DF +E0 > 0061 0304 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0069 0328 +E8 > 0063 030C +E9 > 0065 0301 +EA > 0065 0328 +EB > 0065 0308 +EC > 0065 0307 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 00F0 +F1 > 006E 0327 +F2 > 006F 0304 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 0075 0303 +F8 > 00F8 +F9 > 0075 0328 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0079 0301 +FE > 00FE +FF > 0138 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0104 +A2 > 0112 +A3 > 0122 +A4 > 012A +A5 > 0128 +A6 > 0136 +A7 > 00A7 +A8 > 013B +A9 > 0110 +AA > 0160 +AB > 0166 +AC > 017D +AD > 00AD +AE > 016A +AF > 014A +B0 > 00B0 +B1 > 0105 +B2 > 0113 +B3 > 0123 +B4 > 012B +B5 > 0129 +B6 > 0137 +B7 > 00B7 +B8 > 013C +B9 > 0111 +BA > 0161 +BB > 0167 +BC > 017E +BD > 2015 +BE > 016B +BF > 014B +C0 > 0100 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 012E +C8 > 010C +C9 > 00C9 +CA > 0118 +CB > 00CB +CC > 0116 +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 00D0 +D1 > 0145 +D2 > 014C +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 0168 +D8 > 00D8 +D9 > 0172 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 00DD +DE > 00DE +DF > 00DF +E0 > 0101 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 012F +E8 > 010D +E9 > 00E9 +EA > 0119 +EB > 00EB +EC > 0117 +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 00F0 +F1 > 0146 +F2 > 014D +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 0169 +F8 > 00F8 +F9 > 0173 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 00FD +FE > 00FE +FF > 0138 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-10.cset b/assets/data/iso-8859-10.cset new file mode 100644 index 0000000..20bebb8 --- /dev/null +++ b/assets/data/iso-8859-10.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-10 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0104 L Y A1 B1 A1 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +A2 0112 L Y A2 B2 A2 45 2A 00 # LATIN CAPITAL LETTER E WITH MACRON +A3 0122 L Y A3 B3 A3 47 67 67 # LATIN CAPITAL LETTER G WITH CEDILLA +A4 012A L Y A4 B4 A4 49 2A 00 # LATIN CAPITAL LETTER I WITH MACRON +A5 0128 L Y A5 B5 A5 49 2A 00 # LATIN CAPITAL LETTER I WITH TILDE +A6 0136 L Y A6 B6 A6 4B 6B 6B # LATIN CAPITAL LETTER K WITH CEDILLA +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 013B L Y A8 B8 A8 4C 6C 6C # LATIN CAPITAL LETTER L WITH CEDILLA +A9 0110 L Y A9 B9 A9 A9 B9 B9 # LATIN CAPITAL LETTER D WITH STROKE +AA 0160 L Y AA BA AA 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +AB 0166 L Y AB BB AB AB BB BB # LATIN CAPITAL LETTER T WITH STROKE +AC 017D L Y AC BC AC 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 016A L Y AE BE AE 55 2A 00 # LATIN CAPITAL LETTER U WITH MACRON +AF 014A L Y AF BF AF AF BF BF # LATIN CAPITAL LETTER ENG +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 0105 L Y A1 B1 A1 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +B2 0113 L Y A2 B2 A2 65 2A 00 # LATIN SMALL LETTER E WITH MACRON +B3 0123 L Y A3 B3 A3 67 67 67 # LATIN SMALL LETTER G WITH CEDILLA +B4 012B L Y A4 B4 A4 69 2A 00 # LATIN SMALL LETTER I WITH MACRON +B5 0129 L Y A5 B5 A5 69 2A 00 # LATIN SMALL LETTER I WITH TILDE +B6 0137 L Y A6 B6 A6 6B 6B 6B # LATIN SMALL LETTER K WITH CEDILLA +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 013C L Y A8 B8 A8 6C 6C 6C # LATIN SMALL LETTER L WITH CEDILLA +B9 0111 L Y A9 B9 A9 B9 B9 B9 # LATIN SMALL LETTER D WITH STROKE +BA 0161 L Y AA BA AA 73 73 73 # LATIN SMALL LETTER S WITH CARON +BB 0167 L Y AB BB AB BB BB BB # LATIN SMALL LETTER T WITH STROKE +BC 017E L Y AC BC AC 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +BD 2015 - Y BD BD BD 00 00 00 # HORIZONTAL BAR +BE 016B L Y AE BE AE 75 2A 00 # LATIN SMALL LETTER U WITH MACRON +BF 014B L Y AF BF AF BF BF BF # LATIN SMALL LETTER ENG +C0 0100 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH MACRON +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 012E L Y C7 E7 C7 49 2A 00 # LATIN CAPITAL LETTER I WITH OGONEK +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0118 L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 0116 L Y CC EC CC 45 2A 00 # LATIN CAPITAL LETTER E WITH DOT ABOVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 00D0 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER ETH +D1 0145 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH CEDILLA +D2 014C L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH MACRON +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 0168 L Y D7 F7 D7 55 2A 00 # LATIN CAPITAL LETTER U WITH TILDE +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 0172 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH OGONEK +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 00DE L Y DE FE DE DE FE FE # LATIN CAPITAL LETTER THORN +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0101 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH MACRON +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 012F L Y C7 E7 C7 69 2A 00 # LATIN SMALL LETTER I WITH OGONEK +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 0119 L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 0117 L Y CC EC CC 65 2A 00 # LATIN SMALL LETTER E WITH DOT ABOVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 00F0 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER ETH +F1 0146 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH CEDILLA +F2 014D L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH MACRON +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 0169 L Y D7 F7 D7 75 2A 00 # LATIN SMALL LETTER U WITH TILDE +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 0173 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH OGONEK +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 00FE L Y DE FE DE FE FE FE # LATIN SMALL LETTER THORN +FF 0138 L Y FF FF FF FF FF FF # LATIN SMALL LETTER KRA diff --git a/assets/data/iso-8859-11.cmap b/assets/data/iso-8859-11.cmap new file mode 100644 index 0000000..5a14b8d --- /dev/null +++ b/assets/data/iso-8859-11.cmap @@ -0,0 +1,1508 @@ +INTERNAL +/ +N 988 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0E01 > A1 +0E02 > A2 +0E03 > A3 +0E04 > A4 +0E05 > A5 +0E06 > A6 +0E07 > A7 +0E08 > A8 +0E09 > A9 +0E0A > AA +0E0B > AB +0E0C > AC +0E0D > AD +0E0E > AE +0E0F > AF +0E10 > B0 +0E11 > B1 +0E12 > B2 +0E13 > B3 +0E14 > B4 +0E15 > B5 +0E16 > B6 +0E17 > B7 +0E18 > B8 +0E19 > B9 +0E1A > BA +0E1B > BB +0E1C > BC +0E1D > BD +0E1E > BE +0E1F > BF +0E20 > C0 +0E21 > C1 +0E22 > C2 +0E23 > C3 +0E24 > C4 +0E25 > C5 +0E26 > C6 +0E27 > C7 +0E28 > C8 +0E29 > C9 +0E2A > CA +0E2B > CB +0E2C > CC +0E2D > CD +0E2E > CE +0E2F > CF +0E30 > D0 +0E31 > D1 +0E32 > D2 +0E33 > D3 +0E34 > D4 +0E35 > D5 +0E36 > D6 +0E37 > D7 +0E38 > D8 +0E39 > D9 +0E3A > DA +0E3F > DF +0E40 > E0 +0E41 > E1 +0E42 > E2 +0E43 > E3 +0E44 > E4 +0E45 > E5 +0E46 > E6 +0E47 > E7 +0E48 > E8 +0E49 > E9 +0E4A > EA +0E4B > EB +0E4C > EC +0E4D > ED +0E4E > EE +0E4F > EF +0E50 > F0 +0E51 > F1 +0E52 > F2 +0E53 > F3 +0E54 > F4 +0E55 > F5 +0E56 > F6 +0E57 > F7 +0E58 > F8 +0E59 > F9 +0E5A > FA +0E5B > FB +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 250 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +037E > 3B +0E01 > A1 +0E02 > A2 +0E03 > A3 +0E04 > A4 +0E05 > A5 +0E06 > A6 +0E07 > A7 +0E08 > A8 +0E09 > A9 +0E0A > AA +0E0B > AB +0E0C > AC +0E0D > AD +0E0E > AE +0E0F > AF +0E10 > B0 +0E11 > B1 +0E12 > B2 +0E13 > B3 +0E14 > B4 +0E15 > B5 +0E16 > B6 +0E17 > B7 +0E18 > B8 +0E19 > B9 +0E1A > BA +0E1B > BB +0E1C > BC +0E1D > BD +0E1E > BE +0E1F > BF +0E20 > C0 +0E21 > C1 +0E22 > C2 +0E23 > C3 +0E24 > C4 +0E25 > C5 +0E26 > C6 +0E27 > C7 +0E28 > C8 +0E29 > C9 +0E2A > CA +0E2B > CB +0E2C > CC +0E2D > CD +0E2E > CE +0E2F > CF +0E30 > D0 +0E31 > D1 +0E32 > D2 +0E33 > D3 +0E34 > D4 +0E35 > D5 +0E36 > D6 +0E37 > D7 +0E38 > D8 +0E39 > D9 +0E3A > DA +0E3F > DF +0E40 > E0 +0E41 > E1 +0E42 > E2 +0E43 > E3 +0E44 > E4 +0E45 > E5 +0E46 > E6 +0E47 > E7 +0E48 > E8 +0E49 > E9 +0E4A > EA +0E4B > EB +0E4C > EC +0E4D > ED +0E4E > EE +0E4F > EF +0E50 > F0 +0E51 > F1 +0E52 > F2 +0E53 > F3 +0E54 > F4 +0E55 > F5 +0E56 > F6 +0E57 > F7 +0E58 > F8 +0E59 > F9 +0E5A > FA +0E5B > FB +1FEF > 60 +. + +NFD +/ +N 248 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0E01 +A2 > 0E02 +A3 > 0E03 +A4 > 0E04 +A5 > 0E05 +A6 > 0E06 +A7 > 0E07 +A8 > 0E08 +A9 > 0E09 +AA > 0E0A +AB > 0E0B +AC > 0E0C +AD > 0E0D +AE > 0E0E +AF > 0E0F +B0 > 0E10 +B1 > 0E11 +B2 > 0E12 +B3 > 0E13 +B4 > 0E14 +B5 > 0E15 +B6 > 0E16 +B7 > 0E17 +B8 > 0E18 +B9 > 0E19 +BA > 0E1A +BB > 0E1B +BC > 0E1C +BD > 0E1D +BE > 0E1E +BF > 0E1F +C0 > 0E20 +C1 > 0E21 +C2 > 0E22 +C3 > 0E23 +C4 > 0E24 +C5 > 0E25 +C6 > 0E26 +C7 > 0E27 +C8 > 0E28 +C9 > 0E29 +CA > 0E2A +CB > 0E2B +CC > 0E2C +CD > 0E2D +CE > 0E2E +CF > 0E2F +D0 > 0E30 +D1 > 0E31 +D2 > 0E32 +D3 > 0E33 +D4 > 0E34 +D5 > 0E35 +D6 > 0E36 +D7 > 0E37 +D8 > 0E38 +D9 > 0E39 +DA > 0E3A +DF > 0E3F +E0 > 0E40 +E1 > 0E41 +E2 > 0E42 +E3 > 0E43 +E4 > 0E44 +E5 > 0E45 +E6 > 0E46 +E7 > 0E47 +E8 > 0E48 +E9 > 0E49 +EA > 0E4A +EB > 0E4B +EC > 0E4C +ED > 0E4D +EE > 0E4E +EF > 0E4F +F0 > 0E50 +F1 > 0E51 +F2 > 0E52 +F3 > 0E53 +F4 > 0E54 +F5 > 0E55 +F6 > 0E56 +F7 > 0E57 +F8 > 0E58 +F9 > 0E59 +FA > 0E5A +FB > 0E5B +. + +NFC += NFD +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-11.cset b/assets/data/iso-8859-11.cset new file mode 100644 index 0000000..75a2702 --- /dev/null +++ b/assets/data/iso-8859-11.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-11 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0E01 l Y A1 A1 A1 A1 A1 A1 # THAI CHARACTER KO KAI +A2 0E02 l Y A2 A2 A2 A2 A2 A2 # THAI CHARACTER KHO KHAI +A3 0E03 l Y A3 A3 A3 A3 A3 A3 # THAI CHARACTER KHO KHUAT +A4 0E04 l Y A4 A4 A4 A4 A4 A4 # THAI CHARACTER KHO KHWAI +A5 0E05 l Y A5 A5 A5 A5 A5 A5 # THAI CHARACTER KHO KHON +A6 0E06 l Y A6 A6 A6 A6 A6 A6 # THAI CHARACTER KHO RAKHANG +A7 0E07 l Y A7 A7 A7 A7 A7 A7 # THAI CHARACTER NGO NGU +A8 0E08 l Y A8 A8 A8 A8 A8 A8 # THAI CHARACTER CHO CHAN +A9 0E09 l Y A9 A9 A9 A9 A9 A9 # THAI CHARACTER CHO CHING +AA 0E0A l Y AA AA AA AA AA AA # THAI CHARACTER CHO CHANG +AB 0E0B l Y AB AB AB AB AB AB # THAI CHARACTER SO SO +AC 0E0C l Y AC AC AC AC AC AC # THAI CHARACTER CHO CHOE +AD 0E0D l Y AD AD AD AD AD AD # THAI CHARACTER YO YING +AE 0E0E l Y AE AE AE AE AE AE # THAI CHARACTER DO CHADA +AF 0E0F l Y AF AF AF AF AF AF # THAI CHARACTER TO PATAK +B0 0E10 l Y B0 B0 B0 B0 B0 B0 # THAI CHARACTER THO THAN +B1 0E11 l Y B1 B1 B1 B1 B1 B1 # THAI CHARACTER THO NANGMONTHO +B2 0E12 l Y B2 B2 B2 B2 B2 B2 # THAI CHARACTER THO PHUTHAO +B3 0E13 l Y B3 B3 B3 B3 B3 B3 # THAI CHARACTER NO NEN +B4 0E14 l Y B4 B4 B4 B4 B4 B4 # THAI CHARACTER DO DEK +B5 0E15 l Y B5 B5 B5 B5 B5 B5 # THAI CHARACTER TO TAO +B6 0E16 l Y B6 B6 B6 B6 B6 B6 # THAI CHARACTER THO THUNG +B7 0E17 l Y B7 B7 B7 B7 B7 B7 # THAI CHARACTER THO THAHAN +B8 0E18 l Y B8 B8 B8 B8 B8 B8 # THAI CHARACTER THO THONG +B9 0E19 l Y B9 B9 B9 B9 B9 B9 # THAI CHARACTER NO NU +BA 0E1A l Y BA BA BA BA BA BA # THAI CHARACTER BO BAIMAI +BB 0E1B l Y BB BB BB BB BB BB # THAI CHARACTER PO PLA +BC 0E1C l Y BC BC BC BC BC BC # THAI CHARACTER PHO PHUNG +BD 0E1D l Y BD BD BD BD BD BD # THAI CHARACTER FO FA +BE 0E1E l Y BE BE BE BE BE BE # THAI CHARACTER PHO PHAN +BF 0E1F l Y BF BF BF BF BF BF # THAI CHARACTER FO FAN +C0 0E20 l Y C0 C0 C0 C0 C0 C0 # THAI CHARACTER PHO SAMPHAO +C1 0E21 l Y C1 C1 C1 C1 C1 C1 # THAI CHARACTER MO MA +C2 0E22 l Y C2 C2 C2 C2 C2 C2 # THAI CHARACTER YO YAK +C3 0E23 l Y C3 C3 C3 C3 C3 C3 # THAI CHARACTER RO RUA +C4 0E24 l Y C4 C4 C4 C4 C4 C4 # THAI CHARACTER RU +C5 0E25 l Y C5 C5 C5 C5 C5 C5 # THAI CHARACTER LO LING +C6 0E26 l Y C6 C6 C6 C6 C6 C6 # THAI CHARACTER LU +C7 0E27 l Y C7 C7 C7 C7 C7 C7 # THAI CHARACTER WO WAEN +C8 0E28 l Y C8 C8 C8 C8 C8 C8 # THAI CHARACTER SO SALA +C9 0E29 l Y C9 C9 C9 C9 C9 C9 # THAI CHARACTER SO RUSI +CA 0E2A l Y CA CA CA CA CA CA # THAI CHARACTER SO SUA +CB 0E2B l Y CB CB CB CB CB CB # THAI CHARACTER HO HIP +CC 0E2C l Y CC CC CC CC CC CC # THAI CHARACTER LO CHULA +CD 0E2D l Y CD CD CD CD CD CD # THAI CHARACTER O ANG +CE 0E2E l Y CE CE CE CE CE CE # THAI CHARACTER HO NOKHUK +CF 0E2F l Y CF CF CF CF CF CF # THAI CHARACTER PAIYANNOI +D0 0E30 l Y D0 D0 D0 D0 D0 D0 # THAI CHARACTER SARA A +D1 0E31 l M D1 D1 D1 D1 D1 D1 # THAI CHARACTER MAI HAN-AKAT +D2 0E32 l Y D2 D2 D2 D2 D2 D2 # THAI CHARACTER SARA AA +D3 0E33 l Y D3 D3 D3 D2 D2 D2 # THAI CHARACTER SARA AM +D4 0E34 l M D4 D4 D4 D4 D4 D4 # THAI CHARACTER SARA I +D5 0E35 l M D5 D5 D5 D5 D5 D5 # THAI CHARACTER SARA II +D6 0E36 l M D6 D6 D6 D6 D6 D6 # THAI CHARACTER SARA UE +D7 0E37 l M D7 D7 D7 D7 D7 D7 # THAI CHARACTER SARA UEE +D8 0E38 l M D8 D8 D8 D8 D8 D8 # THAI CHARACTER SARA U +D9 0E39 l M D9 D9 D9 D9 D9 D9 # THAI CHARACTER SARA UU +DA 0E3A l M DA DA DA DA DA DA # THAI CHARACTER PHINTHU +DB E0DB . N DB DB DB 00 00 00 # <unused> +DC E0DC . N DC DC DC 00 00 00 # <unused> +DD E0DD . N DD DD DD 00 00 00 # <unused> +DE E0DE . N DE DE DE 00 00 00 # <unused> +DF 0E3F - Y DF DF DF 00 00 00 # THAI CURRENCY SYMBOL BAHT +E0 0E40 l Y E0 E0 E0 E0 E0 E0 # THAI CHARACTER SARA E +E1 0E41 l Y E1 E1 E1 E1 E1 E1 # THAI CHARACTER SARA AE +E2 0E42 l Y E2 E2 E2 E2 E2 E2 # THAI CHARACTER SARA O +E3 0E43 l Y E3 E3 E3 E3 E3 E3 # THAI CHARACTER SARA AI MAIMUAN +E4 0E44 l Y E4 E4 E4 E4 E4 E4 # THAI CHARACTER SARA AI MAIMALAI +E5 0E45 l Y E5 E5 E5 E5 E5 E5 # THAI CHARACTER LAKKHANGYAO +E6 0E46 l Y E6 E6 E6 E6 E6 E6 # THAI CHARACTER MAIYAMOK +E7 0E47 M M E7 E7 E7 00 00 00 # THAI CHARACTER MAITAIKHU +E8 0E48 M M E8 E8 E8 00 00 00 # THAI CHARACTER MAI EK +E9 0E49 M M E9 E9 E9 00 00 00 # THAI CHARACTER MAI THO +EA 0E4A M M EA EA EA 00 00 00 # THAI CHARACTER MAI TRI +EB 0E4B M M EB EB EB 00 00 00 # THAI CHARACTER MAI CHATTAWA +EC 0E4C M M EC EC EC 00 00 00 # THAI CHARACTER THANTHAKHAT +ED 0E4D l M ED ED ED ED ED ED # THAI CHARACTER NIKHAHIT +EE 0E4E M M EE EE EE 00 00 00 # THAI CHARACTER YAMAKKAN +EF 0E4F - Y EF EF EF 00 00 00 # THAI CHARACTER FONGMAN +F0 0E50 D Y F0 F0 F0 00 00 00 # THAI DIGIT ZERO +F1 0E51 D Y F1 F1 F1 00 00 00 # THAI DIGIT ONE +F2 0E52 D Y F2 F2 F2 00 00 00 # THAI DIGIT TWO +F3 0E53 D Y F3 F3 F3 00 00 00 # THAI DIGIT THREE +F4 0E54 D Y F4 F4 F4 00 00 00 # THAI DIGIT FOUR +F5 0E55 D Y F5 F5 F5 00 00 00 # THAI DIGIT FIVE +F6 0E56 D Y F6 F6 F6 00 00 00 # THAI DIGIT SIX +F7 0E57 D Y F7 F7 F7 00 00 00 # THAI DIGIT SEVEN +F8 0E58 D Y F8 F8 F8 00 00 00 # THAI DIGIT EIGHT +F9 0E59 D Y F9 F9 F9 00 00 00 # THAI DIGIT NINE +FA 0E5A - Y FA FA FA 00 00 00 # THAI CHARACTER ANGKHANKHU +FB 0E5B - Y FB FB FB 00 00 00 # THAI CHARACTER KHOMUT +FC E0FC . N FC FC FC 00 00 00 # <unused> +FD E0FD . N FD FD FD 00 00 00 # <unused> +FE E0FE . N FE FE FE 00 00 00 # <unused> +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/iso-8859-13.cmap b/assets/data/iso-8859-13.cmap new file mode 100644 index 0000000..66e01d4 --- /dev/null +++ b/assets/data/iso-8859-13.cmap @@ -0,0 +1,1961 @@ +INTERNAL +/ +N 943 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0304 > C2 + 0308 > C4 + 030A > C5 + 0328 > C0 + . +0042 > 42 +0043 > 43 / + N 2 + 0301 > C3 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 4 + 0301 > C9 + 0304 > C7 + 0307 > CB + 0328 > C6 + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > CC + . +0048 > 48 +0049 > 49 / + N 2 + 0304 > CE + 0328 > C1 + . +004A > 4A +004B > 4B / + N 1 + 0327 > CD + . +004C > 4C / + N 1 + 0327 > CF + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 0327 > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0303 > D5 + 0304 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > AA + . +0053 > 53 / + N 2 + 0301 > DA + 030C > D0 + . +0054 > 54 +0055 > 55 / + N 3 + 0304 > DB + 0308 > DC + 0328 > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 3 + 0301 > CA + 0307 > DD + 030C > DE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0304 > E2 + 0308 > E4 + 030A > E5 + 0328 > E0 + . +0062 > 62 +0063 > 63 / + N 2 + 0301 > E3 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 4 + 0301 > E9 + 0304 > E7 + 0307 > EB + 0328 > E6 + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > EC + . +0068 > 68 +0069 > 69 / + N 2 + 0304 > EE + 0328 > E1 + . +006A > 6A +006B > 6B / + N 1 + 0327 > ED + . +006C > 6C / + N 1 + 0327 > EF + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 0327 > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0303 > F5 + 0304 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > BA + . +0073 > 73 / + N 2 + 0301 > FA + 030C > F0 + . +0074 > 74 +0075 > 75 / + N 3 + 0304 > FB + 0308 > FC + 0328 > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 3 + 0301 > EA + 0307 > FD + 030C > FE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > C5 +00C6 > AF +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > D3 +00D4 > 4F # unsup: 004F 0302 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > A8 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > E5 +00E6 > BF +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > F3 +00F4 > 6F # unsup: 006F 0302 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > B8 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > C2 +0101 > E2 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > C0 +0105 > E0 +0106 > C3 +0107 > E3 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > C7 +0113 > E7 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > CB +0117 > EB +0118 > C6 +0119 > E6 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > CC +0123 > EC +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > CE +012B > EE +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > C1 +012F > E1 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > CD +0137 > ED +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > CF +013C > EF +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0141 > D9 +0142 > F9 +0143 > D1 +0144 > F1 +0145 > D2 +0146 > F2 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > D4 +014D > F4 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > AA +0157 > BA +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > DA +015B > FA +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > D0 +0161 > F0 +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > DB +016B > FB +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > D8 +0173 > F8 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > CA +017A > EA +017B > DD +017C > FD +017D > DE +017E > FE +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 DE # compat +01C5 > 44 FE # compat +01C6 > 64 FE # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > AF # unsup: 00C6 0304 +01E3 > BF # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > AF # unsup: 00C6 0301 +01FD > BF # unsup: 00E6 0301 +01FE > A8 # unsup: 00D8 0301 +01FF > B8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > C7 # unsup: 0112 0300 +1E15 > E7 # unsup: 0113 0300 +1E16 > C7 # unsup: 0112 0301 +1E17 > E7 # unsup: 0113 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > D4 # unsup: 014C 0300 +1E51 > F4 # unsup: 014D 0300 +1E52 > D4 # unsup: 014C 0301 +1E53 > F4 # unsup: 014D 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > DA # unsup: 015A 0307 +1E65 > FA # unsup: 015B 0307 +1E66 > D0 # unsup: 0160 0307 +1E67 > F0 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > DB # unsup: 016A 0308 +1E7B > FB # unsup: 016B 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2019 > FF +201C > B4 +201D > A1 +201E > A5 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE4 > A6 # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0304 > C2 + 0308 > C4 + 030A > C5 + 0328 > C0 + . +0042 > 42 +0043 > 43 / + N 2 + 0301 > C3 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 4 + 0301 > C9 + 0304 > C7 + 0307 > CB + 0328 > C6 + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > CC + . +0048 > 48 +0049 > 49 / + N 2 + 0304 > CE + 0328 > C1 + . +004A > 4A +004B > 4B / + N 1 + 0327 > CD + . +004C > 4C / + N 1 + 0327 > CF + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 0327 > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0303 > D5 + 0304 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > AA + . +0053 > 53 / + N 2 + 0301 > DA + 030C > D0 + . +0054 > 54 +0055 > 55 / + N 3 + 0304 > DB + 0308 > DC + 0328 > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 3 + 0301 > CA + 0307 > DD + 030C > DE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0304 > E2 + 0308 > E4 + 030A > E5 + 0328 > E0 + . +0062 > 62 +0063 > 63 / + N 2 + 0301 > E3 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 4 + 0301 > E9 + 0304 > E7 + 0307 > EB + 0328 > E6 + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > EC + . +0068 > 68 +0069 > 69 / + N 2 + 0304 > EE + 0328 > E1 + . +006A > 6A +006B > 6B / + N 1 + 0327 > ED + . +006C > 6C / + N 1 + 0327 > EF + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 0327 > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0303 > F5 + 0304 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > BA + . +0073 > 73 / + N 2 + 0301 > FA + 030C > F0 + . +0074 > 74 +0075 > 75 / + N 3 + 0304 > FB + 0308 > FC + 0328 > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 3 + 0301 > EA + 0307 > FD + 030C > FE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A6 > A6 +00A7 > A7 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C4 > C4 +00C5 > C5 +00C6 > AF +00C9 > C9 +00D3 > D3 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > A8 +00DC > DC +00DF > DF +00E4 > E4 +00E5 > E5 +00E6 > BF +00E9 > E9 +00F3 > F3 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > B8 +00FC > FC +0100 > C2 +0101 > E2 +0104 > C0 +0105 > E0 +0106 > C3 +0107 > E3 +010C > C8 +010D > E8 +0112 > C7 +0113 > E7 +0116 > CB +0117 > EB +0118 > C6 +0119 > E6 +0122 > CC +0123 > EC +012A > CE +012B > EE +012E > C1 +012F > E1 +0136 > CD +0137 > ED +013B > CF +013C > EF +0141 > D9 +0142 > F9 +0143 > D1 +0144 > F1 +0145 > D2 +0146 > F2 +014C > D4 +014D > F4 +0156 > AA +0157 > BA +015A > DA +015B > FA +0160 > D0 +0161 > F0 +016A > DB +016B > FB +0172 > D8 +0173 > F8 +0179 > CA +017A > EA +017B > DD +017C > FD +017D > DE +017E > FE +037E > 3B +0387 > B7 +1FEF > 60 +2019 > FF +201C > B4 +201D > A1 +201E > A5 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 201D +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 201E +A6 > 00A6 +A7 > 00A7 +A8 > 00D8 +A9 > 00A9 +AA > 0052 0327 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00C6 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 201C +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00F8 +B9 > 00B9 +BA > 0072 0327 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00E6 +C0 > 0041 0328 +C1 > 0049 0328 +C2 > 0041 0304 +C3 > 0043 0301 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 0045 0328 +C7 > 0045 0304 +C8 > 0043 030C +C9 > 0045 0301 +CA > 005A 0301 +CB > 0045 0307 +CC > 0047 0327 +CD > 004B 0327 +CE > 0049 0304 +CF > 004C 0327 +D0 > 0053 030C +D1 > 004E 0301 +D2 > 004E 0327 +D3 > 004F 0301 +D4 > 004F 0304 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 0055 0328 +D9 > 0141 +DA > 0053 0301 +DB > 0055 0304 +DC > 0055 0308 +DD > 005A 0307 +DE > 005A 030C +DF > 00DF +E0 > 0061 0328 +E1 > 0069 0328 +E2 > 0061 0304 +E3 > 0063 0301 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 0065 0328 +E7 > 0065 0304 +E8 > 0063 030C +E9 > 0065 0301 +EA > 007A 0301 +EB > 0065 0307 +EC > 0067 0327 +ED > 006B 0327 +EE > 0069 0304 +EF > 006C 0327 +F0 > 0073 030C +F1 > 006E 0301 +F2 > 006E 0327 +F3 > 006F 0301 +F4 > 006F 0304 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 0075 0328 +F9 > 0142 +FA > 0073 0301 +FB > 0075 0304 +FC > 0075 0308 +FD > 007A 0307 +FE > 007A 030C +FF > 2019 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 201D +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 201E +A6 > 00A6 +A7 > 00A7 +A8 > 00D8 +A9 > 00A9 +AA > 0156 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00C6 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 201C +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00F8 +B9 > 00B9 +BA > 0157 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00E6 +C0 > 0104 +C1 > 012E +C2 > 0100 +C3 > 0106 +C4 > 00C4 +C5 > 00C5 +C6 > 0118 +C7 > 0112 +C8 > 010C +C9 > 00C9 +CA > 0179 +CB > 0116 +CC > 0122 +CD > 0136 +CE > 012A +CF > 013B +D0 > 0160 +D1 > 0143 +D2 > 0145 +D3 > 00D3 +D4 > 014C +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 0172 +D9 > 0141 +DA > 015A +DB > 016A +DC > 00DC +DD > 017B +DE > 017D +DF > 00DF +E0 > 0105 +E1 > 012F +E2 > 0101 +E3 > 0107 +E4 > 00E4 +E5 > 00E5 +E6 > 0119 +E7 > 0113 +E8 > 010D +E9 > 00E9 +EA > 017A +EB > 0117 +EC > 0123 +ED > 0137 +EE > 012B +EF > 013C +F0 > 0161 +F1 > 0144 +F2 > 0146 +F3 > 00F3 +F4 > 014D +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 0173 +F9 > 0142 +FA > 015B +FB > 016B +FC > 00FC +FD > 017C +FE > 017E +FF > 2019 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-13.cset b/assets/data/iso-8859-13.cset new file mode 100644 index 0000000..512cf60 --- /dev/null +++ b/assets/data/iso-8859-13.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-13 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 201D - Y A1 A1 A1 00 00 00 # RIGHT DOUBLE QUOTATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 201E - Y A5 A5 A5 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00D8 L Y A8 B8 A8 A8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 0156 L Y AA BA AA 52 72 72 # LATIN CAPITAL LETTER R WITH CEDILLA +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00C6 L Y AF BF AF AF 2A 00 # LATIN CAPITAL LETTER AE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 201C - Y B4 B4 B4 00 00 00 # LEFT DOUBLE QUOTATION MARK +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00F8 L Y A8 B8 A8 B8 2A 00 # LATIN SMALL LETTER O WITH STROKE +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 0157 L Y AA BA AA 72 72 72 # LATIN SMALL LETTER R WITH CEDILLA +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00E6 L Y AF BF AF BF 2A 00 # LATIN SMALL LETTER AE +C0 0104 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +C1 012E L Y C1 E1 C1 49 2A 00 # LATIN CAPITAL LETTER I WITH OGONEK +C2 0100 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH MACRON +C3 0106 L Y C3 E3 C3 43 63 63 # LATIN CAPITAL LETTER C WITH ACUTE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 0118 L Y C6 E6 C6 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +C7 0112 L Y C7 E7 C7 45 2A 00 # LATIN CAPITAL LETTER E WITH MACRON +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0179 L Y CA EA CA 5A 7A 7A # LATIN CAPITAL LETTER Z WITH ACUTE +CB 0116 L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DOT ABOVE +CC 0122 L Y CC EC CC 47 67 67 # LATIN CAPITAL LETTER G WITH CEDILLA +CD 0136 L Y CD ED CD 4B 6B 6B # LATIN CAPITAL LETTER K WITH CEDILLA +CE 012A L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH MACRON +CF 013B L Y CF EF CF 4C 6C 6C # LATIN CAPITAL LETTER L WITH CEDILLA +D0 0160 L Y D0 F0 D0 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +D1 0143 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH ACUTE +D2 0145 L Y D2 F2 D2 4E 6E 6E # LATIN CAPITAL LETTER N WITH CEDILLA +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 014C L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH MACRON +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 0172 L Y D8 F8 D8 55 2A 00 # LATIN CAPITAL LETTER U WITH OGONEK +D9 0141 L Y D9 F9 D9 D9 F9 F9 # LATIN CAPITAL LETTER L WITH STROKE +DA 015A L Y DA FA DA 53 73 73 # LATIN CAPITAL LETTER S WITH ACUTE +DB 016A L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH MACRON +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 017B L Y DD FD DD 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +DE 017D L Y DE FE DE 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0105 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +E1 012F L Y C1 E1 C1 69 2A 00 # LATIN SMALL LETTER I WITH OGONEK +E2 0101 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH MACRON +E3 0107 L Y C3 E3 C3 63 63 63 # LATIN SMALL LETTER C WITH ACUTE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 0119 L Y C6 E6 C6 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +E7 0113 L Y C7 E7 C7 65 2A 00 # LATIN SMALL LETTER E WITH MACRON +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 017A L Y CA EA CA 7A 7A 7A # LATIN SMALL LETTER Z WITH ACUTE +EB 0117 L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DOT ABOVE +EC 0123 L Y CC EC CC 67 67 67 # LATIN SMALL LETTER G WITH CEDILLA +ED 0137 L Y CD ED CD 6B 6B 6B # LATIN SMALL LETTER K WITH CEDILLA +EE 012B L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH MACRON +EF 013C L Y CF EF CF 6C 6C 6C # LATIN SMALL LETTER L WITH CEDILLA +F0 0161 L Y D0 F0 D0 73 73 73 # LATIN SMALL LETTER S WITH CARON +F1 0144 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH ACUTE +F2 0146 L Y D2 F2 D2 6E 6E 6E # LATIN SMALL LETTER N WITH CEDILLA +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 014D L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH MACRON +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 0173 L Y D8 F8 D8 75 2A 00 # LATIN SMALL LETTER U WITH OGONEK +F9 0142 L Y D9 F9 D9 F9 F9 F9 # LATIN SMALL LETTER L WITH STROKE +FA 015B L Y DA FA DA 73 73 73 # LATIN SMALL LETTER S WITH ACUTE +FB 016B L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH MACRON +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 017C L Y DD FD DD 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +FE 017E L Y DE FE DE 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +FF 2019 - Y FF FF FF 00 00 00 # RIGHT SINGLE QUOTATION MARK diff --git a/assets/data/iso-8859-14.cmap b/assets/data/iso-8859-14.cmap new file mode 100644 index 0000000..ef6006c --- /dev/null +++ b/assets/data/iso-8859-14.cmap @@ -0,0 +1,2010 @@ +INTERNAL +/ +N 913 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 / + N 1 + 0307 > A1 + . +0043 > 43 / + N 2 + 0307 > A4 + 0327 > C7 + . +0044 > 44 / + N 1 + 0307 > A6 + . +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 / + N 1 + 0307 > B0 + . +0047 > 47 / + N 1 + 0307 > B2 + . +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D / + N 1 + 0307 > B4 + . +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 / + N 1 + 0307 > B7 + . +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 0307 > BB + . +0054 > 54 / + N 1 + 0307 > D7 + . +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 / + N 4 + 0300 > A8 + 0301 > AA + 0302 > D0 + 0308 > BD + . +0058 > 58 +0059 > 59 / + N 4 + 0300 > AC + 0301 > DD + 0302 > DE + 0308 > AF + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 / + N 1 + 0307 > A2 + . +0063 > 63 / + N 2 + 0307 > A5 + 0327 > E7 + . +0064 > 64 / + N 1 + 0307 > AB + . +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 / + N 1 + 0307 > B1 + . +0067 > 67 / + N 1 + 0307 > B3 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D / + N 1 + 0307 > B5 + . +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 / + N 1 + 0307 > B9 + . +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 0307 > BF + . +0074 > 74 / + N 1 + 0307 > F7 + . +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 / + N 4 + 0300 > B8 + 0301 > BA + 0302 > F0 + 0308 > BE + . +0078 > 78 +0079 > 79 / + N 4 + 0300 > BC + 0301 > FD + 0302 > FE + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A7 > A7 +00A9 > A9 +00AD > AD +00AE > AE +00B6 > B6 +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > A4 +010B > A5 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > B2 +0121 > B3 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > D0 +0175 > F0 +0176 > DE +0177 > FE +0178 > AF +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > A1 +1E03 > A2 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > A6 +1E0B > AB +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > B0 +1E1F > B1 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > B4 +1E41 > B5 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > B7 +1E57 > B9 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > BB +1E61 > BF +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > D7 +1E6B > F7 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > A8 +1E81 > B8 +1E82 > AA +1E83 > BA +1E84 > BD +1E85 > BE +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > AC +1EF3 > BC +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE1 > A3 # compat +. + +STRICT +/ +N 258 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 / + N 1 + 0307 > A1 + . +0043 > 43 / + N 2 + 0307 > A4 + 0327 > C7 + . +0044 > 44 / + N 1 + 0307 > A6 + . +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 / + N 1 + 0307 > B0 + . +0047 > 47 / + N 1 + 0307 > B2 + . +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D / + N 1 + 0307 > B4 + . +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 / + N 1 + 0307 > B7 + . +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 0307 > BB + . +0054 > 54 / + N 1 + 0307 > D7 + . +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 / + N 4 + 0300 > A8 + 0301 > AA + 0302 > D0 + 0308 > BD + . +0058 > 58 +0059 > 59 / + N 4 + 0300 > AC + 0301 > DD + 0302 > DE + 0308 > AF + . +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 / + N 1 + 0307 > A2 + . +0063 > 63 / + N 2 + 0307 > A5 + 0327 > E7 + . +0064 > 64 / + N 1 + 0307 > AB + . +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 / + N 1 + 0307 > B1 + . +0067 > 67 / + N 1 + 0307 > B3 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D / + N 1 + 0307 > B5 + . +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 / + N 1 + 0307 > B9 + . +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 0307 > BF + . +0074 > 74 / + N 1 + 0307 > F7 + . +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 / + N 4 + 0300 > B8 + 0301 > BA + 0302 > F0 + 0308 > BE + . +0078 > 78 +0079 > 79 / + N 4 + 0300 > BC + 0301 > FD + 0302 > FE + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A7 > A7 +00A9 > A9 +00AD > AD +00AE > AE +00B6 > B6 +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FF > FF +010A > A4 +010B > A5 +0120 > B2 +0121 > B3 +0174 > D0 +0175 > F0 +0176 > DE +0177 > FE +0178 > AF +037E > 3B +1E02 > A1 +1E03 > A2 +1E0A > A6 +1E0B > AB +1E1E > B0 +1E1F > B1 +1E40 > B4 +1E41 > B5 +1E56 > B7 +1E57 > B9 +1E60 > BB +1E61 > BF +1E6A > D7 +1E6B > F7 +1E80 > A8 +1E81 > B8 +1E82 > AA +1E83 > BA +1E84 > BD +1E85 > BE +1EF2 > AC +1EF3 > BC +1FEF > 60 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0042 0307 +A2 > 0062 0307 +A3 > 00A3 +A4 > 0043 0307 +A5 > 0063 0307 +A6 > 0044 0307 +A7 > 00A7 +A8 > 0057 0300 +A9 > 00A9 +AA > 0057 0301 +AB > 0064 0307 +AC > 0059 0300 +AD > 00AD +AE > 00AE +AF > 0059 0308 +B0 > 0046 0307 +B1 > 0066 0307 +B2 > 0047 0307 +B3 > 0067 0307 +B4 > 004D 0307 +B5 > 006D 0307 +B6 > 00B6 +B7 > 0050 0307 +B8 > 0077 0300 +B9 > 0070 0307 +BA > 0077 0301 +BB > 0053 0307 +BC > 0079 0300 +BD > 0057 0308 +BE > 0077 0308 +BF > 0073 0307 +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 0057 0302 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 0054 0307 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0059 0301 +DE > 0059 0302 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 0077 0302 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 0074 0307 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0079 0301 +FE > 0079 0302 +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 1E02 +A2 > 1E03 +A3 > 00A3 +A4 > 010A +A5 > 010B +A6 > 1E0A +A7 > 00A7 +A8 > 1E80 +A9 > 00A9 +AA > 1E82 +AB > 1E0B +AC > 1EF2 +AD > 00AD +AE > 00AE +AF > 0178 +B0 > 1E1E +B1 > 1E1F +B2 > 0120 +B3 > 0121 +B4 > 1E40 +B5 > 1E41 +B6 > 00B6 +B7 > 1E56 +B8 > 1E81 +B9 > 1E57 +BA > 1E83 +BB > 1E60 +BC > 1EF3 +BD > 1E84 +BE > 1E85 +BF > 1E61 +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 0174 +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 1E6A +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 00DD +DE > 0176 +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 0175 +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 1E6B +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 00FD +FE > 0177 +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-14.cset b/assets/data/iso-8859-14.cset new file mode 100644 index 0000000..c37a862 --- /dev/null +++ b/assets/data/iso-8859-14.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-14 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 1E02 L Y A1 A2 A1 42 62 62 # LATIN CAPITAL LETTER B WITH DOT ABOVE +A2 1E03 L Y A1 A2 A1 62 62 62 # LATIN SMALL LETTER B WITH DOT ABOVE +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 010A L Y A4 A5 A4 43 63 63 # LATIN CAPITAL LETTER C WITH DOT ABOVE +A5 010B L Y A4 A5 A4 63 63 63 # LATIN SMALL LETTER C WITH DOT ABOVE +A6 1E0A L Y A6 AB A6 44 64 64 # LATIN CAPITAL LETTER D WITH DOT ABOVE +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 1E80 L Y A8 B8 A8 57 77 77 # LATIN CAPITAL LETTER W WITH GRAVE +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 1E82 L Y AA BA AA 57 77 77 # LATIN CAPITAL LETTER W WITH ACUTE +AB 1E0B L Y A6 AB A6 64 64 64 # LATIN SMALL LETTER D WITH DOT ABOVE +AC 1EF2 L Y AC BC AC 59 79 79 # LATIN CAPITAL LETTER Y WITH GRAVE +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 0178 L Y AF FF AF 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +B0 1E1E L Y B0 B1 B0 46 66 66 # LATIN CAPITAL LETTER F WITH DOT ABOVE +B1 1E1F L Y B0 B1 B0 66 66 66 # LATIN SMALL LETTER F WITH DOT ABOVE +B2 0120 L Y B2 B3 B2 47 67 67 # LATIN CAPITAL LETTER G WITH DOT ABOVE +B3 0121 L Y B2 B3 B2 67 67 67 # LATIN SMALL LETTER G WITH DOT ABOVE +B4 1E40 L Y B4 B5 B4 4D 6D 6D # LATIN CAPITAL LETTER M WITH DOT ABOVE +B5 1E41 L Y B4 B5 B4 6D 6D 6D # LATIN SMALL LETTER M WITH DOT ABOVE +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 1E56 L Y B7 B9 B7 50 70 70 # LATIN CAPITAL LETTER P WITH DOT ABOVE +B8 1E81 L Y A8 B8 A8 77 77 77 # LATIN SMALL LETTER W WITH GRAVE +B9 1E57 L Y B7 B9 B7 70 70 70 # LATIN SMALL LETTER P WITH DOT ABOVE +BA 1E83 L Y AA BA AA 77 77 77 # LATIN SMALL LETTER W WITH ACUTE +BB 1E60 L Y BB BF BB 53 73 73 # LATIN CAPITAL LETTER S WITH DOT ABOVE +BC 1EF3 L Y AC BC AC 79 79 79 # LATIN SMALL LETTER Y WITH GRAVE +BD 1E84 L Y BD BE BD 57 77 77 # LATIN CAPITAL LETTER W WITH DIAERESIS +BE 1E85 L Y BD BE BD 77 77 77 # LATIN SMALL LETTER W WITH DIAERESIS +BF 1E61 L Y BB BF BB 73 73 73 # LATIN SMALL LETTER S WITH DOT ABOVE +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 0174 L Y D0 F0 D0 57 77 77 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 1E6A L Y D7 F7 D7 54 74 74 # LATIN CAPITAL LETTER T WITH DOT ABOVE +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 0176 L Y DE FE DE 59 79 79 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 0175 L Y D0 F0 D0 77 77 77 # LATIN SMALL LETTER W WITH CIRCUMFLEX +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 1E6B L Y D7 F7 D7 74 74 74 # LATIN SMALL LETTER T WITH DOT ABOVE +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 0177 L Y DE FE DE 79 79 79 # LATIN SMALL LETTER Y WITH CIRCUMFLEX +FF 00FF L Y AF FF AF 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/iso-8859-15.cmap b/assets/data/iso-8859-15.cmap new file mode 100644 index 0000000..b028cc6 --- /dev/null +++ b/assets/data/iso-8859-15.cmap @@ -0,0 +1,1934 @@ +INTERNAL +/ +N 944 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > A6 + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 2 + 0301 > DD + 0308 > BE + . +005A > 5A / + N 1 + 030C > B4 + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > A8 + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A / + N 1 + 030C > B8 + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A5 > A5 +00A7 > A7 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B9 > B9 +00BA > BA +00BB > BB +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > BC +0153 > BD +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > A6 +0161 > A8 +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > BE +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > B4 +017E > B8 +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 B4 # compat +01C5 > 44 B8 # compat +01C6 > 64 B8 # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > A6 # unsup: 0160 0307 +1E67 > A8 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > A4 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 030C > A6 + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 2 + 0301 > DD + 0308 > BE + . +005A > 5A / + N 1 + 030C > B4 + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 030C > A8 + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 2 + 0301 > FD + 0308 > FF + . +007A > 7A / + N 1 + 030C > B8 + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A5 > A5 +00A7 > A7 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B9 > B9 +00BA > BA +00BB > BB +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D0 > D0 +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > DD +00DE > DE +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F0 > F0 +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > FD +00FE > FE +00FF > FF +0152 > BC +0153 > BD +0160 > A6 +0161 > A8 +0178 > BE +017D > B4 +017E > B8 +037E > 3B +0387 > B7 +1FEF > 60 +20AC > A4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 20AC +A5 > 00A5 +A6 > 0053 030C +A7 > 00A7 +A8 > 0073 030C +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 005A 030C +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 007A 030C +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 0152 +BD > 0153 +BE > 0059 0308 +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 00D0 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0059 0301 +DE > 00DE +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 00F0 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0079 0301 +FE > 00FE +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 20AC +A5 > 00A5 +A6 > 0160 +A7 > 00A7 +A8 > 0161 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 017D +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 017E +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 0152 +BD > 0153 +BE > 0178 +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 00D0 +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 00DD +DE > 00DE +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 00F0 +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 00FD +FE > 00FE +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-15.cset b/assets/data/iso-8859-15.cset new file mode 100644 index 0000000..8bf89d4 --- /dev/null +++ b/assets/data/iso-8859-15.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-15 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 20AC - Y A4 A4 A4 00 00 00 # EURO SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 0160 L Y A6 A8 A6 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 0161 L Y A6 A8 A6 73 73 73 # LATIN SMALL LETTER S WITH CARON +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 017D L Y B4 B8 B4 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 017E L Y B4 B8 B4 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 0152 L Y BC BD BC BC 2A 00 # LATIN CAPITAL LIGATURE OE +BD 0153 L Y BC BD BC BD 2A 00 # LATIN SMALL LIGATURE OE +BE 0178 L Y BE FF BE 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 00D0 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER ETH +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 00DE L Y DE FE DE DE FE FE # LATIN CAPITAL LETTER THORN +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 00F0 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER ETH +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 00FE L Y DE FE DE FE FE FE # LATIN SMALL LETTER THORN +FF 00FF L Y BE FF BE 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/iso-8859-16.cmap b/assets/data/iso-8859-16.cmap new file mode 100644 index 0000000..fbfbd33 --- /dev/null +++ b/assets/data/iso-8859-16.cmap @@ -0,0 +1,1951 @@ +INTERNAL +/ +N 921 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C5 + 030C > B2 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 5 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + 0328 > DD + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0301 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 3 + 0301 > D7 + 030C > A6 + 0326 > AA + . +0054 > 54 / + N 1 + 0326 > DE + . +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + 030B > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > BE + . +005A > 5A / + N 3 + 0301 > AC + 0307 > AF + 030C > B4 + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > A2 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E5 + 030C > B9 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 5 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + 0328 > FD + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0301 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 3 + 0301 > F7 + 030C > A8 + 0326 > BA + . +0074 > 74 / + N 1 + 0326 > FE + . +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + 030B > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A / + N 3 + 0301 > AE + 0307 > BF + 030C > B8 + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > A7 +00A9 > A9 +00AB > AB +00AD > AD +00B0 > B0 +00B1 > B1 +00B6 > B6 +00B7 > B7 +00BB > BB +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > 41 # unsup: 0041 030A +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > 4E # unsup: 004E 0303 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > 4F # unsup: 004F 0303 +00D6 > D6 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > 61 # unsup: 0061 030A +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > 6E # unsup: 006E 0303 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > 6F # unsup: 006F 0303 +00F6 > F6 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > C3 +0103 > E3 +0104 > A1 +0105 > A2 +0106 > C5 +0107 > E5 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > B2 +010D > B9 +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0110 > D0 +0111 > F0 +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > DD +0119 > FD +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > D5 +0151 > F5 +0152 > BC +0153 > BD +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > D7 +015B > F7 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > A6 +0161 > A8 +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > D8 +0171 > F8 +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > BE +0179 > AC +017A > AE +017B > AF +017C > BF +017D > B4 +017E > B8 +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 B4 # compat +01C5 > 44 B8 # compat +01C6 > 64 B8 # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > AA +0219 > BA +021A > DE +021B > FE +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > D7 # unsup: 015A 0307 +1E65 > F7 # unsup: 015B 0307 +1E66 > A6 # unsup: 0160 0307 +1E67 > A8 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > C3 # unsup: 0102 0301 +1EAF > E3 # unsup: 0103 0301 +1EB0 > C3 # unsup: 0102 0300 +1EB1 > E3 # unsup: 0103 0300 +1EB2 > C3 # unsup: 0102 0309 +1EB3 > E3 # unsup: 0103 0309 +1EB4 > C3 # unsup: 0102 0303 +1EB5 > E3 # unsup: 0103 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +201D > B5 +201E > A5 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > A4 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C5 + 030C > B2 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 5 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + 0328 > DD + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 4 + 0300 > CC + 0301 > CD + 0302 > CE + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0301 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 3 + 0301 > D7 + 030C > A6 + 0326 > AA + . +0054 > 54 / + N 1 + 0326 > DE + . +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + 030B > D8 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0308 > BE + . +005A > 5A / + N 3 + 0301 > AC + 0307 > AF + 030C > B4 + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > A2 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E5 + 030C > B9 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 5 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + 0328 > FD + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0301 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 3 + 0301 > F7 + 030C > A8 + 0326 > BA + . +0074 > 74 / + N 1 + 0326 > FE + . +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + 030B > F8 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A / + N 3 + 0301 > AE + 0307 > BF + 030C > B8 + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > A7 +00A9 > A9 +00AB > AB +00AD > AD +00B0 > B0 +00B1 > B1 +00B6 > B6 +00B7 > B7 +00BB > BB +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C4 > C4 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D6 > D6 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E4 > E4 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F6 > F6 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FF > FF +0102 > C3 +0103 > E3 +0104 > A1 +0105 > A2 +0106 > C5 +0107 > E5 +010C > B2 +010D > B9 +0110 > D0 +0111 > F0 +0118 > DD +0119 > FD +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0150 > D5 +0151 > F5 +0152 > BC +0153 > BD +015A > D7 +015B > F7 +0160 > A6 +0161 > A8 +0170 > D8 +0171 > F8 +0178 > BE +0179 > AC +017A > AE +017B > AF +017C > BF +017D > B4 +017E > B8 +0218 > AA +0219 > BA +021A > DE +021B > FE +037E > 3B +0387 > B7 +1FEF > 60 +201D > B5 +201E > A5 +20AC > A4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0041 0328 +A2 > 0061 0328 +A3 > 0141 +A4 > 20AC +A5 > 201E +A6 > 0053 030C +A7 > 00A7 +A8 > 0073 030C +A9 > 00A9 +AA > 0053 0326 +AB > 00AB +AC > 005A 0301 +AD > 00AD +AE > 007A 0301 +AF > 005A 0307 +B0 > 00B0 +B1 > 00B1 +B2 > 0043 030C +B3 > 0142 +B4 > 005A 030C +B5 > 201D +B6 > 00B6 +B7 > 00B7 +B8 > 007A 030C +B9 > 0063 030C +BA > 0073 0326 +BB > 00BB +BC > 0152 +BD > 0153 +BE > 0059 0308 +BF > 007A 0307 +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0306 +C4 > 0041 0308 +C5 > 0043 0301 +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 0110 +D1 > 004E 0301 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 030B +D6 > 004F 0308 +D7 > 0053 0301 +D8 > 0055 030B +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0045 0328 +DE > 0054 0326 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0306 +E4 > 0061 0308 +E5 > 0063 0301 +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 0111 +F1 > 006E 0301 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 030B +F6 > 006F 0308 +F7 > 0073 0301 +F8 > 0075 030B +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0065 0328 +FE > 0074 0326 +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0104 +A2 > 0105 +A3 > 0141 +A4 > 20AC +A5 > 201E +A6 > 0160 +A7 > 00A7 +A8 > 0161 +A9 > 00A9 +AA > 0218 +AB > 00AB +AC > 0179 +AD > 00AD +AE > 017A +AF > 017B +B0 > 00B0 +B1 > 00B1 +B2 > 010C +B3 > 0142 +B4 > 017D +B5 > 201D +B6 > 00B6 +B7 > 00B7 +B8 > 017E +B9 > 010D +BA > 0219 +BB > 00BB +BC > 0152 +BD > 0153 +BE > 0178 +BF > 017C +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 0102 +C4 > 00C4 +C5 > 0106 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 0110 +D1 > 0143 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 0150 +D6 > 00D6 +D7 > 015A +D8 > 0170 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 0118 +DE > 021A +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 0103 +E4 > 00E4 +E5 > 0107 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 0111 +F1 > 0144 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 0151 +F6 > 00F6 +F7 > 015B +F8 > 0171 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 0119 +FE > 021B +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-16.cset b/assets/data/iso-8859-16.cset new file mode 100644 index 0000000..56a71ee --- /dev/null +++ b/assets/data/iso-8859-16.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-16 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0104 L Y A1 A2 A1 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +A2 0105 L Y A1 A2 A1 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +A3 0141 L Y A3 B3 A3 A3 B3 B3 # LATIN CAPITAL LETTER L WITH STROKE +A4 20AC - Y A4 A4 A4 00 00 00 # EURO SIGN +A5 201E - Y A5 A5 A5 00 00 00 # DOUBLE LOW-9 QUOTATION MARK +A6 0160 L Y A6 A8 A6 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 0161 L Y A6 A8 A6 73 73 73 # LATIN SMALL LETTER S WITH CARON +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 0218 L Y AA BA AA 53 73 73 # LATIN CAPITAL LETTER S WITH COMMA BELOW +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 0179 L Y AC AE AC 5A 7A 7A # LATIN CAPITAL LETTER Z WITH ACUTE +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 017A L Y AC AE AC 7A 7A 7A # LATIN SMALL LETTER Z WITH ACUTE +AF 017B L Y AF BF AF 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 010C L Y B2 B9 B2 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +B3 0142 L Y A3 B3 A3 B3 B3 B3 # LATIN SMALL LETTER L WITH STROKE +B4 017D L Y B4 B8 B4 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +B5 201D - Y B5 B5 B5 00 00 00 # RIGHT DOUBLE QUOTATION MARK +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 017E L Y B4 B8 B4 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +B9 010D L Y B2 B9 B2 63 63 63 # LATIN SMALL LETTER C WITH CARON +BA 0219 L Y AA BA AA 73 73 73 # LATIN SMALL LETTER S WITH COMMA BELOW +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 0152 L Y BC BD BC BC 2A 00 # LATIN CAPITAL LIGATURE OE +BD 0153 L Y BC BD BC BD 2A 00 # LATIN SMALL LIGATURE OE +BE 0178 L Y BE FF BE 59 79 79 # LATIN CAPITAL LETTER Y WITH DIAERESIS +BF 017C L Y AF BF AF 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 0102 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH BREVE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 0106 L Y C5 E5 C5 43 63 63 # LATIN CAPITAL LETTER C WITH ACUTE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 0110 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER D WITH STROKE +D1 0143 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH ACUTE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 0150 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 015A L Y D7 F7 D7 53 73 73 # LATIN CAPITAL LETTER S WITH ACUTE +D8 0170 L Y D8 F8 D8 55 2A 00 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 0118 L Y DD FD DD 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +DE 021A L Y DE FE DE 54 74 74 # LATIN CAPITAL LETTER T WITH COMMA BELOW +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 0103 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH BREVE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 0107 L Y C5 E5 C5 63 63 63 # LATIN SMALL LETTER C WITH ACUTE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 0111 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER D WITH STROKE +F1 0144 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH ACUTE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 0151 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 015B L Y D7 F7 D7 73 73 73 # LATIN SMALL LETTER S WITH ACUTE +F8 0171 L Y D8 F8 D8 75 2A 00 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 0119 L Y DD FD DD 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +FE 021B L Y DE FE DE 74 74 74 # LATIN SMALL LETTER T WITH COMMA BELOW +FF 00FF L Y BE FF BE 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/iso-8859-2.cmap b/assets/data/iso-8859-2.cmap new file mode 100644 index 0000000..811dd83 --- /dev/null +++ b/assets/data/iso-8859-2.cmap @@ -0,0 +1,1983 @@ +INTERNAL +/ +N 925 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 5 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C6 + 030C > C8 + 0327 > C7 + . +0044 > 44 / + N 1 + 030C > CF + . +0045 > 45 / + N 4 + 0301 > C9 + 0308 > CB + 030C > CC + 0328 > CA + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 2 + 0301 > CD + 0302 > CE + . +004A > 4A +004B > 4B +004C > 4C / + N 2 + 0301 > C5 + 030C > A5 + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 030C > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 2 + 0301 > C0 + 030C > D8 + . +0053 > 53 / + N 3 + 0301 > A6 + 030C > A9 + 0327 > AA + . +0054 > 54 / + N 2 + 030C > AB + 0327 > DE + . +0055 > 55 / + N 4 + 0301 > DA + 0308 > DC + 030A > D9 + 030B > DB + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 3 + 0301 > AC + 0307 > AF + 030C > AE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 5 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E6 + 030C > E8 + 0327 > E7 + . +0064 > 64 / + N 1 + 030C > EF + . +0065 > 65 / + N 4 + 0301 > E9 + 0308 > EB + 030C > EC + 0328 > EA + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0301 > ED + 0302 > EE + . +006A > 6A +006B > 6B +006C > 6C / + N 2 + 0301 > E5 + 030C > B5 + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 030C > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 2 + 0301 > E0 + 030C > F8 + . +0073 > 73 / + N 3 + 0301 > B6 + 030C > B9 + 0327 > BA + . +0074 > 74 / + N 2 + 030C > BB + 0327 > FE + . +0075 > 75 / + N 4 + 0301 > FA + 0308 > FC + 030A > F9 + 030B > FB + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 3 + 0301 > BC + 0307 > BF + 030C > BE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00B0 > B0 +00B4 > B4 +00B8 > B8 +00C0 > 41 # unsup: 0041 0300 +00C1 > C1 +00C2 > C2 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > C7 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > CB +00CC > 49 # unsup: 0049 0300 +00CD > CD +00CE > CE +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > D3 +00D4 > D4 +00D5 > 4F # unsup: 004F 0303 +00D6 > D6 +00D7 > D7 +00D9 > 55 # unsup: 0055 0300 +00DA > DA +00DB > 55 # unsup: 0055 0302 +00DC > DC +00DD > DD +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > E1 +00E2 > E2 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > E7 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > EB +00EC > 69 # unsup: 0069 0300 +00ED > ED +00EE > EE +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > F3 +00F4 > F4 +00F5 > 6F # unsup: 006F 0303 +00F6 > F6 +00F7 > F7 +00F9 > 75 # unsup: 0075 0300 +00FA > FA +00FB > 75 # unsup: 0075 0302 +00FC > FC +00FD > FD +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > C3 +0103 > E3 +0104 > A1 +0105 > B1 +0106 > C6 +0107 > E6 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > CF +010F > EF +0110 > D0 +0111 > F0 +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > CA +0119 > EA +011A > CC +011B > EC +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > C5 +013A > E5 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > A5 +013E > B5 +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > D2 +0148 > F2 +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > D5 +0151 > F5 +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > C0 +0155 > E0 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > D8 +0159 > F8 +015A > A6 +015B > B6 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > AA +015F > BA +0160 > A9 +0161 > B9 +0162 > DE +0163 > FE +0164 > AB +0165 > BB +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > D9 +016F > F9 +0170 > DB +0171 > FB +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > AC +017A > BC +017B > AF +017C > BF +017D > AE +017E > BE +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 AE # compat +01C5 > 44 BE # compat +01C6 > 64 BE # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C7 > B7 +02D8 > A2 +02D9 > FF +02DB > B2 +02DD > BD +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > A6 # unsup: 015A 0307 +1E65 > B6 # unsup: 015B 0307 +1E66 > A9 # unsup: 0160 0307 +1E67 > B9 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > C3 # unsup: 0102 0301 +1EAF > E3 # unsup: 0103 0301 +1EB0 > C3 # unsup: 0102 0300 +1EB1 > E3 # unsup: 0103 0300 +1EB2 > C3 # unsup: 0102 0309 +1EB3 > E3 # unsup: 0103 0309 +1EB4 > C3 # unsup: 0102 0303 +1EB5 > E3 # unsup: 0103 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 5 + 0301 > C1 + 0302 > C2 + 0306 > C3 + 0308 > C4 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 3 + 0301 > C6 + 030C > C8 + 0327 > C7 + . +0044 > 44 / + N 1 + 030C > CF + . +0045 > 45 / + N 4 + 0301 > C9 + 0308 > CB + 030C > CC + 0328 > CA + . +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 / + N 2 + 0301 > CD + 0302 > CE + . +004A > 4A +004B > 4B +004C > 4C / + N 2 + 0301 > C5 + 030C > A5 + . +004D > 4D +004E > 4E / + N 2 + 0301 > D1 + 030C > D2 + . +004F > 4F / + N 4 + 0301 > D3 + 0302 > D4 + 0308 > D6 + 030B > D5 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 2 + 0301 > C0 + 030C > D8 + . +0053 > 53 / + N 3 + 0301 > A6 + 030C > A9 + 0327 > AA + . +0054 > 54 / + N 2 + 030C > AB + 0327 > DE + . +0055 > 55 / + N 4 + 0301 > DA + 0308 > DC + 030A > D9 + 030B > DB + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 / + N 1 + 0301 > DD + . +005A > 5A / + N 3 + 0301 > AC + 0307 > AF + 030C > AE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 5 + 0301 > E1 + 0302 > E2 + 0306 > E3 + 0308 > E4 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 3 + 0301 > E6 + 030C > E8 + 0327 > E7 + . +0064 > 64 / + N 1 + 030C > EF + . +0065 > 65 / + N 4 + 0301 > E9 + 0308 > EB + 030C > EC + 0328 > EA + . +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 / + N 2 + 0301 > ED + 0302 > EE + . +006A > 6A +006B > 6B +006C > 6C / + N 2 + 0301 > E5 + 030C > B5 + . +006D > 6D +006E > 6E / + N 2 + 0301 > F1 + 030C > F2 + . +006F > 6F / + N 4 + 0301 > F3 + 0302 > F4 + 0308 > F6 + 030B > F5 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 2 + 0301 > E0 + 030C > F8 + . +0073 > 73 / + N 3 + 0301 > B6 + 030C > B9 + 0327 > BA + . +0074 > 74 / + N 2 + 030C > BB + 0327 > FE + . +0075 > 75 / + N 4 + 0301 > FA + 0308 > FC + 030A > F9 + 030B > FB + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0301 > FD + . +007A > 7A / + N 3 + 0301 > BC + 0307 > BF + 030C > BE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00B0 > B0 +00B4 > B4 +00B8 > B8 +00C1 > C1 +00C2 > C2 +00C4 > C4 +00C7 > C7 +00C9 > C9 +00CB > CB +00CD > CD +00CE > CE +00D3 > D3 +00D4 > D4 +00D6 > D6 +00D7 > D7 +00DA > DA +00DC > DC +00DD > DD +00DF > DF +00E1 > E1 +00E2 > E2 +00E4 > E4 +00E7 > E7 +00E9 > E9 +00EB > EB +00ED > ED +00EE > EE +00F3 > F3 +00F4 > F4 +00F6 > F6 +00F7 > F7 +00FA > FA +00FC > FC +00FD > FD +0102 > C3 +0103 > E3 +0104 > A1 +0105 > B1 +0106 > C6 +0107 > E6 +010C > C8 +010D > E8 +010E > CF +010F > EF +0110 > D0 +0111 > F0 +0118 > CA +0119 > EA +011A > CC +011B > EC +0139 > C5 +013A > E5 +013D > A5 +013E > B5 +0141 > A3 +0142 > B3 +0143 > D1 +0144 > F1 +0147 > D2 +0148 > F2 +0150 > D5 +0151 > F5 +0154 > C0 +0155 > E0 +0158 > D8 +0159 > F8 +015A > A6 +015B > B6 +015E > AA +015F > BA +0160 > A9 +0161 > B9 +0162 > DE +0163 > FE +0164 > AB +0165 > BB +016E > D9 +016F > F9 +0170 > DB +0171 > FB +0179 > AC +017A > BC +017B > AF +017C > BF +017D > AE +017E > BE +02C7 > B7 +02D8 > A2 +02D9 > FF +02DB > B2 +02DD > BD +037E > 3B +1FEF > 60 +1FFD > B4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0041 0328 +A2 > 02D8 +A3 > 0141 +A4 > 00A4 +A5 > 004C 030C +A6 > 0053 0301 +A7 > 00A7 +A8 > 00A8 +A9 > 0053 030C +AA > 0053 0327 +AB > 0054 030C +AC > 005A 0301 +AD > 00AD +AE > 005A 030C +AF > 005A 0307 +B0 > 00B0 +B1 > 0061 0328 +B2 > 02DB +B3 > 0142 +B4 > 00B4 +B5 > 006C 030C +B6 > 0073 0301 +B7 > 02C7 +B8 > 00B8 +B9 > 0073 030C +BA > 0073 0327 +BB > 0074 030C +BC > 007A 0301 +BD > 02DD +BE > 007A 030C +BF > 007A 0307 +C0 > 0052 0301 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0306 +C4 > 0041 0308 +C5 > 004C 0301 +C6 > 0043 0301 +C7 > 0043 0327 +C8 > 0043 030C +C9 > 0045 0301 +CA > 0045 0328 +CB > 0045 0308 +CC > 0045 030C +CD > 0049 0301 +CE > 0049 0302 +CF > 0044 030C +D0 > 0110 +D1 > 004E 0301 +D2 > 004E 030C +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 030B +D6 > 004F 0308 +D7 > 00D7 +D8 > 0052 030C +D9 > 0055 030A +DA > 0055 0301 +DB > 0055 030B +DC > 0055 0308 +DD > 0059 0301 +DE > 0054 0327 +DF > 00DF +E0 > 0072 0301 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0306 +E4 > 0061 0308 +E5 > 006C 0301 +E6 > 0063 0301 +E7 > 0063 0327 +E8 > 0063 030C +E9 > 0065 0301 +EA > 0065 0328 +EB > 0065 0308 +EC > 0065 030C +ED > 0069 0301 +EE > 0069 0302 +EF > 0064 030C +F0 > 0111 +F1 > 006E 0301 +F2 > 006E 030C +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 030B +F6 > 006F 0308 +F7 > 00F7 +F8 > 0072 030C +F9 > 0075 030A +FA > 0075 0301 +FB > 0075 030B +FC > 0075 0308 +FD > 0079 0301 +FE > 0074 0327 +FF > 02D9 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0104 +A2 > 02D8 +A3 > 0141 +A4 > 00A4 +A5 > 013D +A6 > 015A +A7 > 00A7 +A8 > 00A8 +A9 > 0160 +AA > 015E +AB > 0164 +AC > 0179 +AD > 00AD +AE > 017D +AF > 017B +B0 > 00B0 +B1 > 0105 +B2 > 02DB +B3 > 0142 +B4 > 00B4 +B5 > 013E +B6 > 015B +B7 > 02C7 +B8 > 00B8 +B9 > 0161 +BA > 015F +BB > 0165 +BC > 017A +BD > 02DD +BE > 017E +BF > 017C +C0 > 0154 +C1 > 00C1 +C2 > 00C2 +C3 > 0102 +C4 > 00C4 +C5 > 0139 +C6 > 0106 +C7 > 00C7 +C8 > 010C +C9 > 00C9 +CA > 0118 +CB > 00CB +CC > 011A +CD > 00CD +CE > 00CE +CF > 010E +D0 > 0110 +D1 > 0143 +D2 > 0147 +D3 > 00D3 +D4 > 00D4 +D5 > 0150 +D6 > 00D6 +D7 > 00D7 +D8 > 0158 +D9 > 016E +DA > 00DA +DB > 0170 +DC > 00DC +DD > 00DD +DE > 0162 +DF > 00DF +E0 > 0155 +E1 > 00E1 +E2 > 00E2 +E3 > 0103 +E4 > 00E4 +E5 > 013A +E6 > 0107 +E7 > 00E7 +E8 > 010D +E9 > 00E9 +EA > 0119 +EB > 00EB +EC > 011B +ED > 00ED +EE > 00EE +EF > 010F +F0 > 0111 +F1 > 0144 +F2 > 0148 +F3 > 00F3 +F4 > 00F4 +F5 > 0151 +F6 > 00F6 +F7 > 00F7 +F8 > 0159 +F9 > 016F +FA > 00FA +FB > 0171 +FC > 00FC +FD > 00FD +FE > 0163 +FF > 02D9 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-2.cset b/assets/data/iso-8859-2.cset new file mode 100644 index 0000000..b425187 --- /dev/null +++ b/assets/data/iso-8859-2.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-2 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0104 L Y A1 B1 A1 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +A2 02D8 - Y A2 A2 A2 00 00 00 # BREVE +A3 0141 L Y A3 B3 A3 A3 B3 B3 # LATIN CAPITAL LETTER L WITH STROKE +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 013D L Y A5 B5 A5 4C 6C 6C # LATIN CAPITAL LETTER L WITH CARON +A6 015A L Y A6 B6 A6 53 73 73 # LATIN CAPITAL LETTER S WITH ACUTE +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 0160 L Y A9 B9 A9 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +AA 015E L Y AA BA AA 53 73 73 # LATIN CAPITAL LETTER S WITH CEDILLA +AB 0164 L Y AB BB AB 54 74 74 # LATIN CAPITAL LETTER T WITH CARON +AC 0179 L Y AC BC AC 5A 7A 7A # LATIN CAPITAL LETTER Z WITH ACUTE +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 017D L Y AE BE AE 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +AF 017B L Y AF BF AF 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 0105 L Y A1 B1 A1 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +B2 02DB - Y B2 B2 B2 00 00 00 # OGONEK +B3 0142 L Y A3 B3 A3 B3 B3 B3 # LATIN SMALL LETTER L WITH STROKE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 013E L Y A5 B5 A5 6C 6C 6C # LATIN SMALL LETTER L WITH CARON +B6 015B L Y A6 B6 A6 73 73 73 # LATIN SMALL LETTER S WITH ACUTE +B7 02C7 M Y B7 B7 B7 00 00 00 # CARON +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 0161 L Y A9 B9 A9 73 73 73 # LATIN SMALL LETTER S WITH CARON +BA 015F L Y AA BA AA 73 73 73 # LATIN SMALL LETTER S WITH CEDILLA +BB 0165 L Y AB BB AB 74 74 74 # LATIN SMALL LETTER T WITH CARON +BC 017A L Y AC BC AC 7A 7A 7A # LATIN SMALL LETTER Z WITH ACUTE +BD 02DD - Y BD BD BD 00 00 00 # DOUBLE ACUTE ACCENT +BE 017E L Y AE BE AE 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +BF 017C L Y AF BF AF 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +C0 0154 L Y C0 E0 C0 52 72 72 # LATIN CAPITAL LETTER R WITH ACUTE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 0102 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH BREVE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 0139 L Y C5 E5 C5 4C 6C 6C # LATIN CAPITAL LETTER L WITH ACUTE +C6 0106 L Y C6 E6 C6 43 63 63 # LATIN CAPITAL LETTER C WITH ACUTE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0118 L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 011A L Y CC EC CC 45 2A 00 # LATIN CAPITAL LETTER E WITH CARON +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 010E L Y CF EF CF 44 64 64 # LATIN CAPITAL LETTER D WITH CARON +D0 0110 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER D WITH STROKE +D1 0143 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH ACUTE +D2 0147 L Y D2 F2 D2 4E 6E 6E # LATIN CAPITAL LETTER N WITH CARON +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 0150 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 0158 L Y D8 F8 D8 52 72 72 # LATIN CAPITAL LETTER R WITH CARON +D9 016E L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH RING ABOVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 0170 L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 00DD L Y DD FD DD 59 79 79 # LATIN CAPITAL LETTER Y WITH ACUTE +DE 0162 L Y DE FE DE 54 74 74 # LATIN CAPITAL LETTER T WITH CEDILLA +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0155 L Y C0 E0 C0 72 72 72 # LATIN SMALL LETTER R WITH ACUTE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 0103 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH BREVE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 013A L Y C5 E5 C5 6C 6C 6C # LATIN SMALL LETTER L WITH ACUTE +E6 0107 L Y C6 E6 C6 63 63 63 # LATIN SMALL LETTER C WITH ACUTE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 0119 L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 011B L Y CC EC CC 65 2A 00 # LATIN SMALL LETTER E WITH CARON +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 010F L Y CF EF CF 64 64 64 # LATIN SMALL LETTER D WITH CARON +F0 0111 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER D WITH STROKE +F1 0144 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH ACUTE +F2 0148 L Y D2 F2 D2 6E 6E 6E # LATIN SMALL LETTER N WITH CARON +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 0151 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 0159 L Y D8 F8 D8 72 72 72 # LATIN SMALL LETTER R WITH CARON +F9 016F L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH RING ABOVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 0171 L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 00FD L Y DD FD DD 79 79 79 # LATIN SMALL LETTER Y WITH ACUTE +FE 0163 L Y DE FE DE 74 74 74 # LATIN SMALL LETTER T WITH CEDILLA +FF 02D9 - Y FF FF FF 00 00 00 # DOT ABOVE diff --git a/assets/data/iso-8859-3.cmap b/assets/data/iso-8859-3.cmap new file mode 100644 index 0000000..87215dd --- /dev/null +++ b/assets/data/iso-8859-3.cmap @@ -0,0 +1,1935 @@ +INTERNAL +/ +N 931 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0308 > C4 + . +0042 > 42 +0043 > 43 / + N 3 + 0302 > C6 + 0307 > C5 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 3 + 0302 > D8 + 0306 > AB + 0307 > D5 + . +0048 > 48 / + N 1 + 0302 > A6 + . +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > A9 + 0308 > CF + . +004A > 4A / + N 1 + 0302 > AC + . +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 4 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 2 + 0302 > DE + 0327 > AA + . +0054 > 54 +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0306 > DD + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 1 + 0307 > AF + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0308 > E4 + . +0062 > 62 +0063 > 63 / + N 3 + 0302 > E6 + 0307 > E5 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 3 + 0302 > F8 + 0306 > BB + 0307 > F5 + . +0068 > 68 / + N 1 + 0302 > B6 + . +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A / + N 1 + 0302 > BC + . +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 4 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 2 + 0302 > FE + 0327 > BA + . +0074 > 74 +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0306 > FD + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 1 + 0307 > BF + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00B0 > B0 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B7 > B7 +00B8 > B8 +00BD > BD +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > 41 # unsup: 0041 0303 +00C4 > C4 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > 4F # unsup: 004F 0303 +00D6 > D6 +00D7 > D7 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > 61 # unsup: 0061 0303 +00E4 > E4 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > 6F # unsup: 006F 0303 +00F6 > F6 +00F7 > F7 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > C6 +0109 > E6 +010A > C5 +010B > E5 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > D8 +011D > F8 +011E > AB +011F > BB +0120 > D5 +0121 > F5 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > A6 +0125 > B6 +0126 > A1 +0127 > B1 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > A9 +0131 > B9 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > AC +0135 > BC +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > DE +015D > FE +015E > AA +015F > BA +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > DD +016D > FD +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > AF +017C > BF +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02D8 > A2 +02D9 > FF +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE1 > A3 # compat +. + +STRICT +/ +N 253 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 4 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0308 > C4 + . +0042 > 42 +0043 > 43 / + N 3 + 0302 > C6 + 0307 > C5 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 3 + 0302 > D8 + 0306 > AB + 0307 > D5 + . +0048 > 48 / + N 1 + 0302 > A6 + . +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > A9 + 0308 > CF + . +004A > 4A / + N 1 + 0302 > AC + . +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 4 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 2 + 0302 > DE + 0327 > AA + . +0054 > 54 +0055 > 55 / + N 5 + 0300 > D9 + 0301 > DA + 0302 > DB + 0306 > DD + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 1 + 0307 > AF + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 4 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0308 > E4 + . +0062 > 62 +0063 > 63 / + N 3 + 0302 > E6 + 0307 > E5 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 3 + 0302 > F8 + 0306 > BB + 0307 > F5 + . +0068 > 68 / + N 1 + 0302 > B6 + . +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A / + N 1 + 0302 > BC + . +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 4 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 2 + 0302 > FE + 0327 > BA + . +0074 > 74 +0075 > 75 / + N 5 + 0300 > F9 + 0301 > FA + 0302 > FB + 0306 > FD + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 1 + 0307 > BF + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00B0 > B0 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B7 > B7 +00B8 > B8 +00BD > BD +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C4 > C4 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D6 > D6 +00D7 > D7 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E4 > E4 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F6 > F6 +00F7 > F7 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +0108 > C6 +0109 > E6 +010A > C5 +010B > E5 +011C > D8 +011D > F8 +011E > AB +011F > BB +0120 > D5 +0121 > F5 +0124 > A6 +0125 > B6 +0126 > A1 +0127 > B1 +0130 > A9 +0131 > B9 +0134 > AC +0135 > BC +015C > DE +015D > FE +015E > AA +015F > BA +016C > DD +016D > FD +017B > AF +017C > BF +02D8 > A2 +02D9 > FF +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +. + +NFD +/ +N 249 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0126 +A2 > 02D8 +A3 > 00A3 +A4 > 00A4 +A6 > 0048 0302 +A7 > 00A7 +A8 > 00A8 +A9 > 0049 0307 +AA > 0053 0327 +AB > 0047 0306 +AC > 004A 0302 +AD > 00AD +AF > 005A 0307 +B0 > 00B0 +B1 > 0127 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 0068 0302 +B7 > 00B7 +B8 > 00B8 +B9 > 0131 +BA > 0073 0327 +BB > 0067 0306 +BC > 006A 0302 +BD > 00BD +BF > 007A 0307 +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C4 > 0041 0308 +C5 > 0043 0307 +C6 > 0043 0302 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 0047 0307 +D6 > 004F 0308 +D7 > 00D7 +D8 > 0047 0302 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0055 0306 +DE > 0053 0302 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E4 > 0061 0308 +E5 > 0063 0307 +E6 > 0063 0302 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 0067 0307 +F6 > 006F 0308 +F7 > 00F7 +F8 > 0067 0302 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0075 0306 +FE > 0073 0302 +FF > 02D9 +. + +NFC +/ +N 249 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0126 +A2 > 02D8 +A3 > 00A3 +A4 > 00A4 +A6 > 0124 +A7 > 00A7 +A8 > 00A8 +A9 > 0130 +AA > 015E +AB > 011E +AC > 0134 +AD > 00AD +AF > 017B +B0 > 00B0 +B1 > 0127 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 0125 +B7 > 00B7 +B8 > 00B8 +B9 > 0131 +BA > 015F +BB > 011F +BC > 0135 +BD > 00BD +BF > 017C +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C4 > 00C4 +C5 > 010A +C6 > 0108 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 0120 +D6 > 00D6 +D7 > 00D7 +D8 > 011C +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 016C +DE > 015C +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E4 > 00E4 +E5 > 010B +E6 > 0109 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 0121 +F6 > 00F6 +F7 > 00F7 +F8 > 011D +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 016D +FE > 015D +FF > 02D9 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-3.cset b/assets/data/iso-8859-3.cset new file mode 100644 index 0000000..21c26a7 --- /dev/null +++ b/assets/data/iso-8859-3.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-3 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0126 L Y A1 B1 A1 A1 B1 B1 # LATIN CAPITAL LETTER H WITH STROKE +A2 02D8 - Y A2 A2 A2 00 00 00 # BREVE +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 E0A5 . N A5 A5 A5 00 00 00 # <unused> +A6 0124 L Y A6 B6 A6 48 68 68 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 0130 L Y A9 69 A9 49 2A 00 # LATIN CAPITAL LETTER I WITH DOT ABOVE +AA 015E L Y AA BA AA 53 73 73 # LATIN CAPITAL LETTER S WITH CEDILLA +AB 011E L Y AB BB AB 47 67 67 # LATIN CAPITAL LETTER G WITH BREVE +AC 0134 L Y AC BC AC 4A 6A 6A # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE E0AE . N AE AE AE 00 00 00 # <unused> +AF 017B L Y AF BF AF 5A 7A 7A # LATIN CAPITAL LETTER Z WITH DOT ABOVE +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 0127 L Y A1 B1 A1 B1 B1 B1 # LATIN SMALL LETTER H WITH STROKE +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 0125 L Y A6 B6 A6 68 68 68 # LATIN SMALL LETTER H WITH CIRCUMFLEX +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 0131 L Y 49 B9 49 B9 B9 B9 # LATIN SMALL LETTER DOTLESS I +BA 015F L Y AA BA AA 73 73 73 # LATIN SMALL LETTER S WITH CEDILLA +BB 011F L Y AB BB AB 67 67 67 # LATIN SMALL LETTER G WITH BREVE +BC 0135 L Y AC BC AC 6A 6A 6A # LATIN SMALL LETTER J WITH CIRCUMFLEX +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE E0BE . N BE BE BE 00 00 00 # <unused> +BF 017C L Y AF BF AF 7A 7A 7A # LATIN SMALL LETTER Z WITH DOT ABOVE +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 E0C3 . N C3 C3 C3 00 00 00 # <unused> +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 010A L Y C5 E5 C5 43 63 63 # LATIN CAPITAL LETTER C WITH DOT ABOVE +C6 0108 L Y C6 E6 C6 43 63 63 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 E0D0 . N D0 D0 D0 00 00 00 # <unused> +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 0120 L Y D5 F5 D5 47 67 67 # LATIN CAPITAL LETTER G WITH DOT ABOVE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 011C L Y D8 F8 D8 47 67 67 # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 016C L Y DD FD DD 55 2A 00 # LATIN CAPITAL LETTER U WITH BREVE +DE 015C L Y DE FE DE 53 73 73 # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 E0E3 . N E3 E3 E3 00 00 00 # <unused> +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 010B L Y C5 E5 C5 63 63 63 # LATIN SMALL LETTER C WITH DOT ABOVE +E6 0109 L Y C6 E6 C6 63 63 63 # LATIN SMALL LETTER C WITH CIRCUMFLEX +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 E0F0 . N F0 F0 F0 00 00 00 # <unused> +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 0121 L Y D5 F5 D5 67 67 67 # LATIN SMALL LETTER G WITH DOT ABOVE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 011D L Y D8 F8 D8 67 67 67 # LATIN SMALL LETTER G WITH CIRCUMFLEX +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 016D L Y DD FD DD 75 2A 00 # LATIN SMALL LETTER U WITH BREVE +FE 015D L Y DE FE DE 73 73 73 # LATIN SMALL LETTER S WITH CIRCUMFLEX +FF 02D9 - Y FF FF FF 00 00 00 # DOT ABOVE diff --git a/assets/data/iso-8859-4.cmap b/assets/data/iso-8859-4.cmap new file mode 100644 index 0000000..30bc796 --- /dev/null +++ b/assets/data/iso-8859-4.cmap @@ -0,0 +1,1970 @@ +INTERNAL +/ +N 932 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 7 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0304 > C0 + 0308 > C4 + 030A > C5 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 1 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 5 + 0301 > C9 + 0304 > AA + 0307 > CC + 0308 > CB + 0328 > CA + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > AB + . +0048 > 48 +0049 > 49 / + N 5 + 0301 > CD + 0302 > CE + 0303 > A5 + 0304 > CF + 0328 > C7 + . +004A > 4A +004B > 4B / + N 1 + 0327 > D3 + . +004C > 4C / + N 1 + 0327 > A6 + . +004D > 4D +004E > 4E / + N 1 + 0327 > D1 + . +004F > 4F / + N 4 + 0302 > D4 + 0303 > D5 + 0304 > D2 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > A3 + . +0053 > 53 / + N 1 + 030C > A9 + . +0054 > 54 +0055 > 55 / + N 6 + 0301 > DA + 0302 > DB + 0303 > DD + 0304 > DE + 0308 > DC + 0328 > D9 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 1 + 030C > AE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 7 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0304 > E0 + 0308 > E4 + 030A > E5 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 1 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 5 + 0301 > E9 + 0304 > BA + 0307 > EC + 0308 > EB + 0328 > EA + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > BB + . +0068 > 68 +0069 > 69 / + N 5 + 0301 > ED + 0302 > EE + 0303 > B5 + 0304 > EF + 0328 > E7 + . +006A > 6A +006B > 6B / + N 1 + 0327 > F3 + . +006C > 6C / + N 1 + 0327 > B6 + . +006D > 6D +006E > 6E / + N 1 + 0327 > F1 + . +006F > 6F / + N 4 + 0302 > F4 + 0303 > F5 + 0304 > F2 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > B3 + . +0073 > 73 / + N 1 + 030C > B9 + . +0074 > 74 +0075 > 75 / + N 6 + 0301 > FA + 0302 > FB + 0303 > FD + 0304 > FE + 0308 > FC + 0328 > F9 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 1 + 030C > BE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00AF > AF +00B0 > B0 +00B4 > B4 +00B8 > B8 +00C0 > 41 # unsup: 0041 0300 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > C9 +00CA > 45 # unsup: 0045 0302 +00CB > CB +00CC > 49 # unsup: 0049 0300 +00CD > CD +00CE > CE +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > 55 # unsup: 0055 0300 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > 61 # unsup: 0061 0300 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > E9 +00EA > 65 # unsup: 0065 0302 +00EB > EB +00EC > 69 # unsup: 0069 0300 +00ED > ED +00EE > EE +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > 75 # unsup: 0075 0300 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > C0 +0101 > E0 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > A1 +0105 > B1 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > C8 +010D > E8 +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0110 > D0 +0111 > F0 +0112 > AA +0113 > BA +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > CC +0117 > EC +0118 > CA +0119 > EA +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > AB +0123 > BB +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > A5 +0129 > B5 +012A > CF +012B > EF +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > C7 +012F > E7 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > D3 +0137 > F3 +0138 > A2 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > A6 +013C > B6 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > D1 +0146 > F1 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014A > BD +014B > BF +014C > D2 +014D > F2 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > A3 +0157 > B3 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > A9 +0161 > B9 +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0166 > AC +0167 > BC +0168 > DD +0169 > FD +016A > DE +016B > FE +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > D9 +0173 > F9 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > AE +017E > BE +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 AE # compat +01C5 > 44 BE # compat +01C6 > 64 BE # compat +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +02C7 > B7 +02D9 > FF +02DB > B2 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > AA # unsup: 0112 0300 +1E15 > BA # unsup: 0113 0300 +1E16 > AA # unsup: 0112 0301 +1E17 > BA # unsup: 0113 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > D2 # unsup: 014C 0300 +1E51 > F2 # unsup: 014D 0300 +1E52 > D2 # unsup: 014C 0301 +1E53 > F2 # unsup: 014D 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > A9 # unsup: 0160 0307 +1E67 > B9 # unsup: 0161 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > DD # unsup: 0168 0301 +1E79 > FD # unsup: 0169 0301 +1E7A > DE # unsup: 016A 0308 +1E7B > FE # unsup: 016B 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE3 > AF # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 7 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0304 > C0 + 0308 > C4 + 030A > C5 + 0328 > A1 + . +0042 > 42 +0043 > 43 / + N 1 + 030C > C8 + . +0044 > 44 +0045 > 45 / + N 5 + 0301 > C9 + 0304 > AA + 0307 > CC + 0308 > CB + 0328 > CA + . +0046 > 46 +0047 > 47 / + N 1 + 0327 > AB + . +0048 > 48 +0049 > 49 / + N 5 + 0301 > CD + 0302 > CE + 0303 > A5 + 0304 > CF + 0328 > C7 + . +004A > 4A +004B > 4B / + N 1 + 0327 > D3 + . +004C > 4C / + N 1 + 0327 > A6 + . +004D > 4D +004E > 4E / + N 1 + 0327 > D1 + . +004F > 4F / + N 4 + 0302 > D4 + 0303 > D5 + 0304 > D2 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 / + N 1 + 0327 > A3 + . +0053 > 53 / + N 1 + 030C > A9 + . +0054 > 54 +0055 > 55 / + N 6 + 0301 > DA + 0302 > DB + 0303 > DD + 0304 > DE + 0308 > DC + 0328 > D9 + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A / + N 1 + 030C > AE + . +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 7 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0304 > E0 + 0308 > E4 + 030A > E5 + 0328 > B1 + . +0062 > 62 +0063 > 63 / + N 1 + 030C > E8 + . +0064 > 64 +0065 > 65 / + N 5 + 0301 > E9 + 0304 > BA + 0307 > EC + 0308 > EB + 0328 > EA + . +0066 > 66 +0067 > 67 / + N 1 + 0327 > BB + . +0068 > 68 +0069 > 69 / + N 5 + 0301 > ED + 0302 > EE + 0303 > B5 + 0304 > EF + 0328 > E7 + . +006A > 6A +006B > 6B / + N 1 + 0327 > F3 + . +006C > 6C / + N 1 + 0327 > B6 + . +006D > 6D +006E > 6E / + N 1 + 0327 > F1 + . +006F > 6F / + N 4 + 0302 > F4 + 0303 > F5 + 0304 > F2 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 / + N 1 + 0327 > B3 + . +0073 > 73 / + N 1 + 030C > B9 + . +0074 > 74 +0075 > 75 / + N 6 + 0301 > FA + 0302 > FB + 0303 > FD + 0304 > FE + 0308 > FC + 0328 > F9 + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A / + N 1 + 030C > BE + . +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00A7 > A7 +00A8 > A8 +00AD > AD +00AF > AF +00B0 > B0 +00B4 > B4 +00B8 > B8 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C9 > C9 +00CB > CB +00CD > CD +00CE > CE +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00DA > DA +00DB > DB +00DC > DC +00DF > DF +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E9 > E9 +00EB > EB +00ED > ED +00EE > EE +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00FA > FA +00FB > FB +00FC > FC +0100 > C0 +0101 > E0 +0104 > A1 +0105 > B1 +010C > C8 +010D > E8 +0110 > D0 +0111 > F0 +0112 > AA +0113 > BA +0116 > CC +0117 > EC +0118 > CA +0119 > EA +0122 > AB +0123 > BB +0128 > A5 +0129 > B5 +012A > CF +012B > EF +012E > C7 +012F > E7 +0136 > D3 +0137 > F3 +0138 > A2 +013B > A6 +013C > B6 +0145 > D1 +0146 > F1 +014A > BD +014B > BF +014C > D2 +014D > F2 +0156 > A3 +0157 > B3 +0160 > A9 +0161 > B9 +0166 > AC +0167 > BC +0168 > DD +0169 > FD +016A > DE +016B > FE +0172 > D9 +0173 > F9 +017D > AE +017E > BE +02C7 > B7 +02D9 > FF +02DB > B2 +037E > 3B +1FEF > 60 +1FFD > B4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0041 0328 +A2 > 0138 +A3 > 0052 0327 +A4 > 00A4 +A5 > 0049 0303 +A6 > 004C 0327 +A7 > 00A7 +A8 > 00A8 +A9 > 0053 030C +AA > 0045 0304 +AB > 0047 0327 +AC > 0166 +AD > 00AD +AE > 005A 030C +AF > 00AF +B0 > 00B0 +B1 > 0061 0328 +B2 > 02DB +B3 > 0072 0327 +B4 > 00B4 +B5 > 0069 0303 +B6 > 006C 0327 +B7 > 02C7 +B8 > 00B8 +B9 > 0073 030C +BA > 0065 0304 +BB > 0067 0327 +BC > 0167 +BD > 014A +BE > 007A 030C +BF > 014B +C0 > 0041 0304 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0049 0328 +C8 > 0043 030C +C9 > 0045 0301 +CA > 0045 0328 +CB > 0045 0308 +CC > 0045 0307 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0304 +D0 > 0110 +D1 > 004E 0327 +D2 > 004F 0304 +D3 > 004B 0327 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0328 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0055 0303 +DE > 0055 0304 +DF > 00DF +E0 > 0061 0304 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0069 0328 +E8 > 0063 030C +E9 > 0065 0301 +EA > 0065 0328 +EB > 0065 0308 +EC > 0065 0307 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0304 +F0 > 0111 +F1 > 006E 0327 +F2 > 006F 0304 +F3 > 006B 0327 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0328 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0075 0303 +FE > 0075 0304 +FF > 02D9 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0104 +A2 > 0138 +A3 > 0156 +A4 > 00A4 +A5 > 0128 +A6 > 013B +A7 > 00A7 +A8 > 00A8 +A9 > 0160 +AA > 0112 +AB > 0122 +AC > 0166 +AD > 00AD +AE > 017D +AF > 00AF +B0 > 00B0 +B1 > 0105 +B2 > 02DB +B3 > 0157 +B4 > 00B4 +B5 > 0129 +B6 > 013C +B7 > 02C7 +B8 > 00B8 +B9 > 0161 +BA > 0113 +BB > 0123 +BC > 0167 +BD > 014A +BE > 017E +BF > 014B +C0 > 0100 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 012E +C8 > 010C +C9 > 00C9 +CA > 0118 +CB > 00CB +CC > 0116 +CD > 00CD +CE > 00CE +CF > 012A +D0 > 0110 +D1 > 0145 +D2 > 014C +D3 > 0136 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 0172 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 0168 +DE > 016A +DF > 00DF +E0 > 0101 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 012F +E8 > 010D +E9 > 00E9 +EA > 0119 +EB > 00EB +EC > 0117 +ED > 00ED +EE > 00EE +EF > 012B +F0 > 0111 +F1 > 0146 +F2 > 014D +F3 > 0137 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 0173 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 0169 +FE > 016B +FF > 02D9 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-4.cset b/assets/data/iso-8859-4.cset new file mode 100644 index 0000000..5da17b7 --- /dev/null +++ b/assets/data/iso-8859-4.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-4 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0104 L Y A1 B1 A1 41 2A 00 # LATIN CAPITAL LETTER A WITH OGONEK +A2 0138 L Y A2 A2 A2 A2 A2 A2 # LATIN SMALL LETTER KRA +A3 0156 L Y A3 B3 A3 52 72 72 # LATIN CAPITAL LETTER R WITH CEDILLA +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 0128 L Y A5 B5 A5 49 2A 00 # LATIN CAPITAL LETTER I WITH TILDE +A6 013B L Y A6 B6 A6 4C 6C 6C # LATIN CAPITAL LETTER L WITH CEDILLA +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 0160 L Y A9 B9 A9 53 73 73 # LATIN CAPITAL LETTER S WITH CARON +AA 0112 L Y AA BA AA 45 2A 00 # LATIN CAPITAL LETTER E WITH MACRON +AB 0122 L Y AB BB AB 47 67 67 # LATIN CAPITAL LETTER G WITH CEDILLA +AC 0166 L Y AC BC AC AC BC BC # LATIN CAPITAL LETTER T WITH STROKE +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 017D L Y AE BE AE 5A 7A 7A # LATIN CAPITAL LETTER Z WITH CARON +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 0105 L Y A1 B1 A1 61 2A 00 # LATIN SMALL LETTER A WITH OGONEK +B2 02DB - Y B2 B2 B2 00 00 00 # OGONEK +B3 0157 L Y A3 B3 A3 72 72 72 # LATIN SMALL LETTER R WITH CEDILLA +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 0129 L Y A5 B5 A5 69 2A 00 # LATIN SMALL LETTER I WITH TILDE +B6 013C L Y A6 B6 A6 6C 6C 6C # LATIN SMALL LETTER L WITH CEDILLA +B7 02C7 M Y B7 B7 B7 00 00 00 # CARON +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 0161 L Y A9 B9 A9 73 73 73 # LATIN SMALL LETTER S WITH CARON +BA 0113 L Y AA BA AA 65 2A 00 # LATIN SMALL LETTER E WITH MACRON +BB 0123 L Y AB BB AB 67 67 67 # LATIN SMALL LETTER G WITH CEDILLA +BC 0167 L Y AC BC AC BC BC BC # LATIN SMALL LETTER T WITH STROKE +BD 014A L Y BD BF BD BD BF BF # LATIN CAPITAL LETTER ENG +BE 017E L Y AE BE AE 7A 7A 7A # LATIN SMALL LETTER Z WITH CARON +BF 014B L Y BD BF BD BF BF BF # LATIN SMALL LETTER ENG +C0 0100 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH MACRON +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 012E L Y C7 E7 C7 49 2A 00 # LATIN CAPITAL LETTER I WITH OGONEK +C8 010C L Y C8 E8 C8 43 63 63 # LATIN CAPITAL LETTER C WITH CARON +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 0118 L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH OGONEK +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 0116 L Y CC EC CC 45 2A 00 # LATIN CAPITAL LETTER E WITH DOT ABOVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 012A L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH MACRON +D0 0110 L Y D0 F0 D0 D0 F0 F0 # LATIN CAPITAL LETTER D WITH STROKE +D1 0145 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH CEDILLA +D2 014C L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH MACRON +D3 0136 L Y D3 F3 D3 4B 6B 6B # LATIN CAPITAL LETTER K WITH CEDILLA +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 0172 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH OGONEK +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 0168 L Y DD FD DD 55 2A 00 # LATIN CAPITAL LETTER U WITH TILDE +DE 016A L Y DE FE DE 55 2A 00 # LATIN CAPITAL LETTER U WITH MACRON +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 0101 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH MACRON +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 012F L Y C7 E7 C7 69 2A 00 # LATIN SMALL LETTER I WITH OGONEK +E8 010D L Y C8 E8 C8 63 63 63 # LATIN SMALL LETTER C WITH CARON +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 0119 L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH OGONEK +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 0117 L Y CC EC CC 65 2A 00 # LATIN SMALL LETTER E WITH DOT ABOVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 012B L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH MACRON +F0 0111 L Y D0 F0 D0 F0 F0 F0 # LATIN SMALL LETTER D WITH STROKE +F1 0146 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH CEDILLA +F2 014D L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH MACRON +F3 0137 L Y D3 F3 D3 6B 6B 6B # LATIN SMALL LETTER K WITH CEDILLA +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 0173 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH OGONEK +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 0169 L Y DD FD DD 75 2A 00 # LATIN SMALL LETTER U WITH TILDE +FE 016B L Y DE FE DE 75 2A 00 # LATIN SMALL LETTER U WITH MACRON +FF 02D9 - Y FF FF FF 00 00 00 # DOT ABOVE diff --git a/assets/data/iso-8859-5.cmap b/assets/data/iso-8859-5.cmap new file mode 100644 index 0000000..cdd6473 --- /dev/null +++ b/assets/data/iso-8859-5.cmap @@ -0,0 +1,1895 @@ +INTERNAL +/ +N 1030 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > FD +00AD > AD +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0400 > B5 # unsup: 0415 0300 +0401 > A1 +0402 > A2 +0403 > A3 +0404 > A4 +0405 > A5 +0406 > A6 / + N 1 + 0308 > A7 + . +0407 > A7 +0408 > A8 +0409 > A9 +040A > AA +040B > AB +040C > AC +040D > B8 # unsup: 0418 0300 +040E > AE +040F > AF +0410 > B0 +0411 > B1 +0412 > B2 +0413 > B3 / + N 1 + 0301 > A3 + . +0414 > B4 +0415 > B5 / + N 1 + 0308 > A1 + . +0416 > B6 +0417 > B7 +0418 > B8 / + N 1 + 0306 > B9 + . +0419 > B9 +041A > BA / + N 1 + 0301 > AC + . +041B > BB +041C > BC +041D > BD +041E > BE +041F > BF +0420 > C0 +0421 > C1 +0422 > C2 +0423 > C3 / + N 1 + 0306 > AE + . +0424 > C4 +0425 > C5 +0426 > C6 +0427 > C7 +0428 > C8 +0429 > C9 +042A > CA +042B > CB +042C > CC +042D > CD +042E > CE +042F > CF +0430 > D0 +0431 > D1 +0432 > D2 +0433 > D3 / + N 1 + 0301 > F3 + . +0434 > D4 +0435 > D5 / + N 1 + 0308 > F1 + . +0436 > D6 +0437 > D7 +0438 > D8 / + N 1 + 0306 > D9 + . +0439 > D9 +043A > DA / + N 1 + 0301 > FC + . +043B > DB +043C > DC +043D > DD +043E > DE +043F > DF +0440 > E0 +0441 > E1 +0442 > E2 +0443 > E3 / + N 1 + 0306 > FE + . +0444 > E4 +0445 > E5 +0446 > E6 +0447 > E7 +0448 > E8 +0449 > E9 +044A > EA +044B > EB +044C > EC +044D > ED +044E > EE +044F > EF +0450 > D5 # unsup: 0435 0300 +0451 > F1 +0452 > F2 +0453 > F3 +0454 > F4 +0455 > F5 +0456 > F6 / + N 1 + 0308 > F7 + . +0457 > F7 +0458 > F8 +0459 > F9 +045A > FA +045B > FB +045C > FC +045D > D8 # unsup: 0438 0300 +045E > FE +045F > FF +04C1 > B6 # unsup: 0416 0306 +04C2 > D6 # unsup: 0436 0306 +04D0 > B0 # unsup: 0410 0306 +04D1 > D0 # unsup: 0430 0306 +04D2 > B0 # unsup: 0410 0308 +04D3 > D0 # unsup: 0430 0308 +04D6 > B5 # unsup: 0415 0306 +04D7 > D5 # unsup: 0435 0306 +04DC > B6 # unsup: 0416 0308 +04DD > D6 # unsup: 0436 0308 +04DE > B7 # unsup: 0417 0308 +04DF > D7 # unsup: 0437 0308 +04E2 > B8 # unsup: 0418 0304 +04E3 > D8 # unsup: 0438 0304 +04E4 > B8 # unsup: 0418 0308 +04E5 > D8 # unsup: 0438 0308 +04E6 > BE # unsup: 041E 0308 +04E7 > DE # unsup: 043E 0308 +04EC > CD # unsup: 042D 0308 +04ED > ED # unsup: 044D 0308 +04EE > C3 # unsup: 0423 0304 +04EF > E3 # unsup: 0443 0304 +04F0 > C3 # unsup: 0423 0308 +04F1 > E3 # unsup: 0443 0308 +04F2 > C3 # unsup: 0423 030B +04F3 > E3 # unsup: 0443 030B +04F4 > C7 # unsup: 0427 0308 +04F5 > E7 # unsup: 0447 0308 +04F8 > CB # unsup: 042B 0308 +04F9 > EB # unsup: 044B 0308 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +2116 > F0 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 258 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A7 > FD +00AD > AD +037E > 3B +0401 > A1 +0402 > A2 +0403 > A3 +0404 > A4 +0405 > A5 +0406 > A6 / + N 1 + 0308 > A7 + . +0407 > A7 +0408 > A8 +0409 > A9 +040A > AA +040B > AB +040C > AC +040E > AE +040F > AF +0410 > B0 +0411 > B1 +0412 > B2 +0413 > B3 / + N 1 + 0301 > A3 + . +0414 > B4 +0415 > B5 / + N 1 + 0308 > A1 + . +0416 > B6 +0417 > B7 +0418 > B8 / + N 1 + 0306 > B9 + . +0419 > B9 +041A > BA / + N 1 + 0301 > AC + . +041B > BB +041C > BC +041D > BD +041E > BE +041F > BF +0420 > C0 +0421 > C1 +0422 > C2 +0423 > C3 / + N 1 + 0306 > AE + . +0424 > C4 +0425 > C5 +0426 > C6 +0427 > C7 +0428 > C8 +0429 > C9 +042A > CA +042B > CB +042C > CC +042D > CD +042E > CE +042F > CF +0430 > D0 +0431 > D1 +0432 > D2 +0433 > D3 / + N 1 + 0301 > F3 + . +0434 > D4 +0435 > D5 / + N 1 + 0308 > F1 + . +0436 > D6 +0437 > D7 +0438 > D8 / + N 1 + 0306 > D9 + . +0439 > D9 +043A > DA / + N 1 + 0301 > FC + . +043B > DB +043C > DC +043D > DD +043E > DE +043F > DF +0440 > E0 +0441 > E1 +0442 > E2 +0443 > E3 / + N 1 + 0306 > FE + . +0444 > E4 +0445 > E5 +0446 > E6 +0447 > E7 +0448 > E8 +0449 > E9 +044A > EA +044B > EB +044C > EC +044D > ED +044E > EE +044F > EF +0451 > F1 +0452 > F2 +0453 > F3 +0454 > F4 +0455 > F5 +0456 > F6 / + N 1 + 0308 > F7 + . +0457 > F7 +0458 > F8 +0459 > F9 +045A > FA +045B > FB +045C > FC +045E > FE +045F > FF +1FEF > 60 +2116 > F0 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0415 0308 +A2 > 0402 +A3 > 0413 0301 +A4 > 0404 +A5 > 0405 +A6 > 0406 +A7 > 0406 0308 +A8 > 0408 +A9 > 0409 +AA > 040A +AB > 040B +AC > 041A 0301 +AD > 00AD +AE > 0423 0306 +AF > 040F +B0 > 0410 +B1 > 0411 +B2 > 0412 +B3 > 0413 +B4 > 0414 +B5 > 0415 +B6 > 0416 +B7 > 0417 +B8 > 0418 +B9 > 0418 0306 +BA > 041A +BB > 041B +BC > 041C +BD > 041D +BE > 041E +BF > 041F +C0 > 0420 +C1 > 0421 +C2 > 0422 +C3 > 0423 +C4 > 0424 +C5 > 0425 +C6 > 0426 +C7 > 0427 +C8 > 0428 +C9 > 0429 +CA > 042A +CB > 042B +CC > 042C +CD > 042D +CE > 042E +CF > 042F +D0 > 0430 +D1 > 0431 +D2 > 0432 +D3 > 0433 +D4 > 0434 +D5 > 0435 +D6 > 0436 +D7 > 0437 +D8 > 0438 +D9 > 0438 0306 +DA > 043A +DB > 043B +DC > 043C +DD > 043D +DE > 043E +DF > 043F +E0 > 0440 +E1 > 0441 +E2 > 0442 +E3 > 0443 +E4 > 0444 +E5 > 0445 +E6 > 0446 +E7 > 0447 +E8 > 0448 +E9 > 0449 +EA > 044A +EB > 044B +EC > 044C +ED > 044D +EE > 044E +EF > 044F +F0 > 2116 +F1 > 0435 0308 +F2 > 0452 +F3 > 0433 0301 +F4 > 0454 +F5 > 0455 +F6 > 0456 +F7 > 0456 0308 +F8 > 0458 +F9 > 0459 +FA > 045A +FB > 045B +FC > 043A 0301 +FD > 00A7 +FE > 0443 0306 +FF > 045F +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 0401 +A2 > 0402 +A3 > 0403 +A4 > 0404 +A5 > 0405 +A6 > 0406 +A7 > 0407 +A8 > 0408 +A9 > 0409 +AA > 040A +AB > 040B +AC > 040C +AD > 00AD +AE > 040E +AF > 040F +B0 > 0410 +B1 > 0411 +B2 > 0412 +B3 > 0413 +B4 > 0414 +B5 > 0415 +B6 > 0416 +B7 > 0417 +B8 > 0418 +B9 > 0419 +BA > 041A +BB > 041B +BC > 041C +BD > 041D +BE > 041E +BF > 041F +C0 > 0420 +C1 > 0421 +C2 > 0422 +C3 > 0423 +C4 > 0424 +C5 > 0425 +C6 > 0426 +C7 > 0427 +C8 > 0428 +C9 > 0429 +CA > 042A +CB > 042B +CC > 042C +CD > 042D +CE > 042E +CF > 042F +D0 > 0430 +D1 > 0431 +D2 > 0432 +D3 > 0433 +D4 > 0434 +D5 > 0435 +D6 > 0436 +D7 > 0437 +D8 > 0438 +D9 > 0439 +DA > 043A +DB > 043B +DC > 043C +DD > 043D +DE > 043E +DF > 043F +E0 > 0440 +E1 > 0441 +E2 > 0442 +E3 > 0443 +E4 > 0444 +E5 > 0445 +E6 > 0446 +E7 > 0447 +E8 > 0448 +E9 > 0449 +EA > 044A +EB > 044B +EC > 044C +ED > 044D +EE > 044E +EF > 044F +F0 > 2116 +F1 > 0451 +F2 > 0452 +F3 > 0453 +F4 > 0454 +F5 > 0455 +F6 > 0456 +F7 > 0457 +F8 > 0458 +F9 > 0459 +FA > 045A +FB > 045B +FC > 045C +FD > 00A7 +FE > 045E +FF > 045F +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-5.cset b/assets/data/iso-8859-5.cset new file mode 100644 index 0000000..a940d38 --- /dev/null +++ b/assets/data/iso-8859-5.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-5 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 0401 L Y A1 F1 A1 A1 F1 F1 # CYRILLIC CAPITAL LETTER IO +A2 0402 L Y A2 F2 A2 A2 F2 F2 # CYRILLIC CAPITAL LETTER DJE +A3 0403 L Y A3 F3 A3 A3 F3 F3 # CYRILLIC CAPITAL LETTER GJE +A4 0404 L Y A4 F4 A4 A4 F4 F4 # CYRILLIC CAPITAL LETTER UKRAINIAN IE +A5 0405 L Y A5 F5 A5 A5 F5 F5 # CYRILLIC CAPITAL LETTER DZE +A6 0406 L Y A6 F6 A6 A6 F6 F6 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +A7 0407 L Y A7 F7 A7 A7 F7 F7 # CYRILLIC CAPITAL LETTER YI +A8 0408 L Y A8 F8 A8 A8 F8 F8 # CYRILLIC CAPITAL LETTER JE +A9 0409 L Y A9 F9 A9 A9 F9 F9 # CYRILLIC CAPITAL LETTER LJE +AA 040A L Y AA FA AA AA FA FA # CYRILLIC CAPITAL LETTER NJE +AB 040B L Y AB FB AB AB FB FB # CYRILLIC CAPITAL LETTER TSHE +AC 040C L Y AC FC AC AC FC FC # CYRILLIC CAPITAL LETTER KJE +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 040E L Y AE FE AE AE FE FE # CYRILLIC CAPITAL LETTER SHORT U +AF 040F L Y AF FF AF AF FF FF # CYRILLIC CAPITAL LETTER DZHE +B0 0410 L Y B0 D0 B0 B0 2A 00 # CYRILLIC CAPITAL LETTER A +B1 0411 L Y B1 D1 B1 B1 D1 D1 # CYRILLIC CAPITAL LETTER BE +B2 0412 L Y B2 D2 B2 B2 D2 D2 # CYRILLIC CAPITAL LETTER VE +B3 0413 L Y B3 D3 B3 B3 D3 D3 # CYRILLIC CAPITAL LETTER GHE +B4 0414 L Y B4 D4 B4 B4 D4 D4 # CYRILLIC CAPITAL LETTER DE +B5 0415 L Y B5 D5 B5 B5 2A 00 # CYRILLIC CAPITAL LETTER IE +B6 0416 L Y B6 D6 B6 B6 D6 D6 # CYRILLIC CAPITAL LETTER ZHE +B7 0417 L Y B7 D7 B7 B7 D7 D7 # CYRILLIC CAPITAL LETTER ZE +B8 0418 L Y B8 D8 B8 B8 2A 00 # CYRILLIC CAPITAL LETTER I +B9 0419 L Y B9 D9 B9 B9 D9 D9 # CYRILLIC CAPITAL LETTER SHORT I +BA 041A L Y BA DA BA BA DA DA # CYRILLIC CAPITAL LETTER KA +BB 041B L Y BB DB BB BB DB DB # CYRILLIC CAPITAL LETTER EL +BC 041C L Y BC DC BC BC DC DC # CYRILLIC CAPITAL LETTER EM +BD 041D L Y BD DD BD BD DD DD # CYRILLIC CAPITAL LETTER EN +BE 041E L Y BE DE BE BE 2A 00 # CYRILLIC CAPITAL LETTER O +BF 041F L Y BF DF BF BF DF DF # CYRILLIC CAPITAL LETTER PE +C0 0420 L Y C0 E0 C0 C0 E0 E0 # CYRILLIC CAPITAL LETTER ER +C1 0421 L Y C1 E1 C1 C1 E1 E1 # CYRILLIC CAPITAL LETTER ES +C2 0422 L Y C2 E2 C2 C2 E2 E2 # CYRILLIC CAPITAL LETTER TE +C3 0423 L Y C3 E3 C3 C3 2A 00 # CYRILLIC CAPITAL LETTER U +C4 0424 L Y C4 E4 C4 C4 E4 E4 # CYRILLIC CAPITAL LETTER EF +C5 0425 L Y C5 E5 C5 C5 E5 E5 # CYRILLIC CAPITAL LETTER HA +C6 0426 L Y C6 E6 C6 C6 E6 E6 # CYRILLIC CAPITAL LETTER TSE +C7 0427 L Y C7 E7 C7 C7 E7 E7 # CYRILLIC CAPITAL LETTER CHE +C8 0428 L Y C8 E8 C8 C8 E8 E8 # CYRILLIC CAPITAL LETTER SHA +C9 0429 L Y C9 E9 C9 C9 E9 E9 # CYRILLIC CAPITAL LETTER SHCHA +CA 042A L Y CA EA CA CA EA EA # CYRILLIC CAPITAL LETTER HARD SIGN +CB 042B L Y CB EB CB CB 2A 00 # CYRILLIC CAPITAL LETTER YERU +CC 042C L Y CC EC CC CC EC EC # CYRILLIC CAPITAL LETTER SOFT SIGN +CD 042D L Y CD ED CD CD 2A 00 # CYRILLIC CAPITAL LETTER E +CE 042E L Y CE EE CE CE 2A 00 # CYRILLIC CAPITAL LETTER YU +CF 042F L Y CF EF CF CF 2A 00 # CYRILLIC CAPITAL LETTER YA +D0 0430 L Y B0 D0 B0 D0 2A 00 # CYRILLIC SMALL LETTER A +D1 0431 L Y B1 D1 B1 D1 D1 D1 # CYRILLIC SMALL LETTER BE +D2 0432 L Y B2 D2 B2 D2 D2 D2 # CYRILLIC SMALL LETTER VE +D3 0433 L Y B3 D3 B3 D3 D3 D3 # CYRILLIC SMALL LETTER GHE +D4 0434 L Y B4 D4 B4 D4 D4 D4 # CYRILLIC SMALL LETTER DE +D5 0435 L Y B5 D5 B5 D5 2A 00 # CYRILLIC SMALL LETTER IE +D6 0436 L Y B6 D6 B6 D6 D6 D6 # CYRILLIC SMALL LETTER ZHE +D7 0437 L Y B7 D7 B7 D7 D7 D7 # CYRILLIC SMALL LETTER ZE +D8 0438 L Y B8 D8 B8 D8 2A 00 # CYRILLIC SMALL LETTER I +D9 0439 L Y B9 D9 B9 D9 D9 D9 # CYRILLIC SMALL LETTER SHORT I +DA 043A L Y BA DA BA DA DA DA # CYRILLIC SMALL LETTER KA +DB 043B L Y BB DB BB DB DB DB # CYRILLIC SMALL LETTER EL +DC 043C L Y BC DC BC DC DC DC # CYRILLIC SMALL LETTER EM +DD 043D L Y BD DD BD DD DD DD # CYRILLIC SMALL LETTER EN +DE 043E L Y BE DE BE DE 2A 00 # CYRILLIC SMALL LETTER O +DF 043F L Y BF DF BF DF DF DF # CYRILLIC SMALL LETTER PE +E0 0440 L Y C0 E0 C0 E0 E0 E0 # CYRILLIC SMALL LETTER ER +E1 0441 L Y C1 E1 C1 E1 E1 E1 # CYRILLIC SMALL LETTER ES +E2 0442 L Y C2 E2 C2 E2 E2 E2 # CYRILLIC SMALL LETTER TE +E3 0443 L Y C3 E3 C3 E3 2A 00 # CYRILLIC SMALL LETTER U +E4 0444 L Y C4 E4 C4 E4 E4 E4 # CYRILLIC SMALL LETTER EF +E5 0445 L Y C5 E5 C5 E5 E5 E5 # CYRILLIC SMALL LETTER HA +E6 0446 L Y C6 E6 C6 E6 E6 E6 # CYRILLIC SMALL LETTER TSE +E7 0447 L Y C7 E7 C7 E7 E7 E7 # CYRILLIC SMALL LETTER CHE +E8 0448 L Y C8 E8 C8 E8 E8 E8 # CYRILLIC SMALL LETTER SHA +E9 0449 L Y C9 E9 C9 E9 E9 E9 # CYRILLIC SMALL LETTER SHCHA +EA 044A L Y CA EA CA EA EA EA # CYRILLIC SMALL LETTER HARD SIGN +EB 044B L Y CB EB CB EB 2A 00 # CYRILLIC SMALL LETTER YERU +EC 044C L Y CC EC CC EC EC EC # CYRILLIC SMALL LETTER SOFT SIGN +ED 044D L Y CD ED CD ED 2A 00 # CYRILLIC SMALL LETTER E +EE 044E L Y CE EE CE EE 2A 00 # CYRILLIC SMALL LETTER YU +EF 044F L Y CF EF CF EF 2A 00 # CYRILLIC SMALL LETTER YA +F0 2116 . N F0 F0 F0 00 00 00 # <unused special> +F1 0451 L Y A1 F1 A1 F1 F1 F1 # CYRILLIC SMALL LETTER IO +F2 0452 L Y A2 F2 A2 F2 F2 F2 # CYRILLIC SMALL LETTER DJE +F3 0453 L Y A3 F3 A3 F3 F3 F3 # CYRILLIC SMALL LETTER GJE +F4 0454 L Y A4 F4 A4 F4 F4 F4 # CYRILLIC SMALL LETTER UKRAINIAN IE +F5 0455 L Y A5 F5 A5 F5 F5 F5 # CYRILLIC SMALL LETTER DZE +F6 0456 L Y A6 F6 A6 F6 F6 F6 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +F7 0457 L Y A7 F7 A7 F7 F7 F7 # CYRILLIC SMALL LETTER YI +F8 0458 L Y A8 F8 A8 F8 F8 F8 # CYRILLIC SMALL LETTER JE +F9 0459 L Y A9 F9 A9 F9 F9 F9 # CYRILLIC SMALL LETTER LJE +FA 045A L Y AA FA AA FA FA FA # CYRILLIC SMALL LETTER NJE +FB 045B L Y AB FB AB FB FB FB # CYRILLIC SMALL LETTER TSHE +FC 045C L Y AC FC AC FC FC FC # CYRILLIC SMALL LETTER KJE +FD 00A7 - Y FD FD FD 00 00 00 # SECTION SIGN +FE 045E L Y AE FE AE FE FE FE # CYRILLIC SMALL LETTER SHORT U +FF 045F L Y AF FF AF FF FF FF # CYRILLIC SMALL LETTER DZHE diff --git a/assets/data/iso-8859-6.cmap b/assets/data/iso-8859-6.cmap new file mode 100644 index 0000000..bbb7b8a --- /dev/null +++ b/assets/data/iso-8859-6.cmap @@ -0,0 +1,2201 @@ +INTERNAL +/ +N 1521 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00AD > AD +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +060C > AC +061B > BB +061F > BF +0621 > C1 +0622 > C2 +0623 > C3 +0624 > C4 +0625 > C5 +0626 > C6 +0627 > C7 / + N 3 + 0653 > C2 + 0654 > C3 + 0655 > C5 + . +0628 > C8 +0629 > C9 +062A > CA +062B > CB +062C > CC +062D > CD +062E > CE +062F > CF +0630 > D0 +0631 > D1 +0632 > D2 +0633 > D3 +0634 > D4 +0635 > D5 +0636 > D6 +0637 > D7 +0638 > D8 +0639 > D9 +063A > DA +0640 > E0 +0641 > E1 +0642 > E2 +0643 > E3 +0644 > E4 +0645 > E5 +0646 > E6 +0647 > E7 +0648 > E8 / + N 1 + 0654 > C4 + . +0649 > E9 +064A > EA / + N 1 + 0654 > C6 + . +064B > EB +064C > EC +064D > ED +064E > EE +064F > EF +0650 > F0 +0651 > F1 +0652 > F2 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FBE8 > E9 # compat +FBE9 > E9 # compat +FBEA > C6 C7 # compat +FBEB > C6 C7 # compat +FBEE > C6 E8 # compat +FBEF > C6 E8 # compat +FBF9 > C6 E9 # compat +FBFA > C6 E9 # compat +FBFB > C6 E9 # compat +FC00 > C6 CC # compat +FC01 > C6 CD # compat +FC02 > C6 E5 # compat +FC03 > C6 E9 # compat +FC04 > C6 EA # compat +FC05 > C8 CC # compat +FC06 > C8 CD # compat +FC07 > C8 CE # compat +FC08 > C8 E5 # compat +FC09 > C8 E9 # compat +FC0A > C8 EA # compat +FC0B > CA CC # compat +FC0C > CA CD # compat +FC0D > CA CE # compat +FC0E > CA E5 # compat +FC0F > CA E9 # compat +FC10 > CA EA # compat +FC11 > CB CC # compat +FC12 > CB E5 # compat +FC13 > CB E9 # compat +FC14 > CB EA # compat +FC15 > CC CD # compat +FC16 > CC E5 # compat +FC17 > CD CC # compat +FC18 > CD E5 # compat +FC19 > CE CC # compat +FC1A > CE CD # compat +FC1B > CE E5 # compat +FC1C > D3 CC # compat +FC1D > D3 CD # compat +FC1E > D3 CE # compat +FC1F > D3 E5 # compat +FC20 > D5 CD # compat +FC21 > D5 E5 # compat +FC22 > D6 CC # compat +FC23 > D6 CD # compat +FC24 > D6 CE # compat +FC25 > D6 E5 # compat +FC26 > D7 CD # compat +FC27 > D7 E5 # compat +FC28 > D8 E5 # compat +FC29 > D9 CC # compat +FC2A > D9 E5 # compat +FC2B > DA CC # compat +FC2C > DA E5 # compat +FC2D > E1 CC # compat +FC2E > E1 CD # compat +FC2F > E1 CE # compat +FC30 > E1 E5 # compat +FC31 > E1 E9 # compat +FC32 > E1 EA # compat +FC33 > E2 CD # compat +FC34 > E2 E5 # compat +FC35 > E2 E9 # compat +FC36 > E2 EA # compat +FC37 > E3 C7 # compat +FC38 > E3 CC # compat +FC39 > E3 CD # compat +FC3A > E3 CE # compat +FC3B > E3 E4 # compat +FC3C > E3 E5 # compat +FC3D > E3 E9 # compat +FC3E > E3 EA # compat +FC3F > E4 CC # compat +FC40 > E4 CD # compat +FC41 > E4 CE # compat +FC42 > E4 E5 # compat +FC43 > E4 E9 # compat +FC44 > E4 EA # compat +FC45 > E5 CC # compat +FC46 > E5 CD # compat +FC47 > E5 CE # compat +FC48 > E5 E5 # compat +FC49 > E5 E9 # compat +FC4A > E5 EA # compat +FC4B > E6 CC # compat +FC4C > E6 CD # compat +FC4D > E6 CE # compat +FC4E > E6 E5 # compat +FC4F > E6 E9 # compat +FC50 > E6 EA # compat +FC51 > E7 CC # compat +FC52 > E7 E5 # compat +FC53 > E7 E9 # compat +FC54 > E7 EA # compat +FC55 > EA CC # compat +FC56 > EA CD # compat +FC57 > EA CE # compat +FC58 > EA E5 # compat +FC59 > EA E9 # compat +FC5A > EA EA # compat +FC5B > D0 # unsup: 0630 0670 +FC5C > D1 # unsup: 0631 0670 +FC5D > E9 # unsup: 0649 0670 +FC64 > C6 D1 # compat +FC65 > C6 D2 # compat +FC66 > C6 E5 # compat +FC67 > C6 E6 # compat +FC68 > C6 E9 # compat +FC69 > C6 EA # compat +FC6A > C8 D1 # compat +FC6B > C8 D2 # compat +FC6C > C8 E5 # compat +FC6D > C8 E6 # compat +FC6E > C8 E9 # compat +FC6F > C8 EA # compat +FC70 > CA D1 # compat +FC71 > CA D2 # compat +FC72 > CA E5 # compat +FC73 > CA E6 # compat +FC74 > CA E9 # compat +FC75 > CA EA # compat +FC76 > CB D1 # compat +FC77 > CB D2 # compat +FC78 > CB E5 # compat +FC79 > CB E6 # compat +FC7A > CB E9 # compat +FC7B > CB EA # compat +FC7C > E1 E9 # compat +FC7D > E1 EA # compat +FC7E > E2 E9 # compat +FC7F > E2 EA # compat +FC80 > E3 C7 # compat +FC81 > E3 E4 # compat +FC82 > E3 E5 # compat +FC83 > E3 E9 # compat +FC84 > E3 EA # compat +FC85 > E4 E5 # compat +FC86 > E4 E9 # compat +FC87 > E4 EA # compat +FC88 > E5 C7 # compat +FC89 > E5 E5 # compat +FC8A > E6 D1 # compat +FC8B > E6 D2 # compat +FC8C > E6 E5 # compat +FC8D > E6 E6 # compat +FC8E > E6 E9 # compat +FC8F > E6 EA # compat +FC90 > E9 # unsup: 0649 0670 +FC91 > EA D1 # compat +FC92 > EA D2 # compat +FC93 > EA E5 # compat +FC94 > EA E6 # compat +FC95 > EA E9 # compat +FC96 > EA EA # compat +FC97 > C6 CC # compat +FC98 > C6 CD # compat +FC99 > C6 CE # compat +FC9A > C6 E5 # compat +FC9B > C6 E7 # compat +FC9C > C8 CC # compat +FC9D > C8 CD # compat +FC9E > C8 CE # compat +FC9F > C8 E5 # compat +FCA0 > C8 E7 # compat +FCA1 > CA CC # compat +FCA2 > CA CD # compat +FCA3 > CA CE # compat +FCA4 > CA E5 # compat +FCA5 > CA E7 # compat +FCA6 > CB E5 # compat +FCA7 > CC CD # compat +FCA8 > CC E5 # compat +FCA9 > CD CC # compat +FCAA > CD E5 # compat +FCAB > CE CC # compat +FCAC > CE E5 # compat +FCAD > D3 CC # compat +FCAE > D3 CD # compat +FCAF > D3 CE # compat +FCB0 > D3 E5 # compat +FCB1 > D5 CD # compat +FCB2 > D5 CE # compat +FCB3 > D5 E5 # compat +FCB4 > D6 CC # compat +FCB5 > D6 CD # compat +FCB6 > D6 CE # compat +FCB7 > D6 E5 # compat +FCB8 > D7 CD # compat +FCB9 > D8 E5 # compat +FCBA > D9 CC # compat +FCBB > D9 E5 # compat +FCBC > DA CC # compat +FCBD > DA E5 # compat +FCBE > E1 CC # compat +FCBF > E1 CD # compat +FCC0 > E1 CE # compat +FCC1 > E1 E5 # compat +FCC2 > E2 CD # compat +FCC3 > E2 E5 # compat +FCC4 > E3 CC # compat +FCC5 > E3 CD # compat +FCC6 > E3 CE # compat +FCC7 > E3 E4 # compat +FCC8 > E3 E5 # compat +FCC9 > E4 CC # compat +FCCA > E4 CD # compat +FCCB > E4 CE # compat +FCCC > E4 E5 # compat +FCCD > E4 E7 # compat +FCCE > E5 CC # compat +FCCF > E5 CD # compat +FCD0 > E5 CE # compat +FCD1 > E5 E5 # compat +FCD2 > E6 CC # compat +FCD3 > E6 CD # compat +FCD4 > E6 CE # compat +FCD5 > E6 E5 # compat +FCD6 > E6 E7 # compat +FCD7 > E7 CC # compat +FCD8 > E7 E5 # compat +FCD9 > E7 # unsup: 0647 0670 +FCDA > EA CC # compat +FCDB > EA CD # compat +FCDC > EA CE # compat +FCDD > EA E5 # compat +FCDE > EA E7 # compat +FCDF > C6 E5 # compat +FCE0 > C6 E7 # compat +FCE1 > C8 E5 # compat +FCE2 > C8 E7 # compat +FCE3 > CA E5 # compat +FCE4 > CA E7 # compat +FCE5 > CB E5 # compat +FCE6 > CB E7 # compat +FCE7 > D3 E5 # compat +FCE8 > D3 E7 # compat +FCE9 > D4 E5 # compat +FCEA > D4 E7 # compat +FCEB > E3 E4 # compat +FCEC > E3 E5 # compat +FCED > E4 E5 # compat +FCEE > E6 E5 # compat +FCEF > E6 E7 # compat +FCF0 > EA E5 # compat +FCF1 > EA E7 # compat +FCF2 > E0 EE F1 # compat +FCF3 > E0 EF F1 # compat +FCF4 > E0 F0 F1 # compat +FCF5 > D7 E9 # compat +FCF6 > D7 EA # compat +FCF7 > D9 E9 # compat +FCF8 > D9 EA # compat +FCF9 > DA E9 # compat +FCFA > DA EA # compat +FCFB > D3 E9 # compat +FCFC > D3 EA # compat +FCFD > D4 E9 # compat +FCFE > D4 EA # compat +FCFF > CD E9 # compat +FD00 > CD EA # compat +FD01 > CC E9 # compat +FD02 > CC EA # compat +FD03 > CE E9 # compat +FD04 > CE EA # compat +FD05 > D5 E9 # compat +FD06 > D5 EA # compat +FD07 > D6 E9 # compat +FD08 > D6 EA # compat +FD09 > D4 CC # compat +FD0A > D4 CD # compat +FD0B > D4 CE # compat +FD0C > D4 E5 # compat +FD0D > D4 D1 # compat +FD0E > D3 D1 # compat +FD0F > D5 D1 # compat +FD10 > D6 D1 # compat +FD11 > D7 E9 # compat +FD12 > D7 EA # compat +FD13 > D9 E9 # compat +FD14 > D9 EA # compat +FD15 > DA E9 # compat +FD16 > DA EA # compat +FD17 > D3 E9 # compat +FD18 > D3 EA # compat +FD19 > D4 E9 # compat +FD1A > D4 EA # compat +FD1B > CD E9 # compat +FD1C > CD EA # compat +FD1D > CC E9 # compat +FD1E > CC EA # compat +FD1F > CE E9 # compat +FD20 > CE EA # compat +FD21 > D5 E9 # compat +FD22 > D5 EA # compat +FD23 > D6 E9 # compat +FD24 > D6 EA # compat +FD25 > D4 CC # compat +FD26 > D4 CD # compat +FD27 > D4 CE # compat +FD28 > D4 E5 # compat +FD29 > D4 D1 # compat +FD2A > D3 D1 # compat +FD2B > D5 D1 # compat +FD2C > D6 D1 # compat +FD2D > D4 CC # compat +FD2E > D4 CD # compat +FD2F > D4 CE # compat +FD30 > D4 E5 # compat +FD31 > D3 E7 # compat +FD32 > D4 E7 # compat +FD33 > D7 E5 # compat +FD34 > D3 CC # compat +FD35 > D3 CD # compat +FD36 > D3 CE # compat +FD37 > D4 CC # compat +FD38 > D4 CD # compat +FD39 > D4 CE # compat +FD3A > D7 E5 # compat +FD3B > D8 E5 # compat +FD3C > C7 EB # compat +FD3D > C7 EB # compat +FD50 > CA CC E5 # compat +FD51 > CA CD CC # compat +FD52 > CA CD CC # compat +FD53 > CA CD E5 # compat +FD54 > CA CE E5 # compat +FD55 > CA E5 CC # compat +FD56 > CA E5 CD # compat +FD57 > CA E5 CE # compat +FD58 > CC E5 CD # compat +FD59 > CC E5 CD # compat +FD5A > CD E5 EA # compat +FD5B > CD E5 E9 # compat +FD5C > D3 CD CC # compat +FD5D > D3 CC CD # compat +FD5E > D3 CC E9 # compat +FD5F > D3 E5 CD # compat +FD60 > D3 E5 CD # compat +FD61 > D3 E5 CC # compat +FD62 > D3 E5 E5 # compat +FD63 > D3 E5 E5 # compat +FD64 > D5 CD CD # compat +FD65 > D5 CD CD # compat +FD66 > D5 E5 E5 # compat +FD67 > D4 CD E5 # compat +FD68 > D4 CD E5 # compat +FD69 > D4 CC EA # compat +FD6A > D4 E5 CE # compat +FD6B > D4 E5 CE # compat +FD6C > D4 E5 E5 # compat +FD6D > D4 E5 E5 # compat +FD6E > D6 CD E9 # compat +FD6F > D6 CE E5 # compat +FD70 > D6 CE E5 # compat +FD71 > D7 E5 CD # compat +FD72 > D7 E5 CD # compat +FD73 > D7 E5 E5 # compat +FD74 > D7 E5 EA # compat +FD75 > D9 CC E5 # compat +FD76 > D9 E5 E5 # compat +FD77 > D9 E5 E5 # compat +FD78 > D9 E5 E9 # compat +FD79 > DA E5 E5 # compat +FD7A > DA E5 EA # compat +FD7B > DA E5 E9 # compat +FD7C > E1 CE E5 # compat +FD7D > E1 CE E5 # compat +FD7E > E2 E5 CD # compat +FD7F > E2 E5 E5 # compat +FD80 > E4 CD E5 # compat +FD81 > E4 CD EA # compat +FD82 > E4 CD E9 # compat +FD83 > E4 CC CC # compat +FD84 > E4 CC CC # compat +FD85 > E4 CE E5 # compat +FD86 > E4 CE E5 # compat +FD87 > E4 E5 CD # compat +FD88 > E4 E5 CD # compat +FD89 > E5 CD CC # compat +FD8A > E5 CD E5 # compat +FD8B > E5 CD EA # compat +FD8C > E5 CC CD # compat +FD8D > E5 CC E5 # compat +FD8E > E5 CE CC # compat +FD8F > E5 CE E5 # compat +FD92 > E5 CC CE # compat +FD93 > E7 E5 CC # compat +FD94 > E7 E5 E5 # compat +FD95 > E6 CD E5 # compat +FD96 > E6 CD E9 # compat +FD97 > E6 CC E5 # compat +FD98 > E6 CC E5 # compat +FD99 > E6 CC E9 # compat +FD9A > E6 E5 EA # compat +FD9B > E6 E5 E9 # compat +FD9C > EA E5 E5 # compat +FD9D > EA E5 E5 # compat +FD9E > C8 CE EA # compat +FD9F > CA CC EA # compat +FDA0 > CA CC E9 # compat +FDA1 > CA CE EA # compat +FDA2 > CA CE E9 # compat +FDA3 > CA E5 EA # compat +FDA4 > CA E5 E9 # compat +FDA5 > CC E5 EA # compat +FDA6 > CC CD E9 # compat +FDA7 > CC E5 E9 # compat +FDA8 > D3 CE E9 # compat +FDA9 > D5 CD EA # compat +FDAA > D4 CD EA # compat +FDAB > D6 CD EA # compat +FDAC > E4 CC EA # compat +FDAD > E4 E5 EA # compat +FDAE > EA CD EA # compat +FDAF > EA CC EA # compat +FDB0 > EA E5 EA # compat +FDB1 > E5 E5 EA # compat +FDB2 > E2 E5 EA # compat +FDB3 > E6 CD EA # compat +FDB4 > E2 E5 CD # compat +FDB5 > E4 CD E5 # compat +FDB6 > D9 E5 EA # compat +FDB7 > E3 E5 EA # compat +FDB8 > E6 CC CD # compat +FDB9 > E5 CE EA # compat +FDBA > E4 CC E5 # compat +FDBB > E3 E5 E5 # compat +FDBC > E4 CC E5 # compat +FDBD > E6 CC CD # compat +FDBE > CC CD EA # compat +FDBF > CD CC EA # compat +FDC0 > E5 CC EA # compat +FDC1 > E1 E5 EA # compat +FDC2 > C8 CD EA # compat +FDC3 > E3 E5 E5 # compat +FDC4 > D9 CC E5 # compat +FDC5 > D5 E5 E5 # compat +FDC6 > D3 CE EA # compat +FDC7 > E6 CC EA # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FE71 > E0 EB # compat +FE77 > E0 EE # compat +FE79 > E0 EF # compat +FE7B > E0 F0 # compat +FE7D > E0 F1 # compat +FE7F > E0 F2 # compat +FE80 > C1 # compat +FE81 > C2 # compat +FE82 > C2 # compat +FE83 > C3 # compat +FE84 > C3 # compat +FE85 > C4 # compat +FE86 > C4 # compat +FE87 > C5 # compat +FE88 > C5 # compat +FE89 > C6 # compat +FE8A > C6 # compat +FE8B > C6 # compat +FE8C > C6 # compat +FE8D > C7 # compat +FE8E > C7 # compat +FE8F > C8 # compat +FE90 > C8 # compat +FE91 > C8 # compat +FE92 > C8 # compat +FE93 > C9 # compat +FE94 > C9 # compat +FE95 > CA # compat +FE96 > CA # compat +FE97 > CA # compat +FE98 > CA # compat +FE99 > CB # compat +FE9A > CB # compat +FE9B > CB # compat +FE9C > CB # compat +FE9D > CC # compat +FE9E > CC # compat +FE9F > CC # compat +FEA0 > CC # compat +FEA1 > CD # compat +FEA2 > CD # compat +FEA3 > CD # compat +FEA4 > CD # compat +FEA5 > CE # compat +FEA6 > CE # compat +FEA7 > CE # compat +FEA8 > CE # compat +FEA9 > CF # compat +FEAA > CF # compat +FEAB > D0 # compat +FEAC > D0 # compat +FEAD > D1 # compat +FEAE > D1 # compat +FEAF > D2 # compat +FEB0 > D2 # compat +FEB1 > D3 # compat +FEB2 > D3 # compat +FEB3 > D3 # compat +FEB4 > D3 # compat +FEB5 > D4 # compat +FEB6 > D4 # compat +FEB7 > D4 # compat +FEB8 > D4 # compat +FEB9 > D5 # compat +FEBA > D5 # compat +FEBB > D5 # compat +FEBC > D5 # compat +FEBD > D6 # compat +FEBE > D6 # compat +FEBF > D6 # compat +FEC0 > D6 # compat +FEC1 > D7 # compat +FEC2 > D7 # compat +FEC3 > D7 # compat +FEC4 > D7 # compat +FEC5 > D8 # compat +FEC6 > D8 # compat +FEC7 > D8 # compat +FEC8 > D8 # compat +FEC9 > D9 # compat +FECA > D9 # compat +FECB > D9 # compat +FECC > D9 # compat +FECD > DA # compat +FECE > DA # compat +FECF > DA # compat +FED0 > DA # compat +FED1 > E1 # compat +FED2 > E1 # compat +FED3 > E1 # compat +FED4 > E1 # compat +FED5 > E2 # compat +FED6 > E2 # compat +FED7 > E2 # compat +FED8 > E2 # compat +FED9 > E3 # compat +FEDA > E3 # compat +FEDB > E3 # compat +FEDC > E3 # compat +FEDD > E4 # compat +FEDE > E4 # compat +FEDF > E4 # compat +FEE0 > E4 # compat +FEE1 > E5 # compat +FEE2 > E5 # compat +FEE3 > E5 # compat +FEE4 > E5 # compat +FEE5 > E6 # compat +FEE6 > E6 # compat +FEE7 > E6 # compat +FEE8 > E6 # compat +FEE9 > E7 # compat +FEEA > E7 # compat +FEEB > E7 # compat +FEEC > E7 # compat +FEED > E8 # compat +FEEE > E8 # compat +FEEF > E9 # compat +FEF0 > E9 # compat +FEF1 > EA # compat +FEF2 > EA # compat +FEF3 > EA # compat +FEF4 > EA # compat +FEF5 > E4 C2 # compat +FEF6 > E4 C2 # compat +FEF7 > E4 C3 # compat +FEF8 > E4 C3 # compat +FEF9 > E4 C5 # compat +FEFA > E4 C5 # compat +FEFB > E4 C7 # compat +FEFC > E4 C7 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 213 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A4 > A4 +00AD > AD +037E > 3B +060C > AC +061B > BB +061F > BF +0621 > C1 +0622 > C2 +0623 > C3 +0624 > C4 +0625 > C5 +0626 > C6 +0627 > C7 / + N 3 + 0653 > C2 + 0654 > C3 + 0655 > C5 + . +0628 > C8 +0629 > C9 +062A > CA +062B > CB +062C > CC +062D > CD +062E > CE +062F > CF +0630 > D0 +0631 > D1 +0632 > D2 +0633 > D3 +0634 > D4 +0635 > D5 +0636 > D6 +0637 > D7 +0638 > D8 +0639 > D9 +063A > DA +0640 > E0 +0641 > E1 +0642 > E2 +0643 > E3 +0644 > E4 +0645 > E5 +0646 > E6 +0647 > E7 +0648 > E8 / + N 1 + 0654 > C4 + . +0649 > E9 +064A > EA / + N 1 + 0654 > C6 + . +064B > EB +064C > EC +064D > ED +064E > EE +064F > EF +0650 > F0 +0651 > F1 +0652 > F2 +1FEF > 60 +. + +NFD +/ +N 211 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A4 > 00A4 +AC > 060C +AD > 00AD +BB > 061B +BF > 061F +C1 > 0621 +C2 > 0627 0653 +C3 > 0627 0654 +C4 > 0648 0654 +C5 > 0627 0655 +C6 > 064A 0654 +C7 > 0627 +C8 > 0628 +C9 > 0629 +CA > 062A +CB > 062B +CC > 062C +CD > 062D +CE > 062E +CF > 062F +D0 > 0630 +D1 > 0631 +D2 > 0632 +D3 > 0633 +D4 > 0634 +D5 > 0635 +D6 > 0636 +D7 > 0637 +D8 > 0638 +D9 > 0639 +DA > 063A +E0 > 0640 +E1 > 0641 +E2 > 0642 +E3 > 0643 +E4 > 0644 +E5 > 0645 +E6 > 0646 +E7 > 0647 +E8 > 0648 +E9 > 0649 +EA > 064A +EB > 064B +EC > 064C +ED > 064D +EE > 064E +EF > 064F +F0 > 0650 +F1 > 0651 +F2 > 0652 +. + +NFC +/ +N 211 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A4 > 00A4 +AC > 060C +AD > 00AD +BB > 061B +BF > 061F +C1 > 0621 +C2 > 0622 +C3 > 0623 +C4 > 0624 +C5 > 0625 +C6 > 0626 +C7 > 0627 +C8 > 0628 +C9 > 0629 +CA > 062A +CB > 062B +CC > 062C +CD > 062D +CE > 062E +CF > 062F +D0 > 0630 +D1 > 0631 +D2 > 0632 +D3 > 0633 +D4 > 0634 +D5 > 0635 +D6 > 0636 +D7 > 0637 +D8 > 0638 +D9 > 0639 +DA > 063A +E0 > 0640 +E1 > 0641 +E2 > 0642 +E3 > 0643 +E4 > 0644 +E5 > 0645 +E6 > 0646 +E7 > 0647 +E8 > 0648 +E9 > 0649 +EA > 064A +EB > 064B +EC > 064C +ED > 064D +EE > 064E +EF > 064F +F0 > 0650 +F1 > 0651 +F2 > 0652 +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-6.cset b/assets/data/iso-8859-6.cset new file mode 100644 index 0000000..702df8d --- /dev/null +++ b/assets/data/iso-8859-6.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-6 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 E0A1 . N A1 A1 A1 00 00 00 # <unused> +A2 E0A2 . N A2 A2 A2 00 00 00 # <unused> +A3 E0A3 . N A3 A3 A3 00 00 00 # <unused> +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 E0A5 . N A5 A5 A5 00 00 00 # <unused> +A6 E0A6 . N A6 A6 A6 00 00 00 # <unused> +A7 E0A7 . N A7 A7 A7 00 00 00 # <unused> +A8 E0A8 . N A8 A8 A8 00 00 00 # <unused> +A9 E0A9 . N A9 A9 A9 00 00 00 # <unused> +AA E0AA . N AA AA AA 00 00 00 # <unused> +AB E0AB . N AB AB AB 00 00 00 # <unused> +AC 060C - Y AC AC AC 00 00 00 # ARABIC COMMA +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE E0AE . N AE AE AE 00 00 00 # <unused> +AF E0AF . N AF AF AF 00 00 00 # <unused> +B0 E0B0 . N B0 B0 B0 00 00 00 # <unused> +B1 E0B1 . N B1 B1 B1 00 00 00 # <unused> +B2 E0B2 . N B2 B2 B2 00 00 00 # <unused> +B3 E0B3 . N B3 B3 B3 00 00 00 # <unused> +B4 E0B4 . N B4 B4 B4 00 00 00 # <unused> +B5 E0B5 . N B5 B5 B5 00 00 00 # <unused> +B6 E0B6 . N B6 B6 B6 00 00 00 # <unused> +B7 E0B7 . N B7 B7 B7 00 00 00 # <unused> +B8 E0B8 . N B8 B8 B8 00 00 00 # <unused> +B9 E0B9 . N B9 B9 B9 00 00 00 # <unused> +BA E0BA . N BA BA BA 00 00 00 # <unused> +BB 061B - Y BB BB BB 00 00 00 # ARABIC SEMICOLON +BC E0BC . N BC BC BC 00 00 00 # <unused> +BD E0BD . N BD BD BD 00 00 00 # <unused> +BE E0BE . N BE BE BE 00 00 00 # <unused> +BF 061F - Y BF BF BF 00 00 00 # ARABIC QUESTION MARK +C0 E0C0 . N C0 C0 C0 00 00 00 # <unused> +C1 0621 L Y C1 C1 C1 C1 C1 C1 # ARABIC LETTER HAMZA +C2 0622 L Y C2 C2 C2 C7 C7 C7 # ARABIC LETTER ALEF WITH MADDA ABOVE +C3 0623 L Y C3 C3 C3 C7 C7 C7 # ARABIC LETTER ALEF WITH HAMZA ABOVE +C4 0624 L Y C4 C4 C4 E8 E8 E8 # ARABIC LETTER WAW WITH HAMZA ABOVE +C5 0625 L Y C5 C5 C5 C7 C7 C7 # ARABIC LETTER ALEF WITH HAMZA BELOW +C6 0626 L Y C6 C6 C6 EA EA EA # ARABIC LETTER YEH WITH HAMZA ABOVE +C7 0627 L Y C7 C7 C7 C7 C7 C7 # ARABIC LETTER ALEF +C8 0628 L Y C8 C8 C8 C8 C8 C8 # ARABIC LETTER BEH +C9 0629 L Y C9 C9 C9 C9 C9 C9 # ARABIC LETTER TEH MARBUTA +CA 062A L Y CA CA CA CA CA CA # ARABIC LETTER TEH +CB 062B L Y CB CB CB CB CB CB # ARABIC LETTER THEH +CC 062C L Y CC CC CC CC CC CC # ARABIC LETTER JEEM +CD 062D L Y CD CD CD CD CD CD # ARABIC LETTER HAH +CE 062E L Y CE CE CE CE CE CE # ARABIC LETTER KHAH +CF 062F L Y CF CF CF CF CF CF # ARABIC LETTER DAL +D0 0630 L Y D0 D0 D0 D0 D0 D0 # ARABIC LETTER THAL +D1 0631 L Y D1 D1 D1 D1 D1 D1 # ARABIC LETTER REH +D2 0632 L Y D2 D2 D2 D2 D2 D2 # ARABIC LETTER ZAIN +D3 0633 L Y D3 D3 D3 D3 D3 D3 # ARABIC LETTER SEEN +D4 0634 L Y D4 D4 D4 D4 D4 D4 # ARABIC LETTER SHEEN +D5 0635 L Y D5 D5 D5 D5 D5 D5 # ARABIC LETTER SAD +D6 0636 L Y D6 D6 D6 D6 D6 D6 # ARABIC LETTER DAD +D7 0637 L Y D7 D7 D7 D7 D7 D7 # ARABIC LETTER TAH +D8 0638 L Y D8 D8 D8 D8 D8 D8 # ARABIC LETTER ZAH +D9 0639 L Y D9 D9 D9 D9 D9 D9 # ARABIC LETTER AIN +DA 063A L Y DA DA DA DA DA DA # ARABIC LETTER GHAIN +DB E0DB . N DB DB DB 00 00 00 # <unused> +DC E0DC . N DC DC DC 00 00 00 # <unused> +DD E0DD . N DD DD DD 00 00 00 # <unused> +DE E0DE . N DE DE DE 00 00 00 # <unused> +DF E0DF . N DF DF DF 00 00 00 # <unused> +E0 0640 l Y E0 E0 E0 E0 E0 E0 # ARABIC TATWEEL +E1 0641 L Y E1 E1 E1 E1 E1 E1 # ARABIC LETTER FEH +E2 0642 L Y E2 E2 E2 E2 E2 E2 # ARABIC LETTER QAF +E3 0643 L Y E3 E3 E3 E3 E3 E3 # ARABIC LETTER KAF +E4 0644 L Y E4 E4 E4 E4 E4 E4 # ARABIC LETTER LAM +E5 0645 L Y E5 E5 E5 E5 E5 E5 # ARABIC LETTER MEEM +E6 0646 L Y E6 E6 E6 E6 E6 E6 # ARABIC LETTER NOON +E7 0647 L Y E7 E7 E7 E7 E7 E7 # ARABIC LETTER HEH +E8 0648 L Y E8 E8 E8 E8 E8 E8 # ARABIC LETTER WAW +E9 0649 L Y E9 E9 E9 E9 E9 E9 # ARABIC LETTER ALEF MAKSURA +EA 064A L Y EA EA EA EA EA EA # ARABIC LETTER YEH +EB 064B M M EB EB EB 00 00 00 # ARABIC FATHATAN +EC 064C M M EC EC EC 00 00 00 # ARABIC DAMMATAN +ED 064D M M ED ED ED 00 00 00 # ARABIC KASRATAN +EE 064E M M EE EE EE 00 00 00 # ARABIC FATHA +EF 064F M M EF EF EF 00 00 00 # ARABIC DAMMA +F0 0650 M M F0 F0 F0 00 00 00 # ARABIC KASRA +F1 0651 M M F1 F1 F1 00 00 00 # ARABIC SHADDA +F2 0652 M M F2 F2 F2 00 00 00 # ARABIC SUKUN +F3 E0F3 . N F3 F3 F3 00 00 00 # <unused> +F4 E0F4 . N F4 F4 F4 00 00 00 # <unused> +F5 E0F5 . N F5 F5 F5 00 00 00 # <unused> +F6 E0F6 . N F6 F6 F6 00 00 00 # <unused> +F7 E0F7 . N F7 F7 F7 00 00 00 # <unused> +F8 E0F8 . N F8 F8 F8 00 00 00 # <unused> +F9 E0F9 . N F9 F9 F9 00 00 00 # <unused> +FA E0FA . N FA FA FA 00 00 00 # <unused> +FB E0FB . N FB FB FB 00 00 00 # <unused> +FC E0FC . N FC FC FC 00 00 00 # <unused> +FD E0FD . N FD FD FD 00 00 00 # <unused> +FE E0FE . N FE FE FE 00 00 00 # <unused> +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/iso-8859-7.cmap b/assets/data/iso-8859-7.cmap new file mode 100644 index 0000000..76407a3 --- /dev/null +++ b/assets/data/iso-8859-7.cmap @@ -0,0 +1,2145 @@ +INTERNAL +/ +N 1220 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A6 > A6 +00A7 > A7 +00A8 > A8 / + N 1 + 0301 > B5 + . +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B7 > B7 +00BB > BB +00BD > BD +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037A > AA +037E > 3B +0384 > B4 +0385 > B5 +0386 > B6 +0387 > B7 +0388 > B8 +0389 > B9 +038A > BA +038C > BC +038E > BE +038F > BF +0390 > C0 +0391 > C1 / + N 1 + 0301 > B6 + . +0392 > C2 +0393 > C3 +0394 > C4 +0395 > C5 / + N 1 + 0301 > B8 + . +0396 > C6 +0397 > C7 / + N 1 + 0301 > B9 + . +0398 > C8 +0399 > C9 / + N 2 + 0301 > BA + 0308 > DA + . +039A > CA +039B > CB +039C > CC +039D > CD +039E > CE +039F > CF / + N 1 + 0301 > BC + . +03A0 > D0 +03A1 > D1 +03A3 > D3 +03A4 > D4 +03A5 > D5 / + N 2 + 0301 > BE + 0308 > DB + . +03A6 > D6 +03A7 > D7 +03A8 > D8 +03A9 > D9 / + N 1 + 0301 > BF + . +03AA > DA +03AB > DB +03AC > DC +03AD > DD +03AE > DE +03AF > DF +03B0 > E0 +03B1 > E1 / + N 1 + 0301 > DC + . +03B2 > E2 +03B3 > E3 +03B4 > E4 +03B5 > E5 / + N 1 + 0301 > DD + . +03B6 > E6 +03B7 > E7 / + N 1 + 0301 > DE + . +03B8 > E8 +03B9 > E9 / + N 2 + 0301 > DF + 0308 > FA / + N 1 + 0301 > C0 + . + . +03BA > EA +03BB > EB +03BC > EC +03BD > ED +03BE > EE +03BF > EF / + N 1 + 0301 > FC + . +03C0 > F0 +03C1 > F1 +03C2 > F2 +03C3 > F3 +03C4 > F4 +03C5 > F5 / + N 2 + 0301 > FD + 0308 > FB / + N 1 + 0301 > E0 + . + . +03C6 > F6 +03C7 > F7 +03C8 > F8 +03C9 > F9 / + N 1 + 0301 > FE + . +03CA > FA / + N 1 + 0301 > C0 + . +03CB > FB / + N 1 + 0301 > E0 + . +03CC > FC +03CD > FD +03CE > FE +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1F00 > E1 # unsup: 03B1 0313 +1F01 > E1 # unsup: 03B1 0314 +1F02 > E1 # unsup: 03B1 0313 0300 +1F03 > E1 # unsup: 03B1 0314 0300 +1F04 > E1 # unsup: 03B1 0313 0301 +1F05 > E1 # unsup: 03B1 0314 0301 +1F06 > E1 # unsup: 03B1 0313 0342 +1F07 > E1 # unsup: 03B1 0314 0342 +1F08 > C1 # unsup: 0391 0313 +1F09 > C1 # unsup: 0391 0314 +1F0A > C1 # unsup: 0391 0313 0300 +1F0B > C1 # unsup: 0391 0314 0300 +1F0C > C1 # unsup: 0391 0313 0301 +1F0D > C1 # unsup: 0391 0314 0301 +1F0E > C1 # unsup: 0391 0313 0342 +1F0F > C1 # unsup: 0391 0314 0342 +1F10 > E5 # unsup: 03B5 0313 +1F11 > E5 # unsup: 03B5 0314 +1F12 > E5 # unsup: 03B5 0313 0300 +1F13 > E5 # unsup: 03B5 0314 0300 +1F14 > E5 # unsup: 03B5 0313 0301 +1F15 > E5 # unsup: 03B5 0314 0301 +1F18 > C5 # unsup: 0395 0313 +1F19 > C5 # unsup: 0395 0314 +1F1A > C5 # unsup: 0395 0313 0300 +1F1B > C5 # unsup: 0395 0314 0300 +1F1C > C5 # unsup: 0395 0313 0301 +1F1D > C5 # unsup: 0395 0314 0301 +1F20 > E7 # unsup: 03B7 0313 +1F21 > E7 # unsup: 03B7 0314 +1F22 > E7 # unsup: 03B7 0313 0300 +1F23 > E7 # unsup: 03B7 0314 0300 +1F24 > E7 # unsup: 03B7 0313 0301 +1F25 > E7 # unsup: 03B7 0314 0301 +1F26 > E7 # unsup: 03B7 0313 0342 +1F27 > E7 # unsup: 03B7 0314 0342 +1F28 > C7 # unsup: 0397 0313 +1F29 > C7 # unsup: 0397 0314 +1F2A > C7 # unsup: 0397 0313 0300 +1F2B > C7 # unsup: 0397 0314 0300 +1F2C > C7 # unsup: 0397 0313 0301 +1F2D > C7 # unsup: 0397 0314 0301 +1F2E > C7 # unsup: 0397 0313 0342 +1F2F > C7 # unsup: 0397 0314 0342 +1F30 > E9 # unsup: 03B9 0313 +1F31 > E9 # unsup: 03B9 0314 +1F32 > E9 # unsup: 03B9 0313 0300 +1F33 > E9 # unsup: 03B9 0314 0300 +1F34 > E9 # unsup: 03B9 0313 0301 +1F35 > E9 # unsup: 03B9 0314 0301 +1F36 > E9 # unsup: 03B9 0313 0342 +1F37 > E9 # unsup: 03B9 0314 0342 +1F38 > C9 # unsup: 0399 0313 +1F39 > C9 # unsup: 0399 0314 +1F3A > C9 # unsup: 0399 0313 0300 +1F3B > C9 # unsup: 0399 0314 0300 +1F3C > C9 # unsup: 0399 0313 0301 +1F3D > C9 # unsup: 0399 0314 0301 +1F3E > C9 # unsup: 0399 0313 0342 +1F3F > C9 # unsup: 0399 0314 0342 +1F40 > EF # unsup: 03BF 0313 +1F41 > EF # unsup: 03BF 0314 +1F42 > EF # unsup: 03BF 0313 0300 +1F43 > EF # unsup: 03BF 0314 0300 +1F44 > EF # unsup: 03BF 0313 0301 +1F45 > EF # unsup: 03BF 0314 0301 +1F48 > CF # unsup: 039F 0313 +1F49 > CF # unsup: 039F 0314 +1F4A > CF # unsup: 039F 0313 0300 +1F4B > CF # unsup: 039F 0314 0300 +1F4C > CF # unsup: 039F 0313 0301 +1F4D > CF # unsup: 039F 0314 0301 +1F50 > F5 # unsup: 03C5 0313 +1F51 > F5 # unsup: 03C5 0314 +1F52 > F5 # unsup: 03C5 0313 0300 +1F53 > F5 # unsup: 03C5 0314 0300 +1F54 > F5 # unsup: 03C5 0313 0301 +1F55 > F5 # unsup: 03C5 0314 0301 +1F56 > F5 # unsup: 03C5 0313 0342 +1F57 > F5 # unsup: 03C5 0314 0342 +1F59 > D5 # unsup: 03A5 0314 +1F5B > D5 # unsup: 03A5 0314 0300 +1F5D > D5 # unsup: 03A5 0314 0301 +1F5F > D5 # unsup: 03A5 0314 0342 +1F60 > F9 # unsup: 03C9 0313 +1F61 > F9 # unsup: 03C9 0314 +1F62 > F9 # unsup: 03C9 0313 0300 +1F63 > F9 # unsup: 03C9 0314 0300 +1F64 > F9 # unsup: 03C9 0313 0301 +1F65 > F9 # unsup: 03C9 0314 0301 +1F66 > F9 # unsup: 03C9 0313 0342 +1F67 > F9 # unsup: 03C9 0314 0342 +1F68 > D9 # unsup: 03A9 0313 +1F69 > D9 # unsup: 03A9 0314 +1F6A > D9 # unsup: 03A9 0313 0300 +1F6B > D9 # unsup: 03A9 0314 0300 +1F6C > D9 # unsup: 03A9 0313 0301 +1F6D > D9 # unsup: 03A9 0314 0301 +1F6E > D9 # unsup: 03A9 0313 0342 +1F6F > D9 # unsup: 03A9 0314 0342 +1F70 > E1 # unsup: 03B1 0300 +1F71 > DC +1F72 > E5 # unsup: 03B5 0300 +1F73 > DD +1F74 > E7 # unsup: 03B7 0300 +1F75 > DE +1F76 > E9 # unsup: 03B9 0300 +1F77 > DF +1F78 > EF # unsup: 03BF 0300 +1F79 > FC +1F7A > F5 # unsup: 03C5 0300 +1F7B > FD +1F7C > F9 # unsup: 03C9 0300 +1F7D > FE +1F80 > E1 # unsup: 03B1 0313 0345 +1F81 > E1 # unsup: 03B1 0314 0345 +1F82 > E1 # unsup: 03B1 0313 0300 0345 +1F83 > E1 # unsup: 03B1 0314 0300 0345 +1F84 > E1 # unsup: 03B1 0313 0301 0345 +1F85 > E1 # unsup: 03B1 0314 0301 0345 +1F86 > E1 # unsup: 03B1 0313 0342 0345 +1F87 > E1 # unsup: 03B1 0314 0342 0345 +1F88 > C1 # unsup: 0391 0313 0345 +1F89 > C1 # unsup: 0391 0314 0345 +1F8A > C1 # unsup: 0391 0313 0300 0345 +1F8B > C1 # unsup: 0391 0314 0300 0345 +1F8C > C1 # unsup: 0391 0313 0301 0345 +1F8D > C1 # unsup: 0391 0314 0301 0345 +1F8E > C1 # unsup: 0391 0313 0342 0345 +1F8F > C1 # unsup: 0391 0314 0342 0345 +1F90 > E7 # unsup: 03B7 0313 0345 +1F91 > E7 # unsup: 03B7 0314 0345 +1F92 > E7 # unsup: 03B7 0313 0300 0345 +1F93 > E7 # unsup: 03B7 0314 0300 0345 +1F94 > E7 # unsup: 03B7 0313 0301 0345 +1F95 > E7 # unsup: 03B7 0314 0301 0345 +1F96 > E7 # unsup: 03B7 0313 0342 0345 +1F97 > E7 # unsup: 03B7 0314 0342 0345 +1F98 > C7 # unsup: 0397 0313 0345 +1F99 > C7 # unsup: 0397 0314 0345 +1F9A > C7 # unsup: 0397 0313 0300 0345 +1F9B > C7 # unsup: 0397 0314 0300 0345 +1F9C > C7 # unsup: 0397 0313 0301 0345 +1F9D > C7 # unsup: 0397 0314 0301 0345 +1F9E > C7 # unsup: 0397 0313 0342 0345 +1F9F > C7 # unsup: 0397 0314 0342 0345 +1FA0 > F9 # unsup: 03C9 0313 0345 +1FA1 > F9 # unsup: 03C9 0314 0345 +1FA2 > F9 # unsup: 03C9 0313 0300 0345 +1FA3 > F9 # unsup: 03C9 0314 0300 0345 +1FA4 > F9 # unsup: 03C9 0313 0301 0345 +1FA5 > F9 # unsup: 03C9 0314 0301 0345 +1FA6 > F9 # unsup: 03C9 0313 0342 0345 +1FA7 > F9 # unsup: 03C9 0314 0342 0345 +1FA8 > D9 # unsup: 03A9 0313 0345 +1FA9 > D9 # unsup: 03A9 0314 0345 +1FAA > D9 # unsup: 03A9 0313 0300 0345 +1FAB > D9 # unsup: 03A9 0314 0300 0345 +1FAC > D9 # unsup: 03A9 0313 0301 0345 +1FAD > D9 # unsup: 03A9 0314 0301 0345 +1FAE > D9 # unsup: 03A9 0313 0342 0345 +1FAF > D9 # unsup: 03A9 0314 0342 0345 +1FB0 > E1 # unsup: 03B1 0306 +1FB1 > E1 # unsup: 03B1 0304 +1FB2 > E1 # unsup: 03B1 0300 0345 +1FB3 > E1 # unsup: 03B1 0345 +1FB4 > DC # unsup: 03AC 0345 +1FB6 > E1 # unsup: 03B1 0342 +1FB7 > E1 # unsup: 03B1 0342 0345 +1FB8 > C1 # unsup: 0391 0306 +1FB9 > C1 # unsup: 0391 0304 +1FBA > C1 # unsup: 0391 0300 +1FBB > B6 +1FBC > C1 # unsup: 0391 0345 +1FBE > E9 +1FC1 > A8 # unsup: 00A8 0342 +1FC2 > E7 # unsup: 03B7 0300 0345 +1FC3 > E7 # unsup: 03B7 0345 +1FC4 > DE # unsup: 03AE 0345 +1FC6 > E7 # unsup: 03B7 0342 +1FC7 > E7 # unsup: 03B7 0342 0345 +1FC8 > C5 # unsup: 0395 0300 +1FC9 > B8 +1FCA > C7 # unsup: 0397 0300 +1FCB > B9 +1FCC > C7 # unsup: 0397 0345 +1FD0 > E9 # unsup: 03B9 0306 +1FD1 > E9 # unsup: 03B9 0304 +1FD2 > FA # unsup: 03CA 0300 +1FD3 > C0 +1FD6 > E9 # unsup: 03B9 0342 +1FD7 > FA # unsup: 03CA 0342 +1FD8 > C9 # unsup: 0399 0306 +1FD9 > C9 # unsup: 0399 0304 +1FDA > C9 # unsup: 0399 0300 +1FDB > BA +1FE0 > F5 # unsup: 03C5 0306 +1FE1 > F5 # unsup: 03C5 0304 +1FE2 > FB # unsup: 03CB 0300 +1FE3 > E0 +1FE4 > F1 # unsup: 03C1 0313 +1FE5 > F1 # unsup: 03C1 0314 +1FE6 > F5 # unsup: 03C5 0342 +1FE7 > FB # unsup: 03CB 0342 +1FE8 > D5 # unsup: 03A5 0306 +1FE9 > D5 # unsup: 03A5 0304 +1FEA > D5 # unsup: 03A5 0300 +1FEB > BE +1FEC > D1 # unsup: 03A1 0314 +1FED > A8 # unsup: 00A8 0300 +1FEE > B5 +1FEF > 60 +1FF2 > F9 # unsup: 03C9 0300 0345 +1FF3 > F9 # unsup: 03C9 0345 +1FF4 > FE # unsup: 03CE 0345 +1FF6 > F9 # unsup: 03C9 0342 +1FF7 > F9 # unsup: 03C9 0342 0345 +1FF8 > CF # unsup: 039F 0300 +1FF9 > BC +1FFA > D9 # unsup: 03A9 0300 +1FFB > BF +1FFC > D9 # unsup: 03A9 0345 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2015 > AF +2018 > A1 +2019 > A2 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +20AC > A4 +20AF > A5 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE4 > A6 # compat +. + +STRICT +/ +N 274 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A3 > A3 +00A6 > A6 +00A7 > A7 +00A8 > A8 / + N 1 + 0301 > B5 + . +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B7 > B7 +00BB > BB +00BD > BD +037A > AA +037E > 3B +0384 > B4 +0385 > B5 +0386 > B6 +0387 > B7 +0388 > B8 +0389 > B9 +038A > BA +038C > BC +038E > BE +038F > BF +0390 > C0 +0391 > C1 / + N 1 + 0301 > B6 + . +0392 > C2 +0393 > C3 +0394 > C4 +0395 > C5 / + N 1 + 0301 > B8 + . +0396 > C6 +0397 > C7 / + N 1 + 0301 > B9 + . +0398 > C8 +0399 > C9 / + N 2 + 0301 > BA + 0308 > DA + . +039A > CA +039B > CB +039C > CC +039D > CD +039E > CE +039F > CF / + N 1 + 0301 > BC + . +03A0 > D0 +03A1 > D1 +03A3 > D3 +03A4 > D4 +03A5 > D5 / + N 2 + 0301 > BE + 0308 > DB + . +03A6 > D6 +03A7 > D7 +03A8 > D8 +03A9 > D9 / + N 1 + 0301 > BF + . +03AA > DA +03AB > DB +03AC > DC +03AD > DD +03AE > DE +03AF > DF +03B0 > E0 +03B1 > E1 / + N 1 + 0301 > DC + . +03B2 > E2 +03B3 > E3 +03B4 > E4 +03B5 > E5 / + N 1 + 0301 > DD + . +03B6 > E6 +03B7 > E7 / + N 1 + 0301 > DE + . +03B8 > E8 +03B9 > E9 / + N 2 + 0301 > DF + 0308 > FA / + N 1 + 0301 > C0 + . + . +03BA > EA +03BB > EB +03BC > EC +03BD > ED +03BE > EE +03BF > EF / + N 1 + 0301 > FC + . +03C0 > F0 +03C1 > F1 +03C2 > F2 +03C3 > F3 +03C4 > F4 +03C5 > F5 / + N 2 + 0301 > FD + 0308 > FB / + N 1 + 0301 > E0 + . + . +03C6 > F6 +03C7 > F7 +03C8 > F8 +03C9 > F9 / + N 1 + 0301 > FE + . +03CA > FA / + N 1 + 0301 > C0 + . +03CB > FB / + N 1 + 0301 > E0 + . +03CC > FC +03CD > FD +03CE > FE +1F71 > DC +1F73 > DD +1F75 > DE +1F77 > DF +1F79 > FC +1F7B > FD +1F7D > FE +1FBB > B6 +1FBE > E9 +1FC9 > B8 +1FCB > B9 +1FD3 > C0 +1FDB > BA +1FE3 > E0 +1FEB > BE +1FEE > B5 +1FEF > 60 +1FF9 > BC +1FFB > BF +2015 > AF +2018 > A1 +2019 > A2 +20AC > A4 +20AF > A5 +. + +NFD +/ +N 253 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 2018 +A2 > 2019 +A3 > 00A3 +A4 > 20AC +A5 > 20AF +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 037A +AB > 00AB +AC > 00AC +AD > 00AD +AF > 2015 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 0384 +B5 > 00A8 0301 +B6 > 0391 0301 +B7 > 00B7 +B8 > 0395 0301 +B9 > 0397 0301 +BA > 0399 0301 +BB > 00BB +BC > 039F 0301 +BD > 00BD +BE > 03A5 0301 +BF > 03A9 0301 +C0 > 03B9 0308 0301 +C1 > 0391 +C2 > 0392 +C3 > 0393 +C4 > 0394 +C5 > 0395 +C6 > 0396 +C7 > 0397 +C8 > 0398 +C9 > 0399 +CA > 039A +CB > 039B +CC > 039C +CD > 039D +CE > 039E +CF > 039F +D0 > 03A0 +D1 > 03A1 +D3 > 03A3 +D4 > 03A4 +D5 > 03A5 +D6 > 03A6 +D7 > 03A7 +D8 > 03A8 +D9 > 03A9 +DA > 0399 0308 +DB > 03A5 0308 +DC > 03B1 0301 +DD > 03B5 0301 +DE > 03B7 0301 +DF > 03B9 0301 +E0 > 03C5 0308 0301 +E1 > 03B1 +E2 > 03B2 +E3 > 03B3 +E4 > 03B4 +E5 > 03B5 +E6 > 03B6 +E7 > 03B7 +E8 > 03B8 +E9 > 03B9 +EA > 03BA +EB > 03BB +EC > 03BC +ED > 03BD +EE > 03BE +EF > 03BF +F0 > 03C0 +F1 > 03C1 +F2 > 03C2 +F3 > 03C3 +F4 > 03C4 +F5 > 03C5 +F6 > 03C6 +F7 > 03C7 +F8 > 03C8 +F9 > 03C9 +FA > 03B9 0308 +FB > 03C5 0308 +FC > 03BF 0301 +FD > 03C5 0301 +FE > 03C9 0301 +. + +NFC +/ +N 253 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 2018 +A2 > 2019 +A3 > 00A3 +A4 > 20AC +A5 > 20AF +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 037A +AB > 00AB +AC > 00AC +AD > 00AD +AF > 2015 +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 0384 +B5 > 0385 +B6 > 0386 +B7 > 00B7 +B8 > 0388 +B9 > 0389 +BA > 038A +BB > 00BB +BC > 038C +BD > 00BD +BE > 038E +BF > 038F +C0 > 0390 +C1 > 0391 +C2 > 0392 +C3 > 0393 +C4 > 0394 +C5 > 0395 +C6 > 0396 +C7 > 0397 +C8 > 0398 +C9 > 0399 +CA > 039A +CB > 039B +CC > 039C +CD > 039D +CE > 039E +CF > 039F +D0 > 03A0 +D1 > 03A1 +D3 > 03A3 +D4 > 03A4 +D5 > 03A5 +D6 > 03A6 +D7 > 03A7 +D8 > 03A8 +D9 > 03A9 +DA > 03AA +DB > 03AB +DC > 03AC +DD > 03AD +DE > 03AE +DF > 03AF +E0 > 03B0 +E1 > 03B1 +E2 > 03B2 +E3 > 03B3 +E4 > 03B4 +E5 > 03B5 +E6 > 03B6 +E7 > 03B7 +E8 > 03B8 +E9 > 03B9 +EA > 03BA +EB > 03BB +EC > 03BC +ED > 03BD +EE > 03BE +EF > 03BF +F0 > 03C0 +F1 > 03C1 +F2 > 03C2 +F3 > 03C3 +F4 > 03C4 +F5 > 03C5 +F6 > 03C6 +F7 > 03C7 +F8 > 03C8 +F9 > 03C9 +FA > 03CA +FB > 03CB +FC > 03CC +FD > 03CD +FE > 03CE +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-7.cset b/assets/data/iso-8859-7.cset new file mode 100644 index 0000000..99022e4 --- /dev/null +++ b/assets/data/iso-8859-7.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-7 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 2018 - Y A1 A1 A1 00 00 00 # LEFT SINGLE QUOTATION MARK +A2 2019 - Y A2 A2 A2 00 00 00 # RIGHT SINGLE QUOTATION MARK +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 20AC - Y A4 A4 A4 00 00 00 # EURO SIGN +A5 20AF - Y A5 A5 A5 00 00 00 # DRACHMA SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 037A M Y AA AA AA 00 00 00 # GREEK YPOGEGRAMMENI +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE E0AE . N AE AE AE 00 00 00 # <unused> +AF 2015 - Y AF AF AF 00 00 00 # HORIZONTAL BAR +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 0384 - Y B4 B4 B4 00 00 00 # GREEK TONOS +B5 0385 - Y B5 B5 B5 00 00 00 # GREEK DIALYTIKA TONOS +B6 0386 L Y B6 DC B6 C1 2A 00 # GREEK CAPITAL LETTER ALPHA WITH TONOS +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 0388 L Y B8 DD B8 C5 2A 00 # GREEK CAPITAL LETTER EPSILON WITH TONOS +B9 0389 L Y B9 DE B9 C7 2A 00 # GREEK CAPITAL LETTER ETA WITH TONOS +BA 038A L Y BA DF BA C9 2A 00 # GREEK CAPITAL LETTER IOTA WITH TONOS +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 038C L Y BC FC BC CF 2A 00 # GREEK CAPITAL LETTER OMICRON WITH TONOS +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 038E L Y BE FD BE D5 2A 00 # GREEK CAPITAL LETTER UPSILON WITH TONOS +BF 038F L Y BF FE BF D9 2A 00 # GREEK CAPITAL LETTER OMEGA WITH TONOS +C0 0390 L Y C0 C0 C0 E9 2A 00 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +C1 0391 L Y C1 E1 C1 C1 2A 00 # GREEK CAPITAL LETTER ALPHA +C2 0392 L Y C2 E2 C2 C2 E2 E2 # GREEK CAPITAL LETTER BETA +C3 0393 L Y C3 E3 C3 C3 E3 E3 # GREEK CAPITAL LETTER GAMMA +C4 0394 L Y C4 E4 C4 C4 E4 E4 # GREEK CAPITAL LETTER DELTA +C5 0395 L Y C5 E5 C5 C5 2A 00 # GREEK CAPITAL LETTER EPSILON +C6 0396 L Y C6 E6 C6 C6 E6 E6 # GREEK CAPITAL LETTER ZETA +C7 0397 L Y C7 E7 C7 C7 2A 00 # GREEK CAPITAL LETTER ETA +C8 0398 L Y C8 E8 C8 C8 E8 E8 # GREEK CAPITAL LETTER THETA +C9 0399 L Y C9 E9 C9 C9 2A 00 # GREEK CAPITAL LETTER IOTA +CA 039A L Y CA EA CA CA EA EA # GREEK CAPITAL LETTER KAPPA +CB 039B L Y CB EB CB CB EB EB # GREEK CAPITAL LETTER LAMDA +CC 039C L Y CC EC CC CC EC EC # GREEK CAPITAL LETTER MU +CD 039D L Y CD ED CD CD ED ED # GREEK CAPITAL LETTER NU +CE 039E L Y CE EE CE CE EE EE # GREEK CAPITAL LETTER XI +CF 039F L Y CF EF CF CF 2A 00 # GREEK CAPITAL LETTER OMICRON +D0 03A0 L Y D0 F0 D0 D0 F0 F0 # GREEK CAPITAL LETTER PI +D1 03A1 L Y D1 F1 D1 D1 F1 F1 # GREEK CAPITAL LETTER RHO +D2 E0D2 . N D2 D2 D2 00 00 00 # <unused> +D3 03A3 L Y D3 F3 D3 D3 F3 F3 # GREEK CAPITAL LETTER SIGMA +D4 03A4 L Y D4 F4 D4 D4 F4 F4 # GREEK CAPITAL LETTER TAU +D5 03A5 L Y D5 F5 D5 D5 2A 00 # GREEK CAPITAL LETTER UPSILON +D6 03A6 L Y D6 F6 D6 D6 F6 F6 # GREEK CAPITAL LETTER PHI +D7 03A7 L Y D7 F7 D7 D7 F7 F7 # GREEK CAPITAL LETTER CHI +D8 03A8 L Y D8 F8 D8 D8 F8 F8 # GREEK CAPITAL LETTER PSI +D9 03A9 L Y D9 F9 D9 D9 2A 00 # GREEK CAPITAL LETTER OMEGA +DA 03AA L Y DA FA DA C9 2A 00 # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +DB 03AB L Y DB FB DB D5 2A 00 # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +DC 03AC L Y B6 DC B6 E1 2A 00 # GREEK SMALL LETTER ALPHA WITH TONOS +DD 03AD L Y B8 DD B8 E5 2A 00 # GREEK SMALL LETTER EPSILON WITH TONOS +DE 03AE L Y B9 DE B9 E7 2A 00 # GREEK SMALL LETTER ETA WITH TONOS +DF 03AF L Y BA DF BA E9 2A 00 # GREEK SMALL LETTER IOTA WITH TONOS +E0 03B0 L Y E0 E0 E0 F5 2A 00 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +E1 03B1 L Y C1 E1 C1 E1 2A 00 # GREEK SMALL LETTER ALPHA +E2 03B2 L Y C2 E2 C2 E2 E2 E2 # GREEK SMALL LETTER BETA +E3 03B3 L Y C3 E3 C3 E3 E3 E3 # GREEK SMALL LETTER GAMMA +E4 03B4 L Y C4 E4 C4 E4 E4 E4 # GREEK SMALL LETTER DELTA +E5 03B5 L Y C5 E5 C5 E5 2A 00 # GREEK SMALL LETTER EPSILON +E6 03B6 L Y C6 E6 C6 E6 E6 E6 # GREEK SMALL LETTER ZETA +E7 03B7 L Y C7 E7 C7 E7 2A 00 # GREEK SMALL LETTER ETA +E8 03B8 L Y C8 E8 C8 E8 E8 E8 # GREEK SMALL LETTER THETA +E9 03B9 L Y C9 E9 C9 E9 2A 00 # GREEK SMALL LETTER IOTA +EA 03BA L Y CA EA CA EA EA EA # GREEK SMALL LETTER KAPPA +EB 03BB L Y CB EB CB EB EB EB # GREEK SMALL LETTER LAMDA +EC 03BC L Y CC EC CC EC EC EC # GREEK SMALL LETTER MU +ED 03BD L Y CD ED CD ED ED ED # GREEK SMALL LETTER NU +EE 03BE L Y CE EE CE EE EE EE # GREEK SMALL LETTER XI +EF 03BF L Y CF EF CF EF 2A 00 # GREEK SMALL LETTER OMICRON +F0 03C0 L Y D0 F0 D0 F0 F0 F0 # GREEK SMALL LETTER PI +F1 03C1 L Y D1 F1 D1 F1 F1 F1 # GREEK SMALL LETTER RHO +F2 03C2 L Y D3 F2 D3 F2 F2 F2 # GREEK SMALL LETTER FINAL SIGMA +F3 03C3 L Y D3 F3 D3 F3 F3 F3 # GREEK SMALL LETTER SIGMA +F4 03C4 L Y D4 F4 D4 F4 F4 F4 # GREEK SMALL LETTER TAU +F5 03C5 L Y D5 F5 D5 F5 2A 00 # GREEK SMALL LETTER UPSILON +F6 03C6 L Y D6 F6 D6 F6 F6 F6 # GREEK SMALL LETTER PHI +F7 03C7 L Y D7 F7 D7 F7 F7 F7 # GREEK SMALL LETTER CHI +F8 03C8 L Y D8 F8 D8 F8 F8 F8 # GREEK SMALL LETTER PSI +F9 03C9 L Y D9 F9 D9 F9 2A 00 # GREEK SMALL LETTER OMEGA +FA 03CA L Y DA FA DA E9 2A 00 # GREEK SMALL LETTER IOTA WITH DIALYTIKA +FB 03CB L Y DB FB DB F5 2A 00 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +FC 03CC L Y BC FC BC EF 2A 00 # GREEK SMALL LETTER OMICRON WITH TONOS +FD 03CD L Y BE FD BE F5 2A 00 # GREEK SMALL LETTER UPSILON WITH TONOS +FE 03CE L Y BF FE BF F9 2A 00 # GREEK SMALL LETTER OMEGA WITH TONOS +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/iso-8859-8.cmap b/assets/data/iso-8859-8.cmap new file mode 100644 index 0000000..675821c --- /dev/null +++ b/assets/data/iso-8859-8.cmap @@ -0,0 +1,1483 @@ +INTERNAL +/ +N 1017 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D7 > AA +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F7 > BA +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +05D0 > E0 +05D1 > E1 +05D2 > E2 +05D3 > E3 +05D4 > E4 +05D5 > E5 +05D6 > E6 +05D7 > E7 +05D8 > E8 +05D9 > E9 +05DA > EA +05DB > EB +05DC > EC +05DD > ED +05DE > EE +05DF > EF +05E0 > F0 +05E1 > F1 +05E2 > F2 +05E3 > F3 +05E4 > F4 +05E5 > F5 +05E6 > F6 +05E7 > F7 +05E8 > F8 +05E9 > F9 +05EA > FA +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +200E > FD +200F > FE +2017 > DF +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB1D > E9 # unsup: 05D9 05B4 +FB20 > F2 # compat +FB21 > E0 # compat +FB22 > E3 # compat +FB23 > E4 # compat +FB24 > EB # compat +FB25 > EC # compat +FB26 > ED # compat +FB27 > F8 # compat +FB28 > FA # compat +FB29 > 2B # compat +FB2A > F9 # unsup: 05E9 05C1 +FB2B > F9 # unsup: 05E9 05C2 +FB2C > F9 # unsup: 05E9 05BC 05C1 +FB2D > F9 # unsup: 05E9 05BC 05C2 +FB2E > E0 # unsup: 05D0 05B7 +FB2F > E0 # unsup: 05D0 05B8 +FB30 > E0 # unsup: 05D0 05BC +FB31 > E1 # unsup: 05D1 05BC +FB32 > E2 # unsup: 05D2 05BC +FB33 > E3 # unsup: 05D3 05BC +FB34 > E4 # unsup: 05D4 05BC +FB35 > E5 # unsup: 05D5 05BC +FB36 > E6 # unsup: 05D6 05BC +FB38 > E8 # unsup: 05D8 05BC +FB39 > E9 # unsup: 05D9 05BC +FB3A > EA # unsup: 05DA 05BC +FB3B > EB # unsup: 05DB 05BC +FB3C > EC # unsup: 05DC 05BC +FB3E > EE # unsup: 05DE 05BC +FB40 > F0 # unsup: 05E0 05BC +FB41 > F1 # unsup: 05E1 05BC +FB43 > F3 # unsup: 05E3 05BC +FB44 > F4 # unsup: 05E4 05BC +FB46 > F6 # unsup: 05E6 05BC +FB47 > F7 # unsup: 05E7 05BC +FB48 > F8 # unsup: 05E8 05BC +FB49 > F9 # unsup: 05E9 05BC +FB4A > FA # unsup: 05EA 05BC +FB4B > E5 # unsup: 05D5 05B9 +FB4C > E1 # unsup: 05D1 05BF +FB4D > EB # unsup: 05DB 05BF +FB4E > F4 # unsup: 05E4 05BF +FB4F > E0 EC # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 224 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00D7 > AA +00F7 > BA +037E > 3B +0387 > B7 +05D0 > E0 +05D1 > E1 +05D2 > E2 +05D3 > E3 +05D4 > E4 +05D5 > E5 +05D6 > E6 +05D7 > E7 +05D8 > E8 +05D9 > E9 +05DA > EA +05DB > EB +05DC > EC +05DD > ED +05DE > EE +05DF > EF +05E0 > F0 +05E1 > F1 +05E2 > F2 +05E3 > F3 +05E4 > F4 +05E5 > F5 +05E6 > F6 +05E7 > F7 +05E8 > F8 +05E9 > F9 +05EA > FA +1FEF > 60 +1FFD > B4 +200E > FD +200F > FE +2017 > DF +. + +NFD +/ +N 220 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00D7 +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00F7 +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +DF > 2017 +E0 > 05D0 +E1 > 05D1 +E2 > 05D2 +E3 > 05D3 +E4 > 05D4 +E5 > 05D5 +E6 > 05D6 +E7 > 05D7 +E8 > 05D8 +E9 > 05D9 +EA > 05DA +EB > 05DB +EC > 05DC +ED > 05DD +EE > 05DE +EF > 05DF +F0 > 05E0 +F1 > 05E1 +F2 > 05E2 +F3 > 05E3 +F4 > 05E4 +F5 > 05E5 +F6 > 05E6 +F7 > 05E7 +F8 > 05E8 +F9 > 05E9 +FA > 05EA +FD > 200E +FE > 200F +. + +NFC += NFD +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-8.cset b/assets/data/iso-8859-8.cset new file mode 100644 index 0000000..7c80280 --- /dev/null +++ b/assets/data/iso-8859-8.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-8 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 E0A1 . N A1 A1 A1 00 00 00 # <unused> +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00D7 - Y AA AA AA 00 00 00 # MULTIPLICATION SIGN +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00F7 - Y BA BA BA 00 00 00 # DIVISION SIGN +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF E0BF . N BF BF BF 00 00 00 # <unused> +C0 E0C0 . N C0 C0 C0 00 00 00 # <unused> +C1 E0C1 . N C1 C1 C1 00 00 00 # <unused> +C2 E0C2 . N C2 C2 C2 00 00 00 # <unused> +C3 E0C3 . N C3 C3 C3 00 00 00 # <unused> +C4 E0C4 . N C4 C4 C4 00 00 00 # <unused> +C5 E0C5 . N C5 C5 C5 00 00 00 # <unused> +C6 E0C6 . N C6 C6 C6 00 00 00 # <unused> +C7 E0C7 . N C7 C7 C7 00 00 00 # <unused> +C8 E0C8 . N C8 C8 C8 00 00 00 # <unused> +C9 E0C9 . N C9 C9 C9 00 00 00 # <unused> +CA E0CA . N CA CA CA 00 00 00 # <unused> +CB E0CB . N CB CB CB 00 00 00 # <unused> +CC E0CC . N CC CC CC 00 00 00 # <unused> +CD E0CD . N CD CD CD 00 00 00 # <unused> +CE E0CE . N CE CE CE 00 00 00 # <unused> +CF E0CF . N CF CF CF 00 00 00 # <unused> +D0 E0D0 . N D0 D0 D0 00 00 00 # <unused> +D1 E0D1 . N D1 D1 D1 00 00 00 # <unused> +D2 E0D2 . N D2 D2 D2 00 00 00 # <unused> +D3 E0D3 . N D3 D3 D3 00 00 00 # <unused> +D4 E0D4 . N D4 D4 D4 00 00 00 # <unused> +D5 E0D5 . N D5 D5 D5 00 00 00 # <unused> +D6 E0D6 . N D6 D6 D6 00 00 00 # <unused> +D7 E0D7 . N D7 D7 D7 00 00 00 # <unused> +D8 E0D8 . N D8 D8 D8 00 00 00 # <unused> +D9 E0D9 . N D9 D9 D9 00 00 00 # <unused> +DA E0DA . N DA DA DA 00 00 00 # <unused> +DB E0DB . N DB DB DB 00 00 00 # <unused> +DC E0DC . N DC DC DC 00 00 00 # <unused> +DD E0DD . N DD DD DD 00 00 00 # <unused> +DE E0DE . N DE DE DE 00 00 00 # <unused> +DF 2017 - Y DF DF DF 00 00 00 # DOUBLE LOW LINE +E0 05D0 L Y E0 E0 E0 E0 E0 E0 # HEBREW LETTER ALEF +E1 05D1 L Y E1 E1 E1 E1 E1 E1 # HEBREW LETTER BET +E2 05D2 L Y E2 E2 E2 E2 E2 E2 # HEBREW LETTER GIMEL +E3 05D3 L Y E3 E3 E3 E3 E3 E3 # HEBREW LETTER DALET +E4 05D4 L Y E4 E4 E4 E4 E4 E4 # HEBREW LETTER HE +E5 05D5 L Y E5 E5 E5 E5 E5 E5 # HEBREW LETTER VAV +E6 05D6 L Y E6 E6 E6 E6 E6 E6 # HEBREW LETTER ZAYIN +E7 05D7 L Y E7 E7 E7 E7 E7 E7 # HEBREW LETTER HET +E8 05D8 L Y E8 E8 E8 E8 E8 E8 # HEBREW LETTER TET +E9 05D9 L Y E9 E9 E9 E9 E9 E9 # HEBREW LETTER YOD +EA 05DA L Y EA EA EA EA EA EA # HEBREW LETTER FINAL KAF +EB 05DB L Y EB EB EB EB EB EB # HEBREW LETTER KAF +EC 05DC L Y EC EC EC EC EC EC # HEBREW LETTER LAMED +ED 05DD L Y ED ED ED ED ED ED # HEBREW LETTER FINAL MEM +EE 05DE L Y EE EE EE EE EE EE # HEBREW LETTER MEM +EF 05DF L Y EF EF EF EF EF EF # HEBREW LETTER FINAL NUN +F0 05E0 L Y F0 F0 F0 F0 F0 F0 # HEBREW LETTER NUN +F1 05E1 L Y F1 F1 F1 F1 F1 F1 # HEBREW LETTER SAMEKH +F2 05E2 L Y F2 F2 F2 F2 F2 F2 # HEBREW LETTER AYIN +F3 05E3 L Y F3 F3 F3 F3 F3 F3 # HEBREW LETTER FINAL PE +F4 05E4 L Y F4 F4 F4 F4 F4 F4 # HEBREW LETTER PE +F5 05E5 L Y F5 F5 F5 F5 F5 F5 # HEBREW LETTER FINAL TSADI +F6 05E6 L Y F6 F6 F6 F6 F6 F6 # HEBREW LETTER TSADI +F7 05E7 L Y F7 F7 F7 F7 F7 F7 # HEBREW LETTER QOF +F8 05E8 L Y F8 F8 F8 F8 F8 F8 # HEBREW LETTER RESH +F9 05E9 L Y F9 F9 F9 F9 F9 F9 # HEBREW LETTER SHIN +FA 05EA L Y FA FA FA FA FA FA # HEBREW LETTER TAV +FB E0FB . N FB FB FB 00 00 00 # <unused> +FC E0FC . N FC FC FC 00 00 00 # <unused> +FD 200E - N FD FD FD 00 00 00 # LEFT-TO-RIGHT MARK +FE 200F - N FE FE FE 00 00 00 # RIGHT-TO-LEFT MARK +FF E0FF . N FF FF FF 00 00 00 # <unused> diff --git a/assets/data/iso-8859-9.cmap b/assets/data/iso-8859-9.cmap new file mode 100644 index 0000000..9f9049e --- /dev/null +++ b/assets/data/iso-8859-9.cmap @@ -0,0 +1,1937 @@ +INTERNAL +/ +N 954 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 1 + 0306 > D0 + . +0048 > 48 +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > DD + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 0327 > DE + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 1 + 0306 > F0 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 0327 > FE + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DD > 59 # unsup: 0059 0301 +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FD > 79 # unsup: 0079 0301 +00FF > FF +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > D0 +011F > F0 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > DD +0131 > FD +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C B7 # compat +0140 > 6C B7 # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > DE +015F > FE +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > DC # unsup: 00DC 0304 +01D6 > FC # unsup: 00FC 0304 +01D7 > DC # unsup: 00DC 0301 +01D8 > FC # unsup: 00FC 0301 +01D9 > DC # unsup: 00DC 030C +01DA > FC # unsup: 00FC 030C +01DB > DC # unsup: 00DC 0300 +01DC > FC # unsup: 00FC 0300 +01DE > C4 # unsup: 00C4 0304 +01DF > E4 # unsup: 00E4 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > C6 # unsup: 00C6 0304 +01E3 > E6 # unsup: 00E6 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > C5 # unsup: 00C5 0301 +01FB > E5 # unsup: 00E5 0301 +01FC > C6 # unsup: 00C6 0301 +01FD > E6 # unsup: 00E6 0301 +01FE > D8 # unsup: 00D8 0301 +01FF > F8 # unsup: 00F8 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > D6 # unsup: 00D6 0304 +022B > F6 # unsup: 00F6 0304 +022C > D5 # unsup: 00D5 0304 +022D > F5 # unsup: 00F5 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0385 > A8 # unsup: 00A8 0301 +0387 > B7 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > C7 # unsup: 00C7 0301 +1E09 > E7 # unsup: 00E7 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > CF # unsup: 00CF 0301 +1E2F > EF # unsup: 00EF 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > D5 # unsup: 00D5 0301 +1E4D > F5 # unsup: 00F5 0301 +1E4E > D5 # unsup: 00D5 0308 +1E4F > F5 # unsup: 00F5 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > C2 # unsup: 00C2 0301 +1EA5 > E2 # unsup: 00E2 0301 +1EA6 > C2 # unsup: 00C2 0300 +1EA7 > E2 # unsup: 00E2 0300 +1EA8 > C2 # unsup: 00C2 0309 +1EA9 > E2 # unsup: 00E2 0309 +1EAA > C2 # unsup: 00C2 0303 +1EAB > E2 # unsup: 00E2 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > CA # unsup: 00CA 0301 +1EBF > EA # unsup: 00EA 0301 +1EC0 > CA # unsup: 00CA 0300 +1EC1 > EA # unsup: 00EA 0300 +1EC2 > CA # unsup: 00CA 0309 +1EC3 > EA # unsup: 00EA 0309 +1EC4 > CA # unsup: 00CA 0303 +1EC5 > EA # unsup: 00EA 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > D4 # unsup: 00D4 0301 +1ED1 > F4 # unsup: 00F4 0301 +1ED2 > D4 # unsup: 00D4 0300 +1ED3 > F4 # unsup: 00F4 0300 +1ED4 > D4 # unsup: 00D4 0309 +1ED5 > F4 # unsup: 00F4 0309 +1ED6 > D4 # unsup: 00D4 0303 +1ED7 > F4 # unsup: 00F4 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FC1 > A8 # unsup: 00A8 0342 +1FED > A8 # unsup: 00A8 0300 +1FEE > A8 # unsup: 00A8 0301 +1FEF > 60 +1FFD > B4 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +FFE0 > A2 # compat +FFE1 > A3 # compat +FFE2 > AC # compat +FFE3 > AF # compat +FFE4 > A6 # compat +FFE5 > A5 # compat +. + +STRICT +/ +N 260 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 / + N 6 + 0300 > C0 + 0301 > C1 + 0302 > C2 + 0303 > C3 + 0308 > C4 + 030A > C5 + . +0042 > 42 +0043 > 43 / + N 1 + 0327 > C7 + . +0044 > 44 +0045 > 45 / + N 4 + 0300 > C8 + 0301 > C9 + 0302 > CA + 0308 > CB + . +0046 > 46 +0047 > 47 / + N 1 + 0306 > D0 + . +0048 > 48 +0049 > 49 / + N 5 + 0300 > CC + 0301 > CD + 0302 > CE + 0307 > DD + 0308 > CF + . +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E / + N 1 + 0303 > D1 + . +004F > 4F / + N 5 + 0300 > D2 + 0301 > D3 + 0302 > D4 + 0303 > D5 + 0308 > D6 + . +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 / + N 1 + 0327 > DE + . +0054 > 54 +0055 > 55 / + N 4 + 0300 > D9 + 0301 > DA + 0302 > DB + 0308 > DC + . +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 / + N 6 + 0300 > E0 + 0301 > E1 + 0302 > E2 + 0303 > E3 + 0308 > E4 + 030A > E5 + . +0062 > 62 +0063 > 63 / + N 1 + 0327 > E7 + . +0064 > 64 +0065 > 65 / + N 4 + 0300 > E8 + 0301 > E9 + 0302 > EA + 0308 > EB + . +0066 > 66 +0067 > 67 / + N 1 + 0306 > F0 + . +0068 > 68 +0069 > 69 / + N 4 + 0300 > EC + 0301 > ED + 0302 > EE + 0308 > EF + . +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E / + N 1 + 0303 > F1 + . +006F > 6F / + N 5 + 0300 > F2 + 0301 > F3 + 0302 > F4 + 0303 > F5 + 0308 > F6 + . +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 / + N 1 + 0327 > FE + . +0074 > 74 +0075 > 75 / + N 4 + 0300 > F9 + 0301 > FA + 0302 > FB + 0308 > FC + . +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 / + N 1 + 0308 > FF + . +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +0080 > 80 +0081 > 81 +0082 > 82 +0083 > 83 +0084 > 84 +0085 > 85 +0086 > 86 +0087 > 87 +0088 > 88 +0089 > 89 +008A > 8A +008B > 8B +008C > 8C +008D > 8D +008E > 8E +008F > 8F +0090 > 90 +0091 > 91 +0092 > 92 +0093 > 93 +0094 > 94 +0095 > 95 +0096 > 96 +0097 > 97 +0098 > 98 +0099 > 99 +009A > 9A +009B > 9B +009C > 9C +009D > 9D +009E > 9E +009F > 9F +00A0 > A0 +00A1 > A1 +00A2 > A2 +00A3 > A3 +00A4 > A4 +00A5 > A5 +00A6 > A6 +00A7 > A7 +00A8 > A8 +00A9 > A9 +00AA > AA +00AB > AB +00AC > AC +00AD > AD +00AE > AE +00AF > AF +00B0 > B0 +00B1 > B1 +00B2 > B2 +00B3 > B3 +00B4 > B4 +00B5 > B5 +00B6 > B6 +00B7 > B7 +00B8 > B8 +00B9 > B9 +00BA > BA +00BB > BB +00BC > BC +00BD > BD +00BE > BE +00BF > BF +00C0 > C0 +00C1 > C1 +00C2 > C2 +00C3 > C3 +00C4 > C4 +00C5 > C5 +00C6 > C6 +00C7 > C7 +00C8 > C8 +00C9 > C9 +00CA > CA +00CB > CB +00CC > CC +00CD > CD +00CE > CE +00CF > CF +00D1 > D1 +00D2 > D2 +00D3 > D3 +00D4 > D4 +00D5 > D5 +00D6 > D6 +00D7 > D7 +00D8 > D8 +00D9 > D9 +00DA > DA +00DB > DB +00DC > DC +00DF > DF +00E0 > E0 +00E1 > E1 +00E2 > E2 +00E3 > E3 +00E4 > E4 +00E5 > E5 +00E6 > E6 +00E7 > E7 +00E8 > E8 +00E9 > E9 +00EA > EA +00EB > EB +00EC > EC +00ED > ED +00EE > EE +00EF > EF +00F1 > F1 +00F2 > F2 +00F3 > F3 +00F4 > F4 +00F5 > F5 +00F6 > F6 +00F7 > F7 +00F8 > F8 +00F9 > F9 +00FA > FA +00FB > FB +00FC > FC +00FF > FF +011E > D0 +011F > F0 +0130 > DD +0131 > FD +015E > DE +015F > FE +037E > 3B +0387 > B7 +1FEF > 60 +1FFD > B4 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 0041 0300 +C1 > 0041 0301 +C2 > 0041 0302 +C3 > 0041 0303 +C4 > 0041 0308 +C5 > 0041 030A +C6 > 00C6 +C7 > 0043 0327 +C8 > 0045 0300 +C9 > 0045 0301 +CA > 0045 0302 +CB > 0045 0308 +CC > 0049 0300 +CD > 0049 0301 +CE > 0049 0302 +CF > 0049 0308 +D0 > 0047 0306 +D1 > 004E 0303 +D2 > 004F 0300 +D3 > 004F 0301 +D4 > 004F 0302 +D5 > 004F 0303 +D6 > 004F 0308 +D7 > 00D7 +D8 > 00D8 +D9 > 0055 0300 +DA > 0055 0301 +DB > 0055 0302 +DC > 0055 0308 +DD > 0049 0307 +DE > 0053 0327 +DF > 00DF +E0 > 0061 0300 +E1 > 0061 0301 +E2 > 0061 0302 +E3 > 0061 0303 +E4 > 0061 0308 +E5 > 0061 030A +E6 > 00E6 +E7 > 0063 0327 +E8 > 0065 0300 +E9 > 0065 0301 +EA > 0065 0302 +EB > 0065 0308 +EC > 0069 0300 +ED > 0069 0301 +EE > 0069 0302 +EF > 0069 0308 +F0 > 0067 0306 +F1 > 006E 0303 +F2 > 006F 0300 +F3 > 006F 0301 +F4 > 006F 0302 +F5 > 006F 0303 +F6 > 006F 0308 +F7 > 00F7 +F8 > 00F8 +F9 > 0075 0300 +FA > 0075 0301 +FB > 0075 0302 +FC > 0075 0308 +FD > 0131 +FE > 0073 0327 +FF > 0079 0308 +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 0080 +81 > 0081 +82 > 0082 +83 > 0083 +84 > 0084 +85 > 0085 +86 > 0086 +87 > 0087 +88 > 0088 +89 > 0089 +8A > 008A +8B > 008B +8C > 008C +8D > 008D +8E > 008E +8F > 008F +90 > 0090 +91 > 0091 +92 > 0092 +93 > 0093 +94 > 0094 +95 > 0095 +96 > 0096 +97 > 0097 +98 > 0098 +99 > 0099 +9A > 009A +9B > 009B +9C > 009C +9D > 009D +9E > 009E +9F > 009F +A0 > 00A0 +A1 > 00A1 +A2 > 00A2 +A3 > 00A3 +A4 > 00A4 +A5 > 00A5 +A6 > 00A6 +A7 > 00A7 +A8 > 00A8 +A9 > 00A9 +AA > 00AA +AB > 00AB +AC > 00AC +AD > 00AD +AE > 00AE +AF > 00AF +B0 > 00B0 +B1 > 00B1 +B2 > 00B2 +B3 > 00B3 +B4 > 00B4 +B5 > 00B5 +B6 > 00B6 +B7 > 00B7 +B8 > 00B8 +B9 > 00B9 +BA > 00BA +BB > 00BB +BC > 00BC +BD > 00BD +BE > 00BE +BF > 00BF +C0 > 00C0 +C1 > 00C1 +C2 > 00C2 +C3 > 00C3 +C4 > 00C4 +C5 > 00C5 +C6 > 00C6 +C7 > 00C7 +C8 > 00C8 +C9 > 00C9 +CA > 00CA +CB > 00CB +CC > 00CC +CD > 00CD +CE > 00CE +CF > 00CF +D0 > 011E +D1 > 00D1 +D2 > 00D2 +D3 > 00D3 +D4 > 00D4 +D5 > 00D5 +D6 > 00D6 +D7 > 00D7 +D8 > 00D8 +D9 > 00D9 +DA > 00DA +DB > 00DB +DC > 00DC +DD > 0130 +DE > 015E +DF > 00DF +E0 > 00E0 +E1 > 00E1 +E2 > 00E2 +E3 > 00E3 +E4 > 00E4 +E5 > 00E5 +E6 > 00E6 +E7 > 00E7 +E8 > 00E8 +E9 > 00E9 +EA > 00EA +EB > 00EB +EC > 00EC +ED > 00ED +EE > 00EE +EF > 00EF +F0 > 011F +F1 > 00F1 +F2 > 00F2 +F3 > 00F3 +F4 > 00F4 +F5 > 00F5 +F6 > 00F6 +F7 > 00F7 +F8 > 00F8 +F9 > 00F9 +FA > 00FA +FB > 00FB +FC > 00FC +FD > 0131 +FE > 015F +FF > 00FF +. + +COMP += NFC +. diff --git a/assets/data/iso-8859-9.cset b/assets/data/iso-8859-9.cset new file mode 100644 index 0000000..755241b --- /dev/null +++ b/assets/data/iso-8859-9.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += iso-8859-9 +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 0080 . N 80 80 80 00 00 00 # <unused control> +81 0081 . N 81 81 81 00 00 00 # <unused control> +82 0082 . N 82 82 82 00 00 00 # <unused control> +83 0083 . N 83 83 83 00 00 00 # <unused control> +84 0084 . N 84 84 84 00 00 00 # <unused control> +85 0085 . N 85 85 85 00 00 00 # <unused control> +86 0086 . N 86 86 86 00 00 00 # <unused control> +87 0087 . N 87 87 87 00 00 00 # <unused control> +88 0088 . N 88 88 88 00 00 00 # <unused control> +89 0089 . N 89 89 89 00 00 00 # <unused control> +8A 008A . N 8A 8A 8A 00 00 00 # <unused control> +8B 008B . N 8B 8B 8B 00 00 00 # <unused control> +8C 008C . N 8C 8C 8C 00 00 00 # <unused control> +8D 008D . N 8D 8D 8D 00 00 00 # <unused control> +8E 008E . N 8E 8E 8E 00 00 00 # <unused control> +8F 008F . N 8F 8F 8F 00 00 00 # <unused control> +90 0090 . N 90 90 90 00 00 00 # <unused control> +91 0091 . N 91 91 91 00 00 00 # <unused control> +92 0092 . N 92 92 92 00 00 00 # <unused control> +93 0093 . N 93 93 93 00 00 00 # <unused control> +94 0094 . N 94 94 94 00 00 00 # <unused control> +95 0095 . N 95 95 95 00 00 00 # <unused control> +96 0096 . N 96 96 96 00 00 00 # <unused control> +97 0097 . N 97 97 97 00 00 00 # <unused control> +98 0098 . N 98 98 98 00 00 00 # <unused control> +99 0099 . N 99 99 99 00 00 00 # <unused control> +9A 009A . N 9A 9A 9A 00 00 00 # <unused control> +9B 009B . N 9B 9B 9B 00 00 00 # <unused control> +9C 009C . N 9C 9C 9C 00 00 00 # <unused control> +9D 009D . N 9D 9D 9D 00 00 00 # <unused control> +9E 009E . N 9E 9E 9E 00 00 00 # <unused control> +9F 009F . N 9F 9F 9F 00 00 00 # <unused control> +A0 00A0 W Y A0 A0 A0 00 00 00 # NO-BREAK SPACE +A1 00A1 - Y A1 A1 A1 00 00 00 # INVERTED EXCLAMATION MARK +A2 00A2 - Y A2 A2 A2 00 00 00 # CENT SIGN +A3 00A3 - Y A3 A3 A3 00 00 00 # POUND SIGN +A4 00A4 - Y A4 A4 A4 00 00 00 # CURRENCY SIGN +A5 00A5 - Y A5 A5 A5 00 00 00 # YEN SIGN +A6 00A6 - Y A6 A6 A6 00 00 00 # BROKEN BAR +A7 00A7 - Y A7 A7 A7 00 00 00 # SECTION SIGN +A8 00A8 - Y A8 A8 A8 00 00 00 # DIAERESIS +A9 00A9 - Y A9 A9 A9 00 00 00 # COPYRIGHT SIGN +AA 00AA A Y AA AA AA 00 00 00 # FEMININE ORDINAL INDICATOR +AB 00AB - Y AB AB AB 00 00 00 # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC 00AC - Y AC AC AC 00 00 00 # NOT SIGN +AD 00AD H N AD AD AD 00 00 00 # SOFT HYPHEN +AE 00AE - Y AE AE AE 00 00 00 # REGISTERED SIGN +AF 00AF - Y AF AF AF 00 00 00 # MACRON +B0 00B0 - Y B0 B0 B0 00 00 00 # DEGREE SIGN +B1 00B1 - Y B1 B1 B1 00 00 00 # PLUS-MINUS SIGN +B2 00B2 - Y B2 B2 B2 00 00 00 # SUPERSCRIPT TWO +B3 00B3 - Y B3 B3 B3 00 00 00 # SUPERSCRIPT THREE +B4 00B4 - Y B4 B4 B4 00 00 00 # ACUTE ACCENT +B5 00B5 A Y B5 B5 B5 00 00 00 # MICRO SIGN +B6 00B6 - Y B6 B6 B6 00 00 00 # PILCROW SIGN +B7 00B7 - Y B7 B7 B7 00 00 00 # MIDDLE DOT +B8 00B8 - Y B8 B8 B8 00 00 00 # CEDILLA +B9 00B9 - Y B9 B9 B9 00 00 00 # SUPERSCRIPT ONE +BA 00BA A Y BA BA BA 00 00 00 # MASCULINE ORDINAL INDICATOR +BB 00BB - Y BB BB BB 00 00 00 # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC 00BC - Y BC BC BC 00 00 00 # VULGAR FRACTION ONE QUARTER +BD 00BD - Y BD BD BD 00 00 00 # VULGAR FRACTION ONE HALF +BE 00BE - Y BE BE BE 00 00 00 # VULGAR FRACTION THREE QUARTERS +BF 00BF - Y BF BF BF 00 00 00 # INVERTED QUESTION MARK +C0 00C0 L Y C0 E0 C0 41 2A 00 # LATIN CAPITAL LETTER A WITH GRAVE +C1 00C1 L Y C1 E1 C1 41 2A 00 # LATIN CAPITAL LETTER A WITH ACUTE +C2 00C2 L Y C2 E2 C2 41 2A 00 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 00C3 L Y C3 E3 C3 41 2A 00 # LATIN CAPITAL LETTER A WITH TILDE +C4 00C4 L Y C4 E4 C4 41 2A 00 # LATIN CAPITAL LETTER A WITH DIAERESIS +C5 00C5 L Y C5 E5 C5 41 2A 00 # LATIN CAPITAL LETTER A WITH RING ABOVE +C6 00C6 L Y C6 E6 C6 C6 2A 00 # LATIN CAPITAL LETTER AE +C7 00C7 L Y C7 E7 C7 43 63 63 # LATIN CAPITAL LETTER C WITH CEDILLA +C8 00C8 L Y C8 E8 C8 45 2A 00 # LATIN CAPITAL LETTER E WITH GRAVE +C9 00C9 L Y C9 E9 C9 45 2A 00 # LATIN CAPITAL LETTER E WITH ACUTE +CA 00CA L Y CA EA CA 45 2A 00 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB 00CB L Y CB EB CB 45 2A 00 # LATIN CAPITAL LETTER E WITH DIAERESIS +CC 00CC L Y CC EC CC 49 2A 00 # LATIN CAPITAL LETTER I WITH GRAVE +CD 00CD L Y CD ED CD 49 2A 00 # LATIN CAPITAL LETTER I WITH ACUTE +CE 00CE L Y CE EE CE 49 2A 00 # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF 00CF L Y CF EF CF 49 2A 00 # LATIN CAPITAL LETTER I WITH DIAERESIS +D0 011E L Y D0 F0 D0 47 67 67 # LATIN CAPITAL LETTER G WITH BREVE +D1 00D1 L Y D1 F1 D1 4E 6E 6E # LATIN CAPITAL LETTER N WITH TILDE +D2 00D2 L Y D2 F2 D2 4F 2A 00 # LATIN CAPITAL LETTER O WITH GRAVE +D3 00D3 L Y D3 F3 D3 4F 2A 00 # LATIN CAPITAL LETTER O WITH ACUTE +D4 00D4 L Y D4 F4 D4 4F 2A 00 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 00D5 L Y D5 F5 D5 4F 2A 00 # LATIN CAPITAL LETTER O WITH TILDE +D6 00D6 L Y D6 F6 D6 4F 2A 00 # LATIN CAPITAL LETTER O WITH DIAERESIS +D7 00D7 - Y D7 D7 D7 00 00 00 # MULTIPLICATION SIGN +D8 00D8 L Y D8 F8 D8 D8 2A 00 # LATIN CAPITAL LETTER O WITH STROKE +D9 00D9 L Y D9 F9 D9 55 2A 00 # LATIN CAPITAL LETTER U WITH GRAVE +DA 00DA L Y DA FA DA 55 2A 00 # LATIN CAPITAL LETTER U WITH ACUTE +DB 00DB L Y DB FB DB 55 2A 00 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC 00DC L Y DC FC DC 55 2A 00 # LATIN CAPITAL LETTER U WITH DIAERESIS +DD 0130 L Y DD 69 DD 49 2A 00 # LATIN CAPITAL LETTER I WITH DOT ABOVE +DE 015E L Y DE FE DE 53 73 73 # LATIN CAPITAL LETTER S WITH CEDILLA +DF 00DF L Y DF DF DF DF DF DF # LATIN SMALL LETTER SHARP S +E0 00E0 L Y C0 E0 C0 61 2A 00 # LATIN SMALL LETTER A WITH GRAVE +E1 00E1 L Y C1 E1 C1 61 2A 00 # LATIN SMALL LETTER A WITH ACUTE +E2 00E2 L Y C2 E2 C2 61 2A 00 # LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 00E3 L Y C3 E3 C3 61 2A 00 # LATIN SMALL LETTER A WITH TILDE +E4 00E4 L Y C4 E4 C4 61 2A 00 # LATIN SMALL LETTER A WITH DIAERESIS +E5 00E5 L Y C5 E5 C5 61 2A 00 # LATIN SMALL LETTER A WITH RING ABOVE +E6 00E6 L Y C6 E6 C6 E6 2A 00 # LATIN SMALL LETTER AE +E7 00E7 L Y C7 E7 C7 63 63 63 # LATIN SMALL LETTER C WITH CEDILLA +E8 00E8 L Y C8 E8 C8 65 2A 00 # LATIN SMALL LETTER E WITH GRAVE +E9 00E9 L Y C9 E9 C9 65 2A 00 # LATIN SMALL LETTER E WITH ACUTE +EA 00EA L Y CA EA CA 65 2A 00 # LATIN SMALL LETTER E WITH CIRCUMFLEX +EB 00EB L Y CB EB CB 65 2A 00 # LATIN SMALL LETTER E WITH DIAERESIS +EC 00EC L Y CC EC CC 69 2A 00 # LATIN SMALL LETTER I WITH GRAVE +ED 00ED L Y CD ED CD 69 2A 00 # LATIN SMALL LETTER I WITH ACUTE +EE 00EE L Y CE EE CE 69 2A 00 # LATIN SMALL LETTER I WITH CIRCUMFLEX +EF 00EF L Y CF EF CF 69 2A 00 # LATIN SMALL LETTER I WITH DIAERESIS +F0 011F L Y D0 F0 D0 67 67 67 # LATIN SMALL LETTER G WITH BREVE +F1 00F1 L Y D1 F1 D1 6E 6E 6E # LATIN SMALL LETTER N WITH TILDE +F2 00F2 L Y D2 F2 D2 6F 2A 00 # LATIN SMALL LETTER O WITH GRAVE +F3 00F3 L Y D3 F3 D3 6F 2A 00 # LATIN SMALL LETTER O WITH ACUTE +F4 00F4 L Y D4 F4 D4 6F 2A 00 # LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 00F5 L Y D5 F5 D5 6F 2A 00 # LATIN SMALL LETTER O WITH TILDE +F6 00F6 L Y D6 F6 D6 6F 2A 00 # LATIN SMALL LETTER O WITH DIAERESIS +F7 00F7 - Y F7 F7 F7 00 00 00 # DIVISION SIGN +F8 00F8 L Y D8 F8 D8 F8 2A 00 # LATIN SMALL LETTER O WITH STROKE +F9 00F9 L Y D9 F9 D9 75 2A 00 # LATIN SMALL LETTER U WITH GRAVE +FA 00FA L Y DA FA DA 75 2A 00 # LATIN SMALL LETTER U WITH ACUTE +FB 00FB L Y DB FB DB 75 2A 00 # LATIN SMALL LETTER U WITH CIRCUMFLEX +FC 00FC L Y DC FC DC 75 2A 00 # LATIN SMALL LETTER U WITH DIAERESIS +FD 0131 L Y 49 FD 49 FD FD FD # LATIN SMALL LETTER DOTLESS I +FE 015F L Y DE FE DE 73 73 73 # LATIN SMALL LETTER S WITH CEDILLA +FF 00FF L Y FF FF FF 79 79 79 # LATIN SMALL LETTER Y WITH DIAERESIS diff --git a/assets/data/koi8-r.cmap b/assets/data/koi8-r.cmap new file mode 100644 index 0000000..0157f93 --- /dev/null +++ b/assets/data/koi8-r.cmap @@ -0,0 +1,1857 @@ +INTERNAL +/ +N 1039 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > 9A +00A9 > BF +00B0 > 9C +00B2 > 9D +00B7 > 9E +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F7 > 9F +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C 9E # compat +0140 > 6C 9E # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > 9E +0400 > E5 # unsup: 0415 0300 +0401 > B3 +0403 > E7 # unsup: 0413 0301 +040C > EB # unsup: 041A 0301 +040D > E9 # unsup: 0418 0300 +040E > F5 # unsup: 0423 0306 +0410 > E1 +0411 > E2 +0412 > F7 +0413 > E7 +0414 > E4 +0415 > E5 / + N 1 + 0308 > B3 + . +0416 > F6 +0417 > FA +0418 > E9 / + N 1 + 0306 > EA + . +0419 > EA +041A > EB +041B > EC +041C > ED +041D > EE +041E > EF +041F > F0 +0420 > F2 +0421 > F3 +0422 > F4 +0423 > F5 +0424 > E6 +0425 > E8 +0426 > E3 +0427 > FE +0428 > FB +0429 > FD +042A > FF +042B > F9 +042C > F8 +042D > FC +042E > E0 +042F > F1 +0430 > C1 +0431 > C2 +0432 > D7 +0433 > C7 +0434 > C4 +0435 > C5 / + N 1 + 0308 > A3 + . +0436 > D6 +0437 > DA +0438 > C9 / + N 1 + 0306 > CA + . +0439 > CA +043A > CB +043B > CC +043C > CD +043D > CE +043E > CF +043F > D0 +0440 > D2 +0441 > D3 +0442 > D4 +0443 > D5 +0444 > C6 +0445 > C8 +0446 > C3 +0447 > DE +0448 > DB +0449 > DD +044A > DF +044B > D9 +044C > D8 +044D > DC +044E > C0 +044F > D1 +0450 > C5 # unsup: 0435 0300 +0451 > A3 +0453 > C7 # unsup: 0433 0301 +045C > CB # unsup: 043A 0301 +045D > C9 # unsup: 0438 0300 +045E > D5 # unsup: 0443 0306 +04C1 > F6 # unsup: 0416 0306 +04C2 > D6 # unsup: 0436 0306 +04D0 > E1 # unsup: 0410 0306 +04D1 > C1 # unsup: 0430 0306 +04D2 > E1 # unsup: 0410 0308 +04D3 > C1 # unsup: 0430 0308 +04D6 > E5 # unsup: 0415 0306 +04D7 > C5 # unsup: 0435 0306 +04DC > F6 # unsup: 0416 0308 +04DD > D6 # unsup: 0436 0308 +04DE > FA # unsup: 0417 0308 +04DF > DA # unsup: 0437 0308 +04E2 > E9 # unsup: 0418 0304 +04E3 > C9 # unsup: 0438 0304 +04E4 > E9 # unsup: 0418 0308 +04E5 > C9 # unsup: 0438 0308 +04E6 > EF # unsup: 041E 0308 +04E7 > CF # unsup: 043E 0308 +04EC > FC # unsup: 042D 0308 +04ED > DC # unsup: 044D 0308 +04EE > F5 # unsup: 0423 0304 +04EF > D5 # unsup: 0443 0304 +04F0 > F5 # unsup: 0423 0308 +04F1 > D5 # unsup: 0443 0308 +04F2 > F5 # unsup: 0423 030B +04F3 > D5 # unsup: 0443 030B +04F4 > FE # unsup: 0427 0308 +04F5 > DE # unsup: 0447 0308 +04F8 > F9 # unsup: 042B 0308 +04F9 > D9 # unsup: 044B 0308 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +221A > 96 +2248 > 97 +2264 > 98 +2265 > 99 +2320 > 93 +2321 > 9B +2500 > 80 +2502 > 81 +250C > 82 +2510 > 83 +2514 > 84 +2518 > 85 +251C > 86 +2524 > 87 +252C > 88 +2534 > 89 +253C > 8A +2550 > A0 +2551 > A1 +2552 > A2 +2553 > A4 +2554 > A5 +2555 > A6 +2556 > A7 +2557 > A8 +2558 > A9 +2559 > AA +255A > AB +255B > AC +255C > AD +255D > AE +255E > AF +255F > B0 +2560 > B1 +2561 > B2 +2562 > B4 +2563 > B5 +2564 > B6 +2565 > B7 +2566 > B8 +2567 > B9 +2568 > BA +2569 > BB +256A > BC +256B > BD +256C > BE +2580 > 8B +2584 > 8C +2588 > 8D +258C > 8E +2590 > 8F +2591 > 90 +2592 > 91 +2593 > 92 +25A0 > 94 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > 9A +00A9 > BF +00B0 > 9C +00B2 > 9D +00B7 > 9E +00F7 > 9F +037E > 3B +0387 > 9E +0401 > B3 +0410 > E1 +0411 > E2 +0412 > F7 +0413 > E7 +0414 > E4 +0415 > E5 / + N 1 + 0308 > B3 + . +0416 > F6 +0417 > FA +0418 > E9 / + N 1 + 0306 > EA + . +0419 > EA +041A > EB +041B > EC +041C > ED +041D > EE +041E > EF +041F > F0 +0420 > F2 +0421 > F3 +0422 > F4 +0423 > F5 +0424 > E6 +0425 > E8 +0426 > E3 +0427 > FE +0428 > FB +0429 > FD +042A > FF +042B > F9 +042C > F8 +042D > FC +042E > E0 +042F > F1 +0430 > C1 +0431 > C2 +0432 > D7 +0433 > C7 +0434 > C4 +0435 > C5 / + N 1 + 0308 > A3 + . +0436 > D6 +0437 > DA +0438 > C9 / + N 1 + 0306 > CA + . +0439 > CA +043A > CB +043B > CC +043C > CD +043D > CE +043E > CF +043F > D0 +0440 > D2 +0441 > D3 +0442 > D4 +0443 > D5 +0444 > C6 +0445 > C8 +0446 > C3 +0447 > DE +0448 > DB +0449 > DD +044A > DF +044B > D9 +044C > D8 +044D > DC +044E > C0 +044F > D1 +0451 > A3 +1FEF > 60 +2022 > 95 +221A > 96 +2248 > 97 +2264 > 98 +2265 > 99 +2320 > 93 +2321 > 9B +2500 > 80 +2502 > 81 +250C > 82 +2510 > 83 +2514 > 84 +2518 > 85 +251C > 86 +2524 > 87 +252C > 88 +2534 > 89 +253C > 8A +2550 > A0 +2551 > A1 +2552 > A2 +2553 > A4 +2554 > A5 +2555 > A6 +2556 > A7 +2557 > A8 +2558 > A9 +2559 > AA +255A > AB +255B > AC +255C > AD +255D > AE +255E > AF +255F > B0 +2560 > B1 +2561 > B2 +2562 > B4 +2563 > B5 +2564 > B6 +2565 > B7 +2566 > B8 +2567 > B9 +2568 > BA +2569 > BB +256A > BC +256B > BD +256C > BE +2580 > 8B +2584 > 8C +2588 > 8D +258C > 8E +2590 > 8F +2591 > 90 +2592 > 91 +2593 > 92 +25A0 > 94 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 2500 +81 > 2502 +82 > 250C +83 > 2510 +84 > 2514 +85 > 2518 +86 > 251C +87 > 2524 +88 > 252C +89 > 2534 +8A > 253C +8B > 2580 +8C > 2584 +8D > 2588 +8E > 258C +8F > 2590 +90 > 2591 +91 > 2592 +92 > 2593 +93 > 2320 +94 > 25A0 +95 > 2022 +96 > 221A +97 > 2248 +98 > 2264 +99 > 2265 +9A > 00A0 +9B > 2321 +9C > 00B0 +9D > 00B2 +9E > 00B7 +9F > 00F7 +A0 > 2550 +A1 > 2551 +A2 > 2552 +A3 > 0435 0308 +A4 > 2553 +A5 > 2554 +A6 > 2555 +A7 > 2556 +A8 > 2557 +A9 > 2558 +AA > 2559 +AB > 255A +AC > 255B +AD > 255C +AE > 255D +AF > 255E +B0 > 255F +B1 > 2560 +B2 > 2561 +B3 > 0415 0308 +B4 > 2562 +B5 > 2563 +B6 > 2564 +B7 > 2565 +B8 > 2566 +B9 > 2567 +BA > 2568 +BB > 2569 +BC > 256A +BD > 256B +BE > 256C +BF > 00A9 +C0 > 044E +C1 > 0430 +C2 > 0431 +C3 > 0446 +C4 > 0434 +C5 > 0435 +C6 > 0444 +C7 > 0433 +C8 > 0445 +C9 > 0438 +CA > 0438 0306 +CB > 043A +CC > 043B +CD > 043C +CE > 043D +CF > 043E +D0 > 043F +D1 > 044F +D2 > 0440 +D3 > 0441 +D4 > 0442 +D5 > 0443 +D6 > 0436 +D7 > 0432 +D8 > 044C +D9 > 044B +DA > 0437 +DB > 0448 +DC > 044D +DD > 0449 +DE > 0447 +DF > 044A +E0 > 042E +E1 > 0410 +E2 > 0411 +E3 > 0426 +E4 > 0414 +E5 > 0415 +E6 > 0424 +E7 > 0413 +E8 > 0425 +E9 > 0418 +EA > 0418 0306 +EB > 041A +EC > 041B +ED > 041C +EE > 041D +EF > 041E +F0 > 041F +F1 > 042F +F2 > 0420 +F3 > 0421 +F4 > 0422 +F5 > 0423 +F6 > 0416 +F7 > 0412 +F8 > 042C +F9 > 042B +FA > 0417 +FB > 0428 +FC > 042D +FD > 0429 +FE > 0427 +FF > 042A +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 2500 +81 > 2502 +82 > 250C +83 > 2510 +84 > 2514 +85 > 2518 +86 > 251C +87 > 2524 +88 > 252C +89 > 2534 +8A > 253C +8B > 2580 +8C > 2584 +8D > 2588 +8E > 258C +8F > 2590 +90 > 2591 +91 > 2592 +92 > 2593 +93 > 2320 +94 > 25A0 +95 > 2022 +96 > 221A +97 > 2248 +98 > 2264 +99 > 2265 +9A > 00A0 +9B > 2321 +9C > 00B0 +9D > 00B2 +9E > 00B7 +9F > 00F7 +A0 > 2550 +A1 > 2551 +A2 > 2552 +A3 > 0451 +A4 > 2553 +A5 > 2554 +A6 > 2555 +A7 > 2556 +A8 > 2557 +A9 > 2558 +AA > 2559 +AB > 255A +AC > 255B +AD > 255C +AE > 255D +AF > 255E +B0 > 255F +B1 > 2560 +B2 > 2561 +B3 > 0401 +B4 > 2562 +B5 > 2563 +B6 > 2564 +B7 > 2565 +B8 > 2566 +B9 > 2567 +BA > 2568 +BB > 2569 +BC > 256A +BD > 256B +BE > 256C +BF > 00A9 +C0 > 044E +C1 > 0430 +C2 > 0431 +C3 > 0446 +C4 > 0434 +C5 > 0435 +C6 > 0444 +C7 > 0433 +C8 > 0445 +C9 > 0438 +CA > 0439 +CB > 043A +CC > 043B +CD > 043C +CE > 043D +CF > 043E +D0 > 043F +D1 > 044F +D2 > 0440 +D3 > 0441 +D4 > 0442 +D5 > 0443 +D6 > 0436 +D7 > 0432 +D8 > 044C +D9 > 044B +DA > 0437 +DB > 0448 +DC > 044D +DD > 0449 +DE > 0447 +DF > 044A +E0 > 042E +E1 > 0410 +E2 > 0411 +E3 > 0426 +E4 > 0414 +E5 > 0415 +E6 > 0424 +E7 > 0413 +E8 > 0425 +E9 > 0418 +EA > 0419 +EB > 041A +EC > 041B +ED > 041C +EE > 041D +EF > 041E +F0 > 041F +F1 > 042F +F2 > 0420 +F3 > 0421 +F4 > 0422 +F5 > 0423 +F6 > 0416 +F7 > 0412 +F8 > 042C +F9 > 042B +FA > 0417 +FB > 0428 +FC > 042D +FD > 0429 +FE > 0427 +FF > 042A +. + +COMP += NFC +. diff --git a/assets/data/koi8-r.cset b/assets/data/koi8-r.cset new file mode 100644 index 0000000..e53197c --- /dev/null +++ b/assets/data/koi8-r.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += koi8-r +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 2500 . N 80 80 80 00 00 00 # <unused special> +81 2502 . N 81 81 81 00 00 00 # <unused special> +82 250C . N 82 82 82 00 00 00 # <unused special> +83 2510 . N 83 83 83 00 00 00 # <unused special> +84 2514 . N 84 84 84 00 00 00 # <unused special> +85 2518 . N 85 85 85 00 00 00 # <unused special> +86 251C . N 86 86 86 00 00 00 # <unused special> +87 2524 . N 87 87 87 00 00 00 # <unused special> +88 252C . N 88 88 88 00 00 00 # <unused special> +89 2534 . N 89 89 89 00 00 00 # <unused special> +8A 253C . N 8A 8A 8A 00 00 00 # <unused special> +8B 2580 . N 8B 8B 8B 00 00 00 # <unused special> +8C 2584 . N 8C 8C 8C 00 00 00 # <unused special> +8D 2588 . N 8D 8D 8D 00 00 00 # <unused special> +8E 258C . N 8E 8E 8E 00 00 00 # <unused special> +8F 2590 . N 8F 8F 8F 00 00 00 # <unused special> +90 2591 . N 90 90 90 00 00 00 # <unused special> +91 2592 . N 91 91 91 00 00 00 # <unused special> +92 2593 . N 92 92 92 00 00 00 # <unused special> +93 2320 . N 93 93 93 00 00 00 # <unused special> +94 25A0 . N 94 94 94 00 00 00 # <unused special> +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 221A . N 96 96 96 00 00 00 # <unused special> +97 2248 . N 97 97 97 00 00 00 # <unused special> +98 2264 . N 98 98 98 00 00 00 # <unused special> +99 2265 . N 99 99 99 00 00 00 # <unused special> +9A 00A0 W Y 9A 9A 9A 00 00 00 # NO-BREAK SPACE +9B 2321 . N 9B 9B 9B 00 00 00 # <unused special> +9C 00B0 - Y 9C 9C 9C 00 00 00 # DEGREE SIGN +9D 00B2 - Y 9D 9D 9D 00 00 00 # SUPERSCRIPT TWO +9E 00B7 - Y 9E 9E 9E 00 00 00 # MIDDLE DOT +9F 00F7 - Y 9F 9F 9F 00 00 00 # DIVISION SIGN +A0 2550 . N A0 A0 A0 00 00 00 # <unused special> +A1 2551 . N A1 A1 A1 00 00 00 # <unused special> +A2 2552 . N A2 A2 A2 00 00 00 # <unused special> +A3 0451 L Y B3 A3 B3 A3 A3 A3 # CYRILLIC SMALL LETTER IO +A4 2553 . N A4 A4 A4 00 00 00 # <unused special> +A5 2554 . N A5 A5 A5 00 00 00 # <unused special> +A6 2555 . N A6 A6 A6 00 00 00 # <unused special> +A7 2556 . N A7 A7 A7 00 00 00 # <unused special> +A8 2557 . N A8 A8 A8 00 00 00 # <unused special> +A9 2558 . N A9 A9 A9 00 00 00 # <unused special> +AA 2559 . N AA AA AA 00 00 00 # <unused special> +AB 255A . N AB AB AB 00 00 00 # <unused special> +AC 255B . N AC AC AC 00 00 00 # <unused special> +AD 255C . N AD AD AD 00 00 00 # <unused special> +AE 255D . N AE AE AE 00 00 00 # <unused special> +AF 255E . N AF AF AF 00 00 00 # <unused special> +B0 255F . N B0 B0 B0 00 00 00 # <unused special> +B1 2560 . N B1 B1 B1 00 00 00 # <unused special> +B2 2561 . N B2 B2 B2 00 00 00 # <unused special> +B3 0401 L Y B3 A3 B3 B3 A3 A3 # CYRILLIC CAPITAL LETTER IO +B4 2562 . N B4 B4 B4 00 00 00 # <unused special> +B5 2563 . N B5 B5 B5 00 00 00 # <unused special> +B6 2564 . N B6 B6 B6 00 00 00 # <unused special> +B7 2565 . N B7 B7 B7 00 00 00 # <unused special> +B8 2566 . N B8 B8 B8 00 00 00 # <unused special> +B9 2567 . N B9 B9 B9 00 00 00 # <unused special> +BA 2568 . N BA BA BA 00 00 00 # <unused special> +BB 2569 . N BB BB BB 00 00 00 # <unused special> +BC 256A . N BC BC BC 00 00 00 # <unused special> +BD 256B . N BD BD BD 00 00 00 # <unused special> +BE 256C . N BE BE BE 00 00 00 # <unused special> +BF 00A9 - Y BF BF BF 00 00 00 # COPYRIGHT SIGN +C0 044E L Y E0 C0 E0 C0 2A 00 # CYRILLIC SMALL LETTER YU +C1 0430 L Y E1 C1 E1 C1 2A 00 # CYRILLIC SMALL LETTER A +C2 0431 L Y E2 C2 E2 C2 C2 C2 # CYRILLIC SMALL LETTER BE +C3 0446 L Y E3 C3 E3 C3 C3 C3 # CYRILLIC SMALL LETTER TSE +C4 0434 L Y E4 C4 E4 C4 C4 C4 # CYRILLIC SMALL LETTER DE +C5 0435 L Y E5 C5 E5 C5 2A 00 # CYRILLIC SMALL LETTER IE +C6 0444 L Y E6 C6 E6 C6 C6 C6 # CYRILLIC SMALL LETTER EF +C7 0433 L Y E7 C7 E7 C7 C7 C7 # CYRILLIC SMALL LETTER GHE +C8 0445 L Y E8 C8 E8 C8 C8 C8 # CYRILLIC SMALL LETTER HA +C9 0438 L Y E9 C9 E9 C9 2A 00 # CYRILLIC SMALL LETTER I +CA 0439 L Y EA CA EA CA CA CA # CYRILLIC SMALL LETTER SHORT I +CB 043A L Y EB CB EB CB CB CB # CYRILLIC SMALL LETTER KA +CC 043B L Y EC CC EC CC CC CC # CYRILLIC SMALL LETTER EL +CD 043C L Y ED CD ED CD CD CD # CYRILLIC SMALL LETTER EM +CE 043D L Y EE CE EE CE CE CE # CYRILLIC SMALL LETTER EN +CF 043E L Y EF CF EF CF 2A 00 # CYRILLIC SMALL LETTER O +D0 043F L Y F0 D0 F0 D0 D0 D0 # CYRILLIC SMALL LETTER PE +D1 044F L Y F1 D1 F1 D1 2A 00 # CYRILLIC SMALL LETTER YA +D2 0440 L Y F2 D2 F2 D2 D2 D2 # CYRILLIC SMALL LETTER ER +D3 0441 L Y F3 D3 F3 D3 D3 D3 # CYRILLIC SMALL LETTER ES +D4 0442 L Y F4 D4 F4 D4 D4 D4 # CYRILLIC SMALL LETTER TE +D5 0443 L Y F5 D5 F5 D5 2A 00 # CYRILLIC SMALL LETTER U +D6 0436 L Y F6 D6 F6 D6 D6 D6 # CYRILLIC SMALL LETTER ZHE +D7 0432 L Y F7 D7 F7 D7 D7 D7 # CYRILLIC SMALL LETTER VE +D8 044C L Y F8 D8 F8 D8 D8 D8 # CYRILLIC SMALL LETTER SOFT SIGN +D9 044B L Y F9 D9 F9 D9 2A 00 # CYRILLIC SMALL LETTER YERU +DA 0437 L Y FA DA FA DA DA DA # CYRILLIC SMALL LETTER ZE +DB 0448 L Y FB DB FB DB DB DB # CYRILLIC SMALL LETTER SHA +DC 044D L Y FC DC FC DC 2A 00 # CYRILLIC SMALL LETTER E +DD 0449 L Y FD DD FD DD DD DD # CYRILLIC SMALL LETTER SHCHA +DE 0447 L Y FE DE FE DE DE DE # CYRILLIC SMALL LETTER CHE +DF 044A L Y FF DF FF DF DF DF # CYRILLIC SMALL LETTER HARD SIGN +E0 042E L Y E0 C0 E0 E0 2A 00 # CYRILLIC CAPITAL LETTER YU +E1 0410 L Y E1 C1 E1 E1 2A 00 # CYRILLIC CAPITAL LETTER A +E2 0411 L Y E2 C2 E2 E2 C2 C2 # CYRILLIC CAPITAL LETTER BE +E3 0426 L Y E3 C3 E3 E3 C3 C3 # CYRILLIC CAPITAL LETTER TSE +E4 0414 L Y E4 C4 E4 E4 C4 C4 # CYRILLIC CAPITAL LETTER DE +E5 0415 L Y E5 C5 E5 E5 2A 00 # CYRILLIC CAPITAL LETTER IE +E6 0424 L Y E6 C6 E6 E6 C6 C6 # CYRILLIC CAPITAL LETTER EF +E7 0413 L Y E7 C7 E7 E7 C7 C7 # CYRILLIC CAPITAL LETTER GHE +E8 0425 L Y E8 C8 E8 E8 C8 C8 # CYRILLIC CAPITAL LETTER HA +E9 0418 L Y E9 C9 E9 E9 2A 00 # CYRILLIC CAPITAL LETTER I +EA 0419 L Y EA CA EA EA CA CA # CYRILLIC CAPITAL LETTER SHORT I +EB 041A L Y EB CB EB EB CB CB # CYRILLIC CAPITAL LETTER KA +EC 041B L Y EC CC EC EC CC CC # CYRILLIC CAPITAL LETTER EL +ED 041C L Y ED CD ED ED CD CD # CYRILLIC CAPITAL LETTER EM +EE 041D L Y EE CE EE EE CE CE # CYRILLIC CAPITAL LETTER EN +EF 041E L Y EF CF EF EF 2A 00 # CYRILLIC CAPITAL LETTER O +F0 041F L Y F0 D0 F0 F0 D0 D0 # CYRILLIC CAPITAL LETTER PE +F1 042F L Y F1 D1 F1 F1 2A 00 # CYRILLIC CAPITAL LETTER YA +F2 0420 L Y F2 D2 F2 F2 D2 D2 # CYRILLIC CAPITAL LETTER ER +F3 0421 L Y F3 D3 F3 F3 D3 D3 # CYRILLIC CAPITAL LETTER ES +F4 0422 L Y F4 D4 F4 F4 D4 D4 # CYRILLIC CAPITAL LETTER TE +F5 0423 L Y F5 D5 F5 F5 2A 00 # CYRILLIC CAPITAL LETTER U +F6 0416 L Y F6 D6 F6 F6 D6 D6 # CYRILLIC CAPITAL LETTER ZHE +F7 0412 L Y F7 D7 F7 F7 D7 D7 # CYRILLIC CAPITAL LETTER VE +F8 042C L Y F8 D8 F8 F8 D8 D8 # CYRILLIC CAPITAL LETTER SOFT SIGN +F9 042B L Y F9 D9 F9 F9 2A 00 # CYRILLIC CAPITAL LETTER YERU +FA 0417 L Y FA DA FA FA DA DA # CYRILLIC CAPITAL LETTER ZE +FB 0428 L Y FB DB FB FB DB DB # CYRILLIC CAPITAL LETTER SHA +FC 042D L Y FC DC FC FC 2A 00 # CYRILLIC CAPITAL LETTER E +FD 0429 L Y FD DD FD FD DD DD # CYRILLIC CAPITAL LETTER SHCHA +FE 0427 L Y FE DE FE FE DE DE # CYRILLIC CAPITAL LETTER CHE +FF 042A L Y FF DF FF FF DF DF # CYRILLIC CAPITAL LETTER HARD SIGN diff --git a/assets/data/koi8-u.cmap b/assets/data/koi8-u.cmap new file mode 100644 index 0000000..5b35880 --- /dev/null +++ b/assets/data/koi8-u.cmap @@ -0,0 +1,1869 @@ +INTERNAL +/ +N 1039 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > 9A +00A9 > BF +00B0 > 9C +00B2 > 9D +00B7 > 9E +00C0 > 41 # unsup: 0041 0300 +00C1 > 41 # unsup: 0041 0301 +00C2 > 41 # unsup: 0041 0302 +00C3 > 41 # unsup: 0041 0303 +00C4 > 41 # unsup: 0041 0308 +00C5 > 41 # unsup: 0041 030A +00C6 > 41 45 # compat +00C7 > 43 # unsup: 0043 0327 +00C8 > 45 # unsup: 0045 0300 +00C9 > 45 # unsup: 0045 0301 +00CA > 45 # unsup: 0045 0302 +00CB > 45 # unsup: 0045 0308 +00CC > 49 # unsup: 0049 0300 +00CD > 49 # unsup: 0049 0301 +00CE > 49 # unsup: 0049 0302 +00CF > 49 # unsup: 0049 0308 +00D1 > 4E # unsup: 004E 0303 +00D2 > 4F # unsup: 004F 0300 +00D3 > 4F # unsup: 004F 0301 +00D4 > 4F # unsup: 004F 0302 +00D5 > 4F # unsup: 004F 0303 +00D6 > 4F # unsup: 004F 0308 +00D9 > 55 # unsup: 0055 0300 +00DA > 55 # unsup: 0055 0301 +00DB > 55 # unsup: 0055 0302 +00DC > 55 # unsup: 0055 0308 +00DD > 59 # unsup: 0059 0301 +00E0 > 61 # unsup: 0061 0300 +00E1 > 61 # unsup: 0061 0301 +00E2 > 61 # unsup: 0061 0302 +00E3 > 61 # unsup: 0061 0303 +00E4 > 61 # unsup: 0061 0308 +00E5 > 61 # unsup: 0061 030A +00E6 > 61 65 # compat +00E7 > 63 # unsup: 0063 0327 +00E8 > 65 # unsup: 0065 0300 +00E9 > 65 # unsup: 0065 0301 +00EA > 65 # unsup: 0065 0302 +00EB > 65 # unsup: 0065 0308 +00EC > 69 # unsup: 0069 0300 +00ED > 69 # unsup: 0069 0301 +00EE > 69 # unsup: 0069 0302 +00EF > 69 # unsup: 0069 0308 +00F1 > 6E # unsup: 006E 0303 +00F2 > 6F # unsup: 006F 0300 +00F3 > 6F # unsup: 006F 0301 +00F4 > 6F # unsup: 006F 0302 +00F5 > 6F # unsup: 006F 0303 +00F6 > 6F # unsup: 006F 0308 +00F7 > 9F +00F9 > 75 # unsup: 0075 0300 +00FA > 75 # unsup: 0075 0301 +00FB > 75 # unsup: 0075 0302 +00FC > 75 # unsup: 0075 0308 +00FD > 79 # unsup: 0079 0301 +00FF > 79 # unsup: 0079 0308 +0100 > 41 # unsup: 0041 0304 +0101 > 61 # unsup: 0061 0304 +0102 > 41 # unsup: 0041 0306 +0103 > 61 # unsup: 0061 0306 +0104 > 41 # unsup: 0041 0328 +0105 > 61 # unsup: 0061 0328 +0106 > 43 # unsup: 0043 0301 +0107 > 63 # unsup: 0063 0301 +0108 > 43 # unsup: 0043 0302 +0109 > 63 # unsup: 0063 0302 +010A > 43 # unsup: 0043 0307 +010B > 63 # unsup: 0063 0307 +010C > 43 # unsup: 0043 030C +010D > 63 # unsup: 0063 030C +010E > 44 # unsup: 0044 030C +010F > 64 # unsup: 0064 030C +0112 > 45 # unsup: 0045 0304 +0113 > 65 # unsup: 0065 0304 +0114 > 45 # unsup: 0045 0306 +0115 > 65 # unsup: 0065 0306 +0116 > 45 # unsup: 0045 0307 +0117 > 65 # unsup: 0065 0307 +0118 > 45 # unsup: 0045 0328 +0119 > 65 # unsup: 0065 0328 +011A > 45 # unsup: 0045 030C +011B > 65 # unsup: 0065 030C +011C > 47 # unsup: 0047 0302 +011D > 67 # unsup: 0067 0302 +011E > 47 # unsup: 0047 0306 +011F > 67 # unsup: 0067 0306 +0120 > 47 # unsup: 0047 0307 +0121 > 67 # unsup: 0067 0307 +0122 > 47 # unsup: 0047 0327 +0123 > 67 # unsup: 0067 0327 +0124 > 48 # unsup: 0048 0302 +0125 > 68 # unsup: 0068 0302 +0128 > 49 # unsup: 0049 0303 +0129 > 69 # unsup: 0069 0303 +012A > 49 # unsup: 0049 0304 +012B > 69 # unsup: 0069 0304 +012C > 49 # unsup: 0049 0306 +012D > 69 # unsup: 0069 0306 +012E > 49 # unsup: 0049 0328 +012F > 69 # unsup: 0069 0328 +0130 > 49 # unsup: 0049 0307 +0132 > 49 4A # compat +0133 > 69 6A # compat +0134 > 4A # unsup: 004A 0302 +0135 > 6A # unsup: 006A 0302 +0136 > 4B # unsup: 004B 0327 +0137 > 6B # unsup: 006B 0327 +0139 > 4C # unsup: 004C 0301 +013A > 6C # unsup: 006C 0301 +013B > 4C # unsup: 004C 0327 +013C > 6C # unsup: 006C 0327 +013D > 4C # unsup: 004C 030C +013E > 6C # unsup: 006C 030C +013F > 4C 9E # compat +0140 > 6C 9E # compat +0143 > 4E # unsup: 004E 0301 +0144 > 6E # unsup: 006E 0301 +0145 > 4E # unsup: 004E 0327 +0146 > 6E # unsup: 006E 0327 +0147 > 4E # unsup: 004E 030C +0148 > 6E # unsup: 006E 030C +014C > 4F # unsup: 004F 0304 +014D > 6F # unsup: 006F 0304 +014E > 4F # unsup: 004F 0306 +014F > 6F # unsup: 006F 0306 +0150 > 4F # unsup: 004F 030B +0151 > 6F # unsup: 006F 030B +0152 > 4F 45 # compat +0153 > 6F 65 # compat +0154 > 52 # unsup: 0052 0301 +0155 > 72 # unsup: 0072 0301 +0156 > 52 # unsup: 0052 0327 +0157 > 72 # unsup: 0072 0327 +0158 > 52 # unsup: 0052 030C +0159 > 72 # unsup: 0072 030C +015A > 53 # unsup: 0053 0301 +015B > 73 # unsup: 0073 0301 +015C > 53 # unsup: 0053 0302 +015D > 73 # unsup: 0073 0302 +015E > 53 # unsup: 0053 0327 +015F > 73 # unsup: 0073 0327 +0160 > 53 # unsup: 0053 030C +0161 > 73 # unsup: 0073 030C +0162 > 54 # unsup: 0054 0327 +0163 > 74 # unsup: 0074 0327 +0164 > 54 # unsup: 0054 030C +0165 > 74 # unsup: 0074 030C +0168 > 55 # unsup: 0055 0303 +0169 > 75 # unsup: 0075 0303 +016A > 55 # unsup: 0055 0304 +016B > 75 # unsup: 0075 0304 +016C > 55 # unsup: 0055 0306 +016D > 75 # unsup: 0075 0306 +016E > 55 # unsup: 0055 030A +016F > 75 # unsup: 0075 030A +0170 > 55 # unsup: 0055 030B +0171 > 75 # unsup: 0075 030B +0172 > 55 # unsup: 0055 0328 +0173 > 75 # unsup: 0075 0328 +0174 > 57 # unsup: 0057 0302 +0175 > 77 # unsup: 0077 0302 +0176 > 59 # unsup: 0059 0302 +0177 > 79 # unsup: 0079 0302 +0178 > 59 # unsup: 0059 0308 +0179 > 5A # unsup: 005A 0301 +017A > 7A # unsup: 007A 0301 +017B > 5A # unsup: 005A 0307 +017C > 7A # unsup: 007A 0307 +017D > 5A # unsup: 005A 030C +017E > 7A # unsup: 007A 030C +017F > 73 # compat +01A0 > 4F # unsup: 004F 031B +01A1 > 6F # unsup: 006F 031B +01AF > 55 # unsup: 0055 031B +01B0 > 75 # unsup: 0075 031B +01C4 > 44 5A # unsup: 0044 005A 030C +01C5 > 44 7A # unsup: 0044 007A 030C +01C6 > 64 7A # unsup: 0064 007A 030C +01C7 > 4C 4A # compat +01C8 > 4C 6A # compat +01C9 > 6C 6A # compat +01CA > 4E 4A # compat +01CB > 4E 6A # compat +01CC > 6E 6A # compat +01CD > 41 # unsup: 0041 030C +01CE > 61 # unsup: 0061 030C +01CF > 49 # unsup: 0049 030C +01D0 > 69 # unsup: 0069 030C +01D1 > 4F # unsup: 004F 030C +01D2 > 6F # unsup: 006F 030C +01D3 > 55 # unsup: 0055 030C +01D4 > 75 # unsup: 0075 030C +01D5 > 55 # unsup: 0055 0308 0304 +01D6 > 75 # unsup: 0075 0308 0304 +01D7 > 55 # unsup: 0055 0308 0301 +01D8 > 75 # unsup: 0075 0308 0301 +01D9 > 55 # unsup: 0055 0308 030C +01DA > 75 # unsup: 0075 0308 030C +01DB > 55 # unsup: 0055 0308 0300 +01DC > 75 # unsup: 0075 0308 0300 +01DE > 41 # unsup: 0041 0308 0304 +01DF > 61 # unsup: 0061 0308 0304 +01E0 > 41 # unsup: 0041 0307 0304 +01E1 > 61 # unsup: 0061 0307 0304 +01E2 > 41 45 # unsup: 0041 0045 0304 +01E3 > 61 65 # unsup: 0061 0065 0304 +01E6 > 47 # unsup: 0047 030C +01E7 > 67 # unsup: 0067 030C +01E8 > 4B # unsup: 004B 030C +01E9 > 6B # unsup: 006B 030C +01EA > 4F # unsup: 004F 0328 +01EB > 6F # unsup: 006F 0328 +01EC > 4F # unsup: 004F 0328 0304 +01ED > 6F # unsup: 006F 0328 0304 +01F0 > 6A # unsup: 006A 030C +01F1 > 44 5A # compat +01F2 > 44 7A # compat +01F3 > 64 7A # compat +01F4 > 47 # unsup: 0047 0301 +01F5 > 67 # unsup: 0067 0301 +01F8 > 4E # unsup: 004E 0300 +01F9 > 6E # unsup: 006E 0300 +01FA > 41 # unsup: 0041 030A 0301 +01FB > 61 # unsup: 0061 030A 0301 +01FC > 41 45 # unsup: 0041 0045 0301 +01FD > 61 65 # unsup: 0061 0065 0301 +0200 > 41 # unsup: 0041 030F +0201 > 61 # unsup: 0061 030F +0202 > 41 # unsup: 0041 0311 +0203 > 61 # unsup: 0061 0311 +0204 > 45 # unsup: 0045 030F +0205 > 65 # unsup: 0065 030F +0206 > 45 # unsup: 0045 0311 +0207 > 65 # unsup: 0065 0311 +0208 > 49 # unsup: 0049 030F +0209 > 69 # unsup: 0069 030F +020A > 49 # unsup: 0049 0311 +020B > 69 # unsup: 0069 0311 +020C > 4F # unsup: 004F 030F +020D > 6F # unsup: 006F 030F +020E > 4F # unsup: 004F 0311 +020F > 6F # unsup: 006F 0311 +0210 > 52 # unsup: 0052 030F +0211 > 72 # unsup: 0072 030F +0212 > 52 # unsup: 0052 0311 +0213 > 72 # unsup: 0072 0311 +0214 > 55 # unsup: 0055 030F +0215 > 75 # unsup: 0075 030F +0216 > 55 # unsup: 0055 0311 +0217 > 75 # unsup: 0075 0311 +0218 > 53 # unsup: 0053 0326 +0219 > 73 # unsup: 0073 0326 +021A > 54 # unsup: 0054 0326 +021B > 74 # unsup: 0074 0326 +021E > 48 # unsup: 0048 030C +021F > 68 # unsup: 0068 030C +0226 > 41 # unsup: 0041 0307 +0227 > 61 # unsup: 0061 0307 +0228 > 45 # unsup: 0045 0327 +0229 > 65 # unsup: 0065 0327 +022A > 4F # unsup: 004F 0308 0304 +022B > 6F # unsup: 006F 0308 0304 +022C > 4F # unsup: 004F 0303 0304 +022D > 6F # unsup: 006F 0303 0304 +022E > 4F # unsup: 004F 0307 +022F > 6F # unsup: 006F 0307 +0230 > 4F # unsup: 004F 0307 0304 +0231 > 6F # unsup: 006F 0307 0304 +0232 > 59 # unsup: 0059 0304 +0233 > 79 # unsup: 0079 0304 +0300 > 0 # unsup +0301 > 0 # unsup +0302 > 0 # unsup +0303 > 0 # unsup +0304 > 0 # unsup +0305 > 0 # unsup +0306 > 0 # unsup +0307 > 0 # unsup +0308 > 0 # unsup +0309 > 0 # unsup +030A > 0 # unsup +030B > 0 # unsup +030C > 0 # unsup +030D > 0 # unsup +030E > 0 # unsup +030F > 0 # unsup +0310 > 0 # unsup +0311 > 0 # unsup +0312 > 0 # unsup +0313 > 0 # unsup +0314 > 0 # unsup +0315 > 0 # unsup +0316 > 0 # unsup +0317 > 0 # unsup +0318 > 0 # unsup +0319 > 0 # unsup +031A > 0 # unsup +031B > 0 # unsup +031C > 0 # unsup +031D > 0 # unsup +031E > 0 # unsup +031F > 0 # unsup +0320 > 0 # unsup +0321 > 0 # unsup +0322 > 0 # unsup +0323 > 0 # unsup +0324 > 0 # unsup +0325 > 0 # unsup +0326 > 0 # unsup +0327 > 0 # unsup +0328 > 0 # unsup +0329 > 0 # unsup +032A > 0 # unsup +032B > 0 # unsup +032C > 0 # unsup +032D > 0 # unsup +032E > 0 # unsup +032F > 0 # unsup +0330 > 0 # unsup +0331 > 0 # unsup +0332 > 0 # unsup +0333 > 0 # unsup +0334 > 0 # unsup +0335 > 0 # unsup +0336 > 0 # unsup +0337 > 0 # unsup +0338 > 0 # unsup +0339 > 0 # unsup +033A > 0 # unsup +033B > 0 # unsup +033C > 0 # unsup +033D > 0 # unsup +033E > 0 # unsup +033F > 0 # unsup +0340 > 0 # unsup +0341 > 0 # unsup +0342 > 0 # unsup +0343 > 0 # unsup +0344 > 0 # unsup +0345 > 0 # unsup +037E > 3B +0387 > 9E +0400 > E5 # unsup: 0415 0300 +0401 > B3 +0403 > E7 # unsup: 0413 0301 +0404 > B4 +0406 > B6 / + N 1 + 0308 > B7 + . +0407 > B7 +040C > EB # unsup: 041A 0301 +040D > E9 # unsup: 0418 0300 +040E > F5 # unsup: 0423 0306 +0410 > E1 +0411 > E2 +0412 > F7 +0413 > E7 +0414 > E4 +0415 > E5 / + N 1 + 0308 > B3 + . +0416 > F6 +0417 > FA +0418 > E9 / + N 1 + 0306 > EA + . +0419 > EA +041A > EB +041B > EC +041C > ED +041D > EE +041E > EF +041F > F0 +0420 > F2 +0421 > F3 +0422 > F4 +0423 > F5 +0424 > E6 +0425 > E8 +0426 > E3 +0427 > FE +0428 > FB +0429 > FD +042A > FF +042B > F9 +042C > F8 +042D > FC +042E > E0 +042F > F1 +0430 > C1 +0431 > C2 +0432 > D7 +0433 > C7 +0434 > C4 +0435 > C5 / + N 1 + 0308 > A3 + . +0436 > D6 +0437 > DA +0438 > C9 / + N 1 + 0306 > CA + . +0439 > CA +043A > CB +043B > CC +043C > CD +043D > CE +043E > CF +043F > D0 +0440 > D2 +0441 > D3 +0442 > D4 +0443 > D5 +0444 > C6 +0445 > C8 +0446 > C3 +0447 > DE +0448 > DB +0449 > DD +044A > DF +044B > D9 +044C > D8 +044D > DC +044E > C0 +044F > D1 +0450 > C5 # unsup: 0435 0300 +0451 > A3 +0453 > C7 # unsup: 0433 0301 +0454 > A4 +0456 > A6 / + N 1 + 0308 > A7 + . +0457 > A7 +045C > CB # unsup: 043A 0301 +045D > C9 # unsup: 0438 0300 +045E > D5 # unsup: 0443 0306 +0490 > BD +0491 > AD +04C1 > F6 # unsup: 0416 0306 +04C2 > D6 # unsup: 0436 0306 +04D0 > E1 # unsup: 0410 0306 +04D1 > C1 # unsup: 0430 0306 +04D2 > E1 # unsup: 0410 0308 +04D3 > C1 # unsup: 0430 0308 +04D6 > E5 # unsup: 0415 0306 +04D7 > C5 # unsup: 0435 0306 +04DC > F6 # unsup: 0416 0308 +04DD > D6 # unsup: 0436 0308 +04DE > FA # unsup: 0417 0308 +04DF > DA # unsup: 0437 0308 +04E2 > E9 # unsup: 0418 0304 +04E3 > C9 # unsup: 0438 0304 +04E4 > E9 # unsup: 0418 0308 +04E5 > C9 # unsup: 0438 0308 +04E6 > EF # unsup: 041E 0308 +04E7 > CF # unsup: 043E 0308 +04EC > FC # unsup: 042D 0308 +04ED > DC # unsup: 044D 0308 +04EE > F5 # unsup: 0423 0304 +04EF > D5 # unsup: 0443 0304 +04F0 > F5 # unsup: 0423 0308 +04F1 > D5 # unsup: 0443 0308 +04F2 > F5 # unsup: 0423 030B +04F3 > D5 # unsup: 0443 030B +04F4 > FE # unsup: 0427 0308 +04F5 > DE # unsup: 0447 0308 +04F8 > F9 # unsup: 042B 0308 +04F9 > D9 # unsup: 044B 0308 +1E00 > 41 # unsup: 0041 0325 +1E01 > 61 # unsup: 0061 0325 +1E02 > 42 # unsup: 0042 0307 +1E03 > 62 # unsup: 0062 0307 +1E04 > 42 # unsup: 0042 0323 +1E05 > 62 # unsup: 0062 0323 +1E06 > 42 # unsup: 0042 0331 +1E07 > 62 # unsup: 0062 0331 +1E08 > 43 # unsup: 0043 0327 0301 +1E09 > 63 # unsup: 0063 0327 0301 +1E0A > 44 # unsup: 0044 0307 +1E0B > 64 # unsup: 0064 0307 +1E0C > 44 # unsup: 0044 0323 +1E0D > 64 # unsup: 0064 0323 +1E0E > 44 # unsup: 0044 0331 +1E0F > 64 # unsup: 0064 0331 +1E10 > 44 # unsup: 0044 0327 +1E11 > 64 # unsup: 0064 0327 +1E12 > 44 # unsup: 0044 032D +1E13 > 64 # unsup: 0064 032D +1E14 > 45 # unsup: 0045 0304 0300 +1E15 > 65 # unsup: 0065 0304 0300 +1E16 > 45 # unsup: 0045 0304 0301 +1E17 > 65 # unsup: 0065 0304 0301 +1E18 > 45 # unsup: 0045 032D +1E19 > 65 # unsup: 0065 032D +1E1A > 45 # unsup: 0045 0330 +1E1B > 65 # unsup: 0065 0330 +1E1C > 45 # unsup: 0045 0327 0306 +1E1D > 65 # unsup: 0065 0327 0306 +1E1E > 46 # unsup: 0046 0307 +1E1F > 66 # unsup: 0066 0307 +1E20 > 47 # unsup: 0047 0304 +1E21 > 67 # unsup: 0067 0304 +1E22 > 48 # unsup: 0048 0307 +1E23 > 68 # unsup: 0068 0307 +1E24 > 48 # unsup: 0048 0323 +1E25 > 68 # unsup: 0068 0323 +1E26 > 48 # unsup: 0048 0308 +1E27 > 68 # unsup: 0068 0308 +1E28 > 48 # unsup: 0048 0327 +1E29 > 68 # unsup: 0068 0327 +1E2A > 48 # unsup: 0048 032E +1E2B > 68 # unsup: 0068 032E +1E2C > 49 # unsup: 0049 0330 +1E2D > 69 # unsup: 0069 0330 +1E2E > 49 # unsup: 0049 0308 0301 +1E2F > 69 # unsup: 0069 0308 0301 +1E30 > 4B # unsup: 004B 0301 +1E31 > 6B # unsup: 006B 0301 +1E32 > 4B # unsup: 004B 0323 +1E33 > 6B # unsup: 006B 0323 +1E34 > 4B # unsup: 004B 0331 +1E35 > 6B # unsup: 006B 0331 +1E36 > 4C # unsup: 004C 0323 +1E37 > 6C # unsup: 006C 0323 +1E38 > 4C # unsup: 004C 0323 0304 +1E39 > 6C # unsup: 006C 0323 0304 +1E3A > 4C # unsup: 004C 0331 +1E3B > 6C # unsup: 006C 0331 +1E3C > 4C # unsup: 004C 032D +1E3D > 6C # unsup: 006C 032D +1E3E > 4D # unsup: 004D 0301 +1E3F > 6D # unsup: 006D 0301 +1E40 > 4D # unsup: 004D 0307 +1E41 > 6D # unsup: 006D 0307 +1E42 > 4D # unsup: 004D 0323 +1E43 > 6D # unsup: 006D 0323 +1E44 > 4E # unsup: 004E 0307 +1E45 > 6E # unsup: 006E 0307 +1E46 > 4E # unsup: 004E 0323 +1E47 > 6E # unsup: 006E 0323 +1E48 > 4E # unsup: 004E 0331 +1E49 > 6E # unsup: 006E 0331 +1E4A > 4E # unsup: 004E 032D +1E4B > 6E # unsup: 006E 032D +1E4C > 4F # unsup: 004F 0303 0301 +1E4D > 6F # unsup: 006F 0303 0301 +1E4E > 4F # unsup: 004F 0303 0308 +1E4F > 6F # unsup: 006F 0303 0308 +1E50 > 4F # unsup: 004F 0304 0300 +1E51 > 6F # unsup: 006F 0304 0300 +1E52 > 4F # unsup: 004F 0304 0301 +1E53 > 6F # unsup: 006F 0304 0301 +1E54 > 50 # unsup: 0050 0301 +1E55 > 70 # unsup: 0070 0301 +1E56 > 50 # unsup: 0050 0307 +1E57 > 70 # unsup: 0070 0307 +1E58 > 52 # unsup: 0052 0307 +1E59 > 72 # unsup: 0072 0307 +1E5A > 52 # unsup: 0052 0323 +1E5B > 72 # unsup: 0072 0323 +1E5C > 52 # unsup: 0052 0323 0304 +1E5D > 72 # unsup: 0072 0323 0304 +1E5E > 52 # unsup: 0052 0331 +1E5F > 72 # unsup: 0072 0331 +1E60 > 53 # unsup: 0053 0307 +1E61 > 73 # unsup: 0073 0307 +1E62 > 53 # unsup: 0053 0323 +1E63 > 73 # unsup: 0073 0323 +1E64 > 53 # unsup: 0053 0301 0307 +1E65 > 73 # unsup: 0073 0301 0307 +1E66 > 53 # unsup: 0053 030C 0307 +1E67 > 73 # unsup: 0073 030C 0307 +1E68 > 53 # unsup: 0053 0323 0307 +1E69 > 73 # unsup: 0073 0323 0307 +1E6A > 54 # unsup: 0054 0307 +1E6B > 74 # unsup: 0074 0307 +1E6C > 54 # unsup: 0054 0323 +1E6D > 74 # unsup: 0074 0323 +1E6E > 54 # unsup: 0054 0331 +1E6F > 74 # unsup: 0074 0331 +1E70 > 54 # unsup: 0054 032D +1E71 > 74 # unsup: 0074 032D +1E72 > 55 # unsup: 0055 0324 +1E73 > 75 # unsup: 0075 0324 +1E74 > 55 # unsup: 0055 0330 +1E75 > 75 # unsup: 0075 0330 +1E76 > 55 # unsup: 0055 032D +1E77 > 75 # unsup: 0075 032D +1E78 > 55 # unsup: 0055 0303 0301 +1E79 > 75 # unsup: 0075 0303 0301 +1E7A > 55 # unsup: 0055 0304 0308 +1E7B > 75 # unsup: 0075 0304 0308 +1E7C > 56 # unsup: 0056 0303 +1E7D > 76 # unsup: 0076 0303 +1E7E > 56 # unsup: 0056 0323 +1E7F > 76 # unsup: 0076 0323 +1E80 > 57 # unsup: 0057 0300 +1E81 > 77 # unsup: 0077 0300 +1E82 > 57 # unsup: 0057 0301 +1E83 > 77 # unsup: 0077 0301 +1E84 > 57 # unsup: 0057 0308 +1E85 > 77 # unsup: 0077 0308 +1E86 > 57 # unsup: 0057 0307 +1E87 > 77 # unsup: 0077 0307 +1E88 > 57 # unsup: 0057 0323 +1E89 > 77 # unsup: 0077 0323 +1E8A > 58 # unsup: 0058 0307 +1E8B > 78 # unsup: 0078 0307 +1E8C > 58 # unsup: 0058 0308 +1E8D > 78 # unsup: 0078 0308 +1E8E > 59 # unsup: 0059 0307 +1E8F > 79 # unsup: 0079 0307 +1E90 > 5A # unsup: 005A 0302 +1E91 > 7A # unsup: 007A 0302 +1E92 > 5A # unsup: 005A 0323 +1E93 > 7A # unsup: 007A 0323 +1E94 > 5A # unsup: 005A 0331 +1E95 > 7A # unsup: 007A 0331 +1E96 > 68 # unsup: 0068 0331 +1E97 > 74 # unsup: 0074 0308 +1E98 > 77 # unsup: 0077 030A +1E99 > 79 # unsup: 0079 030A +1E9B > 73 # unsup: 0073 0307 +1EA0 > 41 # unsup: 0041 0323 +1EA1 > 61 # unsup: 0061 0323 +1EA2 > 41 # unsup: 0041 0309 +1EA3 > 61 # unsup: 0061 0309 +1EA4 > 41 # unsup: 0041 0302 0301 +1EA5 > 61 # unsup: 0061 0302 0301 +1EA6 > 41 # unsup: 0041 0302 0300 +1EA7 > 61 # unsup: 0061 0302 0300 +1EA8 > 41 # unsup: 0041 0302 0309 +1EA9 > 61 # unsup: 0061 0302 0309 +1EAA > 41 # unsup: 0041 0302 0303 +1EAB > 61 # unsup: 0061 0302 0303 +1EAC > 41 # unsup: 0041 0323 0302 +1EAD > 61 # unsup: 0061 0323 0302 +1EAE > 41 # unsup: 0041 0306 0301 +1EAF > 61 # unsup: 0061 0306 0301 +1EB0 > 41 # unsup: 0041 0306 0300 +1EB1 > 61 # unsup: 0061 0306 0300 +1EB2 > 41 # unsup: 0041 0306 0309 +1EB3 > 61 # unsup: 0061 0306 0309 +1EB4 > 41 # unsup: 0041 0306 0303 +1EB5 > 61 # unsup: 0061 0306 0303 +1EB6 > 41 # unsup: 0041 0323 0306 +1EB7 > 61 # unsup: 0061 0323 0306 +1EB8 > 45 # unsup: 0045 0323 +1EB9 > 65 # unsup: 0065 0323 +1EBA > 45 # unsup: 0045 0309 +1EBB > 65 # unsup: 0065 0309 +1EBC > 45 # unsup: 0045 0303 +1EBD > 65 # unsup: 0065 0303 +1EBE > 45 # unsup: 0045 0302 0301 +1EBF > 65 # unsup: 0065 0302 0301 +1EC0 > 45 # unsup: 0045 0302 0300 +1EC1 > 65 # unsup: 0065 0302 0300 +1EC2 > 45 # unsup: 0045 0302 0309 +1EC3 > 65 # unsup: 0065 0302 0309 +1EC4 > 45 # unsup: 0045 0302 0303 +1EC5 > 65 # unsup: 0065 0302 0303 +1EC6 > 45 # unsup: 0045 0323 0302 +1EC7 > 65 # unsup: 0065 0323 0302 +1EC8 > 49 # unsup: 0049 0309 +1EC9 > 69 # unsup: 0069 0309 +1ECA > 49 # unsup: 0049 0323 +1ECB > 69 # unsup: 0069 0323 +1ECC > 4F # unsup: 004F 0323 +1ECD > 6F # unsup: 006F 0323 +1ECE > 4F # unsup: 004F 0309 +1ECF > 6F # unsup: 006F 0309 +1ED0 > 4F # unsup: 004F 0302 0301 +1ED1 > 6F # unsup: 006F 0302 0301 +1ED2 > 4F # unsup: 004F 0302 0300 +1ED3 > 6F # unsup: 006F 0302 0300 +1ED4 > 4F # unsup: 004F 0302 0309 +1ED5 > 6F # unsup: 006F 0302 0309 +1ED6 > 4F # unsup: 004F 0302 0303 +1ED7 > 6F # unsup: 006F 0302 0303 +1ED8 > 4F # unsup: 004F 0323 0302 +1ED9 > 6F # unsup: 006F 0323 0302 +1EDA > 4F # unsup: 004F 031B 0301 +1EDB > 6F # unsup: 006F 031B 0301 +1EDC > 4F # unsup: 004F 031B 0300 +1EDD > 6F # unsup: 006F 031B 0300 +1EDE > 4F # unsup: 004F 031B 0309 +1EDF > 6F # unsup: 006F 031B 0309 +1EE0 > 4F # unsup: 004F 031B 0303 +1EE1 > 6F # unsup: 006F 031B 0303 +1EE2 > 4F # unsup: 004F 031B 0323 +1EE3 > 6F # unsup: 006F 031B 0323 +1EE4 > 55 # unsup: 0055 0323 +1EE5 > 75 # unsup: 0075 0323 +1EE6 > 55 # unsup: 0055 0309 +1EE7 > 75 # unsup: 0075 0309 +1EE8 > 55 # unsup: 0055 031B 0301 +1EE9 > 75 # unsup: 0075 031B 0301 +1EEA > 55 # unsup: 0055 031B 0300 +1EEB > 75 # unsup: 0075 031B 0300 +1EEC > 55 # unsup: 0055 031B 0309 +1EED > 75 # unsup: 0075 031B 0309 +1EEE > 55 # unsup: 0055 031B 0303 +1EEF > 75 # unsup: 0075 031B 0303 +1EF0 > 55 # unsup: 0055 031B 0323 +1EF1 > 75 # unsup: 0075 031B 0323 +1EF2 > 59 # unsup: 0059 0300 +1EF3 > 79 # unsup: 0079 0300 +1EF4 > 59 # unsup: 0059 0323 +1EF5 > 79 # unsup: 0079 0323 +1EF6 > 59 # unsup: 0059 0309 +1EF7 > 79 # unsup: 0079 0309 +1EF8 > 59 # unsup: 0059 0303 +1EF9 > 79 # unsup: 0079 0303 +1FEF > 60 +2000 > 20 # compat +2001 > 20 # compat +2002 > 20 # compat +2003 > 20 # compat +2004 > 20 # compat +2005 > 20 # compat +2006 > 20 # compat +2007 > 20 # compat +2008 > 20 # compat +2009 > 20 # compat +200A > 20 # compat +2022 > 95 +2024 > 2E # compat +2025 > 2E 2E # compat +2026 > 2E 2E 2E # compat +202F > 20 # compat +203C > 21 21 # compat +2047 > 3F 3F # compat +2048 > 3F 21 # compat +2049 > 21 3F # compat +205F > 20 # compat +221A > 96 +2248 > 97 +2264 > 98 +2265 > 99 +2320 > 93 +2321 > 9B +2500 > 80 +2502 > 81 +250C > 82 +2510 > 83 +2514 > 84 +2518 > 85 +251C > 86 +2524 > 87 +252C > 88 +2534 > 89 +253C > 8A +2550 > A0 +2551 > A1 +2552 > A2 +2554 > A5 +2557 > A8 +2558 > A9 +2559 > AA +255A > AB +255B > AC +255D > AE +255E > AF +255F > B0 +2560 > B1 +2561 > B2 +2563 > B5 +2566 > B8 +2567 > B9 +2568 > BA +2569 > BB +256A > BC +256C > BE +2580 > 8B +2584 > 8C +2588 > 8D +258C > 8E +2590 > 8F +2591 > 90 +2592 > 91 +2593 > 92 +25A0 > 94 +FB00 > 66 66 # compat +FB01 > 66 69 # compat +FB02 > 66 6C # compat +FB03 > 66 66 69 # compat +FB04 > 66 66 6C # compat +FB05 > 73 74 # compat +FB06 > 73 74 # compat +FB29 > 2B # compat +FE30 > 2E 2E # compat +FE33 > 5F # compat +FE34 > 5F # compat +FE35 > 28 # compat +FE36 > 29 # compat +FE37 > 7B # compat +FE38 > 7D # compat +FE47 > 5B # compat +FE48 > 5D # compat +FE4D > 5F # compat +FE4E > 5F # compat +FE4F > 5F # compat +FE50 > 2C # compat +FE52 > 2E # compat +FE54 > 3B # compat +FE55 > 3A # compat +FE56 > 3F # compat +FE57 > 21 # compat +FE59 > 28 # compat +FE5A > 29 # compat +FE5B > 7B # compat +FE5C > 7D # compat +FE5F > 23 # compat +FE60 > 26 # compat +FE61 > 2A # compat +FE62 > 2B # compat +FE63 > 2D # compat +FE64 > 3C # compat +FE65 > 3E # compat +FE66 > 3D # compat +FE68 > 5C # compat +FE69 > 24 # compat +FE6A > 25 # compat +FE6B > 40 # compat +FF01 > 21 # compat +FF02 > 22 # compat +FF03 > 23 # compat +FF04 > 24 # compat +FF05 > 25 # compat +FF06 > 26 # compat +FF07 > 27 # compat +FF08 > 28 # compat +FF09 > 29 # compat +FF0A > 2A # compat +FF0B > 2B # compat +FF0C > 2C # compat +FF0D > 2D # compat +FF0E > 2E # compat +FF0F > 2F # compat +FF10 > 30 # compat +FF11 > 31 # compat +FF12 > 32 # compat +FF13 > 33 # compat +FF14 > 34 # compat +FF15 > 35 # compat +FF16 > 36 # compat +FF17 > 37 # compat +FF18 > 38 # compat +FF19 > 39 # compat +FF1A > 3A # compat +FF1B > 3B # compat +FF1C > 3C # compat +FF1D > 3D # compat +FF1E > 3E # compat +FF1F > 3F # compat +FF20 > 40 # compat +FF21 > 41 # compat +FF22 > 42 # compat +FF23 > 43 # compat +FF24 > 44 # compat +FF25 > 45 # compat +FF26 > 46 # compat +FF27 > 47 # compat +FF28 > 48 # compat +FF29 > 49 # compat +FF2A > 4A # compat +FF2B > 4B # compat +FF2C > 4C # compat +FF2D > 4D # compat +FF2E > 4E # compat +FF2F > 4F # compat +FF30 > 50 # compat +FF31 > 51 # compat +FF32 > 52 # compat +FF33 > 53 # compat +FF34 > 54 # compat +FF35 > 55 # compat +FF36 > 56 # compat +FF37 > 57 # compat +FF38 > 58 # compat +FF39 > 59 # compat +FF3A > 5A # compat +FF3B > 5B # compat +FF3C > 5C # compat +FF3D > 5D # compat +FF3E > 5E # compat +FF3F > 5F # compat +FF40 > 60 # compat +FF41 > 61 # compat +FF42 > 62 # compat +FF43 > 63 # compat +FF44 > 64 # compat +FF45 > 65 # compat +FF46 > 66 # compat +FF47 > 67 # compat +FF48 > 68 # compat +FF49 > 69 # compat +FF4A > 6A # compat +FF4B > 6B # compat +FF4C > 6C # compat +FF4D > 6D # compat +FF4E > 6E # compat +FF4F > 6F # compat +FF50 > 70 # compat +FF51 > 71 # compat +FF52 > 72 # compat +FF53 > 73 # compat +FF54 > 74 # compat +FF55 > 75 # compat +FF56 > 76 # compat +FF57 > 77 # compat +FF58 > 78 # compat +FF59 > 79 # compat +FF5A > 7A # compat +FF5B > 7B # compat +FF5C > 7C # compat +FF5D > 7D # compat +FF5E > 7E # compat +. + +STRICT +/ +N 259 +0000 > 00 +0001 > 01 +0002 > 02 +0003 > 03 +0004 > 04 +0005 > 05 +0006 > 06 +0007 > 07 +0008 > 08 +0009 > 09 +000A > 0A +000B > 0B +000C > 0C +000D > 0D +000E > 0E +000F > 0F +0010 > 10 +0011 > 11 +0012 > 12 +0013 > 13 +0014 > 14 +0015 > 15 +0016 > 16 +0017 > 17 +0018 > 18 +0019 > 19 +001A > 1A +001B > 1B +001C > 1C +001D > 1D +001E > 1E +001F > 1F +0020 > 20 +0021 > 21 +0022 > 22 +0023 > 23 +0024 > 24 +0025 > 25 +0026 > 26 +0027 > 27 +0028 > 28 +0029 > 29 +002A > 2A +002B > 2B +002C > 2C +002D > 2D +002E > 2E +002F > 2F +0030 > 30 +0031 > 31 +0032 > 32 +0033 > 33 +0034 > 34 +0035 > 35 +0036 > 36 +0037 > 37 +0038 > 38 +0039 > 39 +003A > 3A +003B > 3B +003C > 3C +003D > 3D +003E > 3E +003F > 3F +0040 > 40 +0041 > 41 +0042 > 42 +0043 > 43 +0044 > 44 +0045 > 45 +0046 > 46 +0047 > 47 +0048 > 48 +0049 > 49 +004A > 4A +004B > 4B +004C > 4C +004D > 4D +004E > 4E +004F > 4F +0050 > 50 +0051 > 51 +0052 > 52 +0053 > 53 +0054 > 54 +0055 > 55 +0056 > 56 +0057 > 57 +0058 > 58 +0059 > 59 +005A > 5A +005B > 5B +005C > 5C +005D > 5D +005E > 5E +005F > 5F +0060 > 60 +0061 > 61 +0062 > 62 +0063 > 63 +0064 > 64 +0065 > 65 +0066 > 66 +0067 > 67 +0068 > 68 +0069 > 69 +006A > 6A +006B > 6B +006C > 6C +006D > 6D +006E > 6E +006F > 6F +0070 > 70 +0071 > 71 +0072 > 72 +0073 > 73 +0074 > 74 +0075 > 75 +0076 > 76 +0077 > 77 +0078 > 78 +0079 > 79 +007A > 7A +007B > 7B +007C > 7C +007D > 7D +007E > 7E +007F > 7F +00A0 > 9A +00A9 > BF +00B0 > 9C +00B2 > 9D +00B7 > 9E +00F7 > 9F +037E > 3B +0387 > 9E +0401 > B3 +0404 > B4 +0406 > B6 / + N 1 + 0308 > B7 + . +0407 > B7 +0410 > E1 +0411 > E2 +0412 > F7 +0413 > E7 +0414 > E4 +0415 > E5 / + N 1 + 0308 > B3 + . +0416 > F6 +0417 > FA +0418 > E9 / + N 1 + 0306 > EA + . +0419 > EA +041A > EB +041B > EC +041C > ED +041D > EE +041E > EF +041F > F0 +0420 > F2 +0421 > F3 +0422 > F4 +0423 > F5 +0424 > E6 +0425 > E8 +0426 > E3 +0427 > FE +0428 > FB +0429 > FD +042A > FF +042B > F9 +042C > F8 +042D > FC +042E > E0 +042F > F1 +0430 > C1 +0431 > C2 +0432 > D7 +0433 > C7 +0434 > C4 +0435 > C5 / + N 1 + 0308 > A3 + . +0436 > D6 +0437 > DA +0438 > C9 / + N 1 + 0306 > CA + . +0439 > CA +043A > CB +043B > CC +043C > CD +043D > CE +043E > CF +043F > D0 +0440 > D2 +0441 > D3 +0442 > D4 +0443 > D5 +0444 > C6 +0445 > C8 +0446 > C3 +0447 > DE +0448 > DB +0449 > DD +044A > DF +044B > D9 +044C > D8 +044D > DC +044E > C0 +044F > D1 +0451 > A3 +0454 > A4 +0456 > A6 / + N 1 + 0308 > A7 + . +0457 > A7 +0490 > BD +0491 > AD +1FEF > 60 +2022 > 95 +221A > 96 +2248 > 97 +2264 > 98 +2265 > 99 +2320 > 93 +2321 > 9B +2500 > 80 +2502 > 81 +250C > 82 +2510 > 83 +2514 > 84 +2518 > 85 +251C > 86 +2524 > 87 +252C > 88 +2534 > 89 +253C > 8A +2550 > A0 +2551 > A1 +2552 > A2 +2554 > A5 +2557 > A8 +2558 > A9 +2559 > AA +255A > AB +255B > AC +255D > AE +255E > AF +255F > B0 +2560 > B1 +2561 > B2 +2563 > B5 +2566 > B8 +2567 > B9 +2568 > BA +2569 > BB +256A > BC +256C > BE +2580 > 8B +2584 > 8C +2588 > 8D +258C > 8E +2590 > 8F +2591 > 90 +2592 > 91 +2593 > 92 +25A0 > 94 +. + +NFD +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 2500 +81 > 2502 +82 > 250C +83 > 2510 +84 > 2514 +85 > 2518 +86 > 251C +87 > 2524 +88 > 252C +89 > 2534 +8A > 253C +8B > 2580 +8C > 2584 +8D > 2588 +8E > 258C +8F > 2590 +90 > 2591 +91 > 2592 +92 > 2593 +93 > 2320 +94 > 25A0 +95 > 2022 +96 > 221A +97 > 2248 +98 > 2264 +99 > 2265 +9A > 00A0 +9B > 2321 +9C > 00B0 +9D > 00B2 +9E > 00B7 +9F > 00F7 +A0 > 2550 +A1 > 2551 +A2 > 2552 +A3 > 0435 0308 +A4 > 0454 +A5 > 2554 +A6 > 0456 +A7 > 0456 0308 +A8 > 2557 +A9 > 2558 +AA > 2559 +AB > 255A +AC > 255B +AD > 0491 +AE > 255D +AF > 255E +B0 > 255F +B1 > 2560 +B2 > 2561 +B3 > 0415 0308 +B4 > 0404 +B5 > 2563 +B6 > 0406 +B7 > 0406 0308 +B8 > 2566 +B9 > 2567 +BA > 2568 +BB > 2569 +BC > 256A +BD > 0490 +BE > 256C +BF > 00A9 +C0 > 044E +C1 > 0430 +C2 > 0431 +C3 > 0446 +C4 > 0434 +C5 > 0435 +C6 > 0444 +C7 > 0433 +C8 > 0445 +C9 > 0438 +CA > 0438 0306 +CB > 043A +CC > 043B +CD > 043C +CE > 043D +CF > 043E +D0 > 043F +D1 > 044F +D2 > 0440 +D3 > 0441 +D4 > 0442 +D5 > 0443 +D6 > 0436 +D7 > 0432 +D8 > 044C +D9 > 044B +DA > 0437 +DB > 0448 +DC > 044D +DD > 0449 +DE > 0447 +DF > 044A +E0 > 042E +E1 > 0410 +E2 > 0411 +E3 > 0426 +E4 > 0414 +E5 > 0415 +E6 > 0424 +E7 > 0413 +E8 > 0425 +E9 > 0418 +EA > 0418 0306 +EB > 041A +EC > 041B +ED > 041C +EE > 041D +EF > 041E +F0 > 041F +F1 > 042F +F2 > 0420 +F3 > 0421 +F4 > 0422 +F5 > 0423 +F6 > 0416 +F7 > 0412 +F8 > 042C +F9 > 042B +FA > 0417 +FB > 0428 +FC > 042D +FD > 0429 +FE > 0427 +FF > 042A +. + +NFC +/ +N 256 +00 > 0000 +01 > 0001 +02 > 0002 +03 > 0003 +04 > 0004 +05 > 0005 +06 > 0006 +07 > 0007 +08 > 0008 +09 > 0009 +0A > 000A +0B > 000B +0C > 000C +0D > 000D +0E > 000E +0F > 000F +10 > 0010 +11 > 0011 +12 > 0012 +13 > 0013 +14 > 0014 +15 > 0015 +16 > 0016 +17 > 0017 +18 > 0018 +19 > 0019 +1A > 001A +1B > 001B +1C > 001C +1D > 001D +1E > 001E +1F > 001F +20 > 0020 +21 > 0021 +22 > 0022 +23 > 0023 +24 > 0024 +25 > 0025 +26 > 0026 +27 > 0027 +28 > 0028 +29 > 0029 +2A > 002A +2B > 002B +2C > 002C +2D > 002D +2E > 002E +2F > 002F +30 > 0030 +31 > 0031 +32 > 0032 +33 > 0033 +34 > 0034 +35 > 0035 +36 > 0036 +37 > 0037 +38 > 0038 +39 > 0039 +3A > 003A +3B > 003B +3C > 003C +3D > 003D +3E > 003E +3F > 003F +40 > 0040 +41 > 0041 +42 > 0042 +43 > 0043 +44 > 0044 +45 > 0045 +46 > 0046 +47 > 0047 +48 > 0048 +49 > 0049 +4A > 004A +4B > 004B +4C > 004C +4D > 004D +4E > 004E +4F > 004F +50 > 0050 +51 > 0051 +52 > 0052 +53 > 0053 +54 > 0054 +55 > 0055 +56 > 0056 +57 > 0057 +58 > 0058 +59 > 0059 +5A > 005A +5B > 005B +5C > 005C +5D > 005D +5E > 005E +5F > 005F +60 > 0060 +61 > 0061 +62 > 0062 +63 > 0063 +64 > 0064 +65 > 0065 +66 > 0066 +67 > 0067 +68 > 0068 +69 > 0069 +6A > 006A +6B > 006B +6C > 006C +6D > 006D +6E > 006E +6F > 006F +70 > 0070 +71 > 0071 +72 > 0072 +73 > 0073 +74 > 0074 +75 > 0075 +76 > 0076 +77 > 0077 +78 > 0078 +79 > 0079 +7A > 007A +7B > 007B +7C > 007C +7D > 007D +7E > 007E +7F > 007F +80 > 2500 +81 > 2502 +82 > 250C +83 > 2510 +84 > 2514 +85 > 2518 +86 > 251C +87 > 2524 +88 > 252C +89 > 2534 +8A > 253C +8B > 2580 +8C > 2584 +8D > 2588 +8E > 258C +8F > 2590 +90 > 2591 +91 > 2592 +92 > 2593 +93 > 2320 +94 > 25A0 +95 > 2022 +96 > 221A +97 > 2248 +98 > 2264 +99 > 2265 +9A > 00A0 +9B > 2321 +9C > 00B0 +9D > 00B2 +9E > 00B7 +9F > 00F7 +A0 > 2550 +A1 > 2551 +A2 > 2552 +A3 > 0451 +A4 > 0454 +A5 > 2554 +A6 > 0456 +A7 > 0457 +A8 > 2557 +A9 > 2558 +AA > 2559 +AB > 255A +AC > 255B +AD > 0491 +AE > 255D +AF > 255E +B0 > 255F +B1 > 2560 +B2 > 2561 +B3 > 0401 +B4 > 0404 +B5 > 2563 +B6 > 0406 +B7 > 0407 +B8 > 2566 +B9 > 2567 +BA > 2568 +BB > 2569 +BC > 256A +BD > 0490 +BE > 256C +BF > 00A9 +C0 > 044E +C1 > 0430 +C2 > 0431 +C3 > 0446 +C4 > 0434 +C5 > 0435 +C6 > 0444 +C7 > 0433 +C8 > 0445 +C9 > 0438 +CA > 0439 +CB > 043A +CC > 043B +CD > 043C +CE > 043D +CF > 043E +D0 > 043F +D1 > 044F +D2 > 0440 +D3 > 0441 +D4 > 0442 +D5 > 0443 +D6 > 0436 +D7 > 0432 +D8 > 044C +D9 > 044B +DA > 0437 +DB > 0448 +DC > 044D +DD > 0449 +DE > 0447 +DF > 044A +E0 > 042E +E1 > 0410 +E2 > 0411 +E3 > 0426 +E4 > 0414 +E5 > 0415 +E6 > 0424 +E7 > 0413 +E8 > 0425 +E9 > 0418 +EA > 0419 +EB > 041A +EC > 041B +ED > 041C +EE > 041D +EF > 041E +F0 > 041F +F1 > 042F +F2 > 0420 +F3 > 0421 +F4 > 0422 +F5 > 0423 +F6 > 0416 +F7 > 0412 +F8 > 042C +F9 > 042B +FA > 0417 +FB > 0428 +FC > 042D +FD > 0429 +FE > 0427 +FF > 042A +. + +COMP += NFC +. diff --git a/assets/data/koi8-u.cset b/assets/data/koi8-u.cset new file mode 100644 index 0000000..3f8e2e9 --- /dev/null +++ b/assets/data/koi8-u.cset @@ -0,0 +1,262 @@ +# Aspell Character Data File. += koi8-u +> ascii +/ +# <char> <uni> <type> <display> <upper> <lower> <title> <plain> +# <sl-first> <sl-rest> +00 0000 - N 00 00 00 00 00 00 # <control> +01 0001 . N 01 01 01 00 00 00 # <unused control> +02 0002 . N 02 02 02 00 00 00 # <unused control> +03 0003 . N 03 03 03 00 00 00 # <unused control> +04 0004 . N 04 04 04 00 00 00 # <unused control> +05 0005 . N 05 05 05 00 00 00 # <unused control> +06 0006 . N 06 06 06 00 00 00 # <unused control> +07 0007 . N 07 07 07 00 00 00 # <unused control> +08 0008 . N 08 08 08 00 00 00 # <unused control> +09 0009 . N 09 09 09 00 00 00 # <unused control> +0A 000A . N 0A 0A 0A 00 00 00 # <unused control> +0B 000B . N 0B 0B 0B 00 00 00 # <unused control> +0C 000C . N 0C 0C 0C 00 00 00 # <unused control> +0D 000D . N 0D 0D 0D 00 00 00 # <unused control> +0E 000E . N 0E 0E 0E 00 00 00 # <unused control> +0F 000F . N 0F 0F 0F 00 00 00 # <unused control> +10 0010 - N 10 10 10 00 00 00 # <control> +11 0011 . N 11 11 11 00 00 00 # <unused control> +12 0012 . N 12 12 12 00 00 00 # <unused control> +13 0013 . N 13 13 13 00 00 00 # <unused control> +14 0014 . N 14 14 14 00 00 00 # <unused control> +15 0015 . N 15 15 15 00 00 00 # <unused control> +16 0016 . N 16 16 16 00 00 00 # <unused control> +17 0017 . N 17 17 17 00 00 00 # <unused control> +18 0018 . N 18 18 18 00 00 00 # <unused control> +19 0019 . N 19 19 19 00 00 00 # <unused control> +1A 001A . N 1A 1A 1A 00 00 00 # <unused control> +1B 001B . N 1B 1B 1B 00 00 00 # <unused control> +1C 001C . N 1C 1C 1C 00 00 00 # <unused control> +1D 001D . N 1D 1D 1D 00 00 00 # <unused control> +1E 001E . N 1E 1E 1E 00 00 00 # <unused control> +1F 001F . N 1F 1F 1F 00 00 00 # <unused control> +20 0020 W Y 20 20 20 00 00 00 # SPACE +21 0021 - Y 21 21 21 00 00 00 # EXCLAMATION MARK +22 0022 - Y 22 22 22 00 00 00 # QUOTATION MARK +23 0023 - Y 23 23 23 00 00 00 # NUMBER SIGN +24 0024 - Y 24 24 24 00 00 00 # DOLLAR SIGN +25 0025 - Y 25 25 25 00 00 00 # PERCENT SIGN +26 0026 - Y 26 26 26 00 00 00 # AMPERSAND +27 0027 - Y 27 27 27 00 00 00 # APOSTROPHE +28 0028 - Y 28 28 28 00 00 00 # LEFT PARENTHESIS +29 0029 - Y 29 29 29 00 00 00 # RIGHT PARENTHESIS +2A 002A - Y 2A 2A 2A 00 00 00 # ASTERISK +2B 002B - Y 2B 2B 2B 00 00 00 # PLUS SIGN +2C 002C - Y 2C 2C 2C 00 00 00 # COMMA +2D 002D H Y 2D 2D 2D 00 00 00 # HYPHEN-MINUS +2E 002E - Y 2E 2E 2E 00 00 00 # FULL STOP +2F 002F - Y 2F 2F 2F 00 00 00 # SOLIDUS +30 0030 D Y 30 30 30 00 00 00 # DIGIT ZERO +31 0031 D Y 31 31 31 00 00 00 # DIGIT ONE +32 0032 D Y 32 32 32 00 00 00 # DIGIT TWO +33 0033 D Y 33 33 33 00 00 00 # DIGIT THREE +34 0034 D Y 34 34 34 00 00 00 # DIGIT FOUR +35 0035 D Y 35 35 35 00 00 00 # DIGIT FIVE +36 0036 D Y 36 36 36 00 00 00 # DIGIT SIX +37 0037 D Y 37 37 37 00 00 00 # DIGIT SEVEN +38 0038 D Y 38 38 38 00 00 00 # DIGIT EIGHT +39 0039 D Y 39 39 39 00 00 00 # DIGIT NINE +3A 003A - Y 3A 3A 3A 00 00 00 # COLON +3B 003B - Y 3B 3B 3B 00 00 00 # SEMICOLON +3C 003C - Y 3C 3C 3C 00 00 00 # LESS-THAN SIGN +3D 003D - Y 3D 3D 3D 00 00 00 # EQUALS SIGN +3E 003E - Y 3E 3E 3E 00 00 00 # GREATER-THAN SIGN +3F 003F - Y 3F 3F 3F 00 00 00 # QUESTION MARK +40 0040 - Y 40 40 40 00 00 00 # COMMERCIAL AT +41 0041 L Y 41 61 41 41 2A 00 # LATIN CAPITAL LETTER A +42 0042 L Y 42 62 42 42 62 62 # LATIN CAPITAL LETTER B +43 0043 L Y 43 63 43 43 63 63 # LATIN CAPITAL LETTER C +44 0044 L Y 44 64 44 44 64 64 # LATIN CAPITAL LETTER D +45 0045 L Y 45 65 45 45 2A 00 # LATIN CAPITAL LETTER E +46 0046 L Y 46 66 46 46 66 66 # LATIN CAPITAL LETTER F +47 0047 L Y 47 67 47 47 67 67 # LATIN CAPITAL LETTER G +48 0048 L Y 48 68 48 48 68 68 # LATIN CAPITAL LETTER H +49 0049 L Y 49 69 49 49 2A 00 # LATIN CAPITAL LETTER I +4A 004A L Y 4A 6A 4A 4A 6A 6A # LATIN CAPITAL LETTER J +4B 004B L Y 4B 6B 4B 4B 6B 6B # LATIN CAPITAL LETTER K +4C 004C L Y 4C 6C 4C 4C 6C 6C # LATIN CAPITAL LETTER L +4D 004D L Y 4D 6D 4D 4D 6D 6D # LATIN CAPITAL LETTER M +4E 004E L Y 4E 6E 4E 4E 6E 6E # LATIN CAPITAL LETTER N +4F 004F L Y 4F 6F 4F 4F 2A 00 # LATIN CAPITAL LETTER O +50 0050 L Y 50 70 50 50 70 70 # LATIN CAPITAL LETTER P +51 0051 L Y 51 71 51 51 71 71 # LATIN CAPITAL LETTER Q +52 0052 L Y 52 72 52 52 72 72 # LATIN CAPITAL LETTER R +53 0053 L Y 53 73 53 53 73 73 # LATIN CAPITAL LETTER S +54 0054 L Y 54 74 54 54 74 74 # LATIN CAPITAL LETTER T +55 0055 L Y 55 75 55 55 2A 00 # LATIN CAPITAL LETTER U +56 0056 L Y 56 76 56 56 76 76 # LATIN CAPITAL LETTER V +57 0057 L Y 57 77 57 57 77 77 # LATIN CAPITAL LETTER W +58 0058 L Y 58 78 58 58 78 78 # LATIN CAPITAL LETTER X +59 0059 L Y 59 79 59 59 79 79 # LATIN CAPITAL LETTER Y +5A 005A L Y 5A 7A 5A 5A 7A 7A # LATIN CAPITAL LETTER Z +5B 005B - Y 5B 5B 5B 00 00 00 # LEFT SQUARE BRACKET +5C 005C - Y 5C 5C 5C 00 00 00 # REVERSE SOLIDUS +5D 005D - Y 5D 5D 5D 00 00 00 # RIGHT SQUARE BRACKET +5E 005E - Y 5E 5E 5E 00 00 00 # CIRCUMFLEX ACCENT +5F 005F - Y 5F 5F 5F 00 00 00 # LOW LINE +60 0060 - Y 60 60 60 00 00 00 # GRAVE ACCENT +61 0061 L Y 41 61 41 61 2A 00 # LATIN SMALL LETTER A +62 0062 L Y 42 62 42 62 62 62 # LATIN SMALL LETTER B +63 0063 L Y 43 63 43 63 63 63 # LATIN SMALL LETTER C +64 0064 L Y 44 64 44 64 64 64 # LATIN SMALL LETTER D +65 0065 L Y 45 65 45 65 2A 00 # LATIN SMALL LETTER E +66 0066 L Y 46 66 46 66 66 66 # LATIN SMALL LETTER F +67 0067 L Y 47 67 47 67 67 67 # LATIN SMALL LETTER G +68 0068 L Y 48 68 48 68 68 68 # LATIN SMALL LETTER H +69 0069 L Y 49 69 49 69 2A 00 # LATIN SMALL LETTER I +6A 006A L Y 4A 6A 4A 6A 6A 6A # LATIN SMALL LETTER J +6B 006B L Y 4B 6B 4B 6B 6B 6B # LATIN SMALL LETTER K +6C 006C L Y 4C 6C 4C 6C 6C 6C # LATIN SMALL LETTER L +6D 006D L Y 4D 6D 4D 6D 6D 6D # LATIN SMALL LETTER M +6E 006E L Y 4E 6E 4E 6E 6E 6E # LATIN SMALL LETTER N +6F 006F L Y 4F 6F 4F 6F 2A 00 # LATIN SMALL LETTER O +70 0070 L Y 50 70 50 70 70 70 # LATIN SMALL LETTER P +71 0071 L Y 51 71 51 71 71 71 # LATIN SMALL LETTER Q +72 0072 L Y 52 72 52 72 72 72 # LATIN SMALL LETTER R +73 0073 L Y 53 73 53 73 73 73 # LATIN SMALL LETTER S +74 0074 L Y 54 74 54 74 74 74 # LATIN SMALL LETTER T +75 0075 L Y 55 75 55 75 2A 00 # LATIN SMALL LETTER U +76 0076 L Y 56 76 56 76 76 76 # LATIN SMALL LETTER V +77 0077 L Y 57 77 57 77 77 77 # LATIN SMALL LETTER W +78 0078 L Y 58 78 58 78 78 78 # LATIN SMALL LETTER X +79 0079 L Y 59 79 59 79 79 79 # LATIN SMALL LETTER Y +7A 007A L Y 5A 7A 5A 7A 7A 7A # LATIN SMALL LETTER Z +7B 007B - Y 7B 7B 7B 00 00 00 # LEFT CURLY BRACKET +7C 007C - Y 7C 7C 7C 00 00 00 # VERTICAL LINE +7D 007D - Y 7D 7D 7D 00 00 00 # RIGHT CURLY BRACKET +7E 007E - Y 7E 7E 7E 00 00 00 # TILDE +7F 007F - N 7F 7F 7F 00 00 00 # <control> +80 2500 . N 80 80 80 00 00 00 # <unused special> +81 2502 . N 81 81 81 00 00 00 # <unused special> +82 250C . N 82 82 82 00 00 00 # <unused special> +83 2510 . N 83 83 83 00 00 00 # <unused special> +84 2514 . N 84 84 84 00 00 00 # <unused special> +85 2518 . N 85 85 85 00 00 00 # <unused special> +86 251C . N 86 86 86 00 00 00 # <unused special> +87 2524 . N 87 87 87 00 00 00 # <unused special> +88 252C . N 88 88 88 00 00 00 # <unused special> +89 2534 . N 89 89 89 00 00 00 # <unused special> +8A 253C . N 8A 8A 8A 00 00 00 # <unused special> +8B 2580 . N 8B 8B 8B 00 00 00 # <unused special> +8C 2584 . N 8C 8C 8C 00 00 00 # <unused special> +8D 2588 . N 8D 8D 8D 00 00 00 # <unused special> +8E 258C . N 8E 8E 8E 00 00 00 # <unused special> +8F 2590 . N 8F 8F 8F 00 00 00 # <unused special> +90 2591 . N 90 90 90 00 00 00 # <unused special> +91 2592 . N 91 91 91 00 00 00 # <unused special> +92 2593 . N 92 92 92 00 00 00 # <unused special> +93 2320 . N 93 93 93 00 00 00 # <unused special> +94 25A0 . N 94 94 94 00 00 00 # <unused special> +95 2022 - Y 95 95 95 00 00 00 # BULLET +96 221A . N 96 96 96 00 00 00 # <unused special> +97 2248 . N 97 97 97 00 00 00 # <unused special> +98 2264 . N 98 98 98 00 00 00 # <unused special> +99 2265 . N 99 99 99 00 00 00 # <unused special> +9A 00A0 W Y 9A 9A 9A 00 00 00 # NO-BREAK SPACE +9B 2321 . N 9B 9B 9B 00 00 00 # <unused special> +9C 00B0 - Y 9C 9C 9C 00 00 00 # DEGREE SIGN +9D 00B2 - Y 9D 9D 9D 00 00 00 # SUPERSCRIPT TWO +9E 00B7 - Y 9E 9E 9E 00 00 00 # MIDDLE DOT +9F 00F7 - Y 9F 9F 9F 00 00 00 # DIVISION SIGN +A0 2550 . N A0 A0 A0 00 00 00 # <unused special> +A1 2551 . N A1 A1 A1 00 00 00 # <unused special> +A2 2552 . N A2 A2 A2 00 00 00 # <unused special> +A3 0451 L Y B3 A3 B3 A3 A3 A3 # CYRILLIC SMALL LETTER IO +A4 0454 L Y B4 A4 B4 A4 A4 A4 # CYRILLIC SMALL LETTER UKRAINIAN IE +A5 2554 . N A5 A5 A5 00 00 00 # <unused special> +A6 0456 L Y B6 A6 B6 A6 A6 A6 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +A7 0457 L Y B7 A7 B7 A7 A7 A7 # CYRILLIC SMALL LETTER YI +A8 2557 . N A8 A8 A8 00 00 00 # <unused special> +A9 2558 . N A9 A9 A9 00 00 00 # <unused special> +AA 2559 . N AA AA AA 00 00 00 # <unused special> +AB 255A . N AB AB AB 00 00 00 # <unused special> +AC 255B . N AC AC AC 00 00 00 # <unused special> +AD 0491 L Y BD AD BD AD AD AD # CYRILLIC SMALL LETTER GHE WITH UPTURN +AE 255D . N AE AE AE 00 00 00 # <unused special> +AF 255E . N AF AF AF 00 00 00 # <unused special> +B0 255F . N B0 B0 B0 00 00 00 # <unused special> +B1 2560 . N B1 B1 B1 00 00 00 # <unused special> +B2 2561 . N B2 B2 B2 00 00 00 # <unused special> +B3 0401 L Y B3 A3 B3 B3 A3 A3 # CYRILLIC CAPITAL LETTER IO +B4 0404 L Y B4 A4 B4 B4 A4 A4 # CYRILLIC CAPITAL LETTER UKRAINIAN IE +B5 2563 . N B5 B5 B5 00 00 00 # <unused special> +B6 0406 L Y B6 A6 B6 B6 A6 A6 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +B7 0407 L Y B7 A7 B7 B7 A7 A7 # CYRILLIC CAPITAL LETTER YI +B8 2566 . N B8 B8 B8 00 00 00 # <unused special> +B9 2567 . N B9 B9 B9 00 00 00 # <unused special> +BA 2568 . N BA BA BA 00 00 00 # <unused special> +BB 2569 . N BB BB BB 00 00 00 # <unused special> +BC 256A . N BC BC BC 00 00 00 # <unused special> +BD 0490 L Y BD AD BD BD AD AD # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +BE 256C . N BE BE BE 00 00 00 # <unused special> +BF 00A9 - Y BF BF BF 00 00 00 # COPYRIGHT SIGN +C0 044E L Y E0 C0 E0 C0 2A 00 # CYRILLIC SMALL LETTER YU +C1 0430 L Y E1 C1 E1 C1 2A 00 # CYRILLIC SMALL LETTER A +C2 0431 L Y E2 C2 E2 C2 C2 C2 # CYRILLIC SMALL LETTER BE +C3 0446 L Y E3 C3 E3 C3 C3 C3 # CYRILLIC SMALL LETTER TSE +C4 0434 L Y E4 C4 E4 C4 C4 C4 # CYRILLIC SMALL LETTER DE +C5 0435 L Y E5 C5 E5 C5 2A 00 # CYRILLIC SMALL LETTER IE +C6 0444 L Y E6 C6 E6 C6 C6 C6 # CYRILLIC SMALL LETTER EF +C7 0433 L Y E7 C7 E7 C7 C7 C7 # CYRILLIC SMALL LETTER GHE +C8 0445 L Y E8 C8 E8 C8 C8 C8 # CYRILLIC SMALL LETTER HA +C9 0438 L Y E9 C9 E9 C9 2A 00 # CYRILLIC SMALL LETTER I +CA 0439 L Y EA CA EA CA CA CA # CYRILLIC SMALL LETTER SHORT I +CB 043A L Y EB CB EB CB CB CB # CYRILLIC SMALL LETTER KA +CC 043B L Y EC CC EC CC CC CC # CYRILLIC SMALL LETTER EL +CD 043C L Y ED CD ED CD CD CD # CYRILLIC SMALL LETTER EM +CE 043D L Y EE CE EE CE CE CE # CYRILLIC SMALL LETTER EN +CF 043E L Y EF CF EF CF 2A 00 # CYRILLIC SMALL LETTER O +D0 043F L Y F0 D0 F0 D0 D0 D0 # CYRILLIC SMALL LETTER PE +D1 044F L Y F1 D1 F1 D1 2A 00 # CYRILLIC SMALL LETTER YA +D2 0440 L Y F2 D2 F2 D2 D2 D2 # CYRILLIC SMALL LETTER ER +D3 0441 L Y F3 D3 F3 D3 D3 D3 # CYRILLIC SMALL LETTER ES +D4 0442 L Y F4 D4 F4 D4 D4 D4 # CYRILLIC SMALL LETTER TE +D5 0443 L Y F5 D5 F5 D5 2A 00 # CYRILLIC SMALL LETTER U +D6 0436 L Y F6 D6 F6 D6 D6 D6 # CYRILLIC SMALL LETTER ZHE +D7 0432 L Y F7 D7 F7 D7 D7 D7 # CYRILLIC SMALL LETTER VE +D8 044C L Y F8 D8 F8 D8 D8 D8 # CYRILLIC SMALL LETTER SOFT SIGN +D9 044B L Y F9 D9 F9 D9 2A 00 # CYRILLIC SMALL LETTER YERU +DA 0437 L Y FA DA FA DA DA DA # CYRILLIC SMALL LETTER ZE +DB 0448 L Y FB DB FB DB DB DB # CYRILLIC SMALL LETTER SHA +DC 044D L Y FC DC FC DC 2A 00 # CYRILLIC SMALL LETTER E +DD 0449 L Y FD DD FD DD DD DD # CYRILLIC SMALL LETTER SHCHA +DE 0447 L Y FE DE FE DE DE DE # CYRILLIC SMALL LETTER CHE +DF 044A L Y FF DF FF DF DF DF # CYRILLIC SMALL LETTER HARD SIGN +E0 042E L Y E0 C0 E0 E0 2A 00 # CYRILLIC CAPITAL LETTER YU +E1 0410 L Y E1 C1 E1 E1 2A 00 # CYRILLIC CAPITAL LETTER A +E2 0411 L Y E2 C2 E2 E2 C2 C2 # CYRILLIC CAPITAL LETTER BE +E3 0426 L Y E3 C3 E3 E3 C3 C3 # CYRILLIC CAPITAL LETTER TSE +E4 0414 L Y E4 C4 E4 E4 C4 C4 # CYRILLIC CAPITAL LETTER DE +E5 0415 L Y E5 C5 E5 E5 2A 00 # CYRILLIC CAPITAL LETTER IE +E6 0424 L Y E6 C6 E6 E6 C6 C6 # CYRILLIC CAPITAL LETTER EF +E7 0413 L Y E7 C7 E7 E7 C7 C7 # CYRILLIC CAPITAL LETTER GHE +E8 0425 L Y E8 C8 E8 E8 C8 C8 # CYRILLIC CAPITAL LETTER HA +E9 0418 L Y E9 C9 E9 E9 2A 00 # CYRILLIC CAPITAL LETTER I +EA 0419 L Y EA CA EA EA CA CA # CYRILLIC CAPITAL LETTER SHORT I +EB 041A L Y EB CB EB EB CB CB # CYRILLIC CAPITAL LETTER KA +EC 041B L Y EC CC EC EC CC CC # CYRILLIC CAPITAL LETTER EL +ED 041C L Y ED CD ED ED CD CD # CYRILLIC CAPITAL LETTER EM +EE 041D L Y EE CE EE EE CE CE # CYRILLIC CAPITAL LETTER EN +EF 041E L Y EF CF EF EF 2A 00 # CYRILLIC CAPITAL LETTER O +F0 041F L Y F0 D0 F0 F0 D0 D0 # CYRILLIC CAPITAL LETTER PE +F1 042F L Y F1 D1 F1 F1 2A 00 # CYRILLIC CAPITAL LETTER YA +F2 0420 L Y F2 D2 F2 F2 D2 D2 # CYRILLIC CAPITAL LETTER ER +F3 0421 L Y F3 D3 F3 F3 D3 D3 # CYRILLIC CAPITAL LETTER ES +F4 0422 L Y F4 D4 F4 F4 D4 D4 # CYRILLIC CAPITAL LETTER TE +F5 0423 L Y F5 D5 F5 F5 2A 00 # CYRILLIC CAPITAL LETTER U +F6 0416 L Y F6 D6 F6 F6 D6 D6 # CYRILLIC CAPITAL LETTER ZHE +F7 0412 L Y F7 D7 F7 F7 D7 D7 # CYRILLIC CAPITAL LETTER VE +F8 042C L Y F8 D8 F8 F8 D8 D8 # CYRILLIC CAPITAL LETTER SOFT SIGN +F9 042B L Y F9 D9 F9 F9 2A 00 # CYRILLIC CAPITAL LETTER YERU +FA 0417 L Y FA DA FA FA DA DA # CYRILLIC CAPITAL LETTER ZE +FB 0428 L Y FB DB FB FB DB DB # CYRILLIC CAPITAL LETTER SHA +FC 042D L Y FC DC FC FC 2A 00 # CYRILLIC CAPITAL LETTER E +FD 0429 L Y FD DD FD FD DD DD # CYRILLIC CAPITAL LETTER SHCHA +FE 0427 L Y FE DE FE FE DE DE # CYRILLIC CAPITAL LETTER CHE +FF 042A L Y FF DF FF FF DF DF # CYRILLIC CAPITAL LETTER HARD SIGN diff --git a/assets/data/split.kbd b/assets/data/split.kbd new file mode 100644 index 0000000..3628872 --- /dev/null +++ b/assets/data/split.kbd @@ -0,0 +1,23 @@ +# Natural (split) keyboard data file + +qw +we +er +rt +yu +ui +io +op +as +sd +df +fg +hj +jk +kl +zx +xc +cv +bn +nm + diff --git a/assets/data/standard.kbd b/assets/data/standard.kbd new file mode 100644 index 0000000..fd57868 --- /dev/null +++ b/assets/data/standard.kbd @@ -0,0 +1,25 @@ +# Standard keyboard data file + +qw +we +er +rt +ty +yu +ui +io +op +as +sd +df +fg +gh +hj +jk +kl +zx +xc +cv +vb +bn +nm diff --git a/assets/data/sv.dat b/assets/data/sv.dat new file mode 100644 index 0000000..ade17c6 --- /dev/null +++ b/assets/data/sv.dat @@ -0,0 +1,6 @@ +# Generated with Aspell Dicts "proc" script version 0.50.3 +name sv +charset iso8859-1 +special ' -** - -** . -** : -*- +soundslike sv +run-together true diff --git a/assets/data/sv.multi b/assets/data/sv.multi new file mode 100644 index 0000000..cd6e0b5 --- /dev/null +++ b/assets/data/sv.multi @@ -0,0 +1,2 @@ +# Generated with Aspell Dicts "proc" script version 0.50.3 +add sv.rws diff --git a/assets/data/sv.rws b/assets/data/sv.rws new file mode 100644 index 0000000000000000000000000000000000000000..73cc9a14937030b316def1f38d473a6a93317bd3 GIT binary patch literal 3516736 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%0AKU0sGu77^_6yGk8M*LIVE%6xvP~H0a zovo1KXk}R}r7V-uAz&-H)6xmnEeIp8dsr!QQ?coEz8+-**>h^-ATRXc?<X&SU#-08 z@ptDBI?2vG_m##GgGr`S6p#4pCU@oT<Xd%BIdnhW(3QLY?9u&bu5({Wr=2?W<Regy zdm~grr+%Q)g@q|lZ1fL?0#X+iMzU_MIhK|zgl^xJm7r^<vEl?>C%-zovoLZb=(>UX znrMePJg~qS5N^wFL�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�vai76mToe33AnguKndIEr*UOO`lW#&18AZ(Hag?<8mj<z)>}~9#d#I)Hk>0 zHYN)2WWvUB=2`U}1H$60`i=puaWijAk+bUi6ey6ZfsKPw533ek;vo0|PtL0E^Fb_} z>e}(phX!A(_8BfNN~#>U3$~^Ks#se^v!|F{$CWz%x4Vuj149~acr6xc;A(a;R2Vui zkiK}J8S<Wg`gtpOo!@|!$D(gsbvIHutIoU@{n)P)aunK<8mG2g=H4^pHqoAg-0jX? z9@Llf^@}G@@F~{ClE?Ts4!C1+{`!=K*q#Sv<*45Q6NT|0!38et$U$*v&oB0s_Ib7c zjKSrW%S*b@4|r7+i#vZZ++v3B`3c#W;d|_b_Q2E(Yn+niUb*VX7n988KPu<brFdZv z_*O|7`s*~MY|Nv)ydw|#s?!fs4){VsvhRfQc+5-1Fk<97f>9%1I+omda)mEyHc0d$ zvw;b+B1=evIl|3|4qVi@g*Se*<5q60M2+<T<e#x#$c%L%XO@-b{L+6!j(D>lmBic< zs40xUhW2zOGkn`W#=Nn|Rf`wDw0y55?|uS*dY;1VgmNROfA7({yAitPp$1q%^x;Pi zFw=nLP@4j+9bD?0!7=Cz4qztb%q&7&LyJv^Oo~iCR_A=jf))=8MK((|Z6jQBsXdUC z?Zg}tES(y+a4RTM!YyP8HzARDv}p=vq<eLn<88WogqEOB(FJ4t+Zs#0g1XZ~4|1dX zc!|n;Y^a^0YG@~_fD9%@wa`se_IitIwkfTG(ZHz!tNK<f$PAI_Eh02Fx&a8zWjGB4 zsF*=A!tj`pMe~N|;&(1KqoVIJ@_U6Fkb4OcO75*~K)KPDkidDX&=-#lmm6AX#7McJ z6{{s?<i*g+z{V0e$hyNZMP<^Ga}7wIXgJ`gvu~3Jy=81?E21afWZ+2j%*LP$M$c?? z+Jv`_3vX~mb{eO1T)Garbz46ugZY2_1ru-ia5s1eMC)2!fIybXEe$dBAXQB&z?sjI zQpYR9EvO1vb5Vn67>9<t#Eiz8?gl1r*Wgtn@lE~n&PRDIsnr@X02G?et14~dUkJ;& zRY*IwRVWA6_l<Gx9NS@9s`E)E=afkNl`kVl?10y=%-c;|73><HJvyHEn_lFkB7c05 z^YNuWv2|isZFw5v`QuwJWJ=}!@Iv{_UjNDzR}x$0znE!WjQjJ&O!Io&zrA�K_e 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%0ACcJ^$g& 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%0DcP+Cm{W@7>kQ@nS0( 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�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 I{@IPD^?r7z` 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 pg>e_}2bK^98d(d%GXl@C$F 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 -DPNqfmhDT^-SXm|a?j6-R` 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%0DSf{ywwv)!#ct>aRXP33oi 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 L{Z7?GYvum{=)1fK literal 0 HcmV?d00001 diff --git a/assets/data/sv_phonet.dat b/assets/data/sv_phonet.dat new file mode 100644 index 0000000..46f58dd --- /dev/null +++ b/assets/data/sv_phonet.dat @@ -0,0 +1,171 @@ +# vim:ts=20: +# swedish_phonet.dat - Swedish phonetic transformation rules for aspell +# Copyright (C) 2000 Martin Norbck <d95mback@dtek.chalmers.se> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# $Id$ +# +# ChangeLog: +# 2001-01-25: 0.2 total rewrite +# 2000-02-24: 0.1 initial version +# +# See end of file for description (in Swedish) + +version 0.2 + +& & +@ @ +ANG(EIY)-^ ANI # frledet an- ska inte bli @-ljud +AGNO6 AKNO # agnostiker osv. +AG(IE)-6 AK # vokal+g(ie) ger ej j-ljud +A A +BB-< _ +B P +CCO- K # broccoli, piccolo +CC KS # successiv, access, succ +CH & # choklad osv. +CK K # ck -> k som vanligt +C(EIY)-< S # c + mjuk vokal -> s +C K # c + annat -> k +DJ(U)- I # djungel, djvel, adj +DD- _ +D T +EG(IE)-6 EK # vokal+g(ie) ger ej j-ljud +E E + E +FF F +F F +G(EIY)-3 I # g+mjuk vokal ger j-ljud +GG6 K +GN @N # ugn, lugn... +G K +H(AOUEIY)-^ H # h i brjan av ord hrs +H(AUOEIY)- _ # annars stumt framfr vokal +HJ I # hj->j (hjrta osv.) +H H +IG(IE)-6 IK # vokal+g(ie) ger ej j-ljud +I I +J I +K(EIY)-^ & # k+mjuk vokal ger sje-ljud +KJ & # kjol +K K +LJU- I # ljuga, ljus +LL- _ +L L +MM- _ +M M +NG6 @ +NN- _ +N N +ORIGI8 ORKI # specialfall +OG(IE)-6 OK # vokal+g(ie) ger ej j-ljud +O O +PROJEKT PRO&EKT # specialfall +PSALT< SALT # specialfall +PSALM< SALM # specialfall +PP- _ +P P +Q K +RGI$6 RGI # inget j i slutet +RGA$6 RIA # hr r det dremot j (arga,frga) +RGE$6 RIE # hr ocks (Norge, verge) +RGS$ RIS # rgs i slutet +RG$ RI # rg i slutet +RD T # "bltt" d +RN N # "bltt" n +RT T # "bltt" t +RLD T # vrld +RL L # "bltt" l +RS & # sje-ljud (fars, grsgrd) +RR- _ +R R +SS- _ +SCHIZ6 SKITS # specialfall +SCH6 & +SKJ & # skjorta, skjuta +SJ & # sje-ljud +S S +TION9^ TION # tionde +TION6 &ON # station osv. +TT- _ +T T +UG(IE)-6 UK # vokal+g(ie) ger ej j-ljud +U U +V F +W F +X9 KS +YG(IE)-6 YK # vokal+g(ie) ger ej j-ljud +Y I +ZZ TS +Z S +TTIO9 OTIO # specialfall (ej sje-ljud) +RTION9 ORTION # specialfall (r hrs) +G(IE)-6 OK # vokal+g(ie) ger ej j-ljud + O +G(IE)-6 EK # vokal+g(ie) ger ej j-ljud + E +G(IE)-6 K # vokal+g(ie) ger ej j-ljud + + +# Detta r en lista med transformationer fr att bttre kunna fresl +# ersttningsord till felstavade svenska ord. +# +# Nr man stavar fel p grund av att man inte vet stavningen (till +# skillnad frn slarvfel), s skriver man ofta ngot som skulle uttalas +# p samma stt. +# +# Fr att kunna fresl bttre s gr aspell om ordet till en +# (ungefrlig) fonetisk beskrivning med hjlp av dessa regler. +# +# Det fungerar s hr: +# +# Ord som finns i ordlistan transformeras till sin fonetiska form +# Nr ett ord som inte finns med i ordlistan ptrffas transformeras det +# till sin fonetiska form och jmfrs med de ord som finns i ordlistan. +# Det r drfr viktigt att ord som finns i ordlistan transformeras +# rtt, annars kommer de aldrig att fresls rtt. +# +# Fljande fonem finns: +# A kort och lngt a-ljud +# E kort och lngt e- och -ljud +# F f- och v-ljud +# H tonande h (tonlst h noteras inte) +# I kort och lngt i- och y-ljud, j-ljud +# K g- och k-ljud +# L l-ljud (ven "bltt" som farlig och krl) +# M m-ljud +# N n-ljud (ven "bltt" som barn och torn) +# O kort och lngt o- och -ljud +# P b- och p-ljud +# R r-ljud +# S s-ljud +# T d- och t-ljud (ven "bltt", som hrd och hrt) +# U u-ljud +# V v-ljud +# @ ng-ljud +# & sje-ljud +# +# S hr funkar transformeringsreglerna i korthet: +# * Det som str till vnster transformeras till det till hger +# * Str det ett eller flera - betyder det att de sista bokstverna inte +# verstts, utan anvnds nsta gng +# * Str det en siffra betyder det att den transformeringen har en viss +# prioritet (normal prioritet r 5), ju hgre desto starkare +# * Inom varje initialbokstavsgrupp tilldelas prioritet uppifrn och ner +# +# Fr mer information om processen och om aspell, se aspell.sourceforge.org +# Kapitel 5.3 i bruksanvisningen handlar om detta diff --git a/assets/data/svenska.alias b/assets/data/svenska.alias new file mode 100644 index 0000000..9ffc26d --- /dev/null +++ b/assets/data/svenska.alias @@ -0,0 +1,2 @@ +# Generated with Aspell Dicts "proc" script version 0.50.3 +add sv.multi diff --git a/assets/data/swedish.alias b/assets/data/swedish.alias new file mode 100644 index 0000000..9ffc26d --- /dev/null +++ b/assets/data/swedish.alias @@ -0,0 +1,2 @@ +# Generated with Aspell Dicts "proc" script version 0.50.3 +add sv.multi diff --git a/gen/gr/padeler/aspellchecker/BuildConfig.java b/gen/gr/padeler/aspellchecker/BuildConfig.java new file mode 100644 index 0000000..49c448f --- /dev/null +++ b/gen/gr/padeler/aspellchecker/BuildConfig.java @@ -0,0 +1,6 @@ +/** Automatically generated file. DO NOT MODIFY */ +package gr.padeler.aspellchecker; + +public final class BuildConfig { + public final static boolean DEBUG = true; +} \ No newline at end of file diff --git a/gen/gr/padeler/aspellchecker/R.java b/gen/gr/padeler/aspellchecker/R.java new file mode 100644 index 0000000..993140a --- /dev/null +++ b/gen/gr/padeler/aspellchecker/R.java @@ -0,0 +1,31 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package gr.padeler.aspellchecker; + +public final class R { + public static final class array { + public static final int dicts=0x7f040002; + public static final int dictsVals=0x7f040003; + public static final int updateInterval=0x7f040000; + public static final int updateIntervalValues=0x7f040001; + } + public static final class attr { + } + public static final class drawable { + public static final int ic_launcher=0x7f020000; + } + public static final class string { + public static final int name=0x7f050000; + public static final int settings=0x7f050001; + public static final int subtype=0x7f050002; + } + public static final class xml { + public static final int prefs=0x7f030000; + public static final int spellchecker=0x7f030001; + } +} diff --git a/jni/Android.mk b/jni/Android.mk new file mode 100644 index 0000000..fe64a4f --- /dev/null +++ b/jni/Android.mk @@ -0,0 +1,67 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) +LOCAL_LDLIBS := -llog +#LOCAL_CFLAGS := -std=gnu99 +LOCAL_MODULE := aspell +LOCAL_C_INCLUDES := $(NDK_APP_PROJECT_PATH)/jni/common +LOCAL_SRC_FILES := native.cpp\ + common/cache.cpp\ + common/string.cpp\ + common/getdata.cpp\ + common/itemize.cpp\ + common/file_util.cpp\ + common/string_map.cpp\ + common/string_list.cpp\ + common/config.cpp\ + common/posib_err.cpp\ + common/errors.cpp\ + common/error.cpp\ + common/fstream.cpp\ + common/iostream.cpp\ + common/info.cpp\ + common/can_have_error.cpp\ + common/convert.cpp\ + common/tokenizer.cpp\ + common/speller.cpp\ + common/document_checker.cpp\ + common/filter.cpp\ + common/objstack.cpp \ + common/strtonum.cpp\ + common/gettext_init.cpp\ + common/file_data_util.cpp\ + modules/speller/default/readonly_ws.cpp\ + modules/speller/default/suggest.cpp\ + modules/speller/default/data.cpp\ + modules/speller/default/multi_ws.cpp\ + modules/speller/default/phonetic.cpp\ + modules/speller/default/writable.cpp\ + modules/speller/default/speller_impl.cpp\ + modules/speller/default/phonet.cpp\ + modules/speller/default/typo_editdist.cpp\ + modules/speller/default/editdist.cpp\ + modules/speller/default/primes.cpp\ + modules/speller/default/language.cpp\ + modules/speller/default/leditdist.cpp\ + modules/speller/default/affix.cpp\ + modules/tokenizer/basic.cpp\ + lib/filter-c.cpp\ + lib/word_list-c.cpp\ + lib/info-c.cpp\ + lib/mutable_container-c.cpp\ + lib/error-c.cpp\ + lib/document_checker-c.cpp\ + lib/string_map-c.cpp\ + lib/new_config.cpp\ + lib/config-c.cpp\ + lib/string_enumeration-c.cpp\ + lib/can_have_error-c.cpp\ + lib/dummy.cpp\ + lib/new_filter.cpp\ + lib/new_fmode.cpp\ + lib/string_list-c.cpp\ + lib/find_speller.cpp\ + lib/speller-c.cpp\ + lib/string_pair_enumeration-c.cpp\ + lib/new_checker.cpp + +include $(BUILD_SHARED_LIBRARY) diff --git a/jni/Application.mk b/jni/Application.mk new file mode 100644 index 0000000..1f970c2 --- /dev/null +++ b/jni/Application.mk @@ -0,0 +1,3 @@ +APP_STL := gnustl_static +APP_CPPFLAGS += -frtti -Wno-psabi +APP_OPTIM := debug diff --git a/jni/aspell.cpp b/jni/aspell.cpp new file mode 100644 index 0000000..775edf1 --- /dev/null +++ b/jni/aspell.cpp @@ -0,0 +1 @@ +#include <jni.h> diff --git a/jni/aspell.h b/jni/aspell.h new file mode 100644 index 0000000..9c8e81b --- /dev/null +++ b/jni/aspell.h @@ -0,0 +1,734 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_ASPELL__H +#define ASPELL_ASPELL__H + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************* type id *******************************/ + + +union AspellTypeId { + + unsigned int num; + + char str[4]; + +}; + + +typedef union AspellTypeId AspellTypeId; + + +/************************** mutable container **************************/ + + +typedef struct AspellMutableContainer AspellMutableContainer; + + +int aspell_mutable_container_add(struct AspellMutableContainer * ths, const char * to_add); + +int aspell_mutable_container_remove(struct AspellMutableContainer * ths, const char * to_rem); + +void aspell_mutable_container_clear(struct AspellMutableContainer * ths); + +struct AspellMutableContainer * aspell_mutable_container_to_mutable_container(struct AspellMutableContainer * ths); + + + +/******************************* key info *******************************/ + + + +enum AspellKeyInfoType {AspellKeyInfoString, AspellKeyInfoInt, AspellKeyInfoBool, AspellKeyInfoList}; +typedef enum AspellKeyInfoType AspellKeyInfoType; + + +struct AspellKeyInfo { + + /* The name of the key. */ + const char * name; + + /* The key type. */ + enum AspellKeyInfoType type; + + /* The default value of the key. */ + const char * def; + + /* A brief description of the key or NULL if internal value. */ + const char * desc; + + int flags; + + int other_data; + +}; + + +typedef struct AspellKeyInfo AspellKeyInfo; + + +/******************************** config ********************************/ + + +typedef struct AspellKeyInfoEnumeration AspellKeyInfoEnumeration; + + +int aspell_key_info_enumeration_at_end(const struct AspellKeyInfoEnumeration * ths); + +const struct AspellKeyInfo * aspell_key_info_enumeration_next(struct AspellKeyInfoEnumeration * ths); + +void delete_aspell_key_info_enumeration(struct AspellKeyInfoEnumeration * ths); + +struct AspellKeyInfoEnumeration * aspell_key_info_enumeration_clone(const struct AspellKeyInfoEnumeration * ths); + +void aspell_key_info_enumeration_assign(struct AspellKeyInfoEnumeration * ths, const struct AspellKeyInfoEnumeration * other); + + + +typedef struct AspellConfig AspellConfig; + + +struct AspellConfig * new_aspell_config(); + +void delete_aspell_config(struct AspellConfig * ths); + +struct AspellConfig * aspell_config_clone(const struct AspellConfig * ths); + +void aspell_config_assign(struct AspellConfig * ths, const struct AspellConfig * other); + +unsigned int aspell_config_error_number(const struct AspellConfig * ths); + +const char * aspell_config_error_message(const struct AspellConfig * ths); + +const struct AspellError * aspell_config_error(const struct AspellConfig * ths); + +/* Sets extra keys which this config class should + * accept. begin and end are expected to point to + * the beginning and ending of an array of Aspell + * Key Info. */ +void aspell_config_set_extra(struct AspellConfig * ths, const struct AspellKeyInfo * begin, const struct AspellKeyInfo * end); + +/* Returns the KeyInfo object for the + * corresponding key or returns NULL and sets + * error_num to PERROR_UNKNOWN_KEY if the key is + * not valid. The pointer returned is valid for + * the lifetime of the object. */ +const struct AspellKeyInfo * aspell_config_keyinfo(struct AspellConfig * ths, const char * key); + +/* Returns a newly allocated enumeration of all + * the possible objects this config class uses. */ +struct AspellKeyInfoEnumeration * aspell_config_possible_elements(struct AspellConfig * ths, int include_extra); + +/* Returns the default value for given key which + * may involve substituting variables, thus it is + * not the same as keyinfo(key)->def returns NULL + * and sets error_num to PERROR_UNKNOWN_KEY if + * the key is not valid. Uses the temporary + * string. */ +const char * aspell_config_get_default(struct AspellConfig * ths, const char * key); + +/* Returns a newly allocated enumeration of all + * the key/value pairs. This DOES not include ones + * which are set to their default values. */ +struct AspellStringPairEnumeration * aspell_config_elements(struct AspellConfig * ths); + +/* Inserts an item, if the item already exists it + * will be replaced. Returns TRUE if it succeeded + * or FALSE on error. If the key is not valid it + * sets error_num to PERROR_UNKNOWN_KEY, if the + * value is not valid it will set error_num to + * PERROR_BAD_VALUE, if the value can not be + * changed it sets error_num to + * PERROR_CANT_CHANGE_VALUE, and if the value is + * a list and you are trying to set its directory, + * it sets error_num to PERROR_LIST_SET */ +int aspell_config_replace(struct AspellConfig * ths, const char * key, const char * value); + +/* Remove a key and returns TRUE if it exists + * otherwise return FALSE. This effectively sets + * the key to its default value. Calling replace + * with a value of "<default>" will also call + * remove. If the key does not exist then it sets + * error_num to 0 or PERROR_NOT, if the key is + * not valid then it sets error_num to + * PERROR_UNKNOWN_KEY, if the value can not be + * changed then it sets error_num to + * PERROR_CANT_CHANGE_VALUE */ +int aspell_config_remove(struct AspellConfig * ths, const char * key); + +int aspell_config_have(const struct AspellConfig * ths, const char * key); + +/* Returns NULL on error. */ +const char * aspell_config_retrieve(struct AspellConfig * ths, const char * key); + +int aspell_config_retrieve_list(struct AspellConfig * ths, const char * key, struct AspellMutableContainer * lst); + +/* In "ths" Aspell configuration, search for a + * character string matching "key" string. + * If "key" is found then return 1 else return 0. + * If error encountered, then return -1. */ +int aspell_config_retrieve_bool(struct AspellConfig * ths, const char * key); + +/* In "ths" Aspell configuration, search for an + * integer value matching "key" string. + * Return -1 on error. */ +int aspell_config_retrieve_int(struct AspellConfig * ths, const char * key); + + + +/******************************** error ********************************/ + + +struct AspellError { + + const char * mesg; + + const struct AspellErrorInfo * err; + +}; + + +typedef struct AspellError AspellError; + +int aspell_error_is_a(const struct AspellError * ths, const struct AspellErrorInfo * e); + + +struct AspellErrorInfo { + + const struct AspellErrorInfo * isa; + + const char * mesg; + + unsigned int num_parms; + + const char * parms[3]; + +}; + + +typedef struct AspellErrorInfo AspellErrorInfo; + + +/**************************** can have error ****************************/ + + +typedef struct AspellCanHaveError AspellCanHaveError; + + +unsigned int aspell_error_number(const struct AspellCanHaveError * ths); + +const char * aspell_error_message(const struct AspellCanHaveError * ths); + +const struct AspellError * aspell_error(const struct AspellCanHaveError * ths); + +void delete_aspell_can_have_error(struct AspellCanHaveError * ths); + + + +/******************************** errors ********************************/ + + +extern const struct AspellErrorInfo * const aerror_other; +extern const struct AspellErrorInfo * const aerror_operation_not_supported; +extern const struct AspellErrorInfo * const aerror_cant_copy; +extern const struct AspellErrorInfo * const aerror_unimplemented_method; +extern const struct AspellErrorInfo * const aerror_file; +extern const struct AspellErrorInfo * const aerror_cant_open_file; +extern const struct AspellErrorInfo * const aerror_cant_read_file; +extern const struct AspellErrorInfo * const aerror_cant_write_file; +extern const struct AspellErrorInfo * const aerror_invalid_name; +extern const struct AspellErrorInfo * const aerror_bad_file_format; +extern const struct AspellErrorInfo * const aerror_dir; +extern const struct AspellErrorInfo * const aerror_cant_read_dir; +extern const struct AspellErrorInfo * const aerror_config; +extern const struct AspellErrorInfo * const aerror_unknown_key; +extern const struct AspellErrorInfo * const aerror_cant_change_value; +extern const struct AspellErrorInfo * const aerror_bad_key; +extern const struct AspellErrorInfo * const aerror_bad_value; +extern const struct AspellErrorInfo * const aerror_duplicate; +extern const struct AspellErrorInfo * const aerror_key_not_string; +extern const struct AspellErrorInfo * const aerror_key_not_int; +extern const struct AspellErrorInfo * const aerror_key_not_bool; +extern const struct AspellErrorInfo * const aerror_key_not_list; +extern const struct AspellErrorInfo * const aerror_no_value_reset; +extern const struct AspellErrorInfo * const aerror_no_value_enable; +extern const struct AspellErrorInfo * const aerror_no_value_disable; +extern const struct AspellErrorInfo * const aerror_no_value_clear; +extern const struct AspellErrorInfo * const aerror_language_related; +extern const struct AspellErrorInfo * const aerror_unknown_language; +extern const struct AspellErrorInfo * const aerror_unknown_soundslike; +extern const struct AspellErrorInfo * const aerror_language_not_supported; +extern const struct AspellErrorInfo * const aerror_no_wordlist_for_lang; +extern const struct AspellErrorInfo * const aerror_mismatched_language; +extern const struct AspellErrorInfo * const aerror_affix; +extern const struct AspellErrorInfo * const aerror_corrupt_affix; +extern const struct AspellErrorInfo * const aerror_invalid_cond; +extern const struct AspellErrorInfo * const aerror_invalid_cond_strip; +extern const struct AspellErrorInfo * const aerror_incorrect_encoding; +extern const struct AspellErrorInfo * const aerror_encoding; +extern const struct AspellErrorInfo * const aerror_unknown_encoding; +extern const struct AspellErrorInfo * const aerror_encoding_not_supported; +extern const struct AspellErrorInfo * const aerror_conversion_not_supported; +extern const struct AspellErrorInfo * const aerror_pipe; +extern const struct AspellErrorInfo * const aerror_cant_create_pipe; +extern const struct AspellErrorInfo * const aerror_process_died; +extern const struct AspellErrorInfo * const aerror_bad_input; +extern const struct AspellErrorInfo * const aerror_invalid_string; +extern const struct AspellErrorInfo * const aerror_invalid_word; +extern const struct AspellErrorInfo * const aerror_invalid_affix; +extern const struct AspellErrorInfo * const aerror_inapplicable_affix; +extern const struct AspellErrorInfo * const aerror_unknown_unichar; +extern const struct AspellErrorInfo * const aerror_word_list_flags; +extern const struct AspellErrorInfo * const aerror_invalid_flag; +extern const struct AspellErrorInfo * const aerror_conflicting_flags; +extern const struct AspellErrorInfo * const aerror_version_control; +extern const struct AspellErrorInfo * const aerror_bad_version_string; +extern const struct AspellErrorInfo * const aerror_filter; +extern const struct AspellErrorInfo * const aerror_cant_dlopen_file; +extern const struct AspellErrorInfo * const aerror_empty_filter; +extern const struct AspellErrorInfo * const aerror_no_such_filter; +extern const struct AspellErrorInfo * const aerror_confusing_version; +extern const struct AspellErrorInfo * const aerror_bad_version; +extern const struct AspellErrorInfo * const aerror_identical_option; +extern const struct AspellErrorInfo * const aerror_options_only; +extern const struct AspellErrorInfo * const aerror_invalid_option_modifier; +extern const struct AspellErrorInfo * const aerror_cant_describe_filter; +extern const struct AspellErrorInfo * const aerror_filter_mode_file; +extern const struct AspellErrorInfo * const aerror_mode_option_name; +extern const struct AspellErrorInfo * const aerror_no_filter_to_option; +extern const struct AspellErrorInfo * const aerror_bad_mode_key; +extern const struct AspellErrorInfo * const aerror_expect_mode_key; +extern const struct AspellErrorInfo * const aerror_mode_version_requirement; +extern const struct AspellErrorInfo * const aerror_confusing_mode_version; +extern const struct AspellErrorInfo * const aerror_bad_mode_version; +extern const struct AspellErrorInfo * const aerror_missing_magic_expression; +extern const struct AspellErrorInfo * const aerror_empty_file_ext; +extern const struct AspellErrorInfo * const aerror_filter_mode_expand; +extern const struct AspellErrorInfo * const aerror_unknown_mode; +extern const struct AspellErrorInfo * const aerror_mode_extend_expand; +extern const struct AspellErrorInfo * const aerror_filter_mode_magic; +extern const struct AspellErrorInfo * const aerror_file_magic_pos; +extern const struct AspellErrorInfo * const aerror_file_magic_range; +extern const struct AspellErrorInfo * const aerror_missing_magic; +extern const struct AspellErrorInfo * const aerror_bad_magic; +extern const struct AspellErrorInfo * const aerror_expression; +extern const struct AspellErrorInfo * const aerror_invalid_expression; + + +/******************************* speller *******************************/ + + +typedef struct AspellSpeller AspellSpeller; + + +struct AspellCanHaveError * new_aspell_speller(struct AspellConfig * config); + +struct AspellSpeller * to_aspell_speller(struct AspellCanHaveError * obj); + +void delete_aspell_speller(struct AspellSpeller * ths); + +unsigned int aspell_speller_error_number(const struct AspellSpeller * ths); + +const char * aspell_speller_error_message(const struct AspellSpeller * ths); + +const struct AspellError * aspell_speller_error(const struct AspellSpeller * ths); + +struct AspellConfig * aspell_speller_config(struct AspellSpeller * ths); + +/* Returns 0 if it is not in the dictionary, + * 1 if it is, or -1 on error. */ +int aspell_speller_check(struct AspellSpeller * ths, const char * word, int word_size); + +/* Add this word to your own personal word list. */ +int aspell_speller_add_to_personal(struct AspellSpeller * ths, const char * word, int word_size); + +/* Add this word to the current spelling session. */ +int aspell_speller_add_to_session(struct AspellSpeller * ths, const char * word, int word_size); + +/* This is your own personal word list file plus + * any extra words added during this session to + * your own personal word list. */ +const struct AspellWordList * aspell_speller_personal_word_list(struct AspellSpeller * ths); + +/* This is a list of words added to this session + * that are not in the main word list or in your + * own personal list but are considered valid for + * this spelling session. */ +const struct AspellWordList * aspell_speller_session_word_list(struct AspellSpeller * ths); + +/* This is the main list of words used during this + * spelling session. */ +const struct AspellWordList * aspell_speller_main_word_list(struct AspellSpeller * ths); + +int aspell_speller_save_all_word_lists(struct AspellSpeller * ths); + +int aspell_speller_clear_session(struct AspellSpeller * ths); + +/* Return NULL on error. + * The word list returned by suggest is only + * valid until the next call to suggest. */ +const struct AspellWordList * aspell_speller_suggest(struct AspellSpeller * ths, const char * word, int word_size); + +int aspell_speller_store_replacement(struct AspellSpeller * ths, const char * mis, int mis_size, const char * cor, int cor_size); + + + +/******************************** filter ********************************/ + + +typedef struct AspellFilter AspellFilter; + + +void delete_aspell_filter(struct AspellFilter * ths); + +unsigned int aspell_filter_error_number(const struct AspellFilter * ths); + +const char * aspell_filter_error_message(const struct AspellFilter * ths); + +const struct AspellError * aspell_filter_error(const struct AspellFilter * ths); + +struct AspellFilter * to_aspell_filter(struct AspellCanHaveError * obj); + + + +/*************************** document checker ***************************/ + + +struct AspellToken { + + unsigned int offset; + + unsigned int len; + +}; + + +typedef struct AspellToken AspellToken; + + +typedef struct AspellDocumentChecker AspellDocumentChecker; + + +void delete_aspell_document_checker(struct AspellDocumentChecker * ths); + +unsigned int aspell_document_checker_error_number(const struct AspellDocumentChecker * ths); + +const char * aspell_document_checker_error_message(const struct AspellDocumentChecker * ths); + +const struct AspellError * aspell_document_checker_error(const struct AspellDocumentChecker * ths); + +/* Creates a new document checker. + * The speller class is expected to last until + * this class is destroyed. + * If config is given it will be used to override + * any relevent options set by this speller class. + * The config class is not once this function is done. + * If filter is given then it will take ownership of + * the filter class and use it to do the filtering. + * You are expected to free the checker when done. */ +struct AspellCanHaveError * new_aspell_document_checker(struct AspellSpeller * speller); + +struct AspellDocumentChecker * to_aspell_document_checker(struct AspellCanHaveError * obj); + +/* Reset the internal state of the filter. + * Should be called whenever a new document is + * being filtered. */ +void aspell_document_checker_reset(struct AspellDocumentChecker * ths); + +/* Process a string. + * The string passed in should only be split on + * white space characters. Furthermore, between + * calls to reset, each string should be passed + * in exactly once and in the order they appeared + * in the document. Passing in strings out of + * order, skipping strings or passing them in + * more than once may lead to undefined results. */ +void aspell_document_checker_process(struct AspellDocumentChecker * ths, const char * str, int size); + +/* Returns the next misspelled word in the + * processed string. If there are no more + * misspelled words, then token.word will be + * NULL and token.size will be 0 */ +struct AspellToken aspell_document_checker_next_misspelling(struct AspellDocumentChecker * ths); + +/* Returns the underlying filter class. */ +struct AspellFilter * aspell_document_checker_filter(struct AspellDocumentChecker * ths); + + + +/****************************** word list ******************************/ + + +typedef struct AspellWordList AspellWordList; + + +int aspell_word_list_empty(const struct AspellWordList * ths); + +unsigned int aspell_word_list_size(const struct AspellWordList * ths); + +struct AspellStringEnumeration * aspell_word_list_elements(const struct AspellWordList * ths); + + + +/************************** string enumeration **************************/ + + +typedef struct AspellStringEnumeration AspellStringEnumeration; + + +void delete_aspell_string_enumeration(struct AspellStringEnumeration * ths); + +struct AspellStringEnumeration * aspell_string_enumeration_clone(const struct AspellStringEnumeration * ths); + +void aspell_string_enumeration_assign(struct AspellStringEnumeration * ths, const struct AspellStringEnumeration * other); + +int aspell_string_enumeration_at_end(const struct AspellStringEnumeration * ths); + +const char * aspell_string_enumeration_next(struct AspellStringEnumeration * ths); + + + +/********************************* info *********************************/ + + +struct AspellModuleInfo { + + const char * name; + + double order_num; + + const char * lib_dir; + + struct AspellStringList * dict_dirs; + + struct AspellStringList * dict_exts; + +}; + + +typedef struct AspellModuleInfo AspellModuleInfo; + + +struct AspellDictInfo { + + /* The Name to identify this dictionary by. */ + const char * name; + + /* The language code to identify this dictionary. + * A two letter UPPER-CASE ISO 639 language code + * and an optional two letter ISO 3166 country + * code after a dash or underscore. */ + const char * code; + + /* Any extra information to distinguish this + * variety of dictionary from other dictionaries + * which may have the same language and size. */ + const char * jargon; + + int size; + + /* A two char digit code describing the size of + * the dictionary: 10=tiny, 20=really small, + * 30=small, 40=med-small, 50=med, 60=med-large, + * 70=large, 80=huge, 90=insane. Please check + * the README in aspell-lang-200?????.tar.bz2 or + * see SCOWL (http://wordlist.sourceforge.net) + * for an example of how these sizes are used. */ + const char * size_str; + + struct AspellModuleInfo * module; + +}; + + +typedef struct AspellDictInfo AspellDictInfo; + + +typedef struct AspellModuleInfoList AspellModuleInfoList; + + +struct AspellModuleInfoList * get_aspell_module_info_list(struct AspellConfig * config); + +int aspell_module_info_list_empty(const struct AspellModuleInfoList * ths); + +unsigned int aspell_module_info_list_size(const struct AspellModuleInfoList * ths); + +struct AspellModuleInfoEnumeration * aspell_module_info_list_elements(const struct AspellModuleInfoList * ths); + + + +typedef struct AspellDictInfoList AspellDictInfoList; + + +struct AspellDictInfoList * get_aspell_dict_info_list(struct AspellConfig * config); + +int aspell_dict_info_list_empty(const struct AspellDictInfoList * ths); + +unsigned int aspell_dict_info_list_size(const struct AspellDictInfoList * ths); + +struct AspellDictInfoEnumeration * aspell_dict_info_list_elements(const struct AspellDictInfoList * ths); + + + +typedef struct AspellModuleInfoEnumeration AspellModuleInfoEnumeration; + + +int aspell_module_info_enumeration_at_end(const struct AspellModuleInfoEnumeration * ths); + +const struct AspellModuleInfo * aspell_module_info_enumeration_next(struct AspellModuleInfoEnumeration * ths); + +void delete_aspell_module_info_enumeration(struct AspellModuleInfoEnumeration * ths); + +struct AspellModuleInfoEnumeration * aspell_module_info_enumeration_clone(const struct AspellModuleInfoEnumeration * ths); + +void aspell_module_info_enumeration_assign(struct AspellModuleInfoEnumeration * ths, const struct AspellModuleInfoEnumeration * other); + + + +typedef struct AspellDictInfoEnumeration AspellDictInfoEnumeration; + + +int aspell_dict_info_enumeration_at_end(const struct AspellDictInfoEnumeration * ths); + +const struct AspellDictInfo * aspell_dict_info_enumeration_next(struct AspellDictInfoEnumeration * ths); + +void delete_aspell_dict_info_enumeration(struct AspellDictInfoEnumeration * ths); + +struct AspellDictInfoEnumeration * aspell_dict_info_enumeration_clone(const struct AspellDictInfoEnumeration * ths); + +void aspell_dict_info_enumeration_assign(struct AspellDictInfoEnumeration * ths, const struct AspellDictInfoEnumeration * other); + + + +/***************************** string list *****************************/ + + +typedef struct AspellStringList AspellStringList; + + +struct AspellStringList * new_aspell_string_list(); + +int aspell_string_list_empty(const struct AspellStringList * ths); + +unsigned int aspell_string_list_size(const struct AspellStringList * ths); + +struct AspellStringEnumeration * aspell_string_list_elements(const struct AspellStringList * ths); + +int aspell_string_list_add(struct AspellStringList * ths, const char * to_add); + +int aspell_string_list_remove(struct AspellStringList * ths, const char * to_rem); + +void aspell_string_list_clear(struct AspellStringList * ths); + +struct AspellMutableContainer * aspell_string_list_to_mutable_container(struct AspellStringList * ths); + +void delete_aspell_string_list(struct AspellStringList * ths); + +struct AspellStringList * aspell_string_list_clone(const struct AspellStringList * ths); + +void aspell_string_list_assign(struct AspellStringList * ths, const struct AspellStringList * other); + + + +/****************************** string map ******************************/ + + +typedef struct AspellStringMap AspellStringMap; + + +struct AspellStringMap * new_aspell_string_map(); + +int aspell_string_map_add(struct AspellStringMap * ths, const char * to_add); + +int aspell_string_map_remove(struct AspellStringMap * ths, const char * to_rem); + +void aspell_string_map_clear(struct AspellStringMap * ths); + +struct AspellMutableContainer * aspell_string_map_to_mutable_container(struct AspellStringMap * ths); + +void delete_aspell_string_map(struct AspellStringMap * ths); + +struct AspellStringMap * aspell_string_map_clone(const struct AspellStringMap * ths); + +void aspell_string_map_assign(struct AspellStringMap * ths, const struct AspellStringMap * other); + +int aspell_string_map_empty(const struct AspellStringMap * ths); + +unsigned int aspell_string_map_size(const struct AspellStringMap * ths); + +struct AspellStringPairEnumeration * aspell_string_map_elements(const struct AspellStringMap * ths); + +/* Insert a new element. + * Will NOT overwrite an existing entry. + * Returns FALSE if the element already exists. */ +int aspell_string_map_insert(struct AspellStringMap * ths, const char * key, const char * value); + +/* Insert a new element. + * Will overwrite an existing entry. + * Always returns TRUE. */ +int aspell_string_map_replace(struct AspellStringMap * ths, const char * key, const char * value); + +/* Looks up an element and returns the value. + * Returns NULL if the element does not exist. + * Returns an empty string if the element exists + * but has a NULL value. */ +const char * aspell_string_map_lookup(const struct AspellStringMap * ths, const char * key); + + + +/***************************** string pair *****************************/ + + +struct AspellStringPair { + + const char * first; + + const char * second; + +}; + + +typedef struct AspellStringPair AspellStringPair; + + +/*********************** string pair enumeration ***********************/ + + +typedef struct AspellStringPairEnumeration AspellStringPairEnumeration; + + +int aspell_string_pair_enumeration_at_end(const struct AspellStringPairEnumeration * ths); + +struct AspellStringPair aspell_string_pair_enumeration_next(struct AspellStringPairEnumeration * ths); + +void delete_aspell_string_pair_enumeration(struct AspellStringPairEnumeration * ths); + +struct AspellStringPairEnumeration * aspell_string_pair_enumeration_clone(const struct AspellStringPairEnumeration * ths); + +void aspell_string_pair_enumeration_assign(struct AspellStringPairEnumeration * ths, const struct AspellStringPairEnumeration * other); + + + +/******************************** cache ********************************/ + + +/* Reset the global cache(s) so that cache queries will + * create a new object. If existing objects are still in + * use they are not deleted. If which is NULL then all + * caches will be reset. Current caches are "encode", + * "decode", "dictionary", "language", and "keyboard". */ +int aspell_reset_cache(const char * which); + +#ifdef __cplusplus +} +#endif +#endif /* ASPELL_ASPELL__H */ diff --git a/jni/common/.deps/.dirstamp b/jni/common/.deps/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/common/.deps/cache.Plo b/jni/common/.deps/cache.Plo new file mode 100644 index 0000000..344596a --- /dev/null +++ b/jni/common/.deps/cache.Plo @@ -0,0 +1,228 @@ +common/cache.lo: common/cache.cpp /usr/include/assert.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + common/stack_ptr.hpp common/cache-t.hpp common/lock.hpp gen/settings.h \ + /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sched.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/xlocale.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/setjmp.h common/cache.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/bits/string3.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +common/stack_ptr.hpp: + +common/cache-t.hpp: + +common/lock.hpp: + +gen/settings.h: + +/usr/include/pthread.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sched.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/xlocale.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +common/cache.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: diff --git a/jni/common/.deps/can_have_error.Plo b/jni/common/.deps/can_have_error.Plo new file mode 100644 index 0000000..54c48c3 --- /dev/null +++ b/jni/common/.deps/can_have_error.Plo @@ -0,0 +1,13 @@ +common/can_have_error.lo: common/can_have_error.cpp common/error.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp + +common/error.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: diff --git a/jni/common/.deps/config.Plo b/jni/common/.deps/config.Plo new file mode 100644 index 0000000..f0f3202 --- /dev/null +++ b/jni/common/.deps/config.Plo @@ -0,0 +1,347 @@ +common/config.lo: common/config.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h common/ndebug.hpp \ + /usr/include/assert.h gen/dirs.h gen/settings.h /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h common/cache.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/file_util.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/getdata.hpp common/itemize.hpp \ + common/mutable_container.hpp common/string_map.hpp \ + common/string_pair.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h common/block_slist.hpp \ + common/objstack.hpp common/stack_ptr.hpp common/char_vector.hpp \ + common/convert.hpp common/filter_char.hpp common/filter_char_vector.hpp \ + common/filter.hpp common/string_pair_enumeration.hpp common/vararray.hpp \ + common/string_list.hpp common/string_enumeration.hpp common/type_id.hpp \ + /usr/include/c++/4.5/cstdio common/gettext.h /usr/include/libintl.h \ + common/iostream.hpp + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +common/ndebug.hpp: + +/usr/include/assert.h: + +gen/dirs.h: + +gen/settings.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/langinfo.h: + +/usr/include/nl_types.h: + +common/cache.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/file_util.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/getdata.hpp: + +common/itemize.hpp: + +common/mutable_container.hpp: + +common/string_map.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/stack_ptr.hpp: + +common/char_vector.hpp: + +common/convert.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/vararray.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +/usr/include/c++/4.5/cstdio: + +common/gettext.h: + +/usr/include/libintl.h: + +common/iostream.hpp: diff --git a/jni/common/.deps/convert.Plo b/jni/common/.deps/convert.Plo new file mode 100644 index 0000000..6e39828 --- /dev/null +++ b/jni/common/.deps/convert.Plo @@ -0,0 +1,343 @@ +common/convert.lo: common/convert.cpp /usr/include/assert.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/string.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + common/asc_ctype.hpp common/convert.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/stack_ptr.hpp \ + common/filter.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp \ + common/fstream.hpp common/getdata.hpp common/config.hpp \ + common/key_info.hpp common/cache-t.hpp common/lock.hpp gen/settings.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h common/file_util.hpp \ + common/file_data_util.hpp common/vararray.hpp common/iostream.hpp \ + common/gettext.h /usr/include/libintl.h + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/string.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +common/asc_ctype.hpp: + +common/convert.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/fstream.hpp: + +common/getdata.hpp: + +common/config.hpp: + +common/key_info.hpp: + +common/cache-t.hpp: + +common/lock.hpp: + +gen/settings.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +common/file_util.hpp: + +common/file_data_util.hpp: + +common/vararray.hpp: + +common/iostream.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/common/.deps/document_checker.Plo b/jni/common/.deps/document_checker.Plo new file mode 100644 index 0000000..801dd81 --- /dev/null +++ b/jni/common/.deps/document_checker.Plo @@ -0,0 +1,292 @@ +common/document_checker.lo: common/document_checker.cpp \ + common/document_checker.hpp common/filter.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/error.hpp common/filter_char.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/char_vector.hpp \ + common/filter_char_vector.hpp common/tokenizer.hpp common/convert.hpp \ + common/stack_ptr.hpp /usr/include/assert.h common/cache.hpp \ + common/speller.hpp common/clone_ptr.hpp common/config.hpp \ + common/key_info.hpp + +common/document_checker.hpp: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/filter_char.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/char_vector.hpp: + +common/filter_char_vector.hpp: + +common/tokenizer.hpp: + +common/convert.hpp: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/cache.hpp: + +common/speller.hpp: + +common/clone_ptr.hpp: + +common/config.hpp: + +common/key_info.hpp: diff --git a/jni/common/.deps/error.Plo b/jni/common/.deps/error.Plo new file mode 100644 index 0000000..123b6b5 --- /dev/null +++ b/jni/common/.deps/error.Plo @@ -0,0 +1,72 @@ +common/error.lo: common/error.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h common/error.hpp + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +common/error.hpp: diff --git a/jni/common/.deps/errors.Plo b/jni/common/.deps/errors.Plo new file mode 100644 index 0000000..d618dfc --- /dev/null +++ b/jni/common/.deps/errors.Plo @@ -0,0 +1,27 @@ +common/errors.lo: common/errors.cpp gen/settings.h common/gettext.h \ + /usr/include/libintl.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h common/error.hpp common/errors.hpp + +gen/settings.h: + +common/gettext.h: + +/usr/include/libintl.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +common/error.hpp: + +common/errors.hpp: diff --git a/jni/common/.deps/file_data_util.Plo b/jni/common/.deps/file_data_util.Plo new file mode 100644 index 0000000..b0899fd --- /dev/null +++ b/jni/common/.deps/file_data_util.Plo @@ -0,0 +1,247 @@ +common/file_data_util.lo: common/file_data_util.cpp common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/file_util.hpp \ + common/file_data_util.hpp + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/file_util.hpp: + +common/file_data_util.hpp: diff --git a/jni/common/.deps/file_util.Plo b/jni/common/.deps/file_util.Plo new file mode 100644 index 0000000..feed454 --- /dev/null +++ b/jni/common/.deps/file_util.Plo @@ -0,0 +1,314 @@ +common/file_util.lo: common/file_util.cpp gen/settings.h \ + common/config.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/file_util.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/string_list.hpp \ + common/string_enumeration.hpp common/type_id.hpp common/char_vector.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/bits/uio.h \ + /usr/include/bits/stat.h /usr/include/bits/fcntl2.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/bits/unistd.h /usr/include/sys/stat.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h + +gen/settings.h: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/file_util.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +/usr/include/fcntl.h: + +/usr/include/bits/fcntl.h: + +/usr/include/bits/uio.h: + +/usr/include/bits/stat.h: + +/usr/include/bits/fcntl2.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/sys/stat.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: diff --git a/jni/common/.deps/filter.Plo b/jni/common/.deps/filter.Plo new file mode 100644 index 0000000..aa2f214 --- /dev/null +++ b/jni/common/.deps/filter.Plo @@ -0,0 +1,292 @@ +common/filter.lo: common/filter.cpp gen/settings.h common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/filter.hpp \ + common/filter_char.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/speller.hpp common/clone_ptr.hpp \ + common/char_vector.hpp common/indiv_filter.hpp /usr/include/assert.h \ + common/strtonum.hpp common/asc_ctype.hpp /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h + +gen/settings.h: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/filter.hpp: + +common/filter_char.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/speller.hpp: + +common/clone_ptr.hpp: + +common/char_vector.hpp: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/strtonum.hpp: + +common/asc_ctype.hpp: + +/usr/include/dlfcn.h: + +/usr/include/bits/dlfcn.h: diff --git a/jni/common/.deps/fstream.Plo b/jni/common/.deps/fstream.Plo new file mode 100644 index 0000000..75210fa --- /dev/null +++ b/jni/common/.deps/fstream.Plo @@ -0,0 +1,231 @@ +common/fstream.lo: common/fstream.cpp /usr/include/stdio.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/assert.h common/iostream.hpp common/fstream.hpp \ + common/string.hpp /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/posib_err.hpp common/error.hpp common/errors.hpp \ + common/ndebug.hpp common/asc_ctype.hpp + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/assert.h: + +common/iostream.hpp: + +common/fstream.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/asc_ctype.hpp: diff --git a/jni/common/.deps/getdata.Plo b/jni/common/.deps/getdata.Plo new file mode 100644 index 0000000..0e609d7 --- /dev/null +++ b/jni/common/.deps/getdata.Plo @@ -0,0 +1,230 @@ +common/getdata.lo: common/getdata.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h common/getdata.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/string.hpp /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/asc_ctype.hpp common/iostream.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +common/getdata.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/asc_ctype.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: diff --git a/jni/common/.deps/gettext_init.Plo b/jni/common/.deps/gettext_init.Plo new file mode 100644 index 0000000..71a4a22 --- /dev/null +++ b/jni/common/.deps/gettext_init.Plo @@ -0,0 +1,3 @@ +common/gettext_init.lo: common/gettext_init.cpp common/gettext.h + +common/gettext.h: diff --git a/jni/common/.deps/info.Plo b/jni/common/.deps/info.Plo new file mode 100644 index 0000000..3d15582 --- /dev/null +++ b/jni/common/.deps/info.Plo @@ -0,0 +1,339 @@ +common/info.lo: common/info.cpp /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/assert.h \ + /usr/include/string.h /usr/include/bits/string3.h /usr/include/ctype.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h \ + /usr/include/linux/limits.h common/iostream.hpp common/fstream.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/string.hpp \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h common/mutable_string.hpp \ + common/ostream.hpp common/istream.hpp common/posib_err.hpp \ + common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/getdata.hpp common/info.hpp \ + common/type_id.hpp common/itemize.hpp common/string_list.hpp \ + common/string_enumeration.hpp common/char_vector.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/stack_ptr.hpp common/strtonum.hpp common/lock.hpp gen/settings.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h common/string_map.hpp common/string_pair.hpp \ + common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h common/block_slist.hpp \ + common/objstack.hpp common/gettext.h /usr/include/libintl.h + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/assert.h: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/ctype.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +common/iostream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string.hpp: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/getdata.hpp: + +common/info.hpp: + +common/type_id.hpp: + +common/itemize.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/char_vector.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/stack_ptr.hpp: + +common/strtonum.hpp: + +common/lock.hpp: + +gen/settings.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +common/string_map.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/common/.deps/iostream.Plo b/jni/common/.deps/iostream.Plo new file mode 100644 index 0000000..1bf963e --- /dev/null +++ b/jni/common/.deps/iostream.Plo @@ -0,0 +1,227 @@ +common/iostream.lo: common/iostream.cpp common/iostream.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/string.hpp \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/posib_err.hpp common/error.hpp common/errors.hpp \ + common/ndebug.hpp + +common/iostream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: diff --git a/jni/common/.deps/itemize.Plo b/jni/common/.deps/itemize.Plo new file mode 100644 index 0000000..3824141 --- /dev/null +++ b/jni/common/.deps/itemize.Plo @@ -0,0 +1,230 @@ +common/itemize.lo: common/itemize.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h common/asc_ctype.hpp \ + common/itemize.hpp common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/posib_err.hpp common/string.hpp \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/mutable_container.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h /usr/include/c++/4.5/cstdio + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +common/asc_ctype.hpp: + +common/itemize.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/mutable_container.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/cstdio: diff --git a/jni/common/.deps/objstack.Plo b/jni/common/.deps/objstack.Plo new file mode 100644 index 0000000..a301521 --- /dev/null +++ b/jni/common/.deps/objstack.Plo @@ -0,0 +1,101 @@ +common/objstack.lo: common/objstack.cpp common/objstack.hpp \ + common/parm_string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/assert.h + +common/objstack.hpp: + +common/parm_string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/assert.h: diff --git a/jni/common/.deps/posib_err.Plo b/jni/common/.deps/posib_err.Plo new file mode 100644 index 0000000..63fc432 --- /dev/null +++ b/jni/common/.deps/posib_err.Plo @@ -0,0 +1,226 @@ +common/posib_err.lo: common/posib_err.cpp /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/assert.h common/posib_err.hpp common/string.hpp \ + /usr/include/string.h /usr/include/bits/string3.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/error.hpp common/errors.hpp common/ndebug.hpp common/gettext.h + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/assert.h: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/gettext.h: diff --git a/jni/common/.deps/speller.Plo b/jni/common/.deps/speller.Plo new file mode 100644 index 0000000..08e4dc9 --- /dev/null +++ b/jni/common/.deps/speller.Plo @@ -0,0 +1,294 @@ +common/speller.lo: common/speller.cpp common/speller.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/clone_ptr.hpp common/mutable_string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp \ + common/char_vector.hpp common/convert.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/stack_ptr.hpp \ + /usr/include/assert.h common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp \ + common/clone_ptr-t.hpp /usr/include/c++/4.5/typeinfo common/config.hpp \ + common/key_info.hpp + +common/speller.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/clone_ptr.hpp: + +common/mutable_string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/char_vector.hpp: + +common/convert.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/clone_ptr-t.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/config.hpp: + +common/key_info.hpp: diff --git a/jni/common/.deps/string.Plo b/jni/common/.deps/string.Plo new file mode 100644 index 0000000..42e025b --- /dev/null +++ b/jni/common/.deps/string.Plo @@ -0,0 +1,215 @@ +common/string.lo: common/string.cpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/string.hpp \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/asc_ctype.hpp + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/asc_ctype.hpp: diff --git a/jni/common/.deps/string_list.Plo b/jni/common/.deps/string_list.Plo new file mode 100644 index 0000000..8bed9d1 --- /dev/null +++ b/jni/common/.deps/string_list.Plo @@ -0,0 +1,237 @@ +common/string_list.lo: common/string_list.cpp common/string_list.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/char_vector.hpp common/mutable_container.hpp common/posib_err.hpp \ + common/error.hpp common/errors.hpp common/ndebug.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/cstdio + +common/string_list.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/mutable_container.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/cstdio: diff --git a/jni/common/.deps/string_map.Plo b/jni/common/.deps/string_map.Plo new file mode 100644 index 0000000..e2583c5 --- /dev/null +++ b/jni/common/.deps/string_map.Plo @@ -0,0 +1,242 @@ +common/string_map.lo: common/string_map.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/assert.h \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/string_map.hpp \ + common/mutable_container.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/string_pair.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/objstack.hpp \ + common/string_pair_enumeration.hpp common/hash-t.hpp \ + common/block_slist-t.hpp /usr/include/c++/4.5/cassert + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/assert.h: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/string_pair_enumeration.hpp: + +common/hash-t.hpp: + +common/block_slist-t.hpp: + +/usr/include/c++/4.5/cassert: diff --git a/jni/common/.deps/strtonum.Plo b/jni/common/.deps/strtonum.Plo new file mode 100644 index 0000000..7b1d811 --- /dev/null +++ b/jni/common/.deps/strtonum.Plo @@ -0,0 +1,71 @@ +common/strtonum.lo: common/strtonum.cpp /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h common/strtonum.hpp \ + common/asc_ctype.hpp + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +common/strtonum.hpp: + +common/asc_ctype.hpp: diff --git a/jni/common/.deps/tokenizer.Plo b/jni/common/.deps/tokenizer.Plo new file mode 100644 index 0000000..305f161 --- /dev/null +++ b/jni/common/.deps/tokenizer.Plo @@ -0,0 +1,280 @@ +common/tokenizer.lo: common/tokenizer.cpp common/tokenizer.hpp \ + common/char_vector.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/filter_char.hpp common/filter_char_vector.hpp \ + common/vector.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/posib_err.hpp common/error.hpp common/errors.hpp \ + common/ndebug.hpp common/stack_ptr.hpp /usr/include/assert.h \ + common/filter.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp + +common/tokenizer.hpp: + +common/char_vector.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: diff --git a/jni/common/.dirstamp b/jni/common/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/common/Makefile b/jni/common/Makefile new file mode 100644 index 0000000..9141085 --- /dev/null +++ b/jni/common/Makefile @@ -0,0 +1,4 @@ +top_srcdir = .. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/common/Makefile.in b/jni/common/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/common/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/common/asc_ctype.hpp b/jni/common/asc_ctype.hpp new file mode 100644 index 0000000..2d48305 --- /dev/null +++ b/jni/common/asc_ctype.hpp @@ -0,0 +1,44 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASC_CTYPE__HPP +#define ASC_CTYPE__HPP + +namespace acommon { + + static inline bool asc_isspace(int c) + { + return c==' ' || c=='\n' || c=='\r' || c=='\t' || c=='\f' || c=='\v'; + } + + static inline bool asc_isdigit(int c) + { + return '0' <= c && c <= '9'; + } + static inline bool asc_islower(int c) + { + return 'a' <= c && c <= 'z'; + } + static inline bool asc_isupper(int c) + { + return 'A' <= c && c <= 'Z'; + } + static inline bool asc_isalpha(int c) + { + return asc_islower(c) || asc_isupper(c); + } + static inline int asc_tolower(int c) + { + return asc_isupper(c) ? c + 0x20 : c; + } + static inline int asc_toupper(int c) + { + return asc_islower(c) ? c - 0x20 : c; + } + +} + +#endif diff --git a/jni/common/basic_list.hpp b/jni/common/basic_list.hpp new file mode 100644 index 0000000..c8072fe --- /dev/null +++ b/jni/common/basic_list.hpp @@ -0,0 +1,68 @@ +#ifndef autil__basic_list_hh +#define autil__basic_list_hh + +#include <list> +//#include <ext/slist> + +//#include <assert.h> + +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +// BasicList is a simple list structure which can either be +// implemented as a singly or doubly linked list. I created it +// because a Singly liked list is not part of the C++ standard however +// the Doubly Linked list does not have the same methods as the doubly +// linked list because the singly linked list has a bunch of special +// methods to address the fact that it is far faster to insert +// elements before the position pointed to by an iterator is far faster +// than inserting elements after the current position which is what is +// normally done. Thus it is not possibly to simply substitute a singly +// linked list with a doubly linked list by changing the name of the +// container used. This list currently acts as a wrapper for the list +// (doubly linked list) STL class however it can also very easily be +// written as a wrapper for the slist (singly linked list) class when +// it is available (slist is part of the SGI STL but not the C++ +// standard) for better performance. + +namespace acommon { + + template <typename T> + class BasicList { + //typedef __gnu_cxx::slist<T> List; + typedef std::list<T> List; + List data_; + public: + // treat the iterators as forward iterators only + typedef typename List::iterator iterator; + typedef typename List::const_iterator const_iterator; + typedef typename List::size_type size_type; + bool empty() {return data_.empty();} + void clear() {data_.clear();} + size_type size() {return data_.size();} + iterator begin() {return data_.begin();} + iterator end() {return data_.end();} + const_iterator begin() const {return data_.begin();} + const_iterator end() const {return data_.end();} + void push_front(const T & item) {data_.push_front(item);} + void pop_front() {data_.pop_front();} + T & front() {return data_.front();} + const T & front() const {return data_.front();} + void swap(BasicList & other) {data_.swap(other.data_);} + void sort() {data_.sort();} + template<class Pred> void sort(Pred pr) {data_.sort(pr);} + void splice_into (BasicList & other, iterator prev, iterator cur) + { + //++prev; + //assert (prev == cur); + data_.splice(data_.begin(),other.data_,cur); + //data_.splice_after(data_.begin(), prev); + } + }; + +} + +#endif diff --git a/jni/common/block_slist-t.hpp b/jni/common/block_slist-t.hpp new file mode 100644 index 0000000..669c4bd --- /dev/null +++ b/jni/common/block_slist-t.hpp @@ -0,0 +1,55 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef autil__block_slist_t_hh +#define autil__block_slist_t_hh + +#include <cstdlib> +#include <cassert> + +#include "block_slist.hpp" + +namespace acommon { + + template <typename T> + void BlockSList<T>::add_block(unsigned int num) + { + assert (reinterpret_cast<const char *>(&(first_available->next)) + == + reinterpret_cast<const char *>(first_available)); + const unsigned int ptr_offset = + reinterpret_cast<const char *>(&(first_available->data)) + - reinterpret_cast<const char *>(&(first_available->next)); + void * block = malloc( ptr_offset + sizeof(Node) * num ); + *reinterpret_cast<void **>(block) = first_block; + first_block = block; + Node * first = reinterpret_cast<Node *>(reinterpret_cast<char *>(block) + ptr_offset); + Node * i = first; + Node * last = i + num; + while (i + 1 != last) { + i->next = i + 1; + i = i + 1; + } + i->next = 0; + first_available = first; + } + + template <typename T> + void BlockSList<T>::clear() + { + void * i = first_block; + while (i != 0) { + void * n = *reinterpret_cast<void **>(i); + free(i); + i = n; + } + first_block = 0; + first_available = 0; + } + +} + +#endif diff --git a/jni/common/block_slist.hpp b/jni/common/block_slist.hpp new file mode 100644 index 0000000..3c9a025 --- /dev/null +++ b/jni/common/block_slist.hpp @@ -0,0 +1,76 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef autil__block_slist_hh +#define autil__block_slist_hh + +// BlockSList provided a pool of nodes which can be used for singly +// linked lists. Nodes are allocated in large chunks instead of +// one at a time which means that getting a new node is very fast. +// Nodes returned are not initialized in any way. A placement new +// must be used to construct the the data member and the destructor +// must explicitly be called. + +namespace acommon { + + template <typename T> + class BlockSList { + + public: + + struct Node { + Node * next; + T data; + }; + + private: + + void * first_block; + Node * first_available; + + BlockSList(const BlockSList &); + BlockSList & operator= (const BlockSList &); + + public: + + BlockSList() + // Default constructor. + // add_block must be called before any nodes are available + : first_block(0), first_available(0) {}; + + Node * new_node() + // return a new_node if one is available or null otherwise + // Note: the node's data member is NOT initialized in any way. + { + Node * n = first_available; + if (n != 0) + first_available = first_available->next; + return n; + } + + void remove_node(Node * n) + // marks the node as availabe + // Note: the node's data memeber destructor is NOT called + { + n->next = first_available; + first_available = n; + } + + void add_block(unsigned int num); + // allocate enough memory for an additional num nodes + + void clear(); + // free all memory. add_block must then be called before any nodes + // are available + // Note: the node's data member destructor is NOT called + + + ~BlockSList() {clear();} + + }; + +} +#endif diff --git a/jni/common/cache-t.hpp b/jni/common/cache-t.hpp new file mode 100644 index 0000000..c326fd2 --- /dev/null +++ b/jni/common/cache-t.hpp @@ -0,0 +1,101 @@ +#ifndef ACOMMON_CACHE_T__HPP +#define ACOMMON_CACHE_T__HPP + +#include "lock.hpp" +#include "cache.hpp" + +//#include "iostream.hpp" + +namespace acommon { + +class GlobalCacheBase +{ +public: + mutable Mutex lock; +public: // but don't use + const char * name; + GlobalCacheBase * next; + GlobalCacheBase * * prev; +protected: + Cacheable * first; + void del(Cacheable * d); + void add(Cacheable * n); + GlobalCacheBase(const char * n); + ~GlobalCacheBase(); +public: + void release(Cacheable * d); + void detach(Cacheable * d); + void detach_all(); +}; + +template <class D> +class GlobalCache : public GlobalCacheBase +{ +public: + typedef D Data; + typedef typename Data::CacheKey Key; +public: + GlobalCache(const char * n) : GlobalCacheBase(n) {} + // "find" and "add" will _not_ acquire a lock + Data * find(const Key & key) { + D * cur = static_cast<D *>(first); + while (cur && !cur->cache_key_eq(key)) + cur = static_cast<D *>(cur->next); + return cur; + } + void add(Data * n) {GlobalCacheBase::add(n);} + // "release" and "detach" _will_ acquire a lock + void release(Data * d) {GlobalCacheBase::release(d);} + void detach(Data * d) {GlobalCacheBase::detach(d);} +}; + +template <class Data> +PosibErr<Data *> get_cache_data(GlobalCache<Data> * cache, + typename Data::CacheConfig * config, + const typename Data::CacheKey & key) +{ + LOCK(&cache->lock); + Data * n = cache->find(key); + //CERR << "Getting " << key << " for " << cache->name << "\n"; + if (n) { + n->refcount++; + return n; + } + PosibErr<Data *> res = Data::get_new(key, config); + if (res.has_err()) { + //CERR << "ERROR\n"; + return res; + } + n = res.data; + cache->add(n); + //CERR << "LOADED FROM DISK\n"; + return n; +} + +template <class Data> +PosibErr<Data *> get_cache_data(GlobalCache<Data> * cache, + typename Data::CacheConfig * config, + typename Data::CacheConfig2 * config2, + const typename Data::CacheKey & key) +{ + LOCK(&cache->lock); + Data * n = cache->find(key); + //CERR << "Getting " << key << "\n"; + if (n) { + n->refcount++; + return n; + } + PosibErr<Data *> res = Data::get_new(key, config, config2); + if (res.has_err()) { + //CERR << "ERROR\n"; + return res; + } + n = res.data; + cache->add(n); + //CERR << "LOADED FROM DISK\n"; + return n; +} + +} + +#endif diff --git a/jni/common/cache.cpp b/jni/common/cache.cpp new file mode 100644 index 0000000..c4884e5 --- /dev/null +++ b/jni/common/cache.cpp @@ -0,0 +1,122 @@ +#include <assert.h> + +#include "stack_ptr.hpp" +#include "cache-t.hpp" + +namespace acommon { + +static StackPtr<Mutex> global_cache_lock(new Mutex); +static GlobalCacheBase * first_cache = 0; + +void Cacheable::copy() const +{ + //CERR << "COPY\n"; + LOCK(&cache->lock); + copy_no_lock(); +} + +void GlobalCacheBase::del(Cacheable * n) +{ + *n->prev = n->next; + if (n->next) n->next->prev = n->prev; + n->next = 0; + n->prev = 0; +} + +void GlobalCacheBase::add(Cacheable * n) +{ + assert(n->refcount > 0); + n->next = first; + n->prev = &first; + if (first) first->prev = &n->next; + first = n; + n->cache = this; +} + +void GlobalCacheBase::release(Cacheable * d) +{ + //CERR << "RELEASE\n"; + LOCK(&lock); + d->refcount--; + assert(d->refcount >= 0); + if (d->refcount != 0) return; + //CERR << "DEL\n"; + if (d->attached()) del(d); + delete d; +} + +void GlobalCacheBase::detach(Cacheable * d) +{ + LOCK(&lock); + if (d->attached()) del(d); +} + +void GlobalCacheBase::detach_all() +{ + LOCK(&lock); + Cacheable * p = first; + while (p) { + *p->prev = 0; + p->prev = 0; + p = p->next; + } +} + +void release_cache_data(GlobalCacheBase * cache, const Cacheable * d) +{ + cache->release(const_cast<Cacheable *>(d)); +} + +GlobalCacheBase::GlobalCacheBase(const char * n) + : name (n) +{ + LOCK(global_cache_lock); + next = first_cache; + prev = &first_cache; + if (first_cache) first_cache->prev = &next; + first_cache = this; +} + +GlobalCacheBase::~GlobalCacheBase() +{ + detach_all(); + LOCK(global_cache_lock); + *prev = next; + if (next) next->prev = prev; +} + +bool reset_cache(const char * which) +{ + LOCK(global_cache_lock); + bool any = false; + for (GlobalCacheBase * i = first_cache; i; i = i->next) + { + if (which && strcmp(i->name, which) == 0) {i->detach_all(); any = true;} + } + return any; +} + +extern "C" +int aspell_reset_cache(const char * which) +{ + return reset_cache(which); +} + +#if 0 + +struct CacheableImpl : public Cacheable +{ + class CacheConfig; + typedef String CacheKey; + bool cache_key_eq(const CacheKey &); + static PosibErr<CacheableImpl *> get_new(const CacheKey &, CacheConfig *); +}; + +template +PosibErr<CacheableImpl *> get_cache_data(GlobalCache<CacheableImpl> *, + CacheableImpl::CacheConfig *, + const CacheableImpl::CacheKey &); + +#endif + +} diff --git a/jni/common/cache.hpp b/jni/common/cache.hpp new file mode 100644 index 0000000..8770afc --- /dev/null +++ b/jni/common/cache.hpp @@ -0,0 +1,86 @@ +#ifndef ACOMMON_CACHE__HPP +#define ACOMMON_CACHE__HPP + +#include "posib_err.hpp" + +namespace acommon { + +class GlobalCacheBase; +template <class Data> class GlobalCache; + +// get_cache_data (both versions) and release_cache_data will acquires +// the cache's lock + +template <class Data> +PosibErr<Data *> get_cache_data(GlobalCache<Data> *, + typename Data::CacheConfig *, + const typename Data::CacheKey &); +template <class Data> +PosibErr<Data *> get_cache_data(GlobalCache<Data> *, + typename Data::CacheConfig *, + typename Data::CacheConfig2 *, + const typename Data::CacheKey &); + +class Cacheable; +void release_cache_data(GlobalCacheBase *, const Cacheable *); +static inline void release_cache_data(const GlobalCacheBase * c, const Cacheable * d) +{ + release_cache_data(const_cast<GlobalCacheBase *>(c),d); +} + +class Cacheable +{ +public: // but don't use + Cacheable * next; + Cacheable * * prev; + mutable int refcount; + GlobalCacheBase * cache; +public: + bool attached() {return prev;} + void copy_no_lock() const {refcount++;} + void copy() const; // Acquires cache->lock + void release() const {release_cache_data(cache,this);} // Acquires cache->lock + Cacheable(GlobalCacheBase * c = 0) : next(0), prev(0), refcount(1), cache(c) {} + virtual ~Cacheable() {} +}; + +template <class Data> +class CachePtr +{ + Data * ptr; + +public: + void reset(Data * p) { + if (ptr) ptr->release(); + ptr = p; + } + void copy(Data * p) {if (p) p->copy(); reset(p);} + Data * release() {Data * tmp = ptr; ptr = 0; return tmp;} + + Data & operator* () const {return *ptr;} + Data * operator-> () const {return ptr;} + Data * get() const {return ptr;} + operator Data * () const {return ptr;} + + CachePtr() : ptr(0) {} + CachePtr(const CachePtr & other) {ptr = other.ptr; if (ptr) ptr->copy();} + void operator=(const CachePtr & other) {copy(other.ptr);} + ~CachePtr() {reset(0);} +}; + +template <class Data> +PosibErr<void> setup(CachePtr<Data> & res, + GlobalCache<Data> * cache, + typename Data::CacheConfig * config, + const typename Data::CacheKey & key) { + PosibErr<Data *> pe = get_cache_data(cache, config, key); + if (pe.has_err()) return pe; + res.reset(pe.data); + return no_err; +} + +bool reset_cache(const char * = 0); + +} + +#endif diff --git a/jni/common/cache.lo b/jni/common/cache.lo new file mode 100644 index 0000000..9ad66df --- /dev/null +++ b/jni/common/cache.lo @@ -0,0 +1,12 @@ +# common/cache.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cache.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/can_have_error.cpp b/jni/common/can_have_error.cpp new file mode 100644 index 0000000..42bfb79 --- /dev/null +++ b/jni/common/can_have_error.cpp @@ -0,0 +1,30 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "error.hpp" +#include "can_have_error.hpp" + +namespace acommon { + + CanHaveError::CanHaveError(Error * e) + : err_(e) + {} + + CanHaveError::~CanHaveError() + {} + + CanHaveError::CanHaveError(const CanHaveError & other) + : err_(other.err_) {} + + + CanHaveError & CanHaveError::operator=(const CanHaveError & other) + { + err_ = other.err_; + return *this; + } + + +} diff --git a/jni/common/can_have_error.hpp b/jni/common/can_have_error.hpp new file mode 100644 index 0000000..aae735d --- /dev/null +++ b/jni/common/can_have_error.hpp @@ -0,0 +1,29 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_CAN_HAVE_ERROR__HPP +#define ASPELL_CAN_HAVE_ERROR__HPP + +#include "copy_ptr.hpp" +#include "error.hpp" + +namespace acommon { + +struct Error; + +class CanHaveError { + public: + CanHaveError(Error * e = 0); + CopyPtr<Error> err_; + virtual ~CanHaveError(); + CanHaveError(const CanHaveError &); + CanHaveError & operator=(const CanHaveError &); +}; + + +} + +#endif /* ASPELL_CAN_HAVE_ERROR__HPP */ diff --git a/jni/common/can_have_error.lo b/jni/common/can_have_error.lo new file mode 100644 index 0000000..2eacf39 --- /dev/null +++ b/jni/common/can_have_error.lo @@ -0,0 +1,12 @@ +# common/can_have_error.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/can_have_error.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/char_vector.hpp b/jni/common/char_vector.hpp new file mode 100644 index 0000000..6ef061b --- /dev/null +++ b/jni/common/char_vector.hpp @@ -0,0 +1,18 @@ +// This file is part of The New Aspell +// Copyright (C) 2001-2003 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_CHAR_VECTOR__HPP +#define ASPELL_CHAR_VECTOR__HPP + +#include "string.hpp" +#include "ostream.hpp" + +namespace acommon +{ + typedef String CharVector; +} + +#endif diff --git a/jni/common/clone_ptr-t.hpp b/jni/common/clone_ptr-t.hpp new file mode 100644 index 0000000..05e7b79 --- /dev/null +++ b/jni/common/clone_ptr-t.hpp @@ -0,0 +1,45 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef autil__clone_ptr_t +#define autil__clone_ptr_t + +#include "clone_ptr.hpp" +#include <typeinfo> +#include "generic_copy_ptr-t.hpp" + +namespace acommon { + + template <typename T> + inline T * ClonePtr<T>::Parms::clone(const T * ptr) const { + return ptr->clone(); + } + + template <typename T> + void ClonePtr<T>::Parms::assign(T * & rhs, const T * lhs) const { + if (typeid(*rhs) == typeid(*lhs)) { + rhs->assign(lhs); + } else { + T * temp = rhs; + rhs = lhs->clone(); + delete temp; + } + } + + template <typename T> + inline void ClonePtr<T>::Parms::del(T * ptr) { + delete ptr; + } + +} + +#endif diff --git a/jni/common/clone_ptr.hpp b/jni/common/clone_ptr.hpp new file mode 100644 index 0000000..a4a6eef --- /dev/null +++ b/jni/common/clone_ptr.hpp @@ -0,0 +1,54 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef autil__clone_ptr +#define autil__clone_ptr + +#include "generic_copy_ptr.hpp" + +namespace acommon { + + template <typename T> + class ClonePtr + { + struct Parms { + T * clone(const T * ptr) const; + void assign(T * & rhs, const T * lhs) const; + void del(T * ptr); + }; + GenericCopyPtr<T, Parms> impl; + + public: + + explicit ClonePtr(T * p = 0) : impl(p) {} + ClonePtr(const ClonePtr & other) : impl(other.impl) {} + + ClonePtr & operator=(const ClonePtr & other) { + impl = other.impl; + return *this; + } + + void assign(const T * other) {impl.assign(other);} + void reset(T * other = 0) {impl.reset(other);} + + T & operator* () const {return *impl;} + T * operator-> () const {return impl;} + T * get() const {return impl;} + operator T * () const {return impl;} + + T * release() {return impl.release();} + }; + +} + +#endif + diff --git a/jni/common/config.cpp b/jni/common/config.cpp new file mode 100644 index 0000000..b1e919b --- /dev/null +++ b/jni/common/config.cpp @@ -0,0 +1,1525 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +//#include <stdio.h> +//#define DEBUG {fprintf(stderr,"File: %s(%i)\n",__FILE__,__LINE__);} +#include <string.h> +#include <stdlib.h> +#include "ndebug.hpp" +#include <assert.h> + +#include "dirs.h" +#include "settings.h" + +#ifdef USE_LOCALE +# include <locale.h> +#endif + +#ifdef HAVE_LANGINFO_CODESET +# include <langinfo.h> +#endif + +#include "cache.hpp" +#include "asc_ctype.hpp" +#include "config.hpp" +#include "errors.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "itemize.hpp" +#include "mutable_container.hpp" +#include "posib_err.hpp" +#include "string_map.hpp" +#include "stack_ptr.hpp" +#include "char_vector.hpp" +#include "convert.hpp" +#include "vararray.hpp" +#include "string_list.hpp" + +#include "gettext.h" + +#include "iostream.hpp" + +#define DEFAULT_LANG "en_US" + +// NOTE: All filter options are now stored with he "f-" prefix. However +// during lookup, the non prefix version is also recognized. + +// The "place_holder" field in Entry and the "Vector<int>" parameter of +// commit_all are there to deal with the fact than when spacing +// options on the command line such as "--key what" it can not be +// determined if "what" should be a the value of "key" or if it should +// be treated as an independent arg. This is because "key" may +// be a filter option. Filter options KeyInfo are not loaded until +// after a commit which is not done at the time the options are being +// read in from the command line. (If the command line arguments are +// read in after the other settings are read in and committed than any +// options setting any of the config files will be ignored. Thus the +// command line must be parsed and options must be added in an +// uncommitted state). So the solution is to assume it is an +// independent arg until told otherwise, the position in the arg array +// is stored along with the value in the "place_holder" field. When +// the config class is finally committed and it is determined that +// "what" is really a value for key the stored arg position is pushed +// onto the Vector<int> so it can be removed from the arg array. In +// the case of a "lset-*" this will happen in multiple config +// "Entry"s, so care is taken to only add the arg position once. + +namespace acommon { + + const char * const keyinfo_type_name[4] = { + N_("string"), N_("integer"), N_("boolean"), N_("list") + }; + + const int Config::num_parms_[9] = {1, 1, 0, 0, 0, + 1, 1, 1, 0}; + + typedef Notifier * NotifierPtr; + + Config::Config(ParmStr name, + const KeyInfo * mainbegin, + const KeyInfo * mainend) + : name_(name) + , first_(0), insert_point_(&first_), others_(0) + , committed_(true), attached_(false) + , md_info_list_index(-1) + , settings_read_in_(false) + , load_filter_hook(0) + , filter_mode_notifier(0) + { + keyinfo_begin = mainbegin; + keyinfo_end = mainend; + extra_begin = 0; + extra_end = 0; + } + + Config::~Config() { + del(); + } + + Config::Config(const Config & other) + { + copy(other); + } + + Config & Config::operator= (const Config & other) + { + del(); + copy(other); + return *this; + } + + Config * Config::clone() const { + return new Config(*this); + } + + void Config::assign(const Config * other) { + *this = *(const Config *)(other); + } + + void Config::copy(const Config & other) + { + assert(other.others_ == 0); + others_ = 0; + + name_ = other.name_; + + committed_ = other.committed_; + attached_ = other.attached_; + settings_read_in_ = other.settings_read_in_; + + keyinfo_begin = other.keyinfo_begin; + keyinfo_end = other.keyinfo_end; + extra_begin = other.extra_begin; + extra_end = other.extra_end; + filter_modules = other.filter_modules; + +#ifdef HAVE_LIBDL + filter_modules_ptrs = other.filter_modules_ptrs; + for (Vector<Cacheable *>::iterator i = filter_modules_ptrs.begin(); + i != filter_modules_ptrs.end(); + ++i) + (*i)->copy(); +#endif + + md_info_list_index = other.md_info_list_index; + + insert_point_ = 0; + Entry * const * src = &other.first_; + Entry * * dest = &first_; + while (*src) + { + *dest = new Entry(**src); + if (src == other.insert_point_) + insert_point_ = dest; + src = &((*src)->next); + dest = &((*dest)->next); + } + if (insert_point_ == 0) + insert_point_ = dest; + *dest = 0; + + Vector<Notifier *>::const_iterator i = other.notifier_list.begin(); + Vector<Notifier *>::const_iterator end = other.notifier_list.end(); + + for(; i != end; ++i) { + Notifier * tmp = (*i)->clone(this); + if (tmp != 0) + notifier_list.push_back(tmp); + } + } + + void Config::del() + { + while (first_) { + Entry * tmp = first_->next; + delete first_; + first_ = tmp; + } + + while (others_) { + Entry * tmp = others_->next; + delete first_; + others_ = tmp; + } + + Vector<Notifier *>::iterator i = notifier_list.begin(); + Vector<Notifier *>::iterator end = notifier_list.end(); + + for(; i != end; ++i) { + delete (*i); + *i = 0; + } + + notifier_list.clear(); + +#ifdef HAVE_LIBDL + filter_modules.clear(); + for (Vector<Cacheable *>::iterator i = filter_modules_ptrs.begin(); + i != filter_modules_ptrs.end(); + ++i) + (*i)->release(); + filter_modules_ptrs.clear(); +#endif + } + + void Config::set_filter_modules(const ConfigModule * modbegin, + const ConfigModule * modend) + { + assert(filter_modules_ptrs.empty()); + filter_modules.clear(); + filter_modules.assign(modbegin, modend); + } + + void Config::set_extra(const KeyInfo * begin, + const KeyInfo * end) + { + extra_begin = begin; + extra_end = end; + } + + // + // + // + + + // + // Notifier methods + // + + NotifierEnumeration * Config::notifiers() const + { + return new NotifierEnumeration(notifier_list); + } + + bool Config::add_notifier(Notifier * n) + { + Vector<Notifier *>::iterator i = notifier_list.begin(); + Vector<Notifier *>::iterator end = notifier_list.end(); + + while (i != end && *i != n) + ++i; + + if (i != end) { + + return false; + + } else { + + notifier_list.push_back(n); + return true; + + } + } + + bool Config::remove_notifier(const Notifier * n) + { + Vector<Notifier *>::iterator i = notifier_list.begin(); + Vector<Notifier *>::iterator end = notifier_list.end(); + + while (i != end && *i != n) + ++i; + + if (i == end) { + + return false; + + } else { + + delete *i; + notifier_list.erase(i); + return true; + + } + } + + bool Config::replace_notifier(const Notifier * o, + Notifier * n) + { + Vector<Notifier *>::iterator i = notifier_list.begin(); + Vector<Notifier *>::iterator end = notifier_list.end(); + + while (i != end && *i != o) + ++i; + + if (i == end) { + + return false; + + } else { + + delete *i; + *i = n; + return true; + + } + } + + // + // retrieve methods + // + + const Config::Entry * Config::lookup(const char * key) const + { + const Entry * res = 0; + const Entry * cur = first_; + + while (cur) { + if (cur->key == key && cur->action != NoOp) res = cur; + cur = cur->next; + } + + if (!res || res->action == Reset) return 0; + return res; + } + + bool Config::have(ParmStr key) const + { + PosibErr<const KeyInfo *> pe = keyinfo(key); + if (pe.has_err()) {pe.ignore_err(); return false;} + return lookup(pe.data->name); + } + + PosibErr<String> Config::retrieve(ParmStr key) const + { + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + if (ki->type == KeyInfoList) return make_err(key_not_string, ki->name); + + const Entry * cur = lookup(ki->name); + + return cur ? cur->value : get_default(ki); + } + + PosibErr<String> Config::retrieve_any(ParmStr key) const + { + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + + if (ki->type != KeyInfoList) { + const Entry * cur = lookup(ki->name); + return cur ? cur->value : get_default(ki); + } else { + StringList sl; + RET_ON_ERR(retrieve_list(key, &sl)); + StringListEnumeration els = sl.elements_obj(); + const char * s; + String val; + while ( (s = els.next()) != 0 ) { + val += s; + val += '\n'; + } + val.pop_back(); + return val; + } + } + + PosibErr<bool> Config::retrieve_bool(ParmStr key) const + { + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + if (ki->type != KeyInfoBool) return make_err(key_not_bool, ki->name); + + const Entry * cur = lookup(ki->name); + + String value(cur ? cur->value : get_default(ki)); + + if (value == "false") return false; + else return true; + } + + PosibErr<int> Config::retrieve_int(ParmStr key) const + { + assert(committed_); // otherwise the value may not be an integer + // as it has not been verified. + + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + if (ki->type != KeyInfoInt) return make_err(key_not_int, ki->name); + + const Entry * cur = lookup(ki->name); + + String value(cur ? cur->value : get_default(ki)); + + return atoi(value.str()); + } + + void Config::lookup_list(const KeyInfo * ki, + MutableContainer & m, + bool include_default) const + { + const Entry * cur = first_; + const Entry * first_to_use = 0; + + while (cur) { + if (cur->key == ki->name && + (first_to_use == 0 || + cur->action == Reset || cur->action == Set + || cur->action == ListClear)) + first_to_use = cur; + cur = cur->next; + } + + cur = first_to_use; + + if (include_default && + (!cur || + !(cur->action == Set || cur->action == ListClear))) + { + String def = get_default(ki); + separate_list(def, m, true); + } + + if (cur && cur->action == Reset) { + cur = cur->next; + } + + if (cur && cur->action == Set) { + if (!include_default) m.clear(); + m.add(cur->value); + cur = cur->next; + } + + if (cur && cur->action == ListClear) { + if (!include_default) m.clear(); + cur = cur->next; + } + + while (cur) { + if (cur->key == ki->name) { + if (cur->action == ListAdd) + m.add(cur->value); + else if (cur->action == ListRemove) + m.remove(cur->value); + } + cur = cur->next; + } + } + + PosibErr<void> Config::retrieve_list(ParmStr key, + MutableContainer * m) const + { + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + if (ki->type != KeyInfoList) return make_err(key_not_list, ki->name); + + lookup_list(ki, *m, true); + + return no_err; + } + + static const KeyInfo * find(ParmStr key, + const KeyInfo * i, + const KeyInfo * end) + { + while (i != end) { + if (strcmp(key, i->name) == 0) + return i; + ++i; + } + return i; + } + + static const ConfigModule * find(ParmStr key, + const ConfigModule * i, + const ConfigModule * end) + { + while (i != end) { + if (strcmp(key, i->name) == 0) + return i; + ++i; + } + return i; + } + + PosibErr<const KeyInfo *> Config::keyinfo(ParmStr key) const + { + typedef PosibErr<const KeyInfo *> Ret; + { + const KeyInfo * i; + i = acommon::find(key, keyinfo_begin, keyinfo_end); + if (i != keyinfo_end) return Ret(i); + + i = acommon::find(key, extra_begin, extra_end); + if (i != extra_end) return Ret(i); + + const char * s = strncmp(key, "f-", 2) == 0 ? key + 2 : key.str(); + const char * h = strchr(s, '-'); + if (h == 0) goto err; + + String k(s, h - s); + const ConfigModule * j = acommon::find(k, + filter_modules.pbegin(), + filter_modules.pend()); + + if (j == filter_modules.pend() && load_filter_hook && committed_) { + // FIXME: This isn't quite right + PosibErrBase pe = load_filter_hook(const_cast<Config *>(this), k); + pe.ignore_err(); + j = acommon::find(k, + filter_modules.pbegin(), + filter_modules.pend()); + } + + if (j == filter_modules.pend()) goto err; + + i = acommon::find(key, j->begin, j->end); + if (i != j->end) return Ret(i); + + if (strncmp(key, "f-", 2) != 0) k = "f-"; + else k = ""; + k += key; + i = acommon::find(k, j->begin, j->end); + if (i != j->end) return Ret(i); + } + err: + return Ret().prim_err(unknown_key, key); + } + + static bool proc_locale_str(ParmStr lang, String & final_str) + { + if (lang == 0) return false; + const char * i = lang; + if (!(asc_islower(i[0]) && asc_islower(i[1]))) return false; + final_str.assign(i, 2); + i += 2; + if (! (i[0] == '_' || i[0] == '-')) return true; + i += 1; + if (!(asc_isupper(i[0]) && asc_isupper(i[1]))) return true; + final_str += '_'; + final_str.append(i, 2); + return true; + } + + static void get_lang_env(String & str) + { + if (proc_locale_str(getenv("LC_MESSAGES"), str)) return; + if (proc_locale_str(getenv("LANG"), str)) return; + if (proc_locale_str(getenv("LANGUAGE"), str)) return; + str = DEFAULT_LANG; + } + +#ifdef USE_LOCALE + + static void get_lang(String & final_str) + { + // FIXME: THIS IS NOT THREAD SAFE + String locale = setlocale (LC_ALL, NULL); + if (locale == "C") + setlocale (LC_ALL, ""); + const char * lang = setlocale (LC_MESSAGES, NULL); + bool res = proc_locale_str(lang, final_str); + if (locale == "C") + setlocale(LC_MESSAGES, locale.c_str()); + if (!res) + get_lang_env(final_str); + } + +#else + + static inline void get_lang(String & str) + { + get_lang_env(str); + } + +#endif + +#if defined USE_LOCALE && defined HAVE_LANGINFO_CODESET + + static inline void get_encoding(const Config & c, String & final_str) + { + const char * codeset = nl_langinfo(CODESET); + if (ascii_encoding(c, codeset)) codeset = "none"; + final_str = codeset; + } + +#else + + static inline void get_encoding(const Config &, String & final_str) + { + final_str = "none"; + } + +#endif + + String Config::get_default(const KeyInfo * ki) const + { + bool in_replace = false; + String final_str; + String replace; + const char * i = ki->def; + if (*i == '!') { // special cases + ++i; + + if (strcmp(i, "lang") == 0) { + + const Entry * entry; + if (entry = lookup("actual-lang"), entry) { + return entry->value; + } else if (have("master")) { + final_str = "<unknown>"; + } else { + get_lang(final_str); + } + + } else if (strcmp(i, "encoding") == 0) { + + get_encoding(*this, final_str); + + } else if (strcmp(i, "special") == 0) { + + // do nothing + + } else { + + abort(); // this should not happen + + } + + } else for(; *i; ++i) { + + if (!in_replace) { + + if (*i == '<') { + in_replace = true; + } else { + final_str += *i; + } + + } else { // in_replace + + if (*i == '/' || *i == ':' || *i == '|' || *i == '#' || *i == '^') { + char sep = *i; + String second; + ++i; + while (*i != '\0' && *i != '>') second += *i++; + if (sep == '/') { + String s1 = retrieve(replace); + String s2 = retrieve(second); + final_str += add_possible_dir(s1, s2); + } else if (sep == ':') { + String s1 = retrieve(replace); + final_str += add_possible_dir(s1, second); + } else if (sep == '#') { + String s1 = retrieve(replace); + assert(second.size() == 1); + unsigned int s = 0; + while (s != s1.size() && s1[s] != second[0]) ++s; + final_str.append(s1, s); + } else if (sep == '^') { + String s1 = retrieve(replace); + String s2 = retrieve(second); + final_str += figure_out_dir(s1, s2); + } else { // sep == '|' + assert(replace[0] == '$'); + const char * env = getenv(replace.c_str()+1); + final_str += env ? env : second; + } + replace = ""; + in_replace = false; + + } else if (*i == '>') { + + final_str += retrieve(replace).data; + replace = ""; + in_replace = false; + + } else { + + replace += *i; + + } + + } + + } + return final_str; + } + + PosibErr<String> Config::get_default(ParmStr key) const + { + RET_ON_ERR_SET(keyinfo(key), const KeyInfo *, ki); + return get_default(ki); + } + + + +#define TEST(v,l,a) \ + do { \ + if (len == l && memcmp(s, v, l) == 0) { \ + if (action) *action = a; \ + return c + 1; \ + } \ + } while (false) + + const char * Config::base_name(const char * s, Action * action) + { + if (action) *action = Set; + const char * c = strchr(s, '-'); + if (!c) return s; + unsigned len = c - s; + TEST("reset", 5, Reset); + TEST("enable", 6, Enable); + TEST("dont", 4, Disable); + TEST("disable", 7, Disable); + TEST("lset", 4, ListSet); + TEST("rem", 3, ListRemove); + TEST("remove", 6, ListRemove); + TEST("add", 3, ListAdd); + TEST("clear", 5, ListClear); + return s; + } + +#undef TEST + + void separate_list(ParmStr value, AddableContainer & out, bool do_unescape) + { + unsigned len = value.size(); + + VARARRAY(char, buf, len + 1); + memcpy(buf, value, len + 1); + + len = strlen(buf); + char * s = buf; + char * end = buf + len; + + while (s < end) + { + if (do_unescape) while (*s == ' ' || *s == '\t') ++s; + char * b = s; + char * e = s; + while (*s != '\0') { + if (do_unescape && *s == '\\') { + ++s; + if (*s == '\0') break; + e = s; + ++s; + } else { + if (*s == ':') break; + if (!do_unescape || (*s != ' ' && *s != '\t')) e = s; + ++s; + } + } + if (s != b) { + ++e; + *e = '\0'; + if (do_unescape) unescape(b); + + out.add(b); + } + ++s; + } + } + + void combine_list(String & res, const StringList & in) + { + res.clear(); + StringListEnumeration els = in.elements_obj(); + const char * s = 0; + while ( (s = els.next()) != 0) + { + for (; *s; ++s) { + if (*s == ':') + res.append('\\'); + res.append(*s); + } + res.append(':'); + } + if (res.back() == ':') res.pop_back(); + } + + struct ListAddHelper : public AddableContainer + { + Config * config; + Config::Entry * orig_entry; + PosibErr<bool> add(ParmStr val); + }; + + PosibErr<bool> ListAddHelper::add(ParmStr val) + { + Config::Entry * entry = new Config::Entry(*orig_entry); + entry->value = val; + entry->action = Config::ListAdd; + config->set(entry); + return true; + } + + void Config::replace_internal(ParmStr key, ParmStr value) + { + Entry * entry = new Entry; + entry->key = key; + entry->value = value; + entry->action = Set; + entry->next = *insert_point_; + *insert_point_ = entry; + insert_point_ = &entry->next; + } + + PosibErr<void> Config::replace(ParmStr key, ParmStr value) + { + Entry * entry = new Entry; + entry->key = key; + entry->value = value; + return set(entry); + } + + PosibErr<void> Config::remove(ParmStr key) + { + Entry * entry = new Entry; + entry->key = key; + entry->action = Reset; + return set(entry); + } + + PosibErr<void> Config::set(Entry * entry0, bool do_unescape) + { + StackPtr<Entry> entry(entry0); + + if (entry->action == NoOp) + entry->key = base_name(entry->key.str(), &entry->action); + + if (num_parms(entry->action) == 0 && !entry->value.empty()) + { + if (entry->place_holder == -1) { + switch (entry->action) { + case Reset: + return make_err(no_value_reset, entry->key); + case Enable: + return make_err(no_value_enable, entry->key); + case Disable: + return make_err(no_value_disable, entry->key); + case ListClear: + return make_err(no_value_clear, entry->key); + default: + abort(); // this shouldn't happen + } + } else { + entry->place_holder = -1; + } + } + + if (entry->action != ListSet) { + + switch (entry->action) { + case Enable: + entry->value = "true"; + entry->action = Set; + break; + case Disable: + entry->value = "false"; + entry->action = Set; + break; + default: + ; + } + if (do_unescape) unescape(entry->value.mstr()); + + entry->next = *insert_point_; + *insert_point_ = entry; + insert_point_ = &entry->next; + entry.release(); + if (committed_) RET_ON_ERR(commit(entry0)); // entry0 == entry + + } else { // action == ListSet + + Entry * ent = new Entry; + ent->key = entry->key; + ent->action = ListClear; + set(ent); + + ListAddHelper helper; + helper.config = this; + helper.orig_entry = entry; + + separate_list(entry->value.str(), helper, do_unescape); + } + return no_err; + } + + PosibErr<void> Config::merge(const Config & other) + { + const Entry * src = other.first_; + while (src) + { + Entry * entry = new Entry(*src); + entry->next = *insert_point_; + *insert_point_ = entry; + insert_point_ = &entry->next; + if (committed_) RET_ON_ERR(commit(entry)); + src = src->next; + } + return no_err; + } + + void Config::lang_config_merge(const Config & other, + int which, ParmStr data_encoding) + { + Conv to_utf8; + to_utf8.setup(*this, data_encoding, "utf-8", NormTo); + const Entry * src = other.first_; + Entry * * ip = &first_; + while (src) + { + const KeyInfo * l_ki = other.keyinfo(src->key); + if (l_ki->other_data == which) { + const KeyInfo * c_ki = keyinfo(src->key); + Entry * entry = new Entry(*src); + if (c_ki->flags & KEYINFO_UTF8) + entry->value = to_utf8(entry->value); + entry->next = *ip; + *ip = entry; + ip = &entry->next; + } + src = src->next; + } + } + + +#define NOTIFY_ALL(fun) \ + do { \ + Vector<Notifier *>::iterator i = notifier_list.begin(); \ + Vector<Notifier *>::iterator end = notifier_list.end(); \ + while (i != end) { \ + RET_ON_ERR((*i)->fun); \ + ++i; \ + } \ + } while (false) + + PosibErr<int> Config::commit(Entry * entry, Conv * conv) + { + PosibErr<const KeyInfo *> pe = keyinfo(entry->key); + { + if (pe.has_err()) goto error; + + const KeyInfo * ki = pe; + + entry->key = ki->name; + + // FIXME: This is the correct thing to do but it causes problems + // with changing a filter mode in "pipe" mode and probably + // elsewhere. + //if (attached_ && !(ki->flags & KEYINFO_MAY_CHANGE)) { + // pe = make_err(cant_change_value, entry->key); + // goto error; + //} + + int place_holder = entry->place_holder; + + if (conv && ki->flags & KEYINFO_UTF8) + entry->value = (*conv)(entry->value); + + if (ki->type != KeyInfoList && list_action(entry->action)) { + pe = make_err(key_not_list, entry->key); + goto error; + } + + assert(ki->def != 0); // if null this key should never have values + // directly added to it + String value(entry->action == Reset ? get_default(ki) : entry->value); + + switch (ki->type) { + + case KeyInfoBool: { + + bool val; + + if (value.empty() || entry->place_holder != -1) { + // if entry->place_holder != -1 than IGNORE the value no + // matter what it is + entry->value = "true"; + val = true; + place_holder = -1; + } else if (value == "true") { + val = true; + } else if (value == "false") { + val = false; + } else { + pe = make_err(bad_value, entry->key, value, + /* TRANSLATORS: "true" and "false" are literal + * values and should not be translated.*/ + _("either \"true\" or \"false\"")); + goto error; + } + + NOTIFY_ALL(item_updated(ki, val)); + break; + + } case KeyInfoString: + + NOTIFY_ALL(item_updated(ki, value)); + break; + + case KeyInfoInt: + { + int num; + + if (sscanf(value.str(), "%i", &num) == 1 && num >= 0) { + NOTIFY_ALL(item_updated(ki, num)); + } else { + pe = make_err(bad_value, entry->key, value, _("a positive integer")); + goto error; + } + + break; + } + case KeyInfoList: + + NOTIFY_ALL(list_updated(ki)); + break; + + } + return place_holder; + } + error: + entry->action = NoOp; + if (!entry->file.empty()) + return pe.with_file(entry->file, entry->line_num); + else + return (PosibErrBase &)pe; + } + +#undef NOTIFY_ALL + + + ///////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////// + + class PossibleElementsEmul : public KeyInfoEnumeration + { + private: + bool include_extra; + bool include_modules; + bool module_changed; + const Config * cd; + const KeyInfo * i; + const ConfigModule * m; + public: + PossibleElementsEmul(const Config * d, bool ic, bool im) + : include_extra(ic), include_modules(im), + module_changed(false), cd(d), i(d->keyinfo_begin), m(0) {} + + KeyInfoEnumeration * clone() const { + return new PossibleElementsEmul(*this); + } + + void assign(const KeyInfoEnumeration * other) { + *this = *(const PossibleElementsEmul *)(other); + } + + virtual bool active_filter_module_changed(void) { + return module_changed; + } + + const char * active_filter_module_name(void){ + if (m != 0) + return m->name; + return ""; + } + + virtual const char * active_filter_module_desc(void) { + if (m != 0) + return m->desc; + return ""; + } + + const KeyInfo * next() { + if (i == cd->keyinfo_end) { + if (include_extra) + i = cd->extra_begin; + else + i = cd->extra_end; + } + + module_changed = false; + if (i == cd->extra_end) { + m = cd->filter_modules.pbegin(); + if (!include_modules || m == cd->filter_modules.pend()) return 0; + else { + i = m->begin; + module_changed = true; + } + } + + if (m == 0){ + return i++; + } + + if (m == cd->filter_modules.pend()){ + return 0; + } + + while (i == m->end) { + ++m; + if (m == cd->filter_modules.pend()) return 0; + else { + i = m->begin; + module_changed = true; + } + } + + return i++; + } + + bool at_end() const { + return (m == cd->filter_modules.pend()); + } + }; + + KeyInfoEnumeration * + Config::possible_elements(bool include_extra, bool include_modules) const + { + return new PossibleElementsEmul(this, include_extra, include_modules); + } + + struct ListDefaultDump : public AddableContainer + { + OStream & out; + bool first; + const char * first_prefix; + unsigned num_blanks; + ListDefaultDump(OStream & o); + PosibErr<bool> add(ParmStr d); + }; + + ListDefaultDump::ListDefaultDump(OStream & o) + : out(o), first(false) + { + first_prefix = _("# default: "); + num_blanks = strlen(first_prefix - 1); + } + + PosibErr<bool> ListDefaultDump::add(ParmStr d) + { + if (first) { + out.write(first_prefix); + } else { + out.put('#'); + for (unsigned i = 0; i != num_blanks; ++i) + out.put(' '); + } + VARARRAY(char, buf, d.size() * 2 + 1); + escape(buf, d); + out.printl(buf); + first = false; + return true; + } + + class ListDump : public MutableContainer + { + OStream & out; + const char * name; + public: + ListDump(OStream & o, ParmStr n) + : out(o), name(n) {} + PosibErr<bool> add(ParmStr d); + PosibErr<bool> remove(ParmStr d); + PosibErr<void> clear(); + }; + + PosibErr<bool> ListDump::add(ParmStr d) { + VARARRAY(char, buf, d.size() * 2 + 1); + escape(buf, d); + out.printf("add-%s %s\n", name, buf); + return true; + } + PosibErr<bool> ListDump::remove(ParmStr d) { + VARARRAY(char, buf, d.size() * 2 + 1); + escape(buf, d); + out.printf("remove-%s %s\n", name, buf); + return true; + } + PosibErr<void> ListDump::clear() { + out.printf("clear-%s\n", name); + return no_err; + } + + void Config::write_to_stream(OStream & out, + bool include_extra) + { + KeyInfoEnumeration * els = possible_elements(include_extra); + const KeyInfo * i; + String buf; + String obuf; + String def; + bool have_value; + + while ((i = els->next()) != 0) { + if (i->desc == 0) continue; + + if (els->active_filter_module_changed()) { + out.printf(_("\n" + "#######################################################################\n" + "#\n" + "# Filter: %s\n" + "# %s\n" + "#\n" + "# configured as follows:\n" + "\n"), + els->active_filter_module_name(), + _(els->active_filter_module_desc())); + } + + obuf.clear(); + have_value = false; + + obuf.printf("# %s (%s)\n# %s\n", + i->name, _(keyinfo_type_name[i->type]), _(i->desc)); + if (i->def != 0) { + if (i->type != KeyInfoList) { + buf.resize(strlen(i->def) * 2 + 1); + escape(buf.data(), i->def); + obuf.printf("# default: %s", buf.data()); + def = get_default(i); + if (def != i->def) { + buf.resize(def.size() * 2 + 1); + escape(buf.data(), def.str()); + obuf.printf(" = %s", buf.data()); + } + obuf << '\n'; + const Entry * entry = lookup(i->name); + if (entry) { + have_value = true; + buf.resize(entry->value.size() * 2 + 1); + escape(buf.data(), entry->value.str()); + obuf.printf("%s %s\n", i->name, buf.data()); + } + } else { + unsigned s = obuf.size(); + ListDump ld(obuf, i->name); + lookup_list(i, ld, false); + have_value = s != obuf.size(); + } + } + obuf << '\n'; + if (!(i->flags & KEYINFO_HIDDEN) || have_value) + out.write(obuf); + } + delete els; + } + + PosibErr<void> Config::read_in(IStream & in, ParmStr id) + { + String buf; + DataPair dp; + while (getdata_pair(in, dp, buf)) { + to_lower(dp.key); + Entry * entry = new Entry; + entry->key = dp.key; + entry->value = dp.value; + entry->file = id; + entry->line_num = dp.line_num; + RET_ON_ERR(set(entry, true)); + } + return no_err; + } + + PosibErr<void> Config::read_in_file(ParmStr file) { + FStream in; + RET_ON_ERR(in.open(file, "r")); + return read_in(in, file); + } + + PosibErr<void> Config::read_in_string(ParmStr str, const char * what) { + StringIStream in(str); + return read_in(in, what); + } + + + PosibErr<bool> Config::read_in_settings(const Config * other) + { + if (settings_read_in_) return false; + + bool was_committed = committed_; + set_committed_state(false); + + if (other && other->settings_read_in_) { + + assert(empty()); + del(); // to clean up any notifiers and similar stuff + copy(*other); + + } else { + + if (other) merge(*other); + + const char * env = getenv("ASPELL_CONF"); + if (env != 0) { + insert_point_ = &first_; + RET_ON_ERR(read_in_string(env, _("ASPELL_CONF env var"))); + } + + { + insert_point_ = &first_; + PosibErrBase pe = read_in_file(retrieve("per-conf-path")); + if (pe.has_err() && !pe.has_err(cant_read_file)) return pe; + } + + { + insert_point_ = &first_; + PosibErrBase pe = read_in_file(retrieve("conf-path")); + if (pe.has_err() && !pe.has_err(cant_read_file)) return pe; + } + + if (was_committed) + RET_ON_ERR(commit_all()); + + settings_read_in_ = true; + } + + return true; + } + + PosibErr<void> Config::commit_all(Vector<int> * phs, const char * codeset) + { + committed_ = true; + others_ = first_; + first_ = 0; + insert_point_ = &first_; + Conv to_utf8; + if (codeset) + RET_ON_ERR(to_utf8.setup(*this, codeset, "utf-8", NormTo)); + while (others_) { + *insert_point_ = others_; + others_ = others_->next; + (*insert_point_)->next = 0; + RET_ON_ERR_SET(commit(*insert_point_, codeset ? &to_utf8 : 0), int, place_holder); + if (phs && place_holder != -1 && (phs->empty() || phs->back() != place_holder)) + phs->push_back(place_holder); + insert_point_ = &((*insert_point_)->next); + } + return no_err; + } + + PosibErr<void> Config::set_committed_state(bool val) { + if (val && !committed_) { + RET_ON_ERR(commit_all()); + } else if (!val && committed_) { + assert(empty()); + committed_ = false; + } + return no_err; + } + + +#ifdef ENABLE_WIN32_RELOCATABLE +# define HOME_DIR "<prefix>" +# define PERSONAL "<lang>.pws" +# define REPL "<lang>.prepl" +#else +# define HOME_DIR "<$HOME|./>" +# define PERSONAL ".aspell.<lang>.pws" +# define REPL ".aspell.<lang>.prepl" +#endif + + static const KeyInfo config_keys[] = { + // the description should be under 50 chars + {"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0} + , {"actual-lang", KeyInfoString, "", 0} + , {"conf", KeyInfoString, "aspell.conf", + /* TRANSLATORS: The remaing strings in config.cpp should be kept + under 50 characters, begin with a lower case character and not + include any trailing punctuation marks. */ + N_("main configuration file")} + , {"conf-dir", KeyInfoString, CONF_DIR, + N_("location of main configuration file")} + , {"conf-path", KeyInfoString, "<conf-dir/conf>", 0} + , {"data-dir", KeyInfoString, DATA_DIR, + N_("location of language data files")} + , {"dict-alias", KeyInfoList, "", + N_("create dictionary aliases")} + , {"dict-dir", KeyInfoString, DICT_DIR, + N_("location of the main word list")} + , {"encoding", KeyInfoString, "!encoding", + N_("encoding to expect data to be in"), KEYINFO_COMMON} + , {"filter", KeyInfoList , "url", + N_("add or removes a filter"), KEYINFO_MAY_CHANGE} + , {"filter-path", KeyInfoList, DICT_DIR, + N_("path(s) aspell looks for filters")} + //, {"option-path", KeyInfoList, DATA_DIR, + // N_("path(s) aspell looks for options descriptions")} + , {"mode", KeyInfoString, "url", + N_("filter mode"), KEYINFO_COMMON} + , {"extra-dicts", KeyInfoList, "", + N_("extra dictionaries to use")} + , {"home-dir", KeyInfoString, HOME_DIR, + N_("location for personal files")} + , {"ignore", KeyInfoInt , "1", + N_("ignore words <= n chars"), KEYINFO_MAY_CHANGE} + , {"ignore-accents" , KeyInfoBool, "false", + /* TRANSLATORS: It is OK if this is longer than 50 chars */ + N_("ignore accents when checking words -- CURRENTLY IGNORED"), KEYINFO_MAY_CHANGE | KEYINFO_HIDDEN} + , {"ignore-case", KeyInfoBool , "false", + N_("ignore case when checking words"), KEYINFO_MAY_CHANGE} + , {"ignore-repl", KeyInfoBool , "false", + N_("ignore commands to store replacement pairs"), KEYINFO_MAY_CHANGE} + , {"jargon", KeyInfoString, "", + N_("extra information for the word list"), KEYINFO_HIDDEN} + , {"keyboard", KeyInfoString, "standard", + N_("keyboard definition to use for typo analysis")} + , {"lang", KeyInfoString, "<language-tag>", + N_("language code"), KEYINFO_COMMON} + , {"language-tag", KeyInfoString, "!lang", + N_("deprecated, use lang instead"), KEYINFO_HIDDEN} + , {"local-data-dir", KeyInfoString, "<actual-dict-dir>", + N_("location of local language data files") } + , {"master", KeyInfoString, "<lang>", + N_("base name of the main dictionary to use"), KEYINFO_COMMON} + , {"master-flags", KeyInfoString, "", 0} + , {"master-path", KeyInfoString, "<dict-dir/master>", 0} + , {"module", KeyInfoString, "default", + N_("set module name"), KEYINFO_HIDDEN} + , {"module-search-order", KeyInfoList, "", + N_("search order for modules"), KEYINFO_HIDDEN} + , {"normalize", KeyInfoBool, "true", + N_("enable Unicode normalization")} + , {"norm-required", KeyInfoBool, "false", + N_("Unicode normalization required for current lang")} + , {"norm-form", KeyInfoString, "nfc", + /* TRANSLATORS: the values after the ':' are literal + values and should not be translated. */ + N_("Unicode normalization form: none, nfd, nfc, comp")} + , {"norm-strict", KeyInfoBool, "false", + N_("avoid lossy conversions when normalization")} + , {"per-conf", KeyInfoString, ".aspell.conf", + N_("personal configuration file")} + , {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0} + , {"personal", KeyInfoString, PERSONAL, + N_("personal dictionary file name")} + , {"personal-path", KeyInfoString, "<home-dir/personal>", 0} + , {"prefix", KeyInfoString, PREFIX, + N_("prefix directory")} + , {"repl", KeyInfoString, REPL, + N_("replacements list file name") } + , {"repl-path", KeyInfoString, "<home-dir/repl>", 0} + , {"run-together", KeyInfoBool, "false", + N_("consider run-together words legal"), KEYINFO_MAY_CHANGE} + , {"run-together-limit", KeyInfoInt, "2", + N_("maximum number that can be strung together"), KEYINFO_MAY_CHANGE} + , {"run-together-min", KeyInfoInt, "3", + N_("minimal length of interior words"), KEYINFO_MAY_CHANGE} + , {"save-repl", KeyInfoBool , "true", + N_("save replacement pairs on save all")} + , {"set-prefix", KeyInfoBool, "true", + N_("set the prefix based on executable location")} + , {"size", KeyInfoString, "+60", + N_("size of the word list")} + , {"spelling", KeyInfoString, "", + N_("no longer used"), KEYINFO_HIDDEN} + , {"sug-mode", KeyInfoString, "normal", + N_("suggestion mode"), KEYINFO_MAY_CHANGE | KEYINFO_COMMON} + , {"sug-edit-dist", KeyInfoInt, "1", + /* TRANSLATORS: "sug-mode" is a literal value and should not be + translated. */ + N_("edit distance to use, override sug-mode default")} + , {"sug-typo-analysis", KeyInfoBool, "true", + N_("use typo analysis, override sug-mode default")} + , {"sug-repl-table", KeyInfoBool, "true", + N_("use replacement tables, override sug-mode default")} + , {"sug-split-char", KeyInfoList, "\\ :-", + N_("characters to insert when a word is split"), KEYINFO_UTF8} + , {"use-other-dicts", KeyInfoBool, "true", + N_("use personal, replacement & session dictionaries")} + , {"variety", KeyInfoList, "", + N_("extra information for the word list")} + , {"word-list-path", KeyInfoList, DATA_DIR, + N_("search path for word list information files"), KEYINFO_HIDDEN} + , {"warn", KeyInfoBool, "true", + N_("enable warnings")} + + + // + // These options are generally used when creating dictionaries + // and may also be specified in the language data file + // + + , {"affix-char", KeyInfoString, "/", // FIXME: Implement + /* TRANSLATORS: It is OK if this is longer than 50 chars */ + N_("indicator for affix flags in word lists -- CURRENTLY IGNORED"), KEYINFO_UTF8 | KEYINFO_HIDDEN} + , {"affix-compress", KeyInfoBool, "false", + N_("use affix compression when creating dictionaries")} + , {"clean-affixes", KeyInfoBool, "true", + N_("remove invalid affix flags")} + , {"clean-words", KeyInfoBool, "false", + N_("attempts to clean words so that they are valid")} + , {"invisible-soundslike", KeyInfoBool, "false", + N_("compute soundslike on demand rather than storing")} + , {"partially-expand", KeyInfoBool, "false", + N_("partially expand affixes for better suggestions")} + , {"skip-invalid-words", KeyInfoBool, "true", + N_("skip invalid words")} + , {"validate-affixes", KeyInfoBool, "true", + N_("check if affix flags are valid")} + , {"validate-words", KeyInfoBool, "true", + N_("check if words are valid")} + + // + // These options are specific to the "aspell" utility. They are + // here so that they can be specified in configuration files. + // + , {"backup", KeyInfoBool, "true", + N_("create a backup file by appending \".bak\"")} + , {"byte-offsets", KeyInfoBool, "false", + N_("use byte offsets instead of character offsets")} + , {"guess", KeyInfoBool, "false", + N_("create missing root/affix combinations"), KEYINFO_MAY_CHANGE} + , {"keymapping", KeyInfoString, "aspell", + N_("keymapping for check mode: \"aspell\" or \"ispell\"")} + , {"reverse", KeyInfoBool, "false", + N_("reverse the order of the suggest list")} + , {"suggest", KeyInfoBool, "true", + N_("suggest possible replacements"), KEYINFO_MAY_CHANGE} + , {"time" , KeyInfoBool, "false", + N_("time load time and suggest time in pipe mode"), KEYINFO_MAY_CHANGE} + }; + + const KeyInfo * config_impl_keys_begin = config_keys; + const KeyInfo * config_impl_keys_end + = config_keys + sizeof(config_keys)/sizeof(KeyInfo); + + Config * new_basic_config() { + aspell_gettext_init(); + return new Config("aspell", + config_impl_keys_begin, + config_impl_keys_end); + } + +} + diff --git a/jni/common/config.hpp b/jni/common/config.hpp new file mode 100644 index 0000000..d2f0101 --- /dev/null +++ b/jni/common/config.hpp @@ -0,0 +1,281 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_CONFIG___HPP +#define ASPELL_CONFIG___HPP + +#include "can_have_error.hpp" +#include "key_info.hpp" +#include "posib_err.hpp" +#include "string.hpp" +#include "vector.hpp" + +namespace acommon { + + class OStream; + class KeyInfoEnumeration; + class StringPairEnumeration; + class MutableContainer; + class Cacheable; + struct Conv; + + // The Config class is used to hold configuration information. + // it has a set of keys which it will except. Inserting or even + // trying to look at a key that it does not know will produce + // an error. Extra accepted keys can be added with the set_extra + // method. + + // Keys taged with KEYINFO_UTF8 are expected to be in UTF-8 format. + // Keys with file/dir names may contain 8-bit characters and must + // remain untranslated + // All other keys are expected to only contain ASCII characters. + + class Config; + + struct ConfigModule { + const char * name; + const char * file; // path of shared object or dll + const char * desc; // description of module + const KeyInfo * begin; + const KeyInfo * end; + }; + + class Notifier { + public: + // returns a copy if a copy should be made otherwise returns null + virtual Notifier * clone(Config *) const {return 0;} + virtual ~Notifier() {} + + virtual PosibErr<void> item_updated(const KeyInfo *, bool) {return no_err;} + virtual PosibErr<void> item_updated(const KeyInfo *, int) {return no_err;} + virtual PosibErr<void> item_updated(const KeyInfo *, ParmStr) {return no_err;} + virtual PosibErr<void> list_updated(const KeyInfo *) {return no_err;} + }; + + class PossibleElementsEmul; + class NotifierEnumeration; + class GetLine; + class MDInfoListofLists; + + static const bool REPLACE = true; + static const bool INSERT = false; + + // prefixes + // + // reset - resets a value to the default + // + // enable - sets a boolean value to true + // dont, disable - sets a boolean value to false + // -- setting a boolean value to an empty string is the same as setting + // it to true + // + // lset - sets a list, items seperated by ':' + // rem, remove - removes item from a list + // add - add an item to a list + // clear - removes all items from a list + // -- setting a list item directly, ie with out a prefix, is the same as + // setting it to a single value + + class Config : public CanHaveError { + // copy and destructor provided + friend class MDInfoListofLists; + + public: + enum Action {NoOp, Set, Reset, Enable, Disable, + ListSet, ListAdd, ListRemove, ListClear}; + + struct Entry { + Entry * next; + String key; + String value; + String file; + unsigned line_num; + Action action; + bool need_conv; + short place_holder; + Entry() : line_num(0), action(NoOp), + need_conv(false), place_holder(-1) {} + }; + + private: + static const int num_parms_[9]; + + public: + static inline bool list_action(Action a) {return (int)a >= (int)ListAdd; } + static inline int num_parms(Action a) {return num_parms_[a];} + + private: + String name_; + + Entry * first_; + Entry * * insert_point_; + Entry * others_; + + bool committed_; + bool attached_; // if attached can't copy + Vector<Notifier *> notifier_list; + + friend class PossibleElementsEmul; + + const KeyInfo * keyinfo_begin; + const KeyInfo * keyinfo_end; + const KeyInfo * extra_begin; + const KeyInfo * extra_end; + + int md_info_list_index; + + void copy(const Config & other); + void del(); + + PosibErr<int> commit(Entry * entry, Conv * conv = 0); + + bool settings_read_in_; + + public: + + // the first + // if the second parameter is set than flaged options will be + // converted to utf-8 if needed + PosibErr<void> commit_all(Vector<int> * = 0, const char * codeset = 0); + + PosibErr<void> replace(ParmStr, ParmStr); + PosibErr<void> remove(ParmStr); + + bool empty() const {return !first_;} + + PosibErr<void> merge(const Config & other); + + void lang_config_merge(const Config & other, + int which, ParmStr codeset); + + bool settings_read_in() {return settings_read_in_;} + + PosibErr<void> set_committed_state(bool val); + + const Entry * lookup(const char * key) const; + void lookup_list(const KeyInfo * ki, MutableContainer & m, + bool include_default) const; + + String temp_str; + + PosibErr<const ConfigModule *> (* load_filter_hook)(Config * config, ParmStr value); + Notifier * filter_mode_notifier; + + Vector<ConfigModule> filter_modules; + Vector<Cacheable *> filter_modules_ptrs; + + Config(ParmStr name, + const KeyInfo * mainbegin, + const KeyInfo * mainend); + + Config(const Config &); + ~Config(); + Config & operator= (const Config &); + + bool get_attached() const {return attached_;} + void set_attached(bool a) {attached_ = a;} + + Config * clone() const; + void assign(const Config * other); + + const char * name() const {return name_.c_str();} + + NotifierEnumeration * notifiers() const; + + bool add_notifier ( Notifier *); + bool remove_notifier (const Notifier *); + bool replace_notifier(const Notifier *, Notifier *); + + void set_extra(const KeyInfo * begin, const KeyInfo * end); + + void set_filter_modules(const ConfigModule * modbegin, const ConfigModule * modend); + + static const char * base_name(const char * name, Action * action = 0); + + PosibErr<const KeyInfo *> keyinfo(ParmStr key) const; + + KeyInfoEnumeration * possible_elements(bool include_extra = true, + bool include_modules = true) const; + + StringPairEnumeration * elements() {return 0;} // FIXME + + String get_default(const KeyInfo * ki) const; + PosibErr<String> get_default(ParmStr) const; + + PosibErr<String> retrieve(ParmStr key) const; + + // will also retrive a list, with one value per line + PosibErr<String> retrieve_any(ParmStr key) const; + + bool have (ParmStr key) const; + + PosibErr<void> retrieve_list (ParmStr key, MutableContainer *) const; + PosibErr<bool> retrieve_bool (ParmStr key) const; + PosibErr<int> retrieve_int (ParmStr key) const; + + // will take ownership of entry, even if there is an error + PosibErr<void> set(Entry * entry, bool do_unescape = false); + + void replace_internal (ParmStr, ParmStr); + + void write_to_stream(OStream & out, bool include_extra = false); + + PosibErr<bool> read_in_settings(const Config * = 0); + + PosibErr<void> read_in(IStream & in, ParmStr id = ""); + PosibErr<void> read_in_file(ParmStr file); + PosibErr<void> read_in_string(ParmStr str, const char * what = ""); + }; + + Config * new_config(); + Config * new_basic_config(); // config which doesn't require any + // external symbols + + class NotifierEnumeration { + // no copy and destructor needed + Vector<Notifier *>::const_iterator i; + Vector<Notifier *>::const_iterator end; + public: + NotifierEnumeration(const Vector<Notifier *> & b) + : i(b.begin()), end(b.end()) {} + const Notifier * next() { + const Notifier * temp = *i; + if (i != end) + ++i; + return temp; + } + bool at_end() const {return i == end;} + }; + + class KeyInfoEnumeration { + public: + typedef const KeyInfo * Value; + virtual KeyInfoEnumeration * clone() const = 0; + virtual void assign(const KeyInfoEnumeration *) = 0; + virtual bool at_end() const = 0; + virtual const KeyInfo * next() = 0; + virtual const char * active_filter_module_name(void) = 0; + virtual const char * active_filter_module_desc(void) = 0; + virtual bool active_filter_module_changed(void) = 0; + virtual ~KeyInfoEnumeration() {} + }; + + static const unsigned KEYINFO_MAY_CHANGE = 1 << 0; + static const unsigned KEYINFO_UTF8 = 1 << 1; + static const unsigned KEYINFO_HIDDEN = 1 << 2; + static const unsigned KEYINFO_COMMON = 1 << 4; + + class AddableContainer; + class StringList; + + void separate_list(ParmStr value, AddableContainer & out, bool do_unescape = true); + void combine_list(String & res, const StringList &); + + +} + +#endif + diff --git a/jni/common/config.lo b/jni/common/config.lo new file mode 100644 index 0000000..cbb91f3 --- /dev/null +++ b/jni/common/config.lo @@ -0,0 +1,12 @@ +# common/config.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/config.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/convert.cpp b/jni/common/convert.cpp new file mode 100644 index 0000000..2bbd8e0 --- /dev/null +++ b/jni/common/convert.cpp @@ -0,0 +1,1095 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <assert.h> +#include <string.h> +#include <math.h> + +#include "asc_ctype.hpp" +#include "convert.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "config.hpp" +#include "errors.hpp" +#include "stack_ptr.hpp" +#include "cache-t.hpp" +#include "file_util.hpp" +#include "file_data_util.hpp" +#include "vararray.hpp" + +#include "iostream.hpp" + +#include "gettext.h" + +namespace acommon { + + typedef unsigned char byte; + typedef unsigned char Uni8; + typedef unsigned short Uni16; + typedef unsigned int Uni32; + + + ////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////// + // + // Lookups + // + ////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////// + // + // ToUniLookup + // + + class ToUniLookup + { + Uni32 data[256]; + static const Uni32 npos = (Uni32)(-1); + public: + void reset(); + Uni32 operator[] (char key) const {return data[(unsigned char)key];} + bool have(char key) const {return data[(unsigned char)key] != npos;} + bool insert(char key, Uni32 value); + }; + + void ToUniLookup::reset() + { + for (int i = 0; i != 256; ++i) + data[i] = npos; + } + + bool ToUniLookup::insert(char key, Uni32 value) + { + if (data[(unsigned char)key] != npos) + return false; + data[(unsigned char)key] = value; + return true; + } + + ////////////////////////////////////////////////////////////////////// + // + // FromUniLookup + // + + // Assumes that the maximum number of items in the table is 256 + // Also assumes (unsigned char)i == i % 256 + + // Based on the iso-8859-* character sets it is very fast, almost all + // lookups involving no more than 2 comparisons. + // NO looks ups involded more than 3 compassions. + // Also, no division (or modules) is done whatsoever. + + + struct UniItem { + Uni32 key; + char value; + }; + + class FromUniLookup + { + private: + static const Uni32 npos = (Uni32)(-1); + UniItem * overflow_end; + + UniItem data[256*4]; + + UniItem overflow[256]; // you can never be too careful; + + public: + FromUniLookup() {} + void reset(); + inline char operator() (Uni32 key, char unknown = '?') const; + bool insert(Uni32 key, char value); + }; + + void FromUniLookup::reset() + { + for (unsigned i = 0; i != 256*4; ++i) + data[i].key = npos; + overflow_end = overflow; + } + + inline char FromUniLookup::operator() (Uni32 k, char unknown) const + { + const UniItem * i = data + (unsigned char)k * 4; + + if (i->key == k) return i->value; + ++i; + if (i->key == k) return i->value; + ++i; + if (i->key == k) return i->value; + ++i; + if (i->key == k) return i->value; + + if (i->key == npos) return unknown; + + for(i = overflow; i != overflow_end; ++i) + if (i->key == k) return i->value; + + return unknown; + } + + bool FromUniLookup::insert(Uni32 k, char v) + { + UniItem * i = data + (unsigned char)k * 4; + UniItem * e = i + 4; + while (i != e && i->key != npos) { + if (i->key == k) + return false; + ++i; + } + if (i == e) { + for(i = overflow; i != overflow_end; ++i) + if (i->key == k) return false; + } + i->key = k; + i->value = v; + return true; + } + + ////////////////////////////////////////////////////////////////////// + // + // CharLookup + // + + class CharLookup + { + private: + int data[256]; + public: + void reset(); + char operator[] (char key) const {return data[(unsigned char)key];} + bool insert(char key, char value); + }; + + void CharLookup::reset() { + for (int i = 0; i != 256; ++i) + data[i] = -1; + } + + bool CharLookup::insert(char key, char value) + { + if (data[(unsigned char)key] != -1) + return false; + data[(unsigned char)key] = value; + return true; + } + + ////////////////////////////////////////////////////////////////////// + // + // NormLookup + // + + template <class T> + struct NormTable + { + static const unsigned struct_size; + unsigned mask; + unsigned height; + unsigned width; + unsigned size; + T * end; + T data[1]; // hack for data[] + }; + + template <class T> + const unsigned NormTable<T>::struct_size = sizeof(NormTable<T>) - 1; + + template <class T, class From> + struct NormLookupRet + { + const typename T::To * to; + const From * last; + NormLookupRet(const typename T::To * t, From * l) + : to(t), last(l) {} + }; + + template <class T, class From> + static inline NormLookupRet<T,From> norm_lookup(const NormTable<T> * d, + From * s, From * stop, + const typename T::To * def, + From * prev) + { + loop: + if (s != stop) { + const T * i = d->data + (static_cast<typename T::From>(*s) & d->mask); + for (;;) { + if (i->from == static_cast<typename T::From>(*s)) { + if (i->sub_table) { + // really tail recursion + if (i->to[1] != T::to_non_char) {def = i->to; prev = s;} + d = (const NormTable<T> *)(i->sub_table); + s++; + goto loop; + } else { + return NormLookupRet<T,From>(i->to, s); + } + } else { + i += d->height; + if (i >= d->end) break; + } + } + } + return NormLookupRet<T,From>(def, prev); + } + + template <class T> + void free_norm_table(NormTable<T> * d) + { + for (T * cur = d->data; cur != d->end; ++cur) { + if (cur->sub_table) + free_norm_table<T>(static_cast<NormTable<T> *>(cur->sub_table)); + } + free(d); + } + + struct FromUniNormEntry + { + typedef Uni32 From; + Uni32 from; + typedef byte To; + byte to[4]; + static const From from_non_char = (From)(-1); + static const To to_non_char = 0x10; + static const unsigned max_to = 4; + void * sub_table; + } +#ifdef __GNUC__ + __attribute__ ((aligned (16))) +#endif + ; + + struct ToUniNormEntry + { + typedef byte From; + byte from; + typedef Uni16 To; + Uni16 to[3]; + static const From from_non_char = 0x10; + static const To to_non_char = 0x10; + static const unsigned max_to = 3; + void * sub_table; + } +#ifdef __GNUC__ + __attribute__ ((aligned (16))) +#endif + ; + + ////////////////////////////////////////////////////////////////////// + // + // read in char data + // + + PosibErr<void> read_in_char_data (const Config & config, + ParmStr encoding, + ToUniLookup & to, + FromUniLookup & from) + { + to.reset(); + from.reset(); + + String dir1,dir2,file_name; + fill_data_dir(&config, dir1, dir2); + find_file(file_name,dir1,dir2,encoding,".cset"); + + FStream data; + PosibErrBase err = data.open(file_name, "r"); + if (err.get_err()) { + char mesg[300]; + snprintf(mesg, 300, _("This could also mean that the file \"%s\" could not be opened for reading or does not exist."), + file_name.c_str()); + return make_err(unknown_encoding, encoding, mesg); + } + unsigned chr; + Uni32 uni; + String line; + char * p; + do { + p = get_nb_line(data, line); + } while (*p != '/'); + for (chr = 0; chr != 256; ++chr) { + p = get_nb_line(data, line); + if (strtoul(p, 0, 16) != chr) + return make_err(bad_file_format, file_name); + uni = strtoul(p + 3, 0, 16); + to.insert(chr, uni); + from.insert(uni, chr); + } + + return no_err; + } + + ////////////////////////////////////////////////////////////////////// + // + // read in norm data + // + + struct Tally + { + int size; + Uni32 mask; + int max; + int * data; + Tally(int s, int * d) : size(s), mask(s - 1), max(0), data(d) { + memset(data, 0, sizeof(int)*size); + } + void add(Uni32 chr) { + Uni32 p = chr & mask; + data[p]++; + if (data[p] > max) max = data[p]; + } + }; + + template <class T> + static PosibErr< NormTable<T> * > create_norm_table(IStream & in, String & buf) + { + const char * p = get_nb_line(in, buf); + assert(*p == 'N'); + ++p; + int size = strtoul(p, (char **)&p, 10); + VARARRAY(T, d, size); + memset(d, 0, sizeof(T) * size); + int sz = 1 << (unsigned)floor(log(size <= 1 ? 1.0 : size - 1)/log(2.0)); + VARARRAY(int, tally0_d, sz); Tally tally0(sz, tally0_d); + VARARRAY(int, tally1_d, sz*2); Tally tally1(sz*2, tally1_d); + VARARRAY(int, tally2_d, sz*4); Tally tally2(sz*4, tally2_d); + T * cur = d; + while (p = get_nb_line(in, buf), *p != '.') { + Uni32 f = strtoul(p, (char **)&p, 16); + cur->from = static_cast<typename T::From>(f); + assert(f == cur->from); + tally0.add(f); + tally1.add(f); + tally2.add(f); + ++p; + assert(*p == '>'); + ++p; + assert(*p == ' '); + ++p; + unsigned i = 0; + if (*p != '-') { + for (;; ++i) { + const char * q = p; + Uni32 t = strtoul(p, (char **)&p, 16); + if (q == p) break; + assert(i < d->max_to); + cur->to[i] = static_cast<typename T::To>(t); + assert(t == static_cast<Uni32>(cur->to[i])); + } + } else { + cur->to[0] = 0; + cur->to[1] = T::to_non_char; + } + if (*p == ' ') ++p; + if (*p == '/') cur->sub_table = create_norm_table<T>(in,buf); + ++cur; + } + assert(cur - d == size); + Tally * which = &tally0; + if (which->max > tally1.max) which = &tally1; + if (which->max > tally2.max) which = &tally2; + NormTable<T> * final = (NormTable<T> *)calloc(1, NormTable<T>::struct_size + + sizeof(T) * which->size * which->max); + memset(final, 0, NormTable<T>::struct_size + sizeof(T) * which->size * which->max); + final->mask = which->size - 1; + final->height = which->size; + final->width = which->max; + final->end = final->data + which->size * which->max; + final->size = size; + for (cur = d; cur != d + size; ++cur) { + T * dest = final->data + (cur->from & final->mask); + while (dest->from != 0) dest += final->height; + *dest = *cur; + if (dest->from == 0) dest->from = T::from_non_char; + } + for (T * dest = final->data; dest < final->end; dest += final->height) { + if (dest->from == 0 || (dest->from == T::from_non_char && dest->to[0] == 0)) { + dest->from = T::from_non_char; + dest->to[0] = T::to_non_char; + } + } + return final; + } + + PosibErr<NormTables *> NormTables::get_new(const String & encoding, + const Config * config) + { + String dir1,dir2,file_name; + fill_data_dir(config, dir1, dir2); + find_file(file_name,dir1,dir2,encoding,".cmap"); + + FStream in; + PosibErrBase err = in.open(file_name, "r"); + if (err.get_err()) { + char mesg[300]; + snprintf(mesg, 300, _("This could also mean that the file \"%s\" could not be opened for reading or does not exist."), + file_name.c_str()); + return make_err(unknown_encoding, encoding, mesg); // FIXME + } + + NormTables * d = new NormTables; + d->key = encoding; + String l; + get_nb_line(in, l); + remove_comments(l); + assert (l == "INTERNAL"); + get_nb_line(in, l); + remove_comments(l); + assert (l == "/"); + d->internal = create_norm_table<FromUniNormEntry>(in, l); + get_nb_line(in, l); + remove_comments(l); + assert (l == "STRICT"); + char * p = get_nb_line(in, l); + remove_comments(l); + if (l == "/") { + d->strict_d = create_norm_table<FromUniNormEntry>(in, l); + d->strict = d->strict_d; + } else { + assert(*p == '='); + ++p; ++p; + assert(strcmp(p, "INTERNAL") == 0); + d->strict = d->internal; + } + while (get_nb_line(in, l)) { + remove_comments(l); + d->to_uni.push_back(ToUniTable()); + ToUniTable & e = d->to_uni.back(); + e.name.resize(l.size()); + for (unsigned i = 0; i != l.size(); ++i) + e.name[i] = asc_tolower(l[i]); + char * p = get_nb_line(in, l); + remove_comments(l); + if (l == "/") { + e.ptr = e.data = create_norm_table<ToUniNormEntry>(in,l); + } else { + assert(*p == '='); + ++p; ++p; + for (char * q = p; *q; ++q) *q = asc_tolower(*q); + Vector<ToUniTable>::iterator i = d->to_uni.begin(); + while (i->name != p && i != d->to_uni.end()) ++i; + assert(i != d->to_uni.end()); + e.ptr = i->ptr; + get_nb_line(in, l); + } + } + return d; + } + + NormTables::~NormTables() + { + free_norm_table<FromUniNormEntry>(internal); + if (strict_d) + free_norm_table<FromUniNormEntry>(strict_d); + for (unsigned i = 0; i != to_uni.size(); ++i) { + if (to_uni[i].data) + free_norm_table<ToUniNormEntry>(to_uni[i].data); + } + } + + ////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////// + // + // Convert + // + ////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////// + + + bool operator== (const Convert & rhs, const Convert & lhs) + { + return strcmp(rhs.in_code(), lhs.in_code()) == 0 + && strcmp(rhs.out_code(), lhs.out_code()) == 0; + } + + ////////////////////////////////////////////////////////////////////// + // + // Trivial Conversion + // + + template <typename Chr> + struct DecodeDirect : public Decode + { + void decode(const char * in0, int size, FilterCharVector & out) const { + const Chr * in = reinterpret_cast<const Chr *>(in0); + if (size == -1) { + for (;*in; ++in) + out.append(*in); + } else { + const Chr * stop = reinterpret_cast<const Chr *>(in0 +size); + for (;in != stop; ++in) + out.append(*in); + } + } + PosibErr<void> decode_ec(const char * in0, int size, + FilterCharVector & out, ParmStr) const { + DecodeDirect::decode(in0, size, out); + return no_err; + } + }; + + template <typename Chr> + struct EncodeDirect : public Encode + { + void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const { + for (; in != stop; ++in) { + Chr c = in->chr; + if (c != in->chr) c = '?'; + out.append(&c, sizeof(Chr)); + } + } + PosibErr<void> encode_ec(const FilterChar * in, const FilterChar * stop, + CharVector & out, ParmStr orig) const { + for (; in != stop; ++in) { + Chr c = in->chr; + if (c != in->chr) { + char m[70]; + snprintf(m, 70, _("The Unicode code point U+%04X is unsupported."), in->chr); + return make_err(invalid_string, orig, m); + } + out.append(&c, sizeof(Chr)); + } + return no_err; + } + bool encode(FilterChar * &, FilterChar * &, FilterCharVector &) const { + return true; + } + }; + + template <typename Chr> + struct ConvDirect : public DirectConv + { + void convert(const char * in0, int size, CharVector & out) const { + if (size == -1) { + const Chr * in = reinterpret_cast<const Chr *>(in0); + for (;*in != 0; ++in) + out.append(in, sizeof(Chr)); + } else { + out.append(in0, size); + } + } + PosibErr<void> convert_ec(const char * in0, int size, + CharVector & out, ParmStr) const { + ConvDirect::convert(in0, size, out); + return no_err; + } + }; + + ////////////////////////////////////////////////////////////////////// + // + // Lookup Conversion + // + + struct DecodeLookup : public Decode + { + ToUniLookup lookup; + PosibErr<void> init(ParmStr code, const Config & c) { + FromUniLookup unused; + return read_in_char_data(c, code, lookup, unused); + } + void decode(const char * in, int size, FilterCharVector & out) const { + if (size == -1) { + for (;*in; ++in) + out.append(lookup[*in]); + } else { + const char * stop = in + size; + for (;in != stop; ++in) + out.append(lookup[*in]); + } + } + PosibErr<void> decode_ec(const char * in, int size, + FilterCharVector & out, ParmStr) const { + DecodeLookup::decode(in, size, out); + return no_err; + } + }; + + struct DecodeNormLookup : public Decode + { + typedef ToUniNormEntry E; + NormTable<E> * data; + DecodeNormLookup(NormTable<E> * d) : data(d) {} + // must be null terminated + // FIXME: Why must it be null terminated? + void decode(const char * in, int size, FilterCharVector & out) const { + const char * stop = in + size; // will word even if size -1 + while (in != stop) { + if (*in == 0) { + if (size == -1) break; + out.append(0); + ++in; + } else { + NormLookupRet<E,const char> ret = norm_lookup<E>(data, in, stop, 0, in); + for (unsigned i = 0; ret.to[i] && i < E::max_to; ++i) + out.append(ret.to[i]); + in = ret.last + 1; + } + } + } + PosibErr<void> decode_ec(const char * in, int size, + FilterCharVector & out, ParmStr) const { + DecodeNormLookup::decode(in, size, out); + return no_err; + } + }; + + struct EncodeLookup : public Encode + { + FromUniLookup lookup; + PosibErr<void> init(ParmStr code, const Config & c) + {ToUniLookup unused; + return read_in_char_data(c, code, unused, lookup);} + void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const { + for (; in != stop; ++in) { + out.append(lookup(*in)); + } + } + PosibErr<void> encode_ec(const FilterChar * in, const FilterChar * stop, + CharVector & out, ParmStr orig) const { + for (; in != stop; ++in) { + char c = lookup(*in, '\0'); + if (c == '\0' && in->chr != 0) { + char m[70]; + snprintf(m, 70, _("The Unicode code point U+%04X is unsupported."), in->chr); + return make_err(invalid_string, orig, m); + } + out.append(c); + } + return no_err; + } + bool encode(FilterChar * & in0, FilterChar * & stop, + FilterCharVector & out) const { + FilterChar * in = in0; + for (; in != stop; ++in) + *in = lookup(*in); + return true; + } + }; + + struct EncodeNormLookup : public Encode + { + typedef FromUniNormEntry E; + NormTable<E> * data; + EncodeNormLookup(NormTable<E> * d) : data(d) {} + // *stop must equal 0 + void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const { + while (in < stop) { + if (*in == 0) { + out.append('\0'); + ++in; + } else { + NormLookupRet<E,const FilterChar> ret = norm_lookup<E>(data, in, stop, (const byte *)"?", in); + for (unsigned i = 0; i < E::max_to && ret.to[i]; ++i) + out.append(ret.to[i]); + in = ret.last + 1; + } + } + } + PosibErr<void> encode_ec(const FilterChar * in, const FilterChar * stop, + CharVector & out, ParmStr orig) const { + while (in < stop) { + if (*in == 0) { + out.append('\0'); + ++in; + } else { + NormLookupRet<E,const FilterChar> ret = norm_lookup<E>(data, in, stop, 0, in); + if (ret.to == 0) { + char m[70]; + snprintf(m, 70, _("The Unicode code point U+%04X is unsupported."), in->chr); + return make_err(invalid_string, orig, m); + } + for (unsigned i = 0; i < E::max_to && ret.to[i]; ++i) + out.append(ret.to[i]); + in = ret.last + 1; + } + } + return no_err; + } + bool encode(FilterChar * & in, FilterChar * & stop, + FilterCharVector & buf) const { + buf.clear(); + while (in < stop) { + if (*in == 0) { + buf.append(FilterChar(0)); + ++in; + } else { + NormLookupRet<E,FilterChar> ret = norm_lookup<E>(data, in, stop, (const byte *)"?", in); + const FilterChar * end = ret.last + 1; + unsigned width = 0; + for (; in != end; ++in) width += in->width; + buf.append(FilterChar(ret.to[0], width)); + for (unsigned i = 1; i < E::max_to && ret.to[i]; ++i) { + buf.append(FilterChar(ret.to[i],0)); + } + } + } + buf.append(0); + in = buf.pbegin(); + stop = buf.pend(); + return true; + } + }; + + ////////////////////////////////////////////////////////////////////// + // + // UTF8 + // + +#define get_check_next \ + if (in == stop) goto error; \ + c = *in; \ + if ((c & 0xC0) != 0x80) goto error; \ + ++in; \ + u <<= 6; \ + u |= c & 0x3F; \ + ++w; + + static inline FilterChar from_utf8 (const char * & in, const char * stop, + Uni32 err_char = '?') + { + Uni32 u = (Uni32)(-1); + FilterChar::Width w = 1; + + // the first char is guaranteed not to be off the end + char c = *in; + ++in; + + while (in != stop && (c & 0xC0) == 0x80) {c = *in; ++in; ++w;} + if ((c & 0x80) == 0x00) { // 1-byte wide + u = c; + } else if ((c & 0xE0) == 0xC0) { // 2-byte wide + u = c & 0x1F; + get_check_next; + } else if ((c & 0xF0) == 0xE0) { // 3-byte wide + u = c & 0x0F; + get_check_next; + get_check_next; + } else if ((c & 0xF8) == 0xF0) { // 4-byte wide + u = c & 0x07; + get_check_next; + get_check_next; + get_check_next; + } else { + goto error; + } + + return FilterChar(u, w); + error: + return FilterChar(err_char, w); + } + + static inline void to_utf8 (FilterChar in, CharVector & out) + { + FilterChar::Chr c = in; + + if (c < 0x80) { + out.append(c); + } + else if (c < 0x800) { + out.append(0xC0 | (c>>6)); + out.append(0x80 | (c & 0x3F)); + } + else if (c < 0x10000) { + out.append(0xE0 | (c>>12)); + out.append(0x80 | (c>>6 & 0x3F)); + out.append(0x80 | (c & 0x3F)); + } + else if (c < 0x200000) { + out.append(0xF0 | (c>>18)); + out.append(0x80 | (c>>12 & 0x3F)); + out.append(0x80 | (c>>6 & 0x3F)); + out.append(0x80 | (c & 0x3F)); + } + } + + struct DecodeUtf8 : public Decode + { + ToUniLookup lookup; + void decode(const char * in, int size, FilterCharVector & out) const { + const char * stop = in + size; // this is OK even if size == -1 + while (*in && in != stop) { + out.append(from_utf8(in, stop)); + } + } + PosibErr<void> decode_ec(const char * in, int size, + FilterCharVector & out, ParmStr orig) const { + const char * begin = in; + const char * stop = in + size; // this is OK even if size == -1 + while (*in && in != stop) { + FilterChar c = from_utf8(in, stop, (Uni32)-1); + if (c == (Uni32)-1) { + char m[70]; + snprintf(m, 70, _("Invalid UTF-8 sequence at position %ld."), (long)(in - begin)); + return make_err(invalid_string, orig, m); + } + out.append(c); + } + return no_err; + } + }; + + struct EncodeUtf8 : public Encode + { + FromUniLookup lookup; + void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const { + for (; in != stop; ++in) { + to_utf8(*in, out); + } + } + PosibErr<void> encode_ec(const FilterChar * in, const FilterChar * stop, + CharVector & out, ParmStr) const { + for (; in != stop; ++in) { + to_utf8(*in, out); + } + return no_err; + } + }; + + ////////////////////////////////////////////////////////////////////// + // + // Cache + // + + static GlobalCache<Decode> decode_cache("decode"); + static GlobalCache<Encode> encode_cache("encode"); + static GlobalCache<NormTables> norm_tables_cache("norm_tables"); + + ////////////////////////////////////////////////////////////////////// + // + // new_aspell_convert + // + + void Convert::generic_convert(const char * in, int size, CharVector & out) + { + buf_.clear(); + decode_->decode(in, size, buf_); + FilterChar * start = buf_.pbegin(); + FilterChar * stop = buf_.pend(); + if (!filter.empty()) + filter.process(start, stop); + encode_->encode(start, stop, out); + } + + const char * fix_encoding_str(ParmStr enc, String & buf) + { + buf.clear(); + buf.reserve(enc.size() + 1); + for (size_t i = 0; i != enc.size(); ++i) + buf.push_back(asc_tolower(enc[i])); + + if (strncmp(buf.c_str(), "iso8859", 7) == 0) + buf.insert(buf.begin() + 3, '-'); // For backwards compatibility + + if (buf == "ascii" || buf == "ansi_x3.4-1968") + return "iso-8859-1"; + else if (buf == "machine unsigned 16" || buf == "utf-16") + return "ucs-2"; + else if (buf == "machine unsigned 32" || buf == "utf-32") + return "ucs-4"; + else + return buf.c_str(); + } + + bool ascii_encoding(const Config & c, ParmStr enc0) + { + if (enc0.empty()) return true; + if (enc0 == "ANSI_X3.4-1968" + || enc0 == "ASCII" || enc0 == "ascii") return true; + String buf; + const char * enc = fix_encoding_str(enc0, buf); + if (strcmp(enc, "utf-8") == 0 + || strcmp(enc, "ucs-2") == 0 + || strcmp(enc, "ucs-4") == 0) return false; + String dir1,dir2,file_name; + fill_data_dir(&c, dir1, dir2); + file_name << dir1 << enc << ".cset"; + if (file_exists(file_name)) return false; + if (dir1 == dir2) return true; + file_name.clear(); + file_name << dir2 << enc << ".cset"; + return !file_exists(file_name); + } + + PosibErr<Convert *> internal_new_convert(const Config & c, + ParmString in, + ParmString out, + bool if_needed, + Normalize norm) + { + String in_s; + in = fix_encoding_str(in, in_s); + + String out_s; + out = fix_encoding_str(out, out_s); + + if (if_needed && in == out) return 0; + + StackPtr<Convert> conv(new Convert); + switch (norm) { + case NormNone: + RET_ON_ERR(conv->init(c, in, out)); break; + case NormFrom: + RET_ON_ERR(conv->init_norm_from(c, in, out)); break; + case NormTo: + RET_ON_ERR(conv->init_norm_to(c, in, out)); break; + } + return conv.release(); + } + + PosibErr<Decode *> Decode::get_new(const String & key, const Config * c) + { + StackPtr<Decode> ptr; + if (key == "iso-8859-1") + ptr.reset(new DecodeDirect<Uni8>); + else if (key == "ucs-2") + ptr.reset(new DecodeDirect<Uni16>); + else if (key == "ucs-4") + ptr.reset(new DecodeDirect<Uni32>); + else if (key == "utf-8") + ptr.reset(new DecodeUtf8); + else + ptr.reset(new DecodeLookup); + RET_ON_ERR(ptr->init(key, *c)); + ptr->key = key; + return ptr.release(); + } + + PosibErr<Encode *> Encode::get_new(const String & key, const Config * c) + { + StackPtr<Encode> ptr; + if (key == "iso-8859-1") + ptr.reset(new EncodeDirect<Uni8>); + else if (key == "ucs-2") + ptr.reset(new EncodeDirect<Uni16>); + else if (key == "ucs-4") + ptr.reset(new EncodeDirect<Uni32>); + else if (key == "utf-8") + ptr.reset(new EncodeUtf8); + else + ptr.reset(new EncodeLookup); + RET_ON_ERR(ptr->init(key, *c)); + ptr->key = key; + return ptr.release(); + } + + Convert::~Convert() {} + + PosibErr<void> Convert::init(const Config & c, ParmStr in, ParmStr out) + { + RET_ON_ERR(setup(decode_c, &decode_cache, &c, in)); + decode_ = decode_c.get(); + RET_ON_ERR(setup(encode_c, &encode_cache, &c, out)); + encode_ = encode_c.get(); + + conv_ = 0; + if (in == out) { + if (in == "ucs-2") { + conv_ = new ConvDirect<Uni16>; + } else if (in == "ucs-4") { + conv_ = new ConvDirect<Uni32>; + } else { + conv_ = new ConvDirect<char>; + } + } + + if (conv_) + RET_ON_ERR(conv_->init(decode_, encode_, c)); + + return no_err; + } + + + PosibErr<void> Convert::init_norm_from(const Config & c, ParmStr in, ParmStr out) + { + if (!c.retrieve_bool("normalize") && !c.retrieve_bool("norm-required")) + return init(c,in,out); + + RET_ON_ERR(setup(norm_tables_, &norm_tables_cache, &c, out)); + + RET_ON_ERR(setup(decode_c, &decode_cache, &c, in)); + decode_ = decode_c.get(); + + if (c.retrieve_bool("norm-strict")) { + encode_s = new EncodeNormLookup(norm_tables_->strict); + encode_ = encode_s; + encode_->key = out; + encode_->key += ":strict"; + } else { + encode_s = new EncodeNormLookup(norm_tables_->internal); + encode_ = encode_s; + encode_->key = out; + encode_->key += ":internal"; + } + conv_ = 0; + + return no_err; + } + + PosibErr<void> Convert::init_norm_to(const Config & c, ParmStr in, ParmStr out) + { + String norm_form = c.retrieve("norm-form"); + if ((!c.retrieve_bool("normalize") || norm_form == "none") + && !c.retrieve_bool("norm-required")) + return init(c,in,out); + if (norm_form == "none" && c.retrieve_bool("norm-required")) + norm_form = "nfc"; + + RET_ON_ERR(setup(norm_tables_, &norm_tables_cache, &c, in)); + + RET_ON_ERR(setup(encode_c, &encode_cache, &c, out)); + encode_ = encode_c.get(); + + NormTables::ToUni::const_iterator i = norm_tables_->to_uni.begin(); + for (; i != norm_tables_->to_uni.end() && i->name != norm_form; ++i); + assert(i != norm_tables_->to_uni.end()); + + decode_s = new DecodeNormLookup(i->ptr); + decode_ = decode_s; + decode_->key = in; + decode_->key += ':'; + decode_->key += i->name; + + conv_ = 0; + + return no_err; + } + + PosibErr<void> MBLen::setup(const Config &, ParmStr enc0) + { + String buf; + const char * enc = fix_encoding_str(enc0,buf); + if (strcmp(enc, "utf-8") == 0) encoding = UTF8; + else if (strcmp(enc, "ucs-2") == 0) encoding = UCS2; + else if (strcmp(enc, "ucs-4") == 0) encoding = UCS4; + else encoding = Other; + return no_err; + } + + unsigned MBLen::operator()(const char * str, const char * stop) + { + unsigned size = 0; + switch (encoding) { + case Other: + return stop - str; + case UTF8: + for (; str != stop; ++str) { + if ((*str & 0x80) == 0 || (*str & 0xC0) == 0xC0) ++size; + } + return size; + case UCS2: + return (stop - str)/2; + case UCS4: + return (stop - str)/4; + } + return 0; + } + +} diff --git a/jni/common/convert.hpp b/jni/common/convert.hpp new file mode 100644 index 0000000..76332ee --- /dev/null +++ b/jni/common/convert.hpp @@ -0,0 +1,417 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_CONVERT__HPP +#define ASPELL_CONVERT__HPP + +#include "string.hpp" +#include "posib_err.hpp" +#include "char_vector.hpp" +#include "filter_char.hpp" +#include "filter_char_vector.hpp" +#include "stack_ptr.hpp" +#include "filter.hpp" +#include "cache.hpp" + +namespace acommon { + + class OStream; + class Config; + + struct ConvBase : public Cacheable { + typedef const Config CacheConfig; + typedef const char * CacheKey; + String key; + bool cache_key_eq(const char * l) const {return key == l;} + ConvBase() {} + private: + ConvBase(const ConvBase &); + void operator=(const ConvBase &); + }; + + struct Decode : public ConvBase { + virtual PosibErr<void> init(ParmStr code, const Config &) {return no_err;} + virtual void decode(const char * in, int size, + FilterCharVector & out) const = 0; + virtual PosibErr<void> decode_ec(const char * in, int size, + FilterCharVector & out, ParmStr orig) const = 0; + static PosibErr<Decode *> get_new(const String &, const Config *); + virtual ~Decode() {} + }; + struct Encode : public ConvBase { + // null characters should be treated like any other character + // by the encoder. + virtual PosibErr<void> init(ParmStr, const Config &) {return no_err;} + virtual void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const = 0; + virtual PosibErr<void> encode_ec(const FilterChar * in, const FilterChar * stop, + CharVector & out, ParmStr orig) const = 0; + // may convert inplace + virtual bool encode(FilterChar * & in, FilterChar * & stop, + FilterCharVector & buf) const {return false;} + static PosibErr<Encode *> get_new(const String &, const Config *); + virtual ~Encode() {} + }; + struct DirectConv { // convert directly from in_code to out_code. + // should not take ownership of decode and encode. + // decode and encode guaranteed to stick around for the life + // of the object. + virtual PosibErr<void> init(const Decode *, const Encode *, + const Config &) {return no_err;} + virtual void convert(const char * in, int size, + CharVector & out) const = 0; + virtual PosibErr<void> convert_ec(const char * in, int size, + CharVector & out, ParmStr orig) const = 0; + virtual ~DirectConv() {} + }; + template <class T> struct NormTable; + struct FromUniNormEntry; + struct ToUniNormEntry; + struct NormTables : public Cacheable { + typedef const Config CacheConfig; + typedef const char * CacheKey; + String key; + bool cache_key_eq(const char * l) const {return key == l;} + static PosibErr<NormTables *> get_new(const String &, const Config *); + NormTable<FromUniNormEntry> * internal; + NormTable<FromUniNormEntry> * strict_d; + NormTable<FromUniNormEntry> * strict; + struct ToUniTable { + String name; + NormTable<ToUniNormEntry> * data; + NormTable<ToUniNormEntry> * ptr; + ToUniTable() : data(), ptr() {} + }; + typedef Vector<ToUniTable> ToUni; + Vector<ToUniTable> to_uni; + ~NormTables(); + }; + + typedef FilterCharVector ConvertBuffer; + + class Convert { + private: + CachePtr<Decode> decode_c; + StackPtr<Decode> decode_s; + Decode * decode_; + CachePtr<Encode> encode_c; + StackPtr<Encode> encode_s; + Encode * encode_; + CachePtr<NormTables> norm_tables_; + StackPtr<DirectConv> conv_; + + ConvertBuffer buf_; + + static const unsigned int null_len_ = 4; // POSIB FIXME: Be more precise + + Convert(const Convert &); + void operator=(const Convert &); + + public: + Convert() {} + ~Convert(); + + // This filter is used when the convert method is called. It must + // be set up by an external entity as this class does not set up + // this class in any way. + Filter filter; + + PosibErr<void> init(const Config &, ParmStr in, ParmStr out); + PosibErr<void> init_norm_to(const Config &, ParmStr in, ParmStr out); + PosibErr<void> init_norm_from(const Config &, ParmStr in, ParmStr out); + + const char * in_code() const {return decode_->key.c_str();} + const char * out_code() const {return encode_->key.c_str();} + + void append_null(CharVector & out) const + { + const char nul[4] = {0,0,0,0}; // 4 should be enough + out.write(nul, null_len_); + } + + unsigned int null_len() const {return null_len_;} + + // this filters will generally not translate null characters + // if you need a null character at the end, add it yourself + // with append_null + + void decode(const char * in, int size, FilterCharVector & out) const + {decode_->decode(in,size,out);} + + void encode(const FilterChar * in, const FilterChar * stop, + CharVector & out) const + {encode_->encode(in,stop,out);} + + bool encode(FilterChar * & in, FilterChar * & stop, + FilterCharVector & buf) const + {return encode_->encode(in,stop,buf);} + + // does NOT pass it through filters + // DOES NOT use an internal state + void convert(const char * in, int size, CharVector & out, ConvertBuffer & buf) const + { + if (conv_) { + conv_->convert(in,size,out); + } else { + buf.clear(); + decode_->decode(in, size, buf); + encode_->encode(buf.pbegin(), buf.pend(), out); + } + } + + // does NOT pass it through filters + // DOES NOT use an internal state + PosibErr<void> convert_ec(const char * in, int size, CharVector & out, + ConvertBuffer & buf, ParmStr orig) const + { + if (conv_) { + RET_ON_ERR(conv_->convert_ec(in,size,out, orig)); + } else { + buf.clear(); + RET_ON_ERR(decode_->decode_ec(in, size, buf, orig)); + RET_ON_ERR(encode_->encode_ec(buf.pbegin(), buf.pend(), + out, orig)); + } + return no_err; + } + + + // convert has the potential to use internal buffers and + // is therefore not const. It is also not thread safe + // and I have no intention to make it thus. + + void convert(const char * in, int size, CharVector & out) { + if (filter.empty()) { + convert(in,size,out,buf_); + } else { + generic_convert(in,size,out); + } + } + + void generic_convert(const char * in, int size, CharVector & out); + + }; + + bool operator== (const Convert & rhs, const Convert & lhs); + + const char * fix_encoding_str(ParmStr enc, String & buf); + + // also returns true if the encoding is unknown + bool ascii_encoding(const Config & c, ParmStr enc0); + + enum Normalize {NormNone, NormFrom, NormTo}; + + PosibErr<Convert *> internal_new_convert(const Config & c, + ParmString in, ParmString out, + bool if_needed, + Normalize n); + + static inline PosibErr<Convert *> new_convert(const Config & c, + ParmStr in, ParmStr out, + Normalize n) + { + return internal_new_convert(c,in,out,false,n); + } + + static inline PosibErr<Convert *> new_convert_if_needed(const Config & c, + ParmStr in, ParmStr out, + Normalize n) + { + return internal_new_convert(c,in,out,true,n); + } + + struct ConvObj { + Convert * ptr; + ConvObj(Convert * c = 0) : ptr(c) {} + ~ConvObj() {delete ptr;} + PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, Normalize norm) + { + delete ptr; + ptr = 0; + PosibErr<Convert *> pe = new_convert_if_needed(c, from, to, norm); + if (pe.has_err()) return pe; + ptr = pe.data; + return no_err; + } + operator const Convert * () const {return ptr;} + private: + ConvObj(const ConvObj &); + void operator=(const ConvObj &); + }; + + struct ConvP { + const Convert * conv; + ConvertBuffer buf0; + CharVector buf; + operator bool() const {return conv;} + ConvP(const Convert * c = 0) : conv(c) {} + ConvP(const ConvObj & c) : conv(c.ptr) {} + ConvP(const ConvP & c) : conv(c.conv) {} + void operator=(const ConvP & c) { conv = c.conv; } + PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, + Normalize norm) + { + delete conv; + conv = 0; + PosibErr<Convert *> pe = new_convert_if_needed(c, from, to, norm); + if (pe.has_err()) return pe; + conv = pe.data; + return no_err; + } + char * operator() (char * str, size_t sz) + { + if (conv) { + buf.clear(); + conv->convert(str, sz, buf, buf0); + return buf.mstr(); + } else { + return str; + } + } + const char * operator() (const char * str, size_t sz) + { + if (conv) { + buf.clear(); + conv->convert(str, sz, buf, buf0); + return buf.str(); + } else { + return str; + } + } + char * operator() (MutableString str) + { + return operator()(str.str, str.size); + } + char * operator() (char * str) + { + if (conv) { + buf.clear(); + conv->convert(str, -1, buf, buf0); + return buf.mstr(); + } else { + return str; + } + } + const char * operator() (ParmStr str) + { + if (conv) { + buf.clear(); + conv->convert(str, -1, buf, buf0); + return buf.mstr(); + } else { + return str; + } + } + char * operator() (char c) + { + buf.clear(); + if (conv) { + char str[2] = {c, 0}; + conv->convert(str, 1, buf, buf0); + } else { + buf.append(c); + } + return buf.mstr(); + } + }; + + struct Conv : public ConvP + { + ConvObj conv_obj; + Conv(Convert * c = 0) : ConvP(c), conv_obj(c) {} + PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, Normalize norm) + { + RET_ON_ERR(conv_obj.setup(c,from,to,norm)); + conv = conv_obj.ptr; + return no_err; + } + }; + + struct ConvECP { + const Convert * conv; + ConvertBuffer buf0; + CharVector buf; + operator bool() const {return conv;} + ConvECP(const Convert * c = 0) : conv(c) {} + ConvECP(const ConvObj & c) : conv(c.ptr) {} + ConvECP(const ConvECP & c) : conv(c.conv) {} + void operator=(const ConvECP & c) { conv = c.conv; } + PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, Normalize norm) + { + delete conv; + conv = 0; + PosibErr<Convert *> pe = new_convert_if_needed(c, from, to, norm); + if (pe.has_err()) return pe; + conv = pe.data; + return no_err; + } + PosibErr<char *> operator() (char * str, size_t sz) + { + if (conv) { + buf.clear(); + RET_ON_ERR(conv->convert_ec(str, sz, buf, buf0, str)); + return buf.mstr(); + } else { + return str; + } + } + PosibErr<char *> operator() (MutableString str) + { + return operator()(str.str, str.size); + } + PosibErr<char *> operator() (char * str) + { + if (conv) { + buf.clear(); + RET_ON_ERR(conv->convert_ec(str, -1, buf, buf0, str)); + return buf.mstr(); + } else { + return str; + } + } + + PosibErr<const char *> operator() (ParmStr str) + { + if (conv) { + buf.clear(); + RET_ON_ERR(conv->convert_ec(str, -1, buf, buf0, str)); + return buf.mstr(); + } else { + return str.str(); + } + } + PosibErr<const char *> operator() (char c) + { + char buf2[2] = {c, 0}; + return operator()(ParmString(buf2,1)); + } + }; + + struct ConvEC : public ConvECP + { + ConvObj conv_obj; + ConvEC(Convert * c = 0) : ConvECP(c), conv_obj(c) {} + PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, Normalize norm) + { + RET_ON_ERR(conv_obj.setup(c,from,to,norm)); + conv = conv_obj.ptr; + return no_err; + } + }; + + struct MBLen + { + enum Encoding {Other, UTF8, UCS2, UCS4} encoding; + MBLen() : encoding(Other) {} + PosibErr<void> setup(const Config &, ParmStr enc); + unsigned operator()(const char * str, const char * stop); + unsigned operator()(const char * str, unsigned byte_size) { + return operator()(str, str + byte_size);} + }; + +} + +#endif diff --git a/jni/common/convert.lo b/jni/common/convert.lo new file mode 100644 index 0000000..97e1455 --- /dev/null +++ b/jni/common/convert.lo @@ -0,0 +1,12 @@ +# common/convert.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/convert.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/copy_ptr.hpp b/jni/common/copy_ptr.hpp new file mode 100644 index 0000000..f7e2335 --- /dev/null +++ b/jni/common/copy_ptr.hpp @@ -0,0 +1,58 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef autil__copy_ptr +#define autil__copy_ptr + +#include "generic_copy_ptr-t.hpp" + +namespace acommon { + + template <typename T> + class CopyPtr + { + struct Parms { + T * clone(const T * ptr) const + { return new T(*ptr);} + void assign(T * & rhs, const T * lhs) const + { *rhs = *lhs; } + void del(T * ptr) + { delete ptr; } + + }; + GenericCopyPtr<T, Parms> impl; + + public: + + explicit CopyPtr(T * p = 0) : impl(p) {} + CopyPtr(const CopyPtr & other) : impl(other.impl) {} + + CopyPtr & operator=(const CopyPtr & other) { + impl = other.impl; + return *this; + } + + void assign(const T * other) {impl.assign(other);} + void reset(T * other = 0) {impl.reset(other);} + + T & operator* () const {return *impl;} + T * operator-> () const {return impl;} + T * get() const {return impl;} + operator T * () const {return impl;} + + T * release() {return impl.release();} + }; + +} + +#endif + diff --git a/jni/common/document_checker.cpp b/jni/common/document_checker.cpp new file mode 100644 index 0000000..5e510c4 --- /dev/null +++ b/jni/common/document_checker.cpp @@ -0,0 +1,77 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "document_checker.hpp" +#include "tokenizer.hpp" +#include "convert.hpp" +#include "speller.hpp" +#include "config.hpp" + +namespace acommon { + + DocumentChecker::DocumentChecker() + : status_fun_(0), speller_(0) {} + DocumentChecker::~DocumentChecker() + { + } + + PosibErr<void> DocumentChecker + ::setup(Tokenizer * tokenizer, Speller * speller, Filter * filter) + { + tokenizer_.reset(tokenizer); + filter_.reset(filter); + speller_ = speller; + conv_ = speller->to_internal_; + return no_err; + } + + void DocumentChecker::set_status_fun(void (* sf)(void *, Token, int), + void * d) + { + status_fun_ = sf; + status_fun_data_ = d; + } + + void DocumentChecker::reset() + { + if (filter_) + filter_->reset(); + } + + void DocumentChecker::process(const char * str, int size) + { + proc_str_.clear(); + conv_->decode(str, size, proc_str_); + proc_str_.append(0); + FilterChar * begin = proc_str_.pbegin(); + FilterChar * end = proc_str_.pend() - 1; + if (filter_) + filter_->process(begin, end); + tokenizer_->reset(begin, end); + } + + Token DocumentChecker::next_misspelling() + { + bool correct; + Token tok; + do { + if (!tokenizer_->advance()) { + tok.offset = proc_str_.size(); + tok.len = 0; + return tok; + } + correct = speller_->check(MutableString(tokenizer_->word.data(), + tokenizer_->word.size() - 1)); + tok.len = tokenizer_->end_pos - tokenizer_->begin_pos; + tok.offset = tokenizer_->begin_pos; + if (status_fun_) + (*status_fun_)(status_fun_data_, tok, correct); + } while (correct); + return tok; + } + +} + diff --git a/jni/common/document_checker.hpp b/jni/common/document_checker.hpp new file mode 100644 index 0000000..d35bb88 --- /dev/null +++ b/jni/common/document_checker.hpp @@ -0,0 +1,62 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_DOCUMENT_CHECKER__HPP +#define ASPELL_DOCUMENT_CHECKER__HPP + +#include "filter.hpp" +#include "char_vector.hpp" +#include "copy_ptr.hpp" +#include "can_have_error.hpp" +#include "filter_char.hpp" +#include "filter_char_vector.hpp" + +namespace acommon { + + class Config; + class Speller; + class Tokenizer; + class Convert; + + struct Token { + unsigned int offset; + unsigned int len; + operator bool () const {return len != 0;} + }; + + + class DocumentChecker : public CanHaveError { + public: + // will take ownership of tokenizer and filter (even if there is an error) + // config only used for this method. + // speller expected to stick around. + PosibErr<void> setup(Tokenizer *, Speller *, Filter *); + void reset(); + void process(const char * str, int size); + Token next_misspelling(); + + Filter * filter() {return filter_;} + + void set_status_fun(void (*)(void *, Token, int), void *); + + DocumentChecker(); + ~DocumentChecker(); + + private: + CopyPtr<Filter> filter_; + CopyPtr<Tokenizer> tokenizer_; + void (* status_fun_)(void *, Token, int); + void * status_fun_data_; + Speller * speller_; + Convert * conv_; + FilterCharVector proc_str_; + }; + + PosibErr<DocumentChecker *> new_document_checker(Speller *); + +} + +#endif /* ASPELL_DOCUMENT_CHECKER__HPP */ diff --git a/jni/common/document_checker.lo b/jni/common/document_checker.lo new file mode 100644 index 0000000..d19bc4b --- /dev/null +++ b/jni/common/document_checker.lo @@ -0,0 +1,12 @@ +# common/document_checker.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/document_checker.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/enumeration.hpp b/jni/common/enumeration.hpp new file mode 100644 index 0000000..b540291 --- /dev/null +++ b/jni/common/enumeration.hpp @@ -0,0 +1,123 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef __autil_enumeration__ +#define __autil_enumeration__ + +#include "clone_ptr-t.hpp" + +// An enumeration is an efficient way to iterate through elements much +// like a forward iterator. The at_end method is a convince method +// as enumerations will return a null pointer or some other sort of +// special end state when they are at the end. +// Unlike an iterator iterating through x elements on a list can be +// done in x function calls while an iterator will require 3*x. +// function calls. +// Example of emulator usage +// const char * word; +// while ( (word = elements->next()) != 0) { // one function call +// cout << word << endl; +// } +// And an iterator +// iterator i = container->begin(); +// iterator end = container->end(); +// while (i != end) { // comparison, one function call +// cout << *i << endl; // deref, total of two function calls +// ++i; // increment, total of three function calls. +// } +// Normally all three calls are inline so it doesn't really matter +// but when the container type is not visible there are not inline +// and probably even virtual. +// If you really love iterators you can very easily wrap an enumeration +// in a forward iterator. + +namespace acommon { + + template <typename Val> + class Enumeration { + public: + typedef Val Value; + typedef Enumeration Base; + virtual Enumeration * clone() const = 0; + virtual void assign(const Enumeration *) = 0; + virtual Value next() = 0; + virtual bool at_end() const = 0; + virtual ~Enumeration() {} + }; + + template <class Parms, class Enum = Enumeration<typename Parms::Value> > + // Parms is expected to have the following members: + // typename Value + // typename Iterator; + // bool endf(Iterator) + // Value end_state() + // Value deref(Iterator) + class MakeEnumeration : public Enum { + public: + typedef typename Parms::Iterator Iterator; + typedef typename Parms::Value Value; + private: + Iterator i_; + Parms parms_; + public: + + MakeEnumeration(const Iterator i, const Parms & p = Parms()) + : i_(i), parms_(p) {} + + Enum * clone() const { + return new MakeEnumeration(*this); + } + + void assign (const Enum * other) { + *this = *static_cast<const MakeEnumeration *>(other); + } + + Value next() { + if (parms_.endf(i_)) + return parms_.end_state(); + Value temp = parms_.deref(i_); + ++i_; + return temp; + } + + bool at_end() const { + return parms_.endf(i_); + } + }; + + template <class Value> + struct MakeAlwaysEndEnumerationParms { + Value end_state() const {return Value();} + }; + + template <class Value> + struct MakeAlwaysEndEnumerationParms<Value *> { + Value * end_state() const {return 0;} + }; + + template <class Value> + class MakeAlwaysEndEnumeration : public Enumeration<Value> { + MakeAlwaysEndEnumerationParms<Value> parms_; + public: + MakeAlwaysEndEnumeration * clone() const { + return new MakeAlwaysEndEnumeration(*this); + } + void assign(const Enumeration<Value> * that) { + *this = *static_cast<const MakeAlwaysEndEnumeration *>(that); + } + Value next() {return parms_.end_state();} + bool at_end() const {return true;} + }; +} + +#endif + diff --git a/jni/common/error.cpp b/jni/common/error.cpp new file mode 100644 index 0000000..78b116a --- /dev/null +++ b/jni/common/error.cpp @@ -0,0 +1,52 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <string.h> +#include <stdlib.h> + +#include "error.hpp" + +namespace acommon { + + bool Error::is_a(ErrorInfo const * to_find) const + { + const ErrorInfo * e = err; + while (e) { + if (e == to_find) return true; + e = e->isa; + } + return false; + } + + Error::Error(const Error & other) + { + if (other.mesg) { + mesg = (char *)malloc(strlen(other.mesg) + 1); + strcpy(const_cast<char *>(mesg), other.mesg); + } + err = other.err; + } + + Error & Error::operator=(const Error & other) + { + if (mesg) + free(const_cast<char *>(mesg)); + if (other.mesg) { + unsigned int len = strlen(other.mesg) + 1; + mesg = (char *)malloc(len); + memcpy(const_cast<char *>(mesg), other.mesg, len); + } + err = other.err; + return *this; + } + + Error::~Error() + { + if (mesg) + free(const_cast<char *>(mesg)); + } + +} diff --git a/jni/common/error.hpp b/jni/common/error.hpp new file mode 100644 index 0000000..944fbb8 --- /dev/null +++ b/jni/common/error.hpp @@ -0,0 +1,37 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_ERROR__HPP +#define ASPELL_ERROR__HPP + +namespace acommon { + +struct ErrorInfo; + +struct Error { + const char * mesg; // expected to be allocated with malloc + const ErrorInfo * err; + + Error() : mesg(0), err(0) {} + + Error(const Error &); + Error & operator=(const Error &); + ~Error(); + + bool is_a(const ErrorInfo * e) const; +}; + +struct ErrorInfo { + const ErrorInfo * isa; + const char * mesg; + unsigned int num_parms; + const char * parms[3]; +}; + + +} + +#endif /* ASPELL_ERROR__HPP */ diff --git a/jni/common/error.lo b/jni/common/error.lo new file mode 100644 index 0000000..9cf1fa9 --- /dev/null +++ b/jni/common/error.lo @@ -0,0 +1,12 @@ +# common/error.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/error.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/errors.cpp b/jni/common/errors.cpp new file mode 100644 index 0000000..792bbcf --- /dev/null +++ b/jni/common/errors.cpp @@ -0,0 +1,700 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "settings.h" +#include "gettext.h" +#include "error.hpp" +#include "errors.hpp" + +namespace acommon { + + +static const ErrorInfo aerror_other_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_other = &aerror_other_obj; + +static const ErrorInfo aerror_operation_not_supported_obj = { + 0, // isa + N_("Operation Not Supported: %what:1"), // mesg + 1, // num_parms + {"what"} // parms +}; +extern "C" const ErrorInfo * const aerror_operation_not_supported = &aerror_operation_not_supported_obj; + +static const ErrorInfo aerror_cant_copy_obj = { + aerror_operation_not_supported, // isa + 0, // mesg + 1, // num_parms + {"what"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_copy = &aerror_cant_copy_obj; + +static const ErrorInfo aerror_unimplemented_method_obj = { + aerror_operation_not_supported, // isa + N_("The method \"%what:1\" is unimplemented in \"%where:2\"."), // mesg + 2, // num_parms + {"what", "where"} // parms +}; +extern "C" const ErrorInfo * const aerror_unimplemented_method = &aerror_unimplemented_method_obj; + +static const ErrorInfo aerror_file_obj = { + 0, // isa + N_("%file:1:"), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_file = &aerror_file_obj; + +static const ErrorInfo aerror_cant_open_file_obj = { + aerror_file, // isa + N_("The file \"%file:1\" can not be opened"), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_open_file = &aerror_cant_open_file_obj; + +static const ErrorInfo aerror_cant_read_file_obj = { + aerror_cant_open_file, // isa + N_("The file \"%file:1\" can not be opened for reading."), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_read_file = &aerror_cant_read_file_obj; + +static const ErrorInfo aerror_cant_write_file_obj = { + aerror_cant_open_file, // isa + N_("The file \"%file:1\" can not be opened for writing."), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_write_file = &aerror_cant_write_file_obj; + +static const ErrorInfo aerror_invalid_name_obj = { + aerror_file, // isa + N_("The file name \"%file:1\" is invalid."), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_name = &aerror_invalid_name_obj; + +static const ErrorInfo aerror_bad_file_format_obj = { + aerror_file, // isa + N_("The file \"%file:1\" is not in the proper format."), // mesg + 1, // num_parms + {"file"} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_file_format = &aerror_bad_file_format_obj; + +static const ErrorInfo aerror_dir_obj = { + 0, // isa + 0, // mesg + 1, // num_parms + {"dir"} // parms +}; +extern "C" const ErrorInfo * const aerror_dir = &aerror_dir_obj; + +static const ErrorInfo aerror_cant_read_dir_obj = { + aerror_dir, // isa + N_("The directory \"%dir:1\" can not be opened for reading."), // mesg + 1, // num_parms + {"dir"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_read_dir = &aerror_cant_read_dir_obj; + +static const ErrorInfo aerror_config_obj = { + 0, // isa + 0, // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_config = &aerror_config_obj; + +static const ErrorInfo aerror_unknown_key_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is unknown."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_key = &aerror_unknown_key_obj; + +static const ErrorInfo aerror_cant_change_value_obj = { + aerror_config, // isa + N_("The value for option \"%key:1\" can not be changed."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_change_value = &aerror_cant_change_value_obj; + +static const ErrorInfo aerror_bad_key_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is not %accepted:2 and is thus invalid."), // mesg + 2, // num_parms + {"key", "accepted"} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_key = &aerror_bad_key_obj; + +static const ErrorInfo aerror_bad_value_obj = { + aerror_config, // isa + N_("The value \"%value:2\" is not %accepted:3 and is thus invalid for the key \"%key:1\"."), // mesg + 3, // num_parms + {"key", "value", "accepted"} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_value = &aerror_bad_value_obj; + +static const ErrorInfo aerror_duplicate_obj = { + aerror_config, // isa + 0, // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_duplicate = &aerror_duplicate_obj; + +static const ErrorInfo aerror_key_not_string_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is not a string."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_key_not_string = &aerror_key_not_string_obj; + +static const ErrorInfo aerror_key_not_int_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is not an integer."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_key_not_int = &aerror_key_not_int_obj; + +static const ErrorInfo aerror_key_not_bool_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is not a boolean."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_key_not_bool = &aerror_key_not_bool_obj; + +static const ErrorInfo aerror_key_not_list_obj = { + aerror_config, // isa + N_("The key \"%key:1\" is not a list."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_key_not_list = &aerror_key_not_list_obj; + +static const ErrorInfo aerror_no_value_reset_obj = { + aerror_config, // isa + N_("The key \"%key:1\" does not take any parameters when prefixed by a \"reset-\"."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_value_reset = &aerror_no_value_reset_obj; + +static const ErrorInfo aerror_no_value_enable_obj = { + aerror_config, // isa + N_("The key \"%key:1\" does not take any parameters when prefixed by an \"enable-\"."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_value_enable = &aerror_no_value_enable_obj; + +static const ErrorInfo aerror_no_value_disable_obj = { + aerror_config, // isa + N_("The key \"%key:1\" does not take any parameters when prefixed by a \"dont-\" or \"disable-\"."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_value_disable = &aerror_no_value_disable_obj; + +static const ErrorInfo aerror_no_value_clear_obj = { + aerror_config, // isa + N_("The key \"%key:1\" does not take any parameters when prefixed by a \"clear-\"."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_value_clear = &aerror_no_value_clear_obj; + +static const ErrorInfo aerror_language_related_obj = { + 0, // isa + 0, // mesg + 1, // num_parms + {"lang"} // parms +}; +extern "C" const ErrorInfo * const aerror_language_related = &aerror_language_related_obj; + +static const ErrorInfo aerror_unknown_language_obj = { + aerror_language_related, // isa + N_("The language \"%lang:1\" is not known."), // mesg + 1, // num_parms + {"lang"} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_language = &aerror_unknown_language_obj; + +static const ErrorInfo aerror_unknown_soundslike_obj = { + aerror_language_related, // isa + N_("The soundslike \"%sl:2\" is not known."), // mesg + 2, // num_parms + {"lang", "sl"} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_soundslike = &aerror_unknown_soundslike_obj; + +static const ErrorInfo aerror_language_not_supported_obj = { + aerror_language_related, // isa + N_("The language \"%lang:1\" is not supported."), // mesg + 1, // num_parms + {"lang"} // parms +}; +extern "C" const ErrorInfo * const aerror_language_not_supported = &aerror_language_not_supported_obj; + +static const ErrorInfo aerror_no_wordlist_for_lang_obj = { + aerror_language_related, // isa + N_("No word lists can be found for the language \"%lang:1\"."), // mesg + 1, // num_parms + {"lang"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_wordlist_for_lang = &aerror_no_wordlist_for_lang_obj; + +static const ErrorInfo aerror_mismatched_language_obj = { + aerror_language_related, // isa + N_("Expected language \"%lang:1\" but got \"%prev:2\"."), // mesg + 2, // num_parms + {"lang", "prev"} // parms +}; +extern "C" const ErrorInfo * const aerror_mismatched_language = &aerror_mismatched_language_obj; + +static const ErrorInfo aerror_affix_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_affix = &aerror_affix_obj; + +static const ErrorInfo aerror_corrupt_affix_obj = { + aerror_affix, // isa + N_("Affix '%aff:1' is corrupt."), // mesg + 1, // num_parms + {"aff"} // parms +}; +extern "C" const ErrorInfo * const aerror_corrupt_affix = &aerror_corrupt_affix_obj; + +static const ErrorInfo aerror_invalid_cond_obj = { + aerror_affix, // isa + N_("The condition \"%cond:1\" is invalid."), // mesg + 1, // num_parms + {"cond"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_cond = &aerror_invalid_cond_obj; + +static const ErrorInfo aerror_invalid_cond_strip_obj = { + aerror_affix, // isa + N_("The condition \"%cond:1\" does not guarantee that \"%strip:2\" can always be stripped."), // mesg + 2, // num_parms + {"cond", "strip"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_cond_strip = &aerror_invalid_cond_strip_obj; + +static const ErrorInfo aerror_incorrect_encoding_obj = { + aerror_affix, // isa + N_("The file \"%file:1\" is not in the proper format. Expected the file to be in \"%exp:2\" not \"%got:3\"."), // mesg + 3, // num_parms + {"file", "exp", "got"} // parms +}; +extern "C" const ErrorInfo * const aerror_incorrect_encoding = &aerror_incorrect_encoding_obj; + +static const ErrorInfo aerror_encoding_obj = { + 0, // isa + 0, // mesg + 1, // num_parms + {"encod"} // parms +}; +extern "C" const ErrorInfo * const aerror_encoding = &aerror_encoding_obj; + +static const ErrorInfo aerror_unknown_encoding_obj = { + aerror_encoding, // isa + N_("The encoding \"%encod:1\" is not known."), // mesg + 1, // num_parms + {"encod"} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_encoding = &aerror_unknown_encoding_obj; + +static const ErrorInfo aerror_encoding_not_supported_obj = { + aerror_encoding, // isa + N_("The encoding \"%encod:1\" is not supported."), // mesg + 1, // num_parms + {"encod"} // parms +}; +extern "C" const ErrorInfo * const aerror_encoding_not_supported = &aerror_encoding_not_supported_obj; + +static const ErrorInfo aerror_conversion_not_supported_obj = { + aerror_encoding, // isa + N_("The conversion from \"%encod:1\" to \"%encod2:2\" is not supported."), // mesg + 2, // num_parms + {"encod", "encod2"} // parms +}; +extern "C" const ErrorInfo * const aerror_conversion_not_supported = &aerror_conversion_not_supported_obj; + +static const ErrorInfo aerror_pipe_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_pipe = &aerror_pipe_obj; + +static const ErrorInfo aerror_cant_create_pipe_obj = { + aerror_pipe, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_create_pipe = &aerror_cant_create_pipe_obj; + +static const ErrorInfo aerror_process_died_obj = { + aerror_pipe, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_process_died = &aerror_process_died_obj; + +static const ErrorInfo aerror_bad_input_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_input = &aerror_bad_input_obj; + +static const ErrorInfo aerror_invalid_string_obj = { + aerror_bad_input, // isa + N_("The string \"%str:1\" is invalid."), // mesg + 1, // num_parms + {"str"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_string = &aerror_invalid_string_obj; + +static const ErrorInfo aerror_invalid_word_obj = { + aerror_bad_input, // isa + N_("The word \"%word:1\" is invalid."), // mesg + 1, // num_parms + {"word"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_word = &aerror_invalid_word_obj; + +static const ErrorInfo aerror_invalid_affix_obj = { + aerror_bad_input, // isa + N_("The affix flag '%aff:1' is invalid for word \"%word:2\"."), // mesg + 2, // num_parms + {"aff", "word"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_affix = &aerror_invalid_affix_obj; + +static const ErrorInfo aerror_inapplicable_affix_obj = { + aerror_bad_input, // isa + N_("The affix flag '%aff:1' can not be applied to word \"%word:2\"."), // mesg + 2, // num_parms + {"aff", "word"} // parms +}; +extern "C" const ErrorInfo * const aerror_inapplicable_affix = &aerror_inapplicable_affix_obj; + +static const ErrorInfo aerror_unknown_unichar_obj = { + aerror_bad_input, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_unichar = &aerror_unknown_unichar_obj; + +static const ErrorInfo aerror_word_list_flags_obj = { + aerror_bad_input, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_word_list_flags = &aerror_word_list_flags_obj; + +static const ErrorInfo aerror_invalid_flag_obj = { + aerror_word_list_flags, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_flag = &aerror_invalid_flag_obj; + +static const ErrorInfo aerror_conflicting_flags_obj = { + aerror_word_list_flags, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_conflicting_flags = &aerror_conflicting_flags_obj; + +static const ErrorInfo aerror_version_control_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_version_control = &aerror_version_control_obj; + +static const ErrorInfo aerror_bad_version_string_obj = { + aerror_version_control, // isa + N_("not a version number"), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_version_string = &aerror_bad_version_string_obj; + +static const ErrorInfo aerror_filter_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_filter = &aerror_filter_obj; + +static const ErrorInfo aerror_cant_dlopen_file_obj = { + aerror_filter, // isa + N_("dlopen returned \"%return:1\"."), // mesg + 1, // num_parms + {"return"} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_dlopen_file = &aerror_cant_dlopen_file_obj; + +static const ErrorInfo aerror_empty_filter_obj = { + aerror_filter, // isa + N_("The file \"%filter:1\" does not contain any filters."), // mesg + 1, // num_parms + {"filter"} // parms +}; +extern "C" const ErrorInfo * const aerror_empty_filter = &aerror_empty_filter_obj; + +static const ErrorInfo aerror_no_such_filter_obj = { + aerror_filter, // isa + N_("The filter \"%filter:1\" does not exist."), // mesg + 1, // num_parms + {"filter"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_such_filter = &aerror_no_such_filter_obj; + +static const ErrorInfo aerror_confusing_version_obj = { + aerror_filter, // isa + N_("Confused by version control."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_confusing_version = &aerror_confusing_version_obj; + +static const ErrorInfo aerror_bad_version_obj = { + aerror_filter, // isa + N_("Aspell version does not match filter's requirement."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_version = &aerror_bad_version_obj; + +static const ErrorInfo aerror_identical_option_obj = { + aerror_filter, // isa + N_("Filter option already exists."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_identical_option = &aerror_identical_option_obj; + +static const ErrorInfo aerror_options_only_obj = { + aerror_filter, // isa + N_("Use option modifiers only within named option."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_options_only = &aerror_options_only_obj; + +static const ErrorInfo aerror_invalid_option_modifier_obj = { + aerror_filter, // isa + N_("Option modifier unknown."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_option_modifier = &aerror_invalid_option_modifier_obj; + +static const ErrorInfo aerror_cant_describe_filter_obj = { + aerror_filter, // isa + N_("Error setting filter description."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_cant_describe_filter = &aerror_cant_describe_filter_obj; + +static const ErrorInfo aerror_filter_mode_file_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_filter_mode_file = &aerror_filter_mode_file_obj; + +static const ErrorInfo aerror_mode_option_name_obj = { + aerror_filter_mode_file, // isa + N_("Empty option specifier."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_mode_option_name = &aerror_mode_option_name_obj; + +static const ErrorInfo aerror_no_filter_to_option_obj = { + aerror_filter_mode_file, // isa + N_("Option \"%option:1\" possibly specified prior to filter."), // mesg + 1, // num_parms + {"option"} // parms +}; +extern "C" const ErrorInfo * const aerror_no_filter_to_option = &aerror_no_filter_to_option_obj; + +static const ErrorInfo aerror_bad_mode_key_obj = { + aerror_filter_mode_file, // isa + N_("Unknown mode description key \"%key:1\"."), // mesg + 1, // num_parms + {"key"} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_mode_key = &aerror_bad_mode_key_obj; + +static const ErrorInfo aerror_expect_mode_key_obj = { + aerror_filter_mode_file, // isa + N_("Expecting \"%modekey:1\" key."), // mesg + 1, // num_parms + {"modekey"} // parms +}; +extern "C" const ErrorInfo * const aerror_expect_mode_key = &aerror_expect_mode_key_obj; + +static const ErrorInfo aerror_mode_version_requirement_obj = { + aerror_filter_mode_file, // isa + N_("Version specifier missing key: \"aspell\"."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_mode_version_requirement = &aerror_mode_version_requirement_obj; + +static const ErrorInfo aerror_confusing_mode_version_obj = { + aerror_filter_mode_file, // isa + N_("Confused by version control."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_confusing_mode_version = &aerror_confusing_mode_version_obj; + +static const ErrorInfo aerror_bad_mode_version_obj = { + aerror_filter_mode_file, // isa + N_("Aspell version does not match mode's requirement."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_mode_version = &aerror_bad_mode_version_obj; + +static const ErrorInfo aerror_missing_magic_expression_obj = { + aerror_filter_mode_file, // isa + N_("Missing magic mode expression."), // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_missing_magic_expression = &aerror_missing_magic_expression_obj; + +static const ErrorInfo aerror_empty_file_ext_obj = { + aerror_filter_mode_file, // isa + N_("Empty extension at char %char:1."), // mesg + 1, // num_parms + {"char"} // parms +}; +extern "C" const ErrorInfo * const aerror_empty_file_ext = &aerror_empty_file_ext_obj; + +static const ErrorInfo aerror_filter_mode_expand_obj = { + 0, // isa + N_("\"%mode:1\" error"), // mesg + 1, // num_parms + {"mode"} // parms +}; +extern "C" const ErrorInfo * const aerror_filter_mode_expand = &aerror_filter_mode_expand_obj; + +static const ErrorInfo aerror_unknown_mode_obj = { + aerror_filter_mode_expand, // isa + N_("Unknown mode: \"%mode:1\"."), // mesg + 1, // num_parms + {"mode"} // parms +}; +extern "C" const ErrorInfo * const aerror_unknown_mode = &aerror_unknown_mode_obj; + +static const ErrorInfo aerror_mode_extend_expand_obj = { + aerror_filter_mode_expand, // isa + N_("\"%mode:1\" error while extend Aspell modes. (out of memory?)"), // mesg + 1, // num_parms + {"mode"} // parms +}; +extern "C" const ErrorInfo * const aerror_mode_extend_expand = &aerror_mode_extend_expand_obj; + +static const ErrorInfo aerror_filter_mode_magic_obj = { + 0, // isa + 0, // mesg + 2, // num_parms + {"mode", "magic"} // parms +}; +extern "C" const ErrorInfo * const aerror_filter_mode_magic = &aerror_filter_mode_magic_obj; + +static const ErrorInfo aerror_file_magic_pos_obj = { + aerror_filter_mode_magic, // isa + N_("\"%mode:1\": no start for magic search given for magic \"%magic:2\"."), // mesg + 2, // num_parms + {"mode", "magic"} // parms +}; +extern "C" const ErrorInfo * const aerror_file_magic_pos = &aerror_file_magic_pos_obj; + +static const ErrorInfo aerror_file_magic_range_obj = { + aerror_filter_mode_magic, // isa + N_("\"%mode:1\": no range for magic search given for magic \"%magic:2\"."), // mesg + 2, // num_parms + {"mode", "magic"} // parms +}; +extern "C" const ErrorInfo * const aerror_file_magic_range = &aerror_file_magic_range_obj; + +static const ErrorInfo aerror_missing_magic_obj = { + aerror_filter_mode_magic, // isa + N_("\"%mode:1\": no magic expression available for magic \"%magic:2\"."), // mesg + 2, // num_parms + {"mode", "magic"} // parms +}; +extern "C" const ErrorInfo * const aerror_missing_magic = &aerror_missing_magic_obj; + +static const ErrorInfo aerror_bad_magic_obj = { + aerror_filter_mode_magic, // isa + N_("\"%mode:1\": Magic \"%magic:2\": bad regular expression after location specifier; regexp reports: \"%regerr:3\"."), // mesg + 3, // num_parms + {"mode", "magic", "regerr"} // parms +}; +extern "C" const ErrorInfo * const aerror_bad_magic = &aerror_bad_magic_obj; + +static const ErrorInfo aerror_expression_obj = { + 0, // isa + 0, // mesg + 0, // num_parms + {""} // parms +}; +extern "C" const ErrorInfo * const aerror_expression = &aerror_expression_obj; + +static const ErrorInfo aerror_invalid_expression_obj = { + aerror_expression, // isa + N_("\"%expression:1\" is not a valid regular expression."), // mesg + 1, // num_parms + {"expression"} // parms +}; +extern "C" const ErrorInfo * const aerror_invalid_expression = &aerror_invalid_expression_obj; + + + +} + diff --git a/jni/common/errors.hpp b/jni/common/errors.hpp new file mode 100644 index 0000000..64dacc0 --- /dev/null +++ b/jni/common/errors.hpp @@ -0,0 +1,193 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_ERRORS__HPP +#define ASPELL_ERRORS__HPP + + +namespace acommon { + +struct ErrorInfo; + +extern "C" const ErrorInfo * const aerror_other; +extern "C" const ErrorInfo * const aerror_operation_not_supported; +extern "C" const ErrorInfo * const aerror_cant_copy; +extern "C" const ErrorInfo * const aerror_unimplemented_method; +extern "C" const ErrorInfo * const aerror_file; +extern "C" const ErrorInfo * const aerror_cant_open_file; +extern "C" const ErrorInfo * const aerror_cant_read_file; +extern "C" const ErrorInfo * const aerror_cant_write_file; +extern "C" const ErrorInfo * const aerror_invalid_name; +extern "C" const ErrorInfo * const aerror_bad_file_format; +extern "C" const ErrorInfo * const aerror_dir; +extern "C" const ErrorInfo * const aerror_cant_read_dir; +extern "C" const ErrorInfo * const aerror_config; +extern "C" const ErrorInfo * const aerror_unknown_key; +extern "C" const ErrorInfo * const aerror_cant_change_value; +extern "C" const ErrorInfo * const aerror_bad_key; +extern "C" const ErrorInfo * const aerror_bad_value; +extern "C" const ErrorInfo * const aerror_duplicate; +extern "C" const ErrorInfo * const aerror_key_not_string; +extern "C" const ErrorInfo * const aerror_key_not_int; +extern "C" const ErrorInfo * const aerror_key_not_bool; +extern "C" const ErrorInfo * const aerror_key_not_list; +extern "C" const ErrorInfo * const aerror_no_value_reset; +extern "C" const ErrorInfo * const aerror_no_value_enable; +extern "C" const ErrorInfo * const aerror_no_value_disable; +extern "C" const ErrorInfo * const aerror_no_value_clear; +extern "C" const ErrorInfo * const aerror_language_related; +extern "C" const ErrorInfo * const aerror_unknown_language; +extern "C" const ErrorInfo * const aerror_unknown_soundslike; +extern "C" const ErrorInfo * const aerror_language_not_supported; +extern "C" const ErrorInfo * const aerror_no_wordlist_for_lang; +extern "C" const ErrorInfo * const aerror_mismatched_language; +extern "C" const ErrorInfo * const aerror_affix; +extern "C" const ErrorInfo * const aerror_corrupt_affix; +extern "C" const ErrorInfo * const aerror_invalid_cond; +extern "C" const ErrorInfo * const aerror_invalid_cond_strip; +extern "C" const ErrorInfo * const aerror_incorrect_encoding; +extern "C" const ErrorInfo * const aerror_encoding; +extern "C" const ErrorInfo * const aerror_unknown_encoding; +extern "C" const ErrorInfo * const aerror_encoding_not_supported; +extern "C" const ErrorInfo * const aerror_conversion_not_supported; +extern "C" const ErrorInfo * const aerror_pipe; +extern "C" const ErrorInfo * const aerror_cant_create_pipe; +extern "C" const ErrorInfo * const aerror_process_died; +extern "C" const ErrorInfo * const aerror_bad_input; +extern "C" const ErrorInfo * const aerror_invalid_string; +extern "C" const ErrorInfo * const aerror_invalid_word; +extern "C" const ErrorInfo * const aerror_invalid_affix; +extern "C" const ErrorInfo * const aerror_inapplicable_affix; +extern "C" const ErrorInfo * const aerror_unknown_unichar; +extern "C" const ErrorInfo * const aerror_word_list_flags; +extern "C" const ErrorInfo * const aerror_invalid_flag; +extern "C" const ErrorInfo * const aerror_conflicting_flags; +extern "C" const ErrorInfo * const aerror_version_control; +extern "C" const ErrorInfo * const aerror_bad_version_string; +extern "C" const ErrorInfo * const aerror_filter; +extern "C" const ErrorInfo * const aerror_cant_dlopen_file; +extern "C" const ErrorInfo * const aerror_empty_filter; +extern "C" const ErrorInfo * const aerror_no_such_filter; +extern "C" const ErrorInfo * const aerror_confusing_version; +extern "C" const ErrorInfo * const aerror_bad_version; +extern "C" const ErrorInfo * const aerror_identical_option; +extern "C" const ErrorInfo * const aerror_options_only; +extern "C" const ErrorInfo * const aerror_invalid_option_modifier; +extern "C" const ErrorInfo * const aerror_cant_describe_filter; +extern "C" const ErrorInfo * const aerror_filter_mode_file; +extern "C" const ErrorInfo * const aerror_mode_option_name; +extern "C" const ErrorInfo * const aerror_no_filter_to_option; +extern "C" const ErrorInfo * const aerror_bad_mode_key; +extern "C" const ErrorInfo * const aerror_expect_mode_key; +extern "C" const ErrorInfo * const aerror_mode_version_requirement; +extern "C" const ErrorInfo * const aerror_confusing_mode_version; +extern "C" const ErrorInfo * const aerror_bad_mode_version; +extern "C" const ErrorInfo * const aerror_missing_magic_expression; +extern "C" const ErrorInfo * const aerror_empty_file_ext; +extern "C" const ErrorInfo * const aerror_filter_mode_expand; +extern "C" const ErrorInfo * const aerror_unknown_mode; +extern "C" const ErrorInfo * const aerror_mode_extend_expand; +extern "C" const ErrorInfo * const aerror_filter_mode_magic; +extern "C" const ErrorInfo * const aerror_file_magic_pos; +extern "C" const ErrorInfo * const aerror_file_magic_range; +extern "C" const ErrorInfo * const aerror_missing_magic; +extern "C" const ErrorInfo * const aerror_bad_magic; +extern "C" const ErrorInfo * const aerror_expression; +extern "C" const ErrorInfo * const aerror_invalid_expression; + + +static const ErrorInfo * const other_error = aerror_other; +static const ErrorInfo * const operation_not_supported_error = aerror_operation_not_supported; +static const ErrorInfo * const cant_copy = aerror_cant_copy; +static const ErrorInfo * const unimplemented_method = aerror_unimplemented_method; +static const ErrorInfo * const file_error = aerror_file; +static const ErrorInfo * const cant_open_file_error = aerror_cant_open_file; +static const ErrorInfo * const cant_read_file = aerror_cant_read_file; +static const ErrorInfo * const cant_write_file = aerror_cant_write_file; +static const ErrorInfo * const invalid_name = aerror_invalid_name; +static const ErrorInfo * const bad_file_format = aerror_bad_file_format; +static const ErrorInfo * const dir_error = aerror_dir; +static const ErrorInfo * const cant_read_dir = aerror_cant_read_dir; +static const ErrorInfo * const config_error = aerror_config; +static const ErrorInfo * const unknown_key = aerror_unknown_key; +static const ErrorInfo * const cant_change_value = aerror_cant_change_value; +static const ErrorInfo * const bad_key = aerror_bad_key; +static const ErrorInfo * const bad_value = aerror_bad_value; +static const ErrorInfo * const duplicate = aerror_duplicate; +static const ErrorInfo * const key_not_string = aerror_key_not_string; +static const ErrorInfo * const key_not_int = aerror_key_not_int; +static const ErrorInfo * const key_not_bool = aerror_key_not_bool; +static const ErrorInfo * const key_not_list = aerror_key_not_list; +static const ErrorInfo * const no_value_reset = aerror_no_value_reset; +static const ErrorInfo * const no_value_enable = aerror_no_value_enable; +static const ErrorInfo * const no_value_disable = aerror_no_value_disable; +static const ErrorInfo * const no_value_clear = aerror_no_value_clear; +static const ErrorInfo * const language_related_error = aerror_language_related; +static const ErrorInfo * const unknown_language = aerror_unknown_language; +static const ErrorInfo * const unknown_soundslike = aerror_unknown_soundslike; +static const ErrorInfo * const language_not_supported = aerror_language_not_supported; +static const ErrorInfo * const no_wordlist_for_lang = aerror_no_wordlist_for_lang; +static const ErrorInfo * const mismatched_language = aerror_mismatched_language; +static const ErrorInfo * const affix_error = aerror_affix; +static const ErrorInfo * const corrupt_affix = aerror_corrupt_affix; +static const ErrorInfo * const invalid_cond = aerror_invalid_cond; +static const ErrorInfo * const invalid_cond_strip = aerror_invalid_cond_strip; +static const ErrorInfo * const incorrect_encoding = aerror_incorrect_encoding; +static const ErrorInfo * const encoding_error = aerror_encoding; +static const ErrorInfo * const unknown_encoding = aerror_unknown_encoding; +static const ErrorInfo * const encoding_not_supported = aerror_encoding_not_supported; +static const ErrorInfo * const conversion_not_supported = aerror_conversion_not_supported; +static const ErrorInfo * const pipe_error = aerror_pipe; +static const ErrorInfo * const cant_create_pipe = aerror_cant_create_pipe; +static const ErrorInfo * const process_died = aerror_process_died; +static const ErrorInfo * const bad_input_error = aerror_bad_input; +static const ErrorInfo * const invalid_string = aerror_invalid_string; +static const ErrorInfo * const invalid_word = aerror_invalid_word; +static const ErrorInfo * const invalid_affix = aerror_invalid_affix; +static const ErrorInfo * const inapplicable_affix = aerror_inapplicable_affix; +static const ErrorInfo * const unknown_unichar = aerror_unknown_unichar; +static const ErrorInfo * const word_list_flags_error = aerror_word_list_flags; +static const ErrorInfo * const invalid_flag = aerror_invalid_flag; +static const ErrorInfo * const conflicting_flags = aerror_conflicting_flags; +static const ErrorInfo * const version_control_error = aerror_version_control; +static const ErrorInfo * const bad_version_string = aerror_bad_version_string; +static const ErrorInfo * const filter_error = aerror_filter; +static const ErrorInfo * const cant_dlopen_file = aerror_cant_dlopen_file; +static const ErrorInfo * const empty_filter = aerror_empty_filter; +static const ErrorInfo * const no_such_filter = aerror_no_such_filter; +static const ErrorInfo * const confusing_version = aerror_confusing_version; +static const ErrorInfo * const bad_version = aerror_bad_version; +static const ErrorInfo * const identical_option = aerror_identical_option; +static const ErrorInfo * const options_only = aerror_options_only; +static const ErrorInfo * const invalid_option_modifier = aerror_invalid_option_modifier; +static const ErrorInfo * const cant_describe_filter = aerror_cant_describe_filter; +static const ErrorInfo * const filter_mode_file_error = aerror_filter_mode_file; +static const ErrorInfo * const mode_option_name = aerror_mode_option_name; +static const ErrorInfo * const no_filter_to_option = aerror_no_filter_to_option; +static const ErrorInfo * const bad_mode_key = aerror_bad_mode_key; +static const ErrorInfo * const expect_mode_key = aerror_expect_mode_key; +static const ErrorInfo * const mode_version_requirement = aerror_mode_version_requirement; +static const ErrorInfo * const confusing_mode_version = aerror_confusing_mode_version; +static const ErrorInfo * const bad_mode_version = aerror_bad_mode_version; +static const ErrorInfo * const missing_magic_expression = aerror_missing_magic_expression; +static const ErrorInfo * const empty_file_ext = aerror_empty_file_ext; +static const ErrorInfo * const filter_mode_expand_error = aerror_filter_mode_expand; +static const ErrorInfo * const unknown_mode = aerror_unknown_mode; +static const ErrorInfo * const mode_extend_expand = aerror_mode_extend_expand; +static const ErrorInfo * const filter_mode_magic_error = aerror_filter_mode_magic; +static const ErrorInfo * const file_magic_pos = aerror_file_magic_pos; +static const ErrorInfo * const file_magic_range = aerror_file_magic_range; +static const ErrorInfo * const missing_magic = aerror_missing_magic; +static const ErrorInfo * const bad_magic = aerror_bad_magic; +static const ErrorInfo * const expression_error = aerror_expression; +static const ErrorInfo * const invalid_expression = aerror_invalid_expression; + + +} + +#endif /* ASPELL_ERRORS__HPP */ diff --git a/jni/common/errors.lo b/jni/common/errors.lo new file mode 100644 index 0000000..c5d9d83 --- /dev/null +++ b/jni/common/errors.lo @@ -0,0 +1,12 @@ +# common/errors.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/errors.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/file_data_util.cpp b/jni/common/file_data_util.cpp new file mode 100644 index 0000000..52adb8d --- /dev/null +++ b/jni/common/file_data_util.cpp @@ -0,0 +1,75 @@ +#include "config.hpp" +#include "file_util.hpp" +#include "file_data_util.hpp" + +namespace acommon { + + // Fill in values for a local data directory and a system data directory + // The values are stored under the keys local-data-dir and data-dir. + // If the is no local-data-dir value, use the directory from master-path. + // If there is no directory in master-path, use the current working dir. + // FIXME: The case when there is no "/" in the master-path should not + // happen since it is an internal option. Unofficially, it can still + // be set by the user. This needs to eventually be fixed. + void fill_data_dir(const Config * config, String & dir1, String & dir2) { + if (config->have("local-data-dir")) { + dir1 = config->retrieve("local-data-dir"); + if (dir1[dir1.size()-1] != '/') dir1 += '/'; + } else { + dir1 = config->retrieve("master-path"); + size_t pos = dir1.rfind('/'); + if (pos != String::npos) + dir1.resize(pos + 1); + else + dir1 = "./"; + } + dir2 = config->retrieve("data-dir"); + if (dir2[dir2.size()-1] != '/') dir2 += '/'; + } + + const String & find_file(String & file, + const String & dir1, const String & dir2, + const String & name, const char * extension) + { + file = dir1 + name + extension; + if (file_exists(file)) return dir1; + file = dir2 + name + extension; + return dir2; + } + + bool find_file(String & file, + const String & dir1, const String & dir2, + const String & name, + ParmString preext, ParmString ext) + { + bool try_name_only = false; + if (name.size() > ext.size() + && memcmp(name.c_str() + name.size() - ext.size(), + ext, ext.size()) == 0) try_name_only = true; + if (!try_name_only) { + String n = name; n += preext; n += ext; + file = dir1 + n; + if (file_exists(file)) return true; + file = dir2 + n; + if (file_exists(file)) return true; + + n = name; n += ext; + file = dir1 + n; + if (file_exists(file)) return true; + file = dir2 + n; + if (file_exists(file)) return true; + } + + file = dir1 + name; + if (file_exists(file)) return true; + file = dir2 + name; + if (file_exists(file)) return true; + + if (try_name_only) {file = dir1 + name;} + else {file = dir1 + name; file += preext; file += ext;} + + return false; + } + + +} diff --git a/jni/common/file_data_util.hpp b/jni/common/file_data_util.hpp new file mode 100644 index 0000000..89beffe --- /dev/null +++ b/jni/common/file_data_util.hpp @@ -0,0 +1,20 @@ +#ifndef aspeller_file_data_util__hh +#define aspeller_file_data_util__hh + +#include "parm_string.hpp" + +namespace acommon {class Config;} + +namespace acommon { + + void fill_data_dir(const Config *, String & dir1, String & dir2); + const String & find_file(String & path, + const String & dir1, const String & dir2, + const String & name, const char * extension); + bool find_file(String & file, + const String & dir1, const String & dir2, + const String & name, + ParmString preext, ParmString ext); +} + +#endif diff --git a/jni/common/file_data_util.lo b/jni/common/file_data_util.lo new file mode 100644 index 0000000..a2f3f84 --- /dev/null +++ b/jni/common/file_data_util.lo @@ -0,0 +1,12 @@ +# common/file_data_util.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file_data_util.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/file_util.cpp b/jni/common/file_util.cpp new file mode 100644 index 0000000..8515832 --- /dev/null +++ b/jni/common/file_util.cpp @@ -0,0 +1,235 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "settings.h" + +//#include "iostream.hpp" + +#include "config.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "errors.hpp" +#include "string_list.hpp" + +#ifdef USE_FILE_LOCKS +# include <fcntl.h> +# include <unistd.h> +# include <sys/types.h> +#endif + +#include <stdio.h> +#include <sys/stat.h> +#include <dirent.h> + +#ifdef WIN32 + +# include <io.h> +# define ACCESS _access +# include <windows.h> +# include <winbase.h> + +#else + +# include <unistd.h> +# define ACCESS access + +#endif + + +namespace acommon { + + // Return false if file is already an absolute path and does not need + // a directory prepended. + bool need_dir(ParmString file) { + if (file[0] == '/' || (file[0] == '.' && file[1] == '/') +#ifdef WIN32 + || (asc_isalpha(file[0]) && file[1] == ':') + || file[0] == '\\' || (file[0] == '.' && file[1] == '\\') +#endif + ) + return false; + else + return true; + } + + String add_possible_dir(ParmString dir, ParmString file) { + if (need_dir(file)) { + String path; + path += dir; + path += '/'; + path += file; + return path; + } else { + return file; + } + } + + String figure_out_dir(ParmString dir, ParmString file) + { + String temp; + int s = file.size() - 1; + while (s != -1 && file[s] != '/') --s; + if (need_dir(file)) { + temp += dir; + temp += '/'; + } + if (s != -1) { + temp.append(file, s); + } + return temp; + } + + time_t get_modification_time(FStream & f) { + struct stat s; + fstat(f.file_no(), &s); + return s.st_mtime; + } + + PosibErr<void> open_file_readlock(FStream & in, ParmString file) { + RET_ON_ERR(in.open(file, "r")); +#ifdef USE_FILE_LOCKS + int fd = in.file_no(); + struct flock fl; + fl.l_type = F_RDLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 0; + fcntl(fd, F_SETLKW, &fl); // ignore errors +#endif + return no_err; + } + + PosibErr<bool> open_file_writelock(FStream & inout, ParmString file) { + typedef PosibErr<bool> Ret; +#ifndef USE_FILE_LOCKS + bool exists = file_exists(file); +#endif + { + Ret pe = inout.open(file, "r+"); + if (pe.get_err() != 0) + pe = inout.open(file, "w+"); + if (pe.has_err()) + return pe; + } +#ifdef USE_FILE_LOCKS + int fd = inout.file_no(); + struct flock fl; + fl.l_type = F_WRLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 0; + fcntl(fd, F_SETLKW, &fl); // ignore errors + struct stat s; + fstat(fd, &s); + return s.st_size != 0; +#else + return exists; +#endif + } + + void truncate_file(FStream & f, ParmString name) { +#ifdef USE_FILE_LOCKS + f.restart(); + ftruncate(f.file_no(),0); +#else + f.close(); + f.open(name, "w+"); +#endif + } + + bool remove_file(ParmString name) { + return remove(name) == 0; + } + + bool file_exists(ParmString name) { + return ACCESS(name, F_OK) == 0; + } + + bool rename_file(ParmString orig_name, ParmString new_name) + { + remove(new_name); + return rename(orig_name, new_name) == 0; + } + + const char * get_file_name(const char * path) { + const char * file_name; + if (path != 0) { + file_name = strrchr(path,'/'); + if (file_name == 0) + file_name = path; + } else { + file_name = 0; + } + return file_name; + } + + unsigned find_file(const Config * config, const char * option, String & filename) + { + StringList sl; + config->retrieve_list(option, &sl); + return find_file(sl, filename); + } + + unsigned find_file(const StringList & sl, String & filename) + { + StringListEnumeration els = sl.elements_obj(); + const char * dir; + String path; + while ( (dir = els.next()) != 0 ) + { + path = dir; + if (path.back() != '/') path += '/'; + unsigned dir_len = path.size(); + path += filename; + if (file_exists(path)) { + filename.swap(path); + return dir_len; + } + } + return 0; + } + + PathBrowser::PathBrowser(const StringList & sl, const char * suf) + : dir_handle(0) + { + els = sl.elements(); + suffix = suf; + } + + PathBrowser::~PathBrowser() + { + delete els; + if (dir_handle) closedir((DIR *)dir_handle); + } + + const char * PathBrowser::next() + { + if (dir_handle == 0) goto get_next_dir; + begin: { + struct dirent * entry = readdir((DIR *)dir_handle); + if (entry == 0) goto try_again; + const char * name = entry->d_name; + unsigned name_len = strlen(name); + if (suffix.size() != 0 && + !(name_len > suffix.size() + && memcmp(name + name_len - suffix.size(), suffix.str(), suffix.size()) == 0)) + goto begin; + path = dir; + if (path.back() != '/') path += '/'; + path += name; + } + return path.str(); + try_again: + if (dir_handle) closedir((DIR *)dir_handle); + dir_handle = 0; + get_next_dir: + dir = els->next(); + if (!dir) return 0; + dir_handle = opendir(dir); + if (dir_handle == 0) goto try_again; + goto begin; + } +} diff --git a/jni/common/file_util.hpp b/jni/common/file_util.hpp new file mode 100644 index 0000000..665e28a --- /dev/null +++ b/jni/common/file_util.hpp @@ -0,0 +1,63 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_FILE_UTIL__HPP +#define ASPELL_FILE_UTIL__HPP + +#include <time.h> + +#include "string.hpp" +#include "posib_err.hpp" + +namespace acommon { + + class FStream; + class Config; + class StringList; + + bool need_dir(ParmString file); + String add_possible_dir(ParmString dir, ParmString file); + String figure_out_dir(ParmString dir, ParmString file); + + // FIXME: Possible remove + //void open_file(FStream & in, const string & file, + // ParmString mode = "r"); + time_t get_modification_time(FStream & f); + PosibErr<void> open_file_readlock(FStream& in, ParmString file); + PosibErr<bool> open_file_writelock(FStream & in, ParmString file); + // returns true if the file already exists + void truncate_file(FStream & f, ParmString name); + bool remove_file(ParmString name); + bool file_exists(ParmString name); + bool rename_file(ParmString orig, ParmString new_name); + // will return NULL if path is NULL. + const char * get_file_name(const char * path); + + // expands filename to the full path + // returns the length of the directory part or 0 if nothing found + unsigned find_file(const Config *, const char * option, String & filename); + unsigned find_file(const StringList &, String & filename); + + class StringEnumeration; + + class PathBrowser + { + String suffix; + String path; + StringEnumeration * els; + void * dir_handle; + const char * dir; + PathBrowser(const PathBrowser &); + void operator= (const PathBrowser &); + public: + PathBrowser(const StringList &, const char * suf = ""); + ~PathBrowser(); + const char * next(); + }; + +} + +#endif diff --git a/jni/common/file_util.lo b/jni/common/file_util.lo new file mode 100644 index 0000000..2c7170c --- /dev/null +++ b/jni/common/file_util.lo @@ -0,0 +1,12 @@ +# common/file_util.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/file_util.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/filter.cpp b/jni/common/filter.cpp new file mode 100644 index 0000000..54c5bb9 --- /dev/null +++ b/jni/common/filter.cpp @@ -0,0 +1,139 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "settings.h" + +#include "config.hpp" +#include "filter.hpp" +#include "speller.hpp" +#include "indiv_filter.hpp" +#include "strtonum.hpp" +#include "errors.hpp" +#include "asc_ctype.hpp" + +#ifdef HAVE_LIBDL +# include <dlfcn.h> +#endif + +namespace acommon { + + FilterHandle::~FilterHandle() + { + //FIXME: This causes a seg fault + //if (handle) dlclose(handle); + } + + Filter::Filter() {} + + void Filter::add_filter(IndividualFilter * filter) + { + Filters::iterator cur, end; + cur = filters_.begin(); + end = filters_.end(); + while ((cur != end) && (filter->order_num() > (*cur)->order_num())){ + ++cur; + } + filters_.insert(cur, filter); + } + + void Filter::reset() + { + Filters::iterator cur, end; + cur = filters_.begin(); + end = filters_.end(); + for (; cur != end; ++cur) + (*cur)->reset(); + } + + void Filter::process(FilterChar * & start, FilterChar * & stop) + { + Filters::iterator cur, end; + cur = filters_.begin(); + end = filters_.end(); + for (; cur != end; ++cur) + (*cur)->process(start, stop); + } + + void Filter::clear() + { + Filters::iterator cur, end; + cur = filters_.begin(); + end = filters_.end(); + for (; cur != end; ++cur){ + delete *cur; + } + filters_.clear(); + } + + Filter::~Filter() + { + clear(); + } + + static PosibErr<int> version_compare(const char * x, const char * y) + { + do { + int xn = 0, yn = 0; + if (*x) { + if (!asc_isdigit(*x)) return make_err(bad_version_string); + xn = strtoi_c(x, &x);} + if (*y) { + if (!asc_isdigit(*y)) return make_err(bad_version_string); + yn = strtoi_c(y, &y);} + int diff = xn - yn; + if (diff != 0) return diff; + if (*x) { + if (*x != '.') return make_err(bad_version_string); + ++x;} + if (*y) { + if (*y != '.') return make_err(bad_version_string); + ++y;} + } while (*x || *y); + return 0; + } + + PosibErr<bool> verify_version(const char * rel_op, + const char * actual, const char * required) + { + assert(actual != NULL && required != NULL); + + RET_ON_ERR_SET(version_compare(actual, required), int, cmp); + + if (cmp == 0 && strchr(rel_op, '=')) return true; + if (cmp < 0 && strchr(rel_op, '<')) return true; + if (cmp > 0 && strchr(rel_op, '>')) return true; + return false; + } + + PosibErr<void> check_version(const char * requirement) + { + const char * s = requirement; + + if (*s == '>' || *s == '<') s++; + if (*s == '=') s++; + + String rel_op(requirement, s - requirement); + String req_ver(s); + + char act_ver[] = PACKAGE_VERSION; + + char * seek = act_ver; + while (*seek && *seek != '-') ++seek; // remove any part after the '-' + *seek = '\0'; + + PosibErr<bool> peb = verify_version(rel_op.str(), act_ver, req_ver.str()); + + if (peb.has_err()) { + peb.ignore_err(); + return make_err(confusing_version); + } else if ( peb == false ) { + return make_err(bad_version); + } else { + return no_err; + } + } +} + diff --git a/jni/common/filter.hpp b/jni/common/filter.hpp new file mode 100644 index 0000000..25f9dd9 --- /dev/null +++ b/jni/common/filter.hpp @@ -0,0 +1,67 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_FILTER__HPP +#define ASPELL_FILTER__HPP + +#include "can_have_error.hpp" +#include "copy_ptr.hpp" +#include "filter_char.hpp" +#include "posib_err.hpp" +#include "vector.hpp" +#include "string_pair_enumeration.hpp" + +#include <stdio.h> + +namespace acommon { + + class Config; + class Speller; + class IndividualFilter; + class StringList; + struct ConfigModule; + + class Filter : public CanHaveError { + public: + + bool empty() const {return filters_.empty();} + void clear(); + void reset(); + void process(FilterChar * & start, FilterChar * & stop); + void add_filter(IndividualFilter * filter); + // setup the filter where the string list is the list of + // filters to use. + Filter(); + ~Filter(); + + private: + typedef Vector<IndividualFilter *> Filters; + Filters filters_; + }; + + PosibErr<void> set_mode_from_extension(Config * config, + ParmString filename, + FILE * in = NULL); + + PosibErr<void> setup_filter(Filter &, Config *, + bool use_decoder, + bool use_filter, + bool use_encoder); + void activate_dynamic_filteroptions(Config *c); + void activate_filter_modes(Config * config); + + void load_all_filters(Config * config); + + PosibErr<bool> verify_version(const char * relOp, + const char * actual, const char * required); + PosibErr<void> check_version(const char * requirement); + + PosibErr<StringPairEnumeration *> available_filters(Config *); + PosibErr<StringPairEnumeration *> available_filter_modes(Config *); + +}; + +#endif /* ASPELL_FILTER__HPP */ diff --git a/jni/common/filter.lo b/jni/common/filter.lo new file mode 100644 index 0000000..f748e6c --- /dev/null +++ b/jni/common/filter.lo @@ -0,0 +1,12 @@ +# common/filter.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/filter.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/filter_char.hpp b/jni/common/filter_char.hpp new file mode 100644 index 0000000..0452ae4 --- /dev/null +++ b/jni/common/filter_char.hpp @@ -0,0 +1,50 @@ +#ifndef acommon_filter_char_hh +#define acommon_filter_char_hh + +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +namespace acommon { + + struct FilterChar { + unsigned int chr; + unsigned int width; // width must always be < 256 + typedef unsigned int Chr; + typedef unsigned int Width; + explicit FilterChar(Chr c = 0, Width w = 1) + : chr(c), width(w) {} + FilterChar(Chr c, FilterChar o) + : chr(c), width(o.width) {} + static Width sum(const FilterChar * o, const FilterChar * stop) { + Width total = 0; + for (; o != stop; ++o) + total += o->width; + return total; + } + static Width sum(const FilterChar * o, unsigned int size) { + return sum(o, o+size); + } + FilterChar(Chr c, const FilterChar * o, unsigned int size) + : chr(c), width(sum(o,size)) {} + FilterChar(Chr c, const FilterChar * o, const FilterChar * stop) + : chr(c), width(sum(o,stop)) {} + operator Chr () const {return chr;} + FilterChar & operator= (Chr c) {chr = c; return *this;} + }; + + static inline bool operator==(FilterChar lhs, FilterChar rhs) + { + return lhs.chr == rhs.chr; + } + + static inline bool operator!=(FilterChar lhs, FilterChar rhs) + { + return lhs.chr != rhs.chr; + } + +} + +#endif diff --git a/jni/common/filter_char_vector.hpp b/jni/common/filter_char_vector.hpp new file mode 100644 index 0000000..4e14f55 --- /dev/null +++ b/jni/common/filter_char_vector.hpp @@ -0,0 +1,41 @@ +#ifndef acommon_filter_char_vector__hh +#define acommon_filter_char_vector__hh + +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "vector.hpp" +#include "filter_char.hpp" + +namespace acommon { + + class FilterCharVector : public Vector<FilterChar> + { + typedef Vector<FilterChar> Base; + public: + void append(const char * str, FilterChar::Width w) { + Base::append(FilterChar(*str, w)); + ++str; + for (;*str; ++str) + Base::append(FilterChar(*str, 1)); + } + void append(FilterChar::Chr c, FilterChar::Width w) { + Base::append(FilterChar(c, w)); + } + void append(FilterChar t) { + Base::append(t); + } + void append(FilterChar::Chr t) { + Base::append(FilterChar(t)); + } + void append(const FilterChar * begin, unsigned int size) { + Base::append(begin, size); + } + }; + +} + +#endif diff --git a/jni/common/filter_debug.hpp b/jni/common/filter_debug.hpp new file mode 100644 index 0000000..b054539 --- /dev/null +++ b/jni/common/filter_debug.hpp @@ -0,0 +1,41 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Christoph Hintermller under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. +// +// Added by Christoph Hintermller +// renamed from loadable-filter-API.hpp + +#ifndef ASPELL_FILTER_DEBUG__HPP +#define ASPELL_FILTER_DEBUG__HPP + +#include <stdio.h> + +#ifdef FILTER_PROGRESS_CONTROL +static FILE * controllout=stderr; +#define FDEBUGCLOSE do {\ + if ((controllout != stdout) && (controllout != stderr)) {\ + fclose(controllout);\ + controllout=stderr;\ + } } while (false) + +#define FDEBUGNOTOPEN do {\ + if ((controllout == stdout) || (controllout == stderr)) {\ + FDEBUGOPEN; \ + } } while (false) + +#define FDEBUGOPEN do {\ + FDEBUGCLOSE; \ + if ((controllout=fopen(FILTER_PROGRESS_CONTROL,"w")) == NULL) {\ + controllout=stderr;\ + }\ + setbuf(controllout,NULL);\ + fprintf(controllout,"Debug Destination %s\n",FILTER_PROGRESS_CONTROL);\ + } while (false) + +#define FDEBUG fprintf(controllout,"File: %s(%i)\n",__FILE__,__LINE__) +#define FDEBUGPRINTF(a) fprintf(controllout,a) +#endif // FILTER_PROGRESS_CONTROL + +#endif diff --git a/jni/common/fstream.cpp b/jni/common/fstream.cpp new file mode 100644 index 0000000..efc2e33 --- /dev/null +++ b/jni/common/fstream.cpp @@ -0,0 +1,149 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <stdio.h> +#include <assert.h> + +#include "iostream.hpp" + +#include "asc_ctype.hpp" +#include "string.hpp" +#include "fstream.hpp" +#include "errors.hpp" + +namespace acommon { + + PosibErr<void> FStream::open(ParmStr name, const char * mode) + { + assert (file_ == 0); + file_ = fopen(name,mode); + if (file_ == 0) { + if (strpbrk(mode, "wa+") != 0) + return make_err(cant_write_file, name); + else + return make_err(cant_read_file, name); + } else { + return no_err; + } + } + + void FStream::close() + { + if (file_ != 0 && own_) + fclose(file_); + file_ = 0; + } + + int FStream::file_no() + { + return fileno(file_); + } + + FILE * FStream::c_stream() + { + return file_; + } + + void FStream::restart() + { + flush(); + fseek(file_,0,SEEK_SET); + } + + void FStream::skipws() + { + int c; + while (c = getc(file_), c != EOF && asc_isspace(c)); + ungetc(c, file_); + } + + FStream & FStream::operator>> (String & str) + { + skipws(); + int c; + str = ""; + while (c = getc(file_), c != EOF && !asc_isspace(c)) + str += static_cast<char>(c); + ungetc(c, file_); + return *this; + } + + FStream & FStream::operator<< (ParmStr str) + { + fputs(str, file_); + return *this; + } + + bool FStream::append_line(String & str, char d) + { + int c; + c = getc(file_); + if (c == EOF) return false; + if (c == (int)d) return true; + str.append(c); + while (c = getc(file_), c != EOF && c != (int)d) + str.append(c); + return true; + } + + bool FStream::read(void * str, unsigned int n) + { + fread(str,1,n,file_); + return operator bool(); + } + + void FStream::write(char c) + { + putc(c, file_); + } + + void FStream::write(ParmStr str) + { + fputs(str, file_); + } + + void FStream::write(const void * str, unsigned int n) + { + fwrite(str,1,n,file_); + } + + FStream & FStream::operator>> (unsigned int & num) + { + int r = fscanf(file_, " %u", &num); + if (r != 1) + close(); + return *this; + } + + + FStream & FStream::operator<< (unsigned int num) + { + fprintf(file_, "%u", num); + return *this; + } + + FStream & FStream::operator>> (int & num) + { + int r = fscanf(file_, " %i", &num); + if (r != 1) + close(); + return *this; + } + + + FStream & FStream::operator<< (int num) + { + fprintf(file_, "%i", num); + return *this; + } + + FStream & FStream::operator<< (double num) + { + fprintf(file_, "%g", num); + return *this; + } + +} diff --git a/jni/common/fstream.hpp b/jni/common/fstream.hpp new file mode 100644 index 0000000..bd98e0e --- /dev/null +++ b/jni/common/fstream.hpp @@ -0,0 +1,101 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_FSTREAM__HPP +#define ASPELL_FSTREAM__HPP + +#include <stdio.h> + +#include "string.hpp" +#include "istream.hpp" +#include "ostream.hpp" +#include "posib_err.hpp" + +// NOTE: See iostream.hpp for the standard stream (ie standard input, +// output, error) + +namespace acommon { + class String; + + class FStream : public IStream, public OStream + { + private: + FILE * file_; + bool own_; + + public: + FStream(char d = '\n') + : IStream(d), file_(0), own_(true) {} + FStream(FILE * f, bool own = true) + : IStream('\n'), file_(f), own_(own) {} + ~FStream() {close();} + + PosibErr<void> open(ParmStr, const char *); + void close(); + + operator bool() {return file_ != 0 && !feof(file_) && !ferror(file_);} + + int get() {return getc(file_);} + void ignore() {getc(file_);} + int peek() {int c = getc(file_); ungetc(c, file_); return c;} + + FILE * c_stream(); + int file_no(); + + int vprintf(const char * format, va_list ap) + { + return vfprintf(file_, format, ap); + } + + void flush() {fflush(file_);} + + // flushes the stream and goes to the beginning of the file + void restart(); + + void skipws(); + + // Will return false if there is no more data + bool append_line(String &, char d); + + // These perform raw io with any sort of formating + bool read(void *, unsigned int i); + void write(ParmStr); + void write(char c); + void write(const void *, unsigned int i); + + long int tell() {return ftell(file_);} + bool seek(long int offset, int whence = SEEK_SET) { + return fseek(file_, offset, whence) == 0; + } + + + // The << >> operators are designed to work about they same + // as they would with A C++ stream. + FStream & operator>> (char & c) + { + skipws(); + c = getc(file_); + return *this; + } + + FStream & operator<< (char c) + { + putc(c, file_); + return *this; + } + + FStream & operator>> (String &); + FStream & operator>> (unsigned int &); + FStream & operator>> (int &); + FStream & operator<< (ParmStr); + FStream & operator<< (unsigned int); + FStream & operator<< (int); + FStream & operator<< (double); + + }; +} + +#endif diff --git a/jni/common/fstream.lo b/jni/common/fstream.lo new file mode 100644 index 0000000..f1e32fb --- /dev/null +++ b/jni/common/fstream.lo @@ -0,0 +1,12 @@ +# common/fstream.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/fstream.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/generic_copy_ptr-t.hpp b/jni/common/generic_copy_ptr-t.hpp new file mode 100644 index 0000000..1f5622e --- /dev/null +++ b/jni/common/generic_copy_ptr-t.hpp @@ -0,0 +1,63 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef autil__generic_copy_ptr_t +#define autil__generic_copy_ptr_t + +#include "generic_copy_ptr.hpp" + +namespace acommon { + + template <typename T, typename Parms> + GenericCopyPtr<T,Parms>::GenericCopyPtr(const GenericCopyPtr & other) + { + if (other.ptr_ != 0) + ptr_ = parms_.clone(other.ptr_); + else + ptr_ = 0; + parms_ = other.parms_; + } + + template <typename T, typename Parms> + void GenericCopyPtr<T,Parms>::assign(const T * other_ptr, + const Parms & other_parms) + { + if (other_ptr == 0) { + if (ptr_ != 0) parms_.del(ptr_); + ptr_ = 0; + } else if (ptr_ == 0) { + ptr_ = parms_.clone(other_ptr); + } else { + parms_.assign(ptr_, other_ptr); + } + parms_ = other_parms; + } + + template <typename T, typename Parms> + void GenericCopyPtr<T,Parms>::reset (T * other, const Parms & other_parms) + { + if (ptr_ != 0) + parms_.del(ptr_); + ptr_ = other; + parms_ = other_parms; + } + + template <typename T, typename Parms> + GenericCopyPtr<T,Parms>::~GenericCopyPtr() + { + if (ptr_ != 0) + parms_.del(ptr_); + } + +} + +#endif diff --git a/jni/common/generic_copy_ptr.hpp b/jni/common/generic_copy_ptr.hpp new file mode 100644 index 0000000..40c8869 --- /dev/null +++ b/jni/common/generic_copy_ptr.hpp @@ -0,0 +1,63 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef autil__generic_copy_ptr +#define autil__generic_copy_ptr + +namespace acommon { + + // Parms is expected to have the following members + // T * Parms::clone(const T *); + // void Parms::assign(T * &, const T *); + // void Parms::del(T *); + // All members can assume that all pointers are not null + + template <typename T, typename Parms> + class GenericCopyPtr { + + T * ptr_; + Parms parms_; + + public: + + explicit GenericCopyPtr(T * p = 0, const Parms & parms = Parms()) + : ptr_(p), parms_(parms) {} + + GenericCopyPtr(const GenericCopyPtr & other); + GenericCopyPtr & operator= (const GenericCopyPtr & other) { + assign(other.ptr_, parms_); + return *this; + } + + // assign makes a copy of other + void assign(const T * other, const Parms & parms = Parms()); + + // reset takes ownership of other + void reset(T * other = 0, const Parms & parms = Parms()); + + T & operator* () const {return *ptr_;} + T * operator-> () const {return ptr_;} + T * get() const {return ptr_;} + operator T * () const {return ptr_;} + + T * release() {T * tmp = ptr_; ptr_ = 0; return tmp;} + + const Parms & parms() {return parms_;} + const Parms & parms() const {return parms_;} + + ~GenericCopyPtr(); + }; + +} + +#endif + diff --git a/jni/common/getdata.cpp b/jni/common/getdata.cpp new file mode 100644 index 0000000..7e822c9 --- /dev/null +++ b/jni/common/getdata.cpp @@ -0,0 +1,193 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <string.h> + +#include "getdata.hpp" +#include "string.hpp" +#include "asc_ctype.hpp" + +#include "iostream.hpp" + +namespace acommon { + unsigned int linenumber = 0 ; + + bool getdata_pair(IStream & in, DataPair & d, String & buf) + { + char * p; + + // get first non blank line and count all read ones + do { + buf.clear(); + buf.append('\0'); // to avoid some special cases + if (!in.append_line(buf)) return false; + d.line_num++; + p = buf.mstr() + 1; + while (*p == ' ' || *p == '\t') ++p; + } while (*p == '#' || *p == '\0'); + + // get key + d.key.str = p; + while (*p != '\0' && + ((*p != ' ' && *p != '\t' && *p != '#') || *(p-1) == '\\')) ++p; + d.key.size = p - d.key.str; + + // figure out if there is a value and add terminate key + d.value.str = p; // in case there is no value + d.value.size = 0; + if (*p == '#' || *p == '\0') {*p = '\0'; return true;} + *p = '\0'; + + // skip any whitespace + ++p; + while (*p == ' ' || *p == '\t') ++p; + if (*p == '\0' || *p == '#') {return true;} + + // get value + d.value.str = p; + while (*p != '\0' && (*p != '#' || *(p-1) == '\\')) ++p; + + // remove trailing white space and terminate value + --p; + while (*p == ' ' || *p == '\t') --p; + if (*p == '\\' && *(p + 1) != '\0') ++p; + ++p; + d.value.size = p - d.value.str; + *p = '\0'; + + return true; + } + + char * unescape(char * dest, const char * src) + { + while (*src) { + if (*src == '\\') { + ++src; + switch (*src) { + case 'n': *dest = '\n'; break; + case 'r': *dest = '\r'; break; + case 't': *dest = '\t'; break; + case 'f': *dest = '\f'; break; + case 'v': *dest = '\v'; break; + default: *dest = *src; + } + } else { + *dest = *src; + } + ++src; + ++dest; + } + *dest = '\0'; + return dest; + } + + bool escape(char * dest, const char * src, size_t limit, const char * others) + { + const char * begin = src; + const char * end = dest + limit; + if (asc_isspace(*src)) { + if (dest == end) return false; + *dest++ = '\\'; + if (dest == end) return false; + *dest++ = *src++; + } + while (*src) { + if (dest == end) return false; + switch (*src) { + case '\n': *dest++ = '\\'; *dest = 'n'; break; + case '\r': *dest++ = '\\'; *dest = 'r'; break; + case '\t': *dest++ = '\\'; *dest = 't'; break; + case '\f': *dest++ = '\\'; *dest = 'f'; break; + case '\v': *dest++ = '\\'; *dest = 'v'; break; + case '\\': *dest++ = '\\'; *dest = '\\'; break; + case '#' : *dest++ = '\\'; *dest = '#'; break; + default: + if (others && strchr(others, *src)) *dest++ = '\\'; + *dest = *src; + } + ++src; + ++dest; + } + if (src > begin + 1 && asc_isspace(src[-1])) { + --dest; + *dest++ = '\\'; + if (dest == end) return false; + *dest++ = src[-1]; + } + *dest = '\0'; + return true; + } + + void to_lower(char * str) + { + for (; *str; str++) *str = asc_tolower(*str); + } + + void to_lower(String & res, const char * str) + { + for (; *str; str++) res += asc_tolower(*str); + } + + bool split(DataPair & d) + { + char * p = d.value; + char * end = p + d.value.size; + d.key.str = p; + while (p != end) { + ++p; + if ((*p == ' ' || *p == '\t') && *(p-1) != '\\') break; + } + d.key.size = p - d.key.str; + *p = 0; + if (p != end) { + ++p; + while (p != end && (*p == ' ' || *p == '\t')) ++p; + } + d.value.str = p; + d.value.size = end - p; + return d.key.size != 0; + } + + void init(ParmString str, DataPair & d, String & buf) + { + const char * s = str; + while (*s == ' ' || *s == '\t') ++s; + size_t l = str.size() - (s - str); + buf.assign(s, l); + d.value.str = buf.mstr(); + d.value.size = l; + } + + bool getline(IStream & in, DataPair & d, String & buf) + { + if (!in.getline(buf)) return false; + d.value.str = buf.mstr(); + d.value.size = buf.size(); + return true; + } + + char * get_nb_line(IStream & in, String & buf) + { + char * p; + // get first non blank line + do { + if (!in.getline(buf)) return 0; + p = buf.mstr(); + while (*p == ' ' || *p == '\t') ++p; + } while (*p == '#' || *p == '\0'); + return p; + } + + void remove_comments(String & buf) + { + char * p = buf.mstr(); + char * b = p; + while (*p && *p != '#') ++p; + if (*p == '#') {--p; while (p >= b && asc_isspace(*p)) --p; ++p;} + buf.resize(p - b); + } + +} diff --git a/jni/common/getdata.hpp b/jni/common/getdata.hpp new file mode 100644 index 0000000..74b57b5 --- /dev/null +++ b/jni/common/getdata.hpp @@ -0,0 +1,68 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_GET_DATA__HPP +#define ASPELL_GET_DATA__HPP + +#include <stddef.h> +#include <limits.h> +#include "string.hpp" +#include "mutable_string.hpp" + +namespace acommon { + + class IStream; + class String; + + // NOTE: getdata_pair WILL NOT unescape a string + + struct DataPair { + MutableString key; + MutableString value; + size_t line_num; + DataPair() : line_num(0) {} + }; + + bool getdata_pair(IStream & in, DataPair & d, String & buf); + + char * unescape(char * dest, const char * src); + static inline char * unescape(char * dest) {return unescape(dest, dest);} + static inline void unescape(MutableString & d) { + char * e = unescape(d.str, d.str); + d.size = e - d.str; + } + static inline void unescape(String & d) { + d.ensure_null_end(); + char * e = unescape(d.data(), d.data()); + d.resize(e - d.data()); + } + + // if limit is not given than dest should have enough space for + // twice the number of characters of src + bool escape(char * dest, const char * src, + size_t limit = INT_MAX, const char * others = 0); + + void to_lower(char *); + void to_lower(String &, const char *); + + // extract the first whitespace delimited word from d.value and put + // it in d.key. d.value is expected not to have any leading + // whitespace. The string is modified in place so that d.key will be + // null terminated. d.value is modified to point to any additional + // data after key with any leading white space removed. Returns + // false when there are no more words to extract + bool split(DataPair & d); + + // preps a string for split + void init(ParmString str, DataPair & d, String & buf); + + bool getline(IStream & in, DataPair & d, String & buf); + + char * get_nb_line(IStream & in, String & buf); + void remove_comments(String & buf); + +} +#endif diff --git a/jni/common/getdata.lo b/jni/common/getdata.lo new file mode 100644 index 0000000..35c1ca4 --- /dev/null +++ b/jni/common/getdata.lo @@ -0,0 +1,12 @@ +# common/getdata.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/getdata.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/gettext.h b/jni/common/gettext.h new file mode 100644 index 0000000..20dac05 --- /dev/null +++ b/jni/common/gettext.h @@ -0,0 +1,100 @@ +/* Convenience header for conditional use of GNU <libintl.h>. + Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +// NOTE: This file MUST be the last file included to avoid problems +// with system header files that might include libintl.h + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include <libintl.h> + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of <locale.h> a NOP. We don't include <libintl.h> + as well because people using "gettext.h" will not include <libintl.h>, + and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> + is OK. */ +#if defined(__sun) +# include <locale.h> +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# undef gettext +# define gettext(Msgid) ((const char *) (Msgid)) +# undef dgettext +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# undef dcgettext +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# undef dngettext +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# undef dcngettext +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# undef textdomain +# define textdomain(Domainname) ((const char *) (Domainname)) +# undef bindtextdomain +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# undef bind_textdomain_codeset +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +/* short cut macros */ + +/* I use dgettext so that the right domain will be looked at when + Aspell is used as a library */ +#define _(String) dgettext ("aspell", String) +#define N_(String) gettext_noop (String) + +/* use gt_ when there is the possibility that str will be the empty + string. gettext in this case is not guaranteed to return an + empty string */ +static inline const char * gt_(const char * str) { + return str[0] == '\0' ? str : _(str); +} + +extern "C" void aspell_gettext_init(); + +/* NOTE: DO NOT USE "gettext", ALWAYS USE "_" BECAUSE WHEN ASPELL IS USED + AS A LIBRARY THE DOMAIN IS NOT GUARANTEED TO BE ASPELL */ + +#endif /* _LIBGETTEXT_H */ diff --git a/jni/common/gettext_init.cpp b/jni/common/gettext_init.cpp new file mode 100644 index 0000000..02afb47 --- /dev/null +++ b/jni/common/gettext_init.cpp @@ -0,0 +1,28 @@ + +#include "gettext.h" + +#if ENABLE_NLS + +#include "lock.hpp" + +static acommon::Mutex lock; + +static bool did_init = false; + +extern "C" void aspell_gettext_init() +{ + { + acommon::Lock l(&lock); + if (did_init) return; + did_init = true; + } + bindtextdomain("aspell", LOCALEDIR); +} + +#else + +extern "C" void aspell_gettext_init() +{ +} + +#endif diff --git a/jni/common/gettext_init.lo b/jni/common/gettext_init.lo new file mode 100644 index 0000000..f6d3a3e --- /dev/null +++ b/jni/common/gettext_init.lo @@ -0,0 +1,12 @@ +# common/gettext_init.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/gettext_init.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/hash-t.hpp b/jni/common/hash-t.hpp new file mode 100644 index 0000000..2bcfeff --- /dev/null +++ b/jni/common/hash-t.hpp @@ -0,0 +1,234 @@ +// Copyright (c) 2001,2011 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appear in all copies and +// that both that copyright notice and this permission notice appear +// in supporting documentation. Silicon Graphics makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied warranty. + +// prime list taken from SGI STL with the following copyright + +/* + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +#ifndef autil__hash_t_hh +#define autil__hash_t_hh + +#include <cstdlib> +#include <new> + +#include "hash.hpp" +#include "block_slist-t.hpp" + +namespace acommon { + + static const unsigned int primes[] = + { + 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, + 49157, 98317, 196613, 393241, 786433, + 1572869, 3145739, 6291469, 12582917, 25165843, + 50331653, 100663319, 201326611, 402653189, 805306457, + static_cast<unsigned int>(-1) + }; + + template <class P> + typename HashTable<P>::PrimeIndex HashTable<P>::next_largest(Size s) + { + PrimeIndex i = prime_index_; + while (assert(primes[i] != static_cast<PrimeIndex>(-1)), primes[i] < s) ++i; + return i; + } + + template <class P> + void HashTable<P>::create_table(PrimeIndex i) { + prime_index_ = i; + table_size_ = primes[prime_index_]; + table_ = reinterpret_cast<Node * *>(calloc(table_size_+1,sizeof(Node *))); + table_end_ = table_ + table_size_; + *table_end_ = reinterpret_cast<Node *>(table_end_); + } + + template <class P> + void HashTable<P>::init(PrimeIndex i) + { + size_ = 0; + create_table(i); + node_pool_.add_block(primes[i]); + } + + template <class P> + std::pair<typename HashTable<P>::iterator,bool> HashTable<P>::insert(const Value & to_insert) + { + bool have; + iterator put_me_here = find_i(parms_.key(to_insert), have); + if (have && !parms_.is_multi) + return std::pair<iterator,bool>(put_me_here,false); + Node * new_node = node_pool_.new_node(); + if (new_node == 0) { + resize_i(prime_index_+1); + return insert(to_insert); + } + new + (const_cast<void *>(reinterpret_cast<const void *>(&new_node->data))) + Value(to_insert); + new_node->next = *put_me_here.n; + *put_me_here.n = new_node; + ++size_; + return std::pair<iterator,bool>(put_me_here,true); + } + + template <class P> + void HashTable<P>::erase(iterator to_erase) + { + (*to_erase.n)->data.~Value(); + Node * tmp = *to_erase.n; + *to_erase.n = (*to_erase.n)->next; + node_pool_.remove_node(tmp); + --size_; + } + + template <class P> + typename HashTable<P>::Size HashTable<P>::erase(const Key & k) + { + Size num_erased = 0; + bool irrelevant; + Node * * first = find_i(k,irrelevant).n; + Node * n = *first; + while (n != 0 && parms_.equal(parms_.key(n->data), k)) { + Node * tmp = n; + n->data.~Value(); + n = n->next; + node_pool_.remove_node(tmp); + ++num_erased; + } + *first = n; + size_ -= num_erased; + return num_erased; + } + + template <class P> + typename HashTable<P>::iterator HashTable<P>::find_i(const Key & to_find, bool & have) + { + Size pos = parms_.hash(to_find) % table_size_; + Node * * n = table_ + pos; + have = false; + while (true) { + if (*n == 0) { + break; + } else if (parms_.equal(parms_.key((*n)->data),to_find)) { + have = true; + break; + } + n = &(*n)->next; + } + return iterator(table_ + pos, n); + } + + template <class P> + std::pair<typename HashTable<P>::iterator, typename HashTable<P>::iterator> + HashTable<P>::equal_range_i(const Key & to_find, int & c) + { + c = 0; + bool have; + iterator first = find_i(to_find,have); + if (!have) + return std::pair<iterator,iterator>(end(),end()); + iterator last = first; + c = 1; + ++last; + iterator e = end(); + while (!(last == e) && parms_.equal(parms_.key(*last), to_find)) { + ++c; + ++last; + } + return std::pair<iterator,iterator>(first,last); + } + + template <class P> + void HashTable<P>::del() + { + for (Node * * i = table_; i != table_end_; ++i) { + Node * n = *i; + while (n != 0) { + n->data.~Value(); + n = n->next; + } + } + free (table_); + size_ = 0; + node_pool_.clear(); + table_ = 0; + table_size_ = 0; + prime_index_ = 0; + } + + template <class P> + void HashTable<P>::resize_i(PrimeIndex new_prime_index) + { + Node * * old_table = table_; + Node * * old_end = table_end_; + Size old_size = table_size_; + create_table(new_prime_index); + for (Node * * i = old_table; i != old_end; ++i) { + Node * n = *i; + while (n != 0) { + Node * * put_me_here = table_ + (parms_.hash(parms_.key(n->data)) % table_size_); + Node * tmp = n; + n = n->next; + tmp->next = *put_me_here; + *put_me_here = tmp; + } + } + free(old_table); + node_pool_.add_block(table_size_ - old_size); + } + + template <class P> + void HashTable<P>::copy(const HashTable & other) + { + init(other.prime_index_); + size_ = other.size_; + parms_ = other.parms_; + for (unsigned int i = 0; i != other.table_size_; ++i) { + for (Node * j = other.table_[i]; j != 0; j = j->next) { + Node * n = node_pool_.new_node(); + new + (const_cast<void *>(reinterpret_cast<const void *>(&n->data))) + Value(j->data); + n->next = table_[i]; + table_[i] = n; + } + } + } + +} + + +#endif diff --git a/jni/common/hash.hpp b/jni/common/hash.hpp new file mode 100644 index 0000000..949aa42 --- /dev/null +++ b/jni/common/hash.hpp @@ -0,0 +1,337 @@ +// Copyright (c) 2001,2011 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. No representations about the +// suitability of this software for any purpose. It is provided "as +// is" without express or implied warranty. + +#ifndef autil__hash_hh +#define autil__hash_hh + +#include <utility> +#include <functional> + +#include "settings.h" + +#include "hash_fun.hpp" +#include "block_slist.hpp" + +// This file provided implementation for hash_set, hash_multiset, hash_map +// and hash_multimap which are very similar to SGI STL's implementation +// with a few notable exceptions. The main one is that while +// const_iterator is never invalided until the actual element is removed +// iterator is invalided my most all non-const member functions. This +// is to simply the implementation slightly and allow the removal +// of an element in guaranteed constant time when a non-const iterator +// is provided rather that normally constant time. + +// All of the hash_* implementations are derived from the HashTable class + +namespace acommon { + + // Parms is expected to have the following methods + // typename Value + // typename Key + // bool is_multi; + // Size hash(Key) + // bool equal(Key, Key) + // Key key(Value) + + template <class Value> + class HT_ConstIterator; + + template <class Value> + class HT_Iterator { + public: // but don't use + typedef typename BlockSList<Value>::Node Node; + Node * * t; + Node * * n; + void adv() {while (*t == 0) ++t; n = t;} + void inc() {n = &(*n)->next; if (*n == 0) {++t; adv();}} + HT_Iterator(Node * * t0) : t(t0) {adv();} + HT_Iterator(Node * * t0, Node * * n0) : t(t0), n(n0) {} + public: + HT_Iterator() : t(0), n(0) {} + explicit HT_Iterator(const HT_ConstIterator<Value> & other); + Value & operator*() const {return (*n)->data;} + Value * operator->() const {return &(*n)->data;} + HT_Iterator & operator++() {inc(); return *this;} + HT_Iterator operator++(int) {HT_Iterator tmp(*this); inc(); return tmp;} + }; + + template <class Value> + class HT_ConstIterator + { + public: // but don't use + typedef typename BlockSList<Value>::Node Node; + Node * * t; + Node * n; + void adv() {while (*t == 0) ++t; n = *t;} + void inc() {n = n->next; if (n == 0) {++t; adv();}} + HT_ConstIterator(Node * * t0) : t(t0) {adv();} + HT_ConstIterator(Node * * t0, Node * n0) : t(t0), n(n0) {} + public: + HT_ConstIterator() : t(0), n(0) {} + HT_ConstIterator(const HT_Iterator<Value> & other) : t(other.t), n(*other.n) {} + Value & operator*() const {return n->data;} + Value * operator->() const {return &n->data;} + HT_ConstIterator & operator++() {inc(); return *this;} + HT_ConstIterator operator++(int) {HT_ConstIterator tmp(*this); inc(); return tmp;} + }; + + template <typename P> + class HashTable + { + public: + typedef P parms_type; + typedef parms_type Parms; + + typedef typename Parms::Value value_type; + typedef value_type Value; + + typedef typename Parms::Key key_type; + typedef key_type Key; + + typedef unsigned int size_type; + typedef size_type Size; + + public: // but don't use + typedef BlockSList<Value> NodePool; + typedef typename NodePool::Node Node; + + private: + typedef unsigned int PrimeIndex; + + Size size_; + Node * * table_; // always one larger than table_size_; + Node * * table_end_; // always at true table_end - 1 + Size table_size_; + PrimeIndex prime_index_; + NodePool node_pool_; + Parms parms_; + + public: + + typedef HT_Iterator<Value> iterator; + typedef HT_ConstIterator<Value> const_iterator; + + private: + void del(); + void init(PrimeIndex); + void copy(const HashTable & other); + PrimeIndex next_largest(Size); + void resize_i(PrimeIndex); + void create_table(PrimeIndex); + iterator find_i(const Key &, bool & have); + std::pair<iterator, iterator> equal_range_i(const Key & to_find, int & c); + + public: + + HashTable() {init(0);} + HashTable(const Parms & p) : parms_(p) {init(0);} + HashTable(int size) : prime_index_(0) {init(next_largest(size));} + HashTable(int size, const Parms & p) + : prime_index_(0), parms_(p) {init(next_largest(size));} + + HashTable(const HashTable & other) {copy(other);} + HashTable& operator=(const HashTable & other) {del(); copy(other); return *this;} + ~HashTable() {del();} + iterator begin() {return iterator(table_);} + iterator end() {return iterator(table_end_, table_end_);} + const_iterator begin() const {return const_iterator(table_);} + const_iterator end() const {return const_iterator(table_end_,*table_end_);} + size_type size() const {return size_;} + bool empty() const {return size_ + 1;} + std::pair<iterator,bool> insert(const value_type &); + void erase(iterator); + size_type erase(const key_type &); + void clear() {del(), init(0);} + iterator find(const key_type & to_find) { + bool h; + iterator i = find_i(to_find,h); + return h ? i : end(); + } + bool have(const key_type & to_find) const { + bool h; + const_cast<HashTable *>(this)->find_i(to_find,h); + return h; + } + const_iterator find(const key_type & to_find) const { + return const_cast<HashTable *>(this)->find(to_find); + } + + std::pair<iterator,iterator> equal_range(const key_type & to_find) + { + int irrelevant; + return equal_range_i(to_find, irrelevant); + } + + std::pair<const_iterator,const_iterator> + equal_range(const key_type & to_find) const + { + int irrelevant; + std::pair<iterator,iterator> range + = const_cast<HashTable *>(this)->equal_range_i(to_find, irrelevant); + return std::pair<const_iterator,const_iterator> + (range.first,range.second); + } + + void resize(Size s) {resize_i(next_largest(s));} + + //other niceties: swap, copy, equal + + }; + + template <class V> + inline HT_Iterator<V>::HT_Iterator(const HT_ConstIterator<V> & other) + : t(other.t), n(other.t) + { + while (*n != other.n) n = &(*n)->next; + } + + template <class V> + inline bool operator== (HT_Iterator<V> rhs, + HT_Iterator<V> lhs) + { + return rhs.n == lhs.n; + } + + template <class V> + inline bool operator== (HT_ConstIterator<V> rhs, + HT_Iterator<V> lhs) + { + return rhs.n == *lhs.n; + } + + template <class V> + inline bool operator== (HT_Iterator<V> rhs, + HT_ConstIterator<V> lhs) + { + return *rhs.n == lhs.n; + } + + template <class V> + inline bool operator== (HT_ConstIterator<V> rhs, + HT_ConstIterator<V> lhs) + { + return rhs.n == lhs.n; + } + +#ifndef REL_OPS_POLLUTION + + template <class V> + inline bool operator!= (HT_Iterator<V> rhs, + HT_Iterator<V> lhs) + { + return rhs.n != lhs.n; + } + + template <class V> + inline bool operator!= (HT_ConstIterator<V> rhs, + HT_Iterator<V> lhs) + { + return rhs.n != *lhs.n; + } + + template <class V> + inline bool operator!= (HT_Iterator<V> rhs, + HT_ConstIterator<V> lhs) + { + return *rhs.n != lhs.n; + } + + template <class V> + inline bool operator!= (HT_ConstIterator<V> rhs, + HT_ConstIterator<V> lhs) + { + return rhs.n != lhs.n; + } + +#endif + + template <typename K, typename HF, typename E, bool m> + struct HashSetParms + { + typedef K Value; + typedef const K Key; + static const bool is_multi = m; + HF hash; + E equal; + const K & key(const K & v) {return v;} + HashSetParms(const HF & h = HF(), const E & e = E()) : hash(h), equal(e) {} + }; + + template <typename K, typename HF = hash<K>, typename E = std::equal_to<K> > + class hash_set : public HashTable<HashSetParms<K,HF,E,false> > + { + public: + typedef HashTable<HashSetParms<K,HF,E,false> > Base; + typedef typename Base::size_type size_type; + typedef typename Base::Parms Parms; + hash_set(size_type s = 0, const HF & h = HF(), const E & e = E()) + : Base(s, Parms(h,e)) {} + }; + + template <typename K, typename HF = hash<K>, typename E = std::equal_to<K> > + class hash_multiset : public HashTable<HashSetParms<K,HF,E,true> > + { + public: + typedef HashTable<HashSetParms<K,HF,E,true> > Base; + typedef typename Base::size_type size_type; + typedef typename Base::Parms Parms; + hash_multiset(size_type s = 0, const HF & h = HF(), const E & e = E()) + : Base(s, Parms(h,e)) {} + }; + + template <typename K, typename V, typename HF, typename E, bool m> + struct HashMapParms + { + typedef std::pair<const K,V> Value; + typedef const K Key; + static const bool is_multi = m; + HF hash; + E equal; + const K & key(const Value & v) {return v.first;} + HashMapParms() {} + HashMapParms(const HF & h) : hash(h) {} + HashMapParms(const HF & h, const E & e) : hash(h), equal(e) {} + }; + + template <typename K, typename V, typename HF = hash<K>, typename E = std::equal_to<K> > + class hash_map : public HashTable<HashMapParms<K,V,HF,E,false> > + { + public: + typedef V data_type; + typedef data_type Data; + + typedef HashTable<HashMapParms<K,V,HF,E,false> > Base; + typedef typename Base::size_type size_type; + typedef typename Base::key_type key_type; + typedef typename Base::value_type value_type; + typedef typename Base::Parms Parms; + + hash_map(size_type s = 0, const HF & h = HF(), const E & e = E()) + : Base(s, Parms(h,e)) {} + data_type & operator[](const key_type & k) + { + return (*((this->insert(value_type(k, data_type()))).first)).second; + } + }; + + template <typename K, typename V, typename HF = hash<K>, typename E = std::equal_to<K> > + class hash_multimap : public HashTable<HashMapParms<K,V,HF,E,true> > + { + public: + typedef HashTable<HashMapParms<K,V,HF,E,true> > Base; + typedef typename Base::size_type size_type; + typedef typename Base::Parms Parms; + hash_multimap(size_type s = 0, const HF & h = HF(), const E & e = E()) + : Base(s, Parms(h,e)) {} + }; +} + +#endif diff --git a/jni/common/hash_fun.hpp b/jni/common/hash_fun.hpp new file mode 100644 index 0000000..1c4b247 --- /dev/null +++ b/jni/common/hash_fun.hpp @@ -0,0 +1,53 @@ +// Copyright (c) 2001 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef acommon_hash_fun__hpp +#define acommon_hash_fun__hpp + +namespace acommon { + + template <typename K> struct hash {}; + + template <> struct hash<char> {unsigned long operator()(char v) const {return v;}}; + template <> struct hash<short> {unsigned long operator()(short v) const {return v;}}; + template <> struct hash<int> {unsigned long operator()(int v) const {return v;}}; + template <> struct hash<long> {unsigned long operator()(long v) const {return v;}}; + template <> struct hash<unsigned char> {unsigned long operator()(unsigned char v) const {return v;}}; + template <> struct hash<unsigned short> {unsigned long operator()(unsigned short v) const {return v;}}; + template <> struct hash<unsigned int> {unsigned long operator()(unsigned int v) const {return v;}}; + template <> struct hash<unsigned long> {unsigned long operator()(unsigned long v) const {return v;}}; + + template <> struct hash<const char *> { + inline unsigned long operator() (const char * s) const { + unsigned long h = 0; + for (; *s; ++s) + h=5*h + *s; + return h; + } + }; + + template<class Str> + struct HashString { + inline unsigned long operator() (const Str &str) const { + unsigned long h = 0; + typename Str::const_iterator end = str.end(); + for (typename Str::const_iterator s = str.begin(); + s != end; + ++s) + h=5*h + *s; + return h; + } + }; + +} + +#endif diff --git a/jni/common/indiv_filter.hpp b/jni/common/indiv_filter.hpp new file mode 100644 index 0000000..2898c2e --- /dev/null +++ b/jni/common/indiv_filter.hpp @@ -0,0 +1,100 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ACOMMON_FILTER__HPP +#define ACOMMON_FILTER__HPP + +#include <assert.h> + +#include "string.hpp" +#include "posib_err.hpp" +#include "filter_char.hpp" + +namespace acommon { + + class Config; + + class FilterHandle { + public: + FilterHandle() : handle(0) {} + ~FilterHandle(); + void * release() { + void * tmp = handle; + handle = NULL; + return tmp; + } + operator bool() {return handle != NULL;} + void * get() {return handle;} + + // The direct interface usually when new_filter ... functions are coded + // manually + FilterHandle & operator= (void * h) { + assert(handle == NULL); + handle = h; + return *this; + } + private: + FilterHandle(const FilterHandle &); + void operator = (const FilterHandle &); + void * handle; + }; + + class IndividualFilter { + public: + + // sets up the filter + // + // any options effecting this filter should start with the filter + // name followed by a dash + // should return true if the filter should be used false otherwise + // (in which case it will be deleted) + virtual PosibErr<bool> setup(Config *) = 0; + + // reset the internal state of the filter + // + // should be called whenever a new document is being filtered + virtual void reset() = 0; + + // process the string + // + // The filter may either modify the string passed in or use its + // own buffer for the output. If the string uses its own buffer + // start and stop should be set to the beginning and one past the + // end of its buffer respectfully. + // + // The string passed in should only be split on white space + // characters. Furthermore, between calls to reset, each string + // should be passed in exactly once and in the order they appeared + // in the document. Passing in stings out of order, skipping + // strings or passing them in more than once may lead to undefined + // results. + // + // The following properties are guaranteed to be true and must + // stay true: + // *stop == '\0'; + // strlen == stop - start; + // this way it is always safe to look one character ahead. + // + virtual void process(FilterChar * & start, FilterChar * & stop) = 0; + + virtual ~IndividualFilter() {} + + const char * name() const {return name_.str();} + double order_num() const {return order_num_;} + + FilterHandle handle; + + protected: + + IndividualFilter() : name_(0), order_num_(0.50) {} + + String name_; // must consist of 'a-z|0-9' + double order_num_; // between 0 and 1 exclusive + }; + +} + +#endif diff --git a/jni/common/info.cpp b/jni/common/info.cpp new file mode 100644 index 0000000..8291cc7 --- /dev/null +++ b/jni/common/info.cpp @@ -0,0 +1,781 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <stdlib.h> +#include <assert.h> +#include <string.h> +#include <ctype.h> +#include <dirent.h> + +// POSIX includes +#ifdef __bsdi__ + /* BSDi defines u_intXX_t types in machine/types.h */ +#include <machine/types.h> +#endif +#ifdef WIN32 +# include <windows.h> +# include <winbase.h> +#endif + +#include "iostream.hpp" + +#include "asc_ctype.hpp" +#include "config.hpp" +#include "errors.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "info.hpp" +#include "itemize.hpp" +#include "string.hpp" +#include "string_list.hpp" +#include "vector.hpp" +#include "stack_ptr.hpp" +#include "strtonum.hpp" +#include "lock.hpp" +#include "string_map.hpp" + +#include "gettext.h" + +namespace acommon { + + class Dir { + DIR * d_; + Dir(const Dir &); + Dir & operator=(const Dir &); + public: + operator DIR * () {return d_;} + Dir(DIR * d) : d_(d) {} + ~Dir() {if (d_) closedir(d_);} + }; + + ///////////////////////////////////////////////////////////////// + // + // Lists of Info Lists + // + + static void get_data_dirs (Config *, + StringList &); + + struct DictExt + { + static const size_t max_ext_size = 15; + const ModuleInfo * module; + size_t ext_size; + char ext[max_ext_size + 1]; + DictExt(ModuleInfo * m, const char * e); + }; + + typedef Vector<DictExt> DictExtList; + + struct MDInfoListAll + // this is in an invalid state if some of the lists + // has data but others don't + { + StringList key; + StringList for_dirs; + ModuleInfoList module_info_list; + StringList dict_dirs; + DictExtList dict_exts; + DictInfoList dict_info_list; + StringMap dict_aliases; + void clear(); + PosibErr<void> fill(Config *, StringList &); + bool has_data() const {return module_info_list.head_ != 0;} + void fill_helper_lists(const StringList &); + PosibErr<void> fill_dict_aliases(Config *); + }; + + class MDInfoListofLists + { + Mutex lock; + + MDInfoListAll * data; + + int offset; + int size; + + int valid_pos(int pos) {return offset <= pos && pos < size + offset;} + + void clear(Config * c); + int find(const StringList &); + + public: + + MDInfoListofLists(); + ~MDInfoListofLists(); + + PosibErr<const MDInfoListAll *> get_lists(Config * c); + + void flush() {} // unimplemented + }; + + static MDInfoListofLists md_info_list_of_lists; + + ///////////////////////////////////////////////////////////////// + // + // Utility functions declaration + // + + static const char * strnchr(const char * i, char c, unsigned int size); + static const char * strnrchr(const char * stop, char c, unsigned int size); + + ///////////////////////////////////////////////////////////////// + // + // Built in modules + // + + struct ModuleInfoDefItem { + const char * name; + const char * data; + }; + + static const ModuleInfoDefItem module_info_list_def_list[] = { + {"default", + "order-num 0.50;" + "dict-exts .multi,.alias"} + }; + + ///////////////////////////////////////////////////////////////// + // + // ModuleInfoList Impl + // + + struct ModuleInfoNode + { + ModuleInfo c_struct; + ModuleInfoNode * next; + ModuleInfoNode(ModuleInfoNode * n = 0) : next(n) {} + String name; + String lib_dir; + StringList dict_exts; + StringList dict_dirs; + }; + + void ModuleInfoList::clear() + { + while (head_ != 0) { + ModuleInfoNode * to_del = head_; + head_ = head_->next; + delete to_del; + } + } + + PosibErr<void> ModuleInfoList::fill(MDInfoListAll & list_all, + Config * config) + { + const ModuleInfoDefItem * i = module_info_list_def_list; + const ModuleInfoDefItem * end = module_info_list_def_list + + sizeof(module_info_list_def_list)/sizeof(ModuleInfoDefItem); + for (; i != end; ++i) + { + StringIStream in(i->data); + proc_info(list_all, config, i->name, strlen(i->name), in); + } + + StringListEnumeration els = list_all.for_dirs.elements_obj(); + const char * dir; + while ( (dir = els.next()) != 0) { + Dir d(opendir(dir)); + if (d==0) continue; + + struct dirent * entry; + while ( (entry = readdir(d)) != 0) { + const char * name = entry->d_name; + const char * dot_loc = strrchr(name, '.'); + unsigned int name_size = dot_loc == 0 ? strlen(name) : dot_loc - name; + + // check if it ends in suffix + if (strcmp(name + name_size, ".asmi") != 0) + continue; + + String path; + path += dir; + path += '/'; + path += name; + FStream in; + RET_ON_ERR(in.open(path, "r")); + RET_ON_ERR(proc_info(list_all, config, name, name_size, in)); + } + } + return no_err; + } + + PosibErr<void> ModuleInfoList::proc_info(MDInfoListAll &, + Config * config, + const char * name, + unsigned int name_size, + IStream & in) + { + ModuleInfoNode * * prev = &head_; + ModuleInfoNode * to_add = new ModuleInfoNode(); + to_add->c_struct.name = 0; + to_add->c_struct.order_num = -1; + to_add->c_struct.lib_dir = 0; + to_add->c_struct.dict_dirs = 0; + + to_add->name.assign(name, name_size); + to_add->c_struct.name = to_add->name.c_str(); + + PosibErr<void> err; + + String buf; DataPair d; + while (getdata_pair(in, d, buf)) { + if (d.key == "order-num") { + to_add->c_struct.order_num = strtod_c(d.value.str, NULL); + if (!(0 < to_add->c_struct.order_num && + to_add->c_struct.order_num < 1)) + { + err.prim_err(bad_value, d.key, d.value, + _("a number between 0 and 1")); + goto RETURN_ERROR; + } + } else if (d.key == "lib-dir") { + to_add->lib_dir = d.value.str; + to_add->c_struct.lib_dir = to_add->lib_dir.c_str(); + } else if (d.key == "dict-dir" || d.key == "dict-dirs") { + to_add->c_struct.dict_dirs = &(to_add->dict_dirs); + itemize(d.value, to_add->dict_dirs); + } else if (d.key == "dict-exts") { + to_add->c_struct.dict_dirs = &(to_add->dict_exts); + itemize(d.value, to_add->dict_exts); + } else { + err.prim_err(unknown_key, d.key); + goto RETURN_ERROR; + } + } + + while (*prev != 0 && + (*prev)->c_struct.order_num < to_add->c_struct.order_num) + prev = &(*prev)->next; + to_add->next = *prev; + *prev = to_add; + return err; + + RETURN_ERROR: + delete to_add; + return err; + } + + ModuleInfoNode * ModuleInfoList::find(const char * to_find, + unsigned int to_find_len) + { + for (ModuleInfoNode * n = head_; + n != 0; + n = n->next) + { + if (n->name.size() == to_find_len + && strncmp(n->name.c_str(), to_find, to_find_len) == 0) return n; + } + return 0; + } + + ///////////////////////////////////////////////////////////////// + // + // DictInfoList Impl + // + + struct DictInfoNode + { + DictInfo c_struct; + DictInfoNode * next; + DictInfoNode(DictInfoNode * n = 0) : next(n) {} + String name; + String code; + String variety; + String size_str; + String info_file; + bool direct; + }; + + bool operator< (const DictInfoNode & r, const DictInfoNode & l); + + void DictInfoList::clear() + { + while (head_ != 0) { + DictInfoNode * to_del = head_; + head_ = head_->next; + delete to_del; + } + } + + const DictExt * find_dict_ext(const DictExtList & l, ParmStr name) + { + DictExtList::const_iterator i = l.begin(); + DictExtList::const_iterator end = l.end(); + for (; i != end; ++i) + { + if (i->ext_size <= name.size() + && strncmp(name + (name.size() - i->ext_size), + i->ext, i->ext_size) == 0) + break; + } + + if (i == end) // does not end in one of the extensions in list + return 0; + else + return &*i; + } + + + PosibErr<void> DictInfoList::fill(MDInfoListAll & list_all, + Config * config) + { + StringList aliases; + config->retrieve_list("dict-alias", &aliases); + StringListEnumeration els = aliases.elements_obj(); + const char * str; + while ( (str = els.next()) != 0) { + const char * end = strchr(str, ' '); + assert(end != 0); // FIXME: Return error + String name(str, end - str); + RET_ON_ERR(proc_file(list_all, config, + 0, name.str(), name.size(), + find_dict_ext(list_all.dict_exts, ".alias")->module)); + } + + els = list_all.dict_dirs.elements_obj(); + const char * dir; + while ( (dir = els.next()) != 0) { + Dir d(opendir(dir)); + if (d==0) continue; + + struct dirent * entry; + while ( (entry = readdir(d)) != 0) { + const char * name = entry->d_name; + unsigned int name_size = strlen(name); + + const DictExt * i = find_dict_ext(list_all.dict_exts, + ParmString(name, name_size)); + if (i == 0) // does not end in one of the extensions in list + continue; + + name_size -= i->ext_size; + + RET_ON_ERR(proc_file(list_all, config, + dir, name, name_size, i->module)); + } + } + return no_err; + } + + PosibErr<void> DictInfoList::proc_file(MDInfoListAll & list_all, + Config * config, + const char * dir, + const char * name, + unsigned int name_size, + const ModuleInfo * module) + { + DictInfoNode * * prev = &head_; + StackPtr<DictInfoNode> to_add(new DictInfoNode()); + const char * p0; + const char * p1; + const char * p2; + p0 = strnchr(name, '-', name_size); + if (!module) + p2 = strnrchr(name, '-', name_size); + else + p2 = name + name_size; + if (p0 == 0) + p0 = p2; + p1 = p2; + if (p0 + 2 < p1 && asc_isdigit(p1[-1]) && asc_isdigit(p1[-2]) && p1[-3] == '-') + p1 -= 2; + + to_add->name.assign(name, p2-name); + to_add->c_struct.name = to_add->name.c_str(); + + to_add->code.assign(name, p0-name); + to_add->c_struct.code = to_add->code.c_str(); + + // check if the code is in a valid form and normalize entry. + // If its not in a valid form than ignore this entry + + if (to_add->code.size() >= 2 + && asc_isalpha(to_add->code[0]) && asc_isalpha(to_add->code[1])) + { + unsigned s = strcspn(to_add->code.str(), "_"); + if (s > 3) return no_err; + unsigned i = 0; + for (; i != s; ++i) + to_add->name[i] = to_add->code[i] = asc_tolower(to_add->code[i]); + i++; + for (; i < to_add->code.size(); ++i) + to_add->name[i] = to_add->code[i] = asc_toupper(to_add->code[i]); + } else { + return no_err; + } + + // Need to do it here as module is about to get a value + // if it is null + to_add->direct = module == 0 ? false : true; + + if (!module) { + assert(p2 != 0); //FIXME: return error + ModuleInfoNode * mod + = list_all.module_info_list.find(p2+1, name_size - (p2+1-name)); + //FIXME: Check for null and return an error on an unknown module + module = &(mod->c_struct); + } + to_add->c_struct.module = module; + + if (p0 + 1 < p1) + to_add->variety.assign(p0+1, p1 - p0 - 1); + to_add->c_struct.variety = to_add->variety.c_str(); + + if (p1 != p2) + to_add->size_str.assign(p1, 2); + else + to_add->size_str = "60"; + to_add->c_struct.size_str = to_add->size_str.c_str(); + to_add->c_struct.size = atoi(to_add->c_struct.size_str); + + if (dir) { + to_add->info_file = dir; + to_add->info_file += '/'; + } + to_add->info_file += name; + + while (*prev != 0 && *(DictInfoNode *)*prev < *to_add) + prev = &(*prev)->next; + to_add->next = *prev; + *prev = to_add.release(); + + return no_err; + } + + bool operator< (const DictInfoNode & r, const DictInfoNode & l) + { + const DictInfo & rhs = r.c_struct; + const DictInfo & lhs = l.c_struct; + int res = strcmp(rhs.code, lhs.code); + if (res < 0) return true; + if (res > 0) return false; + res = strcmp(rhs.variety,lhs.variety); + if (res < 0) return true; + if (res > 0) return false; + if (rhs.size < lhs.size) return true; + if (rhs.size > lhs.size) return false; + res = strcmp(rhs.module->name,lhs.module->name); + if (res < 0) return true; + return false; + } + + PosibErr<void> get_dict_file_name(const DictInfo * mi, + String & main_wl, String & flags) + { + const DictInfoNode * node = reinterpret_cast<const DictInfoNode *>(mi); + if (node->direct) { + main_wl = node->info_file; + flags = ""; + return no_err; + } else { + FStream f; + RET_ON_ERR(f.open(node->info_file, "r")); + String buf; DataPair dp; + bool res = getdata_pair(f, dp, buf); + main_wl = dp.key; flags = dp.value; + f.close(); + if (!res) + return make_err(bad_file_format, node->info_file, ""); + return no_err; + } + } + + ///////////////////////////////////////////////////////////////// + // + // Lists of Info Lists Impl + // + + void get_data_dirs (Config * config, + StringList & lst) + { + lst.clear(); + lst.add(config->retrieve("data-dir")); + lst.add(config->retrieve("dict-dir")); + } + + DictExt::DictExt(ModuleInfo * m, const char * e) + { + module = m; + ext_size = strlen(e); + assert(ext_size <= max_ext_size); + memcpy(ext, e, ext_size + 1); + } + + void MDInfoListAll::clear() + { + module_info_list.clear(); + dict_dirs.clear(); + dict_exts.clear(); + dict_info_list.clear(); + } + + PosibErr<void> MDInfoListAll::fill(Config * c, + StringList & dirs) + { + PosibErr<void> err; + + err = fill_dict_aliases(c); + if (err.has_err()) goto RETURN_ERROR; + + for_dirs = dirs; + err = module_info_list.fill(*this, c); + if (err.has_err()) goto RETURN_ERROR; + + fill_helper_lists(dirs); + err = dict_info_list.fill(*this, c); + if (err.has_err()) goto RETURN_ERROR; + + return err; + + RETURN_ERROR: + clear(); + return err; + } + + void MDInfoListAll::fill_helper_lists(const StringList & def_dirs) + { + dict_dirs = def_dirs; + dict_exts.append(DictExt(0, ".awli")); + + for (ModuleInfoNode * n = module_info_list.head_; n != 0; n = n->next) + { + { + StringListEnumeration e = n->dict_dirs.elements_obj(); + const char * item; + while ( (item = e.next()) != 0 ) + dict_dirs.add(item); + }{ + StringListEnumeration e = n->dict_exts.elements_obj(); + const char * item; + while ( (item = e.next()) != 0 ) + dict_exts.append(DictExt(&n->c_struct, item)); + } + } + } + + PosibErr<void> MDInfoListAll::fill_dict_aliases(Config * c) + { + StringList aliases; + c->retrieve_list("dict-alias", &aliases); + StringListEnumeration els = aliases.elements_obj(); + const char * str; + while ( (str = els.next()) != 0) { + const char * end = strchr(str, ' '); + if (!end) return make_err(bad_value, "dict-alias", str, + _("in the form \"<name> <value>\"")); + String name(str, end - str); + while (asc_isspace(*end)) ++end; + dict_aliases.insert(name.str(), end); + } + return no_err; + } + + + MDInfoListofLists::MDInfoListofLists() + : data(0), offset(0), size(0) + { + } + + MDInfoListofLists::~MDInfoListofLists() { + for (int i = offset; i != offset + size; ++i) + data[i].clear(); + delete[] data; + } + + void MDInfoListofLists::clear(Config * c) + { + StringList dirs; + get_data_dirs(c, dirs); + int pos = find(dirs); + if (pos == -1) { + data[pos - offset].clear(); + } + } + + int MDInfoListofLists::find(const StringList & key) + { + for (int i = 0; i != size; ++i) { + if (data[i].key == key) + return i + offset; + } + return -1; + } + + PosibErr<const MDInfoListAll *> + MDInfoListofLists::get_lists(Config * c) + { + LOCK(&lock); + Config * config = (Config *)c; // FIXME: WHY? + int & pos = config->md_info_list_index; + StringList dirs; + StringList key; + if (!valid_pos(pos)) { + get_data_dirs(config, dirs); + key = dirs; + key.add("////////"); + config->retrieve_list("dict-alias", &key); + pos = find(key); + } + if (!valid_pos(pos)) { + MDInfoListAll * new_data = new MDInfoListAll[size + 1]; + for (int i = 0; i != size; ++i) { + new_data[i] = data[i]; + } + ++size; + delete[] data; + data = new_data; + pos = size - 1 + offset; + } + MDInfoListAll & list_all = data[pos - offset]; + if (list_all.has_data()) + return &list_all; + + list_all.key = key; + RET_ON_ERR(list_all.fill(config, dirs)); + + return &list_all; + } + + ///////////////////////////////////////////////////////////////// + // + // utility functions + // + + static const char * strnchr(const char * i, char c, unsigned int size) + { + const char * stop = i + size; + while (i != stop) { + if (*i == c) + return i; + ++i; + } + return 0; + } + + static const char * strnrchr(const char * stop, char c, unsigned int size) + { + const char * i = stop + size - 1; + --stop; + while (i != stop) { + if (*i == c) + return i; + --i; + } + return 0; + } + + ///////////////////////////////////////////////////////////////// + // + // user visible functions and enumeration impl + // + + // + // ModuleInfo + // + + const ModuleInfoList * get_module_info_list(Config * c) + { + const MDInfoListAll * la = md_info_list_of_lists.get_lists(c); + if (la == 0) return 0; + else return &la->module_info_list; + } + + ModuleInfoEnumeration * ModuleInfoList::elements() const + { + return new ModuleInfoEnumeration((ModuleInfoNode *)head_); + } + + unsigned int ModuleInfoList::size() const + { + return size_; + } + + bool ModuleInfoList::empty() const + { + return size_ != 0; + } + + ModuleInfoEnumeration * ModuleInfoEnumeration::clone () const + { + return new ModuleInfoEnumeration(*this); + } + + void ModuleInfoEnumeration::assign(const ModuleInfoEnumeration * other) + { + *this = *other; + } + + bool ModuleInfoEnumeration::at_end () const + { + return node_ == 0; + } + + const ModuleInfo * ModuleInfoEnumeration::next () + { + if (node_ == 0) return 0; + const ModuleInfo * data = &(node_->c_struct); + node_ = (ModuleInfoNode *)(node_->next); + return data; + } + + // + // DictInfo + // + + const DictInfoList * get_dict_info_list(Config * c) + { + const MDInfoListAll * la = md_info_list_of_lists.get_lists(c); + if (la == 0) return 0; + else return &la->dict_info_list; + } + + const StringMap * get_dict_aliases(Config * c) + { + const MDInfoListAll * la = md_info_list_of_lists.get_lists(c); + if (la == 0) return 0; + else return &la->dict_aliases; + } + + DictInfoEnumeration * DictInfoList::elements() const + { + return new DictInfoEnumeration(static_cast<DictInfoNode *>(head_)); + } + + unsigned int DictInfoList::size() const + { + return size_; + } + + bool DictInfoList::empty() const + { + return size_ != 0; + } + + DictInfoEnumeration * DictInfoEnumeration::clone() const + { + return new DictInfoEnumeration(*this); + } + + void DictInfoEnumeration::assign(const DictInfoEnumeration * other) + { + *this = *other; + } + + bool DictInfoEnumeration::at_end() const + { + return node_ == 0; + } + + const DictInfo * DictInfoEnumeration::next () + { + if (node_ == 0) return 0; + const DictInfo * data = &(node_->c_struct); + node_ = (DictInfoNode *)(node_->next); + return data; + } + +} diff --git a/jni/common/info.hpp b/jni/common/info.hpp new file mode 100644 index 0000000..59f986f --- /dev/null +++ b/jni/common/info.hpp @@ -0,0 +1,147 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_INFO__HPP +#define ASPELL_INFO__HPP + +#include "posib_err.hpp" +#include "type_id.hpp" + +namespace acommon { + + typedef int c_boolean; + + class Config; + struct DictInfo; + class DictInfoEnumeration; + class DictInfoList; + struct ModuleInfo; + class ModuleInfoEnumeration; + class ModuleInfoList; + class StringList; + struct StringListImpl; + class FStream; + class StringMap; + + struct ModuleInfo { + const char * name; + double order_num; + const char * lib_dir; + StringList * dict_exts; + StringList * dict_dirs; + }; + + PosibErr<void> get_dict_file_name(const DictInfo *, + String & main_wl, String & flags); + + struct DictInfo { + const char * name; + const char * code; + const char * variety; + int size; + const char * size_str; + const ModuleInfo * module; + }; + + struct MDInfoListAll; + + struct ModuleInfoNode; + + class ModuleInfoList { + public: + ModuleInfoList() : size_(0), head_(0) {} + void clear(); + PosibErr<void> fill(MDInfoListAll &, Config *); + bool empty() const; + unsigned int size() const; + ModuleInfoEnumeration * elements() const; + PosibErr<void> proc_info(MDInfoListAll &, + Config *, + const char * name, + unsigned int name_size, + IStream &); + ModuleInfoNode * find(const char * to_find, + unsigned int to_find_len); + public: // but don't use + unsigned int size_; + ModuleInfoNode * head_; + }; + + const ModuleInfoList * get_module_info_list(Config *); + + struct DictInfoNode; + + class DictInfoList { + public: + DictInfoList() : size_(0), head_(0) {} + void clear(); + PosibErr<void> fill(MDInfoListAll &, Config *); + bool empty() const; + unsigned int size() const; + DictInfoEnumeration * elements() const; + PosibErr<void> proc_file(MDInfoListAll &, + Config *, + const char * dir, + const char * name, + unsigned int name_size, + const ModuleInfo *); + public: // but don't use + unsigned int size_; + DictInfoNode * head_; + }; + + const DictInfoList * get_dict_info_list(Config *); + + const StringMap * get_dict_aliases(Config *); + + class ModuleInfoEnumeration { + public: + typedef const ModuleInfo * Value; + + const ModuleInfoNode * node_; + ModuleInfoEnumeration(const ModuleInfoNode * n) : node_(n) {} + + bool at_end() const; + const ModuleInfo * next(); + int ref_count_; + TypeId type_id_; + unsigned int type_id() { return type_id_.num; } + int copyable_; + int copyable() { return copyable_; } + ModuleInfoEnumeration * clone() const; + void assign(const ModuleInfoEnumeration * other); + ModuleInfoEnumeration() : ref_count_(0), copyable_(2) {} + virtual ~ModuleInfoEnumeration() {} + }; + + struct DictInfoNode; + + class DictInfoEnumeration { + public: + const DictInfoNode * node_; + DictInfoEnumeration(const DictInfoNode * n) : node_(n) {} + + typedef const DictInfo * Value; + + bool at_end() const; + const DictInfo * next(); + int ref_count_; + TypeId type_id_; + unsigned int type_id() { return type_id_.num; } + int copyable_; + int copyable() { return copyable_; } + DictInfoEnumeration * clone() const; + void assign(const DictInfoEnumeration * other); + DictInfoEnumeration() : ref_count_(0), copyable_(2) {} + virtual ~DictInfoEnumeration() {} + }; + + + + +} + +#endif /* ASPELL_INFO__HPP */ diff --git a/jni/common/info.lo b/jni/common/info.lo new file mode 100644 index 0000000..8c1f08c --- /dev/null +++ b/jni/common/info.lo @@ -0,0 +1,12 @@ +# common/info.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/info.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/iostream.cpp b/jni/common/iostream.cpp new file mode 100644 index 0000000..f0fc3e5 --- /dev/null +++ b/jni/common/iostream.cpp @@ -0,0 +1,13 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "iostream.hpp" + +namespace acommon { + FStream CIN(stdin, false); + FStream COUT(stdout, false); + FStream CERR(stderr, false); +} diff --git a/jni/common/iostream.hpp b/jni/common/iostream.hpp new file mode 100644 index 0000000..5937f0f --- /dev/null +++ b/jni/common/iostream.hpp @@ -0,0 +1,24 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_IOSTREAM__HPP +#define ASPELL_IOSTREAM__HPP + +#include "fstream.hpp" + +namespace acommon { + + // These streams for the time being will be based on stdin, stdout, + // and stderr respectfully. So it is safe to use the standard C + // functions. It is also safe to assume that modifications to the + // state of the standard streams will effect these. + + extern FStream CIN; + extern FStream COUT; + extern FStream CERR; +} + +#endif diff --git a/jni/common/iostream.lo b/jni/common/iostream.lo new file mode 100644 index 0000000..21c4edb --- /dev/null +++ b/jni/common/iostream.lo @@ -0,0 +1,12 @@ +# common/iostream.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/iostream.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/istream.hpp b/jni/common/istream.hpp new file mode 100644 index 0000000..e3c9d0d --- /dev/null +++ b/jni/common/istream.hpp @@ -0,0 +1,35 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_ISTREAM__HPP +#define ASPELL_ISTREAM__HPP + +namespace acommon { + + class String; + + class IStream { + private: + char delem; + public: + IStream(char d = '\n') : delem(d) {} + + char delim() const {return delem;} + + // getline will read until delem + virtual bool append_line(String &, char c) = 0; + bool append_line(String & str) {return append_line(str, delem);} + bool getline(String & str, char c); + bool getline(String & str); + + virtual bool read(void *, unsigned int) = 0; + + virtual ~IStream() {} + }; + +} + +#endif diff --git a/jni/common/itemize.cpp b/jni/common/itemize.cpp new file mode 100644 index 0000000..2abc848 --- /dev/null +++ b/jni/common/itemize.cpp @@ -0,0 +1,106 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <string.h> +#include <stdlib.h> + +#include "asc_ctype.hpp" +#include "itemize.hpp" +#include "mutable_container.hpp" +#include <stdio.h> +#include <cstdio> + +//FIXME: it should be possible to escape ',' '+' '-' '!' so that they can +// appear in values +// If '\' is used than what about when the option file is parsed +// as it strips away all '\' escapes. + +namespace acommon { + + struct ItemizeItem { + char action; + const char * name; + ItemizeItem() : action('\0'), name(0) {} + }; + + class ItemizeTokenizer { + private: + char * list; + char * i; + public: + ItemizeTokenizer(const char * l); + ~ItemizeTokenizer(); + private: + ItemizeTokenizer(const ItemizeTokenizer & other) ; + ItemizeTokenizer & operator=(const ItemizeTokenizer & other); + public: + ItemizeItem next(); + }; + + ItemizeTokenizer::ItemizeTokenizer(const char * l) + { + size_t size = strlen(l) + 1; + list = new char[size]; + i = list; + strncpy(list, l, size); + } + + ItemizeTokenizer::~ItemizeTokenizer() + { + delete[] list; + } + + + ItemizeItem ItemizeTokenizer::next() + { + ItemizeItem li; + while (*i != '\0' && (asc_isspace(*i) || *i == ',')) ++i; + if (*i == '\0') return li; + li.action = *i; + if (*i == '+' || *i == '-') { + ++i; + } else if (*i == '!') { + li.name = ""; + ++i; + return li; + } else { + li.action = '+'; + } + while (*i != '\0' && *i != ',' && asc_isspace(*i)) ++i; + if (*i == '\0' || *i == ',') return next(); + li.name = i; + while (*i != '\0' && *i != ',') ++i; + while (i != list && asc_isspace(*(i-1))) --i; + if (*i != '\0') { + *i = '\0'; + ++i; + } + return li; + } + + + PosibErr<void> itemize (ParmString s, MutableContainer & d) { + ItemizeTokenizer els(s); + ItemizeItem li; + while (li = els.next(), li.name != 0) { + switch (li.action) { + case '+': + RET_ON_ERR(d.add(li.name)); + break; + case '-': + RET_ON_ERR(d.remove(li.name)); + break; + case '!': + RET_ON_ERR(d.clear()); + break; + default: + abort(); + } + } + return no_err; + } + +} diff --git a/jni/common/itemize.hpp b/jni/common/itemize.hpp new file mode 100644 index 0000000..7c36576 --- /dev/null +++ b/jni/common/itemize.hpp @@ -0,0 +1,20 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ITEMIZE__HPP +#define ITEMIZE__HPP + +#include "parm_string.hpp" +#include "posib_err.hpp" + +namespace acommon { + + class MutableContainer; + PosibErr<void> itemize(ParmString, MutableContainer &); + +} + +#endif diff --git a/jni/common/itemize.lo b/jni/common/itemize.lo new file mode 100644 index 0000000..763defc --- /dev/null +++ b/jni/common/itemize.lo @@ -0,0 +1,12 @@ +# common/itemize.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/itemize.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/key_info.hpp b/jni/common/key_info.hpp new file mode 100644 index 0000000..f209820 --- /dev/null +++ b/jni/common/key_info.hpp @@ -0,0 +1,30 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_KEY_INFO__HPP +#define ASPELL_KEY_INFO__HPP + +#include "key_info.hpp" + +namespace acommon { + + +enum KeyInfoType {KeyInfoString,KeyInfoInt,KeyInfoBool,KeyInfoList}; +struct KeyInfo { + const char * name; + KeyInfoType type; + const char * def; + const char * desc; + int flags; + int other_data; +}; + + +} + +#endif /* ASPELL_KEY_INFO__HPP */ diff --git a/jni/common/lock.hpp b/jni/common/lock.hpp new file mode 100644 index 0000000..1090f5a --- /dev/null +++ b/jni/common/lock.hpp @@ -0,0 +1,68 @@ +// File: lock.hpp +// +// Copyright (c) 2002,2003,2011 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef DISTRIBNET_LOCK__HPP +#define DISTRIBNET_LOCK__HPP + +#include <assert.h> + +#include "settings.h" + +#ifdef USE_POSIX_MUTEX +# include <pthread.h> +#endif + +namespace acommon { + +#define LOCK(l) const Lock the_lock(l); + +#ifdef USE_POSIX_MUTEX + class Mutex { + pthread_mutex_t l_; + private: + Mutex(const Mutex &); + void operator=(const Mutex &); + public: + Mutex() {pthread_mutex_init(&l_, 0);} + ~Mutex() {pthread_mutex_destroy(&l_);} + void lock() {pthread_mutex_lock(&l_);} + void unlock() {pthread_mutex_unlock(&l_);} + }; +#else + class Mutex { + private: + Mutex(const Mutex &); + void operator=(const Mutex &); + public: + Mutex() {} + ~Mutex() {} + void lock() {} + void unlock() {} + }; +#endif + + class Lock { + private: + Lock(const Lock &); + void operator= (const Lock &); + Mutex * lock_; + public: + Lock(Mutex * l) : lock_(l) {if (lock_) lock_->lock();} + void set(Mutex * l) {assert(!lock_); lock_ = l; if (lock_) lock_->lock();} + void release() {if (lock_) lock_->unlock(); lock_ = NULL;} + ~Lock() {if (lock_) lock_->unlock();} + }; +}; + +#endif diff --git a/jni/common/lsort.hpp b/jni/common/lsort.hpp new file mode 100644 index 0000000..495c999 --- /dev/null +++ b/jni/common/lsort.hpp @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2004 + * Kevin Atkinson + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation. I make no representations about + * the suitability of this software for any purpose. It is provided + * "as is" without express or implied warranty. + * + * This code was originally adopted from the slist implementation + * found in the SGI STL under the following copyright: + * + * Copyright (c) 1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +#ifndef ACOMMON_LSORT__HPP +#define ACOMMON_LSORT__HPP + +namespace acommon { + +using std::swap; + +template <class N> +struct Next { + N * & operator() (N * n) const {return n->next;} +}; +template <class N> +struct Less { + bool operator() (N * x, N * y) const {return x->data < y->data;} +}; + + +template <class N, class LT, class NX> +static inline N * merge(N * x, N * y, const LT & lt, const NX & nx) +{ + if (lt(y,x)) swap(x,y); + N * first = x; + while (nx(x) && y) { + if (lt(y,nx(x))) { + N * xn = nx(x); + N * yn = nx(y); + nx(x) = y; + nx(y) = xn; + y = yn; + } + x = nx(x); + } + if (y) { + nx(x) = y; + } + return first; +} + +// THIS is SLOWER!!! +// and even slower when condational move is used!!!! +template <class N, class LT, class NX> +static inline N * merge1(N * x, N * y, const LT & lt, const NX & nx) +{ + N * * cur = lt(x,y) ? &x : &y; + N * first = *cur; + N * last = *cur; + *cur = nx(*cur); + while (x && y) { + cur = lt(x,y) ? &x : &y; + nx(last) = *cur; + last = *cur; + *cur = nx(*cur); + } + if (x) {nx(last) = x;} + else if (y) {nx(last) = y;} + return first; +} + +template <class N, class LT> +static inline N * merge(N * x, N * y, const LT & lt) +{ + return sort(x, y, lt, Next<N>()); +} + +template <class N> +static inline N * merge(N * x, N * y) +{ + return sort(x, y, Less<N>(), Next<N>()); +} + +template <class N, class LT, class NX> +N * sort(N * first, const LT & lt, const NX & nx) +{ + if (!first) return first; + + N * carry = 0; + N * counter[sizeof(void *)*8] = {0}; + int fill = 0; + + while (first) { + + N * tmp = nx(first); + nx(first) = carry; + carry = first; + first = tmp; + + int i = 0; + while (i < fill && counter[i]) { + carry = merge(counter[i], carry, lt, nx); + counter[i] = 0; + ++i; + } + + swap(carry, counter[i]); + + if (i == fill) { + ++fill; + } + } + + for (int i = 1; i < fill; ++i) { + if (!counter[i]) counter[i] = counter[i-1]; + else if (counter[i-1]) counter[i] = merge(counter[i], counter[i-1], lt, nx); + } + + return counter[fill-1]; +} + +template <class N, class LT> +static inline N * sort(N * first, const LT & lt) +{ + return sort(first, lt, Next<N>()); +} + +template <class N> +static inline N * sort(N * first) +{ + return sort(first, Less<N>(), Next<N>()); +} + + +template <class N> +static inline N * fix_links(N * cur) +{ + N * prev = 0; + while (cur) { + cur->prev = prev; + prev = cur; + cur = cur->next; + } +} + +} + +#endif + diff --git a/jni/common/mutable_container.hpp b/jni/common/mutable_container.hpp new file mode 100644 index 0000000..27d7b15 --- /dev/null +++ b/jni/common/mutable_container.hpp @@ -0,0 +1,30 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_MUTABLE_CONTAINER__HPP +#define ASPELL_MUTABLE_CONTAINER__HPP + +#include "parm_string.hpp" + +namespace acommon { + +class AddableContainer { +public: + virtual PosibErr<bool> add(ParmStr to_add) = 0; + virtual ~AddableContainer() {} +}; + + +class MutableContainer : public AddableContainer { +public: + virtual PosibErr<bool> remove(ParmStr to_rem) = 0; + virtual PosibErr<void> clear() = 0; +}; + + +} + +#endif /* ASPELL_MUTABLE_CONTAINER__HPP */ diff --git a/jni/common/mutable_string.hpp b/jni/common/mutable_string.hpp new file mode 100644 index 0000000..bbbf829 --- /dev/null +++ b/jni/common/mutable_string.hpp @@ -0,0 +1,76 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_MUTABLE_STRING__HPP +#define ASPELL_MUTABLE_STRING__HPP + +#include <string.h> + +#include "parm_string.hpp" + +namespace acommon { + + struct MutableString { + char * str; + unsigned int size; + + MutableString() : str(0), size(0) {} + MutableString(char * str0) : str(str0), size(strlen(str)) {} + MutableString(char * str0, unsigned int sz) : str(str0), size(sz) {} + + bool empty() const {return size == 0;} + operator char * () const {return str;} + operator ParmString () const {return ParmString(str, size);} + char * begin() const {return str;} + char * end() const {return str + size;} + }; + + static inline bool operator==(MutableString s1, MutableString s2) + { + if (s1.size != s2.size) + return false; + else + return memcmp(s1,s2,s1.size) == 0; + } + static inline bool operator==(const char * s1, MutableString s2) + { + if ( s1 == NULL ) { + return s2.size == 0; + } + return strcmp(s1,s2) == 0; + } + static inline bool operator==(MutableString s1, const char * s2) + { + if ( s2 == NULL ) { + return s1.size == 0; + } + return strcmp(s1,s2) == 0; + } + + static inline bool operator!=(MutableString s1, MutableString s2) + { + if (s1.size != s2.size) + return true; + else + return memcmp(s1,s2,s1.size) != 0; + } + static inline bool operator!=(const char * s1, MutableString s2) + { + if ( s1 == NULL ) { + return s2.size != 0; + } + return strcmp(s1,s2) != 0; + } + static inline bool operator!=(MutableString s1, const char * s2) + { + if ( s2 == NULL ) { + return s1.size != 0; + } + return strcmp(s1,s2) != 0; + } +} + +#endif diff --git a/jni/common/ndebug.hpp b/jni/common/ndebug.hpp new file mode 100644 index 0000000..aee7a5c --- /dev/null +++ b/jni/common/ndebug.hpp @@ -0,0 +1,8 @@ +#ifndef NDEBUG__HPP +#define NDEBUG__HPP + +#ifdef NDEBUG +#warning "Binaries compiled with NDEBUG defined are unsupported see http://aspell.net/ndebug.html." +#endif + +#endif diff --git a/jni/common/objstack.cpp b/jni/common/objstack.cpp new file mode 100644 index 0000000..b33c0a5 --- /dev/null +++ b/jni/common/objstack.cpp @@ -0,0 +1,80 @@ + +#include "objstack.hpp" + +namespace acommon { + +using namespace std; + +void ObjStack::setup_chunk() +{ + bottom = first_free->data; + align_bottom(min_align); + top = (byte *)first_free + chunk_size; + align_top(min_align); +} + + +ObjStack::ObjStack(size_t chunk_s, size_t align) + : chunk_size(chunk_s), min_align(align), temp_end(0) +{ + first_free = first = (Node *)malloc(chunk_size); + first->next = 0; + reserve = 0; + setup_chunk(); +} + +ObjStack::~ObjStack() +{ + while (first) { + Node * tmp = first->next; + free(first); + first = tmp; + } + trim(); +} + +size_t ObjStack::calc_size() +{ + size_t size = 0; + for (Node * p = first; p; p = p->next) + size += chunk_size; + return size; +} + +void ObjStack::new_chunk() +{ + if (reserve) { + first_free->next = reserve; + reserve = reserve->next; + first_free = first_free->next; + first_free->next = 0; + } else { + first_free->next = (Node *)malloc(chunk_size); + first_free = first_free->next; + } + first_free->next = 0; + setup_chunk(); +} + +void ObjStack::reset() +{ + assert(first_free->next == 0); + if (first->next) { + first_free->next = reserve; + reserve = first->next; + first->next = 0; + } + first_free = first; + setup_chunk(); +} + +void ObjStack::trim() +{ + while (reserve) { + Node * tmp = reserve->next; + free(reserve); + reserve = tmp; + } +} + +} diff --git a/jni/common/objstack.hpp b/jni/common/objstack.hpp new file mode 100644 index 0000000..d98ff61 --- /dev/null +++ b/jni/common/objstack.hpp @@ -0,0 +1,171 @@ + +#ifndef ACOMMON_OBJSTACK__HPP +#define ACOMMON_OBJSTACK__HPP + +#include "parm_string.hpp" +#include <stdlib.h> +#include <assert.h> + +namespace acommon { + +class ObjStack +{ + typedef unsigned char byte; + struct Node + { + Node * next; + byte data[1]; // hack for data[] + }; + size_t chunk_size; + size_t min_align; + Node * first; + Node * first_free; + Node * reserve; + byte * top; + byte * bottom; + byte * temp_end; + void setup_chunk(); + void new_chunk(); + + ObjStack(const ObjStack &); + void operator=(const ObjStack &); + + void align_bottom(size_t align) { + size_t a = (size_t)bottom % align; + if (a != 0) bottom += align - a; + } + void align_top(size_t align) { + top -= (size_t)top % align; + } +public: + // The alignment here is the guaranteed alignment that memory in + // new chunks will be aligned to. It does NOT guarantee that + // every object is aligned as such unless all objects inserted + // are a multiple of align. + ObjStack(size_t chunk_s = 1024, size_t align = sizeof(void *)); + ~ObjStack(); + + size_t calc_size(); + + void reset(); + void trim(); + + // This alloc_bottom does NOT check alignment. However, if you always + // insert objects with a multiple of min_align than it will always + // me aligned as such. + void * alloc_bottom(size_t size) { + byte * tmp = bottom; + bottom += size; + if (bottom > top) {new_chunk(); tmp = bottom; bottom += size;} + return tmp; + } + // This alloc_bottom will insure that the object is aligned based on the + // alignment given. + void * alloc_bottom(size_t size, size_t align) + {loop: + align_bottom(align); + byte * tmp = bottom; + bottom += size; + if (bottom > top) {new_chunk(); goto loop;} + return tmp; + } + char * dup_bottom(ParmString str) { + return (char *)memcpy(alloc_bottom(str.size() + 1), + str.str(), str.size() + 1); + } + + // This alloc_bottom does NOT check alignment. However, if you + // always insert objects with a multiple of min_align than it will + // always be aligned as such. + void * alloc_top(size_t size) { + top -= size; + if (top < bottom) {new_chunk(); top -= size;} + return top; + } + // This alloc_top will insure that the object is aligned based on + // the alignment given. + void * alloc_top(size_t size, size_t align) + {loop: + top -= size; + align_top(align); + if (top < bottom) {new_chunk(); goto loop;} + return top; + } + char * dup_top(ParmString str) { + return (char *)memcpy(alloc_top(str.size() + 1), + str.str(), str.size() + 1); + } + + // By default objects are allocated from the top since that is sligtly + // more efficient + void * alloc(size_t size) {return alloc_top(size);} + void * alloc(size_t size, size_t align) {return alloc_top(size,align);} + char * dup(ParmString str) {return dup_top(str);} + + // alloc_temp allocates an object from the bottom which can be + // resized untill it is commited. If the resizing will involve + // moving the object than the data will be copied in the same way + // realloc does. Any previously allocated objects are aborted when + // alloc_temp is called. + void * temp_ptr() { + if (temp_end) return bottom; + else return 0; + } + unsigned temp_size() { + return temp_end - bottom; + } + void * alloc_temp(size_t size) { + temp_end = bottom + size; + if (temp_end > top) { + new_chunk(); + temp_end = bottom + size; + } + return bottom; + } + // returns a pointer the the new beginning of the temp memory + void * resize_temp(size_t size) { + if (temp_end == 0) + return alloc_temp(size); + if (bottom + size <= top) { + temp_end = bottom + size; + } else { + size_t s = temp_end - bottom; + byte * p = bottom; + new_chunk(); + memcpy(bottom, p, s); + temp_end = bottom + size; + } + return bottom; + } + // returns a pointer to the beginning of the new memory (in + // otherwords the END of the temp memory BEFORE the call to grow + // temp) NOT the beginning if the temp memory + void * grow_temp(size_t s) { + if (temp_end == 0) + return alloc_temp(s); + unsigned old_size = temp_end - bottom; + unsigned size = old_size + s; + if (bottom + size <= top) { + temp_end = bottom + size; + } else { + size_t s = temp_end - bottom; + byte * p = bottom; + new_chunk(); + memcpy(bottom, p, s); + temp_end = bottom + size; + } + return bottom + old_size; + } + void abort_temp() { + temp_end = 0;} + void commit_temp() { + bottom = temp_end; + temp_end = 0;} + +}; + +typedef ObjStack StringBuffer; + +} + +#endif diff --git a/jni/common/objstack.lo b/jni/common/objstack.lo new file mode 100644 index 0000000..be8f477 --- /dev/null +++ b/jni/common/objstack.lo @@ -0,0 +1,12 @@ +# common/objstack.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/objstack.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/ostream.hpp b/jni/common/ostream.hpp new file mode 100644 index 0000000..66becd4 --- /dev/null +++ b/jni/common/ostream.hpp @@ -0,0 +1,67 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_OSTREAM__HPP +#define ASPELL_OSTREAM__HPP + +#include <stdarg.h> + +#include "parm_string.hpp" + +namespace acommon { + + // FIXME: Add Print Method compatible with printf and friends. + // Than avoid code bloat by using it in many places instead of + // out << "Bla " << something << " djdkdk " << something else << "\n" + + class OStream { + public: + virtual void write (char c) = 0; + virtual void write (ParmStr) = 0; + virtual void write (const void *, unsigned int) = 0; + + virtual int vprintf(const char *format, va_list ap) = 0; + +#ifdef __GNUC__ + __attribute__ ((format (printf,2,3))) +#endif + int printf(const char * format, ...) + { + va_list ap; + va_start(ap, format); + int res = vprintf(format, ap); + va_end(ap); + return res; + } + + void put (char c) {write(c);} + void put (ParmStr str) {write(str);} + + virtual void printl(ParmStr l) + { + write(l); + write('\n'); + } + + void write16(unsigned short v) {write(&v, 2);} + void write32(unsigned int v) {write(&v, 4);} + + OStream & operator << (char c) { + write(c); + return *this; + } + + OStream & operator << (ParmStr in) { + write(in); + return *this; + } + + virtual ~OStream() {} + }; + +} + +#endif diff --git a/jni/common/parm_string.hpp b/jni/common/parm_string.hpp new file mode 100644 index 0000000..129c91e --- /dev/null +++ b/jni/common/parm_string.hpp @@ -0,0 +1,116 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_PARM_STRING__HPP +#define ASPELL_PARM_STRING__HPP + +#include <string.h> +#include <limits.h> + +// +// ParmString is a special string class that is designed to be used as +// a parameter for a function that is expecting a string It will allow +// either a "const char *" or "String" class to be passed in. It will +// automatically convert to a "const char *". The string can also be +// accesses via the "str" method. Usage example: +// +// void foo(ParmString s1, s2) { +// const char * str0 = s1; +// unsigned int size0 = s2.size() +// if (s1 == s2 || s2 == "bar") { +// ... +// } +// } +// ... +// String s1 = "..."; +// foo(s1); +// const char * s2 = "..."; +// foo(s2); +// +// The string is expected to be null terminated, even if size is give +// during construction. +// + +namespace acommon { + + template<typename Ret> class PosibErr; + + class String; + + class ParmString { + public: + ParmString() : str_(0) {} + ParmString(const char * str, unsigned int sz = UINT_MAX) + : str_(str), size_(sz) {} + inline ParmString(const String &); + inline ParmString(const PosibErr<const char *> &); + inline ParmString(const PosibErr<String> &); + + void set(const char * str, unsigned int sz = UINT_MAX) { + str_ = str, size_ = sz; + } + + bool empty() const { + return str_ == 0 || str_[0] == '\0'; + } + unsigned int size() const { + if (size_ != UINT_MAX) return size_; + else return size_ = strlen(str_); + } + bool have_size() const {return size_ != UINT_MAX;} + operator const char * () const { + return str_; + } + const char * str () const { + return str_; + } + public: // but don't use unless you have to + const char * str_; + mutable unsigned int size_; + }; + + typedef const ParmString & ParmStr; + + static inline bool operator== (ParmStr s1, ParmStr s2) + { + if (s1.str() == 0 || s2.str() == 0) + return s1.str() == s2.str(); + return strcmp(s1,s2) == 0; + } + static inline bool operator== (const char * s1, ParmStr s2) + { + if (s1 == 0 || s2.str() == 0) + return s1 == s2.str(); + return strcmp(s1,s2) == 0; + } + static inline bool operator== (ParmStr s1, const char * s2) + { + if (s1.str() == 0 || s2 == 0) + return s1.str() == s2; + return strcmp(s1,s2) == 0; + } + static inline bool operator!= (ParmStr s1, ParmStr s2) + { + if (s1.str() == 0 || s2.str() == 0) + return s1.str() != s2.str(); + return strcmp(s1,s2) != 0; + } + static inline bool operator!= (const char * s1, ParmStr s2) + { + if (s1 == 0 || s2.str() == 0) + return s1 != s2.str(); + return strcmp(s1,s2) != 0; + } + static inline bool operator!= (ParmStr s1, const char * s2) + { + if (s1.str() == 0 || s2 == 0) + return s1.str() != s2; + return strcmp(s1,s2) != 0; + } + +} + +#endif diff --git a/jni/common/posib_err.cpp b/jni/common/posib_err.cpp new file mode 100644 index 0000000..2d33d5a --- /dev/null +++ b/jni/common/posib_err.cpp @@ -0,0 +1,128 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> + +//#include "iostream.hpp" + +#include "posib_err.hpp" + +#include "gettext.h" + + +namespace acommon { + + String & String::operator= (const PosibErr<String> & s) + { + operator=(s.data); + return *this; + } + + struct StrSize { + const char * str; + unsigned int size; + StrSize() : str(0), size(0) {} + void operator= (ParmString s) {str = s; size = s.size();} + }; + + PosibErrBase & PosibErrBase::set(const ErrorInfo * inf, + ParmString p1, ParmString p2, + ParmString p3, ParmString p4) + { + const char * s0 = inf->mesg ? _(inf->mesg) : ""; + const char * s; + ParmString p[4] = {p1,p2,p3,p4}; + StrSize m[10]; + unsigned int i = 0; + while (i != 4 && p[i] != 0) + ++i; + assert(i == inf->num_parms || i == inf->num_parms + 1); + i = 0; + while (true) { + s = s0 + strcspn(s0, "%"); + m[i].str = s0; + m[i].size = s - s0; + if (*s == '\0') break; + ++i; + s = strchr(s, ':') + 1; + unsigned int ip = *s - '0' - 1; + assert(0 <= ip && ip < inf->num_parms); + m[i] = p[ip]; + ++i; + s0 = s+1; + } + if (!p[inf->num_parms].empty()) { + m[++i] = " "; + m[++i] = p[inf->num_parms]; + } + unsigned int size = 0; + for (i = 0; m[i].str != 0; ++i) + size += m[i].size; + char * str = (char *)malloc(size + 1); + s0 = str; + for (i = 0; m[i].str != 0; str+=m[i].size, ++i) + strncpy(str, m[i].str, m[i].size); + *str = '\0'; + Error * e = new Error; + e->err = inf; + e->mesg = s0; + err_ = new ErrPtr(e); + + return *this; + } + + PosibErrBase & PosibErrBase::with_file(ParmString fn, int line_num) + { + assert(err_ != 0); + assert(err_->refcount == 1); + char * m = const_cast<char *>(err_->err->mesg); + unsigned int orig_len = strlen(m); + unsigned int new_len = fn.size() + (line_num ? 10 : 0) + 2 + orig_len + 1; + char * s = (char *)malloc(new_len); + if (line_num) + snprintf(s, new_len, "%s:%d: %s", fn.str(), line_num, m); + else + snprintf(s, new_len, "%s: %s", fn.str(), m); + free(m); + const_cast<Error *>(err_->err)->mesg = s; + return *this; + } + +#ifndef NDEBUG + void PosibErrBase::handle_err() const { + assert (err_); + assert (!err_->handled); + fputs(_("Unhandled Error: "), stderr); + fputs(err_->err->mesg, stderr); + fputs("\n", stderr); + abort(); + } +#endif + + Error * PosibErrBase::release() { + assert (err_); + assert (err_->refcount <= 1); + --err_->refcount; + Error * tmp; + if (err_->refcount == 0) { + tmp = const_cast<Error *>(err_->err); + delete err_; + } else { + tmp = new Error(*err_->err); + } + err_ = 0; + return tmp; + } + + void PosibErrBase::del() { + if (!err_) return; + delete const_cast<Error *>(err_->err); + delete err_; + } + +} diff --git a/jni/common/posib_err.hpp b/jni/common/posib_err.hpp new file mode 100644 index 0000000..6634624 --- /dev/null +++ b/jni/common/posib_err.hpp @@ -0,0 +1,249 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef PCOMMON_POSIB_ERR__HPP +#define PCOMMON_POSIB_ERR__HPP + +#include "string.hpp" +#include "error.hpp" + +#include "errors.hpp" + +#include "ndebug.hpp" + +namespace acommon { + + // PosibErr<type> is a special Error handling device that will make + // sure that an error is properly handled. It is expected to be + // used as the return type of the function It will automatically + // convert to the "normal" return type however if the normal + // returned type is accessed and there is an "unhandled" error + // condition it will abort It will also abort if the object is + // destroyed with an "unhandled" error condition. This includes + // ignoring the return type of a function returning an error + // condition. An error condition is handled by simply checking for + // the presence of an error, calling ignore, or taking ownership of + // the error. + + enum WhichErr { PrimErr, SecErr }; + + extern "C" const ErrorInfo * const perror_bad_file_format; + + template <typename Ret> class PosibErr; + + class PosibErrBase { + private: + struct ErrPtr { + const Error * err; +#ifndef NDEBUG + bool handled; +#endif + int refcount; + ErrPtr(const Error * e) : err(e), +#ifndef NDEBUG + handled(false), +#endif + refcount(1) {} + }; + ErrPtr * err_; + + protected: + + void posib_handle_err() const { +#ifndef NDEBUG + if (err_ && !err_->handled) + handle_err(); +#endif + } + + void copy(const PosibErrBase & other) { + err_ = other.err_; + if (err_) { + ++ err_->refcount; + } + } + void destroy() { + if (err_ == 0) return; + -- err_->refcount; + if (err_->refcount == 0) { +#ifndef NDEBUG + if (!err_->handled) + handle_err(); +#endif + del(); + } + } + + public: + PosibErrBase() + : err_(0) {} + PosibErrBase(const PosibErrBase & other) + { + copy(other); + } + PosibErrBase& operator= (const PosibErrBase & other) { + destroy(); + copy(other); + return *this; + } + ~PosibErrBase() { + destroy(); + } + + Error * release_err() { + if (err_ == 0) + return 0; + else + return release(); + } + void ignore_err() { +#ifndef NDEBUG + if (err_ != 0) + err_->handled = true; +#endif + } + const Error * get_err() const { + if (err_ == 0) { + return 0; + } else { +#ifndef NDEBUG + err_->handled = true; +#endif + return err_->err; + } + } + const Error * prvw_err() const { + if (err_ == 0) + return 0; + else + return err_->err; + } + bool has_err() const { + return err_ != 0; + } + bool has_err(const ErrorInfo * e) const { + if (err_ == 0) { + return false; + } else { + if (err_->err->is_a(e)) { +#ifndef NDEBUG + err_->handled = true; +#endif + return true; + } else { + return false; + } + } + } + PosibErrBase & prim_err(const ErrorInfo * inf, ParmString p1 = 0, + ParmString p2 = 0, ParmString p3 = 0, + ParmString p4 = 0) + { + return set(inf, p1, p2, p3, p4); + } + + // This should only be called _after_ set is called + PosibErrBase & with_file(ParmString fn, int lineno = 0); + + PosibErrBase & set(const ErrorInfo *, + ParmString, ParmString, ParmString, ParmString); + + private: + +#ifndef NDEBUG + void handle_err() const; +#endif + Error * release(); + void del(); + }; + + template <> + class PosibErr<void> : public PosibErrBase + { + public: + PosibErr(const PosibErrBase & other) + : PosibErrBase(other) {} + + PosibErr() {} + }; + + template <typename Ret> + class PosibErr : public PosibErrBase + { + public: + PosibErr() {} + + PosibErr(const PosibErrBase & other) + : PosibErrBase(other) {} + + template <typename T> + PosibErr(const PosibErr<T> & other) + : PosibErrBase(other), data(other.data) {} + + PosibErr(const PosibErr<void> & other) + : PosibErrBase(other) {} + + PosibErr& operator= (const PosibErr & other) { + data = other.data; + PosibErrBase::destroy(); + PosibErrBase::copy(other); + return *this; + } + PosibErr(const Ret & d) : data(d) {} + operator const Ret & () const {posib_handle_err(); return data;} + + Ret data; + }; + +// +// +// +#define RET_ON_ERR_SET(command, type, var) \ + type var;do{PosibErr< type > pe(command);if(pe.has_err())return PosibErrBase(pe);var=pe.data;} while(false) +#define RET_ON_ERR(command) \ + do{PosibErrBase pe(command);if(pe.has_err())return PosibErrBase(pe);}while(false) + + + // + // + // + + static inline PosibErrBase make_err(const ErrorInfo * inf, + ParmString p1 = 0, ParmString p2 = 0, + ParmString p3 = 0, ParmString p4 = 0) + { + return PosibErrBase().prim_err(inf, p1, p2, p3, p4); + } + + static const PosibErr<void> no_err; + + // + // + // + inline String & String::operator= (const PosibErr<const char *> & s) + { + *this = s.data; + return *this; + } + + inline bool operator== (const PosibErr<String> & x, const char * y) + { + return x.data == y; + } + inline bool operator!= (const PosibErr<String> & x, const char * y) + { + return x.data != y; + } + + inline ParmString::ParmString(const PosibErr<const char *> & s) + : str_(s.data), size_(UINT_MAX) {} + + inline ParmString::ParmString(const PosibErr<String> & s) + : str_(s.data.c_str()), size_(s.data.size()) {} + +} + +#endif diff --git a/jni/common/posib_err.lo b/jni/common/posib_err.lo new file mode 100644 index 0000000..a974e98 --- /dev/null +++ b/jni/common/posib_err.lo @@ -0,0 +1,12 @@ +# common/posib_err.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/posib_err.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/simple_string.hpp b/jni/common/simple_string.hpp new file mode 100644 index 0000000..697289b --- /dev/null +++ b/jni/common/simple_string.hpp @@ -0,0 +1,65 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_SIMPLE_STRING__HPP +#define ASPELL_SIMPLE_STRING__HPP + +#include <string.h> + +#include "parm_string.hpp" + +namespace acommon { + + struct SimpleString { + const char * str; + unsigned int size; + + SimpleString() : str(0), size(0) {} + SimpleString(const char * str0) : str(str0), size(strlen(str)) {} + SimpleString(const char * str0, unsigned int sz) : str(str0), size(sz) {} + SimpleString(ParmString str0) : str(str0), size(str0.size()) {} + + bool empty() const {return size == 0;} + operator const char * () const {return str;} + operator ParmString () const {return ParmString(str, size);} + const char * begin() const {return str;} + const char * end() const {return str + size;} + }; + + static inline bool operator==(SimpleString s1, SimpleString s2) + { + if (s1.size != s2.size) + return false; + else + return memcmp(s1,s2,s1.size) == 0; + } + static inline bool operator==(const char * s1, SimpleString s2) + { + return strcmp(s1,s2) == 0; + } + static inline bool operator==(SimpleString s1, const char * s2) + { + return strcmp(s1,s2) == 0; + } + + static inline bool operator!=(SimpleString s1, SimpleString s2) + { + if (s1.size != s2.size) + return true; + else + return memcmp(s1,s2,s1.size) != 0; + } + static inline bool operator!=(const char * s1, SimpleString s2) + { + return strcmp(s1,s2) != 0; + } + static inline bool operator!=(SimpleString s1, const char * s2) + { + return strcmp(s1,s2) != 0; + } +} + +#endif diff --git a/jni/common/speller.cpp b/jni/common/speller.cpp new file mode 100644 index 0000000..e0a9fc8 --- /dev/null +++ b/jni/common/speller.cpp @@ -0,0 +1,18 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "speller.hpp" +#include "convert.hpp" +#include "clone_ptr-t.hpp" +#include "config.hpp" + +namespace acommon { + + Speller::Speller(SpellerLtHandle h) : lt_handle_(h) {} + + Speller::~Speller() {} +} + diff --git a/jni/common/speller.hpp b/jni/common/speller.hpp new file mode 100644 index 0000000..031299c --- /dev/null +++ b/jni/common/speller.hpp @@ -0,0 +1,131 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +// Aspell implementation header file. +// Applications that just use the Aspell library should not include +// these files as they are subject to change. +// Aspell Modules MUST include some of the implementation files and +// spell checkers MAY include some of these files. +// If ANY of the implementation files are included you also link with +// libaspell-impl to protect you from changes in these files. + +#ifndef ASPELL_SPELLER__HPP +#define ASPELL_SPELLER__HPP + +#include "can_have_error.hpp" +#include "copy_ptr.hpp" +#include "clone_ptr.hpp" +#include "mutable_string.hpp" +#include "posib_err.hpp" +#include "parm_string.hpp" +#include "char_vector.hpp" + +namespace acommon { + + typedef void * SpellerLtHandle; + + class Config; + class WordList; + class Convert; + class Tokenizer; + class Filter; + class DocumentChecker; + + struct CheckInfo { + const CheckInfo * next; + ParmString word; // generally the root + short pre_strip_len; + short pre_add_len; + const char * pre_add; + short suf_strip_len; + short suf_add_len; + const char * suf_add; + short pre_flag; + short suf_flag; + short guess; + short compound; + }; + + class Speller : public CanHaveError + { + private: + SpellerLtHandle lt_handle_; + Speller(const Speller &); + Speller & operator= (const Speller &); + public: + String temp_str_0; + String temp_str_1; + ClonePtr<Convert> to_internal_; + ClonePtr<Convert> from_internal_; + protected: + CopyPtr<Config> config_; + Speller(SpellerLtHandle h); + public: + SpellerLtHandle lt_handle() const {return lt_handle_;} + + Config * config() {return config_;} + const Config * config() const {return config_;} + + // utility functions + + virtual char * to_lower(char *) = 0; + + // the setup class will take over for config + virtual PosibErr<void> setup(Config *) = 0; + + // sets up the tokenizer class + // should be called only after this class is setup + virtual void setup_tokenizer(Tokenizer *) = 0; + + //////////////////////////////////////////////////////////////// + // + // Strings from this point on are expected to be in the + // encoding specified by encoding() + // + + virtual PosibErr<bool> check(MutableString) = 0; + + // these functions return information about the last word checked + virtual const CheckInfo * check_info() = 0; + + virtual PosibErr<void> add_to_personal(MutableString) = 0; + virtual PosibErr<void> add_to_session (MutableString) = 0; + + // because the word lists may potently have to convert from one + // encoding to another the pointer returned by the enumeration is only + // valid to the next call. + + virtual PosibErr<const WordList *> personal_word_list() const = 0; + virtual PosibErr<const WordList *> session_word_list () const = 0; + virtual PosibErr<const WordList *> main_word_list () const = 0; + + virtual PosibErr<void> save_all_word_lists() = 0; + + virtual PosibErr<void> clear_session() = 0; + + virtual PosibErr<const WordList *> suggest(MutableString) = 0; + // return null on error + // the word list returned by suggest is only valid until the next + // call to suggest + + virtual PosibErr<void> store_replacement(MutableString, + MutableString) = 0; + + virtual ~Speller(); + + }; + + + // This function is current a hack to reload the filters in the + // speller class. I hope to eventually find a better way. + PosibErr<void> reload_filters(Speller * m); + + + PosibErr<Speller *> new_speller(Config * c); + +} + +#endif diff --git a/jni/common/speller.lo b/jni/common/speller.lo new file mode 100644 index 0000000..b9be664 --- /dev/null +++ b/jni/common/speller.lo @@ -0,0 +1,12 @@ +# common/speller.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/speller.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/stack_ptr.hpp b/jni/common/stack_ptr.hpp new file mode 100644 index 0000000..f7548b9 --- /dev/null +++ b/jni/common/stack_ptr.hpp @@ -0,0 +1,54 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef stack_ptr +#define stack_ptr + +#include <assert.h> + +namespace acommon { + + template <typename T> + class StackPtr { + T * ptr; + + // to avoid operator* being used unexpectedly. for example + // without this the following will compile + // PosibErr<T> fun(); + // PosibErr<StackPtr<T > > pe = fun(); + // and operator* and StackPtr(T *) will be used. The explicit + // doesn't protect us here due to PosibErr + StackPtr(const StackPtr & other); + // becuase I am paranoid + StackPtr & operator=(const StackPtr & other); + + public: + + explicit StackPtr(T * p = 0) : ptr(p) {} + + StackPtr(StackPtr & other) : ptr (other.release()) {} + + ~StackPtr() {del();} + + StackPtr & operator=(StackPtr & other) + {reset(other.release()); return *this;} + + T & operator* () const {return *ptr;} + T * operator-> () const {return ptr;} + T * get() const {return ptr;} + operator T * () const {return ptr;} + + T * release () {T * p = ptr; ptr = 0; return p;} + + void del() {delete ptr; ptr = 0;} + void reset(T * p) {assert(ptr==0); ptr = p;} + StackPtr & operator=(T * p) {reset(p); return *this;} + + }; +} + +#endif + diff --git a/jni/common/string.cpp b/jni/common/string.cpp new file mode 100644 index 0000000..5dffbc8 --- /dev/null +++ b/jni/common/string.cpp @@ -0,0 +1,86 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include <stdarg.h> +#include <stdio.h> + +#ifndef va_copy +# ifdef __va_copy +# define va_copy __va_copy +# else +# define va_copy(dst, src) memcpy(&dst, &src, sizeof(va_list)) +# endif +#endif + +#include "string.hpp" +#include "asc_ctype.hpp" + +namespace acommon { + + // reserve space for at least s+1 characters + void String::reserve_i(size_t s) + { + size_t old_size = end_ - begin_; + size_t new_size = (storage_end_ - begin_) * 3 / 2; + if (new_size < 64) new_size = 64; + if (new_size < s + 1) new_size = s + 1; + if (old_size == 0) { + if (begin_) free(begin_); + begin_ = (char *)malloc(new_size); + } else { + begin_ = (char *)realloc(begin_, new_size); + } + end_ = begin_ + old_size; + storage_end_ = begin_ + new_size; + } + + int String::vprintf(const char * format, va_list ap0) + { + reserve(size() + 64); + int res = 0; + va_list ap; + loop: { + int avail = storage_end_ - end_; + if (res < 0 && avail > 1024*1024) + return -1; // to avoid an infinite loop in case a neg result + // really means an error and not just "not enough + // space" + va_copy(ap,ap0); + res = vsnprintf(end_, avail, format, ap); + va_end(ap); + if (res < 0) { + reserve_i(); goto loop; + } else if (res > avail) { + reserve_i(size() + res); goto loop; + } + } + end_ += res; + return res; + } + + bool StringIStream::append_line(String & str, char d) + { + if (in_str[0] == '\0') return false; + const char * end = in_str; + while (*end != d && *end != '\0') ++end; + str.append(in_str, end - in_str); + in_str = end; + if (*in_str == d) ++in_str; + return true; + } + + bool StringIStream::read(void * data, unsigned int size) + { + char * str = static_cast<char *>(data); + while (*in_str != '\0' && size != 0) { + *str = *in_str; + ++in_str; + ++str; + ++size; + } + return size == 0; + } +} diff --git a/jni/common/string.hpp b/jni/common/string.hpp new file mode 100644 index 0000000..9e7f1d5 --- /dev/null +++ b/jni/common/string.hpp @@ -0,0 +1,498 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_STRING__HPP +#define ASPELL_STRING__HPP + +#include <string.h> +#include <stdlib.h> + +#include <algorithm> + +#include "hash_fun.hpp" +#include "parm_string.hpp" +#include "mutable_string.hpp" +#include "ostream.hpp" +#include "istream.hpp" + +// +// acommon::String is similar to std::string, but without many of the +// extra non-stl like methods. The string is guaranteed to be stored +// in a continues areas of memory but is not guaranteed to be null +// terminated. However, space is always allocated for the null +// characters. Thus, the c_str() method will never invalided any +// exiting pointers. The string is also null terminated when accesed +// via the str() and mstr() methods. In addition the method +// ensure_null_end() will null terminate the string. Once null +// terminated the string will remain as such until the length of the +// string changes. +// + +namespace acommon { + + template <typename Ret> class PosibErr; + + class String : public OStream + { + public: + typedef const char * const_iterator; + typedef char * iterator; + typedef size_t size_type; + + private: + // if begin_ != 0 than storage_end_ - begin_ > 1 + char * begin_; + char * end_; + char * storage_end_; + + void assign_only_nonnull(const char * b, unsigned size) + { + begin_ = (char *)malloc(size + 1); + memmove(begin_, b, size); + end_ = begin_ + size; + storage_end_ = end_ + 1; + } + void zero() + { + begin_ = 0; + end_ = 0; + storage_end_ = 0; + } + void assign_only(const char * b) + { + if (b && *b) assign_only_nonnull(b, strlen(b)); + else zero(); + } + void assign_only(const char * b, unsigned size) + { + if (b && size > 0) assign_only_nonnull(b, size); + else zero(); + } + void reserve_i(size_t s = 0); + public: + void reserve(size_t s) + { + if (storage_end_ - begin_ >= (int)s + 1) return; + reserve_i(s); + } + + char * begin() {return begin_;} + char * end() {return end_;} + + const char * begin() const {return begin_;} + const char * end() const {return end_;} + + char * pbegin() {return begin_;} + char * pend() {return end_;} + + const char * pbegin() const {return begin_;} + const char * pend() const {return end_;} + + size_t size() const {return end_ - begin_;} + bool empty() const {return begin_ == end_;} + size_t max_size() const {return INT_MAX;} + size_t capacity() const {return storage_end_ ? storage_end_ - begin_ - 1 : 0;} + + void ensure_null_end() const { + if (!begin_) const_cast<String *>(this)->reserve_i(); + *end_ = '\0'; + } + + const char * c_str() const { + if (begin_) {ensure_null_end(); return begin_;} + else return ""; + } + const char * str() const {return c_str();} + char * mstr() + { + if (!begin_) reserve_i(); + ensure_null_end(); + return begin_; + } + + char * data() {return begin_;} + const char * data() const {return begin_;} + + char * data(int pos) {return begin_ + pos;} + char * data_end() {return end_;} + + template <typename U> + U * datap() { + return reinterpret_cast<U * >(begin_); + } + template <typename U> + U * datap(int pos) { + return reinterpret_cast<U * >(begin_ + pos); + } + + char & operator[] (size_t pos) {return begin_[pos];} + char operator[] (size_t pos) const {return begin_[pos];} + + char & back() {return end_[-1];} + char back() const {return end_[-1];} + + void clear() {end_ = begin_;} + + // + // constructors + // + + String() : begin_(0), end_(0), storage_end_(0) {} + String(const char * s) {assign_only(s);} + String(const char * s, unsigned size) {assign_only(s, size);} + String(ParmStr s) {assign_only(s, s.size());} + String(MutableString s) {assign_only(s.str, s.size);} + String(const String & other) {assign_only(other.begin_, other.end_-other.begin_);} + + // + // assign + // + + void assign(const char * b, size_t size) + { + clear(); + if (size != 0) { + reserve(size); + memmove(begin_, b, size); + end_ = begin_ + size; + } + } + void assign(const char * b) + { + if (b) assign(b, strlen(b)); + } + String & operator= (const char * s) { + assign(s); + return *this; + } + inline String & operator= (const PosibErr<const char *> & s); + String & operator= (ParmStr s) { + assign(s, s.size()); + return *this; + } + String & operator= (MutableString s) { + assign(s.str, s.size); + return *this; + } + String & operator= (const String & s) { + assign(s.begin_, s.end_ - s.begin_); + return *this; + } + /*inline*/ String & operator= (const PosibErr<String> & s); + + // + // append + // + + String & append(const void * str, unsigned int sz) + { + reserve(size() + sz); + if (sz > 0) memcpy(end_, str, sz); + end_ += sz; + return *this; + } + String & append(const void * d, const void * e) + { + append(d, (const char *)e - (const char *)d); + return *this; + } + String & append(String & str, unsigned int sz) + { + append(str.begin_, sz); + return *this; + } + String & append(const char * str) + { + if (!end_) reserve_i(); + for (; *str && end_ != storage_end_ - 1; ++str, ++end_) + *end_ = *str; + if (end_ == storage_end_ - 1) append(str, strlen(str)); + return *this; + } + String & append(char c) + { + reserve(size() + 1); + *end_ = c; + ++end_; + return *this; + } + + String & operator+= (const char * s) { + append(s); + return *this; + } + String & operator+= (char c) { + append(c); + return *this; + } + String & operator+= (ParmStr s) { + if (s.have_size()) + append(s, s.size()); + else + append(s); + return *this; + } + String & operator+= (MutableString s) { + append(s.str, s.size); + return *this; + } + String & operator+= (const String & s) { + append(s.begin_, s.end_ - s.begin_); + return *this; + } + + // + // + // + + ~String() {if (begin_) free(begin_);} + + void swap(String & other) { + std::swap(begin_, other.begin_); + std::swap(end_, other.end_); + std::swap(storage_end_, other.storage_end_); + } + + // + // + // + + int vprintf(const char * format, va_list ap); + + // + // + // + + void push_back(char c) {append(c);} + + void pop_back(size_t p = 1) {end_ -= p;} + + char * insert(size_t p, char c) + { + reserve(size() + 1); + char * pos = begin_ + p; + size_t to_move = end_ - pos; + if (to_move) memmove(pos + 1, pos, to_move); + *pos = c; + ++end_; + return pos; + } + char * insert(char * pos, char c) + { + return insert(pos - begin_, c); + } + void insert(size_t p, const char * str, size_t sz) + { + reserve(size() + sz); + char * pos = begin_ + p; + size_t to_move = end_ - pos; + if (to_move) memmove(pos + sz, pos, to_move); + memcpy(pos, str, sz); + end_ += sz; + } + void insert(char * pos, const char * f, const char * l) + { + insert(pos - begin_, f, l - f); + } + + char * erase(char * pos) + { + size_t to_move = end_ - pos - 1; + if (to_move) memmove(pos, pos + 1, to_move); + --end_; + return pos; + } + char * erase(char * f, char * l) + { + if (l >= end_) { + end_ = f < end_ ? f : end_; + } else { + size_t sz = l - f; + memmove(f, f + sz, end_ - l); + end_ -= sz; + } + return f; + } + void erase(size_t pos, size_t s) + { + erase(begin_ + pos, begin_ + pos + s); + } + + //FIXME: Make this more efficent by rewriting the implemenation + // to work with raw memory rather than using vector<char> + template <typename Itr> + void replace(iterator start, iterator stop, Itr rstart, Itr rstop) + { + iterator i = erase(start,stop); + insert(i, rstart, rstop); + } + + void replace(size_t pos, size_t n, const char * with, size_t s) + { + replace(begin_ + pos, begin_ + pos + n, with, with + s); + } + void resize(size_t n) + { + reserve(n); + end_ = begin_ + n; + } + void resize(size_t n, char c) + { + size_t old_size = size(); + reserve(n); + end_ = begin_ + n; + int diff = n - old_size; + if (diff > 0) memset(begin_ + old_size, c, diff); + } + int alloc(int s) { + int pos = size(); + resize(pos + s); + return pos; + } + + bool prefix(ParmStr str, size_t offset = 0) const + { + if (str.size() > size() - offset) return false; + return memcmp(begin_ + offset, str.str(), str.size()) == 0; + }; + bool suffix(ParmStr str) const + { + if (str.size() > size()) return false; + return memcmp(end_ - str.size(), str.str(), str.size()) == 0; + } + + // FIXME: Eventually remove + static const size_t npos = INT_MAX; + size_t find(char c, size_t pos = 0) const { + char * res = (char *)memchr(begin_ + pos, c, size() - pos); + if (res == 0) return npos; + else return res - begin_; + } + size_t rfind(char c) const { + for (int i = size() - 1; i >= 0; --i) { + if (begin_[i] == c) return i; + } + return npos; + } + String substr(size_t pos = 0, size_t n = npos) const + { + if (n == npos) + return String(begin_ + pos, size() - pos); + else + return String(begin_ + pos, n); + } + // END FIXME + + unsigned short & at16(unsigned int pos) + {return reinterpret_cast<unsigned short &>(operator[](pos));} + unsigned int & at32(unsigned int pos) + {return reinterpret_cast<unsigned int &>(operator[](pos));} + + void write (char c) {append(c);} + void write (ParmStr str) {operator+=(str);} + void write (const void * str, unsigned int sz) {append(str,sz);} + + + String & operator << (ParmStr str) { + append(str); + return *this; + } + + String & operator << (char c) { + append(c); + return *this; + } + }; + + inline String operator+ (ParmStr lhs, ParmStr rhs) + { + String tmp; + tmp.reserve(lhs.size() + rhs.size()); + tmp += lhs; + tmp += rhs; + return tmp; + } + + inline bool operator== (const String & x, const String & y) + { + if (x.size() != y.size()) return false; + if (x.size() == 0) return true; + return memcmp(x.data(), y.data(), x.size()) == 0; + } + inline bool operator== (const String & x, const char * y) + { + return strcmp(x.c_str(), y) == 0; + } + inline bool operator== (const char * x, const String & y) + { + return strcmp(x, y.c_str()) == 0; + } + inline bool operator== (const String & x, ParmStr y) + { + if (y == 0) return x.size() == 0; + return strcmp(x.c_str(), y) == 0; + } + inline bool operator== (ParmStr x, const String & y) + { + if (x == 0) return y.size() == 0; + return strcmp(x, y.c_str()) == 0; + } + + inline bool operator!= (const String & x, const String & y) + { + return !(x == y); + } + inline bool operator!= (const String & x, const char * y) + { + return strcmp(x.c_str(), y) != 0; + } + inline bool operator!= (const char * x, const String & y) + { + return strcmp(x, y.c_str()) != 0; + } + inline bool operator!= (const String & x, ParmStr y) + { + return !(x == y); + } + inline bool operator!= (ParmStr x, const String & y) + { + return !(x == y); + } + + inline ParmString::ParmString(const String & s) : str_(s.c_str()), size_(s.size()) {} + + class StringIStream : public IStream { + const char * in_str; + char delem; + public: + StringIStream(ParmStr s, char d = ';') + : IStream(d), in_str(s) {} + bool append_line(String & str, char c); + bool read(void * data, unsigned int size); + }; + + template <> struct hash<String> : public HashString<String> {}; + + inline bool IStream::getline(String & str, char c) + { + str.clear(); + return append_line(str,c); + } + + inline bool IStream::getline(String & str) + { + str.clear(); + return append_line(str,delem); + } + +} + +namespace std +{ + template<> inline void swap(acommon::String & x, acommon::String & y) {return x.swap(y);} +} + +#endif diff --git a/jni/common/string.lo b/jni/common/string.lo new file mode 100644 index 0000000..2162c8e --- /dev/null +++ b/jni/common/string.lo @@ -0,0 +1,12 @@ +# common/string.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/string_enumeration.hpp b/jni/common/string_enumeration.hpp new file mode 100644 index 0000000..409086d --- /dev/null +++ b/jni/common/string_enumeration.hpp @@ -0,0 +1,39 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_STRING_ENUMERATION__HPP +#define ASPELL_STRING_ENUMERATION__HPP + +#include "parm_string.hpp" +#include "type_id.hpp" +#include "char_vector.hpp" + +namespace acommon { + + class StringEnumeration; + class Convert; + + class StringEnumeration { + public: + typedef const char * Value; + virtual bool at_end() const = 0; + virtual const char * next() = 0; + int ref_count_; + TypeId type_id_; + unsigned int type_id() { return type_id_.num; } + int copyable_; + int copyable() { return copyable_; } + virtual StringEnumeration * clone() const = 0; + virtual void assign(const StringEnumeration * other) = 0; + CharVector temp_str; + Convert * from_internal_; + StringEnumeration() : ref_count_(0), copyable_(2), from_internal_(0) {} + virtual ~StringEnumeration() {} + }; + +} + +#endif /* ASPELL_STRING_ENUMERATION__HPP */ diff --git a/jni/common/string_list.cpp b/jni/common/string_list.cpp new file mode 100644 index 0000000..6a2bd9f --- /dev/null +++ b/jni/common/string_list.cpp @@ -0,0 +1,120 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "string_list.hpp" +//#include "iostream.hpp" + +namespace acommon { + + void StringList::copy(const StringList & other) + { + StringListNode * * cur = &first; + StringListNode * other_cur = other.first; + while (other_cur != 0) { + *cur = new StringListNode(other_cur->data.c_str()); + cur = &(*cur)->next; + other_cur = other_cur->next; + } + *cur = 0; + } + + void StringList::destroy() + { + while (first != 0) { + StringListNode * next = first->next; + delete first; + first = next; + } + } + + bool operator==(const StringList & rhs, + const StringList & lhs) + { + StringListNode * rhs_cur = rhs.first; + StringListNode * lhs_cur = lhs.first; + while (rhs_cur != 0 && lhs_cur != 0 && rhs_cur->data == lhs_cur->data) { + rhs_cur = rhs_cur->next; + lhs_cur = lhs_cur->next; + } + return rhs_cur == 0 && lhs_cur == 0; + } + + StringEnumeration * StringListEnumeration::clone() const + { + return new StringListEnumeration(*this); + } + + void StringListEnumeration::assign(const StringEnumeration * other) + { + *this = *(const StringListEnumeration *)other; + } + + + StringList * StringList::clone() const + { + return new StringList(*this); + } + + void StringList::assign(const StringList * other) + { + *this = *(const StringList *)other; + } + + PosibErr<bool> StringList::add(ParmStr str) + { + //CERR.printf("ADD %s\n", str.str()); + StringListNode * * cur = &first; + while (*cur != 0 && strcmp((*cur)->data.c_str(), str) != 0) { + cur = &(*cur)->next; + } + if (*cur == 0) { + *cur = new StringListNode(str); + return true; + } else { + return false; + } + } + + PosibErr<bool> StringList::remove(ParmStr str) + { + //CERR.printf("REM %s\n", str.str()); + StringListNode * * cur = &first; + while (*cur != 0 && strcmp((*cur)->data.c_str(), str)!=0 ) { + cur = &(*cur)->next; + } + if (*cur == 0) { + return false; + } else { + StringListNode * tmp = *cur; + *cur = (*cur)->next; + delete tmp; + return true; + } + } + + PosibErr<void> StringList::clear() + { + //CERR.printf("CLEAR\n"); + StringListNode * temp; + while (first != 0) { + temp = first; + first = temp->next; + delete temp; + } + first = 0; + return no_err; + } + + StringEnumeration * StringList::elements() const + { + return new StringListEnumeration(first); + } + + StringList * new_string_list() { + return new StringList; + } + +} diff --git a/jni/common/string_list.hpp b/jni/common/string_list.hpp new file mode 100644 index 0000000..c4d60bc --- /dev/null +++ b/jni/common/string_list.hpp @@ -0,0 +1,100 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. +#ifndef STRING_LIST_HP_HEADER +#define STRING_LIST_HP_HEADER + +#include "string.hpp" +#include "string_enumeration.hpp" +#include "mutable_container.hpp" +#include "posib_err.hpp" +#include <stdio.h> +#include <cstdio> + +namespace acommon { + + struct StringListNode { + // private data structure + // default copy & destructor unsafe + String data; + StringListNode * next; + StringListNode(ParmStr str, StringListNode * n = 0) + : data(str), next(n) { + } + }; + + class StringListEnumeration : public StringEnumeration { + // default copy and destructor safe + private: + StringListNode * n_; + public: + StringEnumeration * clone() const; + void assign(const StringEnumeration *); + + StringListEnumeration(StringListNode * n) : n_(n) {} + const char * next() { + const char * temp; + if (n_ == 0) { + temp = 0; + } else { + temp = n_->data.c_str(); + n_ = n_->next; + } + return temp; + } + bool at_end() const { + return n_ == 0; + } + }; + + + class StringList : public MutableContainer { + // copy and destructor provided + private: + StringListNode * first; + + StringListNode * * find (ParmStr str); + void copy(const StringList &); + void destroy(); + public: + friend bool operator==(const StringList &, const StringList &); + StringList() : first(0) {} + StringList(const StringList & other) + { + copy(other); + } + StringList & operator= (const StringList & other) + { + destroy(); + copy(other); + return *this; + } + virtual ~StringList() + { + destroy(); + } + + StringList * clone() const; + void assign(const StringList *); + + PosibErr<bool> add(ParmStr); + PosibErr<bool> remove(ParmStr); + PosibErr<void> clear(); + + StringEnumeration * elements() const; + StringListEnumeration elements_obj() const + { + return StringListEnumeration(first); + } + + bool empty() const { return first == 0; } + unsigned int size() const { abort(); return 0; } + + }; + + StringList * new_string_list(); + +} +#endif diff --git a/jni/common/string_list.lo b/jni/common/string_list.lo new file mode 100644 index 0000000..248d894 --- /dev/null +++ b/jni/common/string_list.lo @@ -0,0 +1,12 @@ +# common/string_list.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_list.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/string_map.cpp b/jni/common/string_map.cpp new file mode 100644 index 0000000..121ddea --- /dev/null +++ b/jni/common/string_map.cpp @@ -0,0 +1,89 @@ +#include <string.h> +#include <assert.h> + +#include "parm_string.hpp" +#include "string_map.hpp" +#include "string_pair.hpp" +#include "string_pair_enumeration.hpp" + +#include "hash-t.hpp" + +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +namespace acommon { + + // needed for darwin + template HashTable<StringMap::Parms>::iterator + HashTable<StringMap::Parms>::find_i(char const* const&, bool&); + template std::pair<HashTable<StringMap::Parms>::iterator,bool> + HashTable<StringMap::Parms>::insert(const StringPair &); + template void HashTable<StringMap::Parms>::init(unsigned int); + template void HashTable<StringMap::Parms>::del(void); + template HashTable<StringMap::Parms>::size_type + HashTable<StringMap::Parms>::erase(char const* const&); + template void BlockSList<StringPair>::clear(void); + + void StringMap::copy(const StringMap & other) + { + lookup_ = other.lookup_; + for (Iter_ i = lookup_.begin(); + !(i == lookup_.end()); // i != lookup_.end() causes problems + // with gcc-2.95 + ++i) + { + i->first = buffer_.dup(i->first); + i->second = buffer_.dup(i->second); + } + } + + + class StringMapEnumeration : public StringPairEnumeration { + StringMap::CIter_ i; + StringMap::CIter_ end; + public: + StringMapEnumeration(StringMap::CIter_ i0, StringMap::CIter_ e0) + : i(i0), end(e0) {} + StringPairEnumeration * clone() const; + void assign(const StringPairEnumeration *); + bool at_end() const; + StringPair next(); + }; + + StringPairEnumeration * StringMapEnumeration::clone() const { + return new StringMapEnumeration(*this); + } + + void + StringMapEnumeration::assign + (const StringPairEnumeration * other) + { + *this = *(const StringMapEnumeration *)(other); + } + + bool StringMapEnumeration::at_end() const { + return i == end; + } + + StringPair StringMapEnumeration::next() { + StringPair temp; + if (i == end) + return temp; + temp = *i; + ++i; + return temp; + } + + StringPairEnumeration * StringMap::elements() const { + return new StringMapEnumeration(lookup_.begin(), lookup_.end()); + } + + StringMap * new_string_map() + { + return new StringMap(); + } +} + diff --git a/jni/common/string_map.hpp b/jni/common/string_map.hpp new file mode 100644 index 0000000..b549b21 --- /dev/null +++ b/jni/common/string_map.hpp @@ -0,0 +1,125 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_STRING_MAP__HPP +#define ASPELL_STRING_MAP__HPP + +#include "mutable_container.hpp" +#include "parm_string.hpp" +#include "posib_err.hpp" +#include "string_pair.hpp" +#include "hash.hpp" +#include "objstack.hpp" + + +namespace acommon { + +class StringPairEnumeration; + +using std::pair; + +class StringMap : public MutableContainer { +public: // but don't use + struct Parms { + typedef StringPair Value; + typedef const char * Key; + const char * key(const Value & v) {return v.first;} + static const bool is_multi = false; + acommon::hash<const char *> hash; + bool equal(const char * x, const char * y) {return strcmp(x,y) == 0;} + }; + typedef StringPair Value_; + typedef HashTable<Parms> Lookup; + typedef Lookup::iterator Iter_; + typedef Lookup::const_iterator CIter_; +private: + HashTable<Parms> lookup_; + ObjStack buffer_; + const char empty_str[1]; + + void copy(const StringMap & other); + + // copy and destructor provided +public: + PosibErr<void> clear() {lookup_.clear(); buffer_.reset(); return no_err;} + + StringMap() : empty_str() {} + StringMap(const StringMap & other) : empty_str() {copy(other);} + StringMap & operator= (const StringMap & o) {clear(); copy(o); return *this;} + ~StringMap() {} + + StringMap * clone() const { + return new StringMap(*this); + } + void assign(const StringMap * other) { + *this = *(const StringMap *)(other); + } + + StringPairEnumeration * elements() const; + + // insert a new element. Will NOT overwrite an existing entry. + // returns false if the element already exists. + bool insert(ParmStr key, ParmStr value) { + pair<Iter_,bool> res = lookup_.insert(Value_(key,0)); + if (res.second) { + res.first->first = buffer_.dup(key); + res.first->second = buffer_.dup(value); + return true; + } else { + return false; + } + } + PosibErr<bool> add(ParmStr key) { + pair<Iter_,bool> res = lookup_.insert(Value_(key,0)); + if (res.second) { + res.first->first = buffer_.dup(key); + res.first->second = empty_str; + return true; + } else { + return false; + } + } + // insert a new element. WILL overwrite an exitsing entry + // always returns true + bool replace(ParmStr key, ParmStr value) { + pair<Iter_,bool> res = lookup_.insert(Value_(key,0)); + if (res.second) { + res.first->first = buffer_.dup(key); + res.first->second = buffer_.dup(value); + } else { + res.first->second = buffer_.dup(value); + } + return true; + } + + // removes an element. Returns true if the element existed. + PosibErr<bool> remove(ParmStr key) {return lookup_.erase(key);} + + // looks up an element. Returns null if the element did not exist. + // returns an empty string if the element exists but has a null value + // otherwise returns the value + const char * lookup(ParmStr key) const + { + CIter_ i = lookup_.find(key); + if (i == lookup_.end()) + return 0; + else + return i->second; + } + + bool have(ParmStr key) const {return lookup(key) != 0;} + + unsigned int size() const {return lookup_.size();} + bool empty() const {return lookup_.empty();} + +}; + +StringMap * new_string_map(); + + +} + +#endif /* ASPELL_STRING_MAP__HPP */ diff --git a/jni/common/string_map.lo b/jni/common/string_map.lo new file mode 100644 index 0000000..2f361d2 --- /dev/null +++ b/jni/common/string_map.lo @@ -0,0 +1,12 @@ +# common/string_map.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_map.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/string_pair.hpp b/jni/common/string_pair.hpp new file mode 100644 index 0000000..28d5e75 --- /dev/null +++ b/jni/common/string_pair.hpp @@ -0,0 +1,25 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_STRING_PAIR__HPP +#define ASPELL_STRING_PAIR__HPP + + +namespace acommon { + + +struct StringPair { + const char * first; + const char * second; + StringPair(const char * f, const char * s) + : first(f), second(s) {} + StringPair() : first(""), second("") {} +}; + + +} + +#endif /* ASPELL_STRING_PAIR__HPP */ diff --git a/jni/common/string_pair_enumeration.hpp b/jni/common/string_pair_enumeration.hpp new file mode 100644 index 0000000..3b96f3c --- /dev/null +++ b/jni/common/string_pair_enumeration.hpp @@ -0,0 +1,31 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_STRING_PAIR_ENUMERATION__HPP +#define ASPELL_STRING_PAIR_ENUMERATION__HPP + +#include "string_pair.hpp" + +namespace acommon { + +class StringPairEnumeration; + +class StringPairEnumeration { + public: + virtual bool at_end() const = 0; + virtual StringPair next() = 0; + virtual StringPairEnumeration * clone() const = 0; + virtual void assign(const StringPairEnumeration * other) = 0; + StringPairEnumeration() {} + virtual ~StringPairEnumeration() {} +}; + + +} + +#endif /* ASPELL_STRING_PAIR_ENUMERATION__HPP */ diff --git a/jni/common/strtonum.cpp b/jni/common/strtonum.cpp new file mode 100644 index 0000000..0a55912 --- /dev/null +++ b/jni/common/strtonum.cpp @@ -0,0 +1,95 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Melvin Hadasht and Kevin Atkinson under the +// GNU LGPL license version 2.0 or 2.1. You should have received a +// copy of the LGPL license along with this library if you did not you +// can find it at http://www.gnu.org/. + +#include <stdlib.h> + +#include "strtonum.hpp" +#include "asc_ctype.hpp" + +namespace acommon { + + static double strtodbl_c(const char * nptr, const char ** endptr) + { + double x = 0.0; + double y = 0.0; + double decimal = 1.0; + int negative = 0; + const char * str = nptr; + + while (asc_isspace(*str)) + str++; + if (!*str) + goto END_STRTODBL_C; + if (*str == '-') { + negative = 1; + str++; + } else if (*str == '+') + str++; + if (!*str) + goto END_STRTODBL_C; + while (*str >= '0' && *str <= '9') { + x = x * 10.0 + (*str - '0'); + str++; + } + if (!*str || *str != '.') + goto END_STRTODBL_C; + str++; + decimal = 1.0; + while (*str >= '0' && *str <= '9') { + decimal *= 0.1; + y = y + (*str - '0')*decimal; + str++; + } + END_STRTODBL_C: + if (endptr) + *endptr = (char *) str; + return negative ? -(x + y) : (x + y); + } + + double strtod_c(const char * nptr, const char ** endptr) + { + double x; + const char * eptr; + x = strtodbl_c(nptr, &eptr); + if (*eptr == 'E' || *eptr == 'e') { + const char *nptr2 = eptr; + long int y, i; + double e = 1.0; + nptr2++; + y = strtol(nptr2, (char **)&eptr, 10); + if (y) { + for (i=0; i < ( y < 0 ? -y : y); i++) + e *= 10.0; + x = (y < 0) ? x / e : x * e; + } + } + if (endptr) + *endptr = eptr; + return x; + } + + long strtoi_c(const char * npter, const char ** endptr) { + + char * str = (char*)npter; + long num = 0; + long sign = 1; + + *endptr = str; + while (asc_isspace(*str)) { + str++; + } + if (*str == '-' || *str == '+') { + sign = *(str++) == '-' ? -1 : 1; + } + while (*str >= '0' && *str <= '9' ) { + num = num * 10 + (long)(*str - '0'); + str++; + } + *endptr = str; + return num; + } +} + diff --git a/jni/common/strtonum.hpp b/jni/common/strtonum.hpp new file mode 100644 index 0000000..5eaa287 --- /dev/null +++ b/jni/common/strtonum.hpp @@ -0,0 +1,19 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Melvin Hadasht and Kevin Atkinson under the +// GNU LGPL license version 2.0 or 2.1. You should have received a +// copy of the LGPL license along with this library if you did not you +// can find it at http://www.gnu.org/. + +#ifndef ASPELL_STRTONUM__HPP +#define ASPELL_STRTONUM__HPP + +namespace acommon { + + // Local independent numeric conversion. It is OK if + // nptr == *endptr + double strtod_c(const char * nptr, const char ** endptr); + long strtoi_c(const char * npter, const char ** endptr); + +} + +#endif diff --git a/jni/common/strtonum.lo b/jni/common/strtonum.lo new file mode 100644 index 0000000..635f8ff --- /dev/null +++ b/jni/common/strtonum.lo @@ -0,0 +1,12 @@ +# common/strtonum.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strtonum.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/tokenizer.cpp b/jni/common/tokenizer.cpp new file mode 100644 index 0000000..2df2eb3 --- /dev/null +++ b/jni/common/tokenizer.cpp @@ -0,0 +1,31 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "tokenizer.hpp" +#include "convert.hpp" + +namespace acommon +{ + + Tokenizer::Tokenizer() + : word_begin(0), word_end(0), end(0), + begin_pos(0), end_pos(0), + conv_(0) + {} + + Tokenizer::~Tokenizer() + {} + + void Tokenizer::reset (FilterChar * begin, FilterChar * end) + { + bool can_encode = conv_->encode(begin, end, buf_); + assert(can_encode); + end_pos = 0; + word_end = begin; + end = end; + } + +} diff --git a/jni/common/tokenizer.hpp b/jni/common/tokenizer.hpp new file mode 100644 index 0000000..e62d1b3 --- /dev/null +++ b/jni/common/tokenizer.hpp @@ -0,0 +1,72 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ACOMMON_TOKENIZER__HPP +#define ACOMMON_TOKENIZER__HPP + +#include "char_vector.hpp" +#include "filter_char.hpp" +#include "filter_char_vector.hpp" + +namespace acommon { + + class Convert; + class Speller; + class Config; + + class Tokenizer { + + public: + Tokenizer(); + virtual ~Tokenizer(); + + FilterChar * word_begin; + FilterChar * word_end; + FilterChar * end; + + CharVector word; // this word is in the final encoded form + unsigned int begin_pos; // pointers back to the original word + unsigned int end_pos; + + // The string passed in _must_ have a null character + // at stop - 1. (ie stop must be one past the end) + void reset (FilterChar * in, FilterChar * stop); + bool at_end() const {return word_begin == word_end;} + + virtual bool advance() = 0; // returns false if there is nothing left + + bool is_begin(unsigned char c) const + {return char_type_[c].begin;} + bool is_middle(unsigned char c) const + {return char_type_[c].middle;} + bool is_end(unsigned char c) const + {return char_type_[c].end;} + bool is_word(unsigned char c) const + {return char_type_[c].word;} + + public: // but don't use + // The speller class is expected to fill these members in + struct CharType { + bool begin; + bool middle; + bool end; + bool word; + CharType() : begin(false), middle(false), end(false), word(false) {} + }; + + CharType char_type_[256]; + Convert * conv_; + FilterCharVector buf_; + }; + + // returns a new tokenizer and sets it up with the given speller + // class + + PosibErr<Tokenizer *> new_tokenizer(Speller *); + +} + +#endif diff --git a/jni/common/tokenizer.lo b/jni/common/tokenizer.lo new file mode 100644 index 0000000..02c8118 --- /dev/null +++ b/jni/common/tokenizer.lo @@ -0,0 +1,12 @@ +# common/tokenizer.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tokenizer.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/common/type_id.hpp b/jni/common/type_id.hpp new file mode 100644 index 0000000..eb74baf --- /dev/null +++ b/jni/common/type_id.hpp @@ -0,0 +1,27 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_TYPE_ID__HPP +#define ASPELL_TYPE_ID__HPP + +#include "parm_string.hpp" + +namespace acommon { + + +union TypeId { + unsigned int num; + char str[4]; + TypeId(ParmString str); + TypeId() : num(0) {} +}; + + +} + +#endif /* ASPELL_TYPE_ID__HPP */ diff --git a/jni/common/vararray.hpp b/jni/common/vararray.hpp new file mode 100644 index 0000000..184fe6c --- /dev/null +++ b/jni/common/vararray.hpp @@ -0,0 +1,54 @@ + +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_VARARRAY__HPP +#define ASPELL_VARARRAY__HPP + +#ifndef __GNUC__ +# include <stdlib.h> +#endif + +namespace acommon { + +// only use this on types with a trivial constructors destructor + +#ifdef __GNUC__ // use variable arrays + +#define VARARRAY(type, name, num) type name[num] +#define VARARRAYM(type, name, num, max) type name[num] + +#else // use malloc + + struct MallocPtr { + void * ptr; + MallocPtr() : ptr(0) {}; + ~MallocPtr() {if (ptr) free(ptr);} + }; + +#define VARARRAY(type, name, num) \ + acommon::MallocPtr name##_data; \ + name##_data.ptr = malloc(sizeof(type) * (num)); \ + type * name = (type *)name##_data.ptr + +#define VARARRAYM(type, name, num, max) type name[max] + +#endif + +#if 0 // this version uses alloca + +#define VARARRAY(type, name, num) \ + type * name = (type *)alloca(sizeof(type) * (num)) + +#define VARARRAYM(type, name, num, max) \ + type * name = (type *)alloca(sizeof(type) * (num)) + +#endif + +} + +#endif + diff --git a/jni/common/vector.hpp b/jni/common/vector.hpp new file mode 100644 index 0000000..782e4b0 --- /dev/null +++ b/jni/common/vector.hpp @@ -0,0 +1,61 @@ +// This file is part of The New Aspell +// Copyright (C) 2001-2003 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#ifndef ASPELL_VECTOR__HPP +#define ASPELL_VECTOR__HPP + +#include <vector> + +namespace acommon +{ + template <typename T> + class Vector : public std::vector<T> + { + public: + + Vector() {} + Vector(unsigned int s) : std::vector<T>(s) {} + Vector(unsigned int s, const T & val) : std::vector<T>(s, val) {} + + void append(T t) { + this->push_back(t); + } + void append(const T * begin, unsigned int size) { + this->insert(this->end(), begin, begin+size); + } + void append(const T * begin, const T * end) { + this->insert(this->end(), begin, end); + } + int alloc(int s) { + int pos = this->size(); + this->resize(pos + s); + return pos; + } + T * data() {return &*this->begin();} + T * data(int pos) {return &*this->begin() + pos;} + T * data_end() {return &this->back()+1;} + + T * pbegin() {return &*this->begin();} + T * pend() {return &this->back()+1;} + + const T * pbegin() const {return &*this->begin();} + const T * pend() const {return &this->back()+1;} + + template <typename U> + U * datap() { + return reinterpret_cast<U * >(&this->front()); + } + template <typename U> + U * datap(int pos) { + return reinterpret_cast<U * >(&this->front() + pos); + } + + void pop_front() {this->erase(this->begin());} + void push_front(const T & v) {this->insert(this->begin(), v);} + }; +} + +#endif diff --git a/jni/common/word_list.hpp b/jni/common/word_list.hpp new file mode 100644 index 0000000..5762af8 --- /dev/null +++ b/jni/common/word_list.hpp @@ -0,0 +1,30 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#ifndef ASPELL_WORD_LIST__HPP +#define ASPELL_WORD_LIST__HPP + + +namespace acommon { + +class StringEnumeration; + +class WordList { + public: + class Convert * from_internal_; + virtual bool empty() const = 0; + virtual unsigned int size() const = 0; + virtual StringEnumeration * elements() const = 0; + WordList() : from_internal_(0) {} + virtual ~WordList() {} +}; + + +} + +#endif /* ASPELL_WORD_LIST__HPP */ diff --git a/jni/dirs.h b/jni/dirs.h new file mode 100644 index 0000000..9fc2245 --- /dev/null +++ b/jni/dirs.h @@ -0,0 +1,4 @@ +#define PREFIX "/sdcard/aspell" +#define DATA_DIR "<prefix>" +#define DICT_DIR "<prefix>" +#define CONF_DIR "<prefix>" diff --git a/jni/lib/.deps/.dirstamp b/jni/lib/.deps/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/lib/.deps/can_have_error-c.Plo b/jni/lib/.deps/can_have_error-c.Plo new file mode 100644 index 0000000..7a0f6a3 --- /dev/null +++ b/jni/lib/.deps/can_have_error-c.Plo @@ -0,0 +1,16 @@ +lib/can_have_error-c.lo: lib/can_have_error-c.cpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/error.hpp + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/error.hpp: diff --git a/jni/lib/.deps/config-c.Plo b/jni/lib/.deps/config-c.Plo new file mode 100644 index 0000000..6b87d7d --- /dev/null +++ b/jni/lib/.deps/config-c.Plo @@ -0,0 +1,249 @@ +lib/config-c.lo: lib/config-c.cpp common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/error.hpp \ + common/posib_err.hpp common/string.hpp + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/error.hpp: + +common/posib_err.hpp: + +common/string.hpp: diff --git a/jni/lib/.deps/document_checker-c.Plo b/jni/lib/.deps/document_checker-c.Plo new file mode 100644 index 0000000..0107b6c --- /dev/null +++ b/jni/lib/.deps/document_checker-c.Plo @@ -0,0 +1,273 @@ +lib/document_checker-c.lo: lib/document_checker-c.cpp \ + common/document_checker.hpp common/filter.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/error.hpp common/filter_char.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/char_vector.hpp \ + common/filter_char_vector.hpp common/error.hpp + +common/document_checker.hpp: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/filter_char.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/char_vector.hpp: + +common/filter_char_vector.hpp: + +common/error.hpp: diff --git a/jni/lib/.deps/dummy.Plo b/jni/lib/.deps/dummy.Plo new file mode 100644 index 0000000..b55e314 --- /dev/null +++ b/jni/lib/.deps/dummy.Plo @@ -0,0 +1 @@ +lib/dummy.lo: lib/dummy.cpp diff --git a/jni/lib/.deps/error-c.Plo b/jni/lib/.deps/error-c.Plo new file mode 100644 index 0000000..fb57eda --- /dev/null +++ b/jni/lib/.deps/error-c.Plo @@ -0,0 +1,3 @@ +lib/error-c.lo: lib/error-c.cpp common/error.hpp + +common/error.hpp: diff --git a/jni/lib/.deps/filter-c.Plo b/jni/lib/.deps/filter-c.Plo new file mode 100644 index 0000000..f798b68 --- /dev/null +++ b/jni/lib/.deps/filter-c.Plo @@ -0,0 +1,266 @@ +lib/filter-c.lo: lib/filter-c.cpp common/error.hpp common/filter.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/filter_char.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h + +common/error.hpp: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/filter_char.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: diff --git a/jni/lib/.deps/find_speller.Plo b/jni/lib/.deps/find_speller.Plo new file mode 100644 index 0000000..15278db --- /dev/null +++ b/jni/lib/.deps/find_speller.Plo @@ -0,0 +1,358 @@ +lib/find_speller.lo: lib/find_speller.cpp /usr/include/assert.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/string.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h \ + /usr/include/linux/limits.h common/asc_ctype.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/config.hpp common/can_have_error.hpp \ + common/key_info.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix2_lim.h \ + /usr/include/bits/xopen_lim.h /usr/include/bits/stdio_lim.h \ + common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo common/errors.hpp common/filter.hpp \ + common/fstream.hpp common/getdata.hpp common/info.hpp common/type_id.hpp \ + common/speller.hpp common/stack_ptr.hpp common/string_enumeration.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/string_map.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/objstack.hpp common/gettext.h \ + /usr/include/libintl.h + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/string.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +common/asc_ctype.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/errors.hpp: + +common/filter.hpp: + +common/fstream.hpp: + +common/getdata.hpp: + +common/info.hpp: + +common/type_id.hpp: + +common/speller.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/string_map.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/lib/.deps/info-c.Plo b/jni/lib/.deps/info-c.Plo new file mode 100644 index 0000000..d2ee38f --- /dev/null +++ b/jni/lib/.deps/info-c.Plo @@ -0,0 +1,210 @@ +lib/info-c.lo: lib/info-c.cpp common/info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/type_id.hpp + +common/info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/type_id.hpp: diff --git a/jni/lib/.deps/mutable_container-c.Plo b/jni/lib/.deps/mutable_container-c.Plo new file mode 100644 index 0000000..86d62aa --- /dev/null +++ b/jni/lib/.deps/mutable_container-c.Plo @@ -0,0 +1,208 @@ +lib/mutable_container-c.lo: lib/mutable_container-c.cpp \ + common/mutable_container.hpp common/parm_string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp + +common/mutable_container.hpp: + +common/parm_string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: diff --git a/jni/lib/.deps/new_checker.Plo b/jni/lib/.deps/new_checker.Plo new file mode 100644 index 0000000..040306a --- /dev/null +++ b/jni/lib/.deps/new_checker.Plo @@ -0,0 +1,291 @@ +lib/new_checker.lo: lib/new_checker.cpp common/speller.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/clone_ptr.hpp common/mutable_string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp \ + common/char_vector.hpp common/document_checker.hpp common/filter.hpp \ + common/filter_char.hpp common/vector.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/filter_char_vector.hpp \ + common/stack_ptr.hpp /usr/include/assert.h common/convert.hpp \ + common/stack_ptr.hpp common/cache.hpp common/tokenizer.hpp + +common/speller.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/clone_ptr.hpp: + +common/mutable_string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/char_vector.hpp: + +common/document_checker.hpp: + +common/filter.hpp: + +common/filter_char.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/convert.hpp: + +common/stack_ptr.hpp: + +common/cache.hpp: + +common/tokenizer.hpp: diff --git a/jni/lib/.deps/new_config.Plo b/jni/lib/.deps/new_config.Plo new file mode 100644 index 0000000..fd2dae9 --- /dev/null +++ b/jni/lib/.deps/new_config.Plo @@ -0,0 +1,271 @@ +lib/new_config.lo: lib/new_config.cpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/errors.hpp common/filter.hpp \ + common/filter_char.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/errors.hpp: + +common/filter.hpp: + +common/filter_char.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: diff --git a/jni/lib/.deps/new_filter.Plo b/jni/lib/.deps/new_filter.Plo new file mode 100644 index 0000000..da61772 --- /dev/null +++ b/jni/lib/.deps/new_filter.Plo @@ -0,0 +1,376 @@ +lib/new_filter.lo: lib/new_filter.cpp gen/settings.h common/cache-t.hpp \ + common/lock.hpp /usr/include/assert.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/pthread.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sched.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/time.h /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/xlocale.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/setjmp.h common/cache.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/bits/string3.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/enumeration.hpp \ + common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo common/errors.hpp common/filter.hpp \ + common/filter_char.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h lib/filter_entry.hpp common/indiv_filter.hpp \ + common/fstream.hpp common/getdata.hpp common/iostream.hpp \ + common/fstream.hpp common/itemize.hpp common/key_info.hpp \ + common/parm_string.hpp common/posib_err.hpp common/stack_ptr.hpp \ + common/string_enumeration.hpp common/type_id.hpp common/char_vector.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/string_map.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h common/block_slist.hpp \ + common/objstack.hpp common/strtonum.hpp common/file_util.hpp \ + /usr/include/dlfcn.h /usr/include/bits/dlfcn.h \ + gen/static_filters.src.cpp + +gen/settings.h: + +common/cache-t.hpp: + +common/lock.hpp: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/pthread.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sched.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/xlocale.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +common/cache.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/errors.hpp: + +common/filter.hpp: + +common/filter_char.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +lib/filter_entry.hpp: + +common/indiv_filter.hpp: + +common/fstream.hpp: + +common/getdata.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/itemize.hpp: + +common/key_info.hpp: + +common/parm_string.hpp: + +common/posib_err.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/string_map.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/strtonum.hpp: + +common/file_util.hpp: + +/usr/include/dlfcn.h: + +/usr/include/bits/dlfcn.h: + +gen/static_filters.src.cpp: diff --git a/jni/lib/.deps/new_fmode.Plo b/jni/lib/.deps/new_fmode.Plo new file mode 100644 index 0000000..315a97f --- /dev/null +++ b/jni/lib/.deps/new_fmode.Plo @@ -0,0 +1,346 @@ +lib/new_fmode.lo: lib/new_fmode.cpp gen/settings.h \ + /usr/include/sys/types.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/regex.h \ + /usr/include/gnu/option-groups.h common/stack_ptr.hpp \ + /usr/include/assert.h common/cache-t.hpp common/lock.hpp \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/xlocale.h /usr/include/bits/setjmp.h common/cache.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/string.hpp common/vector.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/key_info.hpp common/vector.hpp common/errors.hpp \ + common/filter.hpp common/filter_char.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + common/string_enumeration.hpp common/type_id.hpp common/char_vector.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/posib_err.hpp common/file_util.hpp common/fstream.hpp \ + common/getdata.hpp common/strtonum.hpp common/asc_ctype.hpp \ + common/iostream.hpp common/fstream.hpp common/gettext.h \ + /usr/include/libintl.h + +gen/settings.h: + +/usr/include/sys/types.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/regex.h: + +/usr/include/gnu/option-groups.h: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/cache-t.hpp: + +common/lock.hpp: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/xlocale.h: + +/usr/include/bits/setjmp.h: + +common/cache.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/string.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +common/errors.hpp: + +common/filter.hpp: + +common/filter_char.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/posib_err.hpp: + +common/file_util.hpp: + +common/fstream.hpp: + +common/getdata.hpp: + +common/strtonum.hpp: + +common/asc_ctype.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/lib/.deps/speller-c.Plo b/jni/lib/.deps/speller-c.Plo new file mode 100644 index 0000000..0e13b90 --- /dev/null +++ b/jni/lib/.deps/speller-c.Plo @@ -0,0 +1,292 @@ +lib/speller-c.lo: lib/speller-c.cpp common/convert.hpp common/string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/stack_ptr.hpp \ + /usr/include/assert.h common/filter.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/cache.hpp common/error.hpp \ + common/mutable_string.hpp common/posib_err.hpp common/speller.hpp \ + common/clone_ptr.hpp common/word_list.hpp + +common/convert.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/error.hpp: + +common/mutable_string.hpp: + +common/posib_err.hpp: + +common/speller.hpp: + +common/clone_ptr.hpp: + +common/word_list.hpp: diff --git a/jni/lib/.deps/string_enumeration-c.Plo b/jni/lib/.deps/string_enumeration-c.Plo new file mode 100644 index 0000000..e05d28d --- /dev/null +++ b/jni/lib/.deps/string_enumeration-c.Plo @@ -0,0 +1,283 @@ +lib/string_enumeration-c.lo: lib/string_enumeration-c.cpp \ + common/convert.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/stack_ptr.hpp \ + /usr/include/assert.h common/filter.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/cache.hpp \ + common/string_enumeration.hpp common/type_id.hpp + +common/convert.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: diff --git a/jni/lib/.deps/string_list-c.Plo b/jni/lib/.deps/string_list-c.Plo new file mode 100644 index 0000000..5efb1cd --- /dev/null +++ b/jni/lib/.deps/string_list-c.Plo @@ -0,0 +1,239 @@ +lib/string_list-c.lo: lib/string_list-c.cpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/string_list.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/char_vector.hpp common/mutable_container.hpp common/posib_err.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/c++/4.5/cstdio + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/mutable_container.hpp: + +common/posib_err.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/c++/4.5/cstdio: diff --git a/jni/lib/.deps/string_map-c.Plo b/jni/lib/.deps/string_map-c.Plo new file mode 100644 index 0000000..bf995ca --- /dev/null +++ b/jni/lib/.deps/string_map-c.Plo @@ -0,0 +1,234 @@ +lib/string_map-c.lo: lib/string_map-c.cpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + common/string_map.hpp common/mutable_container.hpp common/posib_err.hpp \ + common/string_pair.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/objstack.hpp /usr/include/assert.h + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/posib_err.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +/usr/include/assert.h: diff --git a/jni/lib/.deps/string_pair_enumeration-c.Plo b/jni/lib/.deps/string_pair_enumeration-c.Plo new file mode 100644 index 0000000..3a957ca --- /dev/null +++ b/jni/lib/.deps/string_pair_enumeration-c.Plo @@ -0,0 +1,9 @@ +lib/string_pair_enumeration-c.lo: lib/string_pair_enumeration-c.cpp \ + common/string_pair.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp + +common/string_pair.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: diff --git a/jni/lib/.deps/word_list-c.Plo b/jni/lib/.deps/word_list-c.Plo new file mode 100644 index 0000000..b10e25d --- /dev/null +++ b/jni/lib/.deps/word_list-c.Plo @@ -0,0 +1,205 @@ +lib/word_list-c.lo: lib/word_list-c.cpp common/string_enumeration.hpp \ + common/parm_string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/type_id.hpp common/char_vector.hpp \ + common/string.hpp /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/word_list.hpp + +common/string_enumeration.hpp: + +common/parm_string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/word_list.hpp: diff --git a/jni/lib/.dirstamp b/jni/lib/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/lib/Makefile b/jni/lib/Makefile new file mode 100644 index 0000000..9141085 --- /dev/null +++ b/jni/lib/Makefile @@ -0,0 +1,4 @@ +top_srcdir = .. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/lib/Makefile.in b/jni/lib/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/lib/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/lib/can_have_error-c.cpp b/jni/lib/can_have_error-c.cpp new file mode 100644 index 0000000..0a5057b --- /dev/null +++ b/jni/lib/can_have_error-c.cpp @@ -0,0 +1,40 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "can_have_error.hpp" +#include "error.hpp" + +namespace acommon { + +class CanHaveError; +struct Error; + +extern "C" unsigned int aspell_error_number(const CanHaveError * ths) +{ + return ths->err_ == 0 ? 0 : 1; +} + +extern "C" const char * aspell_error_message(const CanHaveError * ths) +{ + return ths->err_ ? ths->err_->mesg : ""; +} + +extern "C" const Error * aspell_error(const CanHaveError * ths) +{ + return ths->err_; +} + +extern "C" void delete_aspell_can_have_error(CanHaveError * ths) +{ + delete ths; +} + + + +} + diff --git a/jni/lib/can_have_error-c.lo b/jni/lib/can_have_error-c.lo new file mode 100644 index 0000000..b4c675c --- /dev/null +++ b/jni/lib/can_have_error-c.lo @@ -0,0 +1,12 @@ +# lib/can_have_error-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/can_have_error-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/config-c.cpp b/jni/lib/config-c.cpp new file mode 100644 index 0000000..183f4f9 --- /dev/null +++ b/jni/lib/config-c.cpp @@ -0,0 +1,172 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "config.hpp" +#include "error.hpp" +#include "posib_err.hpp" +#include "string.hpp" + +namespace acommon { + +class Config; +struct Error; +struct KeyInfo; +class KeyInfoEnumeration; +class MutableContainer; +class StringPairEnumeration; + +extern "C" int aspell_key_info_enumeration_at_end(const KeyInfoEnumeration * ths) +{ + return ths->at_end(); +} + +extern "C" const KeyInfo * aspell_key_info_enumeration_next(KeyInfoEnumeration * ths) +{ + return ths->next(); +} + +extern "C" void delete_aspell_key_info_enumeration(KeyInfoEnumeration * ths) +{ + delete ths; +} + +extern "C" KeyInfoEnumeration * aspell_key_info_enumeration_clone(const KeyInfoEnumeration * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_key_info_enumeration_assign(KeyInfoEnumeration * ths, const KeyInfoEnumeration * other) +{ + ths->assign(other); +} + +extern "C" Config * new_aspell_config() +{ + return new_config(); +} + +extern "C" void delete_aspell_config(Config * ths) +{ + delete ths; +} + +extern "C" Config * aspell_config_clone(const Config * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_config_assign(Config * ths, const Config * other) +{ + ths->assign(other); +} + +extern "C" unsigned int aspell_config_error_number(const Config * ths) +{ + return ths->err_ == 0 ? 0 : 1; +} + +extern "C" const char * aspell_config_error_message(const Config * ths) +{ + return ths->err_ ? ths->err_->mesg : ""; +} + +extern "C" const Error * aspell_config_error(const Config * ths) +{ + return ths->err_; +} + +extern "C" void aspell_config_set_extra(Config * ths, const KeyInfo * begin, const KeyInfo * end) +{ + ths->set_extra(begin, end); +} + +extern "C" const KeyInfo * aspell_config_keyinfo(Config * ths, const char * key) +{ + PosibErr<const KeyInfo *> ret = ths->keyinfo(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return ret.data; +} + +extern "C" KeyInfoEnumeration * aspell_config_possible_elements(Config * ths, int include_extra) +{ + return ths->possible_elements(include_extra); +} + +extern "C" const char * aspell_config_get_default(Config * ths, const char * key) +{ + PosibErr<String> ret = ths->get_default(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + ths->temp_str = ret.data; + return ths->temp_str.c_str(); +} + +extern "C" StringPairEnumeration * aspell_config_elements(Config * ths) +{ + return ths->elements(); +} + +extern "C" int aspell_config_replace(Config * ths, const char * key, const char * value) +{ + PosibErr<void> ret = ths->replace(key, value); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" int aspell_config_remove(Config * ths, const char * key) +{ + PosibErr<void> ret = ths->remove(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" int aspell_config_have(const Config * ths, const char * key) +{ + return ths->have(key); +} + +extern "C" const char * aspell_config_retrieve(Config * ths, const char * key) +{ + PosibErr<String> ret = ths->retrieve(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + ths->temp_str = ret.data; + return ths->temp_str.c_str(); +} + +extern "C" int aspell_config_retrieve_list(Config * ths, const char * key, MutableContainer * lst) +{ + PosibErr<void> ret = ths->retrieve_list(key, lst); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" int aspell_config_retrieve_bool(Config * ths, const char * key) +{ + PosibErr<bool> ret = ths->retrieve_bool(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return -1; + return ret.data; +} + +extern "C" int aspell_config_retrieve_int(Config * ths, const char * key) +{ + PosibErr<unsigned int> ret = ths->retrieve_int(key); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return -1; + return ret.data; +} + + + +} + diff --git a/jni/lib/config-c.lo b/jni/lib/config-c.lo new file mode 100644 index 0000000..fc44ced --- /dev/null +++ b/jni/lib/config-c.lo @@ -0,0 +1,12 @@ +# lib/config-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/config-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/document_checker-c.cpp b/jni/lib/document_checker-c.cpp new file mode 100644 index 0000000..ffce994 --- /dev/null +++ b/jni/lib/document_checker-c.cpp @@ -0,0 +1,78 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "document_checker.hpp" +#include "error.hpp" + +namespace acommon { + +class CanHaveError; +class DocumentChecker; +struct Error; +class Filter; +class Speller; + +extern "C" void delete_aspell_document_checker(DocumentChecker * ths) +{ + delete ths; +} + +extern "C" unsigned int aspell_document_checker_error_number(const DocumentChecker * ths) +{ + return ths->err_ == 0 ? 0 : 1; +} + +extern "C" const char * aspell_document_checker_error_message(const DocumentChecker * ths) +{ + return ths->err_ ? ths->err_->mesg : ""; +} + +extern "C" const Error * aspell_document_checker_error(const DocumentChecker * ths) +{ + return ths->err_; +} + +extern "C" CanHaveError * new_aspell_document_checker(Speller * speller) +{ + PosibErr<DocumentChecker *> ret = new_document_checker(speller); + if (ret.has_err()) { + return new CanHaveError(ret.release_err()); + } else { + return ret; + } +} + +extern "C" DocumentChecker * to_aspell_document_checker(CanHaveError * obj) +{ + return static_cast<DocumentChecker *>(obj); +} + +extern "C" void aspell_document_checker_reset(DocumentChecker * ths) +{ + ths->reset(); +} + +extern "C" void aspell_document_checker_process(DocumentChecker * ths, const char * str, int size) +{ + ths->process(str, size); +} + +extern "C" Token aspell_document_checker_next_misspelling(DocumentChecker * ths) +{ + return ths->next_misspelling(); +} + +extern "C" Filter * aspell_document_checker_filter(DocumentChecker * ths) +{ + return ths->filter(); +} + + + +} + diff --git a/jni/lib/document_checker-c.lo b/jni/lib/document_checker-c.lo new file mode 100644 index 0000000..7675c1f --- /dev/null +++ b/jni/lib/document_checker-c.lo @@ -0,0 +1,12 @@ +# lib/document_checker-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/document_checker-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/dummy.cpp b/jni/lib/dummy.cpp new file mode 100644 index 0000000..0d660cc --- /dev/null +++ b/jni/lib/dummy.cpp @@ -0,0 +1 @@ +void pspell_aspell_dummy() {} diff --git a/jni/lib/dummy.lo b/jni/lib/dummy.lo new file mode 100644 index 0000000..5ba0ddf --- /dev/null +++ b/jni/lib/dummy.lo @@ -0,0 +1,12 @@ +# lib/dummy.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dummy.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/error-c.cpp b/jni/lib/error-c.cpp new file mode 100644 index 0000000..87caa51 --- /dev/null +++ b/jni/lib/error-c.cpp @@ -0,0 +1,24 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "error.hpp" + +namespace acommon { + +struct Error; +struct ErrorInfo; + +extern "C" int aspell_error_is_a(const Error * ths, const ErrorInfo * e) +{ + return ths->is_a(e); +} + + + +} + diff --git a/jni/lib/error-c.lo b/jni/lib/error-c.lo new file mode 100644 index 0000000..0a211e9 --- /dev/null +++ b/jni/lib/error-c.lo @@ -0,0 +1,12 @@ +# lib/error-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/error-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/filter-c.cpp b/jni/lib/filter-c.cpp new file mode 100644 index 0000000..75d1d83 --- /dev/null +++ b/jni/lib/filter-c.cpp @@ -0,0 +1,46 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "error.hpp" +#include "filter.hpp" + +namespace acommon { + +class CanHaveError; +struct Error; +class Filter; + +extern "C" void delete_aspell_filter(Filter * ths) +{ + delete ths; +} + +extern "C" unsigned int aspell_filter_error_number(const Filter * ths) +{ + return ths->err_ == 0 ? 0 : 1; +} + +extern "C" const char * aspell_filter_error_message(const Filter * ths) +{ + return ths->err_ ? ths->err_->mesg : ""; +} + +extern "C" const Error * aspell_filter_error(const Filter * ths) +{ + return ths->err_; +} + +extern "C" Filter * to_aspell_filter(CanHaveError * obj) +{ + return static_cast<Filter *>(obj); +} + + + +} + diff --git a/jni/lib/filter-c.lo b/jni/lib/filter-c.lo new file mode 100644 index 0000000..0d3673b --- /dev/null +++ b/jni/lib/filter-c.lo @@ -0,0 +1,12 @@ +# lib/filter-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/filter-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/filter_entry.hpp b/jni/lib/filter_entry.hpp new file mode 100644 index 0000000..e96324c --- /dev/null +++ b/jni/lib/filter_entry.hpp @@ -0,0 +1,19 @@ +#ifndef FILTER_ENTRY_HEADER +#define FILTER_ENTRY_HEADER + +#include "indiv_filter.hpp" + +namespace acommon { + + typedef IndividualFilter * (FilterFun) (); + + struct FilterEntry + { + const char * name; + FilterFun * decoder; + FilterFun * filter; + FilterFun * encoder; + }; +}; +#endif + diff --git a/jni/lib/find_speller.cpp b/jni/lib/find_speller.cpp new file mode 100644 index 0000000..3ea469c --- /dev/null +++ b/jni/lib/find_speller.cpp @@ -0,0 +1,494 @@ +// This file is part of The New Aspell +// Copyright (C) 2000-2001 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include <assert.h> +#include <string.h> + +// POSIX includes +#include <sys/types.h> +#include <dirent.h> + +#include "asc_ctype.hpp" +#include "can_have_error.hpp" +#include "config.hpp" +#include "convert.hpp" +#include "enumeration.hpp" +#include "errors.hpp" +#include "filter.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "info.hpp" +#include "speller.hpp" +#include "stack_ptr.hpp" +#include "string_enumeration.hpp" +#include "string_list.hpp" +#include "string_map.hpp" + +#include "gettext.h" + +#if 0 +#include "preload.h" +#define LT_NON_POSIX_NAMESPACE 1 +#ifdef USE_LTDL +#include <ltdl.h> +#endif +#endif + +using namespace acommon; + +namespace acommon { + + static void free_lt_handle(SpellerLtHandle h) + { +#ifdef USE_LTDL + int s; + s = lt_dlclose((lt_dlhandle)h); + assert (s == 0); + s = lt_dlexit(); + assert (s == 0); +#endif + } + + extern "C" + Speller * libaspell_speller_default_LTX_new_speller_class(SpellerLtHandle); + + PosibErr<Speller *> get_speller_class(Config * config) + { + String name = config->retrieve("module"); + assert(name == "default"); + return libaspell_speller_default_LTX_new_speller_class(0); +#if 0 + unsigned int i; + for (i = 0; i != aspell_speller_funs_size; ++i) { + if (strcmp(name.c_str(), aspell_speller_funs[i].name) == 0) { + return (*aspell_speller_funs[i].fun)(config, 0); + } + } + +#ifdef USE_LTDL + int s = lt_dlinit(); + assert(s == 0); + String libname; + libname = LIBDIR "/libaspell_"; + libname += name; + libname += ".la"; + lt_dlhandle h = lt_dlopen (libname.c_str()); + if (h == 0) + return (new CanHaveErrorImpl()) + ->set_error(cant_load_module, name.c_str()); + lt_ptr_t fun = lt_dlsym (h, "new_aspell_speller_class"); + assert (fun != 0); + CanHaveError * m = (*(NewSpellerClass)(fun))(config, h); + assert (m != 0); + if (m->error_number() != 0) + free_lt_handle(h); + return m; +#else + return (new CanHaveErrorImpl()) + ->set_error(cant_load_module, name.c_str()); +#endif +#endif + } + + // Note this writes all over str + static void split_string_list(StringList & list, ParmString str) + { + const char * s0 = str; + const char * s1; + while (true) { + while (*s0 != '\0' && asc_isspace(*s0)) ++s0; + if (*s0 == '\0') break; + s1 = s0; + while (!asc_isspace(*s1)) ++s1; + String temp(s0,s1-s0); + list.add(temp); + if (*s1 != '\0') + s0 = s1 + 1; + } + } + + enum IsBetter {BetterMatch, WorseMatch, SameMatch}; + + struct Better + { + unsigned int cur_rank; + unsigned int best_rank; + unsigned int worst_rank; + virtual void init() = 0; + virtual void set_best_from_cur() = 0; + virtual void set_cur_rank() = 0; + IsBetter better_match(IsBetter prev); + virtual ~Better(); + }; + + Better::~Better() {} + + IsBetter Better::better_match (IsBetter prev) + { + if (prev == WorseMatch) + return prev; + set_cur_rank(); + if (cur_rank >= worst_rank) + return WorseMatch; + else if (cur_rank < best_rank) + return BetterMatch; + else if (cur_rank == best_rank) + return prev; + else // cur_rank > best_rank + if (prev == SameMatch) + return WorseMatch; + else + return BetterMatch; + } + + struct BetterList : public Better + { + const char * cur; + StringList list; + const char * best; + BetterList(); + void init(); + void set_best_from_cur(); + void set_cur_rank(); + }; + + BetterList::BetterList() + { + } + + void BetterList::init() { + StringListEnumeration es = list.elements_obj(); + worst_rank = 0; + while ( (es.next()) != 0) + ++worst_rank; + best_rank = worst_rank; + } + + void BetterList::set_best_from_cur() + { + best_rank = cur_rank; + best = cur; + } + + void BetterList::set_cur_rank() + { + StringListEnumeration es = list.elements_obj(); + const char * m; + cur_rank = 0; + while ( (m = es.next()) != 0 && strcmp(m, cur) != 0) + ++cur_rank; + } + + struct BetterSize : public Better + { + unsigned int cur; + const char * cur_str; + char req_type; + unsigned int requested; + unsigned int size; + unsigned int best; + const char * best_str; + void init(); + void set_best_from_cur(); + void set_cur_rank(); + }; + + + void BetterSize::init() { + worst_rank = 0xFFF; + best_rank = worst_rank; + } + + void BetterSize::set_best_from_cur() + { + best_rank = cur_rank; + best = cur; + best_str = cur_str; + } + + void BetterSize::set_cur_rank() + { + int diff = cur - requested; + int sign; + if (diff < 0) { + cur_rank = -diff; + sign = -1; + } else { + cur_rank = diff; + sign = 1; + } + cur_rank <<= 1; + if ((sign == -1 && req_type == '+') || (sign == 1 && req_type == '-')) + cur_rank |= 0x1; + else if ((sign == -1 && req_type == '>') || (sign == 1 && req_type == '<')) + cur_rank |= 0x100; + } + + struct BetterVariety : public Better + { + const char * cur; + StringList list; + const char * best; + BetterVariety() {} + void init(); + void set_best_from_cur(); + void set_cur_rank(); + }; + + void BetterVariety::init() { + worst_rank = 3; + best_rank = 3; + } + + void BetterVariety::set_best_from_cur() + { + best_rank = cur_rank; + best = cur; + } + + void BetterVariety::set_cur_rank() + { + if (strlen(cur) == 0) { + cur_rank = 2; + } else { + StringListEnumeration es = list.elements_obj(); + const char * m; + cur_rank = 3; + unsigned list_size = 0, num = 0; + while ( (m = es.next()) != 0 ) { + ++list_size; + unsigned s = strlen(m); + const char * c = cur; + unsigned p; + bool match = false; + num = 0; + for (; *c != '\0'; c += p) { + ++num; + p = strcspn(c, "-"); + if (p == s && memcmp(m, c, s) == 0) {match = true; break;} + if (c[p] == '-') p++; + } + if (!match) goto fail; + cur_rank = 0; + } + if (cur_rank == 0 && num != list_size) cur_rank = 1; + } + return; + fail: + cur_rank = 3; + } + + PosibErr<Config *> find_word_list(Config * c) + { + Config * config = new_config(); + RET_ON_ERR(config->read_in_settings(c)); + String dict_name; + + if (config->have("master")) { + dict_name = config->retrieve("master"); + + } else { + + //////////////////////////////////////////////////////////////////// + // + // Give first preference to an exact match for the language-country + // code, then give preference to those in the alternate code list + // in the order they are presented, then if there is no match + // look for one for just language. If that fails give up. + // Once the best matching code is found, try to find a matching + // variety if one exists, other wise look for one with no variety. + // + + BetterList b_code; + //BetterList b_jargon; + BetterVariety b_variety; + BetterList b_module; + BetterSize b_size; + Better * better[4] = {&b_code,&b_variety,&b_module,&b_size}; + const DictInfo * best = 0; + + // + // retrieve and normalize code + // + const char * p; + String code; + PosibErr<String> str = config->retrieve("lang"); + p = str.data.c_str(); + while (asc_isalpha(*p)) + code += asc_tolower(*p++); + String lang = code; + bool have_country = false; + if (*p == '-' || *p == '_') { + ++p; + have_country = true; + code += '_'; + while (asc_isalpha(*p)) + code += asc_toupper(*p++); + } + + // + // Retrieve acceptable code search orders + // + String lang_country_list; + if (have_country) { + lang_country_list = code; + lang_country_list += ' '; + } + String lang_only_list = lang; + lang_only_list += ' '; + + // read retrieve lang_country_list and lang_only_list from file(s) + // FIXME: Write Me + + // + split_string_list(b_code.list, lang_country_list); + split_string_list(b_code.list, lang_only_list); + b_code.init(); + + // + // Retrieve Variety + // + config->retrieve_list("variety", &b_variety.list); + if (b_variety.list.empty() && config->have("jargon")) + b_variety.list.add(config->retrieve("jargon")); + b_variety.init(); + str.data.clear(); + + // + // Retrieve module list + // + if (config->have("module")) + b_module.list.add(config->retrieve("module")); + else if (config->have("module-search-order")) + config->retrieve_list("module-search-order", &b_module.list); + { + StackPtr<ModuleInfoEnumeration> els(get_module_info_list(config)->elements()); + const ModuleInfo * entry; + while ( (entry = els->next()) != 0) + b_module.list.add(entry->name); + } + b_module.init(); + + // + // Retrieve size + // + str = config->retrieve("size"); + p = str.data.c_str(); + if (p[0] == '+' || p[0] == '-' || p[0] == '<' || p[0] == '>') { + b_size.req_type = p[0]; + ++p; + } else { + b_size.req_type = '+'; + } + if (!asc_isdigit(p[0]) || !asc_isdigit(p[1]) || p[2] != '\0') + abort(); //FIXME: create an error condition here + b_size.requested = atoi(p); + b_size.init(); + + // + // + // + + const DictInfoList * dlist = get_dict_info_list(config); + DictInfoEnumeration * dels = dlist->elements(); + const DictInfo * entry; + + while ( (entry = dels->next()) != 0) { + + b_code .cur = entry->code; + b_module.cur = entry->module->name; + + b_variety.cur = entry->variety; + + b_size.cur_str = entry->size_str; + b_size.cur = entry->size; + + // + // check to see if we got a better match than the current + // best_match if any + // + + IsBetter is_better = SameMatch; + for (int i = 0; i != 4; ++i) + is_better = better[i]->better_match(is_better); + + if (is_better == BetterMatch) { + for (int i = 0; i != 4; ++i) + better[i]->set_best_from_cur(); + best = entry; + } + } + + delete dels; + + // + // set config to best match + // + if (best != 0) { + String main_wl,flags; + PosibErrBase ret = get_dict_file_name(best, main_wl, flags); + if (ret.has_err()) { + delete config; + return ret; + } + dict_name = best->name; + config->replace("lang", b_code.best); + config->replace("language-tag", b_code.best); + config->replace("master", main_wl.c_str()); + config->replace("master-flags", flags.c_str()); + config->replace("module", b_module.best); + config->replace("jargon", b_variety.best); + config->replace("clear-variety", ""); + unsigned p; + for (const char * c = b_module.best; *c != '\0'; c += p) { + p = strcspn(c, "-"); + config->replace("add-variety", String(c, p)); + } + config->replace("size", b_size.best_str); + } else { + delete config; + return make_err(no_wordlist_for_lang, code); + } + } + + const StringMap * dict_aliases = get_dict_aliases(config); + const char * val = dict_aliases->lookup(dict_name); + if (val) config->replace("master", val); + return config; + } + + PosibErr<void> reload_filters(Speller * m) + { + m->to_internal_->filter.clear(); + m->from_internal_->filter.clear(); + // Add enocder and decoder filters if any + RET_ON_ERR(setup_filter(m->to_internal_->filter, m->config(), + true, false, false)); + RET_ON_ERR(setup_filter(m->from_internal_->filter, m->config(), + false, false, true)); + return no_err; + } + + PosibErr<Speller *> new_speller(Config * c0) + { + aspell_gettext_init(); + + RET_ON_ERR_SET(find_word_list(c0), Config *, c); + StackPtr<Speller> m(get_speller_class(c)); + RET_ON_ERR(m->setup(c)); + + RET_ON_ERR(reload_filters(m)); + + return m.release(); + } + + void delete_speller(Speller * m) + { + SpellerLtHandle h = ((Speller *)(m))->lt_handle(); + delete m; + if (h != 0) free_lt_handle(h); + } +} diff --git a/jni/lib/find_speller.lo b/jni/lib/find_speller.lo new file mode 100644 index 0000000..af2d2cf --- /dev/null +++ b/jni/lib/find_speller.lo @@ -0,0 +1,12 @@ +# lib/find_speller.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/find_speller.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/info-c.cpp b/jni/lib/info-c.cpp new file mode 100644 index 0000000..3c05e79 --- /dev/null +++ b/jni/lib/info-c.cpp @@ -0,0 +1,112 @@ +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "info.hpp" + +namespace acommon { + +class Config; +struct DictInfo; +class DictInfoEnumeration; +class DictInfoList; +struct ModuleInfo; +class ModuleInfoEnumeration; +class ModuleInfoList; + +extern "C" ModuleInfoList * get_aspell_module_info_list(Config * config) +{ + return const_cast<ModuleInfoList *>(get_module_info_list(config)); +} + +extern "C" int aspell_module_info_list_empty(const ModuleInfoList * ths) +{ + return ths->empty(); +} + +extern "C" unsigned int aspell_module_info_list_size(const ModuleInfoList * ths) +{ + return ths->size(); +} + +extern "C" ModuleInfoEnumeration * aspell_module_info_list_elements(const ModuleInfoList * ths) +{ + return ths->elements(); +} + +extern "C" DictInfoList * get_aspell_dict_info_list(Config * config) +{ + return const_cast<DictInfoList *>(get_dict_info_list(config)); +} + +extern "C" int aspell_dict_info_list_empty(const DictInfoList * ths) +{ + return ths->empty(); +} + +extern "C" unsigned int aspell_dict_info_list_size(const DictInfoList * ths) +{ + return ths->size(); +} + +extern "C" DictInfoEnumeration * aspell_dict_info_list_elements(const DictInfoList * ths) +{ + return ths->elements(); +} + +extern "C" int aspell_module_info_enumeration_at_end(const ModuleInfoEnumeration * ths) +{ + return ths->at_end(); +} + +extern "C" const ModuleInfo * aspell_module_info_enumeration_next(ModuleInfoEnumeration * ths) +{ + return ths->next(); +} + +extern "C" void delete_aspell_module_info_enumeration(ModuleInfoEnumeration * ths) +{ + delete ths; +} + +extern "C" ModuleInfoEnumeration * aspell_module_info_enumeration_clone(const ModuleInfoEnumeration * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_module_info_enumeration_assign(ModuleInfoEnumeration * ths, const ModuleInfoEnumeration * other) +{ + ths->assign(other); +} + +extern "C" int aspell_dict_info_enumeration_at_end(const DictInfoEnumeration * ths) +{ + return ths->at_end(); +} + +extern "C" const DictInfo * aspell_dict_info_enumeration_next(DictInfoEnumeration * ths) +{ + return ths->next(); +} + +extern "C" void delete_aspell_dict_info_enumeration(DictInfoEnumeration * ths) +{ + delete ths; +} + +extern "C" DictInfoEnumeration * aspell_dict_info_enumeration_clone(const DictInfoEnumeration * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_dict_info_enumeration_assign(DictInfoEnumeration * ths, const DictInfoEnumeration * other) +{ + ths->assign(other); +} + + + +} + diff --git a/jni/lib/info-c.lo b/jni/lib/info-c.lo new file mode 100644 index 0000000..f637d72 --- /dev/null +++ b/jni/lib/info-c.lo @@ -0,0 +1,12 @@ +# lib/info-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/info-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/mutable_container-c.cpp b/jni/lib/mutable_container-c.cpp new file mode 100644 index 0000000..5d7654b --- /dev/null +++ b/jni/lib/mutable_container-c.cpp @@ -0,0 +1,39 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "mutable_container.hpp" +#include "posib_err.hpp" + +namespace acommon { + +class MutableContainer; + +extern "C" int aspell_mutable_container_add(MutableContainer * ths, const char * to_add) +{ + return ths->add(to_add); +} + +extern "C" int aspell_mutable_container_remove(MutableContainer * ths, const char * to_rem) +{ + return ths->remove(to_rem); +} + +extern "C" void aspell_mutable_container_clear(MutableContainer * ths) +{ + ths->clear(); +} + +extern "C" MutableContainer * aspell_mutable_container_to_mutable_container(MutableContainer * ths) +{ + return ths; +} + + + +} + diff --git a/jni/lib/mutable_container-c.lo b/jni/lib/mutable_container-c.lo new file mode 100644 index 0000000..3e28349 --- /dev/null +++ b/jni/lib/mutable_container-c.lo @@ -0,0 +1,12 @@ +# lib/mutable_container-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/mutable_container-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/new_checker.cpp b/jni/lib/new_checker.cpp new file mode 100644 index 0000000..fe8509d --- /dev/null +++ b/jni/lib/new_checker.cpp @@ -0,0 +1,26 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include "speller.hpp" +#include "document_checker.hpp" +#include "stack_ptr.hpp" +#include "convert.hpp" +#include "tokenizer.hpp" + +namespace acommon { + + PosibErr<DocumentChecker *> + new_document_checker(Speller * speller) + { + StackPtr<DocumentChecker> checker(new DocumentChecker()); + Tokenizer * tokenizer = new_tokenizer(speller); + StackPtr<Filter> filter(new Filter); + setup_filter(*filter, speller->config(), true, true, false); + RET_ON_ERR(checker->setup(tokenizer, speller, filter.release())); + return checker.release(); + } + +} diff --git a/jni/lib/new_checker.lo b/jni/lib/new_checker.lo new file mode 100644 index 0000000..37a41f5 --- /dev/null +++ b/jni/lib/new_checker.lo @@ -0,0 +1,12 @@ +# lib/new_checker.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/new_checker.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/new_config.cpp b/jni/lib/new_config.cpp new file mode 100644 index 0000000..6bcc426 --- /dev/null +++ b/jni/lib/new_config.cpp @@ -0,0 +1,24 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include <string.h> + +#include "config.hpp" +#include "errors.hpp" +#include "filter.hpp" + +namespace acommon { + + extern void setup_static_filters(Config * config); + + Config * new_config() + { + Config * config = new_basic_config(); + setup_static_filters(config); + return config; + } + +} diff --git a/jni/lib/new_config.lo b/jni/lib/new_config.lo new file mode 100644 index 0000000..d5b0d0b --- /dev/null +++ b/jni/lib/new_config.lo @@ -0,0 +1,12 @@ +# lib/new_config.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/new_config.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/new_filter.cpp b/jni/lib/new_filter.cpp new file mode 100644 index 0000000..56a911b --- /dev/null +++ b/jni/lib/new_filter.cpp @@ -0,0 +1,544 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Kevin Atkinson and Christoph Hintermller +// under the GNU LGPL license version 2.0 or 2.1. You should have +// received a copy of the LGPL license along with this library if you +// did not you can find it at http://www.gnu.org/. +// +// Expansion for loading filter libraries and collections upon startup +// was added by Christoph Hintermller + +#include "settings.h" + +#include "cache-t.hpp" +#include "asc_ctype.hpp" +#include "config.hpp" +#include "enumeration.hpp" +#include "errors.hpp" +#include "filter.hpp" +#include "filter_entry.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "indiv_filter.hpp" +#include "iostream.hpp" +#include "itemize.hpp" +#include "key_info.hpp" +#include "parm_string.hpp" +#include "posib_err.hpp" +#include "stack_ptr.hpp" +#include "string_enumeration.hpp" +#include "string_list.hpp" +#include "string_map.hpp" +#include "strtonum.hpp" +#include "file_util.hpp" + +#include <stdio.h> + +#ifdef HAVE_LIBDL +# include <dlfcn.h> +#endif + +namespace acommon +{ +/* XXX (padeler) Modifications to remove static filters from build XXX */ +//#include "static_filters.src.cpp" + static FilterEntry standard_filters[] = {}; + + const unsigned int standard_filters_size = sizeof(standard_filters)/sizeof(FilterEntry); +/* XXX ********************************************************** XXX */ + ////////////////////////////////////////////////////////////////////////// + // + // setup static filters + // + + PosibErr<const ConfigModule *> get_dynamic_filter(Config * config, ParmStr value); + extern void activate_filter_modes(Config *config); + + void setup_static_filters(Config * config) + { + // XXX (padeler) config->set_filter_modules(filter_modules_begin, filter_modules_end); + activate_filter_modes(config); +#ifdef HAVE_LIBDL + config->load_filter_hook = get_dynamic_filter; +#endif + } + + ////////////////////////////////////////////////////////////////////////// + // + // + // + +#ifdef HAVE_LIBDL + + struct ConfigFilterModule : public Cacheable { + String name; + String file; // path of shared object or dll + String desc; // description of module + Vector<KeyInfo> options; + typedef Config CacheConfig; + typedef String CacheKey; + static PosibErr<ConfigFilterModule *> get_new(const String & key, const Config *); + bool cache_key_eq(const String & okey) const { + return name == okey; + } + ConfigFilterModule() : in_option(0) {} + ~ConfigFilterModule(); + bool in_option; + KeyInfo * new_option() { + options.push_back(KeyInfo()); + in_option = true; + return &options.back();} + PosibErr<void> end_option(); + }; + + static GlobalCache<ConfigFilterModule> filter_module_cache("filters"); + + ConfigFilterModule::~ConfigFilterModule() + { + for (Vector<KeyInfo>::iterator i = options.begin(); + i != options.end(); + ++i) + { + free(const_cast<char *>(i->name)); + free(const_cast<char *>(i->def)); + free(const_cast<char *>(i->desc)); + } + } + +#endif + + class IndividualFilter; + + // + // actual code + // + + FilterEntry * get_standard_filter(ParmStr); + + ////////////////////////////////////////////////////////////////////////// + // + // setup filter + // + + PosibErr<void> setup_filter(Filter & filter, + Config * config, + bool use_decoder, bool use_filter, bool use_encoder) + { + StringList sl; + config->retrieve_list("filter", &sl); + StringListEnumeration els = sl.elements_obj(); + const char * filter_name; + String fun; + + StackPtr<IndividualFilter> ifilter; + + filter.clear(); + + while ((filter_name = els.next()) != 0) { + //fprintf(stderr, "Loading %s ... \n", filter_name); + FilterEntry * f = get_standard_filter(filter_name); + // In case libdl is not available a filter is only available if made + // one of the standard filters. This is done by statically linking + // the filter sources. + // On systems providing libdl or in case libtool mimics libdl + // The following code parts assure that all filters needed and requested + // by user are loaded properly or be reported to be missing. + // + FilterHandle decoder_handle, filter_handle, encoder_handle; +#ifdef HAVE_LIBDL + FilterEntry dynamic_filter; + if (!f) { + + RET_ON_ERR_SET(get_dynamic_filter(config, filter_name), + const ConfigModule *, module); + + if (!(decoder_handle = dlopen(module->file,RTLD_NOW)) || + !(encoder_handle = dlopen(module->file,RTLD_NOW)) || + !(filter_handle = dlopen(module->file,RTLD_NOW))) + return make_err(cant_dlopen_file,dlerror()).with_file(filter_name); + + fun = "new_aspell_"; + fun += filter_name; + fun += "_decoder"; + dynamic_filter.decoder = (FilterFun *)dlsym(decoder_handle.get(), fun.str()); + + fun = "new_aspell_"; + fun += filter_name; + fun += "_encoder"; + dynamic_filter.encoder = (FilterFun *)dlsym(encoder_handle.get(), fun.str()); + + fun = "new_aspell_"; + fun += filter_name; + fun += "_filter"; + dynamic_filter.filter = (FilterFun *)dlsym(filter_handle.get(), fun.str()); + + if (!dynamic_filter.decoder && + !dynamic_filter.encoder && + !dynamic_filter.filter) + return make_err(empty_filter,filter_name); + dynamic_filter.name = filter_name; + f = &dynamic_filter; + } +#else + if (!f) + return make_err(no_such_filter, filter_name); +#endif + if (use_decoder && f->decoder && (ifilter = f->decoder())) { + RET_ON_ERR_SET(ifilter->setup(config), bool, keep); + ifilter->handle = decoder_handle.release(); + if (!keep) { + ifilter.del(); + } else { + filter.add_filter(ifilter.release()); + } + } + if (use_filter && f->filter && (ifilter = f->filter())) { + RET_ON_ERR_SET(ifilter->setup(config), bool, keep); + ifilter->handle = filter_handle.release(); + if (!keep) { + ifilter.del(); + } else { + filter.add_filter(ifilter.release()); + } + } + if (use_encoder && f->encoder && (ifilter = f->encoder())) { + RET_ON_ERR_SET(ifilter->setup(config), bool, keep); + ifilter->handle = encoder_handle.release(); + if (!keep) { + ifilter.del(); + } else { + filter.add_filter(ifilter.release()); + } + } + } + return no_err; + } + + ////////////////////////////////////////////////////////////////////////// + // + // get filter + // + + FilterEntry * get_standard_filter(ParmStr filter_name) { + unsigned int i = 0; + while (i != standard_filters_size) { + if (standard_filters[i].name == filter_name) { + return (FilterEntry *) standard_filters + i; + } + ++i; + } + return 0; + } + +#ifdef HAVE_LIBDL + + PosibErr<const ConfigModule *> get_dynamic_filter(Config * config, ParmStr filter_name) + { + for (const ConfigModule * cur = config->filter_modules.pbegin(); + cur != config->filter_modules.pend(); + ++cur) + { + if (strcmp(cur->name,filter_name) == 0) return cur; + } + + RET_ON_ERR_SET(get_cache_data(&filter_module_cache, config, filter_name), + ConfigFilterModule *, module); + + ConfigModule m = { + module->name.str(), module->file.str(), module->desc.str(), + module->options.pbegin(), module->options.pend() + }; + + config->filter_modules_ptrs.push_back(module); + config->filter_modules.push_back(m); + + return &config->filter_modules.back(); + } + + PosibErr<ConfigFilterModule *> ConfigFilterModule::get_new(const String & filter_name, + const Config * config) + { + StackPtr<ConfigFilterModule> module(new ConfigFilterModule); + module->name = filter_name; + KeyInfo * cur_opt = NULL; + + String option_file = filter_name; + option_file += "-filter.info"; + if (!find_file(config, "filter-path", option_file)) + return make_err(no_such_filter, filter_name); + + FStream options; + RET_ON_ERR(options.open(option_file,"r")); + + String buf; DataPair d; + while (getdata_pair(options,d,buf)) + { + to_lower(d.key); + + // + // key == aspell + // + if (d.key == "aspell") + { + if ( d.value == NULL || *d.value == '\0' ) + return make_err(confusing_version).with_file(option_file,d.line_num); +#ifdef FILTER_VERSION_CONTROL + PosibErr<void> peb = check_version(d.value.str); + if (peb.has_err()) return peb.with_file(option_file,d.line_num); +#endif + continue; + } + + // + // key == option + // + if (d.key == "option" ) { + + RET_ON_ERR(module->end_option()); + + to_lower(d.value.str); + + cur_opt = module->new_option(); + + char * s = (char *)malloc(2 + filter_name.size() + 1 + d.value.size + 1); + cur_opt->name = s; + memcpy(s, "f-", 2); + s+= 2; + memcpy(s, filter_name.str(), filter_name.size()); + s += filter_name.size(); + *s++ = '-'; + memcpy(s, d.value.str, d.value.size); + s += d.value.size; + *s = '\0'; + for (Vector<KeyInfo>::iterator cur = module->options.begin(); + cur != module->options.end() - 1; // avoid checking the one just inserted + ++cur) { + if (strcmp(cur_opt->name,cur->name) == 0) + return make_err(identical_option).with_file(option_file,d.line_num); + } + + continue; + } + + // + // key == static + // + if (d.key == "static") { + RET_ON_ERR(module->end_option()); + continue; + } + + // + // key == description + // + if ((d.key == "desc") || + (d.key == "description")) { + + unescape(d.value); + + // + // filter description + // + if (!module->in_option) { + module->desc = d.value; + } + // + //option description + // + else { + //avoid memory leak; + if (cur_opt->desc) free((char *)cur_opt->desc); + cur_opt->desc = strdup(d.value.str); + } + continue; + } + + // + // key == lib-file + // + if (d.key == "lib-file") + { + module->file = d.value; + continue; + } + + // + // !active_option + // + if (!module->in_option) { + return make_err(options_only).with_file(option_file,d.line_num); + } + + // + // key == type + // + if (d.key == "type") { + to_lower(d.value); // This is safe since normally option_value is used + if (d.value == "list") + cur_opt->type = KeyInfoList; + else if (d.value == "int" || d.value == "integer") + cur_opt->type = KeyInfoInt; + else if (d.value == "string") + cur_opt->type = KeyInfoString; + //FIXME why not force user to ommit type specifier or explicitly say bool ??? + else + cur_opt->type = KeyInfoBool; + continue; + } + + // + // key == default + // + if (d.key == "def" || d.key == "default") { + + if (cur_opt->type == KeyInfoList) { + + int new_len = 0; + int orig_len = 0; + if (cur_opt->def) { + orig_len = strlen(cur_opt->def); + new_len += orig_len + 1; + } + for (const char * s = d.value.str; *s; ++s) { + if (*s == ':') ++new_len; + ++new_len; + } + new_len += 1; + char * x = (char *)realloc((char *)cur_opt->def, new_len); + cur_opt->def = x; + if (orig_len > 0) { + x += orig_len; + *x++ = ':'; + } + for (const char * s = d.value.str; *s; ++s) { + if (*s == ':') *x++ = ':'; + *x++ = *s; + } + *x = '\0'; + + } else { + + // FIXME + //may try some syntax checking + //if ( cur_opt->type == KeyInfoBool ) { + // check for valid bool values true false 0 1 on off ... + // and issue error if wrong or assume false ?? + //} + //if ( cur_opt->type == KeyInfoInt ) { + // check for valid integer or double and issue error if not + //} + unescape(d.value); + cur_opt->def = strdup(d.value.str); + } + continue; + } + + // + // key == flags + // + if (d.key == "flags") { + if (d.value == "utf-8" || d.value == "UTF-8") + cur_opt->flags = KEYINFO_UTF8; + continue; + } + + // + // key == endoption + // + if (d.key=="endoption") { + RET_ON_ERR(module->end_option()); + continue; + } + + // + // error + // + return make_err(invalid_option_modifier).with_file(option_file,d.line_num); + + } // end while getdata_pair_c + RET_ON_ERR(module->end_option()); + const char * slash = strrchr(option_file.str(), '/'); + assert(slash); + if (module->file.empty()) { + module->file.assign(option_file.str(), slash + 1 - option_file.str()); + //module->file += "lib"; + module->file += filter_name; + module->file += "-filter.so"; + } else { + if (module->file[0] != '/') + module->file.insert(0, option_file.str(), slash + 1 - option_file.str()); + module->file += ".so"; + } + + return module.release(); + } + + PosibErr<void> ConfigFilterModule::end_option() + { + if (in_option) + { + // FIXME: Check to make sure there is a name and desc. + KeyInfo * cur_opt = &options.back(); + if (!cur_opt->def) cur_opt->def = strdup(""); + } + in_option = false; + return no_err; + } + +#endif + + void load_all_filters(Config * config) { +#ifdef HAVE_LIBDL + StringList filter_path; + String toload; + + config->retrieve_list("filter-path", &filter_path); + PathBrowser els(filter_path, "-filter.info"); + + const char * file; + while ((file = els.next()) != NULL) { + + const char * name = strrchr(file, '/'); + if (!name) name = file; + else name++; + unsigned len = strlen(name) - 12; + + toload.assign(name, len); + + get_dynamic_filter(config, toload); + } +#endif + } + + + class FiltersEnumeration : public StringPairEnumeration + { + public: + typedef Vector<ConfigModule>::const_iterator Itr; + private: + Itr it; + Itr end; + public: + FiltersEnumeration(Itr i, Itr e) : it(i), end(e) {} + bool at_end() const {return it == end;} + StringPair next() + { + if (it == end) return StringPair(); + StringPair res = StringPair(it->name, it->desc); + ++it; + return res; + } + StringPairEnumeration * clone() const {return new FiltersEnumeration(*this);} + void assign(const StringPairEnumeration * other0) + { + const FiltersEnumeration * other = (const FiltersEnumeration *)other0; + *this = *other; + } + }; + + PosibErr<StringPairEnumeration *> available_filters(Config * config) + { + return new FiltersEnumeration(config->filter_modules.begin(), + config->filter_modules.end()); + } + +} diff --git a/jni/lib/new_filter.lo b/jni/lib/new_filter.lo new file mode 100644 index 0000000..42520fc --- /dev/null +++ b/jni/lib/new_filter.lo @@ -0,0 +1,12 @@ +# lib/new_filter.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/new_filter.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/new_fmode.cpp b/jni/lib/new_fmode.cpp new file mode 100644 index 0000000..0b5630b --- /dev/null +++ b/jni/lib/new_fmode.cpp @@ -0,0 +1,783 @@ +// This file is part of The New Aspell +// Copyright (C) 2004 by Christoph Hintermller (JEH) under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include "settings.h" + +#ifdef USE_POSIX_REGEX +# include <sys/types.h> +# include <regex.h> +#endif + +#include "stack_ptr.hpp" +#include "cache-t.hpp" +#include "string.hpp" +#include "vector.hpp" +#include "config.hpp" +#include "errors.hpp" +#include "filter.hpp" +#include "string_enumeration.hpp" +#include "string_list.hpp" +#include "posib_err.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "strtonum.hpp" +#include "asc_ctype.hpp" +#include "iostream.hpp" + +#include "gettext.h" + +namespace acommon { + + class FilterMode { + public: + class MagicString { + public: + MagicString(const String & mode) : mode_(mode), fileExtensions() {} + MagicString(const String & magic, const String & mode) + : magic_(magic), mode_(mode) {} + bool matchFile(FILE * in, const String & ext); + static PosibErr<bool> testMagic(FILE * seekIn, String & magic, const String & mode); + void addExtension(const String & ext) { fileExtensions.push_back(ext); } + bool hasExtension(const String & ext); + void remExtension(const String & ext); + MagicString & operator += (const String & ext) {addExtension(ext);return *this;} + MagicString & operator -= (const String & ext) {remExtension(ext);return *this;} + MagicString & operator = (const String & ext) { + fileExtensions.clear(); + addExtension(ext); + return *this; + } + const String & magic() const { return magic_; } + const String & magicMode() const { return mode_; } + ~MagicString() {} + private: + String magic_; + String mode_; + Vector<String> fileExtensions; + }; + + FilterMode(const String & name); + PosibErr<bool> addModeExtension(const String & ext, String toMagic); + PosibErr<bool> remModeExtension(const String & ext, String toMagic); + bool lockFileToMode(const String & fileName,FILE * in = NULL); + const String & modeName() const; + void setDescription(const String & desc) {desc_ = desc;} + const String & getDescription() const {return desc_;} + PosibErr<void> expand(Config * config); + PosibErr<void> build(FStream &, int line = 1, + const char * fname = "mode file"); + + ~FilterMode(); + private: + //map extensions to magic keys + String name_; + String desc_; + String file_; + Vector<MagicString> magicKeys; + struct KeyValue { + String key; + String value; + KeyValue() {} + KeyValue(ParmStr k, ParmStr v) : key(k), value(v) {} + }; + Vector<KeyValue> expansion; + }; + + class FilterModeList : public Cacheable, public Vector<FilterMode> + { + public: + typedef Config CacheConfig; + typedef String CacheKey; + String key; + static PosibErr<FilterModeList *> get_new(const String & key, const Config *); + bool cache_key_eq(const String & okey) const { + return key == okey; + } + }; + + class ModeNotifierImpl : public Notifier + { + private: + ModeNotifierImpl(); + ModeNotifierImpl(const ModeNotifierImpl &); + ModeNotifierImpl & operator= (const ModeNotifierImpl & b); + CachePtr<FilterModeList> filter_modes_; + public: + Config * config; + PosibErr<FilterModeList *> get_filter_modes(); + + ModeNotifierImpl(Config * c) : config(c) + { + c->filter_mode_notifier = this; + } + ModeNotifierImpl(const ModeNotifierImpl & other, Config * c) + : filter_modes_(other.filter_modes_), config(c) + { + c->filter_mode_notifier = this; + } + + ModeNotifierImpl * clone(Config * c) const {return new ModeNotifierImpl(*this, c);} + + PosibErr<void> item_updated(const KeyInfo * ki, ParmStr); + PosibErr<void> list_updated(const KeyInfo * ki); + + ~ModeNotifierImpl() {} + }; + + FilterMode::FilterMode(const String & name) + : name_(name) {} + + PosibErr<bool> FilterMode::addModeExtension(const String & ext, String toMagic) { + + bool extOnly = false; + + if ( ( toMagic == "" ) + || ( toMagic == "<noregex>" ) + || ( toMagic == "<nomagic>" ) + || ( toMagic == "<empty>" ) ) { + extOnly = true; + } + else { + + RET_ON_ERR(FilterMode::MagicString::testMagic(NULL,toMagic,name_)); + + } + + Vector<MagicString>::iterator it; + + for ( it = magicKeys.begin() ; it != magicKeys.end() ; it++ ) { + if ( ( extOnly + && ( it->magic() == "" ) ) + || ( it->magic() == toMagic ) ) { + *it += ext; + return true; + } + } + if ( it != magicKeys.end() ) { + return false; + } + if ( extOnly ) { + magicKeys.push_back(MagicString(name_)); + } + else { + magicKeys.push_back(MagicString(toMagic,name_)); + } + for ( it = magicKeys.begin() ; it != magicKeys.end() ; it++ ) { + if ( ( extOnly + && ( it->magic() == "" ) ) + || ( it->magic() == toMagic ) ) { + *it += ext; + return true; + } + } + return make_err(mode_extend_expand,name_.str()); + } + + PosibErr<bool> FilterMode::remModeExtension(const String & ext, String toMagic) { + + bool extOnly = false; + + if ( ( toMagic == "" ) + || ( toMagic == "<nomagic>" ) + || ( toMagic == "<empty>" ) ) { + extOnly = true; + } + else { + + PosibErr<bool> pe = FilterMode::MagicString::testMagic(NULL,toMagic,name_); + + if ( pe.has_err() ) { + return PosibErrBase(pe); + } + } + + for ( Vector<MagicString>::iterator it = magicKeys.begin() ; + it != magicKeys.end() ; it++ ) { + if ( ( extOnly + && ( it->magic() == "" ) ) + || ( it->magic() == toMagic ) ) { + *it -= ext; + return true; + } + } + return false; + } + + bool FilterMode::lockFileToMode(const String & fileName,FILE * in) { + + Vector<unsigned int> extStart; + int first_point = fileName.size(); + + while ( first_point > 0 ) { + while ( ( --first_point >= 0 ) + && ( fileName[first_point] != '.' ) ) { + } + if ( ( first_point >= 0 ) + && ( fileName[first_point] == '.' ) ) { + extStart.push_back(first_point + 1); + } + } + if ( extStart.size() < 1 ) { + return false; + } + + bool closeFile = false; + + if ( in == NULL ) { + in = fopen(fileName.str(),"rb"); + closeFile= true; + } + for ( Vector<unsigned int>::iterator extSIt = extStart.begin() ; + extSIt != extStart.end() ; extSIt ++ ) { + + String ext(fileName); + + ext.erase(0,*extSIt); + for ( Vector<MagicString>::iterator it = magicKeys.begin() ; + it != magicKeys.end() ; it++ ) { + PosibErr<bool> magicMatch = it->matchFile(in,ext); + if ( magicMatch + || magicMatch.has_err() ) { + if ( closeFile ) { + fclose ( in ); + } + if ( magicMatch.has_err() ) { + magicMatch.ignore_err(); + return false; + } + return true; + } + } + } + if ( closeFile ) { + fclose(in); + } + return false; + } + + const String & FilterMode::modeName() const { + return name_; + } + + FilterMode::~FilterMode() { + } + + bool FilterMode::MagicString::hasExtension(const String & ext) { + for ( Vector<String>::iterator it = fileExtensions.begin() ; + it != fileExtensions.end() ; it++ ) { + if ( *it == ext ) { + return true; + } + } + return false; + } + + void FilterMode::MagicString::remExtension(const String & ext) { + Vector<String>::iterator it = fileExtensions.begin(); + while (it != fileExtensions.end()) { + if (*it == ext) { + it = fileExtensions.erase(it); + } else { + it++; + } + } + } + + + bool FilterMode::MagicString::matchFile(FILE * in,const String & ext) { + + Vector<String>::iterator extIt; + + for ( extIt = fileExtensions.begin() ; + extIt != fileExtensions.end() ; extIt ++ ) { + if ( *extIt == ext ) { + break; + } + } + if ( extIt == fileExtensions.end() ) { + return false; + } + + PosibErr<bool> pe = testMagic(in,magic_,mode_); + + if ( pe.has_err() ) { + pe.ignore_err(); + return false; + } + return true; + } + + + PosibErr<bool> FilterMode::MagicString::testMagic(FILE * seekIn,String & magic, const String & mode) { + +#ifdef USE_POSIX_REGEX + + if ( magic.size() == 0 ) { + return true; + } + + unsigned int magicFilePosition = 0; + + while ( ( magicFilePosition < magic.size() ) + && ( magic[magicFilePosition] != ':' ) ) { + magicFilePosition++; + } + + String number(magic); + + number.erase(magicFilePosition,magic.size() - magicFilePosition); + + const char * num = number.str(); + const char * numEnd = num + number.size(); + const char * endHere = numEnd; + long position = 0; + + if ( ( number.size() == 0 ) + || ( (position = strtoi_c(num,&numEnd)) < 0 ) + || ( numEnd != endHere ) ) { + return make_err(file_magic_pos,"",magic.str()); + } + if ( ( magicFilePosition >= magic.size() ) + || ( ( seekIn != NULL ) + && ( fseek(seekIn,position,SEEK_SET) < 0 ) ) ) { + if ( seekIn != NULL ) { + rewind(seekIn); + } + return false; + } + + //increment magicFilePosition to skip the `:' + unsigned int seekRangePos = ++ magicFilePosition; + + while ( ( magicFilePosition < magic.size() ) + && ( magic[magicFilePosition] != ':' ) ) { + magicFilePosition++; + } + + String magicRegExp(magic); + + magicRegExp.erase(0,magicFilePosition + 1); + if ( magicRegExp.size() == 0 ) { + if ( seekIn != NULL ) { + rewind(seekIn); + } + return make_err(missing_magic,mode.str(),magic.str()); //no regular expression given + } + + number = magic; + number.erase(magicFilePosition,magic.size() - magicFilePosition); + number.erase(0,seekRangePos);//already incremented by one see above + num = (char*)number.str(); + endHere = numEnd = num + number.size(); + + if ( ( number.size() == 0 ) + || ( (position = strtoi_c(num,&numEnd)) < 0 ) + || ( numEnd != endHere ) ) { + if ( seekIn != NULL ) { + rewind(seekIn); + } + return make_err(file_magic_range,mode.str(),magic.str());//no magic range given + } + + regex_t seekMagic; + int regsucess = 0; + + if ( (regsucess = regcomp(&seekMagic,magicRegExp.str(), + REG_NEWLINE|REG_NOSUB|REG_EXTENDED)) ){ + if ( seekIn != NULL ) { + rewind(seekIn); + } + + char regError[256]; + regerror(regsucess,&seekMagic,®Error[0],256); + return make_err(bad_magic,mode.str(),magic.str(),regError); + } + if ( seekIn == NULL ) { + regfree(&seekMagic); + return true; + } + + char * buffer = new char[(position + 1)]; + + if ( buffer == NULL ) { + regfree(&seekMagic); + rewind(seekIn); + return false; + } + memset(buffer,0,(position + 1)); + if ( (position = fread(buffer,1,position,seekIn)) == 0 ) { + rewind(seekIn); + regfree(&seekMagic); + delete[] buffer; + return false; + } + if ( regexec(&seekMagic,buffer,0,NULL,0) ) { + delete[] buffer; + regfree(&seekMagic); + rewind(seekIn); + return false; + } + delete[] buffer; + regfree(&seekMagic); + rewind(seekIn); + return true; + +#else + + return true; + +#endif + + } + + PosibErr<void> FilterMode::expand(Config * config) { + + config->replace("clear-filter",""); + for ( Vector<KeyValue>::iterator it = expansion.begin() ; + it != expansion.end() ; it++ ) + { + PosibErr<void> pe = config->replace(it->key, it->value); + if (pe.has_err()) return pe.with_file(file_); + } + return no_err; + } + + PosibErr<void> FilterMode::build(FStream & toParse, int line0, const char * fname) { + + String buf; + DataPair dp; + + file_ = fname; + + dp.line_num = line0; + + while ( getdata_pair(toParse, dp, buf) ) { + + to_lower(dp.key); + + if ( dp.key == "filter" ) { + + to_lower(dp.value); + expansion.push_back(KeyValue("add-filter", dp.value)); + + } else if ( dp.key == "option" ) { + + split(dp); + // FIXME: Add check for empty key + + expansion.push_back(KeyValue(dp.key, dp.value)); + + } else { + + return make_err(bad_mode_key,dp.key).with_file(fname,dp.line_num); + } + } + + return no_err; + } + + static GlobalCache<FilterModeList> filter_modes_cache("filter_modes"); + + PosibErr<void> set_mode_from_extension (Config * config, ParmString filename, FILE * in) + { + RET_ON_ERR_SET(static_cast<ModeNotifierImpl *>(config->filter_mode_notifier) + ->get_filter_modes(), FilterModeList *, fm); + + for ( FilterModeList::iterator it = fm->begin(); it != fm->end(); it++ ) + { + if ( it->lockFileToMode(filename,in) ) { + RET_ON_ERR(config->replace("mode", it->modeName().str())); + break; + } + } + return no_err; + } + + void activate_filter_modes(Config *config); + + PosibErr<FilterModeList *> ModeNotifierImpl::get_filter_modes() + { + if (!filter_modes_) { + //FIXME is filter-path proper for filter mode files ??? + // if filter-options-path better ??? + // do we need a filter-mode-path ??? + // should change to use genetic data-path once implemented + // and then search filter-path - KevinA + String filter_path; + StringList filter_path_lst; + config->retrieve_list("filter-path", &filter_path_lst); + combine_list(filter_path, filter_path_lst); + RET_ON_ERR(setup(filter_modes_, &filter_modes_cache, config, filter_path)); + } + return filter_modes_.get(); + } + + + PosibErr<void> ModeNotifierImpl::item_updated(const KeyInfo * ki, ParmStr value) + { + if ( strcmp(ki->name, "mode") == 0 ) { + RET_ON_ERR_SET(get_filter_modes(), FilterModeList *, filter_modes); + for ( Vector<FilterMode>::iterator it = filter_modes->begin() ; + it != filter_modes->end() ; it++ ) { + if ( it->modeName() == value ) + return it->expand(config); + } + return make_err(unknown_mode, value); + } + return no_err; + } + + PosibErr<void> ModeNotifierImpl::list_updated(const KeyInfo * ki) + { + if (strcmp(ki->name, "filter-path") == 0) { + filter_modes_.reset(0); + } + return no_err; + } + + PosibErr<FilterModeList *> FilterModeList::get_new(const String & key, + const Config *) + { + + StackPtr<FilterModeList> filter_modes(new FilterModeList); + filter_modes->key = key; + StringList mode_path; + separate_list(key, mode_path); + + PathBrowser els(mode_path, ".amf"); + + String possMode; + String possModeFile; + + const char * file; + while ((file = els.next()) != NULL) + { + possModeFile = file; + possMode.assign(possModeFile.str(), possModeFile.size() - 4); + + unsigned pathPos = 0; + unsigned pathPosEnd = 0; + + while ( ( (pathPosEnd = possMode.find('/',pathPos)) < possMode.size() ) + && ( pathPosEnd >= 0 ) ) { + pathPos = pathPosEnd + 1; + } + possMode.erase(0,pathPos); + to_lower(possMode.mstr()); + + Vector<FilterMode>::iterator fmIt = filter_modes->begin(); + + for ( fmIt = filter_modes->begin() ; + fmIt != filter_modes->end() ; fmIt++ ) { + if ( (*fmIt).modeName() == possMode ) { + break; + } + } + if ( fmIt != filter_modes->end() ) { + continue; + } + + FStream toParse; + + RET_ON_ERR(toParse.open(possModeFile.str(),"rb")); + + String buf; + DataPair dp; + + bool get_sucess = getdata_pair(toParse, dp, buf); + + to_lower(dp.key); + to_lower(dp.value); + if ( !get_sucess + || ( dp.key != "mode" ) + || ( dp.value != possMode.str() ) ) + return make_err(expect_mode_key,"mode").with_file(possModeFile, dp.line_num); + + get_sucess = getdata_pair(toParse, dp, buf); + to_lower(dp.key); + if ( !get_sucess + || ( dp.key != "aspell" ) + || ( dp.value == NULL ) + || ( *(dp.value) == '\0' ) ) + return make_err(mode_version_requirement).with_file(possModeFile, dp.line_num); + +#ifdef FILTER_VERSION_CONTROL + PosibErr<void> peb = check_version(dp.value.str); + if (peb.has_err()) return peb.with_file(possModeFile, dp.line_num); +#endif + + FilterMode collect(possMode); + + while ( getdata_pair(toParse,dp,buf) ) { + to_lower(dp.key); + if ( ( dp.key == "desc" ) + || ( dp.key == "description" ) ) + { + unescape(dp.value); + collect.setDescription(dp.value); + break; + } + if ( dp.key == "magic" ) { + + char * regbegin = dp.value; + + while ( regbegin + && ( *regbegin != '/' ) ) { + regbegin++; + } + if ( ( regbegin == NULL ) + || ( *regbegin == '\0' ) + || ( *(++regbegin) == '\0' ) ) + return make_err(missing_magic_expression).with_file(possModeFile, dp.line_num); + + char * regend = regbegin; + bool prevslash = false; + + while ( regend + && ( *regend != '\0' ) + && ( prevslash + || ( * regend != '/' ) ) ) { + if ( *regend == '\\' ) { + prevslash = !prevslash; + } + else { + prevslash = false; + } + regend ++ ; + } + if ( regend == regbegin ) + return make_err(missing_magic_expression).with_file(possModeFile, dp.line_num); + + char swap = *regend; + + *regend = '\0'; + + String magic(regbegin); + + *regend = swap; + + unsigned int extCount = 0; + + while ( *regend != '\0' ) { + regend ++; + extCount ++; + regbegin = regend; + while ( ( *regend != '/' ) + && ( *regend != '\0' ) ) { + regend++; + } + if ( regend == regbegin ) + { + char charCount[64]; + sprintf(&charCount[0],"%li",(long)(regbegin - (char *)dp.value)); + return make_err(empty_file_ext,charCount).with_file(possModeFile,dp.line_num); + } + + bool remove = false; + bool add = true; + + if ( *regbegin == '+' ) { + regbegin++; + } + else if ( *regbegin == '-' ) { + add = false; + remove = true; + regbegin++; + } + if ( regend == regbegin ) + { + char charCount[64]; + sprintf(&charCount[0],"%li",(long)(regbegin - (char *)dp.value)); + return make_err(empty_file_ext,charCount).with_file(possModeFile,dp.line_num); + } + swap = *regend; + *regend = '\0'; + + String ext(regbegin); + + *regend = swap; + + // partially unescape magic + + char * dest = magic.mstr(); + const char * src = magic.mstr(); + while (*src) { + if ((*src == '\\' && src[1] == '/') || src[1] == '#') + ++src; + *dest++ = *src++; + } + magic.resize(dest - magic.mstr()); + + PosibErr<bool> pe; + + if ( remove ) + pe = collect.remModeExtension(ext,magic); + else + pe = collect.addModeExtension(ext,magic); + + if ( pe.has_err() ) + return pe.with_file(possModeFile, dp.line_num); + } + + if (extCount > 0 ) continue; + + char charCount[64]; + sprintf(&charCount[0],"%lu",(unsigned long)strlen((char *)dp.value)); + return make_err(empty_file_ext,charCount).with_file(possModeFile,dp.line_num); + } + + return make_err(expect_mode_key,"ext[tension]/magic/desc[ription]/rel[ation]") + .with_file(possModeFile,dp.line_num); + + }//while getdata_pair + + RET_ON_ERR(collect.build(toParse,dp.line_num,possModeFile.str())); + + filter_modes->push_back(collect); + } + return filter_modes.release(); + } + + void activate_filter_modes(Config *config) + { + config->add_notifier(new ModeNotifierImpl(config)); + } + + class FilterModesEnumeration : public StringPairEnumeration + { + public: + typedef Vector<FilterMode>::const_iterator Itr; + private: + Itr it; + Itr end; + public: + FilterModesEnumeration(Itr i, Itr e) : it(i), end(e) {} + bool at_end() const {return it == end;} + StringPair next() + { + if (it == end) return StringPair(); + StringPair res = StringPair(it->modeName().str(), it->getDescription().str()); + ++it; + return res; + } + StringPairEnumeration * clone() const {return new FilterModesEnumeration(*this);} + void assign(const StringPairEnumeration * other0) + { + const FilterModesEnumeration * other = (const FilterModesEnumeration *)other0; + *this = *other; + } + }; + + PosibErr<StringPairEnumeration *> available_filter_modes(Config * config) + { + RET_ON_ERR_SET(static_cast<ModeNotifierImpl *>(config->filter_mode_notifier) + ->get_filter_modes(), FilterModeList *, fm); + return new FilterModesEnumeration(fm->begin(), fm->end()); + } + +} + diff --git a/jni/lib/new_fmode.lo b/jni/lib/new_fmode.lo new file mode 100644 index 0000000..415fc2f --- /dev/null +++ b/jni/lib/new_fmode.lo @@ -0,0 +1,12 @@ +# lib/new_fmode.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/new_fmode.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/speller-c.cpp b/jni/lib/speller-c.cpp new file mode 100644 index 0000000..2e8bdd8 --- /dev/null +++ b/jni/lib/speller-c.cpp @@ -0,0 +1,173 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "convert.hpp" +#include "error.hpp" +#include "mutable_string.hpp" +#include "posib_err.hpp" +#include "speller.hpp" +#include "word_list.hpp" + +namespace acommon { + +class CanHaveError; +class Config; +struct Error; +class Speller; +class WordList; + +extern "C" CanHaveError * new_aspell_speller(Config * config) +{ + PosibErr<Speller *> ret = new_speller(config); + if (ret.has_err()) { + return new CanHaveError(ret.release_err()); + } else { + return ret; + } +} + +extern "C" Speller * to_aspell_speller(CanHaveError * obj) +{ + return static_cast<Speller *>(obj); +} + +extern "C" void delete_aspell_speller(Speller * ths) +{ + delete ths; +} + +extern "C" unsigned int aspell_speller_error_number(const Speller * ths) +{ + return ths->err_ == 0 ? 0 : 1; +} + +extern "C" const char * aspell_speller_error_message(const Speller * ths) +{ + return ths->err_ ? ths->err_->mesg : ""; +} + +extern "C" const Error * aspell_speller_error(const Speller * ths) +{ + return ths->err_; +} + +extern "C" Config * aspell_speller_config(Speller * ths) +{ + return ths->config(); +} + +extern "C" int aspell_speller_check(Speller * ths, const char * word, int word_size) +{ + ths->temp_str_0.clear(); + ths->to_internal_->convert(word, word_size, ths->temp_str_0); + unsigned int s0 = ths->temp_str_0.size(); + PosibErr<bool> ret = ths->check(MutableString(ths->temp_str_0.mstr(), s0)); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return -1; + return ret.data; +} + +extern "C" int aspell_speller_add_to_personal(Speller * ths, const char * word, int word_size) +{ + ths->temp_str_0.clear(); + ths->to_internal_->convert(word, word_size, ths->temp_str_0); + unsigned int s0 = ths->temp_str_0.size(); + PosibErr<void> ret = ths->add_to_personal(MutableString(ths->temp_str_0.mstr(), s0)); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" int aspell_speller_add_to_session(Speller * ths, const char * word, int word_size) +{ + ths->temp_str_0.clear(); + ths->to_internal_->convert(word, word_size, ths->temp_str_0); + unsigned int s0 = ths->temp_str_0.size(); + PosibErr<void> ret = ths->add_to_session(MutableString(ths->temp_str_0.mstr(), s0)); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" const WordList * aspell_speller_personal_word_list(Speller * ths) +{ + PosibErr<const WordList *> ret = ths->personal_word_list(); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + if (ret.data) + const_cast<WordList *>(ret.data)->from_internal_ = ths->from_internal_; + return ret.data; +} + +extern "C" const WordList * aspell_speller_session_word_list(Speller * ths) +{ + PosibErr<const WordList *> ret = ths->session_word_list(); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + if (ret.data) + const_cast<WordList *>(ret.data)->from_internal_ = ths->from_internal_; + return ret.data; +} + +extern "C" const WordList * aspell_speller_main_word_list(Speller * ths) +{ + PosibErr<const WordList *> ret = ths->main_word_list(); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + if (ret.data) + const_cast<WordList *>(ret.data)->from_internal_ = ths->from_internal_; + return ret.data; +} + +extern "C" int aspell_speller_save_all_word_lists(Speller * ths) +{ + PosibErr<void> ret = ths->save_all_word_lists(); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" int aspell_speller_clear_session(Speller * ths) +{ + PosibErr<void> ret = ths->clear_session(); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + return 1; +} + +extern "C" const WordList * aspell_speller_suggest(Speller * ths, const char * word, int word_size) +{ + ths->temp_str_0.clear(); + ths->to_internal_->convert(word, word_size, ths->temp_str_0); + unsigned int s0 = ths->temp_str_0.size(); + PosibErr<const WordList *> ret = ths->suggest(MutableString(ths->temp_str_0.mstr(), s0)); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return 0; + if (ret.data) + const_cast<WordList *>(ret.data)->from_internal_ = ths->from_internal_; + return ret.data; +} + +extern "C" int aspell_speller_store_replacement(Speller * ths, const char * mis, int mis_size, const char * cor, int cor_size) +{ + ths->temp_str_0.clear(); + ths->to_internal_->convert(mis, mis_size, ths->temp_str_0); + unsigned int s0 = ths->temp_str_0.size(); + ths->temp_str_1.clear(); + ths->to_internal_->convert(cor, cor_size, ths->temp_str_1); + unsigned int s1 = ths->temp_str_1.size(); + PosibErr<bool> ret = ths->store_replacement(MutableString(ths->temp_str_0.mstr(), s0), MutableString(ths->temp_str_1.mstr(), s1)); + ths->err_.reset(ret.release_err()); + if (ths->err_ != 0) return -1; + return ret.data; +} + + + +} + diff --git a/jni/lib/speller-c.lo b/jni/lib/speller-c.lo new file mode 100644 index 0000000..9320aa2 --- /dev/null +++ b/jni/lib/speller-c.lo @@ -0,0 +1,12 @@ +# lib/speller-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/speller-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/string_enumeration-c.cpp b/jni/lib/string_enumeration-c.cpp new file mode 100644 index 0000000..0fa4ae0 --- /dev/null +++ b/jni/lib/string_enumeration-c.cpp @@ -0,0 +1,52 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "convert.hpp" +#include "string_enumeration.hpp" + +namespace acommon { + +class StringEnumeration; + +extern "C" void delete_aspell_string_enumeration(StringEnumeration * ths) +{ + delete ths; +} + +extern "C" StringEnumeration * aspell_string_enumeration_clone(const StringEnumeration * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_string_enumeration_assign(StringEnumeration * ths, const StringEnumeration * other) +{ + ths->assign(other); +} + +extern "C" int aspell_string_enumeration_at_end(const StringEnumeration * ths) +{ + return ths->at_end(); +} + +extern "C" const char * aspell_string_enumeration_next(StringEnumeration * ths) +{ + const char * s = ths->next(); + if (s == 0 || ths->from_internal_ == 0) { + return s; + } else { + ths->temp_str.clear(); + ths->from_internal_->convert(s,-1,ths->temp_str); + ths->from_internal_->append_null(ths->temp_str); + return ths->temp_str.data(); + } +} + + + +} + diff --git a/jni/lib/string_enumeration-c.lo b/jni/lib/string_enumeration-c.lo new file mode 100644 index 0000000..44984fa --- /dev/null +++ b/jni/lib/string_enumeration-c.lo @@ -0,0 +1,12 @@ +# lib/string_enumeration-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_enumeration-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/string_list-c.cpp b/jni/lib/string_list-c.cpp new file mode 100644 index 0000000..8a939c8 --- /dev/null +++ b/jni/lib/string_list-c.cpp @@ -0,0 +1,76 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "posib_err.hpp" +#include "string_list.hpp" + +namespace acommon { + +class MutableContainer; +class StringEnumeration; +class StringList; + +extern "C" StringList * new_aspell_string_list() +{ + return new_string_list(); +} + +extern "C" int aspell_string_list_empty(const StringList * ths) +{ + return ths->empty(); +} + +extern "C" unsigned int aspell_string_list_size(const StringList * ths) +{ + return ths->size(); +} + +extern "C" StringEnumeration * aspell_string_list_elements(const StringList * ths) +{ + return ths->elements(); +} + +extern "C" int aspell_string_list_add(StringList * ths, const char * to_add) +{ + return ths->add(to_add); +} + +extern "C" int aspell_string_list_remove(StringList * ths, const char * to_rem) +{ + return ths->remove(to_rem); +} + +extern "C" void aspell_string_list_clear(StringList * ths) +{ + ths->clear(); +} + +extern "C" MutableContainer * aspell_string_list_to_mutable_container(StringList * ths) +{ + return ths; +} + +extern "C" void delete_aspell_string_list(StringList * ths) +{ + delete ths; +} + +extern "C" StringList * aspell_string_list_clone(const StringList * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_string_list_assign(StringList * ths, const StringList * other) +{ + ths->assign(other); +} + + + +} + diff --git a/jni/lib/string_list-c.lo b/jni/lib/string_list-c.lo new file mode 100644 index 0000000..e0226b9 --- /dev/null +++ b/jni/lib/string_list-c.lo @@ -0,0 +1,12 @@ +# lib/string_list-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_list-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/string_map-c.cpp b/jni/lib/string_map-c.cpp new file mode 100644 index 0000000..f8eaca8 --- /dev/null +++ b/jni/lib/string_map-c.cpp @@ -0,0 +1,91 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "posib_err.hpp" +#include "string_map.hpp" + +namespace acommon { + +class MutableContainer; +class StringMap; +class StringPairEnumeration; + +extern "C" StringMap * new_aspell_string_map() +{ + return new_string_map(); +} + +extern "C" int aspell_string_map_add(StringMap * ths, const char * to_add) +{ + return ths->add(to_add); +} + +extern "C" int aspell_string_map_remove(StringMap * ths, const char * to_rem) +{ + return ths->remove(to_rem); +} + +extern "C" void aspell_string_map_clear(StringMap * ths) +{ + ths->clear(); +} + +extern "C" MutableContainer * aspell_string_map_to_mutable_container(StringMap * ths) +{ + return ths; +} + +extern "C" void delete_aspell_string_map(StringMap * ths) +{ + delete ths; +} + +extern "C" StringMap * aspell_string_map_clone(const StringMap * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_string_map_assign(StringMap * ths, const StringMap * other) +{ + ths->assign(other); +} + +extern "C" int aspell_string_map_empty(const StringMap * ths) +{ + return ths->empty(); +} + +extern "C" unsigned int aspell_string_map_size(const StringMap * ths) +{ + return ths->size(); +} + +extern "C" StringPairEnumeration * aspell_string_map_elements(const StringMap * ths) +{ + return ths->elements(); +} + +extern "C" int aspell_string_map_insert(StringMap * ths, const char * key, const char * value) +{ + return ths->insert(key, value); +} + +extern "C" int aspell_string_map_replace(StringMap * ths, const char * key, const char * value) +{ + return ths->replace(key, value); +} + +extern "C" const char * aspell_string_map_lookup(const StringMap * ths, const char * key) +{ + return ths->lookup(key); +} + + + +} + diff --git a/jni/lib/string_map-c.lo b/jni/lib/string_map-c.lo new file mode 100644 index 0000000..2a42fde --- /dev/null +++ b/jni/lib/string_map-c.lo @@ -0,0 +1,12 @@ +# lib/string_map-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_map-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/string_pair_enumeration-c.cpp b/jni/lib/string_pair_enumeration-c.cpp new file mode 100644 index 0000000..e5f668d --- /dev/null +++ b/jni/lib/string_pair_enumeration-c.cpp @@ -0,0 +1,44 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "string_pair.hpp" +#include "string_pair_enumeration.hpp" + +namespace acommon { + +class StringPairEnumeration; + +extern "C" int aspell_string_pair_enumeration_at_end(const StringPairEnumeration * ths) +{ + return ths->at_end(); +} + +extern "C" StringPair aspell_string_pair_enumeration_next(StringPairEnumeration * ths) +{ + return ths->next(); +} + +extern "C" void delete_aspell_string_pair_enumeration(StringPairEnumeration * ths) +{ + delete ths; +} + +extern "C" StringPairEnumeration * aspell_string_pair_enumeration_clone(const StringPairEnumeration * ths) +{ + return ths->clone(); +} + +extern "C" void aspell_string_pair_enumeration_assign(StringPairEnumeration * ths, const StringPairEnumeration * other) +{ + ths->assign(other); +} + + + +} + diff --git a/jni/lib/string_pair_enumeration-c.lo b/jni/lib/string_pair_enumeration-c.lo new file mode 100644 index 0000000..b1fdc11 --- /dev/null +++ b/jni/lib/string_pair_enumeration-c.lo @@ -0,0 +1,12 @@ +# lib/string_pair_enumeration-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/string_pair_enumeration-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/lib/word_list-c.cpp b/jni/lib/word_list-c.cpp new file mode 100644 index 0000000..f03dbcd --- /dev/null +++ b/jni/lib/word_list-c.cpp @@ -0,0 +1,37 @@ +/* Automatically generated file. Do not edit directly. */ + +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. */ + +#include "string_enumeration.hpp" +#include "word_list.hpp" + +namespace acommon { + +class StringEnumeration; +class WordList; + +extern "C" int aspell_word_list_empty(const WordList * ths) +{ + return ths->empty(); +} + +extern "C" unsigned int aspell_word_list_size(const WordList * ths) +{ + return ths->size(); +} + +extern "C" StringEnumeration * aspell_word_list_elements(const WordList * ths) +{ + StringEnumeration * els = ths->elements(); + els->from_internal_ = ths->from_internal_; + return els; +} + + + +} + diff --git a/jni/lib/word_list-c.lo b/jni/lib/word_list-c.lo new file mode 100644 index 0000000..3435719 --- /dev/null +++ b/jni/lib/word_list-c.lo @@ -0,0 +1,12 @@ +# lib/word_list-c.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/word_list-c.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/Makefile b/jni/modules/Makefile new file mode 100644 index 0000000..9141085 --- /dev/null +++ b/jni/modules/Makefile @@ -0,0 +1,4 @@ +top_srcdir = .. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/Makefile.in b/jni/modules/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/modules/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/filter/.deps/.dirstamp b/jni/modules/filter/.deps/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/filter/.deps/context.Plo b/jni/modules/filter/.deps/context.Plo new file mode 100644 index 0000000..bed1aef --- /dev/null +++ b/jni/modules/filter/.deps/context.Plo @@ -0,0 +1,302 @@ +modules/filter/context.lo: modules/filter/context.cpp gen/settings.h \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/config.hpp common/can_have_error.hpp \ + common/key_info.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/filter_char.hpp \ + common/indiv_filter.hpp /usr/include/assert.h common/filter_char.hpp \ + common/iostream.hpp common/fstream.hpp /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/posib_err.hpp common/string.hpp \ + common/string_enumeration.hpp common/type_id.hpp common/char_vector.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/vector.hpp + +gen/settings.h: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/filter_char.hpp: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/filter_char.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/string.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/char_vector.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/vector.hpp: diff --git a/jni/modules/filter/.deps/email.Plo b/jni/modules/filter/.deps/email.Plo new file mode 100644 index 0000000..43572b6 --- /dev/null +++ b/jni/modules/filter/.deps/email.Plo @@ -0,0 +1,289 @@ +modules/filter/email.lo: modules/filter/email.cpp gen/settings.h \ + common/indiv_filter.hpp /usr/include/assert.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h common/string.hpp /usr/include/string.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/filter_char.hpp \ + common/convert.hpp common/char_vector.hpp common/filter_char_vector.hpp \ + common/vector.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/stack_ptr.hpp \ + common/filter.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp \ + common/config.hpp common/key_info.hpp common/mutable_container.hpp + +gen/settings.h: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/filter_char.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/config.hpp: + +common/key_info.hpp: + +common/mutable_container.hpp: diff --git a/jni/modules/filter/.deps/nroff.Plo b/jni/modules/filter/.deps/nroff.Plo new file mode 100644 index 0000000..0a02b45 --- /dev/null +++ b/jni/modules/filter/.deps/nroff.Plo @@ -0,0 +1,303 @@ +modules/filter/nroff.lo: modules/filter/nroff.cpp /usr/include/stdio.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h gen/settings.h \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/error.hpp common/key_info.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/indiv_filter.hpp \ + /usr/include/assert.h common/filter_char.hpp common/string_map.hpp \ + common/mutable_container.hpp common/string_pair.hpp common/hash.hpp \ + /usr/include/c++/4.5/functional /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h common/block_slist.hpp \ + common/objstack.hpp common/mutable_container.hpp common/clone_ptr-t.hpp \ + common/clone_ptr.hpp /usr/include/c++/4.5/typeinfo \ + common/filter_char_vector.hpp + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +gen/settings.h: + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/filter_char.hpp: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/mutable_container.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/filter_char_vector.hpp: diff --git a/jni/modules/filter/.deps/sgml.Plo b/jni/modules/filter/.deps/sgml.Plo new file mode 100644 index 0000000..12146ab --- /dev/null +++ b/jni/modules/filter/.deps/sgml.Plo @@ -0,0 +1,303 @@ +modules/filter/sgml.lo: modules/filter/sgml.cpp /usr/include/stdio.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h gen/settings.h \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/error.hpp common/key_info.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/indiv_filter.hpp \ + /usr/include/assert.h common/filter_char.hpp common/string_map.hpp \ + common/mutable_container.hpp common/string_pair.hpp common/hash.hpp \ + /usr/include/c++/4.5/functional /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h common/block_slist.hpp \ + common/objstack.hpp common/mutable_container.hpp common/clone_ptr-t.hpp \ + common/clone_ptr.hpp /usr/include/c++/4.5/typeinfo \ + common/filter_char_vector.hpp + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +gen/settings.h: + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/filter_char.hpp: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/mutable_container.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/filter_char_vector.hpp: diff --git a/jni/modules/filter/.deps/tex.Plo b/jni/modules/filter/.deps/tex.Plo new file mode 100644 index 0000000..285baee --- /dev/null +++ b/jni/modules/filter/.deps/tex.Plo @@ -0,0 +1,345 @@ +modules/filter/tex.lo: modules/filter/tex.cpp common/asc_ctype.hpp \ + common/config.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string.hpp \ + common/indiv_filter.hpp /usr/include/assert.h common/filter_char.hpp \ + common/mutable_container.hpp common/string_map.hpp \ + common/mutable_container.hpp common/string_pair.hpp common/hash.hpp \ + /usr/include/c++/4.5/functional /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/objstack.hpp common/clone_ptr-t.hpp \ + common/clone_ptr.hpp /usr/include/c++/4.5/typeinfo common/vector.hpp \ + common/errors.hpp common/convert.hpp common/char_vector.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/cache.hpp \ + common/filter_char_vector.hpp common/string_list.hpp \ + common/string_enumeration.hpp common/type_id.hpp \ + /usr/include/c++/4.5/cstdio common/string_enumeration.hpp \ + common/gettext.h /usr/include/libintl.h + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string.hpp: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/filter_char.hpp: + +common/mutable_container.hpp: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/vector.hpp: + +common/errors.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/filter_char_vector.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +/usr/include/c++/4.5/cstdio: + +common/string_enumeration.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/filter/.deps/texinfo.Plo b/jni/modules/filter/.deps/texinfo.Plo new file mode 100644 index 0000000..483ac5d --- /dev/null +++ b/jni/modules/filter/.deps/texinfo.Plo @@ -0,0 +1,280 @@ +modules/filter/texinfo.lo: modules/filter/texinfo.cpp \ + common/asc_ctype.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/error.hpp common/key_info.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/string.hpp \ + common/indiv_filter.hpp /usr/include/assert.h common/filter_char.hpp \ + common/string_map.hpp common/mutable_container.hpp \ + common/string_pair.hpp common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/objstack.hpp common/vector.hpp + +common/asc_ctype.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/string.hpp: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +common/filter_char.hpp: + +common/string_map.hpp: + +common/mutable_container.hpp: + +common/string_pair.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/objstack.hpp: + +common/vector.hpp: diff --git a/jni/modules/filter/.deps/url.Plo b/jni/modules/filter/.deps/url.Plo new file mode 100644 index 0000000..f2e35d3 --- /dev/null +++ b/jni/modules/filter/.deps/url.Plo @@ -0,0 +1,219 @@ +modules/filter/url.lo: modules/filter/url.cpp gen/settings.h \ + common/indiv_filter.hpp /usr/include/assert.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h common/string.hpp /usr/include/string.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/filter_char.hpp \ + common/key_info.hpp common/key_info.hpp + +gen/settings.h: + +common/indiv_filter.hpp: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/filter_char.hpp: + +common/key_info.hpp: + +common/key_info.hpp: diff --git a/jni/modules/filter/.dirstamp b/jni/modules/filter/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/filter/Makefile b/jni/modules/filter/Makefile new file mode 100644 index 0000000..aac96cc --- /dev/null +++ b/jni/modules/filter/Makefile @@ -0,0 +1,4 @@ +top_srcdir = ../.. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/filter/Makefile.in b/jni/modules/filter/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/modules/filter/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/filter/context-filter.info b/jni/modules/filter/context-filter.info new file mode 100644 index 0000000..d506341 --- /dev/null +++ b/jni/modules/filter/context-filter.info @@ -0,0 +1,23 @@ +# context filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `aspell help context' +DESCRIPTION experimental filter for hiding delimited contexts + +STATIC filter + +OPTION delimiters +TYPE list +DESCRIPTION context delimiters (separated by spaces) +DEFAULT " " +DEFAULT /* */ +DEFAULT // \0 +ENDOPTION + +OPTION visible-first +TYPE bool +DESCRIPTION swaps visible and invisible text +DEFAULT false +ENDOPTION diff --git a/jni/modules/filter/context.cpp b/jni/modules/filter/context.cpp new file mode 100644 index 0000000..8e152c1 --- /dev/null +++ b/jni/modules/filter/context.cpp @@ -0,0 +1,267 @@ +// This file is part of The New Aspell +// Copyright (C) 2002 by Christoph Hintermller under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. +// +// Example for a filter implementation usable via extended filter library +// interface. +// This was added to Aspell by Christoph Hintermller + +#include "settings.h" + +#include "can_have_error.hpp" +#include "config.hpp" +#include "filter_char.hpp" +#include "indiv_filter.hpp" +#include "iostream.hpp" +#include "posib_err.hpp" +#include "string.hpp" +#include "string_enumeration.hpp" +#include "string_list.hpp" +#include "vector.hpp" + +using namespace acommon; + +namespace { + + enum filterstate {hidden=0, visible=1}; + + class ContextFilter : public IndividualFilter { + filterstate state; + Vector<String> opening; + Vector<String> closing; + int correspond; + String filterversion; + + PosibErr<bool> hidecode(FilterChar * begin,FilterChar * end); + public: + ContextFilter(void); + virtual void reset(void); + void process(FilterChar *& start,FilterChar *& stop); + virtual PosibErr<bool> setup(Config * config); + virtual ~ContextFilter(); + }; + + ContextFilter::ContextFilter(void) + : opening(), + closing() + { + state=hidden; + correspond=-1; + opening.resize(3); + opening[0]="\""; + opening[1]="/*"; + opening[2]="//"; + closing.resize(3); + closing[0]="\""; + closing[1]="*/"; + closing[2]=""; + filterversion=VERSION; + } + + PosibErr<bool> ContextFilter::setup(Config * config){ + name_ = "context-filter"; + StringList delimiters; + StringEnumeration * delimiterpairs; + const char * delimiterpair=NULL; + char * repair=NULL; + char * begin=NULL; + char * end=NULL; + String delimiter; + unsigned int countdelim=0; + + if (config == NULL) { + fprintf(stderr,"Nothing to be configured\n"); + return true; + } + + if (config->retrieve_bool("f-context-visible-first")) { + state=visible; + } + + config->retrieve_list("f-context-delimiters", &delimiters); + delimiterpairs=delimiters.elements(); + opening.resize(0); + closing.resize(0); + while ((delimiterpair=delimiterpairs->next())) { + if ((begin=repair=strdup(delimiterpair)) == NULL) { + //fprintf(stderr,"ifailed to initialise %s filter\n",filter_name()); + return false; + } + end=repair+strlen(repair); + while ((*begin != ' ') && (*begin != '\t') && (begin != end)) { + begin++; + } + if (begin == repair) { + fprintf(stderr,"no delimiter pair: `%s'\n",repair); + free(repair); +//FIXME replace someday by make_err + //fprintf(stderr,"ifailed to initialise %s filter\n",filter_name()); + return false; + } + if (((*begin == ' ') || (*begin == '\t')) && (begin != end)) { + *begin='\0'; + opening.resize(opening.size()+1); + opening[opening.size()-1]=repair; + begin++; + } + while (((*begin == ' ') || (*begin == '\t')) && (begin != end)) { + begin++; + } + if ((*begin != ' ') && (*begin != '\t') && (begin != end)) { + closing.resize(closing.size()+1); + if (strcmp(begin,"\\0") != 0) { + closing[closing.size()-1]=begin; + } + else { + closing[closing.size()-1]=""; + } + } + else { + closing.resize(closing.size()+1); + closing[closing.size()-1]=""; + } + free(repair); + } + if (state == visible) { + for (countdelim=0;(countdelim < opening.size()) && + (countdelim < closing.size());countdelim++) { + delimiter=opening[countdelim]; + opening[countdelim]=closing[countdelim]; + closing[countdelim]=delimiter; + } + } + //fprintf(stderr,"%s filter initialised\n",filter_name()); + return true; + } + + + void ContextFilter::process(FilterChar *& start,FilterChar *& stop) { + FilterChar * current=start-1; + FilterChar * beginblind=start; + FilterChar * endblind=stop; + FilterChar * localstop=stop; + int countmasking=0; + int countdelimit=0; + int matchdelim=0; + + if ((localstop > start+1) && (*(localstop-1) == '\0')) { + localstop--; + endblind=localstop; + } + if (state == visible) { + beginblind=endblind; + } + while (( ++current < localstop) && (*current != '\0')) { + if (*current == '\\') { + countmasking++; + continue; + } + if (state == visible) { + if ((countmasking % 2 == 0) && (correspond < 0)) { + for (countdelimit=0; + countdelimit < (signed)closing.size();countdelimit++) { + for (matchdelim=0; + (current+closing[countdelimit].size() < localstop) && + (matchdelim < (signed)closing[countdelimit].size()); + matchdelim++){ +//FIXME Warning about comparison of signed and unsigned in following line + if (current[matchdelim] != closing[countdelimit][matchdelim]) { + break; + } + } + if ((matchdelim == (signed) closing[countdelimit].size()) && + closing[countdelimit].size()) { + correspond=countdelimit; + break; + } + } + } + if ((countmasking % 2 == 0) && (correspond >= 0) && + (correspond < (signed)closing.size()) && + (closing[correspond].size() > 0) && + (current+closing[correspond].size() < localstop)) { + for (matchdelim=0;matchdelim < (signed)closing[correspond].size(); + matchdelim++) { +//FIXME Warning about comparison of signed and unsigned in following line + if (current[matchdelim] != closing[correspond][matchdelim]) { + break; + } + } + if ((matchdelim == (signed) closing[correspond].size()) && + closing[correspond].size()) { + beginblind=current; + endblind=localstop; + state=hidden; + correspond=-1; + } + } + countmasking=0; + continue; + } + if (countmasking % 2) { + countmasking=0; + continue; + } + countmasking=0; + for (countdelimit=0;countdelimit < (signed)opening.size();countdelimit++) { + for (matchdelim=0;(current+opening[countdelimit].size() < localstop) && + (matchdelim < (signed)opening[countdelimit].size()); + matchdelim++) { +//FIXME Warning about comparison of signed and unsigned in following line + if (current[matchdelim] != opening[countdelimit][matchdelim]) { + break; + } + } + if ((matchdelim == (signed) opening[countdelimit].size()) && + opening[countdelimit].size()) { + endblind=current+opening[countdelimit].size(); + state=visible; + hidecode(beginblind,endblind); + current=endblind-1; + beginblind=endblind=localstop; + correspond=countdelimit; + break; + } + } + } + if ((state == visible) && + (correspond >= 0) && (correspond < (signed)closing.size()) && + (closing[correspond] == "") && (countmasking % 2 == 0)) { + state=hidden; + correspond=-1; + } + + if (beginblind < endblind) { + hidecode(beginblind,endblind); + } + } + + PosibErr<bool> ContextFilter::hidecode(FilterChar * begin,FilterChar * end) { + //FIXME here we go, a more efficient context hiding blinding might be used :) + FilterChar * current=begin; + while (current < end) { + if ((*current != '\t') && (*current != '\n') && (*current != '\r')) { + *current=' '; + } + current++; + } + return true; + } + + void ContextFilter::reset(void) { + opening.resize(0); + closing.resize(0); + state=hidden; + } + + ContextFilter::~ContextFilter() { + reset(); + } +} + +C_EXPORT +IndividualFilter * new_aspell_context_filter() { + return new ContextFilter; +} diff --git a/jni/modules/filter/context.lo b/jni/modules/filter/context.lo new file mode 100644 index 0000000..a7071b2 --- /dev/null +++ b/jni/modules/filter/context.lo @@ -0,0 +1,12 @@ +# modules/filter/context.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/context.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/email-filter.info b/jni/modules/filter/email-filter.info new file mode 100644 index 0000000..64b29c1 --- /dev/null +++ b/jni/modules/filter/email-filter.info @@ -0,0 +1,23 @@ +# email filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `Aspell help email' +DESCRIPTION filter for skipping quoted text in email messages + +STATIC filter + +OPTION quote +TYPE list +DESCRIPTION email quote characters +DEFAULT > +DEFAULT | +FLAGS utf-8 +ENDOPTION + +OPTION margin +TYPE int +DESCRIPTION num chars that can appear before the quote char +DEFAULT 10 +ENDOPTION diff --git a/jni/modules/filter/email.cpp b/jni/modules/filter/email.cpp new file mode 100644 index 0000000..9731818 --- /dev/null +++ b/jni/modules/filter/email.cpp @@ -0,0 +1,115 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "settings.h" + +#include "indiv_filter.hpp" +#include "convert.hpp" +#include "config.hpp" +#include "indiv_filter.hpp" +#include "mutable_container.hpp" + +namespace { + + using namespace acommon; + + class EmailFilter : public IndividualFilter + { + bool prev_newline; + bool in_quote; + int margin; + int n; + + class QuoteChars : public MutableContainer { + public: + typedef FilterChar::Chr Value; + Vector<Value> data; + Conv conv; + bool have(Value c) { + Value * i = data.pbegin(); + Value * end = data.pend(); + for (; i != end && *i != c; ++i); + return i != end; + } + PosibErr<bool> add(ParmStr s) { + Value c = *(Value *)conv(s); + if (!have(c)) data.push_back(c); + return true; + } + PosibErr<bool> remove(ParmStr s) { + Value c = *(Value *)conv(s); + Vector<Value>::iterator i = data.begin(); + Vector<Value>::iterator end = data.end(); + for (; i != end && *i != c; ++i); + if (i != end) data.erase(i); + return true; + } + PosibErr<void> clear() { + data.clear(); + return no_err; + } + }; + QuoteChars is_quote_char; + + public: + PosibErr<bool> setup(Config *); + void reset(); + void process(FilterChar * &, FilterChar * &); + }; + + PosibErr<bool> EmailFilter::setup(Config * opts) + { + name_ = "email-filter"; + order_num_ = 0.85; + is_quote_char.conv.setup(*opts, "utf-8", "ucs-4", NormNone); + opts->retrieve_list("f-email-quote", &is_quote_char); + margin = opts->retrieve_int("f-email-margin"); + reset(); + return true; + } + + void EmailFilter::reset() + { + prev_newline = true; + in_quote = false; + n = 0; + } + + void EmailFilter::process(FilterChar * & str, FilterChar * & end) + { + FilterChar * line_begin = str; + FilterChar * cur = str; + while (cur < end) { + if (prev_newline && is_quote_char.have(*cur)) + in_quote = true; + if (*cur == '\n') { + if (in_quote) { + for (FilterChar * i = line_begin; i != cur; ++i) + *i = ' '; + } + line_begin = cur; + in_quote = false; + prev_newline = true; + n = 0; + } else if (n < margin) { + ++n; + } else { + prev_newline = false; + } + ++cur; + } + if (in_quote) + for (FilterChar * i = line_begin; i != cur; ++i) + *i = ' '; + } +} + +C_EXPORT +IndividualFilter * new_aspell_email_filter() { + return new EmailFilter; +} + + diff --git a/jni/modules/filter/email.lo b/jni/modules/filter/email.lo new file mode 100644 index 0000000..eebe4e3 --- /dev/null +++ b/jni/modules/filter/email.lo @@ -0,0 +1,12 @@ +# modules/filter/email.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/email.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/html-filter.info b/jni/modules/filter/html-filter.info new file mode 100644 index 0000000..2bb9f0a --- /dev/null +++ b/jni/modules/filter/html-filter.info @@ -0,0 +1,26 @@ +# SGML filter option file + +LIB-FILE sgml-filter + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `Aspell help SGML' +DESCRIPTION filter for dealing with HTML documents + +STATIC filter + +OPTION check +TYPE list +DESCRIPTION HTML attributes to always check +DEFAULT alt +ENDOPTION + +OPTION skip +TYPE list +DESCRIPTION HTML tags to always skip the contents of +DEFAULT script +DEFAULT style +ENDOPTION + +STATIC decoder diff --git a/jni/modules/filter/modes/ccpp.amf b/jni/modules/filter/modes/ccpp.amf new file mode 100644 index 0000000..4de9070 --- /dev/null +++ b/jni/modules/filter/modes/ccpp.amf @@ -0,0 +1,18 @@ +MODE ccpp + +ASPELL >=0.60.1 + +MAGIC /<noregex>/c/cc/cpp +MAGIC /<noregex>/h/hpp + +DESCRIPTION mode for checking C++ comments and string literals + +FILTER url +FILTER context +OPTION clear-context-delimiters +OPTION add-context-delimiters /* */ +OPTION add-context-delimiters // \0 +OPTION add-context-delimiters " " +OPTION disable-context-visible-first + + diff --git a/jni/modules/filter/modes/comment.amf b/jni/modules/filter/modes/comment.amf new file mode 100644 index 0000000..078193b --- /dev/null +++ b/jni/modules/filter/modes/comment.amf @@ -0,0 +1,12 @@ +MODE comment + +ASPELL >=0.60 + +DESCRIPTION mode to check any lines starting with a \# + +FILTER url +FILTER context +OPTION clear-context-delimiters +OPTION add-context-delimiters \# \0 + + diff --git a/jni/modules/filter/modes/email.amf b/jni/modules/filter/modes/email.amf new file mode 100644 index 0000000..988726a --- /dev/null +++ b/jni/modules/filter/modes/email.amf @@ -0,0 +1,8 @@ +MODE email + +ASPELL >=0.60 + +DESCRIPTION mode for skipping quoted text in email messages + +FILTER url +FILTER email diff --git a/jni/modules/filter/modes/html.amf b/jni/modules/filter/modes/html.amf new file mode 100644 index 0000000..f3a8c86 --- /dev/null +++ b/jni/modules/filter/modes/html.amf @@ -0,0 +1,13 @@ +# HTML mode description file + +MODE html + +ASPELL >=0.60 + +MAGIC /0:256:^[ \t]*<[Hh][Tt][Mm][Ll]([ \t]*(<[^>]*>|[^<>]*))*>/htm/html +MAGIC /0:256:^[ \t]*<[h][Tt][Mm][Ll]([ \t]*(<[^>]*>|[^<>]*))*>/HTM/HTML + +DESCRIPTION mode for checking HTML documents + +FILTER url +FILTER html diff --git a/jni/modules/filter/modes/none.amf b/jni/modules/filter/modes/none.amf new file mode 100644 index 0000000..0fad4e8 --- /dev/null +++ b/jni/modules/filter/modes/none.amf @@ -0,0 +1,5 @@ +MODE none + +ASPELL >=0.60.1 + +DESCRIPTION mode to disable all filters diff --git a/jni/modules/filter/modes/nroff.amf b/jni/modules/filter/modes/nroff.amf new file mode 100644 index 0000000..42a3977 --- /dev/null +++ b/jni/modules/filter/modes/nroff.amf @@ -0,0 +1,10 @@ +MODE nroff + +ASPELL >=0.60.1 + +MAGIC /0:3:\.\/"/0/1/2/3/4/5/6/7/8/9/n/man/tmac + +DESCRIPTION mode for checking Nroff documents + +FILTER url +FILTER nroff diff --git a/jni/modules/filter/modes/perl.amf b/jni/modules/filter/modes/perl.amf new file mode 100644 index 0000000..114c49a --- /dev/null +++ b/jni/modules/filter/modes/perl.amf @@ -0,0 +1,16 @@ +MODE perl + +ASPELL >=0.60.1 + +MAGIC /0:256:^[ \t]*\#!((\/\w*)+)\/perl/pl/pm +MAGIC /<noregex>/pl/pm + +DESCRIPTION mode for checking Perl comments and string literals + +FILTER url +FILTER context +OPTION clear-context-delimiters +OPTION add-context-delimiters " " +OPTION add-context-delimiters \# \0 +OPTION disable-context-visible-first + diff --git a/jni/modules/filter/modes/sgml.amf b/jni/modules/filter/modes/sgml.amf new file mode 100644 index 0000000..e1b1c01 --- /dev/null +++ b/jni/modules/filter/modes/sgml.amf @@ -0,0 +1,12 @@ +MODE sgml + +ASPELL >=0.60 + +MAGIC /0:256:^[ \t]*<[Hh][Tt][Mm][Ll]([ \t]*(<[^>]*>|[^<>]*))*>/htm/html +MAGIC /0:256:^[ \t]*<[h][Tt][Mm][Ll]([ \t]*(<[^>]*>|[^<>]*))*>/HTM/HTML + +DESCRIPTION mode for checking generic SGML/XML documents + +FILTER url +FILTER sgml + diff --git a/jni/modules/filter/modes/tex.amf b/jni/modules/filter/modes/tex.amf new file mode 100644 index 0000000..beb32dc --- /dev/null +++ b/jni/modules/filter/modes/tex.amf @@ -0,0 +1,10 @@ +MODE tex + +ASPELL >=0.60 + +MAGIC /0:256:^[ \t]*\\documentclass\[[^\[\]]*\]\{[^\{\}]*\}/tex + +DESCRIPTION mode for checking TeX/LaTeX documents + +FILTER url +FILTER tex diff --git a/jni/modules/filter/modes/texinfo.amf b/jni/modules/filter/modes/texinfo.amf new file mode 100644 index 0000000..0cd1068 --- /dev/null +++ b/jni/modules/filter/modes/texinfo.amf @@ -0,0 +1,10 @@ +MODE texinfo + +ASPELL >=0.60.1 + +MAGIC /<noregex>/texi/texinfo + +DESCRIPTION mode for checking Texinfo documents + +FILTER url +FILTER texinfo diff --git a/jni/modules/filter/modes/url.amf b/jni/modules/filter/modes/url.amf new file mode 100644 index 0000000..24ce649 --- /dev/null +++ b/jni/modules/filter/modes/url.amf @@ -0,0 +1,7 @@ +MODE url + +ASPELL >=0.60 + +DESCRIPTION mode to skip URL like constructs (default mode) + +FILTER url diff --git a/jni/modules/filter/nroff-filter.info b/jni/modules/filter/nroff-filter.info new file mode 100644 index 0000000..858146f --- /dev/null +++ b/jni/modules/filter/nroff-filter.info @@ -0,0 +1,10 @@ +# sgml filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `aspell help nroff' +DESCRIPTION filter for dealing with Nroff documents + +STATIC filter + diff --git a/jni/modules/filter/nroff.cpp b/jni/modules/filter/nroff.cpp new file mode 100644 index 0000000..3be33b8 --- /dev/null +++ b/jni/modules/filter/nroff.cpp @@ -0,0 +1,312 @@ +/* This file is part of The New Aspell + + Copyright (C) 2004 Sergey Poznyakoff + + GNU Aspell free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + GNU Aspell is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with GNU Aspell; see the file COPYING. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <stdio.h> + +#include "settings.h" +#include "asc_ctype.hpp" +#include "config.hpp" +#include "indiv_filter.hpp" +#include "string_map.hpp" +#include "mutable_container.hpp" +#include "clone_ptr-t.hpp" +#include "filter_char_vector.hpp" + +namespace { + using namespace acommon; + + class NroffFilter : public IndividualFilter + { + private: + enum filter_state { + initial, + escape, + request, + font_switch, + size_switch, + skip_char, + skip_digit, + skip_space_before_ident, + skip_ident, + skip_cond, + skip_leading_ws, + argument, + register_reference, + gnu_register_name + } state; + bool newline; // Newline has just been seen. + size_t skip_chars; // Number of characters to skip + char req_name[2]; // Name of the recent nroff request + int pos; // position of the next char in req_name + bool in_request; // are we within a request? + + // Return true if we should ignore argument to the current request. + bool inline ignore_request_argument () + { + static char ignore_req_tab[][3] = { + "ds", + "de", + "nr", + "do", + "so" + }; + for (unsigned i = 0; i < sizeof(ignore_req_tab)/sizeof(ignore_req_tab[0]); + i++) + if (memcmp(ignore_req_tab[i], req_name, 2) == 0) + return true; + return false; + } + + bool process_char (FilterChar::Chr c); + + public: + + PosibErr<bool> setup(Config *); + void reset(); + void process(FilterChar * &, FilterChar * &); + }; + + PosibErr<bool> NroffFilter::setup(Config * opts) + { + name_ = "nroff-filter"; + order_num_ = 0.2; + reset(); + return true; + } + + void NroffFilter::reset() + { + state = initial; + newline = true; + in_request = false; + pos = 0; + skip_chars = 0; + } + + bool NroffFilter::process_char(FilterChar::Chr c) + { + if (skip_chars) + { + skip_chars--; + return true; + } + + switch (state) + { + case initial: + switch (c) + { + case '\\': + state = escape; + return true; + + case '\'': + case '.': + if (newline) + { + state = skip_leading_ws; + return true; + } + else if (in_request) + { + state = request; + pos = 0; + return true; + } + break; + } + break; + + case escape: + switch (c) + { + case 'f': // font switch + state = font_switch; + return true; + + case '*': // string register + case 'n': // numeric register + state = register_reference; + return true; + + case 's': // change size escape + state = size_switch; + return true; + + case '(': + // extended char set: \(XX + skip_chars = 2; + state = initial; + return true; + + case '[': + // extended char set: \[comp1 comp2 ... ] (GNU extension) + state = gnu_register_name; + return true; + + case '"': // comment + state = initial; + return true; + + case '\\': // quoting; + return true; + + case '$': + state = argument; + return true; + + default: + state = initial; + } + break; + + case register_reference: + // Reference to a string or numeric register. + switch (c) + { + case '(': // Traditional nroff + skip_chars = 2; + state = initial; + return true; + + case '[': // register long name (GNU extension) + state = gnu_register_name; + return true; + + default: + state = initial; + } + break; + + case gnu_register_name: + if (c == ']' || c == '\n') + state = initial; + return true; + + case font_switch: + // font change escape. Either + // \f(XY + // or + // \fX + if (c == '(') + skip_chars = 2; + state = initial; + return true; + + case size_switch: + // size chage escape. It can be called in a variety of ways: + // \sN \s+N \s-N \s(NN \s+(NN \s-(NN \s(+NN \s(-NN + if (c == '+' || c == '-') + { + state = skip_char; + return true; + } + /* FALL THROUGH */ + + case skip_char: + state = skip_digit; + return true; + + case skip_digit: + state = initial; + if (asc_isdigit (c)) + return true; + break; + + case skip_leading_ws: + if (asc_isspace(c)) + break; + state = request; + pos = 0; + /* FALL THROUGH */ + + case request: + if (c == '\n' || c == '.') //double-dot + { + state = initial; + } + else + { + req_name[pos++] = c; + if (pos == 2) + { + if (ignore_request_argument ()) + state = skip_space_before_ident; + else if (memcmp (req_name, "if", 2) == 0) + state = skip_cond; + else + state = skip_ident; + } + } + return true; + + case skip_cond: + if (asc_isspace(c)) + return true; + + state = initial; + in_request = true; + if (c == 't' || c == 'n') // if t .. if n + return true; + return process_char(c); // tail recursion; + + case skip_space_before_ident: + if (!asc_isspace(c)) + state = skip_ident; + return true; + + case skip_ident: + if (asc_isspace(c)) + { + state = initial; + in_request = true; + } + return true; + + case argument: + if (asc_isdigit(c)) + return true; + state = initial; + return process_char(c); // tail recursion; + } + + return false; + } + + void NroffFilter::process(FilterChar * & str, FilterChar * & stop) + { + FilterChar * cur = str; + for (; cur != stop; cur++) + { + if (process_char (*cur) && *cur != '\n') + *cur = ' '; + newline = *cur == '\n'; + if (newline) + in_request = false; + } + } + +} + +C_EXPORT +IndividualFilter * new_aspell_nroff_filter() { + return new NroffFilter; +} + + diff --git a/jni/modules/filter/nroff.lo b/jni/modules/filter/nroff.lo new file mode 100644 index 0000000..035fe22 --- /dev/null +++ b/jni/modules/filter/nroff.lo @@ -0,0 +1,12 @@ +# modules/filter/nroff.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/nroff.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/sgml-filter.info b/jni/modules/filter/sgml-filter.info new file mode 100644 index 0000000..92595ca --- /dev/null +++ b/jni/modules/filter/sgml-filter.info @@ -0,0 +1,23 @@ +# SGML filter option file + +LIB-FILE sgml-filter + +#THIS Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `Aspell help SGML' +DESCRIPTION filter for dealing with generic SGML/XML documents + +STATIC filter + +OPTION check +TYPE list +DESCRIPTION SGML attributes to always check +ENDOPTION + +OPTION skip +TYPE list +DESCRIPTION SGML tags to always skip the contents of +ENDOPTION + +STATIC decoder diff --git a/jni/modules/filter/sgml.cpp b/jni/modules/filter/sgml.cpp new file mode 100644 index 0000000..585c017 --- /dev/null +++ b/jni/modules/filter/sgml.cpp @@ -0,0 +1,604 @@ +// This file is part of The New Aspell +// Copyright (C) 2004 by Tom Snyder +// Copyright (C) 2001-2004 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. +// +// The orignal filter was written by Kevin Atkinson. +// Tom Snyder rewrote the filter to support skipping SGML tags +// +// This filter enables the spell checking of sgml, html, and xhtml files +// by skipping the <elements> and such. +// The overall strategy is based on http://www.w3.org/Library/SGML.c. +// We don't use that code (nor the sourceforge 'expat' project code) for +// simplicity's sake. We don't need to fully parse all aspects of HTML - +// we just need to skip and handle a few aspects. The w3.org code had too +// many linkages into their overall SGML/HTML processing engine. +// +// See the comment at the end of this file for examples of what we handle. +// See the config setting docs regarding our config lists: check and skip. + +#include <stdio.h> // needed for sprintf + +#include "settings.h" + +#include "asc_ctype.hpp" +#include "config.hpp" +#include "indiv_filter.hpp" +#include "string_map.hpp" +#include "mutable_container.hpp" +#include "clone_ptr-t.hpp" +#include "filter_char_vector.hpp" + +//right now unused option +// static const KeyInfo sgml_options[] = { +// {"sgml-extension", KeyInfoList, "html,htm,php,sgml", +// N_("sgml file extensions")} +// }; + +namespace { + + using namespace acommon; + + class ToLowerMap : public StringMap + { + public: + PosibErr<bool> add(ParmStr to_add) { + String new_key; + for (const char * i = to_add; *i; ++i) new_key += asc_tolower(*i); + return StringMap::add(new_key); + } + + PosibErr<bool> remove(ParmStr to_rem) { + String new_key; + for (const char * i = to_rem; *i; ++i) new_key += asc_tolower(*i); + return StringMap::remove(new_key); + } + }; + + class SgmlFilter : public IndividualFilter + { + // State enum. These states track where we are in the HTML/tag/element constructs. + // This diagram shows the main states. The marked number is the state we enter + // *after* we've read that char. Note that some of the state transitions handle + // illegal HTML such as <tag=what?>. + // + // real text <tag attrib = this attrib2='that'>   </tag> { + // | | | | || | | | | | | + // 1 2 3 4 56 7 8 10 11 9 12 + enum ScanState { + S_text, // 1. raw user text outside of any markup. + S_tag, // 2. reading the 'tag' in <tag> + S_tag_gap,// 3. gap between attributes within an element: + S_attr, // 4. Looking at an attrib name + S_attr_gap,// 5. optional gap after attrib name + S_equals, // 6. Attrib equals sign, also space after the equals. + S_value, // 7. In attrib value. + S_quoted, // 8. In quoted attrib value. + S_end, // 9. Same as S_tag, but this is a </zee> type end tag. + S_ignore_junk, // special case invalid area to ignore. + S_ero, // 10. in the &code; special encoding within HTML. + S_entity, // 11. in the alpha named &nom; special encoding.. + S_cro, // 12. after the # of a &#nnn; numerical char reference encoding. + + // SGML.. etc can have these special "declarations" within them. We skip them + // in a more raw manners since they don't abide by the attrib= rules. + // Most importantly, some of the attrib quoting rules don't apply. + // <!ENTITY rtfchar "gg" - - (high, low)> <!-- fully commented --> + // | | || | + // 20 21 23 24 25 + S_md, // 20. In a declaration (or beginning a comment). + S_mdq, // 21. Declaration in quotes - double or single quotes. + S_com_1, // 23. perhaps a comment beginning. + S_com, // 24. Fully in a comment + S_com_e, // 25. Perhaps ending a comment. + + //S_literal, // within a tag pair that means all content should be interpreted literally: <PRE> + // NOT CURRENTLY SUPPORTED FULLY. + + //S_esc,S_dollar,S_paren,S_nonasciitext // WOULD BE USED FOR ISO_2022_JP support. + // NOT CURRENTLY SUPPORTED. + }; + + ScanState in_what; + // which quote char is quoting this attrib value. + FilterChar::Chr quote_val; + // one char prior to this one. For escape handling and such. + FilterChar::Chr lookbehind; + + String tag_name; // we accumulate the current tag name here. + String attrib_name; // we accumulate the current attribute name here. + + bool include_attrib; // are we in one of the attribs that *should* be spell checked (alt=..) + int skipall; // are we in one of the special skip-all content tags? This is treated + // as a bool and as a nesting level count. + String tag_endskip; // tag name that will end that. + + StringMap check_attribs; // list of attribs that we *should* spell check. + StringMap skip_tags; // list of tags that start a no-check-at-all zone. + + String which; + + bool process_char(FilterChar::Chr c); + + public: + + SgmlFilter(const char * n) : which(n) {} + + PosibErr<bool> setup(Config *); + void reset(); + void process(FilterChar * &, FilterChar * &); + }; + + PosibErr<bool> SgmlFilter::setup(Config * opts) + { + name_ = which + "-filter"; + order_num_ = 0.35; + check_attribs.clear(); + skip_tags.clear(); + opts->retrieve_list("f-" + which + "-skip", &skip_tags); + opts->retrieve_list("f-" + which + "-check", &check_attribs); + reset(); + return true; + } + + void SgmlFilter::reset() + { + in_what = S_text; + quote_val = lookbehind = '\0'; + skipall = 0; + include_attrib = false; + } + + // yes this should be inlines, it is only called once + + // RETURNS: TRUE if the caller should skip the passed char and + // not do any spell check on it. FALSE if char is a part of the text + // of the document. + bool SgmlFilter::process_char(FilterChar::Chr c) { + + bool retval = true; // DEFAULT RETURN VALUE. All returns are done + // via retval and falling out the bottom. Except for + // one case that must manage the lookbehind char. + + // PS: this switch will be fast since S_ABCs are an enum and + // any good compiler will build a jump table for it. + // RE the gotos: Sometimes considered bad practice but that is + // how the W3C code (1995) handles it. Could be done also with recursion + // but I doubt that will clarify it. The gotos are done in cases where several + // state changes occur on a single input char. + + switch( in_what ) { + + case S_text: // 1. raw user text outside of any markup. + s_text: + switch( c ) { + case '&': in_what = S_ero; + break; + case '<': in_what = S_tag; tag_name.clear(); + break; + default: + retval = skipall; // ********** RETVAL ASSIGNED + } // ************************** + break; + + case S_tag: // 2. reading the 'tag' in <tag> + // heads up: <foo/bar will be treated as an end tag. That's what w3c does. + switch( c ) { + case '>': goto all_end_tags; + case '/': in_what = S_end; + tag_name.clear(); + break; + case '!': in_what = S_md; + break; + default: // either more alphanum of the tag, or end of tagname: + if( asc_isalpha(c) || asc_isdigit(c) ) { + tag_name += asc_tolower(c); + } + else { // End of the tag: + in_what = S_tag_gap; + goto s_tag_gap; // handle content in that zone. + } + } + break; + + // '>' '>' '>' '>' + all_end_tags: // this gets called by several states to handle the + // possibility of a '>' ending a whole <tag...> guy. + if( c != '>' ) break; + in_what = S_text; + + if( lookbehind == '/' ) { + // Wowza: this is how we handle the <script stuff /> XML style self + // terminating tag. By clearing the tagname out tag-skip-all code + // will not be invoked. + tag_name.clear(); + } + + // Does this tag cause us to skip all content? + if( skipall ) { + // already in a skip-all context. See if this is + // the same skipall tag: + if( !strcmp( tag_name.c_str(), tag_endskip.c_str() ) ) { + ++skipall; // increment our nesting level count. + } + } + else { // Should we begin a skip all range? + skipall = (skip_tags.have( tag_name.c_str() ) ? 1 : 0); + if( skipall ) { + tag_endskip = tag_name; // remember what tag to end on. + } + } + break; + + case S_tag_gap: // 3. gap between attributes within an element: + s_tag_gap: + switch( c ) { + case '>': goto all_end_tags; + + case '=': in_what = S_attr_gap; + break; // uncommon - no-name attrib value + default: + if( asc_isspace( c ) ) break; // still in gap. + else { + in_what = S_attr; // start of attribute name; + attrib_name.clear(); + attrib_name += asc_tolower( c ); + } + break; + } + break; + + case S_end: // 9. Same as S_tag, but this is a </zee> type end tag. + if( asc_isalpha(c) || asc_isdigit(c) ) { + tag_name += asc_tolower( c ); + } + else { + // See if we have left a skipall tag range. + if( skipall && !strcmp( tag_name.c_str(), tag_endskip.c_str() ) ) { + --skipall; // lessen nesting level count. This usually takes us to zero. + } + if( c == '>' ) in_what = S_text; // --don't go to all_end_tags. Really. + else in_what = S_ignore_junk; // no-mans land: </end whats this??> + } + break; + + case S_ignore_junk: // no-mans land state: </end whats this here??> + if( c == '>' ) in_what = S_text; + break; + + case S_attr: // 4. Looking at an attrib name + if( asc_isspace(c) ) in_what = S_attr_gap; + else if( c == '=' ) in_what = S_equals; + else if( c == '>' ) goto all_end_tags; + else { + attrib_name += asc_tolower( c ); + } + break; + + case S_attr_gap: // 5. optional gap after attrib name + if( asc_isspace(c) ) break; + else if( c == '=' ) in_what = S_equals; + else if( c == '>' ) goto all_end_tags; + else { // beginning of a brand new attr + attrib_name.clear(); + attrib_name += asc_tolower( c ); + } + break; + + case S_equals: // 6. Attrib equals sign, also space after the equals. + if( asc_isspace(c) ) break; + switch( c ) { + case '>': goto all_end_tags; + + case '\'': + case '"': in_what = S_quoted; + quote_val = c; + break; + default: in_what = S_value; + break; + } + // See if this attrib deserves full checking: + include_attrib=check_attribs.have( attrib_name.c_str() ); + // Handle the first value char if that is where we are now: + if( in_what == S_value ) goto s_value; + break; + + case S_value: // 7. In attrib value. + s_value: + if( c == '>' ) goto all_end_tags; + else if( asc_isspace(c) ) in_what = S_tag_gap; // end of attrib value + // ***************************** + // ********** RETVAL ASSIGNED + else if( include_attrib ) retval = false; // spell check this value. + break; + + case S_quoted: // 8. In quoted attrib value. + if( c == quote_val && lookbehind != '\\' ) in_what = S_tag_gap; + else if( c == '\\' && lookbehind == '\\' ) { + // This is an escape of an backslash. Therefore the backslash + // does not escape what follows. Therefore we don't leave it in + // the lookbehind. Yikes! + lookbehind = '\0'; + return !include_attrib; // ************* RETURN RETURN RETURN RETURN + } + else retval = !include_attrib; + break; + + // note: these three cases - S_ero, S_cro, and S_entity which all handle + // the &stuff; constructs are broken into 3 states for future upgrades. Someday + // you may want to handle the chars these guys represent as individual chars. + // I don't have the desire nor the knowledge to do it now. -Tom, 5/5/04. + case S_ero: // 10. in the &code; special encoding within HTML. + // &# is a 'Char Ref Open' + if( c == '#' ) { + in_what = S_cro; + break; + } + // FALLTHROUGH INTENTIONAL + + case S_cro: // 12. after the # of a &#nnn; numerical char reference encoding. + case S_entity: // 11. in the alpha named &nom; special encoding.. + if( asc_isalpha(c) || asc_isdigit(c) ) break; // more entity chars. + in_what = S_text; + if( c == ';' ) break; // end of char code. + goto s_text; // ran right into text. Handle it. + + + // SGML.. etc can have these special "declarations" within them. We skip them + // in a more raw manners since they don't abide by the attrib= rules. + // Most importantly, some of the quoting rules don't apply. + // <!ENTITY rtfchar "gg" 'tt' - - (high, low)> <!-- fully commented --> + // | | | || || + // 20 21 22 23 24 25 26 + case S_md: // 20. In a declaration (or comment). + switch( c ) { + case '-': if( lookbehind == '!' ) { + in_what = S_com_1; + } + break; + + case '"': // fallthrough - yes. + case '\'': in_what = S_mdq; + quote_val=c; + break; + case '>': in_what = S_text; // note: NOT all_end_tags cause it's not a real tag. + break; + } + break; + + case S_mdq: // 22. Declaration in quotes. + if( c == quote_val ) in_what = S_md; + else if( c == '>' ) in_what = S_text; + break; + + case S_com_1: // 23. perhaps a comment beginning. + if( c == '-' ) in_what = S_com; + else if( c == '>' ) in_what = S_text; + else in_what = S_md; // out of possible comment. + break; + + case S_com: // 24. Fully in a comment + if( c == '-' && lookbehind == '-' ) in_what = S_com_e; + break; + + case S_com_e: // 25. Perhaps ending a comment. + if( c == '>' ) in_what = S_text; + else if( c != '-' ) in_what = S_com; // back to basic comment. + break; + } + + // update the lookbehind: + lookbehind = c; + + return( retval ); + } + + void SgmlFilter::process(FilterChar * & str, FilterChar * & stop) + { + FilterChar * cur = str; + while (cur != stop) { + if (process_char(*cur)) + *cur = ' '; + ++cur; + } + } + + // + // + // + + class SgmlDecoder : public IndividualFilter + { + FilterCharVector buf; + String which; + public: + SgmlDecoder(const char * n) : which(n) {} + PosibErr<bool> setup(Config *); + void reset() {} + void process(FilterChar * &, FilterChar * &); + }; + + PosibErr<bool> SgmlDecoder::setup(Config *) + { + name_ = which + "-decoder"; + order_num_ = 0.65; + return true; + } + + void SgmlDecoder::process(FilterChar * & start, FilterChar * & stop) + { + buf.clear(); + FilterChar * i = start; + while (i != stop) + { + if (*i == '&') { + FilterChar * i0 = i; + FilterChar::Chr chr; + ++i; + if (i != stop && *i == '#') { + chr = 0; + ++i; + while (i != stop && asc_isdigit(*i)) { + chr *= 10; + chr += *i - '0'; + ++i; + } + } else { + while (i != stop && (asc_isalpha(*i) || asc_isdigit(*i))) { + ++i; + } + chr = '?'; + } + if (i != stop && *i == ';') + ++i; + buf.append(FilterChar(chr, i0, i)); + } else { + buf.append(*i); + ++i; + } + } + buf.append('\0'); + start = buf.pbegin(); + stop = buf.pend() - 1; + } + + // + // Sgml Encoder - BROKEN do not use + // + +// class SgmlEncoder : public IndividualFilter +// { +// FilterCharVector buf; +// String which; +// public: +// SgmlEncoder(const char * n) : which(n) {} +// PosibErr<bool> setup(Config *); +// void reset() {} +// void process(FilterChar * &, FilterChar * &); +// }; + +// PosibErr<bool> SgmlEncoder::setup(Config *) +// { +// name_ = which + "-encoder"; +// order_num_ = 0.99; +// return true; +// } + +// void SgmlEncoder::process(FilterChar * & start, FilterChar * & stop) +// { +// buf.clear(); +// FilterChar * i = start; +// while (i != stop) +// { +// if (*i > 127) { +// buf.append("&#", i->width); +// char b[10]; +// sprintf(b, "%d", i->chr); +// buf.append(b, 0); +// buf.append(';', 0); +// } else { +// buf.append(*i); +// } +// ++i; +// } +// buf.append('\0'); +// start = buf.pbegin(); +// stop = buf.pend() - 1; +// } +} + +C_EXPORT IndividualFilter * new_aspell_sgml_filter() +{ + return new SgmlFilter("sgml"); +} +C_EXPORT IndividualFilter * new_aspell_sgml_decoder() +{ + return new SgmlDecoder("sgml"); +} +// C_EXPORT IndividualFilter * new_aspell_sgml_encoder() +// { +// return new SgmlEncoder("sgml"); +// } + +C_EXPORT IndividualFilter * new_aspell_html_filter() +{ + return new SgmlFilter("html"); +} +C_EXPORT IndividualFilter * new_aspell_html_decoder() +{ + return new SgmlDecoder("html"); +} +// C_EXPORT IndividualFilter * new_aspell_html_encoder() +// { +// return new SgmlEncoder("html"); +// } + + +/* Example HTML: + +<!-- +This file contains several constructs that test the parsing and +handling of SGML/HTML/XML in sgml.cpp. + +The only spelling errors you should see will be the word 'report this NNNN'. +There will be 22 of these. + +run this by executing: +aspell pipe -H < sgmltest.html + +WARNING: this is not really valid HTML. Don't display in a browser! +--> + +<!-- phase 1 - SGML comments. --> +reportthiszphaseONE + <!-- ** 1.0 Valid comments... This file is full of them. --> + <!-- ** 1.1 invalid open comment: --> +<!- not in a comment>reportthisyes</!-> + + <!-- ** 1.2 invalid close comment: --> +<!-- -- > spallwhat DON'T REPORT -> spallwhat DON'T REPORT --> + +<!-- phase 1.5 - special entity encodings --> +reportthisphaseONEFIVE +   don't report this + do not report this. + do not>report this. + this & that. + +<!-- phase 2 - special skip tags --> +reportthisphaseTWO +<SCRIPT> spallwhat DON'T REPORT </SCRIPT> reportthisyes +<style> spallwhat DON'T REPORT </style> reportthisyes +<STYLE something="yes yes" + > spallwhat DON'T REPORT </style > reportthisyes +<script/> reportthisyes <!-- XHTML style terminated tag --> +<script someattrib=value/> reportthisyes <!-- XHTML style terminated tag --> +<!-- Nested skip tags --> +<script> spallwhatnoreport <script> nonoreport </script><b>hello</b> nonoreport</script>reportthisyes + +<!-- phase 3 - special 'include this' attributes --> +reportthisphaseTHREE +<tagname alt="image text reportthisyes" alt2=spallwhat altt="spallwhat don't report"> +<tagname ALT="image text reportthisyes" ALT2=spallwhat AL="spallwhat don't report"> + +<!-- phase 4 - attribute value quoteing and escaping --> +reportthisphaseoneFOUR +<checkthis attribute111=simple/value.value > +<checkagain SOMEattrib = "whoa boy, mimimimspelled "> +<singlequotes gotcha= 'singlypingly quoted///'> +<dblescaped gogogogo="dontcheck \">still in dontcheck\\\" still in dontcheck"> reportthisyes. +<dBLmore TomTomTomTom="so many escapes: \\\\\\\\"> reportthisyes. +<dblescaped gogogogo='dontcheck \'>still in dontcheck\\\' still in dontcheck'> reportthisyes. +<dBLmore TomTomTomTom='so many escapes: \\\\\\\\'> reportthisyes. +<mixnmatch scanhere='">dontcheck \"dontcheck \'dontcheck' alt=reportthisyes> + +<!-- phase 5 - questionable (though all too common) constructs --> +reportthisphaseFIVE +<tag=dontreport> reportthisyes <tag hahahahhaha>reportthisyes +<!-- this one is from Yahoo! --> +<td width=1%><img src="http://wellll/thereeee/nowwww" alt="cool stuff"> +<td width=1%><img src=http://wellll/thereeee/nowwww alt=real cool stuff> + +*/ diff --git a/jni/modules/filter/sgml.lo b/jni/modules/filter/sgml.lo new file mode 100644 index 0000000..5021944 --- /dev/null +++ b/jni/modules/filter/sgml.lo @@ -0,0 +1,12 @@ +# modules/filter/sgml.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/sgml.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/tex-filter.info b/jni/modules/filter/tex-filter.info new file mode 100644 index 0000000..81d9c5b --- /dev/null +++ b/jni/modules/filter/tex-filter.info @@ -0,0 +1,105 @@ +# TeX filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.51 + +#This line will be printed when typing `Aspell help TeX' +DESCRIPTION filter for dealing with TeX/LaTeX documents + +STATIC filter +#STATIC encoder +#STATIC decoder + +OPTION check-comments +TYPE bool +DESCRIPTION check TeX comments +DEFAULT false +ENDOPTION + +OPTION command +TYPE list +DESCRIPTION TeX commands +DEFAULT addtocounter pp +DEFAULT addtolength pp +DEFAULT alpha p +DEFAULT arabic p +DEFAULT fnsymbol p +DEFAULT roman p +DEFAULT stepcounter p +DEFAULT setcounter pp +DEFAULT usecounter p +DEFAULT value p +DEFAULT newcounter po +DEFAULT refstepcounter p +DEFAULT label p +DEFAULT pageref p +DEFAULT ref p +DEFAULT newcommand poOP +DEFAULT renewcommand poOP +DEFAULT newenvironment poOPP +DEFAULT renewenvironment poOPP +DEFAULT newtheorem poPo +DEFAULT newfont pp +DEFAULT documentclass op +DEFAULT usepackage op +DEFAULT begin po +DEFAULT end p +DEFAULT setlength pp +DEFAULT addtolength pp +DEFAULT settowidth pp +DEFAULT settodepth pp +DEFAULT settoheight pp +DEFAULT enlargethispage p +DEFAULT hyphenation p +DEFAULT pagenumbering p +DEFAULT pagestyle p +DEFAULT addvspace p +DEFAULT framebox ooP +DEFAULT hspace p +DEFAULT vspace p +DEFAULT makebox ooP +DEFAULT parbox ooopP +DEFAULT raisebox pooP +DEFAULT rule opp +DEFAULT sbox pO +DEFAULT savebox pooP +DEFAULT usebox p +DEFAULT include p +DEFAULT includeonly p +DEFAULT input p +DEFAULT addcontentsline ppP +DEFAULT addtocontents pP +DEFAULT fontencoding p +DEFAULT fontfamily p +DEFAULT fontseries p +DEFAULT fontshape p +DEFAULT fontsize pp +DEFAULT usefont pppp +DEFAULT documentstyle op +DEFAULT cite p +DEFAULT nocite p +DEFAULT psfig p +DEFAULT selectlanguage p +DEFAULT includegraphics op +DEFAULT bibitem op +DEFAULT geometry p +ENDOPTION + +#OPTION multi-byte +#TYPE list +#DESCRIPTION multi character coded letters (<char>,<rep>[,<rep>[...]]) +#DEFAULT Ä,\\"A,"A +#DEFAULT ä,\\"a,"a +#DEFAULT Ö,\\"O,"O +#DEFAULT ö,\\"o,"o +#DEFAULT Ü,\\"U,"U +#DEFAULT ü,\\"u,"u +#DEFAULT ß,\\"s,"s +#FLAGS utf-8 +#ENDOPTION + +#OPTION hyphen +#TYPE list +#DESCRIPTION characters used to encode hyphenation locations +#DEFAULT \\- +#ENDOPTION diff --git a/jni/modules/filter/tex.cpp b/jni/modules/filter/tex.cpp new file mode 100644 index 0000000..a979539 --- /dev/null +++ b/jni/modules/filter/tex.cpp @@ -0,0 +1,767 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "asc_ctype.hpp" +#include "config.hpp" +#include "string.hpp" +#include "indiv_filter.hpp" +#include "mutable_container.hpp" +#include "string_map.hpp" +#include "clone_ptr-t.hpp" +#include "vector.hpp" +#include "errors.hpp" +#include "convert.hpp" + +//#define FILTER_PROGRESS_CONTROL "tex-filter-debug.log" +//#include "filter_debug.hpp" +//#include <stdio.h> +//#include <cstdio> +#include "filter_char_vector.hpp" +#include "string_list.hpp" +#include "string_enumeration.hpp" + +#include "gettext.h" + +namespace { + + using namespace acommon; + + class TexFilter : public IndividualFilter + { + private: + enum InWhat {Name, Opt, Parm, Other, Swallow}; + struct Command { + InWhat in_what; + String name; + const char * do_check; + Command() {} + Command(InWhat w) : in_what(w), do_check("P") {} + }; + + bool in_comment; + bool prev_backslash; + Vector<Command> stack; + + class Commands : public StringMap { + public: + PosibErr<bool> add(ParmStr to_add); + PosibErr<bool> remove(ParmStr to_rem); + }; + + Commands commands; + bool check_comments; + + inline void push_command(InWhat); + inline void pop_command(); + + bool end_option(char u, char l); + + inline bool process_char(FilterChar::Chr c); + + public: + PosibErr<bool> setup(Config *); + void reset(); + void process(FilterChar * &, FilterChar * &); + }; + + // + // + // + + inline void TexFilter::push_command(InWhat w) { + stack.push_back(Command(w)); + } + + inline void TexFilter::pop_command() { + stack.pop_back(); + if (stack.empty()) + push_command(Parm); + } + + // + // + // + + PosibErr<bool> TexFilter::setup(Config * opts) + { + name_ = "tex-filter"; + order_num_ = 0.35; + //fprintf(stderr,"name %s \n",name_); + + commands.clear(); + opts->retrieve_list("f-tex-command", &commands); + + check_comments = opts->retrieve_bool("f-tex-check-comments"); + + reset(); + return true; + } + + void TexFilter::reset() + { + in_comment = false; + prev_backslash = false; + stack.resize(0); + push_command(Parm); + } + +# define top stack.back() + + // yes this should be inlined, it is only called once + inline bool TexFilter::process_char(FilterChar::Chr c) + { + // deal with comments + if (c == '%' && !prev_backslash) in_comment = true; + if (in_comment && c == '\n') in_comment = false; + + prev_backslash = false; + + if (in_comment) return !check_comments; + + if (top.in_what == Name) { + if (asc_isalpha(c)) { + + top.name += c; + return true; + + } else { + + if (top.name.empty() && (c == '@')) { + top.name += c; + return true; + } + + top.in_what = Other; + + if (top.name.empty()) { + top.name.clear(); + top.name += c; + top.do_check = commands.lookup(top.name.c_str()); + if (top.do_check == 0) top.do_check = ""; + return !asc_isspace(c); + } + + top.do_check = commands.lookup(top.name.c_str()); + if (top.do_check == 0) top.do_check = ""; + + if (asc_isspace(c)) { // swallow extra spaces + top.in_what = Swallow; + return true; + } else if (c == '*') { // ignore * at end of commands + return true; + } + + // continue o... + } + + } else if (top.in_what == Swallow) { + + if (asc_isspace(c)) + return true; + else + top.in_what = Other; + } + + if (c == '{') + while (*top.do_check == 'O' || *top.do_check == 'o') + ++top.do_check; + + if (*top.do_check == '\0') + pop_command(); + + if (c == '{') { + + if (top.in_what == Parm || top.in_what == Opt || top.do_check == '\0') + push_command(Parm); + + top.in_what = Parm; + return true; + } + + if (top.in_what == Other) { + + if (c == '[') { + + top.in_what = Opt; + return true; + + } else if (asc_isspace(c)) { + + return true; + + } else { + + pop_command(); + + } + + } + + if (c == '\\') { + prev_backslash = true; + push_command(Name); + return true; + } + + if (top.in_what == Parm) { + + if (c == '}') + return end_option('P','p'); + else + return *top.do_check == 'p'; + + } else if (top.in_what == Opt) { + + if (c == ']') + return end_option('O', 'o'); + else + return *top.do_check == 'o'; + + } + + return false; + } + + void TexFilter::process(FilterChar * & str, FilterChar * & stop) + { + FilterChar * cur = str; + + while (cur != stop) { + if (process_char(*cur)) + *cur = ' '; + ++cur; + } + } + + bool TexFilter::end_option(char u, char l) { + top.in_what = Other; + if (*top.do_check == u || *top.do_check == l) + ++top.do_check; + return true; + } + + // + // TexFilter::Commands + // + + PosibErr<bool> TexFilter::Commands::add(ParmStr value) { + int p1 = 0; + while (!asc_isspace(value[p1])) { + if (value[p1] == '\0') + return make_err(bad_value, value,"", + _("a string of 'o','O','p',or 'P'")); + ++p1; + } + int p2 = p1 + 1; + while (asc_isspace(value[p2])) { + if (value[p2] == '\0') + return make_err(bad_value, value,"", + _("a string of 'o','O','p',or 'P'")); + ++p2; + } + String t1; t1.assign(value,p1); + String t2; t2.assign(value+p2); + return StringMap::replace(t1, t2); + } + + PosibErr<bool> TexFilter::Commands::remove(ParmStr value) { + int p1 = 0; + while (!asc_isspace(value[p1]) && value[p1] != '\0') ++p1; + String temp; temp.assign(value,p1); + return StringMap::remove(temp); + } +#if 0 + // + // + class Recode { + Vector<char *> code; + int minlength; + public: + Recode(); + Recode(const Recode & recode) {*this=recode;} + void reset(); + bool setExpansion(const char * expander); + virtual int encode(FilterChar * & begin,FilterChar * & end, + FilterCharVector * external); + virtual int decode(FilterChar * & begin,FilterChar * & end, + FilterCharVector * internal); + bool operator == (char test) ; + bool operator != (char test) ; + Recode & operator = (const Recode & rec); + virtual ~Recode(); + }; + + Recode::Recode() + : code(0) + { + minlength=0; + reset(); + } + + Recode & Recode::operator = (const Recode & rec) { + reset(); + code.resize(rec.code.size()); + + int countrec=0; + + for (countrec=0; + countrec < code.size(); + countrec++) { + code[countrec]=NULL; + if (!rec.code[countrec]) { + continue; + } + int length=strlen(rec.code[countrec]); + + code[countrec]= new char[length+1]; + strncpy(code[countrec],rec.code[countrec],length); + code[countrec][length]='\0'; + } + return *this; + } + + + bool Recode::operator == (char test) { + return (code.size() && (code[0][0] == test)); + } + + bool Recode::operator != (char test) { + return (!code.size() || (code[0][0] != test)); + } + + void Recode::reset() { + + unsigned int countcode=0; + + for (countcode=0; + countcode < code.size(); + countcode++) { + if (code[countcode]) { + delete[] code[countcode]; + } + code[countcode] = NULL; + } + code.resize(0); + minlength=0; + } + + bool Recode::setExpansion(const char * expander) { + + char * begin=(char *)expander; + char * end=begin; + char * start=begin; + int keylen=0; + + + if (code.size() > 0) { + keylen=strlen(code[0]); + } + while (begin && end && *begin) { + while (end && *end && (*end != ',')) { + end++; + } + if (end && (begin != end)) { + + char hold = *end; + + *end='\0'; + + int length=strlen(begin); + + if ((begin == start) && (keylen || (length != 1))) { + if ((length != 1) || (keylen != length) || + strncmp(code[0],begin,length)) { + *end=hold; + return false; + } + *end=hold; + if (*end) { + end++; + } + begin=end; + continue; + } + else if (minlength < length) { + minlength=0; + } + + code.resize(code.size()+1); + code[code.size()-1] = new char[length+1]; + strncpy(code[code.size()-1],begin,length); + code[code.size()-1][length]='\0'; + *end=hold; + if (*end) { + end++; + } + begin=end; + } + } + return true; + } + + int Recode::encode(FilterChar * & begin,FilterChar * & end, + FilterCharVector * external) { + if ((code.size() < 2) || + (begin == NULL) || + (begin == end) || + (begin->width < (unsigned int) minlength )) { + return 0; + } + + if (code[0][0] != (char)*begin) { + return 0; + } + external->append(code[1],1); + return strlen(code[0]); + } + + int Recode::decode(FilterChar * & begin,FilterChar * & end, + FilterCharVector * internal) { + + FilterChar * i = begin; + char * codepointer = NULL; + char * codestart = NULL; + + if (code.size() < 2) { + return 0; + } + while((i != end) && + ((codepointer == NULL) || (*codepointer))) { + if (codepointer == NULL) { + + int countcodes=0; + + for (countcodes=1; + countcodes < (int) code.size(); + countcodes++) { + if (*i == code[countcodes][0]) { + codestart=codepointer=code[countcodes]; + break; + } + } + if (codepointer == NULL) { + return 0; + } + } + if (*codepointer != *i) { + return 0; + } + i++; + codepointer++; + } + if ((codepointer == NULL) || (*codepointer)) { + return 0; + } + + int length=strlen(codestart); + internal->append(code[0],length); + return length; + } + + + Recode::~Recode() { + reset(); + } + + class TexEncoder : public IndividualFilter { + Vector<Recode> multibytes; + FilterCharVector buf; + + public: + TexEncoder(); + virtual PosibErr<bool> setup(Config * config); + virtual void process(FilterChar * & start, FilterChar * & stop); + virtual void reset() ; + virtual ~TexEncoder(); + }; + + TexEncoder::TexEncoder() + : multibytes(0), + buf() + { + } + + PosibErr<bool> TexEncoder::setup(Config * config) { + name_ = "tex-encoder"; + order_num_ = 0.40; + + StringList multibytechars; + + config->retrieve_list("f-tex-multi-byte", &multibytechars); + + Conv conv; // this a quick and dirty fix witch will only work for + // iso-8859-1. Full unicode support needs to be + // implemented + conv.setup(*config, "utf-8", "iso-8859-1", NormNone); + + StringEnumeration * multibytelist=multibytechars.elements(); + const char * multibyte0=NULL; + const char * multibyte=NULL; + + while ((multibyte0=multibytelist->next())) { + + multibyte = conv(multibyte0); + + if (strlen(multibyte) < 3) { + fprintf(stderr,"Filter: %s ignoring multi byte encoding `%s'\n", + name_,multibyte); + continue; + } + + int countmulti=0; + + while ((countmulti < multibytes.size()) && + !multibytes[countmulti].setExpansion(multibyte)) { + countmulti++; + } + if (countmulti >= multibytes.size()) { + multibytes.resize(multibytes.size()+1); + if (!multibytes[multibytes.size()-1].setExpansion(multibyte)) { + fprintf(stderr,"Filter: %s ignoring multi byte encoding `%s'\n",name_,multibyte); + continue; + } + } + } + return true; + } + + void TexEncoder::process(FilterChar * & start, FilterChar * & stop) { + buf.clear(); + + FilterChar * i=start; + + while (i && (i != stop)) { + + FilterChar * old = i; + int count=0; + + for (count=0; + count < multibytes.size(); + count++) { + + + i+=multibytes[count].encode(i,stop,&buf); + } + if (i == old) { + buf.append(*i); + i++; + } + } + buf.append('\0'); + start = buf.pbegin(); + stop = buf.pend() - 1; + } + + + void TexEncoder::reset() { + multibytes.resize(0); + buf.clear(); + } + + TexEncoder::~TexEncoder(){ + } + + + class TexDecoder : public IndividualFilter { + Vector<Recode> multibytes; + FilterCharVector buf; + Vector<char *>hyphens; + + public: + TexDecoder(); + virtual PosibErr<bool> setup(Config * config); + virtual void process(FilterChar * & start, FilterChar * & stop); + virtual void reset() ; + virtual ~TexDecoder(); + }; + + TexDecoder::TexDecoder() + : multibytes(0), + buf(), + hyphens() + { + FDEBUGNOTOPEN; + } + + PosibErr<bool> TexDecoder::setup(Config * config) { + name_ = "tex-decoder"; + order_num_ = 0.3; + + StringList multibytechars; + + config->retrieve_list("f-tex-multi-byte", &multibytechars); + + Conv conv; // this a quick and dirty fix witch will only work for + // iso-8859-1. Full unicode support needs to be + // implemented + conv.setup(*config, "utf-8", "iso-8859-1", NormNone); + + StringEnumeration * multibytelist=multibytechars.elements(); + const char * multibyte0=NULL; + const char * multibyte=NULL; + + multibytes.resize(0); + + while ((multibyte0=multibytelist->next())) { + + multibyte = conv(multibyte0); + + if (strlen(multibyte) < 3) { + fprintf(stderr,"Filter: %s ignoring multi byte encoding `%s'\n", + name_,multibyte); + continue; + } + FDEBUGPRINTF("next multibyte chars `"); + FDEBUGPRINTF(multibyte); + FDEBUGPRINTF("'\n"); + + int countmulti=0; + + while ((countmulti < multibytes.size()) && + !multibytes[countmulti].setExpansion(multibyte)) { + countmulti++; + } + FDEBUGPRINTF("next multibyte chars `"); + FDEBUGPRINTF(multibyte); + FDEBUGPRINTF("'\n"); + if (countmulti >= multibytes.size()) { + multibytes.resize(multibytes.size()+1); + if (!multibytes[multibytes.size()-1].setExpansion(multibyte)) { + fprintf(stderr,"Filter: %s ignoring multi byte encoding `%s'\n",name_,multibyte); + continue; + } + } + FDEBUGPRINTF("next multibyte chars `"); + FDEBUGPRINTF(multibyte); + FDEBUGPRINTF("'\n"); + } + StringList hyphenChars; + + config->retrieve_list("f-tex-hyphen", &hyphenChars); + + StringEnumeration * hyphenList=hyphenChars.elements(); + const char * hyphen=NULL; + + hyphens.resize(0); + while ((hyphen=hyphenList->next())) { + FDEBUGPRINTF("next hyphen char `"); + FDEBUGPRINTF(hyphen); + FDEBUGPRINTF("'\n"); + hyphens.push_back(strdup(hyphen)); + } + return true; + } + + void TexDecoder::process(FilterChar * & start, FilterChar * & stop) { + buf.clear(); + + FilterChar * i=start; + + FDEBUGPRINTF("filtin `"); + while (i && (i != stop)) { + + FilterChar * old = i; + int count=0; + + for (count=0; + count < multibytes.size(); + count++) { + + FilterChar * j = i; + + i+=multibytes[count].decode(i,stop,&buf); + + while (j != i) { + char jp[2]={'\0','\0'}; + + jp[0]=*j; + FDEBUGPRINTF(jp); + j++; + } + } + for(count=0; + count < hyphens.size(); + count++) { + if (!hyphens[count]) { + continue; + } + char * hp = &hyphens[count][0]; + char * hpo = hp; + FilterChar * j = i; + while (*hp && (j != stop) && + (*hp == *j)) { + hp++; + j++; + } + if (!*hp) { + FDEBUGPRINTF("{"); + FilterChar * k = i; + while (k != j) { + char kp[2]={'\0','\0'}; + + kp[0]=*k; + FDEBUGPRINTF(kp); + k++; + } + FDEBUGPRINTF("}"); + if (buf.size()) { + buf[buf.size()-1].width+=strlen(hpo); +// buf.append(*i,strlen(hpo)+1); + } + else { +//FIXME better solution for illegal hyphenation at begin of line +// illegal as new line chars are whitespace for latex + buf.append(*i,strlen(hpo)); + char ip[2]={'\0','\0'}; + ip[0]=*i; + FDEBUGPRINTF(ip); + } + i=j; + } + } + if (i == old) { + char ip[2]={'\0','\0'}; + ip[0]=*i; + FDEBUGPRINTF(ip); + buf.append(*i); + i++; + } + } + buf.append('\0'); + start = buf.pbegin(); + stop = buf.pend() - 1; + FDEBUGPRINTF("'\nfiltout `"); + i = start; + while (i != stop) { + char ip[2]={'\0','\0'}; + ip[0]=*i; + FDEBUGPRINTF(ip); + i++; + } + FDEBUGPRINTF("'\n"); + } + + + void TexDecoder::reset() { + multibytes.resize(0); + buf.clear(); + } + + TexDecoder::~TexDecoder(){ + FDEBUGCLOSE; + } +#endif +} + +C_EXPORT +IndividualFilter * new_aspell_tex_filter() {return new TexFilter;} + +#if 0 +C_EXPORT +IndividualFilter * new_aspell_tex_decoder() {return new TexDecoder;} +C_EXPORT +IndividualFilter * new_aspell_tex_encoder() {return new TexEncoder;} +#endif diff --git a/jni/modules/filter/tex.lo b/jni/modules/filter/tex.lo new file mode 100644 index 0000000..7958160 --- /dev/null +++ b/jni/modules/filter/tex.lo @@ -0,0 +1,12 @@ +# modules/filter/tex.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/tex.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/texinfo-filter.info b/jni/modules/filter/texinfo-filter.info new file mode 100644 index 0000000..d7dae6d --- /dev/null +++ b/jni/modules/filter/texinfo-filter.info @@ -0,0 +1,52 @@ +# TeX filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.60 + +#This line will be printed when typing `Aspell help TeX' +DESCRIPTION filter for dealing with Texinfo documents + +STATIC filter + +OPTION ignore +TYPE list +DESCRIPTION Texinfo commands to ignore the parameters of +DEFAULT setfilename +DEFAULT syncodeindex +DEFAULT documentencoding +DEFAULT vskip +DEFAULT code +DEFAULT kbd +DEFAULT key +DEFAULT samp +DEFAULT verb +DEFAULT var +DEFAULT env +DEFAULT file +DEFAULT command +DEFAULT option +DEFAULT url +DEFAULT uref +DEFAULT email +DEFAULT verbatiminclude +DEFAULT xref +DEFAULT ref +DEFAULT pxref +DEFAULT inforef +DEFAULT c +ENDOPTION + +OPTION ignore-env +TYPE list +DESCRIPTION Texinfo environments to ignore +DEFAULT example +DEFAULT smallexample +DEFAULT verbatim +DEFAULT lisp +DEFAULT smalllisp +DEFAULT small +DEFAULT display +DEFAULT snalldisplay +DEFAULT format +DEFAULT smallformat +ENDOPTION diff --git a/jni/modules/filter/texinfo.cpp b/jni/modules/filter/texinfo.cpp new file mode 100644 index 0000000..7be1676 --- /dev/null +++ b/jni/modules/filter/texinfo.cpp @@ -0,0 +1,231 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "asc_ctype.hpp" +#include "config.hpp" +#include "string.hpp" +#include "indiv_filter.hpp" +#include "string_map.hpp" +#include "vector.hpp" + +namespace { + + using namespace acommon; + + class TexInfoFilter : public IndividualFilter + { + private: + struct Command { + bool ignore; + Command(bool i = false) : ignore(i) {} + }; + + struct Table { + String name; + bool ignore_item; + Table(String n) : name(n), ignore_item(false) {} + }; + + String last_command; + + String env_command; + int env_ignore; + + int ignore; + bool in_line_command; + bool seen_input; + Vector<Command> stack; + Vector<Table> table_stack; + + StringMap to_ignore; + StringMap to_ignore_env; + + void reset_stack(); + + public: + PosibErr<bool> setup(Config *); + void reset(); + void process(FilterChar * &, FilterChar * &); + }; + + // + // + // + + PosibErr<bool> TexInfoFilter::setup(Config * opts) + { + name_ = "texinfo-filter"; + order_num_ = 0.35; + + to_ignore.clear(); + opts->retrieve_list("f-texinfo-ignore", &to_ignore); + opts->retrieve_list("f-texinfo-ignore-env", &to_ignore_env); + + reset(); + return true; + } + + void TexInfoFilter::reset_stack() + { + stack.clear(); + stack.push_back(Command()); + in_line_command = false; + ignore = 0; + } + + void TexInfoFilter::reset() + { + reset_stack(); + seen_input = false; + env_command.clear(); + env_ignore = 0; + table_stack.clear(); + table_stack.push_back(Table("")); + } + + void TexInfoFilter::process(FilterChar * & str, FilterChar * & stop) + { + FilterChar * cur = str; + + while (cur != stop) { + + if (*cur == ' ') { + + ++cur; + + } else if (*cur == '@') { + + *cur = ' '; + ++cur; + if (cur == stop) break; + if (asc_isalpha(*cur)) { + + bool was_table = last_command == table_stack.back().name + && (last_command == "table" || last_command == "ftable" + || last_command == "vtable"); + + last_command.clear(); + while (cur != stop && asc_isalpha(*cur)) { + last_command += *cur; + *cur = ' '; + ++cur; + } + + if (env_ignore) { + + // do nothing + + } else if (was_table) { + + if (to_ignore.have(last_command)) + table_stack.back().ignore_item = true; + + } else { + + if (cur == stop || *cur != '{') + in_line_command = true; + else + ++cur; + + if (to_ignore.have(last_command) + || (table_stack.back().ignore_item + && (last_command == "item" || last_command == "itemx"))) + { + stack.push_back(Command(true)); + ++ignore; + } else { + stack.push_back(Command(false)); + } + + if (last_command == "end") { + // do nothing as end command is special + } else if (env_command.empty() && to_ignore_env.have(last_command)) { + env_command = last_command; + env_ignore = 1; + } else if (env_command == last_command) { + env_ignore++; + } else if (last_command.suffix("table")) { + table_stack.push_back(last_command); + } + + } + + } else { + + *cur = ' '; + ++cur; + } + + } else if (!seen_input && *cur == '\\' && stop - cur >= 6 + && cur[1] == 'i' && cur[2] == 'n' && cur[3] == 'p' + && cur[4] == 'u' && cur[5] == 't') { + + last_command.clear(); + for (int i = 0; i != 6; ++i) + *cur++ = ' '; + stack.push_back(Command(true)); + ++ignore; + in_line_command = true; + seen_input = true; + ++cur; + + } else if (last_command == "end") { + + last_command.clear(); + + while (cur != stop && asc_isalpha(*cur)) { + last_command += *cur; + *cur = ' '; + ++cur; + } + + if (last_command == env_command) { + + --env_ignore; + if (env_ignore <= 0) { + env_ignore = 0; + env_command.clear(); + } + + } else if (last_command == table_stack.back().name) { + + table_stack.pop_back(); + if (table_stack.empty()) table_stack.push_back(Table("")); + + } + + last_command.clear(); + + } else { + + last_command.clear(); + if (*cur == '{') { + stack.push_back(Command()); + } else if (*cur == '}') { + if (stack.back().ignore) { + --ignore; + if (ignore < 0) ignore = 0; + } + stack.pop_back(); + if (stack.empty()) + stack.push_back(Command()); + } else if (in_line_command && *cur == '\n') { + reset_stack(); + } else if (ignore || env_ignore) { + *cur = ' '; + } + ++cur; + + } + + } + } + +} + +C_EXPORT +IndividualFilter * new_aspell_texinfo_filter() {return new TexInfoFilter;} + diff --git a/jni/modules/filter/texinfo.lo b/jni/modules/filter/texinfo.lo new file mode 100644 index 0000000..a1a4afb --- /dev/null +++ b/jni/modules/filter/texinfo.lo @@ -0,0 +1,12 @@ +# modules/filter/texinfo.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/texinfo.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/filter/url-filter.info b/jni/modules/filter/url-filter.info new file mode 100644 index 0000000..3a12c3e --- /dev/null +++ b/jni/modules/filter/url-filter.info @@ -0,0 +1,9 @@ +# URL filter option file + +#This Filter is usable with the following version(s) of Aspell +ASPELL >=0.50 + +#This line will be printed when typing `aspell help url' +DESCRIPTION filter to skip URL like constructs + +STATIC filter diff --git a/jni/modules/filter/url.cpp b/jni/modules/filter/url.cpp new file mode 100644 index 0000000..fcf8882 --- /dev/null +++ b/jni/modules/filter/url.cpp @@ -0,0 +1,66 @@ +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "settings.h" +#include "indiv_filter.hpp" +#include "key_info.hpp" + +namespace { + using namespace acommon; + + class UrlFilter : public IndividualFilter { + public: + PosibErr<bool> setup(Config *); + void reset() {} + void process(FilterChar * &, FilterChar * &); + }; + + PosibErr<bool> UrlFilter::setup(Config *) + { + name_ = "url-filter"; + order_num_ = 0.95; + return true; + } + + static bool url_char(char c) + { + return c != '"' && c != ' ' && c != '\n' && c != '\t'; + } + + void UrlFilter::process(FilterChar * & str, FilterChar * & end) + { + for (FilterChar * cur = str; cur < end; ++cur) + { + if (!url_char(*cur)) continue; + FilterChar * cur0 = cur; + bool blank_out = false; + int point_chars = 0; + // only consider special url deciding characters if they are in + // the middle of a word + for (++cur; cur + 1 < end && url_char(cur[1]); ++cur) { + if (blank_out) continue; + if ((cur[0] == '/' && (point_chars > 0 || cur[1] == '/')) + || cur[0] == '@') { + blank_out = true; + } else if (cur[0] == '.' && cur[1] != '.') { + // count multiple '.' as one + if (point_chars < 1) ++point_chars; + else blank_out = true; + } + } + ++cur; + if (blank_out) { + for (; cur0 != cur; ++cur0) *cur0 = ' '; + } + } + } +} + +C_EXPORT +IndividualFilter * new_aspell_url_filter() { + return new UrlFilter; +} + diff --git a/jni/modules/filter/url.lo b/jni/modules/filter/url.lo new file mode 100644 index 0000000..51ba1b6 --- /dev/null +++ b/jni/modules/filter/url.lo @@ -0,0 +1,12 @@ +# modules/filter/url.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/url.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/Makefile b/jni/modules/speller/Makefile new file mode 100644 index 0000000..aac96cc --- /dev/null +++ b/jni/modules/speller/Makefile @@ -0,0 +1,4 @@ +top_srcdir = ../.. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/speller/Makefile.in b/jni/modules/speller/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/modules/speller/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/speller/default/.deps/.dirstamp b/jni/modules/speller/default/.deps/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/speller/default/.deps/affix.Plo b/jni/modules/speller/default/.deps/affix.Plo new file mode 100644 index 0000000..3697a60 --- /dev/null +++ b/jni/modules/speller/default/.deps/affix.Plo @@ -0,0 +1,396 @@ +modules/speller/default/affix.lo: modules/speller/default/affix.cpp \ + /usr/include/c++/4.5/cstdlib \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/xlocale.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/cstring /usr/include/string.h \ + /usr/include/bits/string3.h /usr/include/c++/4.5/cstdio \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + modules/speller/default/affix.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/error.hpp common/errors.hpp common/ndebug.hpp \ + modules/speller/default/wordinfo.hpp /usr/include/assert.h \ + common/string.hpp common/fstream.hpp common/posib_err.hpp \ + common/parm_string.hpp common/simple_string.hpp common/char_vector.hpp \ + common/objstack.hpp common/errors.hpp common/getdata.hpp \ + modules/speller/default/check_list.hpp common/speller.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/clone_ptr.hpp common/char_vector.hpp \ + modules/speller/default/speller_impl.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/clone_ptr.hpp \ + common/copy_ptr.hpp modules/speller/default/data.hpp common/ndebug.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + common/cache.hpp common/config.hpp common/key_info.hpp common/vector.hpp \ + common/convert.hpp common/filter_char.hpp common/filter_char_vector.hpp \ + common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + common/vararray.hpp common/lsort.hpp common/hash-t.hpp common/hash.hpp \ + /usr/include/c++/4.5/functional /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/block_slist-t.hpp \ + /usr/include/c++/4.5/cassert common/gettext.h /usr/include/libintl.h + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/cstring: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/c++/4.5/cstdio: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +modules/speller/default/wordinfo.hpp: + +/usr/include/assert.h: + +common/string.hpp: + +common/fstream.hpp: + +common/posib_err.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/errors.hpp: + +common/getdata.hpp: + +modules/speller/default/check_list.hpp: + +common/speller.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/clone_ptr.hpp: + +common/char_vector.hpp: + +modules/speller/default/speller_impl.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/clone_ptr.hpp: + +common/copy_ptr.hpp: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +common/cache.hpp: + +common/config.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +common/convert.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +common/vararray.hpp: + +common/lsort.hpp: + +common/hash-t.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/block_slist-t.hpp: + +/usr/include/c++/4.5/cassert: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/speller/default/.deps/data.Plo b/jni/modules/speller/default/.deps/data.Plo new file mode 100644 index 0000000..02c5ccc --- /dev/null +++ b/jni/modules/speller/default/.deps/data.Plo @@ -0,0 +1,389 @@ +modules/speller/default/data.lo: modules/speller/default/data.cpp \ + common/config.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp /usr/include/assert.h \ + common/filter.hpp common/string_pair_enumeration.hpp \ + common/string_pair.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/cache.hpp \ + modules/speller/default/data.hpp common/ndebug.hpp common/copy_ptr.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/fstream.hpp common/parm_string.hpp common/simple_string.hpp \ + common/char_vector.hpp common/objstack.hpp common/cache.hpp \ + modules/speller/default/phonetic.hpp common/stack_ptr.hpp \ + common/string_enumeration.hpp common/type_id.hpp common/iostream.hpp \ + common/fstream.hpp common/word_list.hpp \ + modules/speller/default/data_id.hpp gen/settings.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h common/errors.hpp \ + common/file_util.hpp modules/speller/default/speller_impl.hpp \ + common/clone_ptr.hpp common/speller.hpp \ + modules/speller/default/check_list.hpp common/cache-t.hpp \ + common/lock.hpp /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/sched.h /usr/include/bits/setjmp.h common/vararray.hpp \ + common/gettext.h /usr/include/libintl.h + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +common/copy_ptr.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/fstream.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +modules/speller/default/data_id.hpp: + +gen/settings.h: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +common/errors.hpp: + +common/file_util.hpp: + +modules/speller/default/speller_impl.hpp: + +common/clone_ptr.hpp: + +common/speller.hpp: + +modules/speller/default/check_list.hpp: + +common/cache-t.hpp: + +common/lock.hpp: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +common/vararray.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/speller/default/.deps/editdist.Plo b/jni/modules/speller/default/.deps/editdist.Plo new file mode 100644 index 0000000..751a1f5 --- /dev/null +++ b/jni/modules/speller/default/.deps/editdist.Plo @@ -0,0 +1,147 @@ +modules/speller/default/editdist.lo: modules/speller/default/editdist.cpp \ + /usr/include/c++/4.5/cstring \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string3.h \ + modules/speller/default/editdist.hpp common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h modules/speller/default/weights.hpp \ + modules/speller/default/matrix.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/vararray.hpp + +/usr/include/c++/4.5/cstring: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +modules/speller/default/editdist.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +modules/speller/default/weights.hpp: + +modules/speller/default/matrix.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/vararray.hpp: diff --git a/jni/modules/speller/default/.deps/language.Plo b/jni/modules/speller/default/.deps/language.Plo new file mode 100644 index 0000000..de0c81f --- /dev/null +++ b/jni/modules/speller/default/.deps/language.Plo @@ -0,0 +1,375 @@ +modules/speller/default/language.lo: modules/speller/default/language.cpp \ + gen/settings.h /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc /usr/include/assert.h \ + common/iostream.hpp common/fstream.hpp /usr/include/stdio.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/string.hpp \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_algo.h /usr/include/c++/4.5/cstdlib \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/posib_err.hpp common/error.hpp common/errors.hpp \ + common/ndebug.hpp common/asc_ctype.hpp common/clone_ptr-t.hpp \ + common/clone_ptr.hpp common/generic_copy_ptr.hpp \ + /usr/include/c++/4.5/typeinfo common/generic_copy_ptr-t.hpp \ + common/config.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/key_info.hpp common/vector.hpp common/enumeration.hpp \ + common/clone_ptr-t.hpp common/errors.hpp common/file_data_util.hpp \ + common/fstream.hpp modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/parm_string.hpp common/simple_string.hpp common/char_vector.hpp \ + common/objstack.hpp common/cache.hpp common/convert.hpp \ + common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/cache-t.hpp common/lock.hpp /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h common/getdata.hpp common/file_util.hpp \ + /usr/include/langinfo.h /usr/include/nl_types.h \ + /usr/include/bits/locale.h common/gettext.h /usr/include/libintl.h + +gen/settings.h: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +/usr/include/assert.h: + +common/iostream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/asc_ctype.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +common/generic_copy_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +common/generic_copy_ptr-t.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/errors.hpp: + +common/file_data_util.hpp: + +common/fstream.hpp: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/cache-t.hpp: + +common/lock.hpp: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +common/getdata.hpp: + +common/file_util.hpp: + +/usr/include/langinfo.h: + +/usr/include/nl_types.h: + +/usr/include/bits/locale.h: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/speller/default/.deps/leditdist.Plo b/jni/modules/speller/default/.deps/leditdist.Plo new file mode 100644 index 0000000..04681d2 --- /dev/null +++ b/jni/modules/speller/default/.deps/leditdist.Plo @@ -0,0 +1,8 @@ +modules/speller/default/leditdist.lo: \ + modules/speller/default/leditdist.cpp \ + modules/speller/default/leditdist.hpp \ + modules/speller/default/weights.hpp + +modules/speller/default/leditdist.hpp: + +modules/speller/default/weights.hpp: diff --git a/jni/modules/speller/default/.deps/multi_ws.Plo b/jni/modules/speller/default/.deps/multi_ws.Plo new file mode 100644 index 0000000..dca16cf --- /dev/null +++ b/jni/modules/speller/default/.deps/multi_ws.Plo @@ -0,0 +1,355 @@ +modules/speller/default/multi_ws.lo: modules/speller/default/multi_ws.cpp \ + common/config.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc modules/speller/default/data.hpp \ + common/ndebug.hpp /usr/include/assert.h common/copy_ptr.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/parm_string.hpp \ + common/simple_string.hpp common/char_vector.hpp common/objstack.hpp \ + common/cache.hpp common/convert.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp \ + common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + common/file_util.hpp common/getdata.hpp common/errors.hpp \ + common/vector.hpp common/gettext.h + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +/usr/include/assert.h: + +common/copy_ptr.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +common/file_util.hpp: + +common/getdata.hpp: + +common/errors.hpp: + +common/vector.hpp: + +common/gettext.h: diff --git a/jni/modules/speller/default/.deps/phonet.Plo b/jni/modules/speller/default/.deps/phonet.Plo new file mode 100644 index 0000000..c5e6f11 --- /dev/null +++ b/jni/modules/speller/default/.deps/phonet.Plo @@ -0,0 +1,335 @@ +modules/speller/default/phonet.lo: modules/speller/default/phonet.cpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/assert.h \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/asc_ctype.hpp \ + common/string.hpp /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_algo.h /usr/include/c++/4.5/cstdlib \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp modules/speller/default/phonet.hpp \ + common/posib_err.hpp common/string.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp common/errors.hpp common/fstream.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + common/posib_err.hpp common/getdata.hpp \ + modules/speller/default/language.hpp modules/speller/default/affix.hpp \ + modules/speller/default/wordinfo.hpp common/parm_string.hpp \ + common/simple_string.hpp common/char_vector.hpp common/objstack.hpp \ + common/cache.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + common/convert.hpp common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/vararray.hpp + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/assert.h: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/asc_ctype.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +modules/speller/default/phonet.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/errors.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/getdata.hpp: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +modules/speller/default/wordinfo.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/vararray.hpp: diff --git a/jni/modules/speller/default/.deps/phonetic.Plo b/jni/modules/speller/default/.deps/phonetic.Plo new file mode 100644 index 0000000..b69ef4b --- /dev/null +++ b/jni/modules/speller/default/.deps/phonetic.Plo @@ -0,0 +1,338 @@ +modules/speller/default/phonetic.lo: modules/speller/default/phonetic.cpp \ + modules/speller/default/language.hpp modules/speller/default/affix.hpp \ + common/posib_err.hpp common/string.hpp /usr/include/string.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + modules/speller/default/wordinfo.hpp /usr/include/assert.h \ + common/string.hpp common/fstream.hpp /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/posib_err.hpp common/parm_string.hpp \ + common/simple_string.hpp common/char_vector.hpp common/objstack.hpp \ + common/cache.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/generic_copy_ptr-t.hpp \ + common/generic_copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp \ + modules/speller/default/phonet.hpp common/file_util.hpp \ + common/file_data_util.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +modules/speller/default/wordinfo.hpp: + +/usr/include/assert.h: + +common/string.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +modules/speller/default/phonet.hpp: + +common/file_util.hpp: + +common/file_data_util.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: diff --git a/jni/modules/speller/default/.deps/primes.Plo b/jni/modules/speller/default/.deps/primes.Plo new file mode 100644 index 0000000..f132aee --- /dev/null +++ b/jni/modules/speller/default/.deps/primes.Plo @@ -0,0 +1,136 @@ +modules/speller/default/primes.lo: modules/speller/default/primes.cpp \ + modules/speller/default/primes.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc /usr/include/c++/4.5/cmath \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/c++/4.5/bits/cmath.tcc \ + /usr/include/c++/4.5/cassert /usr/include/assert.h + +modules/speller/default/primes.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +/usr/include/c++/4.5/cmath: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/c++/4.5/bits/cmath.tcc: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: diff --git a/jni/modules/speller/default/.deps/readonly_ws.Plo b/jni/modules/speller/default/.deps/readonly_ws.Plo new file mode 100644 index 0000000..56f06e5 --- /dev/null +++ b/jni/modules/speller/default/.deps/readonly_ws.Plo @@ -0,0 +1,437 @@ +modules/speller/default/readonly_ws.lo: \ + modules/speller/default/readonly_ws.cpp /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/c++/4.5/bits/concept_check.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdio.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h gen/settings.h \ + modules/speller/default/block_vector.hpp common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/error.hpp common/key_info.hpp common/posib_err.hpp \ + common/string.hpp /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/algorithm \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + common/mutable_string.hpp common/ostream.hpp common/istream.hpp \ + common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc modules/speller/default/data.hpp \ + common/ndebug.hpp /usr/include/assert.h common/copy_ptr.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/fstream.hpp common/parm_string.hpp common/simple_string.hpp \ + common/char_vector.hpp common/objstack.hpp common/cache.hpp \ + common/convert.hpp common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + modules/speller/default/data_util.hpp /usr/include/c++/4.5/ctime \ + /usr/include/sys/stat.h /usr/include/bits/stat.h common/errors.hpp \ + common/file_util.hpp common/vector.hpp \ + modules/speller/default/vector_hash-t.hpp /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + modules/speller/default/vector_hash.hpp \ + modules/speller/default/primes.hpp \ + modules/speller/default/check_list.hpp common/speller.hpp \ + common/lsort.hpp common/gettext.h /usr/include/libintl.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/bits/uio.h \ + /usr/include/bits/fcntl2.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + /usr/include/bits/unistd.h /usr/include/sys/mman.h \ + /usr/include/bits/mman.h + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdio.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +gen/settings.h: + +modules/speller/default/block_vector.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +/usr/include/assert.h: + +common/copy_ptr.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/fstream.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +modules/speller/default/data_util.hpp: + +/usr/include/c++/4.5/ctime: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +common/errors.hpp: + +common/file_util.hpp: + +common/vector.hpp: + +modules/speller/default/vector_hash-t.hpp: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +modules/speller/default/vector_hash.hpp: + +modules/speller/default/primes.hpp: + +modules/speller/default/check_list.hpp: + +common/speller.hpp: + +common/lsort.hpp: + +common/gettext.h: + +/usr/include/libintl.h: + +/usr/include/fcntl.h: + +/usr/include/bits/fcntl.h: + +/usr/include/bits/uio.h: + +/usr/include/bits/fcntl2.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/sys/mman.h: + +/usr/include/bits/mman.h: diff --git a/jni/modules/speller/default/.deps/speller_impl.Plo b/jni/modules/speller/default/.deps/speller_impl.Plo new file mode 100644 index 0000000..da08300 --- /dev/null +++ b/jni/modules/speller/default/.deps/speller_impl.Plo @@ -0,0 +1,388 @@ +modules/speller/default/speller_impl.lo: \ + modules/speller/default/speller_impl.cpp /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/typeinfo /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + common/clone_ptr-t.hpp common/clone_ptr.hpp common/generic_copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp common/error.hpp \ + common/key_info.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/string.h /usr/include/bits/string3.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/errors.hpp common/ndebug.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc modules/speller/default/data.hpp \ + common/ndebug.hpp /usr/include/assert.h common/copy_ptr.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp \ + modules/speller/default/language.hpp modules/speller/default/affix.hpp \ + common/posib_err.hpp modules/speller/default/wordinfo.hpp \ + common/string.hpp common/fstream.hpp /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/parm_string.hpp \ + common/simple_string.hpp common/char_vector.hpp common/objstack.hpp \ + common/cache.hpp common/convert.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp \ + common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + modules/speller/default/data_id.hpp gen/settings.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h common/errors.hpp \ + modules/speller/default/speller_impl.hpp common/clone_ptr.hpp \ + common/speller.hpp modules/speller/default/check_list.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + modules/speller/default/suggest.hpp common/tokenizer.hpp \ + common/gettext.h /usr/include/libintl.h + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/typeinfo: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +common/generic_copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/error.hpp: + +common/key_info.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +/usr/include/assert.h: + +common/copy_ptr.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +modules/speller/default/data_id.hpp: + +gen/settings.h: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +common/errors.hpp: + +modules/speller/default/speller_impl.hpp: + +common/clone_ptr.hpp: + +common/speller.hpp: + +modules/speller/default/check_list.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +modules/speller/default/suggest.hpp: + +common/tokenizer.hpp: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/speller/default/.deps/suggest.Plo b/jni/modules/speller/default/.deps/suggest.Plo new file mode 100644 index 0000000..588766c --- /dev/null +++ b/jni/modules/speller/default/.deps/suggest.Plo @@ -0,0 +1,433 @@ +modules/speller/default/suggest.lo: modules/speller/default/suggest.cpp \ + common/getdata.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/string.hpp /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp common/mutable_string.hpp common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/fstream.hpp /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/posib_err.hpp common/error.hpp \ + common/errors.hpp common/ndebug.hpp \ + modules/speller/default/speller_impl.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/clone_ptr.hpp \ + common/generic_copy_ptr.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp modules/speller/default/data.hpp \ + common/ndebug.hpp /usr/include/assert.h common/enumeration.hpp \ + common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/parm_string.hpp common/simple_string.hpp common/char_vector.hpp \ + common/objstack.hpp common/cache.hpp common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp common/key_info.hpp \ + common/vector.hpp common/convert.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp \ + common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + common/speller.hpp modules/speller/default/check_list.hpp \ + modules/speller/default/asuggest.hpp modules/speller/default/suggest.hpp \ + modules/speller/default/editdist.hpp modules/speller/default/weights.hpp \ + modules/speller/default/typo_editdist.hpp \ + modules/speller/default/matrix.hpp common/basic_list.hpp \ + /usr/include/c++/4.5/list /usr/include/c++/4.5/bits/stl_list.h \ + /usr/include/c++/4.5/bits/list.tcc common/clone_ptr-t.hpp \ + modules/speller/default/editdist2.hpp \ + modules/speller/default/leditdist.hpp /usr/include/c++/4.5/cassert \ + common/errors.hpp common/file_data_util.hpp common/hash-t.hpp \ + common/hash.hpp /usr/include/c++/4.5/functional \ + /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/block_slist.hpp common/block_slist-t.hpp common/vararray.hpp \ + common/string_list.hpp common/string_enumeration.hpp \ + common/mutable_container.hpp /usr/include/c++/4.5/cstdio \ + common/gettext.h /usr/include/libintl.h + +common/getdata.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +modules/speller/default/speller_impl.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/clone_ptr.hpp: + +common/generic_copy_ptr.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +/usr/include/assert.h: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +common/speller.hpp: + +modules/speller/default/check_list.hpp: + +modules/speller/default/asuggest.hpp: + +modules/speller/default/suggest.hpp: + +modules/speller/default/editdist.hpp: + +modules/speller/default/weights.hpp: + +modules/speller/default/typo_editdist.hpp: + +modules/speller/default/matrix.hpp: + +common/basic_list.hpp: + +/usr/include/c++/4.5/list: + +/usr/include/c++/4.5/bits/stl_list.h: + +/usr/include/c++/4.5/bits/list.tcc: + +common/clone_ptr-t.hpp: + +modules/speller/default/editdist2.hpp: + +modules/speller/default/leditdist.hpp: + +/usr/include/c++/4.5/cassert: + +common/errors.hpp: + +common/file_data_util.hpp: + +common/hash-t.hpp: + +common/hash.hpp: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/block_slist.hpp: + +common/block_slist-t.hpp: + +common/vararray.hpp: + +common/string_list.hpp: + +common/string_enumeration.hpp: + +common/mutable_container.hpp: + +/usr/include/c++/4.5/cstdio: + +common/gettext.h: + +/usr/include/libintl.h: diff --git a/jni/modules/speller/default/.deps/typo_editdist.Plo b/jni/modules/speller/default/.deps/typo_editdist.Plo new file mode 100644 index 0000000..fae20b9 --- /dev/null +++ b/jni/modules/speller/default/.deps/typo_editdist.Plo @@ -0,0 +1,360 @@ +modules/speller/default/typo_editdist.lo: \ + modules/speller/default/typo_editdist.cpp /usr/include/c++/4.5/cstring \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string3.h \ + common/vararray.hpp modules/speller/default/typo_editdist.hpp \ + common/cache.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + modules/speller/default/matrix.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/config.hpp \ + common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/key_info.hpp common/vector.hpp \ + modules/speller/default/language.hpp modules/speller/default/affix.hpp \ + common/posib_err.hpp modules/speller/default/wordinfo.hpp \ + /usr/include/assert.h common/string.hpp common/fstream.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + common/parm_string.hpp common/simple_string.hpp common/char_vector.hpp \ + common/objstack.hpp common/convert.hpp common/char_vector.hpp \ + common/filter_char.hpp common/filter_char_vector.hpp \ + common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/file_data_util.hpp \ + common/getdata.hpp common/cache-t.hpp common/lock.hpp gen/settings.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h common/asc_ctype.hpp + +/usr/include/c++/4.5/cstring: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +common/vararray.hpp: + +modules/speller/default/typo_editdist.hpp: + +common/cache.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +modules/speller/default/matrix.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +modules/speller/default/wordinfo.hpp: + +/usr/include/assert.h: + +common/string.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/file_data_util.hpp: + +common/getdata.hpp: + +common/cache-t.hpp: + +common/lock.hpp: + +gen/settings.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +common/asc_ctype.hpp: diff --git a/jni/modules/speller/default/.deps/writable.Plo b/jni/modules/speller/default/.deps/writable.Plo new file mode 100644 index 0000000..bebc4d0 --- /dev/null +++ b/jni/modules/speller/default/.deps/writable.Plo @@ -0,0 +1,381 @@ +modules/speller/default/writable.lo: modules/speller/default/writable.cpp \ + /usr/include/time.h /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/xlocale.h common/hash-t.hpp \ + /usr/include/c++/4.5/cstdlib \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/cstddef /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception common/hash.hpp \ + /usr/include/c++/4.5/utility /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/functional /usr/include/c++/4.5/bits/stl_function.h \ + /usr/include/c++/4.5/backward/binders.h gen/settings.h \ + common/hash_fun.hpp common/block_slist.hpp common/block_slist-t.hpp \ + /usr/include/c++/4.5/cassert /usr/include/assert.h \ + modules/speller/default/data.hpp common/ndebug.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/enumeration.hpp common/clone_ptr-t.hpp common/clone_ptr.hpp \ + /usr/include/c++/4.5/typeinfo modules/speller/default/language.hpp \ + modules/speller/default/affix.hpp common/posib_err.hpp common/string.hpp \ + /usr/include/string.h /usr/include/bits/string3.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/error.hpp common/errors.hpp common/ndebug.hpp \ + modules/speller/default/wordinfo.hpp common/string.hpp \ + common/fstream.hpp /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/bits/stdio2.h common/posib_err.hpp common/parm_string.hpp \ + common/simple_string.hpp common/char_vector.hpp common/objstack.hpp \ + common/cache.hpp common/config.hpp common/can_have_error.hpp \ + common/copy_ptr.hpp common/key_info.hpp common/vector.hpp \ + /usr/include/c++/4.5/vector /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/char_vector.hpp common/filter_char.hpp \ + common/filter_char_vector.hpp common/stack_ptr.hpp common/filter.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + common/cache.hpp modules/speller/default/phonetic.hpp \ + common/stack_ptr.hpp common/string_enumeration.hpp common/type_id.hpp \ + common/iostream.hpp common/fstream.hpp common/word_list.hpp \ + modules/speller/default/data_util.hpp /usr/include/c++/4.5/ctime \ + /usr/include/sys/stat.h /usr/include/bits/stat.h common/errors.hpp \ + common/file_util.hpp common/getdata.hpp + +/usr/include/time.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/bits/time.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/xlocale.h: + +common/hash-t.hpp: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +common/hash.hpp: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/functional: + +/usr/include/c++/4.5/bits/stl_function.h: + +/usr/include/c++/4.5/backward/binders.h: + +gen/settings.h: + +common/hash_fun.hpp: + +common/block_slist.hpp: + +common/block_slist-t.hpp: + +/usr/include/c++/4.5/cassert: + +/usr/include/assert.h: + +modules/speller/default/data.hpp: + +common/ndebug.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/enumeration.hpp: + +common/clone_ptr-t.hpp: + +common/clone_ptr.hpp: + +/usr/include/c++/4.5/typeinfo: + +modules/speller/default/language.hpp: + +modules/speller/default/affix.hpp: + +common/posib_err.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/bits/string3.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +modules/speller/default/wordinfo.hpp: + +common/string.hpp: + +common/fstream.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/posib_err.hpp: + +common/parm_string.hpp: + +common/simple_string.hpp: + +common/char_vector.hpp: + +common/objstack.hpp: + +common/cache.hpp: + +common/config.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/key_info.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/char_vector.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/stack_ptr.hpp: + +common/filter.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +common/cache.hpp: + +modules/speller/default/phonetic.hpp: + +common/stack_ptr.hpp: + +common/string_enumeration.hpp: + +common/type_id.hpp: + +common/iostream.hpp: + +common/fstream.hpp: + +common/word_list.hpp: + +modules/speller/default/data_util.hpp: + +/usr/include/c++/4.5/ctime: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +common/errors.hpp: + +common/file_util.hpp: + +common/getdata.hpp: diff --git a/jni/modules/speller/default/.dirstamp b/jni/modules/speller/default/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/speller/default/Makefile b/jni/modules/speller/default/Makefile new file mode 100644 index 0000000..906db8c --- /dev/null +++ b/jni/modules/speller/default/Makefile @@ -0,0 +1,4 @@ +top_srcdir = ../../.. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/speller/default/Makefile.in b/jni/modules/speller/default/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/modules/speller/default/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/speller/default/affix.cpp b/jni/modules/speller/default/affix.cpp new file mode 100644 index 0000000..2562c24 --- /dev/null +++ b/jni/modules/speller/default/affix.cpp @@ -0,0 +1,1439 @@ +// This file is part of The New Aspell +// Copyright (C) 2004 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. +// +// This code is based on the the MySpell affix code: +// +/* + * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada And + * Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. All modifications to the source code must be clearly marked as + * such. Binary redistributions based on modified source code + * must be clearly marked as modified versions in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include <cstdlib> +#include <cstring> +#include <cstdio> + +//#include "iostream.hpp" + +#include "affix.hpp" +#include "errors.hpp" +#include "getdata.hpp" +#include "parm_string.hpp" +#include "check_list.hpp" +#include "speller_impl.hpp" +#include "vararray.hpp" +#include "lsort.hpp" +#include "hash-t.hpp" + +#include "gettext.h" + +using namespace std; + +namespace aspeller { + +typedef unsigned char byte; +static char EMPTY[1] = {0}; + +////////////////////////////////////////////////////////////////////// +// +// Entry struct definations +// + +struct Conds +{ + char * str; + unsigned num; + char conds[SETSIZE]; + char get(byte i) const {return conds[i];} +}; + +struct AffEntry +{ + const char * appnd; + const char * strip; + byte appndl; + byte stripl; + byte xpflg; + char achar; + const Conds * conds; + //unsigned int numconds; + //char conds[SETSIZE]; +}; + +// A Prefix Entry + +struct PfxEntry : public AffEntry +{ + PfxEntry * next; + PfxEntry * next_eq; + PfxEntry * next_ne; + PfxEntry * flag_next; + PfxEntry() {} + + bool check(const LookupInfo &, const AffixMgr * pmyMgr, + ParmString, CheckInfo &, GuessInfo *, bool cross = true) const; + + inline bool allow_cross() const { return ((xpflg & XPRODUCT) != 0); } + inline byte flag() const { return achar; } + inline const char * key() const { return appnd; } + bool applicable(SimpleString) const; + SimpleString add(SimpleString, ObjStack & buf) const; +}; + +// A Suffix Entry + +struct SfxEntry : public AffEntry +{ + const char * rappnd; // this is set in AffixMgr::build_sfxlist + + SfxEntry * next; + SfxEntry * next_eq; + SfxEntry * next_ne; + SfxEntry * flag_next; + + SfxEntry() {} + + bool check(const LookupInfo &, ParmString, CheckInfo &, GuessInfo *, + int optflags, AffEntry * ppfx); + + inline bool allow_cross() const { return ((xpflg & XPRODUCT) != 0); } + inline byte flag() const { return achar; } + inline const char * key() const { return rappnd; } + bool applicable(SimpleString) const; + SimpleString add(SimpleString, ObjStack & buf, int limit, SimpleString) const; +}; + +////////////////////////////////////////////////////////////////////// +// +// Utility functions declarations +// + +/* return 1 if s1 is subset of s2 */ +static bool isSubset(const char * s1, const char * s2) +{ + while( *s1 && (*s1 == *s2) ) { + s1++; + s2++; + } + return (*s1 == '\0'); +} + +// return 1 if s1 (reversed) is a leading subset of end of s2 +static bool isRevSubset(const char * s1, const char * end_of_s2, int len) +{ + while( (len > 0) && *s1 && (*s1 == *end_of_s2) ) { + s1++; + end_of_s2--; + len --; + } + return (*s1 == '\0'); +} + +template <class T> +struct AffixLess +{ + bool operator() (T * x, T * y) const {return strcmp(x->key(),y->key()) < 0;} +}; + +// struct StringLookup { +// struct Parms { +// typedef const char * Value; +// typedef const char * Key; +// static const bool is_multi = false; +// hash<const char *> hfun; +// size_t hash(const char * s) {return hfun(s);} +// bool equal(const char * x, const char * y) {return strcmp(x,y) == 0;} +// const char * key(const char * c) {return c;} +// }; +// typedef HashTable<Parms> Lookup; +// Lookup lookup; +// ObjStack * data_buf; +// StringLookup(ObjStack * b) : data_buf(b) {} +// const char * dup(const char * orig) { +// pair<Lookup::iterator, bool> res = lookup.insert(orig); +// if (res.second) *res.first = data_buf->dup(orig); +// return *res.first; +// //return data_buf->dup(orig); +// } +// }; + +struct CondsLookupParms { + typedef const Conds * Value; + typedef const char * Key; + static const bool is_multi = false; + acommon::hash<const char *> hfun; + size_t hash(const char * s) {return hfun(s);} + bool equal(const char * x, const char * y) {return strcmp(x,y) == 0;} + const char * key(const Conds * c) {return c->str;} +}; + +typedef HashTable<CondsLookupParms> CondsLookup; + +// normalizes and checks the cond_str +// returns the lenth of the new string or -1 if invalid +static int normalize_cond_str(char * str) +{ + char * s = str; + char * d = str; + while (*s) { + if (*s != '[') { + *d++ = *s++; + } else if (s[1] == '\0' || s[1] == ']') { + return -1; + } else if (s[2] == ']') { + *d++ = s[1]; + s += 3; + } else { + *d++ = *s++; + if (*s == '^') *d++ = *s++; + while (*s != ']') { + if (*s == '\0' || *s == '[') return -1; + char * min = s; + for (char * i = s + 1; *i != ']'; ++i) { + if ((byte)*i < (byte)*min) min = i;} + char c = *s; + *d++ = *min; + *min = c; + ++s; + } + *d++ = *s++; + } + } + *d = '\0'; + return d - str; +} + +static void encodeit(CondsLookup &, ObjStack &, + AffEntry * ptr, char * cs); + +////////////////////////////////////////////////////////////////////// +// +// Affix Manager +// + +PosibErr<void> AffixMgr::setup(ParmString affpath, Conv & iconv) +{ + // register hash manager and load affix data from aff file + //cpdmin = 3; // default value + max_strip_ = 0; + for (int i=0; i < SETSIZE; i++) { + pStart[i] = NULL; + sStart[i] = NULL; + pFlag[i] = NULL; + sFlag[i] = NULL; + max_strip_f[i] = 0; + } + return parse_file(affpath, iconv); +} + +AffixMgr::AffixMgr(const Language * l) + : lang(l), data_buf(1024*16) {} + +AffixMgr::~AffixMgr() {} + +static inline void max_(int & lhs, int rhs) +{ + if (lhs < rhs) lhs = rhs; +} + +// read in aff file and build up prefix and suffix entry objects +PosibErr<void> AffixMgr::parse_file(const char * affpath, Conv & iconv) +{ + // io buffers + String buf; DataPair dp; + + CondsLookup conds_lookup; + + // open the affix file + affix_file = data_buf.dup(affpath); + FStream afflst; + RET_ON_ERR(afflst.open(affpath,"r")); + + // step one is to parse the affix file building up the internal + // affix data structures + + // read in each line ignoring any that do not + // start with a known line type indicator + + char prev_aff = '\0'; + + while (getdata_pair(afflst,dp,buf)) { + char affix_type = ' '; + + /* parse in the name of the character set used by the .dict and .aff */ + + if (dp.key == "SET") { + String buf; + encoding = data_buf.dup(fix_encoding_str(dp.value, buf)); + if (strcmp(encoding, lang->data_encoding()) != 0) + return make_err(incorrect_encoding, affix_file, lang->data_encoding(), encoding); + } + + /* parse in the flag used by the controlled compound words */ + //else if (d.key == "COMPOUNDFLAG") + // compound = data_buf.dup(d.value); + + /* parse in the flag used by the controlled compound words */ + //else if (d.key == "COMPOUNDMIN") + // cpdmin = atoi(d.value); // FiXME + + //else if (dp.key == "TRY" || dp.key == "REP"); + + else if (dp.key == "PFX" || dp.key == "SFX") + affix_type = dp.key[0]; + + if (affix_type == ' ') continue; + + // + // parse this affix: P - prefix, S - suffix + // + + int numents = 0; // number of affentry structures to parse + char achar='\0'; // affix char identifier + short xpflg=0; + AffEntry * nptr; + { + // split affix header line into pieces + split(dp); + if (dp.key.empty()) goto error; + // key is affix char + const char * astr = iconv(dp.key); + if (astr[0] == '\0' || astr[1] != '\0') goto error; + achar = astr[0]; + if (achar == prev_aff) goto error_count; + prev_aff = achar; + + split(dp); + if (dp.key.size != 1 || + !(dp.key[0] == 'Y' || dp.key[0] == 'N')) goto error; + // key is cross product indicator + if (dp.key[0] == 'Y') xpflg = XPRODUCT; + + split(dp); + if (dp.key.empty()) goto error; + // key is number of affentries + + numents = atoi(dp.key); + + for (int j = 0; j < numents; j++) { + getdata_pair(afflst, dp, buf); + + if (affix_type == 'P') { + nptr = (AffEntry *) data_buf.alloc_bottom(sizeof(PfxEntry)); + new (nptr) PfxEntry; + } else { + nptr = (AffEntry *) data_buf.alloc_bottom(sizeof(SfxEntry)); + new (nptr) SfxEntry; + } + + nptr->xpflg = xpflg; + + split(dp); + if (dp.key.empty()) goto error; + // key is affix charter + if (iconv(dp.key)[0] != achar) goto error_count; + nptr->achar = achar; + + split(dp); + if (dp.key.empty()) goto error; + // key is strip + if (dp.key != "0") { + ParmString s0(iconv(dp.key)); + max_(max_strip_, s0.size()); + max_(max_strip_f[(byte)achar], s0.size()); + nptr->strip = data_buf.dup(s0); + nptr->stripl = s0.size(); + } else { + nptr->strip = ""; + nptr->stripl = 0; + } + + split(dp); + if (dp.key.empty()) goto error; + // key is affix string or 0 for null + if (dp.key != "0") { + nptr->appnd = data_buf.dup(iconv(dp.key)); + nptr->appndl = strlen(nptr->appnd); + } else { + nptr->appnd = ""; + nptr->appndl = 0; + } + + split(dp); + if (dp.key.empty()) goto error; + // key is the conditions descriptions + char * cond = iconv(dp.key); + int cond_len = normalize_cond_str(cond); + if (cond_len < 0) + return (make_err(invalid_cond, MsgConv(lang)(cond)) + .with_file(affix_file, dp.line_num)); + if (nptr->stripl != 0) { + char * cc = cond; + if (affix_type == 'S') cc += cond_len - nptr->stripl; + if (cond_len < nptr->stripl || + memcmp(cc, nptr->strip, nptr->stripl) != 0) + return (make_err(invalid_cond_strip, + MsgConv(lang)(cond), MsgConv(lang)(nptr->strip)) + .with_file(affix_file, dp.line_num)); + } + encodeit(conds_lookup, data_buf, nptr, cond); + + // now create SfxEntry or PfxEntry objects and use links to + // build an ordered (sorted by affix string) list + if (affix_type == 'P') + build_pfxlist(static_cast<PfxEntry *>(nptr)); + else + build_sfxlist(static_cast<SfxEntry *>(nptr)); + } + } + continue; + error: + return make_err(corrupt_affix, MsgConv(lang)(achar)).with_file(affix_file, dp.line_num); + error_count: + return make_err(corrupt_affix, MsgConv(lang)(achar), + _("Possibly incorrect count.")).with_file(affix_file, dp.line_num); + } + afflst.close(); + + // now we can speed up performance greatly taking advantage of the + // relationship between the affixes and the idea of "subsets". + + // View each prefix as a potential leading subset of another and view + // each suffix (reversed) as a potential trailing subset of another. + + // To illustrate this relationship if we know the prefix "ab" is + // found in the word to examine, only prefixes that "ab" is a + // leading subset of need be examined. Furthermore is "ab" is not + // present then none of the prefixes that "ab" is is a subset need + // be examined. + + // The same argument goes for suffix string that are reversed. + + // Then to top this off why not examine the first char of the word + // to quickly limit the set of prefixes to examine (i.e. the + // prefixes to examine must be leading supersets of the first + // character of the word (if they exist) + + // To take advantage of this "subset" relationship, we need to add + // two links from entry. One to take next if the current prefix + // is found (call it nexteq) and one to take next if the current + // prefix is not found (call it nextne). + + // Since we have built ordered lists, all that remains is to + // properly intialize the nextne and nexteq pointers that relate + // them + + process_pfx_order(); + process_sfx_order(); + + //CERR.printf("%u\n", data_buf.calc_size()/1024); + + return no_err; + +} + + +// we want to be able to quickly access prefix information +// both by prefix flag, and sorted by prefix string itself +// so we need to set up two indexes + +PosibErr<void> AffixMgr::build_pfxlist(PfxEntry* pfxptr) +{ + PfxEntry * ptr; + PfxEntry * ep = pfxptr; + + // get the right starting point + const char * key = ep->key(); + const byte flg = ep->flag(); + + // first index by flag which must exist + ptr = pFlag[flg]; + ep->flag_next = ptr; + pFlag[flg] = ep; + + // next insert the affix string, it will be sorted latter + + byte sp = *((const byte *)key); + ptr = pStart[sp]; + ep->next = ptr; + pStart[sp] = ep; + return no_err; +} + +// we want to be able to quickly access suffix information +// both by suffix flag, and sorted by the reverse of the +// suffix string itself; so we need to set up two indexes + +PosibErr<void> AffixMgr::build_sfxlist(SfxEntry* sfxptr) +{ + SfxEntry * ptr; + SfxEntry * ep = sfxptr; + char * tmp = (char *)data_buf.alloc(sfxptr->appndl + 1); + sfxptr->rappnd = tmp; + + // reverse the string + char * dest = tmp + sfxptr->appndl; + *dest-- = 0; + const char * src = sfxptr->appnd; + for (; dest >= tmp; --dest, ++src) + *dest = *src; + + /* get the right starting point */ + const char * key = ep->key(); + const byte flg = ep->flag(); + + // first index by flag which must exist + ptr = sFlag[flg]; + ep->flag_next = ptr; + sFlag[flg] = ep; + + // next insert the affix string, it will be sorted latter + + byte sp = *((const byte *)key); + ptr = sStart[sp]; + ep->next = ptr; + sStart[sp] = ep; + return no_err; +} + + + +// initialize the PfxEntry links NextEQ and NextNE to speed searching +PosibErr<void> AffixMgr::process_pfx_order() +{ + PfxEntry* ptr; + + // loop through each prefix list starting point + for (int i=1; i < SETSIZE; i++) { + + ptr = pStart[i]; + + if (ptr && ptr->next) + ptr = pStart[i] = sort(ptr, AffixLess<PfxEntry>()); + + // look through the remainder of the list + // and find next entry with affix that + // the current one is not a subset of + // mark that as destination for NextNE + // use next in list that you are a subset + // of as NextEQ + + for (; ptr != NULL; ptr = ptr->next) { + + PfxEntry * nptr = ptr->next; + for (; nptr != NULL; nptr = nptr->next) { + if (! isSubset( ptr->key() , nptr->key() )) break; + } + ptr->next_ne = nptr; + ptr->next_eq = NULL; + if ((ptr->next) && isSubset(ptr->key() , + (ptr->next)->key())) + ptr->next_eq = ptr->next; + } + + // now clean up by adding smart search termination strings + // if you are already a superset of the previous prefix + // but not a subset of the next, search can end here + // so set NextNE properly + + ptr = pStart[i]; + for (; ptr != NULL; ptr = ptr->next) { + PfxEntry * nptr = ptr->next; + PfxEntry * mptr = NULL; + for (; nptr != NULL; nptr = nptr->next) { + if (! isSubset(ptr->key(),nptr->key())) break; + mptr = nptr; + } + if (mptr) mptr->next_ne = NULL; + } + } + return no_err; +} + + + +// initialize the SfxEntry links NextEQ and NextNE to speed searching +PosibErr<void> AffixMgr::process_sfx_order() +{ + SfxEntry* ptr; + + // loop through each prefix list starting point + for (int i=1; i < SETSIZE; i++) { + + ptr = sStart[i]; + + if (ptr && ptr->next) + ptr = sStart[i] = sort(ptr, AffixLess<SfxEntry>()); + + // look through the remainder of the list + // and find next entry with affix that + // the current one is not a subset of + // mark that as destination for NextNE + // use next in list that you are a subset + // of as NextEQ + + for (; ptr != NULL; ptr = ptr->next) { + SfxEntry * nptr = ptr->next; + for (; nptr != NULL; nptr = nptr->next) { + if (! isSubset(ptr->key(),nptr->key())) break; + } + ptr->next_ne = nptr; + ptr->next_eq = NULL; + if ((ptr->next) && isSubset(ptr->key(),(ptr->next)->key())) + ptr->next_eq = ptr->next; + } + + + // now clean up by adding smart search termination strings: + // if you are already a superset of the previous suffix + // but not a subset of the next, search can end here + // so set NextNE properly + + ptr = sStart[i]; + for (; ptr != NULL; ptr = ptr->next) { + SfxEntry * nptr = ptr->next; + SfxEntry * mptr = NULL; + for (; nptr != NULL; nptr = nptr->next) { + if (! isSubset(ptr->key(),nptr->key())) break; + mptr = nptr; + } + if (mptr) mptr->next_ne = NULL; + } + } + return no_err; +} + +// takes aff file condition string and creates the +// conds array - please see the appendix at the end of the +// file affentry.cxx which describes what is going on here +// in much more detail + +static void encodeit(CondsLookup & l, ObjStack & buf, + AffEntry * ptr, char * cs) +{ + byte c; + int i, j, k; + + // see if we already have this conds matrix + + CondsLookup::iterator itr = l.find(cs); + if (!(itr == l.end())) { + ptr->conds = *itr; + return; + } + + Conds * cds = (Conds *)buf.alloc_bottom(sizeof(Conds)); + cds->str = buf.dup(cs); + l.insert(cds); + ptr->conds = cds; + + int nc = strlen(cs); + VARARRAYM(byte, mbr, nc + 1, MAXLNLEN); + + // now clear the conditions array + memset(cds->conds, 0, sizeof(cds->conds)); + + // now parse the string to create the conds array + + int neg = 0; // complement indicator + int grp = 0; // group indicator + int n = 0; // number of conditions + int ec = 0; // end condition indicator + int nm = 0; // number of member in group + + // if no condition just return + if (strcmp(cs,".")==0) { + cds->num = 0; + return; + } + + i = 0; + while (i < nc) { + c = *((byte *)(cs + i)); + + // start group indicator + if (c == '[') { + grp = 1; + c = 0; + } + + // complement flag + if ((grp == 1) && (c == '^')) { + neg = 1; + c = 0; + } + + // end goup indicator + if (c == ']') { + ec = 1; + c = 0; + } + + // add character of group to list + if ((grp == 1) && (c != 0)) { + *(mbr + nm) = c; + nm++; + c = 0; + } + + // end of condition + if (c != 0) { + ec = 1; + } + + + if (ec) { + if (grp == 1) { + if (neg == 0) { + // set the proper bits in the condition array vals for those chars + for (j=0;j<nm;j++) { + k = (unsigned int) mbr[j]; + cds->conds[k] = cds->conds[k] | (1 << n); + } + } else { + // complement so set all of them and then unset indicated ones + for (j=0;j<SETSIZE;j++) cds->conds[j] = cds->conds[j] | (1 << n); + for (j=0;j<nm;j++) { + k = (unsigned int) mbr[j]; + cds->conds[k] = cds->conds[k] & ~(1 << n); + } + } + neg = 0; + grp = 0; + nm = 0; + } else { + // not a group so just set the proper bit for this char + // but first handle special case of . inside condition + if (c == '.') { + // wild card character so set them all + for (j=0;j<SETSIZE;j++) cds->conds[j] = cds->conds[j] | (1 << n); + } else { + cds->conds[(unsigned int)c] = cds->conds[(unsigned int)c] | (1 << n); + } + } + n++; + ec = 0; + } + + + i++; + } + cds->num = n; + return; +} + + +// check word for prefixes +bool AffixMgr::prefix_check (const LookupInfo & linf, ParmString word, + CheckInfo & ci, GuessInfo * gi, bool cross) const +{ + + // first handle the special case of 0 length prefixes + PfxEntry * pe = pStart[0]; + while (pe) { + if (pe->check(linf,this,word,ci,gi)) return true; + pe = pe->next; + } + + // now handle the general case + byte sp = *reinterpret_cast<const byte *>(word.str()); + PfxEntry * pptr = pStart[sp]; + + while (pptr) { + if (isSubset(pptr->key(),word)) { + if (pptr->check(linf,this,word,ci,gi,cross)) return true; + pptr = pptr->next_eq; + } else { + pptr = pptr->next_ne; + } + } + + return false; +} + + +// check word for suffixes +bool AffixMgr::suffix_check (const LookupInfo & linf, ParmString word, + CheckInfo & ci, GuessInfo * gi, + int sfxopts, AffEntry * ppfx) const +{ + + // first handle the special case of 0 length suffixes + SfxEntry * se = sStart[0]; + while (se) { + if (se->check(linf, word, ci, gi, sfxopts, ppfx)) return true; + se = se->next; + } + + // now handle the general case + byte sp = *((const byte *)(word + word.size() - 1)); + SfxEntry * sptr = sStart[sp]; + + while (sptr) { + if (isRevSubset(sptr->key(), word + word.size() - 1, word.size())) { + if (sptr->check(linf, word, ci, gi, sfxopts, ppfx)) return true; + sptr = sptr->next_eq; + } else { + sptr = sptr->next_ne; + } + } + + return false; +} + +// check if word with affixes is correctly spelled +bool AffixMgr::affix_check(const LookupInfo & linf, ParmString word, + CheckInfo & ci, GuessInfo * gi) const +{ + // Deal With Case in a semi-intelligent manner + CasePattern cp = lang->LangImpl::case_pattern(word); + ParmString pword = word; + ParmString sword = word; + CharVector lower; + if (cp == FirstUpper) { + lower.append(word, word.size() + 1); + lower[0] = lang->to_lower(word[0]); + pword = ParmString(lower.data(), lower.size() - 1); + } else if (cp == AllUpper) { + lower.resize(word.size() + 1); + unsigned int i = 0; + for (; i != word.size(); ++i) + lower[i] = lang->to_lower(word[i]); + lower[i] = '\0'; + pword = ParmString(lower.data(), lower.size() - 1); + sword = pword; + } + + // check all prefixes (also crossed with suffixes if allowed) + if (prefix_check(linf, pword, ci, gi)) return true; + + // if still not found check all suffixes + if (suffix_check(linf, sword, ci, gi, 0, NULL)) return true; + + // if still not found check again but with the lower case version + // which can make a difference if the entire word matches the cond + // string + if (cp == FirstUpper) { + return suffix_check(linf, pword, ci, gi, 0, NULL); + } else { + return false; + } +} + +void AffixMgr::munch(ParmString word, GuessInfo * gi, bool cross) const +{ + LookupInfo li(0, LookupInfo::AlwaysTrue); + CheckInfo ci; + gi->reset(); + CasePattern cp = lang->LangImpl::case_pattern(word); + if (cp == AllUpper) return; + if (cp != FirstUpper) + prefix_check(li, word, ci, gi, cross); + suffix_check(li, word, ci, gi, 0, NULL); +} + +WordAff * AffixMgr::expand(ParmString word, ParmString aff, + ObjStack & buf, int limit) const +{ + byte * empty = (byte *)buf.alloc(1); + *empty = 0; + + byte * suf = (byte *)buf.alloc(aff.size() + 1); + byte * suf_e = suf; + byte * csuf = (byte *)buf.alloc(aff.size() + 1); + byte * csuf_e = csuf; + + WordAff * head = (WordAff *)buf.alloc_bottom(sizeof(WordAff)); + WordAff * cur = head; + cur->word = buf.dup(word); + cur->aff = suf; + + for (const byte * c = (const byte *)aff.str(), * end = c + aff.size(); + c != end; + ++c) + { + if (sFlag[*c]) *suf_e++ = *c; + if (sFlag[*c] && sFlag[*c]->allow_cross()) *csuf_e++ = *c; + + for (PfxEntry * p = pFlag[*c]; p; p = p->flag_next) { + SimpleString newword = p->add(word, buf); + if (!newword) continue; + cur->next = (WordAff *)buf.alloc_bottom(sizeof(WordAff)); + cur = cur->next; + cur->word = newword; + cur->aff = p->allow_cross() ? csuf : empty; + } + } + + *suf_e = 0; + *csuf_e = 0; + cur->next = 0; + + if (limit == 0) return head; + + WordAff * * end = &cur->next; + WordAff * * very_end = end; + size_t nsuf_s = suf_e - suf + 1; + + for (WordAff * * cur = &head; cur != end; cur = &(*cur)->next) { + if ((int)(*cur)->word.size - max_strip_ >= limit) continue; + byte * nsuf = (byte *)buf.alloc(nsuf_s); + expand_suffix((*cur)->word, (*cur)->aff, buf, limit, nsuf, &very_end, word); + (*cur)->aff = nsuf; + } + + return head; +} + +WordAff * AffixMgr::expand_suffix(ParmString word, const byte * aff, + ObjStack & buf, int limit, + byte * new_aff, WordAff * * * l, + ParmString orig_word) const +{ + WordAff * head = 0; + if (l) head = **l; + WordAff * * cur = l ? *l : &head; + bool expanded = false; + bool not_expanded = false; + if (!orig_word) orig_word = word; + + while (*aff) { + if ((int)word.size() - max_strip_f[*aff] < limit) { + for (SfxEntry * p = sFlag[*aff]; p; p = p->flag_next) { + SimpleString newword = p->add(word, buf, limit, orig_word); + if (!newword) continue; + if (newword == EMPTY) {not_expanded = true; continue;} + *cur = (WordAff *)buf.alloc_bottom(sizeof(WordAff)); + (*cur)->word = newword; + (*cur)->aff = (const byte *)EMPTY; + cur = &(*cur)->next; + expanded = true; + } + } + if (new_aff && (!expanded || not_expanded)) *new_aff++ = *aff; + ++aff; + } + *cur = 0; + if (new_aff) *new_aff = 0; + if (l) *l = cur; + return head; +} + +CheckAffixRes AffixMgr::check_affix(ParmString word, char aff) const +{ + CheckAffixRes res = InvalidAffix; + + for (PfxEntry * p = pFlag[(unsigned char)aff]; p; p = p->flag_next) { + res = InapplicableAffix; + if (p->applicable(word)) return ValidAffix; + } + + for (SfxEntry * p = sFlag[(unsigned char)aff]; p; p = p->flag_next) { + if (res == InvalidAffix) res = InapplicableAffix; + if (p->applicable(word)) return ValidAffix; + } + + return res; +} + + + +////////////////////////////////////////////////////////////////////// +// +// LookupInfo +// + +int LookupInfo::lookup (ParmString word, const SensitiveCompare * c, + char achar, + WordEntry & o, GuessInfo * gi) const +{ + SpellerImpl::WS::const_iterator i = begin; + const char * g = 0; + if (mode == Word) { + do { + (*i)->lookup(word, c, o); + for (;!o.at_end(); o.adv()) { + if (TESTAFF(o.aff, achar)) + return 1; + else + g = o.word; + } + ++i; + } while (i != end); + } else if (mode == Clean) { + do { + (*i)->clean_lookup(word, o); + for (;!o.at_end(); o.adv()) { + if (TESTAFF(o.aff, achar)) + return 1; + else + g = o.word; + } + ++i; + } while (i != end); + } else if (gi) { + g = gi->dup(word); + } + if (gi && g) { + CheckInfo * ci = gi->add(); + ci->word = g; + return -1; + } + return 0; +} + +////////////////////////////////////////////////////////////////////// +// +// Affix Entry +// + +bool PfxEntry::applicable(SimpleString word) const +{ + unsigned int cond; + /* make sure all conditions match */ + if ((word.size > stripl) && (word.size >= conds->num)) { + const byte * cp = (const byte *) word.str; + for (cond = 0; cond < conds->num; cond++) { + if ((conds->get(*cp++) & (1 << cond)) == 0) + break; + } + if (cond >= conds->num) return true; + } + return false; +} + +// add prefix to this word assuming conditions hold +SimpleString PfxEntry::add(SimpleString word, ObjStack & buf) const +{ + unsigned int cond; + /* make sure all conditions match */ + if ((word.size > stripl) && (word.size >= conds->num)) { + const byte * cp = (const byte *) word.str; + for (cond = 0; cond < conds->num; cond++) { + if ((conds->get(*cp++) & (1 << cond)) == 0) + break; + } + if (cond >= conds->num) { + /* */ + int alen = word.size - stripl; + char * newword = (char *)buf.alloc(alen + appndl + 1); + if (appndl) memcpy(newword, appnd, appndl); + memcpy(newword + appndl, word + stripl, alen + 1); + return SimpleString(newword, alen + appndl); + } + } + return SimpleString(); +} + +// check if this prefix entry matches +bool PfxEntry::check(const LookupInfo & linf, const AffixMgr * pmyMgr, + ParmString word, + CheckInfo & ci, GuessInfo * gi, bool cross) const +{ + unsigned int cond; // condition number being examined + unsigned tmpl; // length of tmpword + WordEntry wordinfo; // hash entry of root word or NULL + byte * cp; + VARARRAYM(char, tmpword, word.size()+stripl+1, MAXWORDLEN+1); + + // on entry prefix is 0 length or already matches the beginning of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = word.size() - appndl; + + if ((tmpl > 0) && (tmpl + stripl >= conds->num)) { + + // generate new root word by removing prefix and adding + // back any characters that would have been stripped + + if (stripl) strcpy (tmpword, strip); + strcpy ((tmpword + stripl), (word + appndl)); + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + cp = (byte *)tmpword; + for (cond = 0; cond < conds->num; cond++) { + if ((conds->get(*cp++) & (1 << cond)) == 0) break; + } + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (cond >= conds->num) { + CheckInfo * lci = 0; + CheckInfo * guess = 0; + tmpl += stripl; + + int res = linf.lookup(tmpword, &linf.sp->s_cmp_end, achar, wordinfo, gi); + + if (res == 1) { + + lci = &ci; + lci->word = wordinfo.word; + goto quit; + + } else if (res == -1) { + + guess = gi->head; + + } + + // prefix matched but no root word was found + // if XPRODUCT is allowed, try again but now + // cross checked combined with a suffix + + if (gi) + lci = gi->head; + + if (cross && xpflg & XPRODUCT) { + if (pmyMgr->suffix_check(linf, ParmString(tmpword, tmpl), + ci, gi, + XPRODUCT, (AffEntry *)this)) { + lci = &ci; + + } else if (gi) { + + CheckInfo * stop = lci; + for (lci = gi->head; + lci != stop; + lci = const_cast<CheckInfo *>(lci->next)) + { + lci->pre_flag = achar; + lci->pre_strip_len = stripl; + lci->pre_add_len = appndl; + lci->pre_add = appnd; + } + + } else { + + lci = 0; + + } + } + + if (guess) + lci = guess; + + quit: + if (lci) { + lci->pre_flag = achar; + lci->pre_strip_len = stripl; + lci->pre_add_len = appndl; + lci->pre_add = appnd; + } + if (lci == &ci) return true; + } + } + return false; +} + +bool SfxEntry::applicable(SimpleString word) const +{ + int cond; + /* make sure all conditions match */ + if ((word.size > stripl) && (word.size >= conds->num)) { + const byte * cp = (const byte *) (word + word.size); + for (cond = conds->num; --cond >=0; ) { + if ((conds->get(*--cp) & (1 << cond)) == 0) + break; + } + if (cond < 0) return true; + } + return false; +} + +// add suffix to this word assuming conditions hold +SimpleString SfxEntry::add(SimpleString word, ObjStack & buf, + int limit, SimpleString orig_word) const +{ + int cond; + /* make sure all conditions match */ + if ((orig_word.size > stripl) && (orig_word.size >= conds->num)) { + const byte * cp = (const byte *) (orig_word + orig_word.size); + for (cond = conds->num; --cond >=0; ) { + if ((conds->get(*--cp) & (1 << cond)) == 0) + break; + } + if (cond < 0) { + int alen = word.size - stripl; + if (alen >= limit) return EMPTY; + /* we have a match so add suffix */ + char * newword = (char *)buf.alloc(alen + appndl + 1); + memcpy(newword, word, alen); + memcpy(newword + alen, appnd, appndl + 1); + return SimpleString(newword, alen + appndl); + } + } + return SimpleString(); +} + +// see if this suffix is present in the word +bool SfxEntry::check(const LookupInfo & linf, ParmString word, + CheckInfo & ci, GuessInfo * gi, + int optflags, AffEntry* ppfx) +{ + unsigned tmpl; // length of tmpword + int cond; // condition beng examined + WordEntry wordinfo; // hash entry pointer + byte * cp; + VARARRAYM(char, tmpword, word.size()+stripl+1, MAXWORDLEN+1); + PfxEntry* ep = (PfxEntry *) ppfx; + + // if this suffix is being cross checked with a prefix + // but it does not support cross products skip it + + if ((optflags & XPRODUCT) != 0 && (xpflg & XPRODUCT) == 0) + return false; + + // upon entry suffix is 0 length or already matches the end of the word. + // So if the remaining root word has positive length + // and if there are enough chars in root word and added back strip chars + // to meet the number of characters conditions, then test it + + tmpl = word.size() - appndl; + + if ((tmpl > 0) && (tmpl + stripl >= conds->num)) { + + // generate new root word by removing suffix and adding + // back any characters that would have been stripped or + // or null terminating the shorter string + + strcpy (tmpword, word); + cp = (byte *)(tmpword + tmpl); + if (stripl) { + strcpy ((char *)cp, strip); + tmpl += stripl; + cp = (byte *)(tmpword + tmpl); + } else *cp = '\0'; + + // now make sure all of the conditions on characters + // are met. Please see the appendix at the end of + // this file for more info on exactly what is being + // tested + + for (cond = conds->num; --cond >= 0; ) { + if ((conds->get(*--cp) & (1 << cond)) == 0) break; + } + + // if all conditions are met then check if resulting + // root word in the dictionary + + if (cond < 0) { + CheckInfo * lci = 0; + tmpl += stripl; + const SensitiveCompare * cmp = + optflags & XPRODUCT ? &linf.sp->s_cmp_middle : &linf.sp->s_cmp_begin; + int res = linf.lookup(tmpword, cmp, achar, wordinfo, gi); + if (res == 1 + && ((optflags & XPRODUCT) == 0 || TESTAFF(wordinfo.aff, ep->achar))) + { + lci = &ci; + lci->word = wordinfo.word; + } else if (res == 1 && gi) { + lci = gi->add(); + lci->word = wordinfo.word; + } else if (res == -1) { // gi must be defined + lci = gi->head; + } + + if (lci) { + lci->suf_flag = achar; + lci->suf_strip_len = stripl; + lci->suf_add_len = appndl; + lci->suf_add = appnd; + } + + if (lci == &ci) return true; + } + } + return false; +} + +////////////////////////////////////////////////////////////////////// +// +// new_affix_mgr +// + + +PosibErr<AffixMgr *> new_affix_mgr(ParmString name, + Conv & iconv, + const Language * lang) +{ + if (name == "none") + return 0; + //CERR << "NEW AFFIX MGR\n"; + String file; + file += lang->data_dir(); + file += '/'; + file += lang->name(); + file += "_affix.dat"; + AffixMgr * affix; + affix = new AffixMgr(lang); + PosibErrBase pe = affix->setup(file, iconv); + if (pe.has_err()) { + delete affix; + return pe; + } else { + return affix; + } +} +} + +/************************************************************************** + +Appendix: Understanding Affix Code + + +An affix is either a prefix or a suffix attached to root words to make +other words. + +Basically a Prefix or a Suffix is set of AffEntry objects +which store information about the prefix or suffix along +with supporting routines to check if a word has a particular +prefix or suffix or a combination. + +The structure affentry is defined as follows: + +struct AffEntry +{ + unsigned char achar; // char used to represent the affix + char * strip; // string to strip before adding affix + char * appnd; // the affix string to add + short stripl; // length of the strip string + short appndl; // length of the affix string + short numconds; // the number of conditions that must be met + short xpflg; // flag: XPRODUCT- combine both prefix and suffix + char conds[SETSIZE]; // array which encodes the conditions to be met +}; + + +Here is a suffix borrowed from the en_US.aff file. This file +is whitespace delimited. + +SFX D Y 4 +SFX D 0 e d +SFX D y ied [^aeiou]y +SFX D 0 ed [^ey] +SFX D 0 ed [aeiou]y + +This information can be interpreted as follows: + +In the first line has 4 fields + +Field +----- +1 SFX - indicates this is a suffix +2 D - is the name of the character flag which represents this suffix +3 Y - indicates it can be combined with prefixes (cross product) +4 4 - indicates that sequence of 4 affentry structures are needed to + properly store the affix information + +The remaining lines describe the unique information for the 4 SfxEntry +objects that make up this affix. Each line can be interpreted +as follows: (note fields 1 and 2 are as a check against line 1 info) + +Field +----- +1 SFX - indicates this is a suffix +2 D - is the name of the character flag for this affix +3 y - the string of chars to strip off before adding affix + (a 0 here indicates the NULL string) +4 ied - the string of affix characters to add +5 [^aeiou]y - the conditions which must be met before the affix + can be applied + +Field 5 is interesting. Since this is a suffix, field 5 tells us that +there are 2 conditions that must be met. The first condition is that +the next to the last character in the word must *NOT* be any of the +following "a", "e", "i", "o" or "u". The second condition is that +the last character of the word must end in "y". + +So how can we encode this information concisely and be able to +test for both conditions in a fast manner? The answer is found +but studying the wonderful ispell code of Geoff Kuenning, et.al. +(now available under a normal BSD license). + +If we set up a conds array of 256 bytes indexed (0 to 255) and access it +using a character (cast to an unsigned char) of a string, we have 8 bits +of information we can store about that character. Specifically we +could use each bit to say if that character is allowed in any of the +last (or first for prefixes) 8 characters of the word. + +Basically, each character at one end of the word (up to the number +of conditions) is used to index into the conds array and the resulting +value found there says whether the that character is valid for a +specific character position in the word. + +For prefixes, it does this by setting bit 0 if that char is valid +in the first position, bit 1 if valid in the second position, and so on. + +If a bit is not set, then that char is not valid for that postion in the +word. + +If working with suffixes bit 0 is used for the character closest +to the front, bit 1 for the next character towards the end, ..., +with bit numconds-1 representing the last char at the end of the string. + +Note: since entries in the conds[] are 8 bits, only 8 conditions +(read that only 8 character positions) can be examined at one +end of a word (the beginning for prefixes and the end for suffixes. + +So to make this clearer, lets encode the conds array values for the +first two affentries for the suffix D described earlier. + + + For the first affentry: + numconds = 1 (only examine the last character) + + conds['e'] = (1 << 0) (the word must end in an E) + all others are all 0 + + For the second affentry: + numconds = 2 (only examine the last two characters) + + conds[X] = conds[X] | (1 << 0) (aeiou are not allowed) + where X is all characters *but* a, e, i, o, or u + + + conds['y'] = (1 << 1) (the last char must be a y) + all other bits for all other entries in the conds array are zero + + +**************************************************************************/ diff --git a/jni/modules/speller/default/affix.hpp b/jni/modules/speller/default/affix.hpp new file mode 100644 index 0000000..5a6f50a --- /dev/null +++ b/jni/modules/speller/default/affix.hpp @@ -0,0 +1,130 @@ +// This file is part of The New Aspell +// Copyright (C) 2004 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. +// +// Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada And +// Contributors. All rights reserved. +// + +#ifndef ASPELL_AFFIX__HPP +#define ASPELL_AFFIX__HPP + +#include "posib_err.hpp" +#include "wordinfo.hpp" +#include "fstream.hpp" +#include "parm_string.hpp" +#include "simple_string.hpp" +#include "char_vector.hpp" +#include "objstack.hpp" + +#define SETSIZE 256 +#define MAXAFFIXES 256 +#define MAXWORDLEN 255 +#define XPRODUCT (1 << 0) + +#define MAXLNLEN 1024 + +#define TESTAFF( a , b) strchr(a, b) + +namespace acommon { + class Config; + struct CheckInfo; + struct Conv; +} + +namespace aspeller { + + using namespace acommon; + + class Language; + + class SpellerImpl; + using acommon::CheckInfo; + struct GuessInfo; + + struct LookupInfo; + struct AffEntry; + struct PfxEntry; + struct SfxEntry; + + struct WordAff + { + SimpleString word; + const unsigned char * aff; + WordAff * next; + }; + + enum CheckAffixRes {InvalidAffix, InapplicableAffix, ValidAffix}; + + class AffixMgr + { + const Language * lang; + + PfxEntry * pStart[SETSIZE]; + SfxEntry * sStart[SETSIZE]; + PfxEntry * pFlag[SETSIZE]; + SfxEntry * sFlag[SETSIZE]; + + int max_strip_f[SETSIZE]; + int max_strip_; + + const char * encoding; + //const char * compound; + //int cpdmin; + + ObjStack data_buf; + + const char * affix_file; + + public: + + AffixMgr(const Language * l); + ~AffixMgr(); + + unsigned int max_strip() const {return max_strip_;} + + PosibErr<void> setup(ParmString affpath, Conv &); + + bool affix_check(const LookupInfo &, ParmString, CheckInfo &, GuessInfo *) const; + bool prefix_check(const LookupInfo &, ParmString, CheckInfo &, GuessInfo *, + bool cross = true) const; + bool suffix_check(const LookupInfo &, ParmString, CheckInfo &, GuessInfo *, + int sfxopts, AffEntry* ppfx) const; + + void munch(ParmString word, GuessInfo *, bool cross = true) const; + + // None of the expand methods reset the objstack + + WordAff * expand(ParmString word, ParmString aff, + ObjStack &, int limit = INT_MAX) const; + + CheckAffixRes check_affix(ParmString word, char aff) const; + + WordAff * expand_prefix(ParmString word, ParmString aff, + ObjStack & buf) const + { + return expand(word,aff,buf,0); + } + WordAff * expand_suffix(ParmString word, const unsigned char * aff, + ObjStack &, int limit = INT_MAX, + unsigned char * new_aff = 0, WordAff * * * l = 0, + ParmString orig_word = 0) const; + + private: + PosibErr<void> parse_file(const char * affpath, Conv &); + + PosibErr<void> build_pfxlist(PfxEntry* pfxptr); + PosibErr<void> build_sfxlist(SfxEntry* sfxptr); + PosibErr<void> process_pfx_order(); + PosibErr<void> process_sfx_order(); + }; + + PosibErr<AffixMgr *> new_affix_mgr(ParmString name, + Conv &, + const Language * lang); +} + +#endif + diff --git a/jni/modules/speller/default/affix.lo b/jni/modules/speller/default/affix.lo new file mode 100644 index 0000000..f593110 --- /dev/null +++ b/jni/modules/speller/default/affix.lo @@ -0,0 +1,12 @@ +# modules/speller/default/affix.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/affix.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/asuggest.hpp b/jni/modules/speller/default/asuggest.hpp new file mode 100644 index 0000000..bdb24ea --- /dev/null +++ b/jni/modules/speller/default/asuggest.hpp @@ -0,0 +1,58 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#ifndef _asuggest_hh_ +#define _asuggest_hh_ + +#include "suggest.hpp" +#include "editdist.hpp" +#include "typo_editdist.hpp" +#include "cache.hpp" + +namespace aspeller { + class Speller; + class SpellerImpl; + class Suggest; + + struct SuggestParms { + // implementation at the end of suggest.cc + + EditDistanceWeights edit_distance_weights; + CachePtr<const TypoEditDistanceInfo> ti; + + bool try_one_edit_word, try_scan_1, try_scan_2, try_ngram; + + int ngram_threshold, ngram_keep; + + bool check_after_one_edit_word; + + bool use_typo_analysis; + bool use_repl_table; + + int normal_soundslike_weight; // percentage + + int small_word_soundslike_weight; + int small_word_threshold; + + int soundslike_weight; + int word_weight; + + int skip; + int span; + int limit; + + String split_chars; + + SuggestParms() {} + + PosibErr<void> set(ParmString mode, SpellerImpl * sp); + PosibErr<void> fill_distance_lookup(const Config * c, const Language & l); + + virtual ~SuggestParms() {} + virtual SuggestParms * clone() const; + virtual void set_original_word_size(int size); + }; + + Suggest * new_default_suggest(const Speller *, const SuggestParms &); +} + +#endif diff --git a/jni/modules/speller/default/block_vector.hpp b/jni/modules/speller/default/block_vector.hpp new file mode 100644 index 0000000..cbeabe5 --- /dev/null +++ b/jni/modules/speller/default/block_vector.hpp @@ -0,0 +1,54 @@ +// Copyright (c) 2000 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef __autil_block_vector__ +#define __autil_block_vector__ + +#include <stddef.h> +//#include <iterator> + +namespace aspeller { + + template <typename T> + class BlockVector { + T * begin_; + T * end_; + public: + typedef T value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T * iterator; + typedef T * const_iterator; + typedef T & reference; + typedef const T & const_reference; + typedef T * pointer; + typedef T * const_pointer; + //typedef std::random_access_iterator_tag iterator_category; + typedef ptrdiff_t distance_type; + + BlockVector() : begin_(0), end_(0) {} + BlockVector(size_type) : begin_(0), end_(0) {} // noop + BlockVector(T * b, T * e) : begin_(b), end_(e) {} + void set(T * b, T * e) {begin_ = b; end_ = e;} + iterator begin() {return begin_;} + iterator end() {return end_;} + const_iterator begin() const {return begin_;} + const_iterator end() const {return end_;} + size_type size() const {return end_ - begin_;} + bool empty() const {return begin_ != end_;} + reference operator[](size_type i) {return *(begin_ + i);} + const_reference operator[](size_type i) const {return *(begin_ + i);} + }; + +} + +#endif diff --git a/jni/modules/speller/default/check_list.hpp b/jni/modules/speller/default/check_list.hpp new file mode 100644 index 0000000..89ddb03 --- /dev/null +++ b/jni/modules/speller/default/check_list.hpp @@ -0,0 +1,47 @@ +// This file is part of The New Aspell +// Copyright (C) 2004 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#ifndef __aspeller_check_list__ +#define __aspeller_check_list__ + +#include "objstack.hpp" +#include "speller.hpp" + +namespace aspeller { + + using acommon::CheckInfo; + + static inline void clear_check_info(CheckInfo & ci) + { + memset(&ci, 0, sizeof(ci)); + } + + struct GuessInfo + { + int num; + CheckInfo * head; + GuessInfo() : num(0), head(0) {} + void reset() { buf.reset(); num = 0; head = 0; } + CheckInfo * add() { + num++; + CheckInfo * tmp = (CheckInfo *)buf.alloc_top(sizeof(CheckInfo), + sizeof(void*)); + clear_check_info(*tmp); + tmp->next = head; + head = tmp; + head->guess = true; + return head; + } + void * alloc(unsigned s) {return buf.alloc_bottom(s);} + char * dup(ParmString str) {return buf.dup(str);} + private: + ObjStack buf; + }; + + +} + +#endif diff --git a/jni/modules/speller/default/data.cpp b/jni/modules/speller/default/data.cpp new file mode 100644 index 0000000..4be5b53 --- /dev/null +++ b/jni/modules/speller/default/data.cpp @@ -0,0 +1,468 @@ +// This file is part of The New Aspell +// Copyright (C) 2000-2001,2011 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include "config.hpp" +#include "convert.hpp" +#include "data.hpp" +#include "data_id.hpp" +#include "errors.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "language.hpp" +#include "speller_impl.hpp" +#include "cache-t.hpp" +#include "vararray.hpp" + +#include "gettext.h" + +namespace aspeller { + + GlobalCache<Dictionary> dict_cache("dictionary"); + + // + // Dict impl + // + + Dictionary::Id::Id(Dict * p, const FileName & fn) + : ptr(p) + { + file_name = fn.name; +#ifdef USE_FILE_INO + struct stat s; + // the file ,i + if (file_name[0] != '\0' && stat(fn.path.c_str(), &s) == 0) { + ino = s.st_ino; + dev = s.st_dev; + } else { + ino = 0; + dev = 0; + } +#endif + } + + bool operator==(const Dictionary::Id & rhs, const Dictionary::Id & lhs) + { + if (rhs.ptr == 0 || lhs.ptr == 0) { + if (rhs.file_name == 0 || lhs.file_name == 0) + return false; +#ifdef USE_FILE_INO + return rhs.ino == lhs.ino && rhs.dev == lhs.dev; +#else + return strcmp(rhs.file_name, lhs.file_name) == 0; +#endif + } else { + return rhs.ptr == lhs.ptr; + } + } + + PosibErr<void> Dictionary::attach(const Language &l) { + if (lang_ && strcmp(l.name(),lang_->name()) != 0) + return make_err(mismatched_language, lang_->name(), l.name()); + if (!lang_) lang_.copy(&l); + copy(); + return no_err; + } + + Dictionary::Dictionary(BasicType t, const char * n) + : Cacheable(&dict_cache), lang_(), id_(), + basic_type(t), class_name(n), + affix_compressed(false), + invisible_soundslike(false), soundslike_root_only(false), + fast_scan(false), fast_lookup(false) + { + id_.reset(new Id(this)); + } + + Dictionary::~Dictionary() + { + } + + const char * Dictionary::lang_name() const { + return lang_->name(); + } + + PosibErr<void> Dictionary::check_lang(ParmString l) { + if (l != lang_->name()) + return make_err(mismatched_language, lang_->name(), l); + return no_err; + } + + PosibErr<void> Dictionary::set_check_lang (ParmString l, Config & config) + { + if (lang_ == 0) { + PosibErr<Language *> res = new_language(config, l); + if (res.has_err()) return res; + lang_.reset(res.data); + lang_->set_lang_defaults(config); + set_lang_hook(config); + } else { + if (l != lang_->name()) + return make_err(mismatched_language, l, lang_->name()); + } + return no_err; + } + + void Dictionary::FileName::copy(const FileName & other) + { + const_cast<String & >(path) = other.path; + const_cast<const char * &>(name) = path.c_str() + (other.name - other.path.c_str()); + } + + void Dictionary::FileName::clear() + { + path = ""; + name = path.c_str(); + } + + void Dictionary::FileName::set(ParmString str) + { + path = str; + int i = path.size() - 1; + while (i >= 0) { + if (path[i] == '/' || path[i] == '\\') { + ++i; + break; + } + --i; + } + name = path.c_str() + i; + } + + PosibErr<void> Dictionary::set_file_name(ParmString fn) + { + file_name_.set(fn); + *id_ = Id(this, file_name_); + return no_err; + } + + PosibErr<void> Dictionary::update_file_info(FStream & f) + { +#ifdef USE_FILE_INO + struct stat s; + int ok = fstat(f.file_no(), &s); + assert(ok == 0); + id_->ino = s.st_ino; + id_->dev = s.st_dev; +#endif + return no_err; + } + + // + // BasicDict + // + + class DictStringEnumeration : public StringEnumeration + { + ClonePtr<Dict::Enum> real_; + public: + DictStringEnumeration(Dict::Enum * r) : real_(r) {} + + bool at_end() const { + return real_->at_end(); + } + const char * next() { + // FIXME: It's not this simple when affixes are involved + WordEntry * w = real_->next(); + if (!w) return 0; + return w->word; + } + StringEnumeration * clone() const { + return new DictStringEnumeration(*this); + } + void assign(const StringEnumeration * other) { + *this = *static_cast<const DictStringEnumeration *>(other); + } + }; + + PosibErr<void> Dictionary::add_repl(ParmString mis, ParmString cor) + { + if (!invisible_soundslike) { + VARARRAY(char, sl, mis.size() + 1); + lang()->LangImpl::to_soundslike(sl, mis.str(), mis.size()); + return add_repl(mis, cor, sl); + } else { + return add_repl(mis, cor, ""); + } + } + + PosibErr<void> Dictionary::add(ParmString w) + { + if (!invisible_soundslike) { + VARARRAY(char, sl, w.size() + 1); + lang()->LangImpl::to_soundslike(sl, w.str(), w.size()); + return add(w, sl); + } else { + return add(w, ""); + } + } + + // + // Default implementation; + // + + PosibErr<void> Dictionary::load(ParmString, Config &, + DictList *, SpellerImpl *) + { + return make_err(unimplemented_method, "load", class_name); + } + + PosibErr<void> Dictionary::merge(ParmString) + { + return make_err(unimplemented_method, "load", class_name); + } + + PosibErr<void> Dictionary::synchronize() + { + return make_err(unimplemented_method, "synchronize", class_name); + } + + PosibErr<void> Dictionary::save_noupdate() + { + return make_err(unimplemented_method, "save_noupdate", class_name); + } + + PosibErr<void> Dictionary::save_as(ParmString) + { + return make_err(unimplemented_method, "save_as", class_name); + } + + PosibErr<void> Dictionary::clear() + { + return make_err(unimplemented_method, "clear", class_name); + } + + StringEnumeration * Dictionary::elements() const + { + Enum * e = detailed_elements(); + if (!e) return 0; + return new DictStringEnumeration(e); + } + + Dict::Enum * Dictionary::detailed_elements() const + { + return 0; + } + + Dict::Size Dictionary::size() const + { + if (empty()) return 0; + else return 1; + } + + bool Dictionary::empty() const + { + return false; + } + + bool Dictionary::lookup (ParmString word, const SensitiveCompare *, + WordEntry &) const + { + return false; + } + + bool Dictionary::clean_lookup(ParmString, WordEntry &) const + { + return false; + } + + bool Dictionary::soundslike_lookup(const WordEntry &, WordEntry &) const + { + return false; + } + + bool Dictionary::soundslike_lookup(ParmString, WordEntry &) const + { + return false; + } + + SoundslikeEnumeration * Dictionary::soundslike_elements() const + { + return 0; + } + + PosibErr<void> Dictionary::add(ParmString w, ParmString s) + { + return make_err(unimplemented_method, "add", class_name); + } + + PosibErr<void> Dictionary::remove(ParmString w) + { + return make_err(unimplemented_method, "remove", class_name); + } + + bool Dictionary::repl_lookup(const WordEntry &, WordEntry &) const + { + return false; + } + + bool Dictionary::repl_lookup(ParmString, WordEntry &) const + { + return false; + } + + PosibErr<void> Dictionary::add_repl(ParmString mis, ParmString cor, ParmString s) + { + return make_err(unimplemented_method, "add_repl", class_name); + } + + PosibErr<void> Dictionary::remove_repl(ParmString mis, ParmString cor) + { + return make_err(unimplemented_method, "remove_repl", class_name); + } + + DictsEnumeration * Dictionary::dictionaries() const + { + return 0; + } + +#define write_conv(s) do { \ + if (!c) {o << s;} \ + else {ParmString ss(s); buf.clear(); c->convert(ss.str(), ss.size(), buf); o.write(buf.data(), buf.size());} \ + } while (false) + + OStream & WordEntry::write (OStream & o, + const Language & l, + Convert * c) const + { + CharVector buf; + write_conv(word); + if (aff && *aff) { + o << '/'; + write_conv(aff); + } + return o; + } + + PosibErr<Dict *> add_data_set(ParmString fn, + Config & config, + DictList * new_dicts, + SpellerImpl * speller, + ParmString dir, + DataType allowed) + { + Dict * res = 0; + static const char * suffix_list[] = {"", ".multi", ".alias", + ".spcl", ".special", + ".pws", ".prepl"}; + FStream in; + const char * * suffix; + const char * * suffix_end + = suffix_list + sizeof(suffix_list)/sizeof(const char *); + String dict_dir = config.retrieve("dict-dir"); + String true_file_name; + Dict::FileName file_name(fn); + const char * d = dir; + do { + if (d == 0) d = dict_dir.c_str(); + suffix = suffix_list; + do { + true_file_name = add_possible_dir(d, ParmString(file_name.path) + + ParmString(*suffix)); + in.open(true_file_name, "r").ignore_err(); + ++suffix; + } while (!in && suffix != suffix_end); + if (d == dict_dir.c_str()) break; + d = 0; + } while (!in); + if (!in) { + true_file_name = add_possible_dir(dir ? dir.str() : d, file_name.path); + return make_err(cant_read_file, true_file_name); + } + DataType actual_type; + if ((true_file_name.size() > 5 + && true_file_name.substr(true_file_name.size() - 6, 6) == ".spcl") + || + (true_file_name.size() > 6 + && (true_file_name.substr(true_file_name.size() - 6, 6) == ".multi" + || true_file_name.substr(true_file_name.size() - 6, 6) == ".alias")) + || + (true_file_name.size() > 8 + && true_file_name.substr(true_file_name.size() - 6, 6) == ".special")) + { + + actual_type = DT_Multi; + + } else { + + char head[32] = {0}; + in.read(head, 32); + if (strncmp(head, "aspell default speller rowl", 27) ==0) + actual_type = DT_ReadOnly; + else if (strncmp(head, "personal_repl", 13) == 0) + actual_type = DT_WritableRepl; + else if (strncmp(head, "personal_ws", 11) == 0) + actual_type = DT_Writable; + else + return make_err(bad_file_format, true_file_name); + } + + if (actual_type & ~allowed) + return make_err(bad_file_format, true_file_name + , _("is not one of the allowed types")); + + Dict::FileName id_fn(true_file_name); + Dict::Id id(0,id_fn); + + if (speller != 0) { + const SpellerDict * d = speller->locate(id); + if (d != 0) { + return d->dict; + } + } + + res = 0; + + Lock dict_cache_lock(NULL); + + if (actual_type == DT_ReadOnly) { // try to get it from the cache + dict_cache_lock.set(&dict_cache.lock); + res = dict_cache.find(id); + } + + if (!res) { + + StackPtr<Dict> w; + switch (actual_type) { + case DT_ReadOnly: + w = new_default_readonly_dict(); + break; + case DT_Multi: + w = new_default_multi_dict(); + break; + case DT_Writable: + w = new_default_writable_dict(); + break; + case DT_WritableRepl: + w = new_default_replacement_dict(); + break; + default: + abort(); + } + + RET_ON_ERR(w->load(true_file_name, config, new_dicts, speller)); + + if (actual_type == DT_ReadOnly) + dict_cache.add(w); + + res = w.release(); + + } else { // actual_type == DT_ReadOnly implied, and hence the lock + // is already acquired + + res->copy_no_lock(); + + } + + dict_cache_lock.release(); + + if (new_dicts) + new_dicts->add(res); + + return res; + } + +} + diff --git a/jni/modules/speller/default/data.hpp b/jni/modules/speller/default/data.hpp new file mode 100644 index 0000000..b25c4ab --- /dev/null +++ b/jni/modules/speller/default/data.hpp @@ -0,0 +1,223 @@ +// Copyright 2000,2011 by Kevin Atkinson under the terms of the LGPL + +#ifndef ASPELLER_DATA__HPP +#define ASPELLER_DATA__HPP + +#include "ndebug.hpp" +#include <assert.h> + +#include "copy_ptr.hpp" +#include "enumeration.hpp" +#include "language.hpp" +#include "posib_err.hpp" +#include "string.hpp" +#include "string_enumeration.hpp" +#include "word_list.hpp" +#include "cache.hpp" +#include "wordinfo.hpp" + +using namespace acommon; + +namespace acommon { + class Config; + class FStream; + class OStream; + class Convert; +} + +namespace aspeller { + + class Dictionary; + class DictList; + typedef Enumeration<WordEntry *> WordEntryEnumeration; + typedef Enumeration<Dictionary *> DictsEnumeration; + + class SoundslikeEnumeration + { + public: + virtual WordEntry * next(int) = 0; + virtual ~SoundslikeEnumeration() {} + SoundslikeEnumeration() {} + private: + SoundslikeEnumeration(const SoundslikeEnumeration &); + void operator=(const SoundslikeEnumeration &); + }; + + class Dictionary : public Cacheable, public WordList { + friend class SpellerImpl; + private: + CachePtr<const Language> lang_; + PosibErr<void> attach(const Language &); + public: + class FileName { + void copy(const FileName & other); + public: + String path; + const char * name; + + void clear(); + void set(ParmString); + + FileName() {clear();} + explicit FileName(ParmString str) {set(str);} + FileName(const FileName & other) {copy(other);} + FileName & operator=(const FileName & other) {copy(other); return *this;} + }; + class Id; + protected: + CopyPtr<Id> id_; + virtual void set_lang_hook(Config &) {} + + public: + typedef Id CacheKey; + bool cache_key_eq(const Id &); + + enum BasicType {no_type, basic_dict, replacement_dict, multi_dict}; + const BasicType basic_type; + const char * const class_name; + + protected: + Dictionary(BasicType,const char *); + public: + virtual ~Dictionary(); + + const Id & id() {return *id_;} + PosibErr<void> check_lang(ParmString lang); + PosibErr<void> set_check_lang(ParmString lang, Config &); + const LangImpl * lang() const {return lang_;}; + const Language * language() const {return lang_;}; + const char * lang_name() const; + + private: + FileName file_name_; + protected: + PosibErr<void> set_file_name(ParmString name); + PosibErr<void> update_file_info(FStream & f); + public: + bool compare(const Dictionary &); + + const char * file_name() const {return file_name_.path.c_str();} + // returns any additional dictionaries that are also used + virtual PosibErr<void> load(ParmString, Config &, DictList * = 0, + SpellerImpl * = 0); + + virtual PosibErr<void> merge(ParmString); + virtual PosibErr<void> synchronize(); + virtual PosibErr<void> save_noupdate(); + virtual PosibErr<void> save_as(ParmString); + virtual PosibErr<void> clear(); + + bool affix_compressed; + bool invisible_soundslike; // true when words are grouped by the + // soundslike but soundslike data is not + // actually stored with the word + bool soundslike_root_only; // true when affix compression is used AND + // the stored soundslike corresponds to the + // root word only + bool fast_scan; // can effectly scan for all soundslikes (or + // clean words if have_soundslike is false) + // with an edit distance of 1 or 2 + bool fast_lookup; // can effectly find all words with a given soundslike + // when the SoundslikeWord is not given + + typedef WordEntryEnumeration Enum; + typedef const char * Value; + typedef unsigned int Size; + + StringEnumeration * elements() const; + + virtual Enum * detailed_elements() const; + virtual Size size() const; + virtual bool empty() const; + + virtual bool lookup (ParmString word, const SensitiveCompare *, + WordEntry &) const; + + virtual bool clean_lookup(ParmString, WordEntry &) const; + + virtual bool soundslike_lookup(const WordEntry &, WordEntry &) const; + virtual bool soundslike_lookup(ParmString, WordEntry & o) const; + + // the elements returned are only guaranteed to remain valid + // guaranteed to return all soundslike and all words + // however an individual soundslike may appear multiple + // times in the list.... + virtual SoundslikeEnumeration * soundslike_elements() const; + + virtual PosibErr<void> add(ParmString w, ParmString s); + PosibErr<void> add(ParmString w); + + virtual PosibErr<void> remove(ParmString w); + + virtual bool repl_lookup(const WordEntry &, WordEntry &) const; + virtual bool repl_lookup(ParmString, WordEntry &) const; + + virtual PosibErr<void> add_repl(ParmString mis, ParmString cor, ParmString s); + PosibErr<void> add_repl(ParmString mis, ParmString cor); + + virtual PosibErr<void> remove_repl(ParmString mis, ParmString cor); + + virtual DictsEnumeration * dictionaries() const; + }; + + typedef Dictionary Dict; + typedef Dictionary ReplacementDict; + typedef Dictionary MultiDict; + + bool operator==(const Dictionary::Id & rhs, const Dictionary::Id & lhs); + + inline bool operator!=(const Dictionary::Id & rhs, const Dictionary::Id & lhs) + { + return !(rhs == lhs); + } + + class DictList { + // well a stack at the moment but it may eventually become a list + // NOT necessarily first in first out + Vector<Dict *> data; + private: + DictList(const DictList &); + void operator= (const DictList &); + public: + // WILL take ownership of the dict + DictList() {} + void add(Dict * o) {data.push_back(o);} + Dict * last() {return data.back();} + void pop() {data.pop_back();} + bool empty() {return data.empty();} + ~DictList() {for (; !empty(); pop()) last()->release();} + }; + + typedef unsigned int DataType; + static const DataType DT_ReadOnly = 1<<0; + static const DataType DT_Writable = 1<<1; + static const DataType DT_WritableRepl = 1<<2; + static const DataType DT_Multi = 1<<3; + static const DataType DT_Any = 0xFF; + + // any new extra dictionaries that were loaded will be ii + PosibErr<Dict *> add_data_set(ParmString file_name, + Config &, + DictList * other_dicts = 0, + SpellerImpl * = 0, + ParmString dir = 0, + DataType allowed = DT_Any); + + // implemented in readonly_ws.cc + Dictionary * new_default_readonly_dict(); + + PosibErr<void> create_default_readonly_dict(StringEnumeration * els, + Config & config); + + // implemented in multi_ws.cc + MultiDict * new_default_multi_dict(); + + // implemented in writable.cpp + Dictionary * new_default_writable_dict(); + + // implemented in writable.cpp + ReplacementDict * new_default_replacement_dict(); +} + +#endif + diff --git a/jni/modules/speller/default/data.lo b/jni/modules/speller/default/data.lo new file mode 100644 index 0000000..69fd904 --- /dev/null +++ b/jni/modules/speller/default/data.lo @@ -0,0 +1,12 @@ +# modules/speller/default/data.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/data.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/data_id.hpp b/jni/modules/speller/default/data_id.hpp new file mode 100644 index 0000000..f640ad6 --- /dev/null +++ b/jni/modules/speller/default/data_id.hpp @@ -0,0 +1,29 @@ +#ifndef ASPELLER_DATA_ID__HPP +#define ASPELLER_DATA_ID__HPP + +#include "settings.h" + +#include <sys/stat.h> + +namespace aspeller { + + class Dict::Id { + public: // but don't use + const Dict * ptr; + const char * file_name; +#ifdef USE_FILE_INO + ino_t ino; + dev_t dev; +#endif + public: + Id(Dict * p, const FileName & fn = FileName()); + }; + + inline bool Dict::cache_key_eq(const Id & o) + { + return *id_ == o; + } + +} + +#endif diff --git a/jni/modules/speller/default/data_util.hpp b/jni/modules/speller/default/data_util.hpp new file mode 100644 index 0000000..58fd128 --- /dev/null +++ b/jni/modules/speller/default/data_util.hpp @@ -0,0 +1,46 @@ +#ifndef __aspeller_data_util_hh__ +#define __aspeller_data_util_hh__ + +#include <ctime> + +//POSIX headers +#include <sys/stat.h> + +#include "parm_string.hpp" + +using namespace acommon; + +namespace aspeller { + + template <class Itr> + struct CharStrParms { + typedef const char * Value; + typedef Itr Iterator; + Iterator end_; + CharStrParms(Iterator e) : end_(e) {} + bool endf(Iterator i) const {return i == end_;} + Value deref(Iterator i) const {return *i;} + Value end_state() const {return 0;} + }; + + template <class Itr> + struct StrParms { + typedef const char * Value; + typedef Itr Iterator; + Iterator end_; + StrParms(Iterator e) : end_(e) {} + bool endf(Iterator i) const {return i == end_;} + Value deref(Iterator i) const {return i->c_str();} + Value end_state() const {return 0;} + }; + + inline time_t modification_date(ParmString file) { + struct stat file_stat; + if (stat(file, &file_stat) == 0) + return file_stat.st_mtime; + else + return 0; + } +} + +#endif diff --git a/jni/modules/speller/default/editdist.cpp b/jni/modules/speller/default/editdist.cpp new file mode 100644 index 0000000..a3f946c --- /dev/null +++ b/jni/modules/speller/default/editdist.cpp @@ -0,0 +1,56 @@ + +#include <cstring> + +#include "editdist.hpp" +#include "matrix.hpp" +#include "vararray.hpp" + +// edit_distance is implemented using a straight forward dynamic +// programming algorithm with out any special tricks. Its space +// usage AND running time is tightly asymptotically bounded by +// strlen(a)*strlen(b) + +namespace aspeller { + + short edit_distance(ParmString a0, ParmString b0, + const EditDistanceWeights & w) + { + int a_size = a0.size() + 1; + int b_size = b0.size() + 1; + VARARRAY(short, e_d, a_size * b_size); + ShortMatrix e(a_size,b_size,e_d); + e(0, 0) = 0; + for (int j = 1; j != b_size; ++j) + e(0, j) = e(0, j-1) + w.del1; + const char * a = a0.str() - 1; + const char * b = b0.str() - 1; + short te; + for (int i = 1; i != a_size; ++i) { + e(i, 0) = e(i-1, 0) + w.del2; + for (int j = 1; j != b_size; ++j) { + if (a[i] == b[j]) { + + e(i, j) = e(i-1, j-1); + + } else { + + e(i, j) = w.sub + e(i-1, j-1); + + if (i != 1 && j != 1 && + a[i] == b[j-1] && a[i-1] == b[j]) + { + te = w.swap + e(i-2, j-2); + if (te < e(i, j)) e(i, j) = te; + } + + te = w.del1 + e(i-1, j); + if (te < e(i, j)) e(i, j) = te; + te = w.del2 + e(i, j-1); + if (te < e(i, j)) e(i, j) = te; + + } + } + } + return e(a_size-1, b_size-1); + } +} diff --git a/jni/modules/speller/default/editdist.hpp b/jni/modules/speller/default/editdist.hpp new file mode 100644 index 0000000..11c0bfa --- /dev/null +++ b/jni/modules/speller/default/editdist.hpp @@ -0,0 +1,30 @@ +#ifndef __aspeller_edit_distance_hh__ +#define __aspeller_edit_distance_hh__ + +#include "parm_string.hpp" +#include "weights.hpp" + +namespace aspeller { + + using acommon::ParmString; + + // edit_distance finds the shortest edit distance. The edit distance is + // (cost of swap)(# of swaps) + (cost of deletion)(# of deletions) + // + (cost of insertion)(# of insertions) + // + (cost of substitutions)(# of substitutions) + + // Preconditions: + // max(strlen(a), strlen(b))*max(of the edit weights) <= 2^15 + // if violated than an incorrect result may be returned (which may be negative) + // due to overflow of a short integer + // a,b are not null pointers + // Returns: + // the edit distance between a and b + + // the running time is tightly asymptotically bounded by strlen(a)*strlen(b) + + short edit_distance(ParmString a, ParmString b, + const EditDistanceWeights & w = EditDistanceWeights()); +} + +#endif diff --git a/jni/modules/speller/default/editdist.lo b/jni/modules/speller/default/editdist.lo new file mode 100644 index 0000000..25428d7 --- /dev/null +++ b/jni/modules/speller/default/editdist.lo @@ -0,0 +1,12 @@ +# modules/speller/default/editdist.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/editdist.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/editdist2.hpp b/jni/modules/speller/default/editdist2.hpp new file mode 100644 index 0000000..072a9ea --- /dev/null +++ b/jni/modules/speller/default/editdist2.hpp @@ -0,0 +1,28 @@ + +#include "leditdist.hpp" +#include "editdist.hpp" + +#include <cassert> + +namespace aspeller { + inline int edit_distance(ParmString a, ParmString b, + int level, // starting level + int limit, // maximum level + const EditDistanceWeights & w + = EditDistanceWeights()) + { + int score; + assert(level > 0 && limit >= level); + do { + if (level == 2) { + score = limit2_edit_distance(a,b,w); + } else if (level < 5) { + score = limit_edit_distance(a,b,level,w); + } else { + score = edit_distance(a,b,w); + } + ++level; + } while (score >= LARGE_NUM && level <= limit); + return score; + } +} diff --git a/jni/modules/speller/default/language.cpp b/jni/modules/speller/default/language.cpp new file mode 100644 index 0000000..c7c9706 --- /dev/null +++ b/jni/modules/speller/default/language.cpp @@ -0,0 +1,742 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#include "settings.h" + +#include <vector> +#include <assert.h> + +#include <iostream.hpp> + +#include "asc_ctype.hpp" +#include "clone_ptr-t.hpp" +#include "config.hpp" +#include "enumeration.hpp" +#include "errors.hpp" +#include "file_data_util.hpp" +#include "fstream.hpp" +#include "language.hpp" +#include "string.hpp" +#include "cache-t.hpp" +#include "getdata.hpp" +#include "file_util.hpp" + +#ifdef ENABLE_NLS +# include <langinfo.h> +#endif + +#include "gettext.h" + +namespace aspeller { + + static const char TO_CHAR_TYPE[256] = { + // 1 2 3 4 5 6 7 8 9 A B C D E F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3 + 0, 4, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 5, 0, 0, // 4 + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, // 5 + 0, 4, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 5, 0, 0, // 6 + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, // 7 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F + }; + + static const int FOR_CONFIG = 1; + + static const KeyInfo lang_config_keys[] = { + {"charset", KeyInfoString, "iso-8859-1", ""} + , {"data-encoding", KeyInfoString, "<charset>", ""} + , {"name", KeyInfoString, "", ""} + , {"run-together", KeyInfoBool, "", "", 0, FOR_CONFIG} + , {"run-together-limit", KeyInfoInt, "", "", 0, FOR_CONFIG} + , {"run-together-min", KeyInfoInt, "", "", 0, FOR_CONFIG} + , {"soundslike", KeyInfoString, "none", ""} + , {"special", KeyInfoString, "", ""} + , {"ignore-accents" , KeyInfoBool, "", "", 0, FOR_CONFIG} + , {"invisible-soundslike",KeyInfoBool, "", "", 0, FOR_CONFIG} + , {"keyboard", KeyInfoString, "standard", "", 0, FOR_CONFIG} + , {"affix", KeyInfoString, "none", ""} + , {"affix-compress", KeyInfoBool, "false", "", 0, FOR_CONFIG} + , {"partially-expand", KeyInfoBool, "false", "", 0, FOR_CONFIG} + , {"affix-char", KeyInfoString, "/", "", 0, FOR_CONFIG} + , {"flag-char", KeyInfoString, ":", "", 0, FOR_CONFIG} + , {"repl-table", KeyInfoString, "none", ""} + , {"sug-split-char", KeyInfoList, "", "", 0, FOR_CONFIG} + , {"store-as", KeyInfoString, "", ""} + , {"try", KeyInfoString, "", ""} + , {"normalize", KeyInfoBool, "false", "", 0, FOR_CONFIG} + , {"norm-required", KeyInfoBool, "false", "", 0, FOR_CONFIG} + , {"norm-form", KeyInfoString, "nfc", "", 0, FOR_CONFIG} + }; + + static GlobalCache<Language> language_cache("language"); + + PosibErr<void> Language::setup(const String & lang, const Config * config) + { + // + // get_lang_info + // + + String dir1,dir2,path; + + fill_data_dir(config, dir1, dir2); + dir_ = find_file(path,dir1,dir2,lang,".dat"); + + lang_config_ = + new Config("speller-lang", + lang_config_keys, + lang_config_keys + sizeof(lang_config_keys)/sizeof(KeyInfo)); + Config & data = *lang_config_; + + { + PosibErrBase pe = data.read_in_file(path); + if (pe.has_err(cant_read_file)) { + String mesg = pe.get_err()->mesg; + mesg[0] = asc_tolower(mesg[0]); + mesg = _("This is probably because: ") + mesg; + return make_err(unknown_language, lang, mesg); + } else if (pe.has_err()) + return pe; + } + + if (!data.have("name")) + return make_err(bad_file_format, path, _("The required field \"name\" is missing.")); + + String buf; + name_ = data.retrieve("name"); + charset_ = fix_encoding_str(data.retrieve("charset"), buf); + charmap_ = charset_; + data_encoding_ = fix_encoding_str(data.retrieve("data-encoding"), buf); + + DataPair d; + + // + // read header of cset data file + // + + FStream char_data; + String char_data_name; + find_file(char_data_name,dir1,dir2,charset_,".cset"); + RET_ON_ERR(char_data.open(char_data_name, "r")); + + String temp; + char * p; + do { + p = get_nb_line(char_data, temp); + if (*p == '=') { + ++p; + while (asc_isspace(*p)) ++p; + charmap_ = p; + } + } while (*p != '/'); + + // + // fill in tables + // + + for (unsigned int i = 0; i != 256; ++i) { + p = get_nb_line(char_data, temp); + if (!p || strtoul(p, &p, 16) != i) + return make_err(bad_file_format, char_data_name); + to_uni_[i] = strtol(p, &p, 16); + while (asc_isspace(*p)) ++p; + char_type_[i] = static_cast<CharType>(TO_CHAR_TYPE[to_uchar(*p++)]); + while (asc_isspace(*p)) ++p; + ++p; // display, ignored for now + CharInfo inf = char_type_[i] >= Letter ? LETTER : 0; + to_upper_[i] = static_cast<char>(strtol(p, &p, 16)); + inf |= to_uchar(to_upper_[i]) == i ? UPPER : 0; + to_lower_[i] = static_cast<char>(strtol(p, &p, 16)); + inf |= to_uchar(to_lower_[i]) == i ? LOWER : 0; + to_title_[i] = static_cast<char>(strtol(p, &p, 16)); + inf |= to_uchar(to_title_[i]) == i ? TITLE : 0; + to_plain_[i] = static_cast<char>(strtol(p, &p, 16)); + inf |= to_uchar(to_plain_[i]) == i ? PLAIN : 0; + inf |= to_uchar(to_plain_[i]) == 0 ? PLAIN : 0; + sl_first_[i] = static_cast<char>(strtol(p, &p, 16)); + sl_rest_[i] = static_cast<char>(strtol(p, &p, 16)); + char_info_[i] = inf; + } + + for (unsigned int i = 0; i != 256; ++i) { + de_accent_[i] = to_plain_[i] == 0 ? to_uchar(i) : to_plain_[i]; + } + + to_plain_[0] = 0x10; // to make things slightly easier + to_plain_[1] = 0x10; + + for (unsigned int i = 0; i != 256; ++i) { + to_stripped_[i] = to_plain_[(unsigned char)to_lower_[i]]; + } + + char_data.close(); + + if (data.have("store-as")) + buf = data.retrieve("store-as"); + else if (data.retrieve_bool("affix-compress")) + buf = "lower"; + else + buf = "stripped"; + char * clean_is; + if (buf == "stripped") { + store_as_ = Stripped; + clean_is = to_stripped_; + } else { + store_as_ = Lower; + clean_is = to_lower_; + } + + for (unsigned i = 0; i != 256; ++i) { + to_clean_[i] = char_type_[i] > NonLetter ? clean_is[i] : 0; + if ((unsigned char)to_clean_[i] == i) char_info_[i] |= CLEAN; + } + + to_clean_[0x00] = 0x10; // to make things slightly easier + to_clean_[0x10] = 0x10; + + clean_chars_ = get_clean_chars(*this); + + // + // determine which mapping to use + // + + if (charmap_ != charset_) { + if (file_exists(dir1 + charset_ + ".cmap") || + file_exists(dir2 + charset_ + ".cmap")) + { + charmap_ = charset_; + } else if (data_encoding_ == charset_) { + data_encoding_ = charmap_; + } + } + + // + // set up conversions + // + { +#ifdef ENABLE_NLS + const char * tmp = 0; + tmp = bind_textdomain_codeset("aspell", 0); +#ifdef HAVE_LANGINFO_CODESET + if (!tmp) tmp = nl_langinfo(CODESET); +#endif + if (ascii_encoding(*config, tmp)) tmp = 0; + if (tmp) + RET_ON_ERR(mesg_conv_.setup(*config, charmap_, fix_encoding_str(tmp, buf), NormTo)); + else +#endif + RET_ON_ERR(mesg_conv_.setup(*config, charmap_, data_encoding_, NormTo)); + // no need to check for errors here since we know charmap_ is a + // supported encoding + to_utf8_.setup(*config, charmap_, "utf-8", NormTo); + from_utf8_.setup(*config, "utf-8", charmap_, NormFrom); + } + + Conv iconv; + RET_ON_ERR(iconv.setup(*config, data_encoding_, charmap_, NormFrom)); + + // + // set up special + // + + init(data.retrieve("special"), d, buf); + while (split(d)) { + char c = iconv(d.key)[0]; + split(d); + special_[to_uchar(c)] = + SpecialChar (d.key[0] == '*',d.key[1] == '*', d.key[2] == '*'); + } + + // + // prep phonetic code + // + + { + PosibErr<Soundslike *> pe = new_soundslike(data.retrieve("soundslike"), + iconv, + this); + if (pe.has_err()) return pe; + soundslike_.reset(pe.data); + } + soundslike_chars_ = soundslike_->soundslike_chars(); + + have_soundslike_ = strcmp(soundslike_->name(), "none") != 0; + + // + // prep affix code + // + { + PosibErr<AffixMgr *> pe = new_affix_mgr(data.retrieve("affix"), iconv, this); + if (pe.has_err()) return pe; + affix_.reset(pe.data); + } + + // + // fill repl tables (if any) + // + + String repl = data.retrieve("repl-table"); + have_repl_ = false; + if (repl != "none") { + + String repl_file; + FStream REPL; + find_file(repl_file, dir1, dir2, repl, "_repl", ".dat"); + RET_ON_ERR(REPL.open(repl_file, "r")); + + size_t num_repl = 0; + while (getdata_pair(REPL, d, buf)) { + ::to_lower(d.key); + if (d.key == "rep") { + num_repl = atoi(d.value); // FIXME make this more robust + break; + } + } + + if (num_repl > 0) + have_repl_ = true; + + for (size_t i = 0; i != num_repl; ++i) { + bool res = getdata_pair(REPL, d, buf); + assert(res); // FIXME + ::to_lower(d.key); + assert(d.key == "rep"); // FIXME + split(d); + SuggestRepl rep; + rep.substr = buf_.dup(iconv(d.key)); + if (check_if_valid(*this, rep.substr).get_err()) + continue; // FIXME: This should probably be an error, but + // this may cause problems with compatibility with + // Myspell as these entries may make sense for + // Myspell (but obviously not for Aspell) + to_clean((char *)rep.substr, rep.substr); + rep.repl = buf_.dup(iconv(d.value)); + if (check_if_valid(*this, rep.repl).get_err()) + continue; // FIXME: Ditto + to_clean((char *)rep.repl, rep.repl); + if (strcmp(rep.substr, rep.repl) == 0 || rep.substr[0] == '\0') + continue; // FIXME: Ditto + repls_.push_back(rep); + } + + } + return no_err; + } + + void Language::set_lang_defaults(Config & config) const + { + config.replace_internal("actual-lang", name()); + config.lang_config_merge(*lang_config_, FOR_CONFIG, data_encoding_); + } + + WordInfo Language::get_word_info(ParmStr str) const + { + CharInfo first = CHAR_INFO_ALL, all = CHAR_INFO_ALL; + const char * p = str; + while (*p && (first = char_info(*p++), all &= first, !(first & LETTER))); + while (*p) all &= char_info(*p++); + WordInfo res; + if (all & LOWER) res = AllLower; + else if (all & UPPER) res = AllUpper; + else if (first & TITLE) res = FirstUpper; + else res = Other; + if (all & PLAIN) res |= ALL_PLAIN; + if (all & CLEAN) res |= ALL_CLEAN; + return res; + } + + CasePattern Language::case_pattern(ParmStr str) const + { + CharInfo first = CHAR_INFO_ALL, all = CHAR_INFO_ALL; + const char * p = str; + while (*p && (first = char_info(*p++), all &= first, !(first & LETTER))); + while (*p) all &= char_info(*p++); + if (all & LOWER) return AllLower; + else if (all & UPPER) return AllUpper; + else if (first & TITLE) return FirstUpper; + else return Other; + } + + CasePattern Language::case_pattern(const char * str, unsigned size) const + { + CharInfo first = CHAR_INFO_ALL, all = CHAR_INFO_ALL; + const char * p = str; + const char * end = p + size; + while (p < end && (first = char_info(*p++), all &= first, !(first & LETTER))); + while (p < end) all &= char_info(*p++); + if (all & LOWER) return AllLower; + else if (all & UPPER) return AllUpper; + else if (first & TITLE) return FirstUpper; + else return Other; + } + + void Language::fix_case(CasePattern case_pattern, + char * res, const char * str) const + { + if (!str[0]) return; + if (case_pattern == AllUpper) { + to_upper(res,str); + } if (case_pattern == FirstUpper && is_lower(str[0])) { + *res = to_title(str[0]); + if (res == str) return; + res++; + str++; + while (*str) *res++ = *str++; + *res = '\0'; + } else { + if (res == str) return; + while (*str) *res++ = *str++; + *res = '\0'; + } + } + + const char * Language::fix_case(CasePattern case_pattern, const char * str, + String & buf) const + { + if (!str[0]) return str; + if (case_pattern == AllUpper) { + to_upper(buf,str); + return buf.str(); + } if (case_pattern == FirstUpper && is_lower(str[0])) { + buf.clear(); + buf += to_title(str[0]); + str++; + while (*str) buf += *str++; + return buf.str(); + } else { + return str; + } + } + + WordAff * Language::fake_expand(ParmStr word, ParmStr aff, + ObjStack & buf) const + { + WordAff * cur = (WordAff *)buf.alloc_bottom(sizeof(WordAff)); + cur->word = buf.dup(word); + cur->aff = (unsigned char *)buf.dup(""); + cur->next = 0; + return cur; + } + + bool SensitiveCompare::operator() (const char * word0, + const char * inlist0) const + { + assert(*word0 && *inlist0); + try_again: + const char * word = word0; + const char * inlist = inlist0; + + if (!case_insensitive) { + + if (begin) { + if (*word == *inlist || *word == lang->to_title(*inlist)) ++word, ++inlist; + else goto try_upper; + } + while (*word && *inlist && *word == *inlist) ++word, ++inlist; + if (*inlist) goto try_upper; + if (end && lang->special(*word).end) ++word; + if (*word) goto try_upper; + return true; + try_upper: + word = word0; + inlist = inlist0; + while (*word && *inlist && *word == lang->to_upper(*inlist)) ++word, ++inlist; + if (*inlist) goto fail; + if (end && lang->special(*word).end) ++word; + if (*word) goto fail; + + } else { // case_insensitive + + while (*word && *inlist && + lang->to_upper(*word) == lang->to_upper(*inlist)) ++word, ++inlist; + if (*inlist) goto fail; + if (end && lang->special(*word).end) ++word; + if (*word) goto fail; + + } + return true; + + fail: + if (begin && lang->special(*word0).begin) {++word0; goto try_again;} + return false; + } + + static PosibErrBase invalid_word_e(const Language & l, + ParmStr word, + const char * msg, + char chr = 0) + { + char m[200]; + if (chr) { + // the "char *" cast is needed due to an incorrect "snprintf" + // declaration on some platforms. + snprintf(m, 200, (char *)msg, MsgConv(l)(chr), l.to_uni(chr)); + msg = m; + } + return make_err(invalid_word, MsgConv(l)(word), msg); + } + + PosibErr<void> check_if_valid(const Language & l, ParmStr word) { + if (*word == '\0') + return invalid_word_e(l, word, _("Empty string.")); + const char * i = word; + if (!l.is_alpha(*i)) { + if (!l.special(*i).begin) + return invalid_word_e(l, word, _("The character '%s' (U+%02X) may not appear at the beginning of a word."), *i); + else if (!l.is_alpha(*(i+1))) + return invalid_word_e(l, word, _("The character '%s' (U+%02X) must be followed by an alphabetic character."), *i); + else if (!*(i+1)) + return invalid_word_e(l, word, _("Does not contain any alphabetic characters.")); + } + for (;*(i+1) != '\0'; ++i) { + if (!l.is_alpha(*i)) { + if (!l.special(*i).middle) + return invalid_word_e(l, word, _("The character '%s' (U+%02X) may not appear in the middle of a word."), *i); + else if (!l.is_alpha(*(i+1))) + return invalid_word_e(l, word, _("The character '%s' (U+%02X) must be followed by an alphabetic character."), *i); + } + } + if (!l.is_alpha(*i)) { + if (*i == '\r') + return invalid_word_e(l, word, _("The character '\\r' (U+0D) may not appear at the end of a word. " + "This probably means means that the file is using MS-DOS EOL instead of Unix EOL."), *i); + if (!l.special(*i).end) + return invalid_word_e(l, word, _("The character '%s' (U+%02X) may not appear at the end of a word."), *i); + } + return no_err; + } + + PosibErr<void> validate_affix(const Language & l, ParmStr word, ParmStr aff) + { + for (const char * a = aff; *a; ++a) { + CheckAffixRes res = l.affix()->check_affix(word, *a); + if (res == InvalidAffix) + return make_err(invalid_affix, MsgConv(l)(*a), MsgConv(l)(word)); + else if (res == InapplicableAffix) + return make_err(inapplicable_affix, MsgConv(l)(*a), MsgConv(l)(word)); + } + return no_err; + } + + CleanAffix::CleanAffix(const Language * lang0, OStream * log0) + : lang(lang0), log(log0), msgconv1(lang0), msgconv2(lang0) + { + } + + char * CleanAffix::operator()(ParmStr word, char * aff) + { + char * r = aff; + for (const char * a = aff; *a; ++a) { + CheckAffixRes res = lang->affix()->check_affix(word, *a); + if (res == ValidAffix) { + *r = *a; + ++r; + } else if (log) { + const char * msg = res == InvalidAffix + ? _("Warning: Removing invalid affix '%s' from word %s.\n") + : _("Warning: Removing inapplicable affix '%s' from word %s.\n"); + log->printf(msg, msgconv1(*a), msgconv2(word)); + } + } + *r = '\0'; + return r; + } + + String get_stripped_chars(const Language & lang) { + bool chars_set[256] = {0}; + String chars_list; + for (int i = 0; i != 256; ++i) + { + char c = static_cast<char>(i); + if (lang.is_alpha(c) || lang.special(c).any) + chars_set[static_cast<unsigned char>(lang.to_stripped(c))] = true; + } + for (int i = 1; i != 256; ++i) + { + if (chars_set[i]) + chars_list += static_cast<char>(i); + } + return chars_list; + } + + String get_clean_chars(const Language & lang) { + bool chars_set[256] = {0}; + String chars_list; + for (int i = 0; i != 256; ++i) + { + char c = static_cast<char>(i); + if (lang.is_alpha(c) || lang.special(c).any) + chars_set[static_cast<unsigned char>(lang.to_clean(c))] = true; + } + for (int i = 1; i != 256; ++i) + { + if (chars_set[i]) { + chars_list += static_cast<char>(i); + } + } + return chars_list; + } + + PosibErr<Language *> new_language(const Config & config, ParmStr lang) + { + if (!lang) + return get_cache_data(&language_cache, &config, config.retrieve("lang")); + else + return get_cache_data(&language_cache, &config, lang); + } + + PosibErr<void> open_affix_file(const Config & c, FStream & f) + { + String lang = c.retrieve("lang"); + + String dir1,dir2,path; + fill_data_dir(&c, dir1, dir2); + String dir = find_file(path,dir1,dir2,lang,".dat"); + + String file; + file += dir; + file += '/'; + file += lang; + file += "_affix.dat"; + + RET_ON_ERR(f.open(file,"r")); + + return no_err; + } + + bool find_language(Config & c) + { + String l_data = c.retrieve("lang"); + char * l = l_data.mstr(); + + String dir1,dir2,path; + fill_data_dir(&c, dir1, dir2); + + char * s = l + strlen(l); + + while (s > l) { + find_file(path,dir1,dir2,l,".dat"); + if (file_exists(path)) { + c.replace_internal("actual-lang", l); + return true; + } + while (s > l && !(*s == '-' || *s == '_')) --s; + *s = '\0'; + } + return false; + } + + WordListIterator::WordListIterator(StringEnumeration * in0, + const Language * lang0, + OStream * log0) + : in(in0), lang(lang0), log(log0), val(), str(0), str_end(0), brk(), + clean_affix(lang0, log0) + { + } + + PosibErr<void> WordListIterator::init(Config & config) + { + if (!config.have("norm-strict")) + config.replace("norm-strict", "true"); + have_affix = lang->have_affix(); + validate_words = config.retrieve_bool("validate-words"); + validate_affixes = config.retrieve_bool("validate-affixes"); + clean_words = config.retrieve_bool("clean-words"); + skip_invalid_words = config.retrieve_bool("skip-invalid-words"); + clean_affixes = config.retrieve_bool("clean-affixes"); + if (config.have("encoding")) { + RET_ON_ERR(iconv.setup(config, config.retrieve("encoding"), lang->charmap(),NormFrom)); + } else { + RET_ON_ERR(iconv.setup(config, lang->data_encoding(), lang->charmap(), NormFrom)); + } + brk[0] = ' '; + if (!lang->special('-').any) brk[1] = '-'; + return no_err; + } + + PosibErr<bool> WordListIterator::adv() + { + loop: + if (!str) { + orig = in->next(); + if (!orig) return false; + if (!*orig) goto loop; + PosibErr<const char *> pe = iconv(orig); + if (pe.has_err()) { + if (!skip_invalid_words) return pe; + if (log) log->printf(_("Warning: %s Skipping string.\n"), pe.get_err()->mesg); + else pe.ignore_err(); + goto loop; + } + if (pe.data == orig) { + data = orig; + data.ensure_null_end(); + str = data.pbegin(); + str_end = data.pend(); + } else { + str = iconv.buf.pbegin(); + str_end = iconv.buf.pend(); + } + char * aff = str_end; + char * aff_end = str_end; + if (have_affix) { + aff = strchr(str, '/'); + if (aff == 0) { + aff = str_end; + } else { + *aff = '\0'; + str_end = aff; + ++aff; + } + if (validate_affixes) { + if (clean_affixes) + aff_end = clean_affix(str, aff); + else + RET_ON_ERR(validate_affix(*lang, str, aff)); + } + } + val.aff.str = aff; + val.aff.size = aff_end - aff; + if (!*aff && validate_words && clean_words) { + char * s = str; + while (s < str_end) { + while (s < str_end && !lang->is_alpha(*s) && !lang->special(*s).begin) + *s++ = '\0'; + s += strcspn(s, brk); + *s = '\0'; + char * s2 = s - 1; + while (s2 >= str && *s2 && !lang->is_alpha(*s2) && !lang->special(*s2).end) + *s2-- = '\0'; + } + } + } + while (str < str_end) + { + if (!*str) {++str; continue;} + + PosibErrBase pe2 = validate_words ? check_if_valid(*lang, str) : no_err; + + val.word.str = str; + val.word.size = strlen(str); + str += val.word.size + 1; + + if (!pe2.has_err() && val.word.size + (*val.aff ? val.aff.size + 1 : 0) > 240) + pe2 = make_err(invalid_word, MsgConv(lang)(val.word), + _("The total length is larger than 240 characters.")); + + if (!pe2.has_err()) return true; + if (!skip_invalid_words) return pe2; + if (log) log->printf(_("Warning: %s Skipping word.\n"), pe2.get_err()->mesg); + else pe2.ignore_err(); + } + str = 0; + goto loop; + } +} diff --git a/jni/modules/speller/default/language.hpp b/jni/modules/speller/default/language.hpp new file mode 100644 index 0000000..3cd3d63 --- /dev/null +++ b/jni/modules/speller/default/language.hpp @@ -0,0 +1,476 @@ +// Copyright 2004 by Kevin Atkinson under the terms of the LGPL + +#ifndef ASPELLER_LANGUAGE__HPP +#define ASPELLER_LANGUAGE__HPP + +#include "affix.hpp" +#include "cache.hpp" +#include "config.hpp" +#include "convert.hpp" +#include "phonetic.hpp" +#include "posib_err.hpp" +#include "stack_ptr.hpp" +#include "string.hpp" +#include "objstack.hpp" +#include "string_enumeration.hpp" + +#include "iostream.hpp" + +using namespace acommon; + +namespace acommon { + struct CheckInfo; +} + +namespace aspeller { + + struct SuggestRepl { + const char * substr; + const char * repl; + }; + + class SuggestReplEnumeration + { + const SuggestRepl * i_; + const SuggestRepl * end_; + public: + SuggestReplEnumeration(const SuggestRepl * b, const SuggestRepl * e) + : i_(b), end_(e) {} + bool at_end() const {return i_ == end_;} + const SuggestRepl * next() { + if (i_ == end_) return 0; + return i_++; + } + }; + + // CharInfo + + typedef unsigned int CharInfo; // 6 bits + + static const CharInfo LOWER = (1 << 0); + static const CharInfo UPPER = (1 << 1); + static const CharInfo TITLE = (1 << 2); + static const CharInfo PLAIN = (1 << 3); + static const CharInfo LETTER = (1 << 4); + static const CharInfo CLEAN = (1 << 5); + + static const CharInfo CHAR_INFO_ALL = 0x3F; + + // + + enum StoreAs {Stripped, Lower}; + + class Language : public Cacheable { + public: + typedef const Config CacheConfig; + typedef String CacheKey; + + enum CharType {Unknown, WhiteSpace, Hyphen, Digit, + NonLetter, Modifier, Letter}; + + struct SpecialChar { + bool begin; + bool middle; + bool end; + bool any; + SpecialChar() : begin(false), middle(false), end(false), any(false) {} + SpecialChar(bool b, bool m, bool e) : begin(b), middle(m), end(e), + any(b || m || e) {} + }; + + private: + String dir_; + String name_; + String charset_; + String charmap_; + String data_encoding_; + + ConvObj mesg_conv_; + ConvObj to_utf8_; + ConvObj from_utf8_; + + unsigned char to_uchar(char c) const {return static_cast<unsigned char>(c);} + + SpecialChar special_[256]; + CharInfo char_info_[256]; + char to_lower_[256]; + char to_upper_[256]; + char to_title_[256]; + char to_stripped_[256]; + char to_plain_[256]; + int to_uni_[256]; + CharType char_type_[256]; + char to_clean_[256]; + char de_accent_[256]; + + StoreAs store_as_; + + String soundslike_chars_; + String clean_chars_; + + bool have_soundslike_; + bool have_repl_; + + StackPtr<Soundslike> soundslike_; + StackPtr<AffixMgr> affix_; + StackPtr<Config> lang_config_; + + StringBuffer buf_; + Vector<SuggestRepl> repls_; + + Language(const Language &); + void operator=(const Language &); + + public: // but don't use + + char sl_first_[256]; + char sl_rest_[256]; + + public: + + Language() {} + PosibErr<void> setup(const String & lang, const Config * config); + void set_lang_defaults(Config & config) const; + + const char * data_dir() const {return dir_.c_str();} + const char * name() const {return name_.c_str();} + const char * charmap() const {return charmap_.c_str();} + const char * data_encoding() const {return data_encoding_.c_str();} + + const Convert * mesg_conv() const {return mesg_conv_.ptr;} + const Convert * to_utf8() const {return to_utf8_.ptr;} + const Convert * from_utf8() const {return from_utf8_.ptr;} + + int to_uni(char c) const {return to_uni_[to_uchar(c)];} + + // + // case conversion + // + + char to_upper(char c) const {return to_upper_[to_uchar(c)];} + bool is_upper(char c) const {return to_upper(c) == c;} + + char to_lower(char c) const {return to_lower_[to_uchar(c)];} + bool is_lower(char c) const {return to_lower(c) == c;} + + char to_title(char c) const {return to_title_[to_uchar(c)];} + bool is_title(char c) const {return to_title(c) == c;} + + char * to_lower(char * res, const char * str) const { + while (*str) *res++ = to_lower(*str++); *res = '\0'; return res;} + char * to_upper(char * res, const char * str) const { + while (*str) *res++ = to_upper(*str++); *res = '\0'; return res;} + + void to_lower(String & res, const char * str) const { + res.clear(); while (*str) res += to_lower(*str++);} + void to_upper(String & res, const char * str) const { + res.clear(); while (*str) res += to_upper(*str++);} + + bool is_lower(const char * str) const { + while (*str) {if (!is_lower(*str++)) return false;} return true;} + bool is_upper(const char * str) const { + while (*str) {if (!is_upper(*str++)) return false;} return true;} + + // + // + // + + char to_plain(char c) const {return to_plain_[to_uchar(c)];} + + char de_accent(char c) const {return de_accent_[to_uchar(c)];} + + SpecialChar special(char c) const {return special_[to_uchar(c)];} + + CharType char_type(char c) const {return char_type_[to_uchar(c)];} + bool is_alpha(char c) const {return char_type(c) > NonLetter;} + + CharInfo char_info(char c) const {return char_info_[to_uchar(c)];} + + // + // stripped + // + + char to_stripped(char c) const {return to_stripped_[to_uchar(c)];} + + // return a pointer to the END of the string + char * to_stripped(char * res, const char * str) const { + for (; *str; ++str) { + char c = to_stripped(*str); + if (c) *res++ = c; + } + *res = '\0'; + return res; + } + void to_stripped(String & res, const char * str) const { + res.clear(); + for (; *str; ++str) { + char c = to_stripped(*str); + if (c) res += c; + } + } + + bool is_stripped(char c) const {return to_stripped(c) == c;} + + bool is_stripped(const char * str) const { + while (*str) {if (!is_stripped(*str++)) return false;} return true;} + + // + // Clean + // + // The "clean" form is how words are indixed in the dictionary. + // It will at very least convert the word to lower case. It may + // also strip accents and non-letters. + // + + char to_clean(char c) const {return to_clean_[to_uchar(c)];} + + char * to_clean(char * res, const char * str) const { + for (; *str; ++str) { + char c = to_clean(*str); + if (c) *res++ = c; + } + *res = '\0'; + return res; + } + void to_clean(String & res, const char * str) const { + res.clear(); + for (; *str; ++str) { + char c = to_clean(*str); + if (c) res += c; + } + } + + bool is_clean(char c) const {return to_clean(c) == c;} + + bool is_clean(const char * str) const { + while (*str) {if (!is_clean(*str++)) return false;} return true;} + + bool is_clean_wi(WordInfo wi) const { + return false; + //return wi & CASE_PATTEN == AllLower && + } + + + const char * clean_chars() const {return clean_chars_.c_str();} + + // + // Soundslike + // + + bool have_soundslike() const {return have_soundslike_;} + + const char * soundslike_name() const {return soundslike_->name();} + const char * soundslike_version() const {return soundslike_->version();} + + void to_soundslike(String & res, ParmStr word) const { + res.resize(word.size()); + char * e = soundslike_->to_soundslike(res.data(), word.str(), word.size()); + res.resize(e - res.data()); + } + + // returns a pointer to the END of the string + char * to_soundslike(char * res, const char * str, int len = -1) const { + return soundslike_->to_soundslike(res,str,len); + } + + char * to_soundslike(char * res, const char * str, int len, WordInfo wi) const { + if (!have_soundslike_ && (wi & ALL_CLEAN)) return 0; + else return soundslike_->to_soundslike(res,str,len); + } + + const char * soundslike_chars() const {return soundslike_chars_.c_str();} + + // + // Affix compression methods + // + + const AffixMgr * affix() const {return affix_;} + + bool have_affix() const {return affix_;} + + void munch(ParmStr word, GuessInfo * cl, bool cross = true) const { + if (affix_) + affix_->munch(word, cl, cross); + } + + WordAff * expand(ParmStr word, ParmStr aff, + ObjStack & buf, int limit = INT_MAX) const { + if (affix_) + return affix_->expand(word, aff, buf, limit); + else + return fake_expand(word, aff, buf); + } + WordAff * fake_expand(ParmStr word, ParmStr aff, ObjStack & buf) const; + + // + // Repl + // + + bool have_repl() const {return have_repl_;} + + SuggestReplEnumeration * repl() const { + return new SuggestReplEnumeration(repls_.pbegin(), repls_.pend());} + + // + // + // + + WordInfo get_word_info(ParmStr str) const; + + // + // fix_case + // + + CasePattern case_pattern(ParmStr str) const; + + CasePattern case_pattern(const char * str, unsigned size) const; + + void fix_case(CasePattern case_pattern, char * str) + { + if (!str[0]) return; + if (case_pattern == AllUpper) to_upper(str,str); + else if (case_pattern == FirstUpper) *str = to_title(*str); + } + void fix_case(CasePattern case_pattern, + char * res, const char * str) const; + const char * fix_case(CasePattern case_pattern, + const char * str, String & buf) const; + + // + // for cache + // + + static inline PosibErr<Language *> get_new(const String & lang, const Config * config) { + StackPtr<Language> l(new Language()); + RET_ON_ERR(l->setup(lang, config)); + return l.release(); + } + + bool cache_key_eq(const String & l) const {return name_ == l;} + }; + + typedef Language LangImpl; + + struct MsgConv : public ConvP + { + MsgConv(const Language * l) : ConvP(l->mesg_conv()) {} + MsgConv(const Language & l) : ConvP(l.mesg_conv()) {} + }; + + struct InsensitiveCompare { + // compares to strings without regards to casing or special characters + const Language * lang; + InsensitiveCompare(const Language * l = 0) : lang(l) {} + operator bool () const {return lang;} + int operator() (const char * a, const char * b) const + { + char x, y; + for (;;) + { + while (x = lang->to_clean(*a++), !x); + while (y = lang->to_clean(*b++), !y); + if (x == 0x10 || y == 0x10 || x != y) break; + } + return static_cast<unsigned char>(x) - static_cast<unsigned char>(y); + } + }; + + struct InsensitiveEqual { + InsensitiveCompare cmp; + InsensitiveEqual(const Language * l = 0) : cmp(l) {} + bool operator() (const char * a, const char * b) const + { + return cmp(a,b) == 0; + } + }; + + struct InsensitiveHash { + // hashes a string without regards to casing or special begin + // or end characters + const Language * lang; + InsensitiveHash() {} + InsensitiveHash(const Language * l) + : lang(l) {} + size_t operator() (const char * s) const + { + size_t h = 0; + for (;;) { + if (*s == 0) break; + unsigned char c = lang->to_clean(*s++); + if (c) h=5*h + c; + } + return h; + } + }; + + struct SensitiveCompare { + const Language * lang; + bool case_insensitive; + bool ignore_accents; + bool begin; + bool end; + SensitiveCompare(const Language * l = 0) + : lang(l), case_insensitive(false), ignore_accents(false), + begin(true), end(true) {} + bool operator() (const char * word, const char * inlist) const; + }; + + struct CleanAffix { + const Language * lang; + OStream * log; + MsgConv msgconv1; + MsgConv msgconv2; + CleanAffix(const Language * lang0, OStream * log0); + char * operator() (ParmStr word, char * aff); + }; + + class WordListIterator + { + public: + struct Value { + SimpleString word; + SimpleString aff; + }; + WordListIterator(StringEnumeration * in, + const Language * lang, + OStream * log); + // init may set "norm-strict" to true which is why it is not const + PosibErr<void> init (Config & config); + const Value * operator-> () const {return &val;} + PosibErr<bool> adv(); + private: + bool have_affix; + bool validate_words; + bool validate_affixes; + bool clean_words; + bool skip_invalid_words; + bool clean_affixes; + StringEnumeration * in; + const Language * lang; + ConvEC iconv; + OStream * log; + Value val; + String data; + const char * orig; + char * str; + char * str_end; + char brk[3]; + CleanAffix clean_affix; + }; + + String get_stripped_chars(const Language & l); + + String get_clean_chars(const Language & l); + + PosibErr<void> check_if_valid(const Language & l, ParmStr word); + PosibErr<void> validate_affix(const Language & l, ParmStr word, ParmStr aff); + + bool find_language(Config & c); + + PosibErr<Language *> new_language(const Config &, ParmStr lang = 0); + + PosibErr<void> open_affix_file(const Config &, FStream & o); +} + + +#endif diff --git a/jni/modules/speller/default/language.lo b/jni/modules/speller/default/language.lo new file mode 100644 index 0000000..509f780 --- /dev/null +++ b/jni/modules/speller/default/language.lo @@ -0,0 +1,12 @@ +# modules/speller/default/language.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/language.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/leditdist.cpp b/jni/modules/speller/default/leditdist.cpp new file mode 100644 index 0000000..9d89cfa --- /dev/null +++ b/jni/modules/speller/default/leditdist.cpp @@ -0,0 +1,308 @@ + +#include "leditdist.hpp" + +// The basic algorithm is as follows: +// +// Let A[n] represent the nth character of string n +// A[n..] represent the substring of A starting at n +// if n > length of A then it is considered an empty string +// +// edit_distance(A,B,limit) = ed(A,B,0) +// where ed(A,B,d) = d if A & B is empty. +// = infinity if d > limit +// = ed(A[2..],B[2..], d) if A[1] == B[1] +// = min ( ed(A[2..],B[2..], d+1), +// ed(A, B[2..], d+1), +// ed(A[2..],B, d+1) ) otherwise +// +// However, the code below: +// 1) Also allows for swaps +// 2) Allow weights to be attached to each edit +// 3) Is not recursive, it uses a loop when it is tail recursion +// and a small stack otherwise. The stack will NEVER be larger +// then 2 * limit. +// 4) Is extremely optimized + + +#define check_rest(a,b,s) \ + a0 = a; b0 = b; \ + while (*a0 == *b0) { \ + if (*a0 == '\0') { \ + if (s < min) min = s; \ + break; \ + } \ + ++a0; ++b0; \ + } + +namespace aspeller { + + int limit_edit_distance(const char * a, const char * b, + int limit, const EditDistanceWeights & w) + { + limit = limit*w.max; + static const int size = 10; + struct Edit { + const char * a; + const char * b; + int score; + }; + Edit begin[size]; + Edit * i = begin; + const char * a0; + const char * b0; + int score = 0; + int min = LARGE_NUM; + + while (true) { + + while (*a == *b) { + if (*a == '\0') { + if (score < min) min = score; + goto FINISH; + } + ++a; ++b; + } + + if (*a == '\0') { + + do { + score += w.del2; + if (score >= min) goto FINISH; + ++b; + } while (*b != '\0'); + min = score; + + } else if (*b == '\0') { + + do { + score += w.del1; + if (score >= min) goto FINISH; + ++a; + } while (*a != '\0'); + min = score; + + } else { + + if (score + w.max <= limit) { + if (limit*w.min <= w.max*(w.min+score)) { + // if floor(score/max)=limit/max-1 then this edit is only good + // if it makes the rest of the string match. So check if + // the rest of the string matches to avoid the overhead of + // pushing it on then off the stack + + // delete a character from a + check_rest(a+1,b,score + w.del1); + + // delete a character from b + check_rest(a,b+1,score + w.del2); + + if (*a == *(b+1) && *b == *(a+1)) { + + // swap two characters + check_rest(a+2,b+2, score + w.swap); + + } else { + + // substitute one character for another which is the same + // thing as deleting a character from both a & b + check_rest(a+1,b+1, score + w.sub); + + } + + } else { + + // delete a character from a + i->a = a + 1; + i->b = b; + i->score = score + w.del1; + ++i; + + // delete a character from b + i->a = a; + i->b = b + 1; + i->score = score + w.del2; + ++i; + + // If two characters can be swapped and make a match + // then the substitution is pointless. + // Also, there is no need to push this on the stack as + // it is going to be imminently removed. + if (*a == *(b+1) && *b == *(a+1)) { + + // swap two characters + a = a + 2; + b = b + 2; + score += w.swap; + continue; + + } else { + + // substitute one character for another which is the same + // thing as deleting a character from both a & b + a = a + 1; + b = b + 1; + score += w.sub; + continue; + + } + } + } + } + FINISH: + if (i == begin) return min; + --i; + a = i->a; + b = i->b; + score = i->score; + } + } + +#undef check_rest +#define check_rest(a,b,w) \ + a0 = a; b0 = b; \ + while(*a0 == *b0) { \ + if (*a0 == '\0') { \ + if (w < min) min = w; \ + break; \ + } \ + ++a0; \ + ++b0; \ + } \ + if (amax < a0) amax = a0; + +#define check2(a,b,w) \ + aa = a; bb = b; \ + while(*aa == *bb) { \ + if (*aa == '\0') { \ + if (amax < aa) amax = aa; \ + if (w < min) min = w; \ + break; \ + } \ + ++aa; ++bb; \ + } \ + if (*aa == '\0') { \ + if (amax < aa) amax = aa; \ + if (*bb == '\0') {} \ + else if (*(bb+1) == '\0' && w+ws.del2 < min) min = w+ws.del2; \ + } else if (*bb == '\0') { \ + ++aa; \ + if (amax < aa) amax = aa; \ + if (*aa == '\0' && w+ws.del1 < min) min = w+ws.del1; \ + } else { \ + check_rest(aa+1,bb,w+ws.del1); \ + check_rest(aa,bb+1,w+ws.del2); \ + if (*aa == *(bb+1) && *bb == *(aa+1)) { \ + check_rest(aa+2,bb+2,w+ws.swap); \ + } else { \ + check_rest(aa+1,bb+1,w+ws.sub); \ + } \ + } + + EditDist limit1_edit_distance(const char * a, const char * b, + const EditDistanceWeights & ws) + { + int min = LARGE_NUM; + const char * a0; + const char * b0; + const char * amax = a; + + while(*a == *b) { + if (*a == '\0') + return EditDist(0, a); + ++a; ++b; + } + + if (*a == '\0') { + + ++b; + if (*b == '\0') return EditDist(ws.del2, a); + return EditDist(LARGE_NUM, a); + + } else if (*b == '\0') { + + ++a; + if (*a == '\0') return EditDist(ws.del1, a); + return EditDist(LARGE_NUM, a); + + } else { + + // delete a character from a + check_rest(a+1,b,ws.del1); + + // delete a character from b + check_rest(a,b+1,ws.del2); + + if (*a == *(b+1) && *b == *(a+1)) { + + // swap two characters + check_rest(a+2,b+2,ws.swap); + + } else { + + // substitute one character for another which is the same + // thing as deleting a character from both a & b + check_rest(a+1,b+1,ws.sub); + + } + } + return EditDist(min, amax); + } + + EditDist limit2_edit_distance(const char * a, const char * b, + const EditDistanceWeights & ws) + { + int min = LARGE_NUM; + const char * a0; + const char * b0; + const char * aa; + const char * bb; + const char * amax = a; + + while(*a == *b) { + if (*a == '\0') + return EditDist(0, a); + ++a; ++b; + } + + if (*a == '\0') { + + ++b; + if (*b == '\0') return EditDist(ws.del2, a); + ++b; + if (*b == '\0') return EditDist(2*ws.del2, a); + return EditDist(LARGE_NUM, a); + + } else if (*b == '\0') { + + ++a; + if (*a == '\0') return EditDist(ws.del1, a); + ++a; + if (*a == '\0') return EditDist(2*ws.del1, a); + return EditDist(LARGE_NUM, a); + + } else { + + // delete a character from a + check2(a+1,b,ws.del1); + + // delete a character from b + check2(a,b+1,ws.del2); + + if (*a == *(b+1) && *b == *(a+1)) { + + // swap two characters + check2(a+2,b+2,ws.swap); + + } else { + + // substitute one character for another which is the same + // thing as deleting a character from both a & b + check2(a+1,b+1,ws.sub); + + } + } + return EditDist(min, amax); + } +} + + diff --git a/jni/modules/speller/default/leditdist.hpp b/jni/modules/speller/default/leditdist.hpp new file mode 100644 index 0000000..ba5230b --- /dev/null +++ b/jni/modules/speller/default/leditdist.hpp @@ -0,0 +1,68 @@ + +#ifndef __aspeller_leditdist_hh__ +#define __aspeller_leditdist_hh__ + +#include "weights.hpp" + +namespace aspeller { + + // limit_edit_distance finds the shortest edit distance but will + // stop and return a number at least as large as LARGE_NUM if it has + // to do more edits than a set limit. + // Note that this does NOT mean that the score returned is <= limit*w.max + // as "sub" vs "submarine" will return 6*(cost of insertion) no matter what + // the limit is. + // The edit distance is + // (cost of swap)(# of swaps) + (cost of deletion)(# of deletions) + // + (cost of insertion)(# of insertions) + // + (cost of substitutions)(# of substitutions) + + // Preconditions: + // max(strlen(a), strlen(b))*max(of the edit weights) <= 2^15 + // if violated than an incorrect result may be returned (which may be negative) + // due to overflow of a short integer + // (limit+1)*w.min < limit*w.max + // limit <= 5 (use edit_distance if limit > 5) + // where w.min and w.max is the minimum and maximum cost of an edit + // respectfully. + + // The running time is asymptotically bounded above by + // (3^l)*n where l is the limit and n is the maxium of strlen(a),strlen(b) + // Based on my informal tests, however, the n does not really matter + // and the running time is more like (3^l). + + // limit_edit_distance, based on my informal tests, turns out to be + // faster than edit_dist for l < 5. For l == 5 it is about the + // smaller for short strings (<= 5) and less than for longer strings + + // limit2_edit_distance(a,b,w) = limit_edit_distance(a,b,2,w) + // but is roughly 2/3's faster + + struct EditDist { + int score; + const char * stopped_at; + EditDist() {} + EditDist(int s, const char * p) + : score(s), stopped_at(p) {} + operator int () const {return score;} + }; + + static const int LARGE_NUM = 0xFFFFF; + // this needs to be SMALLER than INT_MAX since it may be incremented + // a few times + + int limit_edit_distance(const char * a, const char * b, int limit, + const EditDistanceWeights & w + = EditDistanceWeights()); + + EditDist limit1_edit_distance(const char * a, const char * b, + const EditDistanceWeights & w + = EditDistanceWeights()); + + EditDist limit2_edit_distance(const char * a, const char * b, + const EditDistanceWeights & w + = EditDistanceWeights()); + +} + +#endif diff --git a/jni/modules/speller/default/leditdist.lo b/jni/modules/speller/default/leditdist.lo new file mode 100644 index 0000000..7288e66 --- /dev/null +++ b/jni/modules/speller/default/leditdist.lo @@ -0,0 +1,12 @@ +# modules/speller/default/leditdist.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/leditdist.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/matrix.hpp b/jni/modules/speller/default/matrix.hpp new file mode 100644 index 0000000..9f46f29 --- /dev/null +++ b/jni/modules/speller/default/matrix.hpp @@ -0,0 +1,22 @@ +#ifndef __aspeller_matrix_hh__ +#define __aspeller_matrix_hh__ + +#include <vector> + +namespace aspeller { + + class ShortMatrix { + int x_size; + int y_size; + short * data; + public: + void init(int sx, int sy, short * d) {x_size = sx; y_size = sy; data = d;} + ShortMatrix() {} + ShortMatrix(int sx, int sy, short * d) {init(sx,sy,d);} + short operator() (int x, int y) const {return data[x + y*x_size];} + short & operator() (int x, int y) {return data[x + y*x_size];} + }; + +} + +#endif diff --git a/jni/modules/speller/default/multi_ws.cpp b/jni/modules/speller/default/multi_ws.cpp new file mode 100644 index 0000000..5c4935d --- /dev/null +++ b/jni/modules/speller/default/multi_ws.cpp @@ -0,0 +1,88 @@ + +#include "config.hpp" +#include "data.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "string.hpp" +#include "parm_string.hpp" +#include "errors.hpp" +#include "vector.hpp" + +#include "gettext.h" + +namespace { + + using namespace acommon; + using namespace aspeller; + + typedef Vector<Dict *> Wss; + + class MultiDictImpl : public Dictionary + { + public: + MultiDictImpl() : Dictionary(multi_dict, "MultiDictImpl") {} + PosibErr<void> load(ParmString, Config &, DictList *, SpellerImpl *); + DictsEnumeration * dictionaries() const; + private: + Wss wss; + }; + + PosibErr<void> MultiDictImpl::load(ParmString fn, + Config & config, + DictList * new_dicts, + SpellerImpl * speller) + { + String dir = figure_out_dir("",fn); + FStream in; + RET_ON_ERR(in.open(fn, "r")); + set_file_name(fn); + String buf; DataPair d; + while(getdata_pair(in, d, buf)) + { + if (d.key == "add") { + + RET_ON_ERR_SET(add_data_set(d.value, config, new_dicts, speller, dir), Dict *, res); + RET_ON_ERR(set_check_lang(res->lang()->name(), config)); + wss.push_back(res); + + } else { + + return make_err(unknown_key, d.key).with_file(fn, d.line_num); + + } + } + + if (wss.empty()) { + return make_err(bad_file_format, fn, + _("There must be at least one \"add\" line.")); + } + + return no_err; + } + + struct Parms + { + typedef Dict * Value; + typedef Wss::const_iterator Iterator; + Iterator end; + Parms(Iterator e) : end(e) {} + bool endf(Iterator i) const {return i == end;} + Value end_state() const {return 0;} + Value deref(Iterator i) const {return *i;} + }; + + DictsEnumeration * MultiDictImpl::dictionaries() const + { + return new MakeEnumeration<Parms>(wss.begin(), wss.end()); + } +} + +namespace aspeller { + + MultiDict * new_default_multi_dict() + { + return new MultiDictImpl(); + } + +} diff --git a/jni/modules/speller/default/multi_ws.lo b/jni/modules/speller/default/multi_ws.lo new file mode 100644 index 0000000..289ffa0 --- /dev/null +++ b/jni/modules/speller/default/multi_ws.lo @@ -0,0 +1,12 @@ +# modules/speller/default/multi_ws.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multi_ws.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/phonet.cpp b/jni/modules/speller/default/phonet.cpp new file mode 100644 index 0000000..281aed4 --- /dev/null +++ b/jni/modules/speller/default/phonet.cpp @@ -0,0 +1,472 @@ +/* phonetic.c - generic replacement aglogithms for phonetic transformation + Copyright (C) 2000 Bjrn Jacke + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation; + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Bjrn Jacke may be reached by email at bjoern.jacke@gmx.de + + Changelog: + + 2000-01-05 Bjrn Jacke <bjoern.jacke@gmx.de> + Initial Release insprired by the article about phonetic + transformations out of c't 25/1999 + +*/ + +#include <string.h> +#include <assert.h> + +#include <vector> + +#include "asc_ctype.hpp" +#include "string.hpp" +#include "phonet.hpp" +#include "errors.hpp" +#include "fstream.hpp" +#include "getdata.hpp" +#include "language.hpp" +#include "objstack.hpp" +#include "vararray.hpp" + +using namespace acommon; + +namespace aspeller { + + const char * const PhonetParms::rules_end = ""; + + static bool to_bool(const String & str) { + if (str == "1" || str == "true") return true; + else return false; + } +#if 0 + void dump_phonet_rules(ostream & out, const PhonetParms & parms) { + out << "version " << parms.version << "\n"; + out << "followup " << parms.followup << "\n"; + out << "collapse_result " << parms.collapse_result << "\n"; + out << "\n"; + ios::fmtflags flags = out.setf(ios::left); + for (int i = 0; parms.rules[i] != PhonetParms::rules_end; i += 2) { + out << setw(20) << parms.rules[i] << " " + << (parms.rules[i+1][0] == '\0' ? "_" : parms.rules[i+1]) + << "\n"; + } + out.flags(flags); + } +#endif + + struct PhonetParmsImpl : public PhonetParms { + void * data; + ObjStack strings; + PhonetParmsImpl() : data(0) {} + ~PhonetParmsImpl() {if (data) free(data);} + }; + + static void init_phonet_hash(PhonetParms & parms); + + // like strcpy but safe if the strings overlap + // but only if dest < src + static inline void strmove(char * dest, char * src) { + while (*src) + *dest++ = *src++; + *dest = '\0'; + } + + PosibErr<PhonetParms *> new_phonet(const String & file, + Conv & iconv, + const Language * lang) + { + String buf; DataPair dp; + + FStream in; + RET_ON_ERR(in.open(file, "r")); + + PhonetParmsImpl * parms = new PhonetParmsImpl(); + + parms->lang = lang; + + parms->followup = true; + parms->collapse_result = false; + parms->remove_accents = true; + + int num = 0; + while (getdata_pair(in, dp, buf)) { + if (dp.key != "followup" && dp.key != "collapse_result" && + dp.key != "version") + ++num; + } + + in.restart(); + + size_t vsize = sizeof(char *) * (2 * num + 2); + parms->data = malloc(vsize); + + const char * * r = (const char * *)parms->data; + + char * empty_str = parms->strings.dup(""); + + while (true) { + if (!getdata_pair(in, dp, buf)) break; + if (dp.key == "followup") { + parms->followup = to_bool(dp.value); + } else if (dp.key == "collapse_result") { + parms->collapse_result = to_bool(dp.value); + } else if (dp.key == "version") { + parms->version = dp.value; + } else if (dp.key == "remove_accents") { + parms->remove_accents = to_bool(dp.value); + } else { + *r = parms->strings.dup(iconv(dp.key)); + ++r; + if (dp.value == "_") { + *r = empty_str; + } else { + *r = parms->strings.dup(iconv(dp.value)); + } + ++r; + } + } + if (parms->version.empty()) { + delete parms; + return make_err(bad_file_format, file, "You must specify a version string"); + } + *(r ) = PhonetParms::rules_end; + *(r+1) = PhonetParms::rules_end; + parms->rules = (const char * *)parms->data; + + + for (unsigned i = 0; i != 256; ++i) { + parms->to_clean[i] = (lang->char_type(i) > Language::NonLetter + ? (parms->remove_accents + ? lang->to_upper(lang->de_accent(i)) + : lang->to_upper(i)) + : 0); + } + + init_phonet_hash(*parms); + + return parms; + } + + static void init_phonet_hash(PhonetParms & parms) + { + int i, k; + + for (i = 0; i < parms.hash_size; i++) { + parms.hash[i] = -1; + } + + for (i = 0; parms.rules[i] != PhonetParms::rules_end; i += 2) { + /** set hash value **/ + k = (unsigned char) parms.rules[i][0]; + + if (parms.hash[k] < 0) { + parms.hash[k] = i; + } + } + } + + +#ifdef PHONET_TRACE + void trace_info(char * text, int n, char * error, + const PhonetParms & parms) + { + /** dump tracing info **/ + + printf ("%s %d: \"%s\" > \"%s\" %s", text, ((n/2)+1), parms.rules[n], + parms.rules[n+1], error); + } +#endif + + int phonet (const char * inword, char * target, + int len, + const PhonetParms & parms) + { + /** Do phonetic transformation. **/ + /** "len" = length of "inword" incl. '\0'. **/ + + /** result: >= 0: length of "target" **/ + /** otherwise: error **/ + + int i,j,k=0,n,p,z; + int k0,n0,p0=-333,z0; + if (len == -1) len = strlen(inword); + VARARRAY(char, word, len + 1); + char c, c0; + const char * s; + + typedef unsigned char uchar; + + /** to convert string to uppercase and possible remove accents **/ + char * res = word; + for (const char * str = inword; *str; ++str) { + char c = parms.to_clean[(uchar)*str]; + if (c) *res++ = c; + } + *res = '\0'; + + /** check word **/ + i = j = z = 0; + while ((c = word[i]) != '\0') { + #ifdef PHONET_TRACE + cout << "\nChecking position " << j << ": word = \"" + << word+i << "\","; + printf (" target = \"%.*s\"", j, target); + #endif + n = parms.hash[(uchar) c]; + z0 = 0; + + if (n >= 0) { + /** check all rules for the same letter **/ + while (parms.rules[n][0] == c) { + #ifdef PHONET_TRACE + trace_info ("\n> Checking rule No.",n,"",parms); + #endif + + /** check whole string **/ + k = 1; /** number of found letters **/ + p = 5; /** default priority **/ + s = parms.rules[n]; + s++; /** important for (see below) "*(s-1)" **/ + + while (*s != '\0' && word[i+k] == *s + && !asc_isdigit (*s) && strchr ("(-<^$", *s) == NULL) { + k++; + s++; + } + if (*s == '(') { + /** check letters in "(..)" **/ + if (parms.lang->is_alpha(word[i+k]) // ...could be implied? + && strchr(s+1, word[i+k]) != NULL) { + k++; + while (*s != ')') + s++; + s++; + } + } + p0 = (int) *s; + k0 = k; + while (*s == '-' && k > 1) { + k--; + s++; + } + if (*s == '<') + s++; + if (asc_isdigit (*s)) { + /** determine priority **/ + p = *s - '0'; + s++; + } + if (*s == '^' && *(s+1) == '^') + s++; + + if (*s == '\0' + || (*s == '^' + && (i == 0 || ! parms.lang->is_alpha(word[i-1])) + && (*(s+1) != '$' + || (! parms.lang->is_alpha(word[i+k0]) ))) + || (*s == '$' && i > 0 + && parms.lang->is_alpha(word[i-1]) + && (! parms.lang->is_alpha(word[i+k0]) ))) + { + /** search for followup rules, if: **/ + /** parms.followup and k > 1 and NO '-' in searchstring **/ + c0 = word[i+k-1]; + n0 = parms.hash[(uchar) c0]; +// + if (parms.followup && k > 1 && n0 >= 0 + && p0 != (int) '-' && word[i+k] != '\0') { + /** test follow-up rule for "word[i+k]" **/ + while (parms.rules[n0][0] == c0) { + #ifdef PHONET_TRACE + trace_info ("\n> > follow-up rule No.",n0,"... ",parms); + #endif + + /** check whole string **/ + k0 = k; + p0 = 5; + s = parms.rules[n0]; + s++; + while (*s != '\0' && word[i+k0] == *s + && ! asc_isdigit(*s) && strchr("(-<^$",*s) == NULL) { + k0++; + s++; + } + if (*s == '(') { + /** check letters **/ + if (parms.lang->is_alpha(word[i+k0]) + && strchr (s+1, word[i+k0]) != NULL) { + k0++; + while (*s != ')' && *s != '\0') + s++; + if (*s == ')') + s++; + } + } + while (*s == '-') { + /** "k0" gets NOT reduced **/ + /** because "if (k0 == k)" **/ + s++; + } + if (*s == '<') + s++; + if (asc_isdigit (*s)) { + p0 = *s - '0'; + s++; + } + + if (*s == '\0' + /** *s == '^' cuts **/ + || (*s == '$' && ! parms.lang->is_alpha(word[i+k0]))) + { + if (k0 == k) { + /** this is just a piece of the string **/ + #ifdef PHONET_TRACE + cout << "discarded (too short)"; + #endif + n0 += 2; + continue; + } + + if (p0 < p) { + /** priority too low **/ + #ifdef PHONET_TRACE + cout << "discarded (priority)"; + #endif + n0 += 2; + continue; + } + /** rule fits; stop search **/ + break; + } + #ifdef PHONET_TRACE + cout << "discarded"; + #endif + n0 += 2; + } /** End of "while (parms.rules[n0][0] == c0)" **/ + + if (p0 >= p && parms.rules[n0][0] == c0) { + #ifdef PHONET_TRACE + trace_info ("\n> Rule No.", n,"",parms); + trace_info ("\n> not used because of follow-up", + n0,"",parms); + #endif + n += 2; + continue; + } + } /** end of follow-up stuff **/ + + /** replace string **/ + #ifdef PHONET_TRACE + trace_info ("\nUsing rule No.", n,"\n",parms); + #endif + s = parms.rules[n+1]; + p0 = (parms.rules[n][0] != '\0' + && strchr (parms.rules[n]+1,'<') != NULL) ? 1:0; + if (p0 == 1 && z == 0) { + /** rule with '<' is used **/ + if (j > 0 && *s != '\0' + && (target[j-1] == c || target[j-1] == *s)) { + j--; + } + z0 = 1; + z = 1; + k0 = 0; + while (*s != '\0' && word[i+k0] != '\0') { + word[i+k0] = *s; + k0++; + s++; + } + if (k > k0) + strmove (&word[0]+i+k0, &word[0]+i+k); + + /** new "actual letter" **/ + c = word[i]; + } + else { /** no '<' rule used **/ + i += k - 1; + z = 0; + while (*s != '\0' + && *(s+1) != '\0' && j < len) { + if (j == 0 || target[j-1] != *s) { + target[j] = *s; + j++; + } + s++; + } + /** new "actual letter" **/ + c = *s; + if (parms.rules[n][0] != '\0' + && strstr (parms.rules[n]+1, "^^") != NULL) { + if (c != '\0') { + target[j] = c; + j++; + } + strmove (&word[0], &word[0]+i+1); + i = 0; + z0 = 1; + } + } + break; + } /** end of follow-up stuff **/ + n += 2; + } /** end of while (parms.rules[n][0] == c) **/ + } /** end of if (n >= 0) **/ + if (z0 == 0) { + if (k && (assert(p0!=-333),!p0) && j < len && c != '\0' + && (!parms.collapse_result || j == 0 || target[j-1] != c)){ + /** condense only double letters **/ + target[j] = c; + ///printf("\n setting \n"); + j++; + } + #ifdef PHONET_TRACE + else if (p0 || !k) + cout << "\nNo rule found; character \"" << word[i] << "\" skipped\n"; + #endif + + i++; + z = 0; + k=0; + } + } /** end of while ((c = word[i]) != '\0') **/ + + target[j] = '\0'; + return (j); + + } /** end of function "phonet" **/ +} + +#if 0 + +int main (int argc, char *argv[]) { + using namespace autil; + + if (argc < 3) { + printf ("Usage: phonet <data file> <word>\n"); + return(1); + } + + char phone_word[strlen(argv[2])+1]; /** max possible length of words **/ + + PhonetParms * parms; + ifstream f(argv[1]); + parms = load_phonet_rules(f); + + init_phonet_charinfo(*parms); + init_phonet_hash(*parms); + phonet (argv[2],phone_word,*parms); + printf ("%s\n", phone_word); + return(0); +} +#endif diff --git a/jni/modules/speller/default/phonet.hpp b/jni/modules/speller/default/phonet.hpp new file mode 100644 index 0000000..8c24b75 --- /dev/null +++ b/jni/modules/speller/default/phonet.hpp @@ -0,0 +1,70 @@ +/* phonetic.c - generic replacement aglogithms for phonetic transformation + Copyright (C) 2000 Bjrn Jacke + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation; + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Bjrn Jacke may be reached by email at bjoern.jacke@gmx.de +*/ + +#ifndef ASPELLER_PHONET__HPP +#define ASPELLER_PHONET__HPP + +#include "string.hpp" +#include "posib_err.hpp" + +using namespace acommon; + +namespace acommon {struct Conv;} + +namespace aspeller { + + class Language; + + struct PhonetParms { + String version; + + bool followup; + bool collapse_result; + + bool remove_accents; + + static const char * const rules_end; + const char * * rules; + + const Language * lang; + + char to_clean[256]; + + static const int hash_size = 256; + int hash[hash_size]; + + virtual ~PhonetParms() {} + }; + + int phonet (const char * inword, char * target, + int len, + const PhonetParms & parms); + +#if 0 + void dump_phonet_rules(std::ostream & out, const PhonetParms & parms); + // the istream must be seekable +#endif + + PosibErr<PhonetParms *> new_phonet(const String & file, + Conv & iconv, + const Language * lang); + +} + +#endif diff --git a/jni/modules/speller/default/phonet.lo b/jni/modules/speller/default/phonet.lo new file mode 100644 index 0000000..0cdf1b4 --- /dev/null +++ b/jni/modules/speller/default/phonet.lo @@ -0,0 +1,12 @@ +# modules/speller/default/phonet.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/phonet.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/phonetic.cpp b/jni/modules/speller/default/phonetic.cpp new file mode 100644 index 0000000..410b58c --- /dev/null +++ b/jni/modules/speller/default/phonetic.cpp @@ -0,0 +1,208 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#include "language.hpp" +#include "phonetic.hpp" +#include "phonet.hpp" + +#include "file_util.hpp" +#include "file_data_util.hpp" +#include "clone_ptr-t.hpp" + +namespace aspeller { + + class SimpileSoundslike : public Soundslike { + private: + const Language * lang; + char first[256]; + char rest[256]; + public: + SimpileSoundslike(const Language * l) : lang(l) {} + + PosibErr<void> setup(Conv &) { + memcpy(first, lang->sl_first_, 256); + memcpy(rest, lang->sl_rest_, 256); + return no_err; + } + + String soundslike_chars() const { + bool chars_set[256] = {0}; + for (int i = 0; i != 256; ++i) + { + char c = first[i]; + if (c) chars_set[static_cast<unsigned char>(c)] = true; + c = rest[i]; + if (c) chars_set[static_cast<unsigned char>(c)] = true; + } + String chars_list; + for (int i = 0; i != 256; ++i) + { + if (chars_set[i]) + chars_list += static_cast<char>(i); + } + return chars_list; + } + + char * to_soundslike(char * res, const char * str, int size) const + { + char prev, cur = '\0'; + + const char * i = str; + while (*i) { + cur = first[static_cast<unsigned char>(*i++)]; + if (cur) {*res++ = cur; break;} + } + prev = cur; + + while (*i) { + cur = rest[static_cast<unsigned char>(*i++)]; + if (cur && cur != prev) *res++ = cur; + prev = cur; + } + *res = '\0'; + return res; + } + + const char * name () const { + return "simple"; + } + const char * version() const { + return "2.0"; + } + }; + + class NoSoundslike : public Soundslike { + private: + const Language * lang; + public: + NoSoundslike(const Language * l) : lang(l) {} + + PosibErr<void> setup(Conv &) {return no_err;} + + String soundslike_chars() const { + return get_clean_chars(*lang); + } + + char * to_soundslike(char * res, const char * str, int size) const + { + return lang->LangImpl::to_clean(res, str); + } + + const char * name() const { + return "none"; + } + const char * version() const { + return "1.0"; + } + }; + + class StrippedSoundslike : public Soundslike { + private: + const Language * lang; + public: + StrippedSoundslike(const Language * l) : lang(l) {} + + PosibErr<void> setup(Conv &) {return no_err;} + + String soundslike_chars() const { + return get_stripped_chars(*lang); + } + + char * to_soundslike(char * res, const char * str, int size) const + { + return lang->LangImpl::to_stripped(res, str); + } + + const char * name() const { + return "stripped"; + } + const char * version() const { + return "1.0"; + } + }; + + class PhonetSoundslike : public Soundslike { + + const Language * lang; + StackPtr<PhonetParms> phonet_parms; + + public: + + PhonetSoundslike(const Language * l) : lang(l) {} + + PosibErr<void> setup(Conv & iconv) { + String file; + file += lang->data_dir(); + file += '/'; + file += lang->name(); + file += "_phonet.dat"; + PosibErr<PhonetParms *> pe = new_phonet(file, iconv, lang); + if (pe.has_err()) return pe; + phonet_parms.reset(pe); + return no_err; + } + + + String soundslike_chars() const + { + bool chars_set[256] = {0}; + String chars_list; + for (const char * * i = phonet_parms->rules + 1; + *(i-1) != PhonetParms::rules_end; + i += 2) + { + for (const char * j = *i; *j; ++j) + { + chars_set[static_cast<unsigned char>(*j)] = true; + } + } + for (int i = 0; i != 256; ++i) + { + if (chars_set[i]) + chars_list += static_cast<char>(i); + } + return chars_list; + } + + char * to_soundslike(char * res, const char * str, int size) const + { + int new_size = phonet(str, res, size, *phonet_parms); + return res + new_size; + } + + const char * name() const + { + return "phonet"; + } + const char * version() const + { + return phonet_parms->version.c_str(); + } + }; + + + PosibErr<Soundslike *> new_soundslike(ParmString name, + Conv & iconv, + const Language * lang) + { + Soundslike * sl; + if (name == "simple" || name == "generic") { + sl = new SimpileSoundslike(lang); + } else if (name == "stripped") { + sl = new StrippedSoundslike(lang); + } else if (name == "none") { + sl = new NoSoundslike(lang); + } else if (name == lang->name()) { + sl = new PhonetSoundslike(lang); + } else { + abort(); // FIXME + } + PosibErrBase pe = sl->setup(iconv); + if (pe.has_err()) { + delete sl; + return pe; + } else { + return sl; + } + } +} + diff --git a/jni/modules/speller/default/phonetic.hpp b/jni/modules/speller/default/phonetic.hpp new file mode 100644 index 0000000..9c5fe0a --- /dev/null +++ b/jni/modules/speller/default/phonetic.hpp @@ -0,0 +1,32 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#ifndef __aspeller_phonetic__ +#define __aspeller_phonetic__ + +#include "string.hpp" + +using namespace acommon; + +namespace acommon {struct Conv;} + +namespace aspeller { + + class Language; + + class Soundslike { + public: + virtual String soundslike_chars() const = 0; + // string must be null terminated even if len is given + virtual char * to_soundslike(char *, const char *, int len = -1) const = 0; + virtual const char * name() const = 0; + virtual const char * version() const = 0; + virtual PosibErr<void> setup(Conv &) = 0; + virtual ~Soundslike() {} + }; + + PosibErr<Soundslike *> new_soundslike(ParmString name, + Conv & conv, + const Language * lang); +}; + +#endif diff --git a/jni/modules/speller/default/phonetic.lo b/jni/modules/speller/default/phonetic.lo new file mode 100644 index 0000000..35b6317 --- /dev/null +++ b/jni/modules/speller/default/phonetic.lo @@ -0,0 +1,12 @@ +# modules/speller/default/phonetic.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/phonetic.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/primes.cpp b/jni/modules/speller/default/primes.cpp new file mode 100644 index 0000000..1422097 --- /dev/null +++ b/jni/modules/speller/default/primes.cpp @@ -0,0 +1,51 @@ +// Copyright (c) 2000 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include "primes.hpp" +#include <cmath> +#include <cassert> + +namespace aspeller { + + using namespace std; + + void Primes::resize(size_type s) { + size_type i, j = 2; + data.resize(s); + for(i = 0; i < s; ++i) + data[i] = true; + if (s > 0) + data[0] = false; + if (s > 1) + data[1] = false; + size_type sqrt_s = static_cast<size_type>(sqrt(static_cast<double>(s))); + while (j < sqrt_s) { + for (i = 2*j; i < s; i += j) { + data[i] = false; + } + ++j; + for (;j < sqrt_s && !data[j]; ++j); + } + } + + bool Primes::is_prime(size_type n) const { + if (n < size()) { + return data[n]; + } else { + size_type e = static_cast<size_type>(sqrt(static_cast<double>(n))); + assert(e < size()); + for (const_iterator i = begin(); *i <= e; ++i) + if (!(n % *i)) return false; + return true; + } + } +} diff --git a/jni/modules/speller/default/primes.hpp b/jni/modules/speller/default/primes.hpp new file mode 100644 index 0000000..5acd6b4 --- /dev/null +++ b/jni/modules/speller/default/primes.hpp @@ -0,0 +1,129 @@ +// Copyright (c) 2000 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#include <vector> + +namespace aspeller { + + class Primes { + private: + typedef std::vector<bool> Data; + Data data; + public: + typedef Data::size_type size_type; + typedef Data::size_type value_type; + + Primes() {} + Primes(size_type s) {resize(s);} + size_type size() const {return data.size();} + void resize(size_type s); + bool operator[] (size_type pos) const {return data[pos];} + bool is_prime(size_type n) const; + size_type max_num() const {return (size()-1)*(size()-1);} + + // + // Iterators + // + + class const_reverse_iterator; + class const_iterator { + friend class Primes; + friend class const_reverse_iterator; + protected: + size_type pos; + const Primes* data; + const_iterator(const Primes *d, size_type p) {data = d; pos = p;} + public: + const_iterator() {} + size_type operator* () {return pos;} + const_iterator& operator++ () { + size_type size = data->size(); + if (pos != size) + do {++pos;} while (pos != size && !(*data)[pos]); + return *this; + } + const_iterator operator++ (int) { + const_iterator temp = *this; + operator++(); + return temp; + } + const_iterator& operator-- () { + if (pos != 0) + do {--pos;} while (pos != 0 && !(*data)[pos]); + return *this; + } + const_iterator operator-- (int) { + const_iterator temp = *this; + operator--(); + return temp; + } + const_iterator& jump(size_type p) { + pos = p; + if (!(*data)[pos]) + operator++(); + return *this; + } + + inline friend bool operator == (const const_iterator &rhs, + const const_iterator &lhs) { + return rhs.data == lhs.data && rhs.pos == lhs.pos; + } + }; + typedef const_iterator iterator; + + class const_reverse_iterator : private const_iterator { + friend class Primes; + protected: + const_reverse_iterator(const Primes *d, size_type p) {data = d; pos = p;} + public: + const_reverse_iterator() {} + const_reverse_iterator(const const_iterator &other) : + const_iterator(other) {} + size_type operator* () const {return pos;} + const_reverse_iterator& operator++ () {const_iterator::operator--(); return *this;} + const_reverse_iterator operator++ (int){return const_iterator::operator--(1);} + const_reverse_iterator& operator-- () {const_iterator::operator++(); return *this;} + const_reverse_iterator operator-- (int) {return const_iterator::operator++(1); return *this;} + + const_reverse_iterator& jump(size_type p) { + pos = p; + if (!(*data)[pos]) + operator++(); + return *this; + } + + inline friend bool operator == (const const_reverse_iterator &rhs, + const const_reverse_iterator &lhs) { + return rhs.data == lhs.data && rhs.pos == lhs.pos; + } + }; + typedef const_reverse_iterator reverse_iterator; + + typedef Data::const_iterator const_ra_iterator; + typedef const_ra_iterator ra_iterator; + typedef Data::const_reverse_iterator const_reverse_ra_iterator; + typedef const_reverse_ra_iterator reverse_ra_iterator; + + const_iterator begin() const {return const_iterator(this, 2);} + const_iterator end() const {return const_iterator(this, size());} + const_iterator jump(size_type p) {return const_iterator(this,0).jump(p);} + const_reverse_iterator rbegin() const {return ++const_reverse_iterator(this, size());} + const_reverse_iterator rend() const {return const_reverse_iterator(this, 0);} + const_reverse_iterator rjump(size_type p) {return const_reverse_iterator(this,0).jump(p);} + + const_ra_iterator ra_begin() const {return data.begin();} + const_ra_iterator ra_end() const {return data.end();} + const_reverse_ra_iterator r_ra_begin() const {return data.rbegin();} + const_reverse_ra_iterator r_ra_end() const {return data.rend();} + }; + +} diff --git a/jni/modules/speller/default/primes.lo b/jni/modules/speller/default/primes.lo new file mode 100644 index 0000000..75275f2 --- /dev/null +++ b/jni/modules/speller/default/primes.lo @@ -0,0 +1,12 @@ +# modules/speller/default/primes.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/primes.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/readonly_ws.cpp b/jni/modules/speller/default/readonly_ws.cpp new file mode 100644 index 0000000..7724076 --- /dev/null +++ b/jni/modules/speller/default/readonly_ws.cpp @@ -0,0 +1,1191 @@ +// This file is part of The New Aspell +// Copyright (C) 2000-2001,2011 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +// Aspell's main word list is laid out as follows: +// +// * header +// * jump table for editdist 1 +// * jump table for editdist 2 +// * data block +// * hash table + +// data block laid out as follows: +// +// Words: +// (<8 bit frequency><8 bit: flags><8 bit: offset> +// <8 bit: word size><word><null> +// [<affix info><null>][<category info><null>])+ +// Words with soundslike: +// (<8 bit: offset to next item><8 bit: soundslike size><soundslike> +// <words>)+ +// Flags are mapped as follows: +// bits 0-3: word info +// bit 4: duplicate flag +// bit 5: <unused> +// bit 6: have affix info +// bit 7: have compound info + +#include <utility> +using std::pair; + +#include <string.h> +#include <stdio.h> +//#include <errno.h> + +#include "settings.h" + +#include "block_vector.hpp" +#include "config.hpp" +#include "data.hpp" +#include "data_util.hpp" +#include "errors.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "language.hpp" +#include "stack_ptr.hpp" +#include "objstack.hpp" +#include "vector.hpp" +#include "vector_hash-t.hpp" +#include "check_list.hpp" +#include "lsort.hpp" + +#include "iostream.hpp" + +#include "gettext.h" + +typedef unsigned int u32int; +static const u32int u32int_max = (u32int)-1; +typedef unsigned short u16int; +typedef unsigned char byte; + +#ifdef HAVE_MMAP + +// POSIX headers +#include <fcntl.h> +#include <unistd.h> +#include <sys/mman.h> + +#endif + +#ifndef MAP_FAILED +#define MAP_FAILED (-1) +#endif + +#ifdef HAVE_MMAP + +static inline char * mmap_open(unsigned int block_size, + FStream & f, + unsigned int offset) +{ + f.flush(); + int fd = f.file_no(); + return static_cast<char *> + (mmap(NULL, block_size, PROT_READ, MAP_SHARED, fd, offset)); +} + +static inline void mmap_free(char * block, unsigned int size) +{ + munmap(block, size); +} + +#else + +static inline char * mmap_open(unsigned int, + FStream & f, + unsigned int) +{ + return reinterpret_cast<char *>(MAP_FAILED); +} + +static inline void mmap_free(char *, unsigned int) +{ + abort(); +} + +#endif + +static byte HAVE_AFFIX_FLAG = 1 << 7; +static byte HAVE_CATEGORY_FLAG = 1 << 6; + +static byte DUPLICATE_FLAG = 1 << 4; +// this flag is set when there is is more than one word for a +// particulear "clean" word such as "jello" "Jello". It is set on all +// but the last word of the group. Ie, if it is set than the next +// word when converted to its "clean" form equals the same value. + +static byte WORD_INFO_MASK = 0x0F; + +static const int FREQUENCY_INFO_O = 4; +static const int FLAGS_O = 3; +static const int NEXT_O = 2; +static const int WORD_SIZE_O = 1; + +static inline int get_word_size(const char * d) { + return *reinterpret_cast<const byte *>(d - WORD_SIZE_O); +} + +static inline byte get_flags(const char * d) { + return *reinterpret_cast<const byte *>(d - FLAGS_O); +} + +static inline byte get_offset(const char * d) { + return *reinterpret_cast<const byte *>(d - NEXT_O); +} + +static inline const char * get_next(const char * d) { + return d + *reinterpret_cast<const byte *>(d - NEXT_O); +} + +static inline const char * get_sl_words_begin(const char * d) { + return d + *reinterpret_cast<const byte *>(d - WORD_SIZE_O) + 4; + // FIXME: This isn't right when frequency info is stored in the table +} + +// get_next might go past the end so don't JUST compare +// for equality. Ie use while (cur < end) not (cur != end) +static inline const char * get_sl_words_end(const char * d) { + return get_next(d) - 3; +} + +static inline const char * get_affix(const char * d) { + int word_size = get_word_size(d); + if (get_flags(d) & HAVE_AFFIX_FLAG) + return d + word_size + 1; + else + return d + word_size; +} + +static inline const char * get_category(const char * d) { + int word_size = get_word_size(d); + if (get_flags(d) & (HAVE_AFFIX_FLAG | HAVE_CATEGORY_FLAG)) + return d + strlen(d + word_size + 1) + 1; + else if (get_flags(d) & HAVE_CATEGORY_FLAG) + return d + word_size + 1; + else + return d + word_size; +} + +static inline bool duplicate_flag(const char * d) { + return get_flags(d) & DUPLICATE_FLAG; +} + +namespace { + + using namespace aspeller; + + ///////////////////////////////////////////////////////////////////// + // + // ReadOnlyDict + // + + struct Jump + { + char sl[4]; + u32int loc; + Jump() {memset(this, 0, sizeof(Jump));} + }; + + class ReadOnlyDict : public Dictionary + { + + public: //but don't use + + struct WordLookupParms { + const char * block_begin; + WordLookupParms() {} + typedef BlockVector<const u32int> Vector; + typedef u32int Value; + typedef const char * Key; + static const bool is_multi = false; + Key key(Value v) const {return block_begin + v;} + InsensitiveHash hash; + InsensitiveEqual equal; + bool is_nonexistent(Value v) const {return v == u32int_max;} + void make_nonexistent(const Value & v) const {abort();} + }; + typedef VectorHashTable<WordLookupParms> WordLookup; + + public: // but don't use + + char * block; + u32int block_size; + char * mmaped_block; + u32int mmaped_size; + const Jump * jump1; + const Jump * jump2; + WordLookup word_lookup; + const char * word_block; + const char * first_word; + + ReadOnlyDict(const ReadOnlyDict&); + ReadOnlyDict& operator= (const ReadOnlyDict&); + + struct Elements; + struct SoundslikeElements; + + public: + WordEntryEnumeration * detailed_elements() const; + Size size() const; + bool empty() const; + + ReadOnlyDict() + : Dictionary(basic_dict, "ReadOnlyDict") + { + block = 0; + } + + ~ReadOnlyDict() { + if (block != 0) { + if (mmaped_block) + mmap_free(mmaped_block, mmaped_size); + else + free(block); + } + } + + PosibErr<void> load(ParmString, Config &, DictList *, SpellerImpl *); + + bool lookup(ParmString word, const SensitiveCompare *, WordEntry &) const; + + bool clean_lookup(ParmString, WordEntry &) const; + + bool soundslike_lookup(const WordEntry &, WordEntry &) const; + bool soundslike_lookup(ParmString, WordEntry &) const; + + SoundslikeEnumeration * soundslike_elements() const; + }; + + static inline void convert(const char * w, WordEntry & o) { + o.what = WordEntry::Word; + o.word = w; + o.aff = get_affix(w); + o.word_size = get_word_size(w); + o.word_info = get_flags(w) & WORD_INFO_MASK; + } + + // + // + // + + struct ReadOnlyDict::Elements : public WordEntryEnumeration + { + const char * w; + WordEntry wi; + Elements(const char * w0) : w(w0) {wi.what = WordEntry::Word;} + WordEntry * next() { + if (get_offset(w) == 0) w += 2; // FIXME: This needs to be 3 + // when freq info is used + if (get_offset(w) == 0) return 0; + convert(w, wi); + w = get_next(w); + return &wi; + } + bool at_end() const {return get_offset(w) == 0;} + WordEntryEnumeration * clone() const {return new Elements(*this);} + void assign (const WordEntryEnumeration * other) { + *this = *static_cast<const Elements *>(other);} + }; + + WordEntryEnumeration * ReadOnlyDict::detailed_elements() const { + return new Elements(first_word); + } + + ReadOnlyDict::Size ReadOnlyDict::size() const { + return word_lookup.size(); + } + + bool ReadOnlyDict::empty() const { + return word_lookup.empty(); + } + + static const char * const cur_check_word = "aspell default speller rowl 1.10"; + + struct DataHead { + // all sizes except the last four must to divisible by: + static const unsigned int align = 16; + char check_word[64]; + u32int endian_check; // = 12345678 + char lang_hash[16]; + + u32int head_size; + u32int block_size; + u32int jump1_offset; + u32int jump2_offset; + u32int word_offset; + u32int hash_offset; + + u32int word_count; + u32int word_buckets; + u32int soundslike_count; + + u32int dict_name_size; + u32int lang_name_size; + u32int soundslike_name_size; + u32int soundslike_version_size; + + u32int first_word_offset; // from word block + + byte affix_info; // 0 = none, 1 = partially expanded, 2 = full + byte invisible_soundslike; + byte soundslike_root_only; + byte compound_info; // + byte freq_info; + }; + + PosibErr<void> ReadOnlyDict::load(ParmString f0, Config & config, + DictList *, SpellerImpl *) + { + set_file_name(f0); + const char * fn = file_name(); + + FStream f; + RET_ON_ERR(f.open(fn, "rb")); + + DataHead data_head; + + f.read(&data_head, sizeof(DataHead)); + +#if 0 + COUT << "Head Size: " << data_head.head_size << "\n"; + COUT << "Data Block Size: " << data_head.data_block_size << "\n"; + COUT << "Hash Block Size: " << data_head.hash_block_size << "\n"; + COUT << "Total Block Size: " << data_head.total_block_size << "\n"; +#endif + + if (strcmp(data_head.check_word, cur_check_word) != 0) + return make_err(bad_file_format, fn); + + if (data_head.endian_check != 12345678) + return make_err(bad_file_format, fn, _("Wrong endian order.")); + + CharVector word; + + word.resize(data_head.dict_name_size); + f.read(word.data(), data_head.dict_name_size); + + word.resize(data_head.lang_name_size); + f.read(word.data(), data_head.lang_name_size); + + PosibErr<void> pe = set_check_lang(word.data(),config); + if (pe.has_err()) { + if (pe.prvw_err()->is_a(language_related_error)) + return pe.with_file(fn); + else + return pe; + } + + if (data_head.soundslike_name_size != 0) { + word.resize(data_head.soundslike_name_size); + f.read(word.data(), data_head.soundslike_name_size); + + if (strcmp(word.data(), lang()->soundslike_name()) != 0) + return make_err(bad_file_format, fn, _("Wrong soundslike.")); + + word.resize(data_head.soundslike_version_size); + f.read(word.data(), data_head.soundslike_version_size); + + if (strcmp(word.data(), lang()->soundslike_version()) != 0) + return make_err(bad_file_format, fn, _("Wrong soundslike version.")); + } + + invisible_soundslike = data_head.invisible_soundslike; + soundslike_root_only = data_head.soundslike_root_only; + + affix_compressed = data_head.affix_info; + + block_size = data_head.block_size; + int offset = data_head.head_size; + mmaped_block = mmap_open(block_size + offset, f, 0); + if( mmaped_block != (char *)MAP_FAILED) { + block = mmaped_block + offset; + mmaped_size = block_size + offset; + } else { + mmaped_block = 0; + block = (char *)malloc(block_size); + f.seek(data_head.head_size); + f.read(block, block_size); + } + + if (data_head.jump2_offset) { + fast_scan = true; + jump1 = reinterpret_cast<const Jump *>(block + data_head.jump1_offset); + jump2 = reinterpret_cast<const Jump *>(block + data_head.jump2_offset); + } else { + jump1 = jump2 = 0; + } + + word_block = block + data_head.word_offset; + first_word = word_block + data_head.first_word_offset; + + word_lookup.parms().block_begin = word_block; + word_lookup.parms().hash .lang = lang(); + word_lookup.parms().equal.cmp.lang = lang(); + const u32int * begin = reinterpret_cast<const u32int *> + (block + data_head.hash_offset); + word_lookup.vector().set(begin, begin + data_head.word_buckets); + word_lookup.set_size(data_head.word_count); + + return no_err; + } + + void lookup_adv(WordEntry * wi); + + static inline void prep_next(WordEntry * wi, + const char * w, + const SensitiveCompare * c, + const char * orig) + { + loop: + if (!duplicate_flag(w)) return; + w = get_next(w); + if (!(*c)(orig, w)) goto loop; + wi->intr[0] = (void *)w; + wi->intr[1] = (void *)c; + wi->intr[2] = (void *)orig; + wi->adv_ = lookup_adv; + } + + void lookup_adv(WordEntry * wi) + { + const char * w = (const char *)wi->intr[0]; + const SensitiveCompare * c = (const SensitiveCompare *)wi->intr[1]; + const char * orig = (const char *)wi->intr[2]; + convert(w,*wi); + wi->adv_ = 0; + prep_next(wi, w, c, orig); + } + + bool ReadOnlyDict::lookup(ParmString word, const SensitiveCompare * c, + WordEntry & o) const + { + o.clear(); + WordLookup::const_iterator i = word_lookup.find(word); + if (i == word_lookup.end()) return false; + const char * w = word_block + *i; + for (;;) { + if ((*c)(word, w)) { + convert(w,o); + prep_next(&o, w, c, word); + return true; + } + if (!duplicate_flag(w)) break; + w = get_next(w); + } + return false; + } + + struct ReadOnlyDict::SoundslikeElements : public SoundslikeEnumeration + { + WordEntry data; + const ReadOnlyDict * obj; + const Jump * jump1; + const Jump * jump2; + const char * cur; + const char * prev; + int level; + bool invisible_soundslike; + + WordEntry * next(int stopped_at); + + SoundslikeElements(const ReadOnlyDict * o) + : obj(o), jump1(obj->jump1), jump2(obj->jump2), cur(0), + level(1), invisible_soundslike(o->invisible_soundslike) { + data.what = o->invisible_soundslike ? WordEntry::Word : WordEntry::Soundslike;} + }; + + WordEntry * ReadOnlyDict::SoundslikeElements::next(int stopped_at) { + + //CERR << level << ":" << stopped_at << " :"; + //CERR << jump1->sl << ":" << jump2->sl << "\n"; + + loop: + + const char * tmp = cur; + const char * p; + + if (level == 1 && stopped_at < 2) { + + ++jump1; + tmp = jump1->sl; + goto jquit; + + } else if (level == 2 && stopped_at < 3) { + + ++jump2; + if (jump2[-1].sl[1] != jump2[0].sl[1]) { + ++jump1; + level = 1; + tmp = jump1->sl; + } else { + tmp = jump2->sl; + } + goto jquit; + + } else if (level == 1) { + + level = 2; + jump2 = obj->jump2 + jump1->loc; + tmp = jump2->sl; + goto jquit; + + } else if (level == 2) { + + tmp = cur = obj->word_block + jump2->loc; + level = 3; + + } else if (get_offset(cur) == 0) { + + level = 2; + ++jump2; + if (jump2[-1].sl[1] != jump2[0].sl[1]) { + level = 1; + ++jump1; + tmp = jump1->sl; + } else { + tmp = jump2->sl; + } + goto jquit; + + } + + cur = get_next(cur); // this will be the NEXT item looked at + + p = prev; + prev = tmp; + if (p) { + // PRECOND: + // unless stopped_at >= LARGE_NUM + // strlen(p) >= stopped_at + // (stopped_at >= 3) implies + // strncmp(p, tmp, 3) == 0 if !invisible_soundslike + // strncmp(to_sl(p), to_sl(tmp), 3) == 0 if invisible_soundslike + if (stopped_at == 3) { + if (p[3] == tmp[3]) goto loop; + } else if (stopped_at == 4) { + if (p[3] == tmp[3] && tmp[3] && + p[4] == tmp[4]) goto loop; + } else if (stopped_at == 5) { + if (p[3] == tmp[3] && tmp[3] && + p[4] == tmp[4] && tmp[4] && + p[5] == tmp[5]) goto loop; + } + } + + data.word = tmp; + data.word_size = get_word_size(tmp); + if (invisible_soundslike) { + convert(tmp, data); + } + data.intr[0] = (void *)tmp; + + return &data; + + jquit: + prev = 0; + if (!*tmp) return 0; + data.word = tmp; + data.word_size = !tmp[1] ? 1 : !tmp[2] ? 2 : 3; + data.intr[0] = 0; + if (invisible_soundslike) { + data.what = WordEntry::Clean; + data.aff = 0; + } + return &data; + } + + SoundslikeEnumeration * ReadOnlyDict::soundslike_elements() const { + + return new SoundslikeElements(this); + + } + + static void soundslike_next(WordEntry * w) + { + const char * cur = (const char *)(w->intr[0]); + const char * end = (const char *)(w->intr[1]); + convert(cur, *w); + cur = get_next(cur); + w->intr[0] = (void *)cur; + if (cur >= end) w->adv_ = 0; + } + + static void clean_lookup_adv(WordEntry * wi) + { + const char * w = wi->word; + w = get_next(w); + convert(w,*wi); + if (!duplicate_flag(w)) wi->adv_ = 0; + } + + bool ReadOnlyDict::clean_lookup(ParmString sl, WordEntry & o) const + { + o.clear(); + WordLookup::const_iterator i = word_lookup.find(sl); + if (i == word_lookup.end()) return false; + const char * w = word_block + *i; + convert(w, o); + if (duplicate_flag(w)) o.adv_ = clean_lookup_adv; + return true; + } + + bool ReadOnlyDict::soundslike_lookup(const WordEntry & s, WordEntry & w) const + { + if (s.intr[0] == 0) { + + return false; + + } else if (!invisible_soundslike) { + + w.clear(); + w.what = WordEntry::Word; + w.intr[0] = (void *)get_sl_words_begin(s.word); + w.intr[1] = (void *)get_sl_words_end(s.word); + w.adv_ = soundslike_next; + soundslike_next(&w); + return true; + + } else { + + w.clear(); + w.what = WordEntry::Word; + convert(s.word, w); + return true; + + } + } + + bool ReadOnlyDict::soundslike_lookup(ParmString s, WordEntry & w) const + { + if (invisible_soundslike) { + return ReadOnlyDict::clean_lookup(s,w); + } else { + return false; + } + } + +} + +namespace aspeller { + + Dictionary * new_default_readonly_dict() { + return new ReadOnlyDict(); + } + +} + +namespace { + + // Possible: + // No Affix Compression: + // no soundslike + // invisible soundslike + // with soundslike + // Affix Compression: + // group by root: + // no soundslike + // invisible soundslike + // with soundslike + // expand prefix: + // no soundslike + // invisible soundslike + + using namespace aspeller; + + struct WordData { + static const unsigned struct_size; + WordData * next; + char * sl; + char * aff; + byte word_size; + byte sl_size; + byte data_size; + byte flags; + char word[1]; + }; + + const unsigned WordData::struct_size = sizeof(WordData) - 1; + + + struct SoundslikeLess { + InsensitiveCompare icomp; + SoundslikeLess(const Language * l) : icomp(l) {} + bool operator() (WordData * x, WordData * y) const { + int res = strcmp(x->sl, y->sl); + if (res != 0) return res < 0; + res = icomp(x->word, y->word); + if (res != 0) return res < 0; + return strcmp(x->word, y->word) < 0; + } + }; + + struct WordLookupParms { + const char * block_begin; + WordLookupParms() {} + typedef acommon::Vector<u32int> Vector; + typedef u32int Value; + typedef const char * Key; + static const bool is_multi = false; + Key key(Value v) const {return block_begin + v;} + InsensitiveHash hash; + InsensitiveEqual equal; + bool is_nonexistent(Value v) const {return v == u32int_max;} + void make_nonexistent(Value & v) const {v = u32int_max;} + }; + typedef VectorHashTable<WordLookupParms> WordLookup; + + static inline unsigned int round_up(unsigned int i, unsigned int size) { + return ((i + size - 1)/size)*size; + } + + static void advance_file(FStream & out, int pos) { + int diff = pos - out.tell(); + assert(diff >= 0); + for(; diff != 0; --diff) + out << '\0'; + } + + PosibErr<void> create (StringEnumeration * els, + const Language & lang, + Config & config) + { + assert(sizeof(u16int) == 2); + assert(sizeof(u32int) == 4); + + bool full_soundslike = !(strcmp(lang.soundslike_name(), "none") == 0 || + strcmp(lang.soundslike_name(), "stripped") == 0 || + strcmp(lang.soundslike_name(), "simple") == 0); + + bool affix_compress = (lang.affix() && + config.retrieve_bool("affix-compress")); + + bool partially_expand = (affix_compress && + !full_soundslike && + config.retrieve_bool("partially-expand")); + + bool invisible_soundslike = false; + if (partially_expand) + invisible_soundslike = true; + else if (config.have("invisible-soundslike")) + invisible_soundslike = config.retrieve_bool("invisible-soundslike"); + else if (!full_soundslike) + invisible_soundslike = true; + + ConvEC iconv; + if (!config.have("norm-strict")) + config.replace("norm-strict", "true"); + if (config.have("encoding")) + RET_ON_ERR(iconv.setup(config, config.retrieve("encoding"), lang.charmap(),NormFrom)); + else + RET_ON_ERR(iconv.setup(config, lang.data_encoding(), lang.charmap(), NormFrom)); + + String base = config.retrieve("master-path"); + + DataHead data_head; + memset(&data_head, 0, sizeof(data_head)); + strcpy(data_head.check_word, cur_check_word); + + data_head.endian_check = 12345678; + + data_head.dict_name_size = 1; + data_head.lang_name_size = strlen(lang.name()) + 1; + data_head.soundslike_name_size = strlen(lang.soundslike_name()) + 1; + data_head.soundslike_version_size = strlen(lang.soundslike_version()) + 1; + data_head.head_size = sizeof(DataHead); + data_head.head_size += data_head.dict_name_size; + data_head.head_size += data_head.lang_name_size; + data_head.head_size += data_head.soundslike_name_size; + data_head.head_size += data_head.soundslike_version_size; + data_head.head_size = round_up(data_head.head_size, DataHead::align); + + data_head.affix_info = affix_compress ? partially_expand ? 1 : 2 : 0; + data_head.invisible_soundslike = invisible_soundslike; + data_head.soundslike_root_only = affix_compress && !partially_expand ? 1 : 0; + +#if 0 + CERR.printl("FLAGS: "); + if (full_soundslike) CERR.printl(" full soundslike"); + if (invisible_soundslike) CERR.printl(" invisible soundslike"); + if (data_head.soundslike_root_only) CERR.printl(" soundslike root only"); + if (affix_compress) CERR.printl(" affix compress"); + if (partially_expand) CERR.printl(" partially expand"); + CERR.printl("---"); +#endif + + String temp; + + int num_entries = 0; + int uniq_entries = 0; + + ObjStack buf(16*1024); + String sl_buf; + + WordData * first = 0; + + // + // Read in Wordlist + // + { + WordListIterator wl_itr(els, &lang, config.retrieve_bool("warn") ? &CERR : 0); + wl_itr.init(config); + ObjStack exp_buf; + WordAff * exp_list; + WordAff single; + single.next = 0; + Vector<WordAff> af_list; + WordData * * prev = &first; + + for (;;) { + + PosibErr<bool> pe = wl_itr.adv(); + if (pe.has_err()) return pe; + if (!pe.data) break; + + const char * w = wl_itr->word.str; + unsigned int s = wl_itr->word.size; + + const char * affixes = wl_itr->aff.str; + + if (*affixes && !lang.affix()) + return make_err(other_error, + _("Affix flags found in word but no affix file given.")); + + if (*affixes && !affix_compress) { + exp_buf.reset(); + exp_list = lang.affix()->expand(w, affixes, exp_buf); + } else if (*affixes && partially_expand) { + // expand any affixes which will effect the first + // 3 letters of a word. This is needed so that the + // jump tables will function correctly + exp_buf.reset(); + exp_list = lang.affix()->expand(w, affixes, exp_buf, 3); + } else { + single.word.str = w; + single.word.size = strlen(w); + single.aff = (const byte *)affixes; + exp_list = &single; + } + + // iterate through each expanded word + + for (WordAff * p = exp_list; p; p = p->next) + { + const char * w = p->word.str; + s = p->word.size; + + unsigned total_size = WordData::struct_size; + unsigned data_size = s + 1; + unsigned aff_size = strlen((const char *)p->aff); + if (aff_size > 0) data_size += aff_size + 1; + total_size += data_size; + lang.to_soundslike(sl_buf, w); + const char * sl = sl_buf.str(); + unsigned sl_size = sl_buf.size(); + if (strcmp(sl,w) == 0) sl = w; + if (sl != w) total_size += sl_size + 1; + + if (total_size - WordData::struct_size > 240) + return make_err(invalid_word, MsgConv(lang)(w), + _("The total word length, with soundslike data, is larger than 240 characters.")); + + WordData * b = (WordData *)buf.alloc(total_size, sizeof(void *)); + *prev = b; + b->next = 0; + prev = &b->next; + + b->word_size = s; + b->sl_size = strlen(sl); + b->data_size = data_size; + b->flags = lang.get_word_info(w); + + char * z = b->word; + + memcpy(z, w, s + 1); + z += s + 1; + + if (aff_size > 0) { + b->flags |= HAVE_AFFIX_FLAG; + b->aff = z; + memcpy(z, p->aff, aff_size + 1); + z += aff_size + 1; + } else { + b->aff = 0; + } + + if (sl != w) { + memcpy(z, sl, sl_size + 1); + b->sl = z; + } else { + b->sl = b->word; + } + + } + } + delete els; + } + + // + // sort WordData linked list based on (sl, word) + // + + first = sort(first, SoundslikeLess(&lang)); + + // + // duplicate check + // + WordData * prev = first; + WordData * cur = first ? first->next : 0; + InsensitiveEqual ieq(&lang); + while (cur) { + if (strcmp(prev->word, cur->word) == 0) { + // merge affix info if necessary + if (!prev->aff && cur->aff) { + prev->flags |= HAVE_AFFIX_FLAG; + prev->aff = cur->aff; + prev->data_size += strlen(prev->aff) + 1; + } else if (prev->aff && cur->aff) { + unsigned l1 = strlen(prev->aff); + unsigned l2 = strlen(cur->aff); + char * aff = (char *)buf.alloc(l1 + l2 + 1); + memcpy(aff, prev->aff, l1); + prev->aff = aff; + aff += l1; + for (const char * p = cur->aff; *p; ++p) { + if (memchr(prev->aff, *p, l1)) continue; + *aff = *p; + ++aff; + } + *aff = '\0'; + prev->data_size = prev->word_size + (aff - prev->aff) + 2; + } + prev->next = cur->next; + } else { + if (ieq(prev->word, cur->word)) prev->flags |= DUPLICATE_FLAG; + else ++uniq_entries; + ++num_entries; + prev = cur; + } + cur = cur->next; + } + + // + // + // + + unsigned data_size = 16; + WordData * p = first; + if (invisible_soundslike) { + + for (; p; p = p->next) + data_size += 3 + p->data_size; + + } else { + + while (p) + { + unsigned ds = 2 + p->sl_size + 1; + + char * prev = p->sl; + + do { + + ds += 3 + p->data_size; + p->sl = prev; + p = p->next; + + } while (p && strcmp(prev, p->sl) == 0 && ds + 3 + p->data_size < 255); + + data_size += ds; + + } + + } + + // + // Create the final data structures + // + + CharVector data; + data.reserve(data_size); + data.write32(0); // to avoid nasty special cases + unsigned int prev_pos = data.size(); + data.write32(0); + unsigned prev_w_pos = data.size(); + + WordLookup lookup(affix_compress + ? uniq_entries * 3 / 2 + : uniq_entries * 5 / 4); + lookup.parms().block_begin = data.begin(); + lookup.parms().hash .lang = ⟨ + lookup.parms().equal.cmp.lang = ⟨ + + Vector<Jump> jump1; + Vector<Jump> jump2; + + const int head_size = invisible_soundslike ? 3 : 2; + + const char * prev_sl = ""; + p = first; + while (p) + { + if (invisible_soundslike) { + + data.write(p->flags); // flags + data.write('\0'); // place holder for offset to next item + data.write(p->word_size); + + } else { + + data.write('\0'); // place holder for offset to next item + data.write(p->sl_size); + + } + + if (strncmp(prev_sl, p->sl, 3) != 0) { + + Jump jump; + strncpy(jump.sl, p->sl, 3); + jump.loc = data.size(); + jump2.push_back(jump); + + if (strncmp(prev_sl, p->sl, 2) != 0) { + Jump jump; + strncpy(jump.sl, p->sl, 2); + jump.loc = jump2.size() - 1; + jump1.push_back(jump); + } + + data[prev_pos - NEXT_O] = (byte)(data.size() - prev_pos - head_size + 1); + // when advanced to this position the offset byte will + // be null (since it will point to the null terminator + // of the last word) and will thus signal the end of the + // group + + } else { + + data[prev_pos - NEXT_O] = (byte)(data.size() - prev_pos); + + } + + prev_pos = data.size(); + prev_sl = p->sl; + + if (invisible_soundslike) { + + unsigned pos = data.size(); + prev_w_pos = data.size(); + data.write(p->word, p->word_size + 1); + if (p->aff) data.write(p->aff, p->data_size - p->word_size - 1); + lookup.insert(pos); + + p = p->next; + + } else { + + data.write(p->sl, p->sl_size + 1); + + // write all word entries with the same soundslike + + do { + data.write(p->flags); + data.write(p->data_size + 3); + data.write(p->word_size); + + unsigned pos = data.size(); + data[prev_w_pos - NEXT_O] = (byte)(pos - prev_w_pos); + data.write(p->word, p->word_size + 1); + if (p->aff) data.write(p->aff, p->data_size - p->word_size - 1); + lookup.insert(pos); + + prev_w_pos = pos; + prev_sl = p->sl; + + p = p->next; + + } while (p && prev_sl == p->sl); // yes I really mean to use pointer compare here + } + } + + // add special end case + if (data.size() % 2 != 0) data.write('\0'); + data.write16(0); + data.write16(0); + data[prev_pos - NEXT_O] |= (byte)(data.size() - prev_pos); + + jump2.push_back(Jump()); + jump1.push_back(Jump()); + + data.write(0); + data.write(0); + data.write(0); + + if (invisible_soundslike) + data_head.first_word_offset = data[4 - NEXT_O] + 4; + else + data_head.first_word_offset = data[8 - NEXT_O] + 8; + + memset(data.data(), 0, 8); + + //CERR.printf("%d == %d\n", lookup.size(), uniq_entries); + //assert(lookup.size() == uniq_entries); + + data_head.word_count = num_entries; + data_head.word_buckets = lookup.bucket_count(); + + FStream out; + out.open(base, "wb"); + + advance_file(out, data_head.head_size); + + // Write jump1 table + data_head.jump1_offset = out.tell() - data_head.head_size; + out.write(jump1.data(), jump1.size() * sizeof(Jump)); + + // Write jump2 table + advance_file(out, round_up(out.tell(), DataHead::align)); + data_head.jump2_offset = out.tell() - data_head.head_size; + out.write(jump2.data(), jump2.size() * sizeof(Jump)); + + // Write data block + advance_file(out, round_up(out.tell(), DataHead::align)); + data_head.word_offset = out.tell() - data_head.head_size; + out.write(data.data(), data.size()); + + // Write hash + advance_file(out, round_up(out.tell(), DataHead::align)); + data_head.hash_offset = out.tell() - data_head.head_size; + out.write(&lookup.vector().front(), lookup.vector().size() * 4); + + // calculate block size + advance_file(out, round_up(out.tell(), DataHead::align)); + data_head.block_size = out.tell() - data_head.head_size; + + // write data head to file + out.seek(0); + out.write(&data_head, sizeof(DataHead)); + out.write(" ", 1); + out.write(lang.name(), data_head.lang_name_size); + out.write(lang.soundslike_name(), data_head.soundslike_name_size); + out.write(lang.soundslike_version(), data_head.soundslike_version_size); + + return no_err; + } + +} + +namespace aspeller { + PosibErr<void> create_default_readonly_dict(StringEnumeration * els, + Config & config) + { + CachePtr<Language> lang; + PosibErr<Language *> res = new_language(config); + if (res.has_err()) return res; + lang.reset(res.data); + lang->set_lang_defaults(config); + RET_ON_ERR(create(els,*lang,config)); + return no_err; + } +} + diff --git a/jni/modules/speller/default/readonly_ws.lo b/jni/modules/speller/default/readonly_ws.lo new file mode 100644 index 0000000..41c523c --- /dev/null +++ b/jni/modules/speller/default/readonly_ws.lo @@ -0,0 +1,12 @@ +# modules/speller/default/readonly_ws.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/readonly_ws.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/speller_impl.cpp b/jni/modules/speller/default/speller_impl.cpp new file mode 100644 index 0000000..f0704e8 --- /dev/null +++ b/jni/modules/speller/default/speller_impl.cpp @@ -0,0 +1,742 @@ +// This file is part of The New Aspell +// Copyright (C) 2000-2001,2011 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include <stdlib.h> +#include <typeinfo> + +#include "clone_ptr-t.hpp" +#include "config.hpp" +#include "data.hpp" +#include "data_id.hpp" +#include "errors.hpp" +#include "language.hpp" +#include "speller_impl.hpp" +#include "string_list.hpp" +#include "suggest.hpp" +#include "tokenizer.hpp" +#include "convert.hpp" +#include "stack_ptr.hpp" + +//#include "iostream.hpp" + +#include "gettext.h" + +namespace aspeller { + // + // data_access functions + // + + const char * SpellerImpl::lang_name() const { + return lang_->name(); + } + + // + // to lower + // + + char * SpellerImpl::to_lower(char * str) + { + for (char * i = str; *i; ++i) + *i = lang_->to_lower(*i); + return str; + } + + ////////////////////////////////////////////////////////////////////// + // + // Spell check methods + // + + PosibErr<void> SpellerImpl::add_to_personal(MutableString word) { + if (!personal_) return no_err; + return personal_->add(word); + } + + PosibErr<void> SpellerImpl::add_to_session(MutableString word) { + if (!session_) return no_err; + return session_->add(word); + } + + PosibErr<void> SpellerImpl::clear_session() { + if (!session_) return no_err; + return session_->clear(); + } + + PosibErr<void> SpellerImpl::store_replacement(MutableString mis, + MutableString cor) + { + return SpellerImpl::store_replacement(mis,cor,true); + } + + PosibErr<void> SpellerImpl::store_replacement(const String & mis, + const String & cor, + bool memory) + { + if (ignore_repl) return no_err; + if (!repl_) return no_err; + String::size_type pos; + StackPtr<StringEnumeration> sugels(intr_suggest_->suggest(mis.c_str()).elements()); + const char * first_word = sugels->next(); + CheckInfo w1, w2; + String cor1, cor2; + String buf; + bool correct = false; + pos = cor.find(' '); + if (pos == String::npos) { + cor1 = cor; + correct = check_affix(cor, w1, 0); + } else { + cor1 = (String)cor.substr(0,pos); + ++pos; + while (pos < cor.size() && cor[pos] == ' ') ++pos; + cor2 = (String)cor.substr(pos); + correct = check_affix(cor1, w1, 0) && check_affix(cor2, w2, 0); + } + if (correct) { + String cor_orignal_casing(cor1); + if (!cor2.empty()) { + cor_orignal_casing += cor[pos-1]; + cor_orignal_casing += cor2; + } + // Don't try to add the empty string, causes all kinds of + // problems. Can happen if the original replacement nothing but + // whitespace. + if (cor_orignal_casing.empty()) + return no_err; + if (first_word == 0 || cor != first_word) { + lang().to_lower(buf, mis.str()); + repl_->add_repl(buf, cor_orignal_casing); + } + + if (memory && prev_cor_repl_ == mis) + store_replacement(prev_mis_repl_, cor, false); + + } else { //!correct + + if (memory) { + if (prev_cor_repl_ != mis) + prev_mis_repl_ = mis; + prev_cor_repl_ = cor; + } + } + return no_err; + } + + // + // simple functions + // + + PosibErr<const WordList *> SpellerImpl::suggest(MutableString word) + { + return &suggest_->suggest(word); + } + + bool SpellerImpl::check_simple (ParmString w, WordEntry & w0) + { + w0.clear(); // FIXME: is this necessary? + const char * x = w; + while (*x != '\0' && (x-w) < static_cast<int>(ignore_count)) ++x; + if (*x == '\0') {w0.word = w; return true;} + WS::const_iterator i = check_ws.begin(); + WS::const_iterator end = check_ws.end(); + do { + if ((*i)->lookup(w, &s_cmp, w0)) return true; + ++i; + } while (i != end); + return false; + }; + + bool SpellerImpl::check_affix(ParmString word, CheckInfo & ci, GuessInfo * gi) + { + WordEntry w; + bool res = check_simple(word, w); + if (res) {ci.word = w.word; return true;} + if (affix_compress) { + res = lang_->affix()->affix_check(LookupInfo(this, LookupInfo::Word), word, ci, 0); + if (res) return true; + } + if (affix_info && gi) { + lang_->affix()->affix_check(LookupInfo(this, LookupInfo::Guess), word, ci, gi); + } + return false; + } + + inline bool SpellerImpl::check2(char * word, /* it WILL modify word */ + bool try_uppercase, + CheckInfo & ci, GuessInfo * gi) + { + bool res = check_affix(word, ci, gi); + if (res) return true; + if (!try_uppercase) return false; + char t = *word; + *word = lang_->to_title(t); + res = check_affix(word, ci, gi); + *word = t; + if (res) return true; + return false; + } + + PosibErr<bool> SpellerImpl::check(char * word, char * word_end, + /* it WILL modify word */ + bool try_uppercase, + unsigned run_together_limit, + CheckInfo * ci, GuessInfo * gi) + { + assert(run_together_limit <= 8); // otherwise it will go above the + // bounds of the word array + clear_check_info(*ci); + bool res = check2(word, try_uppercase, *ci, gi); + if (res) return true; + if (run_together_limit <= 1) return false; + enum {Yes, No, Unknown} is_title = try_uppercase ? Yes : Unknown; + for (char * i = word + run_together_min_; + i <= word_end - run_together_min_; + ++i) + { + char t = *i; + *i = '\0'; + //FIXME: clear ci, gi? + res = check2(word, try_uppercase, *ci, gi); + if (!res) {*i = t; continue;} + if (is_title == Unknown) + is_title = lang_->case_pattern(word) == FirstUpper ? Yes : No; + *i = t; + if (check(i, word_end, is_title == Yes, run_together_limit - 1, ci + 1, 0)) { + ci->compound = true; + ci->next = ci + 1; + return true; + } + } + return false; + } + + ////////////////////////////////////////////////////////////////////// + // + // Word list managment methods + // + + PosibErr<void> SpellerImpl::save_all_word_lists() { + SpellerDict * i = dicts_; + for (; i; i = i->next) { + if (i->save_on_saveall) + RET_ON_ERR(i->dict->synchronize()); + } + return no_err; + } + + int SpellerImpl::num_wordlists() const { + return 0; //FIXME + } + + SpellerImpl::WordLists SpellerImpl::wordlists() const { + return 0; //FIXME + //return MakeEnumeration<DataSetCollection::Parms>(wls_->begin(), DataSetCollection::Parms(wls_->end())); + } + + PosibErr<const WordList *> SpellerImpl::personal_word_list() const { + const WordList * wl = static_cast<const WordList *>(personal_); + if (!wl) return make_err(operation_not_supported_error, + _("The personal word list is unavailable.")); + return wl; + } + + PosibErr<const WordList *> SpellerImpl::session_word_list() const { + const WordList * wl = static_cast<const WordList *>(session_); + if (!wl) return make_err(operation_not_supported_error, + _("The session word list is unavailable.")); + return wl; + } + + PosibErr<const WordList *> SpellerImpl::main_word_list() const { + const WordList * wl = dynamic_cast<const WordList *>(main_); + if (!wl) return make_err(operation_not_supported_error, + _("The main word list is unavailable.")); + return wl; + } + + const SpellerDict * SpellerImpl::locate (const Dict::Id & id) const + { + for (const SpellerDict * i = dicts_; i; i = i->next) + if (i->dict->id() == id) return i; + return 0; + } + + PosibErr<void> SpellerImpl::add_dict(SpellerDict * wc) + { + Dict * w = wc->dict; + assert(locate(w->id()) == 0); + + if (!lang_) { + lang_.copy(w->lang()); + config_->replace("lang", lang_name()); + config_->replace("language-tag", lang_name()); + } else { + if (strcmp(lang_->name(), w->lang()->name()) != 0) + return make_err(mismatched_language, lang_->name(), w->lang()->name()); + } + + // add to master list + wc->next = dicts_; + dicts_ = wc; + + // check if it has a special_id and act accordingly + switch (wc->special_id) { + case main_id: + assert(main_ == 0); + main_ = w; + break; + case personal_id: + assert(personal_ == 0); + personal_ = w; + break; + case session_id: + assert(session_ == 0); + session_ = w; + break; + case personal_repl_id: + assert(repl_ == 0); + repl_ = w; + break; + case none_id: + break; + } + + return no_err; + } + + ////////////////////////////////////////////////////////////////////// + // + // Config Notifier + // + + struct UpdateMember { + const char * name; + enum Type {String, Int, Bool, Add, Rem, RemAll}; + Type type; + union Fun { + typedef PosibErr<void> (*WithStr )(SpellerImpl *, const char *); + typedef PosibErr<void> (*WithInt )(SpellerImpl *, int); + typedef PosibErr<void> (*WithBool)(SpellerImpl *, bool); + WithStr with_str; + WithInt with_int; + WithBool with_bool; + Fun() {} + Fun(WithStr m) : with_str (m) {} + Fun(WithInt m) : with_int (m) {} + Fun(WithBool m) : with_bool(m) {} + PosibErr<void> call(SpellerImpl * m, const char * val) const + {return (*with_str) (m,val);} + PosibErr<void> call(SpellerImpl * m, int val) const + {return (*with_int) (m,val);} + PosibErr<void> call(SpellerImpl * m, bool val) const + {return (*with_bool)(m,val);} + } fun; + typedef SpellerImpl::ConfigNotifier CN; + }; + + template <typename T> + PosibErr<void> callback(SpellerImpl * m, const KeyInfo * ki, T value, + UpdateMember::Type t); + + class SpellerImpl::ConfigNotifier : public Notifier { + private: + SpellerImpl * speller_; + public: + ConfigNotifier(SpellerImpl * m) + : speller_(m) + {} + + PosibErr<void> item_updated(const KeyInfo * ki, int value) { + return callback(speller_, ki, value, UpdateMember::Int); + } + PosibErr<void> item_updated(const KeyInfo * ki, bool value) { + return callback(speller_, ki, value, UpdateMember::Bool); + } + PosibErr<void> item_updated(const KeyInfo * ki, ParmStr value) { + return callback(speller_, ki, value, UpdateMember::String); + } + + static PosibErr<void> ignore(SpellerImpl * m, int value) { + m->ignore_count = value; + return no_err; + } + static PosibErr<void> ignore_accents(SpellerImpl * m, bool value) { + return no_err; + } + static PosibErr<void> ignore_case(SpellerImpl * m, bool value) { + m->s_cmp.case_insensitive = value; + m->s_cmp_begin.case_insensitive = value; + m->s_cmp_middle.case_insensitive = value; + m->s_cmp_end.case_insensitive = value; + return no_err; + } + static PosibErr<void> ignore_repl(SpellerImpl * m, bool value) { + + m->ignore_repl = value; + return no_err; + } + static PosibErr<void> save_repl(SpellerImpl * m, bool value) { + // FIXME + // m->save_on_saveall(DataSet::Id(&m->personal_repl()), value); + abort(); return no_err; + } + static PosibErr<void> sug_mode(SpellerImpl * m, const char * mode) { + RET_ON_ERR(m->suggest_->set_mode(mode)); + RET_ON_ERR(m->intr_suggest_->set_mode(mode)); + return no_err; + } + static PosibErr<void> run_together(SpellerImpl * m, bool value) { + m->unconditional_run_together_ = value; + m->run_together = m->unconditional_run_together_; + return no_err; + } + static PosibErr<void> run_together_limit(SpellerImpl * m, int value) { + if (value > 8) { + m->config()->replace("run-together-limit", "8"); + // will loop back + } else { + m->run_together_limit_ = value; + } + return no_err; + } + static PosibErr<void> run_together_min(SpellerImpl * m, int value) { + m->run_together_min_ = value; + return no_err; + } + + }; + + static UpdateMember update_members[] = + { + {"ignore", UpdateMember::Int, UpdateMember::CN::ignore} + ,{"ignore-accents",UpdateMember::Bool, UpdateMember::CN::ignore_accents} + ,{"ignore-case", UpdateMember::Bool, UpdateMember::CN::ignore_case} + ,{"ignore-repl", UpdateMember::Bool, UpdateMember::CN::ignore_repl} + //,{"save-repl", UpdateMember::Bool, UpdateMember::CN::save_repl} + ,{"sug-mode", UpdateMember::String, UpdateMember::CN::sug_mode} + ,{"run-together", + UpdateMember::Bool, + UpdateMember::CN::run_together} + ,{"run-together-limit", + UpdateMember::Int, + UpdateMember::CN::run_together_limit} + ,{"run-together-min", + UpdateMember::Int, + UpdateMember::CN::run_together_min} + }; + + template <typename T> + PosibErr<void> callback(SpellerImpl * m, const KeyInfo * ki, T value, + UpdateMember::Type t) + { + const UpdateMember * i + = update_members; + const UpdateMember * end + = i + sizeof(update_members)/sizeof(UpdateMember); + while (i != end) { + if (strcmp(ki->name, i->name) == 0) { + if (i->type == t) { + RET_ON_ERR(i->fun.call(m, value)); + break; + } + } + ++i; + } + return no_err; + } + + ////////////////////////////////////////////////////////////////////// + // + // SpellerImpl inititization members + // + + SpellerImpl::SpellerImpl() + : Speller(0) /* FIXME */, ignore_repl(true), + dicts_(0), personal_(0), session_(0), repl_(0), main_(0) + {} + + inline PosibErr<void> add_dicts(SpellerImpl * sp, DictList & d) + { + for (;!d.empty(); d.pop()) + { + if (!sp->locate(d.last()->id())) { + RET_ON_ERR(sp->add_dict(new SpellerDict(d.last()))); + } + } + return no_err; + } + + PosibErr<void> SpellerImpl::setup(Config * c) { + assert (config_ == 0); + config_.reset(c); + + ignore_repl = config_->retrieve_bool("ignore-repl"); + ignore_count = config_->retrieve_int("ignore"); + + DictList to_add; + RET_ON_ERR(add_data_set(config_->retrieve("master-path"), *config_, &to_add, this)); + RET_ON_ERR(add_dicts(this, to_add)); + + s_cmp.lang = lang_; + s_cmp.case_insensitive = config_->retrieve_bool("ignore-case"); + + s_cmp_begin.lang = lang_; + s_cmp_begin.case_insensitive = s_cmp.case_insensitive; + s_cmp_begin.end = false; + + s_cmp_middle.lang = lang_; + s_cmp_middle.case_insensitive = s_cmp.case_insensitive; + s_cmp_middle.begin = false; + s_cmp_middle.end = false; + + s_cmp_end.lang = lang_; + s_cmp_end.case_insensitive = s_cmp.case_insensitive; + s_cmp_end.begin = false; + + StringList extra_dicts; + config_->retrieve_list("extra-dicts", &extra_dicts); + StringListEnumeration els = extra_dicts.elements_obj(); + const char * dict_name; + while ( (dict_name = els.next()) != 0) { + RET_ON_ERR(add_data_set(dict_name,*config_, &to_add, this)); + RET_ON_ERR(add_dicts(this, to_add)); + } + + bool use_other_dicts = config_->retrieve_bool("use-other-dicts"); + + if (use_other_dicts && !personal_) + { + Dictionary * temp; + temp = new_default_writable_dict(); + PosibErrBase pe = temp->load(config_->retrieve("personal-path"),*config_); + if (pe.has_err(cant_read_file)) + temp->set_check_lang(lang_name(), *config_); + else if (pe.has_err()) + return pe; + RET_ON_ERR(add_dict(new SpellerDict(temp, *config_, personal_id))); + } + + if (use_other_dicts && !session_) + { + Dictionary * temp; + temp = new_default_writable_dict(); + temp->set_check_lang(lang_name(), *config_); + RET_ON_ERR(add_dict(new SpellerDict(temp, *config_, session_id))); + } + + if (use_other_dicts && !repl_) + { + ReplacementDict * temp = new_default_replacement_dict(); + PosibErrBase pe = temp->load(config_->retrieve("repl-path"),*config_); + if (pe.has_err(cant_read_file)) + temp->set_check_lang(lang_name(), *config_); + else if (pe.has_err()) + return pe; + RET_ON_ERR(add_dict(new SpellerDict(temp, *config_, personal_repl_id))); + } + + const char * sys_enc = lang_->charmap(); + String user_enc = config_->retrieve("encoding"); + if (user_enc == "none") { + config_->replace("encoding", sys_enc); + user_enc = sys_enc; + } + + PosibErr<Convert *> conv; + conv = new_convert(*c, user_enc, sys_enc, NormFrom); + if (conv.has_err()) return conv; + to_internal_.reset(conv); + conv = new_convert(*c, sys_enc, user_enc, NormTo); + if (conv.has_err()) return conv; + from_internal_.reset(conv); + + unconditional_run_together_ = config_->retrieve_bool("run-together"); + run_together = unconditional_run_together_; + + run_together_limit_ = config_->retrieve_int("run-together-limit"); + if (run_together_limit_ > 8) { + config_->replace("run-together-limit", "8"); + run_together_limit_ = 8; + } + run_together_min_ = config_->retrieve_int("run-together-min"); + + config_->add_notifier(new ConfigNotifier(this)); + + config_->set_attached(true); + + affix_info = lang_->affix(); + + // + // setup word set lists + // + + typedef Vector<SpellerDict *> AllWS; AllWS all_ws; + for (SpellerDict * i = dicts_; i; i = i->next) { + if (i->dict->basic_type == Dict::basic_dict || + i->dict->basic_type == Dict::replacement_dict) { + all_ws.push_back(i); + } + } + + const std::type_info * ti = 0; + while (!all_ws.empty()) + { + AllWS::iterator i0 = all_ws.end(); + int max = -2; + AllWS::iterator i = all_ws.begin(); + for (; i != all_ws.end(); ++i) + { + const Dictionary * ws = (*i)->dict; + if (ti && *ti != typeid(*ws)) continue; + if ((int)ws->size() > max) {max = ws->size(); i0 = i;} + } + + if (i0 == all_ws.end()) {ti = 0; continue;} + + SpellerDict * cur = *i0; + + all_ws.erase(i0); + + ti = &typeid(*cur->dict); + + if (cur->use_to_check) { + check_ws.push_back(cur->dict); + if (cur->dict->affix_compressed) affix_ws.push_back(cur->dict); + } + if (cur->use_to_suggest) { + suggest_ws.push_back(cur->dict); + if (cur->dict->affix_compressed) suggest_affix_ws.push_back(cur->dict); + } + } + fast_scan = suggest_ws.front()->fast_scan; + fast_lookup = suggest_ws.front()->fast_lookup; + have_soundslike = lang_->have_soundslike(); + have_repl = lang_->have_repl(); + invisible_soundslike = suggest_ws.front()->invisible_soundslike; + soundslike_root_only = suggest_ws.front()->soundslike_root_only; + affix_compress = !affix_ws.empty(); + + // + // Setup suggest + // + + PosibErr<Suggest *> pe; + pe = new_default_suggest(this); + if (pe.has_err()) return pe; + suggest_.reset(pe.data); + pe = new_default_suggest(this); + if (pe.has_err()) return pe; + intr_suggest_.reset(pe.data); + + return no_err; + } + + ////////////////////////////////////////////////////////////////////// + // + // SpellerImpl destrution members + // + + SpellerImpl::~SpellerImpl() { + while (dicts_) { + SpellerDict * next = dicts_->next; + delete dicts_; + dicts_ = next; + } + } + + ////////////////////////////////////////////////////////////////////// + // + // SpellerImple setup tokenizer method + // + + void SpellerImpl::setup_tokenizer(Tokenizer * tok) + { + for (int i = 0; i != 256; ++i) + { + tok->char_type_[i].word = lang_->is_alpha(i); + tok->char_type_[i].begin = lang_->special(i).begin; + tok->char_type_[i].middle = lang_->special(i).middle; + tok->char_type_[i].end = lang_->special(i).end; + } + tok->conv_ = to_internal_; + } + + + ////////////////////////////////////////////////////////////////////// + // + // + // + + SpellerDict::SpellerDict(Dict * d) + : dict(d), special_id(none_id), next(0) + { + switch (dict->basic_type) { + case Dict::basic_dict: + use_to_check = true; + use_to_suggest = true; + break; + case Dict::replacement_dict: + use_to_check = false; + use_to_suggest = true; + case Dict::multi_dict: + break; + default: + abort(); + } + save_on_saveall = false; + } + + SpellerDict::SpellerDict(Dict * w, const Config & c, SpecialId id) + : next(0) + { + dict = w; + special_id = id; + switch (id) { + case main_id: + if (dict->basic_type == Dict::basic_dict) { + + use_to_check = true; + use_to_suggest = true; + save_on_saveall = false; + + } else if (dict->basic_type == Dict::replacement_dict) { + + use_to_check = false; + use_to_suggest = false; + save_on_saveall = false; + + } else { + + abort(); + + } + break; + case personal_id: + use_to_check = true; + use_to_suggest = true; + save_on_saveall = true; + break; + case session_id: + use_to_check = true; + use_to_suggest = true; + save_on_saveall = false; + break; + case personal_repl_id: + use_to_check = false; + use_to_suggest = true; + save_on_saveall = c.retrieve_bool("save-repl"); + break; + case none_id: + break; + } + } + + extern "C" + Speller * libaspell_speller_default_LTX_new_speller_class(SpellerLtHandle) + { + return new SpellerImpl(); + } +} + diff --git a/jni/modules/speller/default/speller_impl.hpp b/jni/modules/speller/default/speller_impl.hpp new file mode 100644 index 0000000..342b936 --- /dev/null +++ b/jni/modules/speller/default/speller_impl.hpp @@ -0,0 +1,262 @@ +// Aspell main C++ include file +// Copyright 1998-2000 by Kevin Atkinson under the terms of the LGPL. + +#ifndef __aspeller_speller__ +#define __aspeller_speller__ + +#include <vector> + +#include "clone_ptr.hpp" +#include "copy_ptr.hpp" +#include "data.hpp" +#include "enumeration.hpp" +#include "speller.hpp" +#include "check_list.hpp" + +using namespace acommon; + +namespace acommon { + class StringMap; + class Config; + class WordList; +} +// The speller class is responsible for keeping track of the +// dictionaries coming up with suggestions and the like. Its methods +// are NOT meant to be used my multiple threads and/or documents. + +namespace aspeller { + + class Language; + class SensitiveCompare; + class Suggest; + + enum SpecialId {main_id, personal_id, session_id, + personal_repl_id, none_id}; + + struct SpellerDict + { + Dict * dict; + bool use_to_check; + bool use_to_suggest; + bool save_on_saveall; + SpecialId special_id; + SpellerDict * next; + SpellerDict(Dict *); + SpellerDict(Dict *, const Config &, SpecialId id = none_id); + ~SpellerDict() {if (dict) dict->release();} + }; + + class SpellerImpl : public Speller + { + public: + SpellerImpl(); // does not set anything up. + ~SpellerImpl(); + + PosibErr<void> setup(Config *); + + void setup_tokenizer(Tokenizer *); + + // + // Low level Word List Management methods + // + + public: + + typedef Enumeration<Dict *> * WordLists; + + WordLists wordlists() const; + int num_wordlists() const; + + const SpellerDict * locate (const Dict::Id &) const; + + // + // Add a single dictionary that has not been previously added + // + PosibErr<void> add_dict(SpellerDict *); + + PosibErr<const WordList *> personal_word_list () const; + PosibErr<const WordList *> session_word_list () const; + PosibErr<const WordList *> main_word_list () const; + + // + // Language methods + // + + char * to_lower(char *); + + const char * lang_name() const; + + const Language & lang() const {return *lang_;} + + // + // Spelling methods + // + + PosibErr<bool> check(char * word, char * word_end, /* it WILL modify word */ + bool try_uppercase, + unsigned run_together_limit, + CheckInfo *, GuessInfo *); + + PosibErr<bool> check(MutableString word) { + guess_info.reset(); + return check(word.begin(), word.end(), false, + unconditional_run_together_ ? run_together_limit_ : 0, + check_inf, &guess_info); + } + PosibErr<bool> check(ParmString word) + { + std::vector<char> w(word.size()+1); + strncpy(&*w.begin(), word, w.size()); + return check(MutableString(&w.front(), w.size() - 1)); + } + + PosibErr<bool> check(const char * word) {return check(ParmString(word));} + + bool check2(char * word, /* it WILL modify word */ + bool try_uppercase, + CheckInfo & ci, GuessInfo * gi); + + bool check_affix(ParmString word, CheckInfo & ci, GuessInfo * gi); + + bool check_simple(ParmString, WordEntry &); + + const CheckInfo * check_info() { + if (check_inf[0].word) + return check_inf; + else if (guess_info.head) + return guess_info.head; + else + return 0; + } + + // + // High level Word List management methods + // + + PosibErr<void> add_to_personal(MutableString word); + PosibErr<void> add_to_session(MutableString word); + + PosibErr<void> save_all_word_lists(); + + PosibErr<void> clear_session(); + + PosibErr<const WordList *> suggest(MutableString word); + // the suggestion list and the elements in it are only + // valid until the next call to suggest. + + PosibErr<void> store_replacement(MutableString mis, + MutableString cor); + + PosibErr<void> store_replacement(const String & mis, const String & cor, + bool memory); + + // + // Private Stuff (from here to the end of the class) + // + + class DictCollection; + class ConfigNotifier; + + private: + friend class ConfigNotifier; + + CachePtr<const Language> lang_; + CopyPtr<SensitiveCompare> sensitive_compare_; + //CopyPtr<DictCollection> wls_; + ClonePtr<Suggest> suggest_; + ClonePtr<Suggest> intr_suggest_; + unsigned int ignore_count; + bool ignore_repl; + String prev_mis_repl_; + String prev_cor_repl_; + + void operator= (const SpellerImpl &other); + SpellerImpl(const SpellerImpl &other); + + SpellerDict * dicts_; + + Dictionary * personal_; + Dictionary * session_; + ReplacementDict * repl_; + Dictionary * main_; + + public: + // these are public so that other classes and functions can use them, + // DO NOT USE + + const SensitiveCompare & sensitive_compare() const {return *sensitive_compare_;} + + //const DictCollection & data_set_collection() const {return *wls_;} + + PosibErr<void> set_check_lang(ParmString lang, ParmString lang_dir); + + double distance (const char *, const char *, + const char *, const char *) const; + + CheckInfo check_inf[8]; + GuessInfo guess_info; + + SensitiveCompare s_cmp; + SensitiveCompare s_cmp_begin; + SensitiveCompare s_cmp_middle; + SensitiveCompare s_cmp_end; + + typedef Vector<const Dict *> WS; + WS check_ws, affix_ws, suggest_ws, suggest_affix_ws; + + bool unconditional_run_together_; + unsigned int run_together_limit_; + unsigned int run_together_min_; + + bool affix_info, affix_compress; + + bool have_repl; + + bool have_soundslike; + + bool invisible_soundslike, soundslike_root_only; + + bool fast_scan, fast_lookup; + + bool run_together; + + }; + + struct LookupInfo { + SpellerImpl * sp; + enum Mode {Word, Guess, Clean, Soundslike, AlwaysTrue} mode; + SpellerImpl::WS::const_iterator begin; + SpellerImpl::WS::const_iterator end; + inline LookupInfo(SpellerImpl * s, Mode m); + // returns 0 if nothing found + // 1 if a match is found + // -1 if a word is found but affix doesn't match and "gi" + int lookup (ParmString word, const SensitiveCompare * c, char aff, + WordEntry & o, GuessInfo * gi) const; + }; + + inline LookupInfo::LookupInfo(SpellerImpl * s, Mode m) + : sp(s), mode(m) + { + switch (m) { + case Word: + begin = sp->affix_ws.begin(); + end = sp->affix_ws.end(); + return; + case Guess: + begin = sp->check_ws.begin(); + end = sp->check_ws.end(); + mode = Word; + return; + case Clean: + case Soundslike: + begin = sp->suggest_affix_ws.begin(); + end = sp->suggest_affix_ws.end(); + return; + case AlwaysTrue: + return; + } + } +} + +#endif diff --git a/jni/modules/speller/default/speller_impl.lo b/jni/modules/speller/default/speller_impl.lo new file mode 100644 index 0000000..afd434f --- /dev/null +++ b/jni/modules/speller/default/speller_impl.lo @@ -0,0 +1,12 @@ +# modules/speller/default/speller_impl.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/speller_impl.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/suggest.cpp b/jni/modules/speller/default/suggest.cpp new file mode 100644 index 0000000..92da127 --- /dev/null +++ b/jni/modules/speller/default/suggest.cpp @@ -0,0 +1,1430 @@ +// Copyright 2000-2005 by Kevin Atkinson under the terms of the LGPL + +// suggest.cpp Suggestion code for Aspell + +// The magic behind my spell checker comes from merging Lawrence +// Philips excellent metaphone algorithm and Ispell's near miss +// strategy which is inserting a space or hyphen, interchanging two +// adjacent letters, changing one letter, deleting a letter, or adding +// a letter. +// +// The process goes something like this. +// +// 1. Convert the misspelled word to its soundslike equivalent (its +// metaphone for English words). +// +// 2. Find words that have the same soundslike pattern. +// +// 3. Find words that have similar soundslike patterns. A similar +// soundlike pattern is a pattern that is obtained by +// interchanging two adjacent letters, changing one letter, +// deleting a letter, or adding a letter. +// +// 4. Score the result list and return the words with the lowest +// score. The score is roughly the weighed average of the edit +// distance of the word to the misspelled word, the soundslike +// equivalent of the two words, and the phoneme of the two words. +// The edit distance is the weighed total of the number of +// deletions, insertions, exchanges, or adjacent swaps needed to +// make one string equivalent to the other. +// +// Please note that the soundlike equivalent is a rough approximation +// of how the words sounds. It is not the phoneme of the word by any +// means. For more information on the metaphone algorithm please see +// the file metaphone.cc which included a detailed description of it. +// +// NOTE: It is assumed that that strlen(soundslike) <= strlen(word) +// for any possible word + +// POSSIBLE OPTIMIZATION: +// store the number of letters that are the same as the previous +// soundslike so that it can possible be skipped + +#include "getdata.hpp" + +#include "fstream.hpp" + +#include "speller_impl.hpp" +#include "asuggest.hpp" +#include "basic_list.hpp" +#include "clone_ptr-t.hpp" +#include "config.hpp" +#include "data.hpp" +#include "editdist.hpp" +#include "editdist2.hpp" +#include "errors.hpp" +#include "file_data_util.hpp" +#include "hash-t.hpp" +#include "language.hpp" +#include "leditdist.hpp" +#include "speller_impl.hpp" +#include "stack_ptr.hpp" +#include "suggest.hpp" +#include "vararray.hpp" +#include "string_list.hpp" + +#include "gettext.h" + +//#include "iostream.hpp" +//#define DEBUG_SUGGEST + +using namespace aspeller; +using namespace acommon; +using namespace std; + +namespace { + + typedef vector<String> NearMissesFinal; + + template <class Iterator> + inline Iterator preview_next (Iterator i) { + return ++i; + } + + // + // OriginalWord stores infomation about the original misspelled word + // for convince and speed. + // + struct OriginalWord { + String word; + String lower; + String clean; + String soundslike; + CasePattern case_pattern; + OriginalWord() {} + }; + + // + // struct ScoreWordSound - used for storing the possible words while + // they are being processed. + // + + struct ScoreWordSound { + char * word; + char * word_clean; + //unsigned word_size; + const char * soundslike; + int score; + int word_score; + int soundslike_score; + bool count; + WordEntry * repl_list; + ScoreWordSound() {repl_list = 0;} + ~ScoreWordSound() {delete repl_list;} + }; + + inline int compare (const ScoreWordSound &lhs, + const ScoreWordSound &rhs) + { + int temp = lhs.score - rhs.score; + if (temp) return temp; + return strcmp(lhs.word,rhs.word); + } + + inline bool operator < (const ScoreWordSound & lhs, + const ScoreWordSound & rhs) { + return compare(lhs, rhs) < 0; + } + + inline bool operator <= (const ScoreWordSound & lhs, + const ScoreWordSound & rhs) { + return compare(lhs, rhs) <= 0; + } + + inline bool operator == (const ScoreWordSound & lhs, + const ScoreWordSound & rhs) { + return compare(lhs, rhs) == 0; + } + + typedef BasicList<ScoreWordSound> NearMisses; + + class Score { + protected: + const Language * lang; + OriginalWord original; + const SuggestParms * parms; + + public: + Score(const Language *l, const String &w, const SuggestParms * p) + : lang(l), original(), parms(p) + { + original.word = w; + l->to_lower(original.lower, w.str()); + l->to_clean(original.clean, w.str()); + l->to_soundslike(original.soundslike, w.str()); + original.case_pattern = l->case_pattern(w); + + } + void fix_case(char * str) { + lang->LangImpl::fix_case(original.case_pattern, str, str); + } + const char * fix_case(const char * str, String & buf) { + return lang->LangImpl::fix_case(original.case_pattern, str, buf); + } + }; + + class Working : public Score { + + int threshold; + int try_harder; + + EditDist (* edit_dist_fun)(const char *, const char *, + const EditDistanceWeights &); + + unsigned int max_word_length; + + SpellerImpl * sp; + NearMisses scored_near_misses; + NearMisses near_misses; + NearMissesFinal * near_misses_final; + + char * temp_end; + + ObjStack buffer; + ObjStack temp_buffer; + + static const bool do_count = true; + static const bool dont_count = false; + + CheckInfo check_info[8]; + + void commit_temp(const char * b) { + if (temp_end) { + buffer.resize_temp(temp_end - b + 1); + buffer.commit_temp(); + temp_end = 0; }} + void abort_temp() { + buffer.abort_temp(); + temp_end = 0;} + const char * to_soundslike_temp(const char * w, unsigned s, unsigned * len = 0) { + char * sl = (char *)buffer.alloc_temp(s + 1); + temp_end = lang->LangImpl::to_soundslike(sl, w, s); + if (len) *len = temp_end - sl; + return sl;} + const char * to_soundslike_temp(const WordEntry & sw) { + char * sl = (char *)buffer.alloc_temp(sw.word_size + 1); + temp_end = lang->LangImpl::to_soundslike(sl, sw.word, sw.word_size, sw.word_info); + if (temp_end == 0) return sw.word; + else return sl;} + const char * to_soundslike(const char * w, unsigned s) { + char * sl = (char *)buffer.alloc_temp(s + 1); + temp_end = lang->LangImpl::to_soundslike(sl, w, s); + commit_temp(sl); + return sl;} + + MutableString form_word(CheckInfo & ci); + void try_word_n(ParmString str, int score); + bool check_word_s(ParmString word, CheckInfo * ci); + unsigned check_word(char * word, char * word_end, CheckInfo * ci, + /* it WILL modify word */ + unsigned pos = 1); + void try_word_c(char * word, char * word_end, int score); + + void try_word(char * word, char * word_end, int score) { + if (sp->unconditional_run_together_) + try_word_c(word,word_end,score); + else + try_word_n(word,score); + } + + void add_sound(SpellerImpl::WS::const_iterator i, + WordEntry * sw, const char * sl, int score = -1); + void add_nearmiss(char * word, unsigned word_size, WordInfo word_info, + const char * sl, + int w_score, int sl_score, + bool count = do_count, WordEntry * rl = 0); + void add_nearmiss(SpellerImpl::WS::const_iterator, const WordEntry & w, + const char * sl, + int w_score, int sl_score, bool count = do_count); + void add_nearmiss(SpellerImpl::WS::const_iterator, const WordAff * w, + const char * sl, + int w_score, int sl_score, bool count = do_count); + bool have_score(int score) {return score < LARGE_NUM;} + int needed_level(int want, int soundslike_score) { + int n = (100*want - parms->soundslike_weight*soundslike_score) + /(parms->word_weight*parms->edit_distance_weights.min); + return n > 0 ? n : 0; + } + int weighted_average(int soundslike_score, int word_score) { + return (parms->word_weight*word_score + + parms->soundslike_weight*soundslike_score)/100; + } + int skip_first_couple(NearMisses::iterator & i) { + int k = 0; + InsensitiveCompare cmp(lang); + const char * prev_word = ""; + while (preview_next(i) != scored_near_misses.end()) + // skip over the first couple of items as they should + // not be counted in the threshold score. + { + if (!i->count || cmp(prev_word, i->word) == 0) { + ++i; + } else if (k == parms->skip) { + break; + } else { + prev_word = i->word; + ++k; + ++i; + } + } + return k; + } + + void try_split(); + void try_one_edit_word(); + void try_scan(); + void try_scan_root(); + void try_repl(); + void try_ngram(); + + void score_list(); + void fine_tune_score(); + void transfer(); + public: + Working(SpellerImpl * m, const Language *l, + const String & w, const SuggestParms * p) + : Score(l,w,p), threshold(1), max_word_length(0), sp(m) { + memset(check_info, 0, sizeof(check_info)); + } + void get_suggestions(NearMissesFinal &sug); + }; + + void Working::get_suggestions(NearMissesFinal & sug) { + + if (original.word.size() * parms->edit_distance_weights.max >= 0x8000) + return; // to prevent overflow in the editdist functions + + near_misses_final = & sug; + + try_split(); + + if (parms->use_repl_table) { + +#ifdef DEBUG_SUGGEST + COUT.printl("TRYING REPLACEMENT TABLE"); +#endif + + try_repl(); + } + + if (parms->try_one_edit_word) { + +#ifdef DEBUG_SUGGEST + COUT.printl("TRYING ONE EDIT WORD"); +#endif + + try_one_edit_word(); + + if (parms->check_after_one_edit_word) { + score_list(); + if (try_harder <= 0) goto done; + } + + } + + if (parms->try_scan_1) { + +#ifdef DEBUG_SUGGEST + COUT.printl("TRYING SCAN 1"); +#endif + edit_dist_fun = limit1_edit_distance; + + if (sp->soundslike_root_only) + try_scan_root(); + else + try_scan(); + + score_list(); + + if (try_harder <= 0) goto done; + + } + + if (parms->try_scan_2) { + +#ifdef DEBUG_SUGGEST + COUT.printl("TRYING SCAN 2"); +#endif + + edit_dist_fun = limit2_edit_distance; + + if (sp->soundslike_root_only) + try_scan_root(); + else + try_scan(); + + score_list(); + + if (try_harder < parms->ngram_threshold) goto done; + + } + + if (parms->try_ngram) { + +#ifdef DEBUG_SUGGEST + COUT.printl("TRYING NGRAM"); +#endif + + try_ngram(); + + score_list(); + + } + + done: + + fine_tune_score(); + + transfer(); + } + + // Forms a word by combining CheckInfo fields. + // Will grow the grow the temp in the buffer. The final + // word must be null terminated and commited. + // It returns a MutableString of what was appended to the buffer. + MutableString Working::form_word(CheckInfo & ci) + { + size_t slen = ci.word.size() - ci.pre_strip_len - ci.suf_strip_len; + size_t wlen = slen + ci.pre_add_len + ci.suf_add_len; + char * tmp = (char *)buffer.grow_temp(wlen); + if (ci.pre_add_len) + memcpy(tmp, ci.pre_add, ci.pre_add_len); + memcpy(tmp + ci.pre_add_len, ci.word.str() + ci.pre_strip_len, slen); + if (ci.suf_add_len) + memcpy(tmp + ci.pre_add_len + slen, ci.suf_add, ci.suf_add_len); + return MutableString(tmp,wlen); + } + + void Working::try_word_n(ParmString str, int score) + { + String word; + String buf; + WordEntry sw; + for (SpellerImpl::WS::const_iterator i = sp->suggest_ws.begin(); + i != sp->suggest_ws.end(); + ++i) + { + (*i)->clean_lookup(str, sw); + for (;!sw.at_end(); sw.adv()) + add_nearmiss(i, sw, 0, score, -1, do_count); + } + if (sp->affix_compress) { + CheckInfo ci; memset(&ci, 0, sizeof(ci)); + bool res = lang->affix()->affix_check(LookupInfo(sp, LookupInfo::Clean), str, ci, 0); + if (!res) return; + form_word(ci); + char * end = (char *)buffer.grow_temp(1); + char * tmp = (char *)buffer.temp_ptr(); + buffer.commit_temp(); + *end = '\0'; + add_nearmiss(tmp, end - tmp, 0, 0, score, -1, do_count); + } + } + + bool Working::check_word_s(ParmString word, CheckInfo * ci) + { + WordEntry sw; + for (SpellerImpl::WS::const_iterator i = sp->suggest_ws.begin(); + i != sp->suggest_ws.end(); + ++i) + { + (*i)->clean_lookup(word, sw); + if (!sw.at_end()) { + ci->word = sw.word; + return true; + } + } + if (sp->affix_compress) { + return lang->affix()->affix_check(LookupInfo(sp, LookupInfo::Clean), word, *ci, 0); + } + return false; + } + + unsigned Working::check_word(char * word, char * word_end, CheckInfo * ci, + /* it WILL modify word */ + unsigned pos) + { + unsigned res = check_word_s(word, ci); + if (res) return pos + 1; + if (pos + 1 >= sp->run_together_limit_) return 0; + for (char * i = word + sp->run_together_min_; + i <= word_end - sp->run_together_min_; + ++i) + { + char t = *i; + *i = '\0'; + res = check_word_s(word, ci); + *i = t; + if (!res) continue; + res = check_word(i, word_end, ci + 1, pos + 1); + if (res) return res; + } + memset(ci, 0, sizeof(CheckInfo)); + return 0; + } + + void Working::try_word_c(char * word, char * word_end, int score) + { + unsigned res = check_word(word, word_end, check_info); + assert(res <= sp->run_together_limit_); + //CERR.printf(">%s\n", word); + if (!res) return; + buffer.abort_temp(); + MutableString tmp = form_word(check_info[0]); + CasePattern cp = lang->case_pattern(tmp, tmp.size); + for (unsigned i = 1; i <= res; ++i) { + char * t = form_word(check_info[i]); + if (cp == FirstUpper && lang->is_lower(t[1])) + t[0] = lang->to_lower(t[0]); + } + char * end = (char *)buffer.grow_temp(1); + char * beg = (char *)buffer.temp_ptr(); // since the orignal string may of moved + *end = 0; + buffer.commit_temp(); + add_nearmiss(beg, end - beg, 0, 0, score, -1, do_count); + //CERR.printl(tmp); + memset(check_info, 0, sizeof(CheckInfo)*res); + } + + void Working::add_nearmiss(char * word, unsigned word_size, + WordInfo word_info, + const char * sl, + int w_score, int sl_score, + bool count, WordEntry * rl) + { + if (word_size * parms->edit_distance_weights.max >= 0x8000) + return; // to prevent overflow in the editdist functions + + if (w_score < 0) w_score = LARGE_NUM; + if (sl_score < 0) sl_score = LARGE_NUM; + if (!sp->have_soundslike) { + if (w_score >= LARGE_NUM) w_score = sl_score; + else if (sl_score >= LARGE_NUM) sl_score = w_score; + } + + near_misses.push_front(ScoreWordSound()); + ScoreWordSound & d = near_misses.front(); + d.word = word; + d.soundslike = sl; + //d.word_size = word_size; + + if (parms->use_typo_analysis) { + unsigned int l = word_size; + if (l > max_word_length) max_word_length = l; + } + + if (!(word_info & ALL_CLEAN)) { + d.word_clean = (char *)buffer.alloc(word_size + 1); + lang->LangImpl::to_clean((char *)d.word_clean, word); + } else { + d.word_clean = d.word; + } + + if (!sp->have_soundslike && !d.soundslike) + d.soundslike = d.word_clean; + + d.word_score = w_score; + d.soundslike_score = sl_score; + d.count = count; + d.repl_list = rl; + } + + void Working::add_nearmiss(SpellerImpl::WS::const_iterator i, + const WordEntry & w, const char * sl, + int w_score, int sl_score, bool count) + { + assert(w.word_size == strlen(w.word)); + WordEntry * repl = 0; + if (w.what == WordEntry::Misspelled) { + repl = new WordEntry; + const ReplacementDict * repl_dict + = static_cast<const ReplacementDict *>(*i); + repl_dict->repl_lookup(w, *repl); + } + add_nearmiss(buffer.dup(ParmString(w.word, w.word_size)), + w.word_size, w.word_info, + sl, + w_score, sl_score, count, repl); + } + + void Working::add_nearmiss(SpellerImpl::WS::const_iterator i, + const WordAff * w, const char * sl, + int w_score, int sl_score, bool count) + { + add_nearmiss(buffer.dup(w->word), w->word.size, 0, + sl, + w_score, sl_score, count); + } + + void Working::try_split() { + const String & word = original.word; + + if (word.size() < 4 || parms->split_chars.empty()) return; + size_t i = 0; + + String new_word_str; + String buf; + new_word_str.resize(word.size() + 1); + char * new_word = new_word_str.data(); + memcpy(new_word, word.data(), word.size()); + new_word[word.size() + 1] = '\0'; + new_word[word.size() + 0] = new_word[word.size() - 1]; + + for (i = word.size() - 2; i >= 2; --i) { + new_word[i+1] = new_word[i]; + new_word[i] = '\0'; + + if (sp->check(new_word) && sp->check(new_word + i + 1)) { + for (size_t j = 0; j != parms->split_chars.size(); ++j) + { + new_word[i] = parms->split_chars[j]; + add_nearmiss(buffer.dup(new_word), word.size() + 1, 0, 0, + parms->edit_distance_weights.del2*3/2, -1, + dont_count); + } + } + } + } + + void Working::try_one_edit_word() + { + const String & orig = original.clean; + const char * replace_list = lang->clean_chars(); + char a,b; + const char * c; + VARARRAY(char, new_word, orig.size() + 2); + char * new_word_end = new_word + orig.size(); + size_t i; + + memcpy(new_word, orig.str(), orig.size() + 1); + + // Try word as is (in case of case difference etc) + + try_word(new_word, new_word_end, 0); + + // Change one letter + + for (i = 0; i != orig.size(); ++i) { + for (c = replace_list; *c; ++c) { + if (*c == orig[i]) continue; + new_word[i] = *c; + try_word(new_word, new_word_end, parms->edit_distance_weights.sub); + } + new_word[i] = orig[i]; + } + + // Interchange two adjacent letters. + + for (i = 0; i+1 < orig.size(); ++i) { + a = new_word[i]; + b = new_word[i+1]; + new_word[i] = b; + new_word[i+1] = a; + try_word(new_word, new_word_end, parms->edit_distance_weights.swap); + new_word[i] = a; + new_word[i+1] = b; + } + + // Add one letter + + *new_word_end = ' '; + new_word_end++; + *new_word_end = '\0'; + i = new_word_end - new_word - 1; + while(true) { + for (c=replace_list; *c; ++c) { + new_word[i] = *c; + try_word(new_word, new_word_end, parms->edit_distance_weights.del1); + } + if (i == 0) break; + new_word[i] = new_word[i-1]; + --i; + } + + // Delete one letter + + if (orig.size() > 1) { + memcpy(new_word, orig.str(), orig.size() + 1); + new_word_end = new_word + orig.size() - 1; + a = *new_word_end; + *new_word_end = '\0'; + i = orig.size() - 1; + while (true) { + try_word(new_word, new_word_end, parms->edit_distance_weights.del2); + if (i == 0) break; + b = a; + a = new_word[i-1]; + new_word[i-1] = b; + --i; + } + } + } + + void Working::add_sound(SpellerImpl::WS::const_iterator i, + WordEntry * sw, const char * sl, int score) + { + WordEntry w; + (*i)->soundslike_lookup(*sw, w); + + for (; !w.at_end(); w.adv()) { + + add_nearmiss(i, w, sl, -1, score); + + if (w.aff[0]) { + String sl_buf; + temp_buffer.reset(); + WordAff * exp_list; + exp_list = lang->affix()->expand(w.word, w.aff, temp_buffer); + for (WordAff * p = exp_list->next; p; p = p->next) + add_nearmiss(i, p, 0, -1, -1); + } + + } + } + + void Working::try_scan() + { + const char * original_soundslike = original.soundslike.str(); + + WordEntry * sw; + WordEntry w; + const char * sl = 0; + EditDist score; + unsigned int stopped_at = LARGE_NUM; + WordAff * exp_list; + WordAff single; + single.next = 0; + + for (SpellerImpl::WS::const_iterator i = sp->suggest_ws.begin(); + i != sp->suggest_ws.end(); + ++i) + { + //CERR.printf(">>%p %s\n", *i, typeid(**i).name()); + StackPtr<SoundslikeEnumeration> els((*i)->soundslike_elements()); + + while ( (sw = els->next(stopped_at)) ) { + + //CERR.printf("[%s (%d) %d]\n", sw->word, sw->word_size, sw->what); + //assert(strlen(sw->word) == sw->word_size); + + if (sw->what != WordEntry::Word) { + sl = sw->word; + abort_temp(); + } else if (!*sw->aff) { + sl = to_soundslike_temp(*sw); + } else { + goto affix_case; + } + + //CERR.printf("SL = %s\n", sl); + + score = edit_dist_fun(sl, original_soundslike, parms->edit_distance_weights); + stopped_at = score.stopped_at - sl; + if (score >= LARGE_NUM) continue; + stopped_at = LARGE_NUM; + commit_temp(sl); + add_sound(i, sw, sl, score); + continue; + + affix_case: + + temp_buffer.reset(); + + // first expand any prefixes + if (sp->fast_scan) { // if fast_scan than no prefixes + single.word.str = sw->word; + single.word.size = strlen(sw->word); + single.aff = (const unsigned char *)sw->aff; + exp_list = &single; + } else { + exp_list = lang->affix()->expand_prefix(sw->word, sw->aff, temp_buffer); + } + + // iterate through each semi-expanded word, any affix flags + // are now guaranteed to be suffixes + for (WordAff * p = exp_list; p; p = p->next) + { + // try the root word + unsigned sl_len; + sl = to_soundslike_temp(p->word.str, p->word.size, &sl_len); + score = edit_dist_fun(sl, original_soundslike, parms->edit_distance_weights); + stopped_at = score.stopped_at - sl; + stopped_at += p->word.size - sl_len; + + if (score < LARGE_NUM) { + commit_temp(sl); + add_nearmiss(i, p, sl, -1, score, do_count); + } + + // expand any suffixes, using stopped_at as a hint to avoid + // unneeded expansions. Note stopped_at is the last character + // looked at by limit_edit_dist. Thus if the character + // at stopped_at is changed it might effect the result + // hence the "limit" is stopped_at + 1 + if (p->word.size - lang->affix()->max_strip() > stopped_at) + exp_list = 0; + else + exp_list = lang->affix()->expand_suffix(p->word, p->aff, + temp_buffer, + stopped_at + 1); + + // reset stopped_at if necessary + if (score < LARGE_NUM) stopped_at = LARGE_NUM; + + // iterate through fully expanded words, if any + for (WordAff * q = exp_list; q; q = q->next) { + sl = to_soundslike_temp(q->word.str, q->word.size); + score = edit_dist_fun(sl, original_soundslike, parms->edit_distance_weights); + if (score >= LARGE_NUM) continue; + commit_temp(sl); + add_nearmiss(i, q, sl, -1, score, do_count); + } + } + } + } + } + + void Working::try_scan_root() + { + + WordEntry * sw; + WordEntry w; + const char * sl = 0; + EditDist score; + int stopped_at = LARGE_NUM; + GuessInfo gi; + lang->munch(original.word, &gi); + Vector<const char *> sls; + sls.push_back(original.soundslike.str()); +#ifdef DEBUG_SUGGEST + COUT.printf("will try soundslike: %s\n", sls.back()); +#endif + for (const aspeller::CheckInfo * ci = gi.head; + ci; + ci = ci->next) + { + sl = to_soundslike(ci->word.str(), ci->word.size()); + Vector<const char *>::iterator i = sls.begin(); + while (i != sls.end() && strcmp(*i, sl) != 0) ++i; + if (i == sls.end()) { + sls.push_back(to_soundslike(ci->word.str(), ci->word.size())); +#ifdef DEBUG_SUGGEST + COUT.printf("will try root soundslike: %s\n", sls.back()); +#endif + } + } + const char * * begin = sls.pbegin(); + const char * * end = sls.pend(); + for (SpellerImpl::WS::const_iterator i = sp->suggest_ws.begin(); + i != sp->suggest_ws.end(); + ++i) + { + StackPtr<SoundslikeEnumeration> els((*i)->soundslike_elements()); + + while ( (sw = els->next(stopped_at)) ) { + + if (sw->what != WordEntry::Word) { + sl = sw->word; + abort_temp(); + } else { + sl = to_soundslike_temp(*sw); + } + + stopped_at = LARGE_NUM; + for (const char * * s = begin; s != end; ++s) { + score = edit_dist_fun(sl, *s, + parms->edit_distance_weights); + if (score.stopped_at - sl < stopped_at) + stopped_at = score.stopped_at - sl; + if (score >= LARGE_NUM) continue; + stopped_at = LARGE_NUM; + commit_temp(sl); + add_sound(i, sw, sl, score); + //CERR.printf("using %s: will add %s with score %d\n", *s, sl, (int)score); + break; + } + } + } + } + + struct ReplTry + { + const char * begin; + const char * end; + const char * repl; + size_t repl_len; + ReplTry(const char * b, const char * e, const char * r) + : begin(b), end(e), repl(r), repl_len(strlen(r)) {} + }; + + void Working::try_repl() + { + String buf; + Vector<ReplTry> repl_try; + StackPtr<SuggestReplEnumeration> els(lang->repl()); + const SuggestRepl * r = 0; + const char * word = original.clean.str(); + const char * wend = word + original.clean.size(); + while (r = els->next(), r) + { + const char * p = word; + while ((p = strstr(p, r->substr))) { + buf.clear(); + buf.append(word, p); + buf.append(r->repl, strlen(r->repl)); + p += strlen(r->substr); + buf.append(p, wend + 1); + buf.ensure_null_end(); + //COUT.printf("%s (%s) => %s (%s)\n", word, r->substr, buf.str(), r->repl); + try_word(buf.pbegin(), buf.pend(), parms->edit_distance_weights.sub*3/2); + } + } + } + + // generate an n-gram score comparing s1 and s2 + static int ngram(int n, char * s1, int l1, const char * s2, int l2) + { + int nscore = 0; + int ns; + for (int j=1;j<=n;j++) { + ns = 0; + for (int i=0;i<=(l1-j);i++) { + char c = *(s1 + i + j); + *(s1 + i + j) = '\0'; + if (strstr(s2,(s1+i))) ns++; + *(s1 + i + j ) = c; + } + nscore = nscore + ns; + if (ns < 2) break; + } + ns = 0; + ns = (l2-l1)-2; + return (nscore - ((ns > 0) ? ns : 0)); + } + + struct NGramScore { + SpellerImpl::WS::const_iterator i; + WordEntry info; + const char * soundslike; + int score; + NGramScore() {} + NGramScore(SpellerImpl::WS::const_iterator i0, + WordEntry info0, const char * sl, int score0) + : i(i0), info(info0), soundslike(sl), score(score0) {} + }; + + + void Working::try_ngram() + { + String original_soundslike = original.soundslike; + original_soundslike.ensure_null_end(); + WordEntry * sw = 0; + const char * sl = 0; + typedef Vector<NGramScore> Candidates; + hash_set<const char *> already_have; + Candidates candidates; + int min_score = 0; + int count = 0; + + for (NearMisses::iterator i = scored_near_misses.begin(); + i != scored_near_misses.end(); ++i) + { + if (!i->soundslike) + i->soundslike = to_soundslike(i->word, strlen(i->word)); + already_have.insert(i->soundslike); + } + + for (SpellerImpl::WS::const_iterator i = sp->suggest_ws.begin(); + i != sp->suggest_ws.end(); + ++i) + { + StackPtr<SoundslikeEnumeration> els((*i)->soundslike_elements()); + + while ( (sw = els->next(LARGE_NUM)) ) { + + if (sw->what != WordEntry::Word) { + abort_temp(); + sl = sw->word; + } else { + sl = to_soundslike_temp(sw->word, sw->word_size); + } + + if (already_have.have(sl)) continue; + + int ng = ngram(3, original_soundslike.data(), original_soundslike.size(), + sl, strlen(sl)); + + if (ng > 0 && ng >= min_score) { + commit_temp(sl); + candidates.push_back(NGramScore(i, *sw, sl, ng)); + if (ng > min_score) count++; + if (count >= parms->ngram_keep) { + int orig_min = min_score; + min_score = LARGE_NUM; + Candidates::iterator i = candidates.begin(); + Candidates::iterator j = candidates.begin(); + for (; i != candidates.end(); ++i) { + if (i->score == orig_min) continue; + if (min_score > i->score) min_score = i->score; + *j = *i; + ++j; + } + count = 0; + candidates.resize(j-candidates.begin()); + for (i = candidates.begin(); i != candidates.end(); ++i) { + if (i->score != min_score) count++; + } + } + } + } + } + + for (Candidates::iterator i = candidates.begin(); + i != candidates.end(); + ++i) + { + //COUT.printf("ngram: %s %d\n", i->soundslike, i->score); + add_sound(i->i, &i->info, i->soundslike); + } + } + + void Working::score_list() { + +# ifdef DEBUG_SUGGEST + COUT.printl("SCORING LIST"); +# endif + + try_harder = 3; + if (near_misses.empty()) return; + + NearMisses::iterator i; + NearMisses::iterator prev; + + near_misses.push_front(ScoreWordSound()); + // the first item will NEVER be looked at. + scored_near_misses.push_front(ScoreWordSound()); + scored_near_misses.front().score = -1; + // this item will only be looked at when sorting so + // make it a small value to keep it at the front. + + int try_for = (parms->word_weight*parms->edit_distance_weights.max)/100; + while (true) { + try_for += (parms->word_weight*parms->edit_distance_weights.max)/100; + + // put all pairs whose score <= initial_limit*max_weight + // into the scored list + + prev = near_misses.begin(); + i = prev; + ++i; + while (i != near_misses.end()) { + + //CERR.printf("%s %s %s %d %d\n", i->word, i->word_clean, i->soundslike, + // i->word_score, i->soundslike_score); + + if (i->word_score >= LARGE_NUM) { + int sl_score = i->soundslike_score < LARGE_NUM ? i->soundslike_score : 0; + int level = needed_level(try_for, sl_score); + + if (level >= int(sl_score/parms->edit_distance_weights.min)) + i->word_score = edit_distance(original.clean, + i->word_clean, + level, level, + parms->edit_distance_weights); + } + + if (i->word_score >= LARGE_NUM) goto cont1; + + if (i->soundslike_score >= LARGE_NUM) + { + if (weighted_average(0, i->word_score) > try_for) goto cont1; + + if (i->soundslike == 0) i->soundslike = to_soundslike(i->word, strlen(i->word)); + + i->soundslike_score = edit_distance(original.soundslike, i->soundslike, + parms->edit_distance_weights); + } + + i->score = weighted_average(i->soundslike_score, i->word_score); + + if (i->score > try_for + parms->span) goto cont1; + + //CERR.printf("2>%s %s %s %d %d\n", i->word, i->word_clean, i->soundslike, + // i->word_score, i->soundslike_score); + + scored_near_misses.splice_into(near_misses,prev,i); + + i = prev; // Yes this is right due to the slice + ++i; + + continue; + + cont1: + prev = i; + ++i; + } + + scored_near_misses.sort(); + + i = scored_near_misses.begin(); + ++i; + + if (i == scored_near_misses.end()) continue; + + int k = skip_first_couple(i); + + if ((k == parms->skip && i->score <= try_for) + || prev == near_misses.begin() ) // or no more left in near_misses + break; + } + + threshold = i->score + parms->span; + if (threshold < parms->edit_distance_weights.max) + threshold = parms->edit_distance_weights.max; + +# ifdef DEBUG_SUGGEST + COUT << "Threshold is: " << threshold << "\n"; + COUT << "try_for: " << try_for << "\n"; + COUT << "Size of scored: " << scored_near_misses.size() << "\n"; + COUT << "Size of ! scored: " << near_misses.size() << "\n"; +# endif + + //if (threshold - try_for <= parms->edit_distance_weights.max/2) return; + + prev = near_misses.begin(); + i = prev; + ++i; + while (i != near_misses.end()) { + + if (i->word_score >= LARGE_NUM) { + + int sl_score = i->soundslike_score < LARGE_NUM ? i->soundslike_score : 0; + int initial_level = needed_level(try_for, sl_score); + int max_level = needed_level(threshold, sl_score); + + if (initial_level < max_level) + i->word_score = edit_distance(original.clean.c_str(), + i->word_clean, + initial_level+1,max_level, + parms->edit_distance_weights); + } + + if (i->word_score >= LARGE_NUM) goto cont2; + + if (i->soundslike_score >= LARGE_NUM) + { + if (weighted_average(0, i->word_score) > threshold) goto cont2; + + if (i->soundslike == 0) + i->soundslike = to_soundslike(i->word, strlen(i->word)); + + i->soundslike_score = edit_distance(original.soundslike, i->soundslike, + parms->edit_distance_weights); + } + + i->score = weighted_average(i->soundslike_score, i->word_score); + + if (i->score > threshold + parms->span) goto cont2; + + scored_near_misses.splice_into(near_misses,prev,i); + + i = prev; // Yes this is right due to the slice + ++i; + + continue; + + cont2: + prev = i; + ++i; + + } + + near_misses.pop_front(); + + scored_near_misses.sort(); + scored_near_misses.pop_front(); + + if (near_misses.empty()) { + try_harder = 1; + } else { + i = scored_near_misses.begin(); + skip_first_couple(i); + ++i; + try_harder = i == scored_near_misses.end() ? 2 : 0; + } + +# ifdef DEBUG_SUGGEST + COUT << "Size of scored: " << scored_near_misses.size() << "\n"; + COUT << "Size of ! scored: " << near_misses.size() << "\n"; + COUT << "Try Harder: " << try_harder << "\n"; +# endif + } + + void Working::fine_tune_score() { + + NearMisses::iterator i; + + if (parms->use_typo_analysis) { + int max = 0; + unsigned int j; + + CharVector orig_norm, word; + orig_norm.resize(original.word.size() + 1); + for (j = 0; j != original.word.size(); ++j) + orig_norm[j] = parms->ti->to_normalized(original.word[j]); + orig_norm[j] = 0; + ParmString orig(orig_norm.data(), j); + word.resize(max_word_length + 1); + + for (i = scored_near_misses.begin(); + i != scored_near_misses.end() && i->score <= threshold; + ++i) + { + for (j = 0; (i->word)[j] != 0; ++j) + word[j] = parms->ti->to_normalized((i->word)[j]); + word[j] = 0; + int word_score + = typo_edit_distance(ParmString(word.data(), j), orig, *parms->ti); + i->score = weighted_average(i->soundslike_score, word_score); + if (max < i->score) max = i->score; + } + threshold = max; + for (;i != scored_near_misses.end() && i->score <= threshold; ++i) + i->score = threshold + 1; + + scored_near_misses.sort(); + } + } + + void Working::transfer() { + +# ifdef DEBUG_SUGGEST + COUT << "\n" << "\n" + << original.word << '\t' + << original.soundslike << '\t' + << "\n"; + String sl; +# endif + int c = 1; + hash_set<String,HashString<String> > duplicates_check; + String buf; + String final_word; + pair<hash_set<String,HashString<String> >::iterator, bool> dup_pair; + for (NearMisses::const_iterator i = scored_near_misses.begin(); + i != scored_near_misses.end() && c <= parms->limit + && ( i->score <= threshold || c <= 3 ); + ++i, ++c) { +# ifdef DEBUG_SUGGEST + //COUT.printf("%p %p: ", i->word, i->soundslike); + COUT << i->word << '\t' << i->score + << '\t' << i->soundslike << "\n"; +# endif + if (i->repl_list != 0) { + String::size_type pos; + do { + dup_pair = duplicates_check.insert(fix_case(i->repl_list->word, buf)); + if (dup_pair.second && + ((pos = dup_pair.first->find(' '), pos == String::npos) + ? (bool)sp->check(*dup_pair.first) + : (sp->check((String)dup_pair.first->substr(0,pos)) + && sp->check((String)dup_pair.first->substr(pos+1))) )) + near_misses_final->push_back(*dup_pair.first); + } while (i->repl_list->adv()); + } else { + fix_case(i->word); + dup_pair = duplicates_check.insert(i->word); + if (dup_pair.second ) + near_misses_final->push_back(*dup_pair.first); + } + } + } + + class SuggestionListImpl : public SuggestionList { + struct Parms { + typedef const char * Value; + typedef NearMissesFinal::const_iterator Iterator; + Iterator end; + Parms(Iterator e) : end(e) {} + bool endf(Iterator e) const {return e == end;} + Value end_state() const {return 0;} + Value deref(Iterator i) const {return i->c_str();} + }; + public: + NearMissesFinal suggestions; + + SuggestionList * clone() const {return new SuggestionListImpl(*this);} + void assign(const SuggestionList * other) { + *this = *static_cast<const SuggestionListImpl *>(other); + } + + bool empty() const { return suggestions.empty(); } + Size size() const { return suggestions.size(); } + VirEmul * elements() const { + return new MakeEnumeration<Parms, StringEnumeration> + (suggestions.begin(), Parms(suggestions.end())); + } + }; + + class SuggestImpl : public Suggest { + SpellerImpl * speller_; + SuggestionListImpl suggestion_list; + SuggestParms parms_; + public: + PosibErr<void> setup(SpellerImpl * m); + //SuggestImpl(SpellerImpl * m, const SuggestParms & p) + // : speller_(m), parms_(p) + //{parms_.fill_distance_lookup(m->config(), m->lang());} + PosibErr<void> set_mode(ParmString mode) { + return parms_.set(mode, speller_); + } + double score(const char *base, const char *other) { + //parms_.set_original_size(strlen(base)); + //Score s(&speller_->lang(),base,parms_); + //string sl = speller_->lang().to_soundslike(other); + //ScoreWordSound sws(other, sl.c_str()); + //s.score(sws); + //return sws.score; + return -1; + } + SuggestionList & suggest(const char * word); + }; + + PosibErr<void> SuggestImpl::setup(SpellerImpl * m) + { + speller_ = m; + RET_ON_ERR(parms_.set(m->config()->retrieve("sug-mode"), speller_)); + if (m->config()->have("sug-typo-analysis")) + parms_.use_typo_analysis = m->config()->retrieve_bool("sug-typo-analysis"); + if (m->config()->have("sug-repl-table")) + parms_.use_repl_table = m->config()->retrieve_bool("sug-repl-table"); + + StringList sl; + m->config()->retrieve_list("sug-split-char", &sl); + StringListEnumeration els = sl.elements_obj(); + const char * s; + parms_.split_chars.clear(); + while ((s = els.next()) != 0) { + parms_.split_chars.push_back(*s); + } + + String keyboard = m->config()->retrieve("keyboard"); + if (keyboard == "none") + parms_.use_typo_analysis = false; + else + RET_ON_ERR(aspeller::setup(parms_.ti, m->config(), &m->lang(), keyboard)); + + return no_err; + } + + SuggestionList & SuggestImpl::suggest(const char * word) { +# ifdef DEBUG_SUGGEST + COUT << "=========== begin suggest " << word << " ===========\n"; +# endif + parms_.set_original_word_size(strlen(word)); + suggestion_list.suggestions.resize(0); + Working sug(speller_, &speller_->lang(),word,&parms_); + sug.get_suggestions(suggestion_list.suggestions); +# ifdef DEBUG_SUGGEST + COUT << "^^^^^^^^^^^ end suggest " << word << " ^^^^^^^^^^^\n"; +# endif + return suggestion_list; + } + +} + +namespace aspeller { + PosibErr<Suggest *> new_default_suggest(SpellerImpl * m) { + StackPtr<SuggestImpl> s(new SuggestImpl); + RET_ON_ERR(s->setup(m)); + return s.release(); + } + + //Suggest * new_default_suggest(SpellerImpl * m, const SuggestParms & p) { + // return new aspeller_default_suggest::SuggestImpl(m,p); + //} + + PosibErr<void> SuggestParms::set(ParmString mode, SpellerImpl * sp) { + + edit_distance_weights.del1 = 95; + edit_distance_weights.del2 = 95; + edit_distance_weights.swap = 90; + edit_distance_weights.sub = 100; + edit_distance_weights.similar = 10; + edit_distance_weights.max = 100; + edit_distance_weights.min = 90; + + normal_soundslike_weight = 50; + small_word_soundslike_weight = 15; + small_word_threshold = 4; + + soundslike_weight = normal_soundslike_weight; + word_weight = 100 - normal_soundslike_weight; + + split_chars = " -"; + + skip = 2; + limit = 100; + span = 50; + ngram_keep = 10; + use_typo_analysis = true; + use_repl_table = sp->have_repl; + try_one_edit_word = true; // always a good idea, even when + // soundslike lookup is used + check_after_one_edit_word = false; + ngram_threshold = 2; + if (mode == "ultra") { + try_scan_1 = true; + try_scan_2 = false; + try_ngram = false; + } else if (mode == "fast") { + try_scan_1 = true; + try_scan_2 = false; + try_ngram = false; + } else if (mode == "normal") { + try_scan_1 = true; + try_scan_2 = true; + try_ngram = false; + } else if (mode == "slow") { + try_scan_1 = false; + try_scan_2 = true; + try_ngram = true; + ngram_threshold = sp->have_soundslike ? 1 : 2; + } else if (mode == "bad-spellers") { + try_scan_1 = false; + try_scan_2 = true; + try_ngram = true; + use_typo_analysis = false; + normal_soundslike_weight = 55; + small_word_threshold = 0; + span = 125; + limit = 1000; + ngram_threshold = 1; + } else { + return make_err(bad_value, "sug-mode", mode, _("one of ultra, fast, normal, slow, or bad-spellers")); + } + if (!sp->have_soundslike) { + // in this case try_scan_1 will not get better results than + // try_one_edit_word + if (try_scan_1) { + check_after_one_edit_word = true; + try_scan_1 = false; + } + } + + return no_err; + } + + + SuggestParms * SuggestParms::clone() const { + return new SuggestParms(*this); + } + + void SuggestParms::set_original_word_size(int size) { + if (size <= small_word_threshold) { + soundslike_weight = small_word_soundslike_weight; + } else { + soundslike_weight = normal_soundslike_weight; + } + word_weight = 100 - soundslike_weight; + } +} diff --git a/jni/modules/speller/default/suggest.hpp b/jni/modules/speller/default/suggest.hpp new file mode 100644 index 0000000..5fc6280 --- /dev/null +++ b/jni/modules/speller/default/suggest.hpp @@ -0,0 +1,44 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#ifndef ASPELLER_SUGGEST__HPP +#define ASPELLER_SUGGEST__HPP + +#include "word_list.hpp" +#include "enumeration.hpp" +#include "parm_string.hpp" + +using namespace acommon; + +namespace aspeller { + + class SpellerImpl; + + class SuggestionList : public WordList { + public: + typedef StringEnumeration VirEmul; + typedef Enumeration<VirEmul> Emul; + typedef const char * Value; + typedef unsigned int Size; + + virtual SuggestionList * clone() const = 0; + virtual void assign(const SuggestionList *) = 0; + + virtual bool empty() const = 0; + virtual Size size() const = 0; + virtual VirEmul * elements() const = 0; + virtual ~SuggestionList() {} + }; + + class Suggest { + public: + virtual PosibErr<void> set_mode(ParmString) = 0; + virtual double score(const char * base, const char * other) = 0; + virtual SuggestionList & suggest(const char * word) = 0; + virtual ~Suggest() {} + }; + + PosibErr<Suggest *> new_default_suggest(SpellerImpl *); +} + + +#endif diff --git a/jni/modules/speller/default/suggest.lo b/jni/modules/speller/default/suggest.lo new file mode 100644 index 0000000..1dd8aad --- /dev/null +++ b/jni/modules/speller/default/suggest.lo @@ -0,0 +1,12 @@ +# modules/speller/default/suggest.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/suggest.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/typo_editdist.cpp b/jni/modules/speller/default/typo_editdist.cpp new file mode 100644 index 0000000..cd5e7bf --- /dev/null +++ b/jni/modules/speller/default/typo_editdist.cpp @@ -0,0 +1,196 @@ + +#include <cstring> + +#include "vararray.hpp" +#include "typo_editdist.hpp" +#include "config.hpp" +#include "language.hpp" +#include "file_data_util.hpp" +#include "getdata.hpp" +#include "cache-t.hpp" +#include "asc_ctype.hpp" + +// edit_distance is implemented using a straight forward dynamic +// programming algorithm with out any special tricks. Its space +// usage AND running time is tightly asymptotically bounded by +// strlen(a)*strlen(b) + +typedef unsigned char uchar; + +namespace aspeller { + + using namespace std; + + short typo_edit_distance(ParmString word0, + ParmString target0, + const TypoEditDistanceInfo & w) + { + int word_size = word0.size() + 1; + int target_size = target0.size() + 1; + const uchar * word = reinterpret_cast<const uchar *>(word0.str()); + const uchar * target = reinterpret_cast<const uchar *>(target0.str()); + VARARRAY(short, e_d, word_size * target_size); + ShortMatrix e(word_size,target_size, e_d); + e(0,0) = 0; + for (int j = 1; j != target_size; ++j) + e(0,j) = e(0,j-1) + w.missing; + --word; + --target; + short te; + for (int i = 1; i != word_size; ++i) { + e(i,0) = e(i-1,0) + w.extra_dis2; + for (int j = 1; j != target_size; ++j) { + + if (word[i] == target[j]) { + + e(i,j) = e(i-1,j-1); + + } else { + + te = e(i,j) = e(i-1,j-1) + w.repl(word[i],target[j]); + + if (i != 1) { + te = e(i-1,j ) + w.extra(word[i-1], target[j]); + if (te < e(i,j)) e(i,j) = te; + te = e(i-2,j-1) + w.extra(word[i-1], target[j]) + + w.repl(word[i] , target[j]); + if (te < e(i,j)) e(i,j) = te; + } else { + te = e(i-1,j) + w.extra_dis2; + if (te < e(i,j)) e(i,j) = te; + } + + te = e(i,j-1) + w.missing; + if (te < e(i,j)) e(i,j) = te; + + //swap + if (i != 1 && j != 1) { + te = e(i-2,j-2) + w.swap + + w.repl(word[i], target[j-1]) + + w.repl(word[i-1], target[j]); + if (te < e(i,j)) e(i,j) = te; + } + } + } + } + return e(word_size-1,target_size-1); + } + + static GlobalCache<TypoEditDistanceInfo> typo_edit_dist_info_cache("keyboard"); + + PosibErr<void> setup(CachePtr<const TypoEditDistanceInfo> & res, + const Config * c, const Language * l, ParmString kb) + { + PosibErr<TypoEditDistanceInfo *> pe = get_cache_data(&typo_edit_dist_info_cache, c, l, kb); + if (pe.has_err()) return pe; + res.reset(pe.data); + return no_err; + } + + struct CharPair { + char d[2]; + CharPair(char a, char b) {d[0] = a; d[1] = b;} + }; + + PosibErr<TypoEditDistanceInfo *> + TypoEditDistanceInfo::get_new(const char * kb, const Config * cfg, const Language * l) + { + FStream in; + String file, dir1, dir2; + fill_data_dir(cfg, dir1, dir2); + find_file(file, dir1, dir2, kb, ".kbd"); + RET_ON_ERR(in.open(file.c_str(), "r")); + + ConvEC iconv; + RET_ON_ERR(iconv.setup(*cfg, "utf-8", l->charmap(), NormFrom)); + + Vector<CharPair> data; + + char to_stripped[256]; + for (int i = 0; i <= 255; ++i) + to_stripped[i] = l->to_stripped(i); + + String buf; + DataPair d; + while (getdata_pair(in, d, buf)) { + if (d.key == "key") { + PosibErr<char *> pe(iconv(d.value.str, d.value.size)); + if (pe.has_err()) + return pe.with_file(file, d.line_num); + char * v = pe.data; + char base = *v; + while (*v) { + to_stripped[(uchar)*v] = base; + ++v; + while (asc_isspace(*v)) ++v; + } + } else { + PosibErr<char *> pe(iconv(d.key.str, d.key.size)); + if (pe.has_err()) + return pe.with_file(file, d.line_num); + char * v = pe.data; + if (strlen(v) != 2) + return make_err(invalid_string, d.key.str).with_file(file, d.line_num); + to_stripped[(uchar)v[0]] = v[0]; + to_stripped[(uchar)v[1]] = v[1]; + data.push_back(CharPair(v[0], v[1])); + } + } + + TypoEditDistanceInfo * w = new TypoEditDistanceInfo(); + w->keyboard = kb; + + memset(w->to_normalized_, 0, sizeof(w->to_normalized_)); + + int c = 1; + for (int i = 0; i <= 255; ++i) { + if (l->is_alpha(i)) { + if (w->to_normalized_[(uchar)to_stripped[i]] == 0) { + w->to_normalized_[i] = c; + w->to_normalized_[(uchar)to_stripped[i]] = c; + ++c; + } else { + w->to_normalized_[i] = w->to_normalized_[(uchar)to_stripped[i]]; + } + } + } + for (int i = 0; i != 256; ++i) { + if (w->to_normalized_[i]==0) w->to_normalized_[i] = c; + } + w->max_normalized = c; + + c = w->max_normalized + 1; + int cc = c * c; + w->data = (short *)malloc(cc * 2 * sizeof(short)); + w->repl .init(c, c, w->data); + w->extra.init(c, c, w->data + cc); + + for (int i = 0; i != c; ++i) { + for (int j = 0; j != c; ++j) { + w->repl (i,j) = w->repl_dis2; + w->extra(i,j) = w->extra_dis2; + } + } + + for (unsigned i = 0; i != data.size(); ++i) { + const char * d = data[i].d; + w->repl (w->to_normalized(d[0]), + w->to_normalized(d[1])) = w->repl_dis1; + w->repl (w->to_normalized(d[1]), + w->to_normalized(d[0])) = w->repl_dis1; + w->extra(w->to_normalized(d[0]), + w->to_normalized(d[1])) = w->extra_dis1; + w->extra(w->to_normalized(d[1]), + w->to_normalized(d[0])) = w->extra_dis1; + } + + for (int i = 0; i != c; ++i) { + w->repl(i,i) = 0; + w->extra(i,i) = w->extra_dis1; + } + + return w; + } + + +} diff --git a/jni/modules/speller/default/typo_editdist.hpp b/jni/modules/speller/default/typo_editdist.hpp new file mode 100644 index 0000000..f64d2a5 --- /dev/null +++ b/jni/modules/speller/default/typo_editdist.hpp @@ -0,0 +1,78 @@ +#ifndef __aspeller_typo_edit_distance_hh__ +#define __aspeller_typo_edit_distance_hh__ + +#include "cache.hpp" +#include "matrix.hpp" + +namespace acommon { + class Config; +} + +namespace aspeller { + + class Language; + + using namespace acommon; + + struct TypoEditDistanceInfo : public Cacheable { + int missing; // the cost of having to insert a character + int swap; // the cost of swapping two adjecent letters + short * data; // memory for repl and extra + ShortMatrix repl; // the cost of replacing one letter with another + ShortMatrix extra; // the cost of removing an extra letter + + int repl_dis1; // the cost of replace when the distance is 1 + int repl_dis2; // " " otherwise + int extra_dis1;// + int extra_dis2;// + + unsigned char to_normalized_[256]; + int max_normalized; + + unsigned char to_normalized(char c) const { + return to_normalized_[(unsigned char)c];} + + // IMPORTANT: It is still necessary to initialize and fill in + // repl and extra + private: + TypoEditDistanceInfo(int m = 85, int s = 60, + int r1 = 70, int r = 110, + int e1 = 70, int e = 100) + : missing(m), swap(s), data(0) + , repl_dis1(r1), repl_dis2(r) + , extra_dis1(e1), extra_dis2(e) + {} + public: + ~TypoEditDistanceInfo() {if (data) free(data);} + + String keyboard; + typedef const Config CacheConfig; + typedef const Language CacheConfig2; + typedef const char * CacheKey; + bool cache_key_eq(const char * kb) const {return keyboard == kb;} + static PosibErr<TypoEditDistanceInfo *> get_new(const char *, const Config *, const Language *); + private: + TypoEditDistanceInfo(const TypoEditDistanceInfo &); + void operator=(const TypoEditDistanceInfo &); + }; + + PosibErr<void> setup(CachePtr<const TypoEditDistanceInfo> & res, + const Config * c, const Language * l, ParmString kb); + + // edit_distance finds the shortest edit distance. + // Preconditions: + // max(strlen(word), strlen(target))*max(of the edit weights) <= 2^15 + // word,target are not null pointers + // w.repl and w.extra are square matrices + // the maximum character value is less than the size of w.repl and w.extra + // Returns: + // the edit distance between a and b + + // the running time is tightly asymptotically bounded by strlen(a)*strlen(b) + + short typo_edit_distance(ParmString word, + ParmString target, + const TypoEditDistanceInfo & w); +} + +#endif diff --git a/jni/modules/speller/default/typo_editdist.lo b/jni/modules/speller/default/typo_editdist.lo new file mode 100644 index 0000000..1b28ab2 --- /dev/null +++ b/jni/modules/speller/default/typo_editdist.lo @@ -0,0 +1,12 @@ +# modules/speller/default/typo_editdist.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/typo_editdist.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/speller/default/vector_hash-t.hpp b/jni/modules/speller/default/vector_hash-t.hpp new file mode 100644 index 0000000..969a80c --- /dev/null +++ b/jni/modules/speller/default/vector_hash-t.hpp @@ -0,0 +1,191 @@ +// Copyright (c) 2000 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef __autil_hash_t_hh__ +#define __autil_hash_t_hh__ + +#include <math.h> + +#include "vector_hash.hpp" +#include "primes.hpp" + +namespace aspeller { + + template <class Parms> + VectorHashTable<Parms>::FindIterator + ::FindIterator(const HashTable * ht, const key_type & k) + : vector(&ht->vector()) + , parms(&ht->parms()) + , key(k) + , i(ht->hash1(k)) + , hash2(ht->hash2(k)) + { + if (!parms->is_nonexistent((*vector)[i]) + && !parms->equal(parms->key((*vector)[i]), key)) + adv(); + } + + template <class Parms> + void VectorHashTable<Parms>::FindIterator::adv() { + do { + i = (i + hash2) % vector->size(); + } while (!parms->is_nonexistent((*vector)[i]) + && !parms->equal(parms->key((*vector)[i]), key)); + } + + template<class Parms> + void VectorHashTable<Parms>::nonexistent_vector() { + vector_iterator vector_end = vector_.end(); + for (vector_iterator i = vector_.begin(); i != vector_end; ++i) { + parms_.make_nonexistent(*i); + } + } + + template<class Parms> + std::pair<typename VectorHashTable<Parms>::iterator, bool> + VectorHashTable<Parms>::insert(const value_type & d) + { + MutableFindIterator j(this, parms_.key(d)); + vector_iterator i = vector_.begin() + j.i; + if (!parms_.is_multi && !j.at_end()) + return std::pair<iterator,bool>(iterator(i,this),false); + if (load_factor() > .92) { + resize(bucket_count()*2); + return insert(d); + } + if (parms_.is_multi) + while(!j.at_end()) j.adv(); + *(vector_.begin() + j.i) = d; + ++size_; + return std::pair<iterator,bool>(iterator(i,this),true); + } + + template<class Parms> + bool VectorHashTable<Parms>::have(const key_type & key) const + { + return !ConstFindIterator(this,key).at_end(); + } + + template<class Parms> + typename VectorHashTable<Parms>::iterator + VectorHashTable<Parms>::find(const key_type & key) + { + MutableFindIterator i(this, key); + if (!i.at_end()) + return iterator(vector_.begin() + i.i, this); + else + return end(); + } + + template<class Parms> + typename VectorHashTable<Parms>::const_iterator + VectorHashTable<Parms>::find(const key_type & key) const { + ConstFindIterator i(this, key); + if (!i.at_end()) + return const_iterator(vector_.begin() + i.i, this); + else + return end(); + } + +#if 0 // it currently doesn't work needs fixing + + template<class Parms> + VectorHashTable<Parms>::size_type + VectorHashTable<Parms>::erase(const key_type & key) { + MutableFindIterator i(this, key); + if (!i.at_end()) { + erase(iterator(vector_.begin() + i.i, this)); + return 1; + } else { + return 0; + } + } + + template<class Parms> + void VectorHashTable<Parms>::erase(const iterator & p) { + vector_iterator pos = p.vector_iterator(); + parms_.make_nonexistent(*pos); + vector_iterator vector_end = vector_.end(); + + vector_iterator e = pos; + do { + ++e; + if (e == vector_end) e = vector_.begin(); + } while (!parms_.is_nonexistent(*e)); + + vector_iterator should_be; + while (pos != e) { + if (parms_.is_nonexistent(*pos)) { + should_be = find_item_v(*pos); + if (parms_.is_nonexistent(*should_be)) { + *should_be = *pos; + parms_.make_nonexistent(*pos); + } + } + ++pos; + if (pos == vector_end) pos = vector_.begin(); + } + --size_; + } +#endif + + template<class Parms> + void VectorHashTable<Parms>::swap(VectorHashTable<Parms> &other) { + vector_.swap(other.vector_); + size_type temp = size_; + size_ = other.size_; + other.size_ = temp; + } + + template<class Parms> + VectorHashTable<Parms>::VectorHashTable(size_type i, const Parms & p) + : parms_(p), size_(0) + { + if (i <= 19) { + i = 19; + } else { + size_type j = ((i - 3)/4)*4 + 3; + if (j == i) + i = j; + else + i = j + 4; + Primes p(static_cast<size_type>(sqrt(static_cast<double>(i))+2)); + for (;;) { + if (i > p.max_num()) + p.resize(static_cast<size_type>(sqrt(static_cast<double>(i))+2)); + if (p.is_prime(i) && p.is_prime(i-2)) + break; + i += 4; + } + } + vector_.resize(i); + nonexistent_vector(); + } + + template<class Parms> + void VectorHashTable<Parms>::resize(size_type i) { + VectorHashTable temp(i,parms_); + iterator e = end(); + for (iterator i = begin(); i != e; ++i) + temp.insert(*i); + swap(temp); + } + + template<class Parms> + void VectorHashTable<Parms>::recalc_size() { + size_ = 0; + for (iterator i = begin(); i != this->e; ++i, ++this->_size); + } + +} + +#endif diff --git a/jni/modules/speller/default/vector_hash.hpp b/jni/modules/speller/default/vector_hash.hpp new file mode 100644 index 0000000..6d6e24d --- /dev/null +++ b/jni/modules/speller/default/vector_hash.hpp @@ -0,0 +1,291 @@ +// Copyright (c) 2000 +// Kevin Atkinson +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appear in all copies +// and that both that copyright notice and this permission notice +// appear in supporting documentation. Kevin Atkinson makes no +// representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +#ifndef __aspeller_vector_hash_hh__ +#define __aspeller_vector_hash_hh__ + +//#include <iterator> +//#include <utility> + +#include "settings.h" +#undef REL_OPS_POLLUTION // FIXME + +namespace aspeller { + + // + // This hash table is implemnted as a Open Address Hash Table + // which uses a Vector like object to store its data. So + // it might even be considered an adapter + // + + //////////////////////////////////////////////////////// + // // + // Vector Hash Table Interator // + // // + //////////////////////////////////////////////////////// + // + // This is an internal object and should not be created + // directly. Instead use VectorHashTable::begin() and end() + + template <class Parms> + // Parms is expected to have: + // typename HashTable; + // typename TableIter; + // typename Value; + class VHTIterator + { + template <class T> + friend bool operator== (VHTIterator<T>, VHTIterator<T>); +#ifndef REL_OPS_POLLUTION + template <class T> + friend bool operator!= (VHTIterator<T>, VHTIterator<T>); +#endif + public: //but don't use + typedef typename Parms::TableIter TableIter; + typedef typename Parms::HashTable HashTable; + TableIter pos; + HashTable * hash_table; + public: + //typedef std::bidirectional_iterator_tag iterator_category; + typedef typename Parms::Value value_type; + // these cause problems for SUNPRO_CC + //typedef typename std::iterator_traits<TableIter>::difference_type difference_type; + //typedef typename std::iterator_traits<TableIter>::pointer pointer; + //typedef typename std::iterator_traits<TableIter>::reference reference; + + //VHTIterator vector_iterator() const {return pos;} + public: + VHTIterator(TableIter p, HashTable *ht) : pos(p), hash_table(ht) {} + VHTIterator(TableIter p, HashTable *ht, bool) + : pos(p), hash_table(ht) + { + while (pos != hash_table->vector().end() + && hash_table->parms().is_nonexistent(*pos) ) + ++pos; + } + + value_type & operator * () const {return *pos;} + value_type * operator -> () const {return &*pos;} + + bool at_end() const {return pos == hash_table->vector().end();} + + VHTIterator& operator++ () { + ++pos; + for (;;) { + if (pos == hash_table->vector().end()) break; + if (!hash_table->parms().is_nonexistent(*pos)) break; + ++pos; + } + return *this; + } + VHTIterator operator++ (int) { + VHTIterator temp = *this; + operator++(); + return temp; + } + + VHTIterator& operator-- () { + --pos; + for (;;) { + if (pos < hash_table->vector().begin()) break; + if (!hash_table->parms().is_nonexistent_func(*pos)) break; + --pos; + } + return *this; + } + VHTIterator operator-- (int) { + VHTIterator temp = *this; + operator--(); + return temp; + } + }; + + template <class Parms> + inline + bool operator== (VHTIterator<Parms> rhs, VHTIterator<Parms> lhs) + { + return rhs.pos == lhs.pos; + } + +#ifndef REL_OPS_POLLUTION + + template <class Parms> + inline + bool operator!= (VHTIterator<Parms> rhs, VHTIterator<Parms> lhs) + { + return rhs.pos != lhs.pos; + } + +#endif + + //////////////////////////////////////////////////////// + // // + // Vector Hash Table // + // // + //////////////////////////////////////////////////////// + + // Parms is expected to have the following methods + // typename Vector + // typedef Vector::value_type Value + // typedef Vector::size_type Size + // typename Key + // bool is_multi; + // Size hash(Key) + // bool equal(Key, Key) + // Key key(Value) + // bool is_nonexistent(Value) + // void make_nonexistent(Value &) + + template <class Parms> + class VectorHashTable { + typedef typename Parms::Vector Vector; + public: + typedef typename Parms::Vector vector_type; + typedef typename Vector::value_type value_type; + typedef typename Vector::size_type size_type; + typedef typename Vector::difference_type difference_type; + + typedef typename Vector::pointer pointer; + typedef typename Vector::reference reference; + typedef typename Vector::const_reference const_reference; + + typedef typename Parms::Key key_type; + public: // but don't use + typedef VectorHashTable<Parms> HashTable; + private: + Parms parms_; + + public: + typedef Parms parms_type; + const parms_type & parms() const {return parms_;} + + public: + // These public functions are very dangerous and should be used with + // great care as the modify the internal structure of the object + Vector & vector() {return vector_;} + const Vector & vector() const {return vector_;} + parms_type & parms() {return parms_;} + void recalc_size(); + void set_size(size_type s) {size_ = s;} + + private: + Vector vector_; + size_type size_; + + public: // but don't use + typedef typename Vector::iterator vector_iterator; + typedef typename Vector::const_iterator const_vector_iterator; + + private: + int hash1(const key_type &d) const { + return parms_.hash(d) % bucket_count(); + } + int hash2(const key_type &d) const { + return 1 + (parms_.hash(d) % (bucket_count() - 2)); + } + + struct NonConstParms { + typedef VectorHashTable HashTable; + typedef vector_iterator TableIter; + typedef value_type Value; + }; + struct ConstParms { + typedef const VectorHashTable HashTable; + typedef const_vector_iterator TableIter; + typedef const value_type Value; + }; + public: + typedef VHTIterator<NonConstParms> iterator; + typedef VHTIterator<ConstParms> const_iterator; + + private: + void nonexistent_vector(); + + public: + VectorHashTable(size_type i, const Parms & p = Parms()); + + VectorHashTable(const Parms & p = Parms()) + : parms_(p), vector_(19), size_(0) {nonexistent_vector();} + + iterator begin() {return iterator(vector_.begin(), this, 1);} + iterator end() {return iterator(vector_.end(), this);} + const_iterator begin() const {return const_iterator(vector_.begin(), this, 1);} + const_iterator end() const {return const_iterator(vector_.end(), this);} + + std::pair<iterator, bool> insert(const value_type &); + bool have(const key_type &) const; + + iterator find(const key_type&); + const_iterator find(const key_type&) const; + + size_type erase(const key_type &key); + void erase(const iterator &p); + + size_type size() const {return size_;} + bool empty() const {return !size_;} + + void swap(VectorHashTable &); + void resize(size_type); + size_type bucket_count() const {return vector_.size();} + double load_factor() const {return static_cast<double>(size())/bucket_count();} + + private: + class FindIterator + { + public: // but don't use + const vector_type * vector; + const Parms * parms; + key_type key; + int i; + int hash2; + FindIterator() {} + FindIterator(const HashTable * ht, const key_type & k); + public: + bool at_end() const {return parms->is_nonexistent((*vector)[i]);} + void adv(); + FindIterator & operator ++() {adv(); return *this;} + }; + friend class FindIterator; + + public: + class ConstFindIterator : public FindIterator + { + public: + ConstFindIterator() {} + ConstFindIterator(const HashTable * ht, const key_type & k) + : FindIterator(ht,k) {} + const value_type & deref() const {return (*this->vector)[this->i];} + }; + + class MutableFindIterator : public FindIterator + { + public: + MutableFindIterator() {} + MutableFindIterator(HashTable * ht, const key_type & k) + : FindIterator(ht,k) {} + value_type & deref() const { + return (*const_cast<vector_type *>(this->vector))[this->i]; + } + }; + + ConstFindIterator multi_find(const key_type & k) const { + return ConstFindIterator(this, k); + } + + MutableFindIterator multi_find(const key_type & k) { + return MutableFindIterator(this, k); + } + + }; +} + +#endif diff --git a/jni/modules/speller/default/weights.hpp b/jni/modules/speller/default/weights.hpp new file mode 100644 index 0000000..a610a11 --- /dev/null +++ b/jni/modules/speller/default/weights.hpp @@ -0,0 +1,23 @@ + +#ifndef __aspeller_weights_hh__ +#define __aspeller_weights_hh__ + +namespace aspeller { + + struct EditDistanceWeights { + int del1; // the cost of deleting a char in the first string + int del2; // the cost of inserting a character or deleting a char + // in the next string + int swap; // the cost of swapping two adjacent letters + int sub; // the cost of replacing one letter with another + int similar; // the cost of a "similar" but not exact match for + // two characters + int min; // the min of del1, del2, swap and sub. + int max; // the max of del1, del2, swap and sub. + EditDistanceWeights() + : del1(1), del2(1), swap(1), sub(1), similar(0), min(1), max(1) {} + }; + +} + +#endif diff --git a/jni/modules/speller/default/wordinfo.hpp b/jni/modules/speller/default/wordinfo.hpp new file mode 100644 index 0000000..42f69d9 --- /dev/null +++ b/jni/modules/speller/default/wordinfo.hpp @@ -0,0 +1,60 @@ +// Copyright 2000 by Kevin Atkinson under the terms of the LGPL + +#ifndef __aspeller_wordinfo__ +#define __aspeller_wordinfo__ + +#include <assert.h> +#include "string.hpp" + +namespace acommon { + class OStream; + class Convert; +} + +namespace aspeller { + + // WordInfo + + typedef unsigned int WordInfo; // 4 bits + + enum CasePattern {Other, FirstUpper, AllLower, AllUpper}; + // Other 00 + // FirstUpper 01 + // AllLower 10 + // AllUpper 11 + // First bit : is upper + // Second bit: uniform case + + static const WordInfo CASE_PATTERN = 3; + static const WordInfo ALL_PLAIN = (1 << 2); + static const WordInfo ALL_CLEAN = (1 << 3); + + using namespace acommon; + + class Language; + struct ConvertWord; + + // WordEntry is an entry in the dictionary. + struct WordEntry + { + const char * word; + const char * aff; + const char * catg; + void (* adv_)(WordEntry *); + void * intr[3]; + unsigned word_size; + enum What {Other, Word, Soundslike, Clean, Misspelled} what; + WordInfo word_info; + int frequency; // 0 .. 255 + // if type is Word than aff will be defined, otherwise it won't + bool at_end() {return !word;} + bool adv() {if (adv_) {adv_(this); return true;} word = 0; return false;} + operator bool () const {return word != 0;} + OStream & write(OStream & o, const Language & l, Convert * c = 0) const; + WordEntry() {memset(this, 0, sizeof(WordEntry));} + void clear() {memset(this, 0, sizeof(WordEntry));} + ~WordEntry() {} + }; +} + +#endif diff --git a/jni/modules/speller/default/writable.cpp b/jni/modules/speller/default/writable.cpp new file mode 100644 index 0000000..3d43628 --- /dev/null +++ b/jni/modules/speller/default/writable.cpp @@ -0,0 +1,940 @@ +// This file is part of The New Aspell +// Copyright (C) 2000,2011 by Kevin Atkinson under the GNU LGPL +// license version 2.0 or 2.1. You should have received a copy of the +// LGPL license along with this library if you did not you can find it +// at http://www.gnu.org/. + +#include <time.h> + +#include "hash-t.hpp" +#include "data.hpp" +#include "data_util.hpp" +#include "enumeration.hpp" +#include "errors.hpp" +#include "file_util.hpp" +#include "fstream.hpp" +#include "language.hpp" +#include "getdata.hpp" + +namespace { + +////////////////////////////////////////////////////////////////////// +// +// WritableBase +// + +using namespace std; +using namespace aspeller; +using namespace acommon; + +typedef const char * Str; +typedef unsigned char byte; + +struct Hash { + InsensitiveHash f; + Hash(const Language * l) : f(l) {} + size_t operator() (Str s) const { + return f(s); + } +}; + +struct Equal { + InsensitiveEqual f; + Equal(const Language * l) : f(l) {} + bool operator() (Str a, Str b) const { + return f(a, b); + } +}; + +void write_n_escape(FStream & o, const char * str) { + while (*str != '\0') { + if (*str == '\n') o << "\\n"; + else if (*str == '\r') o << "\\r"; + else if (*str == '\\') o << "\\\\"; + else o << *str; + ++str; + } +} + +static inline char f_getc(FStream & in) { + int c = in.get(); + return c == EOF ? '\0' : (char)c; +} + +bool getline_n_unescape(FStream & in, String & str, char delem) { + str.clear(); + char c = f_getc(in); + if (!c) return false; + while (c && c != delem) { + if (c == '\\') { + c = f_getc(in); + if (c == 'n') str.append('\n'); + else if (c == 'r') str.append('\r'); + else if (c == '\\') str.append('\\'); + else {str.append('\\'); continue;} + } else { + str.append(c); + } + c = f_getc(in); + } + return true; +} + +bool getline_n_unescape(FStream & in, DataPair & d, String & buf) +{ + if (!getline_n_unescape(in, buf, '\n')) return false; + d.value.str = buf.mstr(); + d.value.size = buf.size(); + return true; +} + +typedef Vector<Str> StrVector; + +typedef hash_multiset<Str,Hash,Equal> WordLookup; +typedef hash_map<Str,StrVector> SoundslikeLookup; + +class WritableBase : public Dictionary { +protected: + String suffix; + String compatibility_suffix; + + time_t cur_file_date; + + String compatibility_file_name; + + WritableBase(BasicType t, const char * n, const char * s, const char * cs) + : Dictionary(t,n), + suffix(s), compatibility_suffix(cs), + use_soundslike(true) {fast_lookup = true;} + virtual ~WritableBase() {} + + virtual PosibErr<void> save(FStream &, ParmString) = 0; + virtual PosibErr<void> merge(FStream &, ParmString, Config * = 0) = 0; + + PosibErr<void> save2(FStream &, ParmString); + PosibErr<void> update(FStream &, ParmString); + PosibErr<void> save(bool do_update); + PosibErr<void> update_file_date_info(FStream &); + PosibErr<void> load(ParmString, Config &, DictList *, SpellerImpl *); + PosibErr<void> merge(ParmString); + PosibErr<void> save_as(ParmString); + PosibErr<void> clear(); + + String file_encoding; + ConvObj iconv; + ConvObj oconv; + PosibErr<void> set_file_encoding(ParmString, Config & c); + + PosibErr<void> synchronize() {return save(true);} + PosibErr<void> save_noupdate() {return save(false);} + + bool use_soundslike; + StackPtr<WordLookup> word_lookup; + SoundslikeLookup soundslike_lookup_; + ObjStack buffer; + + void set_lang_hook(Config & c) { + set_file_encoding(lang()->data_encoding(), c); + word_lookup.reset(new WordLookup(10, Hash(lang()), Equal(lang()))); + use_soundslike = lang()->have_soundslike(); + } +}; + +PosibErr<void> WritableBase::update_file_date_info(FStream & f) { + RET_ON_ERR(update_file_info(f)); + cur_file_date = get_modification_time(f); + return no_err; +} + +PosibErr<void> WritableBase::load(ParmString f0, Config & config, + DictList *, SpellerImpl *) +{ + set_file_name(f0); + const String f = file_name(); + FStream in; + + if (file_exists(f)) { + + RET_ON_ERR(open_file_readlock(in, f)); + if (in.peek() == EOF) return make_err(cant_read_file,f); + // ^^ FIXME + RET_ON_ERR(merge(in, f, &config)); + + } else if (f.substr(f.size()-suffix.size(),suffix.size()) + == suffix) { + + compatibility_file_name = f.substr(0,f.size() - suffix.size()); + compatibility_file_name += compatibility_suffix; + + { + PosibErr<void> pe = open_file_readlock(in, compatibility_file_name); + if (pe.has_err()) {compatibility_file_name = ""; return pe;} + } { + PosibErr<void> pe = merge(in, compatibility_file_name, &config); + if (pe.has_err()) {compatibility_file_name = ""; return pe;} + } + + } else { + + return make_err(cant_read_file,f); + + } + + return update_file_date_info(in); +} + +PosibErr<void> WritableBase::merge(ParmString f0) { + FStream in; + Dict::FileName fn(f0); + RET_ON_ERR(open_file_readlock(in, fn.path)); + RET_ON_ERR(merge(in, fn.path)); + return no_err; +} + +PosibErr<void> WritableBase::update(FStream & in, ParmString fn) { + typedef PosibErr<void> Ret; + { + Ret pe = merge(in, fn); + if (pe.has_err() && compatibility_file_name.empty()) return pe; + } { + Ret pe = update_file_date_info(in); + if (pe.has_err() && compatibility_file_name.empty()) return pe; + } + return no_err; +} + +PosibErr<void> WritableBase::save2(FStream & out, ParmString fn) { + truncate_file(out, fn); + + RET_ON_ERR(save(out,fn)); + + out.flush(); + + return no_err; +} + +PosibErr<void> WritableBase::save_as(ParmString fn) { + compatibility_file_name = ""; + set_file_name(fn); + FStream inout; + RET_ON_ERR(open_file_writelock(inout, file_name())); + RET_ON_ERR(save2(inout, file_name())); + RET_ON_ERR(update_file_date_info(inout)); + return no_err; +} + +PosibErr<void> WritableBase::save(bool do_update) { + FStream inout; + RET_ON_ERR_SET(open_file_writelock(inout, file_name()), + bool, prev_existed); + + if (do_update + && prev_existed + && get_modification_time(inout) > cur_file_date) + RET_ON_ERR(update(inout, file_name())); + + RET_ON_ERR(save2(inout, file_name())); + RET_ON_ERR(update_file_date_info(inout)); + + if (compatibility_file_name.size() != 0) { + remove_file(compatibility_file_name.c_str()); + compatibility_file_name = ""; + } + + return no_err; +} + +PosibErr<void> WritableBase::clear() { + word_lookup->clear(); + soundslike_lookup_.clear(); + buffer.reset(); + return no_err; +} + +PosibErr<void> WritableBase::set_file_encoding(ParmString enc, Config & c) +{ + if (enc == file_encoding) return no_err; + if (enc == "") enc = lang()->charmap(); + RET_ON_ERR(iconv.setup(c, enc, lang()->charmap(), NormFrom)); + RET_ON_ERR(oconv.setup(c, lang()->charmap(), enc, NormTo)); + if (iconv || oconv) + file_encoding = enc; + else + file_encoding = ""; + return no_err; +} + + +///////////////////////////////////////////////////////////////////// +// +// Common Stuff +// + +// a word is stored in memory as follows +// <word info><size><word...><null> +// the hash table points to the word and not the start of the block + +static inline void set_word(WordEntry & res, Str w) +{ + res.word = w; + res.word_size = (byte)w[-1]; + res.word_info = (byte)w[-2]; + res.aff = ""; +} + +// a soundslike is stored in memory as follows +// <word info><size><sl...><null> +// the hash table points to the sl and not the start of the block + +static inline void set_sl(WordEntry & res, Str w) +{ + res.word = w; + res.word_size = (byte)w[-1]; +} + +static void soundslike_next(WordEntry * w) +{ + const Str * & i = (const Str * &)(w->intr[0]); + const Str * end = (const Str * )(w->intr[1]); + set_word(*w, *i); + ++i; + if (i == end) w->adv_ = 0; +} + +static void sl_init(const StrVector * tmp, WordEntry & o) +{ + const Str * i = tmp->pbegin(); + const Str * end = tmp->pend(); + set_word(o, *i); + ++i; + if (i != end) { + o.intr[0] = (void *)i; + o.intr[1] = (void *)end; + o.adv_ = soundslike_next; + } else { + o.intr[0] = 0; + } +} + +struct SoundslikeElements : public SoundslikeEnumeration { + + typedef SoundslikeLookup::const_iterator Itr; + + Itr i; + Itr end; + + WordEntry d; + + SoundslikeElements(Itr i0, Itr end0) : i(i0), end(end0) { + d.what = WordEntry::Soundslike; + } + + WordEntry * next(int) { + if (i == end) return 0; + set_sl(d, i->first); + d.intr[0] = (void *)(&i->second); + ++i; + return &d; + } +}; + +struct CleanElements : public SoundslikeEnumeration { + + typedef WordLookup::const_iterator Itr; + + Itr i; + Itr end; + + WordEntry d; + + CleanElements(Itr i0, Itr end0) : i(i0), end(end0) { + d.what = WordEntry::Word; + } + + WordEntry * next(int) { + if (i == end) return 0; + set_word(d, *i); + ++i; + return &d; + } +}; + +struct ElementsParms { + typedef WordEntry * Value; + typedef WordLookup::const_iterator Iterator; + Iterator end_; + WordEntry data; + ElementsParms(Iterator e) : end_(e) {} + bool endf(Iterator i) const {return i==end_;} + Value deref(Iterator i) {set_word(data, *i); return &data;} + static Value end_state() {return 0;} +}; + +///////////////////////////////////////////////////////////////////// +// +// WritableDict +// + +class WritableDict : public WritableBase +{ +public: //but don't use + PosibErr<void> save(FStream &, ParmString); + PosibErr<void> merge(FStream &, ParmString, Config * config); + +public: + + WritableDict() : WritableBase(basic_dict, "WritableDict", ".pws", ".per") {} + + Size size() const; + bool empty() const; + + PosibErr<void> add(ParmString w) {return Dictionary::add(w);} + PosibErr<void> add(ParmString w, ParmString s); + + bool lookup(ParmString word, const SensitiveCompare *, WordEntry &) const; + + bool clean_lookup(const char * sondslike, WordEntry &) const; + + bool soundslike_lookup(const WordEntry & soundslike, WordEntry &) const; + bool soundslike_lookup(ParmString soundslike, WordEntry &) const; + + WordEntryEnumeration * detailed_elements() const; + + SoundslikeEnumeration * soundslike_elements() const; +}; + +WritableDict::Size WritableDict::size() const +{ + return word_lookup->size(); +} + +bool WritableDict::empty() const +{ + return word_lookup->empty(); +} + +bool WritableDict::lookup(ParmString word, const SensitiveCompare * c, + WordEntry & o) const +{ + o.clear(); + pair<WordLookup::iterator, WordLookup::iterator> p(word_lookup->equal_range(word)); + while (p.first != p.second) { + if ((*c)(word,*p.first)) { + o.what = WordEntry::Word; + set_word(o, *p.first); + return true; + } + ++p.first; + } + return false; +} + +bool WritableDict::clean_lookup(const char * sl, WordEntry & o) const +{ + o.clear(); + pair<WordLookup::iterator, WordLookup::iterator> p(word_lookup->equal_range(sl)); + if (p.first == p.second) return false; + o.what = WordEntry::Word; + set_word(o, *p.first); + return true; + // FIXME: Deal with multiple entries +} + +bool WritableDict::soundslike_lookup(const WordEntry & word, WordEntry & o) const +{ + if (use_soundslike) { + + const StrVector * tmp + = (const StrVector *)(word.intr[0]); + o.clear(); + + o.what = WordEntry::Word; + sl_init(tmp, o); + + } else { + + o.what = WordEntry::Word; + o.word = word.word; + o.word_size = word.word_size; + o.word_info = word.word_info; + o.aff = ""; + + } + return true; +} + +bool WritableDict::soundslike_lookup(ParmString word, WordEntry & o) const +{ + if (use_soundslike) { + + o.clear(); + SoundslikeLookup::const_iterator i = soundslike_lookup_.find(word); + if (i == soundslike_lookup_.end()) { + return false; + } else { + o.what = WordEntry::Word; + sl_init(&i->second, o); + return true; + } + + } else { + + return WritableDict::clean_lookup(word, o); + + } +} + +SoundslikeEnumeration * WritableDict::soundslike_elements() const { + if (use_soundslike) + return new SoundslikeElements(soundslike_lookup_.begin(), + soundslike_lookup_.end()); + else + return new CleanElements(word_lookup->begin(), + word_lookup->end()); +} + +WritableDict::Enum * WritableDict::detailed_elements() const { + return new MakeEnumeration<ElementsParms> + (word_lookup->begin(),ElementsParms(word_lookup->end())); +} + +PosibErr<void> WritableDict::add(ParmString w, ParmString s) { + RET_ON_ERR(check_if_valid(*lang(),w)); + SensitiveCompare c(lang()); + WordEntry we; + if (WritableDict::lookup(w,&c,we)) return no_err; + byte * w2; + w2 = (byte *)buffer.alloc(w.size() + 3); + *w2++ = lang()->get_word_info(w); + *w2++ = w.size(); + memcpy(w2, w.str(), w.size() + 1); + word_lookup->insert((char *)w2); + if (use_soundslike) { + byte * s2; + s2 = (byte *)buffer.alloc(s.size() + 2); + *s2++ = s.size(); + memcpy(s2, s.str(), s.size() + 1); + soundslike_lookup_[(char *)s2].push_back((char *)w2); + } + return no_err; +} + +PosibErr<void> WritableDict::merge(FStream & in, + ParmString file_name, + Config * config) +{ + typedef PosibErr<void> Ret; + unsigned int ver; + + String buf; + DataPair dp; + + if (!getline(in, dp, buf)) + make_err(bad_file_format, file_name); + + split(dp); + if (dp.key == "personal_wl") + ver = 10; + else if (dp.key == "personal_ws-1.1") + ver = 11; + else + return make_err(bad_file_format, file_name); + + split(dp); + { + Ret pe = set_check_lang(dp.key, *config); + if (pe.has_err()) + return pe.with_file(file_name); + } + + split(dp); // count not used at the moment + + split(dp); + if (dp.key.size > 0) + set_file_encoding(dp.key, *config); + else + set_file_encoding("", *config); + + ConvP conv(iconv); + while (getline_n_unescape(in, dp, buf)) { + if (ver == 10) + split(dp); + else + dp.key = dp.value; + Ret pe = add(conv(dp.key)); + if (pe.has_err()) { + clear(); + return pe.with_file(file_name); + } + } + return no_err; +} + +PosibErr<void> WritableDict::save(FStream & out, ParmString file_name) +{ + out.printf("personal_ws-1.1 %s %i %s\n", + lang_name(), word_lookup->size(), file_encoding.c_str()); + + WordLookup::const_iterator i = word_lookup->begin(); + WordLookup::const_iterator e = word_lookup->end(); + + ConvP conv(oconv); + for (;i != e; ++i) { + write_n_escape(out, conv(*i)); + out << '\n'; + } + return no_err; +} + +///////////////////////////////////////////////////////////////////// +// +// WritableReplList +// + +static inline StrVector * get_vector(Str s) +{ + return (StrVector *)(s - sizeof(StrVector) - 2); +} + +class WritableReplDict : public WritableBase +{ + WritableReplDict(const WritableReplDict&); + WritableReplDict& operator=(const WritableReplDict&); + +public: + WritableReplDict() : WritableBase(replacement_dict, "WritableReplDict", ".prepl",".rpl") + { + fast_lookup = true; + } + ~WritableReplDict(); + + Size size() const; + bool empty() const; + + bool lookup(ParmString, const SensitiveCompare *, WordEntry &) const; + + bool clean_lookup(ParmString sondslike, WordEntry &) const; + + bool soundslike_lookup(const WordEntry &, WordEntry &) const; + bool soundslike_lookup(ParmString, WordEntry &) const; + + bool repl_lookup(const WordEntry &, WordEntry &) const; + bool repl_lookup(ParmString, WordEntry &) const; + + WordEntryEnumeration * detailed_elements() const; + SoundslikeEnumeration * soundslike_elements() const; + + PosibErr<void> add_repl(ParmString mis, ParmString cor) { + return Dictionary::add_repl(mis,cor);} + PosibErr<void> add_repl(ParmString mis, ParmString cor, ParmString s); + +private: + PosibErr<void> save(FStream &, ParmString ); + PosibErr<void> merge(FStream &, ParmString , Config * config); +}; + +WritableReplDict::Size WritableReplDict::size() const +{ + return word_lookup->size(); +} + +bool WritableReplDict::empty() const +{ + return word_lookup->empty(); +} + +bool WritableReplDict::lookup(ParmString word, const SensitiveCompare * c, + WordEntry & o) const +{ + o.clear(); + pair<WordLookup::iterator, WordLookup::iterator> p(word_lookup->equal_range(word)); + while (p.first != p.second) { + if ((*c)(word,*p.first)) { + o.what = WordEntry::Misspelled; + set_word(o, *p.first); + o.intr[0] = (void *)*p.first; + return true; + } + ++p.first; + } + return false; +} + +bool WritableReplDict::clean_lookup(ParmString sl, WordEntry & o) const +{ + o.clear(); + pair<WordLookup::iterator, WordLookup::iterator> p(word_lookup->equal_range(sl)); + if (p.first == p.second) return false; + o.what = WordEntry::Misspelled; + set_word(o, *p.first); + o.intr[0] = (void *)*p.first; + return true; + // FIXME: Deal with multiple entries +} + +bool WritableReplDict::soundslike_lookup(const WordEntry & word, WordEntry & o) const +{ + if (use_soundslike) { + const StrVector * tmp = (const StrVector *)(word.intr[0]); + o.clear(); + o.what = WordEntry::Misspelled; + sl_init(tmp, o); + } else { + o.what = WordEntry::Misspelled; + o.word = word.word; + o.word_size = word.word_size; + o.aff = ""; + } + return true; +} + +bool WritableReplDict::soundslike_lookup(ParmString soundslike, WordEntry & o) const +{ + if (use_soundslike) { + o.clear(); + SoundslikeLookup::const_iterator i = soundslike_lookup_.find(soundslike); + if (i == soundslike_lookup_.end()) { + return false; + } else { + o.what = WordEntry::Misspelled; + sl_init(&(i->second), o); + return true; + } + } else { + return WritableReplDict::clean_lookup(soundslike, o); + } +} + +SoundslikeEnumeration * WritableReplDict::soundslike_elements() const { + if (use_soundslike) + return new SoundslikeElements(soundslike_lookup_.begin(), + soundslike_lookup_.end()); + else + return new CleanElements(word_lookup->begin(), + word_lookup->end()); +} + +WritableReplDict::Enum * WritableReplDict::detailed_elements() const { + return new MakeEnumeration<ElementsParms> + (word_lookup->begin(),ElementsParms(word_lookup->end())); +} + +static void repl_next(WordEntry * w) +{ + const Str * & i = (const Str * &)(w->intr[0]); + const Str * end = (const Str * )(w->intr[1]); + set_word(*w, *i); + ++i; + if (i == end) w->adv_ = 0; +} + +static void repl_init(const StrVector * tmp, WordEntry & o) +{ + o.what = WordEntry::Word; + const Str * i = tmp->pbegin(); + const Str * end = tmp->pend(); + set_word(o, *i); + ++i; + if (i != end) { + o.intr[0] = (void *)i; + o.intr[1] = (void *)end; + o.adv_ = repl_next; + } else { + o.intr[0] = 0; + } +} + +bool WritableReplDict::repl_lookup(const WordEntry & w, WordEntry & o) const +{ + const StrVector * repls; + if (w.intr[0] && !w.intr[1]) { // the intr are not for the sl iter + repls = get_vector(w.word); + } else { + SensitiveCompare c(lang()); // FIXME: This is not exactly right + WordEntry tmp; + WritableReplDict::lookup(w.word, &c, tmp); + repls = get_vector(tmp.word); + if (!repls) return false; + } + o.clear(); + repl_init(repls, o); + return true; +} + +bool WritableReplDict::repl_lookup(ParmString word, WordEntry & o) const +{ + WordEntry w; + w.word = word; + return WritableReplDict::repl_lookup(w, o); +} + +PosibErr<void> WritableReplDict::add_repl(ParmString mis, ParmString cor, ParmString sl) +{ + Str m; + SensitiveCompare cmp(lang()); // FIXME: I don't think this is completely correct + WordEntry we; + + pair<WordLookup::iterator, WordLookup::iterator> p0(word_lookup->equal_range(mis)); + WordLookup::iterator p = p0.first; + + for (; p != p0.second && !cmp(mis,*p); ++p); + + if (p == p0.second) { + byte * m0 = (byte *)buffer.alloc(sizeof(StrVector) + mis.size() + 3, sizeof(void *)); + new (m0) StrVector; + m0 += sizeof(StrVector); + *m0++ = lang()->get_word_info(mis); + *m0++ = mis.size(); + memcpy(m0, mis.str(), mis.size() + 1); + m = (char *)m0; + p = word_lookup->insert(m).first; + } else { + m = *p; + } + + StrVector * v = get_vector(m); + + for (StrVector::iterator i = v->begin(); i != v->end(); ++i) + if (cmp(cor, *i)) return no_err; + + byte * c0 = (byte *)buffer.alloc(cor.size() + 3); + *c0++ = lang()->get_word_info(cor); + *c0++ = cor.size(); + memcpy(c0, cor.str(), cor.size() + 1); + v->push_back((char *)c0); + + if (use_soundslike) { + byte * s0 = (byte *)buffer.alloc(sl.size() + 2); + *s0++ = sl.size(); + memcpy(s0, sl.str(), sl.size() + 1); + soundslike_lookup_[(char *)s0].push_back(m); + } + + return no_err; +} + +PosibErr<void> WritableReplDict::save (FStream & out, ParmString file_name) +{ + out.printf("personal_repl-1.1 %s 0 %s\n", lang_name(), file_encoding.c_str()); + + WordLookup::iterator i = word_lookup->begin(); + WordLookup::iterator e = word_lookup->end(); + + ConvP conv1(oconv); + ConvP conv2(oconv); + + for (;i != e; ++i) + { + StrVector * v = get_vector(*i); + for (StrVector::iterator j = v->begin(); j != v->end(); ++j) + { + write_n_escape(out, conv1(*i)); + out << ' '; + write_n_escape(out, conv2(*j)); + out << '\n'; + } + } + return no_err; +} + +PosibErr<void> WritableReplDict::merge(FStream & in, + ParmString file_name, + Config * config) +{ + typedef PosibErr<void> Ret; + unsigned int version; + unsigned int num_words, num_repls; + + String buf; + DataPair dp; + + if (!getline(in, dp, buf)) + make_err(bad_file_format, file_name); + + split(dp); + if (dp.key == "personal_repl") + version = 10; + else if (dp.key == "personal_repl-1.1") + version = 11; + else + return make_err(bad_file_format, file_name); + + split(dp); + { + Ret pe = set_check_lang(dp.key, *config); + if (pe.has_err()) + return pe.with_file(file_name); + } + + unsigned int num_soundslikes = 0; + if (version == 10) { + split(dp); + num_soundslikes = atoi(dp.key); + } + + split(dp); // not used at the moment + + split(dp); + if (dp.key.size > 0) + set_file_encoding(dp.key, *config); + else + set_file_encoding("", *config); + + if (version == 11) { + + ConvP conv1(iconv); + ConvP conv2(iconv); + for (;;) { + bool res = getline_n_unescape(in, buf, '\n'); + if (!res) break; + char * mis = buf.mstr(); + char * repl = strchr(mis, ' '); + if (!repl) continue; // bad line, ignore + *repl = '\0'; // split string + ++repl; + if (!repl[0]) continue; // empty repl, ignore + WritableReplDict::add_repl(conv1(mis), conv2(repl)); + } + + } else { + + String mis, sound, repl; + unsigned int h,i,j; + for (h=0; h != num_soundslikes; ++h) { + in >> sound >> num_words; + for (i = 0; i != num_words; ++i) { + in >> mis >> num_repls; + in.ignore(); // ignore space + for (j = 0; j != num_repls; ++j) { + in.getline(repl, ','); + WritableReplDict::add_repl(mis, repl); + } + } + } + + } + return no_err; +} + +WritableReplDict::~WritableReplDict() +{ + WordLookup::iterator i = word_lookup->begin(); + WordLookup::iterator e = word_lookup->end(); + + for (;i != e; ++i) + get_vector(*i)->~StrVector(); +} + +} + +namespace aspeller { + + Dictionary * new_default_writable_dict() { + return new WritableDict(); + } + + Dictionary * new_default_replacement_dict() { + return new WritableReplDict(); + } + +} diff --git a/jni/modules/speller/default/writable.lo b/jni/modules/speller/default/writable.lo new file mode 100644 index 0000000..525f875 --- /dev/null +++ b/jni/modules/speller/default/writable.lo @@ -0,0 +1,12 @@ +# modules/speller/default/writable.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/writable.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/modules/tokenizer/.deps/.dirstamp b/jni/modules/tokenizer/.deps/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/tokenizer/.deps/basic.Plo b/jni/modules/tokenizer/.deps/basic.Plo new file mode 100644 index 0000000..ee35398 --- /dev/null +++ b/jni/modules/tokenizer/.deps/basic.Plo @@ -0,0 +1,286 @@ +modules/tokenizer/basic.lo: modules/tokenizer/basic.cpp \ + common/tokenizer.hpp common/char_vector.hpp common/string.hpp \ + /usr/include/string.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/bits/stdlib.h \ + /usr/include/c++/4.5/algorithm /usr/include/c++/4.5/utility \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/c++/4.5/bits/stl_relops.h \ + /usr/include/c++/4.5/bits/stl_pair.h /usr/include/c++/4.5/bits/move.h \ + /usr/include/c++/4.5/cstddef /usr/include/c++/4.5/bits/concept_check.h \ + /usr/include/c++/4.5/bits/stl_algobase.h \ + /usr/include/c++/4.5/bits/functexcept.h \ + /usr/include/c++/4.5/exception_defines.h \ + /usr/include/c++/4.5/bits/cpp_type_traits.h \ + /usr/include/c++/4.5/ext/type_traits.h \ + /usr/include/c++/4.5/ext/numeric_traits.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.5/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.5/bits/stl_iterator.h \ + /usr/include/c++/4.5/debug/debug.h /usr/include/c++/4.5/bits/stl_algo.h \ + /usr/include/c++/4.5/cstdlib /usr/include/c++/4.5/bits/algorithmfwd.h \ + /usr/include/c++/4.5/initializer_list \ + /usr/include/c++/4.5/bits/stl_heap.h \ + /usr/include/c++/4.5/bits/stl_tempbuf.h \ + /usr/include/c++/4.5/bits/stl_construct.h /usr/include/c++/4.5/new \ + /usr/include/c++/4.5/exception \ + /usr/include/c++/4.5/bits/stl_uninitialized.h common/hash_fun.hpp \ + common/parm_string.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h common/mutable_string.hpp \ + common/ostream.hpp \ + /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h \ + common/istream.hpp common/filter_char.hpp common/filter_char_vector.hpp \ + common/vector.hpp /usr/include/c++/4.5/vector \ + /usr/include/c++/4.5/bits/allocator.h \ + /usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.5/ext/new_allocator.h \ + /usr/include/c++/4.5/bits/stl_vector.h \ + /usr/include/c++/4.5/bits/stl_bvector.h \ + /usr/include/c++/4.5/bits/vector.tcc common/convert.hpp \ + common/posib_err.hpp common/error.hpp common/errors.hpp \ + common/ndebug.hpp common/stack_ptr.hpp /usr/include/assert.h \ + common/filter.hpp common/can_have_error.hpp common/copy_ptr.hpp \ + common/generic_copy_ptr-t.hpp common/generic_copy_ptr.hpp \ + common/string_pair_enumeration.hpp common/string_pair.hpp \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h common/cache.hpp \ + common/speller.hpp common/clone_ptr.hpp + +common/tokenizer.hpp: + +common/char_vector.hpp: + +common/string.hpp: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +/usr/include/c++/4.5/algorithm: + +/usr/include/c++/4.5/utility: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/4.5/bits/stl_relops.h: + +/usr/include/c++/4.5/bits/stl_pair.h: + +/usr/include/c++/4.5/bits/move.h: + +/usr/include/c++/4.5/cstddef: + +/usr/include/c++/4.5/bits/concept_check.h: + +/usr/include/c++/4.5/bits/stl_algobase.h: + +/usr/include/c++/4.5/bits/functexcept.h: + +/usr/include/c++/4.5/exception_defines.h: + +/usr/include/c++/4.5/bits/cpp_type_traits.h: + +/usr/include/c++/4.5/ext/type_traits.h: + +/usr/include/c++/4.5/ext/numeric_traits.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.5/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.5/bits/stl_iterator.h: + +/usr/include/c++/4.5/debug/debug.h: + +/usr/include/c++/4.5/bits/stl_algo.h: + +/usr/include/c++/4.5/cstdlib: + +/usr/include/c++/4.5/bits/algorithmfwd.h: + +/usr/include/c++/4.5/initializer_list: + +/usr/include/c++/4.5/bits/stl_heap.h: + +/usr/include/c++/4.5/bits/stl_tempbuf.h: + +/usr/include/c++/4.5/bits/stl_construct.h: + +/usr/include/c++/4.5/new: + +/usr/include/c++/4.5/exception: + +/usr/include/c++/4.5/bits/stl_uninitialized.h: + +common/hash_fun.hpp: + +common/parm_string.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/limits.h: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/bits/xopen_lim.h: + +/usr/include/bits/stdio_lim.h: + +common/mutable_string.hpp: + +common/ostream.hpp: + +/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/include/stdarg.h: + +common/istream.hpp: + +common/filter_char.hpp: + +common/filter_char_vector.hpp: + +common/vector.hpp: + +/usr/include/c++/4.5/vector: + +/usr/include/c++/4.5/bits/allocator.h: + +/usr/include/c++/4.5/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.5/ext/new_allocator.h: + +/usr/include/c++/4.5/bits/stl_vector.h: + +/usr/include/c++/4.5/bits/stl_bvector.h: + +/usr/include/c++/4.5/bits/vector.tcc: + +common/convert.hpp: + +common/posib_err.hpp: + +common/error.hpp: + +common/errors.hpp: + +common/ndebug.hpp: + +common/stack_ptr.hpp: + +/usr/include/assert.h: + +common/filter.hpp: + +common/can_have_error.hpp: + +common/copy_ptr.hpp: + +common/generic_copy_ptr-t.hpp: + +common/generic_copy_ptr.hpp: + +common/string_pair_enumeration.hpp: + +common/string_pair.hpp: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +common/cache.hpp: + +common/speller.hpp: + +common/clone_ptr.hpp: diff --git a/jni/modules/tokenizer/.dirstamp b/jni/modules/tokenizer/.dirstamp new file mode 100644 index 0000000..e69de29 diff --git a/jni/modules/tokenizer/Makefile b/jni/modules/tokenizer/Makefile new file mode 100644 index 0000000..aac96cc --- /dev/null +++ b/jni/modules/tokenizer/Makefile @@ -0,0 +1,4 @@ +top_srcdir = ../.. + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/tokenizer/Makefile.in b/jni/modules/tokenizer/Makefile.in new file mode 100644 index 0000000..60bc80d --- /dev/null +++ b/jni/modules/tokenizer/Makefile.in @@ -0,0 +1,4 @@ +top_srcdir = @top_srcdir@ + +subsystem: + $(MAKE) -C ${top_srcdir} diff --git a/jni/modules/tokenizer/basic.cpp b/jni/modules/tokenizer/basic.cpp new file mode 100644 index 0000000..89ea078 --- /dev/null +++ b/jni/modules/tokenizer/basic.cpp @@ -0,0 +1,80 @@ + +// This file is part of The New Aspell +// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license +// version 2.0 or 2.1. You should have received a copy of the LGPL +// license along with this library if you did not you can find +// it at http://www.gnu.org/. + +#include "tokenizer.hpp" +#include "convert.hpp" +#include "speller.hpp" + + +namespace acommon { + + class TokenizerBasic : public Tokenizer + { + public: + bool advance(); + }; + + bool TokenizerBasic::advance() { + word_begin = word_end; + begin_pos = end_pos; + FilterChar * cur = word_begin; + unsigned int cur_pos = begin_pos; + word.clear(); + + // skip spaces (non-word characters) + while (*cur != 0 && + !(is_word(*cur) + || (is_begin(*cur) && is_word(cur[1])))) + { + cur_pos += cur->width; + ++cur; + } + + if (*cur == 0) return false; + + word_begin = cur; + begin_pos = cur_pos; + + if (is_begin(*cur) && is_word(cur[1])) + { + cur_pos += cur->width; + ++cur; + } + + while (is_word(*cur) || + (is_middle(*cur) && + cur > word_begin && is_word(cur[-1]) && + is_word(cur[1]) )) + { + word.append(*cur); + cur_pos += cur->width; + ++cur; + } + + if (is_end(*cur)) + { + word.append(*cur); + cur_pos += cur->width; + ++cur; + } + + word.append('\0'); + word_end = cur; + end_pos = cur_pos; + + return true; + } +#undef increment__ + + PosibErr<Tokenizer *> new_tokenizer(Speller * speller) + { + Tokenizer * tok = new TokenizerBasic(); + speller->setup_tokenizer(tok); + return tok; + } + +} diff --git a/jni/modules/tokenizer/basic.lo b/jni/modules/tokenizer/basic.lo new file mode 100644 index 0000000..0a121ba --- /dev/null +++ b/jni/modules/tokenizer/basic.lo @@ -0,0 +1,12 @@ +# modules/tokenizer/basic.lo - a libtool object file +# Generated by ltmain.sh (GNU libtool) 2.2.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/basic.o' + +# Name of the non-PIC object +non_pic_object=none + diff --git a/jni/native.cpp b/jni/native.cpp new file mode 100644 index 0000000..23dd7e5 --- /dev/null +++ b/jni/native.cpp @@ -0,0 +1,193 @@ +#include <jni.h> +#include <string.h> +#include <android/log.h> +#include "aspell.h" + +#include <stdio.h> + +#define DEBUG_TAG "NDK_ASpell" + +extern "C" +{ + +void log_word_list(AspellSpeller * speller, const AspellWordList *wl) +{ + if (wl == 0) + { + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:LC: Failed to get suggested world list [%s]", + aspell_speller_error_message(speller)); + } + else + { + AspellStringEnumeration * els = aspell_word_list_elements(wl); + const char * word; + while ((word = aspell_string_enumeration_next(els)) != 0) + { + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:LC: Suggested: [%s]", word); + } + delete_aspell_string_enumeration(els); + } +} + +void Java_gr_padeler_aspellchecker_ASpell_destruct(JNIEnv * env, jobject _this) +{ + jclass cls = env->GetObjectClass(_this); + jfieldID fid = env->GetFieldID(cls, "nativePtr", "J"); + AspellSpeller *speller = (AspellSpeller *) env->GetLongField(_this, fid); + delete_aspell_speller(speller); + env->SetLongField(_this, fid, 0); +} + +void Java_gr_padeler_aspellchecker_ASpell_setUserDictionary(JNIEnv * env, jobject _this, jobjectArray strings) +{ + jclass cls = env->GetObjectClass(_this); + jfieldID fid = env->GetFieldID(cls, "nativePtr", "J"); + AspellSpeller *speller = (AspellSpeller *) env->GetLongField(_this, fid); + + if (speller == NULL) + { + env->ThrowNew(env->FindClass("java/lang/Exception"), "Speller Not initialized"); + return; + } + + aspell_speller_clear_session(speller); + + jboolean isCopy; + int numWords = env->GetArrayLength(strings); + for (int i = 0; i < numWords; i++) + { + jstring jword = (jstring) env->GetObjectArrayElement(strings, i); + const char * word = env->GetStringUTFChars(jword, &isCopy); + int stringLength = env->GetStringUTFLength(jword); + aspell_speller_add_to_session(speller, word, stringLength); + env->ReleaseStringUTFChars(jword, word); + } + + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell User dictionary updated"); +} + +jboolean Java_gr_padeler_aspellchecker_ASpell_initialize(JNIEnv * env, + jobject _this, + jstring dataDirStr, + jstring localeStr) +{ + jclass cls = env->GetObjectClass(_this); + jfieldID fid = env->GetFieldID(cls, "nativePtr", "J"); + + if (env->GetLongField(_this, fid) != 0) + { + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Already initialized!"); + return JNI_FALSE; + } + + AspellSpeller *speller = NULL; + AspellConfig * config = NULL; + AspellCanHaveError * ret; + + config = new_aspell_config(); + + jboolean isCopy; + const char * locale = env->GetStringUTFChars(localeStr, &isCopy); + const char * dataDir = env->GetStringUTFChars(dataDirStr, &isCopy); + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Creating Speller [%s] [%s]", locale, + dataDir); + + aspell_config_replace(config, "lang", locale); + aspell_config_replace(config, "data-dir", dataDir); + aspell_config_replace(config, "dict-dir", dataDir); + aspell_config_replace(config, "rem-filter", "url"); + aspell_config_replace(config, "encoding", "UTF-8"); + + ret = new_aspell_speller(config); + delete_aspell_config(config); + + env->ReleaseStringUTFChars(localeStr, locale); + env->ReleaseStringUTFChars(dataDirStr, dataDir); + + if (aspell_error(ret) != 0) + { + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Failed to create speller [%s]", + aspell_error_message(ret)); + delete_aspell_can_have_error(ret); + return JNI_FALSE; + } + + speller = to_aspell_speller(ret); + config = aspell_speller_config(speller); + + env->SetLongField(_this, fid, (jlong) speller); + + return JNI_TRUE; +} + +jobjectArray Java_gr_padeler_aspellchecker_ASpell_check(JNIEnv * env, + jobject _this, + jstring wordStr) +{ + jobjectArray res; + + jclass cls = env->GetObjectClass(_this); + jfieldID fid = env->GetFieldID(cls, "nativePtr", "J"); + AspellSpeller *speller = (AspellSpeller *) env->GetLongField(_this, fid); + + if (speller == NULL) + { + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Speller Not initialized."); + res = (jobjectArray) env->NewObjectArray( + 1, env->FindClass("java/lang/String"), env->NewStringUTF("")); + + env->SetObjectArrayElement(res, 0, env->NewStringUTF("-100")); + return res; + } + + jboolean isCopy; + const char * word = env->GetStringUTFChars(wordStr, &isCopy); + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Checking word [%s]", word); + + int have = aspell_speller_check(speller, word, -1); + char code[5]; + sprintf(code, "%d", have); + + if (have != 0 && have != 1) + { // error. Keep the code in the result and log the event. + __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, + "NDK:ASpell Error %s\n", + aspell_speller_error_message(speller)); + res = (jobjectArray) env->NewObjectArray( + 1, env->FindClass("java/lang/String"), env->NewStringUTF("")); + env->SetObjectArrayElement(res, 0, env->NewStringUTF(code)); + } + else + { // i have results, store them to the result array. + const AspellWordList *wl = aspell_speller_suggest(speller, word, -1); + int len = aspell_word_list_size(wl) + 1; + res = (jobjectArray) env->NewObjectArray( + len, env->FindClass("java/lang/String"), env->NewStringUTF("")); + + AspellStringEnumeration * els = aspell_word_list_elements(wl); + + // store res code to first element of the list. + env->SetObjectArrayElement(res, 0, env->NewStringUTF(code)); + + const char * suggestion; + int i; + for (i = 1; i < len; ++i) + { + suggestion = aspell_string_enumeration_next(els); + env->SetObjectArrayElement(res, i, env->NewStringUTF(suggestion)); + } + delete_aspell_string_enumeration(els); + } + env->ReleaseStringUTFChars(wordStr, word); + return res; +} + +} diff --git a/jni/settings.h b/jni/settings.h new file mode 100644 index 0000000..2d147d0 --- /dev/null +++ b/jni/settings.h @@ -0,0 +1,162 @@ +/* gen/settings.h. Generated from settings.h.in by configure. */ +/* gen/settings.h.in. Generated from configure.ac by autoheader. */ + +#ifndef ASPELL_SETTINGS__H +#define ASPELL_SETTINGS__H + +/* Defined if filters should be compiled in */ +/* #undef COMPILE_IN_FILTER */ + +/* Defined to curses header file */ +/* #undef CURSES_HEADER */ + +/* Defined if no special Workarounds are needed for Curses headers */ +/* #undef CURSES_INCLUDE_STANDARD */ + +/* Defined if special Wordaround I is need for Curses headers */ +/* #undef CURSES_INCLUDE_WORKAROUND_1 */ + +/* Defined if curses like POSIX Functions should be used */ +/* #undef CURSES_ONLY */ + +/* Defined if _XOPEN_SOURCE_EXTENDED needs to be defined. (Can't define + globally as that will cause problems with some systems) */ +/* #undef DEFINE_XOPEN_SOURCE_EXTENDED */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +//#define ENABLE_NLS 1 + +/* Defined if win32 relocation should be used */ +/* #undef ENABLE_WIN32_RELOCATABLE */ + +/* Defined if filter version control should be used */ +#define FILTER_VERSION_CONTROL 1 + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#define HAVE_DLFCN_H 1 + +/* Defined if msdos getch is supported */ +/* #undef HAVE_GETCH */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ +//#define HAVE_LANGINFO_CODESET 1 + +/* Defined if the curses library is available */ +/* #undef HAVE_LIBCURSES */ + +/* Define to 1 if you have the `dl' library (-ldl). */ +#define HAVE_LIBDL 1 + +/* Defined if mblen is supported */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Defined if mmap and friends is supported */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Defined if curses libraray includes wide character support */ +/* #undef HAVE_WIDE_CURSES */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Name of package */ +#define PACKAGE "aspell" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU Aspell" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU Aspell 0.60.6.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "aspell" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.60.6.1" + +/* Defined if Posix Termios is Supported */ +#define POSIX_TERMIOS 1 + +/* Defined if STL rel_ops pollute the global namespace */ +/* #undef REL_OPS_POLLUTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Defined to term header file */ +/* #undef TERM_HEADER */ + +/* Defined if file ino is supported */ +#define USE_FILE_INO 1 + +/* Defined if file locking and truncating is supported */ +#define USE_FILE_LOCKS 1 + +/* Defined if Posix locales are supported */ +#define USE_LOCALE 1 + +/* Defined if Posix mutexes are supported */ +#define USE_POSIX_MUTEX 1 + +/* Defined if Posix regex are supported */ +#define USE_POSIX_REGEX 1 + +/* Version number of package */ +#define VERSION "0.60.6.1" + +#define C_EXPORT extern "C" + +#endif /* ASPELL_SETTINGS__H */ diff --git a/proguard.cfg b/proguard.cfg new file mode 100644 index 0000000..b1cdf17 --- /dev/null +++ b/proguard.cfg @@ -0,0 +1,40 @@ +-optimizationpasses 5 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference +-keep public class com.android.vending.licensing.ILicensingService + +-keepclasseswithmembernames class * { + native <methods>; +} + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet); +} + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet, int); +} + +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} diff --git a/project.properties b/project.properties new file mode 100644 index 0000000..895c9ce --- /dev/null +++ b/project.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-16 diff --git a/readme.rst b/readme.rst new file mode 100644 index 0000000..578a1e0 --- /dev/null +++ b/readme.rst @@ -0,0 +1 @@ +Forked from http://code.google.com/p/aspellchecker/ diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8074c4c571b8cd19e27f4ee5545df367420686d7 GIT binary patch literal 4147 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 literal 0 HcmV?d00001 diff --git a/res/drawable-ldpi/ic_launcher.png b/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1095584ec21f71cd0afc9e0993aa2209671b590c GIT binary patch literal 1723 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 Rn%e*X002ovPDHLkV1g`*Fem^3 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a07c69fa5a0f4da5d5efe96eea12a543154dbab6 GIT binary patch literal 2574 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 literal 0 HcmV?d00001 diff --git a/res/values/dictionaries.xml b/res/values/dictionaries.xml new file mode 100644 index 0000000..43da3aa --- /dev/null +++ b/res/values/dictionaries.xml @@ -0,0 +1,194 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + + <string-array name="updateInterval"> + <item name="1000">Every 1 second</item> + <item name="5000">Every 5 seconds</item> + <item name="30000">Every 30 seconds</item> + <item name="60000">Every 1 minute</item> + <item name="300000">Every 5 minutes</item> + </string-array> + <string-array name="updateIntervalValues"> + <item name="1000">1000</item> + <item name="5000">5000</item> + <item name="30000">30000</item> + <item name="60000">60000</item> + <item name="300000">300000</item> + </string-array> + <string-array name="dicts"> + <!--<item name="af">Afrikaans</item> + <item name="am">Amharic አማርኛ</item> + <item name="ar">Arabic عربي</item> + <item name="ast">Asturian Asturianu </item> + <item name="az">Azerbaijani Azərbaycanca</item> + <item name="be">Belarusian Беларускі</item> + <item name="bg">Bulgarian Български</item> + <item name="bn">Bengali বাংলা</item> + <item name="br">Breton</item> + <item name="ca">Catalan</item> + <item name="cs">Czech Čeština</item> + <item name="csb">Kashubian Kaszëbsczi</item> + <item name="cy">Welsh</item> + <item name="da">Danish Dansk</item> + <item name="de">German</item> + <item name="el">Greek</item> + <item name="en">English</item> + <item name="eo">Esperanto</item> + <item name="es">Spanish Español</item> + <item name="et">Estonian</item>--> + <item name="sv">Swedish</item> + </string-array> + + + + +<string-array name="dictsVals"> + <!--<item name="af">af</item> + <item name="am">am</item> + <item name="ar">ar</item> + <item name="ast">as</item> + <item name="az">az</item> + <item name="be">be</item> + <item name="bg">bg</item> + <item name="bn">bn</item> + <item name="br">br</item> + <item name="ca">ca</item> + <item name="cs">cs</item> + <item name="csb">cs</item> + <item name="cy">cy</item> + <item name="da">da</item> + <item name="de">de</item> + <item name="el">el</item> + <item name="en">en</item> + <item name="eo">eo</item> + <item name="es">es</item> + <item name="et">et</item> --> + <item name="sv">sv</item> + </string-array> + + <!-- +fa Persian فارسی +fi Finnish +fo Faroese Føroyskt +fr French Fran +fy Frisian Frysk +ga Irish Gaeilge +gd Scottish Gaelic Gàidhlig +gl Galician Galego (minimos) +grc Ancient Greek +gu Gujarati ગુજરાતી +gv Manx Gaelic +he Hebrew עברית +hi Hindi हिंदी +hil Hiligaynon +hr Croatian + +hu Hungarian +hy Armenian Հայերեն +ia Interlingua +id Indonesian +is Icelandic +it Italian +kn Kannada ಕನ್ನಡ +ku Kurdi Kurdî +ky Kirghiz +la Latin +lt Lithuanian lietuvių +lv Latvian +mg Malagasy +mi Maori +mk Macedonian +ml Malayalam മലയാളം +mn Mongolian Монгол +mr Marathi मराठी +ms Malay +mt Maltese +nb Norwegian Bokmal +nds Low Saxon Plattdüütsch +nl Dutch +nn Norwegian Nynorsk +ny Chichewa +or Oriya ଓଡ଼ିଆ +pa Punjabi ਪੰਜਾਬੀ +pl Polish polski +pt_BR Brazilian Portuguese +pt_PT Portuguese português +qu Quechua Runasimi (qheshwa) +ro Romanian Română +ru Russian Русский +rw Kinyarwanda +sc Sardinian +sk Slovak Slovenský +sl Slovenian +sr Serbian Српски +sv Swedish +sw Swahili Kiswahili +ta Tamil தமிழ் +te Telugu తెలుగు +tet Tetum +tk Turkmen +tl Tagalog Tagalog +tn Setswana +tr Turkish +uk Ukrainian Українська +uz Uzbek Ўзбекча +vi Vietnamese Việt ngữ +wa Walloon walon +yi Yiddish ייִדיש +zu Zulu +af Afrikaans +be Belarusian Беларускі +bg Bulgarian +br Breton +ca Catalan +cs Czech +cy Welsh +da Danish Dansk +de German +el Greek +en English +eo Esperanto +es Spanish Espa +fo Faroese Føroyskt +fr French Fran +ga Irish Gaeilge +gd Scottish Gaelic Gàidhlig +gl Galician Galego +gv Manx Gaelic +hil Hiligaynon +hr Croatian +ia Interlingua +id Indonesian Bahasa Indonesia +is Icelandic +it Italian +ku Kurdi Kurdî +mg Malagasy +mi Maori +mk Macedonian +ms Malay +mt Maltese +nb Norwegian Bokmal +nl Dutch +nn Norwegian Nynorsk +ny Chichewa +pl Polish polski +pt Portuguese +ro Romanian Română +ru Russian +rw Kinyarwanda +sc Sardinian +sk Slovak +sl Slovenian +sv Swedish +sw Swahili Kiswahili +tet Tetum +tk Turkmen +tl Tagalog Tagalog +tn Setswana +tr Turkish +uk Ukrainian +wa Walloon walon +zu Zulu + --> + +</resources> \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml new file mode 100644 index 0000000..13be61f --- /dev/null +++ b/res/values/strings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="name">ASpell Swedish Spellchecker</string> + <string name="settings">ASpell Swedish Spellchecker Settings</string> + <string name="subtype">Swedish</string> + +</resources> \ No newline at end of file diff --git a/res/xml/prefs.xml b/res/xml/prefs.xml new file mode 100644 index 0000000..abf5413 --- /dev/null +++ b/res/xml/prefs.xml @@ -0,0 +1,26 @@ +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> +<!-- + <PreferenceCategory + android:title="Dictionary Selection" + android:key="first_category"> + + <CheckBoxPreference + android:key="perform_updates" + android:summary="Download missing dictionaries" + android:title="Enable updates" + android:defaultValue="true" + android:enabled="false"/> + + <ListPreference + android:key="available_dicts" + android:title="Selected dictionary" + android:summary="Select which dictionaries to download" + android:defaultValue="sv" + android:entries="@array/dicts" + android:entryValues="@array/dictsVals" + android:dependency="perform_updates" + /> + + </PreferenceCategory> + --> +</PreferenceScreen> \ No newline at end of file diff --git a/res/xml/spellchecker.xml b/res/xml/spellchecker.xml new file mode 100644 index 0000000..412eb53 --- /dev/null +++ b/res/xml/spellchecker.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- The attributes in this XML file provide the configuration information --> +<!-- for the spell checker --> + +<spell-checker xmlns:android="http://schemas.android.com/apk/res/android" + android:label="@string/name" + android:settingsActivity="gr.padeler.aspellchecker.ASpellCheckerActivity"> + <subtype + android:label="@string/subtype" + android:subtypeLocale="sv" /> +</spell-checker> diff --git a/src/gr/padeler/aspellchecker/ASpell.java b/src/gr/padeler/aspellchecker/ASpell.java new file mode 100644 index 0000000..033fb08 --- /dev/null +++ b/src/gr/padeler/aspellchecker/ASpell.java @@ -0,0 +1,42 @@ +/** + * + */ +package gr.padeler.aspellchecker; + +import android.util.Log; + +/** + * @author padeler + * + */ +public class ASpell +{ + public static final String TAG = ASpell.class.getSimpleName(); + + static + { + System.loadLibrary("aspell"); + } + + public ASpell(String dataDir, String locale) + { + Log.d(TAG, "ASpell Speller Initializing...."); + + boolean res = initialize(dataDir, locale); + Log.d(TAG, "ASpell Speller Initialized ("+res+")"); + } + + @Override + protected void finalize() throws Throwable { + destruct(); + } + + private long nativePtr; + + public native String[] check(String str); + public native boolean initialize(String dataDir, String locale); + + public native void destruct(); + + public native void setUserDictionary(String [] words); +} diff --git a/src/gr/padeler/aspellchecker/ASpellCheckerActivity.java b/src/gr/padeler/aspellchecker/ASpellCheckerActivity.java new file mode 100644 index 0000000..cbd03cd --- /dev/null +++ b/src/gr/padeler/aspellchecker/ASpellCheckerActivity.java @@ -0,0 +1,14 @@ +package gr.padeler.aspellchecker; + + +import android.os.Bundle; +import android.preference.PreferenceActivity; + + +public class ASpellCheckerActivity extends PreferenceActivity{ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.prefs); + } +} \ No newline at end of file diff --git a/src/gr/padeler/aspellchecker/ASpellCheckerService.java b/src/gr/padeler/aspellchecker/ASpellCheckerService.java new file mode 100644 index 0000000..e7571a8 --- /dev/null +++ b/src/gr/padeler/aspellchecker/ASpellCheckerService.java @@ -0,0 +1,215 @@ +/** + * + */ +package gr.padeler.aspellchecker; + + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; + +import android.content.ContentResolver; +import android.content.SharedPreferences; +import android.content.res.AssetManager; +import android.database.ContentObserver; +import android.database.Cursor; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.provider.ContactsContract.Contacts; +import android.provider.UserDictionary.Words; +import android.service.textservice.SpellCheckerService; +import android.util.Log; +import android.view.textservice.SuggestionsInfo; +import android.view.textservice.TextInfo; + +/** + * @author padeler + * + */ +public class ASpellCheckerService extends SpellCheckerService +{ + + private static final String DATA = "data"; + private static final String TAG = ASpellCheckerService.class.getSimpleName(); + private static final boolean DBG = true; + + private static final String[] PROJECTION = { + Words._ID, + Words.WORD, + Words.FREQUENCY, + Words.LOCALE, + Words.APP_ID + }; + + + @Override + public Session createSession() + { + // check if the data files are correctly copied from the assets. + try{ + String dataDir = checkAndUpdateDataFiles(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + String lang = prefs.getString("available_dicts", "sv"); + + return new ASpellCheckerSession(dataDir,getContentResolver()); + + }catch(IOException e) + { + Log.e(TAG,"Failed to initialize ASpellCheckerService", e); + } + return new ASpellCheckerSession("",getContentResolver()); // TODO Find a good way to gracefully fail. This will fail on ASpell initialization. + } + + private String checkAndUpdateDataFiles() throws IOException + { + String []files = getFilesDir().list(); + if(files.length==0) + { + Log.d(TAG, "Data dir is not available. Creating."); + + File dataDir = new File(getFilesDir()+File.separator+DATA); + dataDir.mkdir(); + AssetManager assets = getAssets(); + files = assets.list(DATA); + for(String file:files) + { + String dst = dataDir+File.separator+file; + try{ + Log.d(TAG, "Copying "+file+" from assets to "+dst); + + FileOutputStream fout = new FileOutputStream(dst); + InputStream in = assets.open(DATA+File.separator+file); + + byte buf[] = new byte[1024]; + int count=0; + while((count=in.read(buf))!=-1) + { + fout.write(buf,0,count); + } + in.close(); + fout.close(); + }catch(IOException e){ + throw new IOException("Failed to copy "+file+" to "+dst, e); + } + } + } + + String res = getFilesDir()+File.separator+DATA; + return res; + } + + private static class ASpellCheckerSession extends Session + { + private String mLocale; + private ASpell bridge; + private String dataDir; + private ContentResolver contentResolver; + + public ASpellCheckerSession(String dataDir, final ContentResolver contentResolver) + { + this.dataDir = dataDir; + this.contentResolver = contentResolver; + } + + protected synchronized void UserDictionaryUpdated() + { + Cursor cursor = contentResolver.query(Words.CONTENT_URI, PROJECTION, + Words.LOCALE + " = ?", new String[] {mLocale}, null); + + int index = cursor.getColumnIndex(Words.WORD); + ArrayList<String> words = new ArrayList<String>(); + while (cursor.moveToNext()) + { + words.add(cursor.getString(index)); + } + + cursor = contentResolver.query( Contacts.CONTENT_URI, + new String[]{Contacts.DISPLAY_NAME}, null, null, null); + index = cursor.getColumnIndex(Contacts.DISPLAY_NAME); + while(cursor.moveToNext()) + { + for(String name : cursor.getString(index).split("\\s+")) + { + if(name.matches("(\\p{L}\\p{M}*)+")) + words.add(name); + } + } + + Log.d(TAG,"Loaded user dictionary+contacts with " + words.size() + " words."); + + //Log.d(TAG, "User dictionary: "+ Arrays.toString(words.toArray(new String[]{}))); + + bridge.setUserDictionary(words.toArray(new String[]{})); + } + + @Override + public synchronized void onCreate() + { + + mLocale = getLocale(); + Log.d(TAG, "Creating ASpell Speller. DataDir: "+dataDir+" Lang: "+mLocale); + + bridge = new ASpell(dataDir,mLocale); + + contentResolver.registerContentObserver(Words.CONTENT_URI, true, new ContentObserver(null) { + @Override + public void onChange(boolean selfChange) { + UserDictionaryUpdated(); + } + }); + UserDictionaryUpdated(); + } + + @Override + public synchronized SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) + { + mLocale = getLocale(); + String text = textInfo.getText(); + long start = System.currentTimeMillis(); + String []suggestions = bridge.check(text); + long end = System.currentTimeMillis(); + String code = suggestions[0]; + Log.d(TAG, "===Suggestion code ==> "+code); + + if(suggestions.length>1) // we have some suggestions + { + if(suggestions.length>suggestionsLimit+1) + { + String []tmp = new String[suggestionsLimit]; + System.arraycopy(suggestions, 1, tmp, 0, suggestionsLimit); + suggestions = tmp; + } + else // just keep all suggestions + { + String []tmp = new String[suggestions.length-1]; + System.arraycopy(suggestions, 1, tmp, 0, tmp.length); + suggestions = tmp; + } + } + else{ + suggestions = new String[]{}; + } + + if (DBG) + { + Log.d(TAG, "["+mLocale+"].onGetSuggestions ("+textInfo.getText()+","+suggestionsLimit+"): " + " Code : "+code+". Time to ASPELL: "+(end-start)+" ms."); + } + int flags; + if("1".equals(code) || suggestions.length > 0 && suggestions[0].equals(text))// Aspell bug? + { + flags = SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY; + } + else + { + flags = SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO; + } + + if(suggestions.length>0) flags |= SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS; + + return new SuggestionsInfo(flags, suggestions); + } + } +} \ No newline at end of file diff --git a/src/gr/padeler/aspellchecker/ASpellCheckerSettingsFragment.java b/src/gr/padeler/aspellchecker/ASpellCheckerSettingsFragment.java new file mode 100644 index 0000000..de3658a --- /dev/null +++ b/src/gr/padeler/aspellchecker/ASpellCheckerSettingsFragment.java @@ -0,0 +1,27 @@ +/** + * + */ +package gr.padeler.aspellchecker; + + +import android.os.Bundle; +import android.preference.PreferenceFragment; + +/** + * @author padeler + * + */ +public class ASpellCheckerSettingsFragment extends PreferenceFragment +{ + /** + * Empty constructor for fragment generation. + */ + public ASpellCheckerSettingsFragment() { + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + addPreferencesFromResource(R.xml.prefs); + } +}